summaryrefslogtreecommitdiffstats
path: root/common/src
diff options
context:
space:
mode:
authorshentao <shentao@chinamobile.com>2017-04-19 18:24:26 +0800
committershentao <shentao@chinamobile.com>2017-04-19 18:24:40 +0800
commitfbbf467696810b7ca2ddac6de0d076af424a2ef0 (patch)
tree8aec68690a7d9f2ca34c3fd589f436a36bfffee3 /common/src
parentaba151e0a874c2f9caa344da528646525e21c064 (diff)
integrated monitor and performance functions
Issue-id: CLIENT-175 Change-Id: I07adc77afd9f62f615790896c9241f8430583398 Signed-off-by: shentao <shentao@chinamobile.com>
Diffstat (limited to 'common/src')
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/License.txt0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/animate/animate.min.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/avalon/avalon.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/avalon/avalon.modern.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/bootbox/LICENSE.md0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/bootbox/README.md0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/bootbox/bootbox.min.js0
-rwxr-xr-xcommon/src/main/webapp/thirdparty/bootstrap-daterangepicker/daterangepicker-bs3.css319
-rwxr-xr-xcommon/src/main/webapp/thirdparty/bootstrap-daterangepicker/daterangepicker.js1257
-rwxr-xr-xcommon/src/main/webapp/thirdparty/bootstrap-daterangepicker/moment.js2808
-rwxr-xr-xcommon/src/main/webapp/thirdparty/bootstrap-daterangepicker/moment.min.js6
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/bootstrap-growl/bootstrap-growl.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/bootstrap/css/bootstrap-dt.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/bootstrap/css/bootstrap.min.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.eotbin20127 -> 20127 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.svg0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.ttfbin45404 -> 45404 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woffbin23424 -> 23424 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff2bin18028 -> 18028 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/bootstrap/js/bootstrap.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/bootstrap/js/bootstrap.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/bootstrap/js/bootstrap2-typeahead.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/cometd/cometd.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/cometd/cometd/AckExtension.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/cometd/cometd/ReloadExtension.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/cometd/cometd/TimeStampExtension.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/cometd/cometd/TimeSyncExtension.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-ack.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-reload.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-timestamp.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-timesync.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/animate-custom.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/bootstrap.min.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/font-awesome.min.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/img/Thumbs.dbbin2560 -> 2560 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/img/diy/1_close.pngbin601 -> 601 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/img/diy/1_open.pngbin580 -> 580 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/img/diy/2.pngbin570 -> 570 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/img/diy/3.pngbin762 -> 762 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/img/diy/4.pngbin399 -> 399 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/img/diy/5.pngbin710 -> 710 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/img/diy/6.pngbin432 -> 432 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/img/diy/7.pngbin534 -> 534 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/img/diy/8.pngbin529 -> 529 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/img/diy/9.pngbin467 -> 467 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/img/line_conn.gifbin45 -> 45 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/img/loading.gifbin381 -> 381 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/img/zTreeStandard.gifbin5564 -> 5564 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/img/zTreeStandard.pngbin11173 -> 11173 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/magic-check.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/ng-table.min.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/ngict-component.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/plugins.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/style.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/uniform.default.min.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/css/zTreeStyle.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/DT_bootstrap.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/DT_bootstrap.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/DataTableICT.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/DataTableSmartClient.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/DataTableSmartClientApp.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/app-test-i18n-datatable-zh-CN.json0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/app-universal-i18n-datatable-en-US.json0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/app-universal-i18n-datatable-zh-CN.json0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/dataTable.html0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/dataTables.bootstrap.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/images/loading-spinner-grey.gifbin5203 -> 5203 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/images/sort_asc.pngbin1118 -> 1118 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/images/sort_both.pngbin1136 -> 1136 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/images/sort_desc.pngbin1127 -> 1127 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/jquery.dataTables-1.9.4.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/jquery.dataTables-1.9.4.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.min.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/data-tables/style-datatable.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/echarts/echarts-all.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/echarts/echarts.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/css/font-awesome.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/css/font-awesome.min.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/fonts/FontAwesome.otfbin85908 -> 85908 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.eotbin56006 -> 56006 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.svg0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.ttfbin112160 -> 112160 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.woffbin65452 -> 65452 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/less/bordered-pulled.less0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/less/core.less0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/less/fixed-width.less0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/less/font-awesome.less0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/less/icons.less0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/less/larger.less0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/less/list.less0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/less/mixins.less0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/less/path.less0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/less/rotated-flipped.less0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/less/spinning.less0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/less/stacked.less0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/less/variables.less0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/scss/_bordered-pulled.scss0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/scss/_core.scss0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/scss/_fixed-width.scss0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/scss/_icons.scss0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/scss/_larger.scss0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/scss/_list.scss0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/scss/_mixins.scss0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/scss/_path.scss0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/scss/_rotated-flipped.scss0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/scss/_spinning.scss0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/scss/_stacked.scss0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/scss/_variables.scss0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/font-awesome/scss/font-awesome.scss0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.eotbin10031 -> 10031 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.svg0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.ttfbin21736 -> 21736 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.woffbin11632 -> 11632 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.eotbin56006 -> 56006 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.svg0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.ttfbin112160 -> 112160 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.woffbin65452 -> 65452 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/fontomas-webfont.eotbin3336 -> 3336 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/fontomas-webfont.svg0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/fontomas-webfont.ttfbin3128 -> 3128 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/fontomas-webfont.woffbin2280 -> 2280 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.eotbin29144 -> 29144 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.svg0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.ttfbin28788 -> 28788 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.woffbin14972 -> 14972 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.eotbin20127 -> 20127 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.svg0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.ttfbin45404 -> 45404 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.woffbin23424 -> 23424 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.woff2bin18028 -> 18028 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/bower.json42
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/Thumbs.dbbin0 -> 5120 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/banner.jpgbin0 -> 32768 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/custom.css261
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/custom.styl1191
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/icheck.pngbin0 -> 2382 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/ie/arrow-bottom.pngbin0 -> 184 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/ie/arrow-top.pngbin0 -> 175 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/ie/header-line.pngbin0 -> 611 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-fork.pngbin0 -> 213 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-github.pngbin0 -> 634 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-lab.pngbin0 -> 683 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-options.pngbin0 -> 666 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-star.pngbin0 -> 348 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.eotbin0 -> 13099 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.svg1490
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.ttfbin0 -> 32768 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.woffbin0 -> 15736 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.eotbin0 -> 13114 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.svg1365
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.ttfbin0 -> 32768 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.woffbin0 -> 15692 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/css/normalize.css527
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/index.html1544
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/js/custom.js109
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/js/custom.min.js5
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/js/jquery.js4
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/demo/js/zepto.js41
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/icheck.jquery.json48
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/icheck.js509
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/icheck.min.js11
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/all.css61
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/_all.css530
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/aero.css53
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/aero.pngbin0 -> 1520 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/aero@2x.pngbin0 -> 3218 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/blue.css53
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/blue.pngbin0 -> 1518 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/blue@2x.pngbin0 -> 3217 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/flat.css53
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/flat.pngbin0 -> 1515 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/flat@2x.pngbin0 -> 3217 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/green.css53
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/green.pngbin0 -> 1444 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/green@2x.pngbin0 -> 3117 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/grey.css53
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/grey.pngbin0 -> 1516 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/grey@2x.pngbin0 -> 3217 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/orange.css53
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/orange.pngbin0 -> 1518 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/orange@2x.pngbin0 -> 3275 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/pink.css53
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/pink.pngbin0 -> 1522 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/pink@2x.pngbin0 -> 3218 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/purple.css53
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/purple.pngbin0 -> 1519 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/purple@2x.pngbin0 -> 3218 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/red.css53
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/red.pngbin0 -> 1516 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/red@2x.pngbin0 -> 3276 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/yellow.css53
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/yellow.pngbin0 -> 1516 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/flat/yellow@2x.pngbin0 -> 3216 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/futurico/futurico.css53
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/futurico/futurico.pngbin0 -> 1734 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/futurico/futurico@2x.pngbin0 -> 3446 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/line/Thumbs.dbbin0 -> 4608 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/line/_all.css710
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/line/aero.css71
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/line/blue.css71
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/line/green.css71
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/line/grey.css71
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/line/line.css71
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/line/line.pngbin0 -> 588 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/line/line@2x.pngbin0 -> 1073 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/line/orange.css71
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/line/pink.css71
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/line/purple.css71
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/line/red.css71
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/line/yellow.css71
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/_all.css590
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/aero.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/aero.pngbin0 -> 1151 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/aero@2x.pngbin0 -> 1409 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/blue.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/blue.pngbin0 -> 1132 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/blue@2x.pngbin0 -> 1410 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/green.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/green.pngbin0 -> 1143 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/green@2x.pngbin0 -> 1408 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/grey.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/grey.pngbin0 -> 1142 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/grey@2x.pngbin0 -> 1407 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/minimal.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/minimal.pngbin0 -> 1114 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/minimal@2x.pngbin0 -> 1410 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/orange.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/orange.pngbin0 -> 1139 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/orange@2x.pngbin0 -> 1407 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/pink.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/pink.pngbin0 -> 1150 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/pink@2x.pngbin0 -> 1409 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/purple.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/purple.pngbin0 -> 1132 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/purple@2x.pngbin0 -> 1409 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/red.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/red.pngbin0 -> 1130 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/red@2x.pngbin0 -> 1410 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/yellow.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/yellow.pngbin0 -> 1135 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/minimal/yellow@2x.pngbin0 -> 1406 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/polaris/polaris.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/polaris/polaris.pngbin0 -> 6401 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/polaris/polaris@2x.pngbin0 -> 32768 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/Thumbs.dbbin0 -> 32768 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/_all.css590
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/aero.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/aero.pngbin0 -> 4436 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/aero@2x.pngbin0 -> 4455 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/blue.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/blue.pngbin0 -> 2185 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/blue@2x.pngbin0 -> 4485 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/green.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/green.pngbin0 -> 2193 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/green@2x.pngbin0 -> 4498 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/grey.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/grey.pngbin0 -> 2186 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/grey@2x.pngbin0 -> 4483 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/orange.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/orange.pngbin0 -> 2181 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/orange@2x.pngbin0 -> 4474 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/pink.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/pink.pngbin0 -> 2189 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/pink@2x.pngbin0 -> 4479 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/purple.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/purple.pngbin0 -> 2188 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/purple@2x.pngbin0 -> 4501 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/red.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/red.pngbin0 -> 2190 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/red@2x.pngbin0 -> 4490 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/square.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/square.pngbin0 -> 2175 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/square@2x.pngbin0 -> 4478 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/yellow.css59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/yellow.pngbin0 -> 2131 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/icheck/skins/square/yellow@2x.pngbin0 -> 4385 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/add.pngbin1104 -> 1104 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-checked-disabled.pngbin3087 -> 3087 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-checked.pngbin3053 -> 3053 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-disabled.pngbin2830 -> 2830 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-hover.pngbin2835 -> 2835 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-init.pngbin2833 -> 2833 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/checkbox-radio/radio-checked-disabled.pngbin2993 -> 2993 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/checkbox-radio/radio-checked.pngbin3235 -> 3235 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/checkbox-radio/radio-disabled.pngbin3045 -> 3045 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/checkbox-radio/radio-hover.pngbin3068 -> 3068 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/checkbox-radio/radio-init.pngbin3036 -> 3036 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/collapse_arrow.pngbin1174 -> 1174 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/delete.pngbin1100 -> 1100 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/edit.pngbin3045 -> 3045 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/expand_arrow.pngbin1182 -> 1182 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/openo.pngbin49007 -> 49007 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/images/searchicon.pngbin366 -> 366 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jQuery-File-Upload/css/jquery.fileupload.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jQuery-File-Upload/img/loading.gifbin3897 -> 3897 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jQuery-File-Upload/img/progressbar.gifbin3323 -> 3323 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jQuery-File-Upload/js/jquery.fileupload.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jQuery-File-Upload/js/jquery.iframe-transport.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jQuery-File-Upload/js/vendor/jquery.ui.widget.js0
-rwxr-xr-xcommon/src/main/webapp/thirdparty/jquery-cokie/jquery.cokie.min.js9
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/README.md0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/dist/additional-methods.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/dist/additional-methods.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/dist/jquery.validate.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/dist/jquery.validate.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/additional-methods.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/additional-methods.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/jquery.validate.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/jquery.validate.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ar.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ar.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_bg.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_bg.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ca.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ca.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_cs.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_cs.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_da.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_da.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_de.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_de.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_el.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_el.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es_AR.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es_AR.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_et.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_et.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_eu.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_eu.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fa.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fa.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fi.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fi.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fr.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fr.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_gl.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_gl.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_he.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_he.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hr.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hr.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hu.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hu.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_id.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_id.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_is.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_is.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_it.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_it.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ja.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ja.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ka.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ka.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_kk.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_kk.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ko.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ko.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lt.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lt.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lv.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lv.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_my.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_my.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_nl.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_nl.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_no.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_no.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pl.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pl.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_BR.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_BR.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_PT.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_PT.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ro.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ro.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ru.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ru.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_si.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_si.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sk.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sk.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sl.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sl.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr_lat.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr_lat.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sv.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sv.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_th.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_th.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tj.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tj.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tr.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tr.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_uk.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_uk.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_vi.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_vi.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh_TW.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh_TW.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_de.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_de.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_es_CL.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_es_CL.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_fi.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_fi.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_nl.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_nl.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_pt.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_pt.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery.i18n/jquery.i18n.properties-1.0.9.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery/jquery-1.10.2.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.min.map0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery/jquery-1.4.4.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.min.map0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery/jquery-migrate-1.2.1.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery/jquery-migrate-1.2.1.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/jquery/jquery.reveal.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/angular-ui-router.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/angular.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/bootstrap-table-filter-control.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/bootstrap-table.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/bootstrap.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/core/const.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/core/hk.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/core/load_menuList.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/core/openoFrameWork.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/core/pym.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/jquery-ui.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/jquery.cookie.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/jquery.ztree.core-3.5.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/jquery_1.12.4.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/mustache.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/ng-table.min.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/js/tools.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/uniform/README.md0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/uniform/css/uniform.default.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/uniform/css/uniform.default.min.css0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/uniform/css/uniform.default.scss0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/uniform/images/bg-input-focus.pngbin143 -> 143 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/uniform/images/bg-input.pngbin143 -> 143 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/uniform/images/sprite.pngbin31815 -> 31815 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/uniform/images/sprite_original.pngbin34229 -> 34229 bytes
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/uniform/jquery.uniform.js0
-rwxr-xr-x[-rw-r--r--]common/src/main/webapp/thirdparty/uniform/jquery.uniform.min.js0
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/API_cn.html103
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/API_en.html102
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/api.js592
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/common.css219
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/common_ie6.css23
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/img/apiMenu.gifbin0 -> 1736 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/img/apiMenu.pngbin0 -> 3954 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/img/background.jpgbin0 -> 36520 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/img/chinese.pngbin0 -> 1556 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/img/close.pngbin0 -> 1908 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/img/contact-bg.pngbin0 -> 177 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/img/english.pngbin0 -> 1356 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/img/header-bg.pngbin0 -> 148 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/img/lightbulb.pngbin0 -> 27355 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_arrow.gifbin0 -> 625 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_arrow.pngbin0 -> 830 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_bg.pngbin0 -> 109 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_close_IE6.gifbin0 -> 441 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/img/zTreeStandard.gifbin0 -> 6851 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/img/zTreeStandard.pngbin0 -> 12573 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/jquery-1.6.2.min.js18
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/jquery.ztree.core-3.5.js69
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/apiCss/zTreeStyleForApi.css49
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree._z.html13
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree.destroy.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree.getZTreeObj.html24
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree.init.html74
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.async.autoParam.html39
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.async.contentType.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.async.dataFilter.html45
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.async.dataType.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.async.enable.html30
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.async.otherParam.html40
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.async.type.html30
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.async.url.html50
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeAsync.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeCheck.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeClick.html49
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeCollapse.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDblClick.html36
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDrag.html39
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDragOpen.html37
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDrop.html48
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeEditName.html38
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeExpand.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeMouseDown.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeMouseUp.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeRemove.html37
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeRename.html46
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeRightClick.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onAsyncError.html42
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onAsyncSuccess.html38
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onCheck.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onClick.html49
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onCollapse.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDblClick.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDrag.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDragMove.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDrop.html46
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onExpand.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onMouseDown.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onMouseUp.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onNodeCreated.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onRemove.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onRename.html40
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onRightClick.html36
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.check.autoCheckTrigger.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.check.chkDisabledInherit.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.check.chkStyle.html48
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.check.chkboxType.html31
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.check.enable.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.check.nocheckInherit.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.check.radioType.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.data.keep.leaf.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.data.keep.parent.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.checked.html24
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.children.html23
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.name.html23
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.title.html24
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.url.html24
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.enable.html38
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.idKey.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.pIdKey.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.rootPId.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.autoExpandTrigger.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.autoOpenTime.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.borderMax.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.borderMin.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.inner.html59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.isCopy.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.isMove.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.maxShowNodeNum.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.minMoveSize.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.next.html58
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.prev.html58
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.editNameSelectAll.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.enable.html38
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.removeTitle.html48
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.renameTitle.html48
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.showRemoveBtn.html49
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.showRenameBtn.html51
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.treeId.html14
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.treeObj.html14
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.view.addDiyDom.html40
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.view.addHoverDom.html45
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.view.autoCancelSelected.html26
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.view.dblClickExpand.html44
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.view.expandSpeed.html31
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.view.fontCss.html42
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.view.nameIsHTML.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.view.removeHoverDom.html45
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.view.selectedMulti.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.view.showIcon.html44
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.view.showLine.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.view.showTitle.html46
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/setting.view.txtSelectedEnable.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.check_Child_State.html43
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.check_Focus.html19
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.checked.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.checkedOld.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.children.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.chkDisabled.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.click.html24
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.diy.html15
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.editNameFlag.html19
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getCheckStatus.html63
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getNextNode.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getParentNode.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getPreNode.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.halfCheck.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.icon.html33
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.iconClose.html33
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.iconOpen.html33
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.iconSkin.html43
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isAjaxing.html26
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isFirstNode.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isHidden.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isHover.html19
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isLastNode.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isParent.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.level.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.name.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.nocheck.html26
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.open.html30
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.parentTId.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.tId.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.target.html24
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.url.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/treeNode.zAsync.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.addNodes.html42
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.cancelEditName.html30
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.cancelSelectedNode.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.checkAllNodes.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.checkNode.html44
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.copyNode.html44
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.destroy.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.editName.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.expandAll.html30
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.expandNode.html50
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getChangeCheckedNodes.html24
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getCheckedNodes.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodeByParam.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodeByTId.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodeIndex.html30
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodes.html26
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodesByFilter.html43
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodesByParam.html31
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodesByParamFuzzy.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getSelectedNodes.html23
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.hideNode.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.hideNodes.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.moveNode.html46
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.reAsyncChildNodes.html42
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.refresh.html24
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.removeChildNodes.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.removeNode.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.selectNode.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.setChkDisabled.html44
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.setEditable.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.setting.html13
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.showNode.html31
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.showNodes.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.transformToArray.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.transformTozTreeNodes.html43
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.updateNode.html37
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/fn.zTree._z.html13
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/fn.zTree.destroy.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/fn.zTree.getZTreeObj.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/fn.zTree.init.html75
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.async.autoParam.html39
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.async.contentType.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.async.dataFilter.html45
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.async.dataType.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.async.enable.html30
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.async.otherParam.html40
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.async.type.html30
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.async.url.html50
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeAsync.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeCheck.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeClick.html49
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeCollapse.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDblClick.html36
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDrag.html39
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDragOpen.html37
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDrop.html50
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeEditName.html38
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeExpand.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeMouseDown.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeMouseUp.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeRemove.html37
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeRename.html46
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeRightClick.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onAsyncError.html42
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onAsyncSuccess.html38
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onCheck.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onClick.html49
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onCollapse.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDblClick.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDrag.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDragMove.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDrop.html48
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onExpand.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onMouseDown.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onMouseUp.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onNodeCreated.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onRemove.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onRename.html40
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onRightClick.html36
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.check.autoCheckTrigger.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.check.chkDisabledInherit.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.check.chkStyle.html48
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.check.chkboxType.html31
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.check.enable.html26
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.check.nocheckInherit.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.check.radioType.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.data.keep.leaf.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.data.keep.parent.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.checked.html24
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.children.html23
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.name.html23
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.title.html24
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.url.html24
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.enable.html39
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.idKey.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.pIdKey.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.rootPId.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.autoExpandTrigger.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.autoOpenTime.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.borderMax.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.borderMin.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.inner.html60
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.isCopy.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.isMove.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.maxShowNodeNum.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.minMoveSize.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.next.html59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.prev.html59
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.editNameSelectAll.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.enable.html39
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.removeTitle.html48
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.renameTitle.html48
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.showRemoveBtn.html50
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.edit.showRenameBtn.html52
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.treeId.html14
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.treeObj.html14
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.view.addDiyDom.html40
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.view.addHoverDom.html45
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.view.autoCancelSelected.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.view.dblClickExpand.html45
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.view.expandSpeed.html31
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.view.fontCss.html42
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.view.nameIsHTML.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.view.removeHoverDom.html45
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.view.selectedMulti.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.view.showIcon.html45
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.view.showLine.html26
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.view.showTitle.html47
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/setting.view.txtSelectedEnable.html26
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.check_Child_State.html43
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.check_Focus.html19
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.checked.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.checkedOld.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.children.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.chkDisabled.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.click.html24
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.diy.html15
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.editNameFlag.html19
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.getCheckStatus.html63
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.getNextNode.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.getParentNode.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.getPreNode.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.halfCheck.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.icon.html33
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.iconClose.html33
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.iconOpen.html33
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.iconSkin.html43
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.isAjaxing.html26
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.isFirstNode.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.isHidden.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.isHover.html19
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.isLastNode.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.isParent.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.level.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.name.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.nocheck.html26
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.open.html30
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.parentTId.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.tId.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.target.html24
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.url.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/treeNode.zAsync.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.addNodes.html42
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.cancelEditName.html30
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.cancelSelectedNode.html35
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.checkAllNodes.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.checkNode.html44
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.copyNode.html47
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.destroy.html25
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.editName.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.expandAll.html30
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.expandNode.html50
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getChangeCheckedNodes.html24
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getCheckedNodes.html28
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodeByParam.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodeByTId.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodeIndex.html30
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodes.html26
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodesByFilter.html43
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodesByParam.html31
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodesByParamFuzzy.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getSelectedNodes.html23
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.hideNode.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.hideNodes.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.moveNode.html49
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.reAsyncChildNodes.html42
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.refresh.html24
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.removeChildNodes.html32
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.removeNode.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.selectNode.html34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.setChkDisabled.html44
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.setEditable.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.setting.html14
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.showNode.html31
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.showNodes.html29
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.transformToArray.html27
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.transformTozTreeNodes.html44
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.updateNode.html37
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/demo.css33
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/ReadMe.txt1
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/Thumbs.dbbin0 -> 23552 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/1_close.pngbin0 -> 601 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/1_open.pngbin0 -> 580 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/2.pngbin0 -> 570 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/3.pngbin0 -> 762 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/4.pngbin0 -> 399 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/5.pngbin0 -> 710 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/6.pngbin0 -> 432 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/7.pngbin0 -> 534 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/8.pngbin0 -> 529 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/9.pngbin0 -> 467 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/Thumbs.dbbin0 -> 19968 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/line_conn.gifbin0 -> 45 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/loading.gifbin0 -> 381 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gifbin0 -> 5564 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gifbakbin0 -> 5564 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.pngbin0 -> 11206 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.pngbakbin0 -> 11173 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.psdbin0 -> 93494 bytes
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/css/zTreeStyle/zTreeStyle.css107
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/js/jquery.ztree.all.js3506
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/js/jquery.ztree.all.min.js160
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/js/jquery.ztree.core.js1684
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/js/jquery.ztree.core.min.js69
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/js/jquery.ztree.excheck.js629
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/js/jquery.ztree.excheck.min.js34
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exedit.js1191
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exedit.min.js53
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exhide.js363
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exhide.min.js22
-rwxr-xr-xcommon/src/main/webapp/thirdparty/zTree/zTree.v3.jquery.json35
837 files changed, 36436 insertions, 0 deletions
diff --git a/common/src/main/webapp/thirdparty/License.txt b/common/src/main/webapp/thirdparty/License.txt
index 8e698ecb..8e698ecb 100644..100755
--- a/common/src/main/webapp/thirdparty/License.txt
+++ b/common/src/main/webapp/thirdparty/License.txt
diff --git a/common/src/main/webapp/thirdparty/animate/animate.min.css b/common/src/main/webapp/thirdparty/animate/animate.min.css
index 88b94d50..88b94d50 100644..100755
--- a/common/src/main/webapp/thirdparty/animate/animate.min.css
+++ b/common/src/main/webapp/thirdparty/animate/animate.min.css
diff --git a/common/src/main/webapp/thirdparty/avalon/avalon.js b/common/src/main/webapp/thirdparty/avalon/avalon.js
index a22bb7de..a22bb7de 100644..100755
--- a/common/src/main/webapp/thirdparty/avalon/avalon.js
+++ b/common/src/main/webapp/thirdparty/avalon/avalon.js
diff --git a/common/src/main/webapp/thirdparty/avalon/avalon.modern.js b/common/src/main/webapp/thirdparty/avalon/avalon.modern.js
index 048b4241..048b4241 100644..100755
--- a/common/src/main/webapp/thirdparty/avalon/avalon.modern.js
+++ b/common/src/main/webapp/thirdparty/avalon/avalon.modern.js
diff --git a/common/src/main/webapp/thirdparty/bootbox/LICENSE.md b/common/src/main/webapp/thirdparty/bootbox/LICENSE.md
index 8219f598..8219f598 100644..100755
--- a/common/src/main/webapp/thirdparty/bootbox/LICENSE.md
+++ b/common/src/main/webapp/thirdparty/bootbox/LICENSE.md
diff --git a/common/src/main/webapp/thirdparty/bootbox/README.md b/common/src/main/webapp/thirdparty/bootbox/README.md
index eedb7210..eedb7210 100644..100755
--- a/common/src/main/webapp/thirdparty/bootbox/README.md
+++ b/common/src/main/webapp/thirdparty/bootbox/README.md
diff --git a/common/src/main/webapp/thirdparty/bootbox/bootbox.min.js b/common/src/main/webapp/thirdparty/bootbox/bootbox.min.js
index a7ea24fe..a7ea24fe 100644..100755
--- a/common/src/main/webapp/thirdparty/bootbox/bootbox.min.js
+++ b/common/src/main/webapp/thirdparty/bootbox/bootbox.min.js
diff --git a/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/daterangepicker-bs3.css b/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/daterangepicker-bs3.css
new file mode 100755
index 00000000..71111cf7
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/daterangepicker-bs3.css
@@ -0,0 +1,319 @@
+/*!
+ * Stylesheet for the Date Range Picker, for use with Bootstrap 3.x
+ *
+ * Copyright 2013-2015 Dan Grossman ( http://www.dangrossman.info )
+ * Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php
+ *
+ * Built for http://www.improvely.com
+ */
+
+ .daterangepicker.dropdown-menu {
+ max-width: none;
+ z-index: 3000;
+}
+
+.daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar {
+ float: left;
+ margin: 4px;
+}
+
+.daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar,
+.daterangepicker.openscenter .ranges, .daterangepicker.openscenter .calendar {
+ float: right;
+ margin: 4px;
+}
+
+.daterangepicker.single .ranges, .daterangepicker.single .calendar {
+ float: none;
+}
+
+.daterangepicker .ranges {
+ width: 165px;
+ text-align: left;
+}
+
+.daterangepicker .ranges .range_inputs>div {
+ float: left;
+}
+
+.daterangepicker .ranges .range_inputs>div:nth-child(2) {
+ padding-left: 11px;
+}
+
+.daterangepicker .calendar {
+ display: none;
+ max-width: 270px;
+}
+
+.daterangepicker.show-calendar .calendar {
+ display: block;
+}
+
+.daterangepicker .calendar.single .calendar-date {
+ border: none;
+}
+
+.daterangepicker .calendar th, .daterangepicker .calendar td {
+ font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
+ white-space: nowrap;
+ text-align: center;
+ min-width: 32px;
+}
+
+.daterangepicker .daterangepicker_start_input label,
+.daterangepicker .daterangepicker_end_input label {
+ color: #333;
+ display: block;
+ font-size: 11px;
+ font-weight: normal;
+ height: 20px;
+ line-height: 20px;
+ margin-bottom: 2px;
+ text-shadow: #fff 1px 1px 0px;
+ text-transform: uppercase;
+ width: 74px;
+}
+
+.daterangepicker .ranges input {
+ font-size: 11px;
+}
+
+.daterangepicker .ranges .input-mini {
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ color: #555;
+ display: block;
+ font-size: 11px;
+ height: 30px;
+ line-height: 30px;
+ vertical-align: middle;
+ margin: 0 0 10px 0;
+ padding: 0 6px;
+ width: 77px;
+}
+
+.daterangepicker .ranges ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.daterangepicker .ranges li {
+ font-size: 13px;
+ background: #f5f5f5;
+ border: 1px solid #f5f5f5;
+ color: #08c;
+ padding: 3px 12px;
+ margin-bottom: 8px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ cursor: pointer;
+}
+
+.daterangepicker .ranges li.active, .daterangepicker .ranges li:hover {
+ background: #08c;
+ border: 1px solid #08c;
+ color: #fff;
+}
+
+.daterangepicker .calendar-date {
+ border: 1px solid #ddd;
+ padding: 4px;
+ border-radius: 4px;
+ background: #fff;
+}
+
+.daterangepicker .calendar-time {
+ text-align: center;
+ margin: 8px auto 0 auto;
+ line-height: 30px;
+}
+
+.daterangepicker {
+ position: absolute;
+ background: #fff;
+ top: 100px;
+ left: 20px;
+ padding: 4px;
+ margin-top: 1px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.daterangepicker.opensleft:before {
+ position: absolute;
+ top: -7px;
+ right: 9px;
+ display: inline-block;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-left: 7px solid transparent;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ content: '';
+}
+
+.daterangepicker.opensleft:after {
+ position: absolute;
+ top: -6px;
+ right: 10px;
+ display: inline-block;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #fff;
+ border-left: 6px solid transparent;
+ content: '';
+}
+
+.daterangepicker.openscenter:before {
+ position: absolute;
+ top: -7px;
+ left: 0;
+ right: 0;
+ width: 0;
+ margin-left: auto;
+ margin-right: auto;
+ display: inline-block;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-left: 7px solid transparent;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ content: '';
+}
+
+.daterangepicker.openscenter:after {
+ position: absolute;
+ top: -6px;
+ left: 0;
+ right: 0;
+ width: 0;
+ margin-left: auto;
+ margin-right: auto;
+ display: inline-block;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #fff;
+ border-left: 6px solid transparent;
+ content: '';
+}
+
+.daterangepicker.opensright:before {
+ position: absolute;
+ top: -7px;
+ left: 9px;
+ display: inline-block;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-left: 7px solid transparent;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ content: '';
+}
+
+.daterangepicker.opensright:after {
+ position: absolute;
+ top: -6px;
+ left: 10px;
+ display: inline-block;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #fff;
+ border-left: 6px solid transparent;
+ content: '';
+}
+
+.daterangepicker table {
+ width: 100%;
+ margin: 0;
+}
+
+.daterangepicker td, .daterangepicker th {
+ text-align: center;
+ width: 20px;
+ height: 20px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ cursor: pointer;
+ white-space: nowrap;
+}
+
+.daterangepicker td.off {
+ color: #999;
+}
+
+.daterangepicker td.disabled, .daterangepicker option.disabled {
+ color: #999;
+}
+
+.daterangepicker td.available:hover, .daterangepicker th.available:hover {
+ background: #eee;
+}
+
+.daterangepicker td.in-range {
+ background: #ebf4f8;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.daterangepicker td.start-date {
+ -webkit-border-radius: 4px 0 0 4px;
+ -moz-border-radius: 4px 0 0 4px;
+ border-radius: 4px 0 0 4px;
+}
+
+.daterangepicker td.end-date {
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
+}
+
+.daterangepicker td.start-date.end-date {
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.daterangepicker td.active, .daterangepicker td.active:hover {
+ background-color: #357ebd;
+ border-color: #3071a9;
+ color: #fff;
+}
+
+.daterangepicker td.week, .daterangepicker th.week {
+ font-size: 80%;
+ color: #ccc;
+}
+
+.daterangepicker select.monthselect, .daterangepicker select.yearselect {
+ font-size: 12px;
+ padding: 1px;
+ height: auto;
+ margin: 0;
+ cursor: default;
+}
+
+.daterangepicker select.monthselect {
+ margin-right: 2%;
+ width: 56%;
+}
+
+.daterangepicker select.yearselect {
+ width: 40%;
+}
+
+.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect {
+ width: 50px;
+ margin-bottom: 0;
+}
+
+.daterangepicker_start_input {
+ float: left;
+}
+
+.daterangepicker_end_input {
+ float: left;
+ padding-left: 11px
+}
+
+.daterangepicker th.month {
+ width: auto;
+}
diff --git a/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/daterangepicker.js b/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/daterangepicker.js
new file mode 100755
index 00000000..c24c0ad6
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/daterangepicker.js
@@ -0,0 +1,1257 @@
+/**
+* @version: 1.3.17
+* @author: Dan Grossman http://www.dangrossman.info/
+* @date: 2014-11-25
+* @copyright: Copyright (c) 2012-2014 Dan Grossman. All rights reserved.
+* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php
+* @website: http://www.improvely.com/
+*/
+
+(function(root, factory) {
+
+ if (typeof define === 'function' && define.amd) {
+ define(['moment', 'jquery', 'exports'], function(momentjs, $, exports) {
+ root.daterangepicker = factory(root, exports, momentjs, $);
+ });
+
+ } else if (typeof exports !== 'undefined') {
+ var momentjs = require('moment');
+ var jQuery;
+ try {
+ jQuery = require('jquery');
+ } catch (err) {
+ jQuery = window.jQuery;
+ if (!jQuery) throw new Error('jQuery dependency not found');
+ }
+
+ factory(root, exports, momentjs, jQuery);
+
+ // Finally, as a browser global.
+ } else {
+ root.daterangepicker = factory(root, {}, root.moment, (root.jQuery || root.Zepto || root.ender || root.$));
+ }
+
+}(this, function(root, daterangepicker, moment, $) {
+
+ var DateRangePicker = function (element, options, cb) {
+
+ // by default, the daterangepicker element is placed at the bottom of HTML body
+ this.parentEl = 'body';
+
+ //element that triggered the date range picker
+ this.element = $(element);
+
+ //tracks visible state
+ this.isShowing = false;
+
+ //create the picker HTML object
+ var DRPTemplate = '<div class="daterangepicker dropdown-menu">' +
+ '<div class="calendar first left"></div>' +
+ '<div class="calendar second right"></div>' +
+ '<div class="ranges">' +
+ '<div class="range_inputs">' +
+ '<div class="daterangepicker_start_input">' +
+ '<label for="daterangepicker_start"></label>' +
+ '<input class="input-mini" type="text" name="daterangepicker_start" value="" />' +
+ '</div>' +
+ '<div class="daterangepicker_end_input">' +
+ '<label for="daterangepicker_end"></label>' +
+ '<input class="input-mini" type="text" name="daterangepicker_end" value="" />' +
+ '</div>' +
+ '<button class="applyBtn" disabled="disabled"></button>&nbsp;' +
+ '<button class="cancelBtn"></button>' +
+ '</div>' +
+ '</div>' +
+ '</div>';
+
+ //custom options
+ if (typeof options !== 'object' || options === null)
+ options = {};
+
+ this.parentEl = (typeof options === 'object' && options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl);
+ this.container = $(DRPTemplate).appendTo(this.parentEl);
+
+ this.setOptions(options, cb);
+
+ //apply CSS classes and labels to buttons
+ var c = this.container;
+ $.each(this.buttonClasses, function (idx, val) {
+ c.find('button').addClass(val);
+ });
+ this.container.find('.daterangepicker_start_input label').html(this.locale.fromLabel);
+ this.container.find('.daterangepicker_end_input label').html(this.locale.toLabel);
+ if (this.applyClass.length)
+ this.container.find('.applyBtn').addClass(this.applyClass);
+ if (this.cancelClass.length)
+ this.container.find('.cancelBtn').addClass(this.cancelClass);
+ this.container.find('.applyBtn').html(this.locale.applyLabel);
+ this.container.find('.cancelBtn').html(this.locale.cancelLabel);
+
+ //event listeners
+
+ this.container.find('.calendar')
+ .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this))
+ .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this))
+ .on('click.daterangepicker', 'td.available', $.proxy(this.clickDate, this))
+ .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this))
+ .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this))
+ .on('change.daterangepicker', 'select.yearselect', $.proxy(this.updateMonthYear, this))
+ .on('change.daterangepicker', 'select.monthselect', $.proxy(this.updateMonthYear, this))
+ .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.updateTime, this));
+
+ this.container.find('.ranges')
+ .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this))
+ .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this))
+ .on('click.daterangepicker', '.daterangepicker_start_input,.daterangepicker_end_input', $.proxy(this.showCalendars, this))
+ .on('change.daterangepicker', '.daterangepicker_start_input,.daterangepicker_end_input', $.proxy(this.inputsChanged, this))
+ .on('keydown.daterangepicker', '.daterangepicker_start_input,.daterangepicker_end_input', $.proxy(this.inputsKeydown, this))
+ .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this))
+ .on('mouseenter.daterangepicker', 'li', $.proxy(this.enterRange, this))
+ .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this));
+
+ if (this.element.is('input')) {
+ this.element.on({
+ 'click.daterangepicker': $.proxy(this.show, this),
+ 'focus.daterangepicker': $.proxy(this.show, this),
+ 'keyup.daterangepicker': $.proxy(this.updateFromControl, this)
+ });
+ } else {
+ this.element.on('click.daterangepicker', $.proxy(this.toggle, this));
+ }
+
+ };
+
+ DateRangePicker.prototype = {
+
+ constructor: DateRangePicker,
+
+ setOptions: function(options, callback) {
+
+ this.startDate = moment().startOf('day');
+ this.endDate = moment().endOf('day');
+ this.timeZone = moment().zone();
+ this.minDate = false;
+ this.maxDate = false;
+ this.dateLimit = false;
+
+ this.showDropdowns = false;
+ this.showWeekNumbers = false;
+ this.timePicker = false;
+ this.timePickerSeconds = false;
+ this.timePickerIncrement = 30;
+ this.timePicker12Hour = true;
+ this.singleDatePicker = false;
+ this.ranges = {};
+
+ this.opens = 'right';
+ if (this.element.hasClass('pull-right'))
+ this.opens = 'left';
+
+ this.buttonClasses = ['btn', 'btn-small btn-sm'];
+ this.applyClass = 'btn-success';
+ this.cancelClass = 'btn-default';
+
+ this.format = 'MM/DD/YYYY';
+ this.separator = ' - ';
+
+ this.locale = {
+ applyLabel: 'Apply',
+ cancelLabel: 'Cancel',
+ fromLabel: 'From',
+ toLabel: 'To',
+ weekLabel: 'W',
+ customRangeLabel: 'Custom Range',
+ daysOfWeek: moment.weekdaysMin(),
+ monthNames: moment.monthsShort(),
+ firstDay: moment.localeData()._week.dow
+ };
+
+ this.cb = function () { };
+
+ if (typeof options.format === 'string')
+ this.format = options.format;
+
+ if (typeof options.separator === 'string')
+ this.separator = options.separator;
+
+ if (typeof options.startDate === 'string')
+ this.startDate = moment(options.startDate, this.format);
+
+ if (typeof options.endDate === 'string')
+ this.endDate = moment(options.endDate, this.format);
+
+ if (typeof options.minDate === 'string')
+ this.minDate = moment(options.minDate, this.format);
+
+ if (typeof options.maxDate === 'string')
+ this.maxDate = moment(options.maxDate, this.format);
+
+ if (typeof options.startDate === 'object')
+ this.startDate = moment(options.startDate);
+
+ if (typeof options.endDate === 'object')
+ this.endDate = moment(options.endDate);
+
+ if (typeof options.minDate === 'object')
+ this.minDate = moment(options.minDate);
+
+ if (typeof options.maxDate === 'object')
+ this.maxDate = moment(options.maxDate);
+
+ if (typeof options.applyClass === 'string')
+ this.applyClass = options.applyClass;
+
+ if (typeof options.cancelClass === 'string')
+ this.cancelClass = options.cancelClass;
+
+ if (typeof options.dateLimit === 'object')
+ this.dateLimit = options.dateLimit;
+
+ if (typeof options.locale === 'object') {
+
+ if (typeof options.locale.daysOfWeek === 'object') {
+ // Create a copy of daysOfWeek to avoid modification of original
+ // options object for reusability in multiple daterangepicker instances
+ this.locale.daysOfWeek = options.locale.daysOfWeek.slice();
+ }
+
+ if (typeof options.locale.monthNames === 'object') {
+ this.locale.monthNames = options.locale.monthNames.slice();
+ }
+
+ if (typeof options.locale.firstDay === 'number') {
+ this.locale.firstDay = options.locale.firstDay;
+ }
+
+ if (typeof options.locale.applyLabel === 'string') {
+ this.locale.applyLabel = options.locale.applyLabel;
+ }
+
+ if (typeof options.locale.cancelLabel === 'string') {
+ this.locale.cancelLabel = options.locale.cancelLabel;
+ }
+
+ if (typeof options.locale.fromLabel === 'string') {
+ this.locale.fromLabel = options.locale.fromLabel;
+ }
+
+ if (typeof options.locale.toLabel === 'string') {
+ this.locale.toLabel = options.locale.toLabel;
+ }
+
+ if (typeof options.locale.weekLabel === 'string') {
+ this.locale.weekLabel = options.locale.weekLabel;
+ }
+
+ if (typeof options.locale.customRangeLabel === 'string') {
+ this.locale.customRangeLabel = options.locale.customRangeLabel;
+ }
+ }
+
+ if (typeof options.opens === 'string')
+ this.opens = options.opens;
+
+ if (typeof options.showWeekNumbers === 'boolean') {
+ this.showWeekNumbers = options.showWeekNumbers;
+ }
+
+ if (typeof options.buttonClasses === 'string') {
+ this.buttonClasses = [options.buttonClasses];
+ }
+
+ if (typeof options.buttonClasses === 'object') {
+ this.buttonClasses = options.buttonClasses;
+ }
+
+ if (typeof options.showDropdowns === 'boolean') {
+ this.showDropdowns = options.showDropdowns;
+ }
+
+ if (typeof options.singleDatePicker === 'boolean') {
+ this.singleDatePicker = options.singleDatePicker;
+ if (this.singleDatePicker) {
+ this.endDate = this.startDate.clone();
+ }
+ }
+
+ if (typeof options.timePicker === 'boolean') {
+ this.timePicker = options.timePicker;
+ }
+
+ if (typeof options.timePickerSeconds === 'boolean') {
+ this.timePickerSeconds = options.timePickerSeconds;
+ }
+
+ if (typeof options.timePickerIncrement === 'number') {
+ this.timePickerIncrement = options.timePickerIncrement;
+ }
+
+ if (typeof options.timePicker12Hour === 'boolean') {
+ this.timePicker12Hour = options.timePicker12Hour;
+ }
+
+ // update day names order to firstDay
+ if (this.locale.firstDay != 0) {
+ var iterator = this.locale.firstDay;
+ while (iterator > 0) {
+ this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift());
+ iterator--;
+ }
+ }
+
+ var start, end, range;
+
+ //if no start/end dates set, check if an input element contains initial values
+ if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') {
+ if ($(this.element).is('input[type=text]')) {
+ var val = $(this.element).val(),
+ split = val.split(this.separator);
+
+ start = end = null;
+
+ if (split.length == 2) {
+ start = moment(split[0], this.format);
+ end = moment(split[1], this.format);
+ } else if (this.singleDatePicker && val !== "") {
+ start = moment(val, this.format);
+ end = moment(val, this.format);
+ }
+ if (start !== null && end !== null) {
+ this.startDate = start;
+ this.endDate = end;
+ }
+ }
+ }
+
+ // bind the time zone used to build the calendar to either the timeZone passed in through the options or the zone of the startDate (which will be the local time zone by default)
+ if (typeof options.timeZone === 'string' || typeof options.timeZone === 'number') {
+ this.timeZone = options.timeZone;
+ this.startDate.zone(this.timeZone);
+ this.endDate.zone(this.timeZone);
+ } else {
+ this.timeZone = moment(this.startDate).zone();
+ }
+
+ if (typeof options.ranges === 'object') {
+ for (range in options.ranges) {
+
+ if (typeof options.ranges[range][0] === 'string')
+ start = moment(options.ranges[range][0], this.format);
+ else
+ start = moment(options.ranges[range][0]);
+
+ if (typeof options.ranges[range][1] === 'string')
+ end = moment(options.ranges[range][1], this.format);
+ else
+ end = moment(options.ranges[range][1]);
+
+ // If we have a min/max date set, bound this range
+ // to it, but only if it would otherwise fall
+ // outside of the min/max.
+ if (this.minDate && start.isBefore(this.minDate))
+ start = moment(this.minDate);
+
+ if (this.maxDate && end.isAfter(this.maxDate))
+ end = moment(this.maxDate);
+
+ // If the end of the range is before the minimum (if min is set) OR
+ // the start of the range is after the max (also if set) don't display this
+ // range option.
+ if ((this.minDate && end.isBefore(this.minDate)) || (this.maxDate && start.isAfter(this.maxDate))) {
+ continue;
+ }
+
+ this.ranges[range] = [start, end];
+ }
+
+ var list = '<ul>';
+ for (range in this.ranges) {
+ list += '<li>' + range + '</li>';
+ }
+ list += '<li>' + this.locale.customRangeLabel + '</li>';
+ list += '</ul>';
+ this.container.find('.ranges ul').remove();
+ this.container.find('.ranges').prepend(list);
+ }
+
+ if (typeof callback === 'function') {
+ this.cb = callback;
+ }
+
+ if (!this.timePicker) {
+ this.startDate = this.startDate.startOf('day');
+ this.endDate = this.endDate.endOf('day');
+ }
+
+ if (this.singleDatePicker) {
+ this.opens = 'right';
+ this.container.addClass('single');
+ this.container.find('.calendar.right').show();
+ this.container.find('.calendar.left').hide();
+ if (!this.timePicker) {
+ this.container.find('.ranges').hide();
+ } else {
+ this.container.find('.ranges .daterangepicker_start_input, .ranges .daterangepicker_end_input').hide();
+ }
+ if (!this.container.find('.calendar.right').hasClass('single'))
+ this.container.find('.calendar.right').addClass('single');
+ } else {
+ this.container.removeClass('single');
+ this.container.find('.calendar.right').removeClass('single');
+ this.container.find('.ranges').show();
+ }
+
+ this.oldStartDate = this.startDate.clone();
+ this.oldEndDate = this.endDate.clone();
+ this.oldChosenLabel = this.chosenLabel;
+
+ this.leftCalendar = {
+ month: moment([this.startDate.year(), this.startDate.month(), 1, this.startDate.hour(), this.startDate.minute(), this.startDate.second()]),
+ calendar: []
+ };
+
+ this.rightCalendar = {
+ month: moment([this.endDate.year(), this.endDate.month(), 1, this.endDate.hour(), this.endDate.minute(), this.endDate.second()]),
+ calendar: []
+ };
+
+ if (this.opens == 'right' || this.opens == 'center') {
+ //swap calendar positions
+ var first = this.container.find('.calendar.first');
+ var second = this.container.find('.calendar.second');
+
+ if (second.hasClass('single')) {
+ second.removeClass('single');
+ first.addClass('single');
+ }
+
+ first.removeClass('left').addClass('right');
+ second.removeClass('right').addClass('left');
+
+ if (this.singleDatePicker) {
+ first.show();
+ second.hide();
+ }
+ }
+
+ if (typeof options.ranges === 'undefined' && !this.singleDatePicker) {
+ this.container.addClass('show-calendar');
+ }
+
+ this.container.addClass('opens' + this.opens);
+
+ this.updateView();
+ this.updateCalendars();
+
+ },
+
+ setStartDate: function(startDate) {
+ if (typeof startDate === 'string')
+ this.startDate = moment(startDate, this.format).zone(this.timeZone);
+
+ if (typeof startDate === 'object')
+ this.startDate = moment(startDate);
+
+ if (!this.timePicker)
+ this.startDate = this.startDate.startOf('day');
+
+ this.oldStartDate = this.startDate.clone();
+
+ this.updateView();
+ this.updateCalendars();
+ this.updateInputText();
+ },
+
+ setEndDate: function(endDate) {
+ if (typeof endDate === 'string')
+ this.endDate = moment(endDate, this.format).zone(this.timeZone);
+
+ if (typeof endDate === 'object')
+ this.endDate = moment(endDate);
+
+ if (!this.timePicker)
+ this.endDate = this.endDate.endOf('day');
+
+ this.oldEndDate = this.endDate.clone();
+
+ this.updateView();
+ this.updateCalendars();
+ this.updateInputText();
+ },
+
+ updateView: function () {
+ this.leftCalendar.month.month(this.startDate.month()).year(this.startDate.year()).hour(this.startDate.hour()).minute(this.startDate.minute());
+ this.rightCalendar.month.month(this.endDate.month()).year(this.endDate.year()).hour(this.endDate.hour()).minute(this.endDate.minute());
+ this.updateFormInputs();
+ },
+
+ updateFormInputs: function () {
+ this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.format));
+ this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.format));
+
+ if (this.startDate.isSame(this.endDate) || this.startDate.isBefore(this.endDate)) {
+ this.container.find('button.applyBtn').removeAttr('disabled');
+ } else {
+ this.container.find('button.applyBtn').attr('disabled', 'disabled');
+ }
+ },
+
+ updateFromControl: function () {
+ if (!this.element.is('input')) return;
+ if (!this.element.val().length) return;
+
+ var dateString = this.element.val().split(this.separator),
+ start = null,
+ end = null;
+
+ if(dateString.length === 2) {
+ start = moment(dateString[0], this.format).zone(this.timeZone);
+ end = moment(dateString[1], this.format).zone(this.timeZone);
+ }
+
+ if (this.singleDatePicker || start === null || end === null) {
+ start = moment(this.element.val(), this.format).zone(this.timeZone);
+ end = start;
+ }
+
+ if (end.isBefore(start)) return;
+
+ this.oldStartDate = this.startDate.clone();
+ this.oldEndDate = this.endDate.clone();
+
+ this.startDate = start;
+ this.endDate = end;
+
+ if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate))
+ this.notify();
+
+ this.updateCalendars();
+ },
+
+ notify: function () {
+ this.updateView();
+ this.cb(this.startDate, this.endDate, this.chosenLabel);
+ },
+
+ move: function () {
+ var parentOffset = { top: 0, left: 0 };
+ var parentRightEdge = $(window).width();
+ if (!this.parentEl.is('body')) {
+ parentOffset = {
+ top: this.parentEl.offset().top - this.parentEl.scrollTop(),
+ left: this.parentEl.offset().left - this.parentEl.scrollLeft()
+ };
+ parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left;
+ }
+
+ if (this.opens == 'left') {
+ this.container.css({
+ top: this.element.offset().top + this.element.outerHeight() - parentOffset.top,
+ right: parentRightEdge - this.element.offset().left - this.element.outerWidth(),
+ left: 'auto'
+ });
+ if (this.container.offset().left < 0) {
+ this.container.css({
+ right: 'auto',
+ left: 9
+ });
+ }
+ } else if (this.opens == 'center') {
+ this.container.css({
+ top: this.element.offset().top + this.element.outerHeight() - parentOffset.top,
+ left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2
+ - this.container.outerWidth() / 2,
+ right: 'auto'
+ });
+ if (this.container.offset().left < 0) {
+ this.container.css({
+ right: 'auto',
+ left: 9
+ });
+ }
+ } else {
+ this.container.css({
+ top: this.element.offset().top + this.element.outerHeight() - parentOffset.top,
+ left: this.element.offset().left - parentOffset.left,
+ right: 'auto'
+ });
+ if (this.container.offset().left + this.container.outerWidth() > $(window).width()) {
+ this.container.css({
+ left: 'auto',
+ right: 0
+ });
+ }
+ }
+ },
+
+ toggle: function (e) {
+ if (this.element.hasClass('active')) {
+ this.hide();
+ } else {
+ this.show();
+ }
+ },
+
+ show: function (e) {
+ if (this.isShowing) return;
+
+ this.element.addClass('active');
+ this.container.show();
+ this.move();
+
+ // Create a click proxy that is private to this instance of datepicker, for unbinding
+ this._outsideClickProxy = $.proxy(function (e) { this.outsideClick(e); }, this);
+ // Bind global datepicker mousedown for hiding and
+ $(document)
+ .on('mousedown.daterangepicker', this._outsideClickProxy)
+ // also support mobile devices
+ .on('touchend.daterangepicker', this._outsideClickProxy)
+ // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them
+ .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy)
+ // and also close when focus changes to outside the picker (eg. tabbing between controls)
+ .on('focusin.daterangepicker', this._outsideClickProxy);
+
+ this.isShowing = true;
+ this.element.trigger('show.daterangepicker', this);
+ },
+
+ outsideClick: function (e) {
+ var target = $(e.target);
+ // if the page is clicked anywhere except within the daterangerpicker/button
+ // itself then call this.hide()
+ if (
+ // ie modal dialog fix
+ e.type == "focusin" ||
+ target.closest(this.element).length ||
+ target.closest(this.container).length ||
+ target.closest('.calendar-date').length
+ ) return;
+ this.hide();
+ },
+
+ hide: function (e) {
+ if (!this.isShowing) return;
+
+ $(document)
+ .off('.daterangepicker');
+
+ this.element.removeClass('active');
+ this.container.hide();
+
+ if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate))
+ this.notify();
+
+ this.oldStartDate = this.startDate.clone();
+ this.oldEndDate = this.endDate.clone();
+
+ this.isShowing = false;
+ this.element.trigger('hide.daterangepicker', this);
+ },
+
+ enterRange: function (e) {
+ // mouse pointer has entered a range label
+ var label = e.target.innerHTML;
+ if (label == this.locale.customRangeLabel) {
+ this.updateView();
+ } else {
+ var dates = this.ranges[label];
+ this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.format));
+ this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.format));
+ }
+ },
+
+ showCalendars: function() {
+ this.container.addClass('show-calendar');
+ this.move();
+ this.element.trigger('showCalendar.daterangepicker', this);
+ },
+
+ hideCalendars: function() {
+ this.container.removeClass('show-calendar');
+ this.element.trigger('hideCalendar.daterangepicker', this);
+ },
+
+ // when a date is typed into the start to end date textboxes
+ inputsChanged: function (e) {
+ var el = $(e.target);
+ var date = moment(el.val(), this.format);
+ if (!date.isValid()) return;
+
+ var startDate, endDate;
+ if (el.attr('name') === 'daterangepicker_start') {
+ startDate = date;
+ endDate = this.endDate;
+ } else {
+ startDate = this.startDate;
+ endDate = date;
+ }
+ this.setCustomDates(startDate, endDate);
+ },
+
+ inputsKeydown: function(e) {
+ if (e.keyCode === 13) {
+ this.inputsChanged(e);
+ this.notify();
+ }
+ },
+
+ updateInputText: function() {
+ if (this.element.is('input') && !this.singleDatePicker) {
+ this.element.val(this.startDate.format(this.format) + this.separator + this.endDate.format(this.format));
+ } else if (this.element.is('input')) {
+ this.element.val(this.endDate.format(this.format));
+ }
+ },
+
+ clickRange: function (e) {
+ var label = e.target.innerHTML;
+ this.chosenLabel = label;
+ if (label == this.locale.customRangeLabel) {
+ this.showCalendars();
+ } else {
+ var dates = this.ranges[label];
+
+ this.startDate = dates[0];
+ this.endDate = dates[1];
+
+ if (!this.timePicker) {
+ this.startDate.startOf('day');
+ this.endDate.endOf('day');
+ }
+
+ this.leftCalendar.month.month(this.startDate.month()).year(this.startDate.year()).hour(this.startDate.hour()).minute(this.startDate.minute());
+ this.rightCalendar.month.month(this.endDate.month()).year(this.endDate.year()).hour(this.endDate.hour()).minute(this.endDate.minute());
+ this.updateCalendars();
+
+ this.updateInputText();
+
+ this.hideCalendars();
+ this.hide();
+ this.element.trigger('apply.daterangepicker', this);
+ }
+ },
+
+ clickPrev: function (e) {
+ var cal = $(e.target).parents('.calendar');
+ if (cal.hasClass('left')) {
+ this.leftCalendar.month.subtract(1, 'month');
+ } else {
+ this.rightCalendar.month.subtract(1, 'month');
+ }
+ this.updateCalendars();
+ },
+
+ clickNext: function (e) {
+ var cal = $(e.target).parents('.calendar');
+ if (cal.hasClass('left')) {
+ this.leftCalendar.month.add(1, 'month');
+ } else {
+ this.rightCalendar.month.add(1, 'month');
+ }
+ this.updateCalendars();
+ },
+
+ hoverDate: function (e) {
+ var title = $(e.target).attr('data-title');
+ var row = title.substr(1, 1);
+ var col = title.substr(3, 1);
+ var cal = $(e.target).parents('.calendar');
+
+ if (cal.hasClass('left')) {
+ this.container.find('input[name=daterangepicker_start]').val(this.leftCalendar.calendar[row][col].format(this.format));
+ } else {
+ this.container.find('input[name=daterangepicker_end]').val(this.rightCalendar.calendar[row][col].format(this.format));
+ }
+ },
+
+ setCustomDates: function(startDate, endDate) {
+ this.chosenLabel = this.locale.customRangeLabel;
+ if (startDate.isAfter(endDate)) {
+ var difference = this.endDate.diff(this.startDate);
+ endDate = moment(startDate).add(difference, 'ms');
+ if (this.maxDate && endDate.isAfter(this.maxDate)) {
+ endDate = this.maxDate;
+ }
+ }
+ this.startDate = startDate;
+ this.endDate = endDate;
+
+ this.updateView();
+ this.updateCalendars();
+ },
+
+ clickDate: function (e) {
+ var title = $(e.target).attr('data-title');
+ var row = title.substr(1, 1);
+ var col = title.substr(3, 1);
+ var cal = $(e.target).parents('.calendar');
+
+ var startDate, endDate;
+ if (cal.hasClass('left')) {
+ startDate = this.leftCalendar.calendar[row][col];
+ endDate = this.endDate;
+ if (typeof this.dateLimit === 'object') {
+ var maxDate = moment(startDate).add(this.dateLimit).startOf('day');
+ if (endDate.isAfter(maxDate)) {
+ endDate = maxDate;
+ }
+ }
+ } else {
+ startDate = this.startDate;
+ endDate = this.rightCalendar.calendar[row][col];
+ if (typeof this.dateLimit === 'object') {
+ var minDate = moment(endDate).subtract(this.dateLimit).startOf('day');
+ if (startDate.isBefore(minDate)) {
+ startDate = minDate;
+ }
+ }
+ }
+
+ if (this.singleDatePicker && cal.hasClass('left')) {
+ endDate = startDate.clone();
+ } else if (this.singleDatePicker && cal.hasClass('right')) {
+ startDate = endDate.clone();
+ }
+
+ cal.find('td').removeClass('active');
+
+ $(e.target).addClass('active');
+
+ this.setCustomDates(startDate, endDate);
+
+ if (!this.timePicker)
+ endDate.endOf('day');
+
+ if (this.singleDatePicker && !this.timePicker)
+ this.clickApply();
+ },
+
+ clickApply: function (e) {
+ this.updateInputText();
+ this.hide();
+ this.element.trigger('apply.daterangepicker', this);
+ },
+
+ clickCancel: function (e) {
+ this.startDate = this.oldStartDate;
+ this.endDate = this.oldEndDate;
+ this.chosenLabel = this.oldChosenLabel;
+ this.updateView();
+ this.updateCalendars();
+ this.hide();
+ this.element.trigger('cancel.daterangepicker', this);
+ },
+
+ updateMonthYear: function (e) {
+ var isLeft = $(e.target).closest('.calendar').hasClass('left'),
+ leftOrRight = isLeft ? 'left' : 'right',
+ cal = this.container.find('.calendar.'+leftOrRight);
+
+ // Month must be Number for new moment versions
+ var month = parseInt(cal.find('.monthselect').val(), 10);
+ var year = cal.find('.yearselect').val();
+
+ this[leftOrRight+'Calendar'].month.month(month).year(year);
+ this.updateCalendars();
+ },
+
+ updateTime: function(e) {
+
+ var cal = $(e.target).closest('.calendar'),
+ isLeft = cal.hasClass('left');
+
+ var hour = parseInt(cal.find('.hourselect').val(), 10);
+ var minute = parseInt(cal.find('.minuteselect').val(), 10);
+ var second = 0;
+
+ if (this.timePickerSeconds) {
+ second = parseInt(cal.find('.secondselect').val(), 10);
+ }
+
+ if (this.timePicker12Hour) {
+ var ampm = cal.find('.ampmselect').val();
+ if (ampm === 'PM' && hour < 12)
+ hour += 12;
+ if (ampm === 'AM' && hour === 12)
+ hour = 0;
+ }
+
+ if (isLeft) {
+ var start = this.startDate.clone();
+ start.hour(hour);
+ start.minute(minute);
+ start.second(second);
+ this.startDate = start;
+ this.leftCalendar.month.hour(hour).minute(minute).second(second);
+ if (this.singleDatePicker)
+ this.endDate = start.clone();
+ } else {
+ var end = this.endDate.clone();
+ end.hour(hour);
+ end.minute(minute);
+ end.second(second);
+ this.endDate = end;
+ if (this.singleDatePicker)
+ this.startDate = end.clone();
+ this.rightCalendar.month.hour(hour).minute(minute).second(second);
+ }
+
+ this.updateView();
+ this.updateCalendars();
+ },
+
+ updateCalendars: function () {
+ this.leftCalendar.calendar = this.buildCalendar(this.leftCalendar.month.month(), this.leftCalendar.month.year(), this.leftCalendar.month.hour(), this.leftCalendar.month.minute(), this.leftCalendar.month.second(), 'left');
+ this.rightCalendar.calendar = this.buildCalendar(this.rightCalendar.month.month(), this.rightCalendar.month.year(), this.rightCalendar.month.hour(), this.rightCalendar.month.minute(), this.rightCalendar.month.second(), 'right');
+ this.container.find('.calendar.left').empty().html(this.renderCalendar(this.leftCalendar.calendar, this.startDate, this.minDate, this.maxDate, 'left'));
+ this.container.find('.calendar.right').empty().html(this.renderCalendar(this.rightCalendar.calendar, this.endDate, this.singleDatePicker ? this.minDate : this.startDate, this.maxDate, 'right'));
+
+ this.container.find('.ranges li').removeClass('active');
+ var customRange = true;
+ var i = 0;
+ for (var range in this.ranges) {
+ if (this.timePicker) {
+ if (this.startDate.isSame(this.ranges[range][0]) && this.endDate.isSame(this.ranges[range][1])) {
+ customRange = false;
+ this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')')
+ .addClass('active').html();
+ }
+ } else {
+ //ignore times when comparing dates if time picker is not enabled
+ if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) {
+ customRange = false;
+ this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')')
+ .addClass('active').html();
+ }
+ }
+ i++;
+ }
+ if (customRange) {
+ this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html();
+ this.showCalendars();
+ }
+ },
+
+ buildCalendar: function (month, year, hour, minute, second, side) {
+ var daysInMonth = moment([year, month]).daysInMonth();
+ var firstDay = moment([year, month, 1]);
+ var lastDay = moment([year, month, daysInMonth]);
+ var lastMonth = moment(firstDay).subtract(1, 'month').month();
+ var lastYear = moment(firstDay).subtract(1, 'month').year();
+
+ var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth();
+
+ var dayOfWeek = firstDay.day();
+
+ var i;
+
+ //initialize a 6 rows x 7 columns array for the calendar
+ var calendar = [];
+ calendar.firstDay = firstDay;
+ calendar.lastDay = lastDay;
+
+ for (i = 0; i < 6; i++) {
+ calendar[i] = [];
+ }
+
+ //populate the calendar with date objects
+ var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;
+ if (startDay > daysInLastMonth)
+ startDay -= 7;
+
+ if (dayOfWeek == this.locale.firstDay)
+ startDay = daysInLastMonth - 6;
+
+ var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]).zone(this.timeZone);
+
+ var col, row;
+ for (i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) {
+ if (i > 0 && col % 7 === 0) {
+ col = 0;
+ row++;
+ }
+ calendar[row][col] = curDate.clone().hour(hour);
+ curDate.hour(12);
+
+ if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') {
+ calendar[row][col] = this.minDate.clone();
+ }
+
+ if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') {
+ calendar[row][col] = this.maxDate.clone();
+ }
+
+ }
+
+ return calendar;
+ },
+
+ renderDropdowns: function (selected, minDate, maxDate) {
+ var currentMonth = selected.month();
+ var currentYear = selected.year();
+ var maxYear = (maxDate && maxDate.year()) || (currentYear + 5);
+ var minYear = (minDate && minDate.year()) || (currentYear - 50);
+
+ var monthHtml = '<select class="monthselect">';
+ var inMinYear = currentYear == minYear;
+ var inMaxYear = currentYear == maxYear;
+
+ for (var m = 0; m < 12; m++) {
+ if ((!inMinYear || m >= minDate.month()) && (!inMaxYear || m <= maxDate.month())) {
+ monthHtml += "<option value='" + m + "'" +
+ (m === currentMonth ? " selected='selected'" : "") +
+ ">" + this.locale.monthNames[m] + "</option>";
+ }
+ }
+ monthHtml += "</select>";
+
+ var yearHtml = '<select class="yearselect">';
+
+ for (var y = minYear; y <= maxYear; y++) {
+ yearHtml += '<option value="' + y + '"' +
+ (y === currentYear ? ' selected="selected"' : '') +
+ '>' + y + '</option>';
+ }
+
+ yearHtml += '</select>';
+
+ return monthHtml + yearHtml;
+ },
+
+ renderCalendar: function (calendar, selected, minDate, maxDate, side) {
+
+ var html = '<div class="calendar-date">';
+ html += '<table class="table-condensed">';
+ html += '<thead>';
+ html += '<tr>';
+
+ // add empty cell for week number
+ if (this.showWeekNumbers)
+ html += '<th></th>';
+
+ if (!minDate || minDate.isBefore(calendar.firstDay)) {
+ html += '<th class="prev available"><i class="fa fa-arrow-left icon icon-arrow-left glyphicon glyphicon-arrow-left"></i></th>';
+ } else {
+ html += '<th></th>';
+ }
+
+ var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(" YYYY");
+
+ if (this.showDropdowns) {
+ dateHtml = this.renderDropdowns(calendar[1][1], minDate, maxDate);
+ }
+
+ html += '<th colspan="5" class="month">' + dateHtml + '</th>';
+ if (!maxDate || maxDate.isAfter(calendar.lastDay)) {
+ html += '<th class="next available"><i class="fa fa-arrow-right icon icon-arrow-right glyphicon glyphicon-arrow-right"></i></th>';
+ } else {
+ html += '<th></th>';
+ }
+
+ html += '</tr>';
+ html += '<tr>';
+
+ // add week number label
+ if (this.showWeekNumbers)
+ html += '<th class="week">' + this.locale.weekLabel + '</th>';
+
+ $.each(this.locale.daysOfWeek, function (index, dayOfWeek) {
+ html += '<th>' + dayOfWeek + '</th>';
+ });
+
+ html += '</tr>';
+ html += '</thead>';
+ html += '<tbody>';
+
+ for (var row = 0; row < 6; row++) {
+ html += '<tr>';
+
+ // add week number
+ if (this.showWeekNumbers)
+ html += '<td class="week">' + calendar[row][0].week() + '</td>';
+
+ for (var col = 0; col < 7; col++) {
+ var cname = 'available ';
+ cname += (calendar[row][col].month() == calendar[1][1].month()) ? '' : 'off';
+
+ if ((minDate && calendar[row][col].isBefore(minDate, 'day')) || (maxDate && calendar[row][col].isAfter(maxDate, 'day'))) {
+ cname = ' off disabled ';
+ } else if (calendar[row][col].format('YYYY-MM-DD') == selected.format('YYYY-MM-DD')) {
+ cname += ' active ';
+ if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD')) {
+ cname += ' start-date ';
+ }
+ if (calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD')) {
+ cname += ' end-date ';
+ }
+ } else if (calendar[row][col] >= this.startDate && calendar[row][col] <= this.endDate) {
+ cname += ' in-range ';
+ if (calendar[row][col].isSame(this.startDate)) { cname += ' start-date '; }
+ if (calendar[row][col].isSame(this.endDate)) { cname += ' end-date '; }
+ }
+
+ var title = 'r' + row + 'c' + col;
+ html += '<td class="' + cname.replace(/\s+/g, ' ').replace(/^\s?(.*?)\s?$/, '$1') + '" data-title="' + title + '">' + calendar[row][col].date() + '</td>';
+ }
+ html += '</tr>';
+ }
+
+ html += '</tbody>';
+ html += '</table>';
+ html += '</div>';
+
+ var i;
+ if (this.timePicker) {
+
+ html += '<div class="calendar-time">';
+ html += '<select class="hourselect">';
+
+ // Disallow selections before the minDate or after the maxDate
+ var min_hour = 0;
+ var max_hour = 23;
+
+ if (minDate && (side == 'left' || this.singleDatePicker) && selected.format('YYYY-MM-DD') == minDate.format('YYYY-MM-DD')) {
+ min_hour = minDate.hour();
+ if (selected.hour() < min_hour)
+ selected.hour(min_hour);
+ if (this.timePicker12Hour && min_hour >= 12 && selected.hour() >= 12)
+ min_hour -= 12;
+ if (this.timePicker12Hour && min_hour == 12)
+ min_hour = 1;
+ }
+
+ if (maxDate && (side == 'right' || this.singleDatePicker) && selected.format('YYYY-MM-DD') == maxDate.format('YYYY-MM-DD')) {
+ max_hour = maxDate.hour();
+ if (selected.hour() > max_hour)
+ selected.hour(max_hour);
+ if (this.timePicker12Hour && max_hour >= 12 && selected.hour() >= 12)
+ max_hour -= 12;
+ }
+
+ var start = 0;
+ var end = 23;
+ var selected_hour = selected.hour();
+ if (this.timePicker12Hour) {
+ start = 1;
+ end = 12;
+ if (selected_hour >= 12)
+ selected_hour -= 12;
+ if (selected_hour === 0)
+ selected_hour = 12;
+ }
+
+ for (i = start; i <= end; i++) {
+
+ if (i == selected_hour) {
+ html += '<option value="' + i + '" selected="selected">' + i + '</option>';
+ } else if (i < min_hour || i > max_hour) {
+ html += '<option value="' + i + '" disabled="disabled" class="disabled">' + i + '</option>';
+ } else {
+ html += '<option value="' + i + '">' + i + '</option>';
+ }
+ }
+
+ html += '</select> : ';
+
+ html += '<select class="minuteselect">';
+
+ // Disallow selections before the minDate or after the maxDate
+ var min_minute = 0;
+ var max_minute = 59;
+
+ if (minDate && (side == 'left' || this.singleDatePicker) && selected.format('YYYY-MM-DD h A') == minDate.format('YYYY-MM-DD h A')) {
+ min_minute = minDate.minute();
+ if (selected.minute() < min_minute)
+ selected.minute(min_minute);
+ }
+
+ if (maxDate && (side == 'right' || this.singleDatePicker) && selected.format('YYYY-MM-DD h A') == maxDate.format('YYYY-MM-DD h A')) {
+ max_minute = maxDate.minute();
+ if (selected.minute() > max_minute)
+ selected.minute(max_minute);
+ }
+
+ for (i = 0; i < 60; i += this.timePickerIncrement) {
+ var num = i;
+ if (num < 10)
+ num = '0' + num;
+ if (i == selected.minute()) {
+ html += '<option value="' + i + '" selected="selected">' + num + '</option>';
+ } else if (i < min_minute || i > max_minute) {
+ html += '<option value="' + i + '" disabled="disabled" class="disabled">' + num + '</option>';
+ } else {
+ html += '<option value="' + i + '">' + num + '</option>';
+ }
+ }
+
+ html += '</select> ';
+
+ if (this.timePickerSeconds) {
+ html += ': <select class="secondselect">';
+
+ for (i = 0; i < 60; i += this.timePickerIncrement) {
+ var num = i;
+ if (num < 10)
+ num = '0' + num;
+ if (i == selected.second()) {
+ html += '<option value="' + i + '" selected="selected">' + num + '</option>';
+ } else {
+ html += '<option value="' + i + '">' + num + '</option>';
+ }
+ }
+
+ html += '</select>';
+ }
+
+ if (this.timePicker12Hour) {
+ html += '<select class="ampmselect">';
+
+ // Disallow selection before the minDate or after the maxDate
+ var am_html = '';
+ var pm_html = '';
+
+ if (minDate && (side == 'left' || this.singleDatePicker) && selected.format('YYYY-MM-DD') == minDate.format('YYYY-MM-DD') && minDate.hour() >= 12) {
+ am_html = ' disabled="disabled" class="disabled"';
+ }
+
+ if (maxDate && (side == 'right' || this.singleDatePicker) && selected.format('YYYY-MM-DD') == maxDate.format('YYYY-MM-DD') && maxDate.hour() < 12) {
+ pm_html = ' disabled="disabled" class="disabled"';
+ }
+
+ if (selected.hour() >= 12) {
+ html += '<option value="AM"' + am_html + '>AM</option><option value="PM" selected="selected"' + pm_html + '>PM</option>';
+ } else {
+ html += '<option value="AM" selected="selected"' + am_html + '>AM</option><option value="PM"' + pm_html + '>PM</option>';
+ }
+ html += '</select>';
+ }
+
+ html += '</div>';
+
+ }
+
+ return html;
+
+ },
+
+ remove: function() {
+
+ this.container.remove();
+ this.element.off('.daterangepicker');
+ this.element.removeData('daterangepicker');
+
+ }
+
+ };
+
+ $.fn.daterangepicker = function (options, cb) {
+ this.each(function () {
+ var el = $(this);
+ if (el.data('daterangepicker'))
+ el.data('daterangepicker').remove();
+ el.data('daterangepicker', new DateRangePicker(el, options, cb));
+ });
+ return this;
+ };
+
+}));
diff --git a/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/moment.js b/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/moment.js
new file mode 100755
index 00000000..1800b5de
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/moment.js
@@ -0,0 +1,2808 @@
+//! moment.js
+//! version : 2.8.1
+//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
+//! license : MIT
+//! momentjs.com
+
+(function (undefined) {
+ /************************************
+ Constants
+ ************************************/
+
+ var moment,
+ VERSION = '2.8.1',
+ // the global-scope this is NOT the global object in Node.js
+ globalScope = typeof global !== 'undefined' ? global : this,
+ oldGlobalMoment,
+ round = Math.round,
+ i,
+
+ YEAR = 0,
+ MONTH = 1,
+ DATE = 2,
+ HOUR = 3,
+ MINUTE = 4,
+ SECOND = 5,
+ MILLISECOND = 6,
+
+ // internal storage for locale config files
+ locales = {},
+
+ // extra moment internal properties (plugins register props here)
+ momentProperties = [],
+
+ // check for nodeJS
+ hasModule = (typeof module !== 'undefined' && module.exports),
+
+ // ASP.NET json date format regex
+ aspNetJsonRegex = /^\/?Date\((\-?\d+)/i,
+ aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,
+
+ // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
+ // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
+ isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,
+
+ // format tokens
+ formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,
+ localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,
+
+ // parsing token regexes
+ parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99
+ parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999
+ parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999
+ parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999
+ parseTokenDigits = /\d+/, // nonzero number of digits
+ parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic.
+ parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
+ parseTokenT = /T/i, // T (ISO separator)
+ parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
+ parseTokenOrdinal = /\d{1,2}/,
+
+ //strict parsing regexes
+ parseTokenOneDigit = /\d/, // 0 - 9
+ parseTokenTwoDigits = /\d\d/, // 00 - 99
+ parseTokenThreeDigits = /\d{3}/, // 000 - 999
+ parseTokenFourDigits = /\d{4}/, // 0000 - 9999
+ parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999
+ parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf
+
+ // iso 8601 regex
+ // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
+ isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
+
+ isoFormat = 'YYYY-MM-DDTHH:mm:ssZ',
+
+ isoDates = [
+ ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/],
+ ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/],
+ ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/],
+ ['GGGG-[W]WW', /\d{4}-W\d{2}/],
+ ['YYYY-DDD', /\d{4}-\d{3}/]
+ ],
+
+ // iso time formats and regexes
+ isoTimes = [
+ ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/],
+ ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/],
+ ['HH:mm', /(T| )\d\d:\d\d/],
+ ['HH', /(T| )\d\d/]
+ ],
+
+ // timezone chunker "+10:00" > ["10", "00"] or "-1530" > ["-15", "30"]
+ parseTimezoneChunker = /([\+\-]|\d\d)/gi,
+
+ // getter and setter names
+ proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'),
+ unitMillisecondFactors = {
+ 'Milliseconds' : 1,
+ 'Seconds' : 1e3,
+ 'Minutes' : 6e4,
+ 'Hours' : 36e5,
+ 'Days' : 864e5,
+ 'Months' : 2592e6,
+ 'Years' : 31536e6
+ },
+
+ unitAliases = {
+ ms : 'millisecond',
+ s : 'second',
+ m : 'minute',
+ h : 'hour',
+ d : 'day',
+ D : 'date',
+ w : 'week',
+ W : 'isoWeek',
+ M : 'month',
+ Q : 'quarter',
+ y : 'year',
+ DDD : 'dayOfYear',
+ e : 'weekday',
+ E : 'isoWeekday',
+ gg: 'weekYear',
+ GG: 'isoWeekYear'
+ },
+
+ camelFunctions = {
+ dayofyear : 'dayOfYear',
+ isoweekday : 'isoWeekday',
+ isoweek : 'isoWeek',
+ weekyear : 'weekYear',
+ isoweekyear : 'isoWeekYear'
+ },
+
+ // format function strings
+ formatFunctions = {},
+
+ // default relative time thresholds
+ relativeTimeThresholds = {
+ s: 45, // seconds to minute
+ m: 45, // minutes to hour
+ h: 22, // hours to day
+ d: 26, // days to month
+ M: 11 // months to year
+ },
+
+ // tokens to ordinalize and pad
+ ordinalizeTokens = 'DDD w W M D d'.split(' '),
+ paddedTokens = 'M D H h m s w W'.split(' '),
+
+ formatTokenFunctions = {
+ M : function () {
+ return this.month() + 1;
+ },
+ MMM : function (format) {
+ return this.localeData().monthsShort(this, format);
+ },
+ MMMM : function (format) {
+ return this.localeData().months(this, format);
+ },
+ D : function () {
+ return this.date();
+ },
+ DDD : function () {
+ return this.dayOfYear();
+ },
+ d : function () {
+ return this.day();
+ },
+ dd : function (format) {
+ return this.localeData().weekdaysMin(this, format);
+ },
+ ddd : function (format) {
+ return this.localeData().weekdaysShort(this, format);
+ },
+ dddd : function (format) {
+ return this.localeData().weekdays(this, format);
+ },
+ w : function () {
+ return this.week();
+ },
+ W : function () {
+ return this.isoWeek();
+ },
+ YY : function () {
+ return leftZeroFill(this.year() % 100, 2);
+ },
+ YYYY : function () {
+ return leftZeroFill(this.year(), 4);
+ },
+ YYYYY : function () {
+ return leftZeroFill(this.year(), 5);
+ },
+ YYYYYY : function () {
+ var y = this.year(), sign = y >= 0 ? '+' : '-';
+ return sign + leftZeroFill(Math.abs(y), 6);
+ },
+ gg : function () {
+ return leftZeroFill(this.weekYear() % 100, 2);
+ },
+ gggg : function () {
+ return leftZeroFill(this.weekYear(), 4);
+ },
+ ggggg : function () {
+ return leftZeroFill(this.weekYear(), 5);
+ },
+ GG : function () {
+ return leftZeroFill(this.isoWeekYear() % 100, 2);
+ },
+ GGGG : function () {
+ return leftZeroFill(this.isoWeekYear(), 4);
+ },
+ GGGGG : function () {
+ return leftZeroFill(this.isoWeekYear(), 5);
+ },
+ e : function () {
+ return this.weekday();
+ },
+ E : function () {
+ return this.isoWeekday();
+ },
+ a : function () {
+ return this.localeData().meridiem(this.hours(), this.minutes(), true);
+ },
+ A : function () {
+ return this.localeData().meridiem(this.hours(), this.minutes(), false);
+ },
+ H : function () {
+ return this.hours();
+ },
+ h : function () {
+ return this.hours() % 12 || 12;
+ },
+ m : function () {
+ return this.minutes();
+ },
+ s : function () {
+ return this.seconds();
+ },
+ S : function () {
+ return toInt(this.milliseconds() / 100);
+ },
+ SS : function () {
+ return leftZeroFill(toInt(this.milliseconds() / 10), 2);
+ },
+ SSS : function () {
+ return leftZeroFill(this.milliseconds(), 3);
+ },
+ SSSS : function () {
+ return leftZeroFill(this.milliseconds(), 3);
+ },
+ Z : function () {
+ var a = -this.zone(),
+ b = '+';
+ if (a < 0) {
+ a = -a;
+ b = '-';
+ }
+ return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2);
+ },
+ ZZ : function () {
+ var a = -this.zone(),
+ b = '+';
+ if (a < 0) {
+ a = -a;
+ b = '-';
+ }
+ return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2);
+ },
+ z : function () {
+ return this.zoneAbbr();
+ },
+ zz : function () {
+ return this.zoneName();
+ },
+ X : function () {
+ return this.unix();
+ },
+ Q : function () {
+ return this.quarter();
+ }
+ },
+
+ deprecations = {},
+
+ lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'];
+
+ // Pick the first defined of two or three arguments. dfl comes from
+ // default.
+ function dfl(a, b, c) {
+ switch (arguments.length) {
+ case 2: return a != null ? a : b;
+ case 3: return a != null ? a : b != null ? b : c;
+ default: throw new Error('Implement me');
+ }
+ }
+
+ function defaultParsingFlags() {
+ // We need to deep clone this object, and es5 standard is not very
+ // helpful.
+ return {
+ empty : false,
+ unusedTokens : [],
+ unusedInput : [],
+ overflow : -2,
+ charsLeftOver : 0,
+ nullInput : false,
+ invalidMonth : null,
+ invalidFormat : false,
+ userInvalidated : false,
+ iso: false
+ };
+ }
+
+ function printMsg(msg) {
+ if (moment.suppressDeprecationWarnings === false &&
+ typeof console !== 'undefined' && console.warn) {
+ console.warn("Deprecation warning: " + msg);
+ }
+ }
+
+ function deprecate(msg, fn) {
+ var firstTime = true;
+ return extend(function () {
+ if (firstTime) {
+ printMsg(msg);
+ firstTime = false;
+ }
+ return fn.apply(this, arguments);
+ }, fn);
+ }
+
+ function deprecateSimple(name, msg) {
+ if (!deprecations[name]) {
+ printMsg(msg);
+ deprecations[name] = true;
+ }
+ }
+
+ function padToken(func, count) {
+ return function (a) {
+ return leftZeroFill(func.call(this, a), count);
+ };
+ }
+ function ordinalizeToken(func, period) {
+ return function (a) {
+ return this.localeData().ordinal(func.call(this, a), period);
+ };
+ }
+
+ while (ordinalizeTokens.length) {
+ i = ordinalizeTokens.pop();
+ formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i);
+ }
+ while (paddedTokens.length) {
+ i = paddedTokens.pop();
+ formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2);
+ }
+ formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3);
+
+
+ /************************************
+ Constructors
+ ************************************/
+
+ function Locale() {
+ }
+
+ // Moment prototype object
+ function Moment(config, skipOverflow) {
+ if (skipOverflow !== false) {
+ checkOverflow(config);
+ }
+ copyConfig(this, config);
+ this._d = new Date(+config._d);
+ }
+
+ // Duration Constructor
+ function Duration(duration) {
+ var normalizedInput = normalizeObjectUnits(duration),
+ years = normalizedInput.year || 0,
+ quarters = normalizedInput.quarter || 0,
+ months = normalizedInput.month || 0,
+ weeks = normalizedInput.week || 0,
+ days = normalizedInput.day || 0,
+ hours = normalizedInput.hour || 0,
+ minutes = normalizedInput.minute || 0,
+ seconds = normalizedInput.second || 0,
+ milliseconds = normalizedInput.millisecond || 0;
+
+ // representation for dateAddRemove
+ this._milliseconds = +milliseconds +
+ seconds * 1e3 + // 1000
+ minutes * 6e4 + // 1000 * 60
+ hours * 36e5; // 1000 * 60 * 60
+ // Because of dateAddRemove treats 24 hours as different from a
+ // day when working around DST, we need to store them separately
+ this._days = +days +
+ weeks * 7;
+ // It is impossible translate months into days without knowing
+ // which months you are are talking about, so we have to store
+ // it separately.
+ this._months = +months +
+ quarters * 3 +
+ years * 12;
+
+ this._data = {};
+
+ this._locale = moment.localeData();
+
+ this._bubble();
+ }
+
+ /************************************
+ Helpers
+ ************************************/
+
+
+ function extend(a, b) {
+ for (var i in b) {
+ if (b.hasOwnProperty(i)) {
+ a[i] = b[i];
+ }
+ }
+
+ if (b.hasOwnProperty('toString')) {
+ a.toString = b.toString;
+ }
+
+ if (b.hasOwnProperty('valueOf')) {
+ a.valueOf = b.valueOf;
+ }
+
+ return a;
+ }
+
+ function copyConfig(to, from) {
+ var i, prop, val;
+
+ if (typeof from._isAMomentObject !== 'undefined') {
+ to._isAMomentObject = from._isAMomentObject;
+ }
+ if (typeof from._i !== 'undefined') {
+ to._i = from._i;
+ }
+ if (typeof from._f !== 'undefined') {
+ to._f = from._f;
+ }
+ if (typeof from._l !== 'undefined') {
+ to._l = from._l;
+ }
+ if (typeof from._strict !== 'undefined') {
+ to._strict = from._strict;
+ }
+ if (typeof from._tzm !== 'undefined') {
+ to._tzm = from._tzm;
+ }
+ if (typeof from._isUTC !== 'undefined') {
+ to._isUTC = from._isUTC;
+ }
+ if (typeof from._offset !== 'undefined') {
+ to._offset = from._offset;
+ }
+ if (typeof from._pf !== 'undefined') {
+ to._pf = from._pf;
+ }
+ if (typeof from._locale !== 'undefined') {
+ to._locale = from._locale;
+ }
+
+ if (momentProperties.length > 0) {
+ for (i in momentProperties) {
+ prop = momentProperties[i];
+ val = from[prop];
+ if (typeof val !== 'undefined') {
+ to[prop] = val;
+ }
+ }
+ }
+
+ return to;
+ }
+
+ function absRound(number) {
+ if (number < 0) {
+ return Math.ceil(number);
+ } else {
+ return Math.floor(number);
+ }
+ }
+
+ // left zero fill a number
+ // see http://jsperf.com/left-zero-filling for performance comparison
+ function leftZeroFill(number, targetLength, forceSign) {
+ var output = '' + Math.abs(number),
+ sign = number >= 0;
+
+ while (output.length < targetLength) {
+ output = '0' + output;
+ }
+ return (sign ? (forceSign ? '+' : '') : '-') + output;
+ }
+
+ function positiveMomentsDifference(base, other) {
+ var res = {milliseconds: 0, months: 0};
+
+ res.months = other.month() - base.month() +
+ (other.year() - base.year()) * 12;
+ if (base.clone().add(res.months, 'M').isAfter(other)) {
+ --res.months;
+ }
+
+ res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
+
+ return res;
+ }
+
+ function momentsDifference(base, other) {
+ var res;
+ other = makeAs(other, base);
+ if (base.isBefore(other)) {
+ res = positiveMomentsDifference(base, other);
+ } else {
+ res = positiveMomentsDifference(other, base);
+ res.milliseconds = -res.milliseconds;
+ res.months = -res.months;
+ }
+
+ return res;
+ }
+
+ // TODO: remove 'name' arg after deprecation is removed
+ function createAdder(direction, name) {
+ return function (val, period) {
+ var dur, tmp;
+ //invert the arguments, but complain about it
+ if (period !== null && !isNaN(+period)) {
+ deprecateSimple(name, "moment()." + name + "(period, number) is deprecated. Please use moment()." + name + "(number, period).");
+ tmp = val; val = period; period = tmp;
+ }
+
+ val = typeof val === 'string' ? +val : val;
+ dur = moment.duration(val, period);
+ addOrSubtractDurationFromMoment(this, dur, direction);
+ return this;
+ };
+ }
+
+ function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) {
+ var milliseconds = duration._milliseconds,
+ days = duration._days,
+ months = duration._months;
+ updateOffset = updateOffset == null ? true : updateOffset;
+
+ if (milliseconds) {
+ mom._d.setTime(+mom._d + milliseconds * isAdding);
+ }
+ if (days) {
+ rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding);
+ }
+ if (months) {
+ rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding);
+ }
+ if (updateOffset) {
+ moment.updateOffset(mom, days || months);
+ }
+ }
+
+ // check if is an array
+ function isArray(input) {
+ return Object.prototype.toString.call(input) === '[object Array]';
+ }
+
+ function isDate(input) {
+ return Object.prototype.toString.call(input) === '[object Date]' ||
+ input instanceof Date;
+ }
+
+ // compare two arrays, return the number of differences
+ function compareArrays(array1, array2, dontConvert) {
+ var len = Math.min(array1.length, array2.length),
+ lengthDiff = Math.abs(array1.length - array2.length),
+ diffs = 0,
+ i;
+ for (i = 0; i < len; i++) {
+ if ((dontConvert && array1[i] !== array2[i]) ||
+ (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
+ diffs++;
+ }
+ }
+ return diffs + lengthDiff;
+ }
+
+ function normalizeUnits(units) {
+ if (units) {
+ var lowered = units.toLowerCase().replace(/(.)s$/, '$1');
+ units = unitAliases[units] || camelFunctions[lowered] || lowered;
+ }
+ return units;
+ }
+
+ function normalizeObjectUnits(inputObject) {
+ var normalizedInput = {},
+ normalizedProp,
+ prop;
+
+ for (prop in inputObject) {
+ if (inputObject.hasOwnProperty(prop)) {
+ normalizedProp = normalizeUnits(prop);
+ if (normalizedProp) {
+ normalizedInput[normalizedProp] = inputObject[prop];
+ }
+ }
+ }
+
+ return normalizedInput;
+ }
+
+ function makeList(field) {
+ var count, setter;
+
+ if (field.indexOf('week') === 0) {
+ count = 7;
+ setter = 'day';
+ }
+ else if (field.indexOf('month') === 0) {
+ count = 12;
+ setter = 'month';
+ }
+ else {
+ return;
+ }
+
+ moment[field] = function (format, index) {
+ var i, getter,
+ method = moment._locale[field],
+ results = [];
+
+ if (typeof format === 'number') {
+ index = format;
+ format = undefined;
+ }
+
+ getter = function (i) {
+ var m = moment().utc().set(setter, i);
+ return method.call(moment._locale, m, format || '');
+ };
+
+ if (index != null) {
+ return getter(index);
+ }
+ else {
+ for (i = 0; i < count; i++) {
+ results.push(getter(i));
+ }
+ return results;
+ }
+ };
+ }
+
+ function toInt(argumentForCoercion) {
+ var coercedNumber = +argumentForCoercion,
+ value = 0;
+
+ if (coercedNumber !== 0 && isFinite(coercedNumber)) {
+ if (coercedNumber >= 0) {
+ value = Math.floor(coercedNumber);
+ } else {
+ value = Math.ceil(coercedNumber);
+ }
+ }
+
+ return value;
+ }
+
+ function daysInMonth(year, month) {
+ return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
+ }
+
+ function weeksInYear(year, dow, doy) {
+ return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week;
+ }
+
+ function daysInYear(year) {
+ return isLeapYear(year) ? 366 : 365;
+ }
+
+ function isLeapYear(year) {
+ return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
+ }
+
+ function checkOverflow(m) {
+ var overflow;
+ if (m._a && m._pf.overflow === -2) {
+ overflow =
+ m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH :
+ m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE :
+ m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR :
+ m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE :
+ m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND :
+ m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND :
+ -1;
+
+ if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
+ overflow = DATE;
+ }
+
+ m._pf.overflow = overflow;
+ }
+ }
+
+ function isValid(m) {
+ if (m._isValid == null) {
+ m._isValid = !isNaN(m._d.getTime()) &&
+ m._pf.overflow < 0 &&
+ !m._pf.empty &&
+ !m._pf.invalidMonth &&
+ !m._pf.nullInput &&
+ !m._pf.invalidFormat &&
+ !m._pf.userInvalidated;
+
+ if (m._strict) {
+ m._isValid = m._isValid &&
+ m._pf.charsLeftOver === 0 &&
+ m._pf.unusedTokens.length === 0;
+ }
+ }
+ return m._isValid;
+ }
+
+ function normalizeLocale(key) {
+ return key ? key.toLowerCase().replace('_', '-') : key;
+ }
+
+ // pick the locale from the array
+ // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
+ // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
+ function chooseLocale(names) {
+ var i = 0, j, next, locale, split;
+
+ while (i < names.length) {
+ split = normalizeLocale(names[i]).split('-');
+ j = split.length;
+ next = normalizeLocale(names[i + 1]);
+ next = next ? next.split('-') : null;
+ while (j > 0) {
+ locale = loadLocale(split.slice(0, j).join('-'));
+ if (locale) {
+ return locale;
+ }
+ if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
+ //the next array item is better than a shallower substring of this one
+ break;
+ }
+ j--;
+ }
+ i++;
+ }
+ return null;
+ }
+
+ function loadLocale(name) {
+ var oldLocale = null;
+ if (!locales[name] && hasModule) {
+ try {
+ oldLocale = moment.locale();
+ require('./locale/' + name);
+ // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales
+ moment.locale(oldLocale);
+ } catch (e) { }
+ }
+ return locales[name];
+ }
+
+ // Return a moment from input, that is local/utc/zone equivalent to model.
+ function makeAs(input, model) {
+ return model._isUTC ? moment(input).zone(model._offset || 0) :
+ moment(input).local();
+ }
+
+ /************************************
+ Locale
+ ************************************/
+
+
+ extend(Locale.prototype, {
+
+ set : function (config) {
+ var prop, i;
+ for (i in config) {
+ prop = config[i];
+ if (typeof prop === 'function') {
+ this[i] = prop;
+ } else {
+ this['_' + i] = prop;
+ }
+ }
+ },
+
+ _months : '1_2_3_4_May_June_July_August_September_October_November_December'.split('_'),
+ months : function (m) {
+ return this._months[m.month()];
+ },
+
+ _monthsShort : '1_2_3_4_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ monthsShort : function (m) {
+ return this._monthsShort[m.month()];
+ },
+
+ monthsParse : function (monthName) {
+ var i, mom, regex;
+
+ if (!this._monthsParse) {
+ this._monthsParse = [];
+ }
+
+ for (i = 0; i < 12; i++) {
+ // make the regex if we don't have it already
+ if (!this._monthsParse[i]) {
+ mom = moment.utc([2000, i]);
+ regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
+ this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
+ }
+ // test the regex
+ if (this._monthsParse[i].test(monthName)) {
+ return i;
+ }
+ }
+ },
+
+ _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ weekdays : function (m) {
+ return this._weekdays[m.day()];
+ },
+
+ _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ weekdaysShort : function (m) {
+ return this._weekdaysShort[m.day()];
+ },
+
+ _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ weekdaysMin : function (m) {
+ return this._weekdaysMin[m.day()];
+ },
+
+ weekdaysParse : function (weekdayName) {
+ var i, mom, regex;
+
+ if (!this._weekdaysParse) {
+ this._weekdaysParse = [];
+ }
+
+ for (i = 0; i < 7; i++) {
+ // make the regex if we don't have it already
+ if (!this._weekdaysParse[i]) {
+ mom = moment([2000, 1]).day(i);
+ regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
+ this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
+ }
+ // test the regex
+ if (this._weekdaysParse[i].test(weekdayName)) {
+ return i;
+ }
+ }
+ },
+
+ _longDateFormat : {
+ LT : 'h:mm A',
+ L : 'MM/DD/YYYY',
+ LL : 'MMMM D, YYYY',
+ LLL : 'MMMM D, YYYY LT',
+ LLLL : 'dddd, MMMM D, YYYY LT'
+ },
+ longDateFormat : function (key) {
+ var output = this._longDateFormat[key];
+ if (!output && this._longDateFormat[key.toUpperCase()]) {
+ output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) {
+ return val.slice(1);
+ });
+ this._longDateFormat[key] = output;
+ }
+ return output;
+ },
+
+ isPM : function (input) {
+ // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
+ // Using charAt should be more compatible.
+ return ((input + '').toLowerCase().charAt(0) === 'p');
+ },
+
+ _meridiemParse : /[ap]\.?m?\.?/i,
+ meridiem : function (hours, minutes, isLower) {
+ if (hours > 11) {
+ return isLower ? 'pm' : 'PM';
+ } else {
+ return isLower ? 'am' : 'AM';
+ }
+ },
+
+ _calendar : {
+ sameDay : '[Today at] LT',
+ nextDay : '[Tomorrow at] LT',
+ nextWeek : 'dddd [at] LT',
+ lastDay : '[Yesterday at] LT',
+ lastWeek : '[Last] dddd [at] LT',
+ sameElse : 'L'
+ },
+ calendar : function (key, mom) {
+ var output = this._calendar[key];
+ return typeof output === 'function' ? output.apply(mom) : output;
+ },
+
+ _relativeTime : {
+ future : 'in %s',
+ past : '%s ago',
+ s : 'a few seconds',
+ m : 'a minute',
+ mm : '%d minutes',
+ h : 'an hour',
+ hh : '%d hours',
+ d : 'a day',
+ dd : '%d days',
+ M : 'a month',
+ MM : '%d months',
+ y : 'a year',
+ yy : '%d years'
+ },
+
+ relativeTime : function (number, withoutSuffix, string, isFuture) {
+ var output = this._relativeTime[string];
+ return (typeof output === 'function') ?
+ output(number, withoutSuffix, string, isFuture) :
+ output.replace(/%d/i, number);
+ },
+
+ pastFuture : function (diff, output) {
+ var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
+ return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);
+ },
+
+ ordinal : function (number) {
+ return this._ordinal.replace('%d', number);
+ },
+ _ordinal : '%d',
+
+ preparse : function (string) {
+ return string;
+ },
+
+ postformat : function (string) {
+ return string;
+ },
+
+ week : function (mom) {
+ return weekOfYear(mom, this._week.dow, this._week.doy).week;
+ },
+
+ _week : {
+ dow : 0, // Sunday is the first day of the week.
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
+ },
+
+ _invalidDate: 'Invalid date',
+ invalidDate: function () {
+ return this._invalidDate;
+ }
+ });
+
+ /************************************
+ Formatting
+ ************************************/
+
+
+ function removeFormattingTokens(input) {
+ if (input.match(/\[[\s\S]/)) {
+ return input.replace(/^\[|\]$/g, '');
+ }
+ return input.replace(/\\/g, '');
+ }
+
+ function makeFormatFunction(format) {
+ var array = format.match(formattingTokens), i, length;
+
+ for (i = 0, length = array.length; i < length; i++) {
+ if (formatTokenFunctions[array[i]]) {
+ array[i] = formatTokenFunctions[array[i]];
+ } else {
+ array[i] = removeFormattingTokens(array[i]);
+ }
+ }
+
+ return function (mom) {
+ var output = '';
+ for (i = 0; i < length; i++) {
+ output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
+ }
+ return output;
+ };
+ }
+
+ // format date using native date object
+ function formatMoment(m, format) {
+ if (!m.isValid()) {
+ return m.localeData().invalidDate();
+ }
+
+ format = expandFormat(format, m.localeData());
+
+ if (!formatFunctions[format]) {
+ formatFunctions[format] = makeFormatFunction(format);
+ }
+
+ return formatFunctions[format](m);
+ }
+
+ function expandFormat(format, locale) {
+ var i = 5;
+
+ function replaceLongDateFormatTokens(input) {
+ return locale.longDateFormat(input) || input;
+ }
+
+ localFormattingTokens.lastIndex = 0;
+ while (i >= 0 && localFormattingTokens.test(format)) {
+ format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
+ localFormattingTokens.lastIndex = 0;
+ i -= 1;
+ }
+
+ return format;
+ }
+
+
+ /************************************
+ Parsing
+ ************************************/
+
+
+ // get the regex to find the next token
+ function getParseRegexForToken(token, config) {
+ var a, strict = config._strict;
+ switch (token) {
+ case 'Q':
+ return parseTokenOneDigit;
+ case 'DDDD':
+ return parseTokenThreeDigits;
+ case 'YYYY':
+ case 'GGGG':
+ case 'gggg':
+ return strict ? parseTokenFourDigits : parseTokenOneToFourDigits;
+ case 'Y':
+ case 'G':
+ case 'g':
+ return parseTokenSignedNumber;
+ case 'YYYYYY':
+ case 'YYYYY':
+ case 'GGGGG':
+ case 'ggggg':
+ return strict ? parseTokenSixDigits : parseTokenOneToSixDigits;
+ case 'S':
+ if (strict) {
+ return parseTokenOneDigit;
+ }
+ /* falls through */
+ case 'SS':
+ if (strict) {
+ return parseTokenTwoDigits;
+ }
+ /* falls through */
+ case 'SSS':
+ if (strict) {
+ return parseTokenThreeDigits;
+ }
+ /* falls through */
+ case 'DDD':
+ return parseTokenOneToThreeDigits;
+ case 'MMM':
+ case 'MMMM':
+ case 'dd':
+ case 'ddd':
+ case 'dddd':
+ return parseTokenWord;
+ case 'a':
+ case 'A':
+ return config._locale._meridiemParse;
+ case 'X':
+ return parseTokenTimestampMs;
+ case 'Z':
+ case 'ZZ':
+ return parseTokenTimezone;
+ case 'T':
+ return parseTokenT;
+ case 'SSSS':
+ return parseTokenDigits;
+ case 'MM':
+ case 'DD':
+ case 'YY':
+ case 'GG':
+ case 'gg':
+ case 'HH':
+ case 'hh':
+ case 'mm':
+ case 'ss':
+ case 'ww':
+ case 'WW':
+ return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits;
+ case 'M':
+ case 'D':
+ case 'd':
+ case 'H':
+ case 'h':
+ case 'm':
+ case 's':
+ case 'w':
+ case 'W':
+ case 'e':
+ case 'E':
+ return parseTokenOneOrTwoDigits;
+ case 'Do':
+ return parseTokenOrdinal;
+ default :
+ a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i'));
+ return a;
+ }
+ }
+
+ function timezoneMinutesFromString(string) {
+ string = string || '';
+ var possibleTzMatches = (string.match(parseTokenTimezone) || []),
+ tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [],
+ parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0],
+ minutes = +(parts[1] * 60) + toInt(parts[2]);
+
+ return parts[0] === '+' ? -minutes : minutes;
+ }
+
+ // function to convert string input to date
+ function addTimeToArrayFromToken(token, input, config) {
+ var a, datePartArray = config._a;
+
+ switch (token) {
+ // QUARTER
+ case 'Q':
+ if (input != null) {
+ datePartArray[MONTH] = (toInt(input) - 1) * 3;
+ }
+ break;
+ // MONTH
+ case 'M' : // fall through to MM
+ case 'MM' :
+ if (input != null) {
+ datePartArray[MONTH] = toInt(input) - 1;
+ }
+ break;
+ case 'MMM' : // fall through to MMMM
+ case 'MMMM' :
+ a = config._locale.monthsParse(input);
+ // if we didn't find a month name, mark the date as invalid.
+ if (a != null) {
+ datePartArray[MONTH] = a;
+ } else {
+ config._pf.invalidMonth = input;
+ }
+ break;
+ // DAY OF MONTH
+ case 'D' : // fall through to DD
+ case 'DD' :
+ if (input != null) {
+ datePartArray[DATE] = toInt(input);
+ }
+ break;
+ case 'Do' :
+ if (input != null) {
+ datePartArray[DATE] = toInt(parseInt(input, 10));
+ }
+ break;
+ // DAY OF YEAR
+ case 'DDD' : // fall through to DDDD
+ case 'DDDD' :
+ if (input != null) {
+ config._dayOfYear = toInt(input);
+ }
+
+ break;
+ // YEAR
+ case 'YY' :
+ datePartArray[YEAR] = moment.parseTwoDigitYear(input);
+ break;
+ case 'YYYY' :
+ case 'YYYYY' :
+ case 'YYYYYY' :
+ datePartArray[YEAR] = toInt(input);
+ break;
+ // AM / PM
+ case 'a' : // fall through to A
+ case 'A' :
+ config._isPm = config._locale.isPM(input);
+ break;
+ // 24 HOUR
+ case 'H' : // fall through to hh
+ case 'HH' : // fall through to hh
+ case 'h' : // fall through to hh
+ case 'hh' :
+ datePartArray[HOUR] = toInt(input);
+ break;
+ // MINUTE
+ case 'm' : // fall through to mm
+ case 'mm' :
+ datePartArray[MINUTE] = toInt(input);
+ break;
+ // SECOND
+ case 's' : // fall through to ss
+ case 'ss' :
+ datePartArray[SECOND] = toInt(input);
+ break;
+ // MILLISECOND
+ case 'S' :
+ case 'SS' :
+ case 'SSS' :
+ case 'SSSS' :
+ datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000);
+ break;
+ // UNIX TIMESTAMP WITH MS
+ case 'X':
+ config._d = new Date(parseFloat(input) * 1000);
+ break;
+ // TIMEZONE
+ case 'Z' : // fall through to ZZ
+ case 'ZZ' :
+ config._useUTC = true;
+ config._tzm = timezoneMinutesFromString(input);
+ break;
+ // WEEKDAY - human
+ case 'dd':
+ case 'ddd':
+ case 'dddd':
+ a = config._locale.weekdaysParse(input);
+ // if we didn't get a weekday name, mark the date as invalid
+ if (a != null) {
+ config._w = config._w || {};
+ config._w['d'] = a;
+ } else {
+ config._pf.invalidWeekday = input;
+ }
+ break;
+ // WEEK, WEEK DAY - numeric
+ case 'w':
+ case 'ww':
+ case 'W':
+ case 'WW':
+ case 'd':
+ case 'e':
+ case 'E':
+ token = token.substr(0, 1);
+ /* falls through */
+ case 'gggg':
+ case 'GGGG':
+ case 'GGGGG':
+ token = token.substr(0, 2);
+ if (input) {
+ config._w = config._w || {};
+ config._w[token] = toInt(input);
+ }
+ break;
+ case 'gg':
+ case 'GG':
+ config._w = config._w || {};
+ config._w[token] = moment.parseTwoDigitYear(input);
+ }
+ }
+
+ function dayOfYearFromWeekInfo(config) {
+ var w, weekYear, week, weekday, dow, doy, temp;
+
+ w = config._w;
+ if (w.GG != null || w.W != null || w.E != null) {
+ dow = 1;
+ doy = 4;
+
+ // TODO: We need to take the current isoWeekYear, but that depends on
+ // how we interpret now (local, utc, fixed offset). So create
+ // a now version of current config (take local/utc/offset flags, and
+ // create now).
+ weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year);
+ week = dfl(w.W, 1);
+ weekday = dfl(w.E, 1);
+ } else {
+ dow = config._locale._week.dow;
+ doy = config._locale._week.doy;
+
+ weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year);
+ week = dfl(w.w, 1);
+
+ if (w.d != null) {
+ // weekday -- low day numbers are considered next week
+ weekday = w.d;
+ if (weekday < dow) {
+ ++week;
+ }
+ } else if (w.e != null) {
+ // local weekday -- counting starts from begining of week
+ weekday = w.e + dow;
+ } else {
+ // default to begining of week
+ weekday = dow;
+ }
+ }
+ temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);
+
+ config._a[YEAR] = temp.year;
+ config._dayOfYear = temp.dayOfYear;
+ }
+
+ // convert an array to a date.
+ // the array should mirror the parameters below
+ // note: all values past the year are optional and will default to the lowest possible value.
+ // [year, month, day , hour, minute, second, millisecond]
+ function dateFromConfig(config) {
+ var i, date, input = [], currentDate, yearToUse;
+
+ if (config._d) {
+ return;
+ }
+
+ currentDate = currentDateArray(config);
+
+ //compute day of the year from weeks and weekdays
+ if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
+ dayOfYearFromWeekInfo(config);
+ }
+
+ //if the day of the year is set, figure out what it is
+ if (config._dayOfYear) {
+ yearToUse = dfl(config._a[YEAR], currentDate[YEAR]);
+
+ if (config._dayOfYear > daysInYear(yearToUse)) {
+ config._pf._overflowDayOfYear = true;
+ }
+
+ date = makeUTCDate(yearToUse, 0, config._dayOfYear);
+ config._a[MONTH] = date.getUTCMonth();
+ config._a[DATE] = date.getUTCDate();
+ }
+
+ // Default to current date.
+ // * if no year, month, day of month are given, default to today
+ // * if day of month is given, default month and year
+ // * if month is given, default only year
+ // * if year is given, don't default anything
+ for (i = 0; i < 3 && config._a[i] == null; ++i) {
+ config._a[i] = input[i] = currentDate[i];
+ }
+
+ // Zero out whatever was not defaulted, including time
+ for (; i < 7; i++) {
+ config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
+ }
+
+ config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input);
+ // Apply timezone offset from input. The actual zone can be changed
+ // with parseZone.
+ if (config._tzm != null) {
+ config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm);
+ }
+ }
+
+ function dateFromObject(config) {
+ var normalizedInput;
+
+ if (config._d) {
+ return;
+ }
+
+ normalizedInput = normalizeObjectUnits(config._i);
+ config._a = [
+ normalizedInput.year,
+ normalizedInput.month,
+ normalizedInput.day,
+ normalizedInput.hour,
+ normalizedInput.minute,
+ normalizedInput.second,
+ normalizedInput.millisecond
+ ];
+
+ dateFromConfig(config);
+ }
+
+ function currentDateArray(config) {
+ var now = new Date();
+ if (config._useUTC) {
+ return [
+ now.getUTCFullYear(),
+ now.getUTCMonth(),
+ now.getUTCDate()
+ ];
+ } else {
+ return [now.getFullYear(), now.getMonth(), now.getDate()];
+ }
+ }
+
+ // date from string and format string
+ function makeDateFromStringAndFormat(config) {
+ if (config._f === moment.ISO_8601) {
+ parseISO(config);
+ return;
+ }
+
+ config._a = [];
+ config._pf.empty = true;
+
+ // This array is used to make a Date, either with `new Date` or `Date.UTC`
+ var string = '' + config._i,
+ i, parsedInput, tokens, token, skipped,
+ stringLength = string.length,
+ totalParsedInputLength = 0;
+
+ tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
+
+ for (i = 0; i < tokens.length; i++) {
+ token = tokens[i];
+ parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
+ if (parsedInput) {
+ skipped = string.substr(0, string.indexOf(parsedInput));
+ if (skipped.length > 0) {
+ config._pf.unusedInput.push(skipped);
+ }
+ string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
+ totalParsedInputLength += parsedInput.length;
+ }
+ // don't parse if it's not a known token
+ if (formatTokenFunctions[token]) {
+ if (parsedInput) {
+ config._pf.empty = false;
+ }
+ else {
+ config._pf.unusedTokens.push(token);
+ }
+ addTimeToArrayFromToken(token, parsedInput, config);
+ }
+ else if (config._strict && !parsedInput) {
+ config._pf.unusedTokens.push(token);
+ }
+ }
+
+ // add remaining unparsed input length to the string
+ config._pf.charsLeftOver = stringLength - totalParsedInputLength;
+ if (string.length > 0) {
+ config._pf.unusedInput.push(string);
+ }
+
+ // handle am pm
+ if (config._isPm && config._a[HOUR] < 12) {
+ config._a[HOUR] += 12;
+ }
+ // if is 12 am, change hours to 0
+ if (config._isPm === false && config._a[HOUR] === 12) {
+ config._a[HOUR] = 0;
+ }
+
+ dateFromConfig(config);
+ checkOverflow(config);
+ }
+
+ function unescapeFormat(s) {
+ return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
+ return p1 || p2 || p3 || p4;
+ });
+ }
+
+ // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
+ function regexpEscape(s) {
+ return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+ }
+
+ // date from string and array of format strings
+ function makeDateFromStringAndArray(config) {
+ var tempConfig,
+ bestMoment,
+
+ scoreToBeat,
+ i,
+ currentScore;
+
+ if (config._f.length === 0) {
+ config._pf.invalidFormat = true;
+ config._d = new Date(NaN);
+ return;
+ }
+
+ for (i = 0; i < config._f.length; i++) {
+ currentScore = 0;
+ tempConfig = copyConfig({}, config);
+ tempConfig._pf = defaultParsingFlags();
+ tempConfig._f = config._f[i];
+ makeDateFromStringAndFormat(tempConfig);
+
+ if (!isValid(tempConfig)) {
+ continue;
+ }
+
+ // if there is any input that was not parsed add a penalty for that format
+ currentScore += tempConfig._pf.charsLeftOver;
+
+ //or tokens
+ currentScore += tempConfig._pf.unusedTokens.length * 10;
+
+ tempConfig._pf.score = currentScore;
+
+ if (scoreToBeat == null || currentScore < scoreToBeat) {
+ scoreToBeat = currentScore;
+ bestMoment = tempConfig;
+ }
+ }
+
+ extend(config, bestMoment || tempConfig);
+ }
+
+ // date from iso format
+ function parseISO(config) {
+ var i, l,
+ string = config._i,
+ match = isoRegex.exec(string);
+
+ if (match) {
+ config._pf.iso = true;
+ for (i = 0, l = isoDates.length; i < l; i++) {
+ if (isoDates[i][1].exec(string)) {
+ // match[5] should be "T" or undefined
+ config._f = isoDates[i][0] + (match[6] || ' ');
+ break;
+ }
+ }
+ for (i = 0, l = isoTimes.length; i < l; i++) {
+ if (isoTimes[i][1].exec(string)) {
+ config._f += isoTimes[i][0];
+ break;
+ }
+ }
+ if (string.match(parseTokenTimezone)) {
+ config._f += 'Z';
+ }
+ makeDateFromStringAndFormat(config);
+ } else {
+ config._isValid = false;
+ }
+ }
+
+ // date from iso format or fallback
+ function makeDateFromString(config) {
+ parseISO(config);
+ if (config._isValid === false) {
+ delete config._isValid;
+ moment.createFromInputFallback(config);
+ }
+ }
+
+ function makeDateFromInput(config) {
+ var input = config._i, matched;
+ if (input === undefined) {
+ config._d = new Date();
+ } else if (isDate(input)) {
+ config._d = new Date(+input);
+ } else if ((matched = aspNetJsonRegex.exec(input)) !== null) {
+ config._d = new Date(+matched[1]);
+ } else if (typeof input === 'string') {
+ makeDateFromString(config);
+ } else if (isArray(input)) {
+ config._a = input.slice(0);
+ dateFromConfig(config);
+ } else if (typeof(input) === 'object') {
+ dateFromObject(config);
+ } else if (typeof(input) === 'number') {
+ // from milliseconds
+ config._d = new Date(input);
+ } else {
+ moment.createFromInputFallback(config);
+ }
+ }
+
+ function makeDate(y, m, d, h, M, s, ms) {
+ //can't just apply() to create a date:
+ //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
+ var date = new Date(y, m, d, h, M, s, ms);
+
+ //the date constructor doesn't accept years < 1970
+ if (y < 1970) {
+ date.setFullYear(y);
+ }
+ return date;
+ }
+
+ function makeUTCDate(y) {
+ var date = new Date(Date.UTC.apply(null, arguments));
+ if (y < 1970) {
+ date.setUTCFullYear(y);
+ }
+ return date;
+ }
+
+ function parseWeekday(input, locale) {
+ if (typeof input === 'string') {
+ if (!isNaN(input)) {
+ input = parseInt(input, 10);
+ }
+ else {
+ input = locale.weekdaysParse(input);
+ if (typeof input !== 'number') {
+ return null;
+ }
+ }
+ }
+ return input;
+ }
+
+ /************************************
+ Relative Time
+ ************************************/
+
+
+ // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
+ function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
+ return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
+ }
+
+ function relativeTime(posNegDuration, withoutSuffix, locale) {
+ var duration = moment.duration(posNegDuration).abs(),
+ seconds = round(duration.as('s')),
+ minutes = round(duration.as('m')),
+ hours = round(duration.as('h')),
+ days = round(duration.as('d')),
+ months = round(duration.as('M')),
+ years = round(duration.as('y')),
+
+ args = seconds < relativeTimeThresholds.s && ['s', seconds] ||
+ minutes === 1 && ['m'] ||
+ minutes < relativeTimeThresholds.m && ['mm', minutes] ||
+ hours === 1 && ['h'] ||
+ hours < relativeTimeThresholds.h && ['hh', hours] ||
+ days === 1 && ['d'] ||
+ days < relativeTimeThresholds.d && ['dd', days] ||
+ months === 1 && ['M'] ||
+ months < relativeTimeThresholds.M && ['MM', months] ||
+ years === 1 && ['y'] || ['yy', years];
+
+ args[2] = withoutSuffix;
+ args[3] = +posNegDuration > 0;
+ args[4] = locale;
+ return substituteTimeAgo.apply({}, args);
+ }
+
+
+ /************************************
+ Week of Year
+ ************************************/
+
+
+ // firstDayOfWeek 0 = sun, 6 = sat
+ // the day of the week that starts the week
+ // (usually sunday or monday)
+ // firstDayOfWeekOfYear 0 = sun, 6 = sat
+ // the first week is the week that contains the first
+ // of this day of the week
+ // (eg. ISO weeks use thursday (4))
+ function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
+ var end = firstDayOfWeekOfYear - firstDayOfWeek,
+ daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),
+ adjustedMoment;
+
+
+ if (daysToDayOfWeek > end) {
+ daysToDayOfWeek -= 7;
+ }
+
+ if (daysToDayOfWeek < end - 7) {
+ daysToDayOfWeek += 7;
+ }
+
+ adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd');
+ return {
+ week: Math.ceil(adjustedMoment.dayOfYear() / 7),
+ year: adjustedMoment.year()
+ };
+ }
+
+ //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
+ function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
+ var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear;
+
+ d = d === 0 ? 7 : d;
+ weekday = weekday != null ? weekday : firstDayOfWeek;
+ daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0);
+ dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1;
+
+ return {
+ year: dayOfYear > 0 ? year : year - 1,
+ dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear
+ };
+ }
+
+ /************************************
+ Top Level Functions
+ ************************************/
+
+ function makeMoment(config) {
+ var input = config._i,
+ format = config._f;
+
+ config._locale = config._locale || moment.localeData(config._l);
+
+ if (input === null || (format === undefined && input === '')) {
+ return moment.invalid({nullInput: true});
+ }
+
+ if (typeof input === 'string') {
+ config._i = input = config._locale.preparse(input);
+ }
+
+ if (moment.isMoment(input)) {
+ return new Moment(input, true);
+ } else if (format) {
+ if (isArray(format)) {
+ makeDateFromStringAndArray(config);
+ } else {
+ makeDateFromStringAndFormat(config);
+ }
+ } else {
+ makeDateFromInput(config);
+ }
+
+ return new Moment(config);
+ }
+
+ moment = function (input, format, locale, strict) {
+ var c;
+
+ if (typeof(locale) === "boolean") {
+ strict = locale;
+ locale = undefined;
+ }
+ // object construction must be done this way.
+ // https://github.com/moment/moment/issues/1423
+ c = {};
+ c._isAMomentObject = true;
+ c._i = input;
+ c._f = format;
+ c._l = locale;
+ c._strict = strict;
+ c._isUTC = false;
+ c._pf = defaultParsingFlags();
+
+ return makeMoment(c);
+ };
+
+ moment.suppressDeprecationWarnings = false;
+
+ moment.createFromInputFallback = deprecate(
+ 'moment construction falls back to js Date. This is ' +
+ 'discouraged and will be removed in upcoming major ' +
+ 'release. Please refer to ' +
+ 'https://github.com/moment/moment/issues/1407 for more info.',
+ function (config) {
+ config._d = new Date(config._i);
+ }
+ );
+
+ // Pick a moment m from moments so that m[fn](other) is true for all
+ // other. This relies on the function fn to be transitive.
+ //
+ // moments should either be an array of moment objects or an array, whose
+ // first element is an array of moment objects.
+ function pickBy(fn, moments) {
+ var res, i;
+ if (moments.length === 1 && isArray(moments[0])) {
+ moments = moments[0];
+ }
+ if (!moments.length) {
+ return moment();
+ }
+ res = moments[0];
+ for (i = 1; i < moments.length; ++i) {
+ if (moments[i][fn](res)) {
+ res = moments[i];
+ }
+ }
+ return res;
+ }
+
+ moment.min = function () {
+ var args = [].slice.call(arguments, 0);
+
+ return pickBy('isBefore', args);
+ };
+
+ moment.max = function () {
+ var args = [].slice.call(arguments, 0);
+
+ return pickBy('isAfter', args);
+ };
+
+ // creating with utc
+ moment.utc = function (input, format, locale, strict) {
+ var c;
+
+ if (typeof(locale) === "boolean") {
+ strict = locale;
+ locale = undefined;
+ }
+ // object construction must be done this way.
+ // https://github.com/moment/moment/issues/1423
+ c = {};
+ c._isAMomentObject = true;
+ c._useUTC = true;
+ c._isUTC = true;
+ c._l = locale;
+ c._i = input;
+ c._f = format;
+ c._strict = strict;
+ c._pf = defaultParsingFlags();
+
+ return makeMoment(c).utc();
+ };
+
+ // creating with unix timestamp (in seconds)
+ moment.unix = function (input) {
+ return moment(input * 1000);
+ };
+
+ // duration
+ moment.duration = function (input, key) {
+ var duration = input,
+ // matching against regexp is expensive, do it on demand
+ match = null,
+ sign,
+ ret,
+ parseIso,
+ diffRes;
+
+ if (moment.isDuration(input)) {
+ duration = {
+ ms: input._milliseconds,
+ d: input._days,
+ M: input._months
+ };
+ } else if (typeof input === 'number') {
+ duration = {};
+ if (key) {
+ duration[key] = input;
+ } else {
+ duration.milliseconds = input;
+ }
+ } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) {
+ sign = (match[1] === '-') ? -1 : 1;
+ duration = {
+ y: 0,
+ d: toInt(match[DATE]) * sign,
+ h: toInt(match[HOUR]) * sign,
+ m: toInt(match[MINUTE]) * sign,
+ s: toInt(match[SECOND]) * sign,
+ ms: toInt(match[MILLISECOND]) * sign
+ };
+ } else if (!!(match = isoDurationRegex.exec(input))) {
+ sign = (match[1] === '-') ? -1 : 1;
+ parseIso = function (inp) {
+ // We'd normally use ~~inp for this, but unfortunately it also
+ // converts floats to ints.
+ // inp may be undefined, so careful calling replace on it.
+ var res = inp && parseFloat(inp.replace(',', '.'));
+ // apply sign while we're at it
+ return (isNaN(res) ? 0 : res) * sign;
+ };
+ duration = {
+ y: parseIso(match[2]),
+ M: parseIso(match[3]),
+ d: parseIso(match[4]),
+ h: parseIso(match[5]),
+ m: parseIso(match[6]),
+ s: parseIso(match[7]),
+ w: parseIso(match[8])
+ };
+ } else if (typeof duration === 'object' &&
+ ('from' in duration || 'to' in duration)) {
+ diffRes = momentsDifference(moment(duration.from), moment(duration.to));
+
+ duration = {};
+ duration.ms = diffRes.milliseconds;
+ duration.M = diffRes.months;
+ }
+
+ ret = new Duration(duration);
+
+ if (moment.isDuration(input) && input.hasOwnProperty('_locale')) {
+ ret._locale = input._locale;
+ }
+
+ return ret;
+ };
+
+ // version number
+ moment.version = VERSION;
+
+ // default format
+ moment.defaultFormat = isoFormat;
+
+ // constant that refers to the ISO standard
+ moment.ISO_8601 = function () {};
+
+ // Plugins that add properties should also add the key here (null value),
+ // so we can properly clone ourselves.
+ moment.momentProperties = momentProperties;
+
+ // This function will be called whenever a moment is mutated.
+ // It is intended to keep the offset in sync with the timezone.
+ moment.updateOffset = function () {};
+
+ // This function allows you to set a threshold for relative time strings
+ moment.relativeTimeThreshold = function (threshold, limit) {
+ if (relativeTimeThresholds[threshold] === undefined) {
+ return false;
+ }
+ if (limit === undefined) {
+ return relativeTimeThresholds[threshold];
+ }
+ relativeTimeThresholds[threshold] = limit;
+ return true;
+ };
+
+ moment.lang = deprecate(
+ "moment.lang is deprecated. Use moment.locale instead.",
+ function (key, value) {
+ return moment.locale(key, value);
+ }
+ );
+
+ // This function will load locale and then set the global locale. If
+ // no arguments are passed in, it will simply return the current global
+ // locale key.
+ moment.locale = function (key, values) {
+ var data;
+ if (key) {
+ if (typeof(values) !== "undefined") {
+ data = moment.defineLocale(key, values);
+ }
+ else {
+ data = moment.localeData(key);
+ }
+
+ if (data) {
+ moment.duration._locale = moment._locale = data;
+ }
+ }
+
+ return moment._locale._abbr;
+ };
+
+ moment.defineLocale = function (name, values) {
+ if (values !== null) {
+ values.abbr = name;
+ if (!locales[name]) {
+ locales[name] = new Locale();
+ }
+ locales[name].set(values);
+
+ // backwards compat for now: also set the locale
+ moment.locale(name);
+
+ return locales[name];
+ } else {
+ // useful for testing
+ delete locales[name];
+ return null;
+ }
+ };
+
+ moment.langData = deprecate(
+ "moment.langData is deprecated. Use moment.localeData instead.",
+ function (key) {
+ return moment.localeData(key);
+ }
+ );
+
+ // returns locale data
+ moment.localeData = function (key) {
+ var locale;
+
+ if (key && key._locale && key._locale._abbr) {
+ key = key._locale._abbr;
+ }
+
+ if (!key) {
+ return moment._locale;
+ }
+
+ if (!isArray(key)) {
+ //short-circuit everything else
+ locale = loadLocale(key);
+ if (locale) {
+ return locale;
+ }
+ key = [key];
+ }
+
+ return chooseLocale(key);
+ };
+
+ // compare moment object
+ moment.isMoment = function (obj) {
+ return obj instanceof Moment ||
+ (obj != null && obj.hasOwnProperty('_isAMomentObject'));
+ };
+
+ // for typechecking Duration objects
+ moment.isDuration = function (obj) {
+ return obj instanceof Duration;
+ };
+
+ for (i = lists.length - 1; i >= 0; --i) {
+ makeList(lists[i]);
+ }
+
+ moment.normalizeUnits = function (units) {
+ return normalizeUnits(units);
+ };
+
+ moment.invalid = function (flags) {
+ var m = moment.utc(NaN);
+ if (flags != null) {
+ extend(m._pf, flags);
+ }
+ else {
+ m._pf.userInvalidated = true;
+ }
+
+ return m;
+ };
+
+ moment.parseZone = function () {
+ return moment.apply(null, arguments).parseZone();
+ };
+
+ moment.parseTwoDigitYear = function (input) {
+ return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
+ };
+
+ /************************************
+ Moment Prototype
+ ************************************/
+
+
+ extend(moment.fn = Moment.prototype, {
+
+ clone : function () {
+ return moment(this);
+ },
+
+ valueOf : function () {
+ return +this._d + ((this._offset || 0) * 60000);
+ },
+
+ unix : function () {
+ return Math.floor(+this / 1000);
+ },
+
+ toString : function () {
+ return this.clone().locale('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ");
+ },
+
+ toDate : function () {
+ return this._offset ? new Date(+this) : this._d;
+ },
+
+ toISOString : function () {
+ var m = moment(this).utc();
+ if (0 < m.year() && m.year() <= 9999) {
+ return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
+ } else {
+ return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
+ }
+ },
+
+ toArray : function () {
+ var m = this;
+ return [
+ m.year(),
+ m.month(),
+ m.date(),
+ m.hours(),
+ m.minutes(),
+ m.seconds(),
+ m.milliseconds()
+ ];
+ },
+
+ isValid : function () {
+ return isValid(this);
+ },
+
+ isDSTShifted : function () {
+ if (this._a) {
+ return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0;
+ }
+
+ return false;
+ },
+
+ parsingFlags : function () {
+ return extend({}, this._pf);
+ },
+
+ invalidAt: function () {
+ return this._pf.overflow;
+ },
+
+ utc : function (keepLocalTime) {
+ return this.zone(0, keepLocalTime);
+ },
+
+ local : function (keepLocalTime) {
+ if (this._isUTC) {
+ this.zone(0, keepLocalTime);
+ this._isUTC = false;
+
+ if (keepLocalTime) {
+ this.add(this._d.getTimezoneOffset(), 'm');
+ }
+ }
+ return this;
+ },
+
+ format : function (inputString) {
+ var output = formatMoment(this, inputString || moment.defaultFormat);
+ return this.localeData().postformat(output);
+ },
+
+ add : createAdder(1, 'add'),
+
+ subtract : createAdder(-1, 'subtract'),
+
+ diff : function (input, units, asFloat) {
+ var that = makeAs(input, this),
+ zoneDiff = (this.zone() - that.zone()) * 6e4,
+ diff, output;
+
+ units = normalizeUnits(units);
+
+ if (units === 'year' || units === 'month') {
+ // average number of days in the months in the given dates
+ diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2
+ // difference in months
+ output = ((this.year() - that.year()) * 12) + (this.month() - that.month());
+ // adjust by taking difference in days, average number of days
+ // and dst in the given months.
+ output += ((this - moment(this).startOf('month')) -
+ (that - moment(that).startOf('month'))) / diff;
+ // same as above but with zones, to negate all dst
+ output -= ((this.zone() - moment(this).startOf('month').zone()) -
+ (that.zone() - moment(that).startOf('month').zone())) * 6e4 / diff;
+ if (units === 'year') {
+ output = output / 12;
+ }
+ } else {
+ diff = (this - that);
+ output = units === 'second' ? diff / 1e3 : // 1000
+ units === 'minute' ? diff / 6e4 : // 1000 * 60
+ units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60
+ units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
+ units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
+ diff;
+ }
+ return asFloat ? output : absRound(output);
+ },
+
+ from : function (time, withoutSuffix) {
+ return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
+ },
+
+ fromNow : function (withoutSuffix) {
+ return this.from(moment(), withoutSuffix);
+ },
+
+ calendar : function (time) {
+ // We want to compare the start of today, vs this.
+ // Getting start-of-today depends on whether we're zone'd or not.
+ var now = time || moment(),
+ sod = makeAs(now, this).startOf('day'),
+ diff = this.diff(sod, 'days', true),
+ format = diff < -6 ? 'sameElse' :
+ diff < -1 ? 'lastWeek' :
+ diff < 0 ? 'lastDay' :
+ diff < 1 ? 'sameDay' :
+ diff < 2 ? 'nextDay' :
+ diff < 7 ? 'nextWeek' : 'sameElse';
+ return this.format(this.localeData().calendar(format, this));
+ },
+
+ isLeapYear : function () {
+ return isLeapYear(this.year());
+ },
+
+ isDST : function () {
+ return (this.zone() < this.clone().month(0).zone() ||
+ this.zone() < this.clone().month(5).zone());
+ },
+
+ day : function (input) {
+ var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
+ if (input != null) {
+ input = parseWeekday(input, this.localeData());
+ return this.add(input - day, 'd');
+ } else {
+ return day;
+ }
+ },
+
+ month : makeAccessor('Month', true),
+
+ startOf : function (units) {
+ units = normalizeUnits(units);
+ // the following switch intentionally omits break keywords
+ // to utilize falling through the cases.
+ switch (units) {
+ case 'year':
+ this.month(0);
+ /* falls through */
+ case 'quarter':
+ case 'month':
+ this.date(1);
+ /* falls through */
+ case 'week':
+ case 'isoWeek':
+ case 'day':
+ this.hours(0);
+ /* falls through */
+ case 'hour':
+ this.minutes(0);
+ /* falls through */
+ case 'minute':
+ this.seconds(0);
+ /* falls through */
+ case 'second':
+ this.milliseconds(0);
+ /* falls through */
+ }
+
+ // weeks are a special case
+ if (units === 'week') {
+ this.weekday(0);
+ } else if (units === 'isoWeek') {
+ this.isoWeekday(1);
+ }
+
+ // quarters are also special
+ if (units === 'quarter') {
+ this.month(Math.floor(this.month() / 3) * 3);
+ }
+
+ return this;
+ },
+
+ endOf: function (units) {
+ units = normalizeUnits(units);
+ return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
+ },
+
+ isAfter: function (input, units) {
+ units = typeof units !== 'undefined' ? units : 'millisecond';
+ return +this.clone().startOf(units) > +moment(input).startOf(units);
+ },
+
+ isBefore: function (input, units) {
+ units = typeof units !== 'undefined' ? units : 'millisecond';
+ return +this.clone().startOf(units) < +moment(input).startOf(units);
+ },
+
+ isSame: function (input, units) {
+ units = units || 'ms';
+ return +this.clone().startOf(units) === +makeAs(input, this).startOf(units);
+ },
+
+ min: deprecate(
+ 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',
+ function (other) {
+ other = moment.apply(null, arguments);
+ return other < this ? this : other;
+ }
+ ),
+
+ max: deprecate(
+ 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',
+ function (other) {
+ other = moment.apply(null, arguments);
+ return other > this ? this : other;
+ }
+ ),
+
+ // keepLocalTime = true means only change the timezone, without
+ // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]-->
+ // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone
+ // +0200, so we adjust the time as needed, to be valid.
+ //
+ // Keeping the time actually adds/subtracts (one hour)
+ // from the actual represented time. That is why we call updateOffset
+ // a second time. In case it wants us to change the offset again
+ // _changeInProgress == true case, then we have to adjust, because
+ // there is no such time in the given timezone.
+ zone : function (input, keepLocalTime) {
+ var offset = this._offset || 0,
+ localAdjust;
+ if (input != null) {
+ if (typeof input === 'string') {
+ input = timezoneMinutesFromString(input);
+ }
+ if (Math.abs(input) < 16) {
+ input = input * 60;
+ }
+ if (!this._isUTC && keepLocalTime) {
+ localAdjust = this._d.getTimezoneOffset();
+ }
+ this._offset = input;
+ this._isUTC = true;
+ if (localAdjust != null) {
+ this.subtract(localAdjust, 'm');
+ }
+ if (offset !== input) {
+ if (!keepLocalTime || this._changeInProgress) {
+ addOrSubtractDurationFromMoment(this,
+ moment.duration(offset - input, 'm'), 1, false);
+ } else if (!this._changeInProgress) {
+ this._changeInProgress = true;
+ moment.updateOffset(this, true);
+ this._changeInProgress = null;
+ }
+ }
+ } else {
+ return this._isUTC ? offset : this._d.getTimezoneOffset();
+ }
+ return this;
+ },
+
+ zoneAbbr : function () {
+ return this._isUTC ? 'UTC' : '';
+ },
+
+ zoneName : function () {
+ return this._isUTC ? 'Coordinated Universal Time' : '';
+ },
+
+ parseZone : function () {
+ if (this._tzm) {
+ this.zone(this._tzm);
+ } else if (typeof this._i === 'string') {
+ this.zone(this._i);
+ }
+ return this;
+ },
+
+ hasAlignedHourOffset : function (input) {
+ if (!input) {
+ input = 0;
+ }
+ else {
+ input = moment(input).zone();
+ }
+
+ return (this.zone() - input) % 60 === 0;
+ },
+
+ daysInMonth : function () {
+ return daysInMonth(this.year(), this.month());
+ },
+
+ dayOfYear : function (input) {
+ var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1;
+ return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
+ },
+
+ quarter : function (input) {
+ return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
+ },
+
+ weekYear : function (input) {
+ var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;
+ return input == null ? year : this.add((input - year), 'y');
+ },
+
+ isoWeekYear : function (input) {
+ var year = weekOfYear(this, 1, 4).year;
+ return input == null ? year : this.add((input - year), 'y');
+ },
+
+ week : function (input) {
+ var week = this.localeData().week(this);
+ return input == null ? week : this.add((input - week) * 7, 'd');
+ },
+
+ isoWeek : function (input) {
+ var week = weekOfYear(this, 1, 4).week;
+ return input == null ? week : this.add((input - week) * 7, 'd');
+ },
+
+ weekday : function (input) {
+ var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
+ return input == null ? weekday : this.add(input - weekday, 'd');
+ },
+
+ isoWeekday : function (input) {
+ // behaves the same as moment#day except
+ // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
+ // as a setter, sunday should belong to the previous week.
+ return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
+ },
+
+ isoWeeksInYear : function () {
+ return weeksInYear(this.year(), 1, 4);
+ },
+
+ weeksInYear : function () {
+ var weekInfo = this.localeData()._week;
+ return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
+ },
+
+ get : function (units) {
+ units = normalizeUnits(units);
+ return this[units]();
+ },
+
+ set : function (units, value) {
+ units = normalizeUnits(units);
+ if (typeof this[units] === 'function') {
+ this[units](value);
+ }
+ return this;
+ },
+
+ // If passed a locale key, it will set the locale for this
+ // instance. Otherwise, it will return the locale configuration
+ // variables for this instance.
+ locale : function (key) {
+ if (key === undefined) {
+ return this._locale._abbr;
+ } else {
+ this._locale = moment.localeData(key);
+ return this;
+ }
+ },
+
+ lang : deprecate(
+ "moment().lang() is deprecated. Use moment().localeData() instead.",
+ function (key) {
+ if (key === undefined) {
+ return this.localeData();
+ } else {
+ this._locale = moment.localeData(key);
+ return this;
+ }
+ }
+ ),
+
+ localeData : function () {
+ return this._locale;
+ }
+ });
+
+ function rawMonthSetter(mom, value) {
+ var dayOfMonth;
+
+ // TODO: Move this out of here!
+ if (typeof value === 'string') {
+ value = mom.localeData().monthsParse(value);
+ // TODO: Another silent failure?
+ if (typeof value !== 'number') {
+ return mom;
+ }
+ }
+
+ dayOfMonth = Math.min(mom.date(),
+ daysInMonth(mom.year(), value));
+ mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
+ return mom;
+ }
+
+ function rawGetter(mom, unit) {
+ return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]();
+ }
+
+ function rawSetter(mom, unit, value) {
+ if (unit === 'Month') {
+ return rawMonthSetter(mom, value);
+ } else {
+ return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
+ }
+ }
+
+ function makeAccessor(unit, keepTime) {
+ return function (value) {
+ if (value != null) {
+ rawSetter(this, unit, value);
+ moment.updateOffset(this, keepTime);
+ return this;
+ } else {
+ return rawGetter(this, unit);
+ }
+ };
+ }
+
+ moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false);
+ moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false);
+ moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false);
+ // Setting the hour should keep the time, because the user explicitly
+ // specified which hour he wants. So trying to maintain the same hour (in
+ // a new timezone) makes sense. Adding/subtracting hours does not follow
+ // this rule.
+ moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true);
+ // moment.fn.month is defined separately
+ moment.fn.date = makeAccessor('Date', true);
+ moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true));
+ moment.fn.year = makeAccessor('FullYear', true);
+ moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true));
+
+ // add plural methods
+ moment.fn.days = moment.fn.day;
+ moment.fn.months = moment.fn.month;
+ moment.fn.weeks = moment.fn.week;
+ moment.fn.isoWeeks = moment.fn.isoWeek;
+ moment.fn.quarters = moment.fn.quarter;
+
+ // add aliased format methods
+ moment.fn.toJSON = moment.fn.toISOString;
+
+ /************************************
+ Duration Prototype
+ ************************************/
+
+
+ function daysToYears (days) {
+ // 400 years have 146097 days (taking into account leap year rules)
+ return days * 400 / 146097;
+ }
+
+ function yearsToDays (years) {
+ // years * 365 + absRound(years / 4) -
+ // absRound(years / 100) + absRound(years / 400);
+ return years * 146097 / 400;
+ }
+
+ extend(moment.duration.fn = Duration.prototype, {
+
+ _bubble : function () {
+ var milliseconds = this._milliseconds,
+ days = this._days,
+ months = this._months,
+ data = this._data,
+ seconds, minutes, hours, years = 0;
+
+ // The following code bubbles up values, see the tests for
+ // examples of what that means.
+ data.milliseconds = milliseconds % 1000;
+
+ seconds = absRound(milliseconds / 1000);
+ data.seconds = seconds % 60;
+
+ minutes = absRound(seconds / 60);
+ data.minutes = minutes % 60;
+
+ hours = absRound(minutes / 60);
+ data.hours = hours % 24;
+
+ days += absRound(hours / 24);
+
+ // Accurately convert days to years, assume start from year 0.
+ years = absRound(daysToYears(days));
+ days -= absRound(yearsToDays(years));
+
+ // 30 days to a month
+ // TODO (iskren): Use anchor date (like 1st Jan) to compute this.
+ months += absRound(days / 30);
+ days %= 30;
+
+ // 12 months -> 1 year
+ years += absRound(months / 12);
+ months %= 12;
+
+ data.days = days;
+ data.months = months;
+ data.years = years;
+ },
+
+ abs : function () {
+ this._milliseconds = Math.abs(this._milliseconds);
+ this._days = Math.abs(this._days);
+ this._months = Math.abs(this._months);
+
+ this._data.milliseconds = Math.abs(this._data.milliseconds);
+ this._data.seconds = Math.abs(this._data.seconds);
+ this._data.minutes = Math.abs(this._data.minutes);
+ this._data.hours = Math.abs(this._data.hours);
+ this._data.months = Math.abs(this._data.months);
+ this._data.years = Math.abs(this._data.years);
+
+ return this;
+ },
+
+ weeks : function () {
+ return absRound(this.days() / 7);
+ },
+
+ valueOf : function () {
+ return this._milliseconds +
+ this._days * 864e5 +
+ (this._months % 12) * 2592e6 +
+ toInt(this._months / 12) * 31536e6;
+ },
+
+ humanize : function (withSuffix) {
+ var output = relativeTime(this, !withSuffix, this.localeData());
+
+ if (withSuffix) {
+ output = this.localeData().pastFuture(+this, output);
+ }
+
+ return this.localeData().postformat(output);
+ },
+
+ add : function (input, val) {
+ // supports only 2.0-style add(1, 's') or add(moment)
+ var dur = moment.duration(input, val);
+
+ this._milliseconds += dur._milliseconds;
+ this._days += dur._days;
+ this._months += dur._months;
+
+ this._bubble();
+
+ return this;
+ },
+
+ subtract : function (input, val) {
+ var dur = moment.duration(input, val);
+
+ this._milliseconds -= dur._milliseconds;
+ this._days -= dur._days;
+ this._months -= dur._months;
+
+ this._bubble();
+
+ return this;
+ },
+
+ get : function (units) {
+ units = normalizeUnits(units);
+ return this[units.toLowerCase() + 's']();
+ },
+
+ as : function (units) {
+ var days, months;
+ units = normalizeUnits(units);
+
+ days = this._days + this._milliseconds / 864e5;
+ if (units === 'month' || units === 'year') {
+ months = this._months + daysToYears(days) * 12;
+ return units === 'month' ? months : months / 12;
+ } else {
+ days += yearsToDays(this._months / 12);
+ switch (units) {
+ case 'week': return days / 7;
+ case 'day': return days;
+ case 'hour': return days * 24;
+ case 'minute': return days * 24 * 60;
+ case 'second': return days * 24 * 60 * 60;
+ case 'millisecond': return days * 24 * 60 * 60 * 1000;
+ default: throw new Error('Unknown unit ' + units);
+ }
+ }
+ },
+
+ lang : moment.fn.lang,
+ locale : moment.fn.locale,
+
+ toIsoString : deprecate(
+ "toIsoString() is deprecated. Please use toISOString() instead " +
+ "(notice the capitals)",
+ function () {
+ return this.toISOString();
+ }
+ ),
+
+ toISOString : function () {
+ // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
+ var years = Math.abs(this.years()),
+ months = Math.abs(this.months()),
+ days = Math.abs(this.days()),
+ hours = Math.abs(this.hours()),
+ minutes = Math.abs(this.minutes()),
+ seconds = Math.abs(this.seconds() + this.milliseconds() / 1000);
+
+ if (!this.asSeconds()) {
+ // this is the same as C#'s (Noda) and python (isodate)...
+ // but not other JS (goog.date)
+ return 'P0D';
+ }
+
+ return (this.asSeconds() < 0 ? '-' : '') +
+ 'P' +
+ (years ? years + 'Y' : '') +
+ (months ? months + 'M' : '') +
+ (days ? days + 'D' : '') +
+ ((hours || minutes || seconds) ? 'T' : '') +
+ (hours ? hours + 'H' : '') +
+ (minutes ? minutes + 'M' : '') +
+ (seconds ? seconds + 'S' : '');
+ },
+
+ localeData : function () {
+ return this._locale;
+ }
+ });
+
+ function makeDurationGetter(name) {
+ moment.duration.fn[name] = function () {
+ return this._data[name];
+ };
+ }
+
+ for (i in unitMillisecondFactors) {
+ if (unitMillisecondFactors.hasOwnProperty(i)) {
+ makeDurationGetter(i.toLowerCase());
+ }
+ }
+
+ moment.duration.fn.asMilliseconds = function () {
+ return this.as('ms');
+ };
+ moment.duration.fn.asSeconds = function () {
+ return this.as('s');
+ };
+ moment.duration.fn.asMinutes = function () {
+ return this.as('m');
+ };
+ moment.duration.fn.asHours = function () {
+ return this.as('h');
+ };
+ moment.duration.fn.asDays = function () {
+ return this.as('d');
+ };
+ moment.duration.fn.asWeeks = function () {
+ return this.as('weeks');
+ };
+ moment.duration.fn.asMonths = function () {
+ return this.as('M');
+ };
+ moment.duration.fn.asYears = function () {
+ return this.as('y');
+ };
+
+ /************************************
+ Default Locale
+ ************************************/
+
+
+ // Set default locale, other locale will inherit from English.
+ moment.locale('en', {
+ ordinal : function (number) {
+ var b = number % 10,
+ output = (toInt(number % 100 / 10) === 1) ? 'th' :
+ (b === 1) ? 'st' :
+ (b === 2) ? 'nd' :
+ (b === 3) ? 'rd' : 'th';
+ return number + output;
+ }
+ });
+
+ /* EMBED_LOCALES */
+
+ /************************************
+ Exposing Moment
+ ************************************/
+
+ function makeGlobal(shouldDeprecate) {
+ /*global ender:false */
+ if (typeof ender !== 'undefined') {
+ return;
+ }
+ oldGlobalMoment = globalScope.moment;
+ if (shouldDeprecate) {
+ globalScope.moment = deprecate(
+ 'Accessing Moment through the global scope is ' +
+ 'deprecated, and will be removed in an upcoming ' +
+ 'release.',
+ moment);
+ } else {
+ globalScope.moment = moment;
+ }
+ }
+
+ // CommonJS module is defined
+ if (hasModule) {
+ module.exports = moment;
+ } else if (typeof define === 'function' && define.amd) {
+ define('moment', function (require, exports, module) {
+ if (module.config && module.config() && module.config().noGlobal === true) {
+ // release the global variable
+ globalScope.moment = oldGlobalMoment;
+ }
+
+ return moment;
+ });
+ makeGlobal(true);
+ } else {
+ makeGlobal();
+ }
+}).call(this); \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/moment.min.js b/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/moment.min.js
new file mode 100755
index 00000000..c30bbff2
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/moment.min.js
@@ -0,0 +1,6 @@
+//! moment.js
+//! version : 2.8.1
+//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
+//! license : MIT
+//! momentjs.com
+(function(a){function b(a,b,c){switch(arguments.length){case 2:return null!=a?a:b;case 3:return null!=a?a:null!=b?b:c;default:throw new Error("Implement me")}}function c(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(a){rb.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+a)}function e(a,b){var c=!0;return l(function(){return c&&(d(a),c=!1),b.apply(this,arguments)},b)}function f(a,b){nc[a]||(d(b),nc[a]=!0)}function g(a,b){return function(c){return o(a.call(this,c),b)}}function h(a,b){return function(c){return this.localeData().ordinal(a.call(this,c),b)}}function i(){}function j(a,b){b!==!1&&E(a),m(this,a),this._d=new Date(+a._d)}function k(a){var b=x(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+36e5*h,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=rb.localeData(),this._bubble()}function l(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return b.hasOwnProperty("toString")&&(a.toString=b.toString),b.hasOwnProperty("valueOf")&&(a.valueOf=b.valueOf),a}function m(a,b){var c,d,e;if("undefined"!=typeof b._isAMomentObject&&(a._isAMomentObject=b._isAMomentObject),"undefined"!=typeof b._i&&(a._i=b._i),"undefined"!=typeof b._f&&(a._f=b._f),"undefined"!=typeof b._l&&(a._l=b._l),"undefined"!=typeof b._strict&&(a._strict=b._strict),"undefined"!=typeof b._tzm&&(a._tzm=b._tzm),"undefined"!=typeof b._isUTC&&(a._isUTC=b._isUTC),"undefined"!=typeof b._offset&&(a._offset=b._offset),"undefined"!=typeof b._pf&&(a._pf=b._pf),"undefined"!=typeof b._locale&&(a._locale=b._locale),Fb.length>0)for(c in Fb)d=Fb[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function n(a){return 0>a?Math.ceil(a):Math.floor(a)}function o(a,b,c){for(var d=""+Math.abs(a),e=a>=0;d.length<b;)d="0"+d;return(e?c?"+":"":"-")+d}function p(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function q(a,b){var c;return b=J(b,a),a.isBefore(b)?c=p(a,b):(c=p(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function r(a,b){return function(c,d){var e,g;return null===d||isNaN(+d)||(f(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),g=c,c=d,d=g),c="string"==typeof c?+c:c,e=rb.duration(c,d),s(this,e,a),this}}function s(a,b,c,d){var e=b._milliseconds,f=b._days,g=b._months;d=null==d?!0:d,e&&a._d.setTime(+a._d+e*c),f&&lb(a,"Date",kb(a,"Date")+f*c),g&&jb(a,kb(a,"Month")+g*c),d&&rb.updateOffset(a,f||g)}function t(a){return"[object Array]"===Object.prototype.toString.call(a)}function u(a){return"[object Date]"===Object.prototype.toString.call(a)||a instanceof Date}function v(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&z(a[d])!==z(b[d]))&&g++;return g+f}function w(a){if(a){var b=a.toLowerCase().replace(/(.)s$/,"$1");a=gc[a]||hc[b]||b}return a}function x(a){var b,c,d={};for(c in a)a.hasOwnProperty(c)&&(b=w(c),b&&(d[b]=a[c]));return d}function y(b){var c,d;if(0===b.indexOf("week"))c=7,d="day";else{if(0!==b.indexOf("month"))return;c=12,d="month"}rb[b]=function(e,f){var g,h,i=rb._locale[b],j=[];if("number"==typeof e&&(f=e,e=a),h=function(a){var b=rb().utc().set(d,a);return i.call(rb._locale,b,e||"")},null!=f)return h(f);for(g=0;c>g;g++)j.push(h(g));return j}}function z(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function A(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function B(a,b,c){return fb(rb([a,11,31+b-c]),b,c).week}function C(a){return D(a)?366:365}function D(a){return a%4===0&&a%100!==0||a%400===0}function E(a){var b;a._a&&-2===a._pf.overflow&&(b=a._a[yb]<0||a._a[yb]>11?yb:a._a[zb]<1||a._a[zb]>A(a._a[xb],a._a[yb])?zb:a._a[Ab]<0||a._a[Ab]>23?Ab:a._a[Bb]<0||a._a[Bb]>59?Bb:a._a[Cb]<0||a._a[Cb]>59?Cb:a._a[Db]<0||a._a[Db]>999?Db:-1,a._pf._overflowDayOfYear&&(xb>b||b>zb)&&(b=zb),a._pf.overflow=b)}function F(a){return null==a._isValid&&(a._isValid=!isNaN(a._d.getTime())&&a._pf.overflow<0&&!a._pf.empty&&!a._pf.invalidMonth&&!a._pf.nullInput&&!a._pf.invalidFormat&&!a._pf.userInvalidated,a._strict&&(a._isValid=a._isValid&&0===a._pf.charsLeftOver&&0===a._pf.unusedTokens.length)),a._isValid}function G(a){return a?a.toLowerCase().replace("_","-"):a}function H(a){for(var b,c,d,e,f=0;f<a.length;){for(e=G(a[f]).split("-"),b=e.length,c=G(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=I(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&v(e,c,!0)>=b-1)break;b--}f++}return null}function I(a){var b=null;if(!Eb[a]&&Gb)try{b=rb.locale(),require("./locale/"+a),rb.locale(b)}catch(c){}return Eb[a]}function J(a,b){return b._isUTC?rb(a).zone(b._offset||0):rb(a).local()}function K(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function L(a){var b,c,d=a.match(Kb);for(b=0,c=d.length;c>b;b++)d[b]=mc[d[b]]?mc[d[b]]:K(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function M(a,b){return a.isValid()?(b=N(b,a.localeData()),ic[b]||(ic[b]=L(b)),ic[b](a)):a.localeData().invalidDate()}function N(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Lb.lastIndex=0;d>=0&&Lb.test(a);)a=a.replace(Lb,c),Lb.lastIndex=0,d-=1;return a}function O(a,b){var c,d=b._strict;switch(a){case"Q":return Wb;case"DDDD":return Yb;case"YYYY":case"GGGG":case"gggg":return d?Zb:Ob;case"Y":case"G":case"g":return _b;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return d?$b:Pb;case"S":if(d)return Wb;case"SS":if(d)return Xb;case"SSS":if(d)return Yb;case"DDD":return Nb;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Rb;case"a":case"A":return b._locale._meridiemParse;case"X":return Ub;case"Z":case"ZZ":return Sb;case"T":return Tb;case"SSSS":return Qb;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return d?Xb:Mb;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Mb;case"Do":return Vb;default:return c=new RegExp(X(W(a.replace("\\","")),"i"))}}function P(a){a=a||"";var b=a.match(Sb)||[],c=b[b.length-1]||[],d=(c+"").match(ec)||["-",0,0],e=+(60*d[1])+z(d[2]);return"+"===d[0]?-e:e}function Q(a,b,c){var d,e=c._a;switch(a){case"Q":null!=b&&(e[yb]=3*(z(b)-1));break;case"M":case"MM":null!=b&&(e[yb]=z(b)-1);break;case"MMM":case"MMMM":d=c._locale.monthsParse(b),null!=d?e[yb]=d:c._pf.invalidMonth=b;break;case"D":case"DD":null!=b&&(e[zb]=z(b));break;case"Do":null!=b&&(e[zb]=z(parseInt(b,10)));break;case"DDD":case"DDDD":null!=b&&(c._dayOfYear=z(b));break;case"YY":e[xb]=rb.parseTwoDigitYear(b);break;case"YYYY":case"YYYYY":case"YYYYYY":e[xb]=z(b);break;case"a":case"A":c._isPm=c._locale.isPM(b);break;case"H":case"HH":case"h":case"hh":e[Ab]=z(b);break;case"m":case"mm":e[Bb]=z(b);break;case"s":case"ss":e[Cb]=z(b);break;case"S":case"SS":case"SSS":case"SSSS":e[Db]=z(1e3*("0."+b));break;case"X":c._d=new Date(1e3*parseFloat(b));break;case"Z":case"ZZ":c._useUTC=!0,c._tzm=P(b);break;case"dd":case"ddd":case"dddd":d=c._locale.weekdaysParse(b),null!=d?(c._w=c._w||{},c._w.d=d):c._pf.invalidWeekday=b;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":a=a.substr(0,1);case"gggg":case"GGGG":case"GGGGG":a=a.substr(0,2),b&&(c._w=c._w||{},c._w[a]=z(b));break;case"gg":case"GG":c._w=c._w||{},c._w[a]=rb.parseTwoDigitYear(b)}}function R(a){var c,d,e,f,g,h,i;c=a._w,null!=c.GG||null!=c.W||null!=c.E?(g=1,h=4,d=b(c.GG,a._a[xb],fb(rb(),1,4).year),e=b(c.W,1),f=b(c.E,1)):(g=a._locale._week.dow,h=a._locale._week.doy,d=b(c.gg,a._a[xb],fb(rb(),g,h).year),e=b(c.w,1),null!=c.d?(f=c.d,g>f&&++e):f=null!=c.e?c.e+g:g),i=gb(d,e,f,h,g),a._a[xb]=i.year,a._dayOfYear=i.dayOfYear}function S(a){var c,d,e,f,g=[];if(!a._d){for(e=U(a),a._w&&null==a._a[zb]&&null==a._a[yb]&&R(a),a._dayOfYear&&(f=b(a._a[xb],e[xb]),a._dayOfYear>C(f)&&(a._pf._overflowDayOfYear=!0),d=bb(f,0,a._dayOfYear),a._a[yb]=d.getUTCMonth(),a._a[zb]=d.getUTCDate()),c=0;3>c&&null==a._a[c];++c)a._a[c]=g[c]=e[c];for(;7>c;c++)a._a[c]=g[c]=null==a._a[c]?2===c?1:0:a._a[c];a._d=(a._useUTC?bb:ab).apply(null,g),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()+a._tzm)}}function T(a){var b;a._d||(b=x(a._i),a._a=[b.year,b.month,b.day,b.hour,b.minute,b.second,b.millisecond],S(a))}function U(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function V(a){if(a._f===rb.ISO_8601)return void Z(a);a._a=[],a._pf.empty=!0;var b,c,d,e,f,g=""+a._i,h=g.length,i=0;for(d=N(a._f,a._locale).match(Kb)||[],b=0;b<d.length;b++)e=d[b],c=(g.match(O(e,a))||[])[0],c&&(f=g.substr(0,g.indexOf(c)),f.length>0&&a._pf.unusedInput.push(f),g=g.slice(g.indexOf(c)+c.length),i+=c.length),mc[e]?(c?a._pf.empty=!1:a._pf.unusedTokens.push(e),Q(e,c,a)):a._strict&&!c&&a._pf.unusedTokens.push(e);a._pf.charsLeftOver=h-i,g.length>0&&a._pf.unusedInput.push(g),a._isPm&&a._a[Ab]<12&&(a._a[Ab]+=12),a._isPm===!1&&12===a._a[Ab]&&(a._a[Ab]=0),S(a),E(a)}function W(a){return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e})}function X(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Y(a){var b,d,e,f,g;if(0===a._f.length)return a._pf.invalidFormat=!0,void(a._d=new Date(0/0));for(f=0;f<a._f.length;f++)g=0,b=m({},a),b._pf=c(),b._f=a._f[f],V(b),F(b)&&(g+=b._pf.charsLeftOver,g+=10*b._pf.unusedTokens.length,b._pf.score=g,(null==e||e>g)&&(e=g,d=b));l(a,d||b)}function Z(a){var b,c,d=a._i,e=ac.exec(d);if(e){for(a._pf.iso=!0,b=0,c=cc.length;c>b;b++)if(cc[b][1].exec(d)){a._f=cc[b][0]+(e[6]||" ");break}for(b=0,c=dc.length;c>b;b++)if(dc[b][1].exec(d)){a._f+=dc[b][0];break}d.match(Sb)&&(a._f+="Z"),V(a)}else a._isValid=!1}function $(a){Z(a),a._isValid===!1&&(delete a._isValid,rb.createFromInputFallback(a))}function _(b){var c,d=b._i;d===a?b._d=new Date:u(d)?b._d=new Date(+d):null!==(c=Hb.exec(d))?b._d=new Date(+c[1]):"string"==typeof d?$(b):t(d)?(b._a=d.slice(0),S(b)):"object"==typeof d?T(b):"number"==typeof d?b._d=new Date(d):rb.createFromInputFallback(b)}function ab(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function bb(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function cb(a,b){if("string"==typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else a=parseInt(a,10);return a}function db(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function eb(a,b,c){var d=rb.duration(a).abs(),e=wb(d.as("s")),f=wb(d.as("m")),g=wb(d.as("h")),h=wb(d.as("d")),i=wb(d.as("M")),j=wb(d.as("y")),k=e<jc.s&&["s",e]||1===f&&["m"]||f<jc.m&&["mm",f]||1===g&&["h"]||g<jc.h&&["hh",g]||1===h&&["d"]||h<jc.d&&["dd",h]||1===i&&["M"]||i<jc.M&&["MM",i]||1===j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,db.apply({},k)}function fb(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=rb(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function gb(a,b,c,d,e){var f,g,h=bb(a,0,1).getUTCDay();return h=0===h?7:h,c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:C(a-1)+g}}function hb(b){var c=b._i,d=b._f;return b._locale=b._locale||rb.localeData(b._l),null===c||d===a&&""===c?rb.invalid({nullInput:!0}):("string"==typeof c&&(b._i=c=b._locale.preparse(c)),rb.isMoment(c)?new j(c,!0):(d?t(d)?Y(b):V(b):_(b),new j(b)))}function ib(a,b){var c,d;if(1===b.length&&t(b[0])&&(b=b[0]),!b.length)return rb();for(c=b[0],d=1;d<b.length;++d)b[d][a](c)&&(c=b[d]);return c}function jb(a,b){var c;return"string"==typeof b&&(b=a.localeData().monthsParse(b),"number"!=typeof b)?a:(c=Math.min(a.date(),A(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a)}function kb(a,b){return a._d["get"+(a._isUTC?"UTC":"")+b]()}function lb(a,b,c){return"Month"===b?jb(a,c):a._d["set"+(a._isUTC?"UTC":"")+b](c)}function mb(a,b){return function(c){return null!=c?(lb(this,a,c),rb.updateOffset(this,b),this):kb(this,a)}}function nb(a){return 400*a/146097}function ob(a){return 146097*a/400}function pb(a){rb.duration.fn[a]=function(){return this._data[a]}}function qb(a){"undefined"==typeof ender&&(sb=vb.moment,vb.moment=a?e("Accessing Moment through the global scope is deprecated, and will be removed in an upcoming release.",rb):rb)}for(var rb,sb,tb,ub="2.8.1",vb="undefined"!=typeof global?global:this,wb=Math.round,xb=0,yb=1,zb=2,Ab=3,Bb=4,Cb=5,Db=6,Eb={},Fb=[],Gb="undefined"!=typeof module&&module.exports,Hb=/^\/?Date\((\-?\d+)/i,Ib=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Jb=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,Kb=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,Lb=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,Mb=/\d\d?/,Nb=/\d{1,3}/,Ob=/\d{1,4}/,Pb=/[+\-]?\d{1,6}/,Qb=/\d+/,Rb=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Sb=/Z|[\+\-]\d\d:?\d\d/gi,Tb=/T/i,Ub=/[\+\-]?\d+(\.\d{1,3})?/,Vb=/\d{1,2}/,Wb=/\d/,Xb=/\d\d/,Yb=/\d{3}/,Zb=/\d{4}/,$b=/[+-]?\d{6}/,_b=/[+-]?\d+/,ac=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,bc="YYYY-MM-DDTHH:mm:ssZ",cc=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],dc=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],ec=/([\+\-]|\d\d)/gi,fc=("Date|Hours|Minutes|Seconds|Milliseconds".split("|"),{Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6}),gc={ms:"millisecond",s:"second",m:"minute",h:"hour",d:"day",D:"date",w:"week",W:"isoWeek",M:"month",Q:"quarter",y:"year",DDD:"dayOfYear",e:"weekday",E:"isoWeekday",gg:"weekYear",GG:"isoWeekYear"},hc={dayofyear:"dayOfYear",isoweekday:"isoWeekday",isoweek:"isoWeek",weekyear:"weekYear",isoweekyear:"isoWeekYear"},ic={},jc={s:45,m:45,h:22,d:26,M:11},kc="DDD w W M D d".split(" "),lc="M D H h m s w W".split(" "),mc={M:function(){return this.month()+1},MMM:function(a){return this.localeData().monthsShort(this,a)},MMMM:function(a){return this.localeData().months(this,a)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(a){return this.localeData().weekdaysMin(this,a)},ddd:function(a){return this.localeData().weekdaysShort(this,a)},dddd:function(a){return this.localeData().weekdays(this,a)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return o(this.year()%100,2)},YYYY:function(){return o(this.year(),4)},YYYYY:function(){return o(this.year(),5)},YYYYYY:function(){var a=this.year(),b=a>=0?"+":"-";return b+o(Math.abs(a),6)},gg:function(){return o(this.weekYear()%100,2)},gggg:function(){return o(this.weekYear(),4)},ggggg:function(){return o(this.weekYear(),5)},GG:function(){return o(this.isoWeekYear()%100,2)},GGGG:function(){return o(this.isoWeekYear(),4)},GGGGG:function(){return o(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return z(this.milliseconds()/100)},SS:function(){return o(z(this.milliseconds()/10),2)},SSS:function(){return o(this.milliseconds(),3)},SSSS:function(){return o(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+o(z(a/60),2)+":"+o(z(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+o(z(a/60),2)+o(z(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},nc={},oc=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];kc.length;)tb=kc.pop(),mc[tb+"o"]=h(mc[tb],tb);for(;lc.length;)tb=lc.pop(),mc[tb+tb]=g(mc[tb],2);mc.DDDD=g(mc.DDD,3),l(i.prototype,{set:function(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(a){return this._months[a.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(a){return this._monthsShort[a.month()]},monthsParse:function(a){var b,c,d;for(this._monthsParse||(this._monthsParse=[]),b=0;12>b;b++)if(this._monthsParse[b]||(c=rb.utc([2e3,b]),d="^"+this.months(c,"")+"|^"+this.monthsShort(c,""),this._monthsParse[b]=new RegExp(d.replace(".",""),"i")),this._monthsParse[b].test(a))return b},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(a){return this._weekdays[a.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(a){return this._weekdaysShort[a.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(a){return this._weekdaysMin[a.day()]},weekdaysParse:function(a){var b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=rb([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(a){var b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b),b},isPM:function(a){return"p"===(a+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(a,b){var c=this._calendar[a];return"function"==typeof c?c.apply(b):c},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)},pastFuture:function(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)},ordinal:function(a){return this._ordinal.replace("%d",a)},_ordinal:"%d",preparse:function(a){return a},postformat:function(a){return a},week:function(a){return fb(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),rb=function(b,d,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._i=b,g._f=d,g._l=e,g._strict=f,g._isUTC=!1,g._pf=c(),hb(g)},rb.suppressDeprecationWarnings=!1,rb.createFromInputFallback=e("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i)}),rb.min=function(){var a=[].slice.call(arguments,0);return ib("isBefore",a)},rb.max=function(){var a=[].slice.call(arguments,0);return ib("isAfter",a)},rb.utc=function(b,d,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._useUTC=!0,g._isUTC=!0,g._l=e,g._i=b,g._f=d,g._strict=f,g._pf=c(),hb(g).utc()},rb.unix=function(a){return rb(1e3*a)},rb.duration=function(a,b){var c,d,e,f,g=a,h=null;return rb.isDuration(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=Ib.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:z(h[zb])*c,h:z(h[Ab])*c,m:z(h[Bb])*c,s:z(h[Cb])*c,ms:z(h[Db])*c}):(h=Jb.exec(a))?(c="-"===h[1]?-1:1,e=function(a){var b=a&&parseFloat(a.replace(",","."));return(isNaN(b)?0:b)*c},g={y:e(h[2]),M:e(h[3]),d:e(h[4]),h:e(h[5]),m:e(h[6]),s:e(h[7]),w:e(h[8])}):"object"==typeof g&&("from"in g||"to"in g)&&(f=q(rb(g.from),rb(g.to)),g={},g.ms=f.milliseconds,g.M=f.months),d=new k(g),rb.isDuration(a)&&a.hasOwnProperty("_locale")&&(d._locale=a._locale),d},rb.version=ub,rb.defaultFormat=bc,rb.ISO_8601=function(){},rb.momentProperties=Fb,rb.updateOffset=function(){},rb.relativeTimeThreshold=function(b,c){return jc[b]===a?!1:c===a?jc[b]:(jc[b]=c,!0)},rb.lang=e("moment.lang is deprecated. Use moment.locale instead.",function(a,b){return rb.locale(a,b)}),rb.locale=function(a,b){var c;return a&&(c="undefined"!=typeof b?rb.defineLocale(a,b):rb.localeData(a),c&&(rb.duration._locale=rb._locale=c)),rb._locale._abbr},rb.defineLocale=function(a,b){return null!==b?(b.abbr=a,Eb[a]||(Eb[a]=new i),Eb[a].set(b),rb.locale(a),Eb[a]):(delete Eb[a],null)},rb.langData=e("moment.langData is deprecated. Use moment.localeData instead.",function(a){return rb.localeData(a)}),rb.localeData=function(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return rb._locale;if(!t(a)){if(b=I(a))return b;a=[a]}return H(a)},rb.isMoment=function(a){return a instanceof j||null!=a&&a.hasOwnProperty("_isAMomentObject")},rb.isDuration=function(a){return a instanceof k};for(tb=oc.length-1;tb>=0;--tb)y(oc[tb]);rb.normalizeUnits=function(a){return w(a)},rb.invalid=function(a){var b=rb.utc(0/0);return null!=a?l(b._pf,a):b._pf.userInvalidated=!0,b},rb.parseZone=function(){return rb.apply(null,arguments).parseZone()},rb.parseTwoDigitYear=function(a){return z(a)+(z(a)>68?1900:2e3)},l(rb.fn=j.prototype,{clone:function(){return rb(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var a=rb(this).utc();return 0<a.year()&&a.year()<=9999?M(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):M(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var a=this;return[a.year(),a.month(),a.date(),a.hours(),a.minutes(),a.seconds(),a.milliseconds()]},isValid:function(){return F(this)},isDSTShifted:function(){return this._a?this.isValid()&&v(this._a,(this._isUTC?rb.utc(this._a):rb(this._a)).toArray())>0:!1},parsingFlags:function(){return l({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(a){return this.zone(0,a)},local:function(a){return this._isUTC&&(this.zone(0,a),this._isUTC=!1,a&&this.add(this._d.getTimezoneOffset(),"m")),this},format:function(a){var b=M(this,a||rb.defaultFormat);return this.localeData().postformat(b)},add:r(1,"add"),subtract:r(-1,"subtract"),diff:function(a,b,c){var d,e,f=J(a,this),g=6e4*(this.zone()-f.zone());return b=w(b),"year"===b||"month"===b?(d=432e5*(this.daysInMonth()+f.daysInMonth()),e=12*(this.year()-f.year())+(this.month()-f.month()),e+=(this-rb(this).startOf("month")-(f-rb(f).startOf("month")))/d,e-=6e4*(this.zone()-rb(this).startOf("month").zone()-(f.zone()-rb(f).startOf("month").zone()))/d,"year"===b&&(e/=12)):(d=this-f,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-g)/864e5:"week"===b?(d-g)/6048e5:d),c?e:n(e)},from:function(a,b){return rb.duration({to:this,from:a}).locale(this.locale()).humanize(!b)},fromNow:function(a){return this.from(rb(),a)},calendar:function(a){var b=a||rb(),c=J(b,this).startOf("day"),d=this.diff(c,"days",!0),e=-6>d?"sameElse":-1>d?"lastWeek":0>d?"lastDay":1>d?"sameDay":2>d?"nextDay":7>d?"nextWeek":"sameElse";return this.format(this.localeData().calendar(e,this))},isLeapYear:function(){return D(this.year())},isDST:function(){return this.zone()<this.clone().month(0).zone()||this.zone()<this.clone().month(5).zone()},day:function(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=cb(a,this.localeData()),this.add(a-b,"d")):b},month:mb("Month",!0),startOf:function(a){switch(a=w(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a?this.weekday(0):"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(a){return a=w(a),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms")},isAfter:function(a,b){return b="undefined"!=typeof b?b:"millisecond",+this.clone().startOf(b)>+rb(a).startOf(b)},isBefore:function(a,b){return b="undefined"!=typeof b?b:"millisecond",+this.clone().startOf(b)<+rb(a).startOf(b)},isSame:function(a,b){return b=b||"ms",+this.clone().startOf(b)===+J(a,this).startOf(b)},min:e("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(a){return a=rb.apply(null,arguments),this>a?this:a}),max:e("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(a){return a=rb.apply(null,arguments),a>this?this:a}),zone:function(a,b){var c,d=this._offset||0;return null==a?this._isUTC?d:this._d.getTimezoneOffset():("string"==typeof a&&(a=P(a)),Math.abs(a)<16&&(a=60*a),!this._isUTC&&b&&(c=this._d.getTimezoneOffset()),this._offset=a,this._isUTC=!0,null!=c&&this.subtract(c,"m"),d!==a&&(!b||this._changeInProgress?s(this,rb.duration(d-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,rb.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(a){return a=a?rb(a).zone():0,(this.zone()-a)%60===0},daysInMonth:function(){return A(this.year(),this.month())},dayOfYear:function(a){var b=wb((rb(this).startOf("day")-rb(this).startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")},quarter:function(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)},weekYear:function(a){var b=fb(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==a?b:this.add(a-b,"y")},isoWeekYear:function(a){var b=fb(this,1,4).year;return null==a?b:this.add(a-b,"y")},week:function(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")},isoWeek:function(a){var b=fb(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")},weekday:function(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")},isoWeekday:function(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)},isoWeeksInYear:function(){return B(this.year(),1,4)},weeksInYear:function(){var a=this.localeData()._week;return B(this.year(),a.dow,a.doy)},get:function(a){return a=w(a),this[a]()},set:function(a,b){return a=w(a),"function"==typeof this[a]&&this[a](b),this},locale:function(b){return b===a?this._locale._abbr:(this._locale=rb.localeData(b),this)},lang:e("moment().lang() is deprecated. Use moment().localeData() instead.",function(b){return b===a?this.localeData():(this._locale=rb.localeData(b),this)}),localeData:function(){return this._locale}}),rb.fn.millisecond=rb.fn.milliseconds=mb("Milliseconds",!1),rb.fn.second=rb.fn.seconds=mb("Seconds",!1),rb.fn.minute=rb.fn.minutes=mb("Minutes",!1),rb.fn.hour=rb.fn.hours=mb("Hours",!0),rb.fn.date=mb("Date",!0),rb.fn.dates=e("dates accessor is deprecated. Use date instead.",mb("Date",!0)),rb.fn.year=mb("FullYear",!0),rb.fn.years=e("years accessor is deprecated. Use year instead.",mb("FullYear",!0)),rb.fn.days=rb.fn.day,rb.fn.months=rb.fn.month,rb.fn.weeks=rb.fn.week,rb.fn.isoWeeks=rb.fn.isoWeek,rb.fn.quarters=rb.fn.quarter,rb.fn.toJSON=rb.fn.toISOString,l(rb.duration.fn=k.prototype,{_bubble:function(){var a,b,c,d=this._milliseconds,e=this._days,f=this._months,g=this._data,h=0;g.milliseconds=d%1e3,a=n(d/1e3),g.seconds=a%60,b=n(a/60),g.minutes=b%60,c=n(b/60),g.hours=c%24,e+=n(c/24),h=n(nb(e)),e-=n(ob(h)),f+=n(e/30),e%=30,h+=n(f/12),f%=12,g.days=e,g.months=f,g.years=h},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return n(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*z(this._months/12)},humanize:function(a){var b=eb(this,!a,this.localeData());return a&&(b=this.localeData().pastFuture(+this,b)),this.localeData().postformat(b)},add:function(a,b){var c=rb.duration(a,b);return this._milliseconds+=c._milliseconds,this._days+=c._days,this._months+=c._months,this._bubble(),this},subtract:function(a,b){var c=rb.duration(a,b);return this._milliseconds-=c._milliseconds,this._days-=c._days,this._months-=c._months,this._bubble(),this},get:function(a){return a=w(a),this[a.toLowerCase()+"s"]()},as:function(a){var b,c;if(a=w(a),b=this._days+this._milliseconds/864e5,"month"===a||"year"===a)return c=this._months+12*nb(b),"month"===a?c:c/12;switch(b+=ob(this._months/12),a){case"week":return b/7;case"day":return b;case"hour":return 24*b;case"minute":return 24*b*60;case"second":return 24*b*60*60;case"millisecond":return 24*b*60*60*1e3;default:throw new Error("Unknown unit "+a)}},lang:rb.fn.lang,locale:rb.fn.locale,toIsoString:e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var a=Math.abs(this.years()),b=Math.abs(this.months()),c=Math.abs(this.days()),d=Math.abs(this.hours()),e=Math.abs(this.minutes()),f=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||f?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(f?f+"S":""):"P0D"},localeData:function(){return this._locale}});for(tb in fc)fc.hasOwnProperty(tb)&&pb(tb.toLowerCase());rb.duration.fn.asMilliseconds=function(){return this.as("ms")},rb.duration.fn.asSeconds=function(){return this.as("s")},rb.duration.fn.asMinutes=function(){return this.as("m")},rb.duration.fn.asHours=function(){return this.as("h")},rb.duration.fn.asDays=function(){return this.as("d")},rb.duration.fn.asWeeks=function(){return this.as("weeks")},rb.duration.fn.asMonths=function(){return this.as("M")},rb.duration.fn.asYears=function(){return this.as("y")},rb.locale("en",{ordinal:function(a){var b=a%10,c=1===z(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),Gb?module.exports=rb:"function"==typeof define&&define.amd?(define("moment",function(a,b,c){return c.config&&c.config()&&c.config().noGlobal===!0&&(vb.moment=sb),rb}),qb(!0)):qb()}).call(this); \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/bootstrap-growl/bootstrap-growl.min.js b/common/src/main/webapp/thirdparty/bootstrap-growl/bootstrap-growl.min.js
index ce6deb10..ce6deb10 100644..100755
--- a/common/src/main/webapp/thirdparty/bootstrap-growl/bootstrap-growl.min.js
+++ b/common/src/main/webapp/thirdparty/bootstrap-growl/bootstrap-growl.min.js
diff --git a/common/src/main/webapp/thirdparty/bootstrap/css/bootstrap-dt.css b/common/src/main/webapp/thirdparty/bootstrap/css/bootstrap-dt.css
index 2828337d..2828337d 100644..100755
--- a/common/src/main/webapp/thirdparty/bootstrap/css/bootstrap-dt.css
+++ b/common/src/main/webapp/thirdparty/bootstrap/css/bootstrap-dt.css
diff --git a/common/src/main/webapp/thirdparty/bootstrap/css/bootstrap.min.css b/common/src/main/webapp/thirdparty/bootstrap/css/bootstrap.min.css
index 679272d2..679272d2 100644..100755
--- a/common/src/main/webapp/thirdparty/bootstrap/css/bootstrap.min.css
+++ b/common/src/main/webapp/thirdparty/bootstrap/css/bootstrap.min.css
diff --git a/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.eot b/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.eot
index b93a4953..b93a4953 100644..100755
--- a/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.eot
+++ b/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.eot
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.svg b/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.svg
index 94fb5490..94fb5490 100644..100755
--- a/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.svg
+++ b/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.svg
diff --git a/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.ttf b/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.ttf
index 1413fc60..1413fc60 100644..100755
--- a/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.ttf
+++ b/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.ttf
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff b/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff
index 9e612858..9e612858 100644..100755
--- a/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff
+++ b/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff2
index 64539b54..64539b54 100644..100755
--- a/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff2
+++ b/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff2
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/bootstrap/js/bootstrap.js b/common/src/main/webapp/thirdparty/bootstrap/js/bootstrap.js
index 8ae571b6..8ae571b6 100644..100755
--- a/common/src/main/webapp/thirdparty/bootstrap/js/bootstrap.js
+++ b/common/src/main/webapp/thirdparty/bootstrap/js/bootstrap.js
diff --git a/common/src/main/webapp/thirdparty/bootstrap/js/bootstrap.min.js b/common/src/main/webapp/thirdparty/bootstrap/js/bootstrap.min.js
index b04a0e82..b04a0e82 100644..100755
--- a/common/src/main/webapp/thirdparty/bootstrap/js/bootstrap.min.js
+++ b/common/src/main/webapp/thirdparty/bootstrap/js/bootstrap.min.js
diff --git a/common/src/main/webapp/thirdparty/bootstrap/js/bootstrap2-typeahead.min.js b/common/src/main/webapp/thirdparty/bootstrap/js/bootstrap2-typeahead.min.js
index 1d11b341..1d11b341 100644..100755
--- a/common/src/main/webapp/thirdparty/bootstrap/js/bootstrap2-typeahead.min.js
+++ b/common/src/main/webapp/thirdparty/bootstrap/js/bootstrap2-typeahead.min.js
diff --git a/common/src/main/webapp/thirdparty/cometd/cometd.js b/common/src/main/webapp/thirdparty/cometd/cometd.js
index 74f49379..74f49379 100644..100755
--- a/common/src/main/webapp/thirdparty/cometd/cometd.js
+++ b/common/src/main/webapp/thirdparty/cometd/cometd.js
diff --git a/common/src/main/webapp/thirdparty/cometd/cometd/AckExtension.js b/common/src/main/webapp/thirdparty/cometd/cometd/AckExtension.js
index 3b547a67..3b547a67 100644..100755
--- a/common/src/main/webapp/thirdparty/cometd/cometd/AckExtension.js
+++ b/common/src/main/webapp/thirdparty/cometd/cometd/AckExtension.js
diff --git a/common/src/main/webapp/thirdparty/cometd/cometd/ReloadExtension.js b/common/src/main/webapp/thirdparty/cometd/cometd/ReloadExtension.js
index ef6de781..ef6de781 100644..100755
--- a/common/src/main/webapp/thirdparty/cometd/cometd/ReloadExtension.js
+++ b/common/src/main/webapp/thirdparty/cometd/cometd/ReloadExtension.js
diff --git a/common/src/main/webapp/thirdparty/cometd/cometd/TimeStampExtension.js b/common/src/main/webapp/thirdparty/cometd/cometd/TimeStampExtension.js
index 8011a3a6..8011a3a6 100644..100755
--- a/common/src/main/webapp/thirdparty/cometd/cometd/TimeStampExtension.js
+++ b/common/src/main/webapp/thirdparty/cometd/cometd/TimeStampExtension.js
diff --git a/common/src/main/webapp/thirdparty/cometd/cometd/TimeSyncExtension.js b/common/src/main/webapp/thirdparty/cometd/cometd/TimeSyncExtension.js
index 50632983..50632983 100644..100755
--- a/common/src/main/webapp/thirdparty/cometd/cometd/TimeSyncExtension.js
+++ b/common/src/main/webapp/thirdparty/cometd/cometd/TimeSyncExtension.js
diff --git a/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-ack.js b/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-ack.js
index 5b6b1535..5b6b1535 100644..100755
--- a/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-ack.js
+++ b/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-ack.js
diff --git a/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-reload.js b/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-reload.js
index 07982ee3..07982ee3 100644..100755
--- a/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-reload.js
+++ b/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-reload.js
diff --git a/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-timestamp.js b/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-timestamp.js
index 3c5a51ce..3c5a51ce 100644..100755
--- a/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-timestamp.js
+++ b/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-timestamp.js
diff --git a/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-timesync.js b/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-timesync.js
index d7eb54c2..d7eb54c2 100644..100755
--- a/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-timesync.js
+++ b/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-timesync.js
diff --git a/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd.js b/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd.js
index 39e80031..39e80031 100644..100755
--- a/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd.js
+++ b/common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd.js
diff --git a/common/src/main/webapp/thirdparty/css/animate-custom.css b/common/src/main/webapp/thirdparty/css/animate-custom.css
index 38212887..38212887 100644..100755
--- a/common/src/main/webapp/thirdparty/css/animate-custom.css
+++ b/common/src/main/webapp/thirdparty/css/animate-custom.css
diff --git a/common/src/main/webapp/thirdparty/css/bootstrap.min.css b/common/src/main/webapp/thirdparty/css/bootstrap.min.css
index 2574229e..2574229e 100644..100755
--- a/common/src/main/webapp/thirdparty/css/bootstrap.min.css
+++ b/common/src/main/webapp/thirdparty/css/bootstrap.min.css
diff --git a/common/src/main/webapp/thirdparty/css/font-awesome.min.css b/common/src/main/webapp/thirdparty/css/font-awesome.min.css
index ec53d4d6..ec53d4d6 100644..100755
--- a/common/src/main/webapp/thirdparty/css/font-awesome.min.css
+++ b/common/src/main/webapp/thirdparty/css/font-awesome.min.css
diff --git a/common/src/main/webapp/thirdparty/css/img/Thumbs.db b/common/src/main/webapp/thirdparty/css/img/Thumbs.db
index 7eb0d3d6..7eb0d3d6 100644..100755
--- a/common/src/main/webapp/thirdparty/css/img/Thumbs.db
+++ b/common/src/main/webapp/thirdparty/css/img/Thumbs.db
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/css/img/diy/1_close.png b/common/src/main/webapp/thirdparty/css/img/diy/1_close.png
index 68ccb3c3..68ccb3c3 100644..100755
--- a/common/src/main/webapp/thirdparty/css/img/diy/1_close.png
+++ b/common/src/main/webapp/thirdparty/css/img/diy/1_close.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/css/img/diy/1_open.png b/common/src/main/webapp/thirdparty/css/img/diy/1_open.png
index d6ff36d3..d6ff36d3 100644..100755
--- a/common/src/main/webapp/thirdparty/css/img/diy/1_open.png
+++ b/common/src/main/webapp/thirdparty/css/img/diy/1_open.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/css/img/diy/2.png b/common/src/main/webapp/thirdparty/css/img/diy/2.png
index 9eff506b..9eff506b 100644..100755
--- a/common/src/main/webapp/thirdparty/css/img/diy/2.png
+++ b/common/src/main/webapp/thirdparty/css/img/diy/2.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/css/img/diy/3.png b/common/src/main/webapp/thirdparty/css/img/diy/3.png
index d7ba6d0c..d7ba6d0c 100644..100755
--- a/common/src/main/webapp/thirdparty/css/img/diy/3.png
+++ b/common/src/main/webapp/thirdparty/css/img/diy/3.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/css/img/diy/4.png b/common/src/main/webapp/thirdparty/css/img/diy/4.png
index 753e2bfd..753e2bfd 100644..100755
--- a/common/src/main/webapp/thirdparty/css/img/diy/4.png
+++ b/common/src/main/webapp/thirdparty/css/img/diy/4.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/css/img/diy/5.png b/common/src/main/webapp/thirdparty/css/img/diy/5.png
index 0c5eccd5..0c5eccd5 100644..100755
--- a/common/src/main/webapp/thirdparty/css/img/diy/5.png
+++ b/common/src/main/webapp/thirdparty/css/img/diy/5.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/css/img/diy/6.png b/common/src/main/webapp/thirdparty/css/img/diy/6.png
index 070b8352..070b8352 100644..100755
--- a/common/src/main/webapp/thirdparty/css/img/diy/6.png
+++ b/common/src/main/webapp/thirdparty/css/img/diy/6.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/css/img/diy/7.png b/common/src/main/webapp/thirdparty/css/img/diy/7.png
index 532b037f..532b037f 100644..100755
--- a/common/src/main/webapp/thirdparty/css/img/diy/7.png
+++ b/common/src/main/webapp/thirdparty/css/img/diy/7.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/css/img/diy/8.png b/common/src/main/webapp/thirdparty/css/img/diy/8.png
index a8f3a86e..a8f3a86e 100644..100755
--- a/common/src/main/webapp/thirdparty/css/img/diy/8.png
+++ b/common/src/main/webapp/thirdparty/css/img/diy/8.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/css/img/diy/9.png b/common/src/main/webapp/thirdparty/css/img/diy/9.png
index 4db73cd4..4db73cd4 100644..100755
--- a/common/src/main/webapp/thirdparty/css/img/diy/9.png
+++ b/common/src/main/webapp/thirdparty/css/img/diy/9.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/css/img/line_conn.gif b/common/src/main/webapp/thirdparty/css/img/line_conn.gif
index d561d36a..d561d36a 100644..100755
--- a/common/src/main/webapp/thirdparty/css/img/line_conn.gif
+++ b/common/src/main/webapp/thirdparty/css/img/line_conn.gif
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/css/img/loading.gif b/common/src/main/webapp/thirdparty/css/img/loading.gif
index e8c28929..e8c28929 100644..100755
--- a/common/src/main/webapp/thirdparty/css/img/loading.gif
+++ b/common/src/main/webapp/thirdparty/css/img/loading.gif
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/css/img/zTreeStandard.gif b/common/src/main/webapp/thirdparty/css/img/zTreeStandard.gif
index 50c94fd4..50c94fd4 100644..100755
--- a/common/src/main/webapp/thirdparty/css/img/zTreeStandard.gif
+++ b/common/src/main/webapp/thirdparty/css/img/zTreeStandard.gif
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/css/img/zTreeStandard.png b/common/src/main/webapp/thirdparty/css/img/zTreeStandard.png
index ffda01ef..ffda01ef 100644..100755
--- a/common/src/main/webapp/thirdparty/css/img/zTreeStandard.png
+++ b/common/src/main/webapp/thirdparty/css/img/zTreeStandard.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/css/magic-check.css b/common/src/main/webapp/thirdparty/css/magic-check.css
index 10178af3..10178af3 100644..100755
--- a/common/src/main/webapp/thirdparty/css/magic-check.css
+++ b/common/src/main/webapp/thirdparty/css/magic-check.css
diff --git a/common/src/main/webapp/thirdparty/css/ng-table.min.css b/common/src/main/webapp/thirdparty/css/ng-table.min.css
index 1ffb3949..1ffb3949 100644..100755
--- a/common/src/main/webapp/thirdparty/css/ng-table.min.css
+++ b/common/src/main/webapp/thirdparty/css/ng-table.min.css
diff --git a/common/src/main/webapp/thirdparty/css/ngict-component.css b/common/src/main/webapp/thirdparty/css/ngict-component.css
index 7053904a..7053904a 100644..100755
--- a/common/src/main/webapp/thirdparty/css/ngict-component.css
+++ b/common/src/main/webapp/thirdparty/css/ngict-component.css
diff --git a/common/src/main/webapp/thirdparty/css/plugins.css b/common/src/main/webapp/thirdparty/css/plugins.css
index 0abc096a..0abc096a 100644..100755
--- a/common/src/main/webapp/thirdparty/css/plugins.css
+++ b/common/src/main/webapp/thirdparty/css/plugins.css
diff --git a/common/src/main/webapp/thirdparty/css/style.css b/common/src/main/webapp/thirdparty/css/style.css
index fc070b9d..fc070b9d 100644..100755
--- a/common/src/main/webapp/thirdparty/css/style.css
+++ b/common/src/main/webapp/thirdparty/css/style.css
diff --git a/common/src/main/webapp/thirdparty/css/uniform.default.min.css b/common/src/main/webapp/thirdparty/css/uniform.default.min.css
index ef4ee103..ef4ee103 100644..100755
--- a/common/src/main/webapp/thirdparty/css/uniform.default.min.css
+++ b/common/src/main/webapp/thirdparty/css/uniform.default.min.css
diff --git a/common/src/main/webapp/thirdparty/css/zTreeStyle.css b/common/src/main/webapp/thirdparty/css/zTreeStyle.css
index 4a1705b1..4a1705b1 100644..100755
--- a/common/src/main/webapp/thirdparty/css/zTreeStyle.css
+++ b/common/src/main/webapp/thirdparty/css/zTreeStyle.css
diff --git a/common/src/main/webapp/thirdparty/data-tables/DT_bootstrap.css b/common/src/main/webapp/thirdparty/data-tables/DT_bootstrap.css
index 599fb0d8..599fb0d8 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/DT_bootstrap.css
+++ b/common/src/main/webapp/thirdparty/data-tables/DT_bootstrap.css
diff --git a/common/src/main/webapp/thirdparty/data-tables/DT_bootstrap.js b/common/src/main/webapp/thirdparty/data-tables/DT_bootstrap.js
index 5b95e4ac..5b95e4ac 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/DT_bootstrap.js
+++ b/common/src/main/webapp/thirdparty/data-tables/DT_bootstrap.js
diff --git a/common/src/main/webapp/thirdparty/data-tables/DataTableICT.js b/common/src/main/webapp/thirdparty/data-tables/DataTableICT.js
index ef85de37..ef85de37 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/DataTableICT.js
+++ b/common/src/main/webapp/thirdparty/data-tables/DataTableICT.js
diff --git a/common/src/main/webapp/thirdparty/data-tables/DataTableSmartClient.js b/common/src/main/webapp/thirdparty/data-tables/DataTableSmartClient.js
index 4cb8cb58..4cb8cb58 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/DataTableSmartClient.js
+++ b/common/src/main/webapp/thirdparty/data-tables/DataTableSmartClient.js
diff --git a/common/src/main/webapp/thirdparty/data-tables/DataTableSmartClientApp.js b/common/src/main/webapp/thirdparty/data-tables/DataTableSmartClientApp.js
index 8584aae3..8584aae3 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/DataTableSmartClientApp.js
+++ b/common/src/main/webapp/thirdparty/data-tables/DataTableSmartClientApp.js
diff --git a/common/src/main/webapp/thirdparty/data-tables/app-test-i18n-datatable-zh-CN.json b/common/src/main/webapp/thirdparty/data-tables/app-test-i18n-datatable-zh-CN.json
index fa209022..fa209022 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/app-test-i18n-datatable-zh-CN.json
+++ b/common/src/main/webapp/thirdparty/data-tables/app-test-i18n-datatable-zh-CN.json
diff --git a/common/src/main/webapp/thirdparty/data-tables/app-universal-i18n-datatable-en-US.json b/common/src/main/webapp/thirdparty/data-tables/app-universal-i18n-datatable-en-US.json
index 809daa32..809daa32 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/app-universal-i18n-datatable-en-US.json
+++ b/common/src/main/webapp/thirdparty/data-tables/app-universal-i18n-datatable-en-US.json
diff --git a/common/src/main/webapp/thirdparty/data-tables/app-universal-i18n-datatable-zh-CN.json b/common/src/main/webapp/thirdparty/data-tables/app-universal-i18n-datatable-zh-CN.json
index 8a270a43..8a270a43 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/app-universal-i18n-datatable-zh-CN.json
+++ b/common/src/main/webapp/thirdparty/data-tables/app-universal-i18n-datatable-zh-CN.json
diff --git a/common/src/main/webapp/thirdparty/data-tables/dataTable.html b/common/src/main/webapp/thirdparty/data-tables/dataTable.html
index afae5e3c..afae5e3c 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/dataTable.html
+++ b/common/src/main/webapp/thirdparty/data-tables/dataTable.html
diff --git a/common/src/main/webapp/thirdparty/data-tables/dataTables.bootstrap.css b/common/src/main/webapp/thirdparty/data-tables/dataTables.bootstrap.css
index ada85f7a..ada85f7a 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/dataTables.bootstrap.css
+++ b/common/src/main/webapp/thirdparty/data-tables/dataTables.bootstrap.css
diff --git a/common/src/main/webapp/thirdparty/data-tables/images/loading-spinner-grey.gif b/common/src/main/webapp/thirdparty/data-tables/images/loading-spinner-grey.gif
index 6d614d3d..6d614d3d 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/images/loading-spinner-grey.gif
+++ b/common/src/main/webapp/thirdparty/data-tables/images/loading-spinner-grey.gif
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/data-tables/images/sort_asc.png b/common/src/main/webapp/thirdparty/data-tables/images/sort_asc.png
index a88d7975..a88d7975 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/images/sort_asc.png
+++ b/common/src/main/webapp/thirdparty/data-tables/images/sort_asc.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/data-tables/images/sort_both.png b/common/src/main/webapp/thirdparty/data-tables/images/sort_both.png
index 18670406..18670406 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/images/sort_both.png
+++ b/common/src/main/webapp/thirdparty/data-tables/images/sort_both.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/data-tables/images/sort_desc.png b/common/src/main/webapp/thirdparty/data-tables/images/sort_desc.png
index def071ed..def071ed 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/images/sort_desc.png
+++ b/common/src/main/webapp/thirdparty/data-tables/images/sort_desc.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables-1.9.4.js b/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables-1.9.4.js
index 367680da..367680da 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables-1.9.4.js
+++ b/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables-1.9.4.js
diff --git a/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables-1.9.4.min.js b/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables-1.9.4.min.js
index 02694a4a..02694a4a 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables-1.9.4.min.js
+++ b/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables-1.9.4.min.js
diff --git a/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.js b/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.js
index 380ab1e4..380ab1e4 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.js
+++ b/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.js
diff --git a/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.min.css b/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.min.css
index b6fb7378..b6fb7378 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.min.css
+++ b/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.min.css
diff --git a/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.min.js b/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.min.js
index e28e037c..e28e037c 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.min.js
+++ b/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.min.js
diff --git a/common/src/main/webapp/thirdparty/data-tables/style-datatable.css b/common/src/main/webapp/thirdparty/data-tables/style-datatable.css
index 516848f5..516848f5 100644..100755
--- a/common/src/main/webapp/thirdparty/data-tables/style-datatable.css
+++ b/common/src/main/webapp/thirdparty/data-tables/style-datatable.css
diff --git a/common/src/main/webapp/thirdparty/echarts/echarts-all.js b/common/src/main/webapp/thirdparty/echarts/echarts-all.js
index e45bf993..e45bf993 100644..100755
--- a/common/src/main/webapp/thirdparty/echarts/echarts-all.js
+++ b/common/src/main/webapp/thirdparty/echarts/echarts-all.js
diff --git a/common/src/main/webapp/thirdparty/echarts/echarts.js b/common/src/main/webapp/thirdparty/echarts/echarts.js
index f0584144..f0584144 100644..100755
--- a/common/src/main/webapp/thirdparty/echarts/echarts.js
+++ b/common/src/main/webapp/thirdparty/echarts/echarts.js
diff --git a/common/src/main/webapp/thirdparty/font-awesome/css/font-awesome.css b/common/src/main/webapp/thirdparty/font-awesome/css/font-awesome.css
index 4040b3cf..4040b3cf 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/css/font-awesome.css
+++ b/common/src/main/webapp/thirdparty/font-awesome/css/font-awesome.css
diff --git a/common/src/main/webapp/thirdparty/font-awesome/css/font-awesome.min.css b/common/src/main/webapp/thirdparty/font-awesome/css/font-awesome.min.css
index ec53d4d6..ec53d4d6 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/css/font-awesome.min.css
+++ b/common/src/main/webapp/thirdparty/font-awesome/css/font-awesome.min.css
diff --git a/common/src/main/webapp/thirdparty/font-awesome/fonts/FontAwesome.otf b/common/src/main/webapp/thirdparty/font-awesome/fonts/FontAwesome.otf
index 81c9ad94..81c9ad94 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/fonts/FontAwesome.otf
+++ b/common/src/main/webapp/thirdparty/font-awesome/fonts/FontAwesome.otf
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.eot b/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.eot
index 84677bc0..84677bc0 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.eot
+++ b/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.eot
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.svg b/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.svg
index d907b25a..d907b25a 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.svg
+++ b/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.svg
diff --git a/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.ttf b/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.ttf
index 96a3639c..96a3639c 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.ttf
+++ b/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.ttf
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.woff b/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.woff
index 628b6a52..628b6a52 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.woff
+++ b/common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.woff
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/font-awesome/less/bordered-pulled.less b/common/src/main/webapp/thirdparty/font-awesome/less/bordered-pulled.less
index 0c90eb56..0c90eb56 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/less/bordered-pulled.less
+++ b/common/src/main/webapp/thirdparty/font-awesome/less/bordered-pulled.less
diff --git a/common/src/main/webapp/thirdparty/font-awesome/less/core.less b/common/src/main/webapp/thirdparty/font-awesome/less/core.less
index 01d1910f..01d1910f 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/less/core.less
+++ b/common/src/main/webapp/thirdparty/font-awesome/less/core.less
diff --git a/common/src/main/webapp/thirdparty/font-awesome/less/fixed-width.less b/common/src/main/webapp/thirdparty/font-awesome/less/fixed-width.less
index 110289f2..110289f2 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/less/fixed-width.less
+++ b/common/src/main/webapp/thirdparty/font-awesome/less/fixed-width.less
diff --git a/common/src/main/webapp/thirdparty/font-awesome/less/font-awesome.less b/common/src/main/webapp/thirdparty/font-awesome/less/font-awesome.less
index 195fd46c..195fd46c 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/less/font-awesome.less
+++ b/common/src/main/webapp/thirdparty/font-awesome/less/font-awesome.less
diff --git a/common/src/main/webapp/thirdparty/font-awesome/less/icons.less b/common/src/main/webapp/thirdparty/font-awesome/less/icons.less
index b5c26c70..b5c26c70 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/less/icons.less
+++ b/common/src/main/webapp/thirdparty/font-awesome/less/icons.less
diff --git a/common/src/main/webapp/thirdparty/font-awesome/less/larger.less b/common/src/main/webapp/thirdparty/font-awesome/less/larger.less
index c9d64677..c9d64677 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/less/larger.less
+++ b/common/src/main/webapp/thirdparty/font-awesome/less/larger.less
diff --git a/common/src/main/webapp/thirdparty/font-awesome/less/list.less b/common/src/main/webapp/thirdparty/font-awesome/less/list.less
index 0b440382..0b440382 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/less/list.less
+++ b/common/src/main/webapp/thirdparty/font-awesome/less/list.less
diff --git a/common/src/main/webapp/thirdparty/font-awesome/less/mixins.less b/common/src/main/webapp/thirdparty/font-awesome/less/mixins.less
index b7bfadc7..b7bfadc7 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/less/mixins.less
+++ b/common/src/main/webapp/thirdparty/font-awesome/less/mixins.less
diff --git a/common/src/main/webapp/thirdparty/font-awesome/less/path.less b/common/src/main/webapp/thirdparty/font-awesome/less/path.less
index c5a69124..c5a69124 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/less/path.less
+++ b/common/src/main/webapp/thirdparty/font-awesome/less/path.less
diff --git a/common/src/main/webapp/thirdparty/font-awesome/less/rotated-flipped.less b/common/src/main/webapp/thirdparty/font-awesome/less/rotated-flipped.less
index f6ba8147..f6ba8147 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/less/rotated-flipped.less
+++ b/common/src/main/webapp/thirdparty/font-awesome/less/rotated-flipped.less
diff --git a/common/src/main/webapp/thirdparty/font-awesome/less/spinning.less b/common/src/main/webapp/thirdparty/font-awesome/less/spinning.less
index 6e1564e0..6e1564e0 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/less/spinning.less
+++ b/common/src/main/webapp/thirdparty/font-awesome/less/spinning.less
diff --git a/common/src/main/webapp/thirdparty/font-awesome/less/stacked.less b/common/src/main/webapp/thirdparty/font-awesome/less/stacked.less
index fc53fb0e..fc53fb0e 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/less/stacked.less
+++ b/common/src/main/webapp/thirdparty/font-awesome/less/stacked.less
diff --git a/common/src/main/webapp/thirdparty/font-awesome/less/variables.less b/common/src/main/webapp/thirdparty/font-awesome/less/variables.less
index ccf939d7..ccf939d7 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/less/variables.less
+++ b/common/src/main/webapp/thirdparty/font-awesome/less/variables.less
diff --git a/common/src/main/webapp/thirdparty/font-awesome/scss/_bordered-pulled.scss b/common/src/main/webapp/thirdparty/font-awesome/scss/_bordered-pulled.scss
index 9d3fdf3a..9d3fdf3a 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/scss/_bordered-pulled.scss
+++ b/common/src/main/webapp/thirdparty/font-awesome/scss/_bordered-pulled.scss
diff --git a/common/src/main/webapp/thirdparty/font-awesome/scss/_core.scss b/common/src/main/webapp/thirdparty/font-awesome/scss/_core.scss
index ca46d371..ca46d371 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/scss/_core.scss
+++ b/common/src/main/webapp/thirdparty/font-awesome/scss/_core.scss
diff --git a/common/src/main/webapp/thirdparty/font-awesome/scss/_fixed-width.scss b/common/src/main/webapp/thirdparty/font-awesome/scss/_fixed-width.scss
index b221c981..b221c981 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/scss/_fixed-width.scss
+++ b/common/src/main/webapp/thirdparty/font-awesome/scss/_fixed-width.scss
diff --git a/common/src/main/webapp/thirdparty/font-awesome/scss/_icons.scss b/common/src/main/webapp/thirdparty/font-awesome/scss/_icons.scss
index 8dc29394..8dc29394 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/scss/_icons.scss
+++ b/common/src/main/webapp/thirdparty/font-awesome/scss/_icons.scss
diff --git a/common/src/main/webapp/thirdparty/font-awesome/scss/_larger.scss b/common/src/main/webapp/thirdparty/font-awesome/scss/_larger.scss
index 41e9a818..41e9a818 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/scss/_larger.scss
+++ b/common/src/main/webapp/thirdparty/font-awesome/scss/_larger.scss
diff --git a/common/src/main/webapp/thirdparty/font-awesome/scss/_list.scss b/common/src/main/webapp/thirdparty/font-awesome/scss/_list.scss
index 7d1e4d54..7d1e4d54 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/scss/_list.scss
+++ b/common/src/main/webapp/thirdparty/font-awesome/scss/_list.scss
diff --git a/common/src/main/webapp/thirdparty/font-awesome/scss/_mixins.scss b/common/src/main/webapp/thirdparty/font-awesome/scss/_mixins.scss
index a139dfb3..a139dfb3 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/scss/_mixins.scss
+++ b/common/src/main/webapp/thirdparty/font-awesome/scss/_mixins.scss
diff --git a/common/src/main/webapp/thirdparty/font-awesome/scss/_path.scss b/common/src/main/webapp/thirdparty/font-awesome/scss/_path.scss
index fd21c351..fd21c351 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/scss/_path.scss
+++ b/common/src/main/webapp/thirdparty/font-awesome/scss/_path.scss
diff --git a/common/src/main/webapp/thirdparty/font-awesome/scss/_rotated-flipped.scss b/common/src/main/webapp/thirdparty/font-awesome/scss/_rotated-flipped.scss
index a3558fd0..a3558fd0 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/scss/_rotated-flipped.scss
+++ b/common/src/main/webapp/thirdparty/font-awesome/scss/_rotated-flipped.scss
diff --git a/common/src/main/webapp/thirdparty/font-awesome/scss/_spinning.scss b/common/src/main/webapp/thirdparty/font-awesome/scss/_spinning.scss
index 002c5d5c..002c5d5c 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/scss/_spinning.scss
+++ b/common/src/main/webapp/thirdparty/font-awesome/scss/_spinning.scss
diff --git a/common/src/main/webapp/thirdparty/font-awesome/scss/_stacked.scss b/common/src/main/webapp/thirdparty/font-awesome/scss/_stacked.scss
index aef74036..aef74036 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/scss/_stacked.scss
+++ b/common/src/main/webapp/thirdparty/font-awesome/scss/_stacked.scss
diff --git a/common/src/main/webapp/thirdparty/font-awesome/scss/_variables.scss b/common/src/main/webapp/thirdparty/font-awesome/scss/_variables.scss
index 669c307f..669c307f 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/scss/_variables.scss
+++ b/common/src/main/webapp/thirdparty/font-awesome/scss/_variables.scss
diff --git a/common/src/main/webapp/thirdparty/font-awesome/scss/font-awesome.scss b/common/src/main/webapp/thirdparty/font-awesome/scss/font-awesome.scss
index f300c092..f300c092 100644..100755
--- a/common/src/main/webapp/thirdparty/font-awesome/scss/font-awesome.scss
+++ b/common/src/main/webapp/thirdparty/font-awesome/scss/font-awesome.scss
diff --git a/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.eot b/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.eot
index eefc29f3..eefc29f3 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.eot
+++ b/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.eot
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.svg b/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.svg
index c6c7d6cc..c6c7d6cc 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.svg
+++ b/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.svg
diff --git a/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.ttf b/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.ttf
index 9b9eefc6..9b9eefc6 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.ttf
+++ b/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.ttf
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.woff b/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.woff
index 89423e13..89423e13 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.woff
+++ b/common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.woff
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.eot b/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.eot
index 84677bc0..84677bc0 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.eot
+++ b/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.eot
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.svg b/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.svg
index d907b25a..d907b25a 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.svg
+++ b/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.svg
diff --git a/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.ttf b/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.ttf
index 96a3639c..96a3639c 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.ttf
+++ b/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.ttf
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.woff b/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.woff
index 628b6a52..628b6a52 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.woff
+++ b/common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.woff
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.eot b/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.eot
index 0d76574d..0d76574d 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.eot
+++ b/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.eot
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.svg b/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.svg
index 55b094d6..55b094d6 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.svg
+++ b/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.svg
diff --git a/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.ttf b/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.ttf
index 90236619..90236619 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.ttf
+++ b/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.ttf
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.woff b/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.woff
index 986efed3..986efed3 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.woff
+++ b/common/src/main/webapp/thirdparty/fonts/fontomas-webfont.woff
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.eot b/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.eot
index e1d81867..e1d81867 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.eot
+++ b/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.eot
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.svg b/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.svg
index 9ce06d03..9ce06d03 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.svg
+++ b/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.svg
diff --git a/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.ttf b/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.ttf
index 75a6247f..75a6247f 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.ttf
+++ b/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.ttf
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.woff b/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.woff
index 2c20a73b..2c20a73b 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.woff
+++ b/common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.woff
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.eot b/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.eot
index b93a4953..b93a4953 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.eot
+++ b/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.eot
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.svg b/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.svg
index 94fb5490..94fb5490 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.svg
+++ b/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.svg
diff --git a/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.ttf b/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.ttf
index 1413fc60..1413fc60 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.ttf
+++ b/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.ttf
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.woff b/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.woff
index 9e612858..9e612858 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.woff
+++ b/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.woff
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.woff2 b/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.woff2
index 64539b54..64539b54 100644..100755
--- a/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.woff2
+++ b/common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.woff2
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/bower.json b/common/src/main/webapp/thirdparty/icheck/bower.json
new file mode 100755
index 00000000..a2b8288c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/bower.json
@@ -0,0 +1,42 @@
+{
+ "name": "iCheck",
+ "version": "1.0.2",
+ "description": "Highly customizable checkboxes and radio buttons (jQuery & Zepto)",
+ "keywords": [
+ "icheck",
+ "checkbox",
+ "radio",
+ "input",
+ "field",
+ "form",
+ "custom",
+ "replacement",
+ "accessibility",
+ "skins",
+ "ui",
+ "checked",
+ "disabled",
+ "indeterminate"
+ ],
+ "main": [
+ "./icheck.min.js"
+ ],
+ "dependencies": {
+ "jquery": ">=1.7"
+ },
+ "ignore": [
+ ".gitignore",
+ "CHANGELOG.md",
+ "README.md",
+ "demo/"
+ ],
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Damir Sultanov",
+ "email": "info@fronteed.com",
+ "homepage": "http://fronteed.com/"
+ }
+ ],
+ "homepage": "http://fronteed.com/iCheck/"
+}
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/Thumbs.db b/common/src/main/webapp/thirdparty/icheck/demo/css/Thumbs.db
new file mode 100755
index 00000000..fd773ef4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/Thumbs.db
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/banner.jpg b/common/src/main/webapp/thirdparty/icheck/demo/css/banner.jpg
new file mode 100755
index 00000000..64b8f143
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/banner.jpg
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/custom.css b/common/src/main/webapp/thirdparty/icheck/demo/css/custom.css
new file mode 100755
index 00000000..e1ed3b17
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/custom.css
@@ -0,0 +1,261 @@
+@import url("normalize.css");
+@font-face{font-family:'MontserratRegular';src:url("./montserrat-regular.eot");src:url("./montserrat-regular.eot?#iefix") format('embedded-opentype'),url("./montserrat-regular.woff") format('woff'),url("./montserrat-regular.ttf") format('truetype'),url("./montserrat-regular.svg#MontserratRegular") format('svg');font-style:normal;font-weight:normal}
+@font-face{font-family:'MontserratBold';src:url("./montserrat-bold.eot");src:url("./montserrat-bold.eot?#iefix") format('embedded-opentype'),url("./montserrat-bold.woff") format('woff'),url("./montserrat-bold.ttf") format('truetype'),url("./montserrat-bold.svg#MontserratBold") format('svg');font-style:normal;font-weight:bold}
+html,body{height:100%}
+body{font:14px/20px 'MontserratRegular',Helvetica,Arial,sans-serif;color:#222;background:#ebe7df url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAFZCAIAAAA96mnzAAACKklEQVR4Xn2VUW7kMAxD+QLf/1x7gv71LNwdKTLhZFtggMCwSVEUPdb3159/v0uSrM8HtGRZuoQk1R69J12o9ixJWvSnVyfLdbNw0XAXWe1fIL8BoqmNGiV/cHc9Gq4NXxLKHhteRyLpA28cl0SLdx0BckSWL4gkPlIVTg1nN9Ys3iyWI5AGDA5xOXB5BJaWmOw6KSLeU6+0P50QshQyEL2im/YMIL60dTSZ3RXenlkiJpMj8XPMAl1FtjMRW19NxzOE5VGWPVGrc7aSJgz1Y9ku57mpYSwn1h0ivFOXxoCKMCXiahbbZNIZR+tkphllPsomipCwb4GMkXTmPfVg40Jt2y4RQM/PqX5JTM4iiTN8Zz1XvbIAEEvoEW+3nxTLL3lB7t7J3WwyI7g5OVxKIeFEH4FIGLC9I+XqvSd4AxJM5O6WTPr54RAxLG44FVrEuz+kFdXyLiuX6kLPVLZL2ISlcHNlBIKm5rR8nEi9wJeA6Y8JZlJOyDiin0K5ag+AXHtALBicXasjIUu9h0STBbCMU+89gMnu/J05MU1QWqdbPMRPIZIzDgsi8Olg5t7wHhUg/pv5RUzO+BHDmczHkAfZWxlSYgNI5Ig5XRoc66dW9L45eHDkbkqCO7RLG5cna/HD7YhZnfINkFo8iNyj5kx6pFrxNGRlfhV2e1Zt5DnGU8T7Tud1ivi8jU8/3Zy88pkn6+zdXiJ7AVSFBZA3VcwDfXtt5UUHS38B35hQVuJip4MAAAAASUVORK5CYII=") repeat-x;*background-image:url("ie/header-line.png")}
+a{color:#222;text-decoration:none;border-bottom:1px solid #bbb;}
+a:hover{color:#000}
+a,.self{-webkit-transition:color .1s;-moz-transition:color .1s;-ms-transition:color .1s;-o-transition:color .1s;transition:color .1s}
+.self{color:#333;border-bottom:1px dotted #aaa;cursor:pointer;}
+.self:hover{color:#000}
+strong{font-family:'MontserratBold',Helvetica,Arial,sans-serif;font-weight:700}
+p{margin:0 0 8px}
+label{cursor:pointer}
+h1,h2,h3,h4{margin:0;font:bold 20px/60px 'MontserratBold',Helvetica,Arial,sans-serif}
+h2{height:60px;text-align:center;text-transform:uppercase}
+h4{font-size:18px;line-height:24px}
+ul{margin:0;padding:0;list-style:none}
+table{width:100%;margin-bottom:21px}
+th,td{padding:11px 20px 12px;vertical-align:top;font-weight:normal;text-align:left;border-bottom:2px solid #e7e5e0;}
+thead th,thead td{background:#f3f2ef}
+th{white-space:nowrap}
+td{width:100%}
+.focus{outline:1px dotted rgba(0,0,0,0.5) !important}
+.clear{position:relative;*zoom:1;}
+.clear:before,.clear:after{content:'';display:table;clear:both}
+.layout{width:930px;margin:0 auto;padding:0 15px}
+.header{padding:115px 0 73px;color:#fff;text-align:center;}
+.header h1,.header strong{letter-spacing:-1px;text-transform:uppercase}
+.header h1{padding-bottom:23px;font-size:22px;line-height:28px}
+.header h3{position:relative;padding:35px 0 17px;font-size:120px;line-height:140px;letter-spacing:-5px;}
+.header h3 span{font-size:30px;line-height:40px;letter-spacing:0;margin-left:-10px;vertical-align:baseline;}
+.header h3:before{content:'';display:inline-block;width:72px;height:64px;margin-right:32px;vertical-align:middle;background:url("icheck.png")}
+.header h3:after{content:'';position:absolute;top:0;left:50%;width:100px;margin-left:-50px;border-top:3px solid #fff}
+.header strong{font:24px/30px 'MontserratRegular',Helvetica,Arial,sans-serif;}
+.header strong a{color:#fff;border-bottom-color:#fff}
+.features{position:relative;font-size:16px;color:#555;background:#fff;}
+.features .self{color:#555;border-bottom-color:#bbb;}
+.features .self:hover{color:#222}
+.features .arrows{top:0}
+.features:hover .arrows .bottom{left:0}
+.features h2{color:#fff;background:#2489c5}
+.features ul{padding:44px 60px 36px}
+.features li{padding:0 0 9px 36px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABI0lEQVR4XpXSP0vDUBjF4ZtLkIr4EYzduogdXJTWWV2FLMVNoQrdAhlUUFAEcejo1q13svgFBAUdxA/g30kcdQoIIlL9DWcKuZEeeOCl99w3gTSI49h4MoFb/KCJz6KShS/rOh/TbEZZECLBiSQIR1nQQgAnAVr/LZjEnIq76OJbutjRGR26isUB3pDhBikucWoUzVdI1cl05zBk2MI5jvCKIfL5QluzxTS20bY6WENdl0ujTl13Ni3DABtwWEFp1HG6M7Aq9NHBGRbgy7w6HfTzX6GHCyyXPV2dnu9/MIUX+PIMOkRsbq7hHkZmxciDOrZoQRUVPCGCw504RDobR7VoQQ0f2Mejls1IRb/t4R10CcLc6/2igSVcw8gqFnEMOnSVPxQqQaPw2y7fAAAAAElFTkSuQmCC") 0 1px no-repeat;*background-image:url("ie/icon-star.png");}
+.features li.offset{margin-top:20px}
+.mark{padding:0 2px;color:#777;background:#e7e5e0;}
+.skin-polaris .mark{background:#232830}
+.skin-futurico .mark{background:#25262a}
+.social{height:60px;margin-bottom:60px;padding:0 60px;font-size:16px;color:#555;background:#f5f3ef;}
+.social a{color:#777;border-bottom-color:#ccc;}
+.social a:hover{color:#444}
+.social .left{float:left;padding-top:19px;}
+.social .left li{float:left;padding-right:30px;}
+.social .left li a{position:relative}
+.social .right{float:right;padding-top:20px;}
+.social .right li{float:right;padding-left:10px}
+.social .right.local{padding-top:19px;}
+.social .right.local li{padding-left:30px;font-size:14px}
+.demo-holder{margin-bottom:97px}
+.demo-title{padding-bottom:36px;font-size:26px;letter-spacing:-1px}
+.demo{position:relative;}
+.demo:hover .arrows .top,.demo:hover .arrows .bottom{left:0}
+.demo-list{position:relative;margin-right:360px;padding:33px 57px 17px;color:#555;background:#fff;border:3px solid #ddd8ce;}
+.demo-list ul{float:right;white-space:nowrap;}
+.demo-list ul:first-child{float:left}
+.demo-list ul li{position:relative;padding:0 0 18px 42px}
+.demo-list ul input{position:absolute;top:4px;left:0}
+.demo-list ul .icheckbox_square-blue,.demo-list ul .iradio_square-blue{position:absolute;top:-1px;left:0}
+.demo-list ul span{color:#bbb}
+.demo-methods{padding:21px 360px 0 0;}
+.demo-methods .mark{background:#d3cfc6}
+.demo-methods dt{position:relative;padding:17px 150px 18px 0;font:16px/24px 'MontserratRegular',Helvetica,Arial,sans-serif;color:#444;border-bottom:3px solid #ddd8ce;}
+.demo-methods dt .self{cursor:pointer;}
+.demo-methods dt .self:hover{color:#222}
+.demo-methods dt .code{position:absolute;right:0;bottom:18px;color:#777;}
+.demo-methods dt .code .self:hover{color:#444}
+.demo-methods dd{position:relative;display:none;margin:0;background:#fff;border:3px solid #ddd8ce;border-top:none;}
+.demo-methods dd:before{content:'';position:absolute;top:-13px;left:0;width:0;height:0;border:5px solid transparent;border-bottom-color:#ddd8ce;border-left-color:#ddd8ce}
+.demo-methods dd .markup{margin:0;color:#888;background:#f5f3ef;border:none;}
+.demo-methods dd .markup .comment{color:#aaa}
+.demo-callbacks{position:absolute;top:0;right:0;bottom:0;width:300px;color:#aaa;background:#232323;border:3px solid #ddd8ce;}
+.demo-callbacks h2{color:#fff;background:#6a5a8c}
+.demo-callbacks ul{position:absolute;top:60px;width:100%;bottom:0;overflow:auto;}
+.demo-callbacks ul::-webkit-scrollbar{width:10px;background:none;}
+.demo-callbacks ul::-webkit-scrollbar-track{background:none;border:none;}
+.demo-callbacks ul::-webkit-scrollbar-track-piece:disabled{display:none !important;}
+.demo-callbacks ul::-webkit-scrollbar-thumb{background:rgba(255,255,255,.25);border:none;}
+.demo-callbacks ul::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.3);}
+.demo-callbacks ul li{margin-top:-1px;padding:13px 20px 15px;border-top:1px solid #2e2e2e;}
+.demo-callbacks ul li span{color:#888}
+.skins{position:relative;*zoom:1;}
+.skins h2{position:absolute;top:-38px;right:0;left:0;font-size:24px;text-align:center}
+.arrows{position:absolute;top:3px;left:-60px;width:60px;overflow:hidden;}
+.arrows .top,.arrows .bottom{position:relative;left:60px;width:60px;height:60px;cursor:pointer;-webkit-transition:left .3s,background-color .2s;-moz-transition:left .3s,background-color .2s;-ms-transition:left .3s,background-color .2s;-o-transition:left .3s,background-color .2s;transition:left .3s,background-color .2s}
+.arrows .top{background:#83b3be url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAdklEQVR4Xo3MuwmFQBiE0b0FmAuutnRBsAARLMTYRzvWItiEYLq/s6CYyMwGXzTDcWbG8mhEf/ZjQIV2ZCigjiASMAVJIAVKAQ4FKWBDJVoYpAB/7z8GRaAQgBNQG8dZA28f0BmHBgUCKGh9hhpNKH8BWY8GlF2OH3hCC1zmdAAAAABJRU5ErkJggg==") 50% no-repeat;*background-image:url("ie/arrow-top.png");}
+.arrows .top:hover{background-color:#6ba4b1}
+.arrows .bottom{background:#e2b78d url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAf0lEQVR4Xo3MzQmEQBCE0TGAvQuOpiQIBiCCgXj2J52NRTAJwev0Vh+WOgjlNHyHguYFM/M6tKLSd2YTmtHHR48S8jtQzAB2430d2bgJvQLsdqRCZwZUPAFLaPjrjYAUMKLgwBtUK4CIhi4BEFGQBohISANEJKQBIqqIFtSqvx/0bXhCCUrgiAAAAABJRU5ErkJggg==") 50% no-repeat;*background-image:url("ie/arrow-bottom.png");}
+.arrows .bottom:hover{background-color:#dba571}
+@media screen and (max-width:1049px){.arrows,.fork-me{display:none}
+}.skin{position:relative;margin-bottom:40px;}
+.skin:hover .arrows .top,.skin:hover .arrows .bottom{left:0}
+.skin h3{position:relative;z-index:20;float:left;height:60px;padding:0 57px;line-height:58px;background:#fff;border:3px solid #ddd8ce;border-bottom:none;}
+.skin h3:before{content:'';position:absolute;top:100%;left:0;width:100%;height:2px;margin-top:-1px;background:#fff}
+.skin.skin-polaris h3{color:#cacdd1;background:#2c323c;}
+.skin.skin-polaris h3:before{background:#2c323c}
+.skin.skin-futurico h3{color:#c3c3c3;background:#2e3035;}
+.skin.skin-futurico h3:before{background:#2e3035}
+.skin dl{z-index:10;width:100%;margin:0}
+.skin dt{position:relative;top:-53px;right:-3px;float:right;height:47px;margin-right:-3px;padding:0 57px;line-height:47px;border:3px solid #ddd8ce;cursor:pointer;}
+.skin dt:hover{background:#f0ede7;border-bottom:3px solid #ddd8ce}
+.skin dt.selected{height:50px;background:#fff;border-bottom:none;cursor:default;}
+.skin dt.selected:before{content:'';position:absolute;top:100%;left:0;width:100%;height:2px;margin-top:-1px;background:#fff}
+.skin.skin-polaris dt{color:#cacdd1;background:#647083;}
+.skin.skin-polaris dt:hover{background:#4a5361}
+.skin.skin-polaris dt.selected{background:#2c323c;}
+.skin.skin-polaris dt.selected:before{background:#2c323c}
+.skin.skin-futurico dt{color:#c3c3c3;background:#676c77;}
+.skin.skin-futurico dt:hover{background:#4b4e56}
+.skin.skin-futurico dt.selected{background:#2e3035;}
+.skin.skin-futurico dt.selected:before{background:#2e3035}
+.skin dd{position:relative;display:none;float:left;width:100%;margin:-3px -100% 0 0;overflow:hidden;color:#444;background:#fff;border:3px solid #ddd8ce;}
+.skin dd.selected{display:block}
+.skin dd a{color:#444;}
+.skin dd a:hover{color:#111}
+.skin.skin-polaris dd{color:#7a828b;background:#2c323c;}
+.skin.skin-polaris dd a{color:#7a828b;border-bottom-color:#4e596b;}
+.skin.skin-polaris dd a:hover{color:#a2a7ae}
+.skin.skin-futurico dd{color:#888;background:#2e3035;}
+.skin.skin-futurico dd a{color:#888;border-bottom-color:#545861;}
+.skin.skin-futurico dd a:hover{color:#aaa}
+.skin-section{float:left;padding:42px 0 31px 57px;line-height:18px;}
+.skin-section h4{padding-bottom:18px;}
+.skin-polaris .skin-section h4{color:#959ba2}
+.skin-futurico .skin-section h4{color:#a0a0a0}
+.skin-section .list{float:left;padding-right:60px;}
+.skin-section .list li{position:relative;padding-bottom:15px}
+.skin-minimal .skin-section .list li{padding-left:38px}
+.skin-square .skin-section .list li{padding-left:42px}
+.skin-flat .skin-section .list li,.skin-line .skin-section label{padding-left:40px}
+.skin-line .skin-section h4{padding-bottom:24px}
+.skin-line .skin-section .list{padding-right:40px;}
+.skin-line .skin-section .list li{padding-bottom:10px}
+.skin-polaris .skin-section .list li{padding-left:37px}
+.skin-futurico .skin-section .list li{padding-left:36px}
+.icheckbox_minimal,.icheckbox_minimal-red,.icheckbox_minimal-green,.icheckbox_minimal-blue,.icheckbox_minimal-aero,.icheckbox_minimal-grey,.icheckbox_minimal-orange,.icheckbox_minimal-yellow,.icheckbox_minimal-pink,.icheckbox_minimal-purple,.iradio_minimal,.iradio_minimal-red,.iradio_minimal-green,.iradio_minimal-blue,.iradio_minimal-aero,.iradio_minimal-grey,.iradio_minimal-orange,.iradio_minimal-yellow,.iradio_minimal-pink,.iradio_minimal-purple{position:absolute;top:1px;left:0}
+.skin input[type=checkbox],.skin input[type=radio]{position:absolute;top:2px;left:0}
+.icheckbox_square,.icheckbox_square-red,.icheckbox_square-green,.icheckbox_square-blue,.icheckbox_square-aero,.icheckbox_square-grey,.icheckbox_square-orange,.icheckbox_square-yellow,.icheckbox_square-pink,.icheckbox_square-purple,.iradio_square,.iradio_square-red,.iradio_square-green,.iradio_square-blue,.iradio_square-aero,.iradio_square-grey,.iradio_square-orange,.iradio_square-yellow,.iradio_square-pink,.iradio_square-purple{position:absolute;top:-1px;left:0}
+.icheckbox_flat,.icheckbox_flat-red,.icheckbox_flat-green,.icheckbox_flat-blue,.icheckbox_flat-aero,.icheckbox_flat-grey,.icheckbox_flat-orange,.icheckbox_flat-yellow,.icheckbox_flat-pink,.icheckbox_flat-purple,.iradio_flat,.iradio_flat-red,.iradio_flat-green,.iradio_flat-blue,.iradio_flat-aero,.iradio_flat-grey,.iradio_flat-orange,.iradio_flat-yellow,.iradio_flat-pink,.iradio_flat-purple{position:absolute;top:0;left:0}
+.icheckbox_polaris,.iradio_polaris{position:absolute;top:-4px;left:-6px}
+.icheckbox_futurico,.iradio_futurico{position:absolute;top:2px;left:0}
+.skin-states{float:right;padding-right:57px;padding-left:0;}
+.skin-states .state{cursor:default !important}
+.skin-states .list{padding-right:0}
+.skin-minimal .skin-states .list li{padding-left:71px}
+.skin-square .skin-states .list li{padding-left:79px}
+.skin-flat .skin-states .list li{padding-left:75px}
+.skin-line .skin-states .list{padding-right:0}
+.skin-polaris .skin-states .list li{padding-left:69px}
+.skin-futurico .skin-states .list li{padding-left:67px}
+.skin-states .iradio_minimal,.skin-states .iradio_minimal-red,.skin-states .iradio_minimal-green,.skin-states .iradio_minimal-blue,.skin-states .iradio_minimal-aero,.skin-states .iradio_minimal-grey,.skin-states .iradio_minimal-orange,.skin-states .iradio_minimal-yellow,.skin-states .iradio_minimal-pink,.skin-states .iradio_minimal-purple{left:33px}
+.skin-states .iradio_square,.skin-states .iradio_square-red,.skin-states .iradio_square-green,.skin-states .iradio_square-blue,.skin-states .iradio_square-aero,.skin-states .iradio_square-grey,.skin-states .iradio_square-orange,.skin-states .iradio_square-yellow,.skin-states .iradio_square-pink,.skin-states .iradio_square-purple{left:37px}
+.skin-states .iradio_flat,.skin-states .iradio_flat-red,.skin-states .iradio_flat-green,.skin-states .iradio_flat-blue,.skin-states .iradio_flat-aero,.skin-states .iradio_flat-grey,.skin-states .iradio_flat-orange,.skin-states .iradio_flat-yellow,.skin-states .iradio_flat-pink,.skin-states .iradio_flat-purple{left:35px}
+.skin-states .iradio_polaris{left:26px}
+.skin-states .iradio_futurico{left:31px}
+.colors{clear:both;padding:24px 0 9px;}
+.skin-line .colors{padding-top:28px}
+.colors strong{float:left;line-height:20px;margin-right:20px}
+.colors li{position:relative;float:left;width:16px;height:16px;margin:2px 1px 0 0;background:#000;cursor:pointer;filter:alpha(opacity=50);opacity:.5;-webkit-transition:opacity .2s;-moz-transition:opacity .2s;-ms-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s;}
+.colors li:hover{filter:alpha(opacity=100);opacity:1}
+.colors li.active{height:20px;margin-top:0;filter:alpha(opacity=75);opacity:.75}
+.colors li.red{background:#d54e21}
+.colors li.green{background:#78a300}
+.colors li.blue{background:#0e76a8}
+.colors li.aero{background:#9cc2cb}
+.colors li.grey{background:#73716e}
+.colors li.orange{background:#f70}
+.colors li.yellow{background:#fc0}
+.colors li.pink{background:#ff66b5}
+.colors li.purple{background:#6a5a8c}
+.skin-square .colors li.red{background:#e56c69}
+.skin-square .colors li.green{background:#1b7e5a}
+.skin-square .colors li.blue{background:#2489c5}
+.skin-square .colors li.aero{background:#9cc2cb}
+.skin-square .colors li.grey{background:#73716e}
+.skin-square .colors li.yellow{background:#fc3}
+.skin-square .colors li.pink{background:#a77a94}
+.skin-square .colors li.purple{background:#6a5a8c}
+.skin-square .colors li.orange{background:#f70}
+.skin-flat .colors li.red{background:#ec7063}
+.skin-flat .colors li.green{background:#1abc9c}
+.skin-flat .colors li.blue{background:#3498db}
+.skin-flat .colors li.grey{background:#95a5a6}
+.skin-flat .colors li.orange{background:#f39c12}
+.skin-flat .colors li.yellow{background:#f1c40f}
+.skin-flat .colors li.pink{background:#af7ac5}
+.skin-flat .colors li.purple{background:#8677a7}
+.skin-line .colors li.yellow{background:#ffc414}
+.skins-info{padding:13px 0 57px;font-size:16px;line-height:22px;text-align:center;}
+.skins-info p{margin-bottom:17px}
+.skins-info .skins-banner{margin:34px 0 3px;}
+.skins-info .skins-banner a{display:block;width:728px;height:90px;margin:0 auto;overflow:hidden;text-indent:100%;white-space:nowrap;background:url(banner.jpg);-webkit-transition:opacity 0.4s ease;-moz-transition:opacity 0.4s ease;-o-transition:opacity 0.4s ease;transition:opacity 0.4s ease;border:none;}
+.skins-info .skins-banner a:hover{opacity:.8;}
+.skin-pre{padding:43px 60px 0}
+.skin-usage{padding:19px 60px 8px;list-style:decimal outside;}
+.skin-usage li{margin-bottom:23px}
+.skin-usage .schemes{margin-bottom:-3px;padding:13px 0 0 20px;color:#888;}
+.skin-usage .schemes ul{float:left;padding-right:60px}
+.skin-usage .schemes li{margin:0;padding-bottom:3px}
+.usage{position:relative;margin-bottom:80px;background:#fff;}
+.usage a{border-bottom-color:#ddd}
+.usage .self{border-bottom-color:#bbb}
+.usage .arrows{top:0}
+.usage:hover .arrows .top,.usage:hover .arrows .bottom{left:0}
+.usage h2{color:#fff;background:#1f7f5c}
+.usage h4{margin:26px 0 10px;}
+.usage h4.indeterminate{margin-top:28px}
+.usage p{margin-bottom:5px;}
+.usage p.offset{margin-top:10px}
+.usage p.callbacks-info{margin-bottom:19px}
+.usage p.methods-info{margin-bottom:10px}
+.usage p.methods-callback{margin-top:10px}
+.usage p.issue-tracker{margin-top:31px}
+.usage .markup{margin:9px 0 16px}
+.usage .usage-inner{font-size:15px;line-height:23px;padding:41px 60px 39px}
+.markup{margin:10px 0 18px;padding:8px 0 9px 17px;font:14px/20px 'MontserratRegular',Helvetica,Arial,sans-serif;color:#777;background:#e7e5e0;border-left:3px solid #d7d5cb;}
+.markup .comment{color:#999;}
+.markup .comment .self{color:#555;}
+.markup .comment .self:hover{color:#333}
+.skin-polaris .markup{background:#232830;border-left-color:#1f232a}
+.skin-futurico .markup{background:#25262a;border-left-color:#202225}
+.skin-polaris .markup .comment,.skin-futurico .markup .comment{color:#555}
+.browsers{margin-bottom:74px;}
+.browsers h2{margin-bottom:29px;font-size:24px}
+.browsers-inner{padding:0 60px;font-size:15px;line-height:23px;}
+.browsers-inner p{margin-bottom:15px}
+.benefits{position:relative;margin-bottom:59px;color:#888;background:#232323;}
+.benefits .arrows{top:0}
+.benefits:hover .arrows .top,.benefits:hover .arrows .bottom{left:0}
+.benefits h2{color:#fff;background:#6a5b8c}
+.benefits a{color:#888;border-bottom-color:#444;}
+.benefits a:hover{color:#aaa}
+.benefits .mark{color:#777;background:#393939}
+.benefits-inner{padding:41px 60px 29px;font-size:15px;line-height:23px;}
+.benefits-inner p{margin-bottom:15px}
+.benefits-inner ul{margin:-10px 0 15px}
+.download{height:63px;text-align:center;}
+.download a{display:block;height:60px;font-size:18px;line-height:58px;color:#fff;border-bottom:0 solid #e24f49;background:#e76b66;-webkit-transition:border-bottom .2s;-moz-transition:border-bottom .2s;-ms-transition:border-bottom .2s;-o-transition:border-bottom .2s;transition:border-bottom .2s;}
+.download a:before{content:'';display:inline-block;width:26px;height:26px;margin-right:12px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAACYUlEQVR4Xr3VPWhTURjH4VOt0ES7ZRJbEJpsNsaimx9E0GpRCdgU/NhsRAdNBYcK0RirQcSkIIK2cRBRiragVayDhqBDLVWatFvsIKK2UMEp4KBcf8N/KNdwvcHWAw8c/rzvebk5yU2dZVnmf6wVNdb70Ca+5Rrkx0e8E/ZkyzCoAyuxBZu17/jXQV34jjwCytowjUk90Ywyo5q8errcDoriPgpoRhEj6MQrGHmpbARF1RbUG3Uz6Bae4iBacQNNSKEPRi4pa1JNq3pGcds+qNrXu4B1CKKCWtZqlPAZO/72RDGsRdKWh5ATIdOSpHpjbu6ojBfYBiPdOIQeHJMeZd0wsh1jKDsNakEc97AHo8o3IYCz2I1nGMYuZQHVGPXs1RlxtNgH+TCFtBpvIqua40ghqkGdOIp27VOqMcigX8PTKIKzWXwZDDbAQhDG5o6yx2iAkQY80T4HYxOEpbP/uCOnN+wq1Nlq6x3qrWp3NIcKJvAWV+FVzU804i6uwyNZZY34BaOeyzpjQmfOLR70DSGcwyxOIa7mAZzHQ+QxLHllCdUYnMYZzOqsjeBsPbp8QFZ7Lw7gCt4jhGu4qCEGa5SVVWPUM4Yjbn5HfrTjNYzk8AAZ5CSjbBBG3qjXr0CqX+YAviJpy6cQg9NKIoJBN6+gIGbwA16kMY5eeGDEo2xcNV71TCPo5qM7iX14hJIueB4XkICRhLJ51ZTUsx8n3AwawmGE8QUhRDR4J4yElUUQUm1YvUPOfxPO4khj66KL70W/m+Z6uF3P0YdJBRVlZqkHlbEezQo+YWHJB8mC1Lx+Ayeq7nRIoewwAAAAAElFTkSuQmCC");*background-image:url("ie/icon-options.png");vertical-align:middle}
+.download a:hover{border-bottom-width:3px}
+.license{color:#444;text-align:center;padding:30px 0 75px}
+.footer{padding-top:28px;height:60px;color:#666;background:#e2dfd8;}
+.footer ul{float:left;}
+.footer ul li{float:left;padding:2px 10px 0 0}
+.footer ul.local li{padding:0 30px 0 0}
+.footer .code{float:right}
+.footer a{color:#444;}
+.footer a:hover{color:#222}
+.footer-inner{width:930px;margin:0 auto;overflow:hidden}
+.fork-me{position:fixed;*position:absolute;top:0;right:0;width:40px;height:40px;overflow:hidden;text-indent:100%;white-space:nowrap;background:#28545b url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAnElEQVR4XqVSgQmEMAyszw/gCI7wK7iBblBHcISfxG6gG/gjuIGO0A3ygaYQCCG2HhweF+6aShsAcDcBJBpuvlwFagqGJwUf5EL6kgV2eEe2yIgc9QI73CMPs8AOywI7nHDSzCxYxcnJ6+hrFnQkJrb2nGclP3Fj+vf0IUV1AgCZHiS86lOObxD4qqSD5mtXmAq1e2fB3vqXact3f/JmXumJlVq1AAAAAElFTkSuQmCC") 50% no-repeat;*background-image:url("ie/icon-fork.png");}
+.fork-me:hover{background-color:#1f7f5c}
+.skin dt,.fork-me{-webkit-transition:background-color .2s;-moz-transition:background-color .2s;-ms-transition:background-color .2s;-o-transition:background-color .2s;transition:background-color .2s}
+
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/custom.styl b/common/src/main/webapp/thirdparty/icheck/demo/css/custom.styl
new file mode 100755
index 00000000..7f66121a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/custom.styl
@@ -0,0 +1,1191 @@
+/* Reset
+----------------------------------- */
+@import url("normalize.css")
+
+
+/* Fonts
+----------------------------------- */
+$font = 'MontserratRegular'
+$fontBold = 'MontserratBold'
+$stack = $font, Helvetica, Arial, sans-serif
+$stackBold = $fontBold, Helvetica, Arial, sans-serif
+
+@font-face
+ font-family $font
+ src url('./montserrat-regular.eot')
+ src url('./montserrat-regular.eot?#iefix') format('embedded-opentype'),
+ url('./montserrat-regular.woff') format('woff'),
+ url('./montserrat-regular.ttf') format('truetype'),
+ url('./montserrat-regular.svg#' + $font + '') format('svg')
+ font-style normal
+ font-weight normal
+
+@font-face
+ font-family $fontBold
+ src url('./montserrat-bold.eot')
+ src url('./montserrat-bold.eot?#iefix') format('embedded-opentype'),
+ url('./montserrat-bold.woff') format('woff'),
+ url('./montserrat-bold.ttf') format('truetype'),
+ url('./montserrat-bold.svg#' + $fontBold + '') format('svg')
+ font-style normal
+ font-weight bold
+
+
+/* Demo
+----------------------------------- */
+html
+body
+ height 100%
+
+body
+ font 14px/20px $stack
+ color #222
+ background #ebe7df url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAFZCAIAAAA96mnzAAACKklEQVR4Xn2VUW7kMAxD+QLf/1x7gv71LNwdKTLhZFtggMCwSVEUPdb3159/v0uSrM8HtGRZuoQk1R69J12o9ixJWvSnVyfLdbNw0XAXWe1fIL8BoqmNGiV/cHc9Gq4NXxLKHhteRyLpA28cl0SLdx0BckSWL4gkPlIVTg1nN9Ys3iyWI5AGDA5xOXB5BJaWmOw6KSLeU6+0P50QshQyEL2im/YMIL60dTSZ3RXenlkiJpMj8XPMAl1FtjMRW19NxzOE5VGWPVGrc7aSJgz1Y9ku57mpYSwn1h0ivFOXxoCKMCXiahbbZNIZR+tkphllPsomipCwb4GMkXTmPfVg40Jt2y4RQM/PqX5JTM4iiTN8Zz1XvbIAEEvoEW+3nxTLL3lB7t7J3WwyI7g5OVxKIeFEH4FIGLC9I+XqvSd4AxJM5O6WTPr54RAxLG44FVrEuz+kFdXyLiuX6kLPVLZL2ISlcHNlBIKm5rR8nEi9wJeA6Y8JZlJOyDiin0K5ag+AXHtALBicXasjIUu9h0STBbCMU+89gMnu/J05MU1QWqdbPMRPIZIzDgsi8Olg5t7wHhUg/pv5RUzO+BHDmczHkAfZWxlSYgNI5Ig5XRoc66dW9L45eHDkbkqCO7RLG5cna/HD7YhZnfINkFo8iNyj5kx6pFrxNGRlfhV2e1Zt5DnGU8T7Tud1ivi8jU8/3Zy88pkn6+zdXiJ7AVSFBZA3VcwDfXtt5UUHS38B35hQVuJip4MAAAAASUVORK5CYII=") repeat-x
+ *background-image url(ie/header-line.png)
+
+a
+ color #222
+ text-decoration none
+ border-bottom 1px solid #bbb
+
+ &:hover
+ color #000
+
+a
+.self
+ -webkit-transition color .1s
+ -moz-transition color .1s
+ -ms-transition color .1s
+ -o-transition color .1s
+ transition color .1s
+
+.self
+ color #333
+ border-bottom 1px dotted #aaa
+ cursor pointer
+
+ &:hover
+ color #000
+
+strong
+ font-family $stackBold
+ font-weight 700
+
+p
+ margin 0 0 8px
+
+label
+ cursor pointer
+
+h1
+h2
+h3
+h4
+ margin 0
+ font bold 20px/60px $stackBold
+
+h2
+ height 60px
+ text-align center
+ text-transform uppercase
+
+h4
+ font-size 18px
+ line-height 24px
+
+ul
+ margin 0
+ padding 0
+ list-style none
+
+table
+ width 100%
+ margin-bottom 21px
+
+th
+td
+ padding 11px 20px 12px
+ vertical-align top
+ font-weight normal
+ text-align left
+ border-bottom 2px solid #E7E5E0
+
+ thead &
+ background lighten(#E7E5E0, 50%)
+
+th
+ white-space nowrap
+
+td
+ width 100%
+
+.focus
+ outline 1px dotted rgba(0,0,0,.5) !important
+
+.clear
+ position relative
+ *zoom 1
+
+ &:before
+ &:after
+ content ''
+ display table
+ clear both
+
+.layout
+ width 930px
+ margin 0 auto
+ padding 0 15px
+
+.header
+ padding 115px 0 73px
+ color #fff
+ text-align center
+
+ h1
+ strong
+ letter-spacing -1px
+ text-transform uppercase
+
+ h1
+ padding-bottom 23px
+ font-size 22px
+ line-height 28px
+
+ h3
+ position relative
+ padding 35px 0 17px
+ font-size 120px
+ line-height 140px
+ letter-spacing -5px
+
+ &:before
+ content ''
+ display inline-block
+ width 72px
+ height 64px
+ margin-right 32px
+ vertical-align middle
+ background url(icheck.png)
+
+ &:after
+ content ''
+ position absolute
+ top 0
+ left 50%
+ width 100px
+ margin-left -50px
+ border-top 3px solid #fff
+
+ strong
+ font 24px/30px $stack
+
+ a
+ color #fff
+ border-bottom-color #fff
+
+.features
+ position relative
+ font-size 16px
+ color #555
+ background #fff
+
+ .self
+ color #555
+ border-bottom-color #bbb
+
+ &:hover
+ color #222
+
+ .arrows
+ top 0
+
+ &:hover .arrows .bottom
+ left 0
+
+ h2
+ color #fff
+ background #2489c5
+
+ ul
+ padding 44px 60px 36px
+
+ li
+ padding 0 0 9px 36px
+ background url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABI0lEQVR4XpXSP0vDUBjF4ZtLkIr4EYzduogdXJTWWV2FLMVNoQrdAhlUUFAEcejo1q13svgFBAUdxA/g30kcdQoIIlL9DWcKuZEeeOCl99w3gTSI49h4MoFb/KCJz6KShS/rOh/TbEZZECLBiSQIR1nQQgAnAVr/LZjEnIq76OJbutjRGR26isUB3pDhBikucWoUzVdI1cl05zBk2MI5jvCKIfL5QluzxTS20bY6WENdl0ujTl13Ni3DABtwWEFp1HG6M7Aq9NHBGRbgy7w6HfTzX6GHCyyXPV2dnu9/MIUX+PIMOkRsbq7hHkZmxciDOrZoQRUVPCGCw504RDobR7VoQQ0f2Mejls1IRb/t4R10CcLc6/2igSVcw8gqFnEMOnSVPxQqQaPw2y7fAAAAAElFTkSuQmCC") 0 1px no-repeat
+ *background-image url(ie/icon-star.png)
+
+ &.offset
+ margin-top 20px
+
+.mark
+ padding 0 2px
+ color lighten(#555, 20%)
+ background lighten(#d7d4cc, 40%)
+
+ .skin-polaris &
+ background darken(#2C323C, 20%)
+
+ .skin-futurico &
+ background darken(#2E3035, 20%)
+
+.social
+ height 60px
+ margin-bottom 60px
+ padding 0 60px
+ font-size 16px
+ color #555
+ background lighten(#EBE7DF, 50%)
+
+ a
+ color #777
+ border-bottom-color #ccc
+
+ &:hover
+ color #444
+
+ .left
+ float left
+ padding-top 19px
+
+ li
+ float left
+ padding-right 30px
+
+ a
+ position relative
+
+ .right
+ float right
+ padding-top 20px
+
+ li
+ float right
+ padding-left 10px
+
+ &.local
+ padding-top 19px
+
+ li
+ padding-left 30px
+ font-size 14px
+
+.demo-holder
+ margin-bottom 97px
+
+.demo-title
+ padding-bottom 36px
+ font-size 26px
+ letter-spacing -1px
+
+.demo
+ position relative
+
+ &:hover .arrows .top
+ &:hover .arrows .bottom
+ left 0
+
+.demo-list
+ position relative
+ margin-right 360px
+ padding 33px 57px 17px
+ color #555
+ background #fff
+ border 3px solid #ddd8ce
+
+ ul
+ float right
+ white-space nowrap
+
+ &:first-child
+ float left
+
+ li
+ position relative
+ padding 0 0 18px 42px
+
+ input
+ position absolute
+ top 4px
+ left 0
+
+ .icheckbox_square-blue
+ .iradio_square-blue
+ position absolute
+ top -1px
+ left 0
+
+ span
+ color #bbb
+
+.demo-methods
+ padding 21px 360px 0 0
+
+ .mark
+ background darken(#e7e5e0, 10%)
+
+ dt
+ position relative
+ padding 17px 150px 18px 0
+ font 16px/24px $stack
+ color #444
+ border-bottom 3px solid #ddd8ce
+
+ .self
+ cursor pointer
+
+ &:hover
+ color #222
+
+ .code
+ position absolute
+ right 0
+ bottom 18px
+ color #777
+
+ .self:hover
+ color #444
+
+ dd
+ position relative
+ display none
+ margin 0
+ background #fff
+ border 3px solid #ddd8ce
+ border-top none
+
+ &:before
+ content ''
+ position absolute
+ top -13px
+ left 0
+ width 0
+ height 0
+ border 5px solid transparent
+ border-bottom-color #ddd8ce
+ border-left-color #ddd8ce
+
+ .markup
+ margin 0
+ color #888
+ background lighten(#ebe7df, 50%)
+ border none
+
+ .comment
+ color #aaa
+
+.demo-callbacks
+ position absolute
+ top 0
+ right 0
+ bottom 0
+ width 300px
+ color #aaa
+ background #232323
+ border 3px solid #ddd8ce
+
+ h2
+ color #fff
+ background #6a5a8c
+
+ ul
+ position absolute
+ top 60px
+ width 100%
+ bottom 0
+ overflow auto
+
+ li
+ margin-top -1px
+ padding 13px 20px 15px
+ border-top 1px solid #2e2e2e
+
+ span
+ color #888
+
+.skins
+ position relative
+ *zoom 1
+
+ h2
+ position absolute
+ top -38px
+ right 0
+ left 0
+ font-size 24px
+ text-align center
+
+.arrows
+ position absolute
+ top 3px
+ left -60px
+ width 60px
+ overflow hidden
+
+ .top
+ .bottom
+ position relative
+ left 60px
+ width 60px
+ height 60px
+ cursor pointer
+ -webkit-transition left .3s, background-color .2s
+ -moz-transition left .3s, background-color .2s
+ -ms-transition left .3s, background-color .2s
+ -o-transition left .3s, background-color .2s
+ transition left .3s, background-color .2s
+
+ .top
+ background lighten(#5a9aa8, 25%) url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAdklEQVR4Xo3MuwmFQBiE0b0FmAuutnRBsAARLMTYRzvWItiEYLq/s6CYyMwGXzTDcWbG8mhEf/ZjQIV2ZCigjiASMAVJIAVKAQ4FKWBDJVoYpAB/7z8GRaAQgBNQG8dZA28f0BmHBgUCKGh9hhpNKH8BWY8GlF2OH3hCC1zmdAAAAABJRU5ErkJggg==") 50% no-repeat
+ *background-image url(ie/arrow-top.png)
+
+ &:hover
+ background-color lighten(#5a9aa8, 10%)
+
+ .bottom
+ background lighten(#dba571, 20%) url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAf0lEQVR4Xo3MzQmEQBCE0TGAvQuOpiQIBiCCgXj2J52NRTAJwev0Vh+WOgjlNHyHguYFM/M6tKLSd2YTmtHHR48S8jtQzAB2430d2bgJvQLsdqRCZwZUPAFLaPjrjYAUMKLgwBtUK4CIhi4BEFGQBohISANEJKQBIqqIFtSqvx/0bXhCCUrgiAAAAABJRU5ErkJggg==") 50% no-repeat
+ *background-image url(ie/arrow-bottom.png)
+
+ &:hover
+ background-color #dba571
+
+@media screen and (max-width:1049px)
+ .arrows
+ .fork-me
+ display none
+
+.skin
+ position relative
+ margin-bottom 40px
+
+ &:hover .arrows .top
+ &:hover .arrows .bottom
+ left 0
+
+ h3
+ position relative
+ z-index 20
+ float left
+ height 60px
+ padding 0 57px
+ line-height 58px
+ background #fff
+ border 3px solid #ddd8ce
+ border-bottom none
+
+ &:before
+ content ''
+ position absolute
+ top 100%
+ left 0
+ width 100%
+ height 2px
+ margin-top -1px
+ background #fff
+
+ &.skin-polaris h3
+ color lighten(#7a828b, 60%)
+ background #2c323c
+
+ &:before
+ background #2c323c
+
+ &.skin-futurico h3
+ color lighten(#888, 50%)
+ background #2e3035
+
+ &:before
+ background #2e3035
+
+ dl
+ z-index 10
+ width 100%
+ margin 0
+
+ dt
+ position relative
+ top -53px
+ right -3px
+ float right
+ height 47px
+ margin-right -3px
+ padding 0 57px
+ line-height 47px
+ border 3px solid #ddd8ce
+ cursor pointer
+
+ &:hover
+ background #f0ede7
+ border-bottom 3px solid #ddd8ce
+
+ &.selected
+ height 50px
+ background #fff
+ border-bottom none
+ cursor default
+
+ &:before
+ content ''
+ position absolute
+ top 100%
+ left 0
+ width 100%
+ height 2px
+ margin-top -1px
+ background #fff
+
+ &.skin-polaris dt
+ color lighten(#7a828b, 60%)
+ background lighten(#30363f, 30%)
+
+ &:hover
+ background lighten(#30363f, 15%)
+
+ &.selected
+ background #2c323c
+
+ &:before
+ background #2c323c
+
+ &.skin-futurico dt
+ color lighten(#888, 50%)
+ background lighten(#2e3035, 30%)
+
+ &:hover
+ background lighten(#2e3035, 15%)
+
+ &.selected
+ background #2e3035
+
+ &:before
+ background #2e3035
+
+ dd
+ position relative
+ display none
+ float left
+ width 100%
+ margin -3px -100% 0 0
+ overflow hidden
+ color #444
+ background #fff
+ border 3px solid #ddd8ce
+
+ &.selected
+ display block
+
+ a
+ color #444
+
+ &:hover
+ color #111
+
+ &.skin-polaris dd
+ color #7a828b
+ background #2c323c
+
+ a
+ color #7a828b
+ border-bottom-color lighten(#2c323c, 20%)
+
+ &:hover
+ color lighten(#7a828b, 30%)
+
+ &.skin-futurico dd
+ color #888
+ background #2e3035
+
+ a
+ color #888
+ border-bottom-color lighten(#2e3035, 20%)
+
+ &:hover
+ color #aaa
+
+.skin-section
+ float left
+ padding 42px 0 31px 57px
+ line-height 18px
+
+ h4
+ padding-bottom 18px
+
+ .skin-polaris &
+ color lighten(#7a828b, 20%)
+
+ .skin-futurico &
+ color lighten(#888, 20%)
+
+ .list
+ float left
+ padding-right 60px
+
+ li
+ position relative
+ padding-bottom 15px
+
+ .skin-minimal & .list li
+ padding-left 38px
+
+ .skin-square & .list li
+ padding-left 42px
+
+ .skin-flat & .list li
+ .skin-line & label
+ padding-left 40px
+
+ .skin-line & h4
+ padding-bottom 24px
+
+ .skin-line & .list
+ padding-right 40px
+
+ li
+ padding-bottom 10px
+
+ .skin-polaris & .list li
+ padding-left 37px
+
+ .skin-futurico & .list li
+ padding-left 36px
+
+.icheckbox_minimal
+.icheckbox_minimal-red
+.icheckbox_minimal-green
+.icheckbox_minimal-blue
+.icheckbox_minimal-aero
+.icheckbox_minimal-grey
+.icheckbox_minimal-orange
+.icheckbox_minimal-yellow
+.icheckbox_minimal-pink
+.icheckbox_minimal-purple
+.iradio_minimal
+.iradio_minimal-red
+.iradio_minimal-green
+.iradio_minimal-blue
+.iradio_minimal-aero
+.iradio_minimal-grey
+.iradio_minimal-orange
+.iradio_minimal-yellow
+.iradio_minimal-pink
+.iradio_minimal-purple
+ position absolute
+ top 1px
+ left 0
+
+.skin input[type=checkbox]
+.skin input[type=radio]
+ position absolute
+ top 2px
+ left 0
+
+.icheckbox_square
+.icheckbox_square-red
+.icheckbox_square-green
+.icheckbox_square-blue
+.icheckbox_square-aero
+.icheckbox_square-grey
+.icheckbox_square-orange
+.icheckbox_square-yellow
+.icheckbox_square-pink
+.icheckbox_square-purple
+.iradio_square
+.iradio_square-red
+.iradio_square-green
+.iradio_square-blue
+.iradio_square-aero
+.iradio_square-grey
+.iradio_square-orange
+.iradio_square-yellow
+.iradio_square-pink
+.iradio_square-purple
+ position absolute
+ top -1px
+ left 0
+
+.icheckbox_flat
+.icheckbox_flat-red
+.icheckbox_flat-green
+.icheckbox_flat-blue
+.icheckbox_flat-aero
+.icheckbox_flat-grey
+.icheckbox_flat-orange
+.icheckbox_flat-yellow
+.icheckbox_flat-pink
+.icheckbox_flat-purple
+.iradio_flat
+.iradio_flat-red
+.iradio_flat-green
+.iradio_flat-blue
+.iradio_flat-aero
+.iradio_flat-grey
+.iradio_flat-orange
+.iradio_flat-yellow
+.iradio_flat-pink
+.iradio_flat-purple
+ position absolute
+ top 0
+ left 0
+
+.icheckbox_polaris
+.iradio_polaris
+ position absolute
+ top -4px
+ left -6px
+
+.icheckbox_futurico
+.iradio_futurico
+ position absolute
+ top 2px
+ left 0
+
+.skin-states
+ float right
+ padding-right 57px
+ padding-left 0
+
+ .state
+ cursor default !important
+
+ .list
+ padding-right 0
+
+ .skin-minimal & .list li
+ padding-left 71px
+
+ .skin-square & .list li
+ padding-left 79px
+
+ .skin-flat & .list li
+ padding-left 75px
+
+ .skin-line & .list
+ padding-right 0
+
+ .skin-polaris & .list li
+ padding-left 69px
+
+ .skin-futurico & .list li
+ padding-left 67px
+
+ .iradio_minimal
+ .iradio_minimal-red
+ .iradio_minimal-green
+ .iradio_minimal-blue
+ .iradio_minimal-aero
+ .iradio_minimal-grey
+ .iradio_minimal-orange
+ .iradio_minimal-yellow
+ .iradio_minimal-pink
+ .iradio_minimal-purple
+ left 33px
+
+ .iradio_square
+ .iradio_square-red
+ .iradio_square-green
+ .iradio_square-blue
+ .iradio_square-aero
+ .iradio_square-grey
+ .iradio_square-orange
+ .iradio_square-yellow
+ .iradio_square-pink
+ .iradio_square-purple
+ left 37px
+
+ .iradio_flat
+ .iradio_flat-red
+ .iradio_flat-green
+ .iradio_flat-blue
+ .iradio_flat-aero
+ .iradio_flat-grey
+ .iradio_flat-orange
+ .iradio_flat-yellow
+ .iradio_flat-pink
+ .iradio_flat-purple
+ left 35px
+
+ .iradio_polaris
+ left 26px
+
+ .iradio_futurico
+ left 31px
+
+.colors
+ clear both
+ padding 24px 0 9px
+
+ .skin-line &
+ padding-top 28px
+
+ strong
+ float left
+ line-height 20px
+ margin-right 20px
+
+ li
+ position relative
+ float left
+ width 16px
+ height 16px
+ margin 2px 1px 0 0
+ background #000
+ cursor pointer
+ filter unquote('alpha(opacity=50)')
+ opacity .5
+ -webkit-transition opacity .2s
+ -moz-transition opacity .2s
+ -ms-transition opacity .2s
+ -o-transition opacity .2s
+ transition opacity .2s
+
+ &:hover
+ filter unquote('alpha(opacity=100)')
+ opacity 1
+
+ &.active
+ height 20px
+ margin-top 0
+ filter unquote('alpha(opacity=75)')
+ opacity .75
+
+ &.red
+ background #d54e21
+
+ &.green
+ background #78a300
+
+ &.blue
+ background #0e76a8
+
+ &.aero
+ background #9cc2cb
+
+ &.grey
+ background #73716e
+
+ &.orange
+ background #f70
+
+ &.yellow
+ background #fc0
+
+ &.pink
+ background #ff66b5
+
+ &.purple
+ background #6a5a8c
+
+ .skin-square &.red
+ background #e56c69
+
+ .skin-square &.green
+ background #1b7e5a
+
+ .skin-square &.blue
+ background #2489c5
+
+ .skin-square &.aero
+ background #9cc2cb
+
+ .skin-square &.grey
+ background #73716e
+
+ .skin-square &.yellow
+ background #fc3
+
+ .skin-square &.pink
+ background #a77a94
+
+ .skin-square &.purple
+ background #6a5a8c
+
+ .skin-square &.orange
+ background #f70
+
+ .skin-flat &.red
+ background #ec7063
+
+ .skin-flat &.green
+ background #1abc9c
+
+ .skin-flat &.blue
+ background #3498db
+
+ .skin-flat &.grey
+ background #95a5a6
+
+ .skin-flat &.orange
+ background #f39c12
+
+ .skin-flat &.yellow
+ background #f1c40f
+
+ .skin-flat &.pink
+ background #af7ac5
+
+ .skin-flat &.purple
+ background #8677a7
+
+ .skin-line &.yellow
+ background #FFC414
+
+.skins-info
+ padding 13px 0 57px
+ font-size 16px
+ line-height 22px
+ text-align center
+
+ p
+ margin-bottom 17px
+
+.skin-pre
+ padding 43px 60px 0
+
+.skin-usage
+ padding 19px 60px 8px
+ list-style decimal outside
+
+ li
+ margin-bottom 23px
+
+ .schemes
+ margin-bottom -3px
+ padding 13px 0 0 20px
+ color #888
+
+ ul
+ float left
+ padding-right 60px
+
+ li
+ margin 0
+ padding-bottom 3px
+
+.usage
+ position relative
+ margin-bottom 80px
+ background #fff
+
+ a
+ border-bottom-color #ddd
+
+ .self
+ border-bottom-color #bbb
+
+ .arrows
+ top 0
+
+ &:hover .arrows .top
+ &:hover .arrows .bottom
+ left 0
+
+ h2
+ color #fff
+ background #1f7f5c
+
+ h4
+ margin 26px 0 10px
+
+ &.indeterminate
+ margin-top 28px
+
+ p
+ margin-bottom 5px
+
+ &.offset
+ margin-top 10px
+
+ &.callbacks-info
+ margin-bottom 19px
+
+ &.methods-info
+ margin-bottom 10px
+
+ &.methods-callback
+ margin-top 10px
+
+ &.issue-tracker
+ margin-top 31px
+
+ .markup
+ margin 9px 0 16px
+
+ .usage-inner
+ font-size 15px
+ line-height 23px
+ padding 41px 60px 39px
+
+.markup
+ margin 10px 0 18px
+ padding 8px 0 9px 17px
+ font 14px/20px $stack
+ color lighten(#555, 20%)
+ background lighten(#d7d4cc, 40%)
+ border-left 3px solid darken(#ebeae5, 10%)
+
+ .comment
+ color lighten(#555, 40%)
+
+ .self
+ color #555
+
+ &:hover
+ color #333
+
+ .skin-polaris &
+ background darken(#2C323C, 20%)
+ border-left-color darken(#2C323C, 30%)
+
+ .skin-futurico &
+ background darken(#2E3035, 20%)
+ border-left-color darken(#2E3035, 30%)
+
+ .skin-polaris &
+ .skin-futurico &
+
+ .comment
+ color #555
+
+.browsers
+ margin-bottom 74px
+
+ h2
+ margin-bottom 29px
+ font-size 24px
+
+.browsers-inner
+ padding 0 60px
+ font-size 15px
+ line-height 23px
+
+ p
+ margin-bottom 15px
+
+.benefits
+ position relative
+ margin-bottom 59px
+ color #888
+ background #232323
+
+ .arrows
+ top 0
+
+ &:hover .arrows .top
+ &:hover .arrows .bottom
+ left 0
+
+ h2
+ color #fff
+ background #6a5b8c
+
+ a
+ color #888
+ border-bottom-color #444
+
+ &:hover
+ color #aaa
+
+ .mark
+ color #777
+ background lighten(#232323, 10%)
+
+.benefits-inner
+ padding 41px 60px 29px
+ font-size 15px
+ line-height 23px
+
+ p
+ margin-bottom 15px
+
+ ul
+ margin -10px 0 15px
+
+.download
+ height 63px
+ text-align center
+
+ a
+ display block
+ height 60px
+ font-size 18px
+ line-height 58px
+ color #fff
+ border-bottom 0 solid darken(#E76B66, 10%)
+ background #E76B66
+ -webkit-transition border-bottom .2s
+ -moz-transition border-bottom .2s
+ -ms-transition border-bottom .2s
+ -o-transition border-bottom .2s
+ transition border-bottom .2s
+
+ &:before
+ content ''
+ display inline-block
+ width 26px
+ height 26px
+ margin-right 12px
+ background url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAACYUlEQVR4Xr3VPWhTURjH4VOt0ES7ZRJbEJpsNsaimx9E0GpRCdgU/NhsRAdNBYcK0RirQcSkIIK2cRBRiragVayDhqBDLVWatFvsIKK2UMEp4KBcf8N/KNdwvcHWAw8c/rzvebk5yU2dZVnmf6wVNdb70Ca+5Rrkx0e8E/ZkyzCoAyuxBZu17/jXQV34jjwCytowjUk90Ywyo5q8errcDoriPgpoRhEj6MQrGHmpbARF1RbUG3Uz6Bae4iBacQNNSKEPRi4pa1JNq3pGcds+qNrXu4B1CKKCWtZqlPAZO/72RDGsRdKWh5ATIdOSpHpjbu6ojBfYBiPdOIQeHJMeZd0wsh1jKDsNakEc97AHo8o3IYCz2I1nGMYuZQHVGPXs1RlxtNgH+TCFtBpvIqua40ghqkGdOIp27VOqMcigX8PTKIKzWXwZDDbAQhDG5o6yx2iAkQY80T4HYxOEpbP/uCOnN+wq1Nlq6x3qrWp3NIcKJvAWV+FVzU804i6uwyNZZY34BaOeyzpjQmfOLR70DSGcwyxOIa7mAZzHQ+QxLHllCdUYnMYZzOqsjeBsPbp8QFZ7Lw7gCt4jhGu4qCEGa5SVVWPUM4Yjbn5HfrTjNYzk8AAZ5CSjbBBG3qjXr0CqX+YAviJpy6cQg9NKIoJBN6+gIGbwA16kMY5eeGDEo2xcNV71TCPo5qM7iX14hJIueB4XkICRhLJ51ZTUsx8n3AwawmGE8QUhRDR4J4yElUUQUm1YvUPOfxPO4khj66KL70W/m+Z6uF3P0YdJBRVlZqkHlbEezQo+YWHJB8mC1Lx+Ayeq7nRIoewwAAAAAElFTkSuQmCC")
+ *background-image url(ie/icon-options.png)
+ vertical-align middle
+
+ &:hover
+ border-bottom-width 3px
+
+.license
+ color #444
+ text-align center
+ padding 30px 0 75px
+
+.footer
+ padding-top 28px
+ height 60px
+ color #666
+ background #e2dfd8
+
+ ul
+ float left
+
+ li
+ float left
+ padding 2px 10px 0 0
+
+ &.local li
+ padding 0 30px 0 0
+
+ .code
+ float right
+
+ a
+ color #444
+
+ &:hover
+ color #222
+
+.footer-inner
+ width 930px
+ margin 0 auto
+ overflow hidden
+
+.fork-me
+ position fixed
+ *position absolute
+ top 0
+ right 0
+ width 40px
+ height 40px
+ overflow hidden
+ text-indent 100%
+ white-space nowrap
+ background #28545b url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAnElEQVR4XqVSgQmEMAyszw/gCI7wK7iBblBHcISfxG6gG/gjuIGO0A3ygaYQCCG2HhweF+6aShsAcDcBJBpuvlwFagqGJwUf5EL6kgV2eEe2yIgc9QI73CMPs8AOywI7nHDSzCxYxcnJ6+hrFnQkJrb2nGclP3Fj+vf0IUV1AgCZHiS86lOObxD4qqSD5mtXmAq1e2fB3vqXact3f/JmXumJlVq1AAAAAElFTkSuQmCC") 50% no-repeat
+ *background-image url(ie/icon-fork.png)
+
+ &:hover
+ background-color #1f7f5c
+
+.skin dt
+.fork-me
+ -webkit-transition background-color .2s
+ -moz-transition background-color .2s
+ -ms-transition background-color .2s
+ -o-transition background-color .2s
+ transition background-color .2s
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/icheck.png b/common/src/main/webapp/thirdparty/icheck/demo/css/icheck.png
new file mode 100755
index 00000000..497c5e66
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/icheck.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/ie/arrow-bottom.png b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/arrow-bottom.png
new file mode 100755
index 00000000..a815b3f6
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/arrow-bottom.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/ie/arrow-top.png b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/arrow-top.png
new file mode 100755
index 00000000..0836c0e3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/arrow-top.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/ie/header-line.png b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/header-line.png
new file mode 100755
index 00000000..f6240feb
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/header-line.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-fork.png b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-fork.png
new file mode 100755
index 00000000..2c3e3b9c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-fork.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-github.png b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-github.png
new file mode 100755
index 00000000..ed781862
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-github.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-lab.png b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-lab.png
new file mode 100755
index 00000000..4d42726a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-lab.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-options.png b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-options.png
new file mode 100755
index 00000000..20cbb613
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-options.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-star.png b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-star.png
new file mode 100755
index 00000000..a1c11692
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-star.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.eot b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.eot
new file mode 100755
index 00000000..69ddb387
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.eot
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.svg b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.svg
new file mode 100755
index 00000000..b7e99a4d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.svg
@@ -0,0 +1,1490 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="montserratbold" horiz-adv-x="1525" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="540" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="682" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="0" />
+<glyph unicode="&#xd;" horiz-adv-x="681" />
+<glyph unicode=" " horiz-adv-x="540" />
+<glyph unicode="&#x09;" horiz-adv-x="540" />
+<glyph unicode="&#xa0;" horiz-adv-x="540" />
+<glyph unicode="!" horiz-adv-x="645" d="M141 1432h363v-254l-62 -738h-241l-60 738v254zM141 164q0 76 52.5 128t128 52t128 -52t52.5 -128t-52.5 -128t-128 -52t-128 52t-52.5 128z" />
+<glyph unicode="&#x22;" horiz-adv-x="886" d="M145 883v549h244v-549h-244zM498 883v549h243v-549h-243z" />
+<glyph unicode="#" horiz-adv-x="1529" d="M1386 850h-206l-43 -256h235l-55 -283h-227l-54 -311h-307l53 311h-186l-53 -311h-310l54 311h-197l55 283h191l43 256h-219l55 283h211l55 331h310l-56 -331h185l55 331h311l-59 -331h215zM874 850h-186l-45 -256h186q27 164 45 256z" />
+<glyph unicode="$" horiz-adv-x="1300" d="M553 -141v149q-260 41 -479 236l190 231q160 -139 289 -178v305q-215 55 -315.5 148.5t-100.5 268.5t115 288.5t301 136.5v100h217v-104q205 -29 408 -170l-168 -242q-129 92 -240 123v-295q221 -57 326.5 -153.5t105.5 -272.5t-117.5 -290.5t-314.5 -137.5v-143h-217z M874 414q0 43 -22.5 71.5t-81.5 53.5v-252q104 33 104 127zM553 1159q-88 -31 -88 -112.5t88 -124.5v237z" />
+<glyph unicode="%" horiz-adv-x="1677" d="M1522 1432l-1026 -1432h-353l1028 1432h351zM1239 170q37 0 61.5 27.5t24.5 72.5t-24.5 75t-60.5 30t-60.5 -30t-24.5 -75t23.5 -72.5t60.5 -27.5zM1456 67q-86 -83 -216 -83t-216 84t-86 203.5t86 203.5t216 84t216 -84t86 -204.5t-86 -203.5zM432 1008q37 0 61.5 27.5 t24.5 72.5t-24.5 74.5t-60.5 29.5t-60.5 -29.5t-24.5 -74.5t23.5 -72.5t60.5 -27.5zM649 904q-86 -83 -216 -83t-216 84t-86 204t86 204t216 84t216 -84t86 -205t-86 -204z" />
+<glyph unicode="&#x26;" horiz-adv-x="1433" d="M1012 123q-172 -139 -398.5 -139t-372 115.5t-145.5 316.5q0 225 301 399q-68 82 -98.5 144.5t-30.5 146.5q0 174 126 266t298 92t294 -89t122 -249q0 -201 -293 -372q115 -143 172 -207q51 94 78 198l240 -172q-47 -129 -115 -239l203 -201l-203 -192zM460.5 287 q59.5 -47 154 -47t202.5 90q-150 158 -258 286q-158 -98 -158 -210q0 -72 59.5 -119zM611 1191q-36 -32 -36 -86t82 -157q154 82 154 154q0 59 -37 90t-82 31t-81 -32z" />
+<glyph unicode="'" horiz-adv-x="534" d="M145 883v549h244v-549h-244z" />
+<glyph unicode="(" horiz-adv-x="741" d="M482 1115q-85 -253 -85 -473t85 -474t208 -428h-332q-100 141 -183 398t-83 503t83 504t183 399h332q-123 -176 -208 -429z" />
+<glyph unicode=")" horiz-adv-x="741" d="M259 168q85 254 85 474t-85 473t-208 429h332q100 -141 183 -399t83 -504t-83 -503t-183 -398h-332q123 174 208 428z" />
+<glyph unicode="*" horiz-adv-x="933" d="M569 915l13 -172h-230l13 172l-146 -100l-104 186l172 86l-174 87l106 182l146 -96l-13 172h230l-13 -172l146 96l106 -182l-174 -87l172 -86l-104 -186z" />
+<glyph unicode="+" horiz-adv-x="1196" d="M457 223v369h-359v252h359v368h282v-368h359v-252h-359v-369h-282z" />
+<glyph unicode="," horiz-adv-x="608" d="M186 25q-72 51 -71.5 133t55.5 134t133 52t134.5 -51t56.5 -120t-60 -165l-123 -211h-202z" />
+<glyph unicode="-" horiz-adv-x="1003" d="M137 479v273h729v-273h-729z" />
+<glyph unicode="." horiz-adv-x="589" d="M115 164q0 76 52 128t128 52t128 -52t52 -128t-52 -128t-128 -52t-128 52t-52 128z" />
+<glyph unicode="/" horiz-adv-x="1257" d="M913 1649h291l-860 -1878h-289z" />
+<glyph unicode="0" horiz-adv-x="1413" d="M428 723q0 -215 67.5 -346t211 -131t211 131t67.5 346t-67.5 346t-211 131t-211 -131t-67.5 -346zM262.5 185.5q-147.5 201.5 -147.5 538.5t147.5 538.5t444.5 201.5t444 -201.5t147 -538.5t-147 -538.5t-444 -201.5t-444.5 201.5z" />
+<glyph unicode="1" horiz-adv-x="825" d="M63 1432h580v-1432h-307v1159h-273v273z" />
+<glyph unicode="2" horiz-adv-x="1239" d="M720 873.5q54 76.5 54 148.5t-47 120t-121 48q-135 0 -256 -193l-256 152q100 156 220 235.5t305.5 79.5t325.5 -117.5t140 -320.5q0 -111 -56 -212t-208 -259l-258 -268h565v-287h-1009v238l420 430q127 129 181 205.5z" />
+<glyph unicode="3" horiz-adv-x="1210" d="M154 1159v273h876v-222l-293 -333q172 -29 266.5 -145t94.5 -267q0 -225 -152.5 -353t-390.5 -128t-481 168l131 254q203 -143 362 -144q96 0 158.5 47t62.5 136.5t-71.5 141.5t-198.5 52q-68 0 -190 -39v236l274 323h-448z" />
+<glyph unicode="4" horiz-adv-x="1204" d="M649 618v250h307v-250h162v-276h-162v-342h-307v342h-575v244l510 846h348l-486 -814h203z" />
+<glyph unicode="5" horiz-adv-x="1220" d="M1036 1432v-277h-565v-240q63 18 145 19q207 0 356.5 -125t149.5 -337t-154.5 -350t-381.5 -138q-291 0 -486 215l168 233q18 -18 49 -45t113 -71t164 -44t145.5 49.5t63.5 145.5t-68.5 148.5t-177 52.5t-252.5 -78l-133 143v699h864z" />
+<glyph unicode="6" horiz-adv-x="1290" d="M725 1190q-133 0 -206 -89t-89 -243q133 86 283 86q201 0 335 -131t134 -349t-144.5 -349t-363.5 -131q-152 0 -263.5 58t-172.5 163q-123 203 -123 508q0 197 48 345t132 234q164 172 405 172q100 0 191.5 -29.5t140.5 -60.5t109 -78l-152 -225q-12 12 -35.5 32.5 t-93 53.5t-135.5 33zM523.5 617.5q-64.5 -56.5 -64.5 -146.5t61.5 -154.5t153.5 -64.5t153.5 57.5t61.5 148.5t-55.5 153.5t-150.5 62.5t-159.5 -56.5z" />
+<glyph unicode="7" horiz-adv-x="1185" d="M96 973v459h1034v-242l-579 -1190h-348l553 1157h-361v-184h-299z" />
+<glyph unicode="8" horiz-adv-x="1314" d="M657 1464q213 0 354.5 -112.5t141.5 -277.5t-127 -283q178 -137 178 -361q0 -188 -151.5 -317t-395 -129t-395 129t-151.5 317q0 223 178 361q-129 121 -129 284.5t142 276t355 112.5zM657 250q84 0 156 48t72 140t-70 141.5t-158 49.5t-157.5 -49.5t-69.5 -141.5 t71.5 -140t155.5 -48zM657.5 874q77.5 0 136 49.5t58.5 122t-57.5 122t-137 49.5t-137 -49.5t-57.5 -122t58.5 -122t136 -49.5z" />
+<glyph unicode="9" horiz-adv-x="1288" d="M563 258q133 0 206 89t89 243q-131 -88 -283 -88q-201 0 -335 132t-134 349t144.5 349t363.5 132q152 0 263.5 -58t175.5 -163q121 -203 121 -508q0 -197 -48.5 -345t-130.5 -234q-168 -172 -407 -172q-100 0 -192.5 29.5t-139.5 59t-109 77.5l160 225q14 -12 38 -31.5 t91.5 -52.5t126.5 -33zM765.5 829.5q63.5 55.5 63.5 145.5t-61 155.5t-153.5 65.5t-150.5 -58.5t-58 -148.5t53 -152.5t148 -62.5t158.5 55.5z" />
+<glyph unicode=":" horiz-adv-x="634" d="M137 164q0 76 52.5 128t128 52t128 -52t52.5 -128t-52.5 -128t-128 -52t-128 52t-52.5 128zM137 702.5q0 75.5 52.5 128t128 52.5t128 -52.5t52.5 -128t-52.5 -128t-128 -52.5t-128 52.5t-52.5 128z" />
+<glyph unicode=";" horiz-adv-x="645" d="M211 20q-74 53 -74 135.5t55.5 134.5t134.5 52t135 -51t56 -118t-59 -169l-127 -211h-201zM137 702.5q0 75.5 52.5 128t128 52.5t128 -52.5t52.5 -128t-52.5 -128t-128 -52.5t-128 52.5t-52.5 128z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1230" d="M84 668v280l995 469v-301l-657 -303l657 -311v-303z" />
+<glyph unicode="=" horiz-adv-x="1202" d="M102 1102h998v-252h-998v252zM102 592h998v-252h-998v252z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1230" d="M1147 948v-280l-995 -469v303l657 311l-657 303v301z" />
+<glyph unicode="?" horiz-adv-x="1073" d="M678 426h-311v154q0 84 21.5 126t90.5 113l139 144q31 37 31 95t-32.5 97t-86 39t-89 -46t-44.5 -122h-325q23 205 149.5 321.5t318 116.5t311.5 -104.5t120 -288.5q0 -82 -20.5 -122t-29 -57.5t-38 -52t-39.5 -44.5q-49 -49 -93 -92.5t-58.5 -71t-14.5 -82.5v-123z M346 164q0 76 52.5 128t128 52t128 -52t52.5 -128t-52.5 -128t-128 -52t-128 52t-52.5 128z" />
+<glyph unicode="@" horiz-adv-x="1824" d="M1409 250q55 0 97 88t42 221q0 289 -165.5 478.5t-444.5 189.5t-469 -199t-190 -476.5t179 -461.5t443 -184q207 0 365 151l84 -145q-82 -72 -209 -116t-240 -44q-342 0 -572.5 228.5t-230.5 571.5t243 585.5t585 242.5t571 -233.5t229 -581.5q0 -225 -93 -361t-244 -136 q-78 0 -142.5 47t-89.5 118q-113 -145 -286 -145t-301 131t-128 333t116 340t304 138q63 0 120.5 -27.5t82.5 -54.5l27 -26v84h256v-654q0 -102 61 -102zM1039.5 729.5q-54.5 67.5 -142.5 67.5t-140 -67.5t-52 -167t52 -173.5t142 -74t142.5 71t52.5 173.5t-54.5 170z" />
+<glyph unicode="A" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358z" />
+<glyph unicode="B" horiz-adv-x="1411" d="M803 0h-627v1432h557q145 0 251 -35t159 -94q96 -111 96 -250q0 -168 -109 -250q-37 -29 -51 -36t-51 -24q133 -29 212 -120t79 -226q0 -150 -102 -264q-119 -133 -414 -133zM496 852h151q133 0 197.5 28.5t64.5 124t-59 126t-201 30.5h-153v-309zM496 270h219 q137 0 205.5 34t68.5 133.5t-72.5 131t-232.5 31.5h-188v-330z" />
+<glyph unicode="C" horiz-adv-x="1499" d="M834 283q236 0 385 186l204 -211q-244 -274 -574.5 -274t-544.5 208.5t-214 527t218 531.5t534 213q352 0 590 -268l-199 -225q-152 188 -377 188q-180 0 -308 -117.5t-128 -317.5t121 -320.5t293 -120.5z" />
+<glyph unicode="D" horiz-adv-x="1574" d="M1270 1244.5q205 -187.5 205 -521.5t-200 -528.5t-609 -194.5h-490v1432h506q383 0 588 -187.5zM1035.5 393.5q117.5 110.5 117.5 321.5t-117.5 324.5t-361.5 113.5h-178v-870h202q220 0 337.5 110.5z" />
+<glyph unicode="E" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032z" />
+<glyph unicode="F" horiz-adv-x="1253" d="M1159 1432v-281h-663v-309h630v-281h-630v-561h-320v1432h983z" />
+<glyph unicode="G" horiz-adv-x="1536" d="M1106 729h321v-508q-213 -238 -589 -237q-315 0 -529.5 208.5t-214.5 527t218 531.5t526.5 213t535.5 -202l-166 -240q-96 84 -177 115.5t-175 31.5q-182 0 -307 -123.5t-125 -326.5t120 -325t285.5 -122t276.5 64v393z" />
+<glyph unicode="H" horiz-adv-x="1560" d="M1065 1432h319v-1432h-319v563h-569v-563h-320v1432h320v-598h569v598z" />
+<glyph unicode="I" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432z" />
+<glyph unicode="J" horiz-adv-x="1138" d="M229 1157v275h746v-934q0 -256 -132 -383t-339 -127q-258 0 -451 198l166 230q129 -139 270 -140q68 0 116 52.5t48 156.5v672h-424z" />
+<glyph unicode="K" horiz-adv-x="1454" d="M176 1432h320v-588l540 588h396l-570 -633q74 -102 272.5 -382t297.5 -417h-373l-420 565l-143 -159v-406h-320v1432z" />
+<glyph unicode="L" horiz-adv-x="1163" d="M176 0v1432h320v-1147h610v-285h-930z" />
+<glyph unicode="M" horiz-adv-x="1953" d="M1458 901l-387 -782h-190l-385 782v-901h-320v1432h432l369 -787l371 787h430v-1432h-320v901z" />
+<glyph unicode="N" horiz-adv-x="1673" d="M1178 1432h319v-1432h-319l-682 897v-897h-320v1432h299l703 -922v922z" />
+<glyph unicode="O" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212z" />
+<glyph unicode="P" horiz-adv-x="1386" d="M1162.5 1304q150.5 -128 150.5 -393.5t-154.5 -388.5t-472.5 -123h-190v-399h-320v1432h506q330 0 480.5 -128zM927.5 740.5q57.5 64.5 57.5 188.5t-74.5 176t-232.5 52h-182v-481h215q159 0 216.5 64.5z" />
+<glyph unicode="Q" horiz-adv-x="1693" d="M1597 725q0 -223 -113.5 -401.5t-305.5 -266.5q18 -31 58 -52t83 -21t84 13t65 32q53 43 76 84l166 -199q-176 -186 -440 -186q-123 0 -242 67.5t-182 190.5q-317 0 -534.5 212t-217.5 527t217 527t534.5 212t534.5 -212t217 -527zM1149 1050.5q-123 135.5 -302 135.5 t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327z" />
+<glyph unicode="R" horiz-adv-x="1488" d="M1337 956q0 -344 -272 -444l362 -512h-393l-317 457h-221v-457h-320v1432h543q334 0 476 -113t142 -363zM952.5 786.5q59.5 53.5 59.5 169t-61.5 158.5t-215.5 43h-239v-424h233q164 0 223.5 53.5z" />
+<glyph unicode="S" horiz-adv-x="1306" d="M511 1146q-46 -38 -46 -100.5t56.5 -99.5t260 -87t316 -150.5t112.5 -293t-144 -312t-380 -119.5q-340 0 -612 252l190 233q231 -203 428 -203q88 0 138.5 38t50.5 102.5t-53.5 102.5t-211.5 77q-250 59 -365.5 154.5t-115.5 299t146.5 314t365.5 110.5q143 0 286.5 -49 t250.5 -139l-162 -234q-186 141 -385 142q-80 0 -126 -38z" />
+<glyph unicode="T" horiz-adv-x="1245" d="M782 1155v-1155h-319v1155h-406v277h1131v-277h-406z" />
+<glyph unicode="U" horiz-adv-x="1538" d="M770 270q135 0 214 99.5t79 271.5v791h319v-801q0 -311 -172 -478t-440 -167t-441 168t-173 477v801h319v-791q0 -172 80 -271.5t215 -99.5z" />
+<glyph unicode="V" horiz-adv-x="1409" d="M705 520l364 912h346l-575 -1432h-271l-575 1432h346z" />
+<glyph unicode="W" horiz-adv-x="2086" d="M623 608l254 824h333l252 -824l285 824h346l-500 -1432h-237l-314 995l-311 -995h-237l-500 1432h346z" />
+<glyph unicode="X" horiz-adv-x="1423" d="M981 1432h385l-446 -691l483 -741h-389l-305 471l-303 -471h-386l482 733l-449 699h383l273 -424z" />
+<glyph unicode="Y" horiz-adv-x="1265" d="M793 0h-320v565l-496 867h347l309 -533l309 533h346l-495 -867v-565z" />
+<glyph unicode="Z" horiz-adv-x="1394" d="M94 0v219l750 936h-725v277h1161v-222l-748 -931h760v-279h-1198z" />
+<glyph unicode="[" horiz-adv-x="765" d="M684 1550v-231h-264v-1362h264v-231h-526v1824h526z" />
+<glyph unicode="\" horiz-adv-x="1171" d="M57 1550h310l745 -1550h-309z" />
+<glyph unicode="]" horiz-adv-x="765" d="M82 -274v231h264v1362h-264v231h526v-1824h-526z" />
+<glyph unicode="^" horiz-adv-x="989" d="M338 1579h-293l281 363h338l280 -363h-293l-157 174z" />
+<glyph unicode="_" horiz-adv-x="1474" d="M137 -270v178h1200v-178h-1200z" />
+<glyph unicode="`" horiz-adv-x="782" d="M680 1575h-293l-285 229l316 135z" />
+<glyph unicode="a" horiz-adv-x="1216" d="M1081 0h-288v133q-119 -150 -294 -149.5t-294 101.5t-119 270t123 253t336 84h229v6q0 176 -186 176q-80 0 -169 -31.5t-151 -78.5l-137 199q217 158 496 157q201 0 327.5 -100t126.5 -318v-702zM772 420v53h-192q-184 0 -185 -115q0 -59 44 -90.5t126 -31.5t144.5 50 t62.5 134z" />
+<glyph unicode="b" horiz-adv-x="1363" d="M1130.5 963.5q149.5 -156.5 149.5 -402.5t-153.5 -411.5t-349 -165.5t-324.5 161v-145h-308v1520h308v-541q127 141 327.5 141t350 -156.5zM523.5 331q74.5 -85 181 -85t186.5 85t80 218t-78 223t-186.5 90t-183 -89t-74.5 -223t74.5 -219z" />
+<glyph unicode="c" horiz-adv-x="1191" d="M674 256q154 0 276 154l183 -205q-213 -221 -461 -221t-419 156.5t-171 409.5t173 411.5t411 158.5q119 0 240.5 -49t213.5 -145l-159 -209q-53 63 -130 98t-153 35q-121 0 -208 -79t-87 -219t87 -218t204 -78z" />
+<glyph unicode="d" horiz-adv-x="1363" d="M237.5 149.5q-153.5 165.5 -153.5 411.5t149.5 402.5t350 156.5t327.5 -141v541h308v-1520h-308v145q-129 -162 -324.5 -161.5t-349 166zM473 331q80 -85 186.5 -85t181 85t74.5 219t-74.5 223t-183 89t-186.5 -90t-78 -223t80 -218z" />
+<glyph unicode="e" horiz-adv-x="1265" d="M1100 160q-186 -176 -437 -176t-415 154.5t-164 414.5t167 413.5t394 153.5t386 -137t159 -377v-164h-803q14 -90 94 -147t181 -57q162 0 266 108zM804.5 813q-63.5 53 -154.5 53t-166.5 -55t-88.5 -149h484q-11 98 -74.5 151z" />
+<glyph unicode="f" horiz-adv-x="823" d="M512 1165v-73h266v-222h-266v-870h-309v870h-129v222h129v67q0 180 109.5 285.5t272.5 105.5t296 -123l-111 -206q-68 78 -149 77q-47 0 -78 -33.5t-31 -99.5z" />
+<glyph unicode="g" horiz-adv-x="1366" d="M844 782.5q-74 75.5 -182.5 75.5t-187.5 -75.5t-79 -207t77 -212t187.5 -80.5t184.5 79.5t74 212t-74 208zM961 186q-145 -162 -361.5 -161.5t-365 146.5t-148.5 391t152.5 401.5t349 156.5t325.5 -162v146h308v-961q0 -147 -51.5 -261.5t-137.5 -180.5 q-170 -135 -401 -135q-123 0 -251 40t-224 113l118 232q152 -115 321 -115t267.5 84t98.5 266z" />
+<glyph unicode="h" horiz-adv-x="1308" d="M453 594v-594h-308v1520h308v-541q139 141 312 141t292 -123t119 -327v-670h-308v602q0 254 -186 254q-92 0 -160.5 -66.5t-68.5 -195.5z" />
+<glyph unicode="i" horiz-adv-x="598" d="M453 0h-308v1102h308v-1102zM119 1370q0 76 52 128t128 52t128 -52t52 -128t-52 -128t-128 -52t-128 52t-52 128z" />
+<glyph unicode="j" horiz-adv-x="702" d="M250 -20v1124h307v-1149q0 -180 -109.5 -284.5t-268.5 -104.5t-302 131l141 227q61 -72 138 -71q41 0 67.5 32t26.5 95zM223 1370q0 76 52.5 128t128 52t128 -52t52.5 -128t-52.5 -128t-128 -52t-128 52t-52.5 128z" />
+<glyph unicode="k" horiz-adv-x="1218" d="M453 0h-308v1520h308v-781l342 365h387l-420 -447l436 -657h-364l-281 422l-100 -105v-317z" />
+<glyph unicode="l" horiz-adv-x="598" d="M453 0h-308v1520h308v-1520z" />
+<glyph unicode="m" horiz-adv-x="2013" d="M1157 594v-594h-309v602q0 131 -40 192.5t-129 61.5t-157.5 -66.5t-68.5 -195.5v-594h-308v1102h308v-125q127 143 290 143q104 0 189.5 -61.5t128.5 -149.5q63 100 170.5 155.5t216.5 55.5q195 0 313.5 -115.5t118.5 -334.5v-670h-309v602q0 254 -187 254 q-92 0 -159.5 -66.5t-67.5 -195.5z" />
+<glyph unicode="n" horiz-adv-x="1308" d="M453 614v-614h-308v1102h308v-123q139 141 313 141t292 -123t118 -327v-670h-308v623q0 254 -186 254q-92 0 -160.5 -67t-68.5 -196z" />
+<glyph unicode="o" horiz-adv-x="1329" d="M468 331q77 -85 196.5 -85t196.5 85t77 220t-77 221t-196.5 86t-196.5 -86t-77 -221t77 -220zM1081 147.5q-166 -163.5 -416.5 -163.5t-416.5 163.5t-166 403.5t166 404.5t416.5 164.5t416.5 -164.5t166 -404.5t-166 -403.5z" />
+<glyph unicode="p" horiz-adv-x="1363" d="M1129.5 959.5q150.5 -160.5 150.5 -404.5t-150.5 -407.5t-352.5 -163.5t-324 161v-542h-308v1499h308v-123q141 141 333.5 141t343 -160.5zM523.5 331q74.5 -85 181 -85t186.5 85t80 218t-78 223t-186.5 90t-183 -89t-74.5 -223t74.5 -219z" />
+<glyph unicode="q" horiz-adv-x="1363" d="M241.5 142.5q-157.5 158.5 -157.5 407.5t153.5 409.5t342 160.5t329.5 -141v123h310v-1499h-310v485q-131 -104 -299 -104q-211 0 -368.5 158.5zM473 331q80 -85 186.5 -85t180 85t73.5 219t-73.5 223t-182 89t-186.5 -89t-78 -223t80 -219z" />
+<glyph unicode="r" horiz-adv-x="841" d="M725 831q-137 0 -204.5 -97t-67.5 -257v-477h-308v1102h308v-146q59 68 148 115t181 49l2 -289h-59z" />
+<glyph unicode="s" horiz-adv-x="1064" d="M855 82q-120 -98 -304 -98q-123 0 -256 44t-240 130l135 192q172 -133 367 -133q59 0 94 23.5t35 62.5t-48 72t-139 61.5t-139.5 49t-109.5 59.5q-125 78 -125 230.5t123 248.5t317.5 96t388.5 -131l-114 -205q-143 98 -285.5 98.5t-142.5 -77.5q0 -43 45 -67.5 t149.5 -57.5t148.5 -50.5t105 -54.5q115 -70 115 -232.5t-120 -260.5z" />
+<glyph unicode="t" horiz-adv-x="901" d="M512 881v-494q0 -63 33 -99t78 -36q86 0 145 78l115 -215q-143 -131 -302 -131t-268.5 104.5t-109.5 284.5v508h-129v221h129v330h309v-330h266v-221h-266z" />
+<glyph unicode="u" horiz-adv-x="1310" d="M856 508v594h309v-1102h-309v145q-115 -162 -296 -161.5t-304 114t-123 336.5v668h309v-600q0 -254 187 -254q92 0 159.5 66.5t67.5 193.5z" />
+<glyph unicode="v" horiz-adv-x="1200" d="M442 0l-436 1104h320l274 -694l274 694h320l-436 -1104h-316z" />
+<glyph unicode="w" horiz-adv-x="1847" d="M719 0h-318l-374 1102h317l215 -666l215 666h297l215 -666l215 666h320l-375 -1102h-320l-202 600z" />
+<glyph unicode="x" horiz-adv-x="1198" d="M414 1102l188 -295l195 295h360l-379 -539l393 -563h-366l-215 303l-209 -303h-354l385 561l-365 541h367z" />
+<glyph unicode="y" horiz-adv-x="1208" d="M336 -434q-162 0 -305 131l139 227q78 -76 160 -76q43 0 73.5 42t30.5 89.5t-426 1122.5h328l268 -686l268 686h328l-512 -1299q-45 -113 -140 -175t-212 -62z" />
+<glyph unicode="z" horiz-adv-x="1132" d="M125 848v254h889v-240l-535 -606h565v-256h-958v254l520 594h-481z" />
+<glyph unicode="{" horiz-adv-x="737" d="M637 1300l-43 3q-90 0 -90 -80v-428q0 -109 -76 -160q76 -49 76 -158v-446q0 -68 133 -68v-250h-113q-307 0 -307 293v420q0 84 -47 84h-94v250h94q47 0 47 86v411q0 293 307 293h113v-250z" />
+<glyph unicode="|" horiz-adv-x="565" d="M156 -299v1890h254v-1890h-254z" />
+<glyph unicode="}" horiz-adv-x="737" d="M100 -37l43 -2q90 0 90 80v428q0 109 76 160q-76 49 -76 157v447q0 68 -133 67v250h113q307 0 307 -293v-419q0 -84 47 -84h95v-250h-95q-47 0 -47 -86v-412q0 -293 -307 -293h-113v250z" />
+<glyph unicode="~" horiz-adv-x="1095" d="M731 848q68 0 68 88q0 20 -6 45l245 -66q-12 -170 -90 -246.5t-194 -76.5q-70 0 -200 66.5t-169 66.5t-65.5 -39t-24.5 -111l-244 74q14 164 96 247t211 83q74 0 201 -65.5t172 -65.5z" />
+<glyph unicode="&#xa1;" horiz-adv-x="651" d="M508 0h-363v270l60 738h241l62 -738v-270zM145 1284q0 76 52.5 128t128 52t128 -52t52.5 -128t-52.5 -128t-128 -52t-128 52t-52.5 128z" />
+<glyph unicode="&#xa2;" horiz-adv-x="1224" d="M770 -240h-197v232q-203 33 -341 182.5t-138 374.5t137.5 376.5t341.5 184.5v236h197v-234q209 -31 363 -186l-160 -209q-84 96 -203 123v-572q53 16 101.5 51t70.5 62l21 29l182 -205q-170 -178 -375 -211v-234zM444.5 726q-49.5 -71 -49.5 -174t49.5 -175t128.5 -101 v551q-79 -30 -128.5 -101z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1286" d="M604 1040v-223h320v-258h-320v-287h570v-272h-1047v272h156v287h-164v258h164v211q0 254 130 369.5t341 115.5q283 0 430 -258l-228 -184q-33 76 -84 119t-112.5 43t-108.5 -46.5t-47 -146.5z" />
+<glyph unicode="&#xa4;" horiz-adv-x="1558" d="M291 334q-94 137 -94 314t90 315l-172 174l192 194l182 -182q133 72 291 72t289 -74l182 184l193 -194l-172 -176q90 -139 90 -312.5t-96 -314.5l178 -180l-191 -195l-190 193q-135 -70 -287.5 -70t-279.5 70l-191 -193l-190 195zM778.5 356q114.5 0 188 83t73.5 212 t-73.5 211t-188 82t-188.5 -82t-74 -211t74 -212t188.5 -83z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1517" d="M221 459h365v112h-365v197h234l-385 662h348l338 -584l350 584h346l-397 -662h225v-197h-360v-112h360v-197h-360v-262h-334v262h-365v197z" />
+<glyph unicode="&#xa6;" horiz-adv-x="602" d="M164 838v706h274v-706h-274zM164 -47v704h274v-704h-274z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1273" d="M523 1233q-38 -31 -38 -83t48.5 -84t191.5 -69q246 -59 352.5 -142t106.5 -239q0 -207 -209 -292q131 -88 131 -236.5t-125 -253t-334 -104.5q-293 0 -538 223l172 207q215 -180 372.5 -180t157.5 98q0 49 -57.5 84t-240.5 88t-297 140t-114 253q0 86 50.5 163t144.5 118 q-111 78 -111 211q0 168 125 273t320 105q135 0 241.5 -37.5t223.5 -123.5l-154 -219q-172 131 -315 131q-66 0 -104 -31zM375 651q0 -78 99 -128t253 -50q78 0 131 34t53 89q0 84 -121.5 125t-220.5 41q-194 0 -194 -111z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1087" d="M195 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM590 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1687" d="M1583 717q0 -305 -216 -523.5t-525.5 -218.5t-523.5 216.5t-214 521.5t216.5 524t523.5 219t523 -217t216 -522zM1432 716.5q0 241.5 -172.5 414t-415 172.5t-415.5 -174.5t-173 -416t170 -413.5t415.5 -172t418 174t172.5 415.5zM852 299q-172 0 -297 116.5t-125 305 t129 306.5t317.5 118t327.5 -146l-123 -153q-82 98 -207 98q-88 0 -150 -58.5t-62 -161.5t64.5 -163.5t154.5 -60.5q133 0 204 118l127 -153q-157 -166 -360 -166z" />
+<glyph unicode="&#xaa;" horiz-adv-x="733" d="M592 938h-152v63q-45 -70 -133 -69.5t-145.5 47.5t-57.5 125t60.5 118t163.5 40h104v6q0 88 -78 88q-61 0 -127 -29l-20 -10l-49 90q88 57 198 57q236 0 236 -194v-332zM430 1135v30h-90q-74 0 -74 -61q0 -29 18.5 -45.5t54.5 -16.5t63.5 25t27.5 68z" />
+<glyph unicode="&#xab;" horiz-adv-x="1236" d="M657 879l-241 -377l241 -379h-309l-250 379l250 377h309zM1118 879l-241 -377l241 -379h-309l-250 379l250 377h309z" />
+<glyph unicode="&#xac;" horiz-adv-x="1673" d="M129 911h1370v-731h-229v490h-1141v241z" />
+<glyph unicode="&#xad;" horiz-adv-x="1003" d="M137 479v273h729v-273h-729z" />
+<glyph unicode="&#xae;" horiz-adv-x="1687" d="M1583 717q0 -305 -216 -523.5t-525.5 -218.5t-523.5 216.5t-214 521.5t216.5 524t523.5 219t523 -217t216 -522zM1268 309q164 170 164 409.5t-172.5 412t-415 172.5t-415.5 -174.5t-173 -416t170 -413.5t418 -172t420 178h-238l-178 256h-90v-256h-226v832h330 q197 0 281 -68t84 -217q0 -182 -166 -254zM975 771q29 26 29 82t-30 77.5t-104 21.5h-112v-207h108q80 0 109 26z" />
+<glyph unicode="&#xaf;" horiz-adv-x="905" d="M795 1407v-238h-682v238h682z" />
+<glyph unicode="&#xb0;" horiz-adv-x="876" d="M438.5 1462q141.5 0 241.5 -98t100 -236.5t-100 -235.5t-241.5 -97t-242 97t-100.5 235.5t100.5 236.5t242 98zM334 1011q43 -48 104.5 -48t103.5 47t42 116.5t-42 116.5t-103.5 47t-104.5 -47t-43 -115.5t43 -116.5z" />
+<glyph unicode="&#xb1;" horiz-adv-x="1189" d="M453 1335h282v-295h357v-239h-357v-285h-282v285h-355v239h355v295zM98 414h994v-232h-994v232z" />
+<glyph unicode="&#xb2;" horiz-adv-x="899" d="M491.5 1111q30.5 42 30.5 79t-22.5 61.5t-57.5 24.5q-68 0 -143 -121l-178 107q66 100 140.5 151t190 51t203.5 -72.5t88 -197.5q0 -66 -34.5 -127t-126.5 -158l-127 -133h313v-196h-629v157l250 258q72 74 102.5 116z" />
+<glyph unicode="&#xb3;" horiz-adv-x="892" d="M156 1243v189h557v-150l-162 -186q96 -25 148.5 -95.5t52.5 -158.5q0 -137 -95.5 -217t-244 -80t-308.5 110l95 170q117 -88 219 -88q49 0 80.5 24.5t31.5 74t-44 75t-111.5 25.5t-118.5 -25v154l150 178h-250z" />
+<glyph unicode="&#xb4;" horiz-adv-x="782" d="M395 1579h-293l260 363l318 -134z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1325" d="M162 -379v1481h309v-600q0 -254 186 -254q92 0 160 66.5t68 193.5v594h309v-1102h-309v92q-121 -109 -291 -108q-72 0 -123 14v-377h-309z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1458" d="M70 1122q0 180 123.5 303t377.5 123h701v-1763h-273v1509h-200v-1509h-267v928h-40q-266 0 -369 196q-53 100 -53 213z" />
+<glyph unicode="&#xb7;" horiz-adv-x="610" d="M125 651q0 76 52 128t128 52t128 -52t52 -128t-52 -128t-128 -52t-128 52t-52 128z" />
+<glyph unicode="&#xb8;" horiz-adv-x="575" d="M500 -260q0 -88 -73 -153.5t-183.5 -65.5t-214.5 65l77 176q45 -39 80 -38.5t54.5 18.5t19.5 46t-24.5 49.5t-58.5 21.5t-73 -19l84 160h236l-57 -104q133 -45 133 -156z" />
+<glyph unicode="&#xb9;" horiz-adv-x="610" d="M82 1432h379v-867h-219v680h-160v187z" />
+<glyph unicode="&#xba;" horiz-adv-x="804" d="M326.5 1085.5q29.5 -34.5 76 -34.5t76 34.5t29.5 91t-29.5 92.5t-76 36t-76 -36t-29.5 -92.5t29.5 -91zM618.5 972q-86.5 -83 -216.5 -83t-216 84t-86 203.5t86 203.5t216 84t216.5 -84t86.5 -204.5t-86.5 -203.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1236" d="M821 502l-241 377h309l250 -377l-250 -379h-309zM360 502l-241 377h309l250 -377l-250 -379h-309z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1751" d="M1151 1544h235l-745 -1560h-235zM74 1430h377v-865h-220v678h-157v187zM1395 537h186v-172h94v-164h-94v-201h-186v201h-367v157l301 506h225l-299 -499h140v172z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1798" d="M1128 1544h238l-745 -1560h-238zM74 1432h377v-867h-220v680h-157v187zM1433.5 531q30.5 42 30.5 79t-22.5 61.5t-57.5 24.5q-68 0 -143 -121l-178 107q66 100 140.5 151.5t190 51.5t204 -73t88.5 -198q0 -66 -35 -127t-127 -157l-127 -133h313v-197h-629v158l250 258 q72 73 102.5 115z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1845" d="M1243 1544h236l-746 -1560h-235zM131 1243v189h557v-150l-162 -186q96 -25 148.5 -95.5t52.5 -158.5q0 -137 -95 -217t-243.5 -80t-308.5 110l94 170q117 -88 219 -88q49 0 81 24.5t32 74t-44 75t-111.5 25.5t-119.5 -25v154l150 178h-250zM1491 537h186v-172h95v-164 h-95v-201h-186v201h-367v157l301 506h226l-299 -499h139v172z" />
+<glyph unicode="&#xbf;" horiz-adv-x="1077" d="M399 1022h312v-154q0 -84 -21.5 -126t-91.5 -113l-139 -144q-31 -37 -31 -95t33 -97t86 -39t89 46t44 122h326q-23 -205 -150 -321.5t-318.5 -116.5t-311.5 104.5t-120 288.5q0 82 20.5 122t29 57t38 52t39.5 43q49 51 93.5 94t58.5 71t14 83v123zM731 1284 q0 -76 -52 -128t-128 -52t-128 52t-52 128t52 128t128 52t128 -52t52 -128z" />
+<glyph unicode="&#xc0;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM918 1575h-293l-285 229l315 135z" />
+<glyph unicode="&#xc1;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM899 1579h-293l260 363l318 -134z" />
+<glyph unicode="&#xc2;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM580 1575h-252l231 323h383l232 -323h-252l-172 166z" />
+<glyph unicode="&#xc3;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM633 1681q-63 0 -62 -106h-217q0 154 66.5 242t171.5 88q66 0 159 -56.5t113 -56.5q63 0 62 106h217q0 -154 -66.5 -241.5t-171.5 -87.5q-63 0 -159.5 56t-112.5 56z" />
+<glyph unicode="&#xc4;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM420 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM815 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5 t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xc5;" d="M606 1430q-61 66 -61 154.5t64.5 153t154.5 64.5t154.5 -64.5t64.5 -154.5t-65 -156l618 -1427h-340l-133 309h-600l-133 -309h-340zM764 1006l-180 -416h358zM692 1583q0 -29 21.5 -50.5t50.5 -21.5t50.5 21.5t21.5 50.5t-21.5 50.5t-50.5 21.5t-50.5 -21.5t-21.5 -50.5 z" />
+<glyph unicode="&#xc6;" horiz-adv-x="2095" d="M1966 1432v-281h-715v-309h641v-269h-641v-292h738v-281h-1078v309h-405l-162 -309h-377l735 1432h1264zM911 598v504l-260 -504h260z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1499" d="M834 283q236 0 385 186l204 -211q-207 -233 -495 -268l-54 -99q133 -45 134 -155q0 -88 -73 -153.5t-183.5 -65.5t-214.5 65l77 176q45 -39 80 -39t54.5 18.5t19.5 46.5t-24.5 49.5t-58.5 21.5t-73 -19l84 160q-266 45 -436 244.5t-170 498.5t218 512t534 213 q352 0 590 -268l-199 -225q-152 188 -377 188q-180 0 -308 -117.5t-128 -317.5t121 -320.5t293 -120.5z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM827 1575h-292l-285 229l315 135z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM809 1579h-293l260 363l318 -134z" />
+<glyph unicode="&#xca;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM489 1575h-251l231 323h383l231 -323h-252l-172 166z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM348 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM743 1734.5q0 63.5 44 107.5t107.5 44t108 -44t44.5 -107.5t-44.5 -107.5t-108 -44 t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM502 1575h-293l-285 229l316 135z" />
+<glyph unicode="&#xcd;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM483 1579h-293l261 363l317 -134z" />
+<glyph unicode="&#xce;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM166 1577h-252l231 324h383l232 -324h-252l-172 166z" />
+<glyph unicode="&#xcf;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM-14 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM381 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1605" d="M53 573v273h152v586h506q383 0 587.5 -187.5t204.5 -521.5t-199.5 -528.5t-609.5 -194.5h-489v573h-152zM1064 393.5q118 110.5 118 321.5t-118 324.5t-362 113.5h-178v-307h480v-273h-480v-290h203q219 0 337 110.5z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1673" d="M1178 1432h319v-1432h-319l-682 897v-897h-320v1432h299l703 -922v922zM717 1679q-63 0 -62 -106h-217q0 154 66.5 242t171.5 88q66 0 159 -56.5t113 -56.5q63 0 62 106h217q0 -154 -66.5 -241.5t-171.5 -87.5q-63 0 -159.5 56t-112.5 56z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM1012 1575h-293l-285 229l316 135z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM993 1579h-293l261 363l317 -134z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM674 1575h-252l231 323h383l232 -323h-252 l-172 166z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM727 1679q-63 0 -61 -106h-217q0 154 66.5 242 t170.5 88q66 0 159 -56.5t113 -56.5q63 0 62 106h217q0 -154 -66.5 -241.5t-171.5 -87.5q-63 0 -159.5 56t-112.5 56z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM494 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44 t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM889 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xd7;" horiz-adv-x="1206" d="M604 924l326 333l176 -182l-322 -330l324 -333l-176 -183l-328 334l-325 -334l-181 183l328 333l-326 330l181 182z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1691" d="M1597 725q0 -315 -217 -527t-534 -212q-80 0 -162 16l-106 -231h-289l149 327q-160 98 -252 263t-92 364q0 315 217 527t535 212q98 0 205 -26l96 211h291l-148 -322q143 -100 225 -258t82 -344zM846 1186q-178 0 -301 -135.5t-123 -338t143 -335.5l367 799 q-47 10 -86 10zM1149 398q123 134 123 320.5t-115 321.5l-352 -774q12 -2 41 -2q180 0 303 134z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1538" d="M770 270q135 0 214 99.5t79 271.5v791h319v-801q0 -311 -172 -478t-440 -167t-441 168t-173 477v801h319v-791q0 -172 80 -271.5t215 -99.5zM932 1575h-293l-285 229l316 135z" />
+<glyph unicode="&#xda;" horiz-adv-x="1538" d="M770 270q135 0 214 99.5t79 271.5v791h319v-801q0 -311 -172 -478t-440 -167t-441 168t-173 477v801h319v-791q0 -172 80 -271.5t215 -99.5zM915 1579h-292l260 363l317 -134z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1538" d="M770 270q135 0 214 99.5t79 271.5v791h319v-801q0 -311 -172 -478t-440 -167t-441 168t-173 477v801h319v-791q0 -172 80 -271.5t215 -99.5zM596 1575h-252l231 323h383l232 -323h-252l-172 166z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1538" d="M770 270q135 0 214 99.5t79 271.5v791h319v-801q0 -311 -172 -478t-440 -167t-441 168t-173 477v801h319v-791q0 -172 80 -271.5t215 -99.5zM418 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM813 1734.5 q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1265" d="M793 0h-320v565l-496 867h347l309 -533l309 533h346l-495 -867v-565zM739 1579h-293l261 363l317 -134z" />
+<glyph unicode="&#xde;" horiz-adv-x="1402" d="M1313 754q0 -279 -163 -403t-484 -124h-170v-227h-320v1432h320v-172h166q651 0 651 -506zM919.5 570.5q65.5 66.5 65.5 188.5t-82 173t-246 51h-161v-479h194q164 0 229.5 66.5z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1325" d="M775.5 953.5q66.5 62.5 66.5 139t-39 131t-123 54.5q-119 0 -168 -84t-49 -246v-948h-320v922q0 201 41 315q16 51 55.5 114.5t92.5 102.5q123 96 325 96q117 0 208 -29.5t144.5 -73.5t88.5 -104q57 -104 57 -223q0 -190 -158 -319q121 -39 181.5 -140.5t60.5 -226.5 q0 -199 -138 -316.5t-396 -117.5h-127v258h90q252 0 252 176q0 195 -236 195q-43 0 -113 -6v247q138 21 204.5 83.5z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1216" d="M1081 0h-288v133q-119 -150 -294 -149.5t-294 101.5t-119 270t123 253t336 84h229v6q0 176 -186 176q-80 0 -169 -31.5t-151 -78.5l-137 199q217 158 496 157q201 0 327.5 -100t126.5 -318v-702zM772 420v53h-192q-184 0 -185 -115q0 -59 44 -90.5t126 -31.5t144.5 50 t62.5 134zM844 1251h-293l-285 230l316 135z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1216" d="M1081 0h-288v133q-119 -150 -294 -149.5t-294 101.5t-119 270t123 253t336 84h229v6q0 176 -186 176q-80 0 -169 -31.5t-151 -78.5l-137 199q217 158 496 157q201 0 327.5 -100t126.5 -318v-702zM772 420v53h-192q-184 0 -185 -115q0 -59 44 -90.5t126 -31.5t144.5 50 t62.5 134zM713 1251h-293l260 363l317 -133z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1216" d="M1081 0h-288v133q-119 -150 -294 -149.5t-294 101.5t-119 270t123 253t336 84h229v6q0 176 -186 176q-80 0 -169 -31.5t-151 -78.5l-137 199q217 158 496 157q201 0 327.5 -100t126.5 -318v-702zM772 420v53h-192q-184 0 -185 -115q0 -59 44 -90.5t126 -31.5t144.5 50 t62.5 134zM444 1251h-251l231 324h383l231 -324h-252l-172 166z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1216" d="M1081 0h-288v133q-119 -150 -294 -149.5t-294 101.5t-119 270t123 253t336 84h229v6q0 176 -186 176q-80 0 -169 -31.5t-151 -78.5l-137 199q217 158 496 157q201 0 327.5 -100t126.5 -318v-702zM772 420v53h-192q-184 0 -185 -115q0 -59 44 -90.5t126 -31.5t144.5 50 t62.5 134zM477 1358q-63 0 -61 -107h-217q0 154 66.5 242t170.5 88q66 0 159 -56.5t114 -56.5q63 0 61 107h217q0 -154 -66.5 -242t-170.5 -88q-63 0 -160 56.5t-113 56.5z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1216" d="M1081 0h-288v133q-119 -150 -294 -149.5t-294 101.5t-119 270t123 253t336 84h229v6q0 176 -186 176q-80 0 -169 -31.5t-151 -78.5l-137 199q217 158 496 157q201 0 327.5 -100t126.5 -318v-702zM772 420v53h-192q-184 0 -185 -115q0 -59 44 -90.5t126 -31.5t144.5 50 t62.5 134zM266 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM662 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1216" d="M1081 0h-288v133q-119 -150 -294 -149.5t-294 101.5t-119 270t123 253t336 84h229v6q0 176 -186 176q-80 0 -169 -31.5t-151 -78.5l-137 199q217 158 496 157q201 0 327.5 -100t126.5 -318v-702zM772 420v53h-192q-184 0 -185 -115q0 -59 44 -90.5t126 -31.5t144.5 50 t62.5 134zM408 1440q0 90 64.5 154.5t154.5 64.5t154.5 -64.5t64.5 -154.5t-64.5 -154.5t-154.5 -64.5t-154.5 64.5t-64.5 154.5zM555 1439.5q0 -28.5 21.5 -50t50 -21.5t50 21.5t21.5 50t-21.5 50t-50 21.5t-50 -21.5t-21.5 -50z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1916" d="M1833 449h-756v-11q16 -92 86 -146t160 -54q145 0 270 153l181 -201q-197 -207 -467 -206q-236 0 -387 155q-158 -156 -404 -155q-180 0 -307 102t-127 264q0 334 459 334h229v14q0 172 -178 172q-127 0 -307 -127l-138 199q221 178 460 178t360 -114q143 115 355 114.5 t361.5 -136.5t149.5 -378v-157zM768 420v29h-193q-90 0 -137 -16.5t-47 -75t44 -90t126 -31.5t144.5 50t62.5 134zM1450 819q-55 47 -136 47t-147.5 -49t-85.5 -133h439q-15 88 -70 135z" />
+<glyph unicode="&#xe7;" horiz-adv-x="1193" d="M676 256q154 0 276 154l183 -205q-166 -172 -365 -211l-55 -103q133 -45 133 -155q0 -88 -73 -153.5t-183.5 -65.5t-214.5 65l78 176q45 -39 79.5 -39t54 18.5t19.5 46.5t-24.5 49.5t-58 21.5t-72.5 -19l84 160q-195 41 -324 188.5t-129 364.5q0 254 173 412.5t411 158.5 q119 0 240.5 -49t213.5 -145l-159 -209q-53 63 -130 98t-153 35q-121 0 -208 -79t-87 -219t87 -218t204 -78z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1265" d="M1100 160q-186 -176 -437 -176t-415 154.5t-164 414.5t167 413.5t394 153.5t386 -137t159 -377v-164h-803q14 -90 94 -147t181 -57q162 0 266 108zM804.5 813q-63.5 53 -154.5 53t-166.5 -55t-88.5 -149h484q-11 98 -74.5 151zM829 1251h-292l-285 230l315 135z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1265" d="M1100 160q-186 -176 -437 -176t-415 154.5t-164 414.5t167 413.5t394 153.5t386 -137t159 -377v-164h-803q14 -90 94 -147t181 -57q162 0 266 108zM804.5 813q-63.5 53 -154.5 53t-166.5 -55t-88.5 -149h484q-11 98 -74.5 151zM739 1251h-293l261 363l317 -133z" />
+<glyph unicode="&#xea;" horiz-adv-x="1265" d="M1100 160q-186 -176 -437 -176t-415 154.5t-164 414.5t167 413.5t394 153.5t386 -137t159 -377v-164h-803q14 -90 94 -147t181 -57q162 0 266 108zM804.5 813q-63.5 53 -154.5 53t-166.5 -55t-88.5 -149h484q-11 98 -74.5 151zM461 1251h-252l231 324h383l232 -324h-252 l-172 166z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1265" d="M1100 160q-186 -176 -437 -176t-415 154.5t-164 414.5t167 413.5t394 153.5t386 -137t159 -377v-164h-803q14 -90 94 -147t181 -57q162 0 266 108zM804.5 813q-63.5 53 -154.5 53t-166.5 -55t-88.5 -149h484q-11 98 -74.5 151zM297 1415.5q0 63.5 44 107.5t107.5 44 t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM692 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xec;" horiz-adv-x="598" d="M145 1102h308v-1102h-308v1102zM457 1251h-293l-285 230l316 135z" />
+<glyph unicode="&#xed;" horiz-adv-x="598" d="M145 1102h308v-1102h-308v1102zM449 1251h-293l260 363l317 -133z" />
+<glyph unicode="&#xee;" horiz-adv-x="598" d="M297 1397l-150 -146h-231l231 324h302l231 -324h-231zM145 1102h308v-1102h-308v1102z" />
+<glyph unicode="&#xef;" horiz-adv-x="598" d="M145 1102h308v-1102h-308v1102zM-49 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM346 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1222" d="M1135 553q0 -256 -136.5 -412.5t-373 -156.5t-386 140t-149.5 360.5t147.5 361.5t356.5 141q53 0 94 -8q-41 51 -127 145l-176 -114l-166 159l180 117q-31 27 -67 57l-76 64l252 149q86 -70 141 -120l162 106l170 -160l-170 -112q324 -371 324 -717zM452.5 313.5 q59.5 -71.5 159 -71.5t159.5 71.5t60 172t-61 172t-159.5 71.5t-158 -71.5t-59.5 -172t59.5 -172z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1308" d="M453 614v-614h-308v1102h308v-123q139 141 313 141t292 -123t118 -327v-670h-308v623q0 254 -186 254q-92 0 -160.5 -67t-68.5 -196zM549 1358q-63 0 -62 -107h-217q0 154 66.5 242t171.5 88q66 0 159 -56.5t113 -56.5q63 0 62 107h217q0 -154 -66.5 -242t-171.5 -88 q-63 0 -159.5 56.5t-112.5 56.5z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1327" d="M468 331q77 -85 196.5 -85t196.5 85t77 220t-77 221t-196.5 86t-196.5 -86t-77 -221t77 -220zM1081 147.5q-166 -163.5 -416.5 -163.5t-416.5 163.5t-166 403.5t166 404.5t416.5 164.5t416.5 -164.5t166 -404.5t-166 -403.5zM829 1251h-292l-285 230l315 135z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1327" d="M468 331q77 -85 196.5 -85t196.5 85t77 220t-77 221t-196.5 86t-196.5 -86t-77 -221t77 -220zM1081 147.5q-166 -163.5 -416.5 -163.5t-416.5 163.5t-166 403.5t166 404.5t416.5 164.5t416.5 -164.5t166 -404.5t-166 -403.5zM780 1251h-293l261 363l317 -133z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1327" d="M468 331q77 -85 196.5 -85t196.5 85t77 220t-77 221t-196.5 86t-196.5 -86t-77 -221t77 -220zM1081 147.5q-166 -163.5 -416.5 -163.5t-416.5 163.5t-166 403.5t166 404.5t416.5 164.5t416.5 -164.5t166 -404.5t-166 -403.5zM502 1251h-252l231 324h383l232 -324h-252 l-172 166z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1327" d="M468 331q77 -85 196.5 -85t196.5 85t77 220t-77 221t-196.5 86t-196.5 -86t-77 -221t77 -220zM1081 147.5q-166 -163.5 -416.5 -163.5t-416.5 163.5t-166 403.5t166 404.5t416.5 164.5t416.5 -164.5t166 -404.5t-166 -403.5zM551 1358q-63 0 -62 -107h-217q0 154 67 242 t171 88q66 0 159 -56.5t113 -56.5q63 0 62 107h217q0 -154 -66.5 -242t-171.5 -88q-63 0 -159.5 56.5t-112.5 56.5z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1327" d="M468 331q77 -85 196.5 -85t196.5 85t77 220t-77 221t-196.5 86t-196.5 -86t-77 -221t77 -220zM1081 147.5q-166 -163.5 -416.5 -163.5t-416.5 163.5t-166 403.5t166 404.5t416.5 164.5t416.5 -164.5t166 -404.5t-166 -403.5zM315 1415.5q0 63.5 44 107.5t107.5 44 t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM711 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xf7;" horiz-adv-x="1191" d="M416 327.5q0 75.5 52 128t128 52.5t128 -52.5t52 -128t-52 -128t-128 -52.5t-128 52.5t-52 128zM416 1104q0 76 52 128t128 52t128 -52t52 -128t-52 -128t-128 -52t-128 52t-52 128zM98 842h996v-252h-996v252z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1327" d="M664 -16q-45 0 -93 6l-90 -197h-288l133 291q-115 78 -179.5 201t-64.5 266q0 240 166 404.5t416 164.5q72 0 131 -14l77 174h291l-129 -283q213 -170 213 -446q0 -240 -165.5 -403.5t-417.5 -163.5zM468 772q-77 -86 -77 -212t58 -206l231 504h-16q-119 0 -196 -86z M869.5 341q68.5 83 68.5 191.5t-35 178.5l-213 -463q111 10 179.5 93z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1310" d="M856 508v594h309v-1102h-309v145q-115 -162 -296 -161.5t-304 114t-123 336.5v668h309v-600q0 -254 187 -254q92 0 159.5 66.5t67.5 193.5zM825 1251h-293l-284 230l315 135z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1310" d="M856 508v594h309v-1102h-309v145q-115 -162 -296 -161.5t-304 114t-123 336.5v668h309v-600q0 -254 187 -254q92 0 159.5 66.5t67.5 193.5zM776 1251h-293l260 363l318 -133z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1310" d="M856 508v594h309v-1102h-309v145q-115 -162 -296 -161.5t-304 114t-123 336.5v668h309v-600q0 -254 187 -254q92 0 159.5 66.5t67.5 193.5zM483 1251h-252l232 324h383l231 -324h-252l-172 166z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1310" d="M856 508v594h309v-1102h-309v145q-115 -162 -296 -161.5t-304 114t-123 336.5v668h309v-600q0 -254 187 -254q92 0 159.5 66.5t67.5 193.5zM293 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM688 1415.5 q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1208" d="M336 -434q-162 0 -305 131l139 227q78 -76 160 -76q43 0 73.5 42t30.5 89.5t-426 1122.5h328l268 -686l268 686h328l-512 -1299q-45 -113 -140 -175t-212 -62zM717 1251h-293l260 363l317 -133z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1363" d="M1121.5 966.5q158.5 -153.5 158.5 -409.5t-158.5 -414.5t-369.5 -158.5q-164 0 -299 104v-485h-308v1917h308v-510q123 111 295 110q215 0 373.5 -153.5zM523.5 331q74.5 -85 181 -85t186.5 85t80 218t-78 223t-186.5 90t-183 -89t-74.5 -223t74.5 -219z" />
+<glyph unicode="&#xff;" horiz-adv-x="1208" d="M336 -434q-162 0 -305 131l139 227q78 -76 160 -76q43 0 73.5 42t30.5 89.5t-426 1122.5h328l268 -686l268 686h328l-512 -1299q-45 -113 -140 -175t-212 -62zM254 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z M649 1415.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#x152;" horiz-adv-x="2134" d="M2003 1430v-283h-713v-295h639v-272h-639v-297h735v-283h-1200q-309 0 -519 205t-210 510t210 510t519 205h1178zM555 1031q-119 -130 -119 -315.5t119 -316.5t291 -131h123v893h-123q-172 0 -291 -130z" />
+<glyph unicode="&#x153;" horiz-adv-x="2119" d="M1954 160q-186 -176 -447.5 -176t-421.5 170q-166 -170 -418.5 -170t-418.5 163.5t-166 403.5t166 404.5t419 164.5t420 -172q162 172 400.5 172t397.5 -137t159 -377v-164h-803q14 -90 94 -147t181 -57q162 0 266 108zM938 537v14q0 135 -77 221t-196.5 86t-196.5 -86 t-77 -221t77 -220t194.5 -85t194.5 81t81 210zM1658.5 813q-63.5 53 -154.5 53t-166.5 -55t-88.5 -149h484q-11 98 -74.5 151z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="989" d="M324 1579h-252l231 324h383l232 -324h-252l-172 166z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1198" d="M498 1358q-63 0 -62 -107h-217q0 154 66.5 242t171.5 88q66 0 159 -56.5t113 -56.5q63 0 62 107h217q0 -154 -67 -242t-171 -88q-63 0 -159.5 56.5t-112.5 56.5z" />
+<glyph unicode="&#x2000;" horiz-adv-x="971" />
+<glyph unicode="&#x2001;" horiz-adv-x="1942" />
+<glyph unicode="&#x2002;" horiz-adv-x="971" />
+<glyph unicode="&#x2003;" horiz-adv-x="1942" />
+<glyph unicode="&#x2004;" horiz-adv-x="647" />
+<glyph unicode="&#x2005;" horiz-adv-x="485" />
+<glyph unicode="&#x2006;" horiz-adv-x="323" />
+<glyph unicode="&#x2007;" horiz-adv-x="323" />
+<glyph unicode="&#x2008;" horiz-adv-x="242" />
+<glyph unicode="&#x2009;" horiz-adv-x="388" />
+<glyph unicode="&#x200a;" horiz-adv-x="107" />
+<glyph unicode="&#x2010;" horiz-adv-x="1003" d="M137 479v273h729v-273h-729z" />
+<glyph unicode="&#x2011;" horiz-adv-x="1003" d="M137 479v273h729v-273h-729z" />
+<glyph unicode="&#x2012;" horiz-adv-x="1003" d="M137 479v273h729v-273h-729z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1112" d="M152 440v199h809v-199h-809z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1427" d="M131 442v197h1165v-197h-1165z" />
+<glyph unicode="&#x2018;" horiz-adv-x="491" d="M344 1221q68 -45 68 -126t-48.5 -128t-121 -47t-120.5 45t-48 116.5t45 141.5l149 217h168z" />
+<glyph unicode="&#x2019;" horiz-adv-x="491" d="M147 1133q-68 45 -67.5 125.5t48.5 128t121 47.5t121 -45.5t48 -117t-45 -141.5l-150 -217h-168z" />
+<glyph unicode="&#x201a;" horiz-adv-x="491" d="M147 23q-68 45 -67.5 125.5t48.5 128t121 47.5t121 -45.5t48 -117t-45 -141.5l-150 -217h-168z" />
+<glyph unicode="&#x201c;" horiz-adv-x="870" d="M344 1221q68 -45 68 -126t-48.5 -128t-121 -47t-120.5 45t-48 116.5t45 141.5l149 217h168zM723 1221q68 -45 68 -126t-48.5 -128t-121 -47t-120.5 45t-48 116.5t45 141.5l149 217h168z" />
+<glyph unicode="&#x201d;" horiz-adv-x="870" d="M147 1133q-68 45 -67.5 125.5t48.5 128t121 47.5t121 -45.5t48 -117t-45 -141.5l-150 -217h-168zM526 1133q-68 45 -67.5 125.5t48.5 128t120.5 47.5t121 -45.5t48.5 -117t-45 -141.5l-150 -217h-168z" />
+<glyph unicode="&#x201e;" horiz-adv-x="870" d="M147 23q-68 45 -67.5 125.5t48.5 128t121 47.5t121 -45.5t48 -117t-45 -141.5l-150 -217h-168zM526 23q-68 45 -67.5 125.5t48.5 128t120.5 47.5t121 -45.5t48.5 -117t-45 -141.5l-150 -217h-168z" />
+<glyph unicode="&#x2022;" horiz-adv-x="897" d="M164 649q0 119 83 202t201.5 83t201.5 -83t83 -202t-83 -201.5t-201.5 -82.5t-201.5 82.5t-83 201.5z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1435" d="M958 162q0 76 52.5 128t128 52t128 -52t52.5 -128t-52.5 -128t-128 -52t-128 52t-52.5 128zM537 162q0 76 52 128t128 52t128 -52t52 -128t-52 -128t-128 -52t-128 52t-52 128zM117 162q0 76 52 128t128 52t128 -52t52 -128t-52 -128t-128 -52t-128 52t-52 128z" />
+<glyph unicode="&#x202f;" horiz-adv-x="388" />
+<glyph unicode="&#x2039;" horiz-adv-x="776" d="M657 879l-241 -377l241 -379h-309l-250 379l250 377h309z" />
+<glyph unicode="&#x203a;" horiz-adv-x="776" d="M360 502l-241 377h309l250 -377l-250 -379h-309z" />
+<glyph unicode="&#x205f;" horiz-adv-x="485" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1568" d="M94 778v172h199q61 233 234 373.5t421 140.5q307 0 527 -247l-183 -238q-150 182 -352 182q-229 0 -317 -211h477v-172h-514q-2 -20 -2 -61t2 -60h514v-172h-467q49 -96 134 -147t187 -51q203 0 332 162l189 -209q-111 -129 -255.5 -192.5t-287.5 -63.5 q-231 0 -403.5 136t-235.5 365h-199v172h172q-2 18 -2 59.5t2 61.5h-172z" />
+<glyph unicode="&#x2122;" horiz-adv-x="2027" d="M592 1221v-654h-225v654h-238v211h700v-211h-237zM1108 567h-225v865h286l203 -431l203 431h285v-865h-226v459l-192 -391h-142l-192 391v-459z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1105" d="M0 1106h1106v-1106h-1106v1106z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1421" d="M512 1165v-73h266v-222h-266v-870h-309v870h-129v222h129v67q0 180 109.5 285.5t272.5 105.5t296 -123l-111 -206q-68 78 -149 77q-47 0 -78 -33.5t-31 -99.5zM1276 0h-307v1102h307v-1102zM942 1370q0 76 52.5 128t128 52t128 -52t52.5 -128t-52.5 -128t-128 -52 t-128 52t-52.5 128z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1421" d="M512 1165v-73h266v-222h-266v-870h-309v870h-129v222h129v67q0 180 109.5 285.5t272.5 105.5t296 -123l-111 -206q-68 78 -149 77q-47 0 -78 -33.5t-31 -99.5zM1276 0h-307v1520h307v-1520z" />
+<hkern u1="&#x26;" u2="&#x2019;" k="57" />
+<hkern u1="&#x26;" u2="&#xc6;" k="-27" />
+<hkern u1="&#x26;" u2="Y" k="47" />
+<hkern u1="&#x26;" u2="W" k="35" />
+<hkern u1="&#x26;" u2="V" k="43" />
+<hkern u1="&#x26;" u2="T" k="43" />
+<hkern u1="&#x26;" u2="A" k="-16" />
+<hkern u1="&#x26;" u2="&#x27;" k="55" />
+<hkern u1="&#x27;" u2="&#x2039;" k="35" />
+<hkern u1="&#x27;" u2="&#xf0;" k="18" />
+<hkern u1="&#x27;" u2="&#xc6;" k="96" />
+<hkern u1="&#x27;" u2="d" k="23" />
+<hkern u1="&#x27;" u2="J" k="33" />
+<hkern u1="&#x27;" u2="A" k="84" />
+<hkern u1="&#x27;" u2="&#x34;" k="35" />
+<hkern u1="&#x27;" u2="&#x2f;" k="137" />
+<hkern u1="&#x27;" u2="&#x2e;" k="236" />
+<hkern u1="&#x27;" u2="&#x26;" k="33" />
+<hkern u1="&#x28;" u2="&#xf0;" k="37" />
+<hkern u1="&#x28;" u2="&#xef;" k="-27" />
+<hkern u1="&#x28;" u2="&#xec;" k="-90" />
+<hkern u1="&#x28;" u2="&#x7b;" k="20" />
+<hkern u1="&#x28;" u2="w" k="27" />
+<hkern u1="&#x28;" u2="v" k="23" />
+<hkern u1="&#x28;" u2="u" k="41" />
+<hkern u1="&#x28;" u2="t" k="25" />
+<hkern u1="&#x28;" u2="s" k="35" />
+<hkern u1="&#x28;" u2="q" k="53" />
+<hkern u1="&#x28;" u2="o" k="55" />
+<hkern u1="&#x28;" u2="n" k="29" />
+<hkern u1="&#x28;" u2="j" k="-207" />
+<hkern u1="&#x28;" u2="f" k="25" />
+<hkern u1="&#x28;" u2="d" k="53" />
+<hkern u1="&#x28;" u2="a" k="41" />
+<hkern u1="&#x28;" u2="S" k="25" />
+<hkern u1="&#x28;" u2="O" k="45" />
+<hkern u1="&#x28;" u2="&#x39;" k="20" />
+<hkern u1="&#x28;" u2="&#x38;" k="31" />
+<hkern u1="&#x28;" u2="&#x36;" k="39" />
+<hkern u1="&#x28;" u2="&#x34;" k="45" />
+<hkern u1="&#x28;" u2="&#x30;" k="39" />
+<hkern u1="&#x28;" u2="&#x28;" k="20" />
+<hkern u1="&#x29;" u2="&#x29;" k="20" />
+<hkern u1="&#x2a;" u2="&#x2019;" k="-12" />
+<hkern u1="&#x2a;" u2="&#xf0;" k="23" />
+<hkern u1="&#x2a;" u2="&#xef;" k="-18" />
+<hkern u1="&#x2a;" u2="&#xee;" k="-59" />
+<hkern u1="&#x2a;" u2="&#xc6;" k="92" />
+<hkern u1="&#x2a;" u2="y" k="-27" />
+<hkern u1="&#x2a;" u2="o" k="16" />
+<hkern u1="&#x2a;" u2="d" k="23" />
+<hkern u1="&#x2a;" u2="J" k="37" />
+<hkern u1="&#x2a;" u2="A" k="82" />
+<hkern u1="&#x2d;" u2="&#xc6;" k="18" />
+<hkern u1="&#x2d;" u2="z" k="18" />
+<hkern u1="&#x2d;" u2="x" k="43" />
+<hkern u1="&#x2d;" u2="Z" k="31" />
+<hkern u1="&#x2d;" u2="Y" k="78" />
+<hkern u1="&#x2d;" u2="X" k="55" />
+<hkern u1="&#x2d;" u2="W" k="37" />
+<hkern u1="&#x2d;" u2="V" k="49" />
+<hkern u1="&#x2d;" u2="T" k="109" />
+<hkern u1="&#x2d;" u2="J" k="49" />
+<hkern u1="&#x2d;" u2="A" k="25" />
+<hkern u1="&#x2d;" u2="&#x37;" k="27" />
+<hkern u1="&#x2d;" u2="&#x33;" k="33" />
+<hkern u1="&#x2d;" u2="&#x32;" k="31" />
+<hkern u1="&#x2d;" u2="&#x31;" k="47" />
+<hkern u1="&#x2e;" u2="&#x2019;" k="264" />
+<hkern u1="&#x2e;" u2="&#x2018;" k="264" />
+<hkern u1="&#x2e;" u2="y" k="70" />
+<hkern u1="&#x2e;" u2="w" k="53" />
+<hkern u1="&#x2e;" u2="v" k="68" />
+<hkern u1="&#x2e;" u2="t" k="29" />
+<hkern u1="&#x2e;" u2="f" k="16" />
+<hkern u1="&#x2e;" u2="Y" k="111" />
+<hkern u1="&#x2e;" u2="W" k="90" />
+<hkern u1="&#x2e;" u2="V" k="113" />
+<hkern u1="&#x2e;" u2="U" k="27" />
+<hkern u1="&#x2e;" u2="T" k="111" />
+<hkern u1="&#x2e;" u2="O" k="31" />
+<hkern u1="&#x2e;" u2="&#x37;" k="29" />
+<hkern u1="&#x2e;" u2="&#x31;" k="57" />
+<hkern u1="&#x2e;" u2="&#x27;" k="236" />
+<hkern u1="&#x2f;" u2="&#xf0;" k="43" />
+<hkern u1="&#x2f;" u2="&#xec;" k="-55" />
+<hkern u1="&#x2f;" u2="&#xce;" k="-78" />
+<hkern u1="&#x2f;" u2="&#xc6;" k="129" />
+<hkern u1="&#x2f;" u2="z" k="49" />
+<hkern u1="&#x2f;" u2="x" k="27" />
+<hkern u1="&#x2f;" u2="u" k="49" />
+<hkern u1="&#x2f;" u2="s" k="84" />
+<hkern u1="&#x2f;" u2="q" k="88" />
+<hkern u1="&#x2f;" u2="o" k="88" />
+<hkern u1="&#x2f;" u2="n" k="51" />
+<hkern u1="&#x2f;" u2="f" k="27" />
+<hkern u1="&#x2f;" u2="d" k="86" />
+<hkern u1="&#x2f;" u2="a" k="74" />
+<hkern u1="&#x2f;" u2="S" k="35" />
+<hkern u1="&#x2f;" u2="O" k="49" />
+<hkern u1="&#x2f;" u2="J" k="27" />
+<hkern u1="&#x2f;" u2="A" k="121" />
+<hkern u1="&#x2f;" u2="&#x39;" k="23" />
+<hkern u1="&#x2f;" u2="&#x38;" k="37" />
+<hkern u1="&#x2f;" u2="&#x36;" k="43" />
+<hkern u1="&#x2f;" u2="&#x34;" k="82" />
+<hkern u1="&#x2f;" u2="&#x30;" k="41" />
+<hkern u1="&#x2f;" u2="&#x2f;" k="580" />
+<hkern u1="&#x3a;" u2="&#x2019;" k="20" />
+<hkern u1="&#x3a;" u2="y" k="16" />
+<hkern u1="&#x3a;" u2="Y" k="70" />
+<hkern u1="&#x3a;" u2="W" k="37" />
+<hkern u1="&#x3a;" u2="V" k="49" />
+<hkern u1="&#x3a;" u2="T" k="102" />
+<hkern u1="&#x40;" u2="Y" k="45" />
+<hkern u1="&#x40;" u2="W" k="20" />
+<hkern u1="&#x40;" u2="V" k="31" />
+<hkern u1="&#x40;" u2="T" k="41" />
+<hkern u1="A" u2="&#x2122;" k="86" />
+<hkern u1="A" u2="&#x2019;" k="96" />
+<hkern u1="A" u2="&#x2018;" k="96" />
+<hkern u1="A" u2="&#xf0;" k="23" />
+<hkern u1="A" u2="&#xae;" k="23" />
+<hkern u1="A" u2="y" k="63" />
+<hkern u1="A" u2="w" k="57" />
+<hkern u1="A" u2="v" k="63" />
+<hkern u1="A" u2="u" k="20" />
+<hkern u1="A" u2="t" k="57" />
+<hkern u1="A" u2="q" k="25" />
+<hkern u1="A" u2="o" k="27" />
+<hkern u1="A" u2="f" k="23" />
+<hkern u1="A" u2="d" k="27" />
+<hkern u1="A" u2="a" k="10" />
+<hkern u1="A" u2="\" k="111" />
+<hkern u1="A" u2="Y" k="100" />
+<hkern u1="A" u2="W" k="76" />
+<hkern u1="A" u2="V" k="88" />
+<hkern u1="A" u2="U" k="39" />
+<hkern u1="A" u2="T" k="104" />
+<hkern u1="A" u2="S" k="10" />
+<hkern u1="A" u2="O" k="43" />
+<hkern u1="A" u2="&#x3f;" k="39" />
+<hkern u1="A" u2="&#x31;" k="39" />
+<hkern u1="A" u2="&#x2d;" k="25" />
+<hkern u1="A" u2="&#x2a;" k="82" />
+<hkern u1="A" u2="&#x27;" k="84" />
+<hkern u1="B" u2="&#xf0;" k="10" />
+<hkern u1="B" u2="z" k="12" />
+<hkern u1="B" u2="y" k="20" />
+<hkern u1="B" u2="x" k="31" />
+<hkern u1="B" u2="w" k="18" />
+<hkern u1="B" u2="v" k="18" />
+<hkern u1="B" u2="u" k="10" />
+<hkern u1="B" u2="t" k="23" />
+<hkern u1="B" u2="s" k="18" />
+<hkern u1="B" u2="o" k="10" />
+<hkern u1="B" u2="f" k="20" />
+<hkern u1="B" u2="d" k="10" />
+<hkern u1="B" u2="]" k="33" />
+<hkern u1="B" u2="\" k="29" />
+<hkern u1="B" u2="Z" k="12" />
+<hkern u1="B" u2="Y" k="41" />
+<hkern u1="B" u2="X" k="25" />
+<hkern u1="B" u2="W" k="20" />
+<hkern u1="B" u2="V" k="31" />
+<hkern u1="B" u2="T" k="37" />
+<hkern u1="B" u2="J" k="18" />
+<hkern u1="B" u2="A" k="16" />
+<hkern u1="B" u2="&#x2f;" k="25" />
+<hkern u1="B" u2="&#x29;" k="33" />
+<hkern u1="C" u2="&#x2122;" k="-45" />
+<hkern u1="C" u2="&#xf0;" k="33" />
+<hkern u1="C" u2="&#xef;" k="-14" />
+<hkern u1="C" u2="&#xee;" k="-27" />
+<hkern u1="C" u2="u" k="16" />
+<hkern u1="C" u2="t" k="10" />
+<hkern u1="C" u2="s" k="23" />
+<hkern u1="C" u2="q" k="41" />
+<hkern u1="C" u2="o" k="43" />
+<hkern u1="C" u2="n" k="14" />
+<hkern u1="C" u2="f" k="10" />
+<hkern u1="C" u2="d" k="43" />
+<hkern u1="C" u2="a" k="12" />
+<hkern u1="C" u2="O" k="31" />
+<hkern u1="C" u2="A" k="10" />
+<hkern u1="C" u2="&#x2d;" k="16" />
+<hkern u1="C" u2="&#x2a;" k="-29" />
+<hkern u1="D" u2="&#xf0;" k="12" />
+<hkern u1="D" u2="&#xc6;" k="41" />
+<hkern u1="D" u2="z" k="16" />
+<hkern u1="D" u2="x" k="31" />
+<hkern u1="D" u2="u" k="10" />
+<hkern u1="D" u2="t" k="10" />
+<hkern u1="D" u2="s" k="18" />
+<hkern u1="D" u2="n" k="12" />
+<hkern u1="D" u2="l" k="12" />
+<hkern u1="D" u2="i" k="12" />
+<hkern u1="D" u2="h" k="12" />
+<hkern u1="D" u2="f" k="10" />
+<hkern u1="D" u2="a" k="14" />
+<hkern u1="D" u2="]" k="43" />
+<hkern u1="D" u2="\" k="37" />
+<hkern u1="D" u2="Z" k="27" />
+<hkern u1="D" u2="Y" k="49" />
+<hkern u1="D" u2="X" k="53" />
+<hkern u1="D" u2="W" k="23" />
+<hkern u1="D" u2="V" k="33" />
+<hkern u1="D" u2="T" k="37" />
+<hkern u1="D" u2="S" k="10" />
+<hkern u1="D" u2="J" k="41" />
+<hkern u1="D" u2="A" k="41" />
+<hkern u1="D" u2="&#x2f;" k="53" />
+<hkern u1="D" u2="&#x2e;" k="23" />
+<hkern u1="D" u2="&#x29;" k="45" />
+<hkern u1="E" u2="&#xf0;" k="25" />
+<hkern u1="E" u2="&#xee;" k="-14" />
+<hkern u1="E" u2="u" k="14" />
+<hkern u1="E" u2="t" k="16" />
+<hkern u1="E" u2="s" k="10" />
+<hkern u1="E" u2="q" k="25" />
+<hkern u1="E" u2="o" k="25" />
+<hkern u1="E" u2="n" k="10" />
+<hkern u1="E" u2="f" k="12" />
+<hkern u1="E" u2="d" k="25" />
+<hkern u1="E" u2="a" k="14" />
+<hkern u1="E" u2="O" k="23" />
+<hkern u1="F" u2="&#xf0;" k="29" />
+<hkern u1="F" u2="&#xef;" k="-18" />
+<hkern u1="F" u2="&#xee;" k="-51" />
+<hkern u1="F" u2="&#xec;" k="-18" />
+<hkern u1="F" u2="&#xc6;" k="94" />
+<hkern u1="F" u2="z" k="25" />
+<hkern u1="F" u2="x" k="14" />
+<hkern u1="F" u2="u" k="16" />
+<hkern u1="F" u2="t" k="10" />
+<hkern u1="F" u2="s" k="35" />
+<hkern u1="F" u2="q" k="23" />
+<hkern u1="F" u2="o" k="23" />
+<hkern u1="F" u2="n" k="20" />
+<hkern u1="F" u2="f" k="10" />
+<hkern u1="F" u2="d" k="23" />
+<hkern u1="F" u2="a" k="31" />
+<hkern u1="F" u2="S" k="10" />
+<hkern u1="F" u2="J" k="39" />
+<hkern u1="F" u2="A" k="78" />
+<hkern u1="F" u2="&#x2f;" k="80" />
+<hkern u1="F" u2="&#x2e;" k="82" />
+<hkern u1="G" u2="z" k="10" />
+<hkern u1="G" u2="y" k="18" />
+<hkern u1="G" u2="x" k="18" />
+<hkern u1="G" u2="w" k="18" />
+<hkern u1="G" u2="v" k="16" />
+<hkern u1="G" u2="t" k="18" />
+<hkern u1="G" u2="s" k="10" />
+<hkern u1="G" u2="f" k="16" />
+<hkern u1="G" u2="Y" k="25" />
+<hkern u1="G" u2="X" k="12" />
+<hkern u1="G" u2="W" k="12" />
+<hkern u1="G" u2="V" k="20" />
+<hkern u1="G" u2="T" k="23" />
+<hkern u1="G" u2="A" k="12" />
+<hkern u1="G" u2="&#x29;" k="23" />
+<hkern u1="I" u2="&#xf0;" k="25" />
+<hkern u1="I" u2="z" k="12" />
+<hkern u1="I" u2="u" k="10" />
+<hkern u1="I" u2="t" k="18" />
+<hkern u1="I" u2="s" k="14" />
+<hkern u1="I" u2="q" k="20" />
+<hkern u1="I" u2="o" k="20" />
+<hkern u1="I" u2="n" k="10" />
+<hkern u1="I" u2="l" k="10" />
+<hkern u1="I" u2="i" k="10" />
+<hkern u1="I" u2="h" k="10" />
+<hkern u1="I" u2="f" k="16" />
+<hkern u1="I" u2="d" k="20" />
+<hkern u1="I" u2="a" k="14" />
+<hkern u1="J" u2="&#xf0;" k="25" />
+<hkern u1="J" u2="&#xc6;" k="23" />
+<hkern u1="J" u2="z" k="18" />
+<hkern u1="J" u2="x" k="12" />
+<hkern u1="J" u2="u" k="16" />
+<hkern u1="J" u2="t" k="14" />
+<hkern u1="J" u2="s" k="23" />
+<hkern u1="J" u2="q" k="18" />
+<hkern u1="J" u2="o" k="18" />
+<hkern u1="J" u2="n" k="10" />
+<hkern u1="J" u2="l" k="12" />
+<hkern u1="J" u2="i" k="12" />
+<hkern u1="J" u2="h" k="12" />
+<hkern u1="J" u2="f" k="14" />
+<hkern u1="J" u2="d" k="18" />
+<hkern u1="J" u2="a" k="18" />
+<hkern u1="J" u2="J" k="16" />
+<hkern u1="J" u2="A" k="20" />
+<hkern u1="J" u2="&#x2f;" k="41" />
+<hkern u1="K" u2="&#x2039;" k="29" />
+<hkern u1="K" u2="&#xf0;" k="82" />
+<hkern u1="K" u2="&#xef;" k="-84" />
+<hkern u1="K" u2="&#xee;" k="-31" />
+<hkern u1="K" u2="&#xec;" k="-88" />
+<hkern u1="K" u2="&#xae;" k="20" />
+<hkern u1="K" u2="y" k="53" />
+<hkern u1="K" u2="w" k="59" />
+<hkern u1="K" u2="v" k="53" />
+<hkern u1="K" u2="u" k="49" />
+<hkern u1="K" u2="t" k="31" />
+<hkern u1="K" u2="s" k="14" />
+<hkern u1="K" u2="q" k="90" />
+<hkern u1="K" u2="o" k="96" />
+<hkern u1="K" u2="n" k="14" />
+<hkern u1="K" u2="f" k="23" />
+<hkern u1="K" u2="d" k="94" />
+<hkern u1="K" u2="a" k="33" />
+<hkern u1="K" u2="S" k="39" />
+<hkern u1="K" u2="O" k="74" />
+<hkern u1="K" u2="&#x2d;" k="55" />
+<hkern u1="L" u2="&#x2122;" k="162" />
+<hkern u1="L" u2="&#x2019;" k="168" />
+<hkern u1="L" u2="&#x2018;" k="168" />
+<hkern u1="L" u2="&#xb7;" k="123" />
+<hkern u1="L" u2="y" k="98" />
+<hkern u1="L" u2="w" k="82" />
+<hkern u1="L" u2="v" k="100" />
+<hkern u1="L" u2="u" k="14" />
+<hkern u1="L" u2="t" k="55" />
+<hkern u1="L" u2="q" k="14" />
+<hkern u1="L" u2="o" k="14" />
+<hkern u1="L" u2="f" k="31" />
+<hkern u1="L" u2="d" k="14" />
+<hkern u1="L" u2="\" k="131" />
+<hkern u1="L" u2="Y" k="125" />
+<hkern u1="L" u2="W" k="102" />
+<hkern u1="L" u2="V" k="121" />
+<hkern u1="L" u2="U" k="31" />
+<hkern u1="L" u2="T" k="127" />
+<hkern u1="L" u2="O" k="39" />
+<hkern u1="L" u2="&#x3f;" k="45" />
+<hkern u1="L" u2="&#x31;" k="41" />
+<hkern u1="L" u2="&#x2d;" k="100" />
+<hkern u1="L" u2="&#x2a;" k="170" />
+<hkern u1="L" u2="&#x27;" k="166" />
+<hkern u1="O" u2="&#xf0;" k="14" />
+<hkern u1="O" u2="&#xc6;" k="47" />
+<hkern u1="O" u2="z" k="18" />
+<hkern u1="O" u2="x" k="33" />
+<hkern u1="O" u2="t" k="12" />
+<hkern u1="O" u2="s" k="16" />
+<hkern u1="O" u2="n" k="12" />
+<hkern u1="O" u2="l" k="12" />
+<hkern u1="O" u2="i" k="12" />
+<hkern u1="O" u2="h" k="12" />
+<hkern u1="O" u2="f" k="10" />
+<hkern u1="O" u2="a" k="14" />
+<hkern u1="O" u2="]" k="43" />
+<hkern u1="O" u2="\" k="37" />
+<hkern u1="O" u2="Z" k="29" />
+<hkern u1="O" u2="Y" k="51" />
+<hkern u1="O" u2="X" k="55" />
+<hkern u1="O" u2="W" k="23" />
+<hkern u1="O" u2="V" k="33" />
+<hkern u1="O" u2="T" k="39" />
+<hkern u1="O" u2="S" k="12" />
+<hkern u1="O" u2="J" k="45" />
+<hkern u1="O" u2="A" k="43" />
+<hkern u1="O" u2="&#x2f;" k="55" />
+<hkern u1="O" u2="&#x2e;" k="31" />
+<hkern u1="O" u2="&#x29;" k="45" />
+<hkern u1="P" u2="&#xf0;" k="25" />
+<hkern u1="P" u2="&#xc6;" k="104" />
+<hkern u1="P" u2="z" k="10" />
+<hkern u1="P" u2="s" k="16" />
+<hkern u1="P" u2="q" k="12" />
+<hkern u1="P" u2="o" k="14" />
+<hkern u1="P" u2="d" k="12" />
+<hkern u1="P" u2="a" k="18" />
+<hkern u1="P" u2="]" k="25" />
+<hkern u1="P" u2="Z" k="16" />
+<hkern u1="P" u2="Y" k="10" />
+<hkern u1="P" u2="X" k="43" />
+<hkern u1="P" u2="J" k="59" />
+<hkern u1="P" u2="A" k="84" />
+<hkern u1="P" u2="&#x2f;" k="90" />
+<hkern u1="P" u2="&#x2e;" k="106" />
+<hkern u1="P" u2="&#x29;" k="37" />
+<hkern u1="Q" u2="&#x201e;" k="6" />
+<hkern u1="Q" u2="&#x201a;" k="6" />
+<hkern u1="Q" u2="&#xc6;" k="29" />
+<hkern u1="Q" u2="j" k="-172" />
+<hkern u1="Q" u2="]" k="-6" />
+<hkern u1="Q" u2="&#x2f;" k="31" />
+<hkern u1="R" u2="&#x2039;" k="29" />
+<hkern u1="R" u2="&#xf0;" k="45" />
+<hkern u1="R" u2="y" k="14" />
+<hkern u1="R" u2="w" k="12" />
+<hkern u1="R" u2="v" k="12" />
+<hkern u1="R" u2="u" k="23" />
+<hkern u1="R" u2="t" k="20" />
+<hkern u1="R" u2="q" k="37" />
+<hkern u1="R" u2="o" k="41" />
+<hkern u1="R" u2="n" k="10" />
+<hkern u1="R" u2="l" k="10" />
+<hkern u1="R" u2="i" k="10" />
+<hkern u1="R" u2="h" k="10" />
+<hkern u1="R" u2="f" k="14" />
+<hkern u1="R" u2="d" k="37" />
+<hkern u1="R" u2="a" k="27" />
+<hkern u1="R" u2="\" k="33" />
+<hkern u1="R" u2="Y" k="37" />
+<hkern u1="R" u2="W" k="18" />
+<hkern u1="R" u2="V" k="27" />
+<hkern u1="R" u2="T" k="29" />
+<hkern u1="R" u2="O" k="14" />
+<hkern u1="R" u2="J" k="16" />
+<hkern u1="S" u2="&#xf0;" k="10" />
+<hkern u1="S" u2="&#xee;" k="-31" />
+<hkern u1="S" u2="z" k="18" />
+<hkern u1="S" u2="y" k="25" />
+<hkern u1="S" u2="x" k="23" />
+<hkern u1="S" u2="w" k="25" />
+<hkern u1="S" u2="v" k="20" />
+<hkern u1="S" u2="u" k="14" />
+<hkern u1="S" u2="t" k="29" />
+<hkern u1="S" u2="s" k="20" />
+<hkern u1="S" u2="q" k="10" />
+<hkern u1="S" u2="o" k="10" />
+<hkern u1="S" u2="n" k="16" />
+<hkern u1="S" u2="f" k="29" />
+<hkern u1="S" u2="d" k="10" />
+<hkern u1="S" u2="Y" k="10" />
+<hkern u1="S" u2="X" k="10" />
+<hkern u1="S" u2="V" k="10" />
+<hkern u1="S" u2="T" k="12" />
+<hkern u1="S" u2="A" k="16" />
+<hkern u1="S" u2="&#x2f;" k="25" />
+<hkern u1="T" u2="&#x203a;" k="98" />
+<hkern u1="T" u2="&#x2039;" k="115" />
+<hkern u1="T" u2="&#xf1;" k="78" />
+<hkern u1="T" u2="&#xf0;" k="82" />
+<hkern u1="T" u2="&#xef;" k="-53" />
+<hkern u1="T" u2="&#xee;" k="-88" />
+<hkern u1="T" u2="&#xed;" k="27" />
+<hkern u1="T" u2="&#xec;" k="-57" />
+<hkern u1="T" u2="&#xdf;" k="27" />
+<hkern u1="T" u2="&#xc6;" k="113" />
+<hkern u1="T" u2="z" k="137" />
+<hkern u1="T" u2="y" k="135" />
+<hkern u1="T" u2="x" k="131" />
+<hkern u1="T" u2="w" k="125" />
+<hkern u1="T" u2="v" k="133" />
+<hkern u1="T" u2="u" k="100" />
+<hkern u1="T" u2="s" k="131" />
+<hkern u1="T" u2="q" k="119" />
+<hkern u1="T" u2="o" k="123" />
+<hkern u1="T" u2="n" k="43" />
+<hkern u1="T" u2="l" k="10" />
+<hkern u1="T" u2="i" k="10" />
+<hkern u1="T" u2="h" k="10" />
+<hkern u1="T" u2="f" k="14" />
+<hkern u1="T" u2="d" k="119" />
+<hkern u1="T" u2="a" k="131" />
+<hkern u1="T" u2="S" k="12" />
+<hkern u1="T" u2="O" k="39" />
+<hkern u1="T" u2="J" k="31" />
+<hkern u1="T" u2="A" k="104" />
+<hkern u1="T" u2="&#x40;" k="45" />
+<hkern u1="T" u2="&#x3a;" k="102" />
+<hkern u1="T" u2="&#x34;" k="57" />
+<hkern u1="T" u2="&#x2f;" k="102" />
+<hkern u1="T" u2="&#x2e;" k="111" />
+<hkern u1="T" u2="&#x2d;" k="109" />
+<hkern u1="T" u2="&#x26;" k="25" />
+<hkern u1="U" u2="&#xf0;" k="27" />
+<hkern u1="U" u2="&#xc6;" k="43" />
+<hkern u1="U" u2="z" k="23" />
+<hkern u1="U" u2="x" k="14" />
+<hkern u1="U" u2="u" k="16" />
+<hkern u1="U" u2="t" k="14" />
+<hkern u1="U" u2="s" k="29" />
+<hkern u1="U" u2="q" k="20" />
+<hkern u1="U" u2="o" k="20" />
+<hkern u1="U" u2="n" k="16" />
+<hkern u1="U" u2="l" k="12" />
+<hkern u1="U" u2="i" k="12" />
+<hkern u1="U" u2="h" k="12" />
+<hkern u1="U" u2="f" k="14" />
+<hkern u1="U" u2="d" k="20" />
+<hkern u1="U" u2="a" k="23" />
+<hkern u1="U" u2="J" k="27" />
+<hkern u1="U" u2="A" k="37" />
+<hkern u1="U" u2="&#x2f;" k="51" />
+<hkern u1="U" u2="&#x2e;" k="27" />
+<hkern u1="V" u2="&#x2122;" k="-29" />
+<hkern u1="V" u2="&#x203a;" k="31" />
+<hkern u1="V" u2="&#x2039;" k="70" />
+<hkern u1="V" u2="&#xf0;" k="61" />
+<hkern u1="V" u2="&#xef;" k="-115" />
+<hkern u1="V" u2="&#xee;" k="-86" />
+<hkern u1="V" u2="&#xed;" k="23" />
+<hkern u1="V" u2="&#xec;" k="-117" />
+<hkern u1="V" u2="&#xdf;" k="27" />
+<hkern u1="V" u2="&#xc6;" k="96" />
+<hkern u1="V" u2="z" k="49" />
+<hkern u1="V" u2="x" k="16" />
+<hkern u1="V" u2="u" k="49" />
+<hkern u1="V" u2="t" k="12" />
+<hkern u1="V" u2="s" k="98" />
+<hkern u1="V" u2="q" k="94" />
+<hkern u1="V" u2="o" k="94" />
+<hkern u1="V" u2="n" k="57" />
+<hkern u1="V" u2="f" k="16" />
+<hkern u1="V" u2="d" k="94" />
+<hkern u1="V" u2="a" k="84" />
+<hkern u1="V" u2="S" k="18" />
+<hkern u1="V" u2="O" k="33" />
+<hkern u1="V" u2="J" k="31" />
+<hkern u1="V" u2="A" k="88" />
+<hkern u1="V" u2="&#x40;" k="31" />
+<hkern u1="V" u2="&#x3a;" k="49" />
+<hkern u1="V" u2="&#x34;" k="39" />
+<hkern u1="V" u2="&#x31;" k="-16" />
+<hkern u1="V" u2="&#x2f;" k="111" />
+<hkern u1="V" u2="&#x2e;" k="113" />
+<hkern u1="V" u2="&#x2d;" k="49" />
+<hkern u1="V" u2="&#x26;" k="27" />
+<hkern u1="W" u2="&#x2122;" k="-12" />
+<hkern u1="W" u2="&#x2039;" k="55" />
+<hkern u1="W" u2="&#xf0;" k="57" />
+<hkern u1="W" u2="&#xef;" k="-98" />
+<hkern u1="W" u2="&#xee;" k="-74" />
+<hkern u1="W" u2="&#xed;" k="18" />
+<hkern u1="W" u2="&#xec;" k="-100" />
+<hkern u1="W" u2="&#xdf;" k="25" />
+<hkern u1="W" u2="&#xc6;" k="86" />
+<hkern u1="W" u2="z" k="41" />
+<hkern u1="W" u2="x" k="12" />
+<hkern u1="W" u2="u" k="41" />
+<hkern u1="W" u2="s" k="88" />
+<hkern u1="W" u2="q" k="82" />
+<hkern u1="W" u2="o" k="86" />
+<hkern u1="W" u2="n" k="47" />
+<hkern u1="W" u2="f" k="12" />
+<hkern u1="W" u2="d" k="80" />
+<hkern u1="W" u2="a" k="70" />
+<hkern u1="W" u2="S" k="10" />
+<hkern u1="W" u2="O" k="23" />
+<hkern u1="W" u2="J" k="27" />
+<hkern u1="W" u2="A" k="76" />
+<hkern u1="W" u2="&#x40;" k="20" />
+<hkern u1="W" u2="&#x3a;" k="37" />
+<hkern u1="W" u2="&#x34;" k="25" />
+<hkern u1="W" u2="&#x2f;" k="94" />
+<hkern u1="W" u2="&#x2e;" k="90" />
+<hkern u1="W" u2="&#x2d;" k="37" />
+<hkern u1="X" u2="&#x2039;" k="35" />
+<hkern u1="X" u2="&#xf0;" k="66" />
+<hkern u1="X" u2="&#xef;" k="-49" />
+<hkern u1="X" u2="&#xec;" k="-53" />
+<hkern u1="X" u2="&#xae;" k="23" />
+<hkern u1="X" u2="y" k="53" />
+<hkern u1="X" u2="w" k="59" />
+<hkern u1="X" u2="v" k="53" />
+<hkern u1="X" u2="u" k="49" />
+<hkern u1="X" u2="t" k="41" />
+<hkern u1="X" u2="q" k="74" />
+<hkern u1="X" u2="o" k="74" />
+<hkern u1="X" u2="n" k="16" />
+<hkern u1="X" u2="f" k="31" />
+<hkern u1="X" u2="d" k="74" />
+<hkern u1="X" u2="a" k="25" />
+<hkern u1="X" u2="S" k="12" />
+<hkern u1="X" u2="O" k="59" />
+<hkern u1="X" u2="&#x2d;" k="55" />
+<hkern u1="Y" u2="&#x2122;" k="-43" />
+<hkern u1="Y" u2="&#x203a;" k="51" />
+<hkern u1="Y" u2="&#x2039;" k="94" />
+<hkern u1="Y" u2="&#xf0;" k="68" />
+<hkern u1="Y" u2="&#xef;" k="-129" />
+<hkern u1="Y" u2="&#xee;" k="-80" />
+<hkern u1="Y" u2="&#xed;" k="25" />
+<hkern u1="Y" u2="&#xec;" k="-131" />
+<hkern u1="Y" u2="&#xdf;" k="31" />
+<hkern u1="Y" u2="&#xc6;" k="109" />
+<hkern u1="Y" u2="&#xae;" k="25" />
+<hkern u1="Y" u2="z" k="76" />
+<hkern u1="Y" u2="y" k="12" />
+<hkern u1="Y" u2="x" k="31" />
+<hkern u1="Y" u2="w" k="20" />
+<hkern u1="Y" u2="v" k="12" />
+<hkern u1="Y" u2="u" k="82" />
+<hkern u1="Y" u2="t" k="14" />
+<hkern u1="Y" u2="s" k="98" />
+<hkern u1="Y" u2="q" k="106" />
+<hkern u1="Y" u2="o" k="109" />
+<hkern u1="Y" u2="n" k="84" />
+<hkern u1="Y" u2="f" k="27" />
+<hkern u1="Y" u2="d" k="104" />
+<hkern u1="Y" u2="a" k="92" />
+<hkern u1="Y" u2="]" k="-12" />
+<hkern u1="Y" u2="S" k="23" />
+<hkern u1="Y" u2="O" k="51" />
+<hkern u1="Y" u2="J" k="20" />
+<hkern u1="Y" u2="A" k="100" />
+<hkern u1="Y" u2="&#x40;" k="49" />
+<hkern u1="Y" u2="&#x3a;" k="70" />
+<hkern u1="Y" u2="&#x34;" k="57" />
+<hkern u1="Y" u2="&#x31;" k="-33" />
+<hkern u1="Y" u2="&#x2f;" k="102" />
+<hkern u1="Y" u2="&#x2e;" k="111" />
+<hkern u1="Y" u2="&#x2d;" k="78" />
+<hkern u1="Y" u2="&#x26;" k="31" />
+<hkern u1="Z" u2="&#xf0;" k="27" />
+<hkern u1="Z" u2="&#xee;" k="-29" />
+<hkern u1="Z" u2="y" k="16" />
+<hkern u1="Z" u2="w" k="18" />
+<hkern u1="Z" u2="v" k="14" />
+<hkern u1="Z" u2="u" k="23" />
+<hkern u1="Z" u2="t" k="23" />
+<hkern u1="Z" u2="q" k="29" />
+<hkern u1="Z" u2="o" k="31" />
+<hkern u1="Z" u2="n" k="16" />
+<hkern u1="Z" u2="f" k="23" />
+<hkern u1="Z" u2="d" k="31" />
+<hkern u1="Z" u2="a" k="12" />
+<hkern u1="Z" u2="O" k="29" />
+<hkern u1="Z" u2="&#x2d;" k="25" />
+<hkern u1="[" u2="&#xf0;" k="31" />
+<hkern u1="[" u2="&#xef;" k="-35" />
+<hkern u1="[" u2="&#xee;" k="-35" />
+<hkern u1="[" u2="&#xec;" k="-102" />
+<hkern u1="[" u2="u" k="33" />
+<hkern u1="[" u2="s" k="27" />
+<hkern u1="[" u2="q" k="51" />
+<hkern u1="[" u2="o" k="51" />
+<hkern u1="[" u2="j" k="-193" />
+<hkern u1="[" u2="d" k="51" />
+<hkern u1="[" u2="a" k="35" />
+<hkern u1="[" u2="Y" k="-12" />
+<hkern u1="[" u2="S" k="20" />
+<hkern u1="[" u2="O" k="43" />
+<hkern u1="[" u2="&#x38;" k="20" />
+<hkern u1="[" u2="&#x36;" k="33" />
+<hkern u1="[" u2="&#x34;" k="49" />
+<hkern u1="[" u2="&#x30;" k="33" />
+<hkern u1="\" u2="&#x2019;" k="117" />
+<hkern u1="\" u2="&#xc6;" k="-49" />
+<hkern u1="\" u2="y" k="47" />
+<hkern u1="\" u2="w" k="39" />
+<hkern u1="\" u2="v" k="47" />
+<hkern u1="\" u2="t" k="23" />
+<hkern u1="\" u2="Y" k="78" />
+<hkern u1="\" u2="W" k="63" />
+<hkern u1="\" u2="V" k="80" />
+<hkern u1="\" u2="U" k="25" />
+<hkern u1="\" u2="T" k="78" />
+<hkern u1="\" u2="O" k="23" />
+<hkern u1="\" u2="A" k="-27" />
+<hkern u1="\" u2="&#x31;" k="39" />
+<hkern u1="\" u2="&#x27;" k="100" />
+<hkern u1="a" u2="&#x2122;" k="41" />
+<hkern u1="a" u2="&#x2019;" k="16" />
+<hkern u1="a" u2="&#x2018;" k="16" />
+<hkern u1="a" u2="y" k="14" />
+<hkern u1="a" u2="w" k="16" />
+<hkern u1="a" u2="v" k="14" />
+<hkern u1="a" u2="t" k="12" />
+<hkern u1="a" u2="f" k="8" />
+<hkern u1="a" u2="\" k="68" />
+<hkern u1="a" u2="Z" k="23" />
+<hkern u1="a" u2="Y" k="84" />
+<hkern u1="a" u2="X" k="14" />
+<hkern u1="a" u2="W" k="59" />
+<hkern u1="a" u2="V" k="76" />
+<hkern u1="a" u2="U" k="23" />
+<hkern u1="a" u2="T" k="100" />
+<hkern u1="a" u2="S" k="12" />
+<hkern u1="a" u2="O" k="14" />
+<hkern u1="a" u2="J" k="16" />
+<hkern u1="a" u2="I" k="10" />
+<hkern u1="a" u2="&#x29;" k="31" />
+<hkern u1="b" u2="&#x2122;" k="47" />
+<hkern u1="b" u2="&#x2019;" k="43" />
+<hkern u1="b" u2="&#x2018;" k="43" />
+<hkern u1="b" u2="&#xc6;" k="25" />
+<hkern u1="b" u2="&#x7d;" k="29" />
+<hkern u1="b" u2="z" k="14" />
+<hkern u1="b" u2="y" k="23" />
+<hkern u1="b" u2="x" k="45" />
+<hkern u1="b" u2="w" k="18" />
+<hkern u1="b" u2="v" k="23" />
+<hkern u1="b" u2="t" k="18" />
+<hkern u1="b" u2="s" k="10" />
+<hkern u1="b" u2="f" k="16" />
+<hkern u1="b" u2="]" k="51" />
+<hkern u1="b" u2="\" k="74" />
+<hkern u1="b" u2="Z" k="47" />
+<hkern u1="b" u2="Y" k="104" />
+<hkern u1="b" u2="X" k="72" />
+<hkern u1="b" u2="W" k="80" />
+<hkern u1="b" u2="V" k="94" />
+<hkern u1="b" u2="U" k="20" />
+<hkern u1="b" u2="T" k="119" />
+<hkern u1="b" u2="S" k="23" />
+<hkern u1="b" u2="J" k="35" />
+<hkern u1="b" u2="I" k="20" />
+<hkern u1="b" u2="A" k="27" />
+<hkern u1="b" u2="&#x2f;" k="41" />
+<hkern u1="b" u2="&#x2a;" k="23" />
+<hkern u1="b" u2="&#x29;" k="53" />
+<hkern u1="b" u2="&#x27;" k="23" />
+<hkern u1="c" u2="&#x2122;" k="25" />
+<hkern u1="c" u2="&#x2039;" k="20" />
+<hkern u1="c" u2="&#xf0;" k="23" />
+<hkern u1="c" u2="q" k="16" />
+<hkern u1="c" u2="o" k="18" />
+<hkern u1="c" u2="d" k="16" />
+<hkern u1="c" u2="]" k="20" />
+<hkern u1="c" u2="\" k="45" />
+<hkern u1="c" u2="Y" k="86" />
+<hkern u1="c" u2="X" k="10" />
+<hkern u1="c" u2="W" k="43" />
+<hkern u1="c" u2="V" k="55" />
+<hkern u1="c" u2="U" k="16" />
+<hkern u1="c" u2="T" k="106" />
+<hkern u1="c" u2="S" k="12" />
+<hkern u1="c" u2="O" k="20" />
+<hkern u1="c" u2="&#x2d;" k="20" />
+<hkern u1="c" u2="&#x29;" k="29" />
+<hkern u1="d" u2="&#xec;" k="-31" />
+<hkern u1="d" u2="Z" k="12" />
+<hkern u1="d" u2="U" k="14" />
+<hkern u1="d" u2="T" k="10" />
+<hkern u1="d" u2="O" k="12" />
+<hkern u1="d" u2="J" k="18" />
+<hkern u1="d" u2="I" k="10" />
+<hkern u1="e" u2="&#x2122;" k="35" />
+<hkern u1="e" u2="&#x2019;" k="20" />
+<hkern u1="e" u2="&#x2018;" k="20" />
+<hkern u1="e" u2="&#xc6;" k="14" />
+<hkern u1="e" u2="&#x7d;" k="20" />
+<hkern u1="e" u2="z" k="10" />
+<hkern u1="e" u2="y" k="16" />
+<hkern u1="e" u2="x" k="31" />
+<hkern u1="e" u2="w" k="10" />
+<hkern u1="e" u2="v" k="16" />
+<hkern u1="e" u2="t" k="12" />
+<hkern u1="e" u2="f" k="10" />
+<hkern u1="e" u2="]" k="43" />
+<hkern u1="e" u2="\" k="66" />
+<hkern u1="e" u2="Z" k="33" />
+<hkern u1="e" u2="Y" k="100" />
+<hkern u1="e" u2="X" k="47" />
+<hkern u1="e" u2="W" k="78" />
+<hkern u1="e" u2="V" k="96" />
+<hkern u1="e" u2="U" k="14" />
+<hkern u1="e" u2="T" k="141" />
+<hkern u1="e" u2="S" k="16" />
+<hkern u1="e" u2="J" k="27" />
+<hkern u1="e" u2="I" k="14" />
+<hkern u1="e" u2="A" k="18" />
+<hkern u1="e" u2="&#x2f;" k="35" />
+<hkern u1="e" u2="&#x29;" k="47" />
+<hkern u1="f" u2="&#x2122;" k="-63" />
+<hkern u1="f" u2="&#x2039;" k="43" />
+<hkern u1="f" u2="&#xf0;" k="51" />
+<hkern u1="f" u2="&#xef;" k="-164" />
+<hkern u1="f" u2="&#xee;" k="-106" />
+<hkern u1="f" u2="&#xec;" k="-172" />
+<hkern u1="f" u2="&#xc6;" k="88" />
+<hkern u1="f" u2="&#x7d;" k="-20" />
+<hkern u1="f" u2="s" k="12" />
+<hkern u1="f" u2="q" k="25" />
+<hkern u1="f" u2="o" k="27" />
+<hkern u1="f" u2="d" k="23" />
+<hkern u1="f" u2="a" k="12" />
+<hkern u1="f" u2="]" k="-39" />
+<hkern u1="f" u2="\" k="-27" />
+<hkern u1="f" u2="Y" k="-135" />
+<hkern u1="f" u2="X" k="-61" />
+<hkern u1="f" u2="W" k="-104" />
+<hkern u1="f" u2="V" k="-123" />
+<hkern u1="f" u2="T" k="-59" />
+<hkern u1="f" u2="J" k="14" />
+<hkern u1="f" u2="A" k="82" />
+<hkern u1="f" u2="&#x2f;" k="55" />
+<hkern u1="f" u2="&#x2e;" k="57" />
+<hkern u1="f" u2="&#x2d;" k="29" />
+<hkern u1="f" u2="&#x2a;" k="-12" />
+<hkern u1="f" u2="&#x29;" k="-25" />
+<hkern u1="g" u2="j" k="-14" />
+<hkern u1="i" u2="&#xec;" k="-35" />
+<hkern u1="i" u2="Z" k="14" />
+<hkern u1="i" u2="U" k="12" />
+<hkern u1="i" u2="T" k="10" />
+<hkern u1="i" u2="O" k="12" />
+<hkern u1="i" u2="J" k="18" />
+<hkern u1="i" u2="I" k="10" />
+<hkern u1="j" u2="j" k="-61" />
+<hkern u1="k" u2="&#x2039;" k="41" />
+<hkern u1="k" u2="&#xf0;" k="63" />
+<hkern u1="k" u2="s" k="23" />
+<hkern u1="k" u2="q" k="55" />
+<hkern u1="k" u2="o" k="57" />
+<hkern u1="k" u2="d" k="53" />
+<hkern u1="k" u2="a" k="29" />
+<hkern u1="k" u2="Y" k="23" />
+<hkern u1="k" u2="V" k="10" />
+<hkern u1="k" u2="T" k="135" />
+<hkern u1="k" u2="S" k="12" />
+<hkern u1="k" u2="O" k="45" />
+<hkern u1="k" u2="&#x2d;" k="51" />
+<hkern u1="k" u2="&#x2a;" k="-27" />
+<hkern u1="l" u2="&#xec;" k="-31" />
+<hkern u1="l" u2="&#xb7;" k="152" />
+<hkern u1="l" u2="Z" k="12" />
+<hkern u1="l" u2="U" k="14" />
+<hkern u1="l" u2="T" k="10" />
+<hkern u1="l" u2="O" k="12" />
+<hkern u1="l" u2="J" k="18" />
+<hkern u1="l" u2="I" k="10" />
+<hkern u1="n" u2="&#x2122;" k="43" />
+<hkern u1="n" u2="&#x2019;" k="20" />
+<hkern u1="n" u2="&#x2018;" k="20" />
+<hkern u1="n" u2="y" k="18" />
+<hkern u1="n" u2="w" k="18" />
+<hkern u1="n" u2="v" k="18" />
+<hkern u1="n" u2="t" k="16" />
+<hkern u1="n" u2="f" k="10" />
+<hkern u1="n" u2="\" k="72" />
+<hkern u1="n" u2="Z" k="25" />
+<hkern u1="n" u2="Y" k="84" />
+<hkern u1="n" u2="X" k="14" />
+<hkern u1="n" u2="W" k="59" />
+<hkern u1="n" u2="V" k="76" />
+<hkern u1="n" u2="U" k="23" />
+<hkern u1="n" u2="T" k="102" />
+<hkern u1="n" u2="S" k="12" />
+<hkern u1="n" u2="O" k="14" />
+<hkern u1="n" u2="J" k="16" />
+<hkern u1="n" u2="I" k="10" />
+<hkern u1="n" u2="&#x29;" k="31" />
+<hkern u1="o" u2="&#x2122;" k="43" />
+<hkern u1="o" u2="&#x2019;" k="35" />
+<hkern u1="o" u2="&#x2018;" k="35" />
+<hkern u1="o" u2="&#xc6;" k="25" />
+<hkern u1="o" u2="&#x7d;" k="29" />
+<hkern u1="o" u2="z" k="14" />
+<hkern u1="o" u2="y" k="27" />
+<hkern u1="o" u2="x" k="45" />
+<hkern u1="o" u2="w" k="20" />
+<hkern u1="o" u2="v" k="25" />
+<hkern u1="o" u2="t" k="20" />
+<hkern u1="o" u2="s" k="10" />
+<hkern u1="o" u2="f" k="18" />
+<hkern u1="o" u2="]" k="51" />
+<hkern u1="o" u2="\" k="74" />
+<hkern u1="o" u2="Z" k="47" />
+<hkern u1="o" u2="Y" k="109" />
+<hkern u1="o" u2="X" k="74" />
+<hkern u1="o" u2="W" k="84" />
+<hkern u1="o" u2="V" k="94" />
+<hkern u1="o" u2="U" k="20" />
+<hkern u1="o" u2="T" k="123" />
+<hkern u1="o" u2="S" k="25" />
+<hkern u1="o" u2="J" k="35" />
+<hkern u1="o" u2="I" k="20" />
+<hkern u1="o" u2="A" k="27" />
+<hkern u1="o" u2="&#x2f;" k="41" />
+<hkern u1="o" u2="&#x2a;" k="16" />
+<hkern u1="o" u2="&#x29;" k="53" />
+<hkern u1="p" u2="&#x2122;" k="43" />
+<hkern u1="p" u2="&#x2019;" k="31" />
+<hkern u1="p" u2="&#x2018;" k="31" />
+<hkern u1="p" u2="&#xc6;" k="23" />
+<hkern u1="p" u2="&#x7d;" k="31" />
+<hkern u1="p" u2="z" k="14" />
+<hkern u1="p" u2="y" k="23" />
+<hkern u1="p" u2="x" k="43" />
+<hkern u1="p" u2="w" k="18" />
+<hkern u1="p" u2="v" k="23" />
+<hkern u1="p" u2="t" k="18" />
+<hkern u1="p" u2="s" k="10" />
+<hkern u1="p" u2="f" k="16" />
+<hkern u1="p" u2="]" k="51" />
+<hkern u1="p" u2="\" k="74" />
+<hkern u1="p" u2="Z" k="47" />
+<hkern u1="p" u2="Y" k="104" />
+<hkern u1="p" u2="X" k="68" />
+<hkern u1="p" u2="W" k="80" />
+<hkern u1="p" u2="V" k="94" />
+<hkern u1="p" u2="U" k="20" />
+<hkern u1="p" u2="T" k="119" />
+<hkern u1="p" u2="S" k="23" />
+<hkern u1="p" u2="J" k="33" />
+<hkern u1="p" u2="I" k="18" />
+<hkern u1="p" u2="A" k="25" />
+<hkern u1="p" u2="&#x2f;" k="41" />
+<hkern u1="p" u2="&#x29;" k="53" />
+<hkern u1="q" u2="j" k="-141" />
+<hkern u1="r" u2="&#x2039;" k="41" />
+<hkern u1="r" u2="&#xf0;" k="39" />
+<hkern u1="r" u2="&#xc6;" k="92" />
+<hkern u1="r" u2="s" k="8" />
+<hkern u1="r" u2="q" k="14" />
+<hkern u1="r" u2="o" k="16" />
+<hkern u1="r" u2="d" k="14" />
+<hkern u1="r" u2="a" k="10" />
+<hkern u1="r" u2="]" k="27" />
+<hkern u1="r" u2="Z" k="25" />
+<hkern u1="r" u2="Y" k="12" />
+<hkern u1="r" u2="X" k="63" />
+<hkern u1="r" u2="T" k="129" />
+<hkern u1="r" u2="J" k="74" />
+<hkern u1="r" u2="I" k="10" />
+<hkern u1="r" u2="A" k="94" />
+<hkern u1="r" u2="&#x2f;" k="80" />
+<hkern u1="r" u2="&#x2e;" k="84" />
+<hkern u1="r" u2="&#x29;" k="35" />
+<hkern u1="r" u2="&#x26;" k="20" />
+<hkern u1="s" u2="&#x2122;" k="31" />
+<hkern u1="s" u2="y" k="10" />
+<hkern u1="s" u2="x" k="14" />
+<hkern u1="s" u2="v" k="8" />
+<hkern u1="s" u2="t" k="8" />
+<hkern u1="s" u2="]" k="35" />
+<hkern u1="s" u2="\" k="55" />
+<hkern u1="s" u2="Z" k="12" />
+<hkern u1="s" u2="Y" k="96" />
+<hkern u1="s" u2="X" k="25" />
+<hkern u1="s" u2="W" k="55" />
+<hkern u1="s" u2="V" k="68" />
+<hkern u1="s" u2="U" k="20" />
+<hkern u1="s" u2="T" k="111" />
+<hkern u1="s" u2="O" k="14" />
+<hkern u1="s" u2="J" k="10" />
+<hkern u1="s" u2="I" k="14" />
+<hkern u1="s" u2="A" k="12" />
+<hkern u1="s" u2="&#x2f;" k="23" />
+<hkern u1="s" u2="&#x29;" k="41" />
+<hkern u1="t" u2="&#x2122;" k="20" />
+<hkern u1="t" u2="&#xf0;" k="8" />
+<hkern u1="t" u2="q" k="10" />
+<hkern u1="t" u2="o" k="12" />
+<hkern u1="t" u2="d" k="10" />
+<hkern u1="t" u2="\" k="37" />
+<hkern u1="t" u2="Y" k="70" />
+<hkern u1="t" u2="W" k="37" />
+<hkern u1="t" u2="V" k="45" />
+<hkern u1="t" u2="U" k="18" />
+<hkern u1="t" u2="T" k="47" />
+<hkern u1="t" u2="O" k="16" />
+<hkern u1="u" u2="&#x2122;" k="16" />
+<hkern u1="u" u2="\" k="39" />
+<hkern u1="u" u2="Z" k="16" />
+<hkern u1="u" u2="Y" k="84" />
+<hkern u1="u" u2="X" k="16" />
+<hkern u1="u" u2="W" k="47" />
+<hkern u1="u" u2="V" k="57" />
+<hkern u1="u" u2="U" k="16" />
+<hkern u1="u" u2="T" k="43" />
+<hkern u1="u" u2="S" k="10" />
+<hkern u1="u" u2="O" k="12" />
+<hkern u1="u" u2="J" k="18" />
+<hkern u1="u" u2="I" k="10" />
+<hkern u1="u" u2="&#x29;" k="29" />
+<hkern u1="v" u2="&#x2039;" k="35" />
+<hkern u1="v" u2="&#xf0;" k="39" />
+<hkern u1="v" u2="&#xc6;" k="72" />
+<hkern u1="v" u2="s" k="18" />
+<hkern u1="v" u2="q" k="23" />
+<hkern u1="v" u2="o" k="25" />
+<hkern u1="v" u2="d" k="23" />
+<hkern u1="v" u2="a" k="14" />
+<hkern u1="v" u2="Y" k="12" />
+<hkern u1="v" u2="X" k="51" />
+<hkern u1="v" u2="T" k="133" />
+<hkern u1="v" u2="J" k="43" />
+<hkern u1="v" u2="A" k="63" />
+<hkern u1="v" u2="&#x2f;" k="78" />
+<hkern u1="v" u2="&#x2e;" k="68" />
+<hkern u1="v" u2="&#x29;" k="23" />
+<hkern u1="w" u2="&#x2039;" k="27" />
+<hkern u1="w" u2="&#xf0;" k="35" />
+<hkern u1="w" u2="&#xc6;" k="66" />
+<hkern u1="w" u2="s" k="16" />
+<hkern u1="w" u2="q" k="18" />
+<hkern u1="w" u2="o" k="20" />
+<hkern u1="w" u2="d" k="18" />
+<hkern u1="w" u2="a" k="12" />
+<hkern u1="w" u2="Z" k="12" />
+<hkern u1="w" u2="Y" k="20" />
+<hkern u1="w" u2="X" k="57" />
+<hkern u1="w" u2="T" k="125" />
+<hkern u1="w" u2="J" k="51" />
+<hkern u1="w" u2="A" k="57" />
+<hkern u1="w" u2="&#x2f;" k="70" />
+<hkern u1="w" u2="&#x2e;" k="53" />
+<hkern u1="w" u2="&#x29;" k="29" />
+<hkern u1="x" u2="&#x2039;" k="43" />
+<hkern u1="x" u2="&#xf0;" k="53" />
+<hkern u1="x" u2="s" k="12" />
+<hkern u1="x" u2="q" k="49" />
+<hkern u1="x" u2="o" k="51" />
+<hkern u1="x" u2="d" k="47" />
+<hkern u1="x" u2="a" k="20" />
+<hkern u1="x" u2="Y" k="29" />
+<hkern u1="x" u2="V" k="14" />
+<hkern u1="x" u2="U" k="12" />
+<hkern u1="x" u2="T" k="131" />
+<hkern u1="x" u2="O" k="35" />
+<hkern u1="x" u2="&#x2d;" k="45" />
+<hkern u1="y" u2="&#x2039;" k="35" />
+<hkern u1="y" u2="&#xf0;" k="39" />
+<hkern u1="y" u2="&#xc6;" k="72" />
+<hkern u1="y" u2="s" k="20" />
+<hkern u1="y" u2="q" k="25" />
+<hkern u1="y" u2="o" k="27" />
+<hkern u1="y" u2="d" k="23" />
+<hkern u1="y" u2="a" k="16" />
+<hkern u1="y" u2="Y" k="12" />
+<hkern u1="y" u2="X" k="51" />
+<hkern u1="y" u2="T" k="135" />
+<hkern u1="y" u2="J" k="47" />
+<hkern u1="y" u2="A" k="63" />
+<hkern u1="y" u2="&#x2f;" k="72" />
+<hkern u1="y" u2="&#x2e;" k="70" />
+<hkern u1="y" u2="&#x2a;" k="-33" />
+<hkern u1="y" u2="&#x29;" k="23" />
+<hkern u1="z" u2="&#x2122;" k="16" />
+<hkern u1="z" u2="&#x2039;" k="23" />
+<hkern u1="z" u2="&#xf0;" k="16" />
+<hkern u1="z" u2="q" k="14" />
+<hkern u1="z" u2="o" k="14" />
+<hkern u1="z" u2="d" k="14" />
+<hkern u1="z" u2="\" k="37" />
+<hkern u1="z" u2="Y" k="72" />
+<hkern u1="z" u2="W" k="37" />
+<hkern u1="z" u2="V" k="45" />
+<hkern u1="z" u2="U" k="20" />
+<hkern u1="z" u2="T" k="143" />
+<hkern u1="z" u2="O" k="14" />
+<hkern u1="z" u2="I" k="12" />
+<hkern u1="z" u2="&#x2d;" k="20" />
+<hkern u1="&#x7b;" u2="&#xef;" k="-14" />
+<hkern u1="&#x7b;" u2="&#xee;" k="-31" />
+<hkern u1="&#x7b;" u2="&#xec;" k="-82" />
+<hkern u1="&#x7b;" u2="q" k="31" />
+<hkern u1="&#x7b;" u2="o" k="29" />
+<hkern u1="&#x7b;" u2="j" k="-182" />
+<hkern u1="&#x7b;" u2="d" k="29" />
+<hkern u1="&#x7b;" u2="O" k="20" />
+<hkern u1="&#x7c;" u2="&#xec;" k="-27" />
+<hkern u1="&#x7c;" u2="j" k="-133" />
+<hkern u1="&#x7d;" u2="&#x29;" k="20" />
+<hkern u1="&#xae;" u2="&#xc6;" k="23" />
+<hkern u1="&#xae;" u2="Y" k="25" />
+<hkern u1="&#xae;" u2="X" k="25" />
+<hkern u1="&#xae;" u2="A" k="23" />
+<hkern u1="&#xb0;" u2="&#x34;" k="43" />
+<hkern u1="&#xb7;" u2="l" k="152" />
+<hkern u1="&#xb7;" u2="&#x37;" k="31" />
+<hkern u1="&#xb7;" u2="&#x33;" k="45" />
+<hkern u1="&#xb7;" u2="&#x32;" k="43" />
+<hkern u1="&#xb7;" u2="&#x31;" k="49" />
+<hkern u1="&#xbf;" u2="Y" k="35" />
+<hkern u1="&#xbf;" u2="W" k="25" />
+<hkern u1="&#xbf;" u2="V" k="33" />
+<hkern u1="&#xbf;" u2="T" k="39" />
+<hkern u1="&#xde;" u2="&#x2122;" k="18" />
+<hkern u1="&#xde;" u2="&#xf0;" k="14" />
+<hkern u1="&#xde;" u2="&#xc6;" k="51" />
+<hkern u1="&#xde;" u2="z" k="16" />
+<hkern u1="&#xde;" u2="x" k="25" />
+<hkern u1="&#xde;" u2="s" k="14" />
+<hkern u1="&#xde;" u2="n" k="12" />
+<hkern u1="&#xde;" u2="l" k="12" />
+<hkern u1="&#xde;" u2="i" k="12" />
+<hkern u1="&#xde;" u2="h" k="12" />
+<hkern u1="&#xde;" u2="a" k="14" />
+<hkern u1="&#xde;" u2="]" k="47" />
+<hkern u1="&#xde;" u2="\" k="39" />
+<hkern u1="&#xde;" u2="Z" k="33" />
+<hkern u1="&#xde;" u2="Y" k="57" />
+<hkern u1="&#xde;" u2="X" k="72" />
+<hkern u1="&#xde;" u2="W" k="25" />
+<hkern u1="&#xde;" u2="V" k="35" />
+<hkern u1="&#xde;" u2="T" k="37" />
+<hkern u1="&#xde;" u2="S" k="10" />
+<hkern u1="&#xde;" u2="J" k="53" />
+<hkern u1="&#xde;" u2="A" k="49" />
+<hkern u1="&#xde;" u2="&#x2f;" k="59" />
+<hkern u1="&#xde;" u2="&#x2e;" k="53" />
+<hkern u1="&#xde;" u2="&#x29;" k="49" />
+<hkern u1="&#xdf;" u2="&#xc6;" k="12" />
+<hkern u1="&#xdf;" u2="z" k="8" />
+<hkern u1="&#xdf;" u2="y" k="18" />
+<hkern u1="&#xdf;" u2="x" k="25" />
+<hkern u1="&#xdf;" u2="w" k="14" />
+<hkern u1="&#xdf;" u2="v" k="16" />
+<hkern u1="&#xdf;" u2="t" k="16" />
+<hkern u1="&#xdf;" u2="s" k="10" />
+<hkern u1="&#xdf;" u2="f" k="16" />
+<hkern u1="&#xdf;" u2="\" k="20" />
+<hkern u1="&#xdf;" u2="Z" k="18" />
+<hkern u1="&#xdf;" u2="Y" k="37" />
+<hkern u1="&#xdf;" u2="X" k="37" />
+<hkern u1="&#xdf;" u2="W" k="31" />
+<hkern u1="&#xdf;" u2="V" k="35" />
+<hkern u1="&#xdf;" u2="U" k="20" />
+<hkern u1="&#xdf;" u2="T" k="33" />
+<hkern u1="&#xdf;" u2="S" k="14" />
+<hkern u1="&#xdf;" u2="O" k="12" />
+<hkern u1="&#xdf;" u2="J" k="16" />
+<hkern u1="&#xdf;" u2="I" k="18" />
+<hkern u1="&#xdf;" u2="A" k="16" />
+<hkern u1="&#xdf;" u2="&#x2f;" k="29" />
+<hkern u1="&#xdf;" u2="&#x29;" k="31" />
+<hkern u1="&#xed;" u2="&#x2122;" k="-74" />
+<hkern u1="&#xed;" u2="&#x7d;" k="-96" />
+<hkern u1="&#xed;" u2="&#x7c;" k="-41" />
+<hkern u1="&#xed;" u2="l" k="-45" />
+<hkern u1="&#xed;" u2="i" k="-43" />
+<hkern u1="&#xed;" u2="h" k="-45" />
+<hkern u1="&#xed;" u2="]" k="-117" />
+<hkern u1="&#xed;" u2="\" k="-111" />
+<hkern u1="&#xed;" u2="&#x2a;" k="-14" />
+<hkern u1="&#xed;" u2="&#x29;" k="-106" />
+<hkern u1="&#xee;" u2="&#x2122;" k="-88" />
+<hkern u1="&#xee;" u2="&#x7d;" k="-29" />
+<hkern u1="&#xee;" u2="]" k="-33" />
+<hkern u1="&#xee;" u2="&#x2a;" k="-57" />
+<hkern u1="&#xef;" u2="&#x2122;" k="-59" />
+<hkern u1="&#xef;" u2="&#x7d;" k="-16" />
+<hkern u1="&#xef;" u2="]" k="-37" />
+<hkern u1="&#xef;" u2="\" k="-16" />
+<hkern u1="&#xef;" u2="&#x2a;" k="-23" />
+<hkern u1="&#xef;" u2="&#x29;" k="-25" />
+<hkern u1="&#xf0;" u2="&#x2122;" k="20" />
+<hkern u1="&#xf0;" u2="&#x2019;" k="23" />
+<hkern u1="&#xf0;" u2="&#x2018;" k="23" />
+<hkern u1="&#xf0;" u2="&#xc6;" k="20" />
+<hkern u1="&#xf0;" u2="z" k="10" />
+<hkern u1="&#xf0;" u2="y" k="18" />
+<hkern u1="&#xf0;" u2="x" k="35" />
+<hkern u1="&#xf0;" u2="w" k="14" />
+<hkern u1="&#xf0;" u2="v" k="16" />
+<hkern u1="&#xf0;" u2="t" k="14" />
+<hkern u1="&#xf0;" u2="s" k="8" />
+<hkern u1="&#xf0;" u2="f" k="14" />
+<hkern u1="&#xf0;" u2="]" k="33" />
+<hkern u1="&#xf0;" u2="\" k="29" />
+<hkern u1="&#xf0;" u2="Z" k="57" />
+<hkern u1="&#xf0;" u2="Y" k="68" />
+<hkern u1="&#xf0;" u2="X" k="66" />
+<hkern u1="&#xf0;" u2="W" k="53" />
+<hkern u1="&#xf0;" u2="V" k="59" />
+<hkern u1="&#xf0;" u2="U" k="20" />
+<hkern u1="&#xf0;" u2="T" k="90" />
+<hkern u1="&#xf0;" u2="S" k="18" />
+<hkern u1="&#xf0;" u2="J" k="31" />
+<hkern u1="&#xf0;" u2="I" k="16" />
+<hkern u1="&#xf0;" u2="A" k="23" />
+<hkern u1="&#xf0;" u2="&#x2f;" k="37" />
+<hkern u1="&#xf0;" u2="&#x29;" k="37" />
+<hkern u1="&#x2018;" u2="&#xf0;" k="27" />
+<hkern u1="&#x2018;" u2="&#xef;" k="-27" />
+<hkern u1="&#x2018;" u2="&#xec;" k="-29" />
+<hkern u1="&#x2018;" u2="&#xc6;" k="125" />
+<hkern u1="&#x2018;" u2="s" k="43" />
+<hkern u1="&#x2018;" u2="q" k="55" />
+<hkern u1="&#x2018;" u2="o" k="59" />
+<hkern u1="&#x2018;" u2="d" k="68" />
+<hkern u1="&#x2018;" u2="a" k="27" />
+<hkern u1="&#x2018;" u2="O" k="18" />
+<hkern u1="&#x2018;" u2="J" k="27" />
+<hkern u1="&#x2018;" u2="A" k="115" />
+<hkern u1="&#x2018;" u2="&#x2e;" k="287" />
+<hkern u1="&#x2019;" u2="&#x2039;" k="45" />
+<hkern u1="&#x2019;" u2="&#xf0;" k="27" />
+<hkern u1="&#x2019;" u2="&#xef;" k="-27" />
+<hkern u1="&#x2019;" u2="&#xec;" k="-29" />
+<hkern u1="&#x2019;" u2="&#xc6;" k="125" />
+<hkern u1="&#x2019;" u2="s" k="43" />
+<hkern u1="&#x2019;" u2="q" k="55" />
+<hkern u1="&#x2019;" u2="o" k="59" />
+<hkern u1="&#x2019;" u2="d" k="68" />
+<hkern u1="&#x2019;" u2="a" k="27" />
+<hkern u1="&#x2019;" u2="O" k="18" />
+<hkern u1="&#x2019;" u2="J" k="27" />
+<hkern u1="&#x2019;" u2="A" k="115" />
+<hkern u1="&#x2019;" u2="&#x40;" k="49" />
+<hkern u1="&#x2019;" u2="&#x3a;" k="47" />
+<hkern u1="&#x2019;" u2="&#x2f;" k="164" />
+<hkern u1="&#x2019;" u2="&#x2e;" k="287" />
+<hkern u1="&#x2019;" u2="&#x26;" k="41" />
+<hkern u1="&#x2039;" u2="Y" k="51" />
+<hkern u1="&#x2039;" u2="V" k="31" />
+<hkern u1="&#x2039;" u2="T" k="98" />
+<hkern u1="&#x203a;" u2="z" k="20" />
+<hkern u1="&#x203a;" u2="y" k="35" />
+<hkern u1="&#x203a;" u2="x" k="43" />
+<hkern u1="&#x203a;" u2="w" k="27" />
+<hkern u1="&#x203a;" u2="v" k="35" />
+<hkern u1="&#x203a;" u2="t" k="23" />
+<hkern u1="&#x203a;" u2="f" k="20" />
+<hkern u1="&#x203a;" u2="Z" k="20" />
+<hkern u1="&#x203a;" u2="Y" k="94" />
+<hkern u1="&#x203a;" u2="X" k="35" />
+<hkern u1="&#x203a;" u2="W" k="55" />
+<hkern u1="&#x203a;" u2="V" k="70" />
+<hkern u1="&#x203a;" u2="T" k="115" />
+<hkern u1="&#x203a;" u2="J" k="23" />
+<hkern u1="&#x203a;" u2="&#x27;" k="35" />
+<hkern u1="&#x2122;" u2="&#xef;" k="-18" />
+<hkern u1="&#x2122;" u2="&#xee;" k="-51" />
+<hkern u1="&#x2122;" u2="&#xec;" k="-20" />
+<hkern u1="&#x2122;" u2="&#xc6;" k="55" />
+<hkern u1="&#x2122;" u2="J" k="29" />
+<hkern u1="&#x2122;" u2="A" k="49" />
+</font>
+</defs></svg> -162 -186q96 -25 148.5 -95.5t52.5 -158.5q0 -137 -95 -217t-243.5 -80t-308.5 110l94 170q117 -88 219 -88q49 0 81 24.5t32 74t-44 75t-111.5 25.5t-119.5 -25v154l150 178h-250zM1491 537h186v-172h95v-164 h-95v-201h-186v201h-367v157l301 506h226l-299 -499h139v172z" />
+<glyph unicode="&#xbf;" horiz-adv-x="1077" d="M399 1022h312v-154q0 -84 -21.5 -126t-91.5 -113l-139 -144q-31 -37 -31 -95t33 -97t86 -39t89 46t44 122h326q-23 -205 -150 -321.5t-318.5 -116.5t-311.5 104.5t-120 288.5q0 82 20.5 122t29 57t38 52t39.5 43q49 51 93.5 94t58.5 71t14 83v123zM731 1284 q0 -76 -52 -128t-128 -52t-128 52t-52 128t52 128t128 52t128 -52t52 -128z" />
+<glyph unicode="&#xc0;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM918 1575h-293l-285 229l315 135z" />
+<glyph unicode="&#xc1;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM899 1579h-293l260 363l318 -134z" />
+<glyph unicode="&#xc2;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM580 1575h-252l231 323h383l232 -323h-252l-172 166z" />
+<glyph unicode="&#xc3;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM633 1681q-63 0 -62 -106h-217q0 154 66.5 242t171.5 88q66 0 159 -56.5t113 -56.5q63 0 62 106h217q0 -154 -66.5 -241.5t-171.5 -87.5q-63 0 -159.5 56t-112.5 56z" />
+<glyph unicode="&#xc4;" d="M1196 0l-133 309h-600l-133 -309h-340l618 1432h310l618 -1432h-340zM764 1006l-180 -416h358zM420 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM815 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5 t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xc5;" d="M606 1430q-61 66 -61 154.5t64.5 153t154.5 64.5t154.5 -64.5t64.5 -154.5t-65 -156l618 -1427h-340l-133 309h-600l-133 -309h-340zM764 1006l-180 -416h358zM692 1583q0 -29 21.5 -50.5t50.5 -21.5t50.5 21.5t21.5 50.5t-21.5 50.5t-50.5 21.5t-50.5 -21.5t-21.5 -50.5 z" />
+<glyph unicode="&#xc6;" horiz-adv-x="2095" d="M1966 1432v-281h-715v-309h641v-269h-641v-292h738v-281h-1078v309h-405l-162 -309h-377l735 1432h1264zM911 598v504l-260 -504h260z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1499" d="M834 283q236 0 385 186l204 -211q-207 -233 -495 -268l-54 -99q133 -45 134 -155q0 -88 -73 -153.5t-183.5 -65.5t-214.5 65l77 176q45 -39 80 -39t54.5 18.5t19.5 46.5t-24.5 49.5t-58.5 21.5t-73 -19l84 160q-266 45 -436 244.5t-170 498.5t218 512t534 213 q352 0 590 -268l-199 -225q-152 188 -377 188q-180 0 -308 -117.5t-128 -317.5t121 -320.5t293 -120.5z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM827 1575h-292l-285 229l315 135z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM809 1579h-293l260 363l318 -134z" />
+<glyph unicode="&#xca;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM489 1575h-251l231 323h383l231 -323h-252l-172 166z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1339" d="M1208 1432v-285h-712v-295h641v-272h-641v-297h735v-283h-1055v1432h1032zM348 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM743 1734.5q0 63.5 44 107.5t107.5 44t108 -44t44.5 -107.5t-44.5 -107.5t-108 -44 t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xcc;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM502 1575h-293l-285 229l316 135z" />
+<glyph unicode="&#xcd;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM483 1579h-293l261 363l317 -134z" />
+<glyph unicode="&#xce;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM166 1577h-252l231 324h383l232 -324h-252l-172 166z" />
+<glyph unicode="&#xcf;" horiz-adv-x="671" d="M176 1432h320v-1432h-320v1432zM-14 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM381 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1605" d="M53 573v273h152v586h506q383 0 587.5 -187.5t204.5 -521.5t-199.5 -528.5t-609.5 -194.5h-489v573h-152zM1064 393.5q118 110.5 118 321.5t-118 324.5t-362 113.5h-178v-307h480v-273h-480v-290h203q219 0 337 110.5z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1673" d="M1178 1432h319v-1432h-319l-682 897v-897h-320v1432h299l703 -922v922zM717 1679q-63 0 -62 -106h-217q0 154 66.5 242t171.5 88q66 0 159 -56.5t113 -56.5q63 0 62 106h217q0 -154 -66.5 -241.5t-171.5 -87.5q-63 0 -159.5 56t-112.5 56z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM1012 1575h-293l-285 229l316 135z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM993 1579h-293l261 363l317 -134z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM674 1575h-252l231 323h383l232 -323h-252 l-172 166z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM727 1679q-63 0 -61 -106h-217q0 154 66.5 242 t170.5 88q66 0 159 -56.5t113 -56.5q63 0 62 106h217q0 -154 -66.5 -241.5t-171.5 -87.5q-63 0 -159.5 56t-112.5 56z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1691" d="M1149 1050.5q-123 135.5 -302 135.5t-302 -135.5t-123 -327t123 -325.5t302 -134t302 134t123 325.5t-123 327zM845.5 -14q-317.5 0 -534.5 212t-217 527t217 527t534.5 212t534.5 -212t217 -527t-217 -527t-534.5 -212zM494 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44 t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5zM889 1734.5q0 63.5 44 107.5t107.5 44t107.5 -44t44 -107.5t-44 -107.5t-107.5 -44t-107.5 44t-44 107.5z" />
+<glyph unicode="&#xd7;" horiz-adv-x="1206" d="M604 924l326 333l176 -182l-322 -330l324 -333l-176 -183l-328 334l-325 -334l-181 183l328 333l-326 330l181 182z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1691" d="M1597 725q0 -315 -217 -527t-534 -212q-80 0 -162 16l-106 -231h-289l149 327q-160 98 -252 263t-92 364q0 315 217 527t535 212q98 0 205 -26l96 211h291l-148 -322q143 -100 225 -258t82 -344zM846 1186q-178 0 -301 -135.5t-123 -338t143 -335.5l367 799 q-47 10 -86 10zM1149 398q123 134 123 320.5t-115 321.5l-352 -774q12 -2 41 -2q180 0 303 134z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1538" d="M770 270q135 0 214 99.5t79 271.5v791h319v-801q0 -311 -172 -478t-440 -167t-441 168t-173 477v801h319v-791q0 -172 80 -271.5t215 -99.5zM932 1575h-293l-285 229l316 135z" />
+<glyph unicode="&#xda;" horiz-adv-x="1538" d="M770 270q135 0 214 99.5t79 271.5v791h319v-801q0 -311 -172 -478t-440 -167t-441 168t-173 477v801h319v-791q0 -172 80 -271.5t215 -99.5zM915 1579h-292l260 363l317 -134 \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.ttf b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.ttf
new file mode 100755
index 00000000..a1df9e56
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.ttf
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.woff b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.woff
new file mode 100755
index 00000000..381aedcd
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.woff
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.eot b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.eot
new file mode 100755
index 00000000..baf70329
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.eot
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.svg b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.svg
new file mode 100755
index 00000000..6bc82bd7
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.svg
@@ -0,0 +1,1365 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="montserratregular" horiz-adv-x="561" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="500" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="682" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="0" />
+<glyph unicode="&#xd;" horiz-adv-x="681" />
+<glyph unicode=" " />
+<glyph unicode="!" horiz-adv-x="604" d="M160 1466h286v-264l-61 -739h-164l-61 739v264zM197 29q-45 45 -45 107.5t45 107.5t107.5 45t107.5 -45t45 -107.5t-45 -107.5t-107.5 -45t-107.5 45z" />
+<glyph unicode="&#x22;" horiz-adv-x="765" d="M158 928v504h159v-504h-159zM449 928v504h159v-504h-159z" />
+<glyph unicode="#" horiz-adv-x="1505" d="M1374 893h-221l-59 -340h252l-46 -225h-243l-58 -328h-227l57 328h-301l-57 -328h-229l57 328h-211l45 225h205l59 340h-233l45 225h227l60 348h227l-59 -348h301l59 348h229l-63 -348h229zM928 893h-301l-62 -340h301z" />
+<glyph unicode="$" horiz-adv-x="1267" d="M580 -147v149q-281 29 -504 223l149 178q172 -150 355 -178v398q-231 55 -339 145t-108 267t124 290t323 123v102h131v-104q225 -16 426 -154l-133 -188q-135 96 -293 119v-385h6q236 -55 346.5 -149.5t110.5 -273.5t-127 -292t-336 -123v-147h-131zM866.5 276.5 q57.5 47.5 57.5 119t-45 113.5t-168 79v-369q98 10 155.5 57.5zM435 1174.5q-52 -46.5 -52 -115t41 -108.5t156 -77v355q-93 -8 -145 -54.5z" />
+<glyph unicode="%" horiz-adv-x="1609" d="M709 1141q0 -135 -89.5 -231.5t-221.5 -96.5t-220 95.5t-88 230.5t89 231t221 96t220.5 -95t88.5 -230zM1454 1432l-1048 -1432h-265l1049 1432h264zM516 1136.5q0 61.5 -35 103.5t-85 42t-82.5 -42t-32.5 -103.5t34.5 -103.5t85 -42t83 42t32.5 103.5zM1522 311 q0 -135 -89.5 -231t-221.5 -96t-220 95t-88 230t89 231.5t221.5 96.5t220.5 -95.5t88 -230.5zM1333 303.5q0 61.5 -34.5 103.5t-85 42t-83 -42t-32.5 -103.5t34.5 -103.5t85 -42t83 42t32.5 103.5z" />
+<glyph unicode="&#x26;" horiz-adv-x="1421" d="M584 -16q-201 0 -342.5 111.5t-141.5 305.5q0 231 336 412q-84 96 -117.5 157.5t-33.5 155.5q0 164 120.5 252t284.5 88t278.5 -84t114.5 -235q0 -203 -327 -383q164 -201 266 -307q63 94 98 219l168 -119q-53 -141 -121 -248q82 -84 209 -203l-153 -143l-189 187 q-180 -166 -450 -166zM405.5 240.5q77.5 -58.5 206.5 -58.5t275 119q-207 217 -328 365q-231 -125 -231 -275q0 -92 77.5 -150.5zM566.5 1241q-54.5 -43 -54.5 -100.5t27.5 -103.5t95.5 -128q231 115 231 213q0 82 -54 122t-122.5 40t-123 -43z" />
+<glyph unicode="'" horiz-adv-x="475" d="M158 928v504h159v-504h-159z" />
+<glyph unicode="(" horiz-adv-x="679" d="M330 638.5q0 -235.5 82 -490t200 -420.5h-243q-100 139 -183.5 397t-83.5 514t83 514t184 397h243q-119 -166 -200.5 -421t-81.5 -490.5z" />
+<glyph unicode=")" horiz-adv-x="679" d="M350 638.5q0 235.5 -82 490.5t-200 421h243q100 -139 183.5 -397t83.5 -514t-83 -514t-184 -397h-243q119 166 200.5 420.5t81.5 490z" />
+<glyph unicode="*" horiz-adv-x="884" d="M690 881l-194 131l16 -234h-139l16 236l-194 -131l-70 118l209 105l-209 102l70 121l192 -129l-14 232h139l-14 -232l192 127l70 -119l-211 -102l211 -105z" />
+<glyph unicode="+" horiz-adv-x="1163" d="M489 307v389h-391v193h391v385h185v-385h391v-193h-391v-389h-185z" />
+<glyph unicode="," horiz-adv-x="575" d="M135 133q0 66 45 110t106.5 44t107.5 -44t46 -105.5t-55 -149.5l-123 -203h-119l76 213q-84 39 -84 135z" />
+<glyph unicode="-" horiz-adv-x="974" d="M147 504v215h680v-215h-680z" />
+<glyph unicode="." horiz-adv-x="573" d="M135 137.5q0 63.5 44 107.5t107.5 44t108.5 -44t45 -107.5t-45 -108.5t-108.5 -45t-107.5 45t-44 108.5z" />
+<glyph unicode="/" horiz-adv-x="1202" d="M944 1661h205l-887 -1901h-205z" />
+<glyph unicode="0" horiz-adv-x="1409" d="M354 725q0 -240 85 -387.5t265.5 -147.5t263.5 146.5t83 388.5t-83 388.5t-263.5 146.5t-265.5 -147.5t-85 -387.5zM121 725q0 338 145.5 539.5t438 201.5t438 -201.5t145.5 -539.5t-145.5 -539.5t-438 -201.5t-438 201.5t-145.5 539.5z" />
+<glyph unicode="1" horiz-adv-x="780" d="M59 1432h521v-1432h-230v1217h-291v215z" />
+<glyph unicode="2" horiz-adv-x="1206" d="M759.5 872q61.5 84 61.5 170t-65.5 146.5t-165.5 60.5q-176 0 -293 -180l-195 113q94 141 208 212.5t293 71.5t314.5 -113.5t135.5 -310.5q0 -111 -57.5 -211t-211.5 -258l-335 -342h649v-231h-979v205l434 436q145 147 206.5 231z" />
+<glyph unicode="3" horiz-adv-x="1183" d="M158 1217v215h837v-189l-346 -387q197 -6 307.5 -124t110.5 -281q0 -219 -148.5 -344t-382 -125t-456.5 149l102 195q176 -123 369 -123q125 0 206 58t81 168t-90.5 175.5t-249.5 65.5q-80 0 -154 -23v184l332 386h-518z" />
+<glyph unicode="4" horiz-adv-x="1171" d="M690 580v262h230v-262h172v-220h-172v-360h-230v360h-614v213l526 859h264l-518 -852h342z" />
+<glyph unicode="5" horiz-adv-x="1185" d="M995 1434v-220h-604v-352q90 49 205 49q201 0 346 -120.5t145 -327.5t-151.5 -343t-372.5 -136q-289 0 -461 192l129 176q16 -16 44 -38.5t114 -60.5t188.5 -38t186.5 61.5t84 179t-89 182t-225.5 64.5t-259.5 -67l-102 110v689h823z" />
+<glyph unicode="6" horiz-adv-x="1269" d="M725 1241q-190 0 -280.5 -129t-92.5 -348q51 57 147.5 107.5t213.5 50.5q193 0 322.5 -128t129.5 -340t-140 -341t-353 -129q-344 0 -475 307q-74 176 -74 397t47 368.5t129 233.5q160 168 392.5 168t420.5 -145l-121 -178q-47 41 -126 73.5t-140 32.5zM474 640 q-83 -69 -83 -178.5t80 -188t201 -78.5t200.5 70.5t79.5 180t-73.5 186.5t-197.5 77t-207 -69z" />
+<glyph unicode="7" horiz-adv-x="1159" d="M94 1020v412h1008v-215l-606 -1217h-267l592 1212h-508v-192h-219z" />
+<glyph unicode="8" horiz-adv-x="1302" d="M651 1460q207 0 344.5 -108.5t137.5 -273.5t-154 -292q207 -131 207 -368q0 -184 -147.5 -309t-387 -125t-387 124.5t-147.5 309.5q0 238 207 368q-154 127 -154 292t137 273.5t344 108.5zM651.5 193q106.5 0 200.5 60t94 173t-90 174.5t-204.5 61.5t-205 -61.5 t-90.5 -174.5t94.5 -173t201 -60zM651.5 842q104.5 0 181 62.5t76.5 153.5t-76.5 152.5t-181 61.5t-181.5 -61.5t-77 -152.5t77 -153.5t181.5 -62.5z" />
+<glyph unicode="9" horiz-adv-x="1267" d="M545 201q190 0 280 129t93 348q-51 -57 -147.5 -107.5t-213.5 -50.5q-193 0 -323 128t-130 340t140.5 341t353.5 129q344 0 475 -307q74 -176 74 -397.5t-47 -368.5t-129 -233q-160 -168 -392.5 -168t-420.5 145l121 178q47 -41 126 -73.5t140 -32.5zM796 801.5 q83 68.5 83 178.5t-80 188.5t-200 78.5t-197.5 -70.5t-77.5 -181t70.5 -186.5t194.5 -76t207 68.5z" />
+<glyph unicode=":" horiz-adv-x="600" d="M147 137.5q0 63.5 44.5 107.5t107.5 44t108.5 -44t45.5 -107.5t-45.5 -108.5t-108.5 -45t-107.5 45t-44.5 108.5zM147 638.5q0 63.5 44.5 108t107.5 44.5t108.5 -44.5t45.5 -108t-45.5 -108.5t-108.5 -45t-107.5 45t-44.5 108.5z" />
+<glyph unicode=";" horiz-adv-x="606" d="M150 135q0 66 45 110t107.5 44t108.5 -44t46 -103.5t-56 -153.5l-125 -203h-118l75 213q-83 43 -83 137zM150 638.5q0 63.5 44 108t107.5 44.5t108.5 -44.5t45 -108t-45 -108.5t-108.5 -45t-107.5 45t-44 108.5z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1212" d="M92 684v258l965 447v-234l-721 -326v-22l721 -334v-233z" />
+<glyph unicode="=" horiz-adv-x="1277" d="M123 1081h1032v-192h-1032v192zM123 696h1032v-192h-1032v192z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1212" d="M1120 942v-258l-964 -444v233l721 334v22l-721 326v234z" />
+<glyph unicode="?" horiz-adv-x="1040" d="M618 444h-231v125q0 82 19.5 122t85.5 106l149 149q47 51 47 127t-49 126t-127 50t-130 -48t-60 -128h-248q20 182 142 285.5t304 103.5t297 -99t115 -278q0 -123 -68 -204q-39 -49 -59.5 -69.5t-54 -52.5t-57 -55.5t-38.5 -39.5q-37 -45 -37 -127v-93zM395 34 q-47 44 -47 106.5t46 107.5t110.5 45t112 -44t47.5 -106.5t-46.5 -107.5t-111 -45t-111.5 44z" />
+<glyph unicode="@" horiz-adv-x="1851" d="M913 -258q-344 0 -576.5 229.5t-232.5 573.5t244 588.5t589 244.5t581.5 -244.5t236.5 -596.5q0 -221 -84 -357.5t-223 -136.5q-100 0 -159.5 68.5t-63.5 195.5q-115 -264 -367 -264q-176 0 -310 141.5t-134 358.5t127 364.5t336 147.5q94 0 178 -49.5t121 -116.5v137 h196v-715q0 -143 113 -143q63 0 115.5 93t52.5 245q0 328 -198 555t-510 227t-531 -219t-219 -524t206.5 -509t511.5 -204q246 0 377 123l45 -76q-72 -61 -190.5 -99t-231.5 -38zM1100 770q-78 86 -203 86t-200.5 -88t-75.5 -216t74.5 -223.5t203.5 -95.5t204 93.5t75 225.5 t-78 218z" />
+<glyph unicode="A" horiz-adv-x="1519" d="M401 326l-143 -326h-258l631 1432h258l631 -1432h-258l-144 326h-717zM1020 549l-260 590l-260 -590h520z" />
+<glyph unicode="B" horiz-adv-x="1445" d="M825 0h-626v1432h557q145 0 250.5 -35t156.5 -94q98 -111 99 -250q0 -168 -107 -250q-39 -29 -53.5 -36t-50.5 -24q133 -29 211.5 -120t78.5 -226q0 -150 -102 -264q-121 -133 -414 -133zM440 838h308q262 0 262 178q0 102 -63.5 147t-196.5 45h-310v-370zM440 223h379 q133 0 204 42t71 159q0 190 -306 190h-348v-391z" />
+<glyph unicode="C" horiz-adv-x="1507" d="M852 219q125 0 215 42t188 134l156 -159q-227 -252 -551.5 -252t-539 208.5t-214.5 528t218.5 532.5t551 213t556.5 -245l-154 -168q-102 98 -193.5 137t-214.5 39q-217 0 -364.5 -140.5t-147.5 -358.5t146.5 -364.5t347.5 -146.5z" />
+<glyph unicode="D" horiz-adv-x="1601" d="M1282 1244.5q207 -187.5 207 -521.5t-201 -528.5t-614 -194.5h-475v1432h491q385 0 592 -187.5zM1245 717q0 492 -563 491h-242v-981h269q260 0 398 124t138 366z" />
+<glyph unicode="E" horiz-adv-x="1339" d="M1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005z" />
+<glyph unicode="F" horiz-adv-x="1236" d="M440 1206v-393h635v-223h-635v-590h-241v1432h954l-2 -226h-711z" />
+<glyph unicode="G" horiz-adv-x="1550" d="M1190 696h242v-489q-203 -223 -580 -223q-317 0 -531.5 208.5t-214.5 528t218.5 532.5t527.5 213t514 -180l-129 -184q-84 72 -169 99.5t-198 27.5q-217 0 -364.5 -140.5t-147.5 -368.5t143.5 -366.5t347.5 -138.5t341 88v393z" />
+<glyph unicode="H" horiz-adv-x="1591" d="M199 0v1432h241v-621h711v621h242v-1432h-242v586h-711v-586h-241z" />
+<glyph unicode="I" horiz-adv-x="638" d="M199 1432h241v-1432h-241v1432z" />
+<glyph unicode="J" horiz-adv-x="1128" d="M246 1214v218h696v-945q0 -250 -127 -374.5t-326 -124.5q-250 0 -426 176l138 190q139 -133 272 -133q94 0 160.5 63.5t66.5 190.5v739h-454z" />
+<glyph unicode="K" horiz-adv-x="1441" d="M199 1432h241v-699l656 699h307l-576 -627l584 -805h-287l-475 627l-209 -226v-401h-241v1432z" />
+<glyph unicode="L" horiz-adv-x="1159" d="M199 0v1432h241v-1203h654v-229h-895z" />
+<glyph unicode="M" horiz-adv-x="2013" d="M440 0h-241v1432h376l433 -900l432 900h375v-1432h-242v1118l-500 -993h-135l-498 993v-1118z" />
+<glyph unicode="N" horiz-adv-x="1712" d="M1272 1432h241v-1432h-262l-811 1044v-1044h-241v1432h241l832 -1070v1070z" />
+<glyph unicode="O" horiz-adv-x="1720" d="M860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212z" />
+<glyph unicode="P" horiz-adv-x="1400" d="M1165.5 1307q149.5 -125 149.5 -385t-152.5 -381t-468.5 -121h-254v-420h-241v1432h491q326 0 475.5 -125zM994.5 716q72.5 77 72.5 225.5t-92 209.5t-289 61h-246v-573h281q201 0 273.5 77z" />
+<glyph unicode="Q" horiz-adv-x="1720" d="M891 -12l-31 -2q-319 0 -536.5 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -527q0 -240 -129 -425t-344 -267q70 -92 176 -92q78 0 152.5 41t113.5 106l137 -190q-178 -188 -407 -189q-131 0 -252 74t-170 203zM860 1245q-213 0 -359.5 -151.5t-146.5 -367.5 t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5z" />
+<glyph unicode="R" horiz-adv-x="1490" d="M1341 967q0 -354 -309 -447l375 -520h-307l-342 481h-318v-481h-241v1432h532q328 0 469 -110.5t141 -354.5zM1020 763.5q74 63.5 74 204t-76 192.5t-270 52h-308v-512h301q205 0 279 63.5z" />
+<glyph unicode="S" horiz-adv-x="1290" d="M458.5 1200q-67.5 -43 -67.5 -130t67.5 -133t288 -99.5t332 -149.5t111.5 -283.5t-141.5 -304t-370.5 -116.5q-336 0 -596 231l151 182q217 -188 451 -188q117 0 185.5 50t68.5 133t-64.5 129t-222 84t-239.5 70t-146 83q-127 96 -127 294.5t144.5 306t357.5 107.5 q137 0 272.5 -45t233.5 -127l-129 -182q-63 57 -172 94t-214.5 37t-173 -43z" />
+<glyph unicode="T" horiz-adv-x="1236" d="M739 1210v-1210h-241v1210h-435v222h1111v-222h-435z" />
+<glyph unicode="U" horiz-adv-x="1572" d="M786 213q168 0 266.5 114.5t98.5 311.5v793h242v-803q0 -309 -170 -476t-436.5 -167t-436.5 166.5t-170 476.5v803h242v-793q0 -197 98 -311.5t266 -114.5z" />
+<glyph unicode="V" horiz-adv-x="1433" d="M852 0h-270l-576 1432h270l441 -1070l440 1070h270z" />
+<glyph unicode="W" horiz-adv-x="2146" d="M645 401l320 1031h217l319 -1031l361 1031h260l-500 -1432h-240l-301 981h-16l-301 -981h-240l-499 1432h260z" />
+<glyph unicode="X" horiz-adv-x="1378" d="M1047 0l-353 539h-10l-352 -539h-301l491 735l-456 697h299l319 -484h10l320 484h299l-457 -697l492 -735h-301z" />
+<glyph unicode="Y" horiz-adv-x="1277" d="M762 0h-246v565l-532 867h264l391 -652l391 652h264l-532 -867v-565z" />
+<glyph unicode="Z" horiz-adv-x="1382" d="M930 1210h-807v222h1143v-189l-832 -1014v-6h844v-223h-1182v186l834 1018v6z" />
+<glyph unicode="[" horiz-adv-x="727" d="M643 1550v-172h-283v-1493h283v-172h-463v1837h463z" />
+<glyph unicode="\" horiz-adv-x="1069" d="M57 1550h205l746 -1550h-205z" />
+<glyph unicode="]" horiz-adv-x="727" d="M84 1378v172h463v-1837h-463v172h283v1493h-283z" />
+<glyph unicode="^" horiz-adv-x="806" d="M559 1520l-158 170l-157 -170h-199l250 319h209l248 -319h-193z" />
+<glyph unicode="_" horiz-adv-x="1478" d="M147 -283v117h1184v-117h-1184z" />
+<glyph unicode="`" horiz-adv-x="1705" d="M1106 1229h-209l-250 196l242 101z" />
+<glyph unicode="a" horiz-adv-x="1202" d="M1049 0h-209v145q-135 -162 -363 -161q-170 0 -281.5 96t-111.5 257t119 240.5t321 79.5h297v41q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450 158q193 0 315 -97.5t122 -306.5v-702zM819 406v92h-258q-248 0 -248 -156q0 -80 61.5 -122t171 -42t191.5 62 t82 166z" />
+<glyph unicode="b" horiz-adv-x="1376" d="M1124.5 954.5q155.5 -151.5 155.5 -403.5t-154.5 -409.5t-360.5 -157.5t-370 180v-164h-229v1520h229v-621q135 207 354.5 207t375 -151.5zM485.5 287.5q94.5 -99.5 229.5 -99.5t235.5 98.5t100.5 255t-98.5 260t-235.5 103.5t-231.5 -103.5t-94.5 -259t94.5 -255z" />
+<glyph unicode="c" horiz-adv-x="1179" d="M649 -16q-227 0 -391 154.5t-164 404.5t171 406.5t417 156.5t416 -170l-135 -166q-141 123 -284.5 123t-249 -95.5t-105.5 -246t104 -254.5t257 -104t288 139l135 -148q-199 -200 -459 -200z" />
+<glyph unicode="d" horiz-adv-x="1376" d="M249.5 139.5q-153.5 155.5 -153.5 409.5t158 405.5t376 151.5t351 -184v598h229v-1520h-229v164q-127 -180 -371 -180q-207 0 -360.5 155.5zM426 284.5q100 -98.5 235.5 -98.5t229.5 99.5t94 255t-94 260t-231.5 104.5t-235.5 -104.5t-98 -261t100 -255z" />
+<glyph unicode="e" horiz-adv-x="1265" d="M1180 444h-854q8 -119 108.5 -191.5t229.5 -72.5q205 0 311 129l131 -143q-176 -182 -459 -182q-229 0 -390 152.5t-161 409.5t164 408.5t386 151.5t378 -134t156 -370v-158zM326 625h624q0 137 -86 210.5t-212 73.5t-226 -76.5t-100 -207.5z" />
+<glyph unicode="f" horiz-adv-x="790" d="M449 1180v-90h286v-185h-286v-905h-230v905h-137v185h137v84q0 172 103.5 273t250 101t267.5 -108l-95 -162q-68 72 -141.5 72t-114 -46t-40.5 -124z" />
+<glyph unicode="g" horiz-adv-x="1339" d="M1174 1090v-951q0 -289 -157 -433t-402.5 -144t-444.5 153l109 174q160 -121 322.5 -120.5t257.5 84.5t95 268v139q-51 -96 -146 -153.5t-214 -57.5q-217 0 -356.5 151.5t-139.5 377t139.5 377t355.5 151.5t351 -178v162h230zM406.5 355.5q82.5 -97.5 223 -97.5t227.5 94 t87 234.5t-88 238t-227.5 97.5t-222 -100.5t-82.5 -234.5t82.5 -231.5z" />
+<glyph unicode="h" horiz-adv-x="1323" d="M395 590v-590h-229v1518h229v-627q49 100 148.5 157.5t214.5 57.5q184 0 297.5 -112.5t113.5 -325.5v-668h-229v598q0 301 -250 301q-119 0 -207 -78.5t-88 -230.5z" />
+<glyph unicode="i" d="M395 0h-229v1090h229v-1090zM137 1409q0 59 43 102t102.5 43t102.5 -43t43 -102t-43 -102t-102.5 -43t-102.5 43t-43 102z" />
+<glyph unicode="j" d="M166 -51v1141h229v-1149q0 -172 -103.5 -273.5t-249.5 -101.5t-267 108l106 172q70 -68 140.5 -67.5t107.5 45.5t37 125zM133 1409q0 59 43 102t102.5 43t102.5 -43t43 -102t-43 -102t-102.5 -43t-102.5 43t-43 102z" />
+<glyph unicode="k" horiz-adv-x="1189" d="M395 0h-229v1520h229v-893l443 463h295l-414 -433l444 -657h-278l-324 477l-166 -168v-309z" />
+<glyph unicode="l" d="M395 0h-229v1520h229v-1520z" />
+<glyph unicode="m" horiz-adv-x="2076" d="M395 590v-590h-229v1090h229v-199q49 100 148.5 157.5t214.5 57.5q258 0 350 -213q162 213 403 213q184 0 298 -112.5t114 -325.5v-668h-229v598q0 301 -250 301q-117 0 -204 -74.5t-91 -218.5v-606h-229v598q0 156 -55.5 228.5t-174.5 72.5t-207 -78.5t-88 -230.5z" />
+<glyph unicode="n" horiz-adv-x="1323" d="M395 590v-590h-229v1090h229v-199q55 100 152.5 157.5t210.5 57.5q184 0 297.5 -112.5t113.5 -325.5v-668h-229v598q0 301 -250 301q-119 0 -207 -78.5t-88 -230.5z" />
+<glyph unicode="o" horiz-adv-x="1335" d="M667.5 188q149.5 0 247 99.5t97.5 257t-97.5 257t-247 99.5t-246.5 -99.5t-97 -257t97 -257t246.5 -99.5zM667.5 -16q-245.5 0 -409.5 162.5t-164 398t164 398.5t409.5 163t409.5 -163t164 -398.5t-164 -398t-409.5 -162.5z" />
+<glyph unicode="p" horiz-adv-x="1376" d="M1124.5 954.5q155.5 -151.5 155.5 -403.5t-154.5 -409.5t-360.5 -157.5t-370 180v-561h-229v1487h229v-191q135 207 354.5 207t375 -151.5zM485.5 287.5q94.5 -99.5 229.5 -99.5t235.5 98.5t100.5 255t-98.5 260t-235.5 103.5t-231.5 -103.5t-94.5 -259t94.5 -255z" />
+<glyph unicode="q" horiz-adv-x="1376" d="M251 141.5q-155 157.5 -155 409.5t156 403.5t375 151.5t354 -207v191h229v-1487h-229v561q-164 -180 -369.5 -180t-360.5 157.5zM426 286.5q100 -98.5 235.5 -98.5t229.5 99.5t94 255t-94 259t-231.5 103.5t-235.5 -103.5t-98 -260t100 -255z" />
+<glyph unicode="r" horiz-adv-x="813" d="M737 874q-170 0 -256 -110.5t-86 -296.5v-467h-229v1090h229v-220q55 102 150.5 168t202.5 68l2 -232h-13z" />
+<glyph unicode="s" horiz-adv-x="1036" d="M829.5 77q-112.5 -93 -288.5 -93q-119 0 -247 43t-226 120l110 179q190 -143 369 -144q78 0 123 36t45 91q0 82 -217 148q-16 6 -25 8q-340 92 -340 307q0 152 118 243t306 91t356 -111l-86 -170q-133 88 -288 88q-82 0 -133.5 -29.5t-51.5 -88.5q0 -53 54 -78 q37 -18 103.5 -34.5t117.5 -33t99 -37t103 -57.5q111 -74 111 -229.5t-112.5 -248.5z" />
+<glyph unicode="t" horiz-adv-x="856" d="M449 905v-553q0 -78 40.5 -124t114.5 -46t141 72l95 -162q-121 -109 -267.5 -108.5t-250 101.5t-103.5 273v547h-137v185h137v342h230v-342h286v-185h-286z" />
+<glyph unicode="u" horiz-adv-x="1323" d="M928 500v590h229v-1090h-229v199q-55 -100 -152.5 -157.5t-210.5 -57.5q-184 0 -297.5 112.5t-113.5 325.5v668h229v-598q0 -301 250 -302q119 0 207 79t88 231z" />
+<glyph unicode="v" horiz-adv-x="1171" d="M455 0l-439 1090h238l332 -824l332 824h237l-438 -1090h-262z" />
+<glyph unicode="w" horiz-adv-x="1867" d="M676 0h-262l-377 1090h237l271 -824l270 824h238l270 -824l270 824h238l-377 -1090h-262l-258 745z" />
+<glyph unicode="x" horiz-adv-x="1142" d="M340 1090l233 -359l242 359h272l-380 -533l397 -557h-283l-260 362l-254 -362h-268l387 555l-367 535h281z" />
+<glyph unicode="y" horiz-adv-x="1175" d="M303 -434q-150 0 -270 108l104 187q72 -68 148.5 -68t125 55.5t48.5 120.5q0 29 -441 1121h246l326 -803l325 803h246l-528 -1295q-47 -106 -135.5 -167.5t-194.5 -61.5z" />
+<glyph unicode="z" horiz-adv-x="1107" d="M131 889v196h852v-206l-612 -680h645v-199h-926v223l596 666h-555z" />
+<glyph unicode="{" horiz-adv-x="688" d="M565 1362q-127 0 -127 -117v-444q0 -143 -135 -168q135 -23 135 -166v-481q0 -53 30 -74t114 -21v-190h-70q-279 0 -279 270v443q0 68 -24.5 95.5t-77.5 27.5h-49v190h49q53 0 77.5 28.5t24.5 98.5v426q0 270 279 270h70v-190q-7 2 -17 2z" />
+<glyph unicode="|" horiz-adv-x="526" d="M178 -313v1915h170v-1915h-170z" />
+<glyph unicode="}" horiz-adv-x="688" d="M176 -299h-70v190q84 0 114 20.5t30 74.5v481q0 143 135 166q-135 25 -135 168v444q0 63 -34 91t-66 28h-7l-37 -4v190h70q279 0 279 -270v-426q0 -70 24.5 -98.5t77.5 -28.5h49v-190h-49q-53 0 -77.5 -28t-24.5 -95v-443q0 -270 -279 -270z" />
+<glyph unicode="~" horiz-adv-x="1157" d="M377 758q-82 0 -96 -133l-179 51q12 143 86 216t191 73q92 0 248 -84q102 -53 151 -54q82 0 96 134l181 -52q-12 -143 -87 -217t-192 -74q-88 0 -248 87q-102 53 -151 53z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#xa1;" horiz-adv-x="602" d="M442 -16h-284v258l61 739h164l59 -739v-258zM195 1200q-45 45 -45 107.5t45 107.5t107.5 45t107.5 -45t45 -107.5t-45 -107.5t-107.5 -45t-107.5 45z" />
+<glyph unicode="&#xa2;" horiz-adv-x="1200" d="M592 -250v238q-207 23 -349.5 173t-142.5 379.5t141.5 380t350.5 179.5v243h131v-239q231 -18 381 -168l-135 -166q-125 106 -246 119v-694q135 14 256 137l135 -148q-170 -174 -391 -196v-238h-131zM404.5 765q-74.5 -89 -74.5 -215t72.5 -220t189.5 -125v676 q-113 -27 -187.5 -116z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1261" d="M539 1057v-269h342v-200h-342v-373h610v-215h-1020v215h168v373h-176v200h176v256q0 248 125 362t328 114q268 0 403 -230l-170 -135q-84 139 -217 139q-98 0 -162.5 -56t-64.5 -181z" />
+<glyph unicode="&#xa4;" horiz-adv-x="1546" d="M307 311q-109 147 -108.5 336t104.5 332l-180 180l145 144l185 -183q139 90 317 90t324 -92l184 185l145 -144l-182 -182q104 -147 104.5 -330.5t-110.5 -333.5l188 -186l-143 -143l-195 190q-137 -86 -313 -86t-313 86l-193 -190l-143 143zM772 305q143 0 237.5 96.5 t94.5 248t-94.5 246.5t-237.5 95t-237.5 -95t-94.5 -246.5t94.5 -248t237.5 -96.5z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1464" d="M209 434h389v111l-8 12h-381v180h274l-411 695h264l387 -658h14l402 658h260l-426 -695h268v-180h-379l-6 -12v-111h385v-180h-387v-254h-256v254h-389v180z" />
+<glyph unicode="&#xa6;" horiz-adv-x="565" d="M186 881v669h193v-669h-193zM186 -49v670h193v-670h-193z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1249" d="M297 649q0 -96 120 -159.5t306 -63.5q106 0 177 45t71 111.5t-47 109.5t-121 66q-147 43 -261 43t-179.5 -40t-65.5 -112zM468 1284q-54 -43 -54 -111.5t59 -109.5t269 -91t314.5 -130t104.5 -230q0 -102 -65.5 -185t-204.5 -116q94 -35 141 -106.5t47 -147.5 q0 -141 -119.5 -240.5t-320.5 -99.5q-293 0 -518 201l131 156q201 -166 393 -166q219 0 219 139q0 66 -68.5 109t-268 101t-311.5 141t-112 243q0 98 68 180t188 105q-166 66 -165.5 229.5t120 264t306.5 100.5q133 0 233 -33t205 -109l-117 -164q-152 113 -326 113 q-94 0 -148 -43z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1249" d="M376 1268q-36 37 -36 89t37 89t89 37t89 -36t37 -88t-38 -90t-90 -38t-88 37zM756 1268q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-37 -90t-89 -38t-89 37z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1703" d="M1593 719q0 -305 -217 -524.5t-526 -219.5t-524 217.5t-215 522.5t217 524t524 219t524 -217t217 -522zM1503 717q0 268 -187.5 458.5t-459.5 190.5t-460.5 -191.5t-188.5 -461t186.5 -460t458.5 -190.5t461.5 193t189.5 461zM1194 459q-139 -145 -317.5 -145.5 t-297 111.5t-118.5 294t123 294.5t305 112.5t299 -122l-98 -121q-106 90 -209 90t-179.5 -68.5t-76.5 -178.5t76.5 -185.5t188 -75.5t206.5 100z" />
+<glyph unicode="&#xaa;" horiz-adv-x="720" d="M567 954h-96v68q-63 -76 -154.5 -76t-143.5 45t-52 119q0 150 203 150h139v18q0 100 -113 100q-68 0 -145 -51l-47 68q90 72 194 71q215 0 215 -186v-326zM461 1143v43h-119q-115 0 -115 -74q0 -37 29 -56.5t79 -19.5t88 30t38 77z" />
+<glyph unicode="&#xab;" horiz-adv-x="1120" d="M580 852l-236 -360l236 -361h-222l-243 361l243 360h222zM985 852l-235 -360l235 -361h-221l-244 361l244 360h221z" />
+<glyph unicode="&#xac;" horiz-adv-x="1695" d="M137 911h1370v-731h-168v551h-1202v180z" />
+<glyph unicode="&#xad;" horiz-adv-x="974" d="M147 504v215h680v-215h-680z" />
+<glyph unicode="&#xae;" horiz-adv-x="1703" d="M1593 719q0 -305 -217 -524.5t-526 -219.5t-524 217.5t-215 522.5t217 524t524 219t524 -217t217 -522zM1503 717q0 268 -187.5 458.5t-459.5 190.5t-460.5 -191.5t-188.5 -461t186.5 -460t458.5 -190.5t461.5 193t189.5 461zM1210 860q0 -199 -174 -250l213 -288h-172 l-192 268h-176v-268h-140v800h301q182 0 261 -62.5t79 -199.5zM1031 747.5q42 34.5 42 113.5t-43 109.5t-151 30.5h-170v-288h165q115 0 157 34.5z" />
+<glyph unicode="&#xaf;" horiz-adv-x="868" d="M750 1407v-178h-629v178h629z" />
+<glyph unicode="&#xb0;" horiz-adv-x="851" d="M426 1464q131 0 223 -92t92 -223t-92 -222t-223 -91t-223 91t-92 222t92 223t223 92zM277.5 1001.5q60.5 -61.5 147.5 -61.5t147.5 61.5t60.5 147.5t-60.5 146.5t-147.5 60.5t-147.5 -60.5t-60.5 -146.5t60.5 -147.5z" />
+<glyph unicode="&#xb1;" horiz-adv-x="1163" d="M489 565v277h-391v192h391v273h185v-273h391v-192h-391v-277h-185zM98 451h967v-172h-967v172z" />
+<glyph unicode="&#xb2;" horiz-adv-x="858" d="M519 1120q36 49 36 99.5t-38 85t-97 34.5q-104 0 -172 -104l-113 65q109 166 287 166q111 0 189.5 -66.5t78.5 -180.5q0 -63 -33.5 -122t-124.5 -153l-194 -199h379v-135h-572v119l252 256q86 86 122 135z" />
+<glyph unicode="&#xb3;" horiz-adv-x="811" d="M158 1305v127h495v-113l-204 -229q117 -2 181 -73t64 -183.5t-87 -186.5t-226 -74t-270 89l61 114q100 -72 217 -71q74 0 122 33.5t48 99t-53 104.5t-124 39t-116 -14v108l197 230h-305z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1705" d="M901 1286h-209l217 297l242 -100z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1314" d="M176 -397v1487h230v-598q0 -301 249 -302q119 0 207 79t88 231v590h230v-1090h-230v199q-55 -100 -152.5 -157.5t-204 -57.5t-187.5 34v-415h-230z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1374" d="M72 1139q0 174 120.5 292.5t366.5 118.5h612v-1779h-190v1585h-229v-1585h-185v981q-49 -6 -94 -7q-113 0 -196.5 39t-124.5 101q-80 119 -80 254z" />
+<glyph unicode="&#xb7;" horiz-adv-x="595" d="M145 653.5q0 63.5 44 107.5t107.5 44t109 -44t45.5 -107.5t-45.5 -108.5t-109 -45t-107.5 45t-44 108.5z" />
+<glyph unicode="&#xb8;" horiz-adv-x="575" d="M481 -240q0 -78 -63.5 -136t-160.5 -58t-171 45l53 117q39 -20 79 -20.5t62.5 23t22.5 56.5t-23.5 58.5t-59.5 25.5t-60 -10l73 139h146l-41 -78q143 -19 143 -162z" />
+<glyph unicode="&#xb9;" horiz-adv-x="548" d="M84 1432h303v-838h-133v713h-170v125z" />
+<glyph unicode="&#xba;" horiz-adv-x="774" d="M387 1032q72 0 118 47t46 122t-46 122t-118 47t-118 -47t-46 -122t46 -122t118 -47zM387 934q-117 0 -194.5 76.5t-77.5 189.5t77.5 189.5t194.5 76.5t194.5 -76.5t77.5 -189.5t-77.5 -189.5t-194.5 -76.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1120" d="M776 492l-235 360h221l244 -360l-244 -361h-221zM371 492l-236 360h221l244 -360l-244 -361h-221z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1767" d="M1210 1550h148l-764 -1566h-148zM1452 340v154h133v-154h103v-129h-103v-211h-133v211h-358v125l305 502h155l-303 -498h201zM72 1432h303v-838h-133v713h-170v125z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1900" d="M1276 1550h147l-764 -1566h-147zM1613 510q36 49 36 99t-38 85t-98 35q-100 0 -172 -104l-110 65q109 166 285 166q111 0 190.5 -66.5t79.5 -181.5q0 -63 -34 -122.5t-124 -151.5l-196 -199h378v-135h-571v119l254 256q84 86 120 135zM72 1432h303v-838h-133v713h-170 v125z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1845" d="M1294 1550h148l-764 -1566h-148zM1536 340v154h133v-154h103v-129h-103v-211h-133v211h-358v125l305 502h155l-303 -498h201zM129 1305v127h496v-113l-205 -229q117 -2 181.5 -73t64.5 -183.5t-87 -186.5t-226.5 -74t-270.5 89l61 114q100 -72 217 -71q74 0 122 33.5 t48 99t-53 104.5t-123.5 39t-115.5 -14v108l196 230h-305z" />
+<glyph unicode="&#xbf;" horiz-adv-x="1040" d="M422 1004h231v-125q0 -82 -19.5 -122t-84.5 -106l-150 -149q-47 -51 -47 -127t49.5 -126t127 -50t130 48t60.5 128h248q-20 -182 -142.5 -285.5t-304.5 -103.5t-296.5 99t-114.5 277q0 123 67 205q39 49 59.5 69.5t54.5 52.5t57.5 55.5t37.5 41.5q37 43 37 125v93z M645 1414q47 -44 47 -106.5t-46 -107.5t-110.5 -45t-111.5 44t-47 106.5t46 107.5t110.5 45t111.5 -44z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM860 1550h-209l-250 197l242 100z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1519" d="M401 326l-143 -326h-258l631 1432h258l631 -1432h-258l-144 326h-717zM1020 549l-260 590l-260 -590h520zM870 1552h-208l217 297l241 -100z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM633 1825h213l250 -275h-199l-158 115l-157 -115h-199z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM897 1544q-53 0 -148.5 48t-121.5 48q-68 0 -70 -90h-151q0 119 48 193t134 74q55 0 153.5 -48.5t128.5 -48.5q61 0 62 90h153q-6 -266 -188 -266z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM468 1579q-36 37 -36 89t36 89t89 37t90 -36t37 -88t-37 -90t-90 -38t-89 37zM848 1579q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-38 -90t-89 -38t-88 37z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1495" d="M903.5 1729.5q67.5 -64.5 67.5 -162t-97 -162.5l621 -1405h-266l-146 326h-686l-139 -326h-258l618 1407q-92 66 -92 162t66.5 160.5t155 64.5t156 -64.5zM987 549l-246 551l-243 -551h489zM829.5 1498q30.5 32 30.5 82t-30.5 82t-81 32t-82 -32t-31.5 -82t31.5 -82 t82 -32t81 32z" />
+<glyph unicode="&#xc6;" horiz-adv-x="2129" d="M1995 1432v-226h-764v-393h686v-211h-686v-377h788v-225h-1052v326h-518l-175 -326h-297l750 1432h1268zM967 557v649h-60l-342 -649h402z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1507" d="M852 219q125 0 215 42t188 134l156 -159q-213 -238 -520 -250l-33 -64q143 -18 143 -162q0 -78 -63.5 -136t-160.5 -58t-171 45l53 117q39 -20 79 -20.5t62.5 23t22.5 56.5t-23.5 58.5t-59 25.5t-60.5 -10l68 129q-281 35 -461.5 237.5t-180.5 507.5t218.5 518t551 213 t556.5 -245l-154 -168q-102 98 -193.5 137t-214.5 39q-217 0 -364.5 -140.5t-147.5 -358.5t146.5 -364.5t347.5 -146.5z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1339" d="M862 1550h-209l-250 197l242 100zM1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1339" d="M1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005zM811 1550h-209l217 297l242 -100z" />
+<glyph unicode="&#xca;" horiz-adv-x="1339" d="M596 1825h213l250 -275h-199l-158 115l-157 -115h-199zM1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1339" d="M425 1579q-36 37 -36 89t37 89t89 37t89 -36t37 -88t-38 -90t-90 -38t-88 37zM805 1579q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-37 -90t-89 -38t-89 37zM1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005z" />
+<glyph unicode="&#xcc;" horiz-adv-x="638" d="M428 1550h-209l-250 197l242 100zM199 1432h241v-1432h-241v1432z" />
+<glyph unicode="&#xcd;" horiz-adv-x="638" d="M199 1432h241v-1432h-241v1432zM420 1550h-209l217 297l242 -100z" />
+<glyph unicode="&#xce;" horiz-adv-x="638" d="M199 1432h241v-1432h-241v1432zM236 1825h213l249 -275h-198l-158 115l-158 -115h-198z" />
+<glyph unicode="&#xcf;" horiz-adv-x="638" d="M42 1579q-36 37 -36 89t36 89t89 37t90 -36t37 -88t-37 -90t-90 -38t-89 37zM422 1579q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-38 -90t-89 -38t-88 37zM199 1432h241v-1432h-241v1432z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1617" d="M53 602v215h162v615h492q385 0 591.5 -187.5t206.5 -521.5t-200.5 -528.5t-614.5 -194.5h-475v602h-162zM1262 717q0 492 -564 491h-241v-391h512v-215h-512v-375h268q260 0 398.5 124t138.5 366z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1712" d="M1272 1432h241v-1432h-262l-811 1044v-1044h-241v1432h241l832 -1070v1070zM1001 1544q-53 0 -148 48t-122 48q-68 0 -69 -90h-152q0 119 48 193t134 74q55 0 153.5 -48.5t129.5 -48.5q61 0 61 90h154q-7 -266 -189 -266z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1720" d="M1016 1550h-209l-250 197l242 100zM860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528 t-536.5 -212z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1720" d="M860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212zM897 1550h-209l217 297 l242 -100z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1720" d="M860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212zM750 1825h213l249 -275h-198 l-158 115l-158 -115h-198z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1720" d="M860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212zM1008 1544q-53 0 -148.5 48 t-122.5 48q-68 0 -69 -90h-152q0 119 48 193t134 74q55 0 153.5 -48.5t129.5 -48.5q61 0 61 90h154q-6 -266 -188 -266z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1720" d="M570.5 1579q-35.5 37 -35.5 89t35.5 89t89 37t90 -36t36.5 -88t-36.5 -90t-90 -38t-89 37zM950 1579q-37 37 -37 89t37 89t89.5 37t89 -36t36.5 -88t-37.5 -90t-89 -38t-88.5 37zM860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5 t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212z" />
+<glyph unicode="&#xd7;" horiz-adv-x="1157" d="M580 907l348 350l129 -131l-346 -346l348 -350l-129 -131l-350 350l-351 -350l-131 131l351 350l-349 346l131 131z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1720" d="M1614 727q0 -317 -217 -529t-537 -212q-109 0 -207 24l-116 -250h-205l149 320q-174 94 -274.5 265t-100.5 382q0 315 217.5 527t536.5 212q125 0 248 -39l111 234h204l-145 -313q156 -98 246 -261t90 -360zM860 1245q-213 0 -359.5 -151.5t-146.5 -368.5 q0 -133 60.5 -248t165.5 -186l434 930q-74 24 -154 24zM1366 725q0 250 -188 408l-428 -916q57 -10 110 -10q213 0 359.5 151.5t146.5 366.5z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1572" d="M969 1550h-209l-250 197l242 100zM786 213q168 0 266.5 114.5t98.5 311.5v793h242v-803q0 -309 -170 -476t-436.5 -167t-436.5 166.5t-170 476.5v803h242v-793q0 -197 98 -311.5t266 -114.5z" />
+<glyph unicode="&#xda;" horiz-adv-x="1572" d="M786 213q168 0 266.5 114.5t98.5 311.5v793h242v-803q0 -309 -170 -476t-436.5 -167t-436.5 166.5t-170 476.5v803h242v-793q0 -197 98 -311.5t266 -114.5zM852 1552h-209l217 297l242 -100z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1572" d="M786 213q168 0 266.5 114.5t98.5 311.5v793h242v-803q0 -309 -170 -476t-436.5 -167t-436.5 166.5t-170 476.5v803h242v-793q0 -197 98 -311.5t266 -114.5zM688 1825h213l250 -275h-199l-157 115l-158 -115h-199z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1572" d="M511 1579q-36 37 -36 89t37 89t89 37t89 -36t37 -88t-38 -90t-90 -38t-88 37zM891 1579q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-37 -90t-89 -38t-89 37zM786 213q168 0 266.5 114.5t98.5 311.5v793h242v-803q0 -309 -170 -476t-436.5 -167t-436.5 166.5t-170 476.5 v803h242v-793q0 -197 98 -311.5t266 -114.5z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1277" d="M762 0h-246v565l-532 867h264l391 -652l391 652h264l-532 -867v-565zM797 1520h-209l217 297l242 -101z" />
+<glyph unicode="&#xde;" horiz-adv-x="1404" d="M1315 756q0 -272 -162 -394t-479 -122h-234v-240h-241v1432h241v-181h230q645 1 645 -495zM985 537.5q82 78.5 82 224t-100.5 208t-300.5 62.5h-226v-573h260q203 0 285 78.5z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1333" d="M843.5 943q71.5 71 71.5 164t-54 160.5t-171 67.5q-156 0 -219 -96t-63 -285v-954h-242v934q0 147 13.5 207.5t30.5 114t41.5 91t63.5 78.5t86 66q111 59 258.5 59t248 -41t149.5 -108q92 -123 92 -266q0 -211 -213 -344q152 -16 227.5 -123t75.5 -246 q0 -193 -135 -307.5t-387 -114.5h-84v201h45q154 0 236.5 50t82.5 172t-81.5 180.5t-219.5 58.5q-47 0 -71 -3v191q147 22 218.5 93z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1202" d="M1049 0h-209v145q-135 -162 -363 -161q-170 0 -281.5 96t-111.5 257t119 240.5t321 79.5h297v41q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450 158q193 0 315 -97.5t122 -306.5v-702zM819 406v92h-258q-248 0 -248 -156q0 -80 61.5 -122t171 -42t191.5 62 t82 166zM786 1229h-208l-250 196l241 101z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1202" d="M1049 0h-209v145q-135 -162 -363 -161q-170 0 -281.5 96t-111.5 257t119 240.5t321 79.5h297v41q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450 158q193 0 315 -97.5t122 -306.5v-702zM819 406v92h-258q-248 0 -248 -156q0 -80 61.5 -122t171 -42t191.5 62 t82 166zM719 1229h-209l217 297l242 -101z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1202" d="M1049 0h-209v145q-135 -162 -363 -161q-170 0 -281.5 96t-111.5 257t119 240.5t321 79.5h297v41q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450 158q193 0 315 -97.5t122 -306.5v-702zM819 406v92h-258q-248 0 -248 -156q0 -80 61.5 -122t171 -42t191.5 62 t82 166zM489 1503h213l250 -274h-198l-158 114l-158 -114h-198z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1202" d="M1049 0h-209v145q-135 -162 -363 -161q-170 0 -281.5 96t-111.5 257t119 240.5t321 79.5h297v41q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450 158q193 0 315 -97.5t122 -306.5v-702zM819 406v92h-258q-248 0 -248 -156q0 -80 61.5 -122t171 -42t191.5 62 t82 166zM748 1223q-53 0 -148.5 48t-122.5 48q-68 0 -69 -90h-152q0 119 48 192.5t134 73.5q55 0 153.5 -48t129.5 -48q61 0 61 90h154q-6 -266 -188 -266z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1202" d="M1049 0h-209v145q-135 -162 -363 -161q-170 0 -281.5 96t-111.5 257t119 240.5t321 79.5h297v41q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450 158q193 0 315 -97.5t122 -306.5v-702zM819 406v92h-258q-248 0 -248 -156q0 -80 61.5 -122t171 -42t191.5 62 t82 166zM285 1356q0 53 35.5 89t89 36t90.5 -36t37 -89t-37 -90t-90.5 -37t-89 37t-35.5 90zM700.5 1266q-36.5 37 -36.5 89t36.5 89t89 37t89 -36t36.5 -89t-37.5 -90t-89 -37t-88 37z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1202" d="M1049 0h-209v145q-135 -162 -363 -161q-170 0 -281.5 96t-111.5 257t119 240.5t321 79.5h297v41q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450 158q193 0 315 -97.5t122 -306.5v-702zM825 1407q0 -86 -67.5 -149.5t-155.5 -63.5t-154.5 63.5t-66.5 149.5 t66.5 150.5t154.5 64.5t155.5 -64.5t67.5 -150.5zM819 406v92h-258q-248 0 -248 -156q0 -80 61.5 -122t171 -42t191.5 62t82 166zM684 1326q31 32 31 82t-31 82t-81 32t-82 -32t-32 -82t32 -82t82 -32t81 32z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1949" d="M1864 471h-813q2 -131 95 -211t222 -80q184 0 291 129l131 -143q-176 -182 -441.5 -182t-414.5 196q-164 -197 -436 -196q-172 0 -293 97t-121 257t117.5 235.5t322.5 75.5h297v49q0 217 -241 217q-152 0 -316 -110l-102 143q199 158 450.5 158t362.5 -152 q147 152 371.5 152t371 -134t146.5 -370v-131zM819 406v65h-258q-190 0 -229 -57q-18 -29 -19 -72q0 -80 61.5 -122t171 -42t191.5 62t82 166zM1550.5 842.5q-75.5 66.5 -192.5 66.5t-206 -69.5t-99 -190.5l581 -2q-8 129 -83.5 195.5z" />
+<glyph unicode="&#xe7;" horiz-adv-x="1181" d="M838 -240q0 -78 -63.5 -136t-161 -58t-171.5 45l54 117q39 -20 78.5 -20.5t62 23t22.5 56.5t-23.5 58.5t-59 25.5t-60.5 -10l68 127q-207 25 -347.5 175t-140.5 390t171 396.5t417 156.5t416 -170l-135 -166q-141 123 -284.5 123t-249 -95.5t-105.5 -246t103 -254.5 t257 -104t289 139l135 -148q-168 -168 -381 -194l-35 -68q144 -19 144 -162z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1265" d="M844 1229h-209l-250 196l242 101zM1180 444h-854q8 -119 108.5 -191.5t229.5 -72.5q205 0 311 129l131 -143q-176 -182 -459 -182q-229 0 -390 152.5t-161 409.5t164 408.5t386 151.5t378 -134t156 -370v-158zM326 625h624q0 137 -86 210.5t-212 73.5t-226 -76.5 t-100 -207.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1265" d="M1180 444h-854q8 -119 108.5 -191.5t229.5 -72.5q205 0 311 129l131 -143q-176 -182 -459 -182q-229 0 -390 152.5t-161 409.5t164 408.5t386 151.5t378 -134t156 -370v-158zM326 625h624q0 137 -86 210.5t-212 73.5t-226 -76.5t-100 -207.5zM770 1233h-209l217 297 l242 -100z" />
+<glyph unicode="&#xea;" horiz-adv-x="1265" d="M1180 444h-854q8 -119 108.5 -191.5t229.5 -72.5q205 0 311 129l131 -143q-176 -182 -459 -182q-229 0 -390 152.5t-161 409.5t164 408.5t386 151.5t378 -134t156 -370v-158zM326 625h624q0 137 -86 210.5t-212 73.5t-226 -76.5t-100 -207.5zM543 1503h213l250 -274h-199 l-158 114l-157 -114h-199z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1265" d="M332 1356q0 53 37 89t89 36t89 -36t37 -89t-38 -90t-90.5 -37t-88 37t-35.5 90zM747.5 1266q-36.5 37 -36.5 89t36.5 89t89 37t89.5 -36t37 -89t-37 -90t-89.5 -37t-89 37zM1180 444h-854q8 -119 108.5 -191.5t229.5 -72.5q205 0 311 129l131 -143q-176 -182 -459 -182 q-229 0 -390 152.5t-161 409.5t164 408.5t386 151.5t378 -134t156 -370v-158zM326 625h624q0 137 -86 210.5t-212 73.5t-226 -76.5t-100 -207.5z" />
+<glyph unicode="&#xec;" d="M410 1229h-209l-250 196l242 101zM166 1090h229v-1090h-229v1090z" />
+<glyph unicode="&#xed;" d="M389 1229h-192l217 287l225 -101zM166 1090h229v-1090h-229v1090z" />
+<glyph unicode="&#xee;" d="M166 1090h229v-1090h-229v1090zM184 1503h213l250 -274h-198l-158 114l-158 -114h-199z" />
+<glyph unicode="&#xef;" d="M-16 1356q0 53 36.5 89t89 36t89.5 -36t37 -89t-38 -90t-90.5 -37t-88 37t-35.5 90zM399 1266q-37 37 -37 89t37 89t89.5 37t89 -36t36.5 -89t-36.5 -90t-89 -37t-89.5 37zM166 1090h229v-1090h-229v1090z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1220" d="M817 895q-78 129 -252 303l-190 -121l-117 111l193 123q-4 6 -150 127l195 112q74 -57 149 -129l174 111l121 -111l-180 -116q360 -391 360 -758q0 -252 -133 -407.5t-362.5 -155.5t-376 137t-146.5 353t143.5 354.5t346.5 138.5q145 0 221 -76zM404.5 269 q78.5 -85 206.5 -85t207 85t79 205t-79 206t-207 86t-206.5 -86t-78.5 -206t78.5 -205z" />
+<glyph unicode="&#xf1;" horiz-adv-x="1323" d="M395 590v-590h-229v1090h229v-199q55 100 152.5 157.5t210.5 57.5q184 0 297.5 -112.5t113.5 -325.5v-668h-229v598q0 301 -250 301q-119 0 -207 -78.5t-88 -230.5zM829 1223q-53 0 -148 48t-122 48q-68 0 -70 -90h-151q0 119 48 192.5t134 73.5q55 0 153.5 -48 t129.5 -48q61 0 61 90h154q-7 -266 -189 -266z" />
+<glyph unicode="&#xf2;" horiz-adv-x="1335" d="M809 1229h-209l-250 196l242 101zM667.5 188q149.5 0 247 99.5t97.5 257t-97.5 257t-247 99.5t-246.5 -99.5t-97 -257t97 -257t246.5 -99.5zM667.5 -16q-245.5 0 -409.5 162.5t-164 398t164 398.5t409.5 163t409.5 -163t164 -398.5t-164 -398t-409.5 -162.5z" />
+<glyph unicode="&#xf3;" horiz-adv-x="1335" d="M667.5 188q149.5 0 247 99.5t97.5 257t-97.5 257t-247 99.5t-246.5 -99.5t-97 -257t97 -257t246.5 -99.5zM667.5 -16q-245.5 0 -409.5 162.5t-164 398t164 398.5t409.5 163t409.5 -163t164 -398.5t-164 -398t-409.5 -162.5zM772 1229h-209l217 297l242 -101z" />
+<glyph unicode="&#xf4;" horiz-adv-x="1335" d="M667.5 188q149.5 0 247 99.5t97.5 257t-97.5 257t-247 99.5t-246.5 -99.5t-97 -257t97 -257t246.5 -99.5zM667.5 -16q-245.5 0 -409.5 162.5t-164 398t164 398.5t409.5 163t409.5 -163t164 -398.5t-164 -398t-409.5 -162.5zM563 1503h213l250 -274h-199l-157 114 l-158 -114h-199z" />
+<glyph unicode="&#xf5;" horiz-adv-x="1335" d="M667.5 188q149.5 0 247 99.5t97.5 257t-97.5 257t-247 99.5t-246.5 -99.5t-97 -257t97 -257t246.5 -99.5zM667.5 -16q-245.5 0 -409.5 162.5t-164 398t164 398.5t409.5 163t409.5 -163t164 -398.5t-164 -398t-409.5 -162.5zM819 1223q-53 0 -148.5 48t-121.5 48 q-68 0 -70 -90h-151q0 119 48 192.5t134 73.5q55 0 153.5 -48t129.5 -48q61 0 61 90h154q-7 -266 -189 -266z" />
+<glyph unicode="&#xf6;" horiz-adv-x="1335" d="M344 1356q0 53 37 89t89 36t89 -36t37 -89t-38 -90t-90 -37t-88 37t-36 90zM760 1266q-37 37 -37 89t37 89t89 37t89 -36t37 -89t-37 -90t-89 -37t-89 37zM667.5 188q149.5 0 247 99.5t97.5 257t-97.5 257t-247 99.5t-246.5 -99.5t-97 -257t97 -257t246.5 -99.5z M667.5 -16q-245.5 0 -409.5 162.5t-164 398t164 398.5t409.5 163t409.5 -163t164 -398.5t-164 -398t-409.5 -162.5z" />
+<glyph unicode="&#xf7;" horiz-adv-x="1163" d="M430 432.5q0 63.5 44 107.5t107.5 44t108.5 -44t45 -107.5t-45 -108.5t-108.5 -45t-107.5 45t-44 108.5zM430 1159.5q0 63.5 44 107.5t107.5 44t108.5 -44t45 -107.5t-45 -108.5t-108.5 -45t-107.5 45t-44 108.5zM98 889h967v-193h-967v193z" />
+<glyph unicode="&#xf8;" horiz-adv-x="1335" d="M668 -16q-57 0 -133 14l-99 -213h-205l131 281q-125 74 -196.5 200.5t-71.5 278.5q0 236 164 398.5t410 162.5q90 0 170 -25l90 193h205l-127 -270q111 -78 173 -198t62 -261q0 -236 -163.5 -398.5t-409.5 -162.5zM421 801.5q-97 -99.5 -97 -270.5t129 -273l297 635 q-35 8 -82 8q-150 0 -247 -99.5zM668 188q150 0 247 99.5t97 259.5t-101 256l-286 -613q14 -2 43 -2z" />
+<glyph unicode="&#xf9;" horiz-adv-x="1323" d="M805 1229h-209l-250 196l242 101zM928 500v590h229v-1090h-229v199q-55 -100 -152.5 -157.5t-210.5 -57.5q-184 0 -297.5 112.5t-113.5 325.5v668h229v-598q0 -301 250 -302q119 0 207 79t88 231z" />
+<glyph unicode="&#xfa;" horiz-adv-x="1323" d="M928 500v590h229v-1090h-229v199q-55 -100 -152.5 -157.5t-210.5 -57.5q-184 0 -297.5 112.5t-113.5 325.5v668h229v-598q0 -301 250 -302q119 0 207 79t88 231zM717 1233h-209l217 297l242 -100z" />
+<glyph unicode="&#xfb;" horiz-adv-x="1323" d="M928 500v590h229v-1090h-229v199q-55 -100 -152.5 -157.5t-210.5 -57.5q-184 0 -297.5 112.5t-113.5 325.5v668h229v-598q0 -301 250 -302q119 0 207 79t88 231zM553 1503h213l250 -274h-199l-158 114l-157 -114h-199z" />
+<glyph unicode="&#xfc;" horiz-adv-x="1323" d="M332 1356q0 53 37 89t89 36t89 -36t37 -89t-38 -90t-90.5 -37t-88 37t-35.5 90zM747.5 1266q-36.5 37 -36.5 89t36.5 89t89 37t89.5 -36t37 -89t-37 -90t-89.5 -37t-89 37zM928 500v590h229v-1090h-229v199q-55 -100 -152.5 -157.5t-210.5 -57.5q-184 0 -297.5 112.5 t-113.5 325.5v668h229v-598q0 -301 250 -302q119 0 207 79t88 231z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1175" d="M303 -434q-150 0 -270 108l104 187q72 -68 148.5 -68t125 55.5t48.5 120.5q0 29 -441 1121h246l326 -803l325 803h246l-528 -1295q-47 -106 -135.5 -167.5t-194.5 -61.5zM680 1286h-209l217 297l242 -100z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1376" d="M1132.5 946q147.5 -160 147.5 -404.5t-146.5 -401t-390.5 -156.5q-168 0 -292 106q-29 25 -41 41l-15 19v-547h-229v1917h229v-580q6 6 15.5 17.5t44 40t73.5 51.5q102 57 220 57q237 0 384.5 -160zM939 293.5q95 107.5 95 252t-94 252t-233.5 107.5t-227.5 -106.5 t-88 -254t88 -253t226.5 -105.5t233.5 107.5z" />
+<glyph unicode="&#xff;" horiz-adv-x="1175" d="M283 1356q0 53 36.5 89t89 36t89.5 -36t37 -89t-38 -90t-90.5 -37t-88 37t-35.5 90zM698.5 1266q-36.5 37 -36.5 89t36.5 89t89 37t89 -36t36.5 -89t-36.5 -90t-89 -37t-89 37zM303 -434q-150 0 -270 108l104 187q72 -68 148.5 -68t125 55.5t48.5 120.5q0 29 -441 1121 h246l326 -803l325 803h246l-528 -1295q-47 -106 -135.5 -167.5t-194.5 -61.5z" />
+<glyph unicode="&#x152;" horiz-adv-x="2183" d="M2048 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1235q-309 0 -519 205t-210 511t209.5 511t519.5 205h1210zM371 717q0 -209 142 -357.5t347 -148.5h182v1010h-182q-207 0 -348 -147.5t-141 -356.5z" />
+<glyph unicode="&#x153;" horiz-adv-x="2183" d="M2097 444h-854q8 -119 108.5 -191.5t229.5 -72.5q205 0 311 129l131 -143q-176 -182 -458 -182q-133 0 -250 55t-193 158q-166 -213 -454 -213q-246 0 -410 162.5t-164 398t164 398.5t410 163q287 0 454 -215q76 104 194 159.5t245 55.5q225 0 380.5 -134t155.5 -370 v-158zM667.5 188q149.5 0 247 99.5t97.5 257t-97.5 257t-247 99.5t-246.5 -99.5t-97 -257t97 -257t246.5 -99.5zM1243 625h625q0 137 -86 210.5t-212 73.5t-226.5 -76.5t-100.5 -207.5z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="1380" d="M590 1503h213l250 -274h-199l-158 114l-157 -114h-199z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="1062" d="M686 1513q-53 0 -148.5 48.5t-121.5 48.5q-68 0 -70 -90h-151q0 119 48 192.5t134 73.5q55 0 153.5 -48t128.5 -48q61 0 62 90h153q-6 -267 -188 -267z" />
+<glyph unicode="&#x2000;" horiz-adv-x="924" />
+<glyph unicode="&#x2001;" horiz-adv-x="1849" />
+<glyph unicode="&#x2002;" horiz-adv-x="924" />
+<glyph unicode="&#x2003;" horiz-adv-x="1849" />
+<glyph unicode="&#x2004;" horiz-adv-x="616" />
+<glyph unicode="&#x2005;" horiz-adv-x="462" />
+<glyph unicode="&#x2006;" horiz-adv-x="308" />
+<glyph unicode="&#x2007;" horiz-adv-x="308" />
+<glyph unicode="&#x2008;" horiz-adv-x="231" />
+<glyph unicode="&#x2009;" horiz-adv-x="369" />
+<glyph unicode="&#x200a;" horiz-adv-x="102" />
+<glyph unicode="&#x2010;" horiz-adv-x="974" d="M147 504v215h680v-215h-680z" />
+<glyph unicode="&#x2011;" horiz-adv-x="974" d="M147 504v215h680v-215h-680z" />
+<glyph unicode="&#x2012;" horiz-adv-x="974" d="M147 504v215h680v-215h-680z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1101" d="M168 463v137h766v-137h-766z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1484" d="M168 465v135h1149v-135h-1149z" />
+<glyph unicode="&#x2018;" horiz-adv-x="442" d="M274 1268q57 -37 57.5 -99.5t-36.5 -98.5t-92.5 -36t-93 35t-37.5 91.5t37 109.5l120 174h125z" />
+<glyph unicode="&#x2019;" horiz-adv-x="444" d="M150 1200q-55 33 -55.5 97.5t36.5 100.5t92.5 36t93 -35t37.5 -91.5t-37 -109.5l-120 -174h-125z" />
+<glyph unicode="&#x201a;" horiz-adv-x="444" d="M150 10q-55 35 -55.5 98.5t36.5 99.5t92.5 36t93 -35t37.5 -91.5t-37 -109.5l-120 -174h-125z" />
+<glyph unicode="&#x201c;" horiz-adv-x="757" d="M274 1268q57 -37 57.5 -99.5t-36.5 -98.5t-92.5 -36t-93 35t-37.5 91.5t37 109.5l120 174h125zM588 1268q57 -37 57 -99.5t-37 -98.5t-92 -36t-93 35t-38 91.5t37 109.5l121 174h125z" />
+<glyph unicode="&#x201d;" horiz-adv-x="755" d="M150 1200q-55 33 -55.5 97.5t36.5 100.5t92.5 36t93 -35t37.5 -91.5t-37 -109.5l-120 -174h-125zM461 1200q-55 33 -55 97.5t36.5 100.5t92 36t93.5 -35t38 -91.5t-37 -109.5l-121 -174h-125z" />
+<glyph unicode="&#x201e;" horiz-adv-x="755" d="M150 10q-55 35 -55.5 98.5t36.5 99.5t92.5 36t93 -35t37.5 -91.5t-37 -109.5l-120 -174h-125zM461 10q-55 35 -55 98.5t36.5 99.5t92 36t93.5 -35t38 -91.5t-37 -109.5l-121 -174h-125z" />
+<glyph unicode="&#x2022;" horiz-adv-x="876" d="M174 647.5q0 108.5 78 186t186.5 77.5t186 -77.5t77.5 -186t-77.5 -186.5t-186 -78t-186.5 78t-78 186.5z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1429" d="M135 137.5q0 63.5 44 107.5t107.5 44t108.5 -44t45 -107.5t-45 -108.5t-108.5 -45t-107.5 45t-44 108.5zM563 137.5q0 63.5 44 107.5t107.5 44t108.5 -44t45 -107.5t-45 -108.5t-108.5 -45t-107.5 45t-44 108.5zM991 137.5q0 63.5 44 107.5t107.5 44t108.5 -44t45 -107.5 t-45 -108.5t-108.5 -45t-107.5 45t-44 108.5z" />
+<glyph unicode="&#x202f;" horiz-adv-x="369" />
+<glyph unicode="&#x2039;" horiz-adv-x="714" d="M580 852l-236 -360l236 -361h-222l-243 361l243 360h222z" />
+<glyph unicode="&#x203a;" horiz-adv-x="714" d="M371 492l-236 360h221l244 -360l-244 -361h-221z" />
+<glyph unicode="&#x205f;" horiz-adv-x="462" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1558" d="M106 805v176h213q68 219 240 352t391 133q326 0 516 -235l-145 -184q-90 96 -171 135t-200 39t-214 -62.5t-142 -177.5h487v-176h-530q-2 -25 -2 -75t6 -95h526v-176h-471q111 -213 334 -213q111 0 189.5 42t166.5 132l146 -176q-190 -236 -502 -236q-213 0 -378 122 t-236 329h-224v176h185q-6 49 -6 98t2 72h-181z" />
+<glyph unicode="&#x2122;" horiz-adv-x="2048" d="M516 1303v-709h-141v709h-254v129h649v-129h-254zM1069 594h-141v838h221l252 -527l254 527h219v-838h-141v653l-293 -581h-80l-291 581v-653z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1085" d="M0 1085h1085v-1085h-1085v1085z" />
+<glyph unicode="&#xfb01;" horiz-adv-x="1351" d="M449 1180v-90h286v-185h-286v-905h-230v905h-137v185h137v84q0 172 103.5 273t250 101t267.5 -108l-95 -162q-68 72 -141.5 72t-114 -46t-40.5 -124zM1186 0h-230v1090h230v-1090zM928 1409q0 59 43 102t102.5 43t102.5 -43t43 -102t-43 -102t-102.5 -43t-102.5 43 t-43 102z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1351" d="M449 1180v-90h286v-185h-286v-905h-230v905h-137v185h137v84q0 172 103.5 273t250 101t267.5 -108l-95 -162q-68 72 -141.5 72t-114 -46t-40.5 -124zM1186 0h-230v1520h230v-1520z" />
+<hkern u1="&#x26;" u2="&#x2019;" k="59" />
+<hkern u1="&#x26;" u2="&#xc6;" k="-27" />
+<hkern u1="&#x26;" u2="Y" k="51" />
+<hkern u1="&#x26;" u2="W" k="35" />
+<hkern u1="&#x26;" u2="V" k="45" />
+<hkern u1="&#x26;" u2="T" k="45" />
+<hkern u1="&#x26;" u2="A" k="-12" />
+<hkern u1="&#x26;" u2="&#x27;" k="59" />
+<hkern u1="&#x27;" u2="&#x2039;" k="29" />
+<hkern u1="&#x27;" u2="&#xf0;" k="33" />
+<hkern u1="&#x27;" u2="&#xc6;" k="106" />
+<hkern u1="&#x27;" u2="o" k="23" />
+<hkern u1="&#x27;" u2="J" k="35" />
+<hkern u1="&#x27;" u2="A" k="94" />
+<hkern u1="&#x27;" u2="&#x3a;" k="18" />
+<hkern u1="&#x27;" u2="&#x34;" k="45" />
+<hkern u1="&#x27;" u2="&#x2f;" k="150" />
+<hkern u1="&#x27;" u2="&#x2e;" k="258" />
+<hkern u1="&#x27;" u2="&#x26;" k="39" />
+<hkern u1="&#x28;" u2="&#xf0;" k="41" />
+<hkern u1="&#x28;" u2="&#x7b;" k="20" />
+<hkern u1="&#x28;" u2="w" k="31" />
+<hkern u1="&#x28;" u2="v" k="27" />
+<hkern u1="&#x28;" u2="u" k="43" />
+<hkern u1="&#x28;" u2="t" k="27" />
+<hkern u1="&#x28;" u2="s" k="35" />
+<hkern u1="&#x28;" u2="o" k="55" />
+<hkern u1="&#x28;" u2="n" k="31" />
+<hkern u1="&#x28;" u2="j" k="-188" />
+<hkern u1="&#x28;" u2="f" k="25" />
+<hkern u1="&#x28;" u2="a" k="39" />
+<hkern u1="&#x28;" u2="S" k="23" />
+<hkern u1="&#x28;" u2="O" k="45" />
+<hkern u1="&#x28;" u2="&#x39;" k="20" />
+<hkern u1="&#x28;" u2="&#x38;" k="33" />
+<hkern u1="&#x28;" u2="&#x36;" k="41" />
+<hkern u1="&#x28;" u2="&#x34;" k="45" />
+<hkern u1="&#x28;" u2="&#x30;" k="39" />
+<hkern u1="&#x28;" u2="&#x28;" k="20" />
+<hkern u1="&#x29;" u2="&#x29;" k="20" />
+<hkern u1="&#x2a;" u2="&#xf0;" k="35" />
+<hkern u1="&#x2a;" u2="&#xef;" k="-31" />
+<hkern u1="&#x2a;" u2="&#xee;" k="-66" />
+<hkern u1="&#x2a;" u2="&#xec;" k="-16" />
+<hkern u1="&#x2a;" u2="&#xc6;" k="102" />
+<hkern u1="&#x2a;" u2="y" k="-14" />
+<hkern u1="&#x2a;" u2="v" k="-18" />
+<hkern u1="&#x2a;" u2="o" k="23" />
+<hkern u1="&#x2a;" u2="J" k="41" />
+<hkern u1="&#x2a;" u2="A" k="90" />
+<hkern u1="&#x2b;" u2="&#x33;" k="20" />
+<hkern u1="&#x2d;" u2="&#xc6;" k="18" />
+<hkern u1="&#x2d;" u2="z" k="35" />
+<hkern u1="&#x2d;" u2="x" k="47" />
+<hkern u1="&#x2d;" u2="t" k="18" />
+<hkern u1="&#x2d;" u2="f" k="18" />
+<hkern u1="&#x2d;" u2="Z" k="39" />
+<hkern u1="&#x2d;" u2="Y" k="92" />
+<hkern u1="&#x2d;" u2="X" k="57" />
+<hkern u1="&#x2d;" u2="W" k="39" />
+<hkern u1="&#x2d;" u2="V" k="53" />
+<hkern u1="&#x2d;" u2="T" k="117" />
+<hkern u1="&#x2d;" u2="S" k="16" />
+<hkern u1="&#x2d;" u2="J" k="59" />
+<hkern u1="&#x2d;" u2="A" k="25" />
+<hkern u1="&#x2d;" u2="&#x37;" k="39" />
+<hkern u1="&#x2d;" u2="&#x33;" k="39" />
+<hkern u1="&#x2d;" u2="&#x32;" k="39" />
+<hkern u1="&#x2d;" u2="&#x31;" k="55" />
+<hkern u1="&#x2e;" u2="&#x2019;" k="289" />
+<hkern u1="&#x2e;" u2="&#x2018;" k="289" />
+<hkern u1="&#x2e;" u2="y" k="74" />
+<hkern u1="&#x2e;" u2="w" k="57" />
+<hkern u1="&#x2e;" u2="v" k="74" />
+<hkern u1="&#x2e;" u2="t" k="33" />
+<hkern u1="&#x2e;" u2="f" k="16" />
+<hkern u1="&#x2e;" u2="Y" k="127" />
+<hkern u1="&#x2e;" u2="W" k="96" />
+<hkern u1="&#x2e;" u2="V" k="119" />
+<hkern u1="&#x2e;" u2="U" k="31" />
+<hkern u1="&#x2e;" u2="T" k="119" />
+<hkern u1="&#x2e;" u2="O" k="39" />
+<hkern u1="&#x2e;" u2="&#x37;" k="35" />
+<hkern u1="&#x2e;" u2="&#x36;" k="20" />
+<hkern u1="&#x2e;" u2="&#x31;" k="63" />
+<hkern u1="&#x2e;" u2="&#x30;" k="23" />
+<hkern u1="&#x2e;" u2="&#x27;" k="258" />
+<hkern u1="&#x2f;" u2="&#xf0;" k="49" />
+<hkern u1="&#x2f;" u2="&#xcf;" k="-16" />
+<hkern u1="&#x2f;" u2="&#xc6;" k="135" />
+<hkern u1="&#x2f;" u2="z" k="53" />
+<hkern u1="&#x2f;" u2="x" k="35" />
+<hkern u1="&#x2f;" u2="w" k="23" />
+<hkern u1="&#x2f;" u2="v" k="20" />
+<hkern u1="&#x2f;" u2="u" k="53" />
+<hkern u1="&#x2f;" u2="s" k="88" />
+<hkern u1="&#x2f;" u2="o" k="94" />
+<hkern u1="&#x2f;" u2="n" k="57" />
+<hkern u1="&#x2f;" u2="f" k="27" />
+<hkern u1="&#x2f;" u2="a" k="84" />
+<hkern u1="&#x2f;" u2="S" k="33" />
+<hkern u1="&#x2f;" u2="O" k="51" />
+<hkern u1="&#x2f;" u2="J" k="31" />
+<hkern u1="&#x2f;" u2="A" k="125" />
+<hkern u1="&#x2f;" u2="&#x39;" k="20" />
+<hkern u1="&#x2f;" u2="&#x38;" k="39" />
+<hkern u1="&#x2f;" u2="&#x36;" k="45" />
+<hkern u1="&#x2f;" u2="&#x34;" k="86" />
+<hkern u1="&#x2f;" u2="&#x30;" k="43" />
+<hkern u1="&#x2f;" u2="&#x2f;" k="575" />
+<hkern u1="&#x30;" u2="]" k="43" />
+<hkern u1="&#x30;" u2="\" k="27" />
+<hkern u1="&#x30;" u2="A" k="20" />
+<hkern u1="&#x30;" u2="&#x2f;" k="49" />
+<hkern u1="&#x30;" u2="&#x2e;" k="23" />
+<hkern u1="&#x30;" u2="&#x29;" k="39" />
+<hkern u1="&#x32;" u2="&#xb7;" k="35" />
+<hkern u1="&#x32;" u2="&#x2d;" k="23" />
+<hkern u1="&#x33;" u2="&#x2f;" k="33" />
+<hkern u1="&#x34;" u2="&#xb0;" k="49" />
+<hkern u1="&#x34;" u2="]" k="31" />
+<hkern u1="&#x34;" u2="\" k="37" />
+<hkern u1="&#x34;" u2="Y" k="31" />
+<hkern u1="&#x34;" u2="V" k="27" />
+<hkern u1="&#x34;" u2="T" k="41" />
+<hkern u1="&#x34;" u2="&#x37;" k="27" />
+<hkern u1="&#x34;" u2="&#x31;" k="25" />
+<hkern u1="&#x34;" u2="&#x29;" k="31" />
+<hkern u1="&#x34;" u2="&#x27;" k="43" />
+<hkern u1="&#x35;" u2="&#x2f;" k="29" />
+<hkern u1="&#x36;" u2="&#x2f;" k="27" />
+<hkern u1="&#x37;" u2="&#xc6;" k="90" />
+<hkern u1="&#x37;" u2="&#xb7;" k="53" />
+<hkern u1="&#x37;" u2="&#xa2;" k="41" />
+<hkern u1="&#x37;" u2="Y" k="-33" />
+<hkern u1="&#x37;" u2="V" k="-12" />
+<hkern u1="&#x37;" u2="A" k="82" />
+<hkern u1="&#x37;" u2="&#x34;" k="41" />
+<hkern u1="&#x37;" u2="&#x2f;" k="123" />
+<hkern u1="&#x37;" u2="&#x2e;" k="135" />
+<hkern u1="&#x37;" u2="&#x2d;" k="53" />
+<hkern u1="&#x38;" u2="]" k="33" />
+<hkern u1="&#x38;" u2="\" k="20" />
+<hkern u1="&#x38;" u2="&#x2f;" k="31" />
+<hkern u1="&#x38;" u2="&#x29;" k="33" />
+<hkern u1="&#x39;" u2="]" k="41" />
+<hkern u1="&#x39;" u2="\" k="25" />
+<hkern u1="&#x39;" u2="A" k="20" />
+<hkern u1="&#x39;" u2="&#x2f;" k="49" />
+<hkern u1="&#x39;" u2="&#x2e;" k="25" />
+<hkern u1="&#x39;" u2="&#x29;" k="39" />
+<hkern u1="&#x3a;" u2="&#x2019;" k="127" />
+<hkern u1="&#x3a;" u2="y" k="18" />
+<hkern u1="&#x3a;" u2="v" k="20" />
+<hkern u1="&#x3a;" u2="t" k="16" />
+<hkern u1="&#x3a;" u2="Y" k="92" />
+<hkern u1="&#x3a;" u2="W" k="43" />
+<hkern u1="&#x3a;" u2="V" k="57" />
+<hkern u1="&#x3a;" u2="T" k="113" />
+<hkern u1="&#x3a;" u2="&#x27;" k="18" />
+<hkern u1="&#x40;" u2="&#x2019;" k="37" />
+<hkern u1="&#x40;" u2="Y" k="53" />
+<hkern u1="&#x40;" u2="W" k="20" />
+<hkern u1="&#x40;" u2="V" k="33" />
+<hkern u1="&#x40;" u2="T" k="51" />
+<hkern u1="A" u2="&#x2122;" k="96" />
+<hkern u1="A" u2="&#x2019;" k="109" />
+<hkern u1="A" u2="&#x2018;" k="109" />
+<hkern u1="A" u2="&#xf0;" k="18" />
+<hkern u1="A" u2="&#xae;" k="25" />
+<hkern u1="A" u2="y" k="59" />
+<hkern u1="A" u2="w" k="51" />
+<hkern u1="A" u2="v" k="59" />
+<hkern u1="A" u2="u" k="16" />
+<hkern u1="A" u2="t" k="49" />
+<hkern u1="A" u2="o" k="23" />
+<hkern u1="A" u2="f" k="18" />
+<hkern u1="A" u2="]" k="27" />
+<hkern u1="A" u2="\" k="113" />
+<hkern u1="A" u2="Y" k="104" />
+<hkern u1="A" u2="W" k="68" />
+<hkern u1="A" u2="V" k="82" />
+<hkern u1="A" u2="U" k="35" />
+<hkern u1="A" u2="T" k="113" />
+<hkern u1="A" u2="O" k="37" />
+<hkern u1="A" u2="&#x3f;" k="43" />
+<hkern u1="A" u2="&#x36;" k="20" />
+<hkern u1="A" u2="&#x31;" k="43" />
+<hkern u1="A" u2="&#x30;" k="20" />
+<hkern u1="A" u2="&#x2d;" k="25" />
+<hkern u1="A" u2="&#x2a;" k="90" />
+<hkern u1="A" u2="&#x27;" k="94" />
+<hkern u1="B" u2="z" k="10" />
+<hkern u1="B" u2="y" k="16" />
+<hkern u1="B" u2="x" k="27" />
+<hkern u1="B" u2="w" k="14" />
+<hkern u1="B" u2="v" k="16" />
+<hkern u1="B" u2="t" k="18" />
+<hkern u1="B" u2="s" k="14" />
+<hkern u1="B" u2="f" k="16" />
+<hkern u1="B" u2="]" k="41" />
+<hkern u1="B" u2="\" k="29" />
+<hkern u1="B" u2="Y" k="39" />
+<hkern u1="B" u2="X" k="20" />
+<hkern u1="B" u2="W" k="14" />
+<hkern u1="B" u2="V" k="25" />
+<hkern u1="B" u2="T" k="35" />
+<hkern u1="B" u2="J" k="14" />
+<hkern u1="B" u2="A" k="16" />
+<hkern u1="B" u2="&#x2f;" k="27" />
+<hkern u1="B" u2="&#x29;" k="35" />
+<hkern u1="C" u2="&#xf0;" k="27" />
+<hkern u1="C" u2="&#xee;" k="-47" />
+<hkern u1="C" u2="u" k="14" />
+<hkern u1="C" u2="s" k="14" />
+<hkern u1="C" u2="o" k="31" />
+<hkern u1="C" u2="n" k="10" />
+<hkern u1="C" u2="S" k="10" />
+<hkern u1="C" u2="O" k="31" />
+<hkern u1="C" u2="&#x2d;" k="20" />
+<hkern u1="E" u2="&#xf0;" k="20" />
+<hkern u1="E" u2="u" k="14" />
+<hkern u1="E" u2="t" k="16" />
+<hkern u1="E" u2="o" k="20" />
+<hkern u1="E" u2="f" k="12" />
+<hkern u1="E" u2="O" k="20" />
+<hkern u1="F" u2="&#xf0;" k="41" />
+<hkern u1="F" u2="&#xee;" k="-43" />
+<hkern u1="F" u2="&#xed;" k="20" />
+<hkern u1="F" u2="&#xec;" k="-29" />
+<hkern u1="F" u2="&#xdf;" k="16" />
+<hkern u1="F" u2="&#xc6;" k="100" />
+<hkern u1="F" u2="z" k="33" />
+<hkern u1="F" u2="x" k="18" />
+<hkern u1="F" u2="u" k="25" />
+<hkern u1="F" u2="t" k="10" />
+<hkern u1="F" u2="s" k="43" />
+<hkern u1="F" u2="o" k="31" />
+<hkern u1="F" u2="n" k="31" />
+<hkern u1="F" u2="f" k="14" />
+<hkern u1="F" u2="a" k="45" />
+<hkern u1="F" u2="J" k="35" />
+<hkern u1="F" u2="A" k="88" />
+<hkern u1="F" u2="&#x2f;" k="94" />
+<hkern u1="F" u2="&#x2e;" k="115" />
+<hkern u1="G" u2="y" k="16" />
+<hkern u1="G" u2="x" k="12" />
+<hkern u1="G" u2="w" k="16" />
+<hkern u1="G" u2="v" k="18" />
+<hkern u1="G" u2="t" k="18" />
+<hkern u1="G" u2="f" k="18" />
+<hkern u1="G" u2="]" k="20" />
+<hkern u1="G" u2="Y" k="23" />
+<hkern u1="G" u2="X" k="10" />
+<hkern u1="G" u2="V" k="16" />
+<hkern u1="G" u2="T" k="16" />
+<hkern u1="G" u2="A" k="14" />
+<hkern u1="G" u2="&#x29;" k="20" />
+<hkern u1="I" u2="&#xf0;" k="18" />
+<hkern u1="I" u2="z" k="10" />
+<hkern u1="I" u2="u" k="10" />
+<hkern u1="I" u2="t" k="16" />
+<hkern u1="I" u2="s" k="12" />
+<hkern u1="I" u2="o" k="18" />
+<hkern u1="I" u2="n" k="10" />
+<hkern u1="I" u2="l" k="10" />
+<hkern u1="I" u2="h" k="10" />
+<hkern u1="I" u2="f" k="14" />
+<hkern u1="I" u2="a" k="12" />
+<hkern u1="J" u2="&#xf0;" k="23" />
+<hkern u1="J" u2="&#xc6;" k="18" />
+<hkern u1="J" u2="z" k="16" />
+<hkern u1="J" u2="x" k="12" />
+<hkern u1="J" u2="u" k="12" />
+<hkern u1="J" u2="t" k="14" />
+<hkern u1="J" u2="s" k="20" />
+<hkern u1="J" u2="o" k="16" />
+<hkern u1="J" u2="n" k="10" />
+<hkern u1="J" u2="l" k="10" />
+<hkern u1="J" u2="h" k="10" />
+<hkern u1="J" u2="f" k="14" />
+<hkern u1="J" u2="a" k="14" />
+<hkern u1="J" u2="J" k="16" />
+<hkern u1="J" u2="A" k="18" />
+<hkern u1="J" u2="&#x2f;" k="43" />
+<hkern u1="J" u2="&#x2e;" k="18" />
+<hkern u1="K" u2="&#x2039;" k="27" />
+<hkern u1="K" u2="&#xf0;" k="68" />
+<hkern u1="K" u2="&#xef;" k="-39" />
+<hkern u1="K" u2="&#xec;" k="-70" />
+<hkern u1="K" u2="&#xae;" k="20" />
+<hkern u1="K" u2="y" k="53" />
+<hkern u1="K" u2="w" k="59" />
+<hkern u1="K" u2="v" k="53" />
+<hkern u1="K" u2="u" k="45" />
+<hkern u1="K" u2="t" k="27" />
+<hkern u1="K" u2="o" k="84" />
+<hkern u1="K" u2="n" k="10" />
+<hkern u1="K" u2="f" k="18" />
+<hkern u1="K" u2="a" k="18" />
+<hkern u1="K" u2="S" k="25" />
+<hkern u1="K" u2="O" k="63" />
+<hkern u1="K" u2="&#x2d;" k="55" />
+<hkern u1="L" u2="&#x2122;" k="176" />
+<hkern u1="L" u2="&#x2019;" k="178" />
+<hkern u1="L" u2="&#x2018;" k="178" />
+<hkern u1="L" u2="&#xf0;" k="10" />
+<hkern u1="L" u2="&#xb7;" k="152" />
+<hkern u1="L" u2="&#xae;" k="20" />
+<hkern u1="L" u2="y" k="123" />
+<hkern u1="L" u2="w" k="100" />
+<hkern u1="L" u2="v" k="123" />
+<hkern u1="L" u2="u" k="14" />
+<hkern u1="L" u2="t" k="63" />
+<hkern u1="L" u2="o" k="18" />
+<hkern u1="L" u2="f" k="27" />
+<hkern u1="L" u2="\" k="139" />
+<hkern u1="L" u2="Y" k="135" />
+<hkern u1="L" u2="W" k="115" />
+<hkern u1="L" u2="V" k="123" />
+<hkern u1="L" u2="U" k="35" />
+<hkern u1="L" u2="T" k="147" />
+<hkern u1="L" u2="O" k="41" />
+<hkern u1="L" u2="&#x3f;" k="49" />
+<hkern u1="L" u2="&#x31;" k="45" />
+<hkern u1="L" u2="&#x2d;" k="133" />
+<hkern u1="L" u2="&#x2a;" k="180" />
+<hkern u1="L" u2="&#x27;" k="178" />
+<hkern u1="O" u2="&#x2122;" k="20" />
+<hkern u1="O" u2="&#xf0;" k="10" />
+<hkern u1="O" u2="&#xc6;" k="39" />
+<hkern u1="O" u2="&#x7d;" k="23" />
+<hkern u1="O" u2="z" k="14" />
+<hkern u1="O" u2="x" k="25" />
+<hkern u1="O" u2="s" k="12" />
+<hkern u1="O" u2="n" k="10" />
+<hkern u1="O" u2="l" k="10" />
+<hkern u1="O" u2="i" k="10" />
+<hkern u1="O" u2="h" k="10" />
+<hkern u1="O" u2="a" k="10" />
+<hkern u1="O" u2="]" k="51" />
+<hkern u1="O" u2="\" k="37" />
+<hkern u1="O" u2="Z" k="25" />
+<hkern u1="O" u2="Y" k="47" />
+<hkern u1="O" u2="X" k="51" />
+<hkern u1="O" u2="W" k="14" />
+<hkern u1="O" u2="V" k="25" />
+<hkern u1="O" u2="T" k="39" />
+<hkern u1="O" u2="J" k="43" />
+<hkern u1="O" u2="A" k="37" />
+<hkern u1="O" u2="&#x2f;" k="57" />
+<hkern u1="O" u2="&#x2e;" k="39" />
+<hkern u1="O" u2="&#x29;" k="45" />
+<hkern u1="P" u2="&#x2039;" k="20" />
+<hkern u1="P" u2="&#xf0;" k="27" />
+<hkern u1="P" u2="&#xc6;" k="100" />
+<hkern u1="P" u2="s" k="12" />
+<hkern u1="P" u2="o" k="12" />
+<hkern u1="P" u2="a" k="20" />
+<hkern u1="P" u2="]" k="39" />
+<hkern u1="P" u2="Z" k="14" />
+<hkern u1="P" u2="Y" k="16" />
+<hkern u1="P" u2="X" k="39" />
+<hkern u1="P" u2="J" k="63" />
+<hkern u1="P" u2="A" k="78" />
+<hkern u1="P" u2="&#x2f;" k="98" />
+<hkern u1="P" u2="&#x2e;" k="129" />
+<hkern u1="P" u2="&#x29;" k="37" />
+<hkern u1="Q" u2="&#x7d;" k="10" />
+<hkern u1="Q" u2="j" k="-125" />
+<hkern u1="Q" u2="]" k="25" />
+<hkern u1="R" u2="&#x2039;" k="31" />
+<hkern u1="R" u2="&#xf0;" k="41" />
+<hkern u1="R" u2="u" k="18" />
+<hkern u1="R" u2="t" k="12" />
+<hkern u1="R" u2="o" k="31" />
+<hkern u1="R" u2="n" k="10" />
+<hkern u1="R" u2="f" k="10" />
+<hkern u1="R" u2="a" k="20" />
+<hkern u1="R" u2="\" k="25" />
+<hkern u1="R" u2="Y" k="27" />
+<hkern u1="R" u2="V" k="18" />
+<hkern u1="R" u2="T" k="20" />
+<hkern u1="R" u2="J" k="10" />
+<hkern u1="S" u2="z" k="12" />
+<hkern u1="S" u2="y" k="20" />
+<hkern u1="S" u2="x" k="18" />
+<hkern u1="S" u2="w" k="20" />
+<hkern u1="S" u2="v" k="20" />
+<hkern u1="S" u2="u" k="12" />
+<hkern u1="S" u2="t" k="25" />
+<hkern u1="S" u2="s" k="12" />
+<hkern u1="S" u2="n" k="12" />
+<hkern u1="S" u2="f" k="23" />
+<hkern u1="S" u2="Y" k="12" />
+<hkern u1="S" u2="V" k="10" />
+<hkern u1="S" u2="A" k="14" />
+<hkern u1="S" u2="&#x2f;" k="23" />
+<hkern u1="T" u2="&#x203a;" k="111" />
+<hkern u1="T" u2="&#x2039;" k="127" />
+<hkern u1="T" u2="&#xf0;" k="82" />
+<hkern u1="T" u2="&#xef;" k="-16" />
+<hkern u1="T" u2="&#xee;" k="-66" />
+<hkern u1="T" u2="&#xed;" k="41" />
+<hkern u1="T" u2="&#xec;" k="-49" />
+<hkern u1="T" u2="&#xdf;" k="27" />
+<hkern u1="T" u2="&#xc6;" k="111" />
+<hkern u1="T" u2="&#xae;" k="20" />
+<hkern u1="T" u2="z" k="147" />
+<hkern u1="T" u2="y" k="139" />
+<hkern u1="T" u2="x" k="137" />
+<hkern u1="T" u2="w" k="133" />
+<hkern u1="T" u2="v" k="139" />
+<hkern u1="T" u2="u" k="106" />
+<hkern u1="T" u2="t" k="20" />
+<hkern u1="T" u2="s" k="147" />
+<hkern u1="T" u2="o" k="131" />
+<hkern u1="T" u2="n" k="100" />
+<hkern u1="T" u2="l" k="10" />
+<hkern u1="T" u2="i" k="10" />
+<hkern u1="T" u2="h" k="10" />
+<hkern u1="T" u2="f" k="43" />
+<hkern u1="T" u2="a" k="150" />
+<hkern u1="T" u2="O" k="39" />
+<hkern u1="T" u2="J" k="27" />
+<hkern u1="T" u2="A" k="113" />
+<hkern u1="T" u2="&#x40;" k="55" />
+<hkern u1="T" u2="&#x3a;" k="113" />
+<hkern u1="T" u2="&#x34;" k="66" />
+<hkern u1="T" u2="&#x2f;" k="113" />
+<hkern u1="T" u2="&#x2e;" k="119" />
+<hkern u1="T" u2="&#x2d;" k="117" />
+<hkern u1="T" u2="&#x26;" k="29" />
+<hkern u1="U" u2="&#xf0;" k="27" />
+<hkern u1="U" u2="&#xc6;" k="39" />
+<hkern u1="U" u2="z" k="20" />
+<hkern u1="U" u2="x" k="12" />
+<hkern u1="U" u2="u" k="18" />
+<hkern u1="U" u2="t" k="14" />
+<hkern u1="U" u2="s" k="27" />
+<hkern u1="U" u2="o" k="18" />
+<hkern u1="U" u2="n" k="10" />
+<hkern u1="U" u2="l" k="12" />
+<hkern u1="U" u2="i" k="12" />
+<hkern u1="U" u2="h" k="12" />
+<hkern u1="U" u2="f" k="12" />
+<hkern u1="U" u2="a" k="20" />
+<hkern u1="U" u2="J" k="29" />
+<hkern u1="U" u2="A" k="35" />
+<hkern u1="U" u2="&#x2f;" k="53" />
+<hkern u1="U" u2="&#x2e;" k="33" />
+<hkern u1="V" u2="&#x2122;" k="-27" />
+<hkern u1="V" u2="&#x203a;" k="35" />
+<hkern u1="V" u2="&#x2039;" k="72" />
+<hkern u1="V" u2="&#xf0;" k="78" />
+<hkern u1="V" u2="&#xef;" k="-55" />
+<hkern u1="V" u2="&#xee;" k="-55" />
+<hkern u1="V" u2="&#xed;" k="29" />
+<hkern u1="V" u2="&#xec;" k="-104" />
+<hkern u1="V" u2="&#xdf;" k="25" />
+<hkern u1="V" u2="&#xc6;" k="92" />
+<hkern u1="V" u2="z" k="45" />
+<hkern u1="V" u2="x" k="18" />
+<hkern u1="V" u2="u" k="51" />
+<hkern u1="V" u2="t" k="10" />
+<hkern u1="V" u2="s" k="90" />
+<hkern u1="V" u2="o" k="88" />
+<hkern u1="V" u2="n" k="61" />
+<hkern u1="V" u2="f" k="12" />
+<hkern u1="V" u2="a" k="88" />
+<hkern u1="V" u2="S" k="12" />
+<hkern u1="V" u2="O" k="25" />
+<hkern u1="V" u2="J" k="27" />
+<hkern u1="V" u2="A" k="82" />
+<hkern u1="V" u2="&#x40;" k="33" />
+<hkern u1="V" u2="&#x3a;" k="57" />
+<hkern u1="V" u2="&#x34;" k="41" />
+<hkern u1="V" u2="&#x31;" k="-10" />
+<hkern u1="V" u2="&#x2f;" k="117" />
+<hkern u1="V" u2="&#x2e;" k="119" />
+<hkern u1="V" u2="&#x2d;" k="53" />
+<hkern u1="V" u2="&#x26;" k="29" />
+<hkern u1="W" u2="&#x203a;" k="23" />
+<hkern u1="W" u2="&#x2039;" k="57" />
+<hkern u1="W" u2="&#xf0;" k="72" />
+<hkern u1="W" u2="&#xef;" k="-51" />
+<hkern u1="W" u2="&#xee;" k="-49" />
+<hkern u1="W" u2="&#xed;" k="25" />
+<hkern u1="W" u2="&#xec;" k="-88" />
+<hkern u1="W" u2="&#xdf;" k="23" />
+<hkern u1="W" u2="&#xc6;" k="80" />
+<hkern u1="W" u2="z" k="35" />
+<hkern u1="W" u2="x" k="10" />
+<hkern u1="W" u2="u" k="43" />
+<hkern u1="W" u2="s" k="80" />
+<hkern u1="W" u2="o" k="78" />
+<hkern u1="W" u2="n" k="51" />
+<hkern u1="W" u2="a" k="76" />
+<hkern u1="W" u2="O" k="14" />
+<hkern u1="W" u2="J" k="25" />
+<hkern u1="W" u2="A" k="68" />
+<hkern u1="W" u2="&#x40;" k="20" />
+<hkern u1="W" u2="&#x3a;" k="43" />
+<hkern u1="W" u2="&#x34;" k="27" />
+<hkern u1="W" u2="&#x2f;" k="98" />
+<hkern u1="W" u2="&#x2e;" k="96" />
+<hkern u1="W" u2="&#x2d;" k="39" />
+<hkern u1="W" u2="&#x26;" k="20" />
+<hkern u1="X" u2="&#x2039;" k="31" />
+<hkern u1="X" u2="&#xf0;" k="51" />
+<hkern u1="X" u2="&#xef;" k="-16" />
+<hkern u1="X" u2="&#xec;" k="-41" />
+<hkern u1="X" u2="&#xae;" k="20" />
+<hkern u1="X" u2="y" k="49" />
+<hkern u1="X" u2="w" k="55" />
+<hkern u1="X" u2="v" k="49" />
+<hkern u1="X" u2="u" k="43" />
+<hkern u1="X" u2="t" k="33" />
+<hkern u1="X" u2="o" k="66" />
+<hkern u1="X" u2="n" k="12" />
+<hkern u1="X" u2="f" k="25" />
+<hkern u1="X" u2="a" k="14" />
+<hkern u1="X" u2="O" k="51" />
+<hkern u1="X" u2="&#x2d;" k="55" />
+<hkern u1="Y" u2="&#x2122;" k="-47" />
+<hkern u1="Y" u2="&#x203a;" k="66" />
+<hkern u1="Y" u2="&#x2039;" k="109" />
+<hkern u1="Y" u2="&#xf0;" k="90" />
+<hkern u1="Y" u2="&#xef;" k="-78" />
+<hkern u1="Y" u2="&#xee;" k="-45" />
+<hkern u1="Y" u2="&#xed;" k="39" />
+<hkern u1="Y" u2="&#xec;" k="-125" />
+<hkern u1="Y" u2="&#xdf;" k="29" />
+<hkern u1="Y" u2="&#xc6;" k="113" />
+<hkern u1="Y" u2="&#xae;" k="31" />
+<hkern u1="Y" u2="z" k="82" />
+<hkern u1="Y" u2="y" k="18" />
+<hkern u1="Y" u2="x" k="43" />
+<hkern u1="Y" u2="w" k="27" />
+<hkern u1="Y" u2="v" k="16" />
+<hkern u1="Y" u2="u" k="74" />
+<hkern u1="Y" u2="t" k="14" />
+<hkern u1="Y" u2="s" k="106" />
+<hkern u1="Y" u2="o" k="123" />
+<hkern u1="Y" u2="n" k="72" />
+<hkern u1="Y" u2="f" k="23" />
+<hkern u1="Y" u2="a" k="100" />
+<hkern u1="Y" u2="S" k="18" />
+<hkern u1="Y" u2="O" k="47" />
+<hkern u1="Y" u2="J" k="20" />
+<hkern u1="Y" u2="A" k="104" />
+<hkern u1="Y" u2="&#x40;" k="57" />
+<hkern u1="Y" u2="&#x3a;" k="90" />
+<hkern u1="Y" u2="&#x36;" k="20" />
+<hkern u1="Y" u2="&#x34;" k="66" />
+<hkern u1="Y" u2="&#x31;" k="-31" />
+<hkern u1="Y" u2="&#x2f;" k="119" />
+<hkern u1="Y" u2="&#x2e;" k="127" />
+<hkern u1="Y" u2="&#x2d;" k="92" />
+<hkern u1="Y" u2="&#x26;" k="37" />
+<hkern u1="Z" u2="&#xf0;" k="25" />
+<hkern u1="Z" u2="&#xee;" k="-37" />
+<hkern u1="Z" u2="y" k="16" />
+<hkern u1="Z" u2="w" k="20" />
+<hkern u1="Z" u2="v" k="16" />
+<hkern u1="Z" u2="u" k="23" />
+<hkern u1="Z" u2="t" k="20" />
+<hkern u1="Z" u2="o" k="29" />
+<hkern u1="Z" u2="n" k="14" />
+<hkern u1="Z" u2="f" k="18" />
+<hkern u1="Z" u2="O" k="25" />
+<hkern u1="Z" u2="&#x2d;" k="35" />
+<hkern u1="[" u2="&#xf0;" k="41" />
+<hkern u1="[" u2="&#xec;" k="-33" />
+<hkern u1="[" u2="&#xc6;" k="23" />
+<hkern u1="[" u2="z" k="37" />
+<hkern u1="[" u2="w" k="33" />
+<hkern u1="[" u2="v" k="29" />
+<hkern u1="[" u2="u" k="43" />
+<hkern u1="[" u2="t" k="20" />
+<hkern u1="[" u2="s" k="49" />
+<hkern u1="[" u2="o" k="59" />
+<hkern u1="[" u2="n" k="37" />
+<hkern u1="[" u2="j" k="-184" />
+<hkern u1="[" u2="f" k="20" />
+<hkern u1="[" u2="a" k="45" />
+<hkern u1="[" u2="S" k="27" />
+<hkern u1="[" u2="O" k="51" />
+<hkern u1="[" u2="A" k="27" />
+<hkern u1="[" u2="&#x39;" k="20" />
+<hkern u1="[" u2="&#x38;" k="33" />
+<hkern u1="[" u2="&#x36;" k="43" />
+<hkern u1="[" u2="&#x34;" k="55" />
+<hkern u1="[" u2="&#x30;" k="43" />
+<hkern u1="\" u2="&#x2019;" k="127" />
+<hkern u1="\" u2="&#xc6;" k="-39" />
+<hkern u1="\" u2="y" k="47" />
+<hkern u1="\" u2="w" k="37" />
+<hkern u1="\" u2="v" k="47" />
+<hkern u1="\" u2="t" k="23" />
+<hkern u1="\" u2="Y" k="90" />
+<hkern u1="\" u2="W" k="63" />
+<hkern u1="\" u2="V" k="82" />
+<hkern u1="\" u2="U" k="25" />
+<hkern u1="\" u2="T" k="84" />
+<hkern u1="\" u2="O" k="23" />
+<hkern u1="\" u2="A" k="-14" />
+<hkern u1="\" u2="&#x31;" k="41" />
+<hkern u1="\" u2="&#x27;" k="109" />
+<hkern u1="a" u2="&#x2122;" k="47" />
+<hkern u1="a" u2="&#x2019;" k="33" />
+<hkern u1="a" u2="&#x2018;" k="33" />
+<hkern u1="a" u2="&#x7d;" k="23" />
+<hkern u1="a" u2="y" k="12" />
+<hkern u1="a" u2="w" k="10" />
+<hkern u1="a" u2="v" k="12" />
+<hkern u1="a" u2="t" k="12" />
+<hkern u1="a" u2="f" k="8" />
+<hkern u1="a" u2="]" k="47" />
+<hkern u1="a" u2="\" k="70" />
+<hkern u1="a" u2="Z" k="18" />
+<hkern u1="a" u2="Y" k="96" />
+<hkern u1="a" u2="X" k="10" />
+<hkern u1="a" u2="W" k="53" />
+<hkern u1="a" u2="V" k="72" />
+<hkern u1="a" u2="U" k="16" />
+<hkern u1="a" u2="T" k="109" />
+<hkern u1="a" u2="S" k="10" />
+<hkern u1="a" u2="O" k="12" />
+<hkern u1="a" u2="J" k="14" />
+<hkern u1="a" u2="I" k="10" />
+<hkern u1="a" u2="&#x29;" k="33" />
+<hkern u1="c" u2="&#x2122;" k="35" />
+<hkern u1="c" u2="&#x2039;" k="27" />
+<hkern u1="c" u2="&#xf0;" k="25" />
+<hkern u1="c" u2="s" k="8" />
+<hkern u1="c" u2="o" k="23" />
+<hkern u1="c" u2="a" k="8" />
+<hkern u1="c" u2="]" k="33" />
+<hkern u1="c" u2="\" k="41" />
+<hkern u1="c" u2="Y" k="90" />
+<hkern u1="c" u2="W" k="35" />
+<hkern u1="c" u2="V" k="45" />
+<hkern u1="c" u2="U" k="12" />
+<hkern u1="c" u2="T" k="164" />
+<hkern u1="c" u2="S" k="12" />
+<hkern u1="c" u2="O" k="20" />
+<hkern u1="c" u2="&#x2d;" k="31" />
+<hkern u1="c" u2="&#x29;" k="27" />
+<hkern u1="d" u2="Z" k="12" />
+<hkern u1="d" u2="U" k="12" />
+<hkern u1="d" u2="T" k="10" />
+<hkern u1="d" u2="O" k="10" />
+<hkern u1="d" u2="J" k="16" />
+<hkern u1="d" u2="I" k="10" />
+<hkern u1="e" u2="&#x2122;" k="41" />
+<hkern u1="e" u2="&#x2019;" k="37" />
+<hkern u1="e" u2="&#x2018;" k="37" />
+<hkern u1="e" u2="&#x7d;" k="25" />
+<hkern u1="e" u2="y" k="12" />
+<hkern u1="e" u2="x" k="23" />
+<hkern u1="e" u2="v" k="12" />
+<hkern u1="e" u2="t" k="8" />
+<hkern u1="e" u2="f" k="8" />
+<hkern u1="e" u2="]" k="51" />
+<hkern u1="e" u2="\" k="68" />
+<hkern u1="e" u2="Z" k="29" />
+<hkern u1="e" u2="Y" k="117" />
+<hkern u1="e" u2="X" k="35" />
+<hkern u1="e" u2="W" k="74" />
+<hkern u1="e" u2="V" k="88" />
+<hkern u1="e" u2="U" k="14" />
+<hkern u1="e" u2="T" k="158" />
+<hkern u1="e" u2="S" k="14" />
+<hkern u1="e" u2="J" k="18" />
+<hkern u1="e" u2="I" k="12" />
+<hkern u1="e" u2="A" k="14" />
+<hkern u1="e" u2="&#x2f;" k="35" />
+<hkern u1="e" u2="&#x29;" k="47" />
+<hkern u1="f" u2="&#x2122;" k="-57" />
+<hkern u1="f" u2="&#x2039;" k="55" />
+<hkern u1="f" u2="&#xf0;" k="63" />
+<hkern u1="f" u2="&#xef;" k="-100" />
+<hkern u1="f" u2="&#xee;" k="-37" />
+<hkern u1="f" u2="&#xec;" k="-152" />
+<hkern u1="f" u2="&#xc6;" k="90" />
+<hkern u1="f" u2="s" k="8" />
+<hkern u1="f" u2="o" k="27" />
+<hkern u1="f" u2="a" k="10" />
+<hkern u1="f" u2="]" k="-29" />
+<hkern u1="f" u2="Y" k="-117" />
+<hkern u1="f" u2="X" k="-33" />
+<hkern u1="f" u2="W" k="-78" />
+<hkern u1="f" u2="V" k="-94" />
+<hkern u1="f" u2="T" k="-39" />
+<hkern u1="f" u2="J" k="12" />
+<hkern u1="f" u2="A" k="82" />
+<hkern u1="f" u2="&#x3a;" k="41" />
+<hkern u1="f" u2="&#x2f;" k="63" />
+<hkern u1="f" u2="&#x2e;" k="66" />
+<hkern u1="f" u2="&#x2d;" k="63" />
+<hkern u1="i" u2="Z" k="12" />
+<hkern u1="i" u2="U" k="12" />
+<hkern u1="i" u2="T" k="10" />
+<hkern u1="i" u2="O" k="10" />
+<hkern u1="i" u2="J" k="16" />
+<hkern u1="i" u2="I" k="10" />
+<hkern u1="j" u2="j" k="-33" />
+<hkern u1="k" u2="&#x2122;" k="33" />
+<hkern u1="k" u2="&#x2039;" k="41" />
+<hkern u1="k" u2="&#xf0;" k="53" />
+<hkern u1="k" u2="s" k="10" />
+<hkern u1="k" u2="o" k="51" />
+<hkern u1="k" u2="a" k="18" />
+<hkern u1="k" u2="Y" k="39" />
+<hkern u1="k" u2="V" k="16" />
+<hkern u1="k" u2="U" k="10" />
+<hkern u1="k" u2="T" k="133" />
+<hkern u1="k" u2="O" k="35" />
+<hkern u1="k" u2="&#x2d;" k="57" />
+<hkern u1="l" u2="&#xb7;" k="150" />
+<hkern u1="l" u2="Z" k="12" />
+<hkern u1="l" u2="U" k="12" />
+<hkern u1="l" u2="T" k="10" />
+<hkern u1="l" u2="O" k="10" />
+<hkern u1="l" u2="J" k="16" />
+<hkern u1="l" u2="I" k="10" />
+<hkern u1="n" u2="&#x2122;" k="49" />
+<hkern u1="n" u2="&#x2019;" k="35" />
+<hkern u1="n" u2="&#x2018;" k="35" />
+<hkern u1="n" u2="&#x7d;" k="23" />
+<hkern u1="n" u2="y" k="14" />
+<hkern u1="n" u2="w" k="12" />
+<hkern u1="n" u2="v" k="12" />
+<hkern u1="n" u2="t" k="14" />
+<hkern u1="n" u2="f" k="10" />
+<hkern u1="n" u2="]" k="47" />
+<hkern u1="n" u2="\" k="72" />
+<hkern u1="n" u2="Z" k="20" />
+<hkern u1="n" u2="Y" k="96" />
+<hkern u1="n" u2="X" k="10" />
+<hkern u1="n" u2="W" k="53" />
+<hkern u1="n" u2="V" k="72" />
+<hkern u1="n" u2="U" k="16" />
+<hkern u1="n" u2="T" k="109" />
+<hkern u1="n" u2="S" k="10" />
+<hkern u1="n" u2="O" k="12" />
+<hkern u1="n" u2="J" k="14" />
+<hkern u1="n" u2="I" k="10" />
+<hkern u1="n" u2="&#x2a;" k="16" />
+<hkern u1="n" u2="&#x29;" k="33" />
+<hkern u1="o" u2="&#x2122;" k="49" />
+<hkern u1="o" u2="&#x2019;" k="53" />
+<hkern u1="o" u2="&#x2018;" k="53" />
+<hkern u1="o" u2="&#xc6;" k="20" />
+<hkern u1="o" u2="&#x7d;" k="35" />
+<hkern u1="o" u2="z" k="12" />
+<hkern u1="o" u2="y" k="20" />
+<hkern u1="o" u2="x" k="39" />
+<hkern u1="o" u2="w" k="14" />
+<hkern u1="o" u2="v" k="18" />
+<hkern u1="o" u2="t" k="16" />
+<hkern u1="o" u2="f" k="16" />
+<hkern u1="o" u2="]" k="59" />
+<hkern u1="o" u2="\" k="76" />
+<hkern u1="o" u2="Z" k="41" />
+<hkern u1="o" u2="Y" k="123" />
+<hkern u1="o" u2="X" k="66" />
+<hkern u1="o" u2="W" k="78" />
+<hkern u1="o" u2="V" k="88" />
+<hkern u1="o" u2="U" k="18" />
+<hkern u1="o" u2="T" k="131" />
+<hkern u1="o" u2="S" k="23" />
+<hkern u1="o" u2="J" k="29" />
+<hkern u1="o" u2="I" k="18" />
+<hkern u1="o" u2="A" k="23" />
+<hkern u1="o" u2="&#x3f;" k="20" />
+<hkern u1="o" u2="&#x2f;" k="43" />
+<hkern u1="o" u2="&#x2a;" k="23" />
+<hkern u1="o" u2="&#x29;" k="55" />
+<hkern u1="o" u2="&#x27;" k="23" />
+<hkern u1="q" u2="j" k="-119" />
+<hkern u1="r" u2="&#x2122;" k="16" />
+<hkern u1="r" u2="&#x2039;" k="55" />
+<hkern u1="r" u2="&#xf0;" k="57" />
+<hkern u1="r" u2="&#xc6;" k="92" />
+<hkern u1="r" u2="&#x7d;" k="20" />
+<hkern u1="r" u2="o" k="20" />
+<hkern u1="r" u2="a" k="10" />
+<hkern u1="r" u2="]" k="39" />
+<hkern u1="r" u2="Z" k="29" />
+<hkern u1="r" u2="Y" k="14" />
+<hkern u1="r" u2="X" k="61" />
+<hkern u1="r" u2="T" k="139" />
+<hkern u1="r" u2="J" k="86" />
+<hkern u1="r" u2="A" k="90" />
+<hkern u1="r" u2="&#x3a;" k="33" />
+<hkern u1="r" u2="&#x2f;" k="88" />
+<hkern u1="r" u2="&#x2e;" k="92" />
+<hkern u1="r" u2="&#x2d;" k="57" />
+<hkern u1="r" u2="&#x29;" k="37" />
+<hkern u1="r" u2="&#x26;" k="27" />
+<hkern u1="s" u2="&#x2122;" k="47" />
+<hkern u1="s" u2="&#x7d;" k="20" />
+<hkern u1="s" u2="x" k="8" />
+<hkern u1="s" u2="v" k="8" />
+<hkern u1="s" u2="]" k="43" />
+<hkern u1="s" u2="\" k="53" />
+<hkern u1="s" u2="Y" k="92" />
+<hkern u1="s" u2="X" k="16" />
+<hkern u1="s" u2="W" k="51" />
+<hkern u1="s" u2="V" k="61" />
+<hkern u1="s" u2="U" k="18" />
+<hkern u1="s" u2="T" k="145" />
+<hkern u1="s" u2="O" k="10" />
+<hkern u1="s" u2="I" k="12" />
+<hkern u1="s" u2="A" k="10" />
+<hkern u1="s" u2="&#x2f;" k="20" />
+<hkern u1="s" u2="&#x29;" k="41" />
+<hkern u1="t" u2="&#x2122;" k="39" />
+<hkern u1="t" u2="o" k="8" />
+<hkern u1="t" u2="]" k="25" />
+<hkern u1="t" u2="\" k="33" />
+<hkern u1="t" u2="Y" k="68" />
+<hkern u1="t" u2="W" k="25" />
+<hkern u1="t" u2="V" k="37" />
+<hkern u1="t" u2="U" k="12" />
+<hkern u1="t" u2="T" k="119" />
+<hkern u1="u" u2="&#x2122;" k="37" />
+<hkern u1="u" u2="]" k="37" />
+<hkern u1="u" u2="\" k="41" />
+<hkern u1="u" u2="Z" k="14" />
+<hkern u1="u" u2="Y" k="72" />
+<hkern u1="u" u2="X" k="14" />
+<hkern u1="u" u2="W" k="51" />
+<hkern u1="u" u2="V" k="61" />
+<hkern u1="u" u2="U" k="10" />
+<hkern u1="u" u2="T" k="100" />
+<hkern u1="u" u2="O" k="10" />
+<hkern u1="u" u2="J" k="16" />
+<hkern u1="u" u2="I" k="10" />
+<hkern u1="u" u2="&#x29;" k="31" />
+<hkern u1="v" u2="&#x2039;" k="37" />
+<hkern u1="v" u2="&#xf0;" k="35" />
+<hkern u1="v" u2="&#xc6;" k="66" />
+<hkern u1="v" u2="s" k="14" />
+<hkern u1="v" u2="o" k="18" />
+<hkern u1="v" u2="a" k="14" />
+<hkern u1="v" u2="]" k="29" />
+<hkern u1="v" u2="Z" k="12" />
+<hkern u1="v" u2="Y" k="16" />
+<hkern u1="v" u2="X" k="49" />
+<hkern u1="v" u2="T" k="139" />
+<hkern u1="v" u2="J" k="53" />
+<hkern u1="v" u2="A" k="59" />
+<hkern u1="v" u2="&#x3a;" k="18" />
+<hkern u1="v" u2="&#x2f;" k="82" />
+<hkern u1="v" u2="&#x2e;" k="74" />
+<hkern u1="v" u2="&#x2a;" k="-18" />
+<hkern u1="v" u2="&#x29;" k="27" />
+<hkern u1="w" u2="&#x2039;" k="29" />
+<hkern u1="w" u2="&#xf0;" k="29" />
+<hkern u1="w" u2="&#xc6;" k="59" />
+<hkern u1="w" u2="s" k="8" />
+<hkern u1="w" u2="o" k="14" />
+<hkern u1="w" u2="a" k="10" />
+<hkern u1="w" u2="]" k="33" />
+<hkern u1="w" u2="Z" k="16" />
+<hkern u1="w" u2="Y" k="27" />
+<hkern u1="w" u2="X" k="53" />
+<hkern u1="w" u2="T" k="133" />
+<hkern u1="w" u2="J" k="57" />
+<hkern u1="w" u2="A" k="51" />
+<hkern u1="w" u2="&#x2f;" k="72" />
+<hkern u1="w" u2="&#x2e;" k="59" />
+<hkern u1="w" u2="&#x29;" k="31" />
+<hkern u1="x" u2="&#x2122;" k="27" />
+<hkern u1="x" u2="&#x2039;" k="45" />
+<hkern u1="x" u2="&#xf0;" k="45" />
+<hkern u1="x" u2="o" k="41" />
+<hkern u1="x" u2="a" k="10" />
+<hkern u1="x" u2="Y" k="39" />
+<hkern u1="x" u2="V" k="16" />
+<hkern u1="x" u2="U" k="12" />
+<hkern u1="x" u2="T" k="135" />
+<hkern u1="x" u2="O" k="25" />
+<hkern u1="x" u2="&#x2d;" k="49" />
+<hkern u1="y" u2="&#x2039;" k="37" />
+<hkern u1="y" u2="&#xf0;" k="35" />
+<hkern u1="y" u2="&#xc6;" k="66" />
+<hkern u1="y" u2="s" k="12" />
+<hkern u1="y" u2="o" k="18" />
+<hkern u1="y" u2="a" k="14" />
+<hkern u1="y" u2="]" k="23" />
+<hkern u1="y" u2="Z" k="12" />
+<hkern u1="y" u2="Y" k="16" />
+<hkern u1="y" u2="X" k="47" />
+<hkern u1="y" u2="T" k="139" />
+<hkern u1="y" u2="J" k="49" />
+<hkern u1="y" u2="A" k="59" />
+<hkern u1="y" u2="&#x3a;" k="18" />
+<hkern u1="y" u2="&#x2f;" k="76" />
+<hkern u1="y" u2="&#x2e;" k="74" />
+<hkern u1="y" u2="&#x2a;" k="-12" />
+<hkern u1="y" u2="&#x29;" k="23" />
+<hkern u1="z" u2="&#x2122;" k="43" />
+<hkern u1="z" u2="&#x2039;" k="31" />
+<hkern u1="z" u2="&#xf0;" k="14" />
+<hkern u1="z" u2="o" k="14" />
+<hkern u1="z" u2="]" k="33" />
+<hkern u1="z" u2="\" k="37" />
+<hkern u1="z" u2="Y" k="78" />
+<hkern u1="z" u2="W" k="33" />
+<hkern u1="z" u2="V" k="41" />
+<hkern u1="z" u2="U" k="20" />
+<hkern u1="z" u2="T" k="150" />
+<hkern u1="z" u2="O" k="12" />
+<hkern u1="z" u2="I" k="10" />
+<hkern u1="z" u2="&#x2d;" k="35" />
+<hkern u1="&#x7b;" u2="&#xf0;" k="23" />
+<hkern u1="&#x7b;" u2="u" k="25" />
+<hkern u1="&#x7b;" u2="s" k="20" />
+<hkern u1="&#x7b;" u2="o" k="35" />
+<hkern u1="&#x7b;" u2="j" k="-168" />
+<hkern u1="&#x7b;" u2="a" k="20" />
+<hkern u1="&#x7b;" u2="O" k="25" />
+<hkern u1="&#x7c;" u2="j" k="-104" />
+<hkern u1="&#x7d;" u2="&#x29;" k="20" />
+<hkern u1="&#xae;" u2="&#xc6;" k="25" />
+<hkern u1="&#xae;" u2="Y" k="33" />
+<hkern u1="&#xae;" u2="X" k="25" />
+<hkern u1="&#xae;" u2="T" k="25" />
+<hkern u1="&#xae;" u2="J" k="25" />
+<hkern u1="&#xae;" u2="A" k="27" />
+<hkern u1="&#xb0;" u2="&#x34;" k="49" />
+<hkern u1="&#xb7;" u2="l" k="150" />
+<hkern u1="&#xb7;" u2="&#x37;" k="41" />
+<hkern u1="&#xb7;" u2="&#x33;" k="53" />
+<hkern u1="&#xb7;" u2="&#x32;" k="51" />
+<hkern u1="&#xb7;" u2="&#x31;" k="59" />
+<hkern u1="&#xbf;" u2="Y" k="39" />
+<hkern u1="&#xbf;" u2="W" k="31" />
+<hkern u1="&#xbf;" u2="V" k="37" />
+<hkern u1="&#xbf;" u2="T" k="41" />
+<hkern u1="&#xce;" u2="&#x7d;" k="-20" />
+<hkern u1="&#xde;" u2="&#x2122;" k="25" />
+<hkern u1="&#xde;" u2="&#xc6;" k="39" />
+<hkern u1="&#xde;" u2="z" k="10" />
+<hkern u1="&#xde;" u2="x" k="14" />
+<hkern u1="&#xde;" u2="]" k="51" />
+<hkern u1="&#xde;" u2="\" k="35" />
+<hkern u1="&#xde;" u2="Z" k="27" />
+<hkern u1="&#xde;" u2="Y" k="49" />
+<hkern u1="&#xde;" u2="X" k="61" />
+<hkern u1="&#xde;" u2="W" k="12" />
+<hkern u1="&#xde;" u2="V" k="25" />
+<hkern u1="&#xde;" u2="T" k="37" />
+<hkern u1="&#xde;" u2="J" k="49" />
+<hkern u1="&#xde;" u2="A" k="39" />
+<hkern u1="&#xde;" u2="&#x2f;" k="61" />
+<hkern u1="&#xde;" u2="&#x2e;" k="66" />
+<hkern u1="&#xde;" u2="&#x29;" k="45" />
+<hkern u1="&#xdf;" u2="y" k="14" />
+<hkern u1="&#xdf;" u2="x" k="18" />
+<hkern u1="&#xdf;" u2="w" k="10" />
+<hkern u1="&#xdf;" u2="v" k="14" />
+<hkern u1="&#xdf;" u2="t" k="14" />
+<hkern u1="&#xdf;" u2="f" k="12" />
+<hkern u1="&#xdf;" u2="]" k="25" />
+<hkern u1="&#xdf;" u2="\" k="20" />
+<hkern u1="&#xdf;" u2="Z" k="14" />
+<hkern u1="&#xdf;" u2="Y" k="37" />
+<hkern u1="&#xdf;" u2="X" k="31" />
+<hkern u1="&#xdf;" u2="W" k="27" />
+<hkern u1="&#xdf;" u2="V" k="33" />
+<hkern u1="&#xdf;" u2="U" k="20" />
+<hkern u1="&#xdf;" u2="T" k="31" />
+<hkern u1="&#xdf;" u2="S" k="10" />
+<hkern u1="&#xdf;" u2="O" k="10" />
+<hkern u1="&#xdf;" u2="J" k="14" />
+<hkern u1="&#xdf;" u2="I" k="16" />
+<hkern u1="&#xdf;" u2="A" k="14" />
+<hkern u1="&#xdf;" u2="&#x2f;" k="31" />
+<hkern u1="&#xdf;" u2="&#x29;" k="33" />
+<hkern u1="&#xed;" u2="&#x2122;" k="-90" />
+<hkern u1="&#xed;" u2="&#x7d;" k="-33" />
+<hkern u1="&#xed;" u2="]" k="-55" />
+<hkern u1="&#xed;" u2="\" k="-18" />
+<hkern u1="&#xed;" u2="&#x2a;" k="-37" />
+<hkern u1="&#xee;" u2="&#x2122;" k="-72" />
+<hkern u1="&#xee;" u2="&#x3f;" k="-35" />
+<hkern u1="&#xee;" u2="&#x2a;" k="-84" />
+<hkern u1="&#xef;" u2="&#x2122;" k="-70" />
+<hkern u1="&#xef;" u2="&#x7d;" k="-12" />
+<hkern u1="&#xef;" u2="]" k="-33" />
+<hkern u1="&#xef;" u2="&#x2a;" k="-43" />
+<hkern u1="&#xf0;" u2="&#x2122;" k="31" />
+<hkern u1="&#xf0;" u2="&#x2019;" k="37" />
+<hkern u1="&#xf0;" u2="&#x2018;" k="37" />
+<hkern u1="&#xf0;" u2="&#xc6;" k="14" />
+<hkern u1="&#xf0;" u2="&#x7d;" k="20" />
+<hkern u1="&#xf0;" u2="z" k="8" />
+<hkern u1="&#xf0;" u2="y" k="12" />
+<hkern u1="&#xf0;" u2="x" k="27" />
+<hkern u1="&#xf0;" u2="w" k="8" />
+<hkern u1="&#xf0;" u2="v" k="14" />
+<hkern u1="&#xf0;" u2="t" k="12" />
+<hkern u1="&#xf0;" u2="f" k="10" />
+<hkern u1="&#xf0;" u2="]" k="39" />
+<hkern u1="&#xf0;" u2="\" k="33" />
+<hkern u1="&#xf0;" u2="Z" k="37" />
+<hkern u1="&#xf0;" u2="Y" k="80" />
+<hkern u1="&#xf0;" u2="X" k="61" />
+<hkern u1="&#xf0;" u2="W" k="59" />
+<hkern u1="&#xf0;" u2="V" k="70" />
+<hkern u1="&#xf0;" u2="U" k="18" />
+<hkern u1="&#xf0;" u2="T" k="82" />
+<hkern u1="&#xf0;" u2="S" k="16" />
+<hkern u1="&#xf0;" u2="J" k="25" />
+<hkern u1="&#xf0;" u2="I" k="12" />
+<hkern u1="&#xf0;" u2="A" k="20" />
+<hkern u1="&#xf0;" u2="&#x2f;" k="39" />
+<hkern u1="&#xf0;" u2="&#x2a;" k="18" />
+<hkern u1="&#xf0;" u2="&#x29;" k="39" />
+<hkern u1="&#xf0;" u2="&#x27;" k="18" />
+<hkern u1="&#x2018;" u2="&#xf0;" k="39" />
+<hkern u1="&#x2018;" u2="&#xc6;" k="133" />
+<hkern u1="&#x2018;" u2="s" k="49" />
+<hkern u1="&#x2018;" u2="o" k="74" />
+<hkern u1="&#x2018;" u2="a" k="43" />
+<hkern u1="&#x2018;" u2="O" k="23" />
+<hkern u1="&#x2018;" u2="J" k="29" />
+<hkern u1="&#x2018;" u2="A" k="125" />
+<hkern u1="&#x2018;" u2="&#x2e;" k="309" />
+<hkern u1="&#x2019;" u2="&#x2039;" k="33" />
+<hkern u1="&#x2019;" u2="&#xf0;" k="39" />
+<hkern u1="&#x2019;" u2="&#xc6;" k="133" />
+<hkern u1="&#x2019;" u2="&#xae;" k="25" />
+<hkern u1="&#x2019;" u2="s" k="49" />
+<hkern u1="&#x2019;" u2="o" k="74" />
+<hkern u1="&#x2019;" u2="a" k="43" />
+<hkern u1="&#x2019;" u2="O" k="23" />
+<hkern u1="&#x2019;" u2="J" k="29" />
+<hkern u1="&#x2019;" u2="A" k="125" />
+<hkern u1="&#x2019;" u2="&#x40;" k="57" />
+<hkern u1="&#x2019;" u2="&#x3a;" k="156" />
+<hkern u1="&#x2019;" u2="&#x2f;" k="172" />
+<hkern u1="&#x2019;" u2="&#x2e;" k="309" />
+<hkern u1="&#x2019;" u2="&#x26;" k="45" />
+<hkern u1="&#x2039;" u2="Y" k="66" />
+<hkern u1="&#x2039;" u2="W" k="23" />
+<hkern u1="&#x2039;" u2="V" k="35" />
+<hkern u1="&#x2039;" u2="T" k="111" />
+<hkern u1="&#x203a;" u2="z" k="25" />
+<hkern u1="&#x203a;" u2="y" k="37" />
+<hkern u1="&#x203a;" u2="x" k="43" />
+<hkern u1="&#x203a;" u2="w" k="29" />
+<hkern u1="&#x203a;" u2="v" k="37" />
+<hkern u1="&#x203a;" u2="t" k="27" />
+<hkern u1="&#x203a;" u2="s" k="20" />
+<hkern u1="&#x203a;" u2="f" k="27" />
+<hkern u1="&#x203a;" u2="Z" k="23" />
+<hkern u1="&#x203a;" u2="Y" k="109" />
+<hkern u1="&#x203a;" u2="X" k="33" />
+<hkern u1="&#x203a;" u2="W" k="57" />
+<hkern u1="&#x203a;" u2="V" k="72" />
+<hkern u1="&#x203a;" u2="T" k="127" />
+<hkern u1="&#x203a;" u2="J" k="27" />
+<hkern u1="&#x203a;" u2="&#x27;" k="29" />
+<hkern u1="&#x2122;" u2="&#xee;" k="-31" />
+<hkern u1="&#x2122;" u2="&#xec;" k="-14" />
+<hkern u1="&#x2122;" u2="&#xc6;" k="61" />
+<hkern u1="&#x2122;" u2="J" k="35" />
+<hkern u1="&#x2122;" u2="A" k="55" />
+</font>
+</defs></svg> -88t-37 -90t-89 -38t-89 37z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1703" d="M1593 719q0 -305 -217 -524.5t-526 -219.5t-524 217.5t-215 522.5t217 524t524 219t524 -217t217 -522zM1503 717q0 268 -187.5 458.5t-459.5 190.5t-460.5 -191.5t-188.5 -461t186.5 -460t458.5 -190.5t461.5 193t189.5 461zM1194 459q-139 -145 -317.5 -145.5 t-297 111.5t-118.5 294t123 294.5t305 112.5t299 -122l-98 -121q-106 90 -209 90t-179.5 -68.5t-76.5 -178.5t76.5 -185.5t188 -75.5t206.5 100z" />
+<glyph unicode="&#xaa;" horiz-adv-x="720" d="M567 954h-96v68q-63 -76 -154.5 -76t-143.5 45t-52 119q0 150 203 150h139v18q0 100 -113 100q-68 0 -145 -51l-47 68q90 72 194 71q215 0 215 -186v-326zM461 1143v43h-119q-115 0 -115 -74q0 -37 29 -56.5t79 -19.5t88 30t38 77z" />
+<glyph unicode="&#xab;" horiz-adv-x="1120" d="M580 852l-236 -360l236 -361h-222l-243 361l243 360h222zM985 852l-235 -360l235 -361h-221l-244 361l244 360h221z" />
+<glyph unicode="&#xac;" horiz-adv-x="1695" d="M137 911h1370v-731h-168v551h-1202v180z" />
+<glyph unicode="&#xad;" horiz-adv-x="974" d="M147 504v215h680v-215h-680z" />
+<glyph unicode="&#xae;" horiz-adv-x="1703" d="M1593 719q0 -305 -217 -524.5t-526 -219.5t-524 217.5t-215 522.5t217 524t524 219t524 -217t217 -522zM1503 717q0 268 -187.5 458.5t-459.5 190.5t-460.5 -191.5t-188.5 -461t186.5 -460t458.5 -190.5t461.5 193t189.5 461zM1210 860q0 -199 -174 -250l213 -288h-172 l-192 268h-176v-268h-140v800h301q182 0 261 -62.5t79 -199.5zM1031 747.5q42 34.5 42 113.5t-43 109.5t-151 30.5h-170v-288h165q115 0 157 34.5z" />
+<glyph unicode="&#xaf;" horiz-adv-x="868" d="M750 1407v-178h-629v178h629z" />
+<glyph unicode="&#xb0;" horiz-adv-x="851" d="M426 1464q131 0 223 -92t92 -223t-92 -222t-223 -91t-223 91t-92 222t92 223t223 92zM277.5 1001.5q60.5 -61.5 147.5 -61.5t147.5 61.5t60.5 147.5t-60.5 146.5t-147.5 60.5t-147.5 -60.5t-60.5 -146.5t60.5 -147.5z" />
+<glyph unicode="&#xb1;" horiz-adv-x="1163" d="M489 565v277h-391v192h391v273h185v-273h391v-192h-391v-277h-185zM98 451h967v-172h-967v172z" />
+<glyph unicode="&#xb2;" horiz-adv-x="858" d="M519 1120q36 49 36 99.5t-38 85t-97 34.5q-104 0 -172 -104l-113 65q109 166 287 166q111 0 189.5 -66.5t78.5 -180.5q0 -63 -33.5 -122t-124.5 -153l-194 -199h379v-135h-572v119l252 256q86 86 122 135z" />
+<glyph unicode="&#xb3;" horiz-adv-x="811" d="M158 1305v127h495v-113l-204 -229q117 -2 181 -73t64 -183.5t-87 -186.5t-226 -74t-270 89l61 114q100 -72 217 -71q74 0 122 33.5t48 99t-53 104.5t-124 39t-116 -14v108l197 230h-305z" />
+<glyph unicode="&#xb4;" horiz-adv-x="1705" d="M901 1286h-209l217 297l242 -100z" />
+<glyph unicode="&#xb5;" horiz-adv-x="1314" d="M176 -397v1487h230v-598q0 -301 249 -302q119 0 207 79t88 231v590h230v-1090h-230v199q-55 -100 -152.5 -157.5t-204 -57.5t-187.5 34v-415h-230z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1374" d="M72 1139q0 174 120.5 292.5t366.5 118.5h612v-1779h-190v1585h-229v-1585h-185v981q-49 -6 -94 -7q-113 0 -196.5 39t-124.5 101q-80 119 -80 254z" />
+<glyph unicode="&#xb7;" horiz-adv-x="595" d="M145 653.5q0 63.5 44 107.5t107.5 44t109 -44t45.5 -107.5t-45.5 -108.5t-109 -45t-107.5 45t-44 108.5z" />
+<glyph unicode="&#xb8;" horiz-adv-x="575" d="M481 -240q0 -78 -63.5 -136t-160.5 -58t-171 45l53 117q39 -20 79 -20.5t62.5 23t22.5 56.5t-23.5 58.5t-59.5 25.5t-60 -10l73 139h146l-41 -78q143 -19 143 -162z" />
+<glyph unicode="&#xb9;" horiz-adv-x="548" d="M84 1432h303v-838h-133v713h-170v125z" />
+<glyph unicode="&#xba;" horiz-adv-x="774" d="M387 1032q72 0 118 47t46 122t-46 122t-118 47t-118 -47t-46 -122t46 -122t118 -47zM387 934q-117 0 -194.5 76.5t-77.5 189.5t77.5 189.5t194.5 76.5t194.5 -76.5t77.5 -189.5t-77.5 -189.5t-194.5 -76.5z" />
+<glyph unicode="&#xbb;" horiz-adv-x="1120" d="M776 492l-235 360h221l244 -360l-244 -361h-221zM371 492l-236 360h221l244 -360l-244 -361h-221z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1767" d="M1210 1550h148l-764 -1566h-148zM1452 340v154h133v-154h103v-129h-103v-211h-133v211h-358v125l305 502h155l-303 -498h201zM72 1432h303v-838h-133v713h-170v125z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1900" d="M1276 1550h147l-764 -1566h-147zM1613 510q36 49 36 99t-38 85t-98 35q-100 0 -172 -104l-110 65q109 166 285 166q111 0 190.5 -66.5t79.5 -181.5q0 -63 -34 -122.5t-124 -151.5l-196 -199h378v-135h-571v119l254 256q84 86 120 135zM72 1432h303v-838h-133v713h-170 v125z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1845" d="M1294 1550h148l-764 -1566h-148zM1536 340v154h133v-154h103v-129h-103v-211h-133v211h-358v125l305 502h155l-303 -498h201zM129 1305v127h496v-113l-205 -229q117 -2 181.5 -73t64.5 -183.5t-87 -186.5t-226.5 -74t-270.5 89l61 114q100 -72 217 -71q74 0 122 33.5 t48 99t-53 104.5t-123.5 39t-115.5 -14v108l196 230h-305z" />
+<glyph unicode="&#xbf;" horiz-adv-x="1040" d="M422 1004h231v-125q0 -82 -19.5 -122t-84.5 -106l-150 -149q-47 -51 -47 -127t49.5 -126t127 -50t130 48t60.5 128h248q-20 -182 -142.5 -285.5t-304.5 -103.5t-296.5 99t-114.5 277q0 123 67 205q39 49 59.5 69.5t54.5 52.5t57.5 55.5t37.5 41.5q37 43 37 125v93z M645 1414q47 -44 47 -106.5t-46 -107.5t-110.5 -45t-111.5 44t-47 106.5t46 107.5t110.5 45t111.5 -44z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM860 1550h-209l-250 197l242 100z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1519" d="M401 326l-143 -326h-258l631 1432h258l631 -1432h-258l-144 326h-717zM1020 549l-260 590l-260 -590h520zM870 1552h-208l217 297l241 -100z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM633 1825h213l250 -275h-199l-158 115l-157 -115h-199z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM897 1544q-53 0 -148.5 48t-121.5 48q-68 0 -70 -90h-151q0 119 48 193t134 74q55 0 153.5 -48.5t128.5 -48.5q61 0 62 90h153q-6 -266 -188 -266z" />
+<glyph unicode="&#xc4;" horiz-adv-x="1495" d="M864 1432l631 -1432h-266l-146 326h-686l-139 -326h-258l631 1432h233zM987 549l-246 551l-243 -551h489zM468 1579q-36 37 -36 89t36 89t89 37t90 -36t37 -88t-37 -90t-90 -38t-89 37zM848 1579q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-38 -90t-89 -38t-88 37z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1495" d="M903.5 1729.5q67.5 -64.5 67.5 -162t-97 -162.5l621 -1405h-266l-146 326h-686l-139 -326h-258l618 1407q-92 66 -92 162t66.5 160.5t155 64.5t156 -64.5zM987 549l-246 551l-243 -551h489zM829.5 1498q30.5 32 30.5 82t-30.5 82t-81 32t-82 -32t-31.5 -82t31.5 -82 t82 -32t81 32z" />
+<glyph unicode="&#xc6;" horiz-adv-x="2129" d="M1995 1432v-226h-764v-393h686v-211h-686v-377h788v-225h-1052v326h-518l-175 -326h-297l750 1432h1268zM967 557v649h-60l-342 -649h402z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1507" d="M852 219q125 0 215 42t188 134l156 -159q-213 -238 -520 -250l-33 -64q143 -18 143 -162q0 -78 -63.5 -136t-160.5 -58t-171 45l53 117q39 -20 79 -20.5t62.5 23t22.5 56.5t-23.5 58.5t-59 25.5t-60.5 -10l68 129q-281 35 -461.5 237.5t-180.5 507.5t218.5 518t551 213 t556.5 -245l-154 -168q-102 98 -193.5 137t-214.5 39q-217 0 -364.5 -140.5t-147.5 -358.5t146.5 -364.5t347.5 -146.5z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1339" d="M862 1550h-209l-250 197l242 100zM1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1339" d="M1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005zM811 1550h-209l217 297l242 -100z" />
+<glyph unicode="&#xca;" horiz-adv-x="1339" d="M596 1825h213l250 -275h-199l-158 115l-157 -115h-199zM1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1339" d="M425 1579q-36 37 -36 89t37 89t89 37t89 -36t37 -88t-38 -90t-90 -38t-88 37zM805 1579q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-37 -90t-89 -38t-89 37zM1204 1432v-228h-764v-379h686v-215h-686v-383h789v-227h-1030v1432h1005z" />
+<glyph unicode="&#xcc;" horiz-adv-x="638" d="M428 1550h-209l-250 197l242 100zM199 1432h241v-1432h-241v1432z" />
+<glyph unicode="&#xcd;" horiz-adv-x="638" d="M199 1432h241v-1432h-241v1432zM420 1550h-209l217 297l242 -100z" />
+<glyph unicode="&#xce;" horiz-adv-x="638" d="M199 1432h241v-1432h-241v1432zM236 1825h213l249 -275h-198l-158 115l-158 -115h-198z" />
+<glyph unicode="&#xcf;" horiz-adv-x="638" d="M42 1579q-36 37 -36 89t36 89t89 37t90 -36t37 -88t-37 -90t-90 -38t-89 37zM422 1579q-37 37 -37 89t37 89t89 37t89 -36t37 -88t-38 -90t-89 -38t-88 37zM199 1432h241v-1432h-241v1432z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1617" d="M53 602v215h162v615h492q385 0 591.5 -187.5t206.5 -521.5t-200.5 -528.5t-614.5 -194.5h-475v602h-162zM1262 717q0 492 -564 491h-241v-391h512v-215h-512v-375h268q260 0 398.5 124t138.5 366z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1712" d="M1272 1432h241v-1432h-262l-811 1044v-1044h-241v1432h241l832 -1070v1070zM1001 1544q-53 0 -148 48t-122 48q-68 0 -69 -90h-152q0 119 48 193t134 74q55 0 153.5 -48.5t129.5 -48.5q61 0 61 90h154q-7 -266 -189 -266z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1720" d="M1016 1550h-209l-250 197l242 100zM860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528 t-536.5 -212z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1720" d="M860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212zM897 1550h-209l217 297 l242 -100z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1720" d="M860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212zM750 1825h213l249 -275h-198 l-158 115l-158 -115h-198z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1720" d="M860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212zM1008 1544q-53 0 -148.5 48 t-122.5 48q-68 0 -69 -90h-152q0 119 48 193t134 74q55 0 153.5 -48.5t129.5 -48.5q61 0 61 90h154q-6 -266 -188 -266z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1720" d="M570.5 1579q-35.5 37 -35.5 89t35.5 89t89 37t90 -36t36.5 -88t-36.5 -90t-90 -38t-89 37zM950 1579q-37 37 -37 89t37 89t89.5 37t89 -36t36.5 -88t-37.5 -90t-89 -38t-88.5 37zM860 1245q-213 0 -359.5 -151.5t-146.5 -367.5t146.5 -367.5t359.5 -151.5t359.5 151.5 t146.5 367.5t-146.5 367.5t-359.5 151.5zM860.5 -14q-319.5 0 -537 212t-217.5 528t217.5 528t537 212t536.5 -212t217 -528t-217 -528t-536.5 -212z" />
+<glyph unicode="&#xd7;" horiz-adv-x="1157" d="M580 907l348 350l129 -131l-346 -346l348 -350l-129 -131l-350 350l-351 -350l-131 131l351 350l-349 346l131 131z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1720" d="M1614 727q0 -317 -217 -529t-537 -212q-109 0 -207 24l-116 -250h-205l149 320q-174 94 -274.5 265t-100.5 382q0 315 217.5 527t536.5 212q125 0 248 -39l111 234h204l-145 -313q156 -98 246 -261t90 -360zM860 1245q-213 0 -359.5 -151.5t-146.5 -368.5 q0 -133 60.5 -248t165.5 -186l434 930q-74 24 -154 24zM1366 725q0 250 -188 408l-428 -916q57 -10 110 -10q213 0 359.5 151.5t \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.ttf b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.ttf
new file mode 100755
index 00000000..e3985ca9
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.ttf
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.woff b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.woff
new file mode 100755
index 00000000..2e1467b0
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.woff
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/css/normalize.css b/common/src/main/webapp/thirdparty/icheck/demo/css/normalize.css
new file mode 100755
index 00000000..4d4d01d1
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/css/normalize.css
@@ -0,0 +1,527 @@
+/*! normalize.css v1.1.0 | MIT License | git.io/normalize */
+
+/* ==========================================================================
+ HTML5 display definitions
+ ========================================================================== */
+
+/**
+ * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+ display: block;
+}
+
+/**
+ * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+audio,
+canvas,
+video {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
+ * Known issue: no IE 6 support.
+ */
+
+[hidden] {
+ display: none;
+}
+
+/* ==========================================================================
+ Base
+ ========================================================================== */
+
+/**
+ * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
+ * `em` units.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ * user zoom.
+ */
+
+html {
+ font-size: 100%; /* 1 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+ -ms-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Address `font-family` inconsistency between `textarea` and other form
+ * elements.
+ */
+
+html,
+button,
+input,
+select,
+textarea {
+ font-family: sans-serif;
+}
+
+/**
+ * Address margins handled incorrectly in IE 6/7.
+ */
+
+body {
+ margin: 0;
+}
+
+/* ==========================================================================
+ Links
+ ========================================================================== */
+
+/**
+ * Address `outline` inconsistency between Chrome and other browsers.
+ */
+
+a:focus {
+ outline: thin dotted;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+/* ==========================================================================
+ Typography
+ ========================================================================== */
+
+/**
+ * Address font sizes and margins set differently in IE 6/7.
+ * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
+ * and Chrome.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+h2 {
+ font-size: 1.5em;
+ margin: 0.83em 0;
+}
+
+h3 {
+ font-size: 1.17em;
+ margin: 1em 0;
+}
+
+h4 {
+ font-size: 1em;
+ margin: 1.33em 0;
+}
+
+h5 {
+ font-size: 0.83em;
+ margin: 1.67em 0;
+}
+
+h6 {
+ font-size: 0.67em;
+ margin: 2.33em 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
+ */
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
+ */
+
+b,
+strong {
+ font-weight: bold;
+}
+
+blockquote {
+ margin: 1em 40px;
+}
+
+/**
+ * Address styling not present in Safari 5 and Chrome.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ * Known issue: no IE 6/7 normalization.
+ */
+
+hr {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+}
+
+/**
+ * Address styling not present in IE 6/7/8/9.
+ */
+
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+p,
+pre {
+ margin: 1em 0;
+}
+
+/**
+ * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, serif;
+ _font-family: 'courier new', monospace;
+ font-size: 1em;
+}
+
+/**
+ * Improve readability of pre-formatted text in all browsers.
+ */
+
+pre {
+ white-space: pre;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+/**
+ * Address CSS quotes not supported in IE 6/7.
+ */
+
+q {
+ quotes: none;
+}
+
+/**
+ * Address `quotes` property not supported in Safari 4.
+ */
+
+q:before,
+q:after {
+ content: '';
+ content: none;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* ==========================================================================
+ Lists
+ ========================================================================== */
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+dl,
+menu,
+ol,
+ul {
+ margin: 1em 0;
+}
+
+dd {
+ margin: 0 0 0 40px;
+}
+
+/**
+ * Address paddings set differently in IE 6/7.
+ */
+
+menu,
+ol,
+ul {
+ padding: 0 0 0 40px;
+}
+
+/**
+ * Correct list images handled incorrectly in IE 7.
+ */
+
+nav ul,
+nav ol {
+ list-style: none;
+ list-style-image: none;
+}
+
+/* ==========================================================================
+ Embedded content
+ ========================================================================== */
+
+/**
+ * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
+ * 2. Improve image quality when scaled in IE 7.
+ */
+
+img {
+ border: 0; /* 1 */
+ -ms-interpolation-mode: bicubic; /* 2 */
+}
+
+/**
+ * Correct overflow displayed oddly in IE 9.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* ==========================================================================
+ Figures
+ ========================================================================== */
+
+/**
+ * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
+ */
+
+figure {
+ margin: 0;
+}
+
+/* ==========================================================================
+ Forms
+ ========================================================================== */
+
+/**
+ * Correct margin displayed oddly in IE 6/7.
+ */
+
+form {
+ margin: 0;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct color not being inherited in IE 6/7/8/9.
+ * 2. Correct text not wrapping in Firefox 3.
+ * 3. Correct alignment displayed oddly in IE 6/7.
+ */
+
+legend {
+ border: 0; /* 1 */
+ padding: 0;
+ white-space: normal; /* 2 */
+ *margin-left: -7px; /* 3 */
+}
+
+/**
+ * 1. Correct font size not being inherited in all browsers.
+ * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
+ * and Chrome.
+ * 3. Improve appearance and consistency in all browsers.
+ */
+
+button,
+input,
+select,
+textarea {
+ font-size: 100%; /* 1 */
+ margin: 0; /* 2 */
+ vertical-align: baseline; /* 3 */
+ *vertical-align: middle; /* 3 */
+}
+
+/**
+ * Address Firefox 3+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+button,
+input {
+ line-height: normal;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
+ * Correct `select` style inheritance in Firefox 4+ and Opera.
+ */
+
+button,
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
+ * Known issue: inner spacing remains in IE 6.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+ cursor: pointer; /* 3 */
+ *overflow: visible; /* 4 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+/**
+ * 1. Address box sizing set to content-box in IE 8/9.
+ * 2. Remove excess padding in IE 8/9.
+ * 3. Remove excess padding in IE 7.
+ * Known issue: excess padding remains in IE 6.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+ *height: 13px; /* 3 */
+ *width: 13px; /* 3 */
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
+ * (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box; /* 2 */
+ box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari 5 and Chrome
+ * on OS X.
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Remove inner padding and border in Firefox 3+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+/**
+ * 1. Remove default vertical scrollbar in IE 6/7/8/9.
+ * 2. Improve readability and alignment in all browsers.
+ */
+
+textarea {
+ overflow: auto; /* 1 */
+ vertical-align: top; /* 2 */
+}
+
+/* ==========================================================================
+ Tables
+ ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/index.html b/common/src/main/webapp/thirdparty/icheck/demo/index.html
new file mode 100755
index 00000000..67920887
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/index.html
@@ -0,0 +1,1544 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <title>Checkboxes and radio buttons customization (jQuery and Zepto) plugin</title>
+ <meta charset="utf-8">
+ <meta content="width=device-width" name="viewport">
+ <link href="./css/custom.css?v=1.0.2" rel="stylesheet">
+ <link href="../skins/all.css?v=1.0.2" rel="stylesheet">
+ <script src="./js/jquery.js"></script>
+ <script src="../icheck.js?v=1.0.2"></script>
+ <script src="./js/custom.min.js?v=1.0.2"></script>
+</head>
+<body>
+ <div class="layout clear">
+ <div class="header">
+ <h1>super customized checkboxes and radio buttons for jQuery &amp; Zepto</h1>
+ <h3>iCheck <span>v1.0.2</span></h3>
+ <strong>@<a href="http://twitter.com/fronteed/">Fronteed</a></strong>
+ </div>
+ <div class="features">
+ <div class="arrows">
+ <div class="bottom" data-to="demo"></div>
+ </div>
+ <h2>Plugin features</h2>
+ <ul>
+ <li>
+ <strong>Identical inputs across different browsers and devices</strong> &mdash; both <span class="self" data-to="download">desktop and mobile</span>
+ </li>
+ <li>
+ <strong>Touch devices support</strong> &mdash; iOS, Android, BlackBerry, Windows Phone, Amazon Kindle
+ </li>
+ <li>
+ <strong>Keyboard accessible inputs</strong> &mdash; <span class="mark">Tab</span>, <span class="mark">Spacebar</span>, <span class="mark">Arrow up/down</span> and other shortcuts
+ </li>
+ <li>
+ <strong>Screenreader accessible inputs</strong> &mdash; <a href="https://developer.mozilla.org/en-US/docs/Accessibility/ARIA" target="blank">ARIA</a> attributes for VoiceOver and others
+ </li>
+ <li>
+ <strong>Customization freedom</strong> &mdash; use any HTML and CSS to style inputs (try <span class="self" data-to="skins">6 Retina-ready skins</span>)
+ </li>
+ <li>
+ <strong>jQuery and Zepto</strong> JavaScript libraries support from single file
+ </li>
+ <li>
+ <strong>Lightweight size</strong> &mdash; 1 kb gzipped
+ </li>
+ <li class="offset">
+ <strong class="self" data-to="options">32 options</strong> to customize checkboxes and radio buttons
+ </li>
+ <li>
+ <strong class="self" data-to="callbacks">11 callbacks</strong> to handle changes
+ </li>
+ <li>
+ <strong class="self" data-to="methods">9 methods</strong> to make changes programmatically
+ </li>
+ <li>
+ Saves changes to original inputs, <span class="self" data-to="init">works carefully</span> with any selectors
+ </li>
+ </ul>
+ </div>
+ <div class="social clear">
+ <ul class="left">
+ <li>
+ <a href="http://github.com/fronteed/iCheck/">Download latest version</a>
+ </li>
+ </ul>
+ <ul class="right local">
+ <li>
+ <a href="http://twitter.com/fronteed/">Follow @fronteed</a>
+ </li>
+ <li>
+ <a href="https://twitter.com/intent/tweet?text=Highly customizable checkboxes and radio buttons&amp;url=http://fronteed.com/iCheck/&amp;via=fronteed&amp;hashtags=jQuery,Zepto">Share on Twitter</a>
+ </li>
+ <li>
+ <a href="https://github.com/fronteed/iCheck">Star on GitHub</a>
+ </li>
+ </ul>
+ </div>
+ <div class="demo-holder">
+ <h2 class="demo-title">Demo</h2>
+ <div class="demo">
+ <div class="arrows">
+ <div class="top" data-to="features"></div>
+ <div class="bottom" data-to="skins"></div>
+ </div>
+ <div class="demo-list clear">
+ <ul>
+ <li>
+ <input tabindex="1" type="checkbox" id="input-1">
+ <label for="input-1">Checkbox, <span>#input-1</span></label>
+ </li>
+ <li>
+ <input tabindex="2" type="checkbox" id="input-2" checked>
+ <label for="input-2">Checkbox, <span>#input-2</span></label>
+ </li>
+ </ul>
+ <ul>
+ <li>
+ <input tabindex="3" type="radio" id="input-3" name="demo-radio">
+ <label for="input-3">Radio button, <span>#input-3</span></label>
+ </li>
+ <li>
+ <input tabindex="4" type="radio" id="input-4" name="demo-radio" checked>
+ <label for="input-4">Radio button, <span>#input-4</span></label>
+ </li>
+ </ul>
+ <script>
+ $(document).ready(function(){
+ var callbacks_list = $('.demo-callbacks ul');
+ $('.demo-list input').on('ifCreated ifClicked ifChanged ifChecked ifUnchecked ifDisabled ifEnabled ifDestroyed', function(event){
+ callbacks_list.prepend('<li><span>#' + this.id + '</span> is ' + event.type.replace('if', '').toLowerCase() + '</li>');
+ }).iCheck({
+ checkboxClass: 'icheckbox_square-blue',
+ radioClass: 'iradio_square-blue',
+ increaseArea: '20%'
+ });
+ });
+ </script>
+ </div>
+ <dl class="demo-methods">
+ <dt>
+ <span class="self do-check">Add <span class="mark">checked</span> state to 1 and 3 inputs</span>
+ <span class="code">
+ <span class="self">show code</span>
+ </span>
+ </dt>
+ <dd>
+<pre class="markup">
+$('#input-1, #input-3').iCheck('check');
+</pre>
+ </dd>
+ <dt>
+ <span class="self do-uncheck">Remove <span class="mark">checked</span> state from 1 and 3 inputs</span>
+ <span class="code">
+ <span class="self">show code</span>
+ </span>
+ </dt>
+ <dd>
+<pre class="markup">
+$('#input-1, #input-3').iCheck('uncheck');
+</pre>
+ </dd>
+ <dt>
+ <span class="self do-disable">Add <span class="mark">disabled</span> state to 2 and 4 inputs</span>
+ <span class="code">
+ <span class="self">show code</span>
+ </span>
+ </dt>
+ <dd>
+<pre class="markup">
+$('#input-2, #input-4').iCheck('disable');
+</pre>
+ </dd>
+ <dt>
+ <span class="self do-enable">Remove <span class="mark">disabled</span> state from 2 and 4 inputs</span>
+ <span class="code">
+ <span class="self">show code</span>
+ </span>
+ </dt>
+ <dd>
+<pre class="markup">
+$('#input-2, #input-4').iCheck('enable');
+</pre>
+ </dd>
+ <dt>
+ <span class="self do-destroy">Remove all traces of iCheck</span>
+ <span class="code">
+ <span class="self">show code</span>
+ </span>
+ </dt>
+ <dd>
+<pre class="markup">
+$('input').iCheck('destroy');
+</pre>
+ </dd>
+ </dl>
+ <div class="demo-callbacks">
+ <h2>Callbacks</h2>
+ <ul></ul>
+ </div>
+ </div>
+ </div>
+ <div class="skins">
+ <h2>Skins</h2>
+ <div class="skin skin-minimal">
+ <div class="arrows">
+ <div class="top" data-to="demo"></div>
+ <div class="bottom" data-to="skin-square"></div>
+ </div>
+ <h3>Minimal skin</h3>
+ <dl class="clear">
+ <dd class="selected">
+ <div class="skin-section">
+ <h4>Live</h4>
+ <ul class="list">
+ <li>
+ <input tabindex="5" type="checkbox" id="minimal-checkbox-1">
+ <label for="minimal-checkbox-1">Checkbox 1</label>
+ </li>
+ <li>
+ <input tabindex="6" type="checkbox" id="minimal-checkbox-2" checked>
+ <label for="minimal-checkbox-2">Checkbox 2</label>
+ </li>
+ <li>
+ <input type="checkbox" id="minimal-checkbox-disabled" disabled>
+ <label for="minimal-checkbox-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="checkbox" id="minimal-checkbox-disabled-checked" checked disabled>
+ <label for="minimal-checkbox-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <ul class="list">
+ <li>
+ <input tabindex="7" type="radio" id="minimal-radio-1" name="minimal-radio">
+ <label for="minimal-radio-1">Radio button 1</label>
+ </li>
+ <li>
+ <input tabindex="8" type="radio" id="minimal-radio-2" name="minimal-radio" checked>
+ <label for="minimal-radio-2">Radio button 2</label>
+ </li>
+ <li>
+ <input type="radio" id="minimal-radio-disabled" disabled>
+ <label for="minimal-radio-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="radio" id="minimal-radio-disabled-checked" checked disabled>
+ <label for="minimal-radio-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <div class="colors clear">
+ <strong>Color schemes</strong>
+ <ul>
+ <li class="active" title="Black"></li>
+ <li class="red" title="Red"></li>
+ <li class="green" title="Green"></li>
+ <li class="blue" title="Blue"></li>
+ <li class="aero" title="Aero"></li>
+ <li class="grey" title="Grey"></li>
+ <li class="orange" title="Orange"></li>
+ <li class="yellow" title="Yellow"></li>
+ <li class="pink" title="Pink"></li>
+ <li class="purple" title="Purple"></li>
+ </ul>
+ </div>
+ </div>
+ <div class="skin-section skin-states">
+ <h4>States</h4>
+ <ul class="list">
+ <li>
+ <div class="state icheckbox_minimal"></div>
+ <div class="state iradio_minimal"></div>
+ Normal
+ </li>
+ <li>
+ <div class="state icheckbox_minimal hover"></div>
+ <div class="state iradio_minimal hover"></div>
+ Hover
+ </li>
+ <li>
+ <div class="state icheckbox_minimal checked"></div>
+ <div class="state iradio_minimal checked"></div>
+ Checked
+ </li>
+ <li>
+ <div class="state icheckbox_minimal disabled"></div>
+ <div class="state iradio_minimal disabled"></div>
+ Disabled
+ </li>
+ <li>
+ <div class="state icheckbox_minimal checked disabled"></div>
+ <div class="state iradio_minimal checked disabled"></div>
+ Disabled &amp; checked
+ </li>
+ </ul>
+ </div>
+ <script>
+ $(document).ready(function(){
+ $('.skin-minimal input').iCheck({
+ checkboxClass: 'icheckbox_minimal',
+ radioClass: 'iradio_minimal',
+ increaseArea: '20%'
+ });
+ });
+ </script>
+ </dd>
+ <dt class="selected">Demo</dt>
+ <dd>
+ <div class="skin-pre">
+ <p>
+ Make sure <a href="http://jquery.com" target="blank">jQuery v1.7+</a> (or <a href="http://github.com/madrobby/zepto#zepto-modules" target="blank">Zepto</a> [polyfill, event, data]) is loaded before the <span class="mark">icheck.js</span>.
+ </p>
+ </div>
+ <ol class="skin-usage">
+ <li>
+ Choose a color scheme, there are 10 different styles available:
+ <div class="schemes clear">
+ <ul>
+ <li><strong>Black</strong> &mdash; minimal.css</li>
+ <li><strong>Red</strong> &mdash; red.css</li>
+ <li><strong>Green</strong> &mdash; green.css</li>
+ <li><strong>Blue</strong> &mdash; blue.css</li>
+ <li><strong>Aero</strong> &mdash; aero.css</li>
+ </ul>
+ <ul>
+ <li><strong>Grey</strong> &mdash; grey.css</li>
+ <li><strong>Orange</strong> &mdash; orange.css</li>
+ <li><strong>Yellow</strong> &mdash; yellow.css</li>
+ <li><strong>Pink</strong> &mdash; pink.css</li>
+ <li><strong>Purple</strong> &mdash; purple.css</li>
+ </ul>
+ </div>
+ </li>
+ <li>
+ Copy <span class="mark">/skins/minimal/</span> folder and <span class="mark">icheck.js</span> file to your site.
+ </li>
+ <li>
+ <p>Insert before <span class="mark">&lt;/head></span> in your HTML (replace <span class="mark">your-path</span> and <span class="mark">color-scheme</span>):</p>
+<pre class="markup">
+&lt;link href="your-path/minimal/color-scheme.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ <p>Example for a <strong>Red</strong> color scheme:</p>
+<pre class="markup">
+&lt;link href="your-path/minimal/red.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ </li>
+ <li>
+ <p>Add some checkboxes and radio buttons to your HTML:</p>
+<pre class="markup">
+&lt;input type="checkbox">
+&lt;input type="checkbox" checked>
+&lt;input type="radio" name="iCheck">
+&lt;input type="radio" name="iCheck" checked>
+</pre>
+ </li>
+ <li>
+ <p>Add JavaScript to your HTML to launch iCheck plugin:</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_minimal',
+ radioClass: 'iradio_minimal',
+ increaseArea: '20%' <span class="comment">// optional</span>
+ });
+});
+&lt;/script>
+</pre>
+ <p>For different from black color schemes use this code (example for <strong>Red</strong>):</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_minimal-red',
+ radioClass: 'iradio_minimal-red',
+ increaseArea: '20%' <span class="comment">// optional</span>
+ });
+});
+&lt;/script>
+</pre>
+ </li>
+ <li>Done.</li>
+ </ol>
+ </dd>
+ <dt>Usage</dt>
+ </dl>
+ </div>
+ <div class="skin skin-square">
+ <div class="arrows">
+ <div class="top" data-to="skin-minimal"></div>
+ <div class="bottom" data-to="skin-flat"></div>
+ </div>
+ <h3>Square skin</h3>
+ <dl class="clear">
+ <dd class="selected">
+ <div class="skin-section">
+ <h4>Live</h4>
+ <ul class="list">
+ <li>
+ <input tabindex="9" type="checkbox" id="square-checkbox-1">
+ <label for="square-checkbox-1">Checkbox 1</label>
+ </li>
+ <li>
+ <input tabindex="10" type="checkbox" id="square-checkbox-2" checked>
+ <label for="square-checkbox-2">Checkbox 2</label>
+ </li>
+ <li>
+ <input type="checkbox" id="square-checkbox-disabled" disabled>
+ <label for="square-checkbox-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="checkbox" id="square-checkbox-disabled-checked" checked disabled>
+ <label for="square-checkbox-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <ul class="list">
+ <li>
+ <input tabindex="11" type="radio" id="square-radio-1" name="square-radio">
+ <label for="square-radio-1">Radio button 1</label>
+ </li>
+ <li>
+ <input tabindex="12" type="radio" id="square-radio-2" name="square-radio" checked>
+ <label for="square-radio-2">Radio button 2</label>
+ </li>
+ <li>
+ <input type="radio" id="square-radio-disabled" disabled>
+ <label for="square-radio-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="radio" id="square-radio-disabled-checked" checked disabled>
+ <label for="square-radio-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <div class="colors clear">
+ <strong>Color schemes</strong>
+ <ul>
+ <li title="Black"></li>
+ <li class="red" title="Red"></li>
+ <li class="green active" title="Green"></li>
+ <li class="blue" title="Blue"></li>
+ <li class="aero" title="Aero"></li>
+ <li class="grey" title="Grey"></li>
+ <li class="orange" title="Orange"></li>
+ <li class="yellow" title="Yellow"></li>
+ <li class="pink" title="Pink"></li>
+ <li class="purple" title="Purple"></li>
+ </ul>
+ </div>
+ </div>
+ <div class="skin-section skin-states">
+ <h4>States</h4>
+ <ul class="list">
+ <li>
+ <div class="state icheckbox_square-green"></div>
+ <div class="state iradio_square-green"></div>
+ Normal
+ </li>
+ <li>
+ <div class="state icheckbox_square-green hover"></div>
+ <div class="state iradio_square-green hover"></div>
+ Hover
+ </li>
+ <li>
+ <div class="state icheckbox_square-green checked"></div>
+ <div class="state iradio_square-green checked"></div>
+ Checked
+ </li>
+ <li>
+ <div class="state icheckbox_square-green disabled"></div>
+ <div class="state iradio_square-green disabled"></div>
+ Disabled
+ </li>
+ <li>
+ <div class="state icheckbox_square-green checked disabled"></div>
+ <div class="state iradio_square-green checked disabled"></div>
+ Disabled &amp; checked
+ </li>
+ </ul>
+ </div>
+ <script>
+ $(document).ready(function(){
+ $('.skin-square input').iCheck({
+ checkboxClass: 'icheckbox_square-green',
+ radioClass: 'iradio_square-green',
+ increaseArea: '20%'
+ });
+ });
+ </script>
+ </dd>
+ <dt class="selected">Demo</dt>
+ <dd>
+ <div class="skin-pre">
+ <p>
+ Make sure <a href="http://jquery.com" target="blank">jQuery v1.7+</a> (or <a href="http://github.com/madrobby/zepto#zepto-modules" target="blank">Zepto</a> [polyfill, event, data]) is loaded before the <span class="mark">icheck.js</span>.
+ </p>
+ </div>
+ <ol class="skin-usage">
+ <li>
+ Choose a color scheme, there are 10 different styles available:
+ <div class="schemes clear">
+ <ul>
+ <li><strong>Black</strong> &mdash; square.css</li>
+ <li><strong>Red</strong> &mdash; red.css</li>
+ <li><strong>Green</strong> &mdash; green.css</li>
+ <li><strong>Blue</strong> &mdash; blue.css</li>
+ <li><strong>Aero</strong> &mdash; aero.css</li>
+ </ul>
+ <ul>
+ <li><strong>Grey</strong> &mdash; grey.css</li>
+ <li><strong>Orange</strong> &mdash; orange.css</li>
+ <li><strong>Yellow</strong> &mdash; yellow.css</li>
+ <li><strong>Pink</strong> &mdash; pink.css</li>
+ <li><strong>Purple</strong> &mdash; purple.css</li>
+ </ul>
+ </div>
+ </li>
+ <li>
+ Copy <span class="mark">/skins/square/</span> folder and <span class="mark">icheck.js</span> file to your site.
+ </li>
+ <li>
+ <p>Insert before <span class="mark">&lt;/head></span> in your HTML (replace <span class="mark">your-path</span> and <span class="mark">color-scheme</span>):</p>
+<pre class="markup">
+&lt;link href="your-path/square/color-scheme.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ <p>Example for a <strong>Red</strong> color scheme:</p>
+<pre class="markup">
+&lt;link href="your-path/square/red.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ </li>
+ <li>
+ <p>Add some checkboxes and radio buttons to your HTML:</p>
+<pre class="markup">
+&lt;input type="checkbox">
+&lt;input type="checkbox" checked>
+&lt;input type="radio" name="iCheck">
+&lt;input type="radio" name="iCheck" checked>
+</pre>
+ </li>
+ <li>
+ <p>Add JavaScript to your HTML to launch iCheck plugin:</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_square',
+ radioClass: 'iradio_square',
+ increaseArea: '20%' <span class="comment">// optional</span>
+ });
+});
+&lt;/script>
+</pre>
+ <p>For different from black color schemes use this code (example for <strong>Red</strong>):</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_square-red',
+ radioClass: 'iradio_square-red',
+ increaseArea: '20%' <span class="comment">// optional</span>
+ });
+});
+&lt;/script>
+</pre>
+ </li>
+ <li>Done.</li>
+ </ol>
+ </dd>
+ <dt>Usage</dt>
+ </dl>
+ </div>
+ <div class="skin skin-flat">
+ <div class="arrows">
+ <div class="top" data-to="skin-square"></div>
+ <div class="bottom" data-to="skin-line"></div>
+ </div>
+ <h3>Flat skin</h3>
+ <dl class="clear">
+ <dd class="selected">
+ <div class="skin-section">
+ <h4>Live</h4>
+ <ul class="list">
+ <li>
+ <input tabindex="13" type="checkbox" id="flat-checkbox-1">
+ <label for="flat-checkbox-1">Checkbox 1</label>
+ </li>
+ <li>
+ <input tabindex="14" type="checkbox" id="flat-checkbox-2" checked>
+ <label for="flat-checkbox-2">Checkbox 2</label>
+ </li>
+ <li>
+ <input type="checkbox" id="flat-checkbox-disabled" disabled>
+ <label for="flat-checkbox-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="checkbox" id="flat-checkbox-disabled-checked" checked disabled>
+ <label for="flat-checkbox-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <ul class="list">
+ <li>
+ <input tabindex="15" type="radio" id="flat-radio-1" name="flat-radio">
+ <label for="flat-radio-1">Radio button 1</label>
+ </li>
+ <li>
+ <input tabindex="16" type="radio" id="flat-radio-2" name="flat-radio" checked>
+ <label for="flat-radio-2">Radio button 2</label>
+ </li>
+ <li>
+ <input type="radio" id="flat-radio-disabled" disabled>
+ <label for="flat-radio-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="radio" id="flat-radio-disabled-checked" checked disabled>
+ <label for="flat-radio-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <div class="colors clear">
+ <strong>Color schemes</strong>
+ <ul>
+ <li title="Black"></li>
+ <li class="red active" title="Red"></li>
+ <li class="green" title="Green"></li>
+ <li class="blue" title="Blue"></li>
+ <li class="aero" title="Aero"></li>
+ <li class="grey" title="Grey"></li>
+ <li class="orange" title="Orange"></li>
+ <li class="yellow" title="Yellow"></li>
+ <li class="pink" title="Pink"></li>
+ <li class="purple" title="Purple"></li>
+ </ul>
+ </div>
+ </div>
+ <div class="skin-section skin-states">
+ <h4>States</h4>
+ <ul class="list">
+ <li>
+ <div class="state icheckbox_flat-red"></div>
+ <div class="state iradio_flat-red"></div>
+ Normal
+ </li>
+ <li>
+ <div class="state icheckbox_flat-red checked"></div>
+ <div class="state iradio_flat-red checked"></div>
+ Checked
+ </li>
+ <li>
+ <div class="state icheckbox_flat-red disabled"></div>
+ <div class="state iradio_flat-red disabled"></div>
+ Disabled
+ </li>
+ <li>
+ <div class="state icheckbox_flat-red checked disabled"></div>
+ <div class="state iradio_flat-red checked disabled"></div>
+ Disabled &amp; checked
+ </li>
+ </ul>
+ </div>
+ <script>
+ $(document).ready(function(){
+ $('.skin-flat input').iCheck({
+ checkboxClass: 'icheckbox_flat-red',
+ radioClass: 'iradio_flat-red'
+ });
+ });
+ </script>
+ </dd>
+ <dt class="selected">Demo</dt>
+ <dd>
+ <div class="skin-pre">
+ <p>
+ Make sure <a href="http://jquery.com" target="blank">jQuery v1.7+</a> (or <a href="http://github.com/madrobby/zepto#zepto-modules" target="blank">Zepto</a> [polyfill, event, data]) is loaded before the <span class="mark">icheck.js</span>.
+ </p>
+ </div>
+ <ol class="skin-usage">
+ <li>
+ Choose a color scheme, there are 10 different styles available:
+ <div class="schemes clear">
+ <ul>
+ <li><strong>Black</strong> &mdash; flat.css</li>
+ <li><strong>Red</strong> &mdash; red.css</li>
+ <li><strong>Green</strong> &mdash; green.css</li>
+ <li><strong>Blue</strong> &mdash; blue.css</li>
+ <li><strong>Aero</strong> &mdash; aero.css</li>
+ </ul>
+ <ul>
+ <li><strong>Grey</strong> &mdash; grey.css</li>
+ <li><strong>Orange</strong> &mdash; orange.css</li>
+ <li><strong>Yellow</strong> &mdash; yellow.css</li>
+ <li><strong>Pink</strong> &mdash; pink.css</li>
+ <li><strong>Purple</strong> &mdash; purple.css</li>
+ </ul>
+ </div>
+ </li>
+ <li>
+ Copy <span class="mark">/skins/flat/</span> folder and <span class="mark">icheck.js</span> file to your site.
+ </li>
+ <li>
+ <p>Insert before <span class="mark">&lt;/head></span> in your HTML (replace <span class="mark">your-path</span> and <span class="mark">color-scheme</span>):</p>
+<pre class="markup">
+&lt;link href="your-path/flat/color-scheme.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ <p>Example for a <strong>Red</strong> color scheme:</p>
+<pre class="markup">
+&lt;link href="your-path/flat/red.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ </li>
+ <li>
+ <p>Add some checkboxes and radio buttons to your HTML:</p>
+<pre class="markup">
+&lt;input type="checkbox">
+&lt;input type="checkbox" checked>
+&lt;input type="radio" name="iCheck">
+&lt;input type="radio" name="iCheck" checked>
+</pre>
+ </li>
+ <li>
+ <p>Add JavaScript to your HTML to launch iCheck plugin:</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_flat',
+ radioClass: 'iradio_flat'
+ });
+});
+&lt;/script>
+</pre>
+ <p>For different from black color schemes use this code (example for <strong>Red</strong>):</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_flat-red',
+ radioClass: 'iradio_flat-red'
+ });
+});
+&lt;/script>
+</pre>
+ </li>
+ <li>Done.</li>
+ </ol>
+ </dd>
+ <dt>Usage</dt>
+ </dl>
+ </div>
+ <div class="skin skin-line">
+ <div class="arrows">
+ <div class="top" data-to="skin-flat"></div>
+ <div class="bottom" data-to="skin-polaris"></div>
+ </div>
+ <h3>Line skin</h3>
+ <dl class="clear">
+ <dd class="selected">
+ <div class="skin-section">
+ <h4>Live</h4>
+ <ul class="list">
+ <li>
+ <input tabindex="17" type="checkbox" id="line-checkbox-1">
+ <label for="line-checkbox-1">Checkbox 1</label>
+ </li>
+ <li>
+ <input tabindex="18" type="checkbox" id="line-checkbox-2" checked>
+ <label for="line-checkbox-2">Checkbox 2</label>
+ </li>
+ <li>
+ <input type="checkbox" id="line-checkbox-disabled" disabled>
+ <label for="line-checkbox-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="checkbox" id="line-checkbox-disabled-checked" checked disabled>
+ <label for="line-checkbox-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <ul class="list">
+ <li>
+ <input tabindex="19" type="radio" id="line-radio-1" name="line-radio">
+ <label for="line-radio-1">Radio button 1</label>
+ </li>
+ <li>
+ <input tabindex="20" type="radio" id="line-radio-2" name="line-radio" checked>
+ <label for="line-radio-2">Radio button 2</label>
+ </li>
+ <li>
+ <input type="radio" id="line-radio-disabled" disabled>
+ <label for="line-radio-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="radio" id="line-radio-disabled-checked" checked disabled>
+ <label for="line-radio-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <div class="colors clear">
+ <strong>Color schemes</strong>
+ <ul>
+ <li title="Black"></li>
+ <li class="red" title="Red"></li>
+ <li class="green" title="Green"></li>
+ <li class="blue active" title="Blue"></li>
+ <li class="aero" title="Aero"></li>
+ <li class="grey" title="Grey"></li>
+ <li class="orange" title="Orange"></li>
+ <li class="yellow" title="Yellow"></li>
+ <li class="pink" title="Pink"></li>
+ <li class="purple" title="Purple"></li>
+ </ul>
+ </div>
+ </div>
+ <div class="skin-section skin-states">
+ <h4>States</h4>
+ <ul class="list">
+ <li>
+ <div class="state icheckbox_line-blue">
+ <div class="icheck_line-icon"></div>
+ Normal
+ </div>
+ </li>
+ <li>
+ <div class="state icheckbox_line-blue hover">
+ <div class="icheck_line-icon"></div>
+ Hover
+ </div>
+ </li>
+ <li>
+ <div class="state icheckbox_line-blue checked">
+ <div class="icheck_line-icon"></div>
+ Checked
+ </div>
+ </li>
+ <li>
+ <div class="state icheckbox_line-blue disabled">
+ <div class="icheck_line-icon"></div>
+ Disabled
+ </div>
+ </li>
+ <li>
+ <div class="state icheckbox_line-blue checked disabled">
+ <div class="icheck_line-icon"></div>
+ Disabled &amp; checked
+ </div>
+ </li>
+ </ul>
+ </div>
+ <script>
+ $(document).ready(function(){
+ $('.skin-line input').each(function(){
+ var self = $(this),
+ label = self.next(),
+ label_text = label.text();
+
+ label.remove();
+ self.iCheck({
+ checkboxClass: 'icheckbox_line-blue',
+ radioClass: 'iradio_line-blue',
+ insert: '<div class="icheck_line-icon"></div>' + label_text
+ });
+ });
+ });
+ </script>
+ </dd>
+ <dt class="selected">Demo</dt>
+ <dd>
+ <div class="skin-pre">
+ <p>
+ Make sure <a href="http://jquery.com" target="blank">jQuery v1.7+</a> (or <a href="http://github.com/madrobby/zepto#zepto-modules" target="blank">Zepto</a> [polyfill, event, data]) is loaded before the <span class="mark">icheck.js</span>.
+ </p>
+ </div>
+ <ol class="skin-usage">
+ <li>
+ Choose a color scheme, there are 10 different styles available:
+ <div class="schemes clear">
+ <ul>
+ <li><strong>Black</strong> &mdash; line.css</li>
+ <li><strong>Red</strong> &mdash; red.css</li>
+ <li><strong>Green</strong> &mdash; green.css</li>
+ <li><strong>Blue</strong> &mdash; blue.css</li>
+ <li><strong>Aero</strong> &mdash; aero.css</li>
+ </ul>
+ <ul>
+ <li><strong>Grey</strong> &mdash; grey.css</li>
+ <li><strong>Orange</strong> &mdash; orange.css</li>
+ <li><strong>Yellow</strong> &mdash; yellow.css</li>
+ <li><strong>Pink</strong> &mdash; pink.css</li>
+ <li><strong>Purple</strong> &mdash; purple.css</li>
+ </ul>
+ </div>
+ </li>
+ <li>
+ Copy <span class="mark">/skins/line/</span> folder and <span class="mark">icheck.js</span> file to your site.
+ </li>
+ <li>
+ <p>Insert before <span class="mark">&lt;/head></span> in your HTML (replace <span class="mark">your-path</span> and <span class="mark">color-scheme</span>):</p>
+<pre class="markup">
+&lt;link href="your-path/line/color-scheme.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ <p>Example for a <strong>Red</strong> color scheme:</p>
+<pre class="markup">
+&lt;link href="your-path/line/red.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ </li>
+ <li>
+ <p>Add some checkboxes, radio buttons and labels to your HTML:</p>
+<pre class="markup">
+&lt;input type="checkbox">
+&lt;label>Checkbox 1&lt;/label>
+
+&lt;input type="checkbox" checked>
+&lt;label>Checkbox 2&lt;/label>
+
+&lt;input type="radio" name="iCheck">
+&lt;label>Radio button 1&lt;/label>
+
+&lt;input type="radio" name="iCheck" checked>
+&lt;label>Radio button 2&lt;/label>
+</pre>
+ </li>
+ <li>
+ <p>Add JavaScript to your HTML to launch iCheck plugin:</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').each(function(){
+ var self = $(this),
+ label = self.next(),
+ label_text = label.text();
+
+ label.remove();
+ self.iCheck({
+ checkboxClass: 'icheckbox_line',
+ radioClass: 'iradio_line',
+ insert: '&lt;div class="icheck_line-icon">&lt;/div>' + label_text
+ });
+ });
+});
+&lt;/script>
+</pre>
+ <p>For different from black color schemes use this code (example for <strong>Red</strong>):</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').each(function(){
+ var self = $(this),
+ label = self.next(),
+ label_text = label.text();
+
+ label.remove();
+ self.iCheck({
+ checkboxClass: 'icheckbox_line-red',
+ radioClass: 'iradio_line-red',
+ insert: '&lt;div class="icheck_line-icon">&lt;/div>' + label_text
+ });
+ });
+});
+&lt;/script>
+</pre>
+ </li>
+ <li>Done.</li>
+ </ol>
+ </dd>
+ <dt>Usage</dt>
+ </dl>
+ </div>
+ <div class="skin skin-polaris">
+ <div class="arrows">
+ <div class="top" data-to="skin-line"></div>
+ <div class="bottom" data-to="skin-futurico"></div>
+ </div>
+ <h3>Polaris skin</h3>
+ <dl class="clear">
+ <dd class="selected">
+ <div class="skin-section">
+ <h4>Live</h4>
+ <ul class="list">
+ <li>
+ <input tabindex="21" type="checkbox" id="polaris-checkbox-1">
+ <label for="polaris-checkbox-1">Checkbox 1</label>
+ </li>
+ <li>
+ <input tabindex="22" type="checkbox" id="polaris-checkbox-2" checked>
+ <label for="polaris-checkbox-2">Checkbox 2</label>
+ </li>
+ <li>
+ <input type="checkbox" id="polaris-checkbox-disabled" disabled>
+ <label for="polaris-checkbox-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="checkbox" id="polaris-checkbox-disabled-checked" checked disabled>
+ <label for="polaris-checkbox-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <ul class="list">
+ <li>
+ <input tabindex="23" type="radio" id="polaris-radio-1" name="polaris-radio">
+ <label for="polaris-radio-1">Radio button 1</label>
+ </li>
+ <li>
+ <input tabindex="24" type="radio" id="polaris-radio-2" name="polaris-radio" checked>
+ <label for="polaris-radio-2">Radio button 2</label>
+ </li>
+ <li>
+ <input type="radio" id="polaris-radio-disabled" disabled>
+ <label for="polaris-radio-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="radio" id="polaris-radio-disabled-checked" checked disabled>
+ <label for="polaris-radio-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ </div>
+ <div class="skin-section skin-states">
+ <h4>States</h4>
+ <ul class="list">
+ <li>
+ <div class="state icheckbox_polaris"></div>
+ <div class="state iradio_polaris"></div>
+ Normal
+ </li>
+ <li>
+ <div class="state icheckbox_polaris hover"></div>
+ <div class="state iradio_polaris hover"></div>
+ Hover
+ </li>
+ <li>
+ <div class="state icheckbox_polaris checked"></div>
+ <div class="state iradio_polaris checked"></div>
+ Checked
+ </li>
+ <li>
+ <div class="state icheckbox_polaris disabled"></div>
+ <div class="state iradio_polaris disabled"></div>
+ Disabled
+ </li>
+ <li>
+ <div class="state icheckbox_polaris checked disabled"></div>
+ <div class="state iradio_polaris checked disabled"></div>
+ Disabled &amp; checked
+ </li>
+ </ul>
+ </div>
+ <script>
+ $(document).ready(function(){
+ $('.skin-polaris input').iCheck({
+ checkboxClass: 'icheckbox_polaris',
+ radioClass: 'iradio_polaris',
+ increaseArea: '-10%'
+ });
+ });
+ </script>
+ </dd>
+ <dt class="selected">Demo</dt>
+ <dd>
+ <div class="skin-pre">
+ <p>
+ Make sure <a href="http://jquery.com" target="blank">jQuery v1.7+</a> (or <a href="http://github.com/madrobby/zepto#zepto-modules" target="blank">Zepto</a> [polyfill, event, data]) is loaded before the <span class="mark">icheck.js</span>.
+ </p>
+ </div>
+ <ol class="skin-usage">
+ <li>
+ Copy <span class="mark">/skins/polaris/</span> folder and <span class="mark">icheck.js</span> file to your site.
+ </li>
+ <li>
+ <p>Insert before <span class="mark">&lt;/head></span> in your HTML (replace <span class="mark">your-path</span> and <span class="mark">color-scheme</span>):</p>
+<pre class="markup">
+&lt;link href="your-path/polaris/polaris.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ </li>
+ <li>
+ <p>Add some checkboxes and radio buttons to your HTML:</p>
+<pre class="markup">
+&lt;input type="checkbox">
+&lt;input type="checkbox" checked>
+&lt;input type="radio" name="iCheck">
+&lt;input type="radio" name="iCheck" checked>
+</pre>
+ </li>
+ <li>
+ <p>Add JavaScript to your HTML to launch iCheck plugin:</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_polaris',
+ radioClass: 'iradio_polaris',
+ increaseArea: '-10%' <span class="comment">// optional</span>
+ });
+});
+&lt;/script>
+</pre>
+ </li>
+ <li>Done.</li>
+ </ol>
+ </dd>
+ <dt>Usage</dt>
+ </dl>
+ </div>
+ <div class="skin skin-futurico">
+ <div class="arrows">
+ <div class="top" data-to="skin-polaris"></div>
+ <div class="bottom" data-to="usage"></div>
+ </div>
+ <h3>Futurico skin</h3>
+ <dl class="clear">
+ <dd class="selected">
+ <div class="skin-section">
+ <h4>Live</h4>
+ <ul class="list">
+ <li>
+ <input tabindex="25" type="checkbox" id="futurico-checkbox-1">
+ <label for="futurico-checkbox-1">Checkbox 1</label>
+ </li>
+ <li>
+ <input tabindex="26" type="checkbox" id="futurico-checkbox-2" checked>
+ <label for="futurico-checkbox-2">Checkbox 2</label>
+ </li>
+ <li>
+ <input type="checkbox" id="futurico-checkbox-disabled" disabled>
+ <label for="futurico-checkbox-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="checkbox" id="futurico-checkbox-disabled-checked" checked disabled>
+ <label for="futurico-checkbox-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ <ul class="list">
+ <li>
+ <input tabindex="27" type="radio" id="futurico-radio-1" name="futurico-radio">
+ <label for="futurico-radio-1">Radio button 1</label>
+ </li>
+ <li>
+ <input tabindex="28" type="radio" id="futurico-radio-2" name="futurico-radio" checked>
+ <label for="futurico-radio-2">Radio button 2</label>
+ </li>
+ <li>
+ <input type="radio" id="futurico-radio-disabled" disabled>
+ <label for="futurico-radio-disabled">Disabled</label>
+ </li>
+ <li>
+ <input type="radio" id="futurico-radio-disabled-checked" checked disabled>
+ <label for="futurico-radio-disabled-checked">Disabled &amp; checked</label>
+ </li>
+ </ul>
+ </div>
+ <div class="skin-section skin-states">
+ <h4>States</h4>
+ <ul class="list">
+ <li>
+ <div class="state icheckbox_futurico"></div>
+ <div class="state iradio_futurico"></div>
+ Normal
+ </li>
+ <li>
+ <div class="state icheckbox_futurico checked"></div>
+ <div class="state iradio_futurico checked"></div>
+ Checked
+ </li>
+ <li>
+ <div class="state icheckbox_futurico disabled"></div>
+ <div class="state iradio_futurico disabled"></div>
+ Disabled
+ </li>
+ <li>
+ <div class="state icheckbox_futurico checked disabled"></div>
+ <div class="state iradio_futurico checked disabled"></div>
+ Disabled &amp; checked
+ </li>
+ </ul>
+ </div>
+ <script>
+ $(document).ready(function(){
+ $('.skin-futurico input').iCheck({
+ checkboxClass: 'icheckbox_futurico',
+ radioClass: 'iradio_futurico',
+ increaseArea: '20%'
+ });
+ });
+ </script>
+ </dd>
+ <dt class="selected">Demo</dt>
+ <dd>
+ <div class="skin-pre">
+ <p>
+ Make sure <a href="http://jquery.com" target="blank">jQuery v1.7+</a> (or <a href="http://github.com/madrobby/zepto#zepto-modules" target="blank">Zepto</a> [polyfill, event, data]) is loaded before the <span class="mark">icheck.js</span>.
+ </p>
+ </div>
+ <ol class="skin-usage">
+ <li>
+ Copy <span class="mark">/skins/futurico/</span> folder and <span class="mark">icheck.js</span> file to your site.
+ </li>
+ <li>
+ <p>Insert before <span class="mark">&lt;/head></span> in your HTML (replace <span class="mark">your-path</span> and <span class="mark">color-scheme</span>):</p>
+<pre class="markup">
+&lt;link href="your-path/futurico/futurico.css" rel="stylesheet">
+&lt;script src="your-path/icheck.js">&lt;/script>
+</pre>
+ </li>
+ <li>
+ <p>Add some checkboxes and radio buttons to your HTML:</p>
+<pre class="markup">
+&lt;input type="checkbox">
+&lt;input type="checkbox" checked>
+&lt;input type="radio" name="iCheck">
+&lt;input type="radio" name="iCheck" checked>
+</pre>
+ </li>
+ <li>
+ <p>Add JavaScript to your HTML to launch iCheck plugin:</p>
+<pre class="markup">
+&lt;script>
+$(document).ready(function(){
+ $('input').iCheck({
+ checkboxClass: 'icheckbox_futurico',
+ radioClass: 'iradio_futurico',
+ increaseArea: '20%' <span class="comment">// optional</span>
+ });
+});
+&lt;/script>
+</pre>
+ </li>
+ <li>Done.</li>
+ </ol>
+ </dd>
+ <dt>Usage</dt>
+ </dl>
+ </div>
+ <div class="skins-info">
+ <p>All skins (except Line) are transparent, you may use them on any background.</p>
+ <p><a href="http://designmodo.com/square/?u=718" target="blank">Square</a>, <a href="http://designmodo.com/flat/?u=718" target="blank">Flat</a>, <a href="http://designmodo.com/?u=718" target="blank">Polaris</a> and <a href="http://designmodo.com/futuricopro/?u=718" target="blank">Futurico</a> skins are based on <a href="http://designmodo.com/shop/?u=718" target="blank">Designmodo's UI packs</a>.</p>
+ <p class="skins-banner">
+ <a href="http://designmodo.com/shop/?u=718" target="blank">Awesome UI packs</a>
+ </p>
+ </div>
+ </div>
+ <div class="usage">
+ <div class="arrows">
+ <div class="top" data-to="skin-futurico"></div>
+ <div class="bottom" data-to="comparison"></div>
+ </div>
+ <h2>Simple usage</h2>
+ <div class="usage-inner">
+ <p>
+ iCheck plugin works with checkboxes and radio buttons like a constructor.
+ <br><strong>It wraps each input with a div</strong>, which may be customized by you or using one of the <span class="self" data-to="skins">available skins</span>.
+ <br>You may also place inside that div some HTML code or text using <span class="mark">insert</span> option.
+ </p>
+ <p class="offset">For this HTML:</p>
+<pre class="markup">
+&lt;label>
+ &lt;input type="checkbox" name="quux[1]" disabled>
+ Foo
+&lt;/label>
+
+&lt;label for="baz[1]">Bar&lt;/label>
+&lt;input type="radio" name="quux[2]" id="baz[1]" checked>
+
+&lt;label for="baz[2]">Bar&lt;/label>
+&lt;input type="radio" name="quux[2]" id="baz[2]">
+</pre>
+ <p class="offset">With default options you'll get nearly this:</p>
+<pre class="markup">
+&lt;label>
+ &lt;div class="icheckbox disabled">
+ &lt;input type="checkbox" name="quux[1]" disabled>
+ &lt;/div>
+ Foo
+&lt;/label>
+
+&lt;label for="baz[1]">Bar&lt;/label>
+&lt;div class="iradio checked">
+ &lt;input type="radio" name="quux[2]" id="baz[1]" checked>
+&lt;/div>
+
+&lt;label for="baz[2]">Bar&lt;/label>
+&lt;div class="iradio">
+ &lt;input type="radio" name="quux[2]" id="baz[2]">
+&lt;/div>
+</pre>
+ <p><strong>By default, iCheck doesn't provide any CSS styles for wrapper divs</strong> (if you don't use <span class="self" data-to="skins">skins</span>).</p>
+ <h4 class="options">Options</h4>
+ <p>These options are default:</p>
+<pre class="markup">
+{
+ <span class="comment">// 'checkbox' or 'radio' to style only checkboxes or radio buttons, both by default</span>
+ handle: '',
+
+ <span class="comment">// base class added to customized checkboxes</span>
+ checkboxClass: 'icheckbox',
+
+ <span class="comment">// base class added to customized radio buttons</span>
+ radioClass: 'iradio',
+
+ <span class="comment">// class added on checked state (input.checked = true)</span>
+ checkedClass: 'checked',
+
+ <span class="comment">// if not empty, used instead of 'checkedClass' option (input type specific)</span>
+ checkedCheckboxClass: '',
+ checkedRadioClass: '',
+
+ <span class="comment">// if not empty, added as class name on unchecked state (input.checked = false)</span>
+ uncheckedClass: '',
+
+ <span class="comment">// if not empty, used instead of 'uncheckedClass' option (input type specific)</span>
+ uncheckedCheckboxClass: '',
+ uncheckedRadioClass: '',
+
+ <span class="comment">// class added on disabled state (input.disabled = true)</span>
+ disabledClass: 'disabled',
+
+ <span class="comment">// if not empty, used instead of 'disabledClass' option (input type specific)</span>
+ disabledCheckboxClass: '',
+ disabledRadioClass: '',
+
+ <span class="comment">// if not empty, added as class name on enabled state (input.disabled = false)</span>
+ enabledClass: '',
+
+ <span class="comment">// if not empty, used instead of 'enabledClass' option (input type specific)</span>
+ enabledCheckboxClass: '',
+ enabledRadioClass: '',
+
+ <span class="comment">// class added on <span class="self" data-to="indeterminate">indeterminate state</span> (input.indeterminate = true)</span>
+ indeterminateClass: 'indeterminate',
+
+ <span class="comment">// if not empty, used instead of 'indeterminateClass' option (input type specific)</span>
+ indeterminateCheckboxClass: '',
+ indeterminateRadioClass: '',
+
+ <span class="comment">// if not empty, added as class name on determinate state (input.indeterminate = false)</span>
+ determinateClass: '',
+
+ <span class="comment">// if not empty, used instead of 'determinateClass' option (input type specific)</span>
+ determinateCheckboxClass: '',
+ determinateRadioClass: '',
+
+ <span class="comment">// class added on hover state (pointer is moved onto input)</span>
+ hoverClass: 'hover',
+
+ <span class="comment">// class added on focus state (input has gained focus)</span>
+ focusClass: 'focus',
+
+ <span class="comment">// class added on active state (mouse button is pressed on input)</span>
+ activeClass: 'active',
+
+ <span class="comment">// adds hoverClass to customized input on label hover and labelHoverClass to label on input hover</span>
+ labelHover: true,
+
+ <span class="comment">// class added to label if labelHover set to true</span>
+ labelHoverClass: 'hover',
+
+ <span class="comment">// increase clickable area by given % (negative number to decrease)</span>
+ increaseArea: '',
+
+ <span class="comment">// true to set 'pointer' CSS cursor over enabled inputs and 'default' over disabled</span>
+ cursor: false,
+
+ <span class="comment">// set true to inherit original input's class name</span>
+ inheritClass: false,
+
+ <span class="comment">// if set to true, input's id is prefixed with 'iCheck-' and attached</span>
+ inheritID: false,
+
+ <span class="comment">// set true to activate ARIA support</span>
+ aria: false,
+
+ <span class="comment">// add HTML code or text inside customized input</span>
+ insert: ''
+}
+</pre>
+ <p>There's no need to copy and paste all of them, you can just mention the ones you need:</p>
+<pre class="markup">
+$('input').iCheck({
+ labelHover: false,
+ cursor: true
+});
+</pre>
+ <p>You can choose any class names and slyle them as you want.</p>
+ <h4 class="init">Initialize</h4>
+ <p>Just include <span class="mark">icheck.js</span> after <a href="http://jquery.com" target="blank">jQuery v1.7+</a> (or <a href="http://github.com/madrobby/zepto#zepto-modules" target="blank">Zepto</a> [polyfill, event, data]).</p>
+ <p>iCheck supports any selectors, but handles only checkboxes and radio buttons:</p>
+<pre class="markup">
+<span class="comment">// customize all inputs (will search for checkboxes and radio buttons)</span>
+$('input').iCheck();
+
+<span class="comment">// handle inputs only inside $('.block')</span>
+$('.block input').iCheck();
+
+<span class="comment">// handle only checkboxes inside $('.test')</span>
+$('.test input').iCheck({
+ handle: 'checkbox'
+});
+
+<span class="comment">// handle .vote class elements (will search inside the element, if it's not an input)</span>
+$('.vote').iCheck();
+
+<span class="comment">// you can also change options after inputs are customized</span>
+$('input.some').iCheck({
+ <span class="comment">// different options</span>
+});
+</pre>
+ <h4 class="indeterminate">Indeterminate</h4>
+ <p>HTML5 allows specifying <a href="http://css-tricks.com/indeterminate-checkboxes/" target="blank">indeterminate</a> ("partially" checked) state for checkboxes. iCheck supports it for both checkboxes and radio buttons.</p>
+ <p>You can make an input indeterminate through HTML using additional attributes (supported by iCheck). Both do the same job, but <span class="mark">indeterminate="true"</span> may not work in some browsers (like IE7):</p>
+<pre class="markup">
+<span class="comment">&lt;!-- indeterminate="true" --></span>
+&lt;input type="checkbox" indeterminate="true">
+&lt;input type="radio" indeterminate="true">
+
+<span class="comment">&lt;!-- determinate="false" --></span>
+&lt;input type="checkbox" determinate="false">
+&lt;input type="radio" determinate="false">
+</pre>
+ <p><span class="mark">indeterminate</span> and <span class="mark">determinate</span> <span class="self" data-to="methods">methods</span> can be used to toggle indeterminate state.</p>
+ <h4 class="callbacks">Callbacks</h4>
+ <p class="callbacks-info">iCheck provides plenty callbacks, which may be used to handle changes.</p>
+ <table>
+ <thead>
+ <tr>
+ <th>Callback name</th>
+ <td>When used</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th>ifClicked</th>
+ <td>user clicked on a customized input or an assigned label</td>
+ </tr>
+ <tr>
+ <th>ifChanged</th>
+ <td>input's <span class="mark">checked</span>, <span class="mark">disabled</span> or <span class="mark">indeterminate</span> state is changed</td>
+ </tr>
+ <tr>
+ <th>ifChecked</th>
+ <td>input's state is changed to <span class="mark">checked</span></td>
+ </tr>
+ <tr>
+ <th>ifUnchecked</th>
+ <td><span class="mark">checked</span> state is removed</td>
+ </tr>
+ <tr>
+ <th>ifToggled</th>
+ <td>input's <span class="mark">checked</span> state is changed</td>
+ </tr>
+ <tr>
+ <th>ifDisabled</th>
+ <td>input's state is changed to <span class="mark">disabled</span></td>
+ </tr>
+ <tr>
+ <th>ifEnabled</th>
+ <td><span class="mark">disabled</span> state is removed</td>
+ </tr>
+ <tr>
+ <th>ifIndeterminate</th>
+ <td>input's state is changed to <span class="mark">indeterminate</span></td>
+ </tr>
+ <tr>
+ <th>ifDeterminate</th>
+ <td><span class="mark">indeterminate</span> state is removed</td>
+ </tr>
+ <tr>
+ <th>ifCreated</th>
+ <td>input is just customized</td>
+ </tr>
+ <tr>
+ <th>ifDestroyed</th>
+ <td>customization is just removed</td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Use <span class="mark">on()</span> method to bind them to inputs:<p>
+<pre class="markup">
+$('input').on('ifChecked', function(event){
+ alert(event.type + ' callback');
+});
+</pre>
+ <p><span class="mark">ifCreated</span> callback should be binded before plugin init.</p>
+ <h4 class="methods">Methods</h4>
+ <p class="methods-info">These methods can be used to make changes programmatically (any selectors can be used):</p>
+ <p><span class="mark">$('input').iCheck('check');</span> &mdash; change input's state to <span class="mark">checked</span></p>
+ <p><span class="mark">$('input').iCheck('uncheck');</span> &mdash; remove <span class="mark">checked</span> state</p>
+ <p><span class="mark">$('input').iCheck('toggle');</span> &mdash; toggle <span class="mark">checked</span> state</p>
+ <p><span class="mark">$('input').iCheck('disable');</span> &mdash; change input's state to <span class="mark">disabled</span></p>
+ <p><span class="mark">$('input').iCheck('enable');</span> &mdash; remove <span class="mark">disabled</span> state</p>
+ <p><span class="mark">$('input').iCheck('indeterminate');</span> &mdash; change input's state to <span class="mark">indeterminate</span></p>
+ <p><span class="mark">$('input').iCheck('determinate');</span> &mdash; remove <span class="mark">indeterminate</span> state</p>
+ <p><span class="mark">$('input').iCheck('update');</span> &mdash; apply input changes, which were done outside the plugin</p>
+ <p><span class="mark">$('input').iCheck('destroy');</span> &mdash; remove all traces of iCheck</p>
+ <p class="methods-callback">You may also specify some function, that will be executed on each method call:</p>
+<pre class="markup">
+$('input').iCheck('check', function(){
+ alert('Well done, Sir');
+});
+</pre>
+ <p class="issue-tracker">Feel free to <a href="http://github.com/fronteed/iCheck/">fork and submit pull-request</a> or <a href="http://github.com/fronteed/iCheck/issues">submit an issue</a> if you find something not working.</p>
+ </div>
+ </div>
+ <div class="benefits comparison">
+ <div class="arrows">
+ <div class="top" data-to="usage"></div>
+ <div class="bottom" data-to="download"></div>
+ </div>
+ <h2>Comparison</h2>
+ <div class="benefits-inner">
+ <p>iCheck is created to avoid routine of reinventing the wheel when working with checkboxes and radio buttons. It provides an expected identical result for the huge number of browsers, devices and their versions. Callbacks and methods can be used to easily handle and make changes at customized inputs.</p>
+ <p>There are some CSS3 ways available to style checkboxes and radio buttons, like <a href="http://webdesign.tutsplus.com/tutorials/htmlcss-tutorials/quick-tip-easy-css3-checkboxes-and-radio-buttons/" target="blank">this one</a>. You have to know about some of the disadvantages of similar methods:</p>
+ <ul>
+ <li>
+ &mdash; inputs are keyboard inaccessible, since <span class="mark">display: none</span> or <span class="mark">visibility: hidden</span> used to hide them
+ </li>
+ <li>
+ &mdash; poor browser support
+ </li>
+ <li>
+ &mdash; multiple bugs on mobile devices
+ </li>
+ <li>
+ &mdash; tricky, harder to maintain CSS code
+ </li>
+ <li>
+ &mdash; JavaScript is still needed to fix specific issues
+ </li>
+ </ul>
+ <p>While CSS3 method is quite limited solution, iCheck is made to be an everyday replacement covering most of the tasks.</p>
+ </div>
+ </div>
+ <div class="browsers">
+ <h2>Browser support</h2>
+ <div class="browsers-inner">
+ <p>iCheck is verified to work in Internet Explorer 6+, Firefox 2+, Opera 9+, Google Chrome and Safari browsers. Should also work in many others.</p>
+ <p>Mobile browsers (like Opera mini, Chrome mobile, Safari mobile, Android browser, Silk and others) are also supported. Tested on iOS (iPad, iPhone, iPod), Android, BlackBerry and Windows Phone devices.</p>
+ </div>
+ </div>
+ <div class="download">
+ <a href="http://github.com/fronteed/iCheck/">Download plugin</a>
+ </div>
+ <div class="license">iCheck plugin is released under the <a href="http://en.wikipedia.org/wiki/MIT_License" target="blank">MIT License</a>. Feel free to use it in personal and commercial projects.</div>
+ </div>
+ <div class="footer">
+ <div class="footer-inner clear">
+ <ul class="local">
+ <li>
+ <a href="https://github.com/fronteed/iCheck">Star on Github</a>
+ </li>
+ <li>
+ <a href="https://twitter.com/intent/tweet?text=Highly customizable checkboxes and radio buttons&amp;url=http://fronteed.com/iCheck/&amp;via=fronteed&amp;hashtags=jQuery,Zepto">Share on Twitter</a>
+ </li>
+ <li>
+ <a href="http://twitter.com/fronteed/">Follow @fronteed</a>
+ </li>
+ </ul>
+ <div class="code">
+ Created by <a href="http://fronteed.com/">Damir Sultanov</a>
+ </div>
+ </div>
+ </div>
+ <a href="http://github.com/fronteed/iCheck/" class="fork-me">Fork me on GitHub</a>
+</body>
+</html>
+
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/js/custom.js b/common/src/main/webapp/thirdparty/icheck/demo/js/custom.js
new file mode 100755
index 00000000..eace30ed
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/js/custom.js
@@ -0,0 +1,109 @@
+$(document).ready(function() {
+ var hash = window.location.hash.replace('#', '');
+
+ if (hash && $('.' + hash).length) {
+ var point = $('.' + hash).offset().top - 40;
+
+ if (window.Zepto) {
+ window.scrollTo(0, point);
+ } else {
+ $(window).scrollTop($('.' + hash).offset().top - 40);
+ };
+ };
+
+ $('.skin dt').click(function() {
+ $(this).siblings().removeClass('selected').end().prev('dd').andSelf().addClass('selected');
+ });
+
+ $('.arrows .top, .arrows .bottom, .features .self, .skins-info .self, .usage .self').click(function(event) {
+ var target = $(this).data('to'),
+ target_offset = $('.' + target).offset().top;
+
+ event.preventDefault();
+ window.location.hash = target;
+
+ if (window.Zepto) {
+ window.scrollTo(0, target_offset - 40);
+ } else {
+ $('html, body').stop().animate({scrollTop: target_offset - 40}, 600);
+ };
+ });
+
+ $('.colors li').click(function() {
+ var self = $(this);
+
+ if (!self.hasClass('active')) {
+ self.siblings().removeClass('active');
+
+ var skin = self.closest('.skin'),
+ color = self.attr('class') ? '-' + self.attr('class') : '',
+ checkbox = skin.data('icheckbox'),
+ radio = skin.data('iradio'),
+ checkbox_default = 'icheckbox_minimal',
+ radio_default = 'iradio_minimal';
+
+ if (skin.hasClass('skin-square')) {
+ checkbox_default = 'icheckbox_square', radio_default = 'iradio_square';
+ checkbox == undefined && (checkbox = 'icheckbox_square-green', radio = 'iradio_square-green');
+ };
+
+ if (skin.hasClass('skin-flat')) {
+ checkbox_default = 'icheckbox_flat', radio_default = 'iradio_flat';
+ checkbox == undefined && (checkbox = 'icheckbox_flat-red', radio = 'iradio_flat-red');
+ };
+
+ if (skin.hasClass('skin-line')) {
+ checkbox_default = 'icheckbox_line', radio_default = 'iradio_line';
+ checkbox == undefined && (checkbox = 'icheckbox_line-blue', radio = 'iradio_line-blue');
+ };
+
+ checkbox == undefined && (checkbox = checkbox_default, radio = radio_default);
+
+ skin.find('input, .skin-states .state').each(function() {
+ var element = $(this).hasClass('state') ? $(this) : $(this).parent(),
+ element_class = element.attr('class').replace(checkbox, checkbox_default + color).replace(radio, radio_default + color);
+
+ element.attr('class', element_class);
+ });
+
+ skin.data('icheckbox', checkbox_default + color);
+ skin.data('iradio', radio_default + color);
+ self.addClass('active');
+ };
+ });
+
+ $('.demo-methods dt .self').click(function() {
+ var self = $(this),
+ self_class = self.attr('class').replace('self ', '');
+
+ switch (self_class) {
+ case 'do-check':
+ $('#input-1, #input-3').iCheck('check');
+ break;
+ case 'do-uncheck':
+ $('#input-1, #input-3').iCheck('uncheck');
+ break;
+ case 'do-disable':
+ $('#input-2, #input-4').iCheck('disable');
+ break;
+ case 'do-enable':
+ $('#input-2, #input-4').iCheck('enable');
+ break;
+ case 'do-destroy':
+ $('.demo-list input').iCheck('destroy');
+ break;
+ default:
+ var text = self.hasClass('active') ? 'show code' : 'hide code';
+
+ self.toggleClass('active').text(text);
+
+ if (window.Zepto) {
+ $(this).closest('dt').next().toggle();
+ } else {
+ $(this).closest('dt').next().slideToggle(200);
+ };
+
+ break;
+ };
+ });
+}); \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/js/custom.min.js b/common/src/main/webapp/thirdparty/icheck/demo/js/custom.min.js
new file mode 100755
index 00000000..cd9ab216
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/js/custom.min.js
@@ -0,0 +1,5 @@
+$(document).ready(function(){var h=window.location.hash.replace("#","");if(h&&$("."+h).length){var k=$("."+h).offset().top-40;window.Zepto?window.scrollTo(0,k):$(window).scrollTop($("."+h).offset().top-40)}$(".skin dt").click(function(){$(this).siblings().removeClass("selected").end().prev("dd").andSelf().addClass("selected")});$(".arrows .top, .arrows .bottom, .features .self, .skins-info .self, .usage .self").click(function(b){var a=$(this).data("to"),d=$("."+a).offset().top;b.preventDefault();
+window.location.hash=a;window.Zepto?window.scrollTo(0,d-40):$("html, body").stop().animate({scrollTop:d-40},600)});$(".colors li").click(function(){var b=$(this);if(!b.hasClass("active")){b.siblings().removeClass("active");var a=b.closest(".skin"),d=b.attr("class")?"-"+b.attr("class"):"",c=a.data("icheckbox"),g=a.data("iradio"),e="icheckbox_minimal",f="iradio_minimal";a.hasClass("skin-square")&&(e="icheckbox_square",f="iradio_square",void 0==c&&(c="icheckbox_square-green",g="iradio_square-green"));
+a.hasClass("skin-flat")&&(e="icheckbox_flat",f="iradio_flat",void 0==c&&(c="icheckbox_flat-red",g="iradio_flat-red"));a.hasClass("skin-line")&&(e="icheckbox_line",f="iradio_line",void 0==c&&(c="icheckbox_line-blue",g="iradio_line-blue"));void 0==c&&(c=e,g=f);a.find("input, .skin-states .state").each(function(){var a=$(this).hasClass("state")?$(this):$(this).parent(),b=a.attr("class").replace(c,e+d).replace(g,f+d);a.attr("class",b)});a.data("icheckbox",e+d);a.data("iradio",f+d);b.addClass("active")}});
+$(".demo-methods dt .self").click(function(){var b=$(this);switch(b.attr("class").replace("self ","")){case "do-check":$("#input-1, #input-3").iCheck("check");break;case "do-uncheck":$("#input-1, #input-3").iCheck("uncheck");break;case "do-disable":$("#input-2, #input-4").iCheck("disable");break;case "do-enable":$("#input-2, #input-4").iCheck("enable");break;case "do-destroy":$(".demo-list input").iCheck("destroy");break;default:var a=b.hasClass("active")?"show code":"hide code";b.toggleClass("active").text(a);
+window.Zepto?$(this).closest("dt").next().toggle():$(this).closest("dt").next().slideToggle(200)}})}); \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/js/jquery.js b/common/src/main/webapp/thirdparty/icheck/demo/js/jquery.js
new file mode 100755
index 00000000..569f77d1
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/js/jquery.js
@@ -0,0 +1,4 @@
+/*!
+ * jQuery v1.8.3 jquery.com | jquery.org/license
+ */
+(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window);Function(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()| \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/demo/js/zepto.js b/common/src/main/webapp/thirdparty/icheck/demo/js/zepto.js
new file mode 100755
index 00000000..ef1e61f7
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/demo/js/zepto.js
@@ -0,0 +1,41 @@
+/*!
+ * Zepto v1.0 zeptojs.com | MIT licensed
+ * Modules: zepto, polyfill, event, data, stack
+ */
+var Zepto=function(){function h(a){return null==a?String(a):G[S.call(a)]||"object"}function m(a){return"function"==h(a)}function p(a){return null!=a&&a==a.window}function s(a){return null!=a&&a.nodeType==a.DOCUMENT_NODE}function q(a){return"object"==h(a)}function k(a){return q(a)&&!p(a)&&a.__proto__==Object.prototype}function t(a){return a instanceof Array}function l(a){return"number"==typeof a.length}function j(a){return a.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,
+"$1_$2").replace(/_/g,"-").toLowerCase()}function r(a){return a in H?H[a]:H[a]=RegExp("(^|\\s)"+a+"(\\s|$)")}function A(a){return"children"in a?B.call(a.children):c.map(a.childNodes,function(a){if(1==a.nodeType)return a})}function C(a,b,d){for(g in b)d&&(k(b[g])||t(b[g]))?(k(b[g])&&!k(a[g])&&(a[g]={}),t(b[g])&&!t(a[g])&&(a[g]=[]),C(a[g],b[g],d)):b[g]!==f&&(a[g]=b[g])}function y(a,b){return b===f?c(a):c(a).filter(b)}function x(a,b,d,c){return m(b)?b.call(a,d,c):b}function z(a,b){var d=a.className,
+c=d&&d.baseVal!==f;if(b===f)return c?d.baseVal:d;c?d.baseVal=b:a.className=b}function E(a){var b;try{return a?"true"==a||("false"==a?!1:"null"==a?null:!isNaN(b=Number(a))?b:/^[\[\{]/.test(a)?c.parseJSON(a):a):a}catch(d){return a}}function e(a,b){b(a);for(var d in a.childNodes)e(a.childNodes[d],b)}var f,g,c,u,w=[],B=w.slice,D=w.filter,v=window.document,I={},H={},J=v.defaultView.getComputedStyle,M={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},N=/^\s*<(\w+|!)[^>]*>/,
+T=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,O=/^(?:body|html)$/i,U="val css html text data width height offset".split(" "),K=v.createElement("table"),P=v.createElement("tr"),Q={tr:v.createElement("tbody"),tbody:K,thead:K,tfoot:K,td:P,th:P,"*":v.createElement("div")},V=/complete|loaded|interactive/,W=/^\.([\w-]+)$/,X=/^#([\w-]*)$/,Y=/^[\w-]+$/,G={},S=G.toString,n={},L,F,R=v.createElement("div");n.matches=function(a,b){if(!a||1!==a.nodeType)return!1;var d=a.webkitMatchesSelector||
+a.mozMatchesSelector||a.oMatchesSelector||a.matchesSelector;if(d)return d.call(a,b);var c;c=a.parentNode;(d=!c)&&(c=R).appendChild(a);c=~n.qsa(c,b).indexOf(a);d&&R.removeChild(a);return c};L=function(a){return a.replace(/-+(.)?/g,function(a,d){return d?d.toUpperCase():""})};F=function(a){return D.call(a,function(b,d){return a.indexOf(b)==d})};n.fragment=function(a,b,d){a.replace&&(a=a.replace(T,"<$1></$2>"));b===f&&(b=N.test(a)&&RegExp.$1);b in Q||(b="*");var e,g=Q[b];g.innerHTML=""+a;a=c.each(B.call(g.childNodes),
+function(){g.removeChild(this)});k(d)&&(e=c(a),c.each(d,function(a,b){if(-1<U.indexOf(a))e[a](b);else e.attr(a,b)}));return a};n.Z=function(a,b){a=a||[];a.__proto__=c.fn;a.selector=b||"";return a};n.isZ=function(a){return a instanceof n.Z};n.init=function(a,b){if(a){if(m(a))return c(v).ready(a);if(n.isZ(a))return a;var d;if(t(a))d=D.call(a,function(a){return null!=a});else if(q(a))d=[k(a)?c.extend({},a):a],a=null;else if(N.test(a))d=n.fragment(a.trim(),RegExp.$1,b),a=null;else{if(b!==f)return c(b).find(a);
+d=n.qsa(v,a)}return n.Z(d,a)}return n.Z()};c=function(a,b){return n.init(a,b)};c.extend=function(a){var b,d=B.call(arguments,1);"boolean"==typeof a&&(b=a,a=d.shift());d.forEach(function(d){C(a,d,b)});return a};n.qsa=function(a,b){var d;return s(a)&&X.test(b)?(d=a.getElementById(RegExp.$1))?[d]:[]:1!==a.nodeType&&9!==a.nodeType?[]:B.call(W.test(b)?a.getElementsByClassName(RegExp.$1):Y.test(b)?a.getElementsByTagName(b):a.querySelectorAll(b))};c.contains=function(a,b){return a!==b&&a.contains(b)};c.type=
+h;c.isFunction=m;c.isWindow=p;c.isArray=t;c.isPlainObject=k;c.isEmptyObject=function(a){for(var b in a)return!1;return!0};c.inArray=function(a,b,d){return w.indexOf.call(b,a,d)};c.camelCase=L;c.trim=function(a){return a.trim()};c.uuid=0;c.support={};c.expr={};c.map=function(a,b){var d,e=[],f;if(l(a))for(f=0;f<a.length;f++)d=b(a[f],f),null!=d&&e.push(d);else for(f in a)d=b(a[f],f),null!=d&&e.push(d);return 0<e.length?c.fn.concat.apply([],e):e};c.each=function(a,b){var d;if(l(a))for(d=0;d<a.length&&
+!1!==b.call(a[d],d,a[d]);d++);else for(d in a)if(!1===b.call(a[d],d,a[d]))break;return a};c.grep=function(a,b){return D.call(a,b)};window.JSON&&(c.parseJSON=JSON.parse);c.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){G["[object "+b+"]"]=b.toLowerCase()});c.fn={forEach:w.forEach,reduce:w.reduce,push:w.push,sort:w.sort,indexOf:w.indexOf,concat:w.concat,map:function(a){return c(c.map(this,function(b,d){return a.call(b,d,b)}))},slice:function(){return c(B.apply(this,
+arguments))},ready:function(a){V.test(v.readyState)?a(c):v.addEventListener("DOMContentLoaded",function(){a(c)},!1);return this},get:function(a){return a===f?B.call(this):this[0<=a?a:a+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(a){w.every.call(this,function(b,d){return!1!==a.call(b,d,b)});return this},filter:function(a){return m(a)?this.not(this.not(a)):
+c(D.call(this,function(b){return n.matches(b,a)}))},add:function(a,b){return c(F(this.concat(c(a,b))))},is:function(a){return 0<this.length&&n.matches(this[0],a)},not:function(a){var b=[];if(m(a)&&a.call!==f)this.each(function(d){a.call(this,d)||b.push(this)});else{var d="string"==typeof a?this.filter(a):l(a)&&m(a.item)?B.call(a):c(a);this.forEach(function(a){0>d.indexOf(a)&&b.push(a)})}return c(b)},has:function(a){return this.filter(function(){return q(a)?c.contains(this,a):c(this).find(a).size()})},
+eq:function(a){return-1===a?this.slice(a):this.slice(a,+a+1)},first:function(){var a=this[0];return a&&!q(a)?a:c(a)},last:function(){var a=this[this.length-1];return a&&!q(a)?a:c(a)},find:function(a){var b=this;return"object"==typeof a?c(a).filter(function(){var a=this;return w.some.call(b,function(b){return c.contains(b,a)})}):1==this.length?c(n.qsa(this[0],a)):this.map(function(){return n.qsa(this,a)})},closest:function(a,b){var d=this[0],e=!1;for("object"==typeof a&&(e=c(a));d&&!(e?0<=e.indexOf(d):
+n.matches(d,a));)d=d!==b&&!s(d)&&d.parentNode;return c(d)},parents:function(a){for(var b=[],d=this;0<d.length;)d=c.map(d,function(a){if((a=a.parentNode)&&!s(a)&&0>b.indexOf(a))return b.push(a),a});return y(b,a)},parent:function(a){return y(F(this.pluck("parentNode")),a)},children:function(a){return y(this.map(function(){return A(this)}),a)},contents:function(){return this.map(function(){return B.call(this.childNodes)})},siblings:function(a){return y(this.map(function(a,d){return D.call(A(d.parentNode),
+function(a){return a!==d})}),a)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(a){return c.map(this,function(b){return b[a]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=null);if("none"==J(this,"").getPropertyValue("display")){var a=this.style,b=this.nodeName,d,c;I[b]||(d=v.createElement(b),v.body.appendChild(d),c=J(d,"").getPropertyValue("display"),d.parentNode.removeChild(d),"none"==c&&(c="block"),I[b]=c);a.display=
+I[b]}})},replaceWith:function(a){return this.before(a).remove()},wrap:function(a){var b=m(a);if(this[0]&&!b)var d=c(a).get(0),e=d.parentNode||1<this.length;return this.each(function(f){c(this).wrapAll(b?a.call(this,f):e?d.cloneNode(!0):d)})},wrapAll:function(a){if(this[0]){c(this[0]).before(a=c(a));for(var b;(b=a.children()).length;)a=b.first();c(a).append(this)}return this},wrapInner:function(a){var b=m(a);return this.each(function(d){var e=c(this),f=e.contents();d=b?a.call(this,d):a;f.length?f.wrapAll(d):
+e.append(d)})},unwrap:function(){this.parent().each(function(){c(this).replaceWith(c(this).children())});return this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(a){return this.each(function(){var b=c(this);(a===f?"none"==b.css("display"):a)?b.show():b.hide()})},prev:function(a){return c(this.pluck("previousElementSibling")).filter(a||"*")},next:function(a){return c(this.pluck("nextElementSibling")).filter(a||
+"*")},html:function(a){return a===f?0<this.length?this[0].innerHTML:null:this.each(function(b){var d=this.innerHTML;c(this).empty().append(x(this,a,b,d))})},text:function(a){return a===f?0<this.length?this[0].textContent:null:this.each(function(){this.textContent=a})},attr:function(a,b){var d;return"string"==typeof a&&b===f?0==this.length||1!==this[0].nodeType?f:"value"==a&&"INPUT"==this[0].nodeName?this.val():!(d=this[0].getAttribute(a))&&a in this[0]?this[0][a]:d:this.each(function(d){if(1===this.nodeType)if(q(a))for(g in a){d=
+g;var c=a[g];null==c?this.removeAttribute(d):this.setAttribute(d,c)}else d=x(this,b,d,this.getAttribute(a)),null==d?this.removeAttribute(a):this.setAttribute(a,d)})},removeAttr:function(a){return this.each(function(){1===this.nodeType&&this.removeAttribute(a)})},prop:function(a,b){return b===f?this[0]&&this[0][a]:this.each(function(d){this[a]=x(this,b,d,this[a])})},data:function(a,b){var d=this.attr("data-"+j(a),b);return null!==d?E(d):f},val:function(a){return a===f?this[0]&&(this[0].multiple?c(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):
+this[0].value):this.each(function(b){this.value=x(this,a,b,this.value)})},offset:function(a){if(a)return this.each(function(b){var e=c(this);b=x(this,a,b,e.offset());var f=e.offsetParent().offset();b={top:b.top-f.top,left:b.left-f.left};"static"==e.css("position")&&(b.position="relative");e.css(b)});if(0==this.length)return null;var b=this[0].getBoundingClientRect();return{left:b.left+window.pageXOffset,top:b.top+window.pageYOffset,width:Math.round(b.width),height:Math.round(b.height)}},css:function(a,
+b){if(2>arguments.length&&"string"==typeof a)return this[0]&&(this[0].style[L(a)]||J(this[0],"").getPropertyValue(a));var d="";if("string"==h(a))!b&&0!==b?this.each(function(){this.style.removeProperty(j(a))}):d=j(a)+":"+("number"==typeof b&&!M[j(a)]?b+"px":b);else for(g in a)!a[g]&&0!==a[g]?this.each(function(){this.style.removeProperty(j(g))}):d+=j(g)+":"+("number"==typeof a[g]&&!M[j(g)]?a[g]+"px":a[g])+";";return this.each(function(){this.style.cssText+=";"+d})},index:function(a){return a?this.indexOf(c(a)[0]):
+this.parent().children().indexOf(this[0])},hasClass:function(a){return w.some.call(this,function(a){return this.test(z(a))},r(a))},addClass:function(a){return this.each(function(b){u=[];var d=z(this);x(this,a,b,d).split(/\s+/g).forEach(function(a){c(this).hasClass(a)||u.push(a)},this);u.length&&z(this,d+(d?" ":"")+u.join(" "))})},removeClass:function(a){return this.each(function(b){if(a===f)return z(this,"");u=z(this);x(this,a,b,u).split(/\s+/g).forEach(function(a){u=u.replace(r(a)," ")});z(this,
+u.trim())})},toggleClass:function(a,b){return this.each(function(d){var e=c(this);x(this,a,d,z(this)).split(/\s+/g).forEach(function(a){(b===f?!e.hasClass(a):b)?e.addClass(a):e.removeClass(a)})})},scrollTop:function(){if(this.length)return"scrollTop"in this[0]?this[0].scrollTop:this[0].scrollY},position:function(){if(this.length){var a=this[0],b=this.offsetParent(),d=this.offset(),e=O.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c(a).css("margin-top"))||0;d.left-=parseFloat(c(a).css("margin-left"))||
+0;e.top+=parseFloat(c(b[0]).css("border-top-width"))||0;e.left+=parseFloat(c(b[0]).css("border-left-width"))||0;return{top:d.top-e.top,left:d.left-e.left}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||v.body;a&&!O.test(a.nodeName)&&"static"==c(a).css("position");)a=a.offsetParent;return a})}};c.fn.detach=c.fn.remove;["width","height"].forEach(function(a){c.fn[a]=function(b){var d,e=this[0],g=a.replace(/./,function(a){return a[0].toUpperCase()});return b===f?p(e)?
+e["inner"+g]:s(e)?e.documentElement["offset"+g]:(d=this.offset())&&d[a]:this.each(function(d){e=c(this);e.css(a,x(this,b,d,e[a]()))})}});["after","prepend","before","append"].forEach(function(a,b){var d=b%2;c.fn[a]=function(){var a,f=c.map(arguments,function(b){a=h(b);return"object"==a||"array"==a||null==b?b:n.fragment(b)}),g,u=1<this.length;return 1>f.length?this:this.each(function(a,h){g=d?h:h.parentNode;h=0==b?h.nextSibling:1==b?h.firstChild:2==b?h:null;f.forEach(function(a){if(u)a=a.cloneNode(!0);
+else if(!g)return c(a).remove();e(g.insertBefore(a,h),function(a){null!=a.nodeName&&("SCRIPT"===a.nodeName.toUpperCase()&&(!a.type||"text/javascript"===a.type)&&!a.src)&&window.eval.call(window,a.innerHTML)})})})};c.fn[d?a+"To":"insert"+(b?"Before":"After")]=function(b){c(b)[a](this);return this}});n.Z.prototype=c.fn;n.uniq=F;n.deserializeValue=E;c.zepto=n;return c}();window.Zepto=Zepto;"$"in window||(window.$=Zepto);
+(function(h){String.prototype.trim===h&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")});Array.prototype.reduce===h&&(Array.prototype.reduce=function(m){if(void 0===this||null===this)throw new TypeError;var p=Object(this),s=p.length>>>0,q=0,k;if("function"!=typeof m)throw new TypeError;if(0==s&&1==arguments.length)throw new TypeError;if(2<=arguments.length)k=arguments[1];else{do{if(q in p){k=p[q++];break}if(++q>=s)throw new TypeError;}while(1)}for(;q<s;)q in p&&(k=m.call(h,
+k,p[q],q,p)),q++;return k})})();
+(function(h){function m(e){return e._zid||(e._zid=r++)}function p(e,f,g,c){f=s(f);if(f.ns)var h=RegExp("(?:^| )"+f.ns.replace(" "," .* ?")+"(?: |$)");return(j[m(e)]||[]).filter(function(e){return e&&(!f.e||e.e==f.e)&&(!f.ns||h.test(e.ns))&&(!g||m(e.fn)===m(g))&&(!c||e.sel==c)})}function s(e){e=(""+e).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function q(e,f,g){"string"!=h.type(e)?h.each(e,g):e.split(/\s/).forEach(function(e){g(e,f)})}function k(e,f,g,c,u,l){var k=m(e),r=j[k]||(j[k]=
+[]);q(f,g,function(f,g){var j=s(f);j.fn=g;j.sel=c;j.e in C&&(g=function(e){var c=e.relatedTarget;if(!c||c!==this&&!h.contains(this,c))return j.fn.apply(this,arguments)});j.del=u&&u(g,f);var k=j.del||g;j.proxy=function(c){var f=k.apply(e,[c].concat(c.data));!1===f&&(c.preventDefault(),c.stopPropagation());return f};j.i=r.length;r.push(j);e.addEventListener(C[j.e]||j.e,j.proxy,j.del&&("focus"==j.e||"blur"==j.e)||!!l)})}function t(e,f,g,c,h){var l=m(e);q(f||"",g,function(f,g){p(e,f,g,c).forEach(function(c){delete j[l][c.i];
+e.removeEventListener(C[c.e]||c.e,c.proxy,c.del&&("focus"==c.e||"blur"==c.e)||!!h)})})}function l(e){var f,g={originalEvent:e};for(f in e)!z.test(f)&&void 0!==e[f]&&(g[f]=e[f]);h.each(E,function(c,f){g[c]=function(){this[f]=y;return e[c].apply(e,arguments)};g[f]=x});return g}var j={},r=1,A={},C={mouseenter:"mouseover",mouseleave:"mouseout"};A.click=A.mousedown=A.mouseup=A.mousemove="MouseEvents";h.event={add:k,remove:t};h.proxy=function(e,f){if(h.isFunction(e)){var g=function(){return e.apply(f,arguments)};
+g._zid=m(e);return g}if("string"==typeof f)return h.proxy(e[f],e);throw new TypeError("expected function");};h.fn.bind=function(e,f){return this.each(function(){k(this,e,f)})};h.fn.unbind=function(e,f){return this.each(function(){t(this,e,f)})};h.fn.one=function(e,f){return this.each(function(g,c){k(this,e,f,null,function(e,f){return function(){var g=e.apply(c,arguments);t(c,f,e);return g}})})};var y=function(){return!0},x=function(){return!1},z=/^([A-Z]|layer[XY]$)/,E={preventDefault:"isDefaultPrevented",
+stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};h.fn.delegate=function(e,f,g){return this.each(function(c,j){k(j,f,g,e,function(c){return function(f){var g,k=h(f.target).closest(e,j).get(0);if(k)return g=h.extend(l(f),{currentTarget:k,liveFired:j}),c.apply(k,[g].concat([].slice.call(arguments,1)))}})})};h.fn.undelegate=function(e,f,g){return this.each(function(){t(this,f,g,e)})};h.fn.live=function(e,f){h(document.body).delegate(this.selector,e,f);return this};
+h.fn.die=function(e,f){h(document.body).undelegate(this.selector,e,f);return this};h.fn.on=function(e,f,g){return!f||h.isFunction(f)?this.bind(e,f||g):this.delegate(f,e,g)};h.fn.off=function(e,f,g){return!f||h.isFunction(f)?this.unbind(e,f||g):this.undelegate(f,e,g)};h.fn.trigger=function(e,f){if("string"==typeof e||h.isPlainObject(e))e=h.Event(e);var g=e;if(!("defaultPrevented"in g)){g.defaultPrevented=!1;var c=g.preventDefault;g.preventDefault=function(){this.defaultPrevented=!0;c.call(this)}}e.data=
+f;return this.each(function(){"dispatchEvent"in this&&this.dispatchEvent(e)})};h.fn.triggerHandler=function(e,f){var g,c;this.each(function(j,k){g=l("string"==typeof e?h.Event(e):e);g.data=f;g.target=k;h.each(p(k,e.type||e),function(e,f){c=f.proxy(g);if(g.isImmediatePropagationStopped())return!1})});return c};"focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(e){h.fn[e]=
+function(f){return f?this.bind(e,f):this.trigger(e)}});["focus","blur"].forEach(function(e){h.fn[e]=function(f){f?this.bind(e,f):this.each(function(){try{this[e]()}catch(f){}});return this}});h.Event=function(e,f){"string"!=typeof e&&(f=e,e=f.type);var g=document.createEvent(A[e]||"Events"),c=!0;if(f)for(var h in f)"bubbles"==h?c=!!f[h]:g[h]=f[h];g.initEvent(e,c,!0,null,null,null,null,null,null,null,null,null,null,null,null);g.isDefaultPrevented=function(){return this.defaultPrevented};return g}})(Zepto);
+(function(h){function m(l,j){var r=l[t],r=r&&s[r];if(void 0===j)return r||p(l);if(r){if(j in r)return r[j];var m=k(j);if(m in r)return r[m]}return q.call(h(l),j)}function p(l,j,m){var q=l[t]||(l[t]=++h.uuid),p;if(!(p=s[q])){p=s;var y={};h.each(l.attributes,function(j,l){0==l.name.indexOf("data-")&&(y[k(l.name.replace("data-",""))]=h.zepto.deserializeValue(l.value))});p=p[q]=y}l=p;void 0!==j&&(l[k(j)]=m);return l}var s={},q=h.fn.data,k=h.camelCase,t=h.expando="Zepto"+ +new Date;h.fn.data=function(l,
+j){return void 0===j?h.isPlainObject(l)?this.each(function(j,k){h.each(l,function(h,j){p(k,h,j)})}):0==this.length?void 0:m(this[0],l):this.each(function(){p(this,l,j)})};h.fn.removeData=function(l){"string"==typeof l&&(l=l.split(/\s+/));return this.each(function(){var j=this[t],m=j&&s[j];m&&h.each(l,function(){delete m[k(this)]})})}})(Zepto);(function(a){a.fn.end=function(){return this.prevObject||a()};a.fn.andSelf=function(){return this.add(this.prevObject||a())};"filter add not eq first last find closest parents parent children siblings".split(" ").forEach(function(b){var c=a.fn[b];a.fn[b]=function(){var a=c.apply(this,arguments);a.prevObject=this;return a}})})(Zepto);
diff --git a/common/src/main/webapp/thirdparty/icheck/icheck.jquery.json b/common/src/main/webapp/thirdparty/icheck/icheck.jquery.json
new file mode 100755
index 00000000..e7018a64
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/icheck.jquery.json
@@ -0,0 +1,48 @@
+{
+ "name": "icheck",
+ "version": "1.0.2",
+ "title": "iCheck",
+ "author": {
+ "name": "Damir Sultanov",
+ "email": "info@fronteed.com",
+ "homepage": "http://fronteed.com/"
+ },
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "http://en.wikipedia.org/wiki/MIT_License"
+ }
+ ],
+ "dependencies": {
+ "jquery": ">=1.7"
+ },
+ "description": "Highly customizable checkboxes and radio buttons (jQuery and Zepto). Features: identical inputs across different browsers and devices (both desktop and mobile), touch devices support (iOS, Android, BlackBerry, Windows Phone, Amazon Kindle), keyboard accessible inputs (Tab, Spacebar, Arrow up/down and other shortcuts), screenreader accessible inputs — (ARIA attributes for VoiceOver and others), customization freedom (use any HTML and CSS to style inputs or try 6 Retina-ready skins), lightweight size (1 kb gzipped). Provides 32 options to customize checkboxes and radio buttons, 11 callbacks to handle changes, 9 methods to make changes programmatically. Saves changes to original inputs, works carefully with any selectors.",
+ "keywords": [
+ "checkbox",
+ "radio",
+ "input",
+ "field",
+ "form",
+ "desktop",
+ "mobile",
+ "custom",
+ "replacement",
+ "accessibility",
+ "skins",
+ "ui",
+ "checked",
+ "disabled",
+ "indeterminate",
+ "css3",
+ "html5",
+ "tiny",
+ "lightweight",
+ "jquery",
+ "zepto"
+ ],
+ "homepage": "http://fronteed.com/iCheck/",
+ "docs": "https://github.com/fronteed/iCheck",
+ "demo": "http://fronteed.com/iCheck/",
+ "download": "http://fronteed.com/iCheck/",
+ "bugs": "https://github.com/fronteed/iCheck/issues/"
+}
diff --git a/common/src/main/webapp/thirdparty/icheck/icheck.js b/common/src/main/webapp/thirdparty/icheck/icheck.js
new file mode 100755
index 00000000..7bf27682
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/icheck.js
@@ -0,0 +1,509 @@
+/*!
+ * iCheck v1.0.2, http://git.io/arlzeA
+ * ===================================
+ * Powerful jQuery and Zepto plugin for checkboxes and radio buttons customization
+ *
+ * (c) 2013 Damir Sultanov, http://fronteed.com
+ * MIT Licensed
+ */
+
+(function($) {
+
+ // Cached vars
+ var _iCheck = 'iCheck',
+ _iCheckHelper = _iCheck + '-helper',
+ _checkbox = 'checkbox',
+ _radio = 'radio',
+ _checked = 'checked',
+ _unchecked = 'un' + _checked,
+ _disabled = 'disabled',
+ _determinate = 'determinate',
+ _indeterminate = 'in' + _determinate,
+ _update = 'update',
+ _type = 'type',
+ _click = 'click',
+ _touch = 'touchbegin.i touchend.i',
+ _add = 'addClass',
+ _remove = 'removeClass',
+ _callback = 'trigger',
+ _label = 'label',
+ _cursor = 'cursor',
+ _mobile = /ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);
+
+ // Plugin init
+ $.fn[_iCheck] = function(options, fire) {
+
+ // Walker
+ var handle = 'input[type="' + _checkbox + '"], input[type="' + _radio + '"]',
+ stack = $(),
+ walker = function(object) {
+ object.each(function() {
+ var self = $(this);
+
+ if (self.is(handle)) {
+ stack = stack.add(self);
+ } else {
+ stack = stack.add(self.find(handle));
+ }
+ });
+ };
+
+ // Check if we should operate with some method
+ if (/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(options)) {
+
+ // Normalize method's name
+ options = options.toLowerCase();
+
+ // Find checkboxes and radio buttons
+ walker(this);
+
+ return stack.each(function() {
+ var self = $(this);
+
+ if (options == 'destroy') {
+ tidy(self, 'ifDestroyed');
+ } else {
+ operate(self, true, options);
+ }
+
+ // Fire method's callback
+ if ($.isFunction(fire)) {
+ fire();
+ }
+ });
+
+ // Customization
+ } else if (typeof options == 'object' || !options) {
+
+ // Check if any options were passed
+ var settings = $.extend({
+ checkedClass: _checked,
+ disabledClass: _disabled,
+ indeterminateClass: _indeterminate,
+ labelHover: true
+ }, options),
+
+ selector = settings.handle,
+ hoverClass = settings.hoverClass || 'hover',
+ focusClass = settings.focusClass || 'focus',
+ activeClass = settings.activeClass || 'active',
+ labelHover = !!settings.labelHover,
+ labelHoverClass = settings.labelHoverClass || 'hover',
+
+ // Setup clickable area
+ area = ('' + settings.increaseArea).replace('%', '') | 0;
+
+ // Selector limit
+ if (selector == _checkbox || selector == _radio) {
+ handle = 'input[type="' + selector + '"]';
+ }
+
+ // Clickable area limit
+ if (area < -50) {
+ area = -50;
+ }
+
+ // Walk around the selector
+ walker(this);
+
+ return stack.each(function() {
+ var self = $(this);
+
+ // If already customized
+ tidy(self);
+
+ var node = this,
+ id = node.id,
+
+ // Layer styles
+ offset = -area + '%',
+ size = 100 + (area * 2) + '%',
+ layer = {
+ position: 'absolute',
+ top: offset,
+ left: offset,
+ display: 'block',
+ width: size,
+ height: size,
+ margin: 0,
+ padding: 0,
+ background: '#fff',
+ border: 0,
+ opacity: 0
+ },
+
+ // Choose how to hide input
+ hide = _mobile ? {
+ position: 'absolute',
+ visibility: 'hidden'
+ } : area ? layer : {
+ position: 'absolute',
+ opacity: 0
+ },
+
+ // Get proper class
+ className = node[_type] == _checkbox ? settings.checkboxClass || 'i' + _checkbox : settings.radioClass || 'i' + _radio,
+
+ // Find assigned labels
+ label = $(_label + '[for="' + id + '"]').add(self.closest(_label)),
+
+ // Check ARIA option
+ aria = !!settings.aria,
+
+ // Set ARIA placeholder
+ ariaID = _iCheck + '-' + Math.random().toString(36).substr(2,6),
+
+ // Parent & helper
+ parent = '<div class="' + className + '" ' + (aria ? 'role="' + node[_type] + '" ' : ''),
+ helper;
+
+ // Set ARIA "labelledby"
+ if (aria) {
+ label.each(function() {
+ parent += 'aria-labelledby="';
+
+ if (this.id) {
+ parent += this.id;
+ } else {
+ this.id = ariaID;
+ parent += ariaID;
+ }
+
+ parent += '"';
+ });
+ }
+
+ // Wrap input
+ parent = self.wrap(parent + '/>')[_callback]('ifCreated').parent().append(settings.insert);
+
+ // Layer addition
+ helper = $('<ins class="' + _iCheckHelper + '"/>').css(layer).appendTo(parent);
+
+ // Finalize customization
+ self.data(_iCheck, {o: settings, s: self.attr('style')}).css(hide);
+ !!settings.inheritClass && parent[_add](node.className || '');
+ !!settings.inheritID && id && parent.attr('id', _iCheck + '-' + id);
+ parent.css('position') == 'static' && parent.css('position', 'relative');
+ operate(self, true, _update);
+
+ // Label events
+ if (label.length) {
+ label.on(_click + '.i mouseover.i mouseout.i ' + _touch, function(event) {
+ var type = event[_type],
+ item = $(this);
+
+ // Do nothing if input is disabled
+ if (!node[_disabled]) {
+
+ // Click
+ if (type == _click) {
+ if ($(event.target).is('a')) {
+ return;
+ }
+ operate(self, false, true);
+
+ // Hover state
+ } else if (labelHover) {
+
+ // mouseout|touchend
+ if (/ut|nd/.test(type)) {
+ parent[_remove](hoverClass);
+ item[_remove](labelHoverClass);
+ } else {
+ parent[_add](hoverClass);
+ item[_add](labelHoverClass);
+ }
+ }
+
+ if (_mobile) {
+ event.stopPropagation();
+ } else {
+ return false;
+ }
+ }
+ });
+ }
+
+ // Input events
+ self.on(_click + '.i focus.i blur.i keyup.i keydown.i keypress.i', function(event) {
+ var type = event[_type],
+ key = event.keyCode;
+
+ // Click
+ if (type == _click) {
+ return false;
+
+ // Keydown
+ } else if (type == 'keydown' && key == 32) {
+ if (!(node[_type] == _radio && node[_checked])) {
+ if (node[_checked]) {
+ off(self, _checked);
+ } else {
+ on(self, _checked);
+ }
+ }
+
+ return false;
+
+ // Keyup
+ } else if (type == 'keyup' && node[_type] == _radio) {
+ !node[_checked] && on(self, _checked);
+
+ // Focus/blur
+ } else if (/us|ur/.test(type)) {
+ parent[type == 'blur' ? _remove : _add](focusClass);
+ }
+ });
+
+ // Helper events
+ helper.on(_click + ' mousedown mouseup mouseover mouseout ' + _touch, function(event) {
+ var type = event[_type],
+
+ // mousedown|mouseup
+ toggle = /wn|up/.test(type) ? activeClass : hoverClass;
+
+ // Do nothing if input is disabled
+ if (!node[_disabled]) {
+
+ // Click
+ if (type == _click) {
+ operate(self, false, true);
+
+ // Active and hover states
+ } else {
+
+ // State is on
+ if (/wn|er|in/.test(type)) {
+
+ // mousedown|mouseover|touchbegin
+ parent[_add](toggle);
+
+ // State is off
+ } else {
+ parent[_remove](toggle + ' ' + activeClass);
+ }
+
+ // Label hover
+ if (label.length && labelHover && toggle == hoverClass) {
+
+ // mouseout|touchend
+ label[/ut|nd/.test(type) ? _remove : _add](labelHoverClass);
+ }
+ }
+
+ if (_mobile) {
+ event.stopPropagation();
+ } else {
+ return false;
+ }
+ }
+ });
+ });
+ } else {
+ return this;
+ }
+ };
+
+ // Do something with inputs
+ function operate(input, direct, method) {
+ var node = input[0],
+ state = /er/.test(method) ? _indeterminate : /bl/.test(method) ? _disabled : _checked,
+ active = method == _update ? {
+ checked: node[_checked],
+ disabled: node[_disabled],
+ indeterminate: input.attr(_indeterminate) == 'true' || input.attr(_determinate) == 'false'
+ } : node[state];
+
+ // Check, disable or indeterminate
+ if (/^(ch|di|in)/.test(method) && !active) {
+ on(input, state);
+
+ // Uncheck, enable or determinate
+ } else if (/^(un|en|de)/.test(method) && active) {
+ off(input, state);
+
+ // Update
+ } else if (method == _update) {
+
+ // Handle states
+ for (var each in active) {
+ if (active[each]) {
+ on(input, each, true);
+ } else {
+ off(input, each, true);
+ }
+ }
+
+ } else if (!direct || method == 'toggle') {
+
+ // Helper or label was clicked
+ if (!direct) {
+ input[_callback]('ifClicked');
+ }
+
+ // Toggle checked state
+ if (active) {
+ if (node[_type] !== _radio) {
+ off(input, state);
+ }
+ } else {
+ on(input, state);
+ }
+ }
+ }
+
+ // Add checked, disabled or indeterminate state
+ function on(input, state, keep) {
+ var node = input[0],
+ parent = input.parent(),
+ checked = state == _checked,
+ indeterminate = state == _indeterminate,
+ disabled = state == _disabled,
+ callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled',
+ regular = option(input, callback + capitalize(node[_type])),
+ specific = option(input, state + capitalize(node[_type]));
+
+ // Prevent unnecessary actions
+ if (node[state] !== true) {
+
+ // Toggle assigned radio buttons
+ if (!keep && state == _checked && node[_type] == _radio && node.name) {
+ var form = input.closest('form'),
+ inputs = 'input[name="' + node.name + '"]';
+
+ inputs = form.length ? form.find(inputs) : $(inputs);
+
+ inputs.each(function() {
+ if (this !== node && $(this).data(_iCheck)) {
+ off($(this), state);
+ }
+ });
+ }
+
+ // Indeterminate state
+ if (indeterminate) {
+
+ // Add indeterminate state
+ node[state] = true;
+
+ // Remove checked state
+ if (node[_checked]) {
+ off(input, _checked, 'force');
+ }
+
+ // Checked or disabled state
+ } else {
+
+ // Add checked or disabled state
+ if (!keep) {
+ node[state] = true;
+ }
+
+ // Remove indeterminate state
+ if (checked && node[_indeterminate]) {
+ off(input, _indeterminate, false);
+ }
+ }
+
+ // Trigger callbacks
+ callbacks(input, checked, state, keep);
+ }
+
+ // Add proper cursor
+ if (node[_disabled] && !!option(input, _cursor, true)) {
+ parent.find('.' + _iCheckHelper).css(_cursor, 'default');
+ }
+
+ // Add state class
+ parent[_add](specific || option(input, state) || '');
+
+ // Set ARIA attribute
+ if (!!parent.attr('role') && !indeterminate) {
+ parent.attr('aria-' + (disabled ? _disabled : _checked), 'true');
+ }
+
+ // Remove regular state class
+ parent[_remove](regular || option(input, callback) || '');
+ }
+
+ // Remove checked, disabled or indeterminate state
+ function off(input, state, keep) {
+ var node = input[0],
+ parent = input.parent(),
+ checked = state == _checked,
+ indeterminate = state == _indeterminate,
+ disabled = state == _disabled,
+ callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled',
+ regular = option(input, callback + capitalize(node[_type])),
+ specific = option(input, state + capitalize(node[_type]));
+
+ // Prevent unnecessary actions
+ if (node[state] !== false) {
+
+ // Toggle state
+ if (indeterminate || !keep || keep == 'force') {
+ node[state] = false;
+ }
+
+ // Trigger callbacks
+ callbacks(input, checked, callback, keep);
+ }
+
+ // Add proper cursor
+ if (!node[_disabled] && !!option(input, _cursor, true)) {
+ parent.find('.' + _iCheckHelper).css(_cursor, 'pointer');
+ }
+
+ // Remove state class
+ parent[_remove](specific || option(input, state) || '');
+
+ // Set ARIA attribute
+ if (!!parent.attr('role') && !indeterminate) {
+ parent.attr('aria-' + (disabled ? _disabled : _checked), 'false');
+ }
+
+ // Add regular state class
+ parent[_add](regular || option(input, callback) || '');
+ }
+
+ // Remove all traces
+ function tidy(input, callback) {
+ if (input.data(_iCheck)) {
+
+ // Remove everything except input
+ input.parent().html(input.attr('style', input.data(_iCheck).s || ''));
+
+ // Callback
+ if (callback) {
+ input[_callback](callback);
+ }
+
+ // Unbind events
+ input.off('.i').unwrap();
+ $(_label + '[for="' + input[0].id + '"]').add(input.closest(_label)).off('.i');
+ }
+ }
+
+ // Get some option
+ function option(input, state, regular) {
+ if (input.data(_iCheck)) {
+ return input.data(_iCheck).o[state + (regular ? '' : 'Class')];
+ }
+ }
+
+ // Capitalize some string
+ function capitalize(string) {
+ return string.charAt(0).toUpperCase() + string.slice(1);
+ }
+
+ // Executable handlers
+ function callbacks(input, checked, callback, keep) {
+ if (!keep) {
+ if (checked) {
+ input[_callback]('ifToggled');
+ }
+
+ input[_callback]('ifChanged')[_callback]('if' + capitalize(callback));
+ }
+ }
+})(window.jQuery || window.Zepto);
diff --git a/common/src/main/webapp/thirdparty/icheck/icheck.min.js b/common/src/main/webapp/thirdparty/icheck/icheck.min.js
new file mode 100755
index 00000000..7cdb17e0
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/icheck.min.js
@@ -0,0 +1,11 @@
+/*! iCheck v1.0.2 by Damir Sultanov, http://git.io/arlzeA, MIT Licensed */
+(function(f){function A(a,b,d){var c=a[0],g=/er/.test(d)?_indeterminate:/bl/.test(d)?n:k,e=d==_update?{checked:c[k],disabled:c[n],indeterminate:"true"==a.attr(_indeterminate)||"false"==a.attr(_determinate)}:c[g];if(/^(ch|di|in)/.test(d)&&!e)x(a,g);else if(/^(un|en|de)/.test(d)&&e)q(a,g);else if(d==_update)for(var f in e)e[f]?x(a,f,!0):q(a,f,!0);else if(!b||"toggle"==d){if(!b)a[_callback]("ifClicked");e?c[_type]!==r&&q(a,g):x(a,g)}}function x(a,b,d){var c=a[0],g=a.parent(),e=b==k,u=b==_indeterminate,
+v=b==n,s=u?_determinate:e?y:"enabled",F=l(a,s+t(c[_type])),B=l(a,b+t(c[_type]));if(!0!==c[b]){if(!d&&b==k&&c[_type]==r&&c.name){var w=a.closest("form"),p='input[name="'+c.name+'"]',p=w.length?w.find(p):f(p);p.each(function(){this!==c&&f(this).data(m)&&q(f(this),b)})}u?(c[b]=!0,c[k]&&q(a,k,"force")):(d||(c[b]=!0),e&&c[_indeterminate]&&q(a,_indeterminate,!1));D(a,e,b,d)}c[n]&&l(a,_cursor,!0)&&g.find("."+C).css(_cursor,"default");g[_add](B||l(a,b)||"");g.attr("role")&&!u&&g.attr("aria-"+(v?n:k),"true");
+g[_remove](F||l(a,s)||"")}function q(a,b,d){var c=a[0],g=a.parent(),e=b==k,f=b==_indeterminate,m=b==n,s=f?_determinate:e?y:"enabled",q=l(a,s+t(c[_type])),r=l(a,b+t(c[_type]));if(!1!==c[b]){if(f||!d||"force"==d)c[b]=!1;D(a,e,s,d)}!c[n]&&l(a,_cursor,!0)&&g.find("."+C).css(_cursor,"pointer");g[_remove](r||l(a,b)||"");g.attr("role")&&!f&&g.attr("aria-"+(m?n:k),"false");g[_add](q||l(a,s)||"")}function E(a,b){if(a.data(m)){a.parent().html(a.attr("style",a.data(m).s||""));if(b)a[_callback](b);a.off(".i").unwrap();
+f(_label+'[for="'+a[0].id+'"]').add(a.closest(_label)).off(".i")}}function l(a,b,f){if(a.data(m))return a.data(m).o[b+(f?"":"Class")]}function t(a){return a.charAt(0).toUpperCase()+a.slice(1)}function D(a,b,f,c){if(!c){if(b)a[_callback]("ifToggled");a[_callback]("ifChanged")[_callback]("if"+t(f))}}var m="iCheck",C=m+"-helper",r="radio",k="checked",y="un"+k,n="disabled";_determinate="determinate";_indeterminate="in"+_determinate;_update="update";_type="type";_click="click";_touch="touchbegin.i touchend.i";
+_add="addClass";_remove="removeClass";_callback="trigger";_label="label";_cursor="cursor";_mobile=/ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);f.fn[m]=function(a,b){var d='input[type="checkbox"], input[type="'+r+'"]',c=f(),g=function(a){a.each(function(){var a=f(this);c=a.is(d)?c.add(a):c.add(a.find(d))})};if(/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(a))return a=a.toLowerCase(),g(this),c.each(function(){var c=
+f(this);"destroy"==a?E(c,"ifDestroyed"):A(c,!0,a);f.isFunction(b)&&b()});if("object"!=typeof a&&a)return this;var e=f.extend({checkedClass:k,disabledClass:n,indeterminateClass:_indeterminate,labelHover:!0},a),l=e.handle,v=e.hoverClass||"hover",s=e.focusClass||"focus",t=e.activeClass||"active",B=!!e.labelHover,w=e.labelHoverClass||"hover",p=(""+e.increaseArea).replace("%","")|0;if("checkbox"==l||l==r)d='input[type="'+l+'"]';-50>p&&(p=-50);g(this);return c.each(function(){var a=f(this);E(a);var c=this,
+b=c.id,g=-p+"%",d=100+2*p+"%",d={position:"absolute",top:g,left:g,display:"block",width:d,height:d,margin:0,padding:0,background:"#fff",border:0,opacity:0},g=_mobile?{position:"absolute",visibility:"hidden"}:p?d:{position:"absolute",opacity:0},l="checkbox"==c[_type]?e.checkboxClass||"icheckbox":e.radioClass||"i"+r,z=f(_label+'[for="'+b+'"]').add(a.closest(_label)),u=!!e.aria,y=m+"-"+Math.random().toString(36).substr(2,6),h='<div class="'+l+'" '+(u?'role="'+c[_type]+'" ':"");u&&z.each(function(){h+=
+'aria-labelledby="';this.id?h+=this.id:(this.id=y,h+=y);h+='"'});h=a.wrap(h+"/>")[_callback]("ifCreated").parent().append(e.insert);d=f('<ins class="'+C+'"/>').css(d).appendTo(h);a.data(m,{o:e,s:a.attr("style")}).css(g);e.inheritClass&&h[_add](c.className||"");e.inheritID&&b&&h.attr("id",m+"-"+b);"static"==h.css("position")&&h.css("position","relative");A(a,!0,_update);if(z.length)z.on(_click+".i mouseover.i mouseout.i "+_touch,function(b){var d=b[_type],e=f(this);if(!c[n]){if(d==_click){if(f(b.target).is("a"))return;
+A(a,!1,!0)}else B&&(/ut|nd/.test(d)?(h[_remove](v),e[_remove](w)):(h[_add](v),e[_add](w)));if(_mobile)b.stopPropagation();else return!1}});a.on(_click+".i focus.i blur.i keyup.i keydown.i keypress.i",function(b){var d=b[_type];b=b.keyCode;if(d==_click)return!1;if("keydown"==d&&32==b)return c[_type]==r&&c[k]||(c[k]?q(a,k):x(a,k)),!1;if("keyup"==d&&c[_type]==r)!c[k]&&x(a,k);else if(/us|ur/.test(d))h["blur"==d?_remove:_add](s)});d.on(_click+" mousedown mouseup mouseover mouseout "+_touch,function(b){var d=
+b[_type],e=/wn|up/.test(d)?t:v;if(!c[n]){if(d==_click)A(a,!1,!0);else{if(/wn|er|in/.test(d))h[_add](e);else h[_remove](e+" "+t);if(z.length&&B&&e==v)z[/ut|nd/.test(d)?_remove:_add](w)}if(_mobile)b.stopPropagation();else return!1}})})}})(window.jQuery||window.Zepto);
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/all.css b/common/src/main/webapp/thirdparty/icheck/skins/all.css
new file mode 100755
index 00000000..6439b742
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/all.css
@@ -0,0 +1,61 @@
+/* iCheck plugin skins
+----------------------------------- */
+@import url("minimal/_all.css");
+/*
+@import url("minimal/minimal.css");
+@import url("minimal/red.css");
+@import url("minimal/green.css");
+@import url("minimal/blue.css");
+@import url("minimal/aero.css");
+@import url("minimal/grey.css");
+@import url("minimal/orange.css");
+@import url("minimal/yellow.css");
+@import url("minimal/pink.css");
+@import url("minimal/purple.css");
+*/
+
+@import url("square/_all.css");
+/*
+@import url("square/square.css");
+@import url("square/red.css");
+@import url("square/green.css");
+@import url("square/blue.css");
+@import url("square/aero.css");
+@import url("square/grey.css");
+@import url("square/orange.css");
+@import url("square/yellow.css");
+@import url("square/pink.css");
+@import url("square/purple.css");
+*/
+
+@import url("flat/_all.css");
+/*
+@import url("flat/flat.css");
+@import url("flat/red.css");
+@import url("flat/green.css");
+@import url("flat/blue.css");
+@import url("flat/aero.css");
+@import url("flat/grey.css");
+@import url("flat/orange.css");
+@import url("flat/yellow.css");
+@import url("flat/pink.css");
+@import url("flat/purple.css");
+*/
+
+@import url("line/_all.css");
+/*
+@import url("line/line.css");
+@import url("line/red.css");
+@import url("line/green.css");
+@import url("line/blue.css");
+@import url("line/aero.css");
+@import url("line/grey.css");
+@import url("line/orange.css");
+@import url("line/yellow.css");
+@import url("line/pink.css");
+@import url("line/purple.css");
+*/
+
+@import url("polaris/polaris.css");
+
+@import url("futurico/futurico.css"); \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/_all.css b/common/src/main/webapp/thirdparty/icheck/skins/flat/_all.css
new file mode 100755
index 00000000..cf5ea76c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/_all.css
@@ -0,0 +1,530 @@
+/* iCheck plugin Flat skin
+----------------------------------- */
+.icheckbox_flat,
+.iradio_flat {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(flat.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat {
+ background-position: 0 0;
+}
+ .icheckbox_flat.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat {
+ background-position: -88px 0;
+}
+ .iradio_flat.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat,
+ .iradio_flat {
+ background-image: url(flat@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* red */
+.icheckbox_flat-red,
+.iradio_flat-red {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(red.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-red {
+ background-position: 0 0;
+}
+ .icheckbox_flat-red.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-red.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-red.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-red {
+ background-position: -88px 0;
+}
+ .iradio_flat-red.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-red.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-red.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-red,
+ .iradio_flat-red {
+ background-image: url(red@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* green */
+.icheckbox_flat-green,
+.iradio_flat-green {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(green.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-green {
+ background-position: 0 0;
+}
+ .icheckbox_flat-green.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-green.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-green.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-green {
+ background-position: -88px 0;
+}
+ .iradio_flat-green.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-green.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-green.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-green,
+ .iradio_flat-green {
+ background-image: url(green@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* blue */
+.icheckbox_flat-blue,
+.iradio_flat-blue {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(blue.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-blue {
+ background-position: 0 0;
+}
+ .icheckbox_flat-blue.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-blue.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-blue.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-blue {
+ background-position: -88px 0;
+}
+ .iradio_flat-blue.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-blue.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-blue.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-blue,
+ .iradio_flat-blue {
+ background-image: url(blue@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* aero */
+.icheckbox_flat-aero,
+.iradio_flat-aero {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(aero.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-aero {
+ background-position: 0 0;
+}
+ .icheckbox_flat-aero.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-aero.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-aero.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-aero {
+ background-position: -88px 0;
+}
+ .iradio_flat-aero.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-aero.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-aero.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-aero,
+ .iradio_flat-aero {
+ background-image: url(aero@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* grey */
+.icheckbox_flat-grey,
+.iradio_flat-grey {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(grey.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-grey {
+ background-position: 0 0;
+}
+ .icheckbox_flat-grey.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-grey.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-grey.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-grey {
+ background-position: -88px 0;
+}
+ .iradio_flat-grey.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-grey.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-grey.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-grey,
+ .iradio_flat-grey {
+ background-image: url(grey@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* orange */
+.icheckbox_flat-orange,
+.iradio_flat-orange {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(orange.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-orange {
+ background-position: 0 0;
+}
+ .icheckbox_flat-orange.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-orange.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-orange.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-orange {
+ background-position: -88px 0;
+}
+ .iradio_flat-orange.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-orange.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-orange.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-orange,
+ .iradio_flat-orange {
+ background-image: url(orange@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* yellow */
+.icheckbox_flat-yellow,
+.iradio_flat-yellow {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(yellow.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-yellow {
+ background-position: 0 0;
+}
+ .icheckbox_flat-yellow.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-yellow.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-yellow.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-yellow {
+ background-position: -88px 0;
+}
+ .iradio_flat-yellow.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-yellow.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-yellow.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-yellow,
+ .iradio_flat-yellow {
+ background-image: url(yellow@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* pink */
+.icheckbox_flat-pink,
+.iradio_flat-pink {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(pink.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-pink {
+ background-position: 0 0;
+}
+ .icheckbox_flat-pink.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-pink.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-pink.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-pink {
+ background-position: -88px 0;
+}
+ .iradio_flat-pink.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-pink.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-pink.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_flat-pink,
+ .iradio_flat-pink {
+ background-image: url(pink@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+}
+
+/* purple */
+.icheckbox_flat-purple,
+.iradio_flat-purple {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(purple.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-purple {
+ background-position: 0 0;
+}
+ .icheckbox_flat-purple.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-purple.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-purple.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-purple {
+ background-position: -88px 0;
+}
+ .iradio_flat-purple.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-purple.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-purple.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-purple,
+ .iradio_flat-purple {
+ background-image: url(purple@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/aero.css b/common/src/main/webapp/thirdparty/icheck/skins/flat/aero.css
new file mode 100755
index 00000000..dc769c73
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/aero.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, aero
+----------------------------------- */
+.icheckbox_flat-aero,
+.iradio_flat-aero {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(aero.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-aero {
+ background-position: 0 0;
+}
+ .icheckbox_flat-aero.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-aero.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-aero.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-aero {
+ background-position: -88px 0;
+}
+ .iradio_flat-aero.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-aero.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-aero.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-aero,
+ .iradio_flat-aero {
+ background-image: url(aero@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/aero.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/aero.png
new file mode 100755
index 00000000..f4277aa4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/aero.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/aero@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/aero@2x.png
new file mode 100755
index 00000000..a9a74945
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/aero@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/blue.css b/common/src/main/webapp/thirdparty/icheck/skins/flat/blue.css
new file mode 100755
index 00000000..af091c80
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/blue.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, blue
+----------------------------------- */
+.icheckbox_flat-blue,
+.iradio_flat-blue {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(blue.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-blue {
+ background-position: 0 0;
+}
+ .icheckbox_flat-blue.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-blue.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-blue.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-blue {
+ background-position: -88px 0;
+}
+ .iradio_flat-blue.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-blue.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-blue.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-blue,
+ .iradio_flat-blue {
+ background-image: url(blue@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/blue.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/blue.png
new file mode 100755
index 00000000..4b6ef982
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/blue.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/blue@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/blue@2x.png
new file mode 100755
index 00000000..d52da057
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/blue@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/flat.css b/common/src/main/webapp/thirdparty/icheck/skins/flat/flat.css
new file mode 100755
index 00000000..665bc7bc
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/flat.css
@@ -0,0 +1,53 @@
+/* iCheck plugin flat skin, black
+----------------------------------- */
+.icheckbox_flat,
+.iradio_flat {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(flat.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat {
+ background-position: 0 0;
+}
+ .icheckbox_flat.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat {
+ background-position: -88px 0;
+}
+ .iradio_flat.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat,
+ .iradio_flat {
+ background-image: url(flat@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/flat.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/flat.png
new file mode 100755
index 00000000..15af826e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/flat.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/flat@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/flat@2x.png
new file mode 100755
index 00000000..e70e438c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/flat@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/green.css b/common/src/main/webapp/thirdparty/icheck/skins/flat/green.css
new file mode 100755
index 00000000..cce7a7fa
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/green.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, green
+----------------------------------- */
+.icheckbox_flat-green,
+.iradio_flat-green {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(green.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-green {
+ background-position: 0 0;
+}
+ .icheckbox_flat-green.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-green.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-green.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-green {
+ background-position: -88px 0;
+}
+ .iradio_flat-green.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-green.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-green.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-green,
+ .iradio_flat-green {
+ background-image: url(green@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/green.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/green.png
new file mode 100755
index 00000000..6b303fbe
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/green.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/green@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/green@2x.png
new file mode 100755
index 00000000..92b4411d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/green@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/grey.css b/common/src/main/webapp/thirdparty/icheck/skins/flat/grey.css
new file mode 100755
index 00000000..46305d01
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/grey.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, grey
+----------------------------------- */
+.icheckbox_flat-grey,
+.iradio_flat-grey {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(grey.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-grey {
+ background-position: 0 0;
+}
+ .icheckbox_flat-grey.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-grey.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-grey.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-grey {
+ background-position: -88px 0;
+}
+ .iradio_flat-grey.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-grey.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-grey.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-grey,
+ .iradio_flat-grey {
+ background-image: url(grey@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/grey.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/grey.png
new file mode 100755
index 00000000..c6e2873e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/grey.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/grey@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/grey@2x.png
new file mode 100755
index 00000000..0b47b1c6
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/grey@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/orange.css b/common/src/main/webapp/thirdparty/icheck/skins/flat/orange.css
new file mode 100755
index 00000000..c8d3caf3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/orange.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, orange
+----------------------------------- */
+.icheckbox_flat-orange,
+.iradio_flat-orange {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(orange.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-orange {
+ background-position: 0 0;
+}
+ .icheckbox_flat-orange.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-orange.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-orange.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-orange {
+ background-position: -88px 0;
+}
+ .iradio_flat-orange.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-orange.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-orange.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-orange,
+ .iradio_flat-orange {
+ background-image: url(orange@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/orange.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/orange.png
new file mode 100755
index 00000000..ec2532eb
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/orange.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/orange@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/orange@2x.png
new file mode 100755
index 00000000..9350b506
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/orange@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/pink.css b/common/src/main/webapp/thirdparty/icheck/skins/flat/pink.css
new file mode 100755
index 00000000..e4ca2549
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/pink.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, pink
+----------------------------------- */
+.icheckbox_flat-pink,
+.iradio_flat-pink {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(pink.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-pink {
+ background-position: 0 0;
+}
+ .icheckbox_flat-pink.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-pink.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-pink.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-pink {
+ background-position: -88px 0;
+}
+ .iradio_flat-pink.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-pink.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-pink.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-pink,
+ .iradio_flat-pink {
+ background-image: url(pink@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/pink.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/pink.png
new file mode 100755
index 00000000..3e65d9dd
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/pink.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/pink@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/pink@2x.png
new file mode 100755
index 00000000..281ba06b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/pink@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/purple.css b/common/src/main/webapp/thirdparty/icheck/skins/flat/purple.css
new file mode 100755
index 00000000..15408bcd
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/purple.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, purple
+----------------------------------- */
+.icheckbox_flat-purple,
+.iradio_flat-purple {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(purple.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-purple {
+ background-position: 0 0;
+}
+ .icheckbox_flat-purple.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-purple.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-purple.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-purple {
+ background-position: -88px 0;
+}
+ .iradio_flat-purple.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-purple.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-purple.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-purple,
+ .iradio_flat-purple {
+ background-image: url(purple@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/purple.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/purple.png
new file mode 100755
index 00000000..3699fd58
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/purple.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/purple@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/purple@2x.png
new file mode 100755
index 00000000..7f4be74a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/purple@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/red.css b/common/src/main/webapp/thirdparty/icheck/skins/flat/red.css
new file mode 100755
index 00000000..d2e240db
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/red.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, red
+----------------------------------- */
+.icheckbox_flat-red,
+.iradio_flat-red {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(red.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-red {
+ background-position: 0 0;
+}
+ .icheckbox_flat-red.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-red.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-red.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-red {
+ background-position: -88px 0;
+}
+ .iradio_flat-red.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-red.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-red.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-red,
+ .iradio_flat-red {
+ background-image: url(red@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/red.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/red.png
new file mode 100755
index 00000000..0d5ac381
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/red.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/red@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/red@2x.png
new file mode 100755
index 00000000..38590d98
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/red@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/yellow.css b/common/src/main/webapp/thirdparty/icheck/skins/flat/yellow.css
new file mode 100755
index 00000000..ce130af6
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/yellow.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Flat skin, yellow
+----------------------------------- */
+.icheckbox_flat-yellow,
+.iradio_flat-yellow {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 20px;
+ height: 20px;
+ background: url(yellow.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_flat-yellow {
+ background-position: 0 0;
+}
+ .icheckbox_flat-yellow.checked {
+ background-position: -22px 0;
+ }
+ .icheckbox_flat-yellow.disabled {
+ background-position: -44px 0;
+ cursor: default;
+ }
+ .icheckbox_flat-yellow.checked.disabled {
+ background-position: -66px 0;
+ }
+
+.iradio_flat-yellow {
+ background-position: -88px 0;
+}
+ .iradio_flat-yellow.checked {
+ background-position: -110px 0;
+ }
+ .iradio_flat-yellow.disabled {
+ background-position: -132px 0;
+ cursor: default;
+ }
+ .iradio_flat-yellow.checked.disabled {
+ background-position: -154px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_flat-yellow,
+ .iradio_flat-yellow {
+ background-image: url(yellow@2x.png);
+ -webkit-background-size: 176px 22px;
+ background-size: 176px 22px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/yellow.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/yellow.png
new file mode 100755
index 00000000..909dadc5
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/yellow.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/flat/yellow@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/flat/yellow@2x.png
new file mode 100755
index 00000000..9fd5d733
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/flat/yellow@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/futurico/futurico.css b/common/src/main/webapp/thirdparty/icheck/skins/futurico/futurico.css
new file mode 100755
index 00000000..23649a75
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/futurico/futurico.css
@@ -0,0 +1,53 @@
+/* iCheck plugin Futurico skin
+----------------------------------- */
+.icheckbox_futurico,
+.iradio_futurico {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 16px;
+ height: 17px;
+ background: url(futurico.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_futurico {
+ background-position: 0 0;
+}
+ .icheckbox_futurico.checked {
+ background-position: -18px 0;
+ }
+ .icheckbox_futurico.disabled {
+ background-position: -36px 0;
+ cursor: default;
+ }
+ .icheckbox_futurico.checked.disabled {
+ background-position: -54px 0;
+ }
+
+.iradio_futurico {
+ background-position: -72px 0;
+}
+ .iradio_futurico.checked {
+ background-position: -90px 0;
+ }
+ .iradio_futurico.disabled {
+ background-position: -108px 0;
+ cursor: default;
+ }
+ .iradio_futurico.checked.disabled {
+ background-position: -126px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_futurico,
+ .iradio_futurico {
+ background-image: url(futurico@2x.png);
+ -webkit-background-size: 144px 19px;
+ background-size: 144px 19px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/futurico/futurico.png b/common/src/main/webapp/thirdparty/icheck/skins/futurico/futurico.png
new file mode 100755
index 00000000..50d62b5d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/futurico/futurico.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/futurico/futurico@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/futurico/futurico@2x.png
new file mode 100755
index 00000000..f7eb45aa
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/futurico/futurico@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/line/Thumbs.db b/common/src/main/webapp/thirdparty/icheck/skins/line/Thumbs.db
new file mode 100755
index 00000000..a5980502
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/line/Thumbs.db
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/line/_all.css b/common/src/main/webapp/thirdparty/icheck/skins/line/_all.css
new file mode 100755
index 00000000..14ff6cca
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/line/_all.css
@@ -0,0 +1,710 @@
+/* iCheck plugin Line skin
+----------------------------------- */
+.icheckbox_line,
+.iradio_line {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #000;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line .icheck_line-icon,
+ .iradio_line .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line.hover,
+ .icheckbox_line.checked.hover,
+ .iradio_line.hover {
+ background: #444;
+ }
+ .icheckbox_line.checked,
+ .iradio_line.checked {
+ background: #000;
+ }
+ .icheckbox_line.checked .icheck_line-icon,
+ .iradio_line.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line.disabled,
+ .iradio_line.disabled {
+ background: #ccc;
+ cursor: default;
+ }
+ .icheckbox_line.disabled .icheck_line-icon,
+ .iradio_line.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line.checked.disabled,
+ .iradio_line.checked.disabled {
+ background: #ccc;
+ }
+ .icheckbox_line.checked.disabled .icheck_line-icon,
+ .iradio_line.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line .icheck_line-icon,
+ .iradio_line .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* red */
+.icheckbox_line-red,
+.iradio_line-red {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #e56c69;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-red .icheck_line-icon,
+ .iradio_line-red .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-red.hover,
+ .icheckbox_line-red.checked.hover,
+ .iradio_line-red.hover {
+ background: #E98582;
+ }
+ .icheckbox_line-red.checked,
+ .iradio_line-red.checked {
+ background: #e56c69;
+ }
+ .icheckbox_line-red.checked .icheck_line-icon,
+ .iradio_line-red.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-red.disabled,
+ .iradio_line-red.disabled {
+ background: #F7D3D2;
+ cursor: default;
+ }
+ .icheckbox_line-red.disabled .icheck_line-icon,
+ .iradio_line-red.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-red.checked.disabled,
+ .iradio_line-red.checked.disabled {
+ background: #F7D3D2;
+ }
+ .icheckbox_line-red.checked.disabled .icheck_line-icon,
+ .iradio_line-red.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-red .icheck_line-icon,
+ .iradio_line-red .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* green */
+.icheckbox_line-green,
+.iradio_line-green {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #1b7e5a;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-green .icheck_line-icon,
+ .iradio_line-green .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-green.hover,
+ .icheckbox_line-green.checked.hover,
+ .iradio_line-green.hover {
+ background: #24AA7A;
+ }
+ .icheckbox_line-green.checked,
+ .iradio_line-green.checked {
+ background: #1b7e5a;
+ }
+ .icheckbox_line-green.checked .icheck_line-icon,
+ .iradio_line-green.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-green.disabled,
+ .iradio_line-green.disabled {
+ background: #89E6C4;
+ cursor: default;
+ }
+ .icheckbox_line-green.disabled .icheck_line-icon,
+ .iradio_line-green.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-green.checked.disabled,
+ .iradio_line-green.checked.disabled {
+ background: #89E6C4;
+ }
+ .icheckbox_line-green.checked.disabled .icheck_line-icon,
+ .iradio_line-green.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-green .icheck_line-icon,
+ .iradio_line-green .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* blue */
+.icheckbox_line-blue,
+.iradio_line-blue {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #2489c5;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-blue .icheck_line-icon,
+ .iradio_line-blue .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-blue.hover,
+ .icheckbox_line-blue.checked.hover,
+ .iradio_line-blue.hover {
+ background: #3DA0DB;
+ }
+ .icheckbox_line-blue.checked,
+ .iradio_line-blue.checked {
+ background: #2489c5;
+ }
+ .icheckbox_line-blue.checked .icheck_line-icon,
+ .iradio_line-blue.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-blue.disabled,
+ .iradio_line-blue.disabled {
+ background: #ADD7F0;
+ cursor: default;
+ }
+ .icheckbox_line-blue.disabled .icheck_line-icon,
+ .iradio_line-blue.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-blue.checked.disabled,
+ .iradio_line-blue.checked.disabled {
+ background: #ADD7F0;
+ }
+ .icheckbox_line-blue.checked.disabled .icheck_line-icon,
+ .iradio_line-blue.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-blue .icheck_line-icon,
+ .iradio_line-blue .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* aero */
+.icheckbox_line-aero,
+.iradio_line-aero {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #9cc2cb;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-aero .icheck_line-icon,
+ .iradio_line-aero .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-aero.hover,
+ .icheckbox_line-aero.checked.hover,
+ .iradio_line-aero.hover {
+ background: #B5D1D8;
+ }
+ .icheckbox_line-aero.checked,
+ .iradio_line-aero.checked {
+ background: #9cc2cb;
+ }
+ .icheckbox_line-aero.checked .icheck_line-icon,
+ .iradio_line-aero.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-aero.disabled,
+ .iradio_line-aero.disabled {
+ background: #D2E4E8;
+ cursor: default;
+ }
+ .icheckbox_line-aero.disabled .icheck_line-icon,
+ .iradio_line-aero.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-aero.checked.disabled,
+ .iradio_line-aero.checked.disabled {
+ background: #D2E4E8;
+ }
+ .icheckbox_line-aero.checked.disabled .icheck_line-icon,
+ .iradio_line-aero.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-aero .icheck_line-icon,
+ .iradio_line-aero .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* grey */
+.icheckbox_line-grey,
+.iradio_line-grey {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #73716e;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-grey .icheck_line-icon,
+ .iradio_line-grey .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-grey.hover,
+ .icheckbox_line-grey.checked.hover,
+ .iradio_line-grey.hover {
+ background: #8B8986;
+ }
+ .icheckbox_line-grey.checked,
+ .iradio_line-grey.checked {
+ background: #73716e;
+ }
+ .icheckbox_line-grey.checked .icheck_line-icon,
+ .iradio_line-grey.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-grey.disabled,
+ .iradio_line-grey.disabled {
+ background: #D5D4D3;
+ cursor: default;
+ }
+ .icheckbox_line-grey.disabled .icheck_line-icon,
+ .iradio_line-grey.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-grey.checked.disabled,
+ .iradio_line-grey.checked.disabled {
+ background: #D5D4D3;
+ }
+ .icheckbox_line-grey.checked.disabled .icheck_line-icon,
+ .iradio_line-grey.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-grey .icheck_line-icon,
+ .iradio_line-grey .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* orange */
+.icheckbox_line-orange,
+.iradio_line-orange {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #f70;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-orange .icheck_line-icon,
+ .iradio_line-orange .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-orange.hover,
+ .icheckbox_line-orange.checked.hover,
+ .iradio_line-orange.hover {
+ background: #FF9233;
+ }
+ .icheckbox_line-orange.checked,
+ .iradio_line-orange.checked {
+ background: #f70;
+ }
+ .icheckbox_line-orange.checked .icheck_line-icon,
+ .iradio_line-orange.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-orange.disabled,
+ .iradio_line-orange.disabled {
+ background: #FFD6B3;
+ cursor: default;
+ }
+ .icheckbox_line-orange.disabled .icheck_line-icon,
+ .iradio_line-orange.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-orange.checked.disabled,
+ .iradio_line-orange.checked.disabled {
+ background: #FFD6B3;
+ }
+ .icheckbox_line-orange.checked.disabled .icheck_line-icon,
+ .iradio_line-orange.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-orange .icheck_line-icon,
+ .iradio_line-orange .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* yellow */
+.icheckbox_line-yellow,
+.iradio_line-yellow {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #FFC414;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-yellow .icheck_line-icon,
+ .iradio_line-yellow .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-yellow.hover,
+ .icheckbox_line-yellow.checked.hover,
+ .iradio_line-yellow.hover {
+ background: #FFD34F;
+ }
+ .icheckbox_line-yellow.checked,
+ .iradio_line-yellow.checked {
+ background: #FFC414;
+ }
+ .icheckbox_line-yellow.checked .icheck_line-icon,
+ .iradio_line-yellow.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-yellow.disabled,
+ .iradio_line-yellow.disabled {
+ background: #FFE495;
+ cursor: default;
+ }
+ .icheckbox_line-yellow.disabled .icheck_line-icon,
+ .iradio_line-yellow.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-yellow.checked.disabled,
+ .iradio_line-yellow.checked.disabled {
+ background: #FFE495;
+ }
+ .icheckbox_line-yellow.checked.disabled .icheck_line-icon,
+ .iradio_line-yellow.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-yellow .icheck_line-icon,
+ .iradio_line-yellow .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* pink */
+.icheckbox_line-pink,
+.iradio_line-pink {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #a77a94;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-pink .icheck_line-icon,
+ .iradio_line-pink .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-pink.hover,
+ .icheckbox_line-pink.checked.hover,
+ .iradio_line-pink.hover {
+ background: #B995A9;
+ }
+ .icheckbox_line-pink.checked,
+ .iradio_line-pink.checked {
+ background: #a77a94;
+ }
+ .icheckbox_line-pink.checked .icheck_line-icon,
+ .iradio_line-pink.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-pink.disabled,
+ .iradio_line-pink.disabled {
+ background: #E0D0DA;
+ cursor: default;
+ }
+ .icheckbox_line-pink.disabled .icheck_line-icon,
+ .iradio_line-pink.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-pink.checked.disabled,
+ .iradio_line-pink.checked.disabled {
+ background: #E0D0DA;
+ }
+ .icheckbox_line-pink.checked.disabled .icheck_line-icon,
+ .iradio_line-pink.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_line-pink .icheck_line-icon,
+ .iradio_line-pink .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
+
+/* purple */
+.icheckbox_line-purple,
+.iradio_line-purple {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #6a5a8c;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-purple .icheck_line-icon,
+ .iradio_line-purple .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-purple.hover,
+ .icheckbox_line-purple.checked.hover,
+ .iradio_line-purple.hover {
+ background: #8677A7;
+ }
+ .icheckbox_line-purple.checked,
+ .iradio_line-purple.checked {
+ background: #6a5a8c;
+ }
+ .icheckbox_line-purple.checked .icheck_line-icon,
+ .iradio_line-purple.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-purple.disabled,
+ .iradio_line-purple.disabled {
+ background: #D2CCDE;
+ cursor: default;
+ }
+ .icheckbox_line-purple.disabled .icheck_line-icon,
+ .iradio_line-purple.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-purple.checked.disabled,
+ .iradio_line-purple.checked.disabled {
+ background: #D2CCDE;
+ }
+ .icheckbox_line-purple.checked.disabled .icheck_line-icon,
+ .iradio_line-purple.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-purple .icheck_line-icon,
+ .iradio_line-purple .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+}
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/line/aero.css b/common/src/main/webapp/thirdparty/icheck/skins/line/aero.css
new file mode 100755
index 00000000..e6dd82a6
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/line/aero.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, aero
+----------------------------------- */
+.icheckbox_line-aero,
+.iradio_line-aero {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #9cc2cb;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-aero .icheck_line-icon,
+ .iradio_line-aero .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-aero.hover,
+ .icheckbox_line-aero.checked.hover,
+ .iradio_line-aero.hover {
+ background: #B5D1D8;
+ }
+ .icheckbox_line-aero.checked,
+ .iradio_line-aero.checked {
+ background: #9cc2cb;
+ }
+ .icheckbox_line-aero.checked .icheck_line-icon,
+ .iradio_line-aero.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-aero.disabled,
+ .iradio_line-aero.disabled {
+ background: #D2E4E8;
+ cursor: default;
+ }
+ .icheckbox_line-aero.disabled .icheck_line-icon,
+ .iradio_line-aero.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-aero.checked.disabled,
+ .iradio_line-aero.checked.disabled {
+ background: #D2E4E8;
+ }
+ .icheckbox_line-aero.checked.disabled .icheck_line-icon,
+ .iradio_line-aero.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-aero .icheck_line-icon,
+ .iradio_line-aero .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/line/blue.css b/common/src/main/webapp/thirdparty/icheck/skins/line/blue.css
new file mode 100755
index 00000000..8f105d90
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/line/blue.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, blue
+----------------------------------- */
+.icheckbox_line-blue,
+.iradio_line-blue {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #2489c5;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-blue .icheck_line-icon,
+ .iradio_line-blue .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-blue.hover,
+ .icheckbox_line-blue.checked.hover,
+ .iradio_line-blue.hover {
+ background: #3DA0DB;
+ }
+ .icheckbox_line-blue.checked,
+ .iradio_line-blue.checked {
+ background: #2489c5;
+ }
+ .icheckbox_line-blue.checked .icheck_line-icon,
+ .iradio_line-blue.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-blue.disabled,
+ .iradio_line-blue.disabled {
+ background: #ADD7F0;
+ cursor: default;
+ }
+ .icheckbox_line-blue.disabled .icheck_line-icon,
+ .iradio_line-blue.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-blue.checked.disabled,
+ .iradio_line-blue.checked.disabled {
+ background: #ADD7F0;
+ }
+ .icheckbox_line-blue.checked.disabled .icheck_line-icon,
+ .iradio_line-blue.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-blue .icheck_line-icon,
+ .iradio_line-blue .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/line/green.css b/common/src/main/webapp/thirdparty/icheck/skins/line/green.css
new file mode 100755
index 00000000..9535c7c3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/line/green.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, green
+----------------------------------- */
+.icheckbox_line-green,
+.iradio_line-green {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #1b7e5a;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-green .icheck_line-icon,
+ .iradio_line-green .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-green.hover,
+ .icheckbox_line-green.checked.hover,
+ .iradio_line-green.hover {
+ background: #24AA7A;
+ }
+ .icheckbox_line-green.checked,
+ .iradio_line-green.checked {
+ background: #1b7e5a;
+ }
+ .icheckbox_line-green.checked .icheck_line-icon,
+ .iradio_line-green.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-green.disabled,
+ .iradio_line-green.disabled {
+ background: #89E6C4;
+ cursor: default;
+ }
+ .icheckbox_line-green.disabled .icheck_line-icon,
+ .iradio_line-green.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-green.checked.disabled,
+ .iradio_line-green.checked.disabled {
+ background: #89E6C4;
+ }
+ .icheckbox_line-green.checked.disabled .icheck_line-icon,
+ .iradio_line-green.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-green .icheck_line-icon,
+ .iradio_line-green .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/line/grey.css b/common/src/main/webapp/thirdparty/icheck/skins/line/grey.css
new file mode 100755
index 00000000..9e340535
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/line/grey.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, grey
+----------------------------------- */
+.icheckbox_line-grey,
+.iradio_line-grey {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #73716e;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-grey .icheck_line-icon,
+ .iradio_line-grey .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-grey.hover,
+ .icheckbox_line-grey.checked.hover,
+ .iradio_line-grey.hover {
+ background: #8B8986;
+ }
+ .icheckbox_line-grey.checked,
+ .iradio_line-grey.checked {
+ background: #73716e;
+ }
+ .icheckbox_line-grey.checked .icheck_line-icon,
+ .iradio_line-grey.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-grey.disabled,
+ .iradio_line-grey.disabled {
+ background: #D5D4D3;
+ cursor: default;
+ }
+ .icheckbox_line-grey.disabled .icheck_line-icon,
+ .iradio_line-grey.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-grey.checked.disabled,
+ .iradio_line-grey.checked.disabled {
+ background: #D5D4D3;
+ }
+ .icheckbox_line-grey.checked.disabled .icheck_line-icon,
+ .iradio_line-grey.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-grey .icheck_line-icon,
+ .iradio_line-grey .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/line/line.css b/common/src/main/webapp/thirdparty/icheck/skins/line/line.css
new file mode 100755
index 00000000..2173a25c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/line/line.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, black
+----------------------------------- */
+.icheckbox_line,
+.iradio_line {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #000;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line .icheck_line-icon,
+ .iradio_line .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line.hover,
+ .icheckbox_line.checked.hover,
+ .iradio_line.hover {
+ background: #444;
+ }
+ .icheckbox_line.checked,
+ .iradio_line.checked {
+ background: #000;
+ }
+ .icheckbox_line.checked .icheck_line-icon,
+ .iradio_line.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line.disabled,
+ .iradio_line.disabled {
+ background: #ccc;
+ cursor: default;
+ }
+ .icheckbox_line.disabled .icheck_line-icon,
+ .iradio_line.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line.checked.disabled,
+ .iradio_line.checked.disabled {
+ background: #ccc;
+ }
+ .icheckbox_line.checked.disabled .icheck_line-icon,
+ .iradio_line.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line .icheck_line-icon,
+ .iradio_line .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/line/line.png b/common/src/main/webapp/thirdparty/icheck/skins/line/line.png
new file mode 100755
index 00000000..d21d7a7b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/line/line.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/line/line@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/line/line@2x.png
new file mode 100755
index 00000000..62900a2d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/line/line@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/line/orange.css b/common/src/main/webapp/thirdparty/icheck/skins/line/orange.css
new file mode 100755
index 00000000..e408a6af
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/line/orange.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, orange
+----------------------------------- */
+.icheckbox_line-orange,
+.iradio_line-orange {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #f70;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-orange .icheck_line-icon,
+ .iradio_line-orange .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-orange.hover,
+ .icheckbox_line-orange.checked.hover,
+ .iradio_line-orange.hover {
+ background: #FF9233;
+ }
+ .icheckbox_line-orange.checked,
+ .iradio_line-orange.checked {
+ background: #f70;
+ }
+ .icheckbox_line-orange.checked .icheck_line-icon,
+ .iradio_line-orange.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-orange.disabled,
+ .iradio_line-orange.disabled {
+ background: #FFD6B3;
+ cursor: default;
+ }
+ .icheckbox_line-orange.disabled .icheck_line-icon,
+ .iradio_line-orange.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-orange.checked.disabled,
+ .iradio_line-orange.checked.disabled {
+ background: #FFD6B3;
+ }
+ .icheckbox_line-orange.checked.disabled .icheck_line-icon,
+ .iradio_line-orange.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-orange .icheck_line-icon,
+ .iradio_line-orange .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/line/pink.css b/common/src/main/webapp/thirdparty/icheck/skins/line/pink.css
new file mode 100755
index 00000000..d19459ed
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/line/pink.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, pink
+----------------------------------- */
+.icheckbox_line-pink,
+.iradio_line-pink {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #a77a94;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-pink .icheck_line-icon,
+ .iradio_line-pink .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-pink.hover,
+ .icheckbox_line-pink.checked.hover,
+ .iradio_line-pink.hover {
+ background: #B995A9;
+ }
+ .icheckbox_line-pink.checked,
+ .iradio_line-pink.checked {
+ background: #a77a94;
+ }
+ .icheckbox_line-pink.checked .icheck_line-icon,
+ .iradio_line-pink.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-pink.disabled,
+ .iradio_line-pink.disabled {
+ background: #E0D0DA;
+ cursor: default;
+ }
+ .icheckbox_line-pink.disabled .icheck_line-icon,
+ .iradio_line-pink.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-pink.checked.disabled,
+ .iradio_line-pink.checked.disabled {
+ background: #E0D0DA;
+ }
+ .icheckbox_line-pink.checked.disabled .icheck_line-icon,
+ .iradio_line-pink.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-pink .icheck_line-icon,
+ .iradio_line-pink .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/line/purple.css b/common/src/main/webapp/thirdparty/icheck/skins/line/purple.css
new file mode 100755
index 00000000..ecca700b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/line/purple.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, purple
+----------------------------------- */
+.icheckbox_line-purple,
+.iradio_line-purple {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #6a5a8c;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-purple .icheck_line-icon,
+ .iradio_line-purple .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-purple.hover,
+ .icheckbox_line-purple.checked.hover,
+ .iradio_line-purple.hover {
+ background: #8677A7;
+ }
+ .icheckbox_line-purple.checked,
+ .iradio_line-purple.checked {
+ background: #6a5a8c;
+ }
+ .icheckbox_line-purple.checked .icheck_line-icon,
+ .iradio_line-purple.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-purple.disabled,
+ .iradio_line-purple.disabled {
+ background: #D2CCDE;
+ cursor: default;
+ }
+ .icheckbox_line-purple.disabled .icheck_line-icon,
+ .iradio_line-purple.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-purple.checked.disabled,
+ .iradio_line-purple.checked.disabled {
+ background: #D2CCDE;
+ }
+ .icheckbox_line-purple.checked.disabled .icheck_line-icon,
+ .iradio_line-purple.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-purple .icheck_line-icon,
+ .iradio_line-purple .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/line/red.css b/common/src/main/webapp/thirdparty/icheck/skins/line/red.css
new file mode 100755
index 00000000..3a8aee21
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/line/red.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, red
+----------------------------------- */
+.icheckbox_line-red,
+.iradio_line-red {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #e56c69;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-red .icheck_line-icon,
+ .iradio_line-red .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-red.hover,
+ .icheckbox_line-red.checked.hover,
+ .iradio_line-red.hover {
+ background: #E98582;
+ }
+ .icheckbox_line-red.checked,
+ .iradio_line-red.checked {
+ background: #e56c69;
+ }
+ .icheckbox_line-red.checked .icheck_line-icon,
+ .iradio_line-red.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-red.disabled,
+ .iradio_line-red.disabled {
+ background: #F7D3D2;
+ cursor: default;
+ }
+ .icheckbox_line-red.disabled .icheck_line-icon,
+ .iradio_line-red.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-red.checked.disabled,
+ .iradio_line-red.checked.disabled {
+ background: #F7D3D2;
+ }
+ .icheckbox_line-red.checked.disabled .icheck_line-icon,
+ .iradio_line-red.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-red .icheck_line-icon,
+ .iradio_line-red .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/line/yellow.css b/common/src/main/webapp/thirdparty/icheck/skins/line/yellow.css
new file mode 100755
index 00000000..c6eaccfa
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/line/yellow.css
@@ -0,0 +1,71 @@
+/* iCheck plugin Line skin, yellow
+----------------------------------- */
+.icheckbox_line-yellow,
+.iradio_line-yellow {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 5px 15px 5px 38px;
+ font-size: 13px;
+ line-height: 17px;
+ color: #fff;
+ background: #FFC414;
+ border: none;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ cursor: pointer;
+}
+ .icheckbox_line-yellow .icheck_line-icon,
+ .iradio_line-yellow .icheck_line-icon {
+ position: absolute;
+ top: 50%;
+ left: 13px;
+ width: 13px;
+ height: 11px;
+ margin: -5px 0 0 0;
+ padding: 0;
+ overflow: hidden;
+ background: url(line.png) no-repeat;
+ border: none;
+ }
+ .icheckbox_line-yellow.hover,
+ .icheckbox_line-yellow.checked.hover,
+ .iradio_line-yellow.hover {
+ background: #FFD34F;
+ }
+ .icheckbox_line-yellow.checked,
+ .iradio_line-yellow.checked {
+ background: #FFC414;
+ }
+ .icheckbox_line-yellow.checked .icheck_line-icon,
+ .iradio_line-yellow.checked .icheck_line-icon {
+ background-position: -15px 0;
+ }
+ .icheckbox_line-yellow.disabled,
+ .iradio_line-yellow.disabled {
+ background: #FFE495;
+ cursor: default;
+ }
+ .icheckbox_line-yellow.disabled .icheck_line-icon,
+ .iradio_line-yellow.disabled .icheck_line-icon {
+ background-position: -30px 0;
+ }
+ .icheckbox_line-yellow.checked.disabled,
+ .iradio_line-yellow.checked.disabled {
+ background: #FFE495;
+ }
+ .icheckbox_line-yellow.checked.disabled .icheck_line-icon,
+ .iradio_line-yellow.checked.disabled .icheck_line-icon {
+ background-position: -45px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_line-yellow .icheck_line-icon,
+ .iradio_line-yellow .icheck_line-icon {
+ background-image: url(line@2x.png);
+ -webkit-background-size: 60px 13px;
+ background-size: 60px 13px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/_all.css b/common/src/main/webapp/thirdparty/icheck/skins/minimal/_all.css
new file mode 100755
index 00000000..61043e39
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/_all.css
@@ -0,0 +1,590 @@
+/* iCheck plugin Minimal skin
+----------------------------------- */
+.icheckbox_minimal,
+.iradio_minimal {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(minimal.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal {
+ background-position: 0 0;
+}
+ .icheckbox_minimal.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal {
+ background-position: -100px 0;
+}
+ .iradio_minimal.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal,
+ .iradio_minimal {
+ background-image: url(minimal@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* red */
+.icheckbox_minimal-red,
+.iradio_minimal-red {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(red.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-red {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-red.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-red.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-red.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-red.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-red {
+ background-position: -100px 0;
+}
+ .iradio_minimal-red.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-red.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-red.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-red.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-red,
+ .iradio_minimal-red {
+ background-image: url(red@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* green */
+.icheckbox_minimal-green,
+.iradio_minimal-green {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(green.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-green {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-green.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-green.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-green.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-green.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-green {
+ background-position: -100px 0;
+}
+ .iradio_minimal-green.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-green.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-green.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-green.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-green,
+ .iradio_minimal-green {
+ background-image: url(green@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* blue */
+.icheckbox_minimal-blue,
+.iradio_minimal-blue {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(blue.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-blue {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-blue.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-blue.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-blue.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-blue.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-blue {
+ background-position: -100px 0;
+}
+ .iradio_minimal-blue.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-blue.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-blue.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-blue.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-blue,
+ .iradio_minimal-blue {
+ background-image: url(blue@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* aero */
+.icheckbox_minimal-aero,
+.iradio_minimal-aero {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(aero.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-aero {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-aero.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-aero.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-aero.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-aero.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-aero {
+ background-position: -100px 0;
+}
+ .iradio_minimal-aero.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-aero.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-aero.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-aero.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-aero,
+ .iradio_minimal-aero {
+ background-image: url(aero@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* grey */
+.icheckbox_minimal-grey,
+.iradio_minimal-grey {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(grey.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-grey {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-grey.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-grey.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-grey.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-grey.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-grey {
+ background-position: -100px 0;
+}
+ .iradio_minimal-grey.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-grey.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-grey.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-grey.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-grey,
+ .iradio_minimal-grey {
+ background-image: url(grey@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* orange */
+.icheckbox_minimal-orange,
+.iradio_minimal-orange {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(orange.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-orange {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-orange.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-orange.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-orange.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-orange.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-orange {
+ background-position: -100px 0;
+}
+ .iradio_minimal-orange.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-orange.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-orange.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-orange.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-orange,
+ .iradio_minimal-orange {
+ background-image: url(orange@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* yellow */
+.icheckbox_minimal-yellow,
+.iradio_minimal-yellow {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(yellow.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-yellow {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-yellow.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-yellow.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-yellow.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-yellow.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-yellow {
+ background-position: -100px 0;
+}
+ .iradio_minimal-yellow.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-yellow.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-yellow.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-yellow.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-yellow,
+ .iradio_minimal-yellow {
+ background-image: url(yellow@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* pink */
+.icheckbox_minimal-pink,
+.iradio_minimal-pink {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(pink.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-pink {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-pink.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-pink.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-pink.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-pink.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-pink {
+ background-position: -100px 0;
+}
+ .iradio_minimal-pink.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-pink.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-pink.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-pink.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_minimal-pink,
+ .iradio_minimal-pink {
+ background-image: url(pink@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+}
+
+/* purple */
+.icheckbox_minimal-purple,
+.iradio_minimal-purple {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(purple.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-purple {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-purple.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-purple.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-purple.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-purple.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-purple {
+ background-position: -100px 0;
+}
+ .iradio_minimal-purple.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-purple.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-purple.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-purple.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-purple,
+ .iradio_minimal-purple {
+ background-image: url(purple@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/aero.css b/common/src/main/webapp/thirdparty/icheck/skins/minimal/aero.css
new file mode 100755
index 00000000..c0ddf79d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/aero.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, aero
+----------------------------------- */
+.icheckbox_minimal-aero,
+.iradio_minimal-aero {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(aero.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-aero {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-aero.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-aero.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-aero.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-aero.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-aero {
+ background-position: -100px 0;
+}
+ .iradio_minimal-aero.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-aero.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-aero.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-aero.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-aero,
+ .iradio_minimal-aero {
+ background-image: url(aero@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/aero.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/aero.png
new file mode 100755
index 00000000..dccf7740
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/aero.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/aero@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/aero@2x.png
new file mode 100755
index 00000000..5537ee36
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/aero@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/blue.css b/common/src/main/webapp/thirdparty/icheck/skins/minimal/blue.css
new file mode 100755
index 00000000..7205ac9a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/blue.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, blue
+----------------------------------- */
+.icheckbox_minimal-blue,
+.iradio_minimal-blue {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(blue.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-blue {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-blue.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-blue.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-blue.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-blue.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-blue {
+ background-position: -100px 0;
+}
+ .iradio_minimal-blue.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-blue.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-blue.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-blue.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-blue,
+ .iradio_minimal-blue {
+ background-image: url(blue@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/blue.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/blue.png
new file mode 100755
index 00000000..af04cee5
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/blue.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/blue@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/blue@2x.png
new file mode 100755
index 00000000..f19210a9
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/blue@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/green.css b/common/src/main/webapp/thirdparty/icheck/skins/minimal/green.css
new file mode 100755
index 00000000..ad005c11
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/green.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, green
+----------------------------------- */
+.icheckbox_minimal-green,
+.iradio_minimal-green {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(green.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-green {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-green.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-green.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-green.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-green.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-green {
+ background-position: -100px 0;
+}
+ .iradio_minimal-green.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-green.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-green.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-green.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-green,
+ .iradio_minimal-green {
+ background-image: url(green@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/green.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/green.png
new file mode 100755
index 00000000..9171ebc7
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/green.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/green@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/green@2x.png
new file mode 100755
index 00000000..7f18f96a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/green@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/grey.css b/common/src/main/webapp/thirdparty/icheck/skins/minimal/grey.css
new file mode 100755
index 00000000..157bbd37
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/grey.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, grey
+----------------------------------- */
+.icheckbox_minimal-grey,
+.iradio_minimal-grey {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(grey.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-grey {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-grey.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-grey.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-grey.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-grey.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-grey {
+ background-position: -100px 0;
+}
+ .iradio_minimal-grey.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-grey.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-grey.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-grey.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-grey,
+ .iradio_minimal-grey {
+ background-image: url(grey@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/grey.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/grey.png
new file mode 100755
index 00000000..22dcdbcf
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/grey.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/grey@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/grey@2x.png
new file mode 100755
index 00000000..85e82ddd
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/grey@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/minimal.css b/common/src/main/webapp/thirdparty/icheck/skins/minimal/minimal.css
new file mode 100755
index 00000000..f344ea63
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/minimal.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, black
+----------------------------------- */
+.icheckbox_minimal,
+.iradio_minimal {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(minimal.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal {
+ background-position: 0 0;
+}
+ .icheckbox_minimal.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal {
+ background-position: -100px 0;
+}
+ .iradio_minimal.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal,
+ .iradio_minimal {
+ background-image: url(minimal@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/minimal.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/minimal.png
new file mode 100755
index 00000000..943be16f
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/minimal.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/minimal@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/minimal@2x.png
new file mode 100755
index 00000000..d62291da
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/minimal@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/orange.css b/common/src/main/webapp/thirdparty/icheck/skins/minimal/orange.css
new file mode 100755
index 00000000..04779ebe
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/orange.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, orange
+----------------------------------- */
+.icheckbox_minimal-orange,
+.iradio_minimal-orange {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(orange.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-orange {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-orange.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-orange.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-orange.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-orange.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-orange {
+ background-position: -100px 0;
+}
+ .iradio_minimal-orange.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-orange.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-orange.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-orange.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-orange,
+ .iradio_minimal-orange {
+ background-image: url(orange@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/orange.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/orange.png
new file mode 100755
index 00000000..f2a31497
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/orange.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/orange@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/orange@2x.png
new file mode 100755
index 00000000..68c83591
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/orange@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/pink.css b/common/src/main/webapp/thirdparty/icheck/skins/minimal/pink.css
new file mode 100755
index 00000000..1e2f0e42
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/pink.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, pink
+----------------------------------- */
+.icheckbox_minimal-pink,
+.iradio_minimal-pink {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(pink.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-pink {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-pink.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-pink.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-pink.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-pink.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-pink {
+ background-position: -100px 0;
+}
+ .iradio_minimal-pink.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-pink.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-pink.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-pink.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-pink,
+ .iradio_minimal-pink {
+ background-image: url(pink@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/pink.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/pink.png
new file mode 100755
index 00000000..660553c0
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/pink.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/pink@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/pink@2x.png
new file mode 100755
index 00000000..7d7b3851
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/pink@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/purple.css b/common/src/main/webapp/thirdparty/icheck/skins/minimal/purple.css
new file mode 100755
index 00000000..f3f8cf4d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/purple.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, purple
+----------------------------------- */
+.icheckbox_minimal-purple,
+.iradio_minimal-purple {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(purple.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-purple {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-purple.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-purple.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-purple.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-purple.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-purple {
+ background-position: -100px 0;
+}
+ .iradio_minimal-purple.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-purple.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-purple.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-purple.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-purple,
+ .iradio_minimal-purple {
+ background-image: url(purple@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/purple.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/purple.png
new file mode 100755
index 00000000..48dec794
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/purple.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/purple@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/purple@2x.png
new file mode 100755
index 00000000..3bb70417
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/purple@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/red.css b/common/src/main/webapp/thirdparty/icheck/skins/minimal/red.css
new file mode 100755
index 00000000..0530c919
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/red.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, red
+----------------------------------- */
+.icheckbox_minimal-red,
+.iradio_minimal-red {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(red.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-red {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-red.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-red.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-red.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-red.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-red {
+ background-position: -100px 0;
+}
+ .iradio_minimal-red.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-red.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-red.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-red.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-red,
+ .iradio_minimal-red {
+ background-image: url(red@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/red.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/red.png
new file mode 100755
index 00000000..4443f809
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/red.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/red@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/red@2x.png
new file mode 100755
index 00000000..2eb55a65
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/red@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/yellow.css b/common/src/main/webapp/thirdparty/icheck/skins/minimal/yellow.css
new file mode 100755
index 00000000..fbd567f6
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/yellow.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Minimal skin, yellow
+----------------------------------- */
+.icheckbox_minimal-yellow,
+.iradio_minimal-yellow {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 18px;
+ height: 18px;
+ background: url(yellow.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_minimal-yellow {
+ background-position: 0 0;
+}
+ .icheckbox_minimal-yellow.hover {
+ background-position: -20px 0;
+ }
+ .icheckbox_minimal-yellow.checked {
+ background-position: -40px 0;
+ }
+ .icheckbox_minimal-yellow.disabled {
+ background-position: -60px 0;
+ cursor: default;
+ }
+ .icheckbox_minimal-yellow.checked.disabled {
+ background-position: -80px 0;
+ }
+
+.iradio_minimal-yellow {
+ background-position: -100px 0;
+}
+ .iradio_minimal-yellow.hover {
+ background-position: -120px 0;
+ }
+ .iradio_minimal-yellow.checked {
+ background-position: -140px 0;
+ }
+ .iradio_minimal-yellow.disabled {
+ background-position: -160px 0;
+ cursor: default;
+ }
+ .iradio_minimal-yellow.checked.disabled {
+ background-position: -180px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_minimal-yellow,
+ .iradio_minimal-yellow {
+ background-image: url(yellow@2x.png);
+ -webkit-background-size: 200px 20px;
+ background-size: 200px 20px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/yellow.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/yellow.png
new file mode 100755
index 00000000..0999b7ec
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/yellow.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/minimal/yellow@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/minimal/yellow@2x.png
new file mode 100755
index 00000000..c16f2b7d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/minimal/yellow@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/polaris/polaris.css b/common/src/main/webapp/thirdparty/icheck/skins/polaris/polaris.css
new file mode 100755
index 00000000..8427bf20
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/polaris/polaris.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Polaris skin
+----------------------------------- */
+.icheckbox_polaris,
+.iradio_polaris {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 29px;
+ height: 29px;
+ background: url(polaris.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_polaris {
+ background-position: 0 0;
+}
+ .icheckbox_polaris.hover {
+ background-position: -31px 0;
+ }
+ .icheckbox_polaris.checked {
+ background-position: -62px 0;
+ }
+ .icheckbox_polaris.disabled {
+ background-position: -93px 0;
+ cursor: default;
+ }
+ .icheckbox_polaris.checked.disabled {
+ background-position: -124px 0;
+ }
+
+.iradio_polaris {
+ background-position: -155px 0;
+}
+ .iradio_polaris.hover {
+ background-position: -186px 0;
+ }
+ .iradio_polaris.checked {
+ background-position: -217px 0;
+ }
+ .iradio_polaris.disabled {
+ background-position: -248px 0;
+ cursor: default;
+ }
+ .iradio_polaris.checked.disabled {
+ background-position: -279px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_polaris,
+ .iradio_polaris {
+ background-image: url(polaris@2x.png);
+ -webkit-background-size: 310px 31px;
+ background-size: 310px 31px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/polaris/polaris.png b/common/src/main/webapp/thirdparty/icheck/skins/polaris/polaris.png
new file mode 100755
index 00000000..60c14e6a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/polaris/polaris.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/polaris/polaris@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/polaris/polaris@2x.png
new file mode 100755
index 00000000..ed943daf
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/polaris/polaris@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/Thumbs.db b/common/src/main/webapp/thirdparty/icheck/skins/square/Thumbs.db
new file mode 100755
index 00000000..95f09067
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/Thumbs.db
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/_all.css b/common/src/main/webapp/thirdparty/icheck/skins/square/_all.css
new file mode 100755
index 00000000..6b150ba9
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/_all.css
@@ -0,0 +1,590 @@
+/* iCheck plugin Square skin
+----------------------------------- */
+.icheckbox_square,
+.iradio_square {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(square.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square {
+ background-position: 0 0;
+}
+ .icheckbox_square.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square {
+ background-position: -120px 0;
+}
+ .iradio_square.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square,
+ .iradio_square {
+ background-image: url(square@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* red */
+.icheckbox_square-red,
+.iradio_square-red {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(red.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-red {
+ background-position: 0 0;
+}
+ .icheckbox_square-red.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-red.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-red.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-red.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-red {
+ background-position: -120px 0;
+}
+ .iradio_square-red.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-red.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-red.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-red.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-red,
+ .iradio_square-red {
+ background-image: url(red@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* green */
+.icheckbox_square-green,
+.iradio_square-green {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(green.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-green {
+ background-position: 0 0;
+}
+ .icheckbox_square-green.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-green.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-green.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-green.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-green {
+ background-position: -120px 0;
+}
+ .iradio_square-green.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-green.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-green.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-green.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-green,
+ .iradio_square-green {
+ background-image: url(green@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* blue */
+.icheckbox_square-blue,
+.iradio_square-blue {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(blue.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-blue {
+ background-position: 0 0;
+}
+ .icheckbox_square-blue.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-blue.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-blue.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-blue.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-blue {
+ background-position: -120px 0;
+}
+ .iradio_square-blue.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-blue.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-blue.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-blue.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-blue,
+ .iradio_square-blue {
+ background-image: url(blue@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* aero */
+.icheckbox_square-aero,
+.iradio_square-aero {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin-right: 10px;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(aero.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-aero {
+ background-position: 0 0;
+}
+ .icheckbox_square-aero.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-aero.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-aero.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-aero.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-aero {
+ background-position: -120px 0;
+}
+ .iradio_square-aero.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-aero.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-aero.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-aero.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-aero,
+ .iradio_square-aero {
+ background-image: url(aero@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* grey */
+.icheckbox_square-grey,
+.iradio_square-grey {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(grey.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-grey {
+ background-position: 0 0;
+}
+ .icheckbox_square-grey.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-grey.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-grey.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-grey.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-grey {
+ background-position: -120px 0;
+}
+ .iradio_square-grey.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-grey.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-grey.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-grey.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-grey,
+ .iradio_square-grey {
+ background-image: url(grey@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* orange */
+.icheckbox_square-orange,
+.iradio_square-orange {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(orange.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-orange {
+ background-position: 0 0;
+}
+ .icheckbox_square-orange.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-orange.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-orange.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-orange.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-orange {
+ background-position: -120px 0;
+}
+ .iradio_square-orange.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-orange.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-orange.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-orange.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-orange,
+ .iradio_square-orange {
+ background-image: url(orange@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* yellow */
+.icheckbox_square-yellow,
+.iradio_square-yellow {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(yellow.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-yellow {
+ background-position: 0 0;
+}
+ .icheckbox_square-yellow.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-yellow.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-yellow.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-yellow.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-yellow {
+ background-position: -120px 0;
+}
+ .iradio_square-yellow.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-yellow.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-yellow.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-yellow.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-yellow,
+ .iradio_square-yellow {
+ background-image: url(yellow@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* pink */
+.icheckbox_square-pink,
+.iradio_square-pink {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(pink.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-pink {
+ background-position: 0 0;
+}
+ .icheckbox_square-pink.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-pink.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-pink.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-pink.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-pink {
+ background-position: -120px 0;
+}
+ .iradio_square-pink.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-pink.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-pink.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-pink.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
+ .icheckbox_square-pink,
+ .iradio_square-pink {
+ background-image: url(pink@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+}
+
+/* purple */
+.icheckbox_square-purple,
+.iradio_square-purple {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(purple.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-purple {
+ background-position: 0 0;
+}
+ .icheckbox_square-purple.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-purple.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-purple.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-purple.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-purple {
+ background-position: -120px 0;
+}
+ .iradio_square-purple.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-purple.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-purple.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-purple.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-purple,
+ .iradio_square-purple {
+ background-image: url(purple@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/aero.css b/common/src/main/webapp/thirdparty/icheck/skins/square/aero.css
new file mode 100755
index 00000000..6c4d0752
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/aero.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, aero
+----------------------------------- */
+.icheckbox_square-aero,
+.iradio_square-aero {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(aero.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-aero {
+ background-position: 0 0;
+}
+ .icheckbox_square-aero.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-aero.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-aero.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-aero.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-aero {
+ background-position: -120px 0;
+}
+ .iradio_square-aero.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-aero.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-aero.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-aero.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-aero,
+ .iradio_square-aero {
+ background-image: url(aero@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/aero.png b/common/src/main/webapp/thirdparty/icheck/skins/square/aero.png
new file mode 100755
index 00000000..8271ca9d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/aero.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/aero@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/square/aero@2x.png
new file mode 100755
index 00000000..07c5a022
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/aero@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/blue.css b/common/src/main/webapp/thirdparty/icheck/skins/square/blue.css
new file mode 100755
index 00000000..455761b0
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/blue.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, blue
+----------------------------------- */
+.icheckbox_square-blue,
+.iradio_square-blue {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(blue.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-blue {
+ background-position: 0 0;
+}
+ .icheckbox_square-blue.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-blue.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-blue.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-blue.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-blue {
+ background-position: -120px 0;
+}
+ .iradio_square-blue.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-blue.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-blue.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-blue.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-blue,
+ .iradio_square-blue {
+ background-image: url(blue@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/blue.png b/common/src/main/webapp/thirdparty/icheck/skins/square/blue.png
new file mode 100755
index 00000000..a3e040fc
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/blue.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/blue@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/square/blue@2x.png
new file mode 100755
index 00000000..8fdea12f
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/blue@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/green.css b/common/src/main/webapp/thirdparty/icheck/skins/square/green.css
new file mode 100755
index 00000000..0f4409cf
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/green.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, green
+----------------------------------- */
+.icheckbox_square-green,
+.iradio_square-green {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(green.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-green {
+ background-position: 0 0;
+}
+ .icheckbox_square-green.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-green.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-green.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-green.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-green {
+ background-position: -120px 0;
+}
+ .iradio_square-green.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-green.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-green.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-green.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-green,
+ .iradio_square-green {
+ background-image: url(green@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/green.png b/common/src/main/webapp/thirdparty/icheck/skins/square/green.png
new file mode 100755
index 00000000..465824e7
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/green.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/green@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/square/green@2x.png
new file mode 100755
index 00000000..784e8747
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/green@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/grey.css b/common/src/main/webapp/thirdparty/icheck/skins/square/grey.css
new file mode 100755
index 00000000..4c06d58a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/grey.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, grey
+----------------------------------- */
+.icheckbox_square-grey,
+.iradio_square-grey {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(grey.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-grey {
+ background-position: 0 0;
+}
+ .icheckbox_square-grey.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-grey.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-grey.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-grey.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-grey {
+ background-position: -120px 0;
+}
+ .iradio_square-grey.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-grey.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-grey.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-grey.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-grey,
+ .iradio_square-grey {
+ background-image: url(grey@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/grey.png b/common/src/main/webapp/thirdparty/icheck/skins/square/grey.png
new file mode 100755
index 00000000..f6937585
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/grey.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/grey@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/square/grey@2x.png
new file mode 100755
index 00000000..5d6341c0
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/grey@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/orange.css b/common/src/main/webapp/thirdparty/icheck/skins/square/orange.css
new file mode 100755
index 00000000..55b45897
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/orange.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, orange
+----------------------------------- */
+.icheckbox_square-orange,
+.iradio_square-orange {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(orange.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-orange {
+ background-position: 0 0;
+}
+ .icheckbox_square-orange.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-orange.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-orange.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-orange.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-orange {
+ background-position: -120px 0;
+}
+ .iradio_square-orange.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-orange.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-orange.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-orange.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-orange,
+ .iradio_square-orange {
+ background-image: url(orange@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/orange.png b/common/src/main/webapp/thirdparty/icheck/skins/square/orange.png
new file mode 100755
index 00000000..84608500
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/orange.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/orange@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/square/orange@2x.png
new file mode 100755
index 00000000..b1f23197
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/orange@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/pink.css b/common/src/main/webapp/thirdparty/icheck/skins/square/pink.css
new file mode 100755
index 00000000..b3823b21
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/pink.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, pink
+----------------------------------- */
+.icheckbox_square-pink,
+.iradio_square-pink {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(pink.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-pink {
+ background-position: 0 0;
+}
+ .icheckbox_square-pink.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-pink.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-pink.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-pink.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-pink {
+ background-position: -120px 0;
+}
+ .iradio_square-pink.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-pink.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-pink.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-pink.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-pink,
+ .iradio_square-pink {
+ background-image: url(pink@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/pink.png b/common/src/main/webapp/thirdparty/icheck/skins/square/pink.png
new file mode 100755
index 00000000..9c8b4e2b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/pink.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/pink@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/square/pink@2x.png
new file mode 100755
index 00000000..b1f3a6ed
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/pink@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/purple.css b/common/src/main/webapp/thirdparty/icheck/skins/square/purple.css
new file mode 100755
index 00000000..39d9b3b3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/purple.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, purple
+----------------------------------- */
+.icheckbox_square-purple,
+.iradio_square-purple {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(purple.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-purple {
+ background-position: 0 0;
+}
+ .icheckbox_square-purple.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-purple.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-purple.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-purple.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-purple {
+ background-position: -120px 0;
+}
+ .iradio_square-purple.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-purple.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-purple.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-purple.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-purple,
+ .iradio_square-purple {
+ background-image: url(purple@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/purple.png b/common/src/main/webapp/thirdparty/icheck/skins/square/purple.png
new file mode 100755
index 00000000..6bfc16a3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/purple.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/purple@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/square/purple@2x.png
new file mode 100755
index 00000000..6d3c8b1a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/purple@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/red.css b/common/src/main/webapp/thirdparty/icheck/skins/square/red.css
new file mode 100755
index 00000000..43399b8e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/red.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, red
+----------------------------------- */
+.icheckbox_square-red,
+.iradio_square-red {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(red.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-red {
+ background-position: 0 0;
+}
+ .icheckbox_square-red.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-red.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-red.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-red.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-red {
+ background-position: -120px 0;
+}
+ .iradio_square-red.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-red.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-red.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-red.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-red,
+ .iradio_square-red {
+ background-image: url(red@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/red.png b/common/src/main/webapp/thirdparty/icheck/skins/square/red.png
new file mode 100755
index 00000000..749675a9
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/red.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/red@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/square/red@2x.png
new file mode 100755
index 00000000..c05700a5
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/red@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/square.css b/common/src/main/webapp/thirdparty/icheck/skins/square/square.css
new file mode 100755
index 00000000..2f3e5bf8
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/square.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, black
+----------------------------------- */
+.icheckbox_square,
+.iradio_square {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(square.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square {
+ background-position: 0 0;
+}
+ .icheckbox_square.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square {
+ background-position: -120px 0;
+}
+ .iradio_square.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square,
+ .iradio_square {
+ background-image: url(square@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/square.png b/common/src/main/webapp/thirdparty/icheck/skins/square/square.png
new file mode 100755
index 00000000..2a3c8811
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/square.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/square@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/square/square@2x.png
new file mode 100755
index 00000000..9b56c448
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/square@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/yellow.css b/common/src/main/webapp/thirdparty/icheck/skins/square/yellow.css
new file mode 100755
index 00000000..65ef0ba2
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/yellow.css
@@ -0,0 +1,59 @@
+/* iCheck plugin Square skin, yellow
+----------------------------------- */
+.icheckbox_square-yellow,
+.iradio_square-yellow {
+ display: inline-block;
+ *display: inline;
+ vertical-align: middle;
+ margin: 0;
+ padding: 0;
+ width: 22px;
+ height: 22px;
+ background: url(yellow.png) no-repeat;
+ border: none;
+ cursor: pointer;
+}
+
+.icheckbox_square-yellow {
+ background-position: 0 0;
+}
+ .icheckbox_square-yellow.hover {
+ background-position: -24px 0;
+ }
+ .icheckbox_square-yellow.checked {
+ background-position: -48px 0;
+ }
+ .icheckbox_square-yellow.disabled {
+ background-position: -72px 0;
+ cursor: default;
+ }
+ .icheckbox_square-yellow.checked.disabled {
+ background-position: -96px 0;
+ }
+
+.iradio_square-yellow {
+ background-position: -120px 0;
+}
+ .iradio_square-yellow.hover {
+ background-position: -144px 0;
+ }
+ .iradio_square-yellow.checked {
+ background-position: -168px 0;
+ }
+ .iradio_square-yellow.disabled {
+ background-position: -192px 0;
+ cursor: default;
+ }
+ .iradio_square-yellow.checked.disabled {
+ background-position: -216px 0;
+ }
+
+/* HiDPI support */
+@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi), (min-resolution: 1.25dppx) {
+ .icheckbox_square-yellow,
+ .iradio_square-yellow {
+ background-image: url(yellow@2x.png);
+ -webkit-background-size: 240px 24px;
+ background-size: 240px 24px;
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/yellow.png b/common/src/main/webapp/thirdparty/icheck/skins/square/yellow.png
new file mode 100755
index 00000000..b6c03309
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/yellow.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/icheck/skins/square/yellow@2x.png b/common/src/main/webapp/thirdparty/icheck/skins/square/yellow@2x.png
new file mode 100755
index 00000000..6b8e328e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/icheck/skins/square/yellow@2x.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/add.png b/common/src/main/webapp/thirdparty/images/add.png
index d1f82993..d1f82993 100644..100755
--- a/common/src/main/webapp/thirdparty/images/add.png
+++ b/common/src/main/webapp/thirdparty/images/add.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-checked-disabled.png b/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-checked-disabled.png
index 0ba905f0..0ba905f0 100644..100755
--- a/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-checked-disabled.png
+++ b/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-checked-disabled.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-checked.png b/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-checked.png
index 2ddfb0a0..2ddfb0a0 100644..100755
--- a/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-checked.png
+++ b/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-checked.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-disabled.png b/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-disabled.png
index a53c89c2..a53c89c2 100644..100755
--- a/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-disabled.png
+++ b/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-disabled.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-hover.png b/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-hover.png
index c2821132..c2821132 100644..100755
--- a/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-hover.png
+++ b/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-hover.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-init.png b/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-init.png
index e352cc51..e352cc51 100644..100755
--- a/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-init.png
+++ b/common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-init.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-checked-disabled.png b/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-checked-disabled.png
index 16eecc57..16eecc57 100644..100755
--- a/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-checked-disabled.png
+++ b/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-checked-disabled.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-checked.png b/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-checked.png
index 6c60d128..6c60d128 100644..100755
--- a/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-checked.png
+++ b/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-checked.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-disabled.png b/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-disabled.png
index c27289db..c27289db 100644..100755
--- a/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-disabled.png
+++ b/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-disabled.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-hover.png b/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-hover.png
index 03138ca6..03138ca6 100644..100755
--- a/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-hover.png
+++ b/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-hover.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-init.png b/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-init.png
index b428c58f..b428c58f 100644..100755
--- a/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-init.png
+++ b/common/src/main/webapp/thirdparty/images/checkbox-radio/radio-init.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/collapse_arrow.png b/common/src/main/webapp/thirdparty/images/collapse_arrow.png
index 8830741a..8830741a 100644..100755
--- a/common/src/main/webapp/thirdparty/images/collapse_arrow.png
+++ b/common/src/main/webapp/thirdparty/images/collapse_arrow.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/delete.png b/common/src/main/webapp/thirdparty/images/delete.png
index 737f8797..737f8797 100644..100755
--- a/common/src/main/webapp/thirdparty/images/delete.png
+++ b/common/src/main/webapp/thirdparty/images/delete.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/edit.png b/common/src/main/webapp/thirdparty/images/edit.png
index 68d76257..68d76257 100644..100755
--- a/common/src/main/webapp/thirdparty/images/edit.png
+++ b/common/src/main/webapp/thirdparty/images/edit.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/expand_arrow.png b/common/src/main/webapp/thirdparty/images/expand_arrow.png
index f8935e1f..f8935e1f 100644..100755
--- a/common/src/main/webapp/thirdparty/images/expand_arrow.png
+++ b/common/src/main/webapp/thirdparty/images/expand_arrow.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/openo.png b/common/src/main/webapp/thirdparty/images/openo.png
index 328b7353..328b7353 100644..100755
--- a/common/src/main/webapp/thirdparty/images/openo.png
+++ b/common/src/main/webapp/thirdparty/images/openo.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/images/searchicon.png b/common/src/main/webapp/thirdparty/images/searchicon.png
index 960dea1a..960dea1a 100644..100755
--- a/common/src/main/webapp/thirdparty/images/searchicon.png
+++ b/common/src/main/webapp/thirdparty/images/searchicon.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/jQuery-File-Upload/css/jquery.fileupload.css b/common/src/main/webapp/thirdparty/jQuery-File-Upload/css/jquery.fileupload.css
index ce7e4229..ce7e4229 100644..100755
--- a/common/src/main/webapp/thirdparty/jQuery-File-Upload/css/jquery.fileupload.css
+++ b/common/src/main/webapp/thirdparty/jQuery-File-Upload/css/jquery.fileupload.css
diff --git a/common/src/main/webapp/thirdparty/jQuery-File-Upload/img/loading.gif b/common/src/main/webapp/thirdparty/jQuery-File-Upload/img/loading.gif
index 90f28cbd..90f28cbd 100644..100755
--- a/common/src/main/webapp/thirdparty/jQuery-File-Upload/img/loading.gif
+++ b/common/src/main/webapp/thirdparty/jQuery-File-Upload/img/loading.gif
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/jQuery-File-Upload/img/progressbar.gif b/common/src/main/webapp/thirdparty/jQuery-File-Upload/img/progressbar.gif
index fbcce6bc..fbcce6bc 100644..100755
--- a/common/src/main/webapp/thirdparty/jQuery-File-Upload/img/progressbar.gif
+++ b/common/src/main/webapp/thirdparty/jQuery-File-Upload/img/progressbar.gif
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/jQuery-File-Upload/js/jquery.fileupload.js b/common/src/main/webapp/thirdparty/jQuery-File-Upload/js/jquery.fileupload.js
index 91b72546..91b72546 100644..100755
--- a/common/src/main/webapp/thirdparty/jQuery-File-Upload/js/jquery.fileupload.js
+++ b/common/src/main/webapp/thirdparty/jQuery-File-Upload/js/jquery.fileupload.js
diff --git a/common/src/main/webapp/thirdparty/jQuery-File-Upload/js/jquery.iframe-transport.js b/common/src/main/webapp/thirdparty/jQuery-File-Upload/js/jquery.iframe-transport.js
index a7d34e0e..a7d34e0e 100644..100755
--- a/common/src/main/webapp/thirdparty/jQuery-File-Upload/js/jquery.iframe-transport.js
+++ b/common/src/main/webapp/thirdparty/jQuery-File-Upload/js/jquery.iframe-transport.js
diff --git a/common/src/main/webapp/thirdparty/jQuery-File-Upload/js/vendor/jquery.ui.widget.js b/common/src/main/webapp/thirdparty/jQuery-File-Upload/js/vendor/jquery.ui.widget.js
index e08df3fd..e08df3fd 100644..100755
--- a/common/src/main/webapp/thirdparty/jQuery-File-Upload/js/vendor/jquery.ui.widget.js
+++ b/common/src/main/webapp/thirdparty/jQuery-File-Upload/js/vendor/jquery.ui.widget.js
diff --git a/common/src/main/webapp/thirdparty/jquery-cokie/jquery.cokie.min.js b/common/src/main/webapp/thirdparty/jquery-cokie/jquery.cokie.min.js
new file mode 100755
index 00000000..0f1b501c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/jquery-cokie/jquery.cokie.min.js
@@ -0,0 +1,9 @@
+/*!
+ * jQuery Cookie Plugin v1.3.1
+ * https://github.com/carhartl/jquery-cookie
+ * Plugin file name changed to jquery.cokie.min to prevent blocking by ModSecurity module
+ *
+ * Copyright 2013 Klaus Hartl
+ * Released under the MIT license
+ */
+(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{a(jQuery)}}(function(e){var a=/\+/g;function d(g){return g}function b(g){return decodeURIComponent(g.replace(a," "))}function f(g){if(g.indexOf('"')===0){g=g.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\")}try{return c.json?JSON.parse(g):g}catch(h){}}var c=e.cookie=function(p,o,u){if(o!==undefined){u=e.extend({},c.defaults,u);if(typeof u.expires==="number"){var q=u.expires,s=u.expires=new Date();s.setDate(s.getDate()+q)}o=c.json?JSON.stringify(o):String(o);return(document.cookie=[c.raw?p:encodeURIComponent(p),"=",c.raw?o:encodeURIComponent(o),u.expires?"; expires="+u.expires.toUTCString():"",u.path?"; path="+u.path:"",u.domain?"; domain="+u.domain:"",u.secure?"; secure":""].join(""))}var g=c.raw?d:b;var r=document.cookie.split("; ");var v=p?undefined:{};for(var n=0,k=r.length;n<k;n++){var m=r[n].split("=");var h=g(m.shift());var j=g(m.join("="));if(p&&p===h){v=f(j);break}if(!p){v[h]=f(j)}}return v};c.defaults={};e.removeCookie=function(h,g){if(e.cookie(h)!==undefined){e.cookie(h,"",e.extend({},g,{expires:-1}));return true}return false}})); \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/README.md b/common/src/main/webapp/thirdparty/jquery-validation/README.md
index 4e71318b..4e71318b 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/README.md
+++ b/common/src/main/webapp/thirdparty/jquery-validation/README.md
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/dist/additional-methods.js b/common/src/main/webapp/thirdparty/jquery-validation/dist/additional-methods.js
index b0534b54..b0534b54 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/dist/additional-methods.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/dist/additional-methods.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/dist/additional-methods.min.js b/common/src/main/webapp/thirdparty/jquery-validation/dist/additional-methods.min.js
index 94e500b3..94e500b3 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/dist/additional-methods.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/dist/additional-methods.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/dist/jquery.validate.js b/common/src/main/webapp/thirdparty/jquery-validation/dist/jquery.validate.js
index 88ba300e..88ba300e 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/dist/jquery.validate.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/dist/jquery.validate.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/dist/jquery.validate.min.js b/common/src/main/webapp/thirdparty/jquery-validation/dist/jquery.validate.min.js
index c0385ef9..c0385ef9 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/dist/jquery.validate.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/dist/jquery.validate.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/additional-methods.js b/common/src/main/webapp/thirdparty/jquery-validation/js/additional-methods.js
index 7491439f..7491439f 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/additional-methods.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/additional-methods.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/additional-methods.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/additional-methods.min.js
index 841358f7..841358f7 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/additional-methods.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/additional-methods.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/jquery.validate.js b/common/src/main/webapp/thirdparty/jquery-validation/js/jquery.validate.js
index 3b6c812c..3b6c812c 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/jquery.validate.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/jquery.validate.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/jquery.validate.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/jquery.validate.min.js
index 52646177..52646177 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/jquery.validate.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/jquery.validate.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ar.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ar.js
index e609dbb6..e609dbb6 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ar.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ar.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ar.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ar.min.js
index 01a3200f..01a3200f 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ar.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ar.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_bg.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_bg.js
index fea21cf5..fea21cf5 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_bg.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_bg.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_bg.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_bg.min.js
index 9a6a3169..9a6a3169 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_bg.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_bg.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ca.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ca.js
index 0b308e16..0b308e16 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ca.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ca.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ca.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ca.min.js
index 9e94f4f2..9e94f4f2 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ca.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ca.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_cs.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_cs.js
index 6c27e2b0..6c27e2b0 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_cs.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_cs.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_cs.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_cs.min.js
index 586c7d5d..586c7d5d 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_cs.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_cs.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_da.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_da.js
index e862abad..e862abad 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_da.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_da.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_da.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_da.min.js
index 3663bd6f..3663bd6f 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_da.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_da.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_de.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_de.js
index 7f5bc8fe..7f5bc8fe 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_de.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_de.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_de.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_de.min.js
index d9c8d974..d9c8d974 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_de.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_de.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_el.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_el.js
index 5758f56f..5758f56f 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_el.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_el.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_el.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_el.min.js
index b8f91d11..b8f91d11 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_el.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_el.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es.js
index bf37c17a..bf37c17a 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es.min.js
index a248f1a4..a248f1a4 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es_AR.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es_AR.js
index c7279e47..c7279e47 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es_AR.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es_AR.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es_AR.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es_AR.min.js
index 18e663cf..18e663cf 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es_AR.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es_AR.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_et.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_et.js
index 0dd93cd2..0dd93cd2 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_et.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_et.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_et.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_et.min.js
index 54a8c5dd..54a8c5dd 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_et.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_et.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_eu.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_eu.js
index a9b07773..a9b07773 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_eu.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_eu.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_eu.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_eu.min.js
index caa3bb62..caa3bb62 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_eu.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_eu.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fa.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fa.js
index eb7d3367..eb7d3367 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fa.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fa.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fa.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fa.min.js
index 94e151c0..94e151c0 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fa.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fa.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fi.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fi.js
index 14861286..14861286 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fi.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fi.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fi.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fi.min.js
index 7cf0e97e..7cf0e97e 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fi.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fi.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fr.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fr.js
index d465538d..d465538d 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fr.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fr.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fr.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fr.min.js
index 065760f8..065760f8 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fr.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fr.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_gl.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_gl.js
index a36f6090..a36f6090 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_gl.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_gl.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_gl.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_gl.min.js
index 1a77f40f..1a77f40f 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_gl.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_gl.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_he.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_he.js
index b50beb0e..b50beb0e 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_he.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_he.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_he.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_he.min.js
index e0e80013..e0e80013 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_he.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_he.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hr.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hr.js
index 792ac448..792ac448 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hr.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hr.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hr.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hr.min.js
index 184fe8af..184fe8af 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hr.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hr.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hu.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hu.js
index 735bc3b6..735bc3b6 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hu.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hu.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hu.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hu.min.js
index 55e615e7..55e615e7 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hu.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hu.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_id.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_id.js
index 48f7b9ad..48f7b9ad 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_id.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_id.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_id.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_id.min.js
index 5096c8de..5096c8de 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_id.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_id.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_is.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_is.js
index 00948d4f..00948d4f 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_is.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_is.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_is.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_is.min.js
index bbd362e1..bbd362e1 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_is.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_is.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_it.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_it.js
index 7fbee3b2..7fbee3b2 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_it.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_it.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_it.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_it.min.js
index 03e4bdad..03e4bdad 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_it.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_it.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ja.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ja.js
index 3eed43d3..3eed43d3 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ja.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ja.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ja.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ja.min.js
index f0c70cf7..f0c70cf7 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ja.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ja.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ka.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ka.js
index 494ec918..494ec918 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ka.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ka.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ka.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ka.min.js
index fdfe441d..fdfe441d 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ka.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ka.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_kk.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_kk.js
index 17c8b83a..17c8b83a 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_kk.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_kk.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_kk.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_kk.min.js
index 2a9a5cf7..2a9a5cf7 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_kk.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_kk.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ko.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ko.js
index f6b53559..f6b53559 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ko.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ko.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ko.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ko.min.js
index 9d4de3b3..9d4de3b3 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ko.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ko.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lt.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lt.js
index df17a1ed..df17a1ed 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lt.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lt.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lt.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lt.min.js
index 2a20cf4b..2a20cf4b 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lt.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lt.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lv.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lv.js
index ade1b88f..ade1b88f 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lv.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lv.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lv.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lv.min.js
index ce98a33e..ce98a33e 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lv.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lv.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_my.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_my.js
index 9de974ab..9de974ab 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_my.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_my.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_my.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_my.min.js
index 44566bf9..44566bf9 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_my.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_my.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_nl.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_nl.js
index cdba3812..cdba3812 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_nl.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_nl.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_nl.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_nl.min.js
index 5eb962d7..5eb962d7 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_nl.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_nl.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_no.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_no.js
index 308b715a..308b715a 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_no.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_no.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_no.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_no.min.js
index f671f553..f671f553 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_no.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_no.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pl.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pl.js
index 453ba772..453ba772 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pl.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pl.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pl.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pl.min.js
index 4e68c937..4e68c937 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pl.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pl.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_BR.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_BR.js
index 71b1ef83..71b1ef83 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_BR.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_BR.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_BR.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_BR.min.js
index 899d36e2..899d36e2 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_BR.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_BR.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_PT.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_PT.js
index 4c2a7826..4c2a7826 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_PT.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_PT.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_PT.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_PT.min.js
index 3e748a4e..3e748a4e 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_PT.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_PT.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ro.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ro.js
index be77eabc..be77eabc 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ro.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ro.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ro.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ro.min.js
index 9ac878ee..9ac878ee 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ro.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ro.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ru.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ru.js
index 896827bf..896827bf 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ru.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ru.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ru.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ru.min.js
index 47e58718..47e58718 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ru.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ru.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_si.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_si.js
index 8e04a9d5..8e04a9d5 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_si.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_si.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_si.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_si.min.js
index da43656d..da43656d 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_si.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_si.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sk.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sk.js
index cf3680eb..cf3680eb 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sk.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sk.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sk.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sk.min.js
index 8caaf0cb..8caaf0cb 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sk.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sk.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sl.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sl.js
index 6eb9e0b2..6eb9e0b2 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sl.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sl.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sl.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sl.min.js
index c32891f8..c32891f8 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sl.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sl.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr.js
index e268be82..e268be82 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr.min.js
index cbdff67d..cbdff67d 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr_lat.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr_lat.js
index 3c14afc4..3c14afc4 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr_lat.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr_lat.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr_lat.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr_lat.min.js
index 4d525c24..4d525c24 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr_lat.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr_lat.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sv.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sv.js
index 758c8a72..758c8a72 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sv.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sv.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sv.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sv.min.js
index 625fd19e..625fd19e 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sv.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sv.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_th.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_th.js
index e354e50a..e354e50a 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_th.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_th.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_th.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_th.min.js
index 64de7497..64de7497 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_th.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_th.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tj.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tj.js
index 67e1e2ca..67e1e2ca 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tj.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tj.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tj.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tj.min.js
index 89d15e1b..89d15e1b 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tj.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tj.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tr.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tr.js
index 1d4c55ed..1d4c55ed 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tr.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tr.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tr.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tr.min.js
index bfadcb9c..bfadcb9c 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tr.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tr.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_uk.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_uk.js
index ecb855cc..ecb855cc 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_uk.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_uk.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_uk.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_uk.min.js
index 17708d59..17708d59 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_uk.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_uk.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_vi.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_vi.js
index f37b00e8..f37b00e8 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_vi.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_vi.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_vi.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_vi.min.js
index bf7d4d4e..bf7d4d4e 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_vi.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_vi.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh.js
index a4e121cf..a4e121cf 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh.min.js
index 3f787846..3f787846 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh_TW.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh_TW.js
index fc86be39..fc86be39 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh_TW.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh_TW.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh_TW.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh_TW.min.js
index 0f1ef48f..0f1ef48f 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh_TW.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh_TW.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_de.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_de.js
index 470133ed..470133ed 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_de.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_de.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_de.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_de.min.js
index d3ac2ef3..d3ac2ef3 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_de.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_de.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_es_CL.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_es_CL.js
index 16446e44..16446e44 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_es_CL.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_es_CL.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_es_CL.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_es_CL.min.js
index 63b83b56..63b83b56 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_es_CL.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_es_CL.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_fi.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_fi.js
index 44b3e365..44b3e365 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_fi.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_fi.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_fi.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_fi.min.js
index 39e9dd45..39e9dd45 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_fi.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_fi.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_nl.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_nl.js
index 91e0d8c5..91e0d8c5 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_nl.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_nl.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_nl.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_nl.min.js
index 52c98932..52c98932 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_nl.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_nl.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_pt.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_pt.js
index d06ccec8..d06ccec8 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_pt.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_pt.js
diff --git a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_pt.min.js b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_pt.min.js
index 2ad410ee..2ad410ee 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_pt.min.js
+++ b/common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_pt.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery.i18n/jquery.i18n.properties-1.0.9.js b/common/src/main/webapp/thirdparty/jquery.i18n/jquery.i18n.properties-1.0.9.js
index 5f9b195c..5f9b195c 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery.i18n/jquery.i18n.properties-1.0.9.js
+++ b/common/src/main/webapp/thirdparty/jquery.i18n/jquery.i18n.properties-1.0.9.js
diff --git a/common/src/main/webapp/thirdparty/jquery/jquery-1.10.2.min.js b/common/src/main/webapp/thirdparty/jquery/jquery-1.10.2.min.js
index 73f33fb3..73f33fb3 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery/jquery-1.10.2.min.js
+++ b/common/src/main/webapp/thirdparty/jquery/jquery-1.10.2.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.js b/common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.js
index 1c3aa822..1c3aa822 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.js
+++ b/common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.js
diff --git a/common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.min.js b/common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.min.js
index e6a051d0..e6a051d0 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.min.js
+++ b/common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.min.map b/common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.min.map
index 837de0b5..837de0b5 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.min.map
+++ b/common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.min.map
diff --git a/common/src/main/webapp/thirdparty/jquery/jquery-1.4.4.min.js b/common/src/main/webapp/thirdparty/jquery/jquery-1.4.4.min.js
index 2bd4cbb8..2bd4cbb8 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery/jquery-1.4.4.min.js
+++ b/common/src/main/webapp/thirdparty/jquery/jquery-1.4.4.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.js b/common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.js
index 79d631ff..79d631ff 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.js
+++ b/common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.js
diff --git a/common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.min.js b/common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.min.js
index 25714ed2..25714ed2 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.min.js
+++ b/common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.min.map b/common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.min.map
index 820c4269..820c4269 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.min.map
+++ b/common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.min.map
diff --git a/common/src/main/webapp/thirdparty/jquery/jquery-migrate-1.2.1.js b/common/src/main/webapp/thirdparty/jquery/jquery-migrate-1.2.1.js
index 25b6c813..25b6c813 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery/jquery-migrate-1.2.1.js
+++ b/common/src/main/webapp/thirdparty/jquery/jquery-migrate-1.2.1.js
diff --git a/common/src/main/webapp/thirdparty/jquery/jquery-migrate-1.2.1.min.js b/common/src/main/webapp/thirdparty/jquery/jquery-migrate-1.2.1.min.js
index 62149c28..62149c28 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery/jquery-migrate-1.2.1.min.js
+++ b/common/src/main/webapp/thirdparty/jquery/jquery-migrate-1.2.1.min.js
diff --git a/common/src/main/webapp/thirdparty/jquery/jquery.reveal.js b/common/src/main/webapp/thirdparty/jquery/jquery.reveal.js
index 4c9504cd..4c9504cd 100644..100755
--- a/common/src/main/webapp/thirdparty/jquery/jquery.reveal.js
+++ b/common/src/main/webapp/thirdparty/jquery/jquery.reveal.js
diff --git a/common/src/main/webapp/thirdparty/js/angular-ui-router.min.js b/common/src/main/webapp/thirdparty/js/angular-ui-router.min.js
index d3202953..d3202953 100644..100755
--- a/common/src/main/webapp/thirdparty/js/angular-ui-router.min.js
+++ b/common/src/main/webapp/thirdparty/js/angular-ui-router.min.js
diff --git a/common/src/main/webapp/thirdparty/js/angular.min.js b/common/src/main/webapp/thirdparty/js/angular.min.js
index 89d4aaa1..89d4aaa1 100644..100755
--- a/common/src/main/webapp/thirdparty/js/angular.min.js
+++ b/common/src/main/webapp/thirdparty/js/angular.min.js
diff --git a/common/src/main/webapp/thirdparty/js/bootstrap-table-filter-control.min.js b/common/src/main/webapp/thirdparty/js/bootstrap-table-filter-control.min.js
index 78dfa703..78dfa703 100644..100755
--- a/common/src/main/webapp/thirdparty/js/bootstrap-table-filter-control.min.js
+++ b/common/src/main/webapp/thirdparty/js/bootstrap-table-filter-control.min.js
diff --git a/common/src/main/webapp/thirdparty/js/bootstrap-table.min.js b/common/src/main/webapp/thirdparty/js/bootstrap-table.min.js
index b6602c3f..b6602c3f 100644..100755
--- a/common/src/main/webapp/thirdparty/js/bootstrap-table.min.js
+++ b/common/src/main/webapp/thirdparty/js/bootstrap-table.min.js
diff --git a/common/src/main/webapp/thirdparty/js/bootstrap.min.js b/common/src/main/webapp/thirdparty/js/bootstrap.min.js
index b04a0e82..b04a0e82 100644..100755
--- a/common/src/main/webapp/thirdparty/js/bootstrap.min.js
+++ b/common/src/main/webapp/thirdparty/js/bootstrap.min.js
diff --git a/common/src/main/webapp/thirdparty/js/core/const.js b/common/src/main/webapp/thirdparty/js/core/const.js
index 66bee91a..66bee91a 100644..100755
--- a/common/src/main/webapp/thirdparty/js/core/const.js
+++ b/common/src/main/webapp/thirdparty/js/core/const.js
diff --git a/common/src/main/webapp/thirdparty/js/core/hk.min.js b/common/src/main/webapp/thirdparty/js/core/hk.min.js
index 73ab7f2c..73ab7f2c 100644..100755
--- a/common/src/main/webapp/thirdparty/js/core/hk.min.js
+++ b/common/src/main/webapp/thirdparty/js/core/hk.min.js
diff --git a/common/src/main/webapp/thirdparty/js/core/load_menuList.js b/common/src/main/webapp/thirdparty/js/core/load_menuList.js
index 972e782b..972e782b 100644..100755
--- a/common/src/main/webapp/thirdparty/js/core/load_menuList.js
+++ b/common/src/main/webapp/thirdparty/js/core/load_menuList.js
diff --git a/common/src/main/webapp/thirdparty/js/core/openoFrameWork.js b/common/src/main/webapp/thirdparty/js/core/openoFrameWork.js
index 3b7e4b38..3b7e4b38 100644..100755
--- a/common/src/main/webapp/thirdparty/js/core/openoFrameWork.js
+++ b/common/src/main/webapp/thirdparty/js/core/openoFrameWork.js
diff --git a/common/src/main/webapp/thirdparty/js/core/pym.min.js b/common/src/main/webapp/thirdparty/js/core/pym.min.js
index 78b2f513..78b2f513 100644..100755
--- a/common/src/main/webapp/thirdparty/js/core/pym.min.js
+++ b/common/src/main/webapp/thirdparty/js/core/pym.min.js
diff --git a/common/src/main/webapp/thirdparty/js/jquery-ui.js b/common/src/main/webapp/thirdparty/js/jquery-ui.js
index 02135523..02135523 100644..100755
--- a/common/src/main/webapp/thirdparty/js/jquery-ui.js
+++ b/common/src/main/webapp/thirdparty/js/jquery-ui.js
diff --git a/common/src/main/webapp/thirdparty/js/jquery.cookie.js b/common/src/main/webapp/thirdparty/js/jquery.cookie.js
index c7f3a59b..c7f3a59b 100644..100755
--- a/common/src/main/webapp/thirdparty/js/jquery.cookie.js
+++ b/common/src/main/webapp/thirdparty/js/jquery.cookie.js
diff --git a/common/src/main/webapp/thirdparty/js/jquery.ztree.core-3.5.js b/common/src/main/webapp/thirdparty/js/jquery.ztree.core-3.5.js
index 0e7b338e..0e7b338e 100644..100755
--- a/common/src/main/webapp/thirdparty/js/jquery.ztree.core-3.5.js
+++ b/common/src/main/webapp/thirdparty/js/jquery.ztree.core-3.5.js
diff --git a/common/src/main/webapp/thirdparty/js/jquery_1.12.4.min.js b/common/src/main/webapp/thirdparty/js/jquery_1.12.4.min.js
index db07c592..db07c592 100644..100755
--- a/common/src/main/webapp/thirdparty/js/jquery_1.12.4.min.js
+++ b/common/src/main/webapp/thirdparty/js/jquery_1.12.4.min.js
diff --git a/common/src/main/webapp/thirdparty/js/mustache.js b/common/src/main/webapp/thirdparty/js/mustache.js
index a8560c0a..a8560c0a 100644..100755
--- a/common/src/main/webapp/thirdparty/js/mustache.js
+++ b/common/src/main/webapp/thirdparty/js/mustache.js
diff --git a/common/src/main/webapp/thirdparty/js/ng-table.min.js b/common/src/main/webapp/thirdparty/js/ng-table.min.js
index ccbc8ab0..ccbc8ab0 100644..100755
--- a/common/src/main/webapp/thirdparty/js/ng-table.min.js
+++ b/common/src/main/webapp/thirdparty/js/ng-table.min.js
diff --git a/common/src/main/webapp/thirdparty/js/tools.js b/common/src/main/webapp/thirdparty/js/tools.js
index b4a6e68f..b4a6e68f 100644..100755
--- a/common/src/main/webapp/thirdparty/js/tools.js
+++ b/common/src/main/webapp/thirdparty/js/tools.js
diff --git a/common/src/main/webapp/thirdparty/uniform/README.md b/common/src/main/webapp/thirdparty/uniform/README.md
index 7377b19d..7377b19d 100644..100755
--- a/common/src/main/webapp/thirdparty/uniform/README.md
+++ b/common/src/main/webapp/thirdparty/uniform/README.md
diff --git a/common/src/main/webapp/thirdparty/uniform/css/uniform.default.css b/common/src/main/webapp/thirdparty/uniform/css/uniform.default.css
index 2e7fd200..2e7fd200 100644..100755
--- a/common/src/main/webapp/thirdparty/uniform/css/uniform.default.css
+++ b/common/src/main/webapp/thirdparty/uniform/css/uniform.default.css
diff --git a/common/src/main/webapp/thirdparty/uniform/css/uniform.default.min.css b/common/src/main/webapp/thirdparty/uniform/css/uniform.default.min.css
index ef4ee103..ef4ee103 100644..100755
--- a/common/src/main/webapp/thirdparty/uniform/css/uniform.default.min.css
+++ b/common/src/main/webapp/thirdparty/uniform/css/uniform.default.min.css
diff --git a/common/src/main/webapp/thirdparty/uniform/css/uniform.default.scss b/common/src/main/webapp/thirdparty/uniform/css/uniform.default.scss
index a32e348e..a32e348e 100644..100755
--- a/common/src/main/webapp/thirdparty/uniform/css/uniform.default.scss
+++ b/common/src/main/webapp/thirdparty/uniform/css/uniform.default.scss
diff --git a/common/src/main/webapp/thirdparty/uniform/images/bg-input-focus.png b/common/src/main/webapp/thirdparty/uniform/images/bg-input-focus.png
index 0b059d48..0b059d48 100644..100755
--- a/common/src/main/webapp/thirdparty/uniform/images/bg-input-focus.png
+++ b/common/src/main/webapp/thirdparty/uniform/images/bg-input-focus.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/uniform/images/bg-input.png b/common/src/main/webapp/thirdparty/uniform/images/bg-input.png
index 485d222e..485d222e 100644..100755
--- a/common/src/main/webapp/thirdparty/uniform/images/bg-input.png
+++ b/common/src/main/webapp/thirdparty/uniform/images/bg-input.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/uniform/images/sprite.png b/common/src/main/webapp/thirdparty/uniform/images/sprite.png
index 358d7be8..358d7be8 100644..100755
--- a/common/src/main/webapp/thirdparty/uniform/images/sprite.png
+++ b/common/src/main/webapp/thirdparty/uniform/images/sprite.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/uniform/images/sprite_original.png b/common/src/main/webapp/thirdparty/uniform/images/sprite_original.png
index 66b558fc..66b558fc 100644..100755
--- a/common/src/main/webapp/thirdparty/uniform/images/sprite_original.png
+++ b/common/src/main/webapp/thirdparty/uniform/images/sprite_original.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/uniform/jquery.uniform.js b/common/src/main/webapp/thirdparty/uniform/jquery.uniform.js
index ad2d6135..ad2d6135 100644..100755
--- a/common/src/main/webapp/thirdparty/uniform/jquery.uniform.js
+++ b/common/src/main/webapp/thirdparty/uniform/jquery.uniform.js
diff --git a/common/src/main/webapp/thirdparty/uniform/jquery.uniform.min.js b/common/src/main/webapp/thirdparty/uniform/jquery.uniform.min.js
index 33c92df3..33c92df3 100644..100755
--- a/common/src/main/webapp/thirdparty/uniform/jquery.uniform.min.js
+++ b/common/src/main/webapp/thirdparty/uniform/jquery.uniform.min.js
diff --git a/common/src/main/webapp/thirdparty/zTree/api/API_cn.html b/common/src/main/webapp/thirdparty/zTree/api/API_cn.html
new file mode 100755
index 00000000..1fe011de
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/API_cn.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <title>API 文档 [zTree -- jQuery æ ‘æ’件]</title>
+ <link rel="stylesheet" href="apiCss/common.css" type="text/css">
+ <link rel='stylesheet' href='apiCss/zTreeStyleForApi.css' type='text/css'>
+ <script type="text/javascript">
+ var ie = (function(){
+ var undef,
+ v = 3,
+ div = document.createElement('div'),
+ all = div.getElementsByTagName('i');
+ while (
+ div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
+ all[0]
+ );
+ return v > 4 ? v : undef;
+ }()), ie6 = (ie === 6),
+ path = window.location.pathname.replace(/.*\/([^\/\.]*)\..*/g,"$1"),
+ langLib = [];
+ ie = ie<9;
+ if(ie) {
+ document.write('<link rel="stylesheet" href="apiCss/common_ie6.css" type="text/css">');
+ }
+ var lang = "cn",
+ ajaxMsg = "如果你使用的是 Chrome æµè§ˆå™¨ï¼Œé‚£ä¹ˆè¯·æŠŠ API 文档å‘布到 web æœåŠ¡ç›®å½•ä¸‹è®¿é—®ã€‚\n\n(Chrome æµè§ˆå™¨ä¸æ”¯æŒæœ¬åœ° ajax 访问, å³ï¼šfile://)";
+
+ </script>
+ </head>
+ <body>
+ <div id="header_wrap" class="header_wrap" style="padding-top: 30px;">
+ <div id="header" class="header round">
+ <div class="light-bulb" alt=""></div>
+ <div class="ieSuggest">æµè§ˆæœ¬ç½‘站建议您使用 Chromeã€FireFoxã€Operaã€IE9 ç­‰æµè§ˆå™¨ï¼ˆåªè¦ä¸æ˜¯ IE6 7 8 就行), 速度会更快,画é¢ä¼šæ›´ç‚«ï¼</div>
+ <div class="google_plus"><g:plusone></g:plusone></div>
+ <div class="header-text">
+ <h1><em>zTree v3.5.16 API 文档</em></h1><p></p>
+ <p>all.js = core + excheck + exedit ( ä¸åŒ…括 exhide ); å‘现错误请åŠæ—¶é€šçŸ¥ï¼Œè°¢è°¢ã€‚</p>
+ </div>
+ <ul class="shortcuts language" style="top:0;">
+ <li><a href="API_en.html" onclick="window.location.href='API_en.html'"><button class="ico en" title="英文版" type="button"></button><span class=""></span></a></li>
+ </ul>
+ </div>
+ </div>
+ <div id="content_wrap" class="content_wrap">
+ <div id="content" class="content">
+ <div class="nav_section">
+ <ul>
+ <li class="first">注释:</li>
+ <li><button class="ico16 z_core" onfocus="this.blur();"></button><span>core 核心包</span></li>
+ <li><button class="ico16 z_check" onfocus="this.blur();"></button><span>excheck 扩展</span></li>
+ <li><button class="ico16 z_edit" onfocus="this.blur();"></button><span>exedit 扩展</span></li>
+ <li><button class="ico16 z_hide" onfocus="this.blur();"></button><span>exhide 扩展</span></li>
+ <li class="noline">
+ <button class="ico16 z_search" onfocus="this.blur();" title="Enter ä»¥åŠ å·¦ã€å³é”®å¯ä»¥å¿«é€Ÿå®šä½æŸ¥æ‰¾ç»“æžœ"></button>
+ <input type="text" class="searchKey search empty" value=""><input type="text" class="searchResult search" value="">
+ <button class="ico16 searchPrev disabled" onfocus="this.blur();" title="Enter ä»¥åŠ å·¦ã€å³é”®å¯ä»¥å¿«é€Ÿå®šä½æŸ¥æ‰¾ç»“æžœ"></button><button class="ico16 searchNext disabled" onfocus="this.blur();" title="Enter ä»¥åŠ å·¦ã€å³é”®å¯ä»¥å¿«é€Ÿå®šä½æŸ¥æ‰¾ç»“æžœ"></button>
+ </li>
+ </ul>
+ </div>
+
+ <div id="contentBox" class="contentBox round clearfix">
+ <div id="apiContent" class="apiContent">
+ <div id="api_setting" class="api_setting left">
+ <ul class="api_content_title"><li>setting é…置详解</li></ul>
+ <ul id="settingTree" class="ztree"></ul>
+ </div>
+ <div id="api_function" class="api_function right">
+ <ul class="api_content_title"><li>zTree 方法详解</li></ul>
+ <ul id="functionTree" class="ztree"></ul>
+ <ul class="api_content_title"><li>treeNode 节点数æ®è¯¦è§£</li></ul>
+ <ul id="treenodeTree" class="ztree"></ul>
+ </div>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+
+ <!-- overlayed -->
+ <div id="overlayDiv" class="baby_overlay">
+ <div id="overlayContent" class="content round clearfix">
+ <div class="overlaySearch">
+ <button class="ico16 z_search" onfocus="this.blur();" title="Enter ä»¥åŠ å·¦ã€å³é”®å¯ä»¥å¿«é€Ÿå®šä½æŸ¥æ‰¾ç»“æžœ"></button>
+ <input type="text" class="searchKey search empty" value=""><input type="text" class="searchResult search" value="">
+ <button class="ico16 searchPrev disabled" onfocus="this.blur();" title="Enter ä»¥åŠ å·¦ã€å³é”®å¯ä»¥å¿«é€Ÿå®šä½æŸ¥æ‰¾ç»“æžœ"></button><button class="ico16 searchNext disabled" onfocus="this.blur();" title="Enter ä»¥åŠ å·¦ã€å³é”®å¯ä»¥å¿«é€Ÿå®šä½æŸ¥æ‰¾ç»“æžœ"></button>
+ </div>
+ <a id="overlayDivCloseBtn" class="close"></a>
+ <div id="overlayDetailDiv" class="details"></div>
+ </div>
+ <div id="overlayDivArrow" class="baby_overlay_arrow"></div>
+ </div>
+ <script type="text/javascript" src="apiCss/jquery-1.6.2.min.js"></script>
+ <script type='text/javascript' src='apiCss/jquery.ztree.core-3.5.js'></script>
+ <script type='text/javascript' src='apiCss/api.js'></script>
+ <script type="text/javascript">
+ $(document).ready(function(){
+ apiContent._init();
+ });
+ </script>
+ </body>
+</html> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/API_en.html b/common/src/main/webapp/thirdparty/zTree/api/API_en.html
new file mode 100755
index 00000000..fc7488b3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/API_en.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <title>API Document [zTree -- jQuery tree plug-ins.]</title>
+ <link rel="stylesheet" href="apiCss/common.css" type="text/css">
+ <link rel='stylesheet' href='apiCss/zTreeStyleForApi.css' type='text/css'>
+ <script type="text/javascript">
+ var ie = (function(){
+ var undef,
+ v = 3,
+ div = document.createElement('div'),
+ all = div.getElementsByTagName('i');
+ while (
+ div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
+ all[0]
+ );
+ return v > 4 ? v : undef;
+ }()), ie6 = (ie === 6),
+ path = window.location.pathname.replace(/.*\/([^\/\.]*)\..*/g,"$1"),
+ langLib = [];
+ ie = ie<9;
+ if(ie) {
+ document.write('<link rel="stylesheet" href="apiCss/common_ie6.css" type="text/css">');
+ }
+ var lang = "en",
+ ajaxMsg = "If you use chrome browser, please copy the API files to local webserver. \n\n( because chrome browser can't allow AJAX access to 'file://' )";
+ </script>
+ </head>
+ <body>
+ <div id="header_wrap" class="header_wrap" style="padding-top: 30px;">
+ <div id="header" class="header round">
+ <div class="light-bulb" alt=""></div>
+ <div class="ieSuggest">If you use the Chrome / FireFox / Opera / IE9 browser will be even more dazzling effect!</div>
+ <div class="google_plus"><g:plusone></g:plusone></div>
+ <div class="header-text">
+ <h1><em>zTree v3.5.16 API Document</em></h1><p></p>
+ <p>all.js = core + excheck + exedit ( without exhide ); if you found some mistakes please contact me.</p>
+ </div>
+ <ul class="shortcuts language" style="top:0;">
+ <li><a href="API_cn.html" onclick="window.location.href='API_cn.html'"><button class="ico cn" title="Chinese" type="button"></button><span class=""></span></a></li>
+ </ul>
+ </div>
+ </div>
+ <div id="content_wrap" class="content_wrap">
+ <div id="content" class="content">
+ <div class="nav_section">
+ <ul>
+ <li class="first">Notes: </li>
+ <li><button class="ico16 z_core" onfocus="this.blur();"></button><span>core package</span></li>
+ <li><button class="ico16 z_check" onfocus="this.blur();"></button><span>excheck pack</span></li>
+ <li><button class="ico16 z_edit" onfocus="this.blur();"></button><span>exedit pack</span></li>
+ <li><button class="ico16 z_hide" onfocus="this.blur();"></button><span>exhide pack</span></li>
+ <li class="noline">
+ <button class="ico16 z_search" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button>
+ <input type="text" class="searchKey search empty" value=""><input type="text" class="searchResult search" value="">
+ <button class="ico16 searchPrev disabled" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button><button class="ico16 searchNext disabled" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button>
+ </li>
+ </ul>
+ </div>
+
+ <div id="contentBox" class="contentBox round clearfix">
+ <div id="apiContent" class="apiContent">
+ <div id="api_setting" class="api_setting left">
+ <ul class="api_content_title"><li>setting details</li></ul>
+ <ul id="settingTree" class="ztree"></ul>
+ </div>
+ <div id="api_function" class="api_function right">
+ <ul class="api_content_title"><li>zTree method details</li></ul>
+ <ul id="functionTree" class="ztree"></ul>
+ <ul class="api_content_title"><li>treeNode data details</li></ul>
+ <ul id="treenodeTree" class="ztree"></ul>
+ </div>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+
+ <!-- overlayed -->
+ <div id="overlayDiv" class="baby_overlay">
+ <div id="overlayContent" class="content round clearfix">
+ <div class="overlaySearch">
+ <button class="ico16 z_search" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button>
+ <input type="text" class="searchKey search empty" value=""><input type="text" class="searchResult search" value="">
+ <button class="ico16 searchPrev disabled" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button><button class="ico16 searchNext disabled" onfocus="this.blur();" title="'Enter', 'left' and 'right' key can locate the search results quickly."></button>
+ </div>
+ <a id="overlayDivCloseBtn" class="close"></a>
+ <div id="overlayDetailDiv" class="details"></div>
+ </div>
+ <div id="overlayDivArrow" class="baby_overlay_arrow"></div>
+ </div>
+ <script type="text/javascript" src="apiCss/jquery-1.6.2.min.js"></script>
+ <script type='text/javascript' src='apiCss/jquery.ztree.core-3.5.js'></script>
+ <script type='text/javascript' src='apiCss/api.js'></script>
+ <script type="text/javascript">
+ $(document).ready(function(){
+ apiContent._init();
+ });
+ </script>
+ </body>
+</html> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/api.js b/common/src/main/webapp/thirdparty/zTree/api/apiCss/api.js
new file mode 100755
index 00000000..37dd4ba3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/api.js
@@ -0,0 +1,592 @@
+var apiContent = {
+ zTree_Setting: null,
+ zTree_Node: null,
+ zTree_Function: null,
+ overlayDiv : null,
+ overlayContent : null,
+ overlayDetailDiv : null,
+ overlayCloseBtn: null,
+ overlayArrow: null,
+ contentBoxDiv : null,
+ settingDiv : null,
+ functionDiv : null,
+ overlaySearch: null,
+ searchKey: null,
+ searchResultInput: null,
+ searchPrevBtn: null,
+ searchNextBtn: null,
+ apiCache: {},
+ lastValue: "",
+ searchNodes: [],
+ searchNodesCur: 0,
+
+ _init: function() {
+ this.overlayDiv = $("#overlayDiv");
+ this.overlayContent = $("#overlayContent");
+ this.overlayDetailDiv = $("#overlayDetailDiv");
+ this.overlayCloseBtn = $("#overlayDivCloseBtn");
+ this.overlayArrow = $("#overlayDivArrow");
+ this.contentBoxDiv = $("#contentBox");
+ this.settingDiv = $("#api_setting");
+ this.functionDiv = $("#api_function");
+ this.searchKey = $(".searchKey");
+ this.overlaySearch = $(".overlaySearch");
+ this.searchResultInput = $(".searchResult");
+ this.searchPrevBtn = $(".searchPrev");
+ this.searchNextBtn = $(".searchNext");
+ var setting = {
+ view: {
+ fontCss: this.getFontCss,
+ showLine: false,
+ showIcon: this.showIcon,
+ showTitle: this.getTitle,
+ selectedMulti: false,
+ dblClickExpand: false
+ },
+ data: {
+ key: {
+ title: "tt"
+ },
+ simpleData: {
+ enable:true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: ""
+ }
+ },
+ callback: {
+ onNodeCreated: this.onNodeCreated,
+ beforeClick: this.beforeClick
+ }
+ };
+ var setting_nodes =[
+ {id:1, pId:0, t:"setting", name:"var setting = {", open:true},
+ {id:11, pId:1, t:"treeId", name:"treeId : \"\",", iconSkin:"core", showAPI:true},
+ {id:12, pId:1, t:"treeObj", name:"treeObj : null,", iconSkin:"core", showAPI:true},
+ {id:121, pId:1, name:""},
+
+ {id:20, pId:1, t:"async", name:"async : {", open:true},
+ {id:201, pId:20, t:"autoParam", name:"autoParam : [],", iconSkin:"core", showAPI:true},
+ {id:208, pId:20, t:"contentType", name:"contentType : \"application...\",", iconSkin:"core", showAPI:true},
+ {id:202, pId:20, t:"dataFilter", name:"dataFilter : null,", iconSkin:"core", showAPI:true},
+ {id:203, pId:20, t:"dataType", name:"dataType : \"text\",", iconSkin:"core", showAPI:true},
+ {id:204, pId:20, t:"enable", name:"enable : false,", iconSkin:"core", showAPI:true},
+ {id:205, pId:20, t:"otherParam", name:"otherParam : [],", iconSkin:"core", showAPI:true},
+ {id:206, pId:20, t:"type", name:"type : \"post\",", iconSkin:"core", showAPI:true},
+ {id:207, pId:20, t:"url", name:"url : \"\"", iconSkin:"core", showAPI:true},
+ {id:21, pId:1, name:"},"},
+ {id:22, pId:1, name:""},
+
+ {id:30, pId:1, t:"callback", name:"callback : {", open:true},
+ {id:3001, pId:30, t:"beforeAsync", name:"beforeAsync : null,", iconSkin:"core", showAPI:true},
+ {id:3002, pId:30, t:"beforeCheck", name:"beforeCheck : null,", iconSkin:"check", showAPI:true},
+ {id:3003, pId:30, t:"beforeClick", name:"beforeClick : null,", iconSkin:"core", showAPI:true},
+ {id:3004, pId:30, t:"beforeCollapse", name:"beforeCollapse : null,", iconSkin:"core", showAPI:true},
+ {id:3004, pId:30, t:"beforeDblClick", name:"beforeDblClick : null,", iconSkin:"core", showAPI:true},
+ {id:3005, pId:30, t:"beforeDrag", name:"beforeDrag : null,", iconSkin:"edit", showAPI:true},
+ {id:3006, pId:30, t:"beforeDragOpen", name:"beforeDragOpen : null,", iconSkin:"edit", showAPI:true},
+ {id:3007, pId:30, t:"beforeDrop", name:"beforeDrop : null,", iconSkin:"edit", showAPI:true},
+ {id:3029, pId:30, t:"beforeEditName", name:"beforeEditName : null,", iconSkin:"edit", showAPI:true},
+ {id:3008, pId:30, t:"beforeExpand", name:"beforeExpand : null,", iconSkin:"core", showAPI:true},
+ {id:3009, pId:30, t:"beforeMouseDown", name:"beforeMouseDown : null,", iconSkin:"core", showAPI:true},
+ {id:3010, pId:30, t:"beforeMouseUp", name:"beforeMouseUp : null,", iconSkin:"core", showAPI:true},
+ {id:3011, pId:30, t:"beforeRemove", name:"beforeRemove : null,", iconSkin:"edit", showAPI:true},
+ {id:3012, pId:30, t:"beforeRename", name:"beforeRename : null,", iconSkin:"edit", showAPI:true},
+ {id:3013, pId:30, t:"beforeRightClick", name:"beforeRightClick : null,", iconSkin:"core", showAPI:true},
+ {id:3014, pId:30, name:""},
+ {id:3015, pId:30, t:"onAsyncError", name:"onAsyncError : null,", iconSkin:"core", showAPI:true},
+ {id:3016, pId:30, t:"onAsyncSuccess", name:"onAsyncSuccess : null,", iconSkin:"core", showAPI:true},
+ {id:3017, pId:30, t:"onCheck", name:"onCheck : null,", iconSkin:"check", showAPI:true},
+ {id:3018, pId:30, t:"onClick", name:"onClick : null,", iconSkin:"core", showAPI:true},
+ {id:3019, pId:30, t:"onCollapse", name:"onCollapse : null,", iconSkin:"core", showAPI:true},
+ {id:3029, pId:30, t:"onDblClick", name:"onDblClick : null,", iconSkin:"core", showAPI:true},
+ {id:3020, pId:30, t:"onDrag", name:"onDrag : null,", iconSkin:"edit", showAPI:true},
+ {id:3030, pId:30, t:"onDragMove", name:"onDragMove : null,", iconSkin:"edit", showAPI:true},
+ {id:3021, pId:30, t:"onDrop", name:"onDrop : null,", iconSkin:"edit", showAPI:true},
+ {id:3022, pId:30, t:"onExpand", name:"onExpand : null,", iconSkin:"core", showAPI:true},
+ {id:3023, pId:30, t:"onMouseDown", name:"onMouseDown : null,", iconSkin:"core", showAPI:true},
+ {id:3024, pId:30, t:"onMouseUp", name:"onMouseUp : null,", iconSkin:"core", showAPI:true},
+ {id:3025, pId:30, t:"onNodeCreated", name:"onNodeCreated : null,", iconSkin:"core", showAPI:true},
+ {id:3026, pId:30, t:"onRemove", name:"onRemove : null,", iconSkin:"edit", showAPI:true},
+ {id:3027, pId:30, t:"onRename", name:"onRename : null,", iconSkin:"edit", showAPI:true},
+ {id:3028, pId:30, t:"onRightClick", name:"onRightClick : null", iconSkin:"core", showAPI:true},
+ {id:31, pId:1, name:"},"},
+ {id:32, pId:1, name:""},
+
+ {id:40, pId:1, t:"check", name:"check : {", open:true},
+ {id:405, pId:40, t:"autoCheckTrigger", name:"autoCheckTrigger : false,", iconSkin:"check", showAPI:true},
+ {id:401, pId:40, t:"chkboxType", name:"chkboxType : {\"Y\": \"ps\", \"N\": \"ps\"},", iconSkin:"check", showAPI:true},
+ {id:402, pId:40, t:"chkStyle", name:"chkStyle : \"checkbox\",", iconSkin:"check", showAPI:true},
+ {id:403, pId:40, t:"enable", name:"enable : false,", iconSkin:"check", showAPI:true},
+ {id:406, pId:40, t:"nocheckInherit", name:"nocheckInherit : false", iconSkin:"check", showAPI:true},
+ {id:407, pId:40, t:"chkDisabledInherit", name:"chkDisabledInherit : false", iconSkin:"check", showAPI:true},
+ {id:404, pId:40, t:"radioType", name:"radioType : \"level\"", iconSkin:"check", showAPI:true},
+ {id:41, pId:1, name:"},"},
+ {id:42, pId:1, name:""},
+
+ {id:50, pId:1, t:"data", name:"data : {", open:true},
+ {id:500, pId:50, t:"keep", name:"keep : {", open:true},
+ {id:5001, pId:500, t:"leaf", name:"leaf : false,", iconSkin:"core", showAPI:true},
+ {id:5002, pId:500, t:"parent", name:"parent : false", iconSkin:"core", showAPI:true},
+ {id:501, pId:50, name:"},"},
+
+ {id:510, pId:50, t:"key", name:"key : {", open:true},
+ {id:5101, pId:510, t:"checked", name:"checked : \"checked\",", iconSkin:"check", showAPI:true},
+ {id:5102, pId:510, t:"children", name:"children : \"children\",", iconSkin:"core", showAPI:true},
+ {id:5103, pId:510, t:"name", name:"name : \"name\",", iconSkin:"core", showAPI:true},
+ {id:5104, pId:510, t:"title", name:"title : \"\"", iconSkin:"core", showAPI:true},
+ {id:5105, pId:510, t:"url", name:"url : \"url\"", iconSkin:"core", showAPI:true},
+ {id:511, pId:50, name:"},"},
+
+ {id:520, pId:50, t:"simpleData", name:"simpleData : {", open:true},
+ {id:5201, pId:520, t:"enable", name:"enable : false,", iconSkin:"core", showAPI:true},
+ {id:5202, pId:520, t:"idKey", name:"idKey : \"id\",", iconSkin:"core", showAPI:true},
+ {id:5203, pId:520, t:"pIdKey", name:"pIdKey : \"pId\",", iconSkin:"core", showAPI:true},
+ {id:5204, pId:520, t:"rootPId", name:"rootPId : null", iconSkin:"core", showAPI:true},
+ {id:521, pId:50, name:"}"},
+ {id:51, pId:1, name:"},"},
+ {id:52, pId:1, name:""},
+
+ {id:60, pId:1, t:"edit", name:"edit : {", open:true},
+ {id:601, pId:60, t:"drag", name:"drag : {", open:true},
+ {id:60111, pId:601, t:"autoExpandTrigger", name:"autoExpandTrigger : true,", iconSkin:"edit", showAPI:true},
+ {id:60101, pId:601, t:"isCopy", name:"isCopy : true,", iconSkin:"edit", showAPI:true},
+ {id:60102, pId:601, t:"isMove", name:"isMove : true,", iconSkin:"edit", showAPI:true},
+ {id:60103, pId:601, t:"prev", name:"prev : true,", iconSkin:"edit", showAPI:true},
+ {id:60104, pId:601, t:"next", name:"next : true,", iconSkin:"edit", showAPI:true},
+ {id:60105, pId:601, t:"inner", name:"inner : true,", iconSkin:"edit", showAPI:true},
+ {id:60107, pId:601, t:"borderMax", name:"borderMax : 10,", iconSkin:"edit", showAPI:true},
+ {id:60108, pId:601, t:"borderMin", name:"borderMin : -5,", iconSkin:"edit", showAPI:true},
+ {id:60106, pId:601, t:"minMoveSize", name:"minMoveSize : 5,", iconSkin:"edit", showAPI:true},
+ {id:60109, pId:601, t:"maxShowNodeNum", name:"maxShowNodeNum : 5,", iconSkin:"edit", showAPI:true},
+ {id:60110, pId:601, t:"autoOpenTime", name:"autoOpenTime : 500", iconSkin:"edit", showAPI:true},
+ {id:602, pId:60, name:"},"},
+ {id:608, pId:60, t:"editNameSelectAll", name:"editNameSelectAll : false,", iconSkin:"edit", showAPI:true},
+ {id:603, pId:60, t:"enable", name:"enable : false,", iconSkin:"edit", showAPI:true},
+ {id:604, pId:60, t:"removeTitle", name:"removeTitle : \"remove\",", iconSkin:"edit", showAPI:true},
+ {id:605, pId:60, t:"renameTitle", name:"renameTitle : \"rename\",", iconSkin:"edit", showAPI:true},
+ {id:606, pId:60, t:"showRemoveBtn", name:"showRemoveBtn : true,", iconSkin:"edit", showAPI:true},
+ {id:607, pId:60, t:"showRenameBtn", name:"showRenameBtn : true", iconSkin:"edit", showAPI:true},
+ {id:61, pId:1, name:"},"},
+ {id:62, pId:1, name:""},
+
+ {id:70, pId:1, t:"view", name:"view : {", open:true},
+ {id:7001, pId:70, t:"addDiyDom", name:"addDiyDom : null,", iconSkin:"core", showAPI:true},
+ {id:7002, pId:70, t:"addHoverDom", name:"addHoverDom : null,", iconSkin:"edit", showAPI:true},
+ {id:7003, pId:70, t:"autoCancelSelected", name:"autoCancelSelected : true,", iconSkin:"core", showAPI:true},
+ {id:7004, pId:70, t:"dblClickExpand", name:"dblClickExpand : true,", iconSkin:"core", showAPI:true},
+ {id:7005, pId:70, t:"expandSpeed", name:"expandSpeed : \"fast\",", iconSkin:"core", showAPI:true},
+ {id:7006, pId:70, t:"fontCss", name:"fontCss : {},", iconSkin:"core", showAPI:true},
+ {id:7012, pId:70, t:"nameIsHTML", name:"nameIsHTML : false,", iconSkin:"core", showAPI:true},
+ {id:7007, pId:70, t:"removeHoverDom", name:"removeHoverDom : null,", iconSkin:"edit", showAPI:true},
+ {id:7008, pId:70, t:"selectedMulti", name:"selectedMulti : true,", iconSkin:"core", showAPI:true},
+ {id:7009, pId:70, t:"showIcon", name:"showIcon : true,", iconSkin:"core", showAPI:true},
+ {id:7010, pId:70, t:"showLine", name:"showLine : true,", iconSkin:"core", showAPI:true},
+ {id:7011, pId:70, t:"showTitle", name:"showTitle : true,", iconSkin:"core", showAPI:true},
+ {id:7012, pId:70, t:"txtSelectedEnable", name:"txtSelectedEnable : false", iconSkin:"core", showAPI:true},
+ {id:71, pId:1, name:"}"},
+
+ {id:2, pId:0, name:"}"}
+ ];
+
+ var treenode_nodes =[
+ {id:1, pId:0, t:"treeNode", name:"treeNode : {", open:true},
+ {id:101, pId:1, t:"checked", name:"checked", iconSkin:"check", showAPI:true},
+ {id:102, pId:1, t:"children", name:"children", iconSkin:"core", showAPI:true},
+ {id:128, pId:1, t:"chkDisabled", name:"chkDisabled", iconSkin:"check", showAPI:true},
+ {id:127, pId:1, t:"click", name:"click", iconSkin:"core", showAPI:true},
+ {id:103, pId:1, t:"getCheckStatus", name:"getCheckStatus ()", iconSkin:"check", showAPI:true},
+ {id:104, pId:1, t:"getNextNode", name:"getNextNode ()", iconSkin:"core", showAPI:true},
+ {id:105, pId:1, t:"getParentNode", name:"getParentNode ()", iconSkin:"core", showAPI:true},
+ {id:106, pId:1, t:"getPreNode", name:"getPreNode ()", iconSkin:"core", showAPI:true},
+ {id:129, pId:1, t:"halfCheck", name:"halfCheck", iconSkin:"check", showAPI:true},
+ {id:107, pId:1, t:"icon", name:"icon", iconSkin:"core", showAPI:true},
+ {id:108, pId:1, t:"iconClose", name:"iconClose", iconSkin:"core", showAPI:true},
+ {id:109, pId:1, t:"iconOpen", name:"iconOpen", iconSkin:"core", showAPI:true},
+ {id:110, pId:1, t:"iconSkin", name:"iconSkin", iconSkin:"core", showAPI:true},
+ {id:131, pId:1, t:"isHidden", name:"isHidden", iconSkin:"hide", showAPI:true},
+ {id:111, pId:1, t:"isParent", name:"isParent", iconSkin:"core", showAPI:true},
+ {id:132, pId:1, t:"name", name:"name", iconSkin:"core", showAPI:true},
+ {id:112, pId:1, t:"nocheck", name:"nocheck", iconSkin:"check", showAPI:true},
+ {id:113, pId:1, t:"open", name:"open", iconSkin:"core", showAPI:true},
+ {id:133, pId:1, t:"target", name:"target", iconSkin:"core", showAPI:true},
+ {id:134, pId:1, t:"url", name:"url", iconSkin:"core", showAPI:true},
+ {id:114, pId:1, t:"diy", name:"*DIY*", iconSkin:"core", showAPI:true},
+ {id:115, pId:1, name:""},
+ {id:116, pId:1, t:"check_Child_State", name:"[check_Child_State]", iconSkin:"check", showAPI:true},
+ {id:117, pId:1, t:"check_Focus", name:"[check_Focus]", iconSkin:"check", showAPI:true},
+ {id:118, pId:1, t:"checkedOld", name:"[checkedOld]", iconSkin:"check", showAPI:true},
+ {id:119, pId:1, t:"editNameFlag", name:"[editNameFlag]", iconSkin:"edit", showAPI:true},
+ {id:120, pId:1, t:"isAjaxing", name:"[isAjaxing]", iconSkin:"core", showAPI:true},
+ {id:121, pId:1, t:"isFirstNode", name:"[isFirstNode]", iconSkin:"core", showAPI:true},
+ {id:122, pId:1, t:"isHover", name:"[isHover]", iconSkin:"edit", showAPI:true},
+ {id:123, pId:1, t:"isLastNode", name:"[isLastNode]", iconSkin:"core", showAPI:true},
+ {id:124, pId:1, t:"level", name:"[level]", iconSkin:"core", showAPI:true},
+ {id:125, pId:1, t:"parentTId", name:"[parentTId]", iconSkin:"core", showAPI:true},
+ {id:126, pId:1, t:"tId", name:"[tId]", iconSkin:"core", showAPI:true},
+ {id:130, pId:1, t:"zAsync", name:"[zAsync]", iconSkin:"core", showAPI:true},
+ {id:2, pId:0, name:"}"}
+ ];
+
+ var function_nodes =[
+ {id:1, pId:0, t:"$.fn.zTree", name:"$.fn.zTree : {", open:true},
+ {id:11, pId:1, t:"init", name:"init (obj, zSetting, zNodes)", iconSkin:"core", showAPI:true},
+ {id:12, pId:1, t:"getZTreeObj", name:"getZTreeObj (treeId)", iconSkin:"core", showAPI:true},
+ {id:14, pId:1, t:"destroy", name:"destroy (treeId)", iconSkin:"core", showAPI:true},
+ {id:13, pId:1, t:"_z", name:"_z : {tools, view, event, data}", iconSkin:"core", showAPI:true},
+ {id:2, pId:0, name:"}"},
+ {id:3, pId:0, name:""},
+ {id:4, pId:0, t:"zTreeObj", name:"zTreeObj : {", open:true},
+ {id:401, pId:4, t:"setting", name:"setting", iconSkin:"core", showAPI:true},
+ {id:402, pId:4, t:"addNodes", name:"addNodes (parentNode, newNodes, isSilent)", iconSkin:"core", showAPI:true},
+ {id:403, pId:4, t:"cancelEditName", name:"cancelEditName (newName)", iconSkin:"edit", showAPI:true},
+ {id:404, pId:4, t:"cancelSelectedNode", name:"cancelSelectedNode (node)", iconSkin:"core", showAPI:true},
+ {id:405, pId:4, t:"checkAllNodes", name:"checkAllNodes (checked)", iconSkin:"check", showAPI:true},
+ {id:406, pId:4, t:"checkNode", name:"checkNode (node, checked, checkTypeFlag, callbackFlag)", iconSkin:"check", showAPI:true},
+ {id:407, pId:4, t:"copyNode", name:"copyNode (targetNode, node, moveType, isSilent)", iconSkin:"edit", showAPI:true},
+ {id:436, pId:4, t:"destroy", name:"destroy ()", iconSkin:"core", showAPI:true},
+ {id:408, pId:4, t:"editName", name:"editName (node)", iconSkin:"edit", showAPI:true},
+ {id:409, pId:4, t:"expandAll", name:"expandAll (expandFlag)", iconSkin:"core", showAPI:true},
+ {id:410, pId:4, t:"expandNode", name:"expandNode (node, expandFlag, sonSign, focus, callbackFlag)", iconSkin:"core", showAPI:true},
+ {id:411, pId:4, t:"getChangeCheckedNodes", name:"getChangeCheckedNodes ()", iconSkin:"check", showAPI:true},
+ {id:412, pId:4, t:"getCheckedNodes", name:"getCheckedNodes (checked)", iconSkin:"check", showAPI:true},
+ {id:413, pId:4, t:"getNodeByParam", name:"getNodeByParam (key, value, parentNode)", iconSkin:"core", showAPI:true},
+ {id:414, pId:4, t:"getNodeByTId", name:"getNodeByTId (tId)", iconSkin:"core", showAPI:true},
+ {id:415, pId:4, t:"getNodeIndex", name:"getNodeIndex (node)", iconSkin:"core", showAPI:true},
+ {id:416, pId:4, t:"getNodes", name:"getNodes ()", iconSkin:"core", showAPI:true},
+ {id:431, pId:4, t:"getNodesByFilter", name:"getNodesByFilter (filter, isSingle, parentNode, invokeParam)", iconSkin:"core", showAPI:true},
+ {id:417, pId:4, t:"getNodesByParam", name:"getNodesByParam (key, value, parentNode)", iconSkin:"core", showAPI:true},
+ {id:418, pId:4, t:"getNodesByParamFuzzy", name:"getNodesByParamFuzzy (key, value, parentNode)", iconSkin:"core", showAPI:true},
+ {id:419, pId:4, t:"getSelectedNodes", name:"getSelectedNodes ()", iconSkin:"core", showAPI:true},
+ {id:432, pId:4, t:"hideNode", name:"hideNode (node)", iconSkin:"hide", showAPI:true},
+ {id:433, pId:4, t:"hideNodes", name:"hideNodes (nodes)", iconSkin:"hide", showAPI:true},
+ {id:420, pId:4, t:"moveNode", name:"moveNode (targetNode, node, moveType, isSilent)", iconSkin:"edit", showAPI:true},
+ {id:421, pId:4, t:"reAsyncChildNodes", name:"reAsyncChildNodes (parentNode, reloadType, isSilent)", iconSkin:"core", showAPI:true},
+ {id:422, pId:4, t:"refresh", name:"refresh ()", iconSkin:"core", showAPI:true},
+ {id:423, pId:4, t:"removeChildNodes", name:"removeChildNodes (parentNode)", iconSkin:"core", showAPI:true},
+ {id:424, pId:4, t:"removeNode", name:"removeNode (node, callbackFlag)", iconSkin:"core", showAPI:true},
+ {id:425, pId:4, t:"selectNode", name:"selectNode (node, addFlag)", iconSkin:"core", showAPI:true},
+ {id:430, pId:4, t:"setChkDisabled", name:"setChkDisabled (node, disabled, inheritParent, inheritChildren)", iconSkin:"check", showAPI:true},
+ {id:426, pId:4, t:"setEditable", name:"setEditable (editable)", iconSkin:"edit", showAPI:true},
+ {id:434, pId:4, t:"showNode", name:"showNode (node)", iconSkin:"hide", showAPI:true},
+ {id:435, pId:4, t:"showNodes", name:"showNodes (nodes)", iconSkin:"hide", showAPI:true},
+ {id:427, pId:4, t:"transformToArray", name:"transformToArray (nodes)", iconSkin:"core", showAPI:true},
+ {id:428, pId:4, t:"transformTozTreeNodes", name:"transformTozTreeNodes (simpleNodes)", iconSkin:"core", showAPI:true},
+ {id:429, pId:4, t:"updateNode", name:"updateNode (node, checkTypeFlag)", iconSkin:"core", showAPI:true},
+ {id:5, pId:0, name:"}"}
+ ];
+
+ apiContent.zTree_Setting = $.fn.zTree.init($("#settingTree"), $.fn.zTree._z.tools.clone(setting), setting_nodes);
+ apiContent.zTree_Node = $.fn.zTree.init($("#treenodeTree"), $.fn.zTree._z.tools.clone(setting), treenode_nodes);
+ apiContent.zTree_Function = $.fn.zTree.init($("#functionTree"), $.fn.zTree._z.tools.clone(setting), function_nodes);
+ this.bindEvent();
+
+ },
+ bindEvent: function() {
+ $(document).bind("keydown", this.listenKeyDown)
+ this.overlayCloseBtn.bind("click", apiContent.overlayClose);
+ this.searchResultInput.bind("click", function(e) {
+ $(this).prev().get(0).focus();
+ this.blur();
+ }).bind("focus", function(e) {
+ this.blur();
+ });
+ this.searchKey.bind("focus", this.focusKey)
+ .bind("blur", this.blurKey)
+ .bind("propertychange", this.searchNode)
+ .bind("input", this.searchNode);
+ this.searchPrevBtn.bind("click", this.searchPrev);
+ this.searchNextBtn.bind("click", this.searchNext);
+ },
+ setSameKey: function(value) {
+ apiContent.searchKey.attr("value", value);
+ },
+ focusKey: function(e) {
+ if (apiContent.searchKey.hasClass("empty")) {
+ apiContent.searchKey.removeClass("empty");
+ }
+ },
+ blurKey: function(e) {
+ apiContent.setSameKey(e.target.value);
+ if (e.target.value === "") {
+ apiContent.searchKey.addClass("empty");
+ }
+ },
+ listenKeyDown: function(e) {
+ if (e.keyCode=="13" && apiContent.overlayDiv.is(":hidden")) {
+ apiContent.openAPI();
+ } else if (e.keyCode=="37") {
+ apiContent.searchPrev();
+ } else if (e.keyCode=="13" || e.keyCode=="39") {
+ apiContent.searchNext();
+ }
+ },
+ openAPI: function() {
+ if (apiContent.searchNodes.length > 0) {
+ var setting_zTree = $.fn.zTree.getZTreeObj("settingTree"),
+ treenode_zTree = $.fn.zTree.getZTreeObj("treenodeTree"),
+ function_zTree = $.fn.zTree.getZTreeObj("functionTree");
+ if (apiContent.searchNodesCur < 0 || apiContent.searchNodesCur > apiContent.searchNodes.length -1) {
+ apiContent.searchNodesCur = 0;
+ }
+ var node = apiContent.searchNodes[apiContent.searchNodesCur];
+
+ if (node.tId.indexOf("setting") > -1) {
+ setting_zTree.selectNode(node);
+ } else if (node.tId.indexOf("treenode") > -1) {
+ treenode_zTree.selectNode(node);
+ } else {
+ function_zTree.selectNode(node);
+ }
+ apiContent.beforeClick(node.tId.substring(0, node.tId.indexOf("_")), node, true);
+ apiContent.searchCur();
+ }
+ },
+ searchNode: function(e) {
+ var setting_zTree = $.fn.zTree.getZTreeObj("settingTree"),
+ treenode_zTree = $.fn.zTree.getZTreeObj("treenodeTree"),
+ function_zTree = $.fn.zTree.getZTreeObj("functionTree");
+ if (apiContent.curKey == e.target.value) return;
+ apiContent.curKey = e.target.value;
+ var value = $.trim(apiContent.curKey);
+ apiContent.setSameKey(apiContent.curKey);
+ if (apiContent.searchKey.hasClass("empty")) {
+ value = "";
+ apiContent.searchResultInput.removeClass("noResult").attr("value","");
+ }
+ if (apiContent.lastValue === value) return;
+
+ apiContent.updateNodes(false);
+ apiContent.lastValue = value;
+ if (value === "" || value.length < 2) {
+ apiContent.searchNodes = [];
+ apiContent.searchNodesCur = -1;
+ apiContent.searchCur(true);
+ return;
+ }
+
+ var settingNodeList = setting_zTree.getNodesByFilter(apiContent.searchFilter);
+ var functionNodeList = function_zTree.getNodesByFilter(apiContent.searchFilter);
+ var treenodeNodeList = treenode_zTree.getNodesByFilter(apiContent.searchFilter);
+ apiContent.searchNodes = settingNodeList.concat(functionNodeList).concat(treenodeNodeList);
+ apiContent.searchNodesCur = -1;
+ apiContent.searchCur();
+ apiContent.updateNodes(true);
+ },
+ searchFilter: function(node) {
+ var value = $.trim(apiContent.searchKey.get(0).value).toLowerCase();
+ return (node.showAPI && node.name.toLowerCase().indexOf(value) > -1);
+ },
+ searchPrev: function(e) {
+ if (apiContent.searchPrevBtn.hasClass("disabled")) return;
+ apiContent.searchNodesCur--;
+ if (apiContent.searchNodesCur < 0 || apiContent.searchNodesCur > apiContent.searchNodes.length -1) {
+ apiContent.searchNodesCur = apiContent.searchNodes.length -1;
+ }
+ apiContent.openAPI();
+ },
+ searchNext: function(e) {
+ if (apiContent.searchNextBtn.hasClass("disabled")) return;
+ apiContent.searchNodesCur++;
+ apiContent.openAPI();
+ },
+ searchCur: function(init) {
+ var result = apiContent.searchNodes;
+ if (init) {
+ apiContent.searchResultInput.removeClass("noResult").attr("value","");
+ } else if (result.length == 0) {
+ apiContent.searchResultInput.addClass("noResult").attr("value"," [ 0 / 0 ] ");
+ } else {
+ apiContent.searchResultInput.removeClass("noResult").attr("value"," [ " + (apiContent.searchNodesCur > -1 ? apiContent.searchNodesCur+1 : "?")+ " / " + result.length + " ] ");
+ }
+ if (result.length > 0) {
+ apiContent.searchPrevBtn.removeClass("disabled");
+ apiContent.searchNextBtn.removeClass("disabled");
+ } else {
+ apiContent.searchPrevBtn.addClass("disabled");
+ apiContent.searchNextBtn.addClass("disabled");
+ }
+ },
+ updateNodes: function(highlight) {
+ var setting_zTree = $.fn.zTree.getZTreeObj("settingTree"),
+ treenode_zTree = $.fn.zTree.getZTreeObj("treenodeTree"),
+ function_zTree = $.fn.zTree.getZTreeObj("functionTree"),
+ node = null;
+ for( var i=0, l=apiContent.searchNodes.length; i<l; i++) {
+ node = apiContent.searchNodes[i];
+ if (node.level > 0) {
+ node.highlight = highlight;
+ if (node.tId.indexOf("setting") > -1) {
+ setting_zTree.updateNode(node);
+ } else if (node.tId.indexOf("treenode") > -1) {
+ treenode_zTree.updateNode(node);
+ } else {
+ function_zTree.updateNode(node);
+ }
+ }
+ }
+ },
+ getFontCss: function(treeId, treeNode) {
+ return (!!treeNode.highlight) ? {color:"#A60000", "font-weight":"bold"} : {color:"#333", "font-weight":"normal"};
+ },
+ getTitle: function(treeId, node) {
+ var t = [], n = node;
+ while (n && !!n.t) {
+ t.push(n.t);
+ n = n.getParentNode();
+ }
+ t = t.reverse();
+ node.tt = t.join('.');
+ return true;
+ },
+ showIcon: function(treeId, node) {
+ return (!!node.iconSkin);
+ },
+ onNodeCreated: function (e, treeId, node) {
+ var a = $("#" + node.tId + "_a");
+ if (node.showAPI) {
+ a.attr("rel", "#overlayDiv");
+ } else {
+ a.css({cursor: "default"});
+ }
+ },
+ beforeClick: function (treeId, node, noClear) {
+ if (!node.showAPI) return false;
+ var o = $("#" + node.tId + "_a");
+ if (!!apiContent.apiCache[node.tId]) {
+ apiContent.tmpDiv.html(apiContent.apiCache[node.tId]);
+ apiContent.overlayShow(o, (apiContent.lastNode === node));
+ } else {
+ apiContent.overlayAjax(treeId, node);
+ }
+ apiContent.lastNode = node;
+ if (node.tId.indexOf("settingTree")>-1) {
+ apiContent.settingDiv.removeClass("right").addClass("left");
+ apiContent.functionDiv.removeClass("left").addClass("right");
+ } else {
+ apiContent.settingDiv.removeClass("left").addClass("right");
+ apiContent.functionDiv.removeClass("right").addClass("left");
+ }
+
+ if (!noClear) {
+ apiContent.clearSelectedNode();
+ }
+ return true;
+ },
+ clearSelectedNode: function() {
+ apiContent.zTree_Setting.cancelSelectedNode();
+ apiContent.zTree_Node.cancelSelectedNode();
+ apiContent.zTree_Function.cancelSelectedNode();
+ },
+ overlayAutoClose: function(e) {
+ var eId = e.target.id, eRel = e.target.getAttribute("rel"), eClass = e.target.className;
+ if (eId === "overlayDiv" || eId === "overlayDivArrow" || eClass.indexOf("searchPrev") > -1 || eClass.indexOf("searchNext") > -1 || !!eRel) return;
+ if (!$(e.target).parents("[rel]").length && !$(e.target).parents("#overlayDiv").length) {
+ apiContent.overlayClose();
+ }
+ },
+ overlayClose: function() {
+ var o = apiContent.overlayDiv;
+ o.stop();
+ apiContent.clearSelectedNode();
+ if (ie) {
+ o.hide();
+ } else {
+ setTimeout(function() {o.fadeTo("fast", 0, function(){o.hide();})}, 200);
+ }
+ $(document).unbind("click", apiContent.overlayAutoClose);
+ },
+ overlayShow: function(target, isSameNode) {
+ var w = $(window), o = apiContent.overlayDiv, a = apiContent.overlayArrow,
+ oc = apiContent.overlayContent, c = apiContent.contentBoxDiv,
+ t = target.offset().top - 30,
+ cMaxLeft = c.offset().left + c.outerWidth({margin:true}) - o.outerWidth({margin:true}) - 10,
+ l = Math.min(cMaxLeft, target.offset().left + target.width() + 40),
+ arrowT = target.offset().top + 16,
+ wMinTop = 100, footerHeight = 50, onlyFade = false,
+ wHeight = w.height(), wScrollTop=w.scrollTop(), wMaxTop = wHeight + wScrollTop - footerHeight;
+ if (!apiContent.overlayMaxTop) {
+ apiContent.overlayMaxTop = apiContent.contentBoxDiv.offset().top + apiContent.contentBoxDiv.height();
+ }
+ o.stop();
+ if (o.css("display") !== "block") {
+ o.css({top: t, left: l});
+ a.css({top:arrowT - t});
+ $(document).bind("click", apiContent.overlayAutoClose);
+ }
+ if (ie) {
+ onlyFade = true;
+ o.show();
+ } else {
+ o.fadeTo("fast", 1);
+ }
+
+ var h = apiContent.tmpDiv.outerHeight({margin:true}) + apiContent.overlaySearch.outerHeight();
+ if ((t + h) > wMaxTop) {
+ t = wMaxTop - h;
+ }
+ if ((t + h) > apiContent.overlayMaxTop) {
+ t = apiContent.overlayMaxTop - h;
+ }
+ t = Math.max(t, wScrollTop, wMinTop);
+ if ((t + h) > ($("body").height()-footerHeight-20)) {
+ o.css("padding-bottom", footerHeight + "px");
+ } else {
+ o.css("padding-bottom", "0");
+ }
+ apiContent.overlayDetailDiv.empty();
+ apiContent.overlayDetailDiv.append(apiContent.tmpDiv.children());
+ if (!onlyFade) {
+ onlyFade = (isSameNode && t === parseInt(o.css("top").replace("px", "")));
+ }
+
+ a.removeClass("reverse");
+ if ( (arrowT - t) > (h-55) ) {
+ a.addClass("reverse");
+ arrowT -= 55;
+ }
+
+ if (onlyFade) {
+ o.css({top: t, left: l});
+ oc.css({height: h});
+ a.css({top:arrowT - t});
+ } else {
+ o.animate({top: t, left: l}, {duration: "normal",easing: "swing", complete:null});
+ oc.animate({height: h}, {duration: "fast",easing: "swing", complete:null});
+ a.animate({top:arrowT - t}, {duration: "normal",easing: "linear", complete:null});
+ }
+ },
+ overlayAjax: function(treeId, node) {
+ var o = $("#" + node.tId + "_a");
+ if (node.isAjax) return;
+ node.isAjax = true;
+ $.ajax({
+ type: "get",
+ url: "" + lang + "/" + node.tt.replace("$.", "") + ".html",
+ data: null,
+ dataType: "text",
+ success: function(msg) {
+ if (!apiContent.tmpDiv) {
+ var tmpDiv = $(document.createElement("div"));
+ tmpDiv.addClass("baby_overlay_tmp");
+ $("body").append(tmpDiv)
+ apiContent.tmpDiv = $(document.createElement("div"));
+ apiContent.tmpDiv.addClass("details");
+ tmpDiv.append(apiContent.tmpDiv);
+
+ } else {
+ apiContent.tmpDiv.empty();
+ }
+ apiContent.tmpDiv.html(msg);
+ apiContent.overlayShow(o, false);
+ apiContent.apiCache[node.tId] = msg;
+ node.isAjax = false;
+ },
+ error: function(XMLHttpRequest, textStatus, errorThrown) {
+ alert(ajaxMsg)
+ if (apiContent.tmpDiv) apiContent.tmpDiv.empty();
+ node.isAjax = false;
+ }
+ });
+ }
+} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/common.css b/common/src/main/webapp/thirdparty/zTree/api/apiCss/common.css
new file mode 100755
index 00000000..78f910c7
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/common.css
@@ -0,0 +1,219 @@
+/* Resets */
+html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
+ margin: 0;padding: 0;border: 0;outline: 0;font-weight: inherit;font-style: inherit;font-size: 100%;font-family: inherit;vertical-align: baseline;}
+:focus {outline: 0;}
+body {color: #2f332a;font: 15px/21px Arial, Helvetica, simsun, sans-serif;background: #528036 url(img/background.jpg) no-repeat fixed 0 0;}
+p {padding-bottom: 20px;}
+ol, ul {list-style: none;}
+table {border-collapse: separate;border-spacing: 0;}
+caption, th, td {text-align: left;font-weight: normal;}
+strong {font-weight: bold;}
+em {font-style: italic;}
+hr {display: none;}
+.font1 {color: white;background-color: #528036;}
+.right {float: right;}
+.left {float: left;}
+.hide {display: none;}
+.round {-moz-border-radius: 15px;-webkit-border-radius: 15px;-khtml-border-radius: 15px;border-radius: 15px;}
+.clear {clear: both;}
+.clearfix {display: block;}
+.clearfix:after {content: ".";display: block;clear: both;visibility: hidden;line-height: 0;height: 0;}
+html[xmlns] .clearfix {display: block;}
+* html .clearfix {height: 1%;}
+
+/* Link Styles */
+a {color: #528036;}
+a:link, a:visited {text-decoration: none;}
+a:hover {color: #000;text-decoration: none;}
+a:active {text-decoration: none;}
+
+/* Headings */
+h1, h2, h3, h4, h5, h6 {color: #2f332a;font-weight: bold;font-family: Helvetica, Arial, simsun, sans-serif;padding-bottom: 5px;}
+h1 {font-size: 36px;line-height: 44px;}
+h2 {font-size: 20px;line-height: 20px;}
+h3 {font-size: 14px;line-height: 14px;}
+h4 {font-size: 14px;font-weight: normal;line-height: 25px;}
+
+/* Wraps */
+.header_wrap {position: relative;min-width: 940px;padding: 100px 30px 0 30px;}
+.content_wrap {position: relative;min-width: 940px;padding: 0 30px 50px 30px;}
+.footer_wrap {bottom: 0;height: 47px;width: 100%;background-color: #1b1b1b;border-top: 1px solid #749e58;}
+
+/* Header */
+.header {position: relative;width: 940px;margin: 0 auto;height: 160px;border: 1px solid white;background: transparent url(img/header-bg.png) repeat-x 0 -50px;}
+.header-text {padding: 40px 25px 15px 120px;font-size: 18px;line-height: 24px;color: #747d67;font-family: Helvetica, sans-serif;}
+.header-text img {padding-bottom: 5px;}
+.shortcuts {white-space: nowrap;text-align: right;position: absolute;top: -45px;right: 5px;}
+.shortcuts.language {top: -85px;right:0px;}
+.shortcuts li {display: inline;font-size: 18px;line-height: 28px;font-family: Helvetica, Arial, simsun, sans-serif;padding-bottom: 5px;margin-left: 30px;cursor: pointer;}
+.shortcuts li button {cursor: pointer;}
+.shortcuts li span {border-bottom: 1px dotted white;}
+.shortcuts li span.selected {padding: 2px;background-color: #528036;}
+.shortcuts li a {color: #fff;}
+.ieSuggest {display:none;font-size: 12px;color: silver;position: absolute;left: 10px;top: 2px;}
+.google_plus {position: absolute;right: 10px; top:10px;}
+.light-bulb {position: absolute;left: -20px;bottom: -35px;width:116px;height:180px;background-image:url(img/lightbulb.png);background-repeat: no-repeat;}
+
+/* Content */
+.content {position: relative;width: 940px;margin: 0 auto;}
+.nav_section {position: relative;height: 20px;font-family: "Myriad Pro", "Trebuchet MS", sans-serif;font-size: 15px;color: #253;padding: 20px 0;}
+.nav_section ul {position: absolute;right: 10px;}
+.nav_section ul li {display: inline;line-height: 20px;margin: 0 5px 0 20px;border-bottom: 1px dotted white;}
+.nav_section ul li.noline {border-bottom: 0;}
+.nav_section ul li a {color: #fff;}
+.nav_section ul li a.selected {padding: 2px;background-color: #528036;}
+.nav_section ul li.first {border: none;}
+.content .title {margin: 50px 30px 20px 70px;}
+.content li {margin-bottom: 5px;}
+.contentBox {position: relative;overflow: hidden;border: 1px solid white;min-height: 200px;line-height: 25px;background: transparent url(img/contact-bg.png) repeat-x 0 0;}
+
+.zTreeInfo {display:none;width: 940px;position: absolute;}
+.zTreeInfo p {padding-bottom: 50px;}
+.zTreeInfo-left {float: left;width: 280px;height:300px;padding: 0 50px 60px 75px;background:url(img/zTreeIntroduction.jpg) no-repeat 30px 30px;}
+.zTreeInfo-right {position: relative;float: right;width: 475px;padding: 0 50px 60px 0;}
+.zTreeInfo-right li {font-size: 12px;list-style-type: disc;}
+
+.license {display:none;width: 940px;position: absolute;}
+
+.donateInfo {display:block;width: 940px;position: absolute;}
+
+.links {display:none;width: 940px;position: absolute;}
+.links .content {float: left;width: 160px;height:200px;padding: 0 10px 10px 2px;text-align: center;}
+.links .content.first {margin-left: 30px;}
+
+.contact {display:none;width: 940px;position: absolute;}
+.contact .myhome { position: absolute; top:10px; left:620px; width:300px; height:266px; background: transparent url(img/myhome.gif) scroll no-repeat 0 0;}
+
+.siteTag {position: absolute;left: -16px;top: 109px;z-index: 10;width: 65px;height: 46px;padding:0;margin:0 10px 0 0;
+ vertical-align:middle;border:0 none;background: transparent url(img/siteTag.png) scroll no-repeat 0 0;}
+.siteTag.tag_zTreeInfo {background-position: 0 0}
+.siteTag.tag_license {background-position: 0 -46px}
+.siteTag.tag_donate {background-position: 0 -92px}
+.siteTag.tag_contact {background-position: 0 -138px}
+
+.apiContent {width: 940px;}
+.apiContent .right {float: right;padding-right: 100px;}
+.apiContent .left {float: left;padding-right: 20px;border-right: 1px dotted silver;}
+.api_setting {position: relative;margin:20px 0 20px 20px;}
+.api_function {position: relative;margin:20px 0 20px 30px;padding-right: 10px;}
+.api_content_title {text-align: center;font-weight: bold;}
+
+.demoContent {width: 940px;}
+.demoContent .right {float: right;padding: 20px;width: 600px;}
+.demoContent .left {float: left;padding: 20px;}
+.demoContent iframe {width:600px;min-height: 530px;}
+
+.faqContent {width: 940px;}
+.faqContent .right {float: right;padding: 20px;width: 600px;}
+.faqContent .left {float: left;padding: 20px;}
+.faqContent iframe {width:600px;min-height: 300px;}
+
+.baby_overlay_tmp {position: absolute;top:0; left:-5000px;display:block;visibility: hidden;width:640px;font-size:11px;}
+.baby_overlay_tmp .details {padding: 20px;}
+.baby_overlay {display:none;position:absolute;z-index:99;left:0; top:0;width:640px;color:#fff;font-size:11px;}
+.baby_overlay .content {width:100%; height:100px;overflow: hidden;background: transparent url(img/overlay_bg.png) scroll repeat 0 0;}
+.baby_overlay .details {padding:0 20px 20px 20px;}
+.baby_overlay .close {background-image:url(img/close.png);position:absolute; right:5px; top:5px;cursor:pointer;height:36px;width:36px;}
+.baby_overlay_arrow {background-image:url(img/overlay_arrow.png);background-position:0 0;position:absolute;height:40px;width:40px;left: -40px;}
+.baby_overlay_arrow.reverse {background-position:0 -40px;}
+
+/* Footer */
+.footer {position: relative;min-width: 1000px;font: 14px/24px arial, helvetica, sans-serif;}
+.footer ul {position:absolute;left: 0px;border:1px solid #393939;background:#262626;padding:12px 0px;line-height: 18px;display: none;list-style: none;}
+.footer ul li a {display:block;padding: 2px 15px;color: #9c9c9c;text-indent: 0;}
+.footer ul li a:hover {text-decoration:none;color: #fff;}
+.footer-logo {position:absolute;margin: 10px 0 0 30px;width:122px; height:24px;top:0; left:0;background: transparent url(img/footer-logo.png) no-repeat 0 0;}
+.footer_mii {position: absolute;right: 558px;top: 8px;z-index: 10;padding: 4px 0;}
+.footer_mii a {font-size:10px;color:#649140}
+.footer_mii a:hover {color:#B6D76F}
+.footer_siteMap {position: absolute;right: 358px;top: 8px;width: 155px;z-index: 10;padding: 4px 0;}
+.footer_siteMap .footer_siteMap_header {width:155px;text-indent: -9999px;background: transparent url(img/footer_siteMap.gif) no-repeat 0 0;}
+.footer_siteMap ul {top:-202px;width:180px;}
+.footer_siteMap:hover ul {left: 0}
+.footer_contact {position: absolute;right: 193px;top: 8px;width: 155px;z-index: 10;padding: 4px 0;}
+.footer_contact .footer_contact_header {width:155px;text-indent: -9999px;background: transparent url(img/footer_contact.gif) no-repeat 0px 0px;}
+.footer_contact ul {top:-113px;width:153px;}
+.footer_contact:hover ul {left: 0}
+.footer_download {position: absolute;right: 60px;top: 8px;width: 123px;z-index: 10;padding: 4px 0;}
+.footer_download .footer_download_header {width:123px;text-indent: -9999px;background: transparent url(img/footer_download.png) no-repeat 0px 0px;}
+.footer_download ul {top:-113px;width:140px;}
+.footer_download:hover ul {left: 0}
+
+/* button icon */
+button {vertical-align:middle;border:0 none;background: transparent no-repeat 0 0 scroll;}
+
+.shortcuts button.ico {width:24px; height:24px;padding:0; margin:0 10px 0 0;background-image:url(img/menuIcon.png)}
+.shortcuts button.home {background-position: 0 0}
+.shortcuts button.demo {background-position: 0 -24px}
+.shortcuts button.api {background-position: 0 -48px}
+.shortcuts button.faq {background-position: 0 -72px}
+.shortcuts button.donate {background-position: 0 -144px}
+.shortcuts button.download {background-position: 0 -96px}
+.shortcuts button.face {background-position: 0 -120px}
+.shortcuts button.cn {width:48px; height:24px;padding:0; margin:0 10px 0 0;background-image:url(img/chinese.png)}
+.shortcuts button.en {width:48px; height:24px;padding:0; margin:0 10px 0 0;background-image:url(img/english.png)}
+
+.content button.ico {width:24px; height:24px;padding:0; margin:0 10px 0 0;}
+
+.content button.ico16 {width:16px; height:16px;padding:0; margin:0 5px 0 0;background-image:url("img/apiMenu.png");}
+button.z_core {margin-top: -4px;background-position:0 0;}
+button.z_check {margin-top: -4px;background-position:0 -16px;}
+button.z_edit {margin-top: -4px;background-position:0 -32px;}
+button.z_hide {margin-top: -4px;background-position:0 -64px;}
+button.z_search {margin-top: -4px;background-position:0 -48px;}
+button.searchPrev {margin-top: -4px;background-position:-16px 0;cursor:pointer}
+button.searchNext {margin-top: -4px;background-position:-16px -16px;cursor:pointer}
+button.searchPrev.disabled {margin-top: -4px;background-position:-16px -32px;cursor:auto}
+button.searchNext.disabled {margin-top: -4px;background-position:-16px -48px;cursor:auto}
+input.search {margin:0;padding:2px 0; border:0;}
+input.searchKey {width:150px;}
+input.searchResult {margin-left:-3px;width:65px;text-align:right;background-color:white;color:#707070}
+input.searchResult.noResult {background-color:#ff6666;color:black}
+.baby_overlay div.overlaySearch {text-align:right;padding-right:50px;padding-top:12px;}
+
+/* api overlay*/
+.apiDetail .topLine {border-top: 1px dashed #376B29;margin-top: 5px;padding-top: 5px;}
+.apiDetail .highlight_red {color:#A60000;}
+.apiDetail .highlight_green {color:#A7F43D;}
+.apiDetail h1, .apiDetail h2, .apiDetail h3, .apiDetail h4, .apiDetail h5, .apiDetail h6 {color: white;padding: 0;}
+.apiDetail h2 {color: #A7F43D;margin: 5px auto;padding: 5px;font-size: 20px;}
+.apiDetail h2 span {font-size: 14px;float: right;font-weight: normal;margin: 2px 20px 0 0;vertical-align: bottom;}
+.apiDetail h2 span.path {float: left;margin: 2px 0 0 0;vertical-align: bottom;}
+.apiDetail h3 {margin: 5px auto;padding: 5px;font-size: 14px;font-weight: normal;}
+.apiDetail h3 span.h3_info {margin-left: 20px;font-size: 12px;}
+.apiDetail h4 {margin: 0 auto;padding: 0 5px;font-size: 12px;font-weight: normal;line-height: 16px;}
+.apiDetail .desc h4 {color: black;}
+.apiDetail h4 b{width: 150px;display:inline-block;}
+.apiDetail h4 span{width: 230px;display:inline-block;}
+
+.apiDetail pre, .apiDetail .desc {background: #E8FCD6;color: black;margin: 10px;padding: 10px;display: block;}
+.apiDetail pre {word-wrap: break-word;}
+.apiDetail p{margin-left: 5px;padding: 0;}
+.apiDetail .longdesc {margin-top: 5px;}
+.apiDetail .longdesc p{font-size: 12px;line-height:1.5;margin:3px 0;}
+.apiDetail .longdesc b{font-size: 14px;}
+.apiDetail table {border-collapse:collapse;}
+.apiDetail table td {border:1px solid silver;text-align: center;vertical-align: middle;}
+.apiDetail table thead td {font-weight: bold}
+
+.apiDetail button {width:16px; height:16px; vertical-align:middle; border:0 none; cursor: pointer;
+ background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
+ background-image:url("zTreeStyle/img/zTreeStandard.png");}
+
+.apiDetail button.chk {width:13px; height:13px; margin:0 3px 2px 0; cursor: auto}
+.apiDetail button.chk.checkbox_false_full {background-position:0 0}
+.apiDetail button.chk.checkbox_false_full_focus {background-position:0 -14px}
+.apiDetail button.chk.checkbox_false_part {background-position:0 -28px}
+.apiDetail button.chk.checkbox_false_part_focus {background-position:0 -42px}
+.apiDetail button.chk.checkbox_true_full {background-position:-14px 0}
+.apiDetail button.chk.checkbox_true_full_focus {background-position:-14px -14px}
+.apiDetail button.chk.checkbox_true_part {background-position:-14px -28px}
+.apiDetail button.chk.checkbox_true_part_focus {background-position:-14px -42px}
+.apiDetail button.chk.radio_false_full {background-position:-28px 0}
+.apiDetail button.chk.radio_false_full_focus {background-position:-28px -14px}
+.apiDetail button.chk.radio_false_part {background-position:-28px -28px}
+.apiDetail button.chk.radio_false_part_focus {background-position:-28px -42px}
+.apiDetail button.chk.radio_true_full {background-position:-42px 0}
+.apiDetail button.chk.radio_true_full_focus {background-position:-42px -14px}
+.apiDetail button.chk.radio_true_part {background-position:-42px -28px}
+.apiDetail button.chk.radio_true_part_focus {background-position:-42px -42px} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/common_ie6.css b/common/src/main/webapp/thirdparty/zTree/api/apiCss/common_ie6.css
new file mode 100755
index 00000000..aacaf59c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/common_ie6.css
@@ -0,0 +1,23 @@
+* html{
+/* background-image:url(about:blank);*/
+ background-attachment:fixed;
+}
+html pre {word-wrap: break-word}
+.header {background-image: none;background-color: #F0F6E4;}
+
+.ieSuggest {display:block;}
+.shortcuts button.cn {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='apiCss/img/chinese.png');background-image: none;}
+.shortcuts button.en {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='apiCss/img/english.png');background-image: none;}
+
+.light-bulb {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='apiCss/img/lightbulb.png');background-image: none;}
+.contentBox {background-image: none;background-color: #F0F6E4;}
+.zTreeInfo {background-image: none;background-color: #F0F6E4;}
+
+.content button.ico16 {*background-image:url("img/apiMenu.gif")}
+.siteTag {background-image: none;}
+.apiContent .right {float: right;padding-right: 50px;}
+
+div.baby_overlay {background-color: #3C6E31;background-image:none;color:#fff;}
+div.baby_overlay .close {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='apiCss/img/overlay_close_IE6.gif');background-image: none;}
+.baby_overlay_arrow {background-image:url(img/overlay_arrow.gif);}
+.apiDetail button {background-image:url("img/zTreeStandard.gif")} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/apiMenu.gif b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/apiMenu.gif
new file mode 100755
index 00000000..066fc8e4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/apiMenu.gif
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/apiMenu.png b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/apiMenu.png
new file mode 100755
index 00000000..9acec505
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/apiMenu.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/background.jpg b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/background.jpg
new file mode 100755
index 00000000..003375ff
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/background.jpg
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/chinese.png b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/chinese.png
new file mode 100755
index 00000000..d3b57fc1
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/chinese.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/close.png b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/close.png
new file mode 100755
index 00000000..69e41e38
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/close.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/contact-bg.png b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/contact-bg.png
new file mode 100755
index 00000000..a3d7a5f1
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/contact-bg.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/english.png b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/english.png
new file mode 100755
index 00000000..2ad2d7d5
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/english.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/header-bg.png b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/header-bg.png
new file mode 100755
index 00000000..a2baacf2
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/header-bg.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/lightbulb.png b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/lightbulb.png
new file mode 100755
index 00000000..c99357a3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/lightbulb.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_arrow.gif b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_arrow.gif
new file mode 100755
index 00000000..e7c3e6d4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_arrow.gif
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_arrow.png b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_arrow.png
new file mode 100755
index 00000000..d790a115
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_arrow.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_bg.png b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_bg.png
new file mode 100755
index 00000000..5f81ee69
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_bg.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_close_IE6.gif b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_close_IE6.gif
new file mode 100755
index 00000000..42cb8d83
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_close_IE6.gif
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/zTreeStandard.gif b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/zTreeStandard.gif
new file mode 100755
index 00000000..3f69a5b1
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/zTreeStandard.gif
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/zTreeStandard.png b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/zTreeStandard.png
new file mode 100755
index 00000000..33c9e844
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/img/zTreeStandard.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/jquery-1.6.2.min.js b/common/src/main/webapp/thirdparty/zTree/api/apiCss/jquery-1.6.2.min.js
new file mode 100755
index 00000000..8cdc80eb
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/jquery-1.6.2.min.js
@@ -0,0 +1,18 @@
+/*!
+ * jQuery JavaScript Library v1.6.2
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Jun 30 14:16:56 2011 -0400
+ */
+(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bC.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bR,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bX(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bX(a,c,d,e,"*",g));return l}function bW(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bN),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bA(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bv:bw;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bg(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function W(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(R.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(x,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(H)return H.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g](h)}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/\:|^on/,v,w;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.
+shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,N(a.origType,a.selector),f.extend({},a,{handler:M,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,N(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?E:D):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=E;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=E;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=E,this.stopPropagation()},isDefaultPrevented:D,isPropagationStopped:D,isImmediatePropagationStopped:D};var F=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},G=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?G:F,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?G:F)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&K("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&K("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var H,I=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var L={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||D,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=x.exec(h),k="",j&&(k=j[0],h=h.replace(x,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,L[h]?(a.push(L[h]+k),h=h+k):h=(L[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+N(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+N(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var O=/Until$/,P=/^(?:parents|prevUntil|prevAll)/,Q=/,/,R=/^.[^:#\[\.,]*$/,S=Array.prototype.slice,T=f.expr.match.POS,U={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(W(this,a,!1),"not",a)},filter:function(a){return this.pushStack(W(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=T.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/<tbody/i,ba=/<|&#?\w+;/,bb=/<(?:script|object|embed|option|style)/i,bc=/checked\s*(?:[^=]|=\s*.checked.)/i,bd=/\/(java|ecma)script/i,be=/^\s*<!(?:\[CDATA\[|\-\-)/,bf={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bc.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bg(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bm)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!bb.test(a[0])&&(f.support.checkClone||!bc.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j
+)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1></$2>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bl(k[i]);else bl(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bd.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bn=/alpha\([^)]*\)/i,bo=/opacity=([^)]*)/,bp=/([A-Z]|^ms)/g,bq=/^-?\d+(?:px)?$/i,br=/^-?\d/,bs=/^[+\-]=/,bt=/[^+\-\.\de]+/g,bu={position:"absolute",visibility:"hidden",display:"block"},bv=["Left","Right"],bw=["Top","Bottom"],bx,by,bz;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bx(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bs.test(d)&&(d=+d.replace(bt,"")+parseFloat(f.css(a,c)),h="number"),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bx)return bx(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bA(a,b,d);f.swap(a,bu,function(){e=bA(a,b,d)});return e}},set:function(a,b){if(!bq.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cs(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cr("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cr("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cs(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cr("show",1),slideUp:cr("hide",1),slideToggle:cr("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function h(a){return d.step(a)}var d=this,e=f.fx,g;this.startTime=cn||cp(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,h.elem=this.elem,h()&&f.timers.push(h)&&!cl&&(co?(cl=!0,g=function(){cl&&(co(g),e.tick())},co(g)):cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||cp(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var ct=/^t(?:able|d|h)$/i,cu=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cv(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!ct.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/jquery.ztree.core-3.5.js b/common/src/main/webapp/thirdparty/zTree/api/apiCss/jquery.ztree.core-3.5.js
new file mode 100755
index 00000000..705bdb4f
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/jquery.ztree.core-3.5.js
@@ -0,0 +1,69 @@
+/*
+ * JQuery zTree core v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(p){var G,H,I,J,K,L,r={},u={},v={},M={treeId:"",treeObj:null,view:{addDiyDom:null,autoCancelSelected:!0,dblClickExpand:!0,expandSpeed:"fast",fontCss:{},nameIsHTML:!1,selectedMulti:!0,showIcon:!0,showLine:!0,showTitle:!0,txtSelectedEnable:!1},data:{key:{children:"children",name:"name",title:"",url:"url"},simpleData:{enable:!1,idKey:"id",pIdKey:"pId",rootPId:null},keep:{parent:!1,leaf:!1}},async:{enable:!1,contentType:"application/x-www-form-urlencoded",type:"post",dataType:"text",url:"",autoParam:[],
+otherParam:[],dataFilter:null},callback:{beforeAsync:null,beforeClick:null,beforeDblClick:null,beforeRightClick:null,beforeMouseDown:null,beforeMouseUp:null,beforeExpand:null,beforeCollapse:null,beforeRemove:null,onAsyncError:null,onAsyncSuccess:null,onNodeCreated:null,onClick:null,onDblClick:null,onRightClick:null,onMouseDown:null,onMouseUp:null,onExpand:null,onCollapse:null,onRemove:null}},w=[function(b){var a=b.treeObj,c=e.event;a.bind(c.NODECREATED,function(a,c,g){j.apply(b.callback.onNodeCreated,
+[a,c,g])});a.bind(c.CLICK,function(a,c,g,l,h){j.apply(b.callback.onClick,[c,g,l,h])});a.bind(c.EXPAND,function(a,c,g){j.apply(b.callback.onExpand,[a,c,g])});a.bind(c.COLLAPSE,function(a,c,g){j.apply(b.callback.onCollapse,[a,c,g])});a.bind(c.ASYNC_SUCCESS,function(a,c,g,l){j.apply(b.callback.onAsyncSuccess,[a,c,g,l])});a.bind(c.ASYNC_ERROR,function(a,c,g,l,h,e){j.apply(b.callback.onAsyncError,[a,c,g,l,h,e])});a.bind(c.REMOVE,function(a,c,g){j.apply(b.callback.onRemove,[a,c,g])})}],x=[function(b){var a=
+e.event;b.treeObj.unbind(a.NODECREATED).unbind(a.CLICK).unbind(a.EXPAND).unbind(a.COLLAPSE).unbind(a.ASYNC_SUCCESS).unbind(a.ASYNC_ERROR).unbind(a.REMOVE)}],y=[function(b){var a=h.getCache(b);a||(a={},h.setCache(b,a));a.nodes=[];a.doms=[]}],z=[function(b,a,c,d,f,g){if(c){var l=h.getRoot(b),e=b.data.key.children;c.level=a;c.tId=b.treeId+"_"+ ++l.zId;c.parentTId=d?d.tId:null;c.open=typeof c.open=="string"?j.eqs(c.open,"true"):!!c.open;c[e]&&c[e].length>0?(c.isParent=!0,c.zAsync=!0):(c.isParent=typeof c.isParent==
+"string"?j.eqs(c.isParent,"true"):!!c.isParent,c.open=c.isParent&&!b.async.enable?c.open:!1,c.zAsync=!c.isParent);c.isFirstNode=f;c.isLastNode=g;c.getParentNode=function(){return h.getNodeCache(b,c.parentTId)};c.getPreNode=function(){return h.getPreNode(b,c)};c.getNextNode=function(){return h.getNextNode(b,c)};c.isAjaxing=!1;h.fixPIdKeyValue(b,c)}}],s=[function(b){var a=b.target,c=h.getSetting(b.data.treeId),d="",f=null,g="",l="",i=null,n=null,k=null;if(j.eqs(b.type,"mousedown"))l="mousedown";else if(j.eqs(b.type,
+"mouseup"))l="mouseup";else if(j.eqs(b.type,"contextmenu"))l="contextmenu";else if(j.eqs(b.type,"click"))if(j.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+e.id.SWITCH)!==null)d=j.getNodeMainDom(a).id,g="switchNode";else{if(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}]))d=j.getNodeMainDom(k).id,g="clickNode"}else if(j.eqs(b.type,"dblclick")&&(l="dblclick",k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id,g="switchNode";if(l.length>0&&d.length==0&&
+(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id;if(d.length>0)switch(f=h.getNodeCache(c,d),g){case "switchNode":f.isParent?j.eqs(b.type,"click")||j.eqs(b.type,"dblclick")&&j.apply(c.view.dblClickExpand,[c.treeId,f],c.view.dblClickExpand)?i=G:g="":g="";break;case "clickNode":i=H}switch(l){case "mousedown":n=I;break;case "mouseup":n=J;break;case "dblclick":n=K;break;case "contextmenu":n=L}return{stop:!1,node:f,nodeEventType:g,nodeEventCallback:i,treeEventType:l,
+treeEventCallback:n}}],A=[function(b){var a=h.getRoot(b);a||(a={},h.setRoot(b,a));a[b.data.key.children]=[];a.expandTriggerFlag=!1;a.curSelectedList=[];a.noSelection=!0;a.createdNodes=[];a.zId=0;a._ver=(new Date).getTime()}],B=[],C=[],D=[],E=[],F=[],h={addNodeCache:function(b,a){h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=a},getNodeCacheId:function(b){return b.substring(b.lastIndexOf("_")+1)},addAfterA:function(b){C.push(b)},addBeforeA:function(b){B.push(b)},addInnerAfterA:function(b){E.push(b)},
+addInnerBeforeA:function(b){D.push(b)},addInitBind:function(b){w.push(b)},addInitUnBind:function(b){x.push(b)},addInitCache:function(b){y.push(b)},addInitNode:function(b){z.push(b)},addInitProxy:function(b,a){a?s.splice(0,0,b):s.push(b)},addInitRoot:function(b){A.push(b)},addNodesData:function(b,a,c){var d=b.data.key.children;a[d]||(a[d]=[]);if(a[d].length>0)a[d][a[d].length-1].isLastNode=!1,i.setNodeLineIcos(b,a[d][a[d].length-1]);a.isParent=!0;a[d]=a[d].concat(c)},addSelectedNode:function(b,a){var c=
+h.getRoot(b);h.isSelectedNode(b,a)||c.curSelectedList.push(a)},addCreatedNode:function(b,a){(b.callback.onNodeCreated||b.view.addDiyDom)&&h.getRoot(b).createdNodes.push(a)},addZTreeTools:function(b){F.push(b)},exSetting:function(b){p.extend(!0,M,b)},fixPIdKeyValue:function(b,a){b.data.simpleData.enable&&(a[b.data.simpleData.pIdKey]=a.parentTId?a.getParentNode()[b.data.simpleData.idKey]:b.data.simpleData.rootPId)},getAfterA:function(b,a,c){for(var d=0,f=C.length;d<f;d++)C[d].apply(this,arguments)},
+getBeforeA:function(b,a,c){for(var d=0,f=B.length;d<f;d++)B[d].apply(this,arguments)},getInnerAfterA:function(b,a,c){for(var d=0,f=E.length;d<f;d++)E[d].apply(this,arguments)},getInnerBeforeA:function(b,a,c){for(var d=0,f=D.length;d<f;d++)D[d].apply(this,arguments)},getCache:function(b){return v[b.treeId]},getNextNode:function(b,a){if(!a)return null;for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),f=0,g=d[c].length-1;f<=g;f++)if(d[c][f]===a)return f==g?null:d[c][f+1];return null},
+getNodeByParam:function(b,a,c,d){if(!a||!c)return null;for(var f=b.data.key.children,g=0,l=a.length;g<l;g++){if(a[g][c]==d)return a[g];var e=h.getNodeByParam(b,a[g][f],c,d);if(e)return e}return null},getNodeCache:function(b,a){if(!a)return null;var c=v[b.treeId].nodes[h.getNodeCacheId(a)];return c?c:null},getNodeName:function(b,a){return""+a[b.data.key.name]},getNodeTitle:function(b,a){return""+a[b.data.key.title===""?b.data.key.name:b.data.key.title]},getNodes:function(b){return h.getRoot(b)[b.data.key.children]},
+getNodesByParam:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],l=0,e=a.length;l<e;l++)a[l][c]==d&&g.push(a[l]),g=g.concat(h.getNodesByParam(b,a[l][f],c,d));return g},getNodesByParamFuzzy:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],d=d.toLowerCase(),l=0,e=a.length;l<e;l++)typeof a[l][c]=="string"&&a[l][c].toLowerCase().indexOf(d)>-1&&g.push(a[l]),g=g.concat(h.getNodesByParamFuzzy(b,a[l][f],c,d));return g},getNodesByFilter:function(b,a,c,d,f){if(!a)return d?
+null:[];for(var g=b.data.key.children,e=d?null:[],i=0,n=a.length;i<n;i++){if(j.apply(c,[a[i],f],!1)){if(d)return a[i];e.push(a[i])}var k=h.getNodesByFilter(b,a[i][g],c,d,f);if(d&&k)return k;e=d?k:e.concat(k)}return e},getPreNode:function(b,a){if(!a)return null;for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),f=0,g=d[c].length;f<g;f++)if(d[c][f]===a)return f==0?null:d[c][f-1];return null},getRoot:function(b){return b?u[b.treeId]:null},getRoots:function(){return u},getSetting:function(b){return r[b]},
+getSettings:function(){return r},getZTreeTools:function(b){return(b=this.getRoot(this.getSetting(b)))?b.treeTools:null},initCache:function(b){for(var a=0,c=y.length;a<c;a++)y[a].apply(this,arguments)},initNode:function(b,a,c,d,f,g){for(var e=0,h=z.length;e<h;e++)z[e].apply(this,arguments)},initRoot:function(b){for(var a=0,c=A.length;a<c;a++)A[a].apply(this,arguments)},isSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d])return!0;return!1},
+removeNodeCache:function(b,a){var c=b.data.key.children;if(a[c])for(var d=0,f=a[c].length;d<f;d++)arguments.callee(b,a[c][d]);h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=null},removeSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d]||!h.getNodeCache(b,c.curSelectedList[d].tId))c.curSelectedList.splice(d,1),d--,f--},setCache:function(b,a){v[b.treeId]=a},setRoot:function(b,a){u[b.treeId]=a},setZTreeTools:function(b,a){for(var c=0,d=
+F.length;c<d;c++)F[c].apply(this,arguments)},transformToArrayFormat:function(b,a){if(!a)return[];var c=b.data.key.children,d=[];if(j.isArray(a))for(var f=0,g=a.length;f<g;f++)d.push(a[f]),a[f][c]&&(d=d.concat(h.transformToArrayFormat(b,a[f][c])));else d.push(a),a[c]&&(d=d.concat(h.transformToArrayFormat(b,a[c])));return d},transformTozTreeFormat:function(b,a){var c,d,f=b.data.simpleData.idKey,g=b.data.simpleData.pIdKey,e=b.data.key.children;if(!f||f==""||!a)return[];if(j.isArray(a)){var h=[],i=[];
+for(c=0,d=a.length;c<d;c++)i[a[c][f]]=a[c];for(c=0,d=a.length;c<d;c++)i[a[c][g]]&&a[c][f]!=a[c][g]?(i[a[c][g]][e]||(i[a[c][g]][e]=[]),i[a[c][g]][e].push(a[c])):h.push(a[c]);return h}else return[a]}},m={bindEvent:function(b){for(var a=0,c=w.length;a<c;a++)w[a].apply(this,arguments)},unbindEvent:function(b){for(var a=0,c=x.length;a<c;a++)x[a].apply(this,arguments)},bindTree:function(b){var a={treeId:b.treeId},c=b.treeObj;b.view.txtSelectedEnable||c.bind("selectstart",function(a){a=a.originalEvent.srcElement.nodeName.toLowerCase();
+return a==="input"||a==="textarea"}).css({"-moz-user-select":"-moz-none"});c.bind("click",a,m.proxy);c.bind("dblclick",a,m.proxy);c.bind("mouseover",a,m.proxy);c.bind("mouseout",a,m.proxy);c.bind("mousedown",a,m.proxy);c.bind("mouseup",a,m.proxy);c.bind("contextmenu",a,m.proxy)},unbindTree:function(b){b.treeObj.unbind("click",m.proxy).unbind("dblclick",m.proxy).unbind("mouseover",m.proxy).unbind("mouseout",m.proxy).unbind("mousedown",m.proxy).unbind("mouseup",m.proxy).unbind("contextmenu",m.proxy)},
+doProxy:function(b){for(var a=[],c=0,d=s.length;c<d;c++){var f=s[c].apply(this,arguments);a.push(f);if(f.stop)break}return a},proxy:function(b){var a=h.getSetting(b.data.treeId);if(!j.uCanDo(a,b))return!0;for(var a=m.doProxy(b),c=!0,d=0,f=a.length;d<f;d++){var g=a[d];g.nodeEventCallback&&(c=g.nodeEventCallback.apply(g,[b,g.node])&&c);g.treeEventCallback&&(c=g.treeEventCallback.apply(g,[b,g.node])&&c)}return c}};G=function(b,a){var c=h.getSetting(b.data.treeId);if(a.open){if(j.apply(c.callback.beforeCollapse,
+[c.treeId,a],!0)==!1)return!0}else if(j.apply(c.callback.beforeExpand,[c.treeId,a],!0)==!1)return!0;h.getRoot(c).expandTriggerFlag=!0;i.switchNode(c,a);return!0};H=function(b,a){var c=h.getSetting(b.data.treeId),d=c.view.autoCancelSelected&&(b.ctrlKey||b.metaKey)&&h.isSelectedNode(c,a)?0:c.view.autoCancelSelected&&(b.ctrlKey||b.metaKey)&&c.view.selectedMulti?2:1;if(j.apply(c.callback.beforeClick,[c.treeId,a,d],!0)==!1)return!0;d===0?i.cancelPreSelectedNode(c,a):i.selectNode(c,a,d===2);c.treeObj.trigger(e.event.CLICK,
+[b,c.treeId,a,d]);return!0};I=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseDown,[c.treeId,a],!0)&&j.apply(c.callback.onMouseDown,[b,c.treeId,a]);return!0};J=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseUp,[c.treeId,a],!0)&&j.apply(c.callback.onMouseUp,[b,c.treeId,a]);return!0};K=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeDblClick,[c.treeId,a],!0)&&j.apply(c.callback.onDblClick,[b,c.treeId,a]);return!0};
+L=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeRightClick,[c.treeId,a],!0)&&j.apply(c.callback.onRightClick,[b,c.treeId,a]);return typeof c.callback.onRightClick!="function"};var j={apply:function(b,a,c){return typeof b=="function"?b.apply(N,a?a:[]):c},canAsync:function(b,a){var c=b.data.key.children;return b.async.enable&&a&&a.isParent&&!(a.zAsync||a[c]&&a[c].length>0)},clone:function(b){if(b===null)return null;var a=j.isArray(b)?[]:{},c;for(c in b)a[c]=b[c]instanceof
+Date?new Date(b[c].getTime()):typeof b[c]==="object"?arguments.callee(b[c]):b[c];return a},eqs:function(b,a){return b.toLowerCase()===a.toLowerCase()},isArray:function(b){return Object.prototype.toString.apply(b)==="[object Array]"},$:function(b,a,c){a&&typeof a!="string"&&(c=a,a="");return typeof b=="string"?p(b,c?c.treeObj.get(0).ownerDocument:null):p("#"+b.tId+a,c?c.treeObj:null)},getMDom:function(b,a,c){if(!a)return null;for(;a&&a.id!==b.treeId;){for(var d=0,f=c.length;a.tagName&&d<f;d++)if(j.eqs(a.tagName,
+c[d].tagName)&&a.getAttribute(c[d].attrName)!==null)return a;a=a.parentNode}return null},getNodeMainDom:function(b){return p(b).parent("li").get(0)||p(b).parentsUntil("li").parent().get(0)},isChildOrSelf:function(b,a){return p(b).closest("#"+a).length>0},uCanDo:function(){return!0}},i={addNodes:function(b,a,c,d){if(!b.data.keep.leaf||!a||a.isParent)if(j.isArray(c)||(c=[c]),b.data.simpleData.enable&&(c=h.transformTozTreeFormat(b,c)),a){var f=k(a,e.id.SWITCH,b),g=k(a,e.id.ICON,b),l=k(a,e.id.UL,b);if(!a.open)i.replaceSwitchClass(a,
+f,e.folder.CLOSE),i.replaceIcoClass(a,g,e.folder.CLOSE),a.open=!1,l.css({display:"none"});h.addNodesData(b,a,c);i.createNodes(b,a.level+1,c,a);d||i.expandCollapseParentNode(b,a,!0)}else h.addNodesData(b,h.getRoot(b),c),i.createNodes(b,0,c,null)},appendNodes:function(b,a,c,d,f,g){if(!c)return[];for(var e=[],j=b.data.key.children,k=0,m=c.length;k<m;k++){var o=c[k];if(f){var t=(d?d:h.getRoot(b))[j].length==c.length&&k==0;h.initNode(b,a,o,d,t,k==c.length-1,g);h.addNodeCache(b,o)}t=[];o[j]&&o[j].length>
+0&&(t=i.appendNodes(b,a+1,o[j],o,f,g&&o.open));g&&(i.makeDOMNodeMainBefore(e,b,o),i.makeDOMNodeLine(e,b,o),h.getBeforeA(b,o,e),i.makeDOMNodeNameBefore(e,b,o),h.getInnerBeforeA(b,o,e),i.makeDOMNodeIcon(e,b,o),h.getInnerAfterA(b,o,e),i.makeDOMNodeNameAfter(e,b,o),h.getAfterA(b,o,e),o.isParent&&o.open&&i.makeUlHtml(b,o,e,t.join("")),i.makeDOMNodeMainAfter(e,b,o),h.addCreatedNode(b,o))}return e},appendParentULDom:function(b,a){var c=[],d=k(a,b);!d.get(0)&&a.parentTId&&(i.appendParentULDom(b,a.getParentNode()),
+d=k(a,b));var f=k(a,e.id.UL,b);f.get(0)&&f.remove();f=i.appendNodes(b,a.level+1,a[b.data.key.children],a,!1,!0);i.makeUlHtml(b,a,c,f.join(""));d.append(c.join(""))},asyncNode:function(b,a,c,d){var f,g;if(a&&!a.isParent)return j.apply(d),!1;else if(a&&a.isAjaxing)return!1;else if(j.apply(b.callback.beforeAsync,[b.treeId,a],!0)==!1)return j.apply(d),!1;if(a)a.isAjaxing=!0,k(a,e.id.ICON,b).attr({style:"","class":e.className.BUTTON+" "+e.className.ICO_LOADING});var l={};for(f=0,g=b.async.autoParam.length;a&&
+f<g;f++){var q=b.async.autoParam[f].split("="),n=q;q.length>1&&(n=q[1],q=q[0]);l[n]=a[q]}if(j.isArray(b.async.otherParam))for(f=0,g=b.async.otherParam.length;f<g;f+=2)l[b.async.otherParam[f]]=b.async.otherParam[f+1];else for(var m in b.async.otherParam)l[m]=b.async.otherParam[m];var o=h.getRoot(b)._ver;p.ajax({contentType:b.async.contentType,type:b.async.type,url:j.apply(b.async.url,[b.treeId,a],b.async.url),data:l,dataType:b.async.dataType,success:function(f){if(o==h.getRoot(b)._ver){var g=[];try{g=
+!f||f.length==0?[]:typeof f=="string"?eval("("+f+")"):f}catch(l){g=f}if(a)a.isAjaxing=null,a.zAsync=!0;i.setNodeLineIcos(b,a);g&&g!==""?(g=j.apply(b.async.dataFilter,[b.treeId,a,g],g),i.addNodes(b,a,g?j.clone(g):[],!!c)):i.addNodes(b,a,[],!!c);b.treeObj.trigger(e.event.ASYNC_SUCCESS,[b.treeId,a,f]);j.apply(d)}},error:function(c,d,f){if(o==h.getRoot(b)._ver){if(a)a.isAjaxing=null;i.setNodeLineIcos(b,a);b.treeObj.trigger(e.event.ASYNC_ERROR,[b.treeId,a,c,d,f])}}});return!0},cancelPreSelectedNode:function(b,
+a){for(var c=h.getRoot(b).curSelectedList,d=c.length-1;d>=0;d--)if(!a||a===c[d])if(k(c[d],e.id.A,b).removeClass(e.node.CURSELECTED),a){h.removeSelectedNode(b,a);break}if(!a)h.getRoot(b).curSelectedList=[]},createNodeCallback:function(b){if(b.callback.onNodeCreated||b.view.addDiyDom)for(var a=h.getRoot(b);a.createdNodes.length>0;){var c=a.createdNodes.shift();j.apply(b.view.addDiyDom,[b.treeId,c]);b.callback.onNodeCreated&&b.treeObj.trigger(e.event.NODECREATED,[b.treeId,c])}},createNodes:function(b,
+a,c,d){if(c&&c.length!=0){var f=h.getRoot(b),g=b.data.key.children,g=!d||d.open||!!k(d[g][0],b).get(0);f.createdNodes=[];a=i.appendNodes(b,a,c,d,!0,g);d?(d=k(d,e.id.UL,b),d.get(0)&&d.append(a.join(""))):b.treeObj.append(a.join(""));i.createNodeCallback(b)}},destroy:function(b){b&&(h.initCache(b),h.initRoot(b),m.unbindTree(b),m.unbindEvent(b),b.treeObj.empty(),delete r[b.treeId])},expandCollapseNode:function(b,a,c,d,f){var g=h.getRoot(b),l=b.data.key.children;if(a){if(g.expandTriggerFlag){var q=f,
+f=function(){q&&q();a.open?b.treeObj.trigger(e.event.EXPAND,[b.treeId,a]):b.treeObj.trigger(e.event.COLLAPSE,[b.treeId,a])};g.expandTriggerFlag=!1}if(!a.open&&a.isParent&&(!k(a,e.id.UL,b).get(0)||a[l]&&a[l].length>0&&!k(a[l][0],b).get(0)))i.appendParentULDom(b,a),i.createNodeCallback(b);if(a.open==c)j.apply(f,[]);else{var c=k(a,e.id.UL,b),g=k(a,e.id.SWITCH,b),n=k(a,e.id.ICON,b);a.isParent?(a.open=!a.open,a.iconOpen&&a.iconClose&&n.attr("style",i.makeNodeIcoStyle(b,a)),a.open?(i.replaceSwitchClass(a,
+g,e.folder.OPEN),i.replaceIcoClass(a,n,e.folder.OPEN),d==!1||b.view.expandSpeed==""?(c.show(),j.apply(f,[])):a[l]&&a[l].length>0?c.slideDown(b.view.expandSpeed,f):(c.show(),j.apply(f,[]))):(i.replaceSwitchClass(a,g,e.folder.CLOSE),i.replaceIcoClass(a,n,e.folder.CLOSE),d==!1||b.view.expandSpeed==""||!(a[l]&&a[l].length>0)?(c.hide(),j.apply(f,[])):c.slideUp(b.view.expandSpeed,f))):j.apply(f,[])}}else j.apply(f,[])},expandCollapseParentNode:function(b,a,c,d,f){a&&(a.parentTId?(i.expandCollapseNode(b,
+a,c,d),a.parentTId&&i.expandCollapseParentNode(b,a.getParentNode(),c,d,f)):i.expandCollapseNode(b,a,c,d,f))},expandCollapseSonNode:function(b,a,c,d,f){var g=h.getRoot(b),e=b.data.key.children,g=a?a[e]:g[e],e=a?!1:d,j=h.getRoot(b).expandTriggerFlag;h.getRoot(b).expandTriggerFlag=!1;if(g)for(var k=0,m=g.length;k<m;k++)g[k]&&i.expandCollapseSonNode(b,g[k],c,e);h.getRoot(b).expandTriggerFlag=j;i.expandCollapseNode(b,a,c,d,f)},makeDOMNodeIcon:function(b,a,c){var d=h.getNodeName(a,c),d=a.view.nameIsHTML?
+d:d.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");b.push("<span id='",c.tId,e.id.ICON,"' title='' treeNode",e.id.ICON," class='",i.makeNodeIcoClass(a,c),"' style='",i.makeNodeIcoStyle(a,c),"'></span><span id='",c.tId,e.id.SPAN,"'>",d,"</span>")},makeDOMNodeLine:function(b,a,c){b.push("<span id='",c.tId,e.id.SWITCH,"' title='' class='",i.makeNodeLineClass(a,c),"' treeNode",e.id.SWITCH,"></span>")},makeDOMNodeMainAfter:function(b){b.push("</li>")},makeDOMNodeMainBefore:function(b,
+a,c){b.push("<li id='",c.tId,"' class='",e.className.LEVEL,c.level,"' tabindex='0' hidefocus='true' treenode>")},makeDOMNodeNameAfter:function(b){b.push("</a>")},makeDOMNodeNameBefore:function(b,a,c){var d=h.getNodeTitle(a,c),f=i.makeNodeUrl(a,c),g=i.makeNodeFontCss(a,c),l=[],k;for(k in g)l.push(k,":",g[k],";");b.push("<a id='",c.tId,e.id.A,"' class='",e.className.LEVEL,c.level,"' treeNode",e.id.A,' onclick="',c.click||"",'" ',f!=null&&f.length>0?"href='"+f+"'":""," target='",i.makeNodeTarget(c),
+"' style='",l.join(""),"'");j.apply(a.view.showTitle,[a.treeId,c],a.view.showTitle)&&d&&b.push("title='",d.replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),"'");b.push(">")},makeNodeFontCss:function(b,a){var c=j.apply(b.view.fontCss,[b.treeId,a],b.view.fontCss);return c&&typeof c!="function"?c:{}},makeNodeIcoClass:function(b,a){var c=["ico"];a.isAjaxing||(c[0]=(a.iconSkin?a.iconSkin+"_":"")+c[0],a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU));return e.className.BUTTON+
+" "+c.join("_")},makeNodeIcoStyle:function(b,a){var c=[];if(!a.isAjaxing){var d=a.isParent&&a.iconOpen&&a.iconClose?a.open?a.iconOpen:a.iconClose:a.icon;d&&c.push("background:url(",d,") 0 0 no-repeat;");(b.view.showIcon==!1||!j.apply(b.view.showIcon,[b.treeId,a],!0))&&c.push("width:0px;height:0px;")}return c.join("")},makeNodeLineClass:function(b,a){var c=[];b.view.showLine?a.level==0&&a.isFirstNode&&a.isLastNode?c.push(e.line.ROOT):a.level==0&&a.isFirstNode?c.push(e.line.ROOTS):a.isLastNode?c.push(e.line.BOTTOM):
+c.push(e.line.CENTER):c.push(e.line.NOLINE);a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU);return i.makeNodeLineClassEx(a)+c.join("_")},makeNodeLineClassEx:function(b){return e.className.BUTTON+" "+e.className.LEVEL+b.level+" "+e.className.SWITCH+" "},makeNodeTarget:function(b){return b.target||"_blank"},makeNodeUrl:function(b,a){var c=b.data.key.url;return a[c]?a[c]:null},makeUlHtml:function(b,a,c,d){c.push("<ul id='",a.tId,e.id.UL,"' class='",e.className.LEVEL,a.level,
+" ",i.makeUlLineClass(b,a),"' style='display:",a.open?"block":"none","'>");c.push(d);c.push("</ul>")},makeUlLineClass:function(b,a){return b.view.showLine&&!a.isLastNode?e.line.LINE:""},removeChildNodes:function(b,a){if(a){var c=b.data.key.children,d=a[c];if(d){for(var f=0,g=d.length;f<g;f++)h.removeNodeCache(b,d[f]);h.removeSelectedNode(b);delete a[c];b.data.keep.parent?k(a,e.id.UL,b).empty():(a.isParent=!1,a.open=!1,c=k(a,e.id.SWITCH,b),d=k(a,e.id.ICON,b),i.replaceSwitchClass(a,c,e.folder.DOCU),
+i.replaceIcoClass(a,d,e.folder.DOCU),k(a,e.id.UL,b).remove())}}},setFirstNode:function(b,a){var c=b.data.key.children;if(a[c].length>0)a[c][0].isFirstNode=!0},setLastNode:function(b,a){var c=b.data.key.children,d=a[c].length;if(d>0)a[c][d-1].isLastNode=!0},removeNode:function(b,a){var c=h.getRoot(b),d=b.data.key.children,f=a.parentTId?a.getParentNode():c;a.isFirstNode=!1;a.isLastNode=!1;a.getPreNode=function(){return null};a.getNextNode=function(){return null};if(h.getNodeCache(b,a.tId)){k(a,b).remove();
+h.removeNodeCache(b,a);h.removeSelectedNode(b,a);for(var g=0,l=f[d].length;g<l;g++)if(f[d][g].tId==a.tId){f[d].splice(g,1);break}i.setFirstNode(b,f);i.setLastNode(b,f);var j,g=f[d].length;if(!b.data.keep.parent&&g==0)f.isParent=!1,f.open=!1,g=k(f,e.id.UL,b),l=k(f,e.id.SWITCH,b),j=k(f,e.id.ICON,b),i.replaceSwitchClass(f,l,e.folder.DOCU),i.replaceIcoClass(f,j,e.folder.DOCU),g.css("display","none");else if(b.view.showLine&&g>0){var n=f[d][g-1],g=k(n,e.id.UL,b),l=k(n,e.id.SWITCH,b);j=k(n,e.id.ICON,b);
+f==c?f[d].length==1?i.replaceSwitchClass(n,l,e.line.ROOT):(c=k(f[d][0],e.id.SWITCH,b),i.replaceSwitchClass(f[d][0],c,e.line.ROOTS),i.replaceSwitchClass(n,l,e.line.BOTTOM)):i.replaceSwitchClass(n,l,e.line.BOTTOM);g.removeClass(e.line.LINE)}}},replaceIcoClass:function(b,a,c){if(a&&!b.isAjaxing&&(b=a.attr("class"),b!=void 0)){b=b.split("_");switch(c){case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:b[b.length-1]=c}a.attr("class",b.join("_"))}},replaceSwitchClass:function(b,a,c){if(a){var d=
+a.attr("class");if(d!=void 0){d=d.split("_");switch(c){case e.line.ROOT:case e.line.ROOTS:case e.line.CENTER:case e.line.BOTTOM:case e.line.NOLINE:d[0]=i.makeNodeLineClassEx(b)+c;break;case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:d[1]=c}a.attr("class",d.join("_"));c!==e.folder.DOCU?a.removeAttr("disabled"):a.attr("disabled","disabled")}}},selectNode:function(b,a,c){c||i.cancelPreSelectedNode(b);k(a,e.id.A,b).addClass(e.node.CURSELECTED);h.addSelectedNode(b,a)},setNodeFontCss:function(b,
+a){var c=k(a,e.id.A,b),d=i.makeNodeFontCss(b,a);d&&c.css(d)},setNodeLineIcos:function(b,a){if(a){var c=k(a,e.id.SWITCH,b),d=k(a,e.id.UL,b),f=k(a,e.id.ICON,b),g=i.makeUlLineClass(b,a);g.length==0?d.removeClass(e.line.LINE):d.addClass(g);c.attr("class",i.makeNodeLineClass(b,a));a.isParent?c.removeAttr("disabled"):c.attr("disabled","disabled");f.removeAttr("style");f.attr("style",i.makeNodeIcoStyle(b,a));f.attr("class",i.makeNodeIcoClass(b,a))}},setNodeName:function(b,a){var c=h.getNodeTitle(b,a),d=
+k(a,e.id.SPAN,b);d.empty();b.view.nameIsHTML?d.html(h.getNodeName(b,a)):d.text(h.getNodeName(b,a));j.apply(b.view.showTitle,[b.treeId,a],b.view.showTitle)&&k(a,e.id.A,b).attr("title",!c?"":c)},setNodeTarget:function(b,a){k(a,e.id.A,b).attr("target",i.makeNodeTarget(a))},setNodeUrl:function(b,a){var c=k(a,e.id.A,b),d=i.makeNodeUrl(b,a);d==null||d.length==0?c.removeAttr("href"):c.attr("href",d)},switchNode:function(b,a){a.open||!j.canAsync(b,a)?i.expandCollapseNode(b,a,!a.open):b.async.enable?i.asyncNode(b,
+a)||i.expandCollapseNode(b,a,!a.open):a&&i.expandCollapseNode(b,a,!a.open)}};p.fn.zTree={consts:{className:{BUTTON:"button",LEVEL:"level",ICO_LOADING:"ico_loading",SWITCH:"switch"},event:{NODECREATED:"ztree_nodeCreated",CLICK:"ztree_click",EXPAND:"ztree_expand",COLLAPSE:"ztree_collapse",ASYNC_SUCCESS:"ztree_async_success",ASYNC_ERROR:"ztree_async_error",REMOVE:"ztree_remove"},id:{A:"_a",ICON:"_ico",SPAN:"_span",SWITCH:"_switch",UL:"_ul"},line:{ROOT:"root",ROOTS:"roots",CENTER:"center",BOTTOM:"bottom",
+NOLINE:"noline",LINE:"line"},folder:{OPEN:"open",CLOSE:"close",DOCU:"docu"},node:{CURSELECTED:"curSelectedNode"}},_z:{tools:j,view:i,event:m,data:h},getZTreeObj:function(b){return(b=h.getZTreeTools(b))?b:null},destroy:function(b){if(b&&b.length>0)i.destroy(h.getSetting(b));else for(var a in r)i.destroy(r[a])},init:function(b,a,c){var d=j.clone(M);p.extend(!0,d,a);d.treeId=b.attr("id");d.treeObj=b;d.treeObj.empty();r[d.treeId]=d;if(typeof document.body.style.maxHeight==="undefined")d.view.expandSpeed=
+"";h.initRoot(d);b=h.getRoot(d);a=d.data.key.children;c=c?j.clone(j.isArray(c)?c:[c]):[];b[a]=d.data.simpleData.enable?h.transformTozTreeFormat(d,c):c;h.initCache(d);m.unbindTree(d);m.bindTree(d);m.unbindEvent(d);m.bindEvent(d);c={setting:d,addNodes:function(a,b,c){function e(){i.addNodes(d,a,h,c==!0)}if(!b)return null;a||(a=null);if(a&&!a.isParent&&d.data.keep.leaf)return null;var h=j.clone(j.isArray(b)?b:[b]);j.canAsync(d,a)?i.asyncNode(d,a,c,e):e();return h},cancelSelectedNode:function(a){i.cancelPreSelectedNode(d,
+a)},destroy:function(){i.destroy(d)},expandAll:function(a){a=!!a;i.expandCollapseSonNode(d,null,a,!0);return a},expandNode:function(a,b,c,e,n){if(!a||!a.isParent)return null;b!==!0&&b!==!1&&(b=!a.open);if((n=!!n)&&b&&j.apply(d.callback.beforeExpand,[d.treeId,a],!0)==!1)return null;else if(n&&!b&&j.apply(d.callback.beforeCollapse,[d.treeId,a],!0)==!1)return null;b&&a.parentTId&&i.expandCollapseParentNode(d,a.getParentNode(),b,!1);if(b===a.open&&!c)return null;h.getRoot(d).expandTriggerFlag=n;if(!j.canAsync(d,
+a)&&c)i.expandCollapseSonNode(d,a,b,!0,function(){if(e!==!1)try{k(a,d).focus().blur()}catch(b){}});else if(a.open=!b,i.switchNode(this.setting,a),e!==!1)try{k(a,d).focus().blur()}catch(m){}return b},getNodes:function(){return h.getNodes(d)},getNodeByParam:function(a,b,c){return!a?null:h.getNodeByParam(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodeByTId:function(a){return h.getNodeCache(d,a)},getNodesByParam:function(a,b,c){return!a?null:h.getNodesByParam(d,c?c[d.data.key.children]:h.getNodes(d),
+a,b)},getNodesByParamFuzzy:function(a,b,c){return!a?null:h.getNodesByParamFuzzy(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodesByFilter:function(a,b,c,e){b=!!b;return!a||typeof a!="function"?b?null:[]:h.getNodesByFilter(d,c?c[d.data.key.children]:h.getNodes(d),a,b,e)},getNodeIndex:function(a){if(!a)return null;for(var b=d.data.key.children,c=a.parentTId?a.getParentNode():h.getRoot(d),e=0,i=c[b].length;e<i;e++)if(c[b][e]==a)return e;return-1},getSelectedNodes:function(){for(var a=[],b=h.getRoot(d).curSelectedList,
+c=0,e=b.length;c<e;c++)a.push(b[c]);return a},isSelectedNode:function(a){return h.isSelectedNode(d,a)},reAsyncChildNodes:function(a,b,c){if(this.setting.async.enable){var j=!a;j&&(a=h.getRoot(d));if(b=="refresh"){for(var b=this.setting.data.key.children,m=0,p=a[b]?a[b].length:0;m<p;m++)h.removeNodeCache(d,a[b][m]);h.removeSelectedNode(d);a[b]=[];j?this.setting.treeObj.empty():k(a,e.id.UL,d).empty()}i.asyncNode(this.setting,j?null:a,!!c)}},refresh:function(){this.setting.treeObj.empty();var a=h.getRoot(d),
+b=a[d.data.key.children];h.initRoot(d);a[d.data.key.children]=b;h.initCache(d);i.createNodes(d,0,a[d.data.key.children])},removeChildNodes:function(a){if(!a)return null;var b=a[d.data.key.children];i.removeChildNodes(d,a);return b?b:null},removeNode:function(a,b){a&&(b=!!b,b&&j.apply(d.callback.beforeRemove,[d.treeId,a],!0)==!1||(i.removeNode(d,a),b&&this.setting.treeObj.trigger(e.event.REMOVE,[d.treeId,a])))},selectNode:function(a,b){if(a&&j.uCanDo(d)){b=d.view.selectedMulti&&b;if(a.parentTId)i.expandCollapseParentNode(d,
+a.getParentNode(),!0,!1,function(){try{k(a,d).focus().blur()}catch(b){}});else try{k(a,d).focus().blur()}catch(c){}i.selectNode(d,a,b)}},transformTozTreeNodes:function(a){return h.transformTozTreeFormat(d,a)},transformToArray:function(a){return h.transformToArrayFormat(d,a)},updateNode:function(a){a&&k(a,d).get(0)&&j.uCanDo(d)&&(i.setNodeName(d,a),i.setNodeTarget(d,a),i.setNodeUrl(d,a),i.setNodeLineIcos(d,a),i.setNodeFontCss(d,a))}};b.treeTools=c;h.setZTreeTools(d,c);b[a]&&b[a].length>0?i.createNodes(d,
+0,b[a]):d.async.enable&&d.async.url&&d.async.url!==""&&i.asyncNode(d);return c}};var N=p.fn.zTree,k=j.$,e=N.consts})(jQuery);
diff --git a/common/src/main/webapp/thirdparty/zTree/api/apiCss/zTreeStyleForApi.css b/common/src/main/webapp/thirdparty/zTree/api/apiCss/zTreeStyleForApi.css
new file mode 100755
index 00000000..bb4717bc
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/apiCss/zTreeStyleForApi.css
@@ -0,0 +1,49 @@
+/*-------------------------------------
+zTree Style
+
+version: 3.0
+author: Hunter.z
+email: hunter.z@263.net
+website: http://code.google.com/p/jquerytree/
+
+-------------------------------------*/
+
+.ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
+.ztree {margin:0; padding:5px; color:#333}
+.ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap}
+.ztree li ul{ margin:0; padding:0 0 0 18px}
+.ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;}
+
+.ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; color:#333; height:17px; text-decoration:none; vertical-align:top; display: inline-block}
+.ztree li a:hover {text-decoration:none}
+.ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid;}
+.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8; filter:alpha(opacity=80)}
+.ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid; opacity:0.8; filter:alpha(opacity=80)}
+.ztree li a.tmpTargetNode_prev {}
+.ztree li a.tmpTargetNode_next {}
+.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
+ font-size:12px; border:1px #7EC4CC solid; *border:0px}
+.ztree li span {line-height:16px; margin-right: 2px}
+.ztree li span.button {line-height:0; margin:0;width:16px; height:16px; display: inline-block; vertical-align:middle;
+ border:0 none; cursor: pointer;
+ background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
+ background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
+
+.ztree li span.button.switch {width:1px; height:18px; visibility: hidden}
+
+.zTreeDragUL {margin:0; padding:0; position:absolute; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
+.zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
+
+/* level 等级样å¼*/
+/*.ztree li button.level0 {
+ display:none;
+}
+.ztree li ul.level0 {
+ padding:0;
+ background:none;
+}*/
+
+.ztree li span.button.core_ico_docu{margin-right:2px; background-position:-126px 0; vertical-align:top; *vertical-align:middle}
+.ztree li span.button.check_ico_docu{margin-right:2px; background-position:-126px -16px; vertical-align:top; *vertical-align:middle}
+.ztree li span.button.edit_ico_docu{margin-right:2px; background-position:-126px -32px; vertical-align:top; *vertical-align:middle}
+.ztree li span.button.hide_ico_docu{margin-right:2px; background-position:-160px 0; vertical-align:top; *vertical-align:middle}
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree._z.html b/common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree._z.html
new file mode 100755
index 00000000..7af3e40d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree._z.html
@@ -0,0 +1,13 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON</span><span class="path">$.fn.zTree.</span>_z</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree v3.x 内部的全部方法都å¯ä»¥é€šè¿‡ $.fn.zTree._z 进行调用,开放出æ¥æ˜¯ä¸ºäº†æ›´ä¾¿äºŽå¤§å®¶å¼€å‘制作自己的 zTree æ’件。 </p>
+ <p class="highlight_red">如无特殊需求请勿使用此对象,以åŠä¿®æ”¹æ­¤å¯¹è±¡å†…部的å„个函数。</p>
+ </div>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree.destroy.html b/common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree.destroy.html
new file mode 100755
index 00000000..71058076
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree.destroy.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId)</span><span class="path">$.fn.zTree.</span>destroy</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>从 zTree v3.4 开始æä¾›é”€æ¯ zTree 的方法。 </p>
+ <p>1ã€ç”¨æ­¤æ–¹æ³•å¯ä»¥é”€æ¯æŒ‡å®š treeId çš„ zTree,也å¯ä»¥é”€æ¯å½“å‰é¡µé¢å…¨éƒ¨çš„ zTree。</p>
+ <p class="highlight_red">2ã€é”€æ¯æŒ‡å®š treeId çš„ zTree 也å¯ä»¥ä½¿ç”¨ zTreeObj.destroy() 方法。</p>
+ <p class="highlight_red">3ã€é‡æ–°ä½¿ç”¨å·²ç»è¢«é”€æ¯çš„树,必须è¦ä½¿ç”¨ init 方法进行åˆå§‹åŒ–。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree 的 DOM 容器的 id</p>
+ <p class="highlight_red">çœç•¥ treeId,表示销æ¯å½“å‰é¡µé¢å…¨éƒ¨çš„ zTree</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. é”€æ¯ id 为 "treeDemo" çš„ zTree</h4>
+ <pre xmlns=""><code>$.fn.zTree.destroy("treeDemo");</code></pre>
+ <h4>2. 销æ¯å…¨éƒ¨ çš„ zTree</h4>
+ <pre xmlns=""><code>$.fn.zTree.destroy();</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree.getZTreeObj.html b/common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree.getZTreeObj.html
new file mode 100755
index 00000000..b1d1db40
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree.getZTreeObj.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId)</span><span class="path">$.fn.zTree.</span>getZTreeObj</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree v3.x 专门æä¾›çš„æ ¹æ® treeId èŽ·å– zTree 对象的方法。 </p>
+ <p class="highlight_red">必须在åˆå§‹åŒ– zTree 以åŽæ‰å¯ä»¥ä½¿ç”¨æ­¤æ–¹æ³•ã€‚</p>
+ <p>有了这个方法,用户ä¸å†éœ€è¦è‡ªå·±è®¾å®šå…¨å±€å˜é‡æ¥ä¿å­˜ zTree åˆå§‹åŒ–åŽå¾—到的对象了,而且在所有回调函数中全都会返回 treeId 属性,用户å¯ä»¥éšæ—¶ä½¿ç”¨æ­¤æ–¹æ³•èŽ·å–需è¦è¿›è¡Œæ“作的 zTree 对象</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree 的 DOM 容器的 id</p>
+ <h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+ <p>zTree 对象,æä¾›æ“作 zTree çš„å„ç§æ–¹æ³•ï¼Œå¯¹äºŽé€šè¿‡ js æ“作 zTree æ¥è¯´å¿…须通过此对象</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. èŽ·å– id 为 tree çš„ zTree 对象</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree.init.html b/common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree.init.html
new file mode 100755
index 00000000..8db6d2c7
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree.init.html
@@ -0,0 +1,74 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(obj, zSetting, zNodes)</span><span class="path">$.fn.zTree.</span>init</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree åˆå§‹åŒ–方法,创建 zTree 必须使用此方法</p>
+ <p>1ã€é¡µé¢éœ€è¦è¿›è¡Œ W3C 申明,例如:&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"&nbsp;&nbsp; &nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;。</p>
+ <p>2ã€éœ€è¦é¦–先加载 jquery-1.4.2.js 或其他更高版本的 jQuery 。</p>
+ <p>3ã€éœ€è¦åŠ è½½ jquery-ztree.core-3.0.js,如果需è¦ç”¨åˆ° 编辑功能 或 checkbox / radio 还需è¦åˆ†åˆ«åŠ è½½ jquery-ztree.exedit-3.0.js å’Œ jquery-ztree.excheck-3.0.js 。</p>
+ <p>4ã€éœ€è¦åŠ è½½ zTreeStyle.css ä»¥åŠ zTreeStyle 目录下的 img 文件。</p>
+ <p>5ã€å¦‚果需è¦ä½¿ç”¨è‡ªå®šä¹‰å›¾æ ‡è¯·å‚考相应的Demo。</p>
+ <p>6ã€è¯·æ³¨æ„设置 zTree çš„å®¹å™¨æ ·å¼ class="ztree",其中 "ztree" 这个 className,å¯ä»¥æ ¹æ®éœ€è¦éšæ„修改,别忘了修改 css 中对应å字就是了,对于容器如果需è¦å¢žåŠ å…¶ä»–特殊样å¼ï¼Œå¯æ ¹æ®è‡ªå·±çš„需è¦è¿›è¡Œä¿®æ”¹ã€‚</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>obj</b><span>jQuery Object</span></h4>
+ <p>用于展现 zTree 的 DOM 容器</p>
+ <h4 class="topLine"><b>zSetting</b><span>JSON</span></h4>
+ <p>zTree çš„é…置数æ®ï¼Œå…·ä½“请å‚考 “setting é…置详解â€ä¸­çš„å„个属性详细说明</p>
+ <h4 class="topLine"><b>zNodes</b><span>Array(JSON) / JSON</span></h4>
+ <p>zTree 的节点数æ®ï¼Œå…·ä½“请å‚考 “treeNode 节点数æ®è¯¦è§£â€ä¸­çš„å„个属性详细说明</p>
+ <p class="highlight_red">1ã€v3.x 支æŒå•ç‹¬æ·»åŠ ä¸€ä¸ªèŠ‚点,å³å¦‚æžœåªæ–°å¢žä¸€ä¸ªèŠ‚点,ä¸ç”¨å¿…须包在数组中</p>
+ <p class="highlight_red">2ã€å¦‚果需è¦å¼‚步加载根节点,å¯ä»¥è®¾ç½®ä¸º null 或 [ ]</p>
+ <p class="highlight_red">3ã€ä½¿ç”¨ç®€å•æ•°æ®æ¨¡å¼ï¼Œè¯·å‚考 setting.data.simpleData 内的属性说明</p>
+ <h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+ <p>zTree 对象,æä¾›æ“作 zTree çš„å„ç§æ–¹æ³•ï¼Œå¯¹äºŽé€šè¿‡ js æ“作 zTree æ¥è¯´å¿…须通过此对象</p>
+ <p class="highlight_red">如果ä¸éœ€è¦è‡ªè¡Œè®¾å®šå…¨å±€å˜é‡ä¿å­˜ï¼Œå¯ä»¥åˆ©ç”¨ $.fn.zTree.getZTreeObj 方法éšæ—¶èŽ·å–</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 简å•åˆ›å»º zTree 演示</h4>
+ <pre xmlns=""><code>&lt;!DOCTYPE html&gt;
+&lt;HTML&gt;
+ &lt;HEAD&gt;
+ &lt;TITLE&gt; ZTREE DEMO &lt;/TITLE&gt;
+ &lt;meta http-equiv="content-type" content="text/html; charset=UTF-8"&gt;
+ &lt;link rel="stylesheet" href="zTreeStyle/zTreeStyle.css" type="text/css"&gt;
+ &lt;script type="text/javascript" src="jquery-1.4.2.js"&gt;&lt;/script&gt;
+ &lt;script type="text/javascript" src="jquery.ztree.core-3.5.js"&gt;&lt;/script&gt;
+&lt;!--
+ &lt;script type="text/javascript" src="jquery.ztree.excheck-3.5.js"&gt;&lt;/script&gt;
+ &lt;script type="text/javascript" src="jquery.ztree.exedit-3.5.js"&gt;&lt;/script&gt;
+--&gt;
+ &lt;SCRIPT type="text/javascript" &gt;
+ var zTreeObj,
+ setting = {
+ view: {
+ selectedMulti: false
+ }
+ },
+ zTreeNodes = [
+ {"name":"网站导航", open:true, children: [
+ { "name":"google", "url":"http://g.cn", "target":"_blank"},
+ { "name":"baidu", "url":"http://baidu.com", "target":"_blank"},
+ { "name":"sina", "url":"http://www.sina.com.cn", "target":"_blank"}
+ ]
+ }
+ ];
+
+ $(document).ready(function(){
+ zTreeObj = $.fn.zTree.init($("#tree"), setting, zTreeNodes);
+
+ });
+ &lt;/SCRIPT&gt;
+ &lt;/HEAD&gt;
+
+&lt;BODY&gt;
+&lt;ul id="tree" class="ztree" style="width:230px; overflow:auto;"&gt;&lt;/ul&gt;
+ &lt;/BODY&gt;
+&lt;/HTML&gt;</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.autoParam.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.autoParam.html
new file mode 100755
index 00000000..cf0f4d27
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.autoParam.html
@@ -0,0 +1,39 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Array(String)</span><span class="path">setting.async.</span>autoParam</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>异步加载时需è¦è‡ªåŠ¨æ交父节点属性的å‚数。<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+ <p>默认值:[ ]</p>
+ </div>
+ </div>
+ <h3>Array(String) æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>1ã€å°†éœ€è¦ä½œä¸ºå‚æ•°æ交的属性åç§°ï¼Œåˆ¶ä½œæˆ Array å³å¯ï¼Œä¾‹å¦‚:["id", "name"]</p>
+ <p>2ã€å¯ä»¥è®¾ç½®æ交时的å‚æ•°å称,例如 server åªæŽ¥å— zId : ["id=zId"]</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 id 属性为自动æ交的å‚æ•°</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ autoParam: ["id"]
+ }
+};
+å‡è®¾ 异步加载 父节点(node = {id:1, name:"test"}) çš„å­èŠ‚点时,将æ交å‚æ•° id=1
+......</code></pre>
+ <h4>2. 设置 id 属性作为 zId æˆä¸ºè‡ªåŠ¨æ交的å‚æ•°</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ autoParam: ["id=zId"]
+ }
+};
+å‡è®¾ 对父节点 node = {id:1, name:"test"},进行异步加载时,将æ交å‚æ•° zId=1
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.contentType.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.contentType.html
new file mode 100755
index 00000000..db0c92fe
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.contentType.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.async.</span>contentType</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Ajax æ交å‚æ•°çš„æ•°æ®ç±»åž‹ã€‚<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+ <p>默认值:"application/x-www-form-urlencoded"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> contentType = "application/x-www-form-urlencoded" å¯ä»¥æ»¡è¶³ç»å¤§éƒ¨åˆ†è¯·æ±‚,按照标准的 Form æ ¼å¼æ交å‚æ•°</p>
+ <p> contentType = "application/json" å¯ä»¥æ»¡è¶³ .Net 的编程需è¦ï¼ŒæŒ‰ç…§ JSON æ ¼å¼æ交å‚æ•°</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 Ajax æ交å‚æ•°çš„æ•°æ®ç±»åž‹ä¸º JSON æ ¼å¼</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ contentType: "application/json",
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.dataFilter.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.dataFilter.html
new file mode 100755
index 00000000..f174bf0f
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.dataFilter.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, parentNode, responseData)</span><span class="path">setting.async.</span>dataFilter</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于对 Ajax 返回数æ®è¿›è¡Œé¢„处ç†çš„函数。<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>进行异步加载的父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">对根进行异步加载时,parentNode = null</p>
+ <h4 class="topLine"><b>responseData</b><span>Array(JSON) / JSON / String</span></h4>
+ <p>异步加载获å–到的数æ®è½¬æ¢åŽçš„ Array(JSON) / JSON / String æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">v3.4开始 æ”¯æŒ XML æ•°æ®æ ¼å¼çš„ String</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON) / JSON</span></h4>
+ <p>返回值是 zTree 支æŒçš„JSON æ•°æ®ç»“æž„å³å¯ã€‚</p>
+ <p class="highlight_red">v3.x 支æŒå•ä¸ª JSON 节点数æ®è¿›è¡ŒåŠ è½½</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 修改异步获å–到的节点name属性</h4>
+ <pre xmlns=""><code>function ajaxDataFilter(treeId, parentNode, responseData) {
+ if (responseData) {
+ for(var i =0; i < responseData.length; i++) {
+ responseData[i].name += "_filter";
+ }
+ }
+ return responseData;
+};
+var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ dataFilter: ajaxDataFilter
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.dataType.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.dataType.html
new file mode 100755
index 00000000..6d639b70
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.dataType.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.async.</span>dataType</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Ajax 获å–çš„æ•°æ®ç±»åž‹ã€‚<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+ <p>默认值:"text"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> dataType = "text" å¯ä»¥æ»¡è¶³ç»å¤§éƒ¨åˆ†è¯·æ±‚</p>
+ <p class="highlight_red">其余 dataType 类型请å‚考 jQuery ajax 中的 dataType å‚æ•°</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 Ajax 获å–çš„æ•°æ®ç±»åž‹ä¸º 纯文本</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ dataType: "text",
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.enable.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.enable.html
new file mode 100755
index 00000000..9079ae10
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.enable.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.async.</span>enable</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 是å¦å¼€å¯å¼‚步加载模å¼</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示 å¼€å¯ å¼‚æ­¥åŠ è½½æ¨¡å¼</p>
+ <p> false 表示 关闭 异步加载模å¼</p>
+ <p class="highlight_red">如果设置为 true,请务必设置 setting.async 内的其它å‚数。</p>
+ <p class="highlight_red">如果需è¦æ ¹èŠ‚点也异步加载,åˆå§‹åŒ–æ—¶ treeNodes å‚数设置为 null å³å¯ã€‚</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 需è¦å¼€å¯å¼‚步加载模å¼</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.otherParam.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.otherParam.html
new file mode 100755
index 00000000..981715f1
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.otherParam.html
@@ -0,0 +1,40 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Array(String) / JSON</span><span class="path">setting.async.</span>otherParam</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Ajax 请求æ交的é™æ€å‚数键值对。<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+ <p>默认值:[ ]</p>
+ </div>
+ </div>
+ <h3>Array(String) æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>å¯ä»¥ä¸ºç©º[ ],如果有 key,则必须存在 value。 例如:[key, value]</p>
+ </div>
+ <h3>JSON æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>直接用 JSON æ ¼å¼åˆ¶ä½œé”®å€¼å¯¹ï¼Œä¾‹å¦‚:{ key1:value1, key2:value2 }</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 Array(String) æ ¼å¼çš„å‚æ•°</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ otherParam: ["id", "1", "name", "test"]
+ }
+};
+进行异步加载时,将æ交å‚æ•° id=1&name=test</code></pre>
+ <h4>2. 设置 JSON æ ¼å¼çš„å‚æ•°</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ otherParam: { "id":"1", "name":"test"}
+ }
+};
+进行异步加载时,将æ交å‚æ•° id=1&name=test</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.type.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.type.html
new file mode 100755
index 00000000..20d9a6b8
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.type.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.async.</span>type</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Ajax çš„ http 请求模å¼ã€‚<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+ <p>默认值:"post"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> type = "post" 表示异步加载采用 post 方法请求</p>
+ <p> type = "get" 表示异步加载采用 get 方法请求</p>
+ <p class="highlight_red">对应于 jQuery ajax 中的 type å‚æ•°</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置使用 get æ–¹å¼è¯·æ±‚æ•°æ®</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ type: "get",
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.url.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.url.html
new file mode 100755
index 00000000..a5209afa
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.url.html
@@ -0,0 +1,50 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Function(treeId, treeNode)</span><span class="path">setting.async.</span>url</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Ajax 获å–æ•°æ®çš„ URL 地å€ã€‚<span class="highlight_red">[setting.async.enable = true 时生效]</span></p>
+ <p>默认值:""</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>设置固定的异步加载 url 字符串,请注æ„地å€çš„路径,确ä¿é¡µé¢èƒ½æ­£å¸¸åŠ è½½</p>
+ <p class="highlight_red">url 内也å¯ä»¥å¸¦å‚数,这些å‚æ•°å°±åªèƒ½æ˜¯é€šè¿‡ get æ–¹å¼æ交了,并且请注æ„进行转ç </p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦å¼‚步加载å­èŠ‚点的的父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">针对根进行异步加载时,treeNode = null</p>
+ <h4 class="topLine"><b>返回值</b><span>String</span></h4>
+ <p>è¿”å›žå€¼åŒ String æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置异步获å–节点的 URL 为 nodes.php</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "nodes.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+ <h4>2. 设置异步获å–节点的 URL 为 function 动æ€èŽ·å–</h4>
+ <pre xmlns=""><code>function getAsyncUrl(treeId, treeNode) {
+ return treeNode.isParent ? "nodes1.php" : "nodes2.php";
+};
+var setting = {
+ async: {
+ enable: true,
+ url: getAsyncUrl,
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeAsync.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeAsync.html
new file mode 100755
index 00000000..70ba0fc4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeAsync.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeAsync</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·å¼‚步加载之å‰çš„事件回调函数,zTree æ ¹æ®è¿”回值确定是å¦å…许进行异步加载</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>进行异步加载的父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">针对根进行异步加载时,treeNode = null</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†ä¸è¿›è¡Œå¼‚æ­¥åŠ è½½ï¼Œä¹Ÿæ— æ³•è§¦å‘ onAsyncSuccess / onAsyncError 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢ id 为 1 的父节点进行异步加载æ“作</h4>
+ <pre xmlns=""><code>function zTreeBeforeAsync(treeId, treeNode) {
+ return (treeNode.id !== 1);
+};
+var setting = {
+ callback: {
+ beforeAsync: zTreeBeforeAsync
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeCheck.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeCheck.html
new file mode 100755
index 00000000..a0e1f42f
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeCheck.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeCheck</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· 勾选 或 å–消勾选 之å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许 勾选 或 å–消勾选 </p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>进行 勾选 或 å–消勾选 的节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,将ä¸ä¼šæ”¹å˜å‹¾é€‰çŠ¶æ€ï¼Œå¹¶ä¸”æ— æ³•è§¦å‘ onCheck 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢æ‰€æœ‰å‹¾é€‰æ“作,ä¿æŒåˆå§‹åŒ–的勾选状æ€</h4>
+ <pre xmlns=""><code>function zTreeBeforeCheck(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeCheck: zTreeBeforeCheck
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeClick.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeClick.html
new file mode 100755
index 00000000..6efe9286
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeClick.html
@@ -0,0 +1,49 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode, clickFlag)</span><span class="path">setting.callback.</span>beforeClick</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·å•å‡»èŠ‚点之å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许å•å‡»æ“作</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>被å•å‡»çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>clickFlag</b><span>Number</span></h4>
+ <p>节点被点击åŽçš„选中æ“作类型,详细看下表</p>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead><tr><td>clickFlag</td><td title="是å¦å…许多点选中">selectedMulti</td><td title="是å¦æŒ‰ä¸‹ Ctrl 或 Cmd é”®">autoCancelSelected<br/>&&<br/>event.ctrlKey / metaKey</td><td title="节点当å‰é€‰æ‹©çŠ¶æ€">isSelected</td><td>选中æ“作</td></tr></thead>
+ <tbody>
+ <tr><td>1</td><td>true</td><td>false</td><td>false</td><td>普通选中</td></tr>
+ <tr><td>1</td><td>true</td><td>false</td><td>true</td><td>普通选中</td></tr>
+ <tr><td>2</td><td>true</td><td>true</td><td>false</td><td>追加选中</td></tr>
+ <tr><td>0</td><td>true</td><td>true</td><td>true</td><td>å–消选中</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>false</td><td>普通选中</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>true</td><td>普通选中</td></tr>
+ <tr><td>1</td><td>false</td><td>true</td><td>false</td><td>普通选中</td></tr>
+ <tr><td>0</td><td>false</td><td>true</td><td>true</td><td>å–消选中</td></tr>
+ </tbody>
+ </table>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†ä¸ä¼šé€‰ä¸­èŠ‚ç‚¹ï¼Œä¹Ÿæ— æ³•è§¦å‘ onClick 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢èŠ‚点被选中</h4>
+ <pre xmlns=""><code>function zTreeBeforeClick(treeId, treeNode, clickFlag) {
+ return (treeNode.id !== 1);
+};
+var setting = {
+ callback: {
+ beforeClick: zTreeBeforeClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeCollapse.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeCollapse.html
new file mode 100755
index 00000000..d778e9c8
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeCollapse.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeCollapse</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·çˆ¶èŠ‚点折å ä¹‹å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许折å æ“作</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>è¦æŠ˜å çš„父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†ä¸ä¼šæŠ˜å èŠ‚ç‚¹ï¼Œä¹Ÿæ— æ³•è§¦å‘ onCollapse 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢æ‰€æœ‰å·²å±•å¼€çš„父节点折å </h4>
+ <pre xmlns=""><code>function zTreeBeforeCollapse(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeCollapse: zTreeBeforeCollapse
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDblClick.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDblClick.html
new file mode 100755
index 00000000..ed7e4dc2
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDblClick.html
@@ -0,0 +1,36 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeDblClick</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标åŒå‡»ä¹‹å‰çš„事件回调函数,并且根æ®è¿”å›žå€¼ç¡®å®šè§¦å‘ onDblClick 事件回调函数</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>é¼ æ ‡åŒå‡»æ—¶æ‰€åœ¨èŠ‚点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 falseï¼Œå°†ä»…ä»…æ— æ³•è§¦å‘ onDblClick 事件回调函数,对其他æ“作无任何影å“</p>
+ <p class="highlight_red">此事件回调函数对åŒå‡»èŠ‚点展开功能无任何影å“,如果需è¦è®¾ç½®è¯·å‚考 setting.view.dblClickExpand 属性</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢ onDblClick 事件</h4>
+ <pre xmlns=""><code>function zTreeBeforeDblClick(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeDblClick: zTreeBeforeDblClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDrag.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDrag.html
new file mode 100755
index 00000000..1e783a3c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDrag.html
@@ -0,0 +1,39 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNodes)</span><span class="path">setting.callback.</span>beforeDrag</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点被拖拽之å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许开å¯æ‹–拽æ“作</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>被拖拽的节点 treeNodes 所在 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>è¦è¢«æ‹–拽的节点 JSON æ•°æ®é›†åˆ</p>
+ <p class="highlight_red">v3.x å…许多个åŒçº§èŠ‚点åŒæ—¶è¢«æ‹–拽,因此将此å‚数修改为 Array(JSON)</p>
+ <p class="highlight_red">如果拖拽时多个被选择的节点ä¸æ˜¯åŒçº§å…³ç³»ï¼Œåˆ™åªèƒ½æ‹–拽鼠标当å‰æ‰€åœ¨ä½ç½®çš„节点</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†ç»ˆæ­¢æ‹–æ‹½ï¼Œä¹Ÿæ— æ³•è§¦å‘ onDrag / beforeDrop / onDrop 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢å…¨éƒ¨æ‹–拽æ“作</h4>
+ <pre xmlns=""><code>function zTreeBeforeDrag(treeId, treeNodes) {
+ return false;
+};
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeDrag: zTreeBeforeDrag
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDragOpen.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDragOpen.html
new file mode 100755
index 00000000..ceab2d34
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDragOpen.html
@@ -0,0 +1,37 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeDragOpen</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·æ‹–拽节点移动到折å çŠ¶æ€çš„父节点åŽï¼Œå³å°†è‡ªåŠ¨å±•å¼€è¯¥çˆ¶èŠ‚点之å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许自动展开æ“作</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>需è¦è¢«å±•å¼€çš„父节点 treeNode 所在 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>è¦è¢«è‡ªåŠ¨å±•å¼€çš„父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree 将无法进行自动展开æ“作</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢å…¨éƒ¨æ‹–拽时的自动展开æ“作</h4>
+ <pre xmlns=""><code>function zTreeBeforeDragOpen(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeDragOpen: zTreeBeforeDragOpen
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDrop.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDrop.html
new file mode 100755
index 00000000..41237434
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDrop.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNodes, targetNode, moveType, isCopy)</span><span class="path">setting.callback.</span>beforeDrop</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点拖拽æ“作结æŸä¹‹å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许此拖拽æ“作</p>
+ <p>默认值:null</p>
+ <p class="highlight_red">如未拖拽到有效ä½ç½®ï¼Œåˆ™ä¸è§¦å‘此回调函数,直接将节点æ¢å¤åŽŸä½ç½®</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>目标节点 targetNode 所在 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>被拖拽的节点 JSON æ•°æ®é›†åˆ</p>
+ <p class="highlight_red">无论拖拽æ“作为 å¤åˆ¶ 还是 移动,treeNodes 都是当å‰è¢«æ‹–拽节点的数æ®é›†åˆã€‚</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>treeNodes 被拖拽放开的目标节点 JSON æ•°æ®å¯¹è±¡ã€‚</p>
+ <p class="highlight_red">如果拖拽æˆä¸ºæ ¹èŠ‚点,则 targetNode = null</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>指定移动到目标节点的相对ä½ç½®</p>
+ <p class="highlight_red">"inner":æˆä¸ºå­èŠ‚点,"prev":æˆä¸ºåŒçº§å‰ä¸€ä¸ªèŠ‚点,"next":æˆä¸ºåŒçº§åŽä¸€ä¸ªèŠ‚点</p>
+ <h4 class="topLine"><b>isCopy</b><span>Boolean</span></h4>
+ <p>拖拽节点æ“作是 å¤åˆ¶ 或 移动</p>
+ <p class="highlight_red">true:å¤åˆ¶ï¼›false:移动</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†æ¢å¤è¢«æ‹–æ‹½çš„èŠ‚ç‚¹ï¼Œä¹Ÿæ— æ³•è§¦å‘ onDrop 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢å°†èŠ‚点拖拽æˆä¸ºæ ¹èŠ‚点</h4>
+ <pre xmlns=""><code>function zTreeBeforeDrop(treeId, treeNodes, targetNode, moveType) {
+ return !(targetNode == null || (moveType != "inner" && !targetNode.parentTId));
+};
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeDrop: zTreeBeforeDrop
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeEditName.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeEditName.html
new file mode 100755
index 00000000..9df3ca2c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeEditName.html
@@ -0,0 +1,38 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeEditName</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点编辑按钮的 click 事件,并且根æ®è¿”回值确定是å¦å…许进入å称编辑状æ€</p>
+ <p class="highlight_red">此事件回调函数最主è¦æ˜¯ç”¨äºŽæ•èŽ·ç¼–辑按钮的点击事件,然åŽè§¦å‘自定义的编辑界é¢æ“作。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>å°†è¦è¿›å…¥ç¼–辑å称状æ€çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,节点将无法进入 zTree 默认的编辑å称状æ€</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢ä¿®æ”¹çˆ¶èŠ‚点的å称</h4>
+ <pre xmlns=""><code>function zTreeBeforeEditName(treeId, treeNode) {
+ return !treeNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeEditName: zTreeBeforeEditName
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeExpand.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeExpand.html
new file mode 100755
index 00000000..350972b7
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeExpand.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeExpand</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·çˆ¶èŠ‚点展开之å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许展开æ“作</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>è¦å±•å¼€çš„父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†ä¸ä¼šå±•å¼€èŠ‚ç‚¹ï¼Œä¹Ÿæ— æ³•è§¦å‘ onExpand 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢æ‰€æœ‰å·²æŠ˜å çš„父节点展开</h4>
+ <pre xmlns=""><code>function zTreeBeforeExpand(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeExpand: zTreeBeforeExpand
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeMouseDown.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeMouseDown.html
new file mode 100755
index 00000000..2c3f28d8
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeMouseDown.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeMouseDown</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标按键按下之å‰çš„事件回调函数,并且根æ®è¿”å›žå€¼ç¡®å®šè§¦å‘ onMouseDown 事件回调函数</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>鼠标按键按下时所在节点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 falseï¼Œå°†ä»…ä»…æ— æ³•è§¦å‘ onMouseDown 事件回调函数,对其他æ“作无任何影å“</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢ onMouseDown 事件</h4>
+ <pre xmlns=""><code>function zTreeBeforeMouseDown(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeMouseDown: zTreeBeforeMouseDown
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeMouseUp.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeMouseUp.html
new file mode 100755
index 00000000..f0b01b97
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeMouseUp.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeMouseUp</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标按键æ¾å¼€ä¹‹å‰çš„事件回调函数,并且根æ®è¿”å›žå€¼ç¡®å®šè§¦å‘ onMouseUp 事件回调函数</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>鼠标按键æ¾å¼€æ—¶æ‰€åœ¨èŠ‚点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 falseï¼Œå°†ä»…ä»…æ— æ³•è§¦å‘ onMouseUp 事件回调函数,对其他æ“作无任何影å“</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢ onMouseUp 事件</h4>
+ <pre xmlns=""><code>function zTreeBeforeMouseUp(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeMouseUp: zTreeBeforeMouseUp
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeRemove.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeRemove.html
new file mode 100755
index 00000000..0edb3fd0
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeRemove.html
@@ -0,0 +1,37 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeRemove</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点被删除之å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许删除æ“作</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>å°†è¦åˆ é™¤çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†ä¸åˆ é™¤èŠ‚ç‚¹ï¼Œä¹Ÿæ— æ³•è§¦å‘ onRemove 事件回调函数</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢å…¨éƒ¨åˆ é™¤æ“作</h4>
+ <pre xmlns=""><code>function zTreeBeforeRemove(treeId, treeNode) {
+ return false;
+}
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeRemove: zTreeBeforeRemove
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeRename.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeRename.html
new file mode 100755
index 00000000..07099619
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeRename.html
@@ -0,0 +1,46 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode, newName, isCancel)</span><span class="path">setting.callback.</span>beforeRename</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点编辑å称结æŸï¼ˆInput 失去焦点 或 按下 Enter 键)之åŽï¼Œæ›´æ–°èŠ‚点å称数æ®ä¹‹å‰çš„事件回调函数,并且根æ®è¿”回值确定是å¦å…许更改å称的æ“作</p>
+ <p class="highlight_red">节点进入编辑å称状æ€åŽï¼ŒæŒ‰ ESC é”®å¯ä»¥æ”¾å¼ƒå½“å‰ä¿®æ”¹ï¼Œæ¢å¤åŽŸå称,å–消编辑å称状æ€</p>
+ <p class="highlight_red">从 v3.5.13 开始,å–消编辑状æ€ä¹Ÿä¼šè§¦å‘æ­¤å›žè°ƒï¼Œæ ¹æ® isCancel å‚数判断</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>å°†è¦æ›´æ”¹å称的节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>newName</b><span>String</span></h4>
+ <p>修改åŽçš„æ–°å称</p>
+ <h4 class="topLine"><b>isCancel</b><span>Boolean</span></h4>
+ <p>是å¦å–消æ“作 (v3.5.13+)</p>
+ <p class="highlight_red">isCancel = true 表示å–消编辑æ“作(按下 ESC 或 使用 cancelEditName 方法)</p>
+ <p class="highlight_red">isCancel = false 表示确认修改æ“作</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 false,zTree å°†ä¿æŒå称编辑状æ€ï¼Œæ— æ³•è§¦å‘ onRename 事件回调函数,并且会导致å±è”½å…¶å®ƒäº‹ä»¶ï¼Œç›´åˆ°ä¿®æ”¹å称使得 beforeRename 返回 true</p>
+ <p class="highlight_red">如果返回 false,ä¸ä¼šè®© input 输入框获å–焦点,é¿å…由于警告信æ¯è€Œå¯¼è‡´åå¤è§¦å‘ beforeRename。 请在关闭æ示警告信æ¯åŽï¼Œåˆ©ç”¨ editName 方法让 input é‡æ–°èŽ·å–焦点。</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢ä¿®æ”¹çš„å称的长度å°äºŽ 5</h4>
+ <pre xmlns=""><code>function zTreeBeforeRename(treeId, treeNode, newName, isCancel) {
+ return newName.length > 5;
+}
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeRename: zTreeBeforeRename
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeRightClick.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeRightClick.html
new file mode 100755
index 00000000..1a5bdaa3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeRightClick.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeRightClick</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标å³é”®ç‚¹å‡»ä¹‹å‰çš„事件回调函数,并且根æ®è¿”å›žå€¼ç¡®å®šè§¦å‘ onRightClick 事件回调函数</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>é¼ æ ‡å³é”®ç‚¹å‡»æ—¶æ‰€åœ¨èŠ‚点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值是 true / false</p>
+ <p class="highlight_red">如果返回 falseï¼Œå°†ä»…ä»…æ— æ³•è§¦å‘ onRightClick 事件回调函数,对其他æ“作无任何影å“</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢ onRightClick 事件</h4>
+ <pre xmlns=""><code>function zTreeBeforeRightClick(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeRightClick: zTreeBeforeRightClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onAsyncError.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onAsyncError.html
new file mode 100755
index 00000000..c469e113
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onAsyncError.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span class="path">setting.callback.</span>onAsyncError</h2>
+ <h2><span>Function(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown)</span>&nbsp;</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·å¼‚步加载出现异常错误的事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeAsync 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onAsyncSuccess / onAsyncError 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>进行异步加载的父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">针对根进行异步加载时,treeNode = null</p>
+ <h4 class="topLine"><b>XMLHttpRequest</b><span>String</span></h4>
+ <p>标准 XMLHttpRequest 对象,请å‚考 JQuery API 文档。</p>
+ <h4 class="topLine"><b>textStatus</b><span>String</span></h4>
+ <p>请求状æ€ï¼šsuccess,error,请å‚考 JQuery API 文档。</p>
+ <h4 class="topLine"><b>errorThrown</b><span>String</span></h4>
+ <p>errorThrown åªæœ‰å½“异常å‘生时æ‰ä¼šè¢«ä¼ é€’,请å‚考 JQuery API 文档。</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 异步加载出现异常åŽï¼Œå¼¹å‡ºé”™è¯¯ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnAsyncError(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown) {
+ alert(XMLHttpRequest);
+};
+var setting = {
+ callback: {
+ onAsyncError: zTreeOnAsyncError
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onAsyncSuccess.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onAsyncSuccess.html
new file mode 100755
index 00000000..081e9d73
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onAsyncSuccess.html
@@ -0,0 +1,38 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode, msg)</span><span class="path">setting.callback.</span>onAsyncSuccess</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·å¼‚步加载正常结æŸçš„事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeAsync 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onAsyncSuccess / onAsyncError 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>进行异步加载的父节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">针对根进行异步加载时,treeNode = null</p>
+ <h4 class="topLine"><b>msg</b><span>String / Object</span></h4>
+ <p>异步获å–的节点数æ®å­—符串,主è¦ä¾¿äºŽç”¨æˆ·è°ƒè¯•ä½¿ç”¨ã€‚</p>
+ <p class="highlight_red">实际数æ®ç±»åž‹ä¼šå— setting.async.dataType 的设置影å“,请å‚考 JQuery API 文档。</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 异步加载æˆåŠŸåŽï¼Œå¼¹å‡ºæ示信æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) {
+ alert(msg);
+};
+var setting = {
+ callback: {
+ onAsyncSuccess: zTreeOnAsyncSuccess
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onCheck.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onCheck.html
new file mode 100755
index 00000000..113eee97
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onCheck.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onCheck</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· checkbox / radio 被勾选 或 å–消勾选的事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeCheck 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onCheck 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>被勾选 或 å–消勾选的节点 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡ç‚¹å‡» checkbox 或 radio åŽï¼Œ 弹出该节点的 tIdã€name 以åŠå½“å‰å‹¾é€‰çŠ¶æ€çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnCheck(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name + "," + treeNode.checked);
+};
+var setting = {
+ callback: {
+ onCheck: zTreeOnCheck
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onClick.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onClick.html
new file mode 100755
index 00000000..1f7a2664
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onClick.html
@@ -0,0 +1,49 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode, clickFlag)</span><span class="path">setting.callback.</span>onClick</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点被点击的事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeClick 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onClick 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>被点击的节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>clickFlag</b><span>Number</span></h4>
+ <p>节点被点击åŽçš„选中æ“作类型,详细看下表</p>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead><tr><td>clickFlag</td><td title="是å¦å…许多点选中">selectedMulti</td><td title="是å¦æŒ‰ä¸‹ Ctrl 或 Cmd é”®">autoCancelSelected<br/>&&<br/>event.ctrlKey / metaKey</td><td title="节点当å‰é€‰æ‹©çŠ¶æ€">isSelected</td><td>选中æ“作</td></tr></thead>
+ <tbody>
+ <tr><td>1</td><td>true</td><td>false</td><td>false</td><td>普通选中</td></tr>
+ <tr><td>1</td><td>true</td><td>false</td><td>true</td><td>普通选中</td></tr>
+ <tr><td>2</td><td>true</td><td>true</td><td>false</td><td>追加选中</td></tr>
+ <tr><td>0</td><td>true</td><td>true</td><td>true</td><td>å–消选中</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>false</td><td>普通选中</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>true</td><td>普通选中</td></tr>
+ <tr><td>1</td><td>false</td><td>true</td><td>false</td><td>普通选中</td></tr>
+ <tr><td>0</td><td>false</td><td>true</td><td>true</td><td>å–消选中</td></tr>
+ </tbody>
+ </table>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡ç‚¹å‡»èŠ‚点åŽï¼Œ 弹出该节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnClick(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onClick: zTreeOnClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onCollapse.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onCollapse.html
new file mode 100755
index 00000000..1c816c20
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onCollapse.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onCollapse</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点被折å çš„事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeCollapse 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onCollapse 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>被折å çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡æŠ˜å èŠ‚点åŽï¼Œ 弹出该节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnCollapse(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onCollapse: zTreeOnCollapse
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDblClick.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDblClick.html
new file mode 100755
index 00000000..deb8e626
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDblClick.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onDblClick</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标åŒå‡»ä¹‹åŽçš„事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeDblClick 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onDblClick 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>é¼ æ ‡åŒå‡»æ—¶æ‰€åœ¨èŠ‚点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡é¼ æ ‡åŒå‡»åŽï¼Œ 弹出鼠标所在节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnDblClick(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onDblClick: zTreeOnDblClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDrag.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDrag.html
new file mode 100755
index 00000000..efd115bd
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDrag.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNodes)</span><span class="path">setting.callback.</span>onDrag</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点被拖拽的事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeDrag 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onDragMove å’Œ onDrag 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>被拖拽的节点 treeNodes 所在 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>è¦è¢«æ‹–拽的节点 JSON æ•°æ®é›†åˆ</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡å¼€å§‹è¿›è¡Œæ‹–拽节点åŽï¼Œ 弹出被拖拽节点的个数信æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnDrag(event, treeId, treeNodes) {
+ alert(treeNodes.length);
+};
+var setting = {
+ callback: {
+ onDrag: zTreeOnDrag
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDragMove.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDragMove.html
new file mode 100755
index 00000000..e6a8dd9e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDragMove.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNodes)</span><span class="path">setting.callback.</span>onDragMove</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点被拖拽过程中移动的事件回调函数</p>
+ <p class="highlight_red">主è¦ç”¨äºŽæ•èŽ· zTree 节点拖拽到的 DOM,从而æ“作对应的 DOM。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>被拖拽的节点 treeNodes 所在 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>è¦è¢«æ‹–拽的节点 JSON æ•°æ®é›†åˆ</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 拖拽节点时,éšæ—¶è¾“出 当å‰æ‹–拽到的目标 DOM</h4>
+ <pre xmlns=""><code>function zTreeOnDragMove(event, treeId, treeNodes) {
+ console.log(event.target);
+};
+var setting = {
+ callback: {
+ onDragMove: zTreeOnDragMove
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDrop.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDrop.html
new file mode 100755
index 00000000..c6773a88
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDrop.html
@@ -0,0 +1,46 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNodes, targetNode, moveType, isCopy)</span><span class="path">setting.callback.</span>onDrop</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点拖拽æ“作结æŸçš„事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeDrop 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onDrop 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>目标节点 targetNode 所在 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>被拖拽的节点 JSON æ•°æ®é›†åˆ</p>
+ <p class="highlight_red">如果拖拽æ“作为 移动,treeNodes 是当å‰è¢«æ‹–拽节点的数æ®é›†åˆã€‚</p>
+ <p class="highlight_red">如果拖拽æ“作为 å¤åˆ¶ï¼ŒtreeNodes 是å¤åˆ¶åŽ clone 得到的新节点数æ®ã€‚</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>æˆä¸º treeNodes 拖拽结æŸçš„目标节点 JSON æ•°æ®å¯¹è±¡ã€‚</p>
+ <p class="highlight_red">如果拖拽æˆä¸ºæ ¹èŠ‚点,则 targetNode = null</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>指定移动到目标节点的相对ä½ç½®</p>
+ <p class="highlight_red">"inner":æˆä¸ºå­èŠ‚点,"prev":æˆä¸ºåŒçº§å‰ä¸€ä¸ªèŠ‚点,"next":æˆä¸ºåŒçº§åŽä¸€ä¸ªèŠ‚点</p>
+ <p class="highlight_red">如果 moveType = null,表明拖拽无效</p>
+ <h4 class="topLine"><b>isCopy</b><span>Boolean</span></h4>
+ <p>拖拽节点æ“作是 å¤åˆ¶ 或 移动</p>
+ <p class="highlight_red">true:å¤åˆ¶ï¼›false:移动</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡æ‹–拽æ“作结æŸåŽï¼Œ 弹出该被拖拽节点的个数以åŠç›®æ ‡èŠ‚点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnDrop(event, treeId, treeNodes, targetNode, moveType) {
+ alert(treeNodes.length + "," + (targetNode ? (targetNode.tId + ", " + targetNode.name) : "isRoot" ));
+};
+var setting = {
+ callback: {
+ onDrop: zTreeOnDrop
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onExpand.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onExpand.html
new file mode 100755
index 00000000..791c5f6f
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onExpand.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onExpand</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点被展开的事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeExpand 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onExpand 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>被展开的节点 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡å±•å¼€èŠ‚点åŽï¼Œ 弹出该节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnExpand(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onExpand: zTreeOnExpand
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onMouseDown.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onMouseDown.html
new file mode 100755
index 00000000..bc9d0ea7
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onMouseDown.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onMouseDown</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标按键按下åŽçš„事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeMouseDown 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onMouseDown 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>鼠标按键按下时所在节点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡é¼ æ ‡æŒ‰é”®æŒ‰ä¸‹åŽï¼Œ 弹出鼠标所在节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnMouseDown(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onMouseDown: zTreeOnMouseDown
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onMouseUp.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onMouseUp.html
new file mode 100755
index 00000000..a969fef9
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onMouseUp.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onMouseUp</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标按键æ¾å¼€åŽçš„事件回调函数</p>
+ <p class="highlight_red">如果设置了 setting.callback.beforeMouseUp 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onMouseUp 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>鼠标按键æ¾å¼€æ—¶æ‰€åœ¨èŠ‚点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡é¼ æ ‡æŒ‰é”®æ¾å¼€åŽï¼Œ 弹出鼠标所在节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnMouseUp(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onMouseUp: zTreeOnMouseUp
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onNodeCreated.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onNodeCreated.html
new file mode 100755
index 00000000..2ebaee63
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onNodeCreated.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onNodeCreated</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚ç‚¹ç”Ÿæˆ DOM åŽçš„事件回调函数</p>
+ <p class="highlight_red">v3.x 采用了延迟加载技术,因此对于父节点未展开的å­èŠ‚点æ¥è¯´ï¼Œåˆå§‹åŒ–åŽæ˜¯ä¸ä¼šè§¦å‘此回调函数,直到其父节点被展开</p>
+ <p class="highlight_red">大数æ®é‡çš„节点加载请注æ„:ä¸è®¾ç½® onNodeCreated,å¯ä»¥æå‡ä¸€éƒ¨åˆ†åˆå§‹åŒ–性能</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>ç”Ÿæˆ DOM 完毕的节点的 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 创建节点 DOM åŽï¼Œ 弹出该节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnNodeCreated(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onNodeCreated: zTreeOnNodeCreated
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onRemove.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onRemove.html
new file mode 100755
index 00000000..e7e625d9
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onRemove.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onRemove</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·åˆ é™¤èŠ‚点之åŽçš„事件回调函数。</p>
+ <p class="highlight_red">如果用户设置了 beforeRemove 回调函数,并返回 falseï¼Œå°†æ— æ³•è§¦å‘ onRemove 事件回调函数。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>å°†è¦åˆ é™¤çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 删除节点时,弹出被删除的节点的 tId ä»¥åŠ name ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnRemove(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+}
+var setting = {
+ callback: {
+ onRemove: zTreeOnRemove
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onRename.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onRename.html
new file mode 100755
index 00000000..f225463f
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onRename.html
@@ -0,0 +1,40 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode, isCancel)</span><span class="path">setting.callback.</span>onRename</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ·èŠ‚点编辑å称结æŸä¹‹åŽçš„事件回调函数。</p>
+ <p>1ã€èŠ‚点进入编辑å称状æ€ï¼Œå¹¶ä¸”修改节点å称åŽè§¦å‘此回调函数。<span class="highlight_red">如果用户设置了 beforeRename 回调函数,并返回 falseï¼Œå°†æ— æ³•è§¦å‘ onRename 事件回调函数。</span></p>
+ <p>2ã€<span class="highlight_red">如果通过直接修改 treeNode çš„æ•°æ®ï¼Œå¹¶ä¸”利用 updateNode 方法更新,是ä¸ä¼šè§¦å‘此回调函数的。</span></p>
+ <p class="highlight_red">3ã€ä»Ž v3.5.13 开始,å–消编辑状æ€ä¹Ÿä¼šè§¦å‘æ­¤å›žè°ƒï¼Œæ ¹æ® isCancel å‚数判断</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>被修改å称的节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>isCancel</b><span>Boolean</span></h4>
+ <p>是å¦å–消æ“作 (v3.5.13+)</p>
+ <p class="highlight_red">isCancel = true 表示å–消编辑æ“作(按下 ESC 或 使用 cancelEditName 方法)</p>
+ <p class="highlight_red">isCancel = false 表示确认修改æ“作</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 修改å称åŽï¼Œå¼¹å‡ºè¢«ä¿®æ”¹å称的节点的 tId ä»¥åŠ name ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnRename(event, treeId, treeNode, isCancel) {
+ alert(treeNode.tId + ", " + treeNode.name);
+}
+var setting = {
+ callback: {
+ onRename: zTreeOnRename
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onRightClick.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onRightClick.html
new file mode 100755
index 00000000..d51c68d1
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onRightClick.html
@@ -0,0 +1,36 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onRightClick</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于æ•èŽ· zTree 上鼠标å³é”®ç‚¹å‡»ä¹‹åŽçš„事件回调函数</p>
+ <p class="highlight_red">1ã€å¦‚果设置了 setting.callback.beforeRightClick 方法,且返回 falseï¼Œå°†æ— æ³•è§¦å‘ onRightClick 事件回调函数。</p>
+ <p class="highlight_red">2ã€åªè¦å°† function 的引用赋给 onRightClick 属性,则å³é”®ç‚¹å‡» zTree 时,将å±è”½æµè§ˆå™¨çš„å³é”®èœå•ã€‚</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event 对象</span></h4>
+ <p>标准的 js event 对象</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>é¼ æ ‡å³é”®ç‚¹å‡»æ—¶æ‰€åœ¨èŠ‚点的 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果ä¸åœ¨èŠ‚点上,则返回 null</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. æ¯æ¬¡é¼ æ ‡å³é”®ç‚¹å‡»åŽï¼Œ 弹出鼠标所在节点的 tIdã€name çš„ä¿¡æ¯</h4>
+ <pre xmlns=""><code>function zTreeOnRightClick(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onRightClick: zTreeOnRightClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.autoCheckTrigger.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.autoCheckTrigger.html
new file mode 100755
index 00000000..d1efd770
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.autoCheckTrigger.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>autoCheckTrigger</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置自动关è”勾选时是å¦è§¦å‘ beforeCheck / onCheck 事件回调函数。<span class="highlight_red">[setting.check.enable = true 且 setting.check.chkStyle = "checkbox" 时生效]</span></p>
+ <p class="highlight_red">1ã€å¦‚果设置 setting.check.chkboxType = { "Y": "", "N": "" },将ä¸ä¼šæœ‰ä»»ä½•è‡ªåŠ¨å…³è”勾选的æ“作。</p>
+ <p class="highlight_red">2ã€å¦‚果开å¯è§¦å‘,对于节点较多的树将会影å“性能,因为所有被è”动勾选的æ“作都会触å‘事件回调函数,请根æ®éœ€è¦å†³å®šæ˜¯å¦ä½¿ç”¨æ­¤åŠŸèƒ½ã€‚</p>
+ <p>默认值: false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 è§¦å‘ / ä¸è§¦å‘ 事件回调函数</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 需è¦è§¦å‘自动关è”勾选æ“作</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ autoCheckTrigger: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.chkDisabledInherit.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.chkDisabledInherit.html
new file mode 100755
index 00000000..8af1c2c6
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.chkDisabledInherit.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>chkDisabledInherit</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>当父节点设置 chkDisabled = true 时,设置å­èŠ‚点是å¦è‡ªåŠ¨ç»§æ‰¿ chkDisabled = true 。<span class="highlight_red">[setting.check.enable = true 时生效]</span></p>
+ <p class="highlight_red">1ã€åªä½¿ç”¨äºŽåˆå§‹åŒ–节点时,便于批é‡æ“作。 对于已存在的节点请利用 setChkDisabled 方法å•ä¸ªèŠ‚点设置。</p>
+ <p>默认值: false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示 新加入å­èŠ‚点时,自动继承父节点 chkDisabled = true 的属性。</p>
+ <p> false 表示 新加入å­èŠ‚点时,ä¸ç»§æ‰¿çˆ¶èŠ‚点 chkDisabled 的属性。</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 需è¦å­èŠ‚点自动继承 chkDisabled = true</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkDisabledInherit: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.chkStyle.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.chkStyle.html
new file mode 100755
index 00000000..9706c134
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.chkStyle.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.check.</span>chkStyle</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>勾选框类型(checkbox 或 radio)<span class="highlight_red">[setting.check.enable = true 时生效]</span></p>
+ <p>默认值:"checkbox"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>chkStyle = "checkbox" 时,显示 checkbox 选择框,<span class="highlight_red">setting.check.chkboxType</span> 属性有效。
+<br/>chkStyle = "radio" 时,显示 radio 选择框, <span class="highlight_red">setting.check.radioType</span> 属性有效。</p>
+ <p class="highlight_red">请注æ„大å°å†™ï¼Œä¸è¦æ”¹å˜</p>
+ </div>
+ <h3>checkbox 状æ€è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p><button type="button" class="chk checkbox_false_full"></button>未勾选;<span class="highlight_red">如果是父节点,则无å­èŠ‚点被勾选</span>。鼠标移到该节点上显示为:<button type="button" class="chk checkbox_false_full_focus"></button></p>
+ <p><button type="button" class="chk checkbox_false_part"></button>未勾选;(åªæœ‰çˆ¶èŠ‚点存在此状æ€ï¼‰<span class="highlight_red">存在被勾选的å­èŠ‚点</span>。鼠标移到该节点上显示为:<button type="button" class="chk checkbox_false_part_focus"></button></p>
+ <p><button type="button" class="chk checkbox_true_full"></button>被勾选;<span class="highlight_red">如果是父节点,则全部å­èŠ‚点都被勾选</span>。鼠标移到该节点上显示为:<button type="button" class="chk checkbox_true_full_focus"></button></p>
+ <p><button type="button" class="chk checkbox_true_part"></button>被勾选;(åªæœ‰çˆ¶èŠ‚点存在此状æ€ï¼‰<span class="highlight_red">且部分或无å­èŠ‚点被勾选</span>。鼠标移到该节点上显示为:<button type="button" class="chk checkbox_true_part_focus"></button></p>
+ </div>
+ </div>
+ <h3>radio 状æ€è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p><button type="button" class="chk radio_false_full"></button>未勾选;<span class="highlight_red">如果是父节点,则没有å­èŠ‚点被勾选</span>。鼠标移到该节点上显示为:<button type="button" class="chk radio_false_full_focus"></button></p>
+ <p><button type="button" class="chk radio_false_part"></button>未勾选;(åªæœ‰çˆ¶èŠ‚点存在此状æ€ï¼‰<span class="highlight_red">且存在被勾选的å­èŠ‚点</span>。鼠标移到该节点上显示为:<button type="button" class="chk radio_false_part_focus"></button></p>
+ <p><button type="button" class="chk radio_true_full"></button>被勾选;<span class="highlight_red">如果是父节点,则没有å­èŠ‚点被勾选</span>。鼠标移到该节点上显示为:<button type="button" class="chk radio_true_full_focus"></button></p>
+ <p><button type="button" class="chk radio_true_part"></button>被勾选;(åªæœ‰çˆ¶èŠ‚点存在此状æ€ï¼‰<span class="highlight_red">且存在被勾选的å­èŠ‚点</span>。鼠标移到该节点上显示为:<button type="button" class="chk radio_true_part_focus"></button></p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置选择框为 radio</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkStyle: "radio"
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.chkboxType.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.chkboxType.html
new file mode 100755
index 00000000..da06b6ca
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.chkboxType.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON</span><span class="path">setting.check.</span>chkboxType</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>勾选 checkbox 对于父å­èŠ‚点的关è”关系。<span class="highlight_red">[setting.check.enable = true 且 setting.check.chkStyle = "checkbox" 时生效]</span></p>
+ <p>默认值:{ "Y": "ps", "N": "ps" }</p>
+ </div>
+ </div>
+ <h3>JSON æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>Y 属性定义 checkbox 被勾选åŽçš„情况;
+<br/>N 属性定义 checkbox å–消勾选åŽçš„情况;
+<br/>"p" 表示æ“作会影å“父级节点;
+<br/>"s" 表示æ“作会影å“å­çº§èŠ‚点。</p>
+ <p class="highlight_red">请注æ„大å°å†™ï¼Œä¸è¦æ”¹å˜</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. checkbox 勾选æ“作,åªå½±å“父级节点;å–消勾选æ“作,åªå½±å“å­çº§èŠ‚点</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkStyle: "checkbox",
+ chkboxType: { "Y": "p", "N": "s" }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.enable.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.enable.html
new file mode 100755
index 00000000..8b1387e3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.enable.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>enable</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 的节点上是å¦æ˜¾ç¤º checkbox / radio</p>
+ <p>默认值: false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 显示 / ä¸æ˜¾ç¤º å¤é€‰æ¡†æˆ–å•é€‰æ¡†</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 需è¦æ˜¾ç¤º checkbox</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.nocheckInherit.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.nocheckInherit.html
new file mode 100755
index 00000000..caf99028
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.nocheckInherit.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>nocheckInherit</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>当父节点设置 nocheck = true 时,设置å­èŠ‚点是å¦è‡ªåŠ¨ç»§æ‰¿ nocheck = true 。<span class="highlight_red">[setting.check.enable = true 时生效]</span></p>
+ <p class="highlight_red">1ã€åªä½¿ç”¨äºŽåˆå§‹åŒ–节点时,便于批é‡æ“作。 对于已存在的节点请利用 updateNode 方法å•ä¸ªèŠ‚点设置。</p>
+ <p>默认值: false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示 新加入å­èŠ‚点时,自动继承父节点 nocheck = true 的属性。</p>
+ <p> false 表示 新加入å­èŠ‚点时,ä¸ç»§æ‰¿çˆ¶èŠ‚点 nocheck 的属性。</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 需è¦å­èŠ‚点自动继承 nocheck = true</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ nocheckInherit: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.radioType.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.radioType.html
new file mode 100755
index 00000000..19f84cad
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.radioType.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.check.</span>radioType</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>radio 的分组范围。<span class="highlight_red">[setting.check.enable = true 且 setting.check.chkStyle = "radio" 时生效]</span></p>
+ <p>默认值:"level"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>radioType = "level" 时,在æ¯ä¸€çº§èŠ‚点范围内当åšä¸€ä¸ªåˆ†ç»„。
+<br/>radioType = "all" 时,在整棵树范围内当åšä¸€ä¸ªåˆ†ç»„。</p>
+ <p class="highlight_red">请注æ„大å°å†™ï¼Œä¸è¦æ”¹å˜</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 radio 的判别规则为整棵树内</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkStyle: "radio",
+ radioType: "all"
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.keep.leaf.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.keep.leaf.html
new file mode 100755
index 00000000..af3a7211
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.keep.leaf.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.data.keep.</span>leaf</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 的节点å¶å­èŠ‚点属性é”,是å¦å§‹ç»ˆä¿æŒ isParent = false</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 é”定 / ä¸é”定 å¶å­èŠ‚点属性</p>
+ <p class="highlight_red">如果设置为 true,则所有 isParent = false 的节点,都无法添加å­èŠ‚点。</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 需è¦é”定å¶å­èŠ‚点状æ€</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ keep: {
+ leaf: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.keep.parent.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.keep.parent.html
new file mode 100755
index 00000000..c4975df2
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.keep.parent.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.data.keep.</span>parent</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 的节点父节点属性é”,是å¦å§‹ç»ˆä¿æŒ isParent = true</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 é”定 / ä¸é”定 父节点属性</p>
+ <p class="highlight_red">如果设置为 true,则所有 isParent = true 的节点,å³ä½¿è¯¥èŠ‚点的å­èŠ‚点被全部删除或移走,ä¾æ—§ä¿æŒçˆ¶èŠ‚点状æ€ã€‚</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 需è¦é”定父节点状æ€</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ keep: {
+ parent: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.checked.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.checked.html
new file mode 100755
index 00000000..ac9fdc1d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.checked.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>checked</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 节点数æ®ä¸­ä¿å­˜ check 状æ€çš„属性å称。</p>
+ <p>默认值:"checked"</p>
+ <p class="highlight_red">请勿与 zTree 节点数æ®çš„其他å‚数冲çªï¼Œä¾‹å¦‚:checkedOld</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 zTree 显示节点时,将 treeNode çš„ isChecked 属性当åšèŠ‚点å称</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ checked: "isChecked"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.children.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.children.html
new file mode 100755
index 00000000..66a49a7e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.children.html
@@ -0,0 +1,23 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>children</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 节点数æ®ä¸­ä¿å­˜å­èŠ‚点数æ®çš„属性å称。</p>
+ <p>默认值:"children"</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 zTree 显示节点时,将 treeNode çš„ nodes 属性当åšèŠ‚点å称</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ children: "nodes"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.name.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.name.html
new file mode 100755
index 00000000..c25d250a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.name.html
@@ -0,0 +1,23 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>name</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 节点数æ®ä¿å­˜èŠ‚点å称的属性å称。</p>
+ <p>默认值:"name"</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 zTree 显示节点时,将 treeNode çš„ ename 属性当åšèŠ‚点å称</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ name: "ename"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.title.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.title.html
new file mode 100755
index 00000000..43e68554
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.title.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>title</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 节点数æ®ä¿å­˜èŠ‚点æ示信æ¯çš„属性å称。<span class="highlight_red">[setting.view.showTitle = true 时生效]</span></p>
+ <p class="highlight_red">如果设置为 "" ,则自动与 setting.data.key.name ä¿æŒä¸€è‡´ï¼Œé¿å…用户åå¤è®¾ç½®</p>
+ <p>默认值:""</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 zTree 显示节点时,将 treeNode çš„ fullName 属性当åšèŠ‚点å称</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ title: "fullName"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.url.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.url.html
new file mode 100755
index 00000000..e534d985
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.url.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>url</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 节点数æ®ä¿å­˜èŠ‚点链接的目标 URL 的属性å称。</p>
+ <p class="highlight_red">特殊用途:当åŽå°æ•°æ®åªèƒ½ç”Ÿæˆ url 属性,åˆä¸æƒ³å®žçŽ°ç‚¹å‡»èŠ‚点跳转的功能时,å¯ä»¥ç›´æŽ¥ä¿®æ”¹æ­¤å±žæ€§ä¸ºå…¶ä»–ä¸å­˜åœ¨çš„属性å称</p>
+ <p>默认值:"url"</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 zTree 显示节点时,将 treeNode çš„ xUrl 属性当åšèŠ‚点链接的目标 URL</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ url: "xUrl"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.enable.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.enable.html
new file mode 100755
index 00000000..65bd4071
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.enable.html
@@ -0,0 +1,38 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.data.simpleData.</span>enable</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>确定 zTree åˆå§‹åŒ–时的节点数æ®ã€å¼‚步加载时的节点数æ®ã€æˆ– <span class="highlight_red">addNodes</span> 方法中输入的 newNodes æ•°æ®æ˜¯å¦é‡‡ç”¨ç®€å•æ•°æ®æ¨¡å¼ (Array)</p>
+ <p>ä¸éœ€è¦ç”¨æˆ·å†æŠŠæ•°æ®åº“中å–出的 List 强行转æ¢ä¸ºå¤æ‚çš„ JSON 嵌套格å¼</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 使用 / ä¸ä½¿ç”¨ 简å•æ•°æ®æ¨¡å¼</p>
+ <p class="highlight_red">如果设置为 true,请务必设置 setting.data.simpleData 内的其他å‚æ•°: idKey / pIdKey / rootPId,并且让数æ®æ»¡è¶³çˆ¶å­å…³ç³»ã€‚</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. ä½¿ç”¨ç®€å• Array æ ¼å¼çš„æ•°æ®</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0,
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.idKey.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.idKey.html
new file mode 100755
index 00000000..81129e93
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.idKey.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.simpleData.</span>idKey</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点数æ®ä¸­ä¿å­˜å”¯ä¸€æ ‡è¯†çš„属性å称。<span class="highlight_red">[setting.data.simpleData.enable = true 时生效]</span></p>
+ <p>默认值:"id"</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. ä½¿ç”¨ç®€å• Array æ ¼å¼çš„æ•°æ®</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0,
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.pIdKey.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.pIdKey.html
new file mode 100755
index 00000000..d434bc31
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.pIdKey.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.simpleData.</span>pIdKey</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点数æ®ä¸­ä¿å­˜å…¶çˆ¶èŠ‚点唯一标识的属性å称。<span class="highlight_red">[setting.data.simpleData.enable = true 时生效]</span></p>
+ <p>默认值:"pId"</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. ä½¿ç”¨ç®€å• Array æ ¼å¼çš„æ•°æ®</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.rootPId.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.rootPId.html
new file mode 100755
index 00000000..8cff82d4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.rootPId.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Number</span><span class="path">setting.data.simpleData.</span>rootPId</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于修正根节点父节点数æ®ï¼Œå³ pIdKey 指定的属性值。<span class="highlight_red">[setting.data.simpleData.enable = true 时生效]</span></p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. ä½¿ç”¨ç®€å• Array æ ¼å¼çš„æ•°æ®</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.autoExpandTrigger.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.autoExpandTrigger.html
new file mode 100755
index 00000000..126b8a85
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.autoExpandTrigger.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.drag.</span>autoExpandTrigger</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽时父节点自动展开是å¦è§¦å‘ onExpand 事件回调函数。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 è§¦å‘ / ä¸è§¦å‘ onExpand 事件回调函数。</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. è®¾ç½®æ‹–æ‹½æ—¶çˆ¶èŠ‚ç‚¹è‡ªåŠ¨å±•å¼€è§¦å‘ onExpand 事件回调函数</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ autoExpandTrigger: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.autoOpenTime.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.autoOpenTime.html
new file mode 100755
index 00000000..df783392
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.autoOpenTime.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>autoOpenTime</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽时父节点自动展开的延时间隔。 (å•ä½ï¼šms)<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值:500</p>
+ <p class="highlight_red">请根æ®è‡ªå·±çš„需求适当调整此值</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置拖拽到父节点上立刻自动展开</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ autoOpenTime: 0
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.borderMax.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.borderMax.html
new file mode 100755
index 00000000..1d4dd681
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.borderMax.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>borderMax</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽节点æˆä¸ºæ ¹èŠ‚点时的 Tree 内边界范围 (å•ä½ï¼špx)。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值:10</p>
+ <p class="highlight_red">请根æ®è‡ªå·±çš„需求适当调整此值</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 更改拖拽æ“作节点æˆä¸ºæ ¹èŠ‚点时的 Tree 内边界范围为20px</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ borderMax: 20
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.borderMin.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.borderMin.html
new file mode 100755
index 00000000..463eb2b7
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.borderMin.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>borderMin</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽节点æˆä¸ºæ ¹èŠ‚点时的 Tree 外边界范围 (å•ä½ï¼špx)。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值:-5</p>
+ <p class="highlight_red">请根æ®è‡ªå·±çš„需求适当调整此值</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 更改拖拽æ“作节点æˆä¸ºæ ¹èŠ‚点时的 Tree 外边界范围为10px</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ borderMin: -10
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.inner.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.inner.html
new file mode 100755
index 00000000..06679e1a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.inner.html
@@ -0,0 +1,59 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNodes, targetNode)</span><span class="path">setting.edit.drag.</span>inner</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽到目标节点时,设置是å¦å…许æˆä¸ºç›®æ ‡èŠ‚点的å­èŠ‚点。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p class="highlight_red">拖拽目标是 æ ¹ 的时候,ä¸è§¦å‘ prev å’Œ next,åªä¼šè§¦å‘ inner</p>
+ <p class="highlight_red">此功能主è¦ä½œç”¨æ˜¯å¯¹æ‹–拽进行适当é™åˆ¶ï¼ˆè¾…助箭头),需è¦ç»“åˆ prevã€next 一起使用,æ‰èƒ½å®žçŽ°å®Œæ•´åŠŸèƒ½ã€‚</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 å…许 / ä¸å…许 æˆä¸ºç›®æ ‡èŠ‚点的å­èŠ‚点</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控(多棵树拖拽时,是目标节点所在树的 treeId)</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>被拖拽的节点 JSON æ•°æ®é›†åˆ</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>拖拽时的目标节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果拖拽的节点è¦æˆä¸ºæ ¹èŠ‚点,则 targetNode = null</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢æ‹–拽æˆä¸ºç›®æ ‡èŠ‚点的å­èŠ‚点</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: true,
+ inner: false
+ }
+ }
+};
+......</code></pre>
+ <h4>2. ç¦æ­¢æ‹–拽æˆä¸ºæ ¹èŠ‚点的å­èŠ‚点</h4>
+ <pre xmlns=""><code>function canInner(treeId, nodes, targetNode) {
+ return !(targetNode && targetNode.level === 0);
+}
+var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: true,
+ inner: canInner
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.isCopy.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.isCopy.html
new file mode 100755
index 00000000..cff17afd
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.isCopy.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.drag.</span>isCopy</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽时, 设置是å¦å…许å¤åˆ¶èŠ‚点。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>规则说明</h3>
+ <div class="desc">
+ <p>1ã€isCopy = true; isMove = true 时,拖拽节点按下 Ctrl 或 Cmd 键表示 copy; å¦åˆ™ä¸º move</p>
+ <p>2ã€isCopy = true; isMove = false 时,所有拖拽æ“作都是 copy</p>
+ <p>3ã€isCopy = false; isMove = true 时,所有拖拽æ“作都是 move</p>
+ <p>4ã€isCopy = false; isMove = false 时,ç¦æ­¢æ‹–拽æ“作</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置所有拖拽æ“作都是 copy</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ isCopy: true,
+ isMove: false
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.isMove.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.isMove.html
new file mode 100755
index 00000000..7fdadd18
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.isMove.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.drag.</span>isMove</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽时, 设置是å¦å…许移动节点。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>规则说明</h3>
+ <div class="desc">
+ <p>1ã€isCopy = true; isMove = true 时,拖拽节点按下 Ctrl 或 Cmd 键表示 copy; å¦åˆ™ä¸º move</p>
+ <p>2ã€isCopy = true; isMove = false 时,所有拖拽æ“作都是 copy</p>
+ <p>3ã€isCopy = false; isMove = true 时,所有拖拽æ“作都是 move</p>
+ <p>4ã€isCopy = false; isMove = false 时,ç¦æ­¢æ‹–拽æ“作</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置所有拖拽æ“作都是 move</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ isCopy: false,
+ isMove: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.maxShowNodeNum.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.maxShowNodeNum.html
new file mode 100755
index 00000000..3e7a3d26
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.maxShowNodeNum.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>maxShowNodeNum</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽多个兄弟节点时,浮动图层中显示的最大节点数。 多余的节点用...代替。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值:5</p>
+ <p class="highlight_red">请根æ®è‡ªå·±çš„需求适当调整此值</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置拖拽时最多å¯æ˜¾ç¤º10个节点</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ maxShowNodeNum: 10
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.minMoveSize.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.minMoveSize.html
new file mode 100755
index 00000000..904be414
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.minMoveSize.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>minMoveSize</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>判定是å¦æ‹–拽æ“作的最å°ä½ç§»å€¼ (å•ä½ï¼špx)。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p class="highlight_red">æ ¹æ®è‡ªå·±çš„需求å¯é€‚当调整此值,如果太å°å®¹æ˜“导致点击鼠标时误æ“作进行拖拽</p>
+ <p>默认值:5</p>
+ </div>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 更改拖拽æ“作å¯åŠ¨ä½ç§»å€¼ä¸º10px</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ minMoveSize: 10
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.next.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.next.html
new file mode 100755
index 00000000..ffc874aa
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.next.html
@@ -0,0 +1,58 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNodes, targetNode)</span><span class="path">setting.edit.drag.</span>next</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽到目标节点时,设置是å¦å…许移动到目标节点åŽé¢çš„æ“作。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p class="highlight_red">拖拽目标是 æ ¹ 的时候,ä¸è§¦å‘ prev å’Œ next,åªä¼šè§¦å‘ inner</p>
+ <p class="highlight_red">此功能主è¦ä½œç”¨æ˜¯å¯¹æ‹–拽进行适当é™åˆ¶ï¼ˆè¾…助箭头),需è¦ç»“åˆ prevã€inner 一起使用,æ‰èƒ½å®žçŽ°å®Œæ•´åŠŸèƒ½ã€‚</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 å…许 / ä¸å…许 移动到目标节点åŽé¢</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控(多棵树拖拽时,是目标节点所在树的 treeId)</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>被拖拽的节点 JSON æ•°æ®é›†åˆ</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>拖拽时的目标节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢æ‹–拽到节点åŽé¢çš„æ“作</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: false,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+ <h4>2. ç¦æ­¢æ‹–拽到父节点åŽé¢çš„æ“作</h4>
+ <pre xmlns=""><code>function canNext(treeId, nodes, targetNode) {
+ return !targetNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: canNext,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.prev.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.prev.html
new file mode 100755
index 00000000..bd053618
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.prev.html
@@ -0,0 +1,58 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNodes, targetNode)</span><span class="path">setting.edit.drag.</span>prev</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>拖拽到目标节点时,设置是å¦å…许移动到目标节点å‰é¢çš„æ“作。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p class="highlight_red">拖拽目标是 æ ¹ 的时候,ä¸è§¦å‘ prev å’Œ next,åªä¼šè§¦å‘ inner</p>
+ <p class="highlight_red">此功能主è¦ä½œç”¨æ˜¯å¯¹æ‹–拽进行适当é™åˆ¶ï¼ˆè¾…助箭头),需è¦ç»“åˆ nextã€inner 一起使用,æ‰èƒ½å®žçŽ°å®Œæ•´åŠŸèƒ½ã€‚</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 å…许 / ä¸å…许 移动到目标节点å‰é¢</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控(多棵树拖拽时,是目标节点所在树的 treeId)</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>被拖拽的节点 JSON æ•°æ®é›†åˆ</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>拖拽时的目标节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ç¦æ­¢æ‹–拽到节点å‰é¢çš„æ“作</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: false,
+ next: true,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+ <h4>2. ç¦æ­¢æ‹–拽到父节点å‰é¢çš„æ“作</h4>
+ <pre xmlns=""><code>function canPrev(treeId, nodes, targetNode) {
+ return !targetNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: canPrev,
+ next: true,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.editNameSelectAll.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.editNameSelectAll.html
new file mode 100755
index 00000000..30784f3c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.editNameSelectAll.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.</span>editNameSelectAll</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点编辑å称 input åˆæ¬¡æ˜¾ç¤ºæ—¶,设置 txt 内容是å¦ä¸ºå…¨é€‰çŠ¶æ€ã€‚ <span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>默认值: false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示 全选状æ€</p>
+ <p> false 表示 ä¸æ˜¯å…¨é€‰çŠ¶æ€ï¼Œå…‰æ ‡é»˜è®¤åœ¨æœ€åŽ</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置节点编辑å称 input åˆæ¬¡æ˜¾ç¤ºæ—¶ï¼Œtxt内容为全选状æ€</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ editNameSelectAll: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.enable.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.enable.html
new file mode 100755
index 00000000..de1afeaf
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.enable.html
@@ -0,0 +1,38 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.</span>enable</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 是å¦å¤„于编辑状æ€</p>
+ <p class="highlight_red">请在åˆå§‹åŒ–之å‰è®¾ç½®ï¼Œåˆå§‹åŒ–åŽéœ€è¦æ”¹å˜ç¼–辑状æ€è¯·ä½¿ç”¨ zTreeObj.setEditable() 方法</p>
+ <p>默认值: false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 å¯ä»¥ / ä¸å¯ä»¥ 编辑</p>
+ </div>
+ <h3>编辑状æ€è§„则说明</h3>
+ <div class="desc">
+ <p>1ã€ç‚¹å‡»èŠ‚点时,ä¸ä¼šæ‰“å¼€ <span class="highlight_red">node.url</span> 指定的 URL。
+<br/>2ã€å…¨é¢æ”¯æŒ 编辑 与 异步加载 状æ€å…±å­˜ã€‚
+<br/>3ã€å¯ä»¥å¯¹èŠ‚点进行拖拽,且支æŒå¤šæ£µæ ‘之间进行拖拽。
+<br/>4ã€æ”¯æŒæ‹–拽时 å¤åˆ¶/移动 节点。(å‚考: <span class="highlight_red">setting.edit.drag.isCopy / setting.edit.drag.isMove</span>)
+<br/>5ã€å¯ä»¥é€šè¿‡ç¼–辑按钮修改 name 属性。
+<br/>6ã€å¯ä»¥é€šè¿‡åˆ é™¤æŒ‰é’®åˆ é™¤èŠ‚点。
+<br/>
+</p>
+ <p class="highlight_red">请注æ„大å°å†™ï¼Œä¸è¦æ”¹å˜</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 zTree 进入编辑状æ€</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.removeTitle.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.removeTitle.html
new file mode 100755
index 00000000..55257da7
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.removeTitle.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>removeTitle</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>删除按钮的 Title 辅助信æ¯ã€‚<span class="highlight_red">[setting.edit.enable = true & setting.edit.showRemoveBtn = true 时生效]</span></p>
+ <p>默认值:"remove"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>鼠标移动到 删除按钮 上时,æµè§ˆå™¨è‡ªåŠ¨å¼¹å‡ºçš„辅助信æ¯å†…容,å¯æ ¹æ®ç”¨æˆ·éœ€è¦è‡ªè¡Œä¿®æ”¹</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®åˆ é™¤æŒ‰é’® Title ä¿¡æ¯çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>String</span></h4>
+ <p>è¿”å›žå€¼åŒ String æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置删除按钮的 Title 辅助信æ¯ä¸º: "删除节点"</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: true,
+ removeTitle: "删除节点"
+ }
+};
+......</code></pre>
+ <h4>2. 设置父节点删除按钮的 Title 辅助信æ¯ä¸º: "删除父节点"</h4>
+ <pre xmlns=""><code>function setRemoveTitle(treeId, treeNode) {
+ return treeNode.isParent ? "删除父节点":"删除å¶å­èŠ‚点";
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: true,
+ removeTitle: setRemoveTitle
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.renameTitle.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.renameTitle.html
new file mode 100755
index 00000000..2dfbcca1
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.renameTitle.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>renameTitle</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>编辑å称按钮的 Title 辅助信æ¯ã€‚<span class="highlight_red">[setting.edit.enable = true & setting.edit.showRenameBtn = true 时生效]</span></p>
+ <p>默认值:"rename"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>设置鼠标移动到 编辑å称按钮 上时,æµè§ˆå™¨è‡ªåŠ¨å¼¹å‡ºçš„辅助信æ¯å†…容,å¯æ ¹æ®ç”¨æˆ·éœ€è¦è‡ªè¡Œä¿®æ”¹</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®ç¼–辑å称按钮 Title ä¿¡æ¯çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>String</span></h4>
+ <p>è¿”å›žå€¼åŒ String æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置编辑å称按钮的 Title 辅助信æ¯ä¸º: "编辑节点å称"</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: true,
+ renameTitle: "编辑节点å称"
+ }
+};
+......</code></pre>
+ <h4>2. 设置父节点编辑å称按钮的 Title 辅助信æ¯ä¸º: "编辑父节点å称"</h4>
+ <pre xmlns=""><code>function setRenameTitle(treeId, treeNode) {
+ return treeNode.isParent ? "编辑父节点å称":"编辑å¶å­èŠ‚点å称";
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: true,
+ renameTitle: setRenameTitle
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.showRemoveBtn.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.showRemoveBtn.html
new file mode 100755
index 00000000..db62053c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.showRemoveBtn.html
@@ -0,0 +1,49 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>showRemoveBtn</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置是å¦æ˜¾ç¤ºåˆ é™¤æŒ‰é’®ã€‚<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>当点击æŸèŠ‚点的删除按钮时:</p>
+ <p>1ã€é¦–å…ˆè§¦å‘ <span class="highlight_red">setting.callback.beforeRemove</span> 回调函数,用户å¯åˆ¤å®šæ˜¯å¦è¿›è¡Œåˆ é™¤æ“作。</p>
+ <p>2ã€å¦‚果未设置 beforeRemove 或 beforeRemove 返回 trueï¼Œåˆ™åˆ é™¤èŠ‚ç‚¹å¹¶è§¦å‘ <span class="highlight_red">setting.callback.onRemove</span> 回调函数。</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 显示 / éšè— 删除按钮</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®æ˜¯å¦æ˜¾ç¤ºåˆ é™¤æŒ‰é’®çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ä¸æ˜¾ç¤ºåˆ é™¤æŒ‰é’®</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: false
+ }
+};
+......</code></pre>
+ <h4>2. 设置所有的父节点ä¸æ˜¾ç¤ºåˆ é™¤æŒ‰é’®</h4>
+ <pre xmlns=""><code>function setRemoveBtn(treeId, treeNode) {
+ return !treeNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: setRemoveBtn
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.showRenameBtn.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.showRenameBtn.html
new file mode 100755
index 00000000..33dd37aa
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.showRenameBtn.html
@@ -0,0 +1,51 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>showRenameBtn</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置是å¦æ˜¾ç¤ºç¼–辑å称按钮。<span class="highlight_red">[setting.edit.enable = true 时生效]</span></p>
+ <p>当点击æŸèŠ‚点的编辑å称按钮时:</p>
+ <p>1ã€è¿›å…¥èŠ‚点编辑å称状æ€ã€‚</p>
+ <p>2ã€ç¼–辑å称完毕(Input 失去焦点 或 按下 Enter é”®ï¼‰ï¼Œä¼šè§¦å‘ <span class="highlight_red">setting.callback.beforeRename</span> 回调函数,用户å¯æ ¹æ®è‡ªå·±çš„规则判定是å¦å…许修改å称。</p>
+ <p>3ã€å¦‚æžœ beforeRename 返回 false,则继续ä¿æŒç¼–辑å称状æ€ï¼Œç›´åˆ°å称符åˆè§„则ä½ç½® (按下 ESC é”®å¯å–消编辑å称状æ€ï¼Œæ¢å¤åŽŸå称)。</p>
+ <p>4ã€å¦‚果未设置 beforeRename 或 beforeRename 返回 true,则结æŸèŠ‚点编辑å称状æ€ï¼Œæ›´æ–°èŠ‚点åç§°ï¼Œå¹¶è§¦å‘ <span class="highlight_red">setting.callback.onRename</span> 回调函数。</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 显示 / éšè— 编辑å称按钮</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®æ˜¯å¦æ˜¾ç¤ºç¼–辑å称按钮的节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ä¸æ˜¾ç¤ºç¼–辑å称按钮</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: false
+ }
+};
+......</code></pre>
+ <h4>2. 设置所有的父节点ä¸æ˜¾ç¤ºç¼–辑å称按钮</h4>
+ <pre xmlns=""><code>function setRenameBtn(treeId, treeNode) {
+ return !treeNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: setRenameBtn
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.treeId.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.treeId.html
new file mode 100755
index 00000000..819743eb
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.treeId.html
@@ -0,0 +1,14 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.</span>treeId</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 的唯一标识,åˆå§‹åŒ–åŽï¼Œç­‰äºŽ 用户定义的 zTree 容器的 id 属性值。</p>
+ <p class="highlight_red">请勿进行åˆå§‹åŒ– 或 修改,属于内部å‚数。</p>
+ </div>
+ </div>
+
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.treeObj.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.treeObj.html
new file mode 100755
index 00000000..37684a19
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.treeObj.html
@@ -0,0 +1,14 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Object</span><span class="path">setting.</span>treeObj</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 容器的 jQuery 对象,主è¦åŠŸèƒ½ï¼šä¾¿äºŽæ“作。</p>
+ <p class="highlight_red">请勿进行åˆå§‹åŒ– 或 修改,属于内部å‚数。</p>
+ </div>
+ </div>
+
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.addDiyDom.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.addDiyDom.html
new file mode 100755
index 00000000..0a508acc
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.addDiyDom.html
@@ -0,0 +1,40 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.view.</span>addDiyDom</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于在节点上固定显示用户自定义控件</p>
+ <p class="highlight_red">1. 大数æ®é‡çš„节点加载请注æ„:在 addDiyDom 中针对æ¯ä¸ªèŠ‚点 查找 DOM 对象并且添加新 DOM 控件,肯定会影å“åˆå§‹åŒ–性能;如果ä¸æ˜¯å¿…须使用,建议ä¸ä½¿ç”¨æ­¤åŠŸèƒ½</p>
+ <p class="highlight_red">2. 属于高级应用,使用时请确ä¿å¯¹ zTree 比较了解。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦æ˜¾ç¤ºè‡ªå®šä¹‰æŽ§ä»¶çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置节点åŽé¢æ˜¾ç¤ºä¸€ä¸ªæŒ‰é’®</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ addDiyDom: addDiyDom
+ }
+};
+function addDiyDom(treeId, treeNode) {
+ var aObj = $("#" + treeNode.tId + "_a");
+ if ($("#diyBtn_"+treeNode.id).length>0) return;
+ var editStr = "&lt;span id='diyBtn_space_" +treeNode.id+ "' &gt; &lt;/span&gt;"
+ + "&lt;button type='button' class='diyBtn1' id='diyBtn_" + treeNode.id
+ + "' title='"+treeNode.name+"' onfocus='this.blur();'&gt;&lt;/button&gt;";
+ aObj.append(editStr);
+ var btn = $("#diyBtn_"+treeNode.id);
+ if (btn) btn.bind("click", function(){alert("diy Button for " + treeNode.name);});
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.addHoverDom.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.addHoverDom.html
new file mode 100755
index 00000000..f073e79c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.addHoverDom.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.view.</span>addHoverDom</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于当鼠标移动到节点上时,显示用户自定义控件,显示éšè—状æ€åŒ zTree 内部的编辑ã€åˆ é™¤æŒ‰é’®</p>
+ <p class="highlight_red">请务必与 <span class="highlight_red">setting.view.removeHoverDom</span> åŒæ—¶ä½¿ç”¨ï¼›å±žäºŽé«˜çº§åº”用,使用时请确ä¿å¯¹ zTree 比较了解。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦æ˜¾ç¤ºè‡ªå®šä¹‰æŽ§ä»¶çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置鼠标移到节点上,在åŽé¢æ˜¾ç¤ºä¸€ä¸ªæŒ‰é’®</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ addHoverDom: addHoverDom,
+ removeHoverDom: removeHoverDom,
+ ......
+ }
+};
+function addHoverDom(treeId, treeNode) {
+ var aObj = $("#" + treeNode.tId + "_a");
+ if ($("#diyBtn_"+treeNode.id).length>0) return;
+ var editStr = "&lt;span id='diyBtn_space_" +treeNode.id+ "' &gt;&nbsp;&lt;/span&gt;"
+ + "&lt;button type='button' class='diyBtn1' id='diyBtn_" + treeNode.id
+ + "' title='"+treeNode.name+"' onfocus='this.blur();'&gt;&lt;/button&gt;";
+ aObj.append(editStr);
+ var btn = $("#diyBtn_"+treeNode.id);
+ if (btn) btn.bind("click", function(){alert("diy Button for " + treeNode.name);});
+};
+function removeHoverDom(treeId, treeNode) {
+ $("#diyBtn_"+treeNode.id).unbind().remove();
+ $("#diyBtn_space_" +treeNode.id).unbind().remove();
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.autoCancelSelected.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.autoCancelSelected.html
new file mode 100755
index 00000000..4890f787
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.autoCancelSelected.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>autoCancelSelected</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>点击节点时,按下 Ctrl 或 Cmd 键是å¦å…许å–消选择æ“作。</p>
+ <p class="highlight_red">如果ä¸éœ€è¦æ­¤åŠŸèƒ½ï¼Œè¯·è®¾ç½®ä¸º false。</p>
+ <p>默认值: true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 æ”¯æŒ / ä¸æ”¯æŒ é…åˆ Ctrl 或 Cmd 键进行å–消节点选择的æ“作</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. ç¦æ­¢é…åˆ Ctrl 或 Cmd 键进行å–消节点选择的æ“作</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ autoCancelSelected: false
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.dblClickExpand.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.dblClickExpand.html
new file mode 100755
index 00000000..5f3db964
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.dblClickExpand.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.view.</span>dblClickExpand</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>åŒå‡»èŠ‚点时,是å¦è‡ªåŠ¨å±•å¼€çˆ¶èŠ‚点的标识</p>
+ <p>默认值: true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示åŒå‡»èŠ‚点 åˆ‡æ¢ / ä¸åˆ‡æ¢ 展开状æ€</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®æ˜¯å¦åŒå‡»åˆ‡æ¢å±•å¼€çŠ¶æ€çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. å–消默认åŒå‡»å±•å¼€çˆ¶èŠ‚点的功能</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ dblClickExpand: false
+ }
+};
+......</code></pre>
+ <h4>2. 设置 zTree ä»…ä»… level=0 的父节点å–消åŒå‡»å±•å¼€çš„功能</h4>
+ <pre xmlns=""><code>function dblClickExpand(treeId, treeNode) {
+ return treeNode.level > 0;
+};
+var setting = {
+ view: {
+ dblClickExpand: dblClickExpand
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.expandSpeed.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.expandSpeed.html
new file mode 100755
index 00000000..3b799c32
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.expandSpeed.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Number</span><span class="path">setting.view.</span>expandSpeed</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 节点展开ã€æŠ˜å æ—¶çš„åŠ¨ç”»é€Ÿåº¦ï¼Œè®¾ç½®æ–¹æ³•åŒ JQuery 动画效果中 speed å‚数。</p>
+ <p class="highlight_red">IE6 下会自动关闭动画效果,以ä¿è¯ zTree çš„æ“作速度</p>
+ <p>默认值:"fast"</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>三ç§é¢„定速度之一的字符串("slow", "normal", or "fast")</p>
+ <p class="highlight_red">设置为 "" 时,ä¸æ˜¾ç¤ºåŠ¨ç”»æ•ˆæžœ</p>
+ </div>
+ <h3>Number æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>表示动画时长的毫秒数值 (如:1000)</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置为慢速显示动画效果</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ expandSpeed: "slow"
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.fontCss.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.fontCss.html
new file mode 100755
index 00000000..54efb1bb
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.fontCss.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON / Function(treeId, treeNode)</span><span class="path">setting.view.</span>fontCss</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>个性化文字样å¼ï¼Œåªé’ˆå¯¹ zTree 在节点上显示的&lt;A&gt;对象。</p>
+ <p>默认值:{}</p>
+ </div>
+ </div>
+ <h3>JSON æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>JSON æ ¼å¼ä¸º JQuery css方法中的 JSON 对象格å¼ï¼Œä¾‹å¦‚:<span class="highlight_red">{color:"#ff0011", background:"blue"}</span></p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®è‡ªå®šä¹‰æ ·å¼çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+ <p>è¿”å›žå€¼åŒ JSON æ ¼å¼çš„æ•°æ®ï¼Œä¾‹å¦‚:<span class="highlight_red">{color:"#ff0011", background:"blue"}</span></p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. ä¸ä¿®æ”¹CSS,设置全部节点 name 显示为红色</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ fontCss : {color:"red"}
+ }
+};</code></pre>
+ <h4>2. 设置 level=0 的节点 name 显示为红色</h4>
+ <pre xmlns=""><code>function setFontCss(treeId, treeNode) {
+ return treeNode.level == 0 ? {color:"red"} : {};
+};
+var setting = {
+ view: {
+ fontCss: setFontCss
+ }
+};</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.nameIsHTML.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.nameIsHTML.html
new file mode 100755
index 00000000..a1d916c5
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.nameIsHTML.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>nameIsHTML</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 name 属性是å¦æ”¯æŒ HTML 脚本</p>
+ <p class="highlight_red">如果å…许 HTML 脚本,请根æ®è‡ªå·±çš„需求åšæ ¡éªŒï¼Œé¿å…出现 js 注入等安全问题。</p>
+ <p>默认值: false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 æ”¯æŒ / ä¸æ”¯æŒ HTML 脚本</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 name å±žæ€§æ”¯æŒ HTML 脚本</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ nameIsHTML: true
+ }
+};
+var node = {"name":"&lt;font color='red'&gt;test&lt;/font&gt;"};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.removeHoverDom.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.removeHoverDom.html
new file mode 100755
index 00000000..bb1a9aa2
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.removeHoverDom.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.view.</span>removeHoverDom</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于当鼠标移出节点时,éšè—用户自定义控件,显示éšè—状æ€åŒ zTree 内部的编辑ã€åˆ é™¤æŒ‰é’®</p>
+ <p class="highlight_red">请务必与 <span class="highlight_red">addHoverDom</span> åŒæ—¶ä½¿ç”¨ï¼›å±žäºŽé«˜çº§åº”用,使用时请确ä¿å¯¹ zTree 比较了解。</p>
+ <p>默认值:null</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦éšè—自定义控件的节点 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置鼠标移到节点上,在åŽé¢æ˜¾ç¤ºä¸€ä¸ªæŒ‰é’®</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ addHoverDom: addHoverDom,
+ removeHoverDom: removeHoverDom,
+ ......
+ }
+};
+function addHoverDom(treeId, treeNode) {
+ var aObj = $("#" + treeNode.tId + "_a");
+ if ($("#diyBtn_"+treeNode.id).length>0) return;
+ var editStr = "&lt;span id='diyBtn_space_" +treeNode.id+ "' &gt;&nbsp;&lt;/span&gt;"
+ + "&lt;button type='button' class='diyBtn1' id='diyBtn_" + treeNode.id
+ + "' title='"+treeNode.name+"' onfocus='this.blur();'&gt;&lt;/button&gt;";
+ aObj.append(editStr);
+ var btn = $("#diyBtn_"+treeNode.id);
+ if (btn) btn.bind("click", function(){alert("diy Button for " + treeNode.name);});
+};
+function removeHoverDom(treeId, treeNode) {
+ $("#diyBtn_"+treeNode.id).unbind().remove();
+ $("#diyBtn_space_" +treeNode.id).unbind().remove();
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.selectedMulti.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.selectedMulti.html
new file mode 100755
index 00000000..2cc65a2e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.selectedMulti.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>selectedMulti</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置是å¦å…许åŒæ—¶é€‰ä¸­å¤šä¸ªèŠ‚点。</p>
+ <p>默认值: true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 æ”¯æŒ / ä¸æ”¯æŒ åŒæ—¶é€‰ä¸­å¤šä¸ªèŠ‚点</p>
+ <p class="highlight_red">1ã€è®¾ç½®ä¸º true时,按下 Ctrl 或 Cmd é”®å¯ä»¥é€‰ä¸­å¤šä¸ªèŠ‚点</p>
+ <p class="highlight_red">2ã€è®¾ç½®ä¸º true / false 都ä¸å½±å“按下 Ctrl 或 Cmd é”®å¯ä»¥è®©å·²é€‰ä¸­çš„节点å–消选中状æ€ï¼ˆ å–消选中状æ€å¯ä»¥å‚考 setting.view.autoCancelSelected )</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. ç¦æ­¢å¤šç‚¹åŒæ—¶é€‰ä¸­çš„功能</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ selectedMulti: false
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.showIcon.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.showIcon.html
new file mode 100755
index 00000000..ebe423ca
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.showIcon.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.view.</span>showIcon</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 是å¦æ˜¾ç¤ºèŠ‚点的图标。</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 显示 / éšè— 图标</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®æ˜¯å¦æ˜¾ç¤ºå›¾æ ‡çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置 zTree ä¸æ˜¾ç¤ºå›¾æ ‡</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ showIcon: false
+ }
+};
+......</code></pre>
+ <h4>2. 设置 zTree ä»…ä»… level=2 的节点ä¸æ˜¾ç¤ºå›¾æ ‡</h4>
+ <pre xmlns=""><code>function showIconForTree(treeId, treeNode) {
+ return treeNode.level != 2;
+};
+var setting = {
+ view: {
+ showIcon: showIconForTree
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.showLine.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.showLine.html
new file mode 100755
index 00000000..02ab5ebb
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.showLine.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>showLine</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 是å¦æ˜¾ç¤ºèŠ‚点之间的连线。</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 显示 / ä¸æ˜¾ç¤º 连线</p>
+ </div>
+ <h3>setting 举例</h3>
+ <h4>1. 设置 zTree ä¸æ˜¾ç¤ºèŠ‚点之间的连线</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ showLine: false
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.showTitle.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.showTitle.html
new file mode 100755
index 00000000..5bcb8600
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.showTitle.html
@@ -0,0 +1,46 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.view.</span>showTitle</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 是å¦æ˜¾ç¤ºèŠ‚点的 title æ示信æ¯(å³èŠ‚点 DOM çš„ title 属性)。</p>
+ <p class="highlight_red">请务必与 <span class="highlight_red">setting.data.key.title</span> åŒæ—¶ä½¿ç”¨ã€‚</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 显示 / éšè— æ示信æ¯</p>
+ <p class="highlight_red">如果 setting.view.showTitle = true & setting.data.key.title = '',zTree 会自动使用 setting.data.key.name 指定的节点åç§°å½“åš title</p>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>对应 zTree çš„ <b class="highlight_red">treeId</b>,便于用户æ“控</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è®¾ç½®æ˜¯å¦æ˜¾ç¤ºæ示信æ¯çš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>è¿”å›žå€¼åŒ Boolean æ ¼å¼çš„æ•°æ®</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置 zTree ä¸æ˜¾ç¤ºæ示信æ¯</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ showTitle: false
+ }
+};
+......</code></pre>
+ <h4>2. 设置 zTree ä»…ä»… level=2 的节点ä¸æ˜¾ç¤ºæ示信æ¯</h4>
+ <pre xmlns=""><code>function showTitleForTree(treeId, treeNode) {
+ return treeNode.level != 2;
+};
+var setting = {
+ view: {
+ showTitle: showTitleForTree
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.txtSelectedEnable.html b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.txtSelectedEnable.html
new file mode 100755
index 00000000..c22a8c00
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.txtSelectedEnable.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>txtSelectedEnable</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 是å¦å…许å¯ä»¥é€‰æ‹© zTree DOM 内的文本。</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true / false 分别表示 å…许 / ä¸å…许 选择 zTree Dom 内的文本</p>
+ </div>
+ <h3>setting & function 举例</h3>
+ <h4>1. 设置 zTree å…许选择文本</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ txtSelectedEnable: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.check_Child_State.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.check_Child_State.html
new file mode 100755
index 00000000..fa378994
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.check_Child_State.html
@@ -0,0 +1,43 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">treeNode.</span>check_Child_State</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于设置节点的å­èŠ‚点的 checkBox / radio çš„åŠé€‰çŠ¶æ€ã€‚<span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">v3.x 针对节点数æ®å¯¹è±¡æä¾› treeNode.getCheckStatus() 方法获å–标准的åŠé€‰çŠ¶æ€</p>
+ <p class="highlight_red">zTree 内部使用,请勿进行åˆå§‹åŒ– 或 éšæ„修改</p>
+ <p>默认值:true</p>
+ </div>
+ </div>
+ <h3>Number æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>规则如下:</p>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "checkbox"</td></tr>
+ <tr><td>treeNode.check_Child_State</td><td>勾选状æ€è¯´æ˜Ž</td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-1</td><td>ä¸å­˜åœ¨å­èŠ‚点 或 å­èŠ‚点全部设置为 nocheck = true</td></tr>
+ <tr><td>0</td><td>æ—  å­èŠ‚点被勾选</td></tr>
+ <tr><td>1</td><td>部分 å­èŠ‚点被勾选</td></tr>
+ <tr><td>2</td><td>全部 å­èŠ‚点被勾选</td></tr>
+ </tbody>
+ </table>
+ <br/>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "radio"</td></tr>
+ <tr><td>treeNode.check_Child_State</td><td>勾选状æ€è¯´æ˜Ž</td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-1</td><td>ä¸å­˜åœ¨å­èŠ‚点 或 å­èŠ‚点全部设置为 nocheck = true</td></tr>
+ <tr><td>0</td><td>æ—  å­èŠ‚点被勾选</td></tr>
+ <tr><td>2</td><td>有 å­èŠ‚点被勾选</td></tr>
+ </tbody>
+ </table>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.check_Focus.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.check_Focus.html
new file mode 100755
index 00000000..785aec9f
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.check_Focus.html
@@ -0,0 +1,19 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>check_Focus</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于设置节点的 checkBox / radio çš„ focus 状æ€ã€‚<span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">zTree 内部使用,请勿进行åˆå§‹åŒ– 或 éšæ„修改</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>true 表示当å‰é¼ æ ‡ç§»åŠ¨åˆ°è¾“入框内</p>
+ <p>false 表示当å‰é¼ æ ‡ç§»åŠ¨åˆ°è¾“入框外</p>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.checked.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.checked.html
new file mode 100755
index 00000000..049d6ba4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.checked.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>checked</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点的 checkBox / radio çš„ 勾选状æ€ã€‚<span class="highlight_red">[setting.check.enable = true & treeNode.nocheck = false 时有效]</span></p>
+ <p class="highlight_red">1ã€å¦‚æžœä¸ä½¿ç”¨ checked 属性设置勾选状æ€ï¼Œè¯·ä¿®æ”¹ setting.data.key.checked </p>
+ <p class="highlight_red">2ã€å»ºç«‹ treeNode æ•°æ®æ—¶è®¾ç½® treeNode.checked = true å¯ä»¥è®©èŠ‚点的输入框默认为勾选状æ€</p>
+ <p class="highlight_red">3ã€ä¿®æ”¹èŠ‚点勾选状æ€ï¼Œå¯ä»¥ä½¿ç”¨ treeObj.checkNode / checkAllNodes / updateNode 方法,具体使用哪ç§è¯·æ ¹æ®è‡ªå·±çš„需求而定</p>
+ <p class="highlight_red">4ã€ä¸ºäº†è§£å†³éƒ¨åˆ†æœ‹å‹ç”Ÿæˆ json æ•°æ®å‡ºçŽ°çš„兼容问题, æ”¯æŒ "false","true" 字符串格å¼çš„æ•°æ®</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>true 表示节点的输入框被勾选</p>
+ <p>false 表示节点的输入框未勾选</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. åˆå§‹åŒ–çš„æ•°æ®è®¾ç½® 默认为勾选状æ€</h4>
+ <pre xmlns=""><code>var nodes = [
+{ "id":1, "name":"test1", checked:true },
+{ "id":2, "name":"test2", checked:true }
+]</code></pre>
+ <h4>2. 获å–第一个根节点的勾选状æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var checked = treeObj.getNodes()[0].checked;
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.checkedOld.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.checkedOld.html
new file mode 100755
index 00000000..cab717e7
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.checkedOld.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>checkedOld</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点的 checkBox / radio 在åˆå§‹åŒ–时的 勾选状æ€ã€‚<span class="highlight_red">[setting.check.enable = true & treeNode.nocheck = false 时有效]</span></p>
+ <p class="highlight_red">1ã€zTree åˆå§‹åŒ–节点数æ®æ—¶ä¼šå¯¹æ­¤å±žæ€§è¿›è¡Œèµ‹å€¼ï¼Œå› æ­¤è¯·å‹¿å¯¹æ­¤å±žæ€§åˆå§‹åŒ–</p>
+ <p class="highlight_red">2ã€å¦‚需é…åˆ zTreeObj.getChangeCheckedNodes 方法实现特殊功能,å¯ä»¥æ ¹æ®éœ€æ±‚在使用中自行修改 checkedOld æ•°æ®</p>
+ <p>默认值:checkedçš„åˆå§‹åŒ–值</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>true 表示节点åˆå§‹åŒ–æ—¶ 输入框被勾选</p>
+ <p>false 表示节点åˆå§‹åŒ–æ—¶ 输入框未勾选</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 获å–第一个根节点的åˆå§‹å‹¾é€‰çŠ¶æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var checkedOld = treeObj.getNodes()[0].checkedOld;
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.children.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.children.html
new file mode 100755
index 00000000..4bab8351
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.children.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Array(JSON)</span><span class="path">treeNode.</span>children</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点的å­èŠ‚点数æ®é›†åˆã€‚</p>
+ <p class="highlight_red">1ã€å¦‚æžœä¸ä½¿ç”¨ children 属性ä¿å­˜å­èŠ‚点数æ®ï¼Œè¯·ä¿®æ”¹ setting.data.key.children </p>
+ <p class="highlight_red">2ã€å¼‚步加载时,对于设置了 isParent = true 的节点,在展开时将进行异步加载</p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>Array(JSON) æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>标准的 JSON æ•°æ®å¯¹è±¡</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. åˆå§‹åŒ–的标准嵌套格å¼çš„ JSON æ•°æ®å¯¹è±¡</h4>
+ <pre xmlns=""><code>var nodes = [
+{ "id":1, "name":"test1",
+ children: [
+ { "id":3, "name":"test3"},
+ { "id":4, "name":"test4"},
+ { "id":5, "name":"test5"}
+ ]
+},
+{ "id":2, "name":"test2" }
+]</code></pre>
+ <h4>2. 获å–第一个根节点的å­èŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes()[0].children;
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.chkDisabled.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.chkDisabled.html
new file mode 100755
index 00000000..e6bb0322
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.chkDisabled.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>chkDisabled</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>1ã€è®¾ç½®èŠ‚点的 checkbox / radio 是å¦ç¦ç”¨ <span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">2ã€ä¸ºäº†è§£å†³éƒ¨åˆ†æœ‹å‹ç”Ÿæˆ json æ•°æ®å‡ºçŽ°çš„兼容问题, æ”¯æŒ "false","true" 字符串格å¼çš„æ•°æ®</p>
+ <p class="highlight_red">3ã€è¯·å‹¿å¯¹å·²åŠ è½½çš„节点修改此属性,ç¦æ­¢ 或 å–消ç¦æ­¢ 请使用 setChkDisabled() 方法</p>
+ <p class="highlight_red">4ã€åˆå§‹åŒ–时,如果需è¦å­å­™èŠ‚点继承父节点的 chkDisabled 属性,请设置 setting.check.chkDisabledInherit 属性</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p class="highlight_red">true 表示此节点的 checkbox / radio 被ç¦ç”¨ã€‚</p>
+ <p class="highlight_red">false 表示此节点的 checkbox / radio å¯ä»¥ä½¿ç”¨ã€‚</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. ç¦ç”¨èŠ‚点 checkbox / radio </h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1", "checked":true, "chkDisabled":true},
+ { "id":2, "name":"test2", "chkDisabled":true},
+ { "id":3, "name":"test3"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.click.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.click.html
new file mode 100755
index 00000000..833c6784
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.click.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>click</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>最简å•çš„ click 事件æ“作。相当于 onclick="..." 的内容。 如果æ“作较å¤æ‚,请使用 onClick 事件回调函数。</p>
+ <p class="highlight_red">由于 IE 对于 onclick å’Œ click事件共存时的处ç†ä¸Žå…¶ä»–æµè§ˆå™¨ä¸åŒï¼Œæ‰€ä»¥è¯·ä¸è¦åˆ©ç”¨æ­¤å‚数控制是å¦å…许跳转的æ“作(例如:treeNode.click = "return false;")。如有类似需求,请ä¸è¦ä½¿ç”¨ url 属性设置网å€ï¼ŒåŒæ—¶åˆ©ç”¨ onClick 回调函数控制跳转。</p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>标准 javascript 语法, 例如:alert("test"); 等</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置æŸèŠ‚点点击时,弹出信æ¯æ¡†</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"Google CN", "url":"http://g.cn", "click":"alert('test');"},
+ ......
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.diy.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.diy.html
new file mode 100755
index 00000000..b2fb0d9e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.diy.html
@@ -0,0 +1,15 @@
+<div class="apiDetail">
+<div>
+ <h2><span>?</span><span class="path">treeNode.</span>* DIY *</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于ä¿å­˜èŠ‚点的其他自定义数æ®ä¿¡æ¯ï¼Œä¸è¦ä¸Ž zTree 使用的属性相åŒå³å¯ï¼Œç”¨æˆ·å¯éšæ„设定。</p>
+ </div>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置节点的备用英文å称</h4>
+ <pre xmlns=""><code>var node = { "id":1, "name":"test1", "ename":"test eName"};</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.editNameFlag.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.editNameFlag.html
new file mode 100755
index 00000000..51162b8b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.editNameFlag.html
@@ -0,0 +1,19 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>editNameFlag</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>用于记录节点是å¦å¤„于编辑å称状æ€ã€‚<span class="highlight_red">[setting.edit.enable = true 时有效]</span></p>
+ <p class="highlight_red">zTree 内部使用,请勿进行åˆå§‹åŒ– 或 éšæ„修改</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>true 表示节点处于编辑å称状æ€</p>
+ <p>false 表示节点未处于编辑å称状æ€</p>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getCheckStatus.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getCheckStatus.html
new file mode 100755
index 00000000..fc20eac4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getCheckStatus.html
@@ -0,0 +1,63 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getCheckStatus</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>获å–节点 checkbox / radio åŠå‹¾é€‰çŠ¶æ€ã€‚<span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>JSON</span></h4>
+ <pre xmlns=""><code>{
+ checked: true, //ç­‰åŒäºŽ treeNode.checked
+ half: true //规则è§ä¸‹è¡¨
+}</code></pre>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "checkbox"</td></tr>
+ <tr><td>treeNode.checked</td><td>treeNode.check_Child_State</td><td>treeNode.halfCheck</td><td> half </td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-</td><td>-</td><td>true</td><td>true</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>true</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>true</td><td>0</td><td>false</td><td>true</td></tr>
+ <tr><td>true</td><td>1</td><td>false</td><td>true</td></tr>
+ <tr><td>true</td><td>2</td><td>false</td><td>false</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>false</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>0</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>1</td><td>false</td><td>true</td></tr>
+ <tr><td>false</td><td>2</td><td>false</td><td>true</td></tr>
+ </tbody>
+ </table>
+ <br/>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "radio"</td></tr>
+ <tr><td>treeNode.checked</td><td>treeNode.check_Child_State</td><td>treeNode.halfCheck</td><td> half </td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-</td><td>-</td><td>true</td><td>true</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>true</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>true</td><td>0</td><td>false</td><td>false</td></tr>
+ <tr><td>true</td><td>2</td><td>false</td><td>true</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>false</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>0</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>2</td><td>false</td><td>true</td></tr>
+ </tbody>
+ </table>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 获å–第一个根节点的åŠé€‰çŠ¶æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var halfCheck = treeObj.getNodes()[0].getCheckStatus();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getNextNode.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getNextNode.html
new file mode 100755
index 00000000..7a0fa5c0
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getNextNode.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getNextNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>获å–与 treeNode 节点相邻的åŽä¸€ä¸ªèŠ‚点。</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>JSON</span></h4>
+ <p>与 treeNode 节点相邻的åŽä¸€ä¸ªèŠ‚点。</p>
+ <p class="highlight_red">如果 treeNode 是最åŽä¸€ä¸ªèŠ‚点,返回 null 。</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 获å–当å‰è¢«é€‰ä¸­çš„节点的下一个节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var node = sNodes[0].getNextNode();
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getParentNode.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getParentNode.html
new file mode 100755
index 00000000..31309a62
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getParentNode.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getParentNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>èŽ·å– treeNode 节点的父节点。</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>JSON</span></h4>
+ <p> treeNode 节点的父节点 JSON æ•°æ®å¯¹è±¡ã€‚</p>
+ <p class="highlight_red">如果 treeNode 是根节点,返回 null 。</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 获å–当å‰è¢«é€‰ä¸­çš„节点的父节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var node = sNodes[0].getParentNode();
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getPreNode.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getPreNode.html
new file mode 100755
index 00000000..9d841841
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getPreNode.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getPreNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>获å–与 treeNode 节点相邻的å‰ä¸€ä¸ªèŠ‚点。</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>JSON</span></h4>
+ <p>与 treeNode 节点相邻的å‰ä¸€ä¸ªèŠ‚点。</p>
+ <p class="highlight_red">如果 treeNode 是第一个节点,返回 null 。</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 获å–当å‰è¢«é€‰ä¸­çš„节点的å‰ä¸€ä¸ªèŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var node = sNodes[0].getPreNode();
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.halfCheck.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.halfCheck.html
new file mode 100755
index 00000000..23ac744c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.halfCheck.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>halfCheck</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>强制节点的 checkBox / radio çš„ åŠå‹¾é€‰çŠ¶æ€ã€‚<span class="highlight_red">[setting.check.enable = true & treeNode.nocheck = false 时有效]</span></p>
+ <p class="highlight_red">1ã€å¼ºåˆ¶ä¸ºåŠå‹¾é€‰çŠ¶æ€åŽï¼Œä¸å†è¿›è¡Œè‡ªåŠ¨è®¡ç®—åŠå‹¾é€‰çŠ¶æ€</p>
+ <p class="highlight_red">2ã€è®¾ç½® treeNode.halfCheck = false 或 null æ‰èƒ½æ¢å¤è‡ªåŠ¨è®¡ç®—åŠå‹¾é€‰çŠ¶æ€</p>
+ <p class="highlight_red">3ã€ä¸ºäº†è§£å†³éƒ¨åˆ†æœ‹å‹ç”Ÿæˆ json æ•°æ®å‡ºçŽ°çš„兼容问题, æ”¯æŒ "false","true" 字符串格å¼çš„æ•°æ®</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>true 表示节点的输入框 强行设置为åŠå‹¾é€‰</p>
+ <p>false 表示节点的输入框 æ ¹æ® zTree 的规则自动计算åŠå‹¾é€‰çŠ¶æ€</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. åˆå§‹åŒ–çš„æ•°æ®è®¾ç½® 默认为åŠå‹¾é€‰çŠ¶æ€</h4>
+ <pre xmlns=""><code>var nodes = [
+{ "id":1, "name":"test1", isParent:true, checked:true, halfCheck:true },
+{ "id":2, "name":"test2", isParent:true, checked:false, halfCheck:true },
+{ "id":3, "name":"test3", isParent:true, checked:true },
+{ "id":4, "name":"test4", isParent:true, checked:false }
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.icon.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.icon.html
new file mode 100755
index 00000000..69c5db16
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.icon.html
@@ -0,0 +1,33 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>icon</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点自定义图标的 URL 路径。</p>
+ <p class="highlight_red">1ã€çˆ¶èŠ‚点如果åªè®¾ç½® icon ,会导致展开ã€æŠ˜å æ—¶éƒ½ä½¿ç”¨åŒä¸€ä¸ªå›¾æ ‡</p>
+ <p class="highlight_red">2ã€çˆ¶èŠ‚点展开ã€æŠ˜å ä½¿ç”¨ä¸åŒçš„个性化图标需è¦åŒæ—¶è®¾ç½® treeNode.iconOpen / treeNode.iconClose 两个属性</p>
+ <p class="highlight_red">3ã€å¦‚果想利用 className 设置个性化图标,需è¦è®¾ç½® treeNode.iconSkin 属性</p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>图标图片的 url å¯ä»¥æ˜¯ç›¸å¯¹è·¯å¾„也å¯ä»¥æ˜¯ç»å¯¹è·¯å¾„</p>
+ <p class="highlight_red">设置相对路径请注æ„页é¢ä¸Žå›¾ç‰‡ä¹‹é—´çš„关系,确ä¿å›¾ç‰‡èƒ½å¤Ÿæ­£å¸¸åŠ è½½</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置节点的个性化图标</h4>
+ <pre xmlns=""><code>var nodes = [
+ //父节点展开 折å æ—¶ä½¿ç”¨ç›¸åŒçš„图标
+ { name:"父节点1", icon:"/img/parent.gif"},
+
+ //父节点展开 折å æ—¶åˆ†åˆ«ä½¿ç”¨ä¸åŒçš„图标
+ { name:"父节点2", iconOpen:"/img/open.gif", iconClose:"/img/close.gif"},
+
+ //å¶å­èŠ‚点个性化图标
+ { name:"å¶å­èŠ‚点", icon:"/img/leaf.gif"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.iconClose.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.iconClose.html
new file mode 100755
index 00000000..f51da9c9
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.iconClose.html
@@ -0,0 +1,33 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>iconClose</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>父节点自定义折å æ—¶å›¾æ ‡çš„ URL 路径。</p>
+ <p class="highlight_red">1ã€æ­¤å±žæ€§åªé’ˆå¯¹çˆ¶èŠ‚点有效</p>
+ <p class="highlight_red">2ã€æ­¤å±žæ€§å¿…须与 iconOpen åŒæ—¶ä½¿ç”¨</p>
+ <p class="highlight_red">3ã€å¦‚果想利用 className 设置个性化图标,需è¦è®¾ç½® treeNode.iconSkin 属性</p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>图标图片的 url å¯ä»¥æ˜¯ç›¸å¯¹è·¯å¾„也å¯ä»¥æ˜¯ç»å¯¹è·¯å¾„</p>
+ <p class="highlight_red">设置相对路径请注æ„页é¢ä¸Žå›¾ç‰‡ä¹‹é—´çš„关系,确ä¿å›¾ç‰‡èƒ½å¤Ÿæ­£å¸¸åŠ è½½</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置节点的个性化图标</h4>
+ <pre xmlns=""><code>var nodes = [
+ //父节点展开 折å æ—¶ä½¿ç”¨ç›¸åŒçš„图标
+ { name:"父节点1", icon:"/img/parent.gif"},
+
+ //父节点展开 折å æ—¶åˆ†åˆ«ä½¿ç”¨ä¸åŒçš„图标
+ { name:"父节点2", iconOpen:"/img/open.gif", iconClose:"/img/close.gif"},
+
+ //å¶å­èŠ‚点个性化图标
+ { name:"å¶å­èŠ‚点", icon:"/img/leaf.gif"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.iconOpen.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.iconOpen.html
new file mode 100755
index 00000000..29c9baae
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.iconOpen.html
@@ -0,0 +1,33 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>iconOpen</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>父节点自定义展开时图标的 URL 路径。</p>
+ <p class="highlight_red">1ã€æ­¤å±žæ€§åªé’ˆå¯¹çˆ¶èŠ‚点有效</p>
+ <p class="highlight_red">2ã€æ­¤å±žæ€§å¿…须与 iconClose åŒæ—¶ä½¿ç”¨</p>
+ <p class="highlight_red">3ã€å¦‚果想利用 className 设置个性化图标,需è¦è®¾ç½® treeNode.iconSkin 属性</p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>图标图片的 url å¯ä»¥æ˜¯ç›¸å¯¹è·¯å¾„也å¯ä»¥æ˜¯ç»å¯¹è·¯å¾„</p>
+ <p class="highlight_red">设置相对路径请注æ„页é¢ä¸Žå›¾ç‰‡ä¹‹é—´çš„关系,确ä¿å›¾ç‰‡èƒ½å¤Ÿæ­£å¸¸åŠ è½½</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置节点的个性化图标</h4>
+ <pre xmlns=""><code>var nodes = [
+ //父节点展开 折å æ—¶ä½¿ç”¨ç›¸åŒçš„图标
+ { name:"父节点1", icon:"/img/parent.gif"},
+
+ //父节点展开 折å æ—¶åˆ†åˆ«ä½¿ç”¨ä¸åŒçš„图标
+ { name:"父节点2", iconOpen:"/img/open.gif", iconClose:"/img/close.gif"},
+
+ //å¶å­èŠ‚点个性化图标
+ { name:"å¶å­èŠ‚点", icon:"/img/leaf.gif"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.iconSkin.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.iconSkin.html
new file mode 100755
index 00000000..d5d97269
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.iconSkin.html
@@ -0,0 +1,43 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>iconSkin</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点自定义图标的 className</p>
+ <p class="highlight_red">1ã€éœ€è¦ä¿®æ”¹ css,增加相应 className 的设置</p>
+ <p class="highlight_red">2ã€css æ–¹å¼ç®€å•ã€æ–¹ä¾¿ï¼Œå¹¶ä¸”åŒæ—¶æ”¯æŒçˆ¶èŠ‚点展开ã€æŠ˜å çŠ¶æ€åˆ‡æ¢å›¾ç‰‡</p>
+ <p class="highlight_red">3ã€css 建议采用图片分割渲染的方å¼ä»¥å‡å°‘åå¤åŠ è½½å›¾ç‰‡ï¼Œå¹¶ä¸”é¿å…图片闪动</p>
+ <p class="highlight_red">4ã€zTree v3.x çš„ iconSkin åŒæ ·æ”¯æŒ IE6</p>
+ <p class="highlight_red">5ã€å¦‚果想直接使用 图片的Url路径 设置节点的个性化图标,需è¦è®¾ç½® treeNode.icon / treeNode.iconOpen / treeNode.iconClose 属性</p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>设置个性图标的 className</p>
+ </div>
+ <h3>css & treeNode 举例</h3>
+ <h4>1. 设置节点的个性化图标</h4>
+ <pre xmlns=""><code>css 内容:
+.ztree li span.button.diy01_ico_open, .ztree li span.button.diy01_ico_close{...}
+
+.ztree li span.button.diy02_ico_open{...}
+.ztree li span.button.diy02_ico_close{...}
+
+.ztree li span.button.diy03_ico_docu{...}
+
+js中节点数æ®ï¼š
+var nodes = [
+ //父节点展开 折å æ—¶ä½¿ç”¨ç›¸åŒçš„图标
+ { name:"父节点1", iconSkin:"diy01"},
+
+ //父节点展开 折å æ—¶åˆ†åˆ«ä½¿ç”¨ä¸åŒçš„图标
+ { name:"父节点2", iconSkin:"diy02"},
+
+ //å¶å­èŠ‚点个性化图标
+ { name:"å¶å­èŠ‚点", iconSkin:"diy03"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isAjaxing.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isAjaxing.html
new file mode 100755
index 00000000..330c1202
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isAjaxing.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isAjaxing</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录 treeNode 节点是å¦æ­£åœ¨è¿›è¡Œå¼‚步加载。</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示节点正在进行异步加载</p>
+ <p> false 表示节点没有进行异步加载</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点是å¦èŠ‚点正在进行异步加载</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isAjaxing = sNodes[0].isAjaxing;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isFirstNode.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isFirstNode.html
new file mode 100755
index 00000000..83b80bd9
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isFirstNode.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isFirstNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录 treeNode 节点是å¦ä¸ºåŒçº§èŠ‚点中的第一个节点。</p>
+ <p class="highlight_red">使用 exhide 扩展åŽï¼Œåªé’ˆå¯¹æ˜¾ç¤ºçš„节点设置此属性</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示是åŒçº§èŠ‚点中的第一个节点</p>
+ <p> false 表示ä¸æ˜¯åŒçº§èŠ‚点中的第一个节点</p>
+ <p class="highlight_red">节点被éšè—åŽï¼ŒisFirstNode = false</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点是å¦æ˜¯åŒçº§èŠ‚点中的第一个节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isFirstNode = sNodes[0].isFirstNode;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isHidden.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isHidden.html
new file mode 100755
index 00000000..5fb388e2
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isHidden.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isHidden</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exhide</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>判断 treeNode 节点是å¦è¢«éšè—。</p>
+ <p class="highlight_red">1ã€åˆå§‹åŒ– zTree 时,如果节点设置 isHidden = true,会被自动éšè—</p>
+ <p class="highlight_red">2ã€è¯·å‹¿å¯¹å·²åŠ è½½çš„节点修改此属性,éšè— / 显示 请使用 hideNode() / hideNodes() / showNode() / showNodes() 方法</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示被éšè—</p>
+ <p> false 表示被显示</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看第一个根节点是å¦è¢«éšè—</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getNodes();
+if (sNodes.length > 0) {
+ var isHidden = sNodes[0].isHidden;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isHover.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isHover.html
new file mode 100755
index 00000000..dcef6eba
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isHover.html
@@ -0,0 +1,19 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isHover</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录节点 çš„ hover 状æ€ï¼Œä¸»è¦ç”¨äºŽ setting.view.addHoverDom / removeHoverDom 。</p>
+ <p class="highlight_red">zTree 内部使用,请勿进行åˆå§‹åŒ– 或 éšæ„修改</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>true 表示节点处于 hover 状æ€</p>
+ <p>false 表示节点未处于 hover 状æ€</p>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isLastNode.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isLastNode.html
new file mode 100755
index 00000000..5d5ac822
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isLastNode.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isLastNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录 treeNode 节点是å¦ä¸ºåŒçº§èŠ‚点中的最åŽä¸€ä¸ªèŠ‚点。</p>
+ <p class="highlight_red">使用 exhide 扩展åŽï¼Œåªé’ˆå¯¹æ˜¾ç¤ºçš„节点设置此属性</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示是åŒçº§èŠ‚点中的最åŽä¸€ä¸ªèŠ‚点</p>
+ <p> false 表示ä¸æ˜¯åŒçº§èŠ‚点中的最åŽä¸€ä¸ªèŠ‚点</p>
+ <p class="highlight_red">节点被éšè—åŽï¼ŒisLastNode = false</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点是å¦æ˜¯åŒçº§èŠ‚点中的最åŽä¸€ä¸ªèŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isLastNode = sNodes[0].isLastNode;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isParent.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isParent.html
new file mode 100755
index 00000000..bab887e0
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isParent.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isParent</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录 treeNode 节点是å¦ä¸ºçˆ¶èŠ‚点。</p>
+ <p class="highlight_red">1ã€åˆå§‹åŒ–节点数æ®æ—¶ï¼Œæ ¹æ® treeNode.children 属性判断,有å­èŠ‚点则设置为 true,å¦åˆ™ä¸º false</p>
+ <p class="highlight_red">2ã€åˆå§‹åŒ–节点数æ®æ—¶ï¼Œå¦‚果设定 treeNode.isParent = true,å³ä½¿æ— å­èŠ‚点数æ®ï¼Œä¹Ÿä¼šè®¾ç½®ä¸ºçˆ¶èŠ‚点</p>
+ <p class="highlight_red">3ã€ä¸ºäº†è§£å†³éƒ¨åˆ†æœ‹å‹ç”Ÿæˆ json æ•°æ®å‡ºçŽ°çš„兼容问题, æ”¯æŒ "false","true" 字符串格å¼çš„æ•°æ®</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示是父节点</p>
+ <p> false 表示ä¸æ˜¯çˆ¶èŠ‚点</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点是å¦æ˜¯çˆ¶èŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isParent = sNodes[0].isParent;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.level.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.level.html
new file mode 100755
index 00000000..aff3254c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.level.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">treeNode.</span>level</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录节点的层级</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>Number æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p class="highlight_red">根节点 level = 0,ä¾æ¬¡é€’增</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点的级数</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var level = sNodes[0].level;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.name.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.name.html
new file mode 100755
index 00000000..918f2b49
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.name.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>name</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点å称。</p>
+ <p class="highlight_red">1ã€å¦‚æžœä¸ä½¿ç”¨ name 属性ä¿å­˜èŠ‚点å称,请修改 setting.data.key.name </p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>节点显示的å称字符串,标准 String å³å¯ï¼Œæ‰€æœ‰ç‰¹æ®Šå­—符都会被自动转义</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置节点的å称为 test1ã€test2ã€test3</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1"},
+ { "id":2, "name":"test2"},
+ { "id":3, "name":"test3"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.nocheck.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.nocheck.html
new file mode 100755
index 00000000..afaa62fb
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.nocheck.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>nocheck</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>1ã€è®¾ç½®èŠ‚点是å¦éšè— checkbox / radio <span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">2ã€ä¸ºäº†è§£å†³éƒ¨åˆ†æœ‹å‹ç”Ÿæˆ json æ•°æ®å‡ºçŽ°çš„兼容问题, æ”¯æŒ "false","true" 字符串格å¼çš„æ•°æ®</p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p class="highlight_red">true 表示此节点ä¸æ˜¾ç¤º checkbox / radio,ä¸å½±å“勾选的关è”关系,ä¸å½±å“父节点的åŠé€‰çŠ¶æ€ã€‚</p>
+ <p class="highlight_red">false 表示节点具有正常的勾选功能</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. ä¸æ˜¾ç¤ºæŸä¸ªèŠ‚点的 checkbox / radio </h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1", "nocheck":true},
+ { "id":2, "name":"test2"},
+ { "id":3, "name":"test3"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.open.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.open.html
new file mode 100755
index 00000000..1eb9aec4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.open.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>open</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录 treeNode 节点的 展开 / æŠ˜å  çŠ¶æ€ã€‚</p>
+ <p class="highlight_red">1ã€åˆå§‹åŒ–节点数æ®æ—¶ï¼Œå¦‚果设定 treeNode.open = true,则会直接展开此节点</p>
+ <p class="highlight_red">2ã€å¶å­èŠ‚点 treeNode.open = false</p>
+ <p class="highlight_red">3ã€ä¸ºäº†è§£å†³éƒ¨åˆ†æœ‹å‹ç”Ÿæˆ json æ•°æ®å‡ºçŽ°çš„兼容问题, æ”¯æŒ "false","true" 字符串格å¼çš„æ•°æ®</p>
+ <p class="highlight_red">4ã€éžå¼‚步加载模å¼ä¸‹ï¼Œæ— å­èŠ‚点的父节点设置 open=true åŽï¼Œå¯æ˜¾ç¤ºä¸ºå±•å¼€çŠ¶æ€ï¼Œä½†å¼‚步加载模å¼ä¸‹ä¸ä¼šç”Ÿæ•ˆã€‚(v3.5.15+) </p>
+ <p>默认值:false</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示节点为 展开 状æ€</p>
+ <p> false 表示节点为 æŠ˜å  çŠ¶æ€</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点的 展开 / æŠ˜å  çŠ¶æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isOpen = sNodes[0].open;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.parentTId.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.parentTId.html
new file mode 100755
index 00000000..d228a23a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.parentTId.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>parentTId</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>treeNode 节点的父节点唯一标识 tId。</p>
+ <p class="highlight_red">1ã€v3.x 用 parentTId 替æ¢äº†åŽŸå…ˆçš„ parentNode 属性,åŒæ—¶å¢žåŠ äº† getParentNode 方法,以é¿å…原先 parentNode 造æˆçš„ clone 死循环</p>
+ <p class="highlight_red">2ã€åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>zTree 内部生æˆçš„节点唯一标识,请å‚考 treeNode.tId 的说明</p>
+ <p class="highlight_red">如果 treeNode 是根节点,则 parentTId = null</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点的父节点 tId</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var parentTId = sNodes[0].parentTId;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.tId.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.tId.html
new file mode 100755
index 00000000..c32285c5
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.tId.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>tId</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>treeNode 节点的唯一标识 tId。</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>生æˆè§„则:setting.treeId + "_" + 内部计数</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点的 tId</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var tId = sNodes[0].tId;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.target.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.target.html
new file mode 100755
index 00000000..f7c1b6ba
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.target.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>target</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置点击节点åŽåœ¨ä½•å¤„打开 url。<span class="highlight_red">[treeNode.url 存在时有效]</span></p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>åŒè¶…链接 target 属性: "_blank", "_self" 或 其他指定窗å£å称 </p>
+ <p>çœç•¥æ­¤å±žæ€§ï¼Œåˆ™é»˜è®¤ä¸º "_blank"</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置点击æŸèŠ‚点时,弹出新页é¢</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1", "url":"http://myTest.com", "target":"_blank"},
+ ......
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.url.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.url.html
new file mode 100755
index 00000000..0b2e0076
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.url.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>url</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>节点链接的目标 URL</p>
+ <p class="highlight_red">1ã€ç¼–è¾‘æ¨¡å¼ (setting.edit.enable = true) 下此属性功能失效,如果必须使用类似功能,请利用 onClick 事件回调函数自行控制。</p>
+ <p class="highlight_red">2ã€å¦‚果需è¦åœ¨ onClick 事件回调函数中进行跳转控制,那么请将 URL 地å€ä¿å­˜åœ¨å…¶ä»–自定义的属性内,请勿使用 url</p>
+ <p>默认值:无</p>
+ </div>
+ </div>
+ <h3>String æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p>åŒè¶…链接 href 属性</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 设置æŸèŠ‚点点击时,跳转到 g.cn</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"Google CN", "url":"http://g.cn"},
+ ......
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.zAsync.html b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.zAsync.html
new file mode 100755
index 00000000..00e48f39
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.zAsync.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>zAsync</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>记录 treeNode 节点是å¦å·²ç»è¿›è¡Œè¿‡å¼‚步加载,é¿å…父节点åå¤å¼‚步加载数æ®ã€‚</p>
+ <p class="highlight_red">åˆå§‹åŒ–节点数æ®æ—¶ï¼Œç”± zTree 增加此属性,请勿æå‰èµ‹å€¼</p>
+ <p class="highlight_red">默认值:false (无å­èŠ‚点的父节点); true (有å­èŠ‚点的父节点 & å¶å­èŠ‚点)</p>
+ </div>
+ </div>
+ <h3>Boolean æ ¼å¼è¯´æ˜Ž</h3>
+ <div class="desc">
+ <p> true 表示父节点展开时ä¸éœ€è¦è‡ªåŠ¨å¼‚步加载</p>
+ <p> false 表示父节点展开时需è¦è‡ªåŠ¨å¼‚步加载</p>
+ <p class="highlight_red"> æ­¤å‚æ•°ä¸ä¼šå¯¹ reAsyncChildNodes 方法造æˆä»»ä½•å½±å“</p>
+ </div>
+ <h3>treeNode 举例</h3>
+ <h4>1. 查看当å‰è¢«é€‰ä¸­çš„节点是å¦èŠ‚点是å¦éœ€è¦è‡ªåŠ¨å¼‚步加载</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var zAsync = sNodes[0].zAsync;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.addNodes.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.addNodes.html
new file mode 100755
index 00000000..eac2152d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.addNodes.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(parentNode, newNodes, isSilent)</span><span class="path">zTreeObj.</span>addNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>添加节点。</p>
+ <p class="highlight_red">v3.x 为了é¿å…原先åå¤åˆå§‹åŒ–造æˆçš„æ•°æ®é‡å¤é—®é¢˜ï¼Œåœ¨ åˆå§‹åŒ– å’Œ 添加节点 时内部进行 clone æ“作。如果需è¦èŽ·å–æ•°æ®åœ¨ zTree 内的对象,请获å–此方法的返回值。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>parentNode</b><span>JSON</span></h4>
+ <p>指定的父节点,如果增加根节点,请设置 parentNode 为 null å³å¯ã€‚</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>newNodes</b><span>JSON / Array(JSON)</span></h4>
+ <p>需è¦å¢žåŠ çš„èŠ‚ç‚¹æ•°æ® JSON 对象集åˆï¼Œæ•°æ®åªéœ€è¦æ»¡è¶³ zTree 的节点数æ®å¿…需的属性å³å¯ï¼Œè¯¦ç»†è¯·å‚考“treeNode 节点数æ®è¯¦è§£â€</p>
+ <p class="highlight_red">1ã€v3.x 支æŒå•ç‹¬æ·»åŠ ä¸€ä¸ªèŠ‚点,å³å¦‚æžœåªæ–°å¢žä¸€ä¸ªèŠ‚点,ä¸ç”¨å¿…须包在数组中</p>
+ <p class="highlight_red">2ã€ä½¿ç”¨ç®€å•æ•°æ®æ¨¡å¼ï¼Œè¯·å‚考 setting.data.simpleData 内的属性说明</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>设定增加节点åŽæ˜¯å¦è‡ªåŠ¨å±•å¼€çˆ¶èŠ‚点。</p>
+ <p>isSilent = true 时,ä¸å±•å¼€çˆ¶èŠ‚点,其他值或缺çœçŠ¶æ€éƒ½è‡ªåŠ¨å±•å¼€ã€‚</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>返回值是 zTree 最终添加的节点数æ®é›†åˆ</p>
+ <p class="highlight_red">如果 newNodes 是å•ä¸ªèŠ‚ç‚¹æ•°æ® JSON,返回值也是将其包在 Array 内</p>
+ <p class="highlight_red">请务必记ä½ï¼šè¿”回值中的数æ®å¯¹è±¡ 是 newNodes 被 clone åŽçš„,所以ç»å¯¹ä¸ç›¸ç­‰ï¼</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 对于 id = "tree" 的 zTree 增加 1 个根节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var newNode = {name:"newNode1"};
+newNode = treeObj.addNodes(null, newNode);
+</code></pre>
+ <h4>2. 对于 id = "tree" 的 zTree 增加 3 个根节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var newNodes = [{name:"newNode1"}, {name:"newNode2"}, {name:"newNode3"}];
+newNodes = treeObj.addNodes(null, newNodes);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.cancelEditName.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.cancelEditName.html
new file mode 100755
index 00000000..9df098f0
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.cancelEditName.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(newName)</span><span class="path">zTreeObj.</span>cancelEditName</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>å–消节点的编辑å称状æ€ï¼Œå¯ä»¥æ¢å¤åŽŸå称,也å¯ä»¥å¼ºè¡Œèµ‹ç»™æ–°çš„å称。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>newName</b><span>String</span></h4>
+ <p>é‡æ–°ç»™å®šçš„æ–°å称。</p>
+ <p class="highlight_red">如果çœç•¥æ­¤å‚数,则æ¢å¤åŽŸå称。</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. å–消 zTree 的编辑å称状æ€ï¼Œæ¢å¤è¯¥èŠ‚点原有å称</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.cancelEditName();
+</code></pre>
+ <h4>2. å–消 zTree 的编辑å称状æ€ï¼Œå¹¶ä¸”é‡æ–°è®¾å®šè¯¥èŠ‚点å称</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.cancelEditName("test_new_name");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.cancelSelectedNode.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.cancelSelectedNode.html
new file mode 100755
index 00000000..26d5706f
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.cancelSelectedNode.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>cancelSelectedNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>å–消节点的选中状æ€ã€‚</p>
+ <p class="highlight_red">v3.x 支æŒå¤šç‚¹åŒæ—¶é€‰ä¸­ï¼Œå› æ­¤å–消选中状æ€å¯ä»¥å…¨éƒ¨å–消,也å¯ä»¥å•ç‹¬å–消æŸä¸ªèŠ‚点的选中状æ€ã€‚</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦å–消选中状æ€çš„节点。</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <p class="highlight_red">如果çœç•¥æ­¤å‚数,则将å–消全部被选中节点的选中状æ€ã€‚</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. å–消当å‰æ‰€æœ‰è¢«é€‰ä¸­èŠ‚点的选中状æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.cancelSelectedNode();
+</code></pre>
+ <h4>2. å–消当å‰ç¬¬ä¸€ä¸ªè¢«é€‰ä¸­èŠ‚点的选中状æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNode();
+if (nodes.length>0) {
+ treeObj.cancelSelectedNode(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.checkAllNodes.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.checkAllNodes.html
new file mode 100755
index 00000000..d6eaadf1
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.checkAllNodes.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(checked)</span><span class="path">zTreeObj.</span>checkAllNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>勾选 或 å–消勾选 全部节点。<span class="highlight_red">[setting.check.enable = true 且 setting.check.chkStyle = "checkbox" 时有效]</span></p>
+ <p class="highlight_red">此方法ä¸ä¼šè§¦å‘ beforeCheck / onCheck 事件回调函数。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>checked</b><span>Boolean</span></h4>
+ <p>checked = true 表示勾选全部节点</p>
+ <p>checked = false 表示全部节点å–消勾选</p>
+ <p class="highlight_red">ä¸ä¼šå½±å“ treeNode.nochecked = true 的节点。</p>
+ <p class="highlight_red">ä¸ä¼šå½±å“未加载的节点。</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 勾选全部节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.checkAllNodes(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.checkNode.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.checkNode.html
new file mode 100755
index 00000000..cb8bb7de
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.checkNode.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, checked, checkTypeFlag, callbackFlag)</span><span class="path">zTreeObj.</span>checkNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>勾选 或 å–消勾选 å•ä¸ªèŠ‚点。<span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">v3.x 中 checkNode() 方法å¯ä»¥è§¦å‘ beforeCheck / onCheck 事件回调函数。便于å‡å°‘冗余代ç </p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦å‹¾é€‰ 或 å–消勾选 的节点数æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>checked</b><span>Boolean</span></h4>
+ <p>checked = true 表示勾选节点</p>
+ <p>checked = false 表示节点å–消勾选</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,则根æ®å¯¹æ­¤èŠ‚点的勾选状æ€è¿›è¡Œ toggle 切æ¢</p>
+ <p class="highlight_red">ä¸å½±å“ treeNode.nochecked = true 的节点。</p>
+ <h4 class="topLine"><b>checkTypeFlag</b><span>Boolean</span></h4>
+ <p>checkTypeFlag = true 表示按照 setting.check.chkboxType 属性进行父å­èŠ‚点的勾选è”动æ“作</p>
+ <p>checkTypeFlag = false 表示åªä¿®æ”¹æ­¤èŠ‚点勾选状æ€ï¼Œæ— ä»»ä½•å‹¾é€‰è”动æ“作</p>
+ <p class="highlight_red">checkTypeFlag = false 且 treeNode.checked = checked 时,ä¸ä¼šè§¦å‘回调函数,直接返回</p>
+ <p class="highlight_red">ä¸å½±å“父å­èŠ‚点中 treeNode.nochecked = true 的节点。</p>
+ <h4 class="topLine"><b>callbackFlag</b><span>Boolean</span></h4>
+ <p>callbackFlag = true è¡¨ç¤ºæ‰§è¡Œæ­¤æ–¹æ³•æ—¶è§¦å‘ beforeCheck & onCheck 事件回调函数</p>
+ <p>callbackFlag = false 表示执行此方法时ä¸è§¦å‘事件回调函数</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ false</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 勾选当å‰é€‰ä¸­çš„节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+for (var i=0, l=nodes.length; i < l; i++) {
+ treeObj.checkNode(nodes[i], true, true);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.copyNode.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.copyNode.html
new file mode 100755
index 00000000..f1b624bf
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.copyNode.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(targetNode, treeNode, moveType, isSilent)</span><span class="path">zTreeObj.</span>copyNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>å¤åˆ¶èŠ‚点。</p>
+ <p class="highlight_red">v3.x å¤åˆ¶èŠ‚点时进行 clone æ“作。如果需è¦èŽ·å–æ•°æ®åœ¨ zTree 内的对象,请获å–此方法的返回值。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>targetNode</b><span>JSON</span></h4>
+ <p>è¦å¤åˆ¶åˆ°çš„目标节点 JSON æ•°æ®</p>
+ <p class="highlight_red">如果å¤åˆ¶æˆä¸ºæ ¹èŠ‚点,请设置 targetNode 为 null å³å¯</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è¢«å¤åˆ¶çš„节点数æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>å¤åˆ¶åˆ°ç›®æ ‡èŠ‚点的相对ä½ç½®</p>
+ <p class="highlight_red">"inner":æˆä¸ºå­èŠ‚点,"prev":æˆä¸ºåŒçº§å‰ä¸€ä¸ªèŠ‚点,"next":æˆä¸ºåŒçº§åŽä¸€ä¸ªèŠ‚点</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>设定å¤åˆ¶èŠ‚点åŽæ˜¯å¦è‡ªåŠ¨å±•å¼€çˆ¶èŠ‚点。</p>
+ <p>isSilent = true 时,ä¸å±•å¼€çˆ¶èŠ‚点,其他值或缺çœçŠ¶æ€éƒ½è‡ªåŠ¨å±•å¼€ã€‚</p>
+ <h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+ <p>返回值是最终加入到 zTree 内的节点数æ®</p>
+ <p class="highlight_red">请务必记ä½ï¼šè¿”回值中的数æ®å¯¹è±¡ 是 treeNode 被 clone åŽçš„,所以ç»å¯¹ä¸ç›¸ç­‰ï¼</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 将根节点中第二个节点 å¤åˆ¶æˆä¸º 第一个节点的å­èŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.copyNode(nodes[0], nodes[1], "inner");
+</code></pre>
+ <h4>2. 将根节点中第二个节点 å¤åˆ¶æˆä¸º 第一个节点的å‰ä¸€ä¸ªèŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.copyNode(nodes[0], nodes[1], "before");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.destroy.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.destroy.html
new file mode 100755
index 00000000..d9f6da0d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.destroy.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId)</span><span class="path">zTreeObj.</span>destroy</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>从 zTree v3.4 开始æä¾›é”€æ¯ zTree 的方法。</p>
+ <p>1ã€ç”¨æ­¤æ–¹æ³•å¯ä»¥é”€æ¯ zTreeObj 代表的 zTree。</p>
+ <p class="highlight_red">2ã€é”€æ¯å½“å‰é¡µé¢å…¨éƒ¨çš„ zTree,也å¯ä»¥ä½¿ç”¨ $.fn.zTree.destroy() 方法。</p>
+ <p class="highlight_red">3ã€é‡æ–°ä½¿ç”¨å·²ç»è¢«é”€æ¯çš„树,必须è¦ä½¿ç”¨ init 方法进行åˆå§‹åŒ–。</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. é”€æ¯ id 为 "treeDemo" çš„ zTree</h4>
+ <pre xmlns=""><code>var zTreeObj = $.fn.zTree.getZTreeObj("treeDemo");
+zTreeObj.destroy();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.editName.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.editName.html
new file mode 100755
index 00000000..2d4eaf7b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.editName.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>editName</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置æŸèŠ‚点进入编辑å称状æ€ã€‚</p>
+ <p class="highlight_red">1ã€å¦‚果需è¦ç”¨ js å–消编辑å称状æ€ï¼Œè¯·ä½¿ç”¨ cancelEditName(newName) 方法。</p>
+ <p class="highlight_red">2ã€å¯åˆ©ç”¨æ­¤æ–¹æ³•è®©å½“å‰æ­£ç¼–辑的节点 input 输入框获å–焦点。</p>
+ <p class="highlight_red">3ã€è¯·é€šè¿‡ zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>指定进入编辑å称状æ€çš„节点 JSON æ•°æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 设置根节点第一个节点进入编辑å称状æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.editName(nodes[0]);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.expandAll.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.expandAll.html
new file mode 100755
index 00000000..aaa3e464
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.expandAll.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(expandFlag)</span><span class="path">zTreeObj.</span>expandAll</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>展开 / æŠ˜å  å…¨éƒ¨èŠ‚ç‚¹</p>
+ <p class="highlight_red">此方法ä¸ä¼šè§¦å‘ beforeExpand / onExpand å’Œ beforeCollapse / onCollapse 事件回调函数。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>expandFlag</b><span>Boolean</span></h4>
+ <p>expandFlag = true 表示 展开 全部节点</p>
+ <p>expandFlag = false 表示 æŠ˜å  å…¨éƒ¨èŠ‚ç‚¹</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值表示最终实际æ“作情况</p>
+ <p>true 表示 展开 全部节点</p>
+ <p>false 表示 æŠ˜å  å…¨éƒ¨èŠ‚ç‚¹</p>
+ <p>null 表示 ä¸å­˜åœ¨ä»»ä½•çˆ¶èŠ‚点</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 展开全部节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.expandAll(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.expandNode.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.expandNode.html
new file mode 100755
index 00000000..5d96d3f5
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.expandNode.html
@@ -0,0 +1,50 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, expandFlag, sonSign, focus, callbackFlag)</span><span class="path">zTreeObj.</span>expandNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>展开 / æŠ˜å  æŒ‡å®šçš„èŠ‚ç‚¹</p>
+ <p class="highlight_red">v3.x 中执行此方法å¯ä»¥è§¦å‘ beforeExpand / onExpand 或 beforeCollapse / onCollapse 事件回调函数。便于å‡å°‘冗余代ç </p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>éœ€è¦ å±•å¼€ / æŠ˜å  çš„èŠ‚ç‚¹æ•°æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>expandFlag</b><span>Boolean</span></h4>
+ <p>expandFlag = true 表示 展开 节点</p>
+ <p>expandFlag = false 表示 æŠ˜å  èŠ‚ç‚¹</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,则根æ®å¯¹æ­¤èŠ‚点的展开状æ€è¿›è¡Œ toggle 切æ¢</p>
+ <h4 class="topLine"><b>sonSign</b><span>Boolean</span></h4>
+ <p>sonSign = true 表示 全部å­å­™èŠ‚点 进行与 expandFlag 相åŒçš„æ“作</p>
+ <p>sonSign = false 表示 åªå½±å“此节点,对于其 å­å­™èŠ‚点无任何影å“</p>
+ <p class="highlight_red">sonSign = false 且 treeNode.open = expandFlag 时,ä¸ä¼šè§¦å‘回调函数,直接返回</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ false</p>
+ <h4 class="topLine"><b>focus</b><span>Boolean</span></h4>
+ <p>focus = true 表示 展开 / æŠ˜å  æ“作åŽï¼Œé€šè¿‡è®¾ç½®ç„¦ç‚¹ä¿è¯æ­¤ç„¦ç‚¹è¿›å…¥å¯è§†åŒºåŸŸå†…</p>
+ <p>focus = false 表示 展开 / æŠ˜å  æ“作åŽï¼Œä¸è®¾ç½®ä»»ä½•ç„¦ç‚¹</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ true</p>
+ <h4 class="topLine"><b>callbackFlag</b><span>Boolean</span></h4>
+ <p>callbackFlag = true è¡¨ç¤ºæ‰§è¡Œæ­¤æ–¹æ³•æ—¶è§¦å‘ beforeExpand / onExpand 或 beforeCollapse / onCollapse 事件回调函数</p>
+ <p>callbackFlag = false 表示执行此方法时ä¸è§¦å‘事件回调函数</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ false</p>
+ <h4 class="topLine"><b>返回值</b><span>Boolean</span></h4>
+ <p>返回值表示最终实际æ“作情况</p>
+ <p>true 表示 展开 节点</p>
+ <p>false 表示 æŠ˜å  èŠ‚ç‚¹</p>
+ <p>null 表示 ä¸æ˜¯çˆ¶èŠ‚点</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 展开当å‰é€‰æ‹©çš„第一个节点(包括其全部å­èŠ‚点)</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes.length>0) {
+ treeObj.expandNode(nodes[0], true, true, true);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getChangeCheckedNodes.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getChangeCheckedNodes.html
new file mode 100755
index 00000000..ba865347
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getChangeCheckedNodes.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>getChangeCheckedNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>获å–输入框勾选状æ€è¢«æ”¹å˜çš„节点集åˆï¼ˆä¸ŽåŽŸå§‹æ•°æ® checkedOld 对比)。<span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>返回全部勾选状æ€è¢«æ”¹å˜çš„èŠ‚ç‚¹é›†åˆ Array</p>
+ <p class="highlight_red">如果需è¦èŽ·å–æ¯æ¬¡æ“作åŽå…¨éƒ¨è¢«æ”¹å˜å‹¾é€‰çŠ¶æ€çš„节点数æ®ï¼Œè¯·åœ¨æ¯æ¬¡å‹¾é€‰æ“作åŽï¼Œé历所有被改å˜å‹¾é€‰çŠ¶æ€çš„节点数æ®ï¼Œè®©å…¶ checkedOld = checked å°±å¯ä»¥äº†ã€‚</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 获å–当å‰å‹¾é€‰çŠ¶æ€è¢«æ”¹å˜çš„节点集åˆ</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getChangeCheckedNodes();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getCheckedNodes.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getCheckedNodes.html
new file mode 100755
index 00000000..85f4ba04
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getCheckedNodes.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(checked)</span><span class="path">zTreeObj.</span>getCheckedNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>获å–输入框被勾选 或 未勾选的节点集åˆã€‚<span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>checked</b><span>Boolean</span></h4>
+ <p>checked = true è¡¨ç¤ºèŽ·å– è¢«å‹¾é€‰ 的节点集åˆ</p>
+ <p>checked = false è¡¨ç¤ºèŽ·å– æœªå‹¾é€‰ 的节点集åˆ</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ true。</p>
+ <p class="highlight_red">对于 treeNode.nochecked = true 的节点ä¸è¿›è¡ŒèŽ·å–。</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>返回全部符åˆè¦æ±‚çš„èŠ‚ç‚¹é›†åˆ Array</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 获å–当å‰è¢«å‹¾é€‰çš„节点集åˆ</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getCheckedNodes(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodeByParam.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodeByParam.html
new file mode 100755
index 00000000..89e72c78
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodeByParam.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(key, value, parentNode)</span><span class="path">zTreeObj.</span>getNodeByParam</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>æ ¹æ®èŠ‚点数æ®çš„属性æœç´¢ï¼ŒèŽ·å–æ¡ä»¶å®Œå…¨åŒ¹é…çš„èŠ‚ç‚¹æ•°æ® JSON 对象</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>key</b><span>String</span></h4>
+ <p>需è¦ç²¾ç¡®åŒ¹é…的属性å称</p>
+ <h4 class="topLine"><b>value</b><span>?</span></h4>
+ <p>需è¦ç²¾ç¡®åŒ¹é…的属性值,å¯ä»¥æ˜¯ä»»ä½•ç±»åž‹ï¼Œåªè¦ä¿è¯ä¸Ž key 指定的属性值ä¿æŒä¸€è‡´å³å¯</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>æœç´¢èŒƒå›´ï¼ŒæŒ‡å®šåœ¨æŸä¸ªçˆ¶èŠ‚点下的å­èŠ‚点中进行æœç´¢</p>
+ <p class="highlight_red">忽略此å‚数,表示在全部节点中æœç´¢</p>
+ <h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+ <p>匹é…精确æœç´¢çš„节点数æ®</p>
+ <p class="highlight_red">1ã€å¦‚无结果,返回 null</p>
+ <p class="highlight_red">2ã€å¦‚有多个节点满足查询æ¡ä»¶ï¼Œåªè¿”回第一个匹é…到的节点</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 查找 id = 1 的节点数æ®</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodeByParam("id", 1, null);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodeByTId.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodeByTId.html
new file mode 100755
index 00000000..76fcc486
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodeByTId.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(tId)</span><span class="path">zTreeObj.</span>getNodeByTId</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>æ ¹æ® zTree 的唯一标识 tId 快速获å–节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">通过内部的 cache 获å–,ä¸éœ€è¦é历节点。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>tId</b><span>String</span></h4>
+ <p>节点在 zTree 内的唯一标识 tId</p>
+ <h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+ <p>tId 对应的节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">如无结果,返回 null</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. èŽ·å– tId = "tree_10" 的节点数æ®</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodeByTId("tree_10");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodeIndex.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodeIndex.html
new file mode 100755
index 00000000..b2c757d2
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodeIndex.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>getNodeIndex</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>获å–æŸèŠ‚点在åŒçº§èŠ‚点中的åºå·ï¼ˆä»Ž0开始)</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦æŸ¥è¯¢é¡ºåºçš„节点 JSON æ•°æ®å¯¹è±¡</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Number</span></h4>
+ <p class="highlight_red">返回值从 0 开始计数</p>
+ <p class="highlight_red">如果ä¸å­˜åœ¨è¯¥èŠ‚点数æ®ï¼Œè¿”回 -1</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 获å–当å‰é€‰ä¸­çš„第一个节点在åŒçº§èŠ‚点中的åºå·</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes.length>0) {
+ var index = treeObj.getNodeIndex(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodes.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodes.html
new file mode 100755
index 00000000..b368535e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodes.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>getNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>èŽ·å– zTree 的全部节点数æ®</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>全部节点数æ®</p>
+ <p class="highlight_red">1ã€Array 仅仅是根节点的集åˆï¼ˆé»˜è®¤æƒ…况å­èŠ‚点都处于 children 属性下); </p>
+ <p class="highlight_red">2ã€å¦‚需é历全部节点需è¦åˆ©ç”¨é€’归,或利用 transformToArray 方法 将数æ®å˜æˆç®€å•çš„ Array 集åˆ</p>
+ <p class="highlight_red">3ã€å¯¹äºŽå¼‚步加载模å¼ä¸‹ï¼Œå°šæœªåŠ è½½çš„å­èŠ‚点是无法通过此方法获å–的。</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 获å–全部节点数æ®</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodesByFilter.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodesByFilter.html
new file mode 100755
index 00000000..69174251
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodesByFilter.html
@@ -0,0 +1,43 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(filter, isSingle, parentNode, invokeParam)</span><span class="path">zTreeObj.</span>getNodesByFilter</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>æ ¹æ®è‡ªå®šä¹‰è§„则æœç´¢èŠ‚ç‚¹æ•°æ® JSON å¯¹è±¡é›†åˆ æˆ– å•ä¸ªèŠ‚点数æ®</p>
+ <p class="highlight_red">å¯è‡ªå®šä¹‰å¤æ‚çš„æœç´¢è§„则</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>filter</b><span>Function</span></h4>
+ <p>自定义过滤器函数 function filter(node) {...}</p>
+ <p>filter å‚数:node (èŠ‚ç‚¹æ•°æ® JSON)</p>
+ <p>filter 返回值:boolean (true 表示符åˆæœç´¢æ¡ä»¶ï¼›false 表示ä¸ç¬¦åˆæœç´¢æ¡ä»¶)</p>
+ <h4 class="topLine"><b>isSingle</b><span>Boolean</span></h4>
+ <p>isSingle = true 表示åªæŸ¥æ‰¾å•ä¸ªèŠ‚点</p>
+ <p>isSingle = false 表示查找节点集åˆ</p>
+ <p class="highlight_red">忽略此å‚数,表示查找节点集åˆ</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>å¯ä»¥æŒ‡å®šåœ¨æŸä¸ªçˆ¶èŠ‚点下的å­èŠ‚点中æœç´¢</p>
+ <p class="highlight_red">忽略此å‚数,表示在全部节点中æœç´¢</p>
+ <h4 class="topLine"><b>invokeParam</b><span>ä»»æ„类型</span></h4>
+ <p>用户自定义的数æ®å¯¹è±¡ï¼Œç”¨äºŽ filter 中进行计算</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON) / JSON</span></h4>
+ <p>isSingle = true 返回 ç¬¬ä¸€ä¸ªæ‰¾åˆ°çš„èŠ‚ç‚¹æ•°æ® JSON,无结果时返回 null</p>
+ <p>isSingle = false 返回 节点数æ®é›†åˆ Array(JSON),无结果时返回 [ ]</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 查找 level = 2 & name ä¸­åŒ…å« "test" 的节点数æ®</h4>
+ <pre xmlns=""><code>function filter(node) {
+ return (node.level == 2 && node.name.indexOf("test")>-1);
+}
+......
+var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodesByFilter(filter, true); // 仅查找一个节点
+var nodes = treeObj.getNodesByFilter(filter); // 查找节点集åˆ
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodesByParam.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodesByParam.html
new file mode 100755
index 00000000..cf45939c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodesByParam.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(key, value, parentNode)</span><span class="path">zTreeObj.</span>getNodesByParam</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>æ ¹æ®èŠ‚点数æ®çš„属性æœç´¢ï¼ŒèŽ·å–æ¡ä»¶å®Œå…¨åŒ¹é…çš„èŠ‚ç‚¹æ•°æ® JSON 对象集åˆ</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>key</b><span>String</span></h4>
+ <p>需è¦ç²¾ç¡®åŒ¹é…的属性å称</p>
+ <h4 class="topLine"><b>value</b><span>?</span></h4>
+ <p>需è¦ç²¾ç¡®åŒ¹é…的属性值,å¯ä»¥æ˜¯ä»»ä½•ç±»åž‹ï¼Œåªè¦ä¿è¯ä¸Ž key 指定的属性值ä¿æŒä¸€è‡´å³å¯</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>å¯ä»¥æŒ‡å®šåœ¨æŸä¸ªçˆ¶èŠ‚点下的å­èŠ‚点中æœç´¢</p>
+ <p class="highlight_red">忽略此å‚数,表示在全部节点中æœç´¢</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>匹é…精确æœç´¢çš„节点数æ®é›†åˆ</p>
+ <p class="highlight_red">如无结果,返回 [ ]</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 查找 name = "test" 的节点数æ®</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodesByParam("name", "test", null);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodesByParamFuzzy.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodesByParamFuzzy.html
new file mode 100755
index 00000000..04d183f9
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodesByParamFuzzy.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(key, value, parentNode)</span><span class="path">zTreeObj.</span>getNodesByParamFuzzy</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>æ ¹æ®èŠ‚点数æ®çš„属性æœç´¢ï¼ŒèŽ·å–æ¡ä»¶æ¨¡ç³ŠåŒ¹é…çš„èŠ‚ç‚¹æ•°æ® JSON 对象集åˆ</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>key</b><span>String</span></h4>
+ <p>需è¦æ¨¡ç³ŠåŒ¹é…的属性å称</p>
+ <h4 class="topLine"><b>value</b><span>String</span></h4>
+ <p>需è¦æ¨¡ç³ŠåŒ¹é…的属性值</p>
+ <p class="highlight_red">模糊匹é…åªèƒ½é’ˆå¯¹ String 类型的数æ®</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>å¯ä»¥æŒ‡å®šåœ¨æŸä¸ªçˆ¶èŠ‚点下的å­èŠ‚点中æœç´¢</p>
+ <p class="highlight_red">忽略此å‚数,表示在全部节点中æœç´¢</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>匹é…模糊æœç´¢çš„节点数æ®é›†åˆ</p>
+ <p class="highlight_red">如无结果,返回 [ ]</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 查找 name åŒ…å« "test" 的节点数æ®</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodesByParamFuzzy("name", "test", null);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getSelectedNodes.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getSelectedNodes.html
new file mode 100755
index 00000000..ab36f8ee
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getSelectedNodes.html
@@ -0,0 +1,23 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>getSelectedNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>èŽ·å– zTree 当å‰è¢«é€‰ä¸­çš„节点数æ®é›†åˆ</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>当å‰è¢«é€‰ä¸­çš„节点数æ®é›†åˆ</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 获å–当å‰è¢«é€‰ä¸­çš„节点数æ®é›†åˆ</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.hideNode.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.hideNode.html
new file mode 100755
index 00000000..a1996b88
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.hideNode.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>hideNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exhide</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>éšè—æŸä¸ªèŠ‚点。</p>
+ <p class="highlight_red">1ã€æ­¤åŠŸèƒ½ä¸æ”¯æŒ exedit 扩展,因此ä¸è¦åœ¨ç¼–辑状æ€æ—¶ä½¿ç”¨éšè—节点的方法。</p>
+ <p class="highlight_red">2ã€éšè—/显示节点,会影å“节点的 isFirstNode å’Œ isLastNode 属性。</p>
+ <p class="highlight_red">3ã€è¯·é€šè¿‡ zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>指定被éšè—的节点 JSON æ•°æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. éšè—根节点第一个节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.hideNode(nodes[0]);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.hideNodes.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.hideNodes.html
new file mode 100755
index 00000000..cf752b50
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.hideNodes.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNodes)</span><span class="path">zTreeObj.</span>hideNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exhide</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>éšè—一批节点。</p>
+ <p class="highlight_red">1ã€æ­¤åŠŸèƒ½ä¸æ”¯æŒ exedit 扩展,因此ä¸è¦åœ¨ç¼–辑状æ€æ—¶ä½¿ç”¨éšè—节点的方法。</p>
+ <p class="highlight_red">2ã€éšè—/显示节点,会影å“节点的 isFirstNode å’Œ isLastNode 属性。</p>
+ <p class="highlight_red">3ã€è¯·é€šè¿‡ zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>指定被éšè—的节点 JSON æ•°æ®é›†åˆ</p>
+ <p class="highlight_red">请务必ä¿è¯è¿™äº›èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. éšè—根节点第一个节点的å­èŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.hideNodes(nodes[0].children);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.moveNode.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.moveNode.html
new file mode 100755
index 00000000..9c9180b9
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.moveNode.html
@@ -0,0 +1,46 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(targetNode, treeNode, moveType, isSilent)</span><span class="path">zTreeObj.</span>moveNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>移动节点。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>targetNode</b><span>JSON</span></h4>
+ <p>è¦ç§»åŠ¨åˆ°çš„目标节点 JSON æ•°æ®</p>
+ <p class="highlight_red">如果移动æˆä¸ºæ ¹èŠ‚点,请设置 targetNode 为 null å³å¯</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è¢«ç§»åŠ¨çš„节点数æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>指定移动到目标节点的相对ä½ç½®</p>
+ <p class="highlight_red">"inner":æˆä¸ºå­èŠ‚点,"prev":æˆä¸ºåŒçº§å‰ä¸€ä¸ªèŠ‚点,"next":æˆä¸ºåŒçº§åŽä¸€ä¸ªèŠ‚点</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>设定移动节点åŽæ˜¯å¦è‡ªåŠ¨å±•å¼€çˆ¶èŠ‚点。</p>
+ <p>isSilent = true 时,ä¸å±•å¼€çˆ¶èŠ‚点,其他值或缺çœçŠ¶æ€éƒ½è‡ªåŠ¨å±•å¼€ã€‚</p>
+ <h4 class="topLine"><b>返回值</b><span>JSON</span></h4>
+ <p>返回值是最终被移动的节点数æ®ï¼Œæ­£å¸¸æƒ…况下与 treeNode å‚数完全相åŒ</p>
+ <p class="highlight_red">如果 返回值 为 null,说明 移动失败,主è¦åŽŸå› æœ‰ï¼š<br/>
+ &nbsp;1ã€targetNode 是 treeNode 父节点,且 moveType = "inner"<br/>
+ &nbsp;2ã€targetNode 是 treeNode å­å­™èŠ‚点
+ </p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 将根节点中第二个节点 移动æˆä¸º 第一个节点的å­èŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.moveNode(nodes[0], nodes[1], "inner");
+</code></pre>
+ <h4>2. 将根节点中第二个节点 移动æˆä¸º 第一个节点的å‰ä¸€ä¸ªèŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.moveNode(nodes[0], nodes[1], "prev");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.reAsyncChildNodes.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.reAsyncChildNodes.html
new file mode 100755
index 00000000..4a354e2f
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.reAsyncChildNodes.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(parentNode, reloadType, isSilent)</span><span class="path">zTreeObj.</span>reAsyncChildNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>强行异步加载父节点的å­èŠ‚点。<span class="highlight_red">[setting.async.enable = true 时有效]</span></p>
+ <p class="highlight_red">å·²ç»åŠ è½½è¿‡çš„父节点å¯åå¤ä½¿ç”¨æ­¤æ–¹æ³•é‡æ–°åŠ è½½ã€‚</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>parentNode</b><span>JSON</span></h4>
+ <p>指定需è¦å¼‚步加载的父节点 JSON æ•°æ®</p>
+ <p class="highlight_red">1ã€parentNode = null 时,相当于从根节点 Root 进行异步加载</p>
+ <p class="highlight_red">2ã€parentNode.isParent = false 时,ä¸è¿›è¡Œå¼‚步加载</p>
+ <p class="highlight_red">3ã€è¯·åŠ¡å¿…ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>reloadType</b><span>String</span></h4>
+ <p>reloadType = "refresh" 表示清空åŽé‡æ–°åŠ è½½ã€‚</p>
+ <p>reloadType != "refresh" 时,表示追加å­èŠ‚点处ç†ã€‚</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>设定异步加载åŽæ˜¯å¦è‡ªåŠ¨å±•å¼€çˆ¶èŠ‚点。</p>
+ <p>isSilent = true 时,ä¸å±•å¼€çˆ¶èŠ‚点,其他值或缺çœçŠ¶æ€éƒ½è‡ªåŠ¨å±•å¼€ã€‚</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. é‡æ–°å¼‚步加载 zTree </h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.reAsyncChildNodes(null, "refresh");
+</code></pre>
+ <h4>2. é‡æ–°å¼‚步加载当å‰é€‰ä¸­çš„第一个节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes.length>0) {
+ treeObj.reAsyncChildNodes(nodes[0], "refresh");
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.refresh.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.refresh.html
new file mode 100755
index 00000000..09a74ca3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.refresh.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>refresh</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>刷新 zTree 。</p>
+ <p class="highlight_red">没有特殊必è¦ï¼Œå°½é‡ä¸è¦ä½¿ç”¨æ­¤æ–¹æ³•ã€‚å•ä¸ªèŠ‚点更新请使用 updateNode 方法,异步加载模å¼ä¸‹è¯·ä½¿ç”¨ reAsyncChildNodes 方法。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 刷新 zTree </h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.refresh();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.removeChildNodes.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.removeChildNodes.html
new file mode 100755
index 00000000..588639fb
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.removeChildNodes.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(parentNode)</span><span class="path">zTreeObj.</span>removeChildNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>清空æŸçˆ¶èŠ‚点的å­èŠ‚点。</p>
+ <p class="highlight_red">1ã€æ¸…空å­èŠ‚点åŽï¼Œçˆ¶èŠ‚点会自动å˜ä¸ºå¶å­èŠ‚点,如需è¦çˆ¶èŠ‚点ä¿æŒçˆ¶èŠ‚点状æ€ï¼Œè¯·è®¾ç½® setting.data.keep.parent 属性。</p>
+ <p class="highlight_red">2ã€è¯·å‹¿ç”¨æ­¤æ–¹æ³•æ¸…空根节点,如果需è¦æ¸…空根节点,直接åˆå§‹åŒ– zTree,并且设置åˆå§‹èŠ‚点为 null å³å¯ã€‚</p>
+ <p class="highlight_red">3ã€æ­¤æ–¹æ³•ä¸ä¼šè§¦å‘任何事件回调函数。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>parentNode</b><span>JSON</span></h4>
+ <p>需è¦æ¸…空å­èŠ‚点的父节点数æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>将该父节点的å­èŠ‚点数æ®è¿”回,如果ä¸å­˜åœ¨åˆ™è¿”回 null</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 清空选中的第一个节点的å­èŠ‚点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes && nodes.length>0) {
+ treeObj.removeChildNodes(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.removeNode.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.removeNode.html
new file mode 100755
index 00000000..442f5c7e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.removeNode.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, callbackFlag)</span><span class="path">zTreeObj.</span>removeNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>删除节点。</p>
+ <p class="highlight_red">v3.x 中删除节点å¯ä»¥è§¦å‘ beforeRemove / onRemove 事件回调函数。便于å‡å°‘冗余代ç </p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è¢«åˆ é™¤çš„节点数æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>callbackFlag</b><span>Boolean</span></h4>
+ <p>callbackFlag = true è¡¨ç¤ºæ‰§è¡Œæ­¤æ–¹æ³•æ—¶è§¦å‘ beforeRemove & onRemove 事件回调函数</p>
+ <p>callbackFlag = false 表示执行此方法时ä¸è§¦å‘事件回调函数</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ false</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 删除所有选中的节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+for (var i=0, l=nodes.length; i < l; i++) {
+ treeObj.removeNode(nodes[i]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.selectNode.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.selectNode.html
new file mode 100755
index 00000000..6e80d813
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.selectNode.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, addFlag)</span><span class="path">zTreeObj.</span>selectNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>选中指定节点</p>
+ <p class="highlight_red">v3.x 支æŒåŒæ—¶é€‰ä¸­å¤šä¸ªèŠ‚点。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦è¢«é€‰ä¸­çš„节点数æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>addFlag</b><span>Boolean</span></h4>
+ <p>addFlag = true 表示追加选中,会出现多点åŒæ—¶è¢«é€‰ä¸­çš„情况</p>
+ <p>addFlag = false 表示å•ç‹¬é€‰ä¸­ï¼ŒåŽŸå…ˆè¢«é€‰ä¸­çš„节点会被å–消选中状æ€</p>
+ <p class="highlight_red">setting.view.selectedMulti = false 时,此å‚数无效,始终进行å•ç‹¬é€‰ä¸­</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. å•ç‹¬é€‰ä¸­æ ¹èŠ‚点中第一个节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+if (nodes.length>0) {
+ treeObj.selectNode(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.setChkDisabled.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.setChkDisabled.html
new file mode 100755
index 00000000..b042ab43
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.setChkDisabled.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(node, disabled, inheritParent, inheritChildren)</span><span class="path">zTreeObj.</span>setChkDisabled</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.excheck</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>ç¦ç”¨ 或 è§£ç¦ æŸä¸ªèŠ‚点的 checkbox / radio <span class="highlight_red">[setting.check.enable = true 时有效]</span></p>
+ <p class="highlight_red">1ã€èŠ‚点的 checkbox / radio 被ç¦ç”¨åŽï¼Œæ— æ³•å‹¾é€‰æˆ–å–消勾选,但能够影å“父节点的åŠé€‰çŠ¶æ€</p>
+ <p class="highlight_red">2ã€è¯·ä¸è¦ç›´æŽ¥ä¿®æ”¹å·²åŠ è½½èŠ‚点的 treeNode.chkDisabled 属性。</p>
+ <p class="highlight_red">3ã€è¯·é€šè¿‡ zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>需è¦ç¦ç”¨ 或 è§£ç¦ checkbox / radio 的节点数æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>disabled</b><span>Boolean</span></h4>
+ <p>disabled = true 表示ç¦ç”¨ checkbox / radio</p>
+ <p>disabled = false è¡¨ç¤ºè§£ç¦ checkbox / radio</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ disabled = false </p>
+ <p class="highlight_red">ä¸å½±å“ treeNode.nochecked = true 的节点。</p>
+ <h4 class="topLine"><b>inheritParent</b><span>Boolean</span></h4>
+ <p>inheritParent = true 表示全部父节点进行åŒæ ·çš„æ“作</p>
+ <p>inheritParent = false 表示ä¸å½±å“父节点</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ inheritParent = false </p>
+ <h4 class="topLine"><b>inheritChildren</b><span>Boolean</span></h4>
+ <p>inheritChildren = true 表示全部å­èŠ‚点进行åŒæ ·çš„æ“作</p>
+ <p>inheritChildren = false 表示ä¸å½±å“å­èŠ‚点</p>
+ <p class="highlight_red">çœç•¥æ­¤å‚数,等åŒäºŽ inheritChildren = false </p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. ç¦ç”¨å½“å‰é€‰ä¸­çš„节点的 checkbox / radio</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+for (var i=0, l=nodes.length; i < l; i++) {
+ treeObj.setChkDisabled(nodes[i], true);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.setEditable.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.setEditable.html
new file mode 100755
index 00000000..c90c8de6
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.setEditable.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(editable)</span><span class="path">zTreeObj.</span>setEditable</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exedit</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>设置 zTree 进入 / å–消 编辑状æ€ã€‚</p>
+ <p class="highlight_red">对于编辑状æ€çš„å„ç§åŠŸèƒ½éœ€è¦æå‰è®¾ç½®å¯¹åº” setting 中的ä¸åŒå±žæ€§</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>editable</b><span>Boolean</span></h4>
+ <p>true 表示进入 编辑状æ€</p>
+ <p>false 表示å–消 编辑状æ€</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 设置 zTree 进入编辑状æ€</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.setEditable(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.setting.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.setting.html
new file mode 100755
index 00000000..61abd531
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.setting.html
@@ -0,0 +1,13 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON</span><span class="path">zTreeObj.</span>setting</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree 对象使用的 setting é…置数æ®ï¼Œè¯¦ç»†è¯·å‚考 “setting é…置详解â€ä¸­çš„å„个属性详细说明</p>
+ <p class="highlight_red">v3.x å–消了原先æ“作 setting 的方法,让用户å¯ä»¥è¾ƒè‡ªç”±çš„修改å‚数,但请注æ„,对于 zTree åˆå§‹åŒ–有影å“çš„å‚æ•°åŽæœŸä¿®æ”¹æ˜¯ä¸ä¼šèµ·ä½œç”¨çš„,请对å„个属性有较深入的了解以åŽå†è€ƒè™‘进行修改。</p>
+ </div>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.showNode.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.showNode.html
new file mode 100755
index 00000000..ed22d510
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.showNode.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>showNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exhide</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>显示æŸä¸ªè¢«éšè—的节点。</p>
+ <p class="highlight_red">1ã€æ­¤åŠŸèƒ½ä¸æ”¯æŒ exedit 扩展,因此ä¸è¦åœ¨ç¼–辑状æ€æ—¶ä½¿ç”¨éšè—节点的方法。</p>
+ <p class="highlight_red">2ã€éšè—/显示节点,会影å“节点的 isFirstNode å’Œ isLastNode 属性。</p>
+ <p class="highlight_red">3ã€è¯·é€šè¿‡ zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>指定被显示的节点 JSON æ•°æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 显示æŸä¸ªéšè—的节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodeByParam("isHidden", true);
+if (node) {
+ treeObj.showNode(node);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.showNodes.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.showNodes.html
new file mode 100755
index 00000000..b0906574
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.showNodes.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNodes)</span><span class="path">zTreeObj.</span>showNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.exhide</span> 扩展 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>显示一批已ç»è¢«éšè—的节点。</p>
+ <p class="highlight_red">1ã€æ­¤åŠŸèƒ½ä¸æ”¯æŒ exedit 扩展,因此ä¸è¦åœ¨ç¼–辑状æ€æ—¶ä½¿ç”¨éšè—节点的方法。</p>
+ <p class="highlight_red">2ã€éšè—/显示节点,会影å“节点的 isFirstNode å’Œ isLastNode 属性。</p>
+ <p class="highlight_red">3ã€è¯·é€šè¿‡ zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>指定被显示的节点 JSON æ•°æ®é›†åˆ</p>
+ <p class="highlight_red">请务必ä¿è¯è¿™äº›èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 显示全部éšè—的节点</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodesByParam("isHidden", true);
+treeObj.showNodes(nodes);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.transformToArray.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.transformToArray.html
new file mode 100755
index 00000000..a46dc61e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.transformToArray.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNodes)</span><span class="path">zTreeObj.</span>transformToArray</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>å°† zTree 使用的标准 JSON 嵌套格å¼çš„æ•°æ®è½¬æ¢ä¸ºç®€å• Array æ ¼å¼ã€‚(å…去用户自行编写递归é历全部节点的麻烦)</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNodes</b><span>Array(JSON) / JSON</span></h4>
+ <p>需è¦è¢«è½¬æ¢çš„ zTree 节点数æ®å¯¹è±¡é›†åˆ 或 æŸä¸ªå•ç‹¬èŠ‚点的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>转æ¢åŽçš„ç®€å• Array æ•°æ®æ ¼å¼</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. å°† zTree 节点数æ®è½¬æ¢ä¸ºç®€å• Array æ ¼å¼</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.transformToArray(treeObj.getNodes());
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.transformTozTreeNodes.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.transformTozTreeNodes.html
new file mode 100755
index 00000000..8a527704
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.transformTozTreeNodes.html
@@ -0,0 +1,43 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(simpleNodes)</span><span class="path">zTreeObj.</span>transformTozTreeNodes</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>å°†ç®€å• Array æ ¼å¼æ•°æ®è½¬æ¢ä¸º zTree 使用的标准 JSON 嵌套数æ®æ ¼å¼ã€‚</p>
+ <p class="highlight_red">使用此方法,请务必设置节点唯一标识属性å称 setting.data.simpleData.idKey å’Œ 父节点唯一标识属性å称 setting.data.simpleData.pIdKey,并且让数æ®æ»¡è¶³çˆ¶å­å…³ç³»ã€‚</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>simpleNodes</b><span>Array(JSON) / JSON</span></h4>
+ <p>需è¦è¢«è½¬æ¢çš„ç®€å• Array æ ¼å¼æ•°æ® 或 æŸä¸ªå•ç‹¬çš„æ•°æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>返回值</b><span>Array(JSON)</span></h4>
+ <p>zTree 使用的标准数æ®ï¼Œå­èŠ‚点都存在于父节点数æ®çš„ children 属性中</p>
+ <p class="highlight_red">如果 simpleNodes 是一个 JSON 对象,则被简å•å°è£…æˆé•¿åº¦ä¸º 1 的数组。</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. å°†ç®€å• Array æ ¼å¼è½¬æ¢ä¸ºzTree使用的标准格å¼</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0,
+ }
+ }
+};
+var simpleNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.transformTozTreeNodes(simpleNodes);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.updateNode.html b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.updateNode.html
new file mode 100755
index 00000000..847fa6ee
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.updateNode.html
@@ -0,0 +1,37 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, checkTypeFlag)</span><span class="path">zTreeObj.</span>updateNode</h2>
+ <h3>概述<span class="h3_info">[ ä¾èµ– <span class="highlight_green">jquery.ztree.core</span> 核心 js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>æ›´æ–°æŸèŠ‚点数æ®ï¼Œä¸»è¦ç”¨äºŽè¯¥èŠ‚点显示属性的更新。</p>
+ <p class="highlight_red">1ã€å¯é’ˆå¯¹ nameã€target〠urlã€icon〠iconSkinã€checkedã€nocheck 等这几个用于显示效果的å‚数进行更新,其他用于 zTreeNodes çš„å‚数请ä¸è¦éšæ„更新,对于展开节点,还请调用 expandNode方法,因此请勿éšæ„修改 open 属性。</p>
+ <p class="highlight_red">2ã€ç”¨æ­¤æ–¹æ³•ä¿®æ”¹ checked 勾选状æ€ä¸ä¼šè§¦å‘ beforeCheck / onCheck 事件回调函数。</p>
+ <p class="highlight_red">请通过 zTree 对象执行此方法。</p>
+ </div>
+ </div>
+ <h3>Function å‚数说明</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>指定需è¦æ›´æ–°çš„节点 JSON æ•°æ®</p>
+ <p class="highlight_red">请务必ä¿è¯æ­¤èŠ‚点数æ®å¯¹è±¡ 是 zTree 内部的数æ®å¯¹è±¡</p>
+ <h4 class="topLine"><b>checkTypeFlag</b><span>Boolean</span></h4>
+ <p>checkTypeFlag = true 表示按照 setting.check.chkboxType 属性进行父å­èŠ‚点的勾选è”动æ“作</p>
+ <p>checkTypeFlag = false 表示åªä¿®æ”¹æ­¤èŠ‚点勾选状æ€ï¼Œæ— ä»»ä½•å‹¾é€‰è”动æ“作</p>
+ <p class="highlight_red">当 setting.check.enable = true 且 setting.check.chkStyle = "checkbox" æ—¶æ‰æœ‰æ•ˆ</p>
+ <p class="highlight_red">ä¸å½±å“父å­èŠ‚点中 treeNode.nochecked = true 的节点。</p>
+ <h4 class="topLine"><b>返回值</b><span>无</span></h4>
+ <p>ç›®å‰æ— ä»»ä½•è¿”回值</p>
+ </div>
+ <h3>function 举例</h3>
+ <h4>1. 更新根节点中第一个节点的å称</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+if (nodes.length>0) {
+ nodes[0].name = "test";
+ treeObj.updateNode(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree._z.html b/common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree._z.html
new file mode 100755
index 00000000..61da261d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree._z.html
@@ -0,0 +1,13 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON</span><span class="path">$.fn.zTree.</span>_z</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>All of the methods in zTree v3.x are available through the '$. fn.zTree._z' calls, open it for you to develop your own zTree plug-ins.</p>
+ <p class="highlight_red">If you have no special requirements, please don't use this object, and don't modify the methods in this object.</p>
+ </div>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree.destroy.html b/common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree.destroy.html
new file mode 100755
index 00000000..3a316999
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree.destroy.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId)</span><span class="path">$.fn.zTree.</span>destroy</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>From zTree v3.4, zTree support the method for destruction.</p>
+ <p>1. This method can destroy the zTree with specify treeId, and can destroy all of the zTrees.</p>
+ <p class="highlight_red">2. If you want to destory some one zTree, you can use the 'zTreeObj.destroy()' method.</p>
+ <p class="highlight_red">3. If you want to use the tree which has been destroyed, you must use the 'init()' method at first.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier</p>
+ <p class="highlight_red">If this parameter is omitted, then will destroy all of the zTrees.</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. destroy the zTree which its id is 'treeDemo'</h4>
+ <pre xmlns=""><code>$.fn.zTree.destroy("treeDemo");</code></pre>
+ <h4>2. destroy all of the zTrees</h4>
+ <pre xmlns=""><code>$.fn.zTree.destroy();</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree.getZTreeObj.html b/common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree.getZTreeObj.html
new file mode 100755
index 00000000..2bc04476
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree.getZTreeObj.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId)</span><span class="path">$.fn.zTree.</span>getZTreeObj</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree v3.x specifically provide the method which can use the tree's Id to get zTree object.</p>
+ <p class="highlight_red">Please initialize zTree first, then you can use this method.</p>
+ <p>Users don't need to set the global variable to hold the zTree object, and all of the callback will return 'treeId' parameters, the user can always use this method to get the zTree object.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier</p>
+ <h4 class="topLine"><b>Return </b><span>JSON</span></h4>
+ <p>zTree object</p>
+ <p>This object can provide the methods of operate the zTree</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Get the zTree object which id is 'tree'</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree.init.html b/common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree.init.html
new file mode 100755
index 00000000..cf97d2bc
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree.init.html
@@ -0,0 +1,75 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(obj, zSetting, zNodes)</span><span class="path">$.fn.zTree.</span>init</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The method which used to create zTree.</p>
+ <p>1. The web page need to use W3C markup. For example: &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"&nbsp;&nbsp; &nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</p>
+ <p>2. Need to load jquery-1.4.2.js or other higher versions.</p>
+ <p>3. Need to load jquery-ztree.core-3.0.js. If you need to use the edit mode or checkbox / radio mode, you need to load jquery-ztree.exedit-3.0.js and jquery-ztree.excheck-3.0.js.</p>
+ <p>4. Need to load zTreeStyle.css and image files</p>
+ <p>5. If you need to use custom icons, please refer to the appropriate Demo.</p>
+ <p>6. Note: You need to set zTree container's class name to "ztree". If you need to change, don't forget to modify the css file. If you need other special styles, can modify the css file to their own needs.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>object</b><span>jQuery Object</span></h4>
+ <p>DOM Container for zTree</p>
+ <h4 class="topLine"><b>zSetting</b><span>JSON</span></h4>
+ <p>zTree's configuration data, please refer to "setting details" in the API Document.</p>
+ <h4 class="topLine"><b>zNodes</b><span>Array(JSON) / JSON</span></h4>
+ <p>zTree's node data, please refer to "treeNode data details" in the API Document.</p>
+ <p class="highlight_red">1. zTree v3.x support to add single node, that is, if only to add one node, you can use JSON without using Array.</p>
+ <p class="highlight_red">2. If you need asynchronous load root nodes, can be set to null or [ ]</p>
+ <p class="highlight_red">3. If you use simple data mode, please refer to "setting.data.simpleData" in the API Document.</p>
+ <h4 class="topLine"><b>Return </b><span>JSON</span></h4>
+ <p>zTree object</p>
+ <p>This object can provide the methods of operate the zTree</p>
+ <p class="highlight_red">You can use $.fn.zTree.getZTreeObj method at any time to obtain.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. create a simple tree</h4>
+ <pre xmlns=""><code>&lt;!DOCTYPE html&gt;
+&lt;HTML&gt;
+ &lt;HEAD&gt;
+ &lt;TITLE&gt; ZTREE DEMO &lt;/TITLE&gt;
+ &lt;meta http-equiv="content-type" content="text/html; charset=UTF-8"&gt;
+ &lt;link rel="stylesheet" href="zTreeStyle/zTreeStyle.css" type="text/css"&gt;
+ &lt;script type="text/javascript" src="jquery-1.4.2.js"&gt;&lt;/script&gt;
+ &lt;script type="text/javascript" src="jquery.ztree.core-3.5.js"&gt;&lt;/script&gt;
+&lt;!--
+ &lt;script type="text/javascript" src="jquery.ztree.excheck-3.5.js"&gt;&lt;/script&gt;
+ &lt;script type="text/javascript" src="jquery.ztree.exedit-3.5.js"&gt;&lt;/script&gt;
+--&gt;
+ &lt;SCRIPT type="text/javascript" &gt;
+ var zTreeObj,
+ setting = {
+ view: {
+ selectedMulti: false
+ }
+ },
+ zTreeNodes = [
+ {"name":"Site Map", open:true, children: [
+ { "name":"google", "url":"http://www.google.com", "target":"_blank"},
+ { "name":"baidu", "url":"http://baidu.com", "target":"_blank"},
+ { "name":"sina", "url":"http://www.sina.com.cn", "target":"_blank"}
+ ]
+ }
+ ];
+
+ $(document).ready(function(){
+ zTreeObj = $.fn.zTree.init($("#tree"), setting, zTreeNodes);
+
+ });
+ &lt;/SCRIPT&gt;
+ &lt;/HEAD&gt;
+
+&lt;BODY&gt;
+&lt;ul id="tree" class="ztree" style="width:230px; overflow:auto;"&gt;&lt;/ul&gt;
+ &lt;/BODY&gt;
+&lt;/HTML&gt;</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.autoParam.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.autoParam.html
new file mode 100755
index 00000000..85cd4691
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.autoParam.html
@@ -0,0 +1,39 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Array(String)</span><span class="path">setting.async.</span>autoParam</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Required automatically submit the parameters about the properties of the parent node, when the asynchronous load. It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p>Default:[ ]</p>
+ </div>
+ </div>
+ <h3>Array(String) Format</h3>
+ <div class="desc">
+ <p>1. Just save the attribute name of node to the array. For example: ["id", "name"]</p>
+ <p>2. You can change the parameter name. For example: server only accepts "zId" -- ["id=zId"]</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. set auto commit 'id' attribute</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ autoParam: ["id"]
+ }
+};
+If have the parent node: {id:1, name:"test"}, When asynchronously load this parent node's child nodes, will be submitted parameters: id=1
+......</code></pre>
+ <h4>2. set auto commit 'id' attribute, but parameter name is 'zId'</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ autoParam: ["id=zId"]
+ }
+};
+If have the parent node: {id:1, name:"test"}, When asynchronously load this parent node's child nodes, will be submitted parameters: zId=1
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.contentType.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.contentType.html
new file mode 100755
index 00000000..cc9bfcd3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.contentType.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.async.</span>contentType</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When Ajax sending data to the server, use this content-type. It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p>Default:"application/x-www-form-urlencoded"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p> contentType = "application/x-www-form-urlencoded", means: the sending data format is "form" format.</p>
+ <p> contentType = "application/json", means: the sending data format is "json" format. (for .Net)</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. set the sending data format to "json" format.</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ contentType: "application/json",
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.dataFilter.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.dataFilter.html
new file mode 100755
index 00000000..34733e4d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.dataFilter.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, parentNode, responseData)</span><span class="path">setting.async.</span>dataFilter</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Function used to pre-process for the return data of Ajax. It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>Parent node's JSON data object</p>
+ <p class="highlight_red">When asynchronously loading the root, the parentNode = null</p>
+ <h4 class="topLine"><b>responseData</b><span>Array(JSON) / JSON / String</span></h4>
+ <p>Ajax got Array (JSON) / JSON / String data objects</p>
+ <p class="highlight_red">From v3.4, support the string with XML format.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON) / JSON</span></h4>
+ <p>The return value should be the JSON data structure which is supported by the zTree.</p>
+ <p class="highlight_red">v3.x supports to load single node JSON data object.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Modify the node name attribute which is ajax got.</h4>
+ <pre xmlns=""><code>function ajaxDataFilter(treeId, parentNode, responseData) {
+ if (responseData) {
+ for(var i =0; i < responseData.length; i++) {
+ responseData[i].name += "_filter";
+ }
+ }
+ return responseData;
+};
+var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ dataFilter: ajaxDataFilter
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.dataType.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.dataType.html
new file mode 100755
index 00000000..e6672e9b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.dataType.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.async.</span>dataType</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The data type of Ajax. It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p>Default:"text"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p> dataType = "text", It can meet most of the needs.</p>
+ <p class="highlight_red">The 'dataType' in zTree and jQuery's ajax is same.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the dataType which ajax got is text.</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ dataType: "text",
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.enable.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.enable.html
new file mode 100755
index 00000000..806ba6c6
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.enable.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.async.</span>enable</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set zTree asynchronous loading mode is turned on or off.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true - turn on asynchronous loading mode</p>
+ <p> false - turn off asynchronous loading mode</p>
+ <p class="highlight_red">If set it is true, you must set attributes in setting.async</p>
+ <p class="highlight_red">If you don't pass 'treeNodes' parameter when initialize zTree, the root nodes will get by ajax.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Turn on asynchronous loading mode</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.otherParam.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.otherParam.html
new file mode 100755
index 00000000..2e37390a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.otherParam.html
@@ -0,0 +1,40 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Array(String) / JSON</span><span class="path">setting.async.</span>otherParam</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The static parameters of the Ajax request. (key - value) It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p>Default: [ ]</p>
+ </div>
+ </div>
+ <h3>Array(String) Format</h3>
+ <div class="desc">
+ <p>Can be empty array. e.g. [ ]. If set key, you must set value, e.g. [key, value]. ([key] or [key, value, key] is wrong!!)</p>
+ </div>
+ <h3>JSON Format</h3>
+ <div class="desc">
+ <p>Use JSON data format set the key-value. e.g. { key1:value1, key2:value2 }</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Use Array(String) Format</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ otherParam: ["id", "1", "name", "test"]
+ }
+};
+when zTree send ajax, the parameters will has: id=1&name=test</code></pre>
+ <h4>2. Use JSON data Format</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "http://host/getNode.php",
+ otherParam: { "id":"1", "name":"test"}
+ }
+};
+when zTree send ajax, the parameters will has: id=1&name=test</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.type.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.type.html
new file mode 100755
index 00000000..ae543388
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.type.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.async.</span>type</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Http request mode in ajax. It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p>Defalut: "post"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p> "post" - http request mode</p>
+ <p> "get" - http request mode</p>
+ <p class="highlight_red">The 'type' in zTree and jQuery's ajax is same.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set http request mode is 'get'</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ type: "get",
+ url: "http://host/getNode.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.url.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.url.html
new file mode 100755
index 00000000..5587f294
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.async.url.html
@@ -0,0 +1,50 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Function(treeId, treeNode)</span><span class="path">setting.async.</span>url</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The URL to which the ajax request is sent. It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p>Default: ""</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>A url string(e.g. "http://www.domain.com"). Note: please ensure that the url can be loaded</p>
+ <p class="highlight_red">Url can also take parameters, please note that transcode.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>Parent node's JSON data object</p>
+ <p class="highlight_red">When asynchronously loading the root, the treeNode = null</p>
+ <h4 class="topLine"><b>Return </b><span>String</span></h4>
+ <p>Return value is same as 'String Format'</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. set ajax url is "nodes.php"</h4>
+ <pre xmlns=""><code>var setting = {
+ async: {
+ enable: true,
+ url: "nodes.php",
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+ <h4>2. set ajax url is "function"</h4>
+ <pre xmlns=""><code>function getAsyncUrl(treeId, treeNode) {
+ return treeNode.isParent ? "nodes1.php" : "nodes2.php";
+};
+var setting = {
+ async: {
+ enable: true,
+ url: getAsyncUrl,
+ autoParam: ["id", "name"]
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeAsync.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeAsync.html
new file mode 100755
index 00000000..6563ff29
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeAsync.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeAsync</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before zTree execute ajax, zTree based on return value to determine whether to execute ajax.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the parent node</p>
+ <p class="highlight_red">When asynchronously loading the root, the treeNode = null</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not execute ajax, and will not trigger the 'onAsyncSuccess / onAsyncError' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. If the parent node's attribute 'id' is 1, zTree will not execute ajax.</h4>
+ <pre xmlns=""><code>function zTreeBeforeAsync(treeId, treeNode) {
+ return (treeNode.id !== 1);
+};
+var setting = {
+ callback: {
+ beforeAsync: zTreeBeforeAsync
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeCheck.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeCheck.html
new file mode 100755
index 00000000..5260412b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeCheck.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeCheck</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before check or uncheck node, zTree based on return value to determine whether to change check state.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is checked or unchecked</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not change check state, and will not trigger the 'onCheck' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to change check state of all nodes, and keep the check state initialization</h4>
+ <pre xmlns=""><code>function zTreeBeforeCheck(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeCheck: zTreeBeforeCheck
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeClick.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeClick.html
new file mode 100755
index 00000000..32ddbf77
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeClick.html
@@ -0,0 +1,49 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode, clickFlag)</span><span class="path">setting.callback.</span>beforeClick</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before click node, zTree based on return value to determine whether to trigger the 'onClick' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is clicked</p>
+ <h4 class="topLine"><b>clickFlag</b><span>Number</span></h4>
+ <p>Node is selected or deselected state, please see table below for details</p>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead><tr><td>clickFlag</td><td title="Whether to allow multi-select">selectedMulti</td><td title="Whether to press Ctrl-key or Cmd-key">autoCancelSelected<br/>&&<br/>event.ctrlKey / metaKey</td><td title="Node's selection state">isSelected</td><td>operate for selected</td></tr></thead>
+ <tbody>
+ <tr><td>1</td><td>true</td><td>false</td><td>false</td><td>node is selected (single)</td></tr>
+ <tr><td>1</td><td>true</td><td>false</td><td>true</td><td>node is selected (single)</td></tr>
+ <tr><td>2</td><td>true</td><td>true</td><td>false</td><td>node is selected (multi)</td></tr>
+ <tr><td>0</td><td>true</td><td>true</td><td>true</td><td>node is deselected</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>false</td><td>node is selected (single)</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>true</td><td>node is selected (single)</td></tr>
+ <tr><td>1</td><td>false</td><td>true</td><td>false</td><td>node is selected (single)</td></tr>
+ <tr><td>0</td><td>false</td><td>true</td><td>true</td><td>node is deselected</td></tr>
+ </tbody>
+ </table>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not change selected state, and will not trigger the 'onClick' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disabled to click the node</h4>
+ <pre xmlns=""><code>function zTreeBeforeClick(treeId, treeNode, clickFlag) {
+ return (treeNode.id !== 1);
+};
+var setting = {
+ callback: {
+ beforeClick: zTreeBeforeClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeCollapse.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeCollapse.html
new file mode 100755
index 00000000..b2713e8a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeCollapse.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeCollapse</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before collapse node, zTree based on return value to determine whether to collapse node.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be collapsed</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not collapse node, and will not trigger the 'onCollapse' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disabled to collapse node which is expanded</h4>
+ <pre xmlns=""><code>function zTreeBeforeCollapse(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeCollapse: zTreeBeforeCollapse
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDblClick.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDblClick.html
new file mode 100755
index 00000000..6f1c743e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDblClick.html
@@ -0,0 +1,36 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeDblClick</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the dblclick event before the 'onDblClick' callback, zTree based on return value to determine whether to trigger the 'onDblClick' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is double clicked</p>
+ <p class="highlight_red">If the DOM which dblclicked isn't a node, it will return null.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, ztree will not trigger the 'onDblClick' callback, no effect on other operations.</p>
+ <p class="highlight_red">This callback function does not affect the dblclick the parent node to auto expand, please refer to setting.view.dblClickExpand properties.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to trigger the 'onDblClick' callback</h4>
+ <pre xmlns=""><code>function zTreeBeforeDblClick(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeDblClick: zTreeBeforeDblClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDrag.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDrag.html
new file mode 100755
index 00000000..51752448
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDrag.html
@@ -0,0 +1,39 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNodes)</span><span class="path">setting.callback.</span>beforeDrag</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before drag node, zTree based on return value to determine whether to start to drag node.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, the tree is what the treeNodes are belong to, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which will be dragged</p>
+ <p class="highlight_red">v3.x allows drag and drop multiple sibling nodes, so this parameter is modified to Array(JSON).</p>
+ <p class="highlight_red">If the selected nodes aren't the sibling nodes, you can only drag one node which mouse over.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will stop drag, and will not trigger the 'onDrag / beforeDrop / onDrop' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to drag all node</h4>
+ <pre xmlns=""><code>function zTreeBeforeDrag(treeId, treeNodes) {
+ return false;
+};
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeDrag: zTreeBeforeDrag
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDragOpen.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDragOpen.html
new file mode 100755
index 00000000..ed1ae978
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDragOpen.html
@@ -0,0 +1,37 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeDragOpen</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when drag node to collapsed parent node, zTree based on return value to determine whether to auto expand parent node.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, the tree is what the treeNode(parent node) is belong to, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the parent node which will be auto expanded</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not auto expand parent node.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to auto expand parent node.</h4>
+ <pre xmlns=""><code>function zTreeBeforeDragOpen(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeDragOpen: zTreeBeforeDragOpen
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDrop.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDrop.html
new file mode 100755
index 00000000..70143211
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDrop.html
@@ -0,0 +1,50 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNodes, targetNode, moveType, isCopy)</span><span class="path">setting.callback.</span>beforeDrop</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before drag-drop node, zTree based on return value to determine whether to allow drag-drop node.</p>
+ <p>Default: null</p>
+ <p class="highlight_red">When drop the nodes, if the dragged nodes is not in a valid location, this callback will not triggered, and will restore the original position.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, the tree is what the targetNode is belong to, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which has been dragged</p>
+ <p class="highlight_red">The treeNodes are the data of the nodes which has been dragged, when copy nodes or move nodes.</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>JSON data object of the target node which treeNodes are drag-dropped.</p>
+ <p class="highlight_red">If the treeNodes will be root node, the targetNode = null</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>the relative position of move to the target node</p>
+ <p class="highlight_red">"inner": will be child of targetNode</p>
+ <p class="highlight_red">"prev": will be sibling node, and be in front of targetNode</p>
+ <p class="highlight_red">"next": will be sibling node, and be behind targetNode</p>
+ <h4 class="topLine"><b>isCopy</b><span>Boolean</span></h4>
+ <p>the flag used to judge copy node or move node</p>
+ <p class="highlight_red">true: copy node; false: move node</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will restore the dragged nodes, and will not trigger the 'onDrop' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to drag nodes to root</h4>
+ <pre xmlns=""><code>function zTreeBeforeDrop(treeId, treeNodes, targetNode, moveType) {
+ return !(targetNode == null || (moveType != "inner" && !targetNode.parentTId));
+};
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeDrop: zTreeBeforeDrop
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeEditName.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeEditName.html
new file mode 100755
index 00000000..8772a3e9
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeEditName.html
@@ -0,0 +1,38 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeEditName</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before click edit button, zTree based on return value to determine whether to allow to edit the name.</p>
+ <p class="highlight_red">This callback is used to capture the event which edit button is clicked, then trigger the custom editing operation.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be edited name.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, the node will not be able to edit the name.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to edit the parent node's name</h4>
+ <pre xmlns=""><code>function zTreeBeforeEditName(treeId, treeNode) {
+ return !treeNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeEditName: zTreeBeforeEditName
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeExpand.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeExpand.html
new file mode 100755
index 00000000..73cf55a3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeExpand.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeExpand</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before expand node, zTree based on return value to determine whether to expand node.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be expanded</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not expand node, and will not trigger the 'onExpand' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disabled to expand node which is collapsed</h4>
+ <pre xmlns=""><code>function zTreeBeforeExpand(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeExpand: zTreeBeforeExpand
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeMouseDown.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeMouseDown.html
new file mode 100755
index 00000000..4af0818b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeMouseDown.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeMouseDown</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the mousedown event before the 'onMouseDown' callback, zTree based on return value to determine whether to trigger the 'onMouseDown' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which mouse over</p>
+ <p class="highlight_red">If the DOM which mouse over isn't a node, it will return null.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not trigger the 'onMouseDown' callback, no effect on other operations.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to trigger the 'onMouseDown' callback</h4>
+ <pre xmlns=""><code>function zTreeBeforeMouseDown(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeMouseDown: zTreeBeforeMouseDown
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeMouseUp.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeMouseUp.html
new file mode 100755
index 00000000..0c008fc4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeMouseUp.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeMouseUp</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the mouseup event before the 'onMouseUp' callback, zTree based on return value to determine whether to trigger the 'onMouseUp' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which mouse over</p>
+ <p class="highlight_red">If the DOM which mouse over isn't a node, it will return null.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not trigger the 'onMouseUp' callback, no effect on other operations.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to trigger the 'onMouseUp' callback</h4>
+ <pre xmlns=""><code>function zTreeBeforeMouseUp(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeMouseUp: zTreeBeforeMouseUp
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeRemove.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeRemove.html
new file mode 100755
index 00000000..38e14c19
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeRemove.html
@@ -0,0 +1,37 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeRemove</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before remove node, zTree based on return value to determine whether to allow to remove node.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be removed.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, zTree will not remove node, and will not trigger the 'onRemove' callback.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to remove node</h4>
+ <pre xmlns=""><code>function zTreeBeforeRemove(treeId, treeNode) {
+ return false;
+}
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeRemove: zTreeBeforeRemove
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeRename.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeRename.html
new file mode 100755
index 00000000..76438a94
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeRename.html
@@ -0,0 +1,46 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode, newName, isCancel)</span><span class="path">setting.callback.</span>beforeRename</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event before rename(when input DOM blur or press Enter Key), zTree based on return value to determine whether to allow to rename node.</p>
+ <p class="highlight_red">When node is editing name, press the ESC key to restore the original name and stop edit name.</p>
+ <p class="highlight_red">From v3.5.13, zTree will trigger this callback when user cancel edit name. please see 'isCancel' parameter.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be rename.</p>
+ <h4 class="topLine"><b>newName</b><span>String</span></h4>
+ <p>the new name</p>
+ <h4 class="topLine"><b>isCancel</b><span>Boolean</span></h4>
+ <p>the status about cancel edit name (v3.5.13+)</p>
+ <p class="highlight_red">isCancel = true means: user cancel edit name. (press ESC or use cancelEditName() function)</p>
+ <p class="highlight_red">isCancel = false means: user submit edit name.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, the treeNode will keep the editing name, don't trigger the 'onRename' callback, and will ignore other enents, until the callback return true.</p>
+ <p class="highlight_red">If returns false, zTree will not set the input box to get focus to avoid the warning message which led to repeated triggering ‘beforeRename’ callback. Please use editName() method to set the input box to get focus when user close the warning message.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. the length of the new name can't less than 5</h4>
+ <pre xmlns=""><code>function zTreeBeforeRename(treeId, treeNode, newName, isCancel) {
+ return newName.length > 5;
+}
+var setting = {
+ edit: {
+ enable: true
+ },
+ callback: {
+ beforeRename: zTreeBeforeRename
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeRightClick.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeRightClick.html
new file mode 100755
index 00000000..15c38cd5
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeRightClick.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.callback.</span>beforeRightClick</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the right click event before the 'onRightClick' callback, zTree based on return value to determine whether to trigger the 'onRightClick' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is mouse right clicked</p>
+ <p class="highlight_red">If the DOM which mouse right clicked isn't a node, it will return null.</p>
+ <h4 class="topLine"><b>Return</b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ <p class="highlight_red">If return false, ztree will not trigger the 'onRightClick' callback, no effect on other operations.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to trigger the 'onRightClick' callback</h4>
+ <pre xmlns=""><code>function zTreeBeforeRightClick(treeId, treeNode) {
+ return false;
+};
+var setting = {
+ callback: {
+ beforeRightClick: zTreeBeforeRightClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onAsyncError.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onAsyncError.html
new file mode 100755
index 00000000..785c8d82
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onAsyncError.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span class="path">setting.callback.</span>onAsyncError</h2>
+ <h2><span>Function(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown)</span>&nbsp;</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the error event when execute ajax.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeAsync',and return false, zTree will not execute ajax, and will not trigger the 'onAsyncSuccess / onAsyncError' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the parent node</p>
+ <p class="highlight_red">When load root nodes, treeNode = null</p>
+ <h4 class="topLine"><b>XMLHttpRequest</b><span>String</span></h4>
+ <p>XMLHttpRequest Object, please refer to JQuery API documentation.</p>
+ <h4 class="topLine"><b>textStatus</b><span>String</span></h4>
+ <p>a string categorizing the status of the request("success", "error"...), please refer to JQuery API documentation.</p>
+ <h4 class="topLine"><b>errorThrown</b><span>String</span></h4>
+ <p>eWhen an HTTP error occurs, errorThrown receives the textual portion of the HTTP status, please refer to JQuery API documentation.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When execute ajax make error, alert message.</h4>
+ <pre xmlns=""><code>function zTreeOnAsyncError(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown) {
+ alert(XMLHttpRequest);
+};
+var setting = {
+ callback: {
+ onAsyncError: zTreeOnAsyncError
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onAsyncSuccess.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onAsyncSuccess.html
new file mode 100755
index 00000000..2722691f
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onAsyncSuccess.html
@@ -0,0 +1,38 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode, msg)</span><span class="path">setting.callback.</span>onAsyncSuccess</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the complete success event when execute ajax.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeAsync',and return false, zTree will not execute ajax, and will not trigger the 'onAsyncSuccess / onAsyncError' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the parent node</p>
+ <p class="highlight_red">When load root nodes, treeNode = null</p>
+ <h4 class="topLine"><b>msg</b><span>String / Object</span></h4>
+ <p>The actualnode data which got by ajax. User-friendly debugging.</p>
+ <p class="highlight_red">The actual data's type of msg is affected by 'setting.async.dataType', please refer to JQuery API documentation.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When execute ajax complete success, alert message.</h4>
+ <pre xmlns=""><code>function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) {
+ alert(msg);
+};
+var setting = {
+ callback: {
+ onAsyncSuccess: zTreeOnAsyncSuccess
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onCheck.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onCheck.html
new file mode 100755
index 00000000..ed33f8d1
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onCheck.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onCheck</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the check or uncheck event when check or uncheck the checkbox and radio.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeCheck',and return false, zTree will not change check state, and will not trigger the 'onCheck' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is checked or unchecked</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When check or uncheck the checkbox and radio, alert info about 'tId' and 'name' and 'checked'.</h4>
+ <pre xmlns=""><code>function zTreeOnCheck(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name + "," + treeNode.checked);
+};
+var setting = {
+ callback: {
+ onCheck: zTreeOnCheck
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onClick.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onClick.html
new file mode 100755
index 00000000..0453af85
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onClick.html
@@ -0,0 +1,49 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode, clickFlag)</span><span class="path">setting.callback.</span>onClick</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the click event when click node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeClick',and return false, zTree will not change selected state, and will not trigger the 'onClick' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is clicked</p>
+ <h4 class="topLine"><b>clickFlag</b><span>Number</span></h4>
+ <p>Node is selected or deselected state, please see table below for details</p>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead><tr><td>clickFlag</td><td title="Whether to allow multi-select">selectedMulti</td><td title="Whether to press Ctrl-key or Cmd-key">autoCancelSelected<br/>&&<br/>event.ctrlKey / metaKey</td><td title="Node's selection state">isSelected</td><td>operate for selected</td></tr></thead>
+ <tbody>
+ <tr><td>1</td><td>true</td><td>false</td><td>false</td><td>node is selected (single)</td></tr>
+ <tr><td>1</td><td>true</td><td>false</td><td>true</td><td>node is selected (single)</td></tr>
+ <tr><td>2</td><td>true</td><td>true</td><td>false</td><td>node is selected (multi)</td></tr>
+ <tr><td>0</td><td>true</td><td>true</td><td>true</td><td>node is deselected</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>false</td><td>node is selected (single)</td></tr>
+ <tr><td>1</td><td>false</td><td>false</td><td>true</td><td>node is selected (single)</td></tr>
+ <tr><td>1</td><td>false</td><td>true</td><td>false</td><td>node is selected (single)</td></tr>
+ <tr><td>0</td><td>false</td><td>true</td><td>true</td><td>node is deselected</td></tr>
+ </tbody>
+ </table>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When click node, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnClick(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onClick: zTreeOnClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onCollapse.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onCollapse.html
new file mode 100755
index 00000000..d605dc8e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onCollapse.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onCollapse</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when collapse node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeCollapse',and return false, zTree will not collapse node, and will not trigger the 'onCollapse' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be collapsed</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When collapse node, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnCollapse(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onCollapse: zTreeOnCollapse
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDblClick.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDblClick.html
new file mode 100755
index 00000000..fbd47e8d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDblClick.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onDblClick</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the dblclick event when double click node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeDblClick',and return false, zTree will not trigger the 'onDblClick' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is double clicked</p>
+ <p class="highlight_red">If the DOM which dblclicked isn't a node, it will return null.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When double click node, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnDblClick(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onDblClick: zTreeOnDblClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDrag.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDrag.html
new file mode 100755
index 00000000..d178b635
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDrag.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNodes)</span><span class="path">setting.callback.</span>onDrag</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the drag event when drag node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeDrag',and return false, zTree will stop drag, and will not trigger the 'onDragMove' & 'onDrag' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, the tree is what the treeNodes are belong to, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which will be dragged</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When drag nodes, alert the number of dragged nodes.</h4>
+ <pre xmlns=""><code>function zTreeOnDrag(event, treeId, treeNodes) {
+ alert(treeNodes.length);
+};
+var setting = {
+ callback: {
+ onDrag: zTreeOnDrag
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDragMove.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDragMove.html
new file mode 100755
index 00000000..a56e8353
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDragMove.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNodes)</span><span class="path">setting.callback.</span>onDragMove</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the drag-move event when drag & drop node.</p>
+ <p class="highlight_red">Mainly used to capture the DOM which the nodes was drag in. </p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, the tree is what the treeNodes are belong to, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which will be dragged</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When drag nodes, output the target dom.</h4>
+ <pre xmlns=""><code>function zTreeOnDragMove(event, treeId, treeNodes) {
+ console.log(event.target);
+};
+var setting = {
+ callback: {
+ onDragMove: zTreeOnDragMove
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDrop.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDrop.html
new file mode 100755
index 00000000..63624631
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDrop.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNodes, targetNode, moveType, isCopy)</span><span class="path">setting.callback.</span>onDrop</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the drop event when drag-drop node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeDrop',and return false, zTree will restore the dragged nodes, and will not trigger the 'onDrop' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, the tree is what the targetNode is belong to, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which has been dragged</p>
+ <p class="highlight_red">The treeNodes are the data of the nodes which be dragged, when move nodes.</p>
+ <p class="highlight_red">The treeNodes are the clone data of the nodes which be dragged, when copy nodes.</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>JSON data object of the target node which treeNodes are drag-dropped.</p>
+ <p class="highlight_red">If the treeNodes will be root node, the targetNode = null</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>the relative position of move to the target node</p>
+ <p class="highlight_red">"inner": will be child of targetNode</p>
+ <p class="highlight_red">"prev": will be sibling node, and be in front of targetNode</p>
+ <p class="highlight_red">"next": will be sibling node, and be behind targetNode</p>
+ <p class="highlight_red">If moveType is null, means drag & drop is cancel.</p>
+ <h4 class="topLine"><b>isCopy</b><span>Boolean</span></h4>
+ <p>the flag used to judge copy node or move node</p>
+ <p class="highlight_red">true: copy node; false: move node</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When drag-drop nodes complete, alert the number of dragged nodes and info about targetNode.</h4>
+ <pre xmlns=""><code>function zTreeOnDrop(event, treeId, treeNodes, targetNode, moveType) {
+ alert(treeNodes.length + "," + (targetNode ? (targetNode.tId + ", " + targetNode.name) : "isRoot" ));
+};
+var setting = {
+ callback: {
+ onDrop: zTreeOnDrop
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onExpand.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onExpand.html
new file mode 100755
index 00000000..7b9d8d50
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onExpand.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onExpand</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when expand node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeExpand',and return false, zTree will not expand node, and will not trigger the 'onExpand' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be expanded</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When expand node, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnExpand(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onExpand: zTreeOnExpand
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onMouseDown.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onMouseDown.html
new file mode 100755
index 00000000..bfd714c2
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onMouseDown.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onMouseDown</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when mouse down.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeMouseDown',and return false, zTree will not trigger the 'onMouseDown' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which mouse over</p>
+ <p class="highlight_red">If the DOM which mouse over isn't a node, it will return null.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When mouse down, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnMouseDown(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onMouseDown: zTreeOnMouseDown
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onMouseUp.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onMouseUp.html
new file mode 100755
index 00000000..93edf319
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onMouseUp.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onMouseUp</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when mouse up.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeMouseUp',and return false, zTree will not trigger the 'onMouseUp' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which mouse over</p>
+ <p class="highlight_red">If the DOM which mouse over isn't a node, it will return null.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When mouse up, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnMouseUp(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onMouseUp: zTreeOnMouseUp
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onNodeCreated.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onNodeCreated.html
new file mode 100755
index 00000000..a98b572f
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onNodeCreated.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onNodeCreated</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when node's DOM is created.</p>
+ <p class="highlight_red">Because v3.x uses lazy loading technology, so the nodes which doesn't create DOM when initialized will not trigger this callback, until its parent node is expanded.</p>
+ <p class="highlight_red">Large amount of data to load, please note: do not set onNodeCreated, can improve performance as when initialized.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which DOM is created</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When node's DOM is created, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnNodeCreated(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+};
+var setting = {
+ callback: {
+ onNodeCreated: zTreeOnNodeCreated
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onRemove.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onRemove.html
new file mode 100755
index 00000000..ce294136
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onRemove.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onRemove</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when remove node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeRemove',and return false, zTree will not remove node, and will not trigger the 'onRemove' callback.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which was removed.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When remove node, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnRemove(event, treeId, treeNode) {
+ alert(treeNode.tId + ", " + treeNode.name);
+}
+var setting = {
+ callback: {
+ onRemove: zTreeOnRemove
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onRename.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onRename.html
new file mode 100755
index 00000000..cd47eae1
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onRename.html
@@ -0,0 +1,40 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode, isCancel)</span><span class="path">setting.callback.</span>onRename</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when remove node.</p>
+ <p class="highlight_red">1. If you set 'setting.callback.beforeRename',and return false, zTree will keep the editing name, and will not trigger the 'onRename' callback.</p>
+ <p class="highlight_red">2. If you modity treeNode data, and use 'updateNode' function, zTree will not trigger the 'onRename' callback.</p>
+ <p class="highlight_red">3. From v3.5.13, zTree will trigger this callback when user cancel edit name. please see 'isCancel' parameter.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which was rename.</p>
+ <h4 class="topLine"><b>isCancel</b><span>Boolean</span></h4>
+ <p>the status about cancel edit name (v3.5.13+)</p>
+ <p class="highlight_red">isCancel = true means: user cancel edit name. (press ESC or use cancelEditName() function)</p>
+ <p class="highlight_red">isCancel = false means: user submit edit name.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When rename node, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnRename(event, treeId, treeNode, isCancel) {
+ alert(treeNode.tId + ", " + treeNode.name);
+}
+var setting = {
+ callback: {
+ onRename: zTreeOnRename
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onRightClick.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onRightClick.html
new file mode 100755
index 00000000..86b4b012
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onRightClick.html
@@ -0,0 +1,36 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(event, treeId, treeNode)</span><span class="path">setting.callback.</span>onRightClick</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to capture the event when mouse right click node.</p>
+ <p class="highlight_red">If you set 'setting.callback.beforeRightClick',and return false, zTree will not trigger the 'onRightClick' callback.</p>
+ <p class="highlight_red">If you set 'setting.callback.onRightClick', zTree will shield the browser context menu when mouse right click on zTree.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>event</b><span>js event Object</span></h4>
+ <p>event Object</p>
+ <h4 class="topLine"><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which is mouse right clicked</p>
+ <p class="highlight_red">If the DOM which mouse right clicked isn't a node, it will return null.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. When mouse right click node, alert info about 'tId' and 'name'.</h4>
+ <pre xmlns=""><code>function zTreeOnRightClick(event, treeId, treeNode) {
+ alert(treeNode ? treeNode.tId + ", " + treeNode.name : "isRoot");
+};
+var setting = {
+ callback: {
+ onRightClick: zTreeOnRightClick
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.autoCheckTrigger.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.autoCheckTrigger.html
new file mode 100755
index 00000000..b8b04cca
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.autoCheckTrigger.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>autoCheckTrigger</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When node is automatically checked or unchecked, this parameter used to set to trigger 'beforeCheck / onCheck' callback. It is valid when <span class="highlight_red">[setting.check.enable = true & setting.check.chkStyle = "checkbox"]</span></p>
+ <p class="highlight_red">1. If you set 'setting.check.chkboxType' to { "Y": "", "N": "" }, will not automatically checked or unchecked.</p>
+ <p class="highlight_red">2. If you turn on the trigger and there are many more nodes, will affect the performance, because the check or uncheck node can cause many nodes to be automatically checked or unchecked, it will trigger a lot of callbacks, according to the need to decide whether to use this feature.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: trigger callback</p>
+ <p> false means: don't trigger callback</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. When node is automatically checked or unchecked, zTree trigger 'beforeCheck / onCheck' callback.</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ autoCheckTrigger: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.chkDisabledInherit.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.chkDisabledInherit.html
new file mode 100755
index 00000000..98d824e4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.chkDisabledInherit.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>chkDisabledInherit</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When the parent node's 'chkDisabled' attribute is true, set the child nodes automatically inherit the 'chkDisabled' attribute. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">1. Only be used to initialize the nodes, easy batch operations. Please use the 'updateNode' method modify existing node.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: When add new child nodes, if parent node's 'chkDisabled' attribute is true, the child nodes automatically inherit the 'chkDisabled' attribute.</p>
+ <p> false means: When add new child nodes, the child nodes don't inherit the 'chkDisabled' attribute from parent node.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. When add new child nodes, the child nodes automatically inherit the 'chkDisabled' attribute from parent node.</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkDisabledInherit: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.chkStyle.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.chkStyle.html
new file mode 100755
index 00000000..d42e757a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.chkStyle.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.check.</span>chkStyle</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Use the checkbox or radio. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p>Default: "checkbox"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>When chkStyle = "checkbox", zTree show checkbox, and '<span class="highlight_red">setting.check.chkboxType</span>' attribute is valid.
+<br/>When chkStyle = "radio", zTree show radio, and '<span class="highlight_red">setting.check.radioType</span>' attribute is valid.</p>
+ <p class="highlight_red">Please note that letter case, do not change.</p>
+ </div>
+ <h3>checkbox States Descriptions</h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p><button type="button" class="chk checkbox_false_full"></button>not checked; <span class="highlight_red">If node is parent, so its child nodes have been not checked.</span> when mouse over: <button type="button" class="chk checkbox_false_full_focus"></button></p>
+ <p><button type="button" class="chk checkbox_false_part"></button>not checked; (only parent node) <span class="highlight_red">some of its child nodes have been checked.</span> when mouse over: <button type="button" class="chk checkbox_false_part_focus"></button></p>
+ <p><button type="button" class="chk checkbox_true_full"></button>be checked; <span class="highlight_red">If node is parent, so its all child nodes have been checked.</span> when mouse over: <button type="button" class="chk checkbox_true_full_focus"></button></p>
+ <p><button type="button" class="chk checkbox_true_part"></button>be checked; (only parent node) <span class="highlight_red">some of its child nodes or all have been not checked.</span> when mouse over: <button type="button" class="chk checkbox_true_part_focus"></button></p>
+ </div>
+ </div>
+ <h3>radio States Descriptions</h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p><button type="button" class="chk radio_false_full"></button>not checked; <span class="highlight_red">If node is parent, so its child have been not checked.</span> when mouse over: <button type="button" class="chk radio_false_full_focus"></button></p>
+ <p><button type="button" class="chk radio_false_part"></button>not checked; (only parent node) <span class="highlight_red">some of its child have been checked.</span> when mouse over: <button type="button" class="chk radio_false_part_focus"></button></p>
+ <p><button type="button" class="chk radio_true_full"></button>be checked; <span class="highlight_red">If node is parent, so its child have been not checked.</span> when mouse over: <button type="button" class="chk radio_true_full_focus"></button></p>
+ <p><button type="button" class="chk radio_true_part"></button>be checked; (only parent node) <span class="highlight_red">some of its child have been checked.</span> when mouse over: <button type="button" class="chk radio_true_part_focus"></button></p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. use radio</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkStyle: "radio"
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.chkboxType.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.chkboxType.html
new file mode 100755
index 00000000..5cecc9ee
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.chkboxType.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON</span><span class="path">setting.check.</span>chkboxType</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When one node is checked or unchecked, control its parent node and its child node auto checked or unchecked. It is valid when <span class="highlight_red">[setting.check.enable = true &amp; setting.check.chkStyle = "checkbox"]</span></p>
+ <p>Default: { "Y": "ps", "N": "ps" }</p>
+ </div>
+ </div>
+ <h3>JSON Format</h3>
+ <div class="desc">
+ <p>"Y" attribute use to set auto check after checkbox was checked.
+<br/>"N" attribute use to set auto uncheck after checkbox was unchecked.
+<br/>If value has "p", so parent nodes will be checked or unchecked.
+<br/>If value has "s", so child nodes will be checked or unchecked.</p>
+ <p class="highlight_red">Please note that letter case, do not change.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. If check the node, so only auto check parent nodes; If uncheck the node, so only auto uncheck child nodes;</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkStyle: "checkbox",
+ chkboxType: { "Y": "p", "N": "s" }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.enable.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.enable.html
new file mode 100755
index 00000000..0236b5f8
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.enable.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>enable</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to use checkbox or radio in zTree</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: use the checkbox or radio</p>
+ <p> false means: don't use the checkbox or radio</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. use the checkbox</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.nocheckInherit.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.nocheckInherit.html
new file mode 100755
index 00000000..758b437e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.nocheckInherit.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.check.</span>nocheckInherit</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When the parent node's 'nocheck' attribute is true, set the child nodes automatically inherit the 'nocheck' attribute. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">1. Only be used to initialize the nodes, easy batch operations. Please use the 'updateNode' method modify existing node.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: When add new child nodes, if parent node's 'nocheck' attribute is true, the child nodes automatically inherit the 'nocheck' attribute.</p>
+ <p> false means: When add new child nodes, the child nodes don't inherit the 'nocheck' attribute from parent node.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. When add new child nodes, the child nodes automatically inherit the 'nocheck' attribute from parent node.</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ nocheckInherit: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.radioType.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.radioType.html
new file mode 100755
index 00000000..be867d75
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.check.radioType.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.check.</span>radioType</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The group about radio. It is valid when <span class="highlight_red">[setting.check.enable = true &amp; setting.check.chkStyle = "radio"]</span></p>
+ <p>Default: "level"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>When radioType = "level", will be grouped with same level nodes which have the same parent node.
+<br/>When radioType = "all", will be grouped with all nodes.</p>
+ <p class="highlight_red">Please note that letter case, do not change.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the group about radio is all nodes.</h4>
+ <pre xmlns=""><code>var setting = {
+ check: {
+ enable: true,
+ chkStyle: "radio",
+ radioType: "all"
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.keep.leaf.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.keep.leaf.html
new file mode 100755
index 00000000..71c573e4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.keep.leaf.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.data.keep.</span>leaf</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The leaf node's lock, the leaf node will lock the 'isParent' attribute to false.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: lock the leaf node, and <span class="highlight_red">the node which 'isParent' attribute is false can't add child nodes</span>.</p>
+ <p> false means: don't lock the leaf node, and <span class="highlight_red">the node which 'isParent' attribute is false can add child nodes</span>.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. lock the leaf node</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ keep: {
+ leaf: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.keep.parent.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.keep.parent.html
new file mode 100755
index 00000000..5bab2f1e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.keep.parent.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.data.keep.</span>parent</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The parent node's lock, the parent node will lock 'isParent' attribute to true.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: lock the parent node, and <span class="highlight_red">if remove all of the parent node's child nodes, its 'isParent' attribute still keep to be true.</span>.</p>
+ <p> false means: don't lock the parent node, and <span class="highlight_red">if remove all of the parent node's child nodes, its 'isParent' attribute will change to be false.</span>.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. lock the parent node</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ keep: {
+ parent: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.checked.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.checked.html
new file mode 100755
index 00000000..2678cf25
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.checked.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>checked</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node data's attribute to save the checked state.</p>
+ <p>Default: "checked"</p>
+ <p class="highlight_red">Please don't set the other node attribute which zTree used. (e.g., checkedOld)</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. set the 'isChecked' attribute to save the checked state.</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ checked: "isChecked"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.children.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.children.html
new file mode 100755
index 00000000..321a1a7d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.children.html
@@ -0,0 +1,23 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>children</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node data's attribute to save the child nodes.</p>
+ <p>Default: "children"</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the 'nodes' attribute to save the child nodes.</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ children: "nodes"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.name.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.name.html
new file mode 100755
index 00000000..0208c559
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.name.html
@@ -0,0 +1,23 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>name</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node data's attribute to save the node name.</p>
+ <p>Default: "name"</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the 'ename' attribute to save the node name.</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ name: "ename"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.title.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.title.html
new file mode 100755
index 00000000..96540eb6
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.title.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>title</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node data's attribute to save the 'title' attribute of node DOM. It is valid when <span class="highlight_red">[setting.view.showTitle = true]</span></p>
+ <p class="highlight_red">If set it to "", the title of node DOM will be same as 'setting.data.key.name' attribute.</p>
+ <p>Default: ""</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the 'fullName' attribute to save the title of node DOM.</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ title: "fullName"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.url.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.url.html
new file mode 100755
index 00000000..e9a08cea
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.url.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.key.</span>url</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node data's attribute to save the node link's url.</p>
+ <p class="highlight_red">Special: If the nodes's data can only use the 'url' attribute, and don't use the link to jump feature, you can modify this attribute to any nonexistent attribute.</p>
+ <p>Default: "url"</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the 'xUrl' attribute to save the node link's url.</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ key: {
+ url: "xUrl"
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.enable.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.enable.html
new file mode 100755
index 00000000..7ea21db3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.enable.html
@@ -0,0 +1,39 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.data.simpleData.</span>enable</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set zTree's node to accept the simple data format, when zTree is initialized or when ajax get / or when use <span class="highlight_red">addNodes</span> method.</p>
+ <p>Don't have to generate the complex nested data.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: zTree's node accept the simple data format.</p>
+ <p> false means: zTree's node only accept the nested data format.</p>
+ <p class="highlight_red">If set it is true, you must set the other attributes in 'setting.data.simpleData'. (e.g., idKey, pIdKey, rootPId) And let the data satisfy the parent-child relationship.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. use the simple data format</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0,
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.idKey.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.idKey.html
new file mode 100755
index 00000000..43df2605
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.idKey.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.simpleData.</span>idKey</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node data's attribute to save node data's unique identifier. It is valid when <span class="highlight_red">[setting.data.simpleData.enable = true]</span></p>
+ <p>Default: "id"</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. use the simple data format</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0,
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.pIdKey.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.pIdKey.html
new file mode 100755
index 00000000..8378c6e3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.pIdKey.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.data.simpleData.</span>pIdKey</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node data's attribute to save its parent node data's unique identifier. It is valid when <span class="highlight_red">[setting.data.simpleData.enable = true]</span></p>
+ <p>Default: "pId"</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. use the simple data format</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.rootPId.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.rootPId.html
new file mode 100755
index 00000000..61c9bbd0
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.rootPId.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Number</span><span class="path">setting.data.simpleData.</span>rootPId</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set the default value of root's 'pIdKey' specified attribute values​​. It is valid when <span class="highlight_red">[setting.data.simpleData.enable = true]</span></p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. use the simple data format</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0
+ }
+ }
+};
+var treeNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.autoExpandTrigger.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.autoExpandTrigger.html
new file mode 100755
index 00000000..804ee66a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.autoExpandTrigger.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.drag.</span>autoExpandTrigger</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag node cause the parent node is automatically expanded, set whether to allow to trigger the 'onExpand' callback. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: trigger the 'onExpand' callback.</p>
+ <p> false means: don't trigger the 'onExpand' callback.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set to allow to trigger the 'onExpand' callback</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ autoExpandTrigger: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.autoOpenTime.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.autoOpenTime.html
new file mode 100755
index 00000000..74982afa
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.autoOpenTime.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>autoOpenTime</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Drag to the parent node, the parent node auto expand time interval. (Unit: ms) It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: 500</p>
+ <p class="highlight_red">Please adjust the value according to needs.</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. When drag node to other parent node, expand it at once.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ autoOpenTime: 0
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.borderMax.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.borderMax.html
new file mode 100755
index 00000000..edbb752b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.borderMax.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>borderMax</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag a node to root, the zTree's inner border width. (Unit: px) It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: 10</p>
+ <p class="highlight_red">Please adjust the value according to needs.</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. adjust the inner border width is 20px</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ borderMax: 20
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.borderMin.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.borderMin.html
new file mode 100755
index 00000000..e8458530
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.borderMin.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>borderMin</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag a node to root, the zTree's outer border width. (Unit: px) It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: -5</p>
+ <p class="highlight_red">Please adjust the value according to needs.</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. adjust the outer border width is 10px</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ borderMin: -10
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.inner.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.inner.html
new file mode 100755
index 00000000..1065df3b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.inner.html
@@ -0,0 +1,60 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNodes, targetNode)</span><span class="path">setting.edit.drag.</span>inner</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag one node to the target node, set whether to allow the node to be the target node's child. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p class="highlight_red">If the target node is root, so zTree will only trigger 'inner' and not trigger 'prev / next'.</p>
+ <p class="highlight_red">This function mainly for the appropriate limit drag and drop (auxiliary arrow), it requires a combination of 'prev, next' together, to achieve full functionality.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: allow the node to be the target node's child.</p>
+ <p> false means: don't allow the node to be the target node's child.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which has been dragged</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>JSON data object of the target node which treeNodes are draged over.</p>
+ <p class="highlight_red">If the treeNodes will be root node, the targetNode = null</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to drag the node to the target node's inner.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: true,
+ inner: false
+ }
+ }
+};
+......</code></pre>
+ <h4>2. disable to drag the node to be root node's child.</h4>
+ <pre xmlns=""><code>function canInner(treeId, nodes, targetNode) {
+ return !(targetNode && targetNode.level === 0);
+}
+var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: true,
+ inner: canInner
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.isCopy.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.isCopy.html
new file mode 100755
index 00000000..1207d2ae
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.isCopy.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.drag.</span>isCopy</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag-drop node, set whether to allow to copy node. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Rules Description</h3>
+ <div class="desc">
+ <p>1. If isCopy = true and isMove = true, when drag-drop node, press Ctrl-Key or Cmd-key can copy node, don't press Ctrl-Key or Cmd-key can move node.</p>
+ <p>2. If isCopy = true and isMove = false, when drag-drop node, will copy node.</p>
+ <p>3. If isCopy = false and isMove = true, when drag-drop node, will move node.</p>
+ <p>4. If isCopy = false and isMove = false, so disable to drag-drop node.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. all of the drag-drop operation will copy node.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ isCopy: true,
+ isMove: false
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.isMove.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.isMove.html
new file mode 100755
index 00000000..e4a7ca3a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.isMove.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.drag.</span>isMove</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag-drop node, set whether to allow to move node. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Rules Description</h3>
+ <div class="desc">
+ <p>1. If isCopy = true and isMove = true, when drag-drop node, press Ctrl-Key or Cmd-key can copy node, don't press Ctrl-Key or Cmd-key can move node.</p>
+ <p>2. If isCopy = true and isMove = false, when drag-drop node, will copy node.</p>
+ <p>3. If isCopy = false and isMove = true, when drag-drop node, will move node.</p>
+ <p>4. If isCopy = false and isMove = false, so disable to drag-drop node.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. all of the drag-drop operation will move node.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ isCopy: false,
+ isMove: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.maxShowNodeNum.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.maxShowNodeNum.html
new file mode 100755
index 00000000..dbc3ae47
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.maxShowNodeNum.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>maxShowNodeNum</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When dragging more than one sibling node, the floating layer shows the maximum number of nodes. zTree using '...' instead of redundant nodes. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: 5</p>
+ <p class="highlight_red">Please adjust the value according to needs.</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the maximum number is 10</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ maxShowNodeNum: 10
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.minMoveSize.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.minMoveSize.html
new file mode 100755
index 00000000..8270a993
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.minMoveSize.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">setting.edit.drag.</span>minMoveSize</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The minimum offset which used to determine the drag operator start. (Unit: px) It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p class="highlight_red">Please adjust the value according to needs. Note: If it is too small, will easily lead to misoperation when you click mouse.</p>
+ <p>Default: 5</p>
+ </div>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the minimum offset is 10px.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ minMoveSize: 10
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.next.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.next.html
new file mode 100755
index 00000000..82eb6fba
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.next.html
@@ -0,0 +1,59 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNodes, targetNode)</span><span class="path">setting.edit.drag.</span>next</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag one node to the target node, set whether to allow the node to be the target node's next sibling. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p class="highlight_red">If the target node is root, so zTree will only trigger 'inner' and not trigger 'prev / next'.</p>
+ <p class="highlight_red">This function mainly for the appropriate limit drag and drop (auxiliary arrow), it requires a combination of 'prev, inner' together, to achieve full functionality.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: allow the node to be the target node's next sibling.</p>
+ <p> false means: don't allow the node to be the target node's next sibling.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which has been dragged</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>JSON data object of the target node which treeNodes are draged over.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to drag the node to the target node's next sibling.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: false,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+ <h4>2. disable to drag the node to be all of the parent nodes's next sibling.</h4>
+ <pre xmlns=""><code>function canNext(treeId, nodes, targetNode) {
+ return !targetNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: true,
+ next: canNext,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.prev.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.prev.html
new file mode 100755
index 00000000..de6f0c82
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.prev.html
@@ -0,0 +1,59 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNodes, targetNode)</span><span class="path">setting.edit.drag.</span>prev</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When drag one node to the target node, set whether to allow the node to be the target node's previous sibling. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p class="highlight_red">If the target node is root, so zTree will only trigger 'inner' and not trigger 'prev / next'.</p>
+ <p class="highlight_red">This function mainly for the appropriate limit drag and drop (auxiliary arrow), it requires a combination of 'next, inner' together, to achieve full functionality.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: allow the node to be the target node's previous sibling.</p>
+ <p> false means: don't allow the node to be the target node's previous sibling.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>A collection of the nodes which has been dragged</p>
+ <h4 class="topLine"><b>targetNode</b><span>JSON</span></h4>
+ <p>JSON data object of the target node which treeNodes are draged over.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return true or false</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. disable to drag the node to the target node's previous sibling.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: false,
+ next: true,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+ <h4>2. disable to drag the node to be all of the parent nodes's previous sibling.</h4>
+ <pre xmlns=""><code>function canPrev(treeId, nodes, targetNode) {
+ return !targetNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ drag: {
+ prev: canPrev,
+ next: true,
+ inner: true
+ }
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.editNameSelectAll.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.editNameSelectAll.html
new file mode 100755
index 00000000..a030359d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.editNameSelectAll.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.</span>editNameSelectAll</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When edit node's name, the text in input is selected or unselected. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: when show the input, the text in input is selected</p>
+ <p> false means: when show the input, the text in input is not selected</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. When edit node's name, the text in input is selected.</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ editNameSelectAll: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.enable.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.enable.html
new file mode 100755
index 00000000..ec9d2b31
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.enable.html
@@ -0,0 +1,39 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.edit.</span>enable</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set zTree is in edit mode</p>
+ <p class="highlight_red">Please set this attribute before zTree initialization. If you need to change the edit mode after the initialization, please use zTreeObj.setEditable() method.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: zTree is in edit mode.</p>
+ <p> false means: zTree is not in edit mode.</p>
+ </div>
+ <h3>Editing Rules Description</h3>
+ <div class="desc">
+ <p>1. When click the node, it will not open '<span class="highlight_red">node.url</span>' specified URL.
+<br/>2. Support for dynamic tree editing.
+<br/>3. You can drag-drop nodes, and support drag-drop nodes between multiple trees.
+<br/>4. Support use drag-drop to copy or move the node. (Reference: <span class="highlight_red">setting.edit.drag.isCopy / setting.edit.drag.isMove</span>)
+<br/>5. You can use the Edit button to modify the name attribute.
+<br/>6. You can use the Remove button to remove the node.
+<br/>
+ </p>
+ <p class="highlight_red">Please note that letter case, do not change.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. edit the tree</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.removeTitle.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.removeTitle.html
new file mode 100755
index 00000000..e2175279
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.removeTitle.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>removeTitle</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>the title of the remove button DOM. It is valid when <span class="highlight_red">[setting.edit.enable = true & setting.edit.showRemoveBtn = true]</span></p>
+ <p>Default: "remove"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>When the mouse over the remove button, the browser auto pop-up message content.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which show the remove button</p>
+ <h4 class="topLine"><b>Return </b><span>String</span></h4>
+ <p>Return value is same as 'String Format'</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Set title is 'remove the node' about all the remove button</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: true,
+ removeTitle: "remove the node"
+ }
+};
+......</code></pre>
+ <h4>2. Set title is 'remove the parent node' about the parent node, and is 'remove the leaf node' about the leaf node</h4>
+ <pre xmlns=""><code>function setRemoveTitle(treeId, treeNode) {
+ return treeNode.isParent ? "remove the parent node":"remove the leaf node";
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: true,
+ removeTitle: setRemoveTitle
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.renameTitle.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.renameTitle.html
new file mode 100755
index 00000000..b8ce5a6b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.renameTitle.html
@@ -0,0 +1,48 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>renameTitle</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>the title of the rename button DOM. It is valid when <span class="highlight_red">[setting.edit.enable = true & setting.edit.showRenameBtn = true]</span></p>
+ <p>Default: "rename"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>When the mouse over the rename button, the browser auto pop-up message content.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which show the rename button</p>
+ <h4 class="topLine"><b>Return </b><span>String</span></h4>
+ <p>return value is same as 'String Format'</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Set title is 'rename the node' about all the rename button</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: true,
+ renameTitle: "rename the node"
+ }
+};
+......</code></pre>
+ <h4>2. Set title is 'rename the parent node' about the parent node, and is 'rename the leaf node' about the leaf node</h4>
+ <pre xmlns=""><code>function setRenameTitle(treeId, treeNode) {
+ return treeNode.isParent ? "rename the parent node":"rename the leaf node";
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: true,
+ renameTitle: setRenameTitle
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.showRemoveBtn.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.showRemoveBtn.html
new file mode 100755
index 00000000..f0f1fe15
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.showRemoveBtn.html
@@ -0,0 +1,50 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>showRemoveBtn</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to show or hide the remove button. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>When you click the remove button:</p>
+ <p>1. zTree will trigger the <span class="highlight_red">setting.callback.beforeRemove</span> callback, and you can decide whether to allow delete.</p>
+ <p>2. If you don't set the 'beforeRemove' or the 'beforeRemove' callback return true, so zTree will trigger the <span class="highlight_red">setting.callback.onRemove</span> callback after remove the node.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: show the remove button</p>
+ <p> false means: hide the remove button</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which show the remove button</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>Return value is same as 'Boolean Format'</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Hide the remove button</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: false
+ }
+};
+......</code></pre>
+ <h4>2. Hide the remove button of parent node</h4>
+ <pre xmlns=""><code>function setRemoveBtn(treeId, treeNode) {
+ return !treeNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRemoveBtn: setRemoveBtn
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.showRenameBtn.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.showRenameBtn.html
new file mode 100755
index 00000000..4fe2f581
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.showRenameBtn.html
@@ -0,0 +1,52 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.edit.</span>showRenameBtn</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to show or hide the rename button. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p>When you click the rename button:</p>
+ <p>1. Click the rename button, you can rename the node.</p>
+ <p>2. After rename operation (the input DOM blur or press the Enter Key), zTree will trigger the <span class="highlight_red">setting.callback.beforeRename</span> callback, and you can decide whether to allow rename.</p>
+ <p>3. If the 'beforeRename' callback return false, so zTree will keep the edit status. (Press the ESC key, can be restored to the original state.</p>
+ <p>4. If you don't set the 'beforeRename' or the 'beforeRename' callback return true, so zTree will trigger the <span class="highlight_red">setting.callback.onRename</span> callback after rename the node.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: show the rename button</p>
+ <p> false means: hide the rename button</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which show the rename button</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>Return value is same as 'Boolean Format'</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Hide the rename button</h4>
+ <pre xmlns=""><code>var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: false
+ }
+};
+......</code></pre>
+ <h4>2. Hide the rename button of parent node</h4>
+ <pre xmlns=""><code>function setRenameBtn(treeId, treeNode) {
+ return !treeNode.isParent;
+}
+var setting = {
+ edit: {
+ enable: true,
+ showRenameBtn: setRenameBtn
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.treeId.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.treeId.html
new file mode 100755
index 00000000..e4b04b37
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.treeId.html
@@ -0,0 +1,14 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">setting.</span>treeId</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree unique identifier. After the initialization, it equals to the id attribute value of the user-defined zTree container.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is an internal argument.</p>
+ </div>
+ </div>
+
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.treeObj.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.treeObj.html
new file mode 100755
index 00000000..30eb66c4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.treeObj.html
@@ -0,0 +1,14 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Object</span><span class="path">setting.</span>treeObj</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>zTree DOM's jQuery object, the main function: easy to internal operations.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is an internal argument.</p>
+ </div>
+ </div>
+
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.addDiyDom.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.addDiyDom.html
new file mode 100755
index 00000000..fa22befd
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.addDiyDom.html
@@ -0,0 +1,40 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.view.</span>addDiyDom</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>This function used to display the custom control on the node.</p>
+ <p class="highlight_red">1. If you have huge node data, please note: this function will affect the initialization performance. If not required, it is recommended not to use this function.</p>
+ <p class="highlight_red">2. This function is an advanced application, please make sure that a better understanding of zTree before you use it.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which display the custom control.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Display button in all nodes.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ addDiyDom: addDiyDom
+ }
+};
+function addDiyDom(treeId, treeNode) {
+ var aObj = $("#" + treeNode.tId + "_a");
+ if ($("#diyBtn_"+treeNode.id).length>0) return;
+ var editStr = "&lt;span id='diyBtn_space_" +treeNode.id+ "' &gt; &lt;/span&gt;"
+ + "&lt;button type='button' class='diyBtn1' id='diyBtn_" + treeNode.id
+ + "' title='"+treeNode.name+"' onfocus='this.blur();'&gt;&lt;/button&gt;";
+ aObj.append(editStr);
+ var btn = $("#diyBtn_"+treeNode.id);
+ if (btn) btn.bind("click", function(){alert("diy Button for " + treeNode.name);});
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.addHoverDom.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.addHoverDom.html
new file mode 100755
index 00000000..1ea8b6d9
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.addHoverDom.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.view.</span>addHoverDom</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to display custom control when mouse move over the node. (e.g. the rename and remove button)</p>
+ <p class="highlight_red">If you use this function, so must set <span class="highlight_red">setting.view.removeHoverDom</span>, please make sure that a better understanding of zTree before you use it.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to display the custom control.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Display a button when mouse move over the node, and hide the button when mouse move out.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ addHoverDom: addHoverDom,
+ removeHoverDom: removeHoverDom,
+ ......
+ }
+};
+function addHoverDom(treeId, treeNode) {
+ var aObj = $("#" + treeNode.tId + "_a");
+ if ($("#diyBtn_"+treeNode.id).length>0) return;
+ var editStr = "&lt;span id='diyBtn_space_" +treeNode.id+ "' &gt;&nbsp;&lt;/span&gt;"
+ + "&lt;button type='button' class='diyBtn1' id='diyBtn_" + treeNode.id
+ + "' title='"+treeNode.name+"' onfocus='this.blur();'&gt;&lt;/button&gt;";
+ aObj.append(editStr);
+ var btn = $("#diyBtn_"+treeNode.id);
+ if (btn) btn.bind("click", function(){alert("diy Button for " + treeNode.name);});
+};
+function removeHoverDom(treeId, treeNode) {
+ $("#diyBtn_"+treeNode.id).unbind().remove();
+ $("#diyBtn_space_" +treeNode.id).unbind().remove();
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.autoCancelSelected.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.autoCancelSelected.html
new file mode 100755
index 00000000..44ab90d0
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.autoCancelSelected.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>autoCancelSelected</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When click the selected node while pressing the Ctrl-key or Cmd-key, allow to cancel selected the node.</p>
+ <p class="highlight_red">If you don't need this function, please set to false.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: press the Ctrl-key or Cmd-key, can cancel selected node.</p>
+ <p> false means: press the Ctrl-key or Cmd-key, can't cancel selected node.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Press the Ctrl-key or Cmd-key, can't cancel selected node.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ autoCancelSelected: false
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.dblClickExpand.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.dblClickExpand.html
new file mode 100755
index 00000000..25176240
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.dblClickExpand.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.view.</span>dblClickExpand</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>When double-click the parent node, 'dblClickExpand' is used to decide whether to expand the parent node.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: When double-click the parent node, zTree will expand the parent node.</p>
+ <p> false means: When double-click the parent node, zTree will not expand the parent node.</p>
+ </div>
+ <h3>Function Pamameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which be double-clicked.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>Return value is same as 'Boolean Format'</p>
+ </div>
+ <h3>Example of setting</h3>
+ <h4>1. When double-click the parent node, zTree will not expand the parent node.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ dblClickExpand: false
+ }
+};
+......</code></pre>
+ <h4>2. When double-click the parent node, zTree will expand the parent node which level>0.</h4>
+ <pre xmlns=""><code>function dblClickExpand(treeId, treeNode) {
+ return treeNode.level > 0;
+};
+var setting = {
+ view: {
+ dblClickExpand: dblClickExpand
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.expandSpeed.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.expandSpeed.html
new file mode 100755
index 00000000..1911e74e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.expandSpeed.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String / Number</span><span class="path">setting.view.</span>expandSpeed</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The animation speed of expand or collapse node. As same as 'speed' parameter in jQuery</p>
+ <p class="highlight_red">In order to ensure zTree operating speed, if use the IE6, zTree will not use animation.</p>
+ <p>Default: "fast"</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>e.g. "slow", "normal", or "fast"</p>
+ <p class="highlight_red">If set to "", zTree will not use animation.</p>
+ </div>
+ <h3>Number Format</h3>
+ <div class="desc">
+ <p>How long the animation will run. [Unit: ms] (e.g. 1000)</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set the animation speed to slow</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ expandSpeed: "slow"
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.fontCss.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.fontCss.html
new file mode 100755
index 00000000..1ad5f516
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.fontCss.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON / Function(treeId, treeNode)</span><span class="path">setting.view.</span>fontCss</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Personalized text style, only applies to &lt;A&gt; object in the node DOM</p>
+ <p>Default: {}</p>
+ </div>
+ </div>
+ <h3>JSON Format</h3>
+ <div class="desc">
+ <p>As same as .css() method in jQuery. e.g. <span class="highlight_red">{color:"#ff0011", background:"blue"}</span></p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which use the personalized text style</p>
+ <h4 class="topLine"><b>Return </b><span>JSON</span></h4>
+ <p>Return value is same as 'JSON Format'. e.g. <span class="highlight_red">{color:"#ff0011", background:"blue"}</span></p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Don't modify css file, and set the node name's color to red</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ fontCss : {color:"red"}
+ }
+};</code></pre>
+ <h4>2. Don't modify css file, and set the root node name's color to red</h4>
+ <pre xmlns=""><code>function setFontCss(treeId, treeNode) {
+ return treeNode.level == 0 ? {color:"red"} : {};
+};
+var setting = {
+ view: {
+ fontCss: setFontCss
+ }
+};</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.nameIsHTML.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.nameIsHTML.html
new file mode 100755
index 00000000..4fe19ada
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.nameIsHTML.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>nameIsHTML</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to use HTML in 'name' attribute.</p>
+ <p class="highlight_red">If allow HTML, please do check to avoid security issues, e.g. JavaScript Injection...</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: 'name' attribute can be HTML.</p>
+ <p> false means: 'name' attribute is only TEXT.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Set to allow HTML</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ nameIsHTML: true
+ }
+};
+var node = {"name":"&lt;font color='red'&gt;test&lt;/font&gt;"};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.removeHoverDom.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.removeHoverDom.html
new file mode 100755
index 00000000..0c70aff2
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.removeHoverDom.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId, treeNode)</span><span class="path">setting.view.</span>removeHoverDom</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to hide custom control when mouse move out the node. (e.g. the rename and remove button)</p>
+ <p class="highlight_red">If you use this function, so must set <span class="highlight_red">setting.view.addHoverDom</span>, please make sure that a better understanding of zTree before you use it.</p>
+ <p>Default: null</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to hide the custom control.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Display a button when mouse move over the node, and hide the button when mouse move out.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ addHoverDom: addHoverDom,
+ removeHoverDom: removeHoverDom,
+ ......
+ }
+};
+function addHoverDom(treeId, treeNode) {
+ var aObj = $("#" + treeNode.tId + "_a");
+ if ($("#diyBtn_"+treeNode.id).length>0) return;
+ var editStr = "&lt;span id='diyBtn_space_" +treeNode.id+ "' &gt;&nbsp;&lt;/span&gt;"
+ + "&lt;button type='button' class='diyBtn1' id='diyBtn_" + treeNode.id
+ + "' title='"+treeNode.name+"' onfocus='this.blur();'&gt;&lt;/button&gt;";
+ aObj.append(editStr);
+ var btn = $("#diyBtn_"+treeNode.id);
+ if (btn) btn.bind("click", function(){alert("diy Button for " + treeNode.name);});
+};
+function removeHoverDom(treeId, treeNode) {
+ $("#diyBtn_"+treeNode.id).unbind().remove();
+ $("#diyBtn_space_" +treeNode.id).unbind().remove();
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.selectedMulti.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.selectedMulti.html
new file mode 100755
index 00000000..074fb685
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.selectedMulti.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>selectedMulti</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set whether to allow select multiple nodes.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true mean: you can select multiple nodes.</p>
+ <p> false mean: you can only select one node.</p>
+ <p class="highlight_red">1. Press Ctrl-key or Cmd-key, you can select multiple nodes.</p>
+ <p class="highlight_red">2ã€This attribute don't affect the feature of cancel select node. ( please see setting.view.autoCancelSelected )</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Only select one node.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ selectedMulti: false
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.showIcon.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.showIcon.html
new file mode 100755
index 00000000..9adf0034
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.showIcon.html
@@ -0,0 +1,45 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.view.</span>showIcon</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to show or hide node icon.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: show node icon.</p>
+ <p> false means: hide node icon.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to show icon.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>Return value is same as 'Boolean Format'</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Hide node icon</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ showIcon: false
+ }
+};
+......</code></pre>
+ <h4>2. Hide node icon which level=2</h4>
+ <pre xmlns=""><code>function showIconForTree(treeId, treeNode) {
+ return treeNode.level != 2;
+};
+var setting = {
+ view: {
+ showIcon: showIconForTree
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.showLine.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.showLine.html
new file mode 100755
index 00000000..a5540149
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.showLine.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>showLine</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to show or hide line.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: show line.</p>
+ <p> false means: hide line.</p>
+ </div>
+ <h3>Examples of setting</h3>
+ <h4>1. Hide line</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ showLine: false
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.showTitle.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.showTitle.html
new file mode 100755
index 00000000..66bb26e6
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.showTitle.html
@@ -0,0 +1,47 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean / Function(treeId, treeNode)</span><span class="path">setting.view.</span>showTitle</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to show or hide the 'title' attribute of node DOM.</p>
+ <p class="highlight_red">Please see the <span class="highlight_red">setting.data.key.title</span> attribute</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: show the 'title' attribute of node DOM.</p>
+ <p> false means: hide the 'title' attribute of node DOM.</p>
+ <p class="highlight_red">When setting.view.showTitle = true & setting.data.key.title = '', zTree will set the 'setting.data.key.name' attribute to the 'setting.data.key.title'.</p>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeId</b><span>String</span></h4>
+ <p>zTree unique identifier: <b class="highlight_red">treeId</b>, easy for users to control.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to show title.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>Return value is same as 'Boolean Format'</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Hide the 'title' attribute of node DOM.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ showTitle: false
+ }
+};
+......</code></pre>
+ <h4>2. Hide the 'title' attribute of node DOM which level=2.</h4>
+ <pre xmlns=""><code>function showTitleForTree(treeId, treeNode) {
+ return treeNode.level != 2;
+};
+var setting = {
+ view: {
+ showTitle: showTitleForTree
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.txtSelectedEnable.html b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.txtSelectedEnable.html
new file mode 100755
index 00000000..a3809300
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/setting.view.txtSelectedEnable.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">setting.view.</span>txtSelectedEnable</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set to allow or don't allow to select the text which in zTree's DOM.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: Allow to select the txt which in zTree's DOM.</p>
+ <p> false means: Don't allow to select the txt which in zTree's DOM.</p>
+ </div>
+ <h3>Examples of setting & function</h3>
+ <h4>1. Allow to select the txt which in zTree's DOM.</h4>
+ <pre xmlns=""><code>var setting = {
+ view: {
+ txtSelectedEnable: true
+ }
+};
+......</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.check_Child_State.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.check_Child_State.html
new file mode 100755
index 00000000..48efb79a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.check_Child_State.html
@@ -0,0 +1,43 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">treeNode.</span>check_Child_State</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to record the node's half-checked state about its all child nodes's checkbox or radio. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">zTree v3.x provides treeNode.getCheckStatus () method to get an accurate the half-checked status.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is an internal argument.</p>
+ <p>Default: true</p>
+ </div>
+ </div>
+ <h3>Number Format</h3>
+ <div class="desc">
+ <p>Rules:</p>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "checkbox"</td></tr>
+ <tr><td>treeNode.check_Child_State</td><td>Checked Status Description</td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-1</td><td>Has no child nodes or all child nodes's 'nocheck' attribute is true.</td></tr>
+ <tr><td>0</td><td>All of the child nodes has not been checked.</td></tr>
+ <tr><td>1</td><td>Some of the child nodes has been checked.</td></tr>
+ <tr><td>2</td><td>All of the child nodes has been checked.</td></tr>
+ </tbody>
+ </table>
+ <br/>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "radio"</td></tr>
+ <tr><td>treeNode.check_Child_State</td><td>Checked Status Description</td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-1</td><td>Has no child nodes or all child nodes's 'nocheck' attribute is true.</td></tr>
+ <tr><td>0</td><td>All of the child nodes has not been checked.</td></tr>
+ <tr><td>2</td><td>Some of the child nodes has been checked.</td></tr>
+ </tbody>
+ </table>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.check_Focus.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.check_Focus.html
new file mode 100755
index 00000000..77b73598
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.check_Focus.html
@@ -0,0 +1,19 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>check_Focus</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to record the status which the checkbox or radio get focus. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">Do not initialize or modify it, it is an internal argument.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p>true means: mouse move over the checkbox</p>
+ <p>false means: mouse move out the checkbox</p>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.checked.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.checked.html
new file mode 100755
index 00000000..8a55f3d6
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.checked.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>checked</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The checked status about node's checkbox or radio. It is valid when <span class="highlight_red">[setting.check.enable = true & treeNode.nocheck = false]</span></p>
+ <p class="highlight_red">1. If change the 'checked' to other attribute, please set the 'setting.data.key.checked' attribute.</p>
+ <p class="highlight_red">2. If you create node data, and set 'checked' attribute to true, zTree will check this node's checkbox or radio when zTree is initialized.</p>
+ <p class="highlight_red">3. Use the treeObj.checkNode or checkAllNodes or updateNode method, you can check or uncheck the node. Please see the API about these methods.</p>
+ <p class="highlight_red">4. zTree support identification string 'true' & 'false'.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p>true means: check the checkbox or radio when zTree is initialized.</p>
+ <p>false means: uncheck the checkbox or radio when zTree is initialized.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. check the checkbox when zTree is initialized</h4>
+ <pre xmlns=""><code>var nodes = [
+{ "id":1, "name":"test1", checked:true },
+{ "id":2, "name":"test2", checked:true }
+]</code></pre>
+ <h4>2. Get the checked status of the first root node</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var checked = treeObj.getNodes()[0].checked;
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.checkedOld.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.checkedOld.html
new file mode 100755
index 00000000..ee516260
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.checkedOld.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>checkedOld</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The checked status about node's checkbox or radio when zTree was initialized. It is valid when <span class="highlight_red">[setting.check.enable = true & treeNode.nocheck = false]</span></p>
+ <p class="highlight_red">1. Do not initialize it, it will be initialized when the node is initialized.</p>
+ <p class="highlight_red">2. If you need to achieve special features, you can use the zTreeObj.getChangeCheckedNodes method and modify the value of 'checkedOld' attribute.</p>
+ <p>Default: the value of 'checked' attribute when zTree is initialized</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p>true means: the checkbox or radio is checked when zTree is initialized.</p>
+ <p>false means: the checkbox or radio is not checked when zTree is initialized.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the original checked status of the first root node</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var checkedOld = treeObj.getNodes()[0].checkedOld;
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.children.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.children.html
new file mode 100755
index 00000000..d765bb96
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.children.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Array(JSON)</span><span class="path">treeNode.</span>children</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The data collections of node's child nodes.</p>
+ <p class="highlight_red">1. If change the 'children' to other attribute, please set the 'setting.data.key.children' attribute.</p>
+ <p class="highlight_red">2. If you set to use dynamic tree, when a node is expanded which 'isParent' attribute is true and which has no child nodes, zTree will use ajax to get its child nodes.</p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>Array(JSON) Format</h3>
+ <div class="desc">
+ <p>Standard JSON Data object</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Use the standard JSON data object.</h4>
+ <pre xmlns=""><code>var nodes = [
+{ "id":1, "name":"test1",
+ children: [
+ { "id":3, "name":"test3"},
+ { "id":4, "name":"test4"},
+ { "id":5, "name":"test5"}
+ ]
+},
+{ "id":2, "name":"test2" }
+]</code></pre>
+ <h4>2. Get the first root node's child nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes()[0].children;
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.chkDisabled.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.chkDisabled.html
new file mode 100755
index 00000000..7a5fcf38
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.chkDisabled.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>chkDisabled</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>1. Set node's checkbox / radio to disabled. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">2. zTree support identification string 'true' & 'false'.</p>
+ <p class="highlight_red">3. Please don't change this attribute of the nodes which have been created. If you want to disable or undisable the nodes, please use 'setChkDisabled()' methods.</p>
+ <p class="highlight_red">4. When zTree initialize the nodes, if you need to the child nodes automatically inherit the 'chkDisabled' attribute, please see 'setting.check.chkDisabledInherit'.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p class="highlight_red">true means: this node's checkbox / radio is disabled.</p>
+ <p class="highlight_red">false means: this node's checkbox / radio is able.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. disable some node's checkbox / radio </h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1", "checked":true, "chkDisabled":true},
+ { "id":2, "name":"test2", "chkDisabled":true},
+ { "id":3, "name":"test3"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.click.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.click.html
new file mode 100755
index 00000000..1f9db626
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.click.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>click</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Simple click event operations. As same as : (onclick ="...") the code. If the operation is more complex, please use the onClick callback.</p>
+ <p class="highlight_red">Because IE is different to other browsers in operating the event of ‘onclick’ and ‘click’ coexistence, please do not use this parameter to control whether to allow the redirection operation (for example: treeNode.click = "return false;"). If there is similar requirements, please do not use the 'url' attribute to save the website address, but use the 'onClick' callback to control jumps.</p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>Standard javascript syntax, for example: alert ("test"); etc.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. When click this node, will alert msg.</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"Google CN", "url":"http://g.cn", "click":"alert('test');"},
+ ......
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.diy.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.diy.html
new file mode 100755
index 00000000..68c39ba6
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.diy.html
@@ -0,0 +1,15 @@
+<div class="apiDetail">
+<div>
+ <h2><span>?</span><span class="path">treeNode.</span>* DIY *</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to save other custom data of node, do not use the same attribute name with ztree used, the user can freely set.</p>
+ </div>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Use 'ename' attribute to save more info</h4>
+ <pre xmlns=""><code>var node = { "id":1, "name":"test1", "ename":"test eName"};</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.editNameFlag.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.editNameFlag.html
new file mode 100755
index 00000000..f60ef2ab
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.editNameFlag.html
@@ -0,0 +1,19 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>editNameFlag</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to save the node editing name status. It is valid when <span class="highlight_red">[setting.edit.enable = true]</span></p>
+ <p class="highlight_red">Do not initialize or modify it, it is an internal argument.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p>true means: node is being edited.</p>
+ <p>false means: node is not being edited.</p>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getCheckStatus.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getCheckStatus.html
new file mode 100755
index 00000000..3c9a2e6b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getCheckStatus.html
@@ -0,0 +1,63 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getCheckStatus</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the node's half-checked status of checkbox or radio. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return</b><span>JSON</span></h4>
+ <pre xmlns=""><code>{
+ checked: true, //As same as 'treeNode.checked'
+ half: true //Rule the table below
+}</code></pre>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "checkbox"</td></tr>
+ <tr><td>treeNode.checked</td><td>treeNode.check_Child_State</td><td>treeNode.halfCheck</td><td> half </td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-</td><td>-</td><td>true</td><td>true</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>true</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>true</td><td>0</td><td>false</td><td>true</td></tr>
+ <tr><td>true</td><td>1</td><td>false</td><td>true</td></tr>
+ <tr><td>true</td><td>2</td><td>false</td><td>false</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>false</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>0</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>1</td><td>false</td><td>true</td></tr>
+ <tr><td>false</td><td>2</td><td>false</td><td>true</td></tr>
+ </tbody>
+ </table>
+ <br/>
+ <table width="100%" border="0" cellspacing="1" cellpadding="0">
+ <thead>
+ <tr><td colspan="4">setting.check.checkType = "radio"</td></tr>
+ <tr><td>treeNode.checked</td><td>treeNode.check_Child_State</td><td>treeNode.halfCheck</td><td> half </td></tr>
+ </thead>
+ <tbody>
+ <tr><td>-</td><td>-</td><td>true</td><td>true</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>true</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>true</td><td>0</td><td>false</td><td>false</td></tr>
+ <tr><td>true</td><td>2</td><td>false</td><td>true</td></tr>
+ <tr><td colspan="4">&nbsp;</td></tr>
+ <tr><td>false</td><td>-1</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>0</td><td>false</td><td>false</td></tr>
+ <tr><td>false</td><td>2</td><td>false</td><td>true</td></tr>
+ </tbody>
+ </table>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first root node's half-checked status</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var halfCheck = treeObj.getNodes()[0].getCheckStatus();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getNextNode.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getNextNode.html
new file mode 100755
index 00000000..755aa6ee
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getNextNode.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getNextNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the treeNode's next sibling node.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return</b><span>JSON</span></h4>
+ <p>JSON data object of the treeNode's next sibling node</p>
+ <p class="highlight_red">If have not the next node, return null.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first selected node's next sibling node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var node = sNodes[0].getNextNode();
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getParentNode.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getParentNode.html
new file mode 100755
index 00000000..16bab306
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getParentNode.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getParentNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the treeNode's parent node.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return</b><span>JSON</span></h4>
+ <p>JSON data object of treeNode's parent node.</p>
+ <p class="highlight_red">If treeNode is root, return null.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first selected node's parent node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var node = sNodes[0].getParentNode();
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getPreNode.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getPreNode.html
new file mode 100755
index 00000000..f6745b14
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getPreNode.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">treeNode.</span>getPreNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the treeNode's previous sibling node.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return</b><span>JSON</span></h4>
+ <p>JSON data object of the treeNode's previous sibling node</p>
+ <p class="highlight_red">If have not the previous node, return null.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first selected node's previous sibling node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var node = sNodes[0].getPreNode();
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.halfCheck.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.halfCheck.html
new file mode 100755
index 00000000..8375326b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.halfCheck.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>halfCheck</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Force node checkBox / radio to the half-checked status. It is valid when <span class="highlight_red">[setting.check.enable = true & treeNode.nocheck = false]</span></p>
+ <p class="highlight_red">1. If you force to the half-checked status, zTree will not automatically calculated the half-checked status about this node.</p>
+ <p class="highlight_red">2. Until you set treeNode.halfCheck to false or null, zTree will automatically calculated the half-checked status about this node.</p>
+ <p class="highlight_red">3. zTree support identification string 'true' & 'false'.</p>
+ <p>Defaul: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p>true means: the checkbox or radio is half-checked when zTree is initialized.</p>
+ <p>false means: the half-checked status will be automatically calculated</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. set the half-checked status when zTree is initialized</h4>
+ <pre xmlns=""><code>var nodes = [
+{ "id":1, "name":"test1", isParent:true, checked:true, halfCheck:true },
+{ "id":2, "name":"test2", isParent:true, checked:false, halfCheck:true },
+{ "id":3, "name":"test3", isParent:true, checked:true },
+{ "id":4, "name":"test4", isParent:true, checked:false }
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.icon.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.icon.html
new file mode 100755
index 00000000..4e1c99fa
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.icon.html
@@ -0,0 +1,33 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>icon</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>URL path of node's custom icon.</p>
+ <p class="highlight_red">1. If you only set the 'icon' attribute to parent node, the parent node will only show one icon when it is expanded or collapsed.</p>
+ <p class="highlight_red">2. If you need to show two icons when it is expanded or collapsed, please set the 'treeNode.iconOpen' and 'treeNode.iconClose' attribute.</p>
+ <p class="highlight_red">3. If you need to use css to set the custom icon, please set the 'treeNode.iconSkin' attribute.</p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>Icon image url can be a relative path or absolute path.</p>
+ <p class="highlight_red">If use a relative path, please note the relationship between icon image and the page, ensure the correct image path.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Set the custom icon</h4>
+ <pre xmlns=""><code>var nodes = [
+ //Only show one icon when it is expanded or collapsed.
+ { name:"Parent Node 1", icon:"/img/parent.gif"},
+
+ //Show two icons when it is expanded or collapsed.
+ { name:"Parent Node 2", iconOpen:"/img/open.gif", iconClose:"/img/close.gif"},
+
+ //the custom icon for leaf node
+ { name:"Leaf Node", icon:"/img/leaf.gif"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.iconClose.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.iconClose.html
new file mode 100755
index 00000000..2259e8f3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.iconClose.html
@@ -0,0 +1,33 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>iconClose</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>URL path of parent node's custom icon when it is collapsed.</p>
+ <p class="highlight_red">1. Only parent node support this attribute.</p>
+ <p class="highlight_red">2. This attribute must be used simultaneously with 'iconOpen' attribute.</p>
+ <p class="highlight_red">3. If you need to use css to set the custom icon, please set the 'treeNode.iconSkin' attribute.</p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>Icon image url can be a relative path or absolute path.</p>
+ <p class="highlight_red">If use a relative path, please note the relationship between icon image and the page, ensure the correct image path.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Set the custom icon</h4>
+ <pre xmlns=""><code>var nodes = [
+ //Only show one icon when it is expanded or collapsed.
+ { name:"Parent Node 1", icon:"/img/parent.gif"},
+
+ //Show two icons when it is expanded or collapsed.
+ { name:"Parent Node 2", iconOpen:"/img/open.gif", iconClose:"/img/close.gif"},
+
+ //the custom icon for leaf node
+ { name:"Leaf Node", icon:"/img/leaf.gif"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.iconOpen.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.iconOpen.html
new file mode 100755
index 00000000..3203615d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.iconOpen.html
@@ -0,0 +1,33 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>iconOpen</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>URL path of parent node's custom icon when it is expanded.</p>
+ <p class="highlight_red">1. Only parent node support this attribute.</p>
+ <p class="highlight_red">2. This attribute must be used simultaneously with 'iconClose' attribute.</p>
+ <p class="highlight_red">3. If you need to use css to set the custom icon, please set the 'treeNode.iconSkin' attribute.</p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>Icon image url can be a relative path or absolute path.</p>
+ <p class="highlight_red">If use a relative path, please note the relationship between icon image and the page, ensure the correct image path.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Set the custom icon</h4>
+ <pre xmlns=""><code>var nodes = [
+ //Only show one icon when it is expanded or collapsed.
+ { name:"Parent Node 1", icon:"/img/parent.gif"},
+
+ //Show two icons when it is expanded or collapsed.
+ { name:"Parent Node 2", iconOpen:"/img/open.gif", iconClose:"/img/close.gif"},
+
+ //the custom icon for leaf node
+ { name:"Leaf Node", icon:"/img/leaf.gif"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.iconSkin.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.iconSkin.html
new file mode 100755
index 00000000..fca7fbf2
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.iconSkin.html
@@ -0,0 +1,43 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>iconSkin</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The className of node's custom icon.</p>
+ <p class="highlight_red">1. You need to modify the css, add the definition of className.</p>
+ <p class="highlight_red">2. The css is simple, convenient, and support the parent node to switch icons when it is expanded or collapsed.</p>
+ <p class="highlight_red">3. Recommend the use of CSS Sprites, can reduce repeating load the image, to avoid image flicker.</p>
+ <p class="highlight_red">4. The 'iconSkin' support IE6 in zTree v3.x.</p>
+ <p class="highlight_red">5. If you need to use image's URL to set the custom icon, please set the 'treeNode.icon' or 'treeNode.iconOpen' or 'treeNode.iconClose' attribute.</p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>The string about custom icon's className.</p>
+ </div>
+ <h3>Examples of css & treeNode</h3>
+ <h4>1. Set the custom icon</h4>
+ <pre xmlns=""><code>css example:
+.ztree li span.button.diy01_ico_open, .ztree li span.button.diy01_ico_close{...}
+
+.ztree li span.button.diy02_ico_open{...}
+.ztree li span.button.diy02_ico_close{...}
+
+.ztree li span.button.diy03_ico_docu{...}
+
+node's data example:
+var nodes = [
+ //Only show one icon when it is expanded or collapsed.
+ { name:"Parent Node 1", iconSkin:"diy01"},
+
+ //Show two icons when it is expanded or collapsed.
+ { name:"Parent Node 2", iconSkin:"diy02"},
+
+ //the custom icon for leaf node
+ { name:"Leaf Node", iconSkin:"diy03"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isAjaxing.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isAjaxing.html
new file mode 100755
index 00000000..ddadf41b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isAjaxing.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isAjaxing</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Judge whether the node's child nodes being loaded asynchronously.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: the node's child nodes is being loaded asynchronously</p>
+ <p> false means: the node's child nodes is not being loaded asynchronously</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Judge whether the first selected node's child nodes being loaded asynchronously</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isAjaxing = sNodes[0].isAjaxing;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isFirstNode.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isFirstNode.html
new file mode 100755
index 00000000..a8ee61ce
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isFirstNode.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isFirstNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Judge whether the node is the sibling nodes's first node.</p>
+ <p class="highlight_red">If you use the 'exhide' pack, so this attribute will only support the node which be shown. </p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: the node is first node.</p>
+ <p> false means: the node is not first node.</p>
+ <p class="highlight_red">If the node has been hidden, isFirstNode = false</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Judge whether the first selected node is the sibling nodes's first node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isFirstNode = sNodes[0].isFirstNode;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isHidden.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isHidden.html
new file mode 100755
index 00000000..3a07b94c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isHidden.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isHidden</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exhide</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Judge whether the node has been hidden.</p>
+ <p class="highlight_red">1. When initialize zTree, the nodes which be set 'isHidden = true' will be hidden.</p>
+ <p class="highlight_red"></p>
+ <p class="highlight_red">2. Please don't change this attribute of the nodes which have been created. If you want to hide or show nodes, please use 'hideNode() / hideNodes() / showNode() / showNodes()' methods.</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: this node is hidden.</p>
+ <p> false means: this node is shown.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Judge whether the first root node has been hidden.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getNodes();
+if (sNodes.length > 0) {
+ var isHidden = sNodes[0].isHidden;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isHover.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isHover.html
new file mode 100755
index 00000000..e18ed0cf
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isHover.html
@@ -0,0 +1,19 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isHover</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to record the hover status of node's DOM. For 'setting.view.addHoverDom / removeHoverDom'.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is an internal argument.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p>true means: the node's DOM is in hover.</p>
+ <p>false means: the node's DOM is not in hover.</p>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isLastNode.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isLastNode.html
new file mode 100755
index 00000000..cd2ca26b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isLastNode.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isLastNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Judge whether the node is the sibling nodes's last node.</p>
+ <p class="highlight_red">If you use the 'exhide' pack, so this attribute will only support the node which be shown. </p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: the node is last node.</p>
+ <p> false means: the node is not last node.</p>
+ <p class="highlight_red">If the node has been hidden, isLastNode = false</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Judge whether the first selected node is the sibling nodes's last node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isLastNode = sNodes[0].isLastNode;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isParent.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isParent.html
new file mode 100755
index 00000000..dad4b819
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isParent.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>isParent</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Judge whether the node is the parent node.</p>
+ <p class="highlight_red">1. When zTree initialize the node data, the node which has children is set to true, otherwise false.</p>
+ <p class="highlight_red">2. When zTree initialize the node data, if set treeNode.isParent to true, the node will be set to be parent node.</p>
+ <p class="highlight_red">3. In order to solve the problem of someone make json data, supporting "false", "true" format of the data string.</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: the node is parent node.</p>
+ <p> false means: the node is not parent node.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Judge whether the first selected node is the parent node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isParent = sNodes[0].isParent;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.level.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.level.html
new file mode 100755
index 00000000..d1511624
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.level.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Number</span><span class="path">treeNode.</span>level</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The level of node</p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>Number Format</h3>
+ <div class="desc">
+ <p class="highlight_red">The root node's level = 0, and next level = 1, ...</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first selected node's level</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var level = sNodes[0].level;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.name.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.name.html
new file mode 100755
index 00000000..fa508ccb
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.name.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>name</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The node's name</p>
+ <p class="highlight_red">1. If you want to change 'name' attribute, please modify the 'setting.data.key.name' attribute.</p>
+ <p>Default: undenfined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>String object. The HTML special characters are escaped</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Set node's name to 'test1', 'test2', 'test3'</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1"},
+ { "id":2, "name":"test2"},
+ { "id":3, "name":"test3"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.nocheck.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.nocheck.html
new file mode 100755
index 00000000..6c4880c8
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.nocheck.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>nocheck</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>1. Set node to hide the checkbox or radio. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">2. zTree support identification string 'true' & 'false'.</p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p class="highlight_red">true means: the node hide the checkbox or radio, and don't affect the checked association, and don't affect its parent node's half-checked status.</p>
+ <p class="highlight_red">false means: the node show the checkbox or radio.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Hide some node's checkbox / radio </h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1", "nocheck":true},
+ { "id":2, "name":"test2"},
+ { "id":3, "name":"test3"}
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.open.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.open.html
new file mode 100755
index 00000000..bc910de3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.open.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>open</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to record the parent node's expand status.</p>
+ <p class="highlight_red">1. When zTree initialize the node data, if you set treeNode.open = true, zTree will default expand this parent node.</p>
+ <p class="highlight_red">2. Leaf node's 'open' attribute is false.</p>
+ <p class="highlight_red">3. In order to solve the problem of someone make json data, supporting "false", "true" format of the data string.</p>
+ <p class="highlight_red">4. When setting.async.enable = false, the parent node will be expanded which have no child nodes and its attribute 'open' is true. (v3.5.15+) </p>
+ <p>Default: false</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: the parent node is expanded.</p>
+ <p> false means: the parent node is collapsed.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first selected node's expand status.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var isOpen = sNodes[0].open;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.parentTId.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.parentTId.html
new file mode 100755
index 00000000..0bc2a6d6
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.parentTId.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>parentTId</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The unique identifier of node's parent node.</p>
+ <p class="highlight_red">1. zTree v3.x using 'parentTId' replaced the original 'parentNode' attribute, and increased getParentNode () method, in order to avoid the original 'parentNode' cause the clone () method infinite loop.</p>
+ <p class="highlight_red">2. Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>String object of node's parent node's tId. please see API about 'treeNode.tId'</p>
+ <p class="highlight_red">If treeNode is root node, parentTId is null.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first selected node's parent node's tId</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var parentTId = sNodes[0].parentTId;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.tId.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.tId.html
new file mode 100755
index 00000000..18c2855a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.tId.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>tId</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The unique identifier of node.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>tId rules: setting.treeId + "_" + zTree counter</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Get the first selected node's tId</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var tId = sNodes[0].tId;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.target.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.target.html
new file mode 100755
index 00000000..176a7a35
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.target.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>target</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Used to set the target where the node is clicked to open url. It is valid when <span class="highlight_red">[treeNode.url exists]</span></p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>As same as &lt;a&gt; tag's 'target' attribute. e.g. '_blank', '_self' or other window name.</p>
+ <p>if this attribute is omitted, zTree default set it to '_blank'</p>
+ </div>
+ <h3>Exmaples of treeNode</h3>
+ <h4>1. Set target is '_blank'</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"test1", "url":"http://myTest.com", "target":"_blank"},
+ ......
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.url.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.url.html
new file mode 100755
index 00000000..55524455
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.url.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>String</span><span class="path">treeNode.</span>url</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The URL of node link</p>
+ <p class="highlight_red">1. In edit mode (setting.edit.enable = true) , this feature fails. If you must use a similar feature, please use the 'onClick' callback for their own control.</p>
+ <p class="highlight_red">2. If you use the 'onClick' callback function to control opening URL , then set the URL in the other custom attribute, do not use the 'url' attribute.</p>
+ <p>Default: undefined</p>
+ </div>
+ </div>
+ <h3>String Format</h3>
+ <div class="desc">
+ <p>As same as &lt;a&gt; tag's 'href' attribute.</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Set the URL is 'g.cn'</h4>
+ <pre xmlns=""><code>var nodes = [
+ { "id":1, "name":"Google CN", "url":"http://g.cn"},
+ ......
+]</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.zAsync.html b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.zAsync.html
new file mode 100755
index 00000000..b3ff4145
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/treeNode.zAsync.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Boolean</span><span class="path">treeNode.</span>zAsync</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Judge whether the parent node's child nodes will be loaded asynchronously when the parent node is expanded.</p>
+ <p class="highlight_red">Do not initialize or modify it, it is created by the zTree.</p>
+ <p class="highlight_red">Default:false (the parent node which have no child nodes); true (the parent node which have child nodes or the leaf node)</p>
+ </div>
+ </div>
+ <h3>Boolean Format</h3>
+ <div class="desc">
+ <p> true means: the node's child nodes will not be loaded asynchronously when the parent node is expanded.</p>
+ <p> false means: the node's child nodes will be loaded asynchronously when the parent node is expanded.</p>
+ <p class="highlight_red"> This attribute will not effect to 'reAsyncChildNodes()' method</p>
+ </div>
+ <h3>Examples of treeNode</h3>
+ <h4>1. Judge whether the first selected node's child nodes has been loaded asynchronously</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var sNodes = treeObj.getSelectedNodes();
+if (sNodes.length > 0) {
+ var zAsync = sNodes[0].zAsync;
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.addNodes.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.addNodes.html
new file mode 100755
index 00000000..680ccc4e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.addNodes.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(parentNode, newNodes, isSilent)</span><span class="path">zTreeObj.</span>addNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Add nodes</p>
+ <p class="highlight_red">In order to avoid duplication data resulting from repeated initialization, zTree v3.x will automatically clone node data when zTree initialized or add nodes. If you need to get the data objects within the zTree, please get the return value of this method.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>parentNode</b><span>JSON</span></h4>
+ <p>The additional node's parent node. If additional node is root node, please the parentNode is null.</p>
+ <p class="highlight_red">Please ensure this node data object is a data object within zTree.</p>
+ <h4 class="topLine"><b>newNodes</b><span>JSON / Array(JSON)</span></h4>
+ <p>The node data's JSON object collection which need to increase, refer to 'treeNode treeNode data details'</p>
+ <p class="highlight_red">1. zTree v3.x support to add single node, that is, if you only add a node, you can don't use the array.</p>
+ <p class="highlight_red">2. If you use simple data model, please refer to the attributes within the 'setting.data.simpleData'.</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>Set whether to automatically expand the parent node, after add nodes.</p>
+ <p>isSilent = true means: don't auto expand the parent node. Otherwise auto expand.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON)</span></h4>
+ <p>return the new nodes in zTree</p>
+ <p class="highlight_red">If the newNodes is single data object, the return value is a array with length is 1.</p>
+ <p class="highlight_red">Note: the node data JSON object in the return value is not equal to the JSON object in the 'newNodes'.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Add one root node to zTree which id is 'tree'</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var newNode = {name:"newNode1"};
+newNode = treeObj.addNodes(null, newNode);
+</code></pre>
+ <h4>2. Add three root nodes to zTree which id is 'tree'</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var newNodes = [{name:"newNode1"}, {name:"newNode2"}, {name:"newNode3"}];
+newNodes = treeObj.addNodes(null, newNodes);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.cancelEditName.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.cancelEditName.html
new file mode 100755
index 00000000..8afdae0b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.cancelEditName.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(newName)</span><span class="path">zTreeObj.</span>cancelEditName</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Cancel the edit name status. Can restore the original name, and can also force assigned to a new name.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>newName</b><span>String</span></h4>
+ <p>Re given a new name</p>
+ <p class="highlight_red">If this parameter is omitted, then restore the original name.</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Cancel edit name, and restore the original name.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.cancelEditName();
+</code></pre>
+ <h4>2. Cancel edit name , and set the new name.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.cancelEditName("test_new_name");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.cancelSelectedNode.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.cancelSelectedNode.html
new file mode 100755
index 00000000..581c2d2b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.cancelSelectedNode.html
@@ -0,0 +1,35 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>cancelSelectedNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>To cancel the selected node.</p>
+ <p class="highlight_red">zTree v3.x support to select multiple nodes, so you can cancel a single selected node, and you can cancel all of the selected nodes too.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to cancel selected.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <p class="highlight_red">If you omit this parameter, zTree will cancel all of the selected nodes.</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Cancel all of the selected nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.cancelSelectedNode();
+</code></pre>
+ <h4>2. Cancel the first node of the selected nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNode();
+if (nodes.length>0) {
+ treeObj.cancelSelectedNode(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.checkAllNodes.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.checkAllNodes.html
new file mode 100755
index 00000000..276b6294
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.checkAllNodes.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(checked)</span><span class="path">zTreeObj.</span>checkAllNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Check or unCheck all nodes which have been initialized. It is valid when <span class="highlight_red">[setting.check.enable = true & setting.check.chkStyle = "checkbox"]</span></p>
+ <p class="highlight_red">This method does not trigger 'beforeCheck' or 'onCheck' callback function.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>checked</b><span>Boolean</span></h4>
+ <p>checked = true means: check all nodes.</p>
+ <p>checked = false means: uncheck all nodes.</p>
+ <p class="highlight_red">Don't affect the node which 'nochecked' attribute is true.</p>
+ <p class="highlight_red">Don't affect the node is not loaded.</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. check all nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.checkAllNodes(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.checkNode.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.checkNode.html
new file mode 100755
index 00000000..7411ef86
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.checkNode.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, checked, checkTypeFlag, callbackFlag)</span><span class="path">zTreeObj.</span>checkNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Check or unCheck a single node. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">Use checkNode() method of zTree v3.x can trigger 'beforeCheck' or 'onCheck' callback function. for reduce redundant code.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to be checked or unchecked.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>checked</b><span>Boolean</span></h4>
+ <p>checked = true means: check node.</p>
+ <p>checked = false means: uncheck node.</p>
+ <p class="highlight_red">If this parameter is omitted, then toggle check or uncheck depend this node's expanded state.</p>
+ <p class="highlight_red">Don't affect the node which 'nochecked' attribute is true.</p>
+ <h4 class="topLine"><b>checkTypeFlag</b><span>Boolean</span></h4>
+ <p>checkTypeFlag = true means: According to 'setting.check.chkboxType' attribute automatically check or uncheck the parent and child nodes.</p>
+ <p>checkTypeFlag = false means: only check or uncheck this node, don't affect its parent and child nodes.</p>
+ <p class="highlight_red">When checkTypeFlag = false and treeNode.checked = checked, will not trigger callback function.</p>
+ <p class="highlight_red">Don't affect the parent and child nodes which 'nochecked' attribute is true.</p>
+ <h4 class="topLine"><b>callbackFlag</b><span>Boolean</span></h4>
+ <p>callbackFlag = true means: call this method, will trigger 'beforeCheck' & 'onCheck' callback.</p>
+ <p>callbackFlag = false means: call this method, will not trigger callback.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'callbackFlag = false'</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. check the selected nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+for (var i=0, l=nodes.length; i < l; i++) {
+ treeObj.checkNode(nodes[i], true, true);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.copyNode.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.copyNode.html
new file mode 100755
index 00000000..a98e84de
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.copyNode.html
@@ -0,0 +1,47 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(targetNode, treeNode, moveType, isSilent)</span><span class="path">zTreeObj.</span>copyNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Copy the node</p>
+ <p class="highlight_red">When copy nodes, zTree v3.x will clone nodes. If you need to get the data object in zTree, please get the return value of this method.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>targetNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be target.</p>
+ <p class="highlight_red">If copy the node to root node, please set the 'targetNode' to null.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be copied.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>Copied to the target node's relative position.</p>
+ <p class="highlight_red">"inner" means: to be taregetNode's child node.</p>
+ <p class="highlight_red">"prev" means: to be taregetNode's previous sibling node.</p>
+ <p class="highlight_red">"next" means: to be taregetNode's next sibling node.</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>After copy the node, whether to automatically expand its parent node.</p>
+ <p>isSilent = true means: don't expand its parent node.</p>
+ <p>isSilent = false or omit this parameter means: expand its parent node.</p>
+ <h4 class="topLine"><b>Return </b><span>JSON</span></h4>
+ <p>return the new node in zTree</p>
+ <p class="highlight_red">Note: the node data JSON object in the return value is not equal to the treeNode.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Copy the second root node to the first root node's child node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.copyNode(nodes[0], nodes[1], "inner");
+</code></pre>
+ <h4>2. Copy the second root node to the first root node's previous sibling node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.copyNode(nodes[0], nodes[1], "before");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.destroy.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.destroy.html
new file mode 100755
index 00000000..80c52811
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.destroy.html
@@ -0,0 +1,25 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeId)</span><span class="path">zTreeObj.</span>destroy</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>From zTree v3.4, zTree support the method for destruction.</p>
+ <p>1. This method can destroy the zTreeObj's zTree.</p>
+ <p class="highlight_red">2. If you want to destory all of the zTrees, you can use the '$.fn.zTree.destroy()' method.</p>
+ <p class="highlight_red">3. If you want to use the tree which has been destroyed, you must use the 'init()' method at first.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. destroy the zTree which its id is 'treeDemo'</h4>
+ <pre xmlns=""><code>var zTreeObj = $.fn.zTree.getZTreeObj("treeDemo");
+zTreeObj.destroy();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.editName.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.editName.html
new file mode 100755
index 00000000..92ac5c1c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.editName.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>editName</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Start editing the node's name.</p>
+ <p class="highlight_red">1. If need to cancel editing the node's name, please use cancelEditName(newName) method.</p>
+ <p class="highlight_red">2. This method can be used to set the editing node‘s input box to get focus.</p>
+ <p class="highlight_red">3. Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be editing name</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>Retrun </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Start editing the first selected node's name.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.editName(nodes[0]);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.expandAll.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.expandAll.html
new file mode 100755
index 00000000..ef28a316
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.expandAll.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(expandFlag)</span><span class="path">zTreeObj.</span>expandAll</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Expand or collapse all nodes.</p>
+ <p class="highlight_red">This method does not trigger 'beforeExpand / onExpand' or 'beforeCollapse / onCollapse' callback function.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>expandFlag</b><span>Boolean</span></h4>
+ <p>expandFlag = true means: expand all nodes.</p>
+ <p>expandFlag = false means: collapse all nodes.</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return the result of expand or collapse.</p>
+ <p>true means: expand all nodes</p>
+ <p>false means: collapse all nodes</p>
+ <p>null means: have no parent node to expand or collapse.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Expand all nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.expandAll(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.expandNode.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.expandNode.html
new file mode 100755
index 00000000..f99ff77d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.expandNode.html
@@ -0,0 +1,50 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, expandFlag, sonSign, focus, callbackFlag)</span><span class="path">zTreeObj.</span>expandNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Expand or collapse single node.</p>
+ <p class="highlight_red">Use expandNode() method of zTree v3.x can trigger 'beforeExpand / onExpand' or 'beforeCollapse / onCollapse' callback function. for reduce redundant code.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be expanded or collapsed</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>expandFlag</b><span>Boolean</span></h4>
+ <p>expandFlag = true means: expand the node.</p>
+ <p>expandFlag = false means: collapse the node.</p>
+ <p class="highlight_red">If this parameter is omitted, then toggle expand or collapse depend this node's expanded state.</p>
+ <h4 class="topLine"><b>sonSign</b><span>Boolean</span></h4>
+ <p>sonSign = true means: expand or collapse all of the child nodes depend the 'expandFlag' parameter.</p>
+ <p>sonSign = false means: only expand or collapse this node.</p>
+ <p class="highlight_red">When sonSign = false and treeNode.open = expandFlag, will not trigger the callback.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'sonSign = false'.</p>
+ <h4 class="topLine"><b>focus</b><span>Boolean</span></h4>
+ <p>focus = true means: after expand or collapse, set the focus of this node for view.</p>
+ <p>focus = false means: after expand or coolapse, don't set the focus of this node.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'focus = true'.</p>
+ <h4 class="topLine"><b>callbackFlag</b><span>Boolean</span></h4>
+ <p>callbackFlag = true means: call this method, will trigger 'beforeExpand / onExpand' or 'beforeCollapse / onCollapse' callback.</p>
+ <p>callbackFlag = false means: call this method, will not trigger callback.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'callbackFlag = false'</p>
+ <h4 class="topLine"><b>Return </b><span>Boolean</span></h4>
+ <p>return the result of expand or collapse.</p>
+ <p>true means: expand node</p>
+ <p>false means: collapse node</p>
+ <p>null means: the node is not parent node.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Expand the first selected node. (and expand this node's child nodes)</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes.length>0) {
+ treeObj.expandNode(nodes[0], true, true, true);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getChangeCheckedNodes.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getChangeCheckedNodes.html
new file mode 100755
index 00000000..d0f9cf3b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getChangeCheckedNodes.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>getChangeCheckedNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the collection of nodes which be changed checked status. (Compared with the original data checkedOld) It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return </b><span>Array(JSON)</span></h4>
+ <p>return the collection of nodes which be changed checked status (Array)</p>
+ <p class="highlight_red">If you need to get the collection of nodes which changed the checked status, when nodes be checked or unchecked, so please set treeNode.checkedOld = treeNode.checked ( for all of the be changed checked status nodes ).</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Get the collection of nodes which be changed checked status</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getChangeCheckedNodes();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getCheckedNodes.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getCheckedNodes.html
new file mode 100755
index 00000000..7a7c3b97
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getCheckedNodes.html
@@ -0,0 +1,28 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(checked)</span><span class="path">zTreeObj.</span>getCheckedNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the collection of nodes which be checked or unchecked. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>checked</b><span>Boolean</span></h4>
+ <p>checked = true means: get the collection of nodes which be checked</p>
+ <p>checked = false means: get the collection of nodes which be unchecked</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'checked = true'</p>
+ <p class="highlight_red">Don't get the nodes which 'nochecked' attribute is true.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON)</span></h4>
+ <p>return the collection of nodes which be checked or unchecked. (Array)</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Get the collection of nodes which be checked.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getCheckedNodes(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodeByParam.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodeByParam.html
new file mode 100755
index 00000000..05572e73
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodeByParam.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(key, value, parentNode)</span><span class="path">zTreeObj.</span>getNodeByParam</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>According to the node data attribute, search the node which exactly matches, and get the JSON object of node.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>key</b><span>String</span></h4>
+ <p>The name of attribute which need to exactly match</p>
+ <h4 class="topLine"><b>value</b><span>?</span></h4>
+ <p>The value which need to exactly match, can be any type, please ensure its type consistent with the attribute values.</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>The search range, you can search node from a parent node's child nodes.</p>
+ <p class="highlight_red">If this parameter is omitted, zTree will search node from all nodes.</p>
+ <h4 class="topLine"><b>Return </b><span>JSON</span></h4>
+ <p>JSON data object of the node which be searched.</p>
+ <p class="highlight_red">1. If search none node, return null.</p>
+ <p class="highlight_red">2. If there are many nodes can be searched, return the first node.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Search the node which its 'id' attribute is 1.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodeByParam("id", 1, null);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodeByTId.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodeByTId.html
new file mode 100755
index 00000000..8fd26ea0
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodeByTId.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(tId)</span><span class="path">zTreeObj.</span>getNodeByTId</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>According the unique identifier tId of zTree, quick get the node's JSON data object.</p>
+ <p class="highlight_red">Get the node from the cache, don't need to search from all nodes.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>tId</b><span>String</span></h4>
+ <p>The unique identifier of node.</p>
+ <h4 class="topLine"><b>Return </b><span>JSON</span></h4>
+ <p>JSON data object of the node which be searched.</p>
+ <p class="highlight_red">If no result, return null.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. 1. Search the node which its 'tId' attribute is 'tree_10'</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodeByTId("tree_10");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodeIndex.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodeIndex.html
new file mode 100755
index 00000000..ad828e7a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodeIndex.html
@@ -0,0 +1,30 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>getNodeIndex</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the node's index in the same level nodes. (start from 0)</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to get index.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>Return </b><span>Number</span></h4>
+ <p class="highlight_red">return the index. (start from 0)</p>
+ <p class="highlight_red">If there is no this node, return -1.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Get the first selected node's index in the same level nodes.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes.length>0) {
+ var index = treeObj.getNodeIndex(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodes.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodes.html
new file mode 100755
index 00000000..5906a434
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodes.html
@@ -0,0 +1,26 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>getNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get all of the nodes in zTree</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return </b><span>Array(JSON)</span></h4>
+ <p>return all of the nodes</p>
+ <p class="highlight_red">1. This array is a collection of the root nodes (the default child nodes are in the 'children' attributes);</p>
+ <p class="highlight_red">2. Traverse all the nodes need to use recursion, or the use of transformToArray() method make the nodes to be a simple array.</p>
+ <p class="highlight_red">3. For the asynchronous loading mode, can't get the nodes which are yet loaded.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Get all of the nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodesByFilter.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodesByFilter.html
new file mode 100755
index 00000000..2cd6baa8
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodesByFilter.html
@@ -0,0 +1,43 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(filter, isSingle, parentNode, invokeParam)</span><span class="path">zTreeObj.</span>getNodesByFilter</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Search the single node's data or collection of nodes's data by custom rules.</p>
+ <p class="highlight_red">Can be customized complex search rules.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>filter</b><span>Function</span></h4>
+ <p>Custom search function. e.g. function filter(node) {...}</p>
+ <p>filter's parameter: node (node's data -- JSON)</p>
+ <p>filter's return: boolean (true means: match the rules; false means: don't match the rules)</p>
+ <h4 class="topLine"><b>isSingle</b><span>Boolean</span></h4>
+ <p>isSingle = true means: search only one node</p>
+ <p>isSingle = false means: search the array of the nodes</p>
+ <p class="highlight_red">If this parameter is omitted, as same as false</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>The search range, you can search node from a parent node's child nodes.</p>
+ <p class="highlight_red">If this parameter is omitted, zTree will search node from all nodes.</p>
+ <h4 class="topLine"><b>invokeParam</b><span>anything</span></h4>
+ <p>Custom data object by user, used to calculate in the filter function.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON) / JSON</span></h4>
+ <p>If isSingle = true, will return the first node's data (JSON) what be matched. If no match, return null.</p>
+ <p>If isSingle = false, will return the array of all nodes's data what be matched. if no match, return [ ].</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Search the nodes which their 'name' contains 'test' and 'level' is 2.</h4>
+ <pre xmlns=""><code>function filter(node) {
+ return (node.level == 2 && node.name.indexOf("test")>-1);
+}
+......
+var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodesByFilter(filter, true); // search only one node
+var nodes = treeObj.getNodesByFilter(filter); // search the array of the nodes
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodesByParam.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodesByParam.html
new file mode 100755
index 00000000..3173af47
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodesByParam.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(key, value, parentNode)</span><span class="path">zTreeObj.</span>getNodesByParam</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>According to the node data attribute, search the nodes which exactly matches, and get the JSON objects collection of nodes.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>key</b><span>String</span></h4>
+ <p>The name of attribute which need to exactly match</p>
+ <h4 class="topLine"><b>value</b><span>?</span></h4>
+ <p>The value which need to exactly match, can be any type, please ensure its type consistent with the attribute values.</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>The search range, you can search node from a parent node's child nodes.</p>
+ <p class="highlight_red">If this parameter is omitted, zTree will search node from all nodes.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON)</span></h4>
+ <p>The JSON data objects collection of the nodes which be searched.</p>
+ <p class="highlight_red">If search none node, return [ ].</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Search the nodes which their 'name' attribute is 'test'.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodesByParam("name", "test", null);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodesByParamFuzzy.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodesByParamFuzzy.html
new file mode 100755
index 00000000..14b6c294
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodesByParamFuzzy.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(key, value, parentNode)</span><span class="path">zTreeObj.</span>getNodesByParamFuzzy</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>According to the node data attribute, search the nodes which fuzzy matches, and get the JSON objects collection of nodes.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>key</b><span>String</span></h4>
+ <p>The name of attribute which need to fuzzy match</p>
+ <h4 class="topLine"><b>value</b><span>String</span></h4>
+ <p>The value which need to fuzzy match.</p>
+ <p class="highlight_red">The type of value can only be String</p>
+ <h4 class="topLine"><b>parentNode</b><span>JSON</span></h4>
+ <p>The search range, you can search node from a parent node's child nodes.</p>
+ <p class="highlight_red">If this parameter is omitted, zTree will search node from all nodes.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON)</span></h4>
+ <p>The JSON data objects collection of the nodes which be searched.</p>
+ <p class="highlight_red">If search none node, return [ ].</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Search the nodes which their 'name' attribute contains the string 'test'.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodesByParamFuzzy("name", "test", null);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getSelectedNodes.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getSelectedNodes.html
new file mode 100755
index 00000000..4a0f0608
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getSelectedNodes.html
@@ -0,0 +1,23 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>getSelectedNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Get the JSON data objects collection of the selected nodes in zTree.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return </b><span>Array(JSON)</span></h4>
+ <p>The JSON data objects collection of the selected nodes.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. get the selected nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.hideNode.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.hideNode.html
new file mode 100755
index 00000000..f02f523d
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.hideNode.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>hideNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exhide</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>To hide any node.</p>
+ <p class="highlight_red">1. This feature can't support the 'exedit' feature, so please don't use this feature in edit mode.</p>
+ <p class="highlight_red">2. If you hide or show the nodes, it will effect the 'isFirstNode' and 'isLastNode' attribute.</p>
+ <p class="highlight_red">3. Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be hidden</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>Retrun </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. hide the first root node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.hideNode(nodes[0]);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.hideNodes.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.hideNodes.html
new file mode 100755
index 00000000..9bf8e6b5
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.hideNodes.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNodes)</span><span class="path">zTreeObj.</span>hideNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exhide</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>To hide a group of nodes.</p>
+ <p class="highlight_red">1. This feature can't support the 'exedit' feature, so please don't use this feature in edit mode.</p>
+ <p class="highlight_red">2. If you hide or show the nodes, it will effect the 'isFirstNode' and 'isLastNode' attribute.</p>
+ <p class="highlight_red">3. Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>the array of the nodes which will be hidden</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>Retrun </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. hide the first root node's children.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.hideNodes(nodes[0].children);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.moveNode.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.moveNode.html
new file mode 100755
index 00000000..93f066bf
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.moveNode.html
@@ -0,0 +1,49 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(targetNode, treeNode, moveType, isSilent)</span><span class="path">zTreeObj.</span>moveNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Move the node</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>targetNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be target.</p>
+ <p class="highlight_red">If move the node to root node, please set the 'targetNode' to null.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be moved.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>moveType</b><span>String</span></h4>
+ <p>Moved to the target node's relative position.</p>
+ <p class="highlight_red">"inner" means: to be taregetNode's child node.</p>
+ <p class="highlight_red">"prev" means: to be taregetNode's previous sibling node.</p>
+ <p class="highlight_red">"next" means: to be taregetNode's next sibling node.</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>After move the node, whether to automatically expand its parent node.</p>
+ <p>isSilent = true means: don't expand its parent node.</p>
+ <p>isSilent = false or omit this parameter means: expand its parent node.</p>
+ <h4 class="topLine"><b>Return </b><span>JSON</span></h4>
+ <p>return the node which be moved, it is same as the 'treeNode' parameter.</p>
+ <p class="highlight_red">Return null means: move node has failed. The cause:<br/>
+ &nbsp;1. the targetNode is the treeNode's parent node, and moveType = "inner"<br/>
+ &nbsp;2. the targetNode is the treeNode's child node.
+ </p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Move the second root node to the first root node's child node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.moveNode(nodes[0], nodes[1], "inner");
+</code></pre>
+ <h4>2. Move the second root node to the first root node's previous sibling node.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+treeObj.moveNode(nodes[0], nodes[1], "prev");
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.reAsyncChildNodes.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.reAsyncChildNodes.html
new file mode 100755
index 00000000..63a0896c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.reAsyncChildNodes.html
@@ -0,0 +1,42 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(parentNode, reloadType, isSilent)</span><span class="path">zTreeObj.</span>reAsyncChildNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Forced asynchronous loading child nodes of parent node. It is valid when <span class="highlight_red">[setting.async.enable = true]</span></p>
+ <p class="highlight_red">You can use this method to reload child nodes.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>parentNode</b><span>JSON</span></h4>
+ <p>The parent node which will asynchronous loading child nodes.</p>
+ <p class="highlight_red">1. If parentNode = null, it is same as reload root nodes.</p>
+ <p class="highlight_red">2. If parentNode.isParent = false, don't load nodes.</p>
+ <p class="highlight_red">3. Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>reloadType</b><span>String</span></h4>
+ <p>reloadType = "refresh" means: reload child nodes.</p>
+ <p>reloadType != "refresh" means: append to load child nodes.</p>
+ <h4 class="topLine"><b>isSilent</b><span>Boolean</span></h4>
+ <p>Set whether to automatically expand the parent node, after load nodes.</p>
+ <p>isSilent = true means: don't auto expand the parent node. Otherwise auto expand.</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. reload root nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.reAsyncChildNodes(null, "refresh");
+</code></pre>
+ <h4>2. reload the first selected node's child nodes.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes.length>0) {
+ treeObj.reAsyncChildNodes(nodes[0], "refresh");
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.refresh.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.refresh.html
new file mode 100755
index 00000000..8316192c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.refresh.html
@@ -0,0 +1,24 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function()</span><span class="path">zTreeObj.</span>refresh</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Refresh zTree</p>
+ <p class="highlight_red">If you have no special need, try not to use this method. If you refresh single node, please use updateNode() method. If you refresh child nodes in dynamic mode, please use the reAsyncChildNodes() method.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. refresh zTree </h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.refresh();
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.removeChildNodes.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.removeChildNodes.html
new file mode 100755
index 00000000..c249e175
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.removeChildNodes.html
@@ -0,0 +1,32 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(parentNode)</span><span class="path">zTreeObj.</span>removeChildNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Remove a parent node's child nodes</p>
+ <p class="highlight_red">1. After remove child nodes, the parent node will become a leaf node. Such as the need to maintain the parent node is still a parent node, set 'setting.data.keep.parent' attribute.</p>
+ <p class="highlight_red">2. Do not use this method to empty the root. If you need to empty the root, you can initialization zTree, and set the initial nodes is null.</p>
+ <p class="highlight_red">3. This method does not trigger any callback function.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>parentNode</b><span>JSON</span></h4>
+ <p>The parent node which need to clear its child nodes.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON)</span></h4>
+ <p>Return the parent node's child nodes which have been removed. If has no child nodes, return null.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Remove the first selected node's child nodes</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+if (nodes && nodes.length>0) {
+ treeObj.removeChildNodes(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.removeNode.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.removeNode.html
new file mode 100755
index 00000000..605322f3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.removeNode.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, callbackFlag)</span><span class="path">zTreeObj.</span>removeNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Remove a node</p>
+ <p class="highlight_red">Use removeNode() method of zTree v3.x can trigger 'beforeRemove / onRemove' callback function. for reduce redundant code.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be removed.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>callbackFlag</b><span>Boolean</span></h4>
+ <p>callbackFlag = true means: call this method, will trigger 'beforeRemove' & 'onRemove' callback.</p>
+ <p>callbackFlag = false means: call this method, will not trigger callback.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'callbackFlag = false'</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Remove all of the selected nodes.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+for (var i=0, l=nodes.length; i < l; i++) {
+ treeObj.removeNode(nodes[i]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.selectNode.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.selectNode.html
new file mode 100755
index 00000000..237f1996
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.selectNode.html
@@ -0,0 +1,34 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, addFlag)</span><span class="path">zTreeObj.</span>selectNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Select a node</p>
+ <p class="highlight_red">zTree v3.x supports select multiple nodes.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which will be selected.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>addFlag</b><span>Boolean</span></h4>
+ <p>addFlag = true means: append to select node, don't affect the previously selected node, can select multiple nodes.</p>
+ <p>addFlag = false means: select single node, prior the selected node is deselected.</p>
+ <p class="highlight_red">If setting.view.selectedMulti = false, this para, this parameter is not valid, always select single node</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Exampleso of function</h3>
+ <h4>1. Select single node which be first selected.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+if (nodes.length>0) {
+ treeObj.selectNode(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.setChkDisabled.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.setChkDisabled.html
new file mode 100755
index 00000000..1d645e8f
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.setChkDisabled.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(node, disabled, inheritParent, inheritChildren)</span><span class="path">zTreeObj.</span>setChkDisabled</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.excheck</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Set the node's checkbox or radio is disabled or remove disabled. It is valid when <span class="highlight_red">[setting.check.enable = true]</span></p>
+ <p class="highlight_red">1. After the node's checkbox / radio is disabled, it can not be checked or unchecked, but it can affect the half-checked status of the parent node.</p>
+ <p class="highlight_red">2. Please do not directly modify the 'chkDisabled' attribute of the loaded node.</p>
+ <p class="highlight_red">3. Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to be checked or unchecked.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>disabled</b><span>Boolean</span></h4>
+ <p>disabled = true means: the node's checkbox / radio is disabled.</p>
+ <p>disabled = false means: the node's checkbox / radio is removed disabled.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as disabled = false </p>
+ <p class="highlight_red">Don't affect the node which 'nochecked' attribute is true.</p>
+ <h4 class="topLine"><b>inheritParent</b><span>Boolean</span></h4>
+ <p>inheritParent = true means: all parent nodes's disabled status will be same as this node.</p>
+ <p>inheritParent = false means: all parent nodes's disabled status will be not affected.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'inheritParent = false'</p>
+ <h4 class="topLine"><b>inheritChildren</b><span>Boolean</span></h4>
+ <p>inheritChildren = true means: all child nodes's disabled status will be same as this node.</p>
+ <p>inheritChildren = false means: all child nodes's disabled status will be not affected.</p>
+ <p class="highlight_red">If this parameter is omitted, it is same as 'inheritChildren = false'</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Set the selected nodes's checkbox / radio to be disabled.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getSelectedNodes();
+for (var i=0, l=nodes.length; i < l; i++) {
+ treeObj.setChkDisabled(nodes[i], true);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.setEditable.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.setEditable.html
new file mode 100755
index 00000000..a44b0ff6
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.setEditable.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(editable)</span><span class="path">zTreeObj.</span>setEditable</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exedit</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Edit mode and normal mode switch.</p>
+ <p class="highlight_red">To use edit mode, please set the attributes in 'setting.edit'</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>editable</b><span>Boolean</span></h4>
+ <p>true means: set zTree to edit mode.</p>
+ <p>false means: set zTree to normal mode.</p>
+ <h4><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. set zTree to edit mode</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+treeObj.setEditable(true);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.setting.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.setting.html
new file mode 100755
index 00000000..d80c139a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.setting.html
@@ -0,0 +1,14 @@
+<div class="apiDetail">
+<div>
+ <h2><span>JSON</span><span class="path">zTreeObj.</span>setting</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>The configuration data of zTree, refer to "<span class="highlight_red">setting details</span>" </p>
+ <p class="highlight_red">zTree v3.x to cancel the original operation setting method, so users can modify.</p>
+ <p class="highlight_red">Note: Modify the parameters which affect zTree initialization will not work, please first understand the different attributes.</p>
+ </div>
+ </div>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.showNode.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.showNode.html
new file mode 100755
index 00000000..53b5cbda
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.showNode.html
@@ -0,0 +1,31 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode)</span><span class="path">zTreeObj.</span>showNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exhide</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>To hide any node which be hidden.</p>
+ <p class="highlight_red">1. This feature can't support the 'exedit' feature, so please don't use this feature in edit mode.</p>
+ <p class="highlight_red">2. If you hide or show the nodes, it will effect the 'isFirstNode' and 'isLastNode' attribute.</p>
+ <p class="highlight_red">3. Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>JSON data object of the node which will be shown</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>Retrun </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. show someone node which be hidden.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var node = treeObj.getNodeByParam("isHidden", true);
+if (node) {
+ treeObj.showNode(node);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.showNodes.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.showNodes.html
new file mode 100755
index 00000000..c0c926c3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.showNodes.html
@@ -0,0 +1,29 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNodes)</span><span class="path">zTreeObj.</span>showNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.exhide</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>To show a group of nodes which be hidden.</p>
+ <p class="highlight_red">1. This feature can't support the 'exedit' feature, so please don't use this feature in edit mode.</p>
+ <p class="highlight_red">2. If you hide or show the nodes, it will effect the 'isFirstNode' and 'isLastNode' attribute.</p>
+ <p class="highlight_red">3. Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNodes</b><span>Array(JSON)</span></h4>
+ <p>the array of the nodes which will be shown</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>Retrun </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. show all of the nodes which be hidden.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodesByParam("isHidden", true);
+treeObj.showNodes(nodes);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.transformToArray.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.transformToArray.html
new file mode 100755
index 00000000..4b2296d5
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.transformToArray.html
@@ -0,0 +1,27 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNodes)</span><span class="path">zTreeObj.</span>transformToArray</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p></p>
+ <p>Transform the zTree nodes data into simple array. (To avoid the user to write code to traverse all nodes)</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNodes</b><span>Array(JSON) / JSON</span></h4>
+ <p>JSON data object of the node which need to be transformed.</p>
+ <p>or JSON data objects collection of the nodes which need to be transformed.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON)</span></h4>
+ <p>The JSON data objects array of the nodes which be transformed.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Transform the zTree nodes data into simple array.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.transformToArray(treeObj.getNodes());
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.transformTozTreeNodes.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.transformTozTreeNodes.html
new file mode 100755
index 00000000..51d4a629
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.transformTozTreeNodes.html
@@ -0,0 +1,44 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(simpleNodes)</span><span class="path">zTreeObj.</span>transformTozTreeNodes</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Transform the simple array into zTree nodes data.</p>
+ <p class="highlight_red">If you use this method, you must set 'setting.data.simpleData.idKey' and 'setting.data.simpleData.pIdKey' attribute, and let the data are consistent with parent-child relationship.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>simpleNodes</b><span>Array(JSON) / JSON</span></h4>
+ <p>JSON data object of the node which need to be transformed.</p>
+ <p>or JSON data objects array of the nodes which need to be transformed.</p>
+ <h4 class="topLine"><b>Return </b><span>Array(JSON)</span></h4>
+ <p>Standard data which zTree use. The child nodes are stored in the parent node's 'children' attribute.</p>
+ <p class="highlight_red">If simpleNodes is a single JSON, so the return array's length is 1.</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Transform the simple array data into zTree nodes format.</h4>
+ <pre xmlns=""><code>var setting = {
+ data: {
+ simpleData: {
+ enable: true,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: 0,
+ }
+ }
+};
+var simpleNodes = [
+ {"id":1, "pId":0, "name":"test1"},
+ {"id":11, "pId":1, "name":"test11"},
+ {"id":12, "pId":1, "name":"test12"},
+ {"id":111, "pId":11, "name":"test111"}
+];
+var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.transformTozTreeNodes(simpleNodes);
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.updateNode.html b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.updateNode.html
new file mode 100755
index 00000000..7639ff41
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.updateNode.html
@@ -0,0 +1,37 @@
+<div class="apiDetail">
+<div>
+ <h2><span>Function(treeNode, checkTypeFlag)</span><span class="path">zTreeObj.</span>updateNode</h2>
+ <h3>Overview<span class="h3_info">[ depends on <span class="highlight_green">jquery.ztree.core</span> js ]</span></h3>
+ <div class="desc">
+ <p></p>
+ <div class="longdesc">
+ <p>Update node data. Primarily used to update the node's DOM.</p>
+ <p class="highlight_red">1. Can update the attributes for display (e.g. 'name', 'target', 'url', 'icon', 'iconSkin', 'checked', 'nocheck'), do not update the other attributes. For example: If you need to expand the node, please use expandNode() method, do not modify the 'open' attribute.</p>
+ <p class="highlight_red">2. Use updateNode() method of zTree can't trigger 'beforeCheck' or 'onCheck' callback function.</p>
+ <p class="highlight_red">Please use zTree object to executing the method.</p>
+ </div>
+ </div>
+ <h3>Function Parameter Descriptions</h3>
+ <div class="desc">
+ <h4><b>treeNode</b><span>JSON</span></h4>
+ <p>JSON data object of the node which need to update.</p>
+ <p class="highlight_red">Please ensure that this data object is an internal node data object in zTree.</p>
+ <h4 class="topLine"><b>checkTypeFlag</b><span>Boolean</span></h4>
+ <p>checkTypeFlag = true means: According to 'setting.check.chkboxType' attribute automatically check or uncheck the parent and child nodes.</p>
+ <p>checkTypeFlag = false means: only check or uncheck this node, don't affect its parent and child nodes.</p>
+ <p class="highlight_red">This parameter is valid when 'setting.check.enable = true' and 'setting.check.chkStyle = "checkbox"'</p>
+ <p class="highlight_red">Don't affect the parent and child nodes which 'nochecked' attribute is true.</p>
+ <h4 class="topLine"><b>Return </b><span>none</span></h4>
+ <p>no return value</p>
+ </div>
+ <h3>Examples of function</h3>
+ <h4>1. Modify the first selected node's name, and update it.</h4>
+ <pre xmlns=""><code>var treeObj = $.fn.zTree.getZTreeObj("tree");
+var nodes = treeObj.getNodes();
+if (nodes.length>0) {
+ nodes[0].name = "test";
+ treeObj.updateNode(nodes[0]);
+}
+</code></pre>
+</div>
+</div> \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/css/demo.css b/common/src/main/webapp/thirdparty/zTree/css/demo.css
new file mode 100755
index 00000000..84060069
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/demo.css
@@ -0,0 +1,33 @@
+/* html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
+ margin: 0;padding: 0;border: 0;outline: 0;font-weight: inherit;font-style: inherit;font-size: 100%;font-family: inherit;vertical-align: baseline;}
+body {color: #2f332a;font: 15px/21px Arial, Helvetica, simsun, sans-serif;background: #f0f6e4 \9;}
+h1, h2, h3, h4, h5, h6 {color: #2f332a;font-weight: bold;font-family: Helvetica, Arial, sans-serif;padding-bottom: 5px;}
+h1 {font-size: 24px;line-height: 34px;text-align: center;}
+h2 {font-size: 14px;line-height: 24px;padding-top: 5px;}
+h6 {font-weight: normal;font-size: 12px;letter-spacing: 1px;line-height: 24px;text-align: center;} */
+/* a {color:#3C6E31;text-decoration: underline;}
+a:hover {background-color:#3C6E31;color:white;} */
+input.radio {margin: 0 2px 0 8px;}
+input.radio.first {margin-left:0;}
+input.empty {color: lightgray;}
+code {color: #2f332a;}
+.highlight_red {color:#A60000;}
+.highlight_green {color:#A7F43D;}
+li {list-style: circle;font-size: 12px;}
+li.title {list-style: none;}
+ul.list {margin-left: 17px;}
+
+div.content_wrap {width: 600px;height:380px;}
+div.content_wrap div.left{float: left;width: 250px;}
+div.content_wrap div.right{float: right;width: 340px;}
+div.zTreeDemoBackground {width:250px;height:362px;text-align:left;}
+
+ul.ztree {margin-top: 10px;border: 1px solid #eee;/*background: #f0f6e4;width:220px;height:360px;*/overflow-y:auto;overflow-x:auto;/*ict*/padding: 25px;padding-right: 50px;}
+ul.log {border: 1px solid #617775;background: #f0f6e4;width:300px;height:170px;overflow: hidden;}
+ul.log.small {height:45px;}
+ul.log li {color: #666666;list-style: none;padding-left: 10px;}
+ul.log li.dark {background-color: #E3E3E3;}
+
+/* ruler */
+div.ruler {height:20px; width:220px; background-color:#f0f6e4;border: 1px solid #333; margin-bottom: 5px; cursor: pointer}
+div.ruler div.cursor {height:20px; width:30px; background-color:#3C6E31; color:white; text-align: right; padding-right: 5px; cursor: pointer} \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/ReadMe.txt b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/ReadMe.txt
new file mode 100755
index 00000000..c4ae4434
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/ReadMe.txt
@@ -0,0 +1 @@
+Èç¹ûÒýÈëµÄÊ÷×é¼þÎÞÐè¸üнڵ㣬ÈçÌí¼Óɾ³ý¸üÐÂÍÏק½Úµã£¬ÇëÒýÈëzTreeStyle_select.cssÎļþ¡£ \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/Thumbs.db b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/Thumbs.db
new file mode 100755
index 00000000..4fe7e7e2
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/Thumbs.db
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/1_close.png b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/1_close.png
new file mode 100755
index 00000000..68ccb3c3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/1_close.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/1_open.png b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/1_open.png
new file mode 100755
index 00000000..d6ff36d3
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/1_open.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/2.png b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/2.png
new file mode 100755
index 00000000..9eff506b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/2.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/3.png b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/3.png
new file mode 100755
index 00000000..d7ba6d0c
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/3.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/4.png b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/4.png
new file mode 100755
index 00000000..753e2bfd
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/4.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/5.png b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/5.png
new file mode 100755
index 00000000..0c5eccd5
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/5.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/6.png b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/6.png
new file mode 100755
index 00000000..070b8352
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/6.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/7.png b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/7.png
new file mode 100755
index 00000000..532b037f
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/7.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/8.png b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/8.png
new file mode 100755
index 00000000..a8f3a86e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/8.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/9.png b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/9.png
new file mode 100755
index 00000000..4db73cd4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/9.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/Thumbs.db b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/Thumbs.db
new file mode 100755
index 00000000..f4a46171
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/Thumbs.db
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/line_conn.gif b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/line_conn.gif
new file mode 100755
index 00000000..d561d36a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/line_conn.gif
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/loading.gif b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/loading.gif
new file mode 100755
index 00000000..e8c28929
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/loading.gif
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gif b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gif
new file mode 100755
index 00000000..50c94fd4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gif
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gifbak b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gifbak
new file mode 100755
index 00000000..50c94fd4
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gifbak
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.png b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.png
new file mode 100755
index 00000000..e831f6d1
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.png
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.pngbak b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.pngbak
new file mode 100755
index 00000000..ffda01ef
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.pngbak
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.psd b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.psd
new file mode 100755
index 00000000..e3630f4e
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.psd
Binary files differ
diff --git a/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/zTreeStyle.css b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/zTreeStyle.css
new file mode 100755
index 00000000..d40353f8
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/zTreeStyle.css
@@ -0,0 +1,107 @@
+/*-------------------------------------
+zTree Style
+
+version: 3.4
+author: Hunter.z
+email: hunter.z@263.net
+website: http://code.google.com/p/jquerytree/
+
+-------------------------------------*/
+
+.ztree * {padding:0; margin:0; font-size:14px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
+.ztree {margin:0; padding:5px; color:#333; /*overflow-x: auto;*/ overflow-x: visible;}
+.ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0}
+.ztree li ul{ margin:0; padding:0 0 0 18px}
+.ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;}
+
+.ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:30px; color:#333; background-color: transparent;
+ text-decoration:none; vertical-align:top; display: inline-block;
+ /*ict*/width:100%;
+ background: #fff;
+ border: 1px solid #eeeeee;
+ color: #606060;
+ padding: 10px ;
+ padding-top: 5px;
+ padding-right:10%;
+}
+.ztree li a:hover {text-decoration:underline}
+.ztree li a.curSelectedNode {padding-top:5px; background-color:#e7f2f9; color:#2a2a2a; height:28px; border:1px #accbdd solid; opacity:0.8;}
+.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#e7f2f9; color:#2a2a2a; height:16px; border:1px #accbdd solid; opacity:0.8;}
+.ztree li a.tmpTargetNode_inner {padding-top:5px; background-color:#316AC5; color:white; height:26px; border:1px #316AC5 solid;
+ opacity:0.8; filter:alpha(opacity=80)}
+.ztree li a.tmpTargetNode_prev {}
+.ztree li a.tmpTargetNode_next {}
+.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
+ font-size:12px; border:1px #7EC4CC solid; *border:0px}
+.ztree li span {line-height:16px; margin-right:2px}
+.ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle;
+ border:0 none; cursor: pointer;outline:none;
+ background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
+ background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
+
+.ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto}
+.ztree li span.button.chk.checkbox_false_full {background-position:0 0}
+.ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px}
+.ztree li span.button.chk.checkbox_false_part {background-position:0 -28px}
+.ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px}
+.ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px}
+.ztree li span.button.chk.checkbox_true_full {background-position:-14px 0}
+.ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px}
+.ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px}
+.ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px}
+.ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px}
+.ztree li span.button.chk.radio_false_full {background-position:-28px 0}
+.ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px}
+.ztree li span.button.chk.radio_false_part {background-position:-28px -28px}
+.ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px}
+.ztree li span.button.chk.radio_false_disable {background-position:-28px -56px}
+.ztree li span.button.chk.radio_true_full {background-position:-42px 0}
+.ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px}
+.ztree li span.button.chk.radio_true_part {background-position:-42px -28px}
+.ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px}
+.ztree li span.button.chk.radio_true_disable {background-position:-42px -56px}
+
+.ztree li span.button.switch {width:18px; height:18px}
+.ztree li span.button.root_open{background-position:-92px -54px}
+.ztree li span.button.root_close{background-position:-74px -54px}
+.ztree li span.button.roots_open{background-position:-92px 0}
+.ztree li span.button.roots_close{background-position:-74px 0}
+.ztree li span.button.center_open{background-position:-92px -18px}
+.ztree li span.button.center_close{background-position:-74px -18px}
+.ztree li span.button.bottom_open{background-position:-92px -36px}
+.ztree li span.button.bottom_close{background-position:-74px -36px}
+.ztree li span.button.noline_open{background-position:-92px -72px}
+.ztree li span.button.noline_close{background-position:-74px -72px}
+.ztree li span.button.root_docu{ background:none;}
+.ztree li span.button.roots_docu{background-position:-56px 0}
+.ztree li span.button.center_docu{background-position:-56px -18px}
+.ztree li span.button.bottom_docu{background-position:-56px -36px}
+.ztree li span.button.noline_docu{ background:none;}
+
+.ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle}
+.ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle}
+.ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle}
+/*ict*/
+.ztree li span.button.add {margin-left:2px; /* margin-right: -1px; */ margin-right: 2px; background-position:-144px 0; vertical-align:top; *vertical-align:middle;float: right;}
+.ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle;float: right;}
+.ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle;float: right;}
+
+.ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
+
+ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
+
+span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
+ background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
+ background-position:-110px -80px; background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
+
+ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
+.zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
+
+/* level style*/
+/*.ztree li span.button.level0 {
+ display:none;
+}
+.ztree li ul.level0 {
+ padding:0;
+ background:none;
+}*/ \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.all.js b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.all.js
new file mode 100755
index 00000000..28bca45a
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.all.js
@@ -0,0 +1,3506 @@
+
+/*
+ * JQuery zTree core v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function($){
+ var settings = {}, roots = {}, caches = {},
+ //default consts of core
+ _consts = {
+ className: {
+ BUTTON: "button",
+ LEVEL: "level",
+ ICO_LOADING: "ico_loading",
+ SWITCH: "switch"
+ },
+ event: {
+ NODECREATED: "ztree_nodeCreated",
+ CLICK: "ztree_click",
+ EXPAND: "ztree_expand",
+ COLLAPSE: "ztree_collapse",
+ ASYNC_SUCCESS: "ztree_async_success",
+ ASYNC_ERROR: "ztree_async_error",
+ REMOVE: "ztree_remove"
+ },
+ id: {
+ A: "_a",
+ ICON: "_ico",
+ SPAN: "_span",
+ SWITCH: "_switch",
+ UL: "_ul"
+ },
+ line: {
+ ROOT: "root",
+ ROOTS: "roots",
+ CENTER: "center",
+ BOTTOM: "bottom",
+ NOLINE: "noline",
+ LINE: "line"
+ },
+ folder: {
+ OPEN: "open",
+ CLOSE: "close",
+ DOCU: "docu"
+ },
+ node: {
+ CURSELECTED: "curSelectedNode"
+ }
+ },
+ //default setting of core
+ _setting = {
+ treeId: "",
+ treeObj: null,
+ view: {
+ addDiyDom: null,
+ autoCancelSelected: true,
+ dblClickExpand: true,
+ expandSpeed: "fast",
+ fontCss: {},
+ nameIsHTML: false,
+ selectedMulti: true,
+ showIcon: true,
+ showLine: true,
+ showTitle: true,
+ txtSelectedEnable: false
+ },
+ data: {
+ key: {
+ children: "children",
+ name: "name",
+ title: "",
+ url: "url"
+ },
+ simpleData: {
+ enable: false,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: null
+ },
+ keep: {
+ parent: false,
+ leaf: false
+ }
+ },
+ async: {
+ enable: false,
+ contentType: "application/x-www-form-urlencoded",
+ type: "post",
+ dataType: "text",
+ url: "",
+ autoParam: [],
+ otherParam: [],
+ dataFilter: null
+ },
+ callback: {
+ beforeAsync:null,
+ beforeClick:null,
+ beforeDblClick:null,
+ beforeRightClick:null,
+ beforeMouseDown:null,
+ beforeMouseUp:null,
+ beforeExpand:null,
+ beforeCollapse:null,
+ beforeRemove:null,
+
+ onAsyncError:null,
+ onAsyncSuccess:null,
+ onNodeCreated:null,
+ onClick:null,
+ onDblClick:null,
+ onRightClick:null,
+ onMouseDown:null,
+ onMouseUp:null,
+ onExpand:null,
+ onCollapse:null,
+ onRemove:null
+ }
+ },
+ //default root of core
+ //zTree use root to save full data
+ _initRoot = function (setting) {
+ var r = data.getRoot(setting);
+ if (!r) {
+ r = {};
+ data.setRoot(setting, r);
+ }
+ r[setting.data.key.children] = [];
+ r.expandTriggerFlag = false;
+ r.curSelectedList = [];
+ r.noSelection = true;
+ r.createdNodes = [];
+ r.zId = 0;
+ r._ver = (new Date()).getTime();
+ },
+ //default cache of core
+ _initCache = function(setting) {
+ var c = data.getCache(setting);
+ if (!c) {
+ c = {};
+ data.setCache(setting, c);
+ }
+ c.nodes = [];
+ c.doms = [];
+ },
+ //default bindEvent of core
+ _bindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.bind(c.NODECREATED, function (event, treeId, node) {
+ tools.apply(setting.callback.onNodeCreated, [event, treeId, node]);
+ });
+
+ o.bind(c.CLICK, function (event, srcEvent, treeId, node, clickFlag) {
+ tools.apply(setting.callback.onClick, [srcEvent, treeId, node, clickFlag]);
+ });
+
+ o.bind(c.EXPAND, function (event, treeId, node) {
+ tools.apply(setting.callback.onExpand, [event, treeId, node]);
+ });
+
+ o.bind(c.COLLAPSE, function (event, treeId, node) {
+ tools.apply(setting.callback.onCollapse, [event, treeId, node]);
+ });
+
+ o.bind(c.ASYNC_SUCCESS, function (event, treeId, node, msg) {
+ tools.apply(setting.callback.onAsyncSuccess, [event, treeId, node, msg]);
+ });
+
+ o.bind(c.ASYNC_ERROR, function (event, treeId, node, XMLHttpRequest, textStatus, errorThrown) {
+ tools.apply(setting.callback.onAsyncError, [event, treeId, node, XMLHttpRequest, textStatus, errorThrown]);
+ });
+
+ o.bind(c.REMOVE, function (event, treeId, treeNode) {
+ tools.apply(setting.callback.onRemove, [event, treeId, treeNode]);
+ });
+ },
+ _unbindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.unbind(c.NODECREATED)
+ .unbind(c.CLICK)
+ .unbind(c.EXPAND)
+ .unbind(c.COLLAPSE)
+ .unbind(c.ASYNC_SUCCESS)
+ .unbind(c.ASYNC_ERROR)
+ .unbind(c.REMOVE);
+ },
+ //default event proxy of core
+ _eventProxy = function(event) {
+ var target = event.target,
+ setting = data.getSetting(event.data.treeId),
+ tId = "", node = null,
+ nodeEventType = "", treeEventType = "",
+ nodeEventCallback = null, treeEventCallback = null,
+ tmp = null;
+
+ if (tools.eqs(event.type, "mousedown")) {
+ treeEventType = "mousedown";
+ } else if (tools.eqs(event.type, "mouseup")) {
+ treeEventType = "mouseup";
+ } else if (tools.eqs(event.type, "contextmenu")) {
+ treeEventType = "contextmenu";
+ } else if (tools.eqs(event.type, "click")) {
+ if (tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.SWITCH) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "switchNode";
+ } else {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "clickNode";
+ }
+ }
+ } else if (tools.eqs(event.type, "dblclick")) {
+ treeEventType = "dblclick";
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "switchNode";
+ }
+ }
+ if (treeEventType.length > 0 && tId.length == 0) {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {tId = tools.getNodeMainDom(tmp).id;}
+ }
+ // event to node
+ if (tId.length>0) {
+ node = data.getNodeCache(setting, tId);
+ switch (nodeEventType) {
+ case "switchNode" :
+ if (!node.isParent) {
+ nodeEventType = "";
+ } else if (tools.eqs(event.type, "click")
+ || (tools.eqs(event.type, "dblclick") && tools.apply(setting.view.dblClickExpand, [setting.treeId, node], setting.view.dblClickExpand))) {
+ nodeEventCallback = handler.onSwitchNode;
+ } else {
+ nodeEventType = "";
+ }
+ break;
+ case "clickNode" :
+ nodeEventCallback = handler.onClickNode;
+ break;
+ }
+ }
+ // event to zTree
+ switch (treeEventType) {
+ case "mousedown" :
+ treeEventCallback = handler.onZTreeMousedown;
+ break;
+ case "mouseup" :
+ treeEventCallback = handler.onZTreeMouseup;
+ break;
+ case "dblclick" :
+ treeEventCallback = handler.onZTreeDblclick;
+ break;
+ case "contextmenu" :
+ treeEventCallback = handler.onZTreeContextmenu;
+ break;
+ }
+ var proxyResult = {
+ stop: false,
+ node: node,
+ nodeEventType: nodeEventType,
+ nodeEventCallback: nodeEventCallback,
+ treeEventType: treeEventType,
+ treeEventCallback: treeEventCallback
+ };
+ return proxyResult
+ },
+ //default init node of core
+ _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
+ if (!n) return;
+ var r = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ n.level = level;
+ n.tId = setting.treeId + "_" + (++r.zId);
+ n.parentTId = parentNode ? parentNode.tId : null;
+ n.open = (typeof n.open == "string") ? tools.eqs(n.open, "true") : !!n.open;
+ if (n[childKey] && n[childKey].length > 0) {
+ n.isParent = true;
+ n.zAsync = true;
+ } else {
+ n.isParent = (typeof n.isParent == "string") ? tools.eqs(n.isParent, "true") : !!n.isParent;
+ n.open = (n.isParent && !setting.async.enable) ? n.open : false;
+ n.zAsync = !n.isParent;
+ }
+ n.isFirstNode = isFirstNode;
+ n.isLastNode = isLastNode;
+ n.getParentNode = function() {return data.getNodeCache(setting, n.parentTId);};
+ n.getPreNode = function() {return data.getPreNode(setting, n);};
+ n.getNextNode = function() {return data.getNextNode(setting, n);};
+ n.isAjaxing = false;
+ data.fixPIdKeyValue(setting, n);
+ },
+ _init = {
+ bind: [_bindEvent],
+ unbind: [_unbindEvent],
+ caches: [_initCache],
+ nodes: [_initNode],
+ proxys: [_eventProxy],
+ roots: [_initRoot],
+ beforeA: [],
+ afterA: [],
+ innerBeforeA: [],
+ innerAfterA: [],
+ zTreeTools: []
+ },
+ //method of operate data
+ data = {
+ addNodeCache: function(setting, node) {
+ data.getCache(setting).nodes[data.getNodeCacheId(node.tId)] = node;
+ },
+ getNodeCacheId: function(tId) {
+ return tId.substring(tId.lastIndexOf("_")+1);
+ },
+ addAfterA: function(afterA) {
+ _init.afterA.push(afterA);
+ },
+ addBeforeA: function(beforeA) {
+ _init.beforeA.push(beforeA);
+ },
+ addInnerAfterA: function(innerAfterA) {
+ _init.innerAfterA.push(innerAfterA);
+ },
+ addInnerBeforeA: function(innerBeforeA) {
+ _init.innerBeforeA.push(innerBeforeA);
+ },
+ addInitBind: function(bindEvent) {
+ _init.bind.push(bindEvent);
+ },
+ addInitUnBind: function(unbindEvent) {
+ _init.unbind.push(unbindEvent);
+ },
+ addInitCache: function(initCache) {
+ _init.caches.push(initCache);
+ },
+ addInitNode: function(initNode) {
+ _init.nodes.push(initNode);
+ },
+ addInitProxy: function(initProxy, isFirst) {
+ if (!!isFirst) {
+ _init.proxys.splice(0,0,initProxy);
+ } else {
+ _init.proxys.push(initProxy);
+ }
+ },
+ addInitRoot: function(initRoot) {
+ _init.roots.push(initRoot);
+ },
+ addNodesData: function(setting, parentNode, nodes) {
+ var childKey = setting.data.key.children;
+ if (!parentNode[childKey]) parentNode[childKey] = [];
+ if (parentNode[childKey].length > 0) {
+ parentNode[childKey][parentNode[childKey].length - 1].isLastNode = false;
+ view.setNodeLineIcos(setting, parentNode[childKey][parentNode[childKey].length - 1]);
+ }
+ parentNode.isParent = true;
+ parentNode[childKey] = parentNode[childKey].concat(nodes);
+ },
+ addSelectedNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ if (!data.isSelectedNode(setting, node)) {
+ root.curSelectedList.push(node);
+ }
+ },
+ addCreatedNode: function(setting, node) {
+ if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) {
+ var root = data.getRoot(setting);
+ root.createdNodes.push(node);
+ }
+ },
+ addZTreeTools: function(zTreeTools) {
+ _init.zTreeTools.push(zTreeTools);
+ },
+ exSetting: function(s) {
+ $.extend(true, _setting, s);
+ },
+ fixPIdKeyValue: function(setting, node) {
+ if (setting.data.simpleData.enable) {
+ node[setting.data.simpleData.pIdKey] = node.parentTId ? node.getParentNode()[setting.data.simpleData.idKey] : setting.data.simpleData.rootPId;
+ }
+ },
+ getAfterA: function(setting, node, array) {
+ for (var i=0, j=_init.afterA.length; i<j; i++) {
+ _init.afterA[i].apply(this, arguments);
+ }
+ },
+ getBeforeA: function(setting, node, array) {
+ for (var i=0, j=_init.beforeA.length; i<j; i++) {
+ _init.beforeA[i].apply(this, arguments);
+ }
+ },
+ getInnerAfterA: function(setting, node, array) {
+ for (var i=0, j=_init.innerAfterA.length; i<j; i++) {
+ _init.innerAfterA[i].apply(this, arguments);
+ }
+ },
+ getInnerBeforeA: function(setting, node, array) {
+ for (var i=0, j=_init.innerBeforeA.length; i<j; i++) {
+ _init.innerBeforeA[i].apply(this, arguments);
+ }
+ },
+ getCache: function(setting) {
+ return caches[setting.treeId];
+ },
+ getNextNode: function(setting, node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ p = node.parentTId ? node.getParentNode() : data.getRoot(setting);
+ for (var i=0, l=p[childKey].length-1; i<=l; i++) {
+ if (p[childKey][i] === node) {
+ return (i==l ? null : p[childKey][i+1]);
+ }
+ }
+ return null;
+ },
+ getNodeByParam: function(setting, nodes, key, value) {
+ if (!nodes || !key) return null;
+ var childKey = setting.data.key.children;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i][key] == value) {
+ return nodes[i];
+ }
+ var tmp = data.getNodeByParam(setting, nodes[i][childKey], key, value);
+ if (tmp) return tmp;
+ }
+ return null;
+ },
+ getNodeCache: function(setting, tId) {
+ if (!tId) return null;
+ var n = caches[setting.treeId].nodes[data.getNodeCacheId(tId)];
+ return n ? n : null;
+ },
+ getNodeName: function(setting, node) {
+ var nameKey = setting.data.key.name;
+ return "" + node[nameKey];
+ },
+ getNodeTitle: function(setting, node) {
+ var t = setting.data.key.title === "" ? setting.data.key.name : setting.data.key.title;
+ return "" + node[t];
+ },
+ getNodes: function(setting) {
+ return data.getRoot(setting)[setting.data.key.children];
+ },
+ getNodesByParam: function(setting, nodes, key, value) {
+ if (!nodes || !key) return [];
+ var childKey = setting.data.key.children,
+ result = [];
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i][key] == value) {
+ result.push(nodes[i]);
+ }
+ result = result.concat(data.getNodesByParam(setting, nodes[i][childKey], key, value));
+ }
+ return result;
+ },
+ getNodesByParamFuzzy: function(setting, nodes, key, value) {
+ if (!nodes || !key) return [];
+ var childKey = setting.data.key.children,
+ result = [];
+ value = value.toLowerCase();
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (typeof nodes[i][key] == "string" && nodes[i][key].toLowerCase().indexOf(value)>-1) {
+ result.push(nodes[i]);
+ }
+ result = result.concat(data.getNodesByParamFuzzy(setting, nodes[i][childKey], key, value));
+ }
+ return result;
+ },
+ getNodesByFilter: function(setting, nodes, filter, isSingle, invokeParam) {
+ if (!nodes) return (isSingle ? null : []);
+ var childKey = setting.data.key.children,
+ result = isSingle ? null : [];
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (tools.apply(filter, [nodes[i], invokeParam], false)) {
+ if (isSingle) {return nodes[i];}
+ result.push(nodes[i]);
+ }
+ var tmpResult = data.getNodesByFilter(setting, nodes[i][childKey], filter, isSingle, invokeParam);
+ if (isSingle && !!tmpResult) {return tmpResult;}
+ result = isSingle ? tmpResult : result.concat(tmpResult);
+ }
+ return result;
+ },
+ getPreNode: function(setting, node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ p = node.parentTId ? node.getParentNode() : data.getRoot(setting);
+ for (var i=0, l=p[childKey].length; i<l; i++) {
+ if (p[childKey][i] === node) {
+ return (i==0 ? null : p[childKey][i-1]);
+ }
+ }
+ return null;
+ },
+ getRoot: function(setting) {
+ return setting ? roots[setting.treeId] : null;
+ },
+ getRoots: function() {
+ return roots;
+ },
+ getSetting: function(treeId) {
+ return settings[treeId];
+ },
+ getSettings: function() {
+ return settings;
+ },
+ getZTreeTools: function(treeId) {
+ var r = this.getRoot(this.getSetting(treeId));
+ return r ? r.treeTools : null;
+ },
+ initCache: function(setting) {
+ for (var i=0, j=_init.caches.length; i<j; i++) {
+ _init.caches[i].apply(this, arguments);
+ }
+ },
+ initNode: function(setting, level, node, parentNode, preNode, nextNode) {
+ for (var i=0, j=_init.nodes.length; i<j; i++) {
+ _init.nodes[i].apply(this, arguments);
+ }
+ },
+ initRoot: function(setting) {
+ for (var i=0, j=_init.roots.length; i<j; i++) {
+ _init.roots[i].apply(this, arguments);
+ }
+ },
+ isSelectedNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ for (var i=0, j=root.curSelectedList.length; i<j; i++) {
+ if(node === root.curSelectedList[i]) return true;
+ }
+ return false;
+ },
+ removeNodeCache: function(setting, node) {
+ var childKey = setting.data.key.children;
+ if (node[childKey]) {
+ for (var i=0, l=node[childKey].length; i<l; i++) {
+ arguments.callee(setting, node[childKey][i]);
+ }
+ }
+ data.getCache(setting).nodes[data.getNodeCacheId(node.tId)] = null;
+ },
+ removeSelectedNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ for (var i=0, j=root.curSelectedList.length; i<j; i++) {
+ if(node === root.curSelectedList[i] || !data.getNodeCache(setting, root.curSelectedList[i].tId)) {
+ root.curSelectedList.splice(i, 1);
+ i--;j--;
+ }
+ }
+ },
+ setCache: function(setting, cache) {
+ caches[setting.treeId] = cache;
+ },
+ setRoot: function(setting, root) {
+ roots[setting.treeId] = root;
+ },
+ setZTreeTools: function(setting, zTreeTools) {
+ for (var i=0, j=_init.zTreeTools.length; i<j; i++) {
+ _init.zTreeTools[i].apply(this, arguments);
+ }
+ },
+ transformToArrayFormat: function (setting, nodes) {
+ if (!nodes) return [];
+ var childKey = setting.data.key.children,
+ r = [];
+ if (tools.isArray(nodes)) {
+ for (var i=0, l=nodes.length; i<l; i++) {
+ r.push(nodes[i]);
+ if (nodes[i][childKey])
+ r = r.concat(data.transformToArrayFormat(setting, nodes[i][childKey]));
+ }
+ } else {
+ r.push(nodes);
+ if (nodes[childKey])
+ r = r.concat(data.transformToArrayFormat(setting, nodes[childKey]));
+ }
+ return r;
+ },
+ transformTozTreeFormat: function(setting, sNodes) {
+ var i,l,
+ key = setting.data.simpleData.idKey,
+ parentKey = setting.data.simpleData.pIdKey,
+ childKey = setting.data.key.children;
+ if (!key || key=="" || !sNodes) return [];
+
+ if (tools.isArray(sNodes)) {
+ var r = [];
+ var tmpMap = [];
+ for (i=0, l=sNodes.length; i<l; i++) {
+ tmpMap[sNodes[i][key]] = sNodes[i];
+ }
+ for (i=0, l=sNodes.length; i<l; i++) {
+ if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] != sNodes[i][parentKey]) {
+ if (!tmpMap[sNodes[i][parentKey]][childKey])
+ tmpMap[sNodes[i][parentKey]][childKey] = [];
+ tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i]);
+ } else {
+ r.push(sNodes[i]);
+ }
+ }
+ return r;
+ }else {
+ return [sNodes];
+ }
+ }
+ },
+ //method of event proxy
+ event = {
+ bindEvent: function(setting) {
+ for (var i=0, j=_init.bind.length; i<j; i++) {
+ _init.bind[i].apply(this, arguments);
+ }
+ },
+ unbindEvent: function(setting) {
+ for (var i=0, j=_init.unbind.length; i<j; i++) {
+ _init.unbind[i].apply(this, arguments);
+ }
+ },
+ bindTree: function(setting) {
+ var eventParam = {
+ treeId: setting.treeId
+ },
+ o = setting.treeObj;
+ if (!setting.view.txtSelectedEnable) {
+ // for can't select text
+ o.bind('selectstart', function(e){
+ var node
+ var n = e.originalEvent.srcElement.nodeName.toLowerCase();
+ return (n === "input" || n === "textarea" );
+ }).css({
+ "-moz-user-select":"-moz-none"
+ });
+ }
+ o.bind('click', eventParam, event.proxy);
+ o.bind('dblclick', eventParam, event.proxy);
+ o.bind('mouseover', eventParam, event.proxy);
+ o.bind('mouseout', eventParam, event.proxy);
+ o.bind('mousedown', eventParam, event.proxy);
+ o.bind('mouseup', eventParam, event.proxy);
+ o.bind('contextmenu', eventParam, event.proxy);
+ },
+ unbindTree: function(setting) {
+ var o = setting.treeObj;
+ o.unbind('click', event.proxy)
+ .unbind('dblclick', event.proxy)
+ .unbind('mouseover', event.proxy)
+ .unbind('mouseout', event.proxy)
+ .unbind('mousedown', event.proxy)
+ .unbind('mouseup', event.proxy)
+ .unbind('contextmenu', event.proxy);
+ },
+ doProxy: function(e) {
+ var results = [];
+ for (var i=0, j=_init.proxys.length; i<j; i++) {
+ var proxyResult = _init.proxys[i].apply(this, arguments);
+ results.push(proxyResult);
+ if (proxyResult.stop) {
+ break;
+ }
+ }
+ return results;
+ },
+ proxy: function(e) {
+ var setting = data.getSetting(e.data.treeId);
+ if (!tools.uCanDo(setting, e)) return true;
+ var results = event.doProxy(e),
+ r = true, x = false;
+ for (var i=0, l=results.length; i<l; i++) {
+ var proxyResult = results[i];
+ if (proxyResult.nodeEventCallback) {
+ x = true;
+ r = proxyResult.nodeEventCallback.apply(proxyResult, [e, proxyResult.node]) && r;
+ }
+ if (proxyResult.treeEventCallback) {
+ x = true;
+ r = proxyResult.treeEventCallback.apply(proxyResult, [e, proxyResult.node]) && r;
+ }
+ }
+ return r;
+ }
+ },
+ //method of event handler
+ handler = {
+ onSwitchNode: function (event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (node.open) {
+ if (tools.apply(setting.callback.beforeCollapse, [setting.treeId, node], true) == false) return true;
+ data.getRoot(setting).expandTriggerFlag = true;
+ view.switchNode(setting, node);
+ } else {
+ if (tools.apply(setting.callback.beforeExpand, [setting.treeId, node], true) == false) return true;
+ data.getRoot(setting).expandTriggerFlag = true;
+ view.switchNode(setting, node);
+ }
+ return true;
+ },
+ onClickNode: function (event, node) {
+ var setting = data.getSetting(event.data.treeId),
+ clickFlag = ( (setting.view.autoCancelSelected && (event.ctrlKey || event.metaKey)) && data.isSelectedNode(setting, node)) ? 0 : (setting.view.autoCancelSelected && (event.ctrlKey || event.metaKey) && setting.view.selectedMulti) ? 2 : 1;
+ if (tools.apply(setting.callback.beforeClick, [setting.treeId, node, clickFlag], true) == false) return true;
+ if (clickFlag === 0) {
+ view.cancelPreSelectedNode(setting, node);
+ } else {
+ view.selectNode(setting, node, clickFlag === 2);
+ }
+ setting.treeObj.trigger(consts.event.CLICK, [event, setting.treeId, node, clickFlag]);
+ return true;
+ },
+ onZTreeMousedown: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeMouseDown, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onMouseDown, [event, setting.treeId, node]);
+ }
+ return true;
+ },
+ onZTreeMouseup: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeMouseUp, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onMouseUp, [event, setting.treeId, node]);
+ }
+ return true;
+ },
+ onZTreeDblclick: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeDblClick, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onDblClick, [event, setting.treeId, node]);
+ }
+ return true;
+ },
+ onZTreeContextmenu: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeRightClick, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onRightClick, [event, setting.treeId, node]);
+ }
+ return (typeof setting.callback.onRightClick) != "function";
+ }
+ },
+ //method of tools for zTree
+ tools = {
+ apply: function(fun, param, defaultValue) {
+ if ((typeof fun) == "function") {
+ return fun.apply(zt, param?param:[]);
+ }
+ return defaultValue;
+ },
+ canAsync: function(setting, node) {
+ var childKey = setting.data.key.children;
+ return (setting.async.enable && node && node.isParent && !(node.zAsync || (node[childKey] && node[childKey].length > 0)));
+ },
+ clone: function (obj){
+ if (obj === null) return null;
+ var o = tools.isArray(obj) ? [] : {};
+ for(var i in obj){
+ o[i] = (obj[i] instanceof Date) ? new Date(obj[i].getTime()) : (typeof obj[i] === "object" ? arguments.callee(obj[i]) : obj[i]);
+ }
+ return o;
+ },
+ eqs: function(str1, str2) {
+ return str1.toLowerCase() === str2.toLowerCase();
+ },
+ isArray: function(arr) {
+ return Object.prototype.toString.apply(arr) === "[object Array]";
+ },
+ $: function(node, exp, setting) {
+ if (!!exp && typeof exp != "string") {
+ setting = exp;
+ exp = "";
+ }
+ if (typeof node == "string") {
+ return $(node, setting ? setting.treeObj.get(0).ownerDocument : null);
+ } else {
+ return $("#" + node.tId + exp, setting ? setting.treeObj : null);
+ }
+ },
+ getMDom: function (setting, curDom, targetExpr) {
+ if (!curDom) return null;
+ while (curDom && curDom.id !== setting.treeId) {
+ for (var i=0, l=targetExpr.length; curDom.tagName && i<l; i++) {
+ if (tools.eqs(curDom.tagName, targetExpr[i].tagName) && curDom.getAttribute(targetExpr[i].attrName) !== null) {
+ return curDom;
+ }
+ }
+ curDom = curDom.parentNode;
+ }
+ return null;
+ },
+ getNodeMainDom:function(target) {
+ return ($(target).parent("li").get(0) || $(target).parentsUntil("li").parent().get(0));
+ },
+ isChildOrSelf: function(dom, parentId) {
+ return ( $(dom).closest("#" + parentId).length> 0 );
+ },
+ uCanDo: function(setting, e) {
+ return true;
+ }
+ },
+ //method of operate ztree dom
+ view = {
+ addNodes: function(setting, parentNode, newNodes, isSilent) {
+ if (setting.data.keep.leaf && parentNode && !parentNode.isParent) {
+ return;
+ }
+ if (!tools.isArray(newNodes)) {
+ newNodes = [newNodes];
+ }
+ if (setting.data.simpleData.enable) {
+ newNodes = data.transformTozTreeFormat(setting, newNodes);
+ }
+ if (parentNode) {
+ var target_switchObj = $$(parentNode, consts.id.SWITCH, setting),
+ target_icoObj = $$(parentNode, consts.id.ICON, setting),
+ target_ulObj = $$(parentNode, consts.id.UL, setting);
+
+ if (!parentNode.open) {
+ view.replaceSwitchClass(parentNode, target_switchObj, consts.folder.CLOSE);
+ view.replaceIcoClass(parentNode, target_icoObj, consts.folder.CLOSE);
+ parentNode.open = false;
+ target_ulObj.css({
+ "display": "none"
+ });
+ }
+
+ data.addNodesData(setting, parentNode, newNodes);
+ view.createNodes(setting, parentNode.level + 1, newNodes, parentNode);
+ if (!isSilent) {
+ view.expandCollapseParentNode(setting, parentNode, true);
+ }
+ } else {
+ data.addNodesData(setting, data.getRoot(setting), newNodes);
+ view.createNodes(setting, 0, newNodes, null);
+ }
+ },
+ appendNodes: function(setting, level, nodes, parentNode, initFlag, openFlag) {
+ if (!nodes) return [];
+ var html = [],
+ childKey = setting.data.key.children;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ var node = nodes[i];
+ if (initFlag) {
+ var tmpPNode = (parentNode) ? parentNode: data.getRoot(setting),
+ tmpPChild = tmpPNode[childKey],
+ isFirstNode = ((tmpPChild.length == nodes.length) && (i == 0)),
+ isLastNode = (i == (nodes.length - 1));
+ data.initNode(setting, level, node, parentNode, isFirstNode, isLastNode, openFlag);
+ data.addNodeCache(setting, node);
+ }
+
+ var childHtml = [];
+ if (node[childKey] && node[childKey].length > 0) {
+ //make child html first, because checkType
+ childHtml = view.appendNodes(setting, level + 1, node[childKey], node, initFlag, openFlag && node.open);
+ }
+ if (openFlag) {
+
+ view.makeDOMNodeMainBefore(html, setting, node);
+ view.makeDOMNodeLine(html, setting, node);
+ data.getBeforeA(setting, node, html);
+ view.makeDOMNodeNameBefore(html, setting, node);
+ data.getInnerBeforeA(setting, node, html);
+ view.makeDOMNodeIcon(html, setting, node);
+ data.getInnerAfterA(setting, node, html);
+ view.makeDOMNodeNameAfter(html, setting, node);
+ data.getAfterA(setting, node, html);
+ if (node.isParent && node.open) {
+ view.makeUlHtml(setting, node, html, childHtml.join(''));
+ }
+ view.makeDOMNodeMainAfter(html, setting, node);
+ data.addCreatedNode(setting, node);
+ }
+ }
+ return html;
+ },
+ appendParentULDom: function(setting, node) {
+ var html = [],
+ nObj = $$(node, setting);
+ if (!nObj.get(0) && !!node.parentTId) {
+ view.appendParentULDom(setting, node.getParentNode());
+ nObj = $$(node, setting);
+ }
+ var ulObj = $$(node, consts.id.UL, setting);
+ if (ulObj.get(0)) {
+ ulObj.remove();
+ }
+ var childKey = setting.data.key.children,
+ childHtml = view.appendNodes(setting, node.level+1, node[childKey], node, false, true);
+ view.makeUlHtml(setting, node, html, childHtml.join(''));
+ nObj.append(html.join(''));
+ },
+ asyncNode: function(setting, node, isSilent, callback) {
+ var i, l;
+ if (node && !node.isParent) {
+ tools.apply(callback);
+ return false;
+ } else if (node && node.isAjaxing) {
+ return false;
+ } else if (tools.apply(setting.callback.beforeAsync, [setting.treeId, node], true) == false) {
+ tools.apply(callback);
+ return false;
+ }
+ if (node) {
+ node.isAjaxing = true;
+ var icoObj = $$(node, consts.id.ICON, setting);
+ icoObj.attr({"style":"", "class":consts.className.BUTTON + " " + consts.className.ICO_LOADING});
+ }
+
+ var tmpParam = {};
+ for (i = 0, l = setting.async.autoParam.length; node && i < l; i++) {
+ var pKey = setting.async.autoParam[i].split("="), spKey = pKey;
+ if (pKey.length>1) {
+ spKey = pKey[1];
+ pKey = pKey[0];
+ }
+ tmpParam[spKey] = node[pKey];
+ }
+ if (tools.isArray(setting.async.otherParam)) {
+ for (i = 0, l = setting.async.otherParam.length; i < l; i += 2) {
+ tmpParam[setting.async.otherParam[i]] = setting.async.otherParam[i + 1];
+ }
+ } else {
+ for (var p in setting.async.otherParam) {
+ tmpParam[p] = setting.async.otherParam[p];
+ }
+ }
+
+ var _tmpV = data.getRoot(setting)._ver;
+ $.ajax({
+ contentType: setting.async.contentType,
+ type: setting.async.type,
+ url: tools.apply(setting.async.url, [setting.treeId, node], setting.async.url),
+ data: tmpParam,
+ dataType: setting.async.dataType,
+ success: function(msg) {
+ if (_tmpV != data.getRoot(setting)._ver) {
+ return;
+ }
+ var newNodes = [];
+ try {
+ if (!msg || msg.length == 0) {
+ newNodes = [];
+ } else if (typeof msg == "string") {
+ newNodes = eval("(" + msg + ")");
+ } else {
+ newNodes = msg;
+ }
+ } catch(err) {
+ newNodes = msg;
+ }
+
+ if (node) {
+ node.isAjaxing = null;
+ node.zAsync = true;
+ }
+ view.setNodeLineIcos(setting, node);
+ if (newNodes && newNodes !== "") {
+ newNodes = tools.apply(setting.async.dataFilter, [setting.treeId, node, newNodes], newNodes);
+ view.addNodes(setting, node, !!newNodes ? tools.clone(newNodes) : [], !!isSilent);
+ } else {
+ view.addNodes(setting, node, [], !!isSilent);
+ }
+ setting.treeObj.trigger(consts.event.ASYNC_SUCCESS, [setting.treeId, node, msg]);
+ tools.apply(callback);
+ },
+ error: function(XMLHttpRequest, textStatus, errorThrown) {
+ if (_tmpV != data.getRoot(setting)._ver) {
+ return;
+ }
+ if (node) node.isAjaxing = null;
+ view.setNodeLineIcos(setting, node);
+ setting.treeObj.trigger(consts.event.ASYNC_ERROR, [setting.treeId, node, XMLHttpRequest, textStatus, errorThrown]);
+ }
+ });
+ return true;
+ },
+ cancelPreSelectedNode: function (setting, node) {
+ var list = data.getRoot(setting).curSelectedList;
+ for (var i=0, j=list.length-1; j>=i; j--) {
+ if (!node || node === list[j]) {
+ $$(list[j], consts.id.A, setting).removeClass(consts.node.CURSELECTED);
+ if (node) {
+ data.removeSelectedNode(setting, node);
+ break;
+ }
+ }
+ }
+ if (!node) data.getRoot(setting).curSelectedList = [];
+ },
+ createNodeCallback: function(setting) {
+ if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) {
+ var root = data.getRoot(setting);
+ while (root.createdNodes.length>0) {
+ var node = root.createdNodes.shift();
+ tools.apply(setting.view.addDiyDom, [setting.treeId, node]);
+ if (!!setting.callback.onNodeCreated) {
+ setting.treeObj.trigger(consts.event.NODECREATED, [setting.treeId, node]);
+ }
+ }
+ }
+ },
+ createNodes: function(setting, level, nodes, parentNode) {
+ if (!nodes || nodes.length == 0) return;
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children,
+ openFlag = !parentNode || parentNode.open || !!$$(parentNode[childKey][0], setting).get(0);
+ root.createdNodes = [];
+ var zTreeHtml = view.appendNodes(setting, level, nodes, parentNode, true, openFlag);
+ if (!parentNode) {
+ setting.treeObj.append(zTreeHtml.join(''));
+ } else {
+ var ulObj = $$(parentNode, consts.id.UL, setting);
+ if (ulObj.get(0)) {
+ ulObj.append(zTreeHtml.join(''));
+ }
+ }
+ view.createNodeCallback(setting);
+ },
+ destroy: function(setting) {
+ if (!setting) return;
+ data.initCache(setting);
+ data.initRoot(setting);
+ event.unbindTree(setting);
+ event.unbindEvent(setting);
+ setting.treeObj.empty();
+ delete settings[setting.treeId];
+ },
+ expandCollapseNode: function(setting, node, expandFlag, animateFlag, callback) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ if (!node) {
+ tools.apply(callback, []);
+ return;
+ }
+ if (root.expandTriggerFlag) {
+ var _callback = callback;
+ callback = function(){
+ if (_callback) _callback();
+ if (node.open) {
+ setting.treeObj.trigger(consts.event.EXPAND, [setting.treeId, node]);
+ } else {
+ setting.treeObj.trigger(consts.event.COLLAPSE, [setting.treeId, node]);
+ }
+ };
+ root.expandTriggerFlag = false;
+ }
+ if (!node.open && node.isParent && ((!$$(node, consts.id.UL, setting).get(0)) || (node[childKey] && node[childKey].length>0 && !$$(node[childKey][0], setting).get(0)))) {
+ view.appendParentULDom(setting, node);
+ view.createNodeCallback(setting);
+ }
+ if (node.open == expandFlag) {
+ tools.apply(callback, []);
+ return;
+ }
+ var ulObj = $$(node, consts.id.UL, setting),
+ switchObj = $$(node, consts.id.SWITCH, setting),
+ icoObj = $$(node, consts.id.ICON, setting);
+
+ if (node.isParent) {
+ node.open = !node.open;
+ if (node.iconOpen && node.iconClose) {
+ icoObj.attr("style", view.makeNodeIcoStyle(setting, node));
+ }
+
+ if (node.open) {
+ view.replaceSwitchClass(node, switchObj, consts.folder.OPEN);
+ view.replaceIcoClass(node, icoObj, consts.folder.OPEN);
+ if (animateFlag == false || setting.view.expandSpeed == "") {
+ ulObj.show();
+ tools.apply(callback, []);
+ } else {
+ if (node[childKey] && node[childKey].length > 0) {
+ ulObj.slideDown(setting.view.expandSpeed, callback);
+ } else {
+ ulObj.show();
+ tools.apply(callback, []);
+ }
+ }
+ } else {
+ view.replaceSwitchClass(node, switchObj, consts.folder.CLOSE);
+ view.replaceIcoClass(node, icoObj, consts.folder.CLOSE);
+ if (animateFlag == false || setting.view.expandSpeed == "" || !(node[childKey] && node[childKey].length > 0)) {
+ ulObj.hide();
+ tools.apply(callback, []);
+ } else {
+ ulObj.slideUp(setting.view.expandSpeed, callback);
+ }
+ }
+ } else {
+ tools.apply(callback, []);
+ }
+ },
+ expandCollapseParentNode: function(setting, node, expandFlag, animateFlag, callback) {
+ if (!node) return;
+ if (!node.parentTId) {
+ view.expandCollapseNode(setting, node, expandFlag, animateFlag, callback);
+ return;
+ } else {
+ view.expandCollapseNode(setting, node, expandFlag, animateFlag);
+ }
+ if (node.parentTId) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), expandFlag, animateFlag, callback);
+ }
+ },
+ expandCollapseSonNode: function(setting, node, expandFlag, animateFlag, callback) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children,
+ treeNodes = (node) ? node[childKey]: root[childKey],
+ selfAnimateSign = (node) ? false : animateFlag,
+ expandTriggerFlag = data.getRoot(setting).expandTriggerFlag;
+ data.getRoot(setting).expandTriggerFlag = false;
+ if (treeNodes) {
+ for (var i = 0, l = treeNodes.length; i < l; i++) {
+ if (treeNodes[i]) view.expandCollapseSonNode(setting, treeNodes[i], expandFlag, selfAnimateSign);
+ }
+ }
+ data.getRoot(setting).expandTriggerFlag = expandTriggerFlag;
+ view.expandCollapseNode(setting, node, expandFlag, animateFlag, callback );
+ },
+ makeDOMNodeIcon: function(html, setting, node) {
+ var nameStr = data.getNodeName(setting, node),
+ name = setting.view.nameIsHTML ? nameStr : nameStr.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
+ html.push("<span id='", node.tId, consts.id.ICON,
+ "' title='' treeNode", consts.id.ICON," class='", view.makeNodeIcoClass(setting, node),
+ "' style='", view.makeNodeIcoStyle(setting, node), "'></span><span id='", node.tId, consts.id.SPAN,
+ "'>",name,"</span>");
+ },
+ makeDOMNodeLine: function(html, setting, node) {
+ html.push("<span id='", node.tId, consts.id.SWITCH, "' title='' class='", view.makeNodeLineClass(setting, node), "' treeNode", consts.id.SWITCH,"></span>");
+ },
+ makeDOMNodeMainAfter: function(html, setting, node) {
+ html.push("</li>");
+ },
+ makeDOMNodeMainBefore: function(html, setting, node) {
+ html.push("<li id='", node.tId, "' class='", consts.className.LEVEL, node.level,"' tabindex='0' hidefocus='true' treenode>");
+ },
+ makeDOMNodeNameAfter: function(html, setting, node) {
+ html.push("</a>");
+ },
+ makeDOMNodeNameBefore: function(html, setting, node) {
+ var title = data.getNodeTitle(setting, node),
+ url = view.makeNodeUrl(setting, node),
+ fontcss = view.makeNodeFontCss(setting, node),
+ fontStyle = [];
+ for (var f in fontcss) {
+ fontStyle.push(f, ":", fontcss[f], ";");
+ }
+ html.push("<a id='", node.tId, consts.id.A, "' class='", consts.className.LEVEL, node.level,"' treeNode", consts.id.A," onclick=\"", (node.click || ''),
+ "\" ", ((url != null && url.length > 0) ? "href='" + url + "'" : ""), " target='",view.makeNodeTarget(node),"' style='", fontStyle.join(''),
+ "'");
+ if (tools.apply(setting.view.showTitle, [setting.treeId, node], setting.view.showTitle) && title) {html.push("title='", title.replace(/'/g,"&#39;").replace(/</g,'&lt;').replace(/>/g,'&gt;'),"'");}
+ html.push(">");
+ },
+ makeNodeFontCss: function(setting, node) {
+ var fontCss = tools.apply(setting.view.fontCss, [setting.treeId, node], setting.view.fontCss);
+ return (fontCss && ((typeof fontCss) != "function")) ? fontCss : {};
+ },
+ makeNodeIcoClass: function(setting, node) {
+ var icoCss = ["ico"];
+ if (!node.isAjaxing) {
+ icoCss[0] = (node.iconSkin ? node.iconSkin + "_" : "") + icoCss[0];
+ if (node.isParent) {
+ icoCss.push(node.open ? consts.folder.OPEN : consts.folder.CLOSE);
+ } else {
+ icoCss.push(consts.folder.DOCU);
+ }
+ }
+ return consts.className.BUTTON + " " + icoCss.join('_');
+ },
+ makeNodeIcoStyle: function(setting, node) {
+ var icoStyle = [];
+ if (!node.isAjaxing) {
+ var icon = (node.isParent && node.iconOpen && node.iconClose) ? (node.open ? node.iconOpen : node.iconClose) : node.icon;
+ if (icon) icoStyle.push("background:url(", icon, ") 0 0 no-repeat;");
+ if (setting.view.showIcon == false || !tools.apply(setting.view.showIcon, [setting.treeId, node], true)) {
+ icoStyle.push("width:0px;height:0px;");
+ }
+ }
+ return icoStyle.join('');
+ },
+ makeNodeLineClass: function(setting, node) {
+ var lineClass = [];
+ if (setting.view.showLine) {
+ if (node.level == 0 && node.isFirstNode && node.isLastNode) {
+ lineClass.push(consts.line.ROOT);
+ } else if (node.level == 0 && node.isFirstNode) {
+ lineClass.push(consts.line.ROOTS);
+ } else if (node.isLastNode) {
+ lineClass.push(consts.line.BOTTOM);
+ } else {
+ lineClass.push(consts.line.CENTER);
+ }
+ } else {
+ lineClass.push(consts.line.NOLINE);
+ }
+ if (node.isParent) {
+ lineClass.push(node.open ? consts.folder.OPEN : consts.folder.CLOSE);
+ } else {
+ lineClass.push(consts.folder.DOCU);
+ }
+ return view.makeNodeLineClassEx(node) + lineClass.join('_');
+ },
+ makeNodeLineClassEx: function(node) {
+ return consts.className.BUTTON + " " + consts.className.LEVEL + node.level + " " + consts.className.SWITCH + " ";
+ },
+ makeNodeTarget: function(node) {
+ return (node.target || "_blank");
+ },
+ makeNodeUrl: function(setting, node) {
+ var urlKey = setting.data.key.url;
+ return node[urlKey] ? node[urlKey] : null;
+ },
+ makeUlHtml: function(setting, node, html, content) {
+ html.push("<ul id='", node.tId, consts.id.UL, "' class='", consts.className.LEVEL, node.level, " ", view.makeUlLineClass(setting, node), "' style='display:", (node.open ? "block": "none"),"'>");
+ html.push(content);
+ html.push("</ul>");
+ },
+ makeUlLineClass: function(setting, node) {
+ return ((setting.view.showLine && !node.isLastNode) ? consts.line.LINE : "");
+ },
+ removeChildNodes: function(setting, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children,
+ nodes = node[childKey];
+ if (!nodes) return;
+
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ data.removeNodeCache(setting, nodes[i]);
+ }
+ data.removeSelectedNode(setting);
+ delete node[childKey];
+
+ if (!setting.data.keep.parent) {
+ node.isParent = false;
+ node.open = false;
+ var tmp_switchObj = $$(node, consts.id.SWITCH, setting),
+ tmp_icoObj = $$(node, consts.id.ICON, setting);
+ view.replaceSwitchClass(node, tmp_switchObj, consts.folder.DOCU);
+ view.replaceIcoClass(node, tmp_icoObj, consts.folder.DOCU);
+ $$(node, consts.id.UL, setting).remove();
+ } else {
+ $$(node, consts.id.UL, setting).empty();
+ }
+ },
+ setFirstNode: function(setting, parentNode) {
+ var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
+ if ( childLength > 0) {
+ parentNode[childKey][0].isFirstNode = true;
+ }
+ },
+ setLastNode: function(setting, parentNode) {
+ var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
+ if ( childLength > 0) {
+ parentNode[childKey][childLength - 1].isLastNode = true;
+ }
+ },
+ removeNode: function(setting, node) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children,
+ parentNode = (node.parentTId) ? node.getParentNode() : root;
+
+ node.isFirstNode = false;
+ node.isLastNode = false;
+ node.getPreNode = function() {return null;};
+ node.getNextNode = function() {return null;};
+
+ if (!data.getNodeCache(setting, node.tId)) {
+ return;
+ }
+
+ $$(node, setting).remove();
+ data.removeNodeCache(setting, node);
+ data.removeSelectedNode(setting, node);
+
+ for (var i = 0, l = parentNode[childKey].length; i < l; i++) {
+ if (parentNode[childKey][i].tId == node.tId) {
+ parentNode[childKey].splice(i, 1);
+ break;
+ }
+ }
+ view.setFirstNode(setting, parentNode);
+ view.setLastNode(setting, parentNode);
+
+ var tmp_ulObj,tmp_switchObj,tmp_icoObj,
+ childLength = parentNode[childKey].length;
+
+ //repair nodes old parent
+ if (!setting.data.keep.parent && childLength == 0) {
+ //old parentNode has no child nodes
+ parentNode.isParent = false;
+ parentNode.open = false;
+ tmp_ulObj = $$(parentNode, consts.id.UL, setting);
+ tmp_switchObj = $$(parentNode, consts.id.SWITCH, setting);
+ tmp_icoObj = $$(parentNode, consts.id.ICON, setting);
+ view.replaceSwitchClass(parentNode, tmp_switchObj, consts.folder.DOCU);
+ view.replaceIcoClass(parentNode, tmp_icoObj, consts.folder.DOCU);
+ tmp_ulObj.css("display", "none");
+
+ } else if (setting.view.showLine && childLength > 0) {
+ //old parentNode has child nodes
+ var newLast = parentNode[childKey][childLength - 1];
+ tmp_ulObj = $$(newLast, consts.id.UL, setting);
+ tmp_switchObj = $$(newLast, consts.id.SWITCH, setting);
+ tmp_icoObj = $$(newLast, consts.id.ICON, setting);
+ if (parentNode == root) {
+ if (parentNode[childKey].length == 1) {
+ //node was root, and ztree has only one root after move node
+ view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.ROOT);
+ } else {
+ var tmp_first_switchObj = $$(parentNode[childKey][0], consts.id.SWITCH, setting);
+ view.replaceSwitchClass(parentNode[childKey][0], tmp_first_switchObj, consts.line.ROOTS);
+ view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.BOTTOM);
+ }
+ } else {
+ view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.BOTTOM);
+ }
+ tmp_ulObj.removeClass(consts.line.LINE);
+ }
+ },
+ replaceIcoClass: function(node, obj, newName) {
+ if (!obj || node.isAjaxing) return;
+ var tmpName = obj.attr("class");
+ if (tmpName == undefined) return;
+ var tmpList = tmpName.split("_");
+ switch (newName) {
+ case consts.folder.OPEN:
+ case consts.folder.CLOSE:
+ case consts.folder.DOCU:
+ tmpList[tmpList.length-1] = newName;
+ break;
+ }
+ obj.attr("class", tmpList.join("_"));
+ },
+ replaceSwitchClass: function(node, obj, newName) {
+ if (!obj) return;
+ var tmpName = obj.attr("class");
+ if (tmpName == undefined) return;
+ var tmpList = tmpName.split("_");
+ switch (newName) {
+ case consts.line.ROOT:
+ case consts.line.ROOTS:
+ case consts.line.CENTER:
+ case consts.line.BOTTOM:
+ case consts.line.NOLINE:
+ tmpList[0] = view.makeNodeLineClassEx(node) + newName;
+ break;
+ case consts.folder.OPEN:
+ case consts.folder.CLOSE:
+ case consts.folder.DOCU:
+ tmpList[1] = newName;
+ break;
+ }
+ obj.attr("class", tmpList.join("_"));
+ if (newName !== consts.folder.DOCU) {
+ obj.removeAttr("disabled");
+ } else {
+ obj.attr("disabled", "disabled");
+ }
+ },
+ selectNode: function(setting, node, addFlag) {
+ if (!addFlag) {
+ view.cancelPreSelectedNode(setting);
+ }
+ $$(node, consts.id.A, setting).addClass(consts.node.CURSELECTED);
+ data.addSelectedNode(setting, node);
+ },
+ setNodeFontCss: function(setting, treeNode) {
+ var aObj = $$(treeNode, consts.id.A, setting),
+ fontCss = view.makeNodeFontCss(setting, treeNode);
+ if (fontCss) {
+ aObj.css(fontCss);
+ }
+ },
+ setNodeLineIcos: function(setting, node) {
+ if (!node) return;
+ var switchObj = $$(node, consts.id.SWITCH, setting),
+ ulObj = $$(node, consts.id.UL, setting),
+ icoObj = $$(node, consts.id.ICON, setting),
+ ulLine = view.makeUlLineClass(setting, node);
+ if (ulLine.length==0) {
+ ulObj.removeClass(consts.line.LINE);
+ } else {
+ ulObj.addClass(ulLine);
+ }
+ switchObj.attr("class", view.makeNodeLineClass(setting, node));
+ if (node.isParent) {
+ switchObj.removeAttr("disabled");
+ } else {
+ switchObj.attr("disabled", "disabled");
+ }
+ icoObj.removeAttr("style");
+ icoObj.attr("style", view.makeNodeIcoStyle(setting, node));
+ icoObj.attr("class", view.makeNodeIcoClass(setting, node));
+ },
+ setNodeName: function(setting, node) {
+ var title = data.getNodeTitle(setting, node),
+ nObj = $$(node, consts.id.SPAN, setting);
+ nObj.empty();
+ if (setting.view.nameIsHTML) {
+ nObj.html(data.getNodeName(setting, node));
+ } else {
+ nObj.text(data.getNodeName(setting, node));
+ }
+ if (tools.apply(setting.view.showTitle, [setting.treeId, node], setting.view.showTitle)) {
+ var aObj = $$(node, consts.id.A, setting);
+ aObj.attr("title", !title ? "" : title);
+ }
+ },
+ setNodeTarget: function(setting, node) {
+ var aObj = $$(node, consts.id.A, setting);
+ aObj.attr("target", view.makeNodeTarget(node));
+ },
+ setNodeUrl: function(setting, node) {
+ var aObj = $$(node, consts.id.A, setting),
+ url = view.makeNodeUrl(setting, node);
+ if (url == null || url.length == 0) {
+ aObj.removeAttr("href");
+ } else {
+ aObj.attr("href", url);
+ }
+ },
+ switchNode: function(setting, node) {
+ if (node.open || !tools.canAsync(setting, node)) {
+ view.expandCollapseNode(setting, node, !node.open);
+ } else if (setting.async.enable) {
+ if (!view.asyncNode(setting, node)) {
+ view.expandCollapseNode(setting, node, !node.open);
+ return;
+ }
+ } else if (node) {
+ view.expandCollapseNode(setting, node, !node.open);
+ }
+ }
+ };
+ // zTree defind
+ $.fn.zTree = {
+ consts : _consts,
+ _z : {
+ tools: tools,
+ view: view,
+ event: event,
+ data: data
+ },
+ getZTreeObj: function(treeId) {
+ var o = data.getZTreeTools(treeId);
+ return o ? o : null;
+ },
+ destroy: function(treeId) {
+ if (!!treeId && treeId.length > 0) {
+ view.destroy(data.getSetting(treeId));
+ } else {
+ for(var s in settings) {
+ view.destroy(settings[s]);
+ }
+ }
+ },
+ init: function(obj, zSetting, zNodes) {
+ var setting = tools.clone(_setting);
+ $.extend(true, setting, zSetting);
+ setting.treeId = obj.attr("id");
+ setting.treeObj = obj;
+ setting.treeObj.empty();
+ settings[setting.treeId] = setting;
+ //For some older browser,(e.g., ie6)
+ if(typeof document.body.style.maxHeight === "undefined") {
+ setting.view.expandSpeed = "";
+ }
+ data.initRoot(setting);
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ zNodes = zNodes ? tools.clone(tools.isArray(zNodes)? zNodes : [zNodes]) : [];
+ if (setting.data.simpleData.enable) {
+ root[childKey] = data.transformTozTreeFormat(setting, zNodes);
+ } else {
+ root[childKey] = zNodes;
+ }
+
+ data.initCache(setting);
+ event.unbindTree(setting);
+ event.bindTree(setting);
+ event.unbindEvent(setting);
+ event.bindEvent(setting);
+
+ var zTreeTools = {
+ setting : setting,
+ addNodes : function(parentNode, newNodes, isSilent) {
+ if (!newNodes) return null;
+ if (!parentNode) parentNode = null;
+ if (parentNode && !parentNode.isParent && setting.data.keep.leaf) return null;
+ var xNewNodes = tools.clone(tools.isArray(newNodes)? newNodes: [newNodes]);
+ function addCallback() {
+ view.addNodes(setting, parentNode, xNewNodes, (isSilent==true));
+ }
+
+ if (tools.canAsync(setting, parentNode)) {
+ view.asyncNode(setting, parentNode, isSilent, addCallback);
+ } else {
+ addCallback();
+ }
+ return xNewNodes;
+ },
+ cancelSelectedNode : function(node) {
+ view.cancelPreSelectedNode(setting, node);
+ },
+ destroy : function() {
+ view.destroy(setting);
+ },
+ expandAll : function(expandFlag) {
+ expandFlag = !!expandFlag;
+ view.expandCollapseSonNode(setting, null, expandFlag, true);
+ return expandFlag;
+ },
+ expandNode : function(node, expandFlag, sonSign, focus, callbackFlag) {
+ if (!node || !node.isParent) return null;
+ if (expandFlag !== true && expandFlag !== false) {
+ expandFlag = !node.open;
+ }
+ callbackFlag = !!callbackFlag;
+
+ if (callbackFlag && expandFlag && (tools.apply(setting.callback.beforeExpand, [setting.treeId, node], true) == false)) {
+ return null;
+ } else if (callbackFlag && !expandFlag && (tools.apply(setting.callback.beforeCollapse, [setting.treeId, node], true) == false)) {
+ return null;
+ }
+ if (expandFlag && node.parentTId) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), expandFlag, false);
+ }
+ if (expandFlag === node.open && !sonSign) {
+ return null;
+ }
+
+ data.getRoot(setting).expandTriggerFlag = callbackFlag;
+ if (!tools.canAsync(setting, node) && sonSign) {
+ view.expandCollapseSonNode(setting, node, expandFlag, true, function() {
+ if (focus !== false) {try{$$(node, setting).focus().blur();}catch(e){}}
+ });
+ } else {
+ node.open = !expandFlag;
+ view.switchNode(this.setting, node);
+ if (focus !== false) {try{$$(node, setting).focus().blur();}catch(e){}}
+ }
+ return expandFlag;
+ },
+ getNodes : function() {
+ return data.getNodes(setting);
+ },
+ getNodeByParam : function(key, value, parentNode) {
+ if (!key) return null;
+ return data.getNodeByParam(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), key, value);
+ },
+ getNodeByTId : function(tId) {
+ return data.getNodeCache(setting, tId);
+ },
+ getNodesByParam : function(key, value, parentNode) {
+ if (!key) return null;
+ return data.getNodesByParam(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), key, value);
+ },
+ getNodesByParamFuzzy : function(key, value, parentNode) {
+ if (!key) return null;
+ return data.getNodesByParamFuzzy(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), key, value);
+ },
+ getNodesByFilter: function(filter, isSingle, parentNode, invokeParam) {
+ isSingle = !!isSingle;
+ if (!filter || (typeof filter != "function")) return (isSingle ? null : []);
+ return data.getNodesByFilter(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), filter, isSingle, invokeParam);
+ },
+ getNodeIndex : function(node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting);
+ for (var i=0, l = parentNode[childKey].length; i < l; i++) {
+ if (parentNode[childKey][i] == node) return i;
+ }
+ return -1;
+ },
+ getSelectedNodes : function() {
+ var r = [], list = data.getRoot(setting).curSelectedList;
+ for (var i=0, l=list.length; i<l; i++) {
+ r.push(list[i]);
+ }
+ return r;
+ },
+ isSelectedNode : function(node) {
+ return data.isSelectedNode(setting, node);
+ },
+ reAsyncChildNodes : function(parentNode, reloadType, isSilent) {
+ if (!this.setting.async.enable) return;
+ var isRoot = !parentNode;
+ if (isRoot) {
+ parentNode = data.getRoot(setting);
+ }
+ if (reloadType=="refresh") {
+ var childKey = this.setting.data.key.children;
+ for (var i = 0, l = parentNode[childKey] ? parentNode[childKey].length : 0; i < l; i++) {
+ data.removeNodeCache(setting, parentNode[childKey][i]);
+ }
+ data.removeSelectedNode(setting);
+ parentNode[childKey] = [];
+ if (isRoot) {
+ this.setting.treeObj.empty();
+ } else {
+ var ulObj = $$(parentNode, consts.id.UL, setting);
+ ulObj.empty();
+ }
+ }
+ view.asyncNode(this.setting, isRoot? null:parentNode, !!isSilent);
+ },
+ refresh : function() {
+ this.setting.treeObj.empty();
+ var root = data.getRoot(setting),
+ nodes = root[setting.data.key.children]
+ data.initRoot(setting);
+ root[setting.data.key.children] = nodes
+ data.initCache(setting);
+ view.createNodes(setting, 0, root[setting.data.key.children]);
+ },
+ removeChildNodes : function(node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ nodes = node[childKey];
+ view.removeChildNodes(setting, node);
+ return nodes ? nodes : null;
+ },
+ removeNode : function(node, callbackFlag) {
+ if (!node) return;
+ callbackFlag = !!callbackFlag;
+ if (callbackFlag && tools.apply(setting.callback.beforeRemove, [setting.treeId, node], true) == false) return;
+ view.removeNode(setting, node);
+ if (callbackFlag) {
+ this.setting.treeObj.trigger(consts.event.REMOVE, [setting.treeId, node]);
+ }
+ },
+ selectNode : function(node, addFlag) {
+ if (!node) return;
+ if (tools.uCanDo(setting)) {
+ addFlag = setting.view.selectedMulti && addFlag;
+ if (node.parentTId) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), true, false, function() {
+ try{$$(node, setting).focus().blur();}catch(e){}
+ });
+ } else {
+ try{$$(node, setting).focus().blur();}catch(e){}
+ }
+ view.selectNode(setting, node, addFlag);
+ }
+ },
+ transformTozTreeNodes : function(simpleNodes) {
+ return data.transformTozTreeFormat(setting, simpleNodes);
+ },
+ transformToArray : function(nodes) {
+ return data.transformToArrayFormat(setting, nodes);
+ },
+ updateNode : function(node, checkTypeFlag) {
+ if (!node) return;
+ var nObj = $$(node, setting);
+ if (nObj.get(0) && tools.uCanDo(setting)) {
+ view.setNodeName(setting, node);
+ view.setNodeTarget(setting, node);
+ view.setNodeUrl(setting, node);
+ view.setNodeLineIcos(setting, node);
+ view.setNodeFontCss(setting, node);
+ }
+ }
+ }
+ root.treeTools = zTreeTools;
+ data.setZTreeTools(setting, zTreeTools);
+
+ if (root[childKey] && root[childKey].length > 0) {
+ view.createNodes(setting, 0, root[childKey]);
+ } else if (setting.async.enable && setting.async.url && setting.async.url !== '') {
+ view.asyncNode(setting);
+ }
+ return zTreeTools;
+ }
+ };
+
+ var zt = $.fn.zTree,
+ $$ = tools.$,
+ consts = zt.consts;
+})(jQuery);
+/*
+ * JQuery zTree excheck v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function($){
+ //default consts of excheck
+ var _consts = {
+ event: {
+ CHECK: "ztree_check"
+ },
+ id: {
+ CHECK: "_check"
+ },
+ checkbox: {
+ STYLE: "checkbox",
+ DEFAULT: "chk",
+ DISABLED: "disable",
+ FALSE: "false",
+ TRUE: "true",
+ FULL: "full",
+ PART: "part",
+ FOCUS: "focus"
+ },
+ radio: {
+ STYLE: "radio",
+ TYPE_ALL: "all",
+ TYPE_LEVEL: "level"
+ }
+ },
+ //default setting of excheck
+ _setting = {
+ check: {
+ enable: false,
+ autoCheckTrigger: false,
+ chkStyle: _consts.checkbox.STYLE,
+ nocheckInherit: false,
+ chkDisabledInherit: false,
+ radioType: _consts.radio.TYPE_LEVEL,
+ chkboxType: {
+ "Y": "ps",
+ "N": "ps"
+ }
+ },
+ data: {
+ key: {
+ checked: "checked"
+ }
+ },
+ callback: {
+ beforeCheck:null,
+ onCheck:null
+ }
+ },
+ //default root of excheck
+ _initRoot = function (setting) {
+ var r = data.getRoot(setting);
+ r.radioCheckedList = [];
+ },
+ //default cache of excheck
+ _initCache = function(treeId) {},
+ //default bind event of excheck
+ _bindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.bind(c.CHECK, function (event, srcEvent, treeId, node) {
+ event.srcEvent = srcEvent;
+ tools.apply(setting.callback.onCheck, [event, treeId, node]);
+ });
+ },
+ _unbindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.unbind(c.CHECK);
+ },
+ //default event proxy of excheck
+ _eventProxy = function(e) {
+ var target = e.target,
+ setting = data.getSetting(e.data.treeId),
+ tId = "", node = null,
+ nodeEventType = "", treeEventType = "",
+ nodeEventCallback = null, treeEventCallback = null;
+
+ if (tools.eqs(e.type, "mouseover")) {
+ if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "mouseoverCheck";
+ }
+ } else if (tools.eqs(e.type, "mouseout")) {
+ if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "mouseoutCheck";
+ }
+ } else if (tools.eqs(e.type, "click")) {
+ if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "checkNode";
+ }
+ }
+ if (tId.length>0) {
+ node = data.getNodeCache(setting, tId);
+ switch (nodeEventType) {
+ case "checkNode" :
+ nodeEventCallback = _handler.onCheckNode;
+ break;
+ case "mouseoverCheck" :
+ nodeEventCallback = _handler.onMouseoverCheck;
+ break;
+ case "mouseoutCheck" :
+ nodeEventCallback = _handler.onMouseoutCheck;
+ break;
+ }
+ }
+ var proxyResult = {
+ stop: nodeEventType === "checkNode",
+ node: node,
+ nodeEventType: nodeEventType,
+ nodeEventCallback: nodeEventCallback,
+ treeEventType: treeEventType,
+ treeEventCallback: treeEventCallback
+ };
+ return proxyResult
+ },
+ //default init node of excheck
+ _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
+ if (!n) return;
+ var checkedKey = setting.data.key.checked;
+ if (typeof n[checkedKey] == "string") n[checkedKey] = tools.eqs(n[checkedKey], "true");
+ n[checkedKey] = !!n[checkedKey];
+ n.checkedOld = n[checkedKey];
+ if (typeof n.nocheck == "string") n.nocheck = tools.eqs(n.nocheck, "true");
+ n.nocheck = !!n.nocheck || (setting.check.nocheckInherit && parentNode && !!parentNode.nocheck);
+ if (typeof n.chkDisabled == "string") n.chkDisabled = tools.eqs(n.chkDisabled, "true");
+ n.chkDisabled = !!n.chkDisabled || (setting.check.chkDisabledInherit && parentNode && !!parentNode.chkDisabled);
+ if (typeof n.halfCheck == "string") n.halfCheck = tools.eqs(n.halfCheck, "true");
+ n.halfCheck = !!n.halfCheck;
+ n.check_Child_State = -1;
+ n.check_Focus = false;
+ n.getCheckStatus = function() {return data.getCheckStatus(setting, n);};
+
+ if (setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL && n[checkedKey] ) {
+ var r = data.getRoot(setting);
+ r.radioCheckedList.push(n);
+ }
+ },
+ //add dom for check
+ _beforeA = function(setting, node, html) {
+ var checkedKey = setting.data.key.checked;
+ if (setting.check.enable) {
+ data.makeChkFlag(setting, node);
+ html.push("<span ID='", node.tId, consts.id.CHECK, "' class='", view.makeChkClass(setting, node), "' treeNode", consts.id.CHECK, (node.nocheck === true?" style='display:none;'":""),"></span>");
+ }
+ },
+ //update zTreeObj, add method of check
+ _zTreeTools = function(setting, zTreeTools) {
+ zTreeTools.checkNode = function(node, checked, checkTypeFlag, callbackFlag) {
+ var checkedKey = this.setting.data.key.checked;
+ if (node.chkDisabled === true) return;
+ if (checked !== true && checked !== false) {
+ checked = !node[checkedKey];
+ }
+ callbackFlag = !!callbackFlag;
+
+ if (node[checkedKey] === checked && !checkTypeFlag) {
+ return;
+ } else if (callbackFlag && tools.apply(this.setting.callback.beforeCheck, [this.setting.treeId, node], true) == false) {
+ return;
+ }
+ if (tools.uCanDo(this.setting) && this.setting.check.enable && node.nocheck !== true) {
+ node[checkedKey] = checked;
+ var checkObj = $$(node, consts.id.CHECK, this.setting);
+ if (checkTypeFlag || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node);
+ view.setChkClass(this.setting, checkObj, node);
+ view.repairParentChkClassWithSelf(this.setting, node);
+ if (callbackFlag) {
+ this.setting.treeObj.trigger(consts.event.CHECK, [null, this.setting.treeId, node]);
+ }
+ }
+ }
+
+ zTreeTools.checkAllNodes = function(checked) {
+ view.repairAllChk(this.setting, !!checked);
+ }
+
+ zTreeTools.getCheckedNodes = function(checked) {
+ var childKey = this.setting.data.key.children;
+ checked = (checked !== false);
+ return data.getTreeCheckedNodes(this.setting, data.getRoot(this.setting)[childKey], checked);
+ }
+
+ zTreeTools.getChangeCheckedNodes = function() {
+ var childKey = this.setting.data.key.children;
+ return data.getTreeChangeCheckedNodes(this.setting, data.getRoot(this.setting)[childKey]);
+ }
+
+ zTreeTools.setChkDisabled = function(node, disabled, inheritParent, inheritChildren) {
+ disabled = !!disabled;
+ inheritParent = !!inheritParent;
+ inheritChildren = !!inheritChildren;
+ view.repairSonChkDisabled(this.setting, node, disabled, inheritChildren);
+ view.repairParentChkDisabled(this.setting, node.getParentNode(), disabled, inheritParent);
+ }
+
+ var _updateNode = zTreeTools.updateNode;
+ zTreeTools.updateNode = function(node, checkTypeFlag) {
+ if (_updateNode) _updateNode.apply(zTreeTools, arguments);
+ if (!node || !this.setting.check.enable) return;
+ var nObj = $$(node, this.setting);
+ if (nObj.get(0) && tools.uCanDo(this.setting)) {
+ var checkObj = $$(node, consts.id.CHECK, this.setting);
+ if (checkTypeFlag == true || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node);
+ view.setChkClass(this.setting, checkObj, node);
+ view.repairParentChkClassWithSelf(this.setting, node);
+ }
+ }
+ },
+ //method of operate data
+ _data = {
+ getRadioCheckedList: function(setting) {
+ var checkedList = data.getRoot(setting).radioCheckedList;
+ for (var i=0, j=checkedList.length; i<j; i++) {
+ if(!data.getNodeCache(setting, checkedList[i].tId)) {
+ checkedList.splice(i, 1);
+ i--; j--;
+ }
+ }
+ return checkedList;
+ },
+ getCheckStatus: function(setting, node) {
+ if (!setting.check.enable || node.nocheck || node.chkDisabled) return null;
+ var checkedKey = setting.data.key.checked,
+ r = {
+ checked: node[checkedKey],
+ half: node.halfCheck ? node.halfCheck : (setting.check.chkStyle == consts.radio.STYLE ? (node.check_Child_State === 2) : (node[checkedKey] ? (node.check_Child_State > -1 && node.check_Child_State < 2) : (node.check_Child_State > 0)))
+ };
+ return r;
+ },
+ getTreeCheckedNodes: function(setting, nodes, checked, results) {
+ if (!nodes) return [];
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ onlyOne = (checked && setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL);
+ results = !results ? [] : results;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i].nocheck !== true && nodes[i].chkDisabled !== true && nodes[i][checkedKey] == checked) {
+ results.push(nodes[i]);
+ if(onlyOne) {
+ break;
+ }
+ }
+ data.getTreeCheckedNodes(setting, nodes[i][childKey], checked, results);
+ if(onlyOne && results.length > 0) {
+ break;
+ }
+ }
+ return results;
+ },
+ getTreeChangeCheckedNodes: function(setting, nodes, results) {
+ if (!nodes) return [];
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked;
+ results = !results ? [] : results;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i].nocheck !== true && nodes[i].chkDisabled !== true && nodes[i][checkedKey] != nodes[i].checkedOld) {
+ results.push(nodes[i]);
+ }
+ data.getTreeChangeCheckedNodes(setting, nodes[i][childKey], results);
+ }
+ return results;
+ },
+ makeChkFlag: function(setting, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ chkFlag = -1;
+ if (node[childKey]) {
+ for (var i = 0, l = node[childKey].length; i < l; i++) {
+ var cNode = node[childKey][i];
+ var tmp = -1;
+ if (setting.check.chkStyle == consts.radio.STYLE) {
+ if (cNode.nocheck === true || cNode.chkDisabled === true) {
+ tmp = cNode.check_Child_State;
+ } else if (cNode.halfCheck === true) {
+ tmp = 2;
+ } else if (cNode[checkedKey]) {
+ tmp = 2;
+ } else {
+ tmp = cNode.check_Child_State > 0 ? 2:0;
+ }
+ if (tmp == 2) {
+ chkFlag = 2; break;
+ } else if (tmp == 0){
+ chkFlag = 0;
+ }
+ } else if (setting.check.chkStyle == consts.checkbox.STYLE) {
+ if (cNode.nocheck === true || cNode.chkDisabled === true) {
+ tmp = cNode.check_Child_State;
+ } else if (cNode.halfCheck === true) {
+ tmp = 1;
+ } else if (cNode[checkedKey] ) {
+ tmp = (cNode.check_Child_State === -1 || cNode.check_Child_State === 2) ? 2 : 1;
+ } else {
+ tmp = (cNode.check_Child_State > 0) ? 1 : 0;
+ }
+ if (tmp === 1) {
+ chkFlag = 1; break;
+ } else if (tmp === 2 && chkFlag > -1 && i > 0 && tmp !== chkFlag) {
+ chkFlag = 1; break;
+ } else if (chkFlag === 2 && tmp > -1 && tmp < 2) {
+ chkFlag = 1; break;
+ } else if (tmp > -1) {
+ chkFlag = tmp;
+ }
+ }
+ }
+ }
+ node.check_Child_State = chkFlag;
+ }
+ },
+ //method of event proxy
+ _event = {
+
+ },
+ //method of event handler
+ _handler = {
+ onCheckNode: function (event, node) {
+ if (node.chkDisabled === true) return false;
+ var setting = data.getSetting(event.data.treeId),
+ checkedKey = setting.data.key.checked;
+ if (tools.apply(setting.callback.beforeCheck, [setting.treeId, node], true) == false) return true;
+ node[checkedKey] = !node[checkedKey];
+ view.checkNodeRelation(setting, node);
+ var checkObj = $$(node, consts.id.CHECK, setting);
+ view.setChkClass(setting, checkObj, node);
+ view.repairParentChkClassWithSelf(setting, node);
+ setting.treeObj.trigger(consts.event.CHECK, [event, setting.treeId, node]);
+ return true;
+ },
+ onMouseoverCheck: function(event, node) {
+ if (node.chkDisabled === true) return false;
+ var setting = data.getSetting(event.data.treeId),
+ checkObj = $$(node, consts.id.CHECK, setting);
+ node.check_Focus = true;
+ view.setChkClass(setting, checkObj, node);
+ return true;
+ },
+ onMouseoutCheck: function(event, node) {
+ if (node.chkDisabled === true) return false;
+ var setting = data.getSetting(event.data.treeId),
+ checkObj = $$(node, consts.id.CHECK, setting);
+ node.check_Focus = false;
+ view.setChkClass(setting, checkObj, node);
+ return true;
+ }
+ },
+ //method of tools for zTree
+ _tools = {
+
+ },
+ //method of operate ztree dom
+ _view = {
+ checkNodeRelation: function(setting, node) {
+ var pNode, i, l,
+ childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ r = consts.radio;
+ if (setting.check.chkStyle == r.STYLE) {
+ var checkedList = data.getRadioCheckedList(setting);
+ if (node[checkedKey]) {
+ if (setting.check.radioType == r.TYPE_ALL) {
+ for (i = checkedList.length-1; i >= 0; i--) {
+ pNode = checkedList[i];
+ if (pNode[checkedKey] && pNode != node) {
+ pNode[checkedKey] = false;
+ checkedList.splice(i, 1);
+
+ view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode);
+ if (pNode.parentTId != node.parentTId) {
+ view.repairParentChkClassWithSelf(setting, pNode);
+ }
+ }
+ }
+ checkedList.push(node);
+ } else {
+ var parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting);
+ for (i = 0, l = parentNode[childKey].length; i < l; i++) {
+ pNode = parentNode[childKey][i];
+ if (pNode[checkedKey] && pNode != node) {
+ pNode[checkedKey] = false;
+ view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode);
+ }
+ }
+ }
+ } else if (setting.check.radioType == r.TYPE_ALL) {
+ for (i = 0, l = checkedList.length; i < l; i++) {
+ if (node == checkedList[i]) {
+ checkedList.splice(i, 1);
+ break;
+ }
+ }
+ }
+
+ } else {
+ if (node[checkedKey] && (!node[childKey] || node[childKey].length==0 || setting.check.chkboxType.Y.indexOf("s") > -1)) {
+ view.setSonNodeCheckBox(setting, node, true);
+ }
+ if (!node[checkedKey] && (!node[childKey] || node[childKey].length==0 || setting.check.chkboxType.N.indexOf("s") > -1)) {
+ view.setSonNodeCheckBox(setting, node, false);
+ }
+ if (node[checkedKey] && setting.check.chkboxType.Y.indexOf("p") > -1) {
+ view.setParentNodeCheckBox(setting, node, true);
+ }
+ if (!node[checkedKey] && setting.check.chkboxType.N.indexOf("p") > -1) {
+ view.setParentNodeCheckBox(setting, node, false);
+ }
+ }
+ },
+ makeChkClass: function(setting, node) {
+ var checkedKey = setting.data.key.checked,
+ c = consts.checkbox, r = consts.radio,
+ fullStyle = "";
+ if (node.chkDisabled === true) {
+ fullStyle = c.DISABLED;
+ } else if (node.halfCheck) {
+ fullStyle = c.PART;
+ } else if (setting.check.chkStyle == r.STYLE) {
+ fullStyle = (node.check_Child_State < 1)? c.FULL:c.PART;
+ } else {
+ fullStyle = node[checkedKey] ? ((node.check_Child_State === 2 || node.check_Child_State === -1) ? c.FULL:c.PART) : ((node.check_Child_State < 1)? c.FULL:c.PART);
+ }
+ var chkName = setting.check.chkStyle + "_" + (node[checkedKey] ? c.TRUE : c.FALSE) + "_" + fullStyle;
+ chkName = (node.check_Focus && node.chkDisabled !== true) ? chkName + "_" + c.FOCUS : chkName;
+ return consts.className.BUTTON + " " + c.DEFAULT + " " + chkName;
+ },
+ repairAllChk: function(setting, checked) {
+ if (setting.check.enable && setting.check.chkStyle === consts.checkbox.STYLE) {
+ var checkedKey = setting.data.key.checked,
+ childKey = setting.data.key.children,
+ root = data.getRoot(setting);
+ for (var i = 0, l = root[childKey].length; i<l ; i++) {
+ var node = root[childKey][i];
+ if (node.nocheck !== true && node.chkDisabled !== true) {
+ node[checkedKey] = checked;
+ }
+ view.setSonNodeCheckBox(setting, node, checked);
+ }
+ }
+ },
+ repairChkClass: function(setting, node) {
+ if (!node) return;
+ data.makeChkFlag(setting, node);
+ if (node.nocheck !== true) {
+ var checkObj = $$(node, consts.id.CHECK, setting);
+ view.setChkClass(setting, checkObj, node);
+ }
+ },
+ repairParentChkClass: function(setting, node) {
+ if (!node || !node.parentTId) return;
+ var pNode = node.getParentNode();
+ view.repairChkClass(setting, pNode);
+ view.repairParentChkClass(setting, pNode);
+ },
+ repairParentChkClassWithSelf: function(setting, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children;
+ if (node[childKey] && node[childKey].length > 0) {
+ view.repairParentChkClass(setting, node[childKey][0]);
+ } else {
+ view.repairParentChkClass(setting, node);
+ }
+ },
+ repairSonChkDisabled: function(setting, node, chkDisabled, inherit) {
+ if (!node) return;
+ var childKey = setting.data.key.children;
+ if (node.chkDisabled != chkDisabled) {
+ node.chkDisabled = chkDisabled;
+ }
+ view.repairChkClass(setting, node);
+ if (node[childKey] && inherit) {
+ for (var i = 0, l = node[childKey].length; i < l; i++) {
+ var sNode = node[childKey][i];
+ view.repairSonChkDisabled(setting, sNode, chkDisabled, inherit);
+ }
+ }
+ },
+ repairParentChkDisabled: function(setting, node, chkDisabled, inherit) {
+ if (!node) return;
+ if (node.chkDisabled != chkDisabled && inherit) {
+ node.chkDisabled = chkDisabled;
+ }
+ view.repairChkClass(setting, node);
+ view.repairParentChkDisabled(setting, node.getParentNode(), chkDisabled, inherit);
+ },
+ setChkClass: function(setting, obj, node) {
+ if (!obj) return;
+ if (node.nocheck === true) {
+ obj.hide();
+ } else {
+ obj.show();
+ }
+ obj.removeClass();
+ obj.addClass(view.makeChkClass(setting, node));
+ },
+ setParentNodeCheckBox: function(setting, node, value, srcNode) {
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ checkObj = $$(node, consts.id.CHECK, setting);
+ if (!srcNode) srcNode = node;
+ data.makeChkFlag(setting, node);
+ if (node.nocheck !== true && node.chkDisabled !== true) {
+ node[checkedKey] = value;
+ view.setChkClass(setting, checkObj, node);
+ if (setting.check.autoCheckTrigger && node != srcNode) {
+ setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]);
+ }
+ }
+ if (node.parentTId) {
+ var pSign = true;
+ if (!value) {
+ var pNodes = node.getParentNode()[childKey];
+ for (var i = 0, l = pNodes.length; i < l; i++) {
+ if ((pNodes[i].nocheck !== true && pNodes[i].chkDisabled !== true && pNodes[i][checkedKey])
+ || ((pNodes[i].nocheck === true || pNodes[i].chkDisabled === true) && pNodes[i].check_Child_State > 0)) {
+ pSign = false;
+ break;
+ }
+ }
+ }
+ if (pSign) {
+ view.setParentNodeCheckBox(setting, node.getParentNode(), value, srcNode);
+ }
+ }
+ },
+ setSonNodeCheckBox: function(setting, node, value, srcNode) {
+ if (!node) return;
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ checkObj = $$(node, consts.id.CHECK, setting);
+ if (!srcNode) srcNode = node;
+
+ var hasDisable = false;
+ if (node[childKey]) {
+ for (var i = 0, l = node[childKey].length; i < l && node.chkDisabled !== true; i++) {
+ var sNode = node[childKey][i];
+ view.setSonNodeCheckBox(setting, sNode, value, srcNode);
+ if (sNode.chkDisabled === true) hasDisable = true;
+ }
+ }
+
+ if (node != data.getRoot(setting) && node.chkDisabled !== true) {
+ if (hasDisable && node.nocheck !== true) {
+ data.makeChkFlag(setting, node);
+ }
+ if (node.nocheck !== true && node.chkDisabled !== true) {
+ node[checkedKey] = value;
+ if (!hasDisable) node.check_Child_State = (node[childKey] && node[childKey].length > 0) ? (value ? 2 : 0) : -1;
+ } else {
+ node.check_Child_State = -1;
+ }
+ view.setChkClass(setting, checkObj, node);
+ if (setting.check.autoCheckTrigger && node != srcNode && node.nocheck !== true && node.chkDisabled !== true) {
+ setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]);
+ }
+ }
+
+ }
+ },
+
+ _z = {
+ tools: _tools,
+ view: _view,
+ event: _event,
+ data: _data
+ };
+ $.extend(true, $.fn.zTree.consts, _consts);
+ $.extend(true, $.fn.zTree._z, _z);
+
+ var zt = $.fn.zTree,
+ tools = zt._z.tools,
+ consts = zt.consts,
+ view = zt._z.view,
+ data = zt._z.data,
+ event = zt._z.event,
+ $$ = tools.$;
+
+ data.exSetting(_setting);
+ data.addInitBind(_bindEvent);
+ data.addInitUnBind(_unbindEvent);
+ data.addInitCache(_initCache);
+ data.addInitNode(_initNode);
+ data.addInitProxy(_eventProxy, true);
+ data.addInitRoot(_initRoot);
+ data.addBeforeA(_beforeA);
+ data.addZTreeTools(_zTreeTools);
+
+ var _createNodes = view.createNodes;
+ view.createNodes = function(setting, level, nodes, parentNode) {
+ if (_createNodes) _createNodes.apply(view, arguments);
+ if (!nodes) return;
+ view.repairParentChkClassWithSelf(setting, parentNode);
+ }
+ var _removeNode = view.removeNode;
+ view.removeNode = function(setting, node) {
+ var parentNode = node.getParentNode();
+ if (_removeNode) _removeNode.apply(view, arguments);
+ if (!node || !parentNode) return;
+ view.repairChkClass(setting, parentNode);
+ view.repairParentChkClass(setting, parentNode);
+ }
+
+ var _appendNodes = view.appendNodes;
+ view.appendNodes = function(setting, level, nodes, parentNode, initFlag, openFlag) {
+ var html = "";
+ if (_appendNodes) {
+ html = _appendNodes.apply(view, arguments);
+ }
+ if (parentNode) {
+ data.makeChkFlag(setting, parentNode);
+ }
+ return html;
+ }
+})(jQuery);
+/*
+ * JQuery zTree exedit v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function($){
+ //default consts of exedit
+ var _consts = {
+ event: {
+ DRAG: "ztree_drag",
+ DROP: "ztree_drop",
+ RENAME: "ztree_rename",
+ DRAGMOVE:"ztree_dragmove"
+ },
+ id: {
+ EDIT: "_edit",
+ INPUT: "_input",
+ REMOVE: "_remove"
+ },
+ move: {
+ TYPE_INNER: "inner",
+ TYPE_PREV: "prev",
+ TYPE_NEXT: "next"
+ },
+ node: {
+ CURSELECTED_EDIT: "curSelectedNode_Edit",
+ TMPTARGET_TREE: "tmpTargetzTree",
+ TMPTARGET_NODE: "tmpTargetNode"
+ }
+ },
+ //default setting of exedit
+ _setting = {
+ edit: {
+ enable: false,
+ editNameSelectAll: false,
+ showRemoveBtn: true,
+ showRenameBtn: true,
+ removeTitle: "remove",
+ renameTitle: "rename",
+ drag: {
+ autoExpandTrigger: false,
+ isCopy: true,
+ isMove: true,
+ prev: true,
+ next: true,
+ inner: true,
+ minMoveSize: 5,
+ borderMax: 10,
+ borderMin: -5,
+ maxShowNodeNum: 5,
+ autoOpenTime: 500
+ }
+ },
+ view: {
+ addHoverDom: null,
+ removeHoverDom: null
+ },
+ callback: {
+ beforeDrag:null,
+ beforeDragOpen:null,
+ beforeDrop:null,
+ beforeEditName:null,
+ beforeRename:null,
+ onDrag:null,
+ onDragMove:null,
+ onDrop:null,
+ onRename:null
+ }
+ },
+ //default root of exedit
+ _initRoot = function (setting) {
+ var r = data.getRoot(setting), rs = data.getRoots();
+ r.curEditNode = null;
+ r.curEditInput = null;
+ r.curHoverNode = null;
+ r.dragFlag = 0;
+ r.dragNodeShowBefore = [];
+ r.dragMaskList = new Array();
+ rs.showHoverDom = true;
+ },
+ //default cache of exedit
+ _initCache = function(treeId) {},
+ //default bind event of exedit
+ _bindEvent = function(setting) {
+ var o = setting.treeObj;
+ var c = consts.event;
+ o.bind(c.RENAME, function (event, treeId, treeNode, isCancel) {
+ tools.apply(setting.callback.onRename, [event, treeId, treeNode, isCancel]);
+ });
+
+ o.bind(c.DRAG, function (event, srcEvent, treeId, treeNodes) {
+ tools.apply(setting.callback.onDrag, [srcEvent, treeId, treeNodes]);
+ });
+
+ o.bind(c.DRAGMOVE,function(event, srcEvent, treeId, treeNodes){
+ tools.apply(setting.callback.onDragMove,[srcEvent, treeId, treeNodes]);
+ });
+
+ o.bind(c.DROP, function (event, srcEvent, treeId, treeNodes, targetNode, moveType, isCopy) {
+ tools.apply(setting.callback.onDrop, [srcEvent, treeId, treeNodes, targetNode, moveType, isCopy]);
+ });
+ },
+ _unbindEvent = function(setting) {
+ var o = setting.treeObj;
+ var c = consts.event;
+ o.unbind(c.RENAME);
+ o.unbind(c.DRAG);
+ o.unbind(c.DRAGMOVE);
+ o.unbind(c.DROP);
+ },
+ //default event proxy of exedit
+ _eventProxy = function(e) {
+ var target = e.target,
+ setting = data.getSetting(e.data.treeId),
+ relatedTarget = e.relatedTarget,
+ tId = "", node = null,
+ nodeEventType = "", treeEventType = "",
+ nodeEventCallback = null, treeEventCallback = null,
+ tmp = null;
+
+ if (tools.eqs(e.type, "mouseover")) {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "hoverOverNode";
+ }
+ } else if (tools.eqs(e.type, "mouseout")) {
+ tmp = tools.getMDom(setting, relatedTarget, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (!tmp) {
+ tId = "remove";
+ nodeEventType = "hoverOutNode";
+ }
+ } else if (tools.eqs(e.type, "mousedown")) {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "mousedownNode";
+ }
+ }
+ if (tId.length>0) {
+ node = data.getNodeCache(setting, tId);
+ switch (nodeEventType) {
+ case "mousedownNode" :
+ nodeEventCallback = _handler.onMousedownNode;
+ break;
+ case "hoverOverNode" :
+ nodeEventCallback = _handler.onHoverOverNode;
+ break;
+ case "hoverOutNode" :
+ nodeEventCallback = _handler.onHoverOutNode;
+ break;
+ }
+ }
+ var proxyResult = {
+ stop: false,
+ node: node,
+ nodeEventType: nodeEventType,
+ nodeEventCallback: nodeEventCallback,
+ treeEventType: treeEventType,
+ treeEventCallback: treeEventCallback
+ };
+ return proxyResult
+ },
+ //default init node of exedit
+ _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
+ if (!n) return;
+ n.isHover = false;
+ n.editNameFlag = false;
+ },
+ //update zTreeObj, add method of edit
+ _zTreeTools = function(setting, zTreeTools) {
+ zTreeTools.cancelEditName = function(newName) {
+ var root = data.getRoot(this.setting);
+ if (!root.curEditNode) return;
+ view.cancelCurEditNode(this.setting, newName?newName:null, true);
+ }
+ zTreeTools.copyNode = function(targetNode, node, moveType, isSilent) {
+ if (!node) return null;
+ if (targetNode && !targetNode.isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) return null;
+ var _this = this,
+ newNode = tools.clone(node);
+ if (!targetNode) {
+ targetNode = null;
+ moveType = consts.move.TYPE_INNER;
+ }
+ if (moveType == consts.move.TYPE_INNER) {
+ function copyCallback() {
+ view.addNodes(_this.setting, targetNode, [newNode], isSilent);
+ }
+
+ if (tools.canAsync(this.setting, targetNode)) {
+ view.asyncNode(this.setting, targetNode, isSilent, copyCallback);
+ } else {
+ copyCallback();
+ }
+ } else {
+ view.addNodes(this.setting, targetNode.parentNode, [newNode], isSilent);
+ view.moveNode(this.setting, targetNode, newNode, moveType, false, isSilent);
+ }
+ return newNode;
+ }
+ zTreeTools.editName = function(node) {
+ if (!node || !node.tId || node !== data.getNodeCache(this.setting, node.tId)) return;
+ if (node.parentTId) view.expandCollapseParentNode(this.setting, node.getParentNode(), true);
+ view.editNode(this.setting, node)
+ }
+ zTreeTools.moveNode = function(targetNode, node, moveType, isSilent) {
+ if (!node) return node;
+ if (targetNode && !targetNode.isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) {
+ return null;
+ } else if (targetNode && ((node.parentTId == targetNode.tId && moveType == consts.move.TYPE_INNER) || $$(node, this.setting).find("#" + targetNode.tId).length > 0)) {
+ return null;
+ } else if (!targetNode) {
+ targetNode = null;
+ }
+ var _this = this;
+ function moveCallback() {
+ view.moveNode(_this.setting, targetNode, node, moveType, false, isSilent);
+ }
+ if (tools.canAsync(this.setting, targetNode) && moveType === consts.move.TYPE_INNER) {
+ view.asyncNode(this.setting, targetNode, isSilent, moveCallback);
+ } else {
+ moveCallback();
+ }
+ return node;
+ }
+ zTreeTools.setEditable = function(editable) {
+ this.setting.edit.enable = editable;
+ return this.refresh();
+ }
+ },
+ //method of operate data
+ _data = {
+ setSonNodeLevel: function(setting, parentNode, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children;
+ node.level = (parentNode)? parentNode.level + 1 : 0;
+ if (!node[childKey]) return;
+ for (var i = 0, l = node[childKey].length; i < l; i++) {
+ if (node[childKey][i]) data.setSonNodeLevel(setting, node, node[childKey][i]);
+ }
+ }
+ },
+ //method of event proxy
+ _event = {
+
+ },
+ //method of event handler
+ _handler = {
+ onHoverOverNode: function(event, node) {
+ var setting = data.getSetting(event.data.treeId),
+ root = data.getRoot(setting);
+ if (root.curHoverNode != node) {
+ _handler.onHoverOutNode(event);
+ }
+ root.curHoverNode = node;
+ view.addHoverDom(setting, node);
+ },
+ onHoverOutNode: function(event, node) {
+ var setting = data.getSetting(event.data.treeId),
+ root = data.getRoot(setting);
+ if (root.curHoverNode && !data.isSelectedNode(setting, root.curHoverNode)) {
+ view.removeTreeDom(setting, root.curHoverNode);
+ root.curHoverNode = null;
+ }
+ },
+ onMousedownNode: function(eventMouseDown, _node) {
+ var i,l,
+ setting = data.getSetting(eventMouseDown.data.treeId),
+ root = data.getRoot(setting), roots = data.getRoots();
+ //right click can't drag & drop
+ if (eventMouseDown.button == 2 || !setting.edit.enable || (!setting.edit.drag.isCopy && !setting.edit.drag.isMove)) return true;
+
+ //input of edit node name can't drag & drop
+ var target = eventMouseDown.target,
+ _nodes = data.getRoot(setting).curSelectedList,
+ nodes = [];
+ if (!data.isSelectedNode(setting, _node)) {
+ nodes = [_node];
+ } else {
+ for (i=0, l=_nodes.length; i<l; i++) {
+ if (_nodes[i].editNameFlag && tools.eqs(target.tagName, "input") && target.getAttribute("treeNode"+consts.id.INPUT) !== null) {
+ return true;
+ }
+ nodes.push(_nodes[i]);
+ if (nodes[0].parentTId !== _nodes[i].parentTId) {
+ nodes = [_node];
+ break;
+ }
+ }
+ }
+
+ view.editNodeBlur = true;
+ view.cancelCurEditNode(setting);
+
+ var doc = $(setting.treeObj.get(0).ownerDocument),
+ body = $(setting.treeObj.get(0).ownerDocument.body), curNode, tmpArrow, tmpTarget,
+ isOtherTree = false,
+ targetSetting = setting,
+ sourceSetting = setting,
+ preNode, nextNode,
+ preTmpTargetNodeId = null,
+ preTmpMoveType = null,
+ tmpTargetNodeId = null,
+ moveType = consts.move.TYPE_INNER,
+ mouseDownX = eventMouseDown.clientX,
+ mouseDownY = eventMouseDown.clientY,
+ startTime = (new Date()).getTime();
+
+ if (tools.uCanDo(setting)) {
+ doc.bind("mousemove", _docMouseMove);
+ }
+ function _docMouseMove(event) {
+ //avoid start drag after click node
+ if (root.dragFlag == 0 && Math.abs(mouseDownX - event.clientX) < setting.edit.drag.minMoveSize
+ && Math.abs(mouseDownY - event.clientY) < setting.edit.drag.minMoveSize) {
+ return true;
+ }
+ var i, l, tmpNode, tmpDom, tmpNodes,
+ childKey = setting.data.key.children;
+ body.css("cursor", "pointer");
+
+ if (root.dragFlag == 0) {
+ if (tools.apply(setting.callback.beforeDrag, [setting.treeId, nodes], true) == false) {
+ _docMouseUp(event);
+ return true;
+ }
+
+ for (i=0, l=nodes.length; i<l; i++) {
+ if (i==0) {
+ root.dragNodeShowBefore = [];
+ }
+ tmpNode = nodes[i];
+ if (tmpNode.isParent && tmpNode.open) {
+ view.expandCollapseNode(setting, tmpNode, !tmpNode.open);
+ root.dragNodeShowBefore[tmpNode.tId] = true;
+ } else {
+ root.dragNodeShowBefore[tmpNode.tId] = false;
+ }
+ }
+
+ root.dragFlag = 1;
+ roots.showHoverDom = false;
+ tools.showIfameMask(setting, true);
+
+ //sort
+ var isOrder = true, lastIndex = -1;
+ if (nodes.length>1) {
+ var pNodes = nodes[0].parentTId ? nodes[0].getParentNode()[childKey] : data.getNodes(setting);
+ tmpNodes = [];
+ for (i=0, l=pNodes.length; i<l; i++) {
+ if (root.dragNodeShowBefore[pNodes[i].tId] !== undefined) {
+ if (isOrder && lastIndex > -1 && (lastIndex+1) !== i) {
+ isOrder = false;
+ }
+ tmpNodes.push(pNodes[i]);
+ lastIndex = i;
+ }
+ if (nodes.length === tmpNodes.length) {
+ nodes = tmpNodes;
+ break;
+ }
+ }
+ }
+ if (isOrder) {
+ preNode = nodes[0].getPreNode();
+ nextNode = nodes[nodes.length-1].getNextNode();
+ }
+
+ //set node in selected
+ curNode = $$("<ul class='zTreeDragUL'></ul>", setting);
+ for (i=0, l=nodes.length; i<l; i++) {
+ tmpNode = nodes[i];
+ tmpNode.editNameFlag = false;
+ view.selectNode(setting, tmpNode, i>0);
+ view.removeTreeDom(setting, tmpNode);
+
+ if (i > setting.edit.drag.maxShowNodeNum-1) {
+ continue;
+ }
+
+ tmpDom = $$("<li id='"+ tmpNode.tId +"_tmp'></li>", setting);
+ tmpDom.append($$(tmpNode, consts.id.A, setting).clone());
+ tmpDom.css("padding", "0");
+ tmpDom.children("#" + tmpNode.tId + consts.id.A).removeClass(consts.node.CURSELECTED);
+ curNode.append(tmpDom);
+ if (i == setting.edit.drag.maxShowNodeNum-1) {
+ tmpDom = $$("<li id='"+ tmpNode.tId +"_moretmp'><a> ... </a></li>", setting);
+ curNode.append(tmpDom);
+ }
+ }
+ curNode.attr("id", nodes[0].tId + consts.id.UL + "_tmp");
+ curNode.addClass(setting.treeObj.attr("class"));
+ curNode.appendTo(body);
+
+ tmpArrow = $$("<span class='tmpzTreeMove_arrow'></span>", setting);
+ tmpArrow.attr("id", "zTreeMove_arrow_tmp");
+ tmpArrow.appendTo(body);
+
+ setting.treeObj.trigger(consts.event.DRAG, [event, setting.treeId, nodes]);
+ }
+
+ if (root.dragFlag == 1) {
+ if (tmpTarget && tmpArrow.attr("id") == event.target.id && tmpTargetNodeId && (event.clientX + doc.scrollLeft()+2) > ($("#" + tmpTargetNodeId + consts.id.A, tmpTarget).offset().left)) {
+ var xT = $("#" + tmpTargetNodeId + consts.id.A, tmpTarget);
+ event.target = (xT.length > 0) ? xT.get(0) : event.target;
+ } else if (tmpTarget) {
+ tmpTarget.removeClass(consts.node.TMPTARGET_TREE);
+ if (tmpTargetNodeId) $("#" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + "_" + consts.move.TYPE_PREV)
+ .removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_INNER);
+ }
+ tmpTarget = null;
+ tmpTargetNodeId = null;
+
+ //judge drag & drop in multi ztree
+ isOtherTree = false;
+ targetSetting = setting;
+ var settings = data.getSettings();
+ for (var s in settings) {
+ if (settings[s].treeId && settings[s].edit.enable && settings[s].treeId != setting.treeId
+ && (event.target.id == settings[s].treeId || $(event.target).parents("#" + settings[s].treeId).length>0)) {
+ isOtherTree = true;
+ targetSetting = settings[s];
+ }
+ }
+
+ var docScrollTop = doc.scrollTop(),
+ docScrollLeft = doc.scrollLeft(),
+ treeOffset = targetSetting.treeObj.offset(),
+ scrollHeight = targetSetting.treeObj.get(0).scrollHeight,
+ scrollWidth = targetSetting.treeObj.get(0).scrollWidth,
+ dTop = (event.clientY + docScrollTop - treeOffset.top),
+ dBottom = (targetSetting.treeObj.height() + treeOffset.top - event.clientY - docScrollTop),
+ dLeft = (event.clientX + docScrollLeft - treeOffset.left),
+ dRight = (targetSetting.treeObj.width() + treeOffset.left - event.clientX - docScrollLeft),
+ isTop = (dTop < setting.edit.drag.borderMax && dTop > setting.edit.drag.borderMin),
+ isBottom = (dBottom < setting.edit.drag.borderMax && dBottom > setting.edit.drag.borderMin),
+ isLeft = (dLeft < setting.edit.drag.borderMax && dLeft > setting.edit.drag.borderMin),
+ isRight = (dRight < setting.edit.drag.borderMax && dRight > setting.edit.drag.borderMin),
+ isTreeInner = dTop > setting.edit.drag.borderMin && dBottom > setting.edit.drag.borderMin && dLeft > setting.edit.drag.borderMin && dRight > setting.edit.drag.borderMin,
+ isTreeTop = (isTop && targetSetting.treeObj.scrollTop() <= 0),
+ isTreeBottom = (isBottom && (targetSetting.treeObj.scrollTop() + targetSetting.treeObj.height()+10) >= scrollHeight),
+ isTreeLeft = (isLeft && targetSetting.treeObj.scrollLeft() <= 0),
+ isTreeRight = (isRight && (targetSetting.treeObj.scrollLeft() + targetSetting.treeObj.width()+10) >= scrollWidth);
+
+ if (event.target && tools.isChildOrSelf(event.target, targetSetting.treeId)) {
+ //get node <li> dom
+ var targetObj = event.target;
+ while (targetObj && targetObj.tagName && !tools.eqs(targetObj.tagName, "li") && targetObj.id != targetSetting.treeId) {
+ targetObj = targetObj.parentNode;
+ }
+
+ var canMove = true;
+ //don't move to self or children of self
+ for (i=0, l=nodes.length; i<l; i++) {
+ tmpNode = nodes[i];
+ if (targetObj.id === tmpNode.tId) {
+ canMove = false;
+ break;
+ } else if ($$(tmpNode, setting).find("#" + targetObj.id).length > 0) {
+ canMove = false;
+ break;
+ }
+ }
+ if (canMove && event.target && tools.isChildOrSelf(event.target, targetObj.id + consts.id.A)) {
+ tmpTarget = $(targetObj);
+ tmpTargetNodeId = targetObj.id;
+ }
+ }
+
+ //the mouse must be in zTree
+ tmpNode = nodes[0];
+ if (isTreeInner && tools.isChildOrSelf(event.target, targetSetting.treeId)) {
+ //judge mouse move in root of ztree
+ if (!tmpTarget && (event.target.id == targetSetting.treeId || isTreeTop || isTreeBottom || isTreeLeft || isTreeRight) && (isOtherTree || (!isOtherTree && tmpNode.parentTId))) {
+ tmpTarget = targetSetting.treeObj;
+ }
+ //auto scroll top
+ if (isTop) {
+ targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop()-10);
+ } else if (isBottom) {
+ targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop()+10);
+ }
+ if (isLeft) {
+ targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft()-10);
+ } else if (isRight) {
+ targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft()+10);
+ }
+ //auto scroll left
+ if (tmpTarget && tmpTarget != targetSetting.treeObj && tmpTarget.offset().left < targetSetting.treeObj.offset().left) {
+ targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft()+ tmpTarget.offset().left - targetSetting.treeObj.offset().left);
+ }
+ }
+
+ curNode.css({
+ "top": (event.clientY + docScrollTop + 3) + "px",
+ "left": (event.clientX + docScrollLeft + 3) + "px"
+ });
+
+ var dX = 0;
+ var dY = 0;
+ if (tmpTarget && tmpTarget.attr("id")!=targetSetting.treeId) {
+ var tmpTargetNode = tmpTargetNodeId == null ? null: data.getNodeCache(targetSetting, tmpTargetNodeId),
+ isCopy = ((event.ctrlKey || event.metaKey) && setting.edit.drag.isMove && setting.edit.drag.isCopy) || (!setting.edit.drag.isMove && setting.edit.drag.isCopy),
+ isPrev = !!(preNode && tmpTargetNodeId === preNode.tId),
+ isNext = !!(nextNode && tmpTargetNodeId === nextNode.tId),
+ isInner = (tmpNode.parentTId && tmpNode.parentTId == tmpTargetNodeId),
+ canPrev = (isCopy || !isNext) && tools.apply(targetSetting.edit.drag.prev, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.prev),
+ canNext = (isCopy || !isPrev) && tools.apply(targetSetting.edit.drag.next, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.next),
+ canInner = (isCopy || !isInner) && !(targetSetting.data.keep.leaf && !tmpTargetNode.isParent) && tools.apply(targetSetting.edit.drag.inner, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.inner);
+ if (!canPrev && !canNext && !canInner) {
+ tmpTarget = null;
+ tmpTargetNodeId = "";
+ moveType = consts.move.TYPE_INNER;
+ tmpArrow.css({
+ "display":"none"
+ });
+ if (window.zTreeMoveTimer) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null
+ }
+ } else {
+ var tmpTargetA = $("#" + tmpTargetNodeId + consts.id.A, tmpTarget),
+ tmpNextA = tmpTargetNode.isLastNode ? null : $("#" + tmpTargetNode.getNextNode().tId + consts.id.A, tmpTarget.next()),
+ tmpTop = tmpTargetA.offset().top,
+ tmpLeft = tmpTargetA.offset().left,
+ prevPercent = canPrev ? (canInner ? 0.25 : (canNext ? 0.5 : 1) ) : -1,
+ nextPercent = canNext ? (canInner ? 0.75 : (canPrev ? 0.5 : 0) ) : -1,
+ dY_percent = (event.clientY + docScrollTop - tmpTop)/tmpTargetA.height();
+ if ((prevPercent==1 ||dY_percent<=prevPercent && dY_percent>=-.2) && canPrev) {
+ dX = 1 - tmpArrow.width();
+ dY = tmpTop - tmpArrow.height()/2;
+ moveType = consts.move.TYPE_PREV;
+ } else if ((nextPercent==0 || dY_percent>=nextPercent && dY_percent<=1.2) && canNext) {
+ dX = 1 - tmpArrow.width();
+ dY = (tmpNextA == null || (tmpTargetNode.isParent && tmpTargetNode.open)) ? (tmpTop + tmpTargetA.height() - tmpArrow.height()/2) : (tmpNextA.offset().top - tmpArrow.height()/2);
+ moveType = consts.move.TYPE_NEXT;
+ }else {
+ dX = 5 - tmpArrow.width();
+ dY = tmpTop;
+ moveType = consts.move.TYPE_INNER;
+ }
+ tmpArrow.css({
+ "display":"block",
+ "top": dY + "px",
+ "left": (tmpLeft + dX) + "px"
+ });
+ tmpTargetA.addClass(consts.node.TMPTARGET_NODE + "_" + moveType);
+
+ if (preTmpTargetNodeId != tmpTargetNodeId || preTmpMoveType != moveType) {
+ startTime = (new Date()).getTime();
+ }
+ if (tmpTargetNode && tmpTargetNode.isParent && moveType == consts.move.TYPE_INNER) {
+ var startTimer = true;
+ if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId !== tmpTargetNode.tId) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null;
+ }else if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId === tmpTargetNode.tId) {
+ startTimer = false;
+ }
+ if (startTimer) {
+ window.zTreeMoveTimer = setTimeout(function() {
+ if (moveType != consts.move.TYPE_INNER) return;
+ if (tmpTargetNode && tmpTargetNode.isParent && !tmpTargetNode.open && (new Date()).getTime() - startTime > targetSetting.edit.drag.autoOpenTime
+ && tools.apply(targetSetting.callback.beforeDragOpen, [targetSetting.treeId, tmpTargetNode], true)) {
+ view.switchNode(targetSetting, tmpTargetNode);
+ if (targetSetting.edit.drag.autoExpandTrigger) {
+ targetSetting.treeObj.trigger(consts.event.EXPAND, [targetSetting.treeId, tmpTargetNode]);
+ }
+ }
+ }, targetSetting.edit.drag.autoOpenTime+50);
+ window.zTreeMoveTargetNodeTId = tmpTargetNode.tId;
+ }
+ }
+ }
+ } else {
+ moveType = consts.move.TYPE_INNER;
+ if (tmpTarget && tools.apply(targetSetting.edit.drag.inner, [targetSetting.treeId, nodes, null], !!targetSetting.edit.drag.inner)) {
+ tmpTarget.addClass(consts.node.TMPTARGET_TREE);
+ } else {
+ tmpTarget = null;
+ }
+ tmpArrow.css({
+ "display":"none"
+ });
+ if (window.zTreeMoveTimer) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null;
+ }
+ }
+ preTmpTargetNodeId = tmpTargetNodeId;
+ preTmpMoveType = moveType;
+
+ setting.treeObj.trigger(consts.event.DRAGMOVE, [event, setting.treeId, nodes]);
+ }
+ return false;
+ }
+
+ doc.bind("mouseup", _docMouseUp);
+ function _docMouseUp(event) {
+ if (window.zTreeMoveTimer) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null;
+ }
+ preTmpTargetNodeId = null;
+ preTmpMoveType = null;
+ doc.unbind("mousemove", _docMouseMove);
+ doc.unbind("mouseup", _docMouseUp);
+ doc.unbind("selectstart", _docSelect);
+ body.css("cursor", "auto");
+ if (tmpTarget) {
+ tmpTarget.removeClass(consts.node.TMPTARGET_TREE);
+ if (tmpTargetNodeId) $("#" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + "_" + consts.move.TYPE_PREV)
+ .removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_INNER);
+ }
+ tools.showIfameMask(setting, false);
+
+ roots.showHoverDom = true;
+ if (root.dragFlag == 0) return;
+ root.dragFlag = 0;
+
+ var i, l, tmpNode;
+ for (i=0, l=nodes.length; i<l; i++) {
+ tmpNode = nodes[i];
+ if (tmpNode.isParent && root.dragNodeShowBefore[tmpNode.tId] && !tmpNode.open) {
+ view.expandCollapseNode(setting, tmpNode, !tmpNode.open);
+ delete root.dragNodeShowBefore[tmpNode.tId];
+ }
+ }
+
+ if (curNode) curNode.remove();
+ if (tmpArrow) tmpArrow.remove();
+
+ var isCopy = ((event.ctrlKey || event.metaKey) && setting.edit.drag.isMove && setting.edit.drag.isCopy) || (!setting.edit.drag.isMove && setting.edit.drag.isCopy);
+ if (!isCopy && tmpTarget && tmpTargetNodeId && nodes[0].parentTId && tmpTargetNodeId==nodes[0].parentTId && moveType == consts.move.TYPE_INNER) {
+ tmpTarget = null;
+ }
+ if (tmpTarget) {
+ var dragTargetNode = tmpTargetNodeId == null ? null: data.getNodeCache(targetSetting, tmpTargetNodeId);
+ if (tools.apply(setting.callback.beforeDrop, [targetSetting.treeId, nodes, dragTargetNode, moveType, isCopy], true) == false) {
+ view.selectNodes(sourceSetting, nodes);
+ return;
+ }
+ var newNodes = isCopy ? tools.clone(nodes) : nodes;
+
+ function dropCallback() {
+ if (isOtherTree) {
+ if (!isCopy) {
+ for(var i=0, l=nodes.length; i<l; i++) {
+ view.removeNode(setting, nodes[i]);
+ }
+ }
+ if (moveType == consts.move.TYPE_INNER) {
+ view.addNodes(targetSetting, dragTargetNode, newNodes);
+ } else {
+ view.addNodes(targetSetting, dragTargetNode.getParentNode(), newNodes);
+ if (moveType == consts.move.TYPE_PREV) {
+ for (i=0, l=newNodes.length; i<l; i++) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[i], moveType, false);
+ }
+ } else {
+ for (i=-1, l=newNodes.length-1; i<l; l--) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[l], moveType, false);
+ }
+ }
+ }
+ } else {
+ if (isCopy && moveType == consts.move.TYPE_INNER) {
+ view.addNodes(targetSetting, dragTargetNode, newNodes);
+ } else {
+ if (isCopy) {
+ view.addNodes(targetSetting, dragTargetNode.getParentNode(), newNodes);
+ }
+ if (moveType != consts.move.TYPE_NEXT) {
+ for (i=0, l=newNodes.length; i<l; i++) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[i], moveType, false);
+ }
+ } else {
+ for (i=-1, l=newNodes.length-1; i<l; l--) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[l], moveType, false);
+ }
+ }
+ }
+ }
+ view.selectNodes(targetSetting, newNodes);
+ $$(newNodes[0], setting).focus().blur();
+
+ setting.treeObj.trigger(consts.event.DROP, [event, targetSetting.treeId, newNodes, dragTargetNode, moveType, isCopy]);
+ }
+
+ if (moveType == consts.move.TYPE_INNER && tools.canAsync(targetSetting, dragTargetNode)) {
+ view.asyncNode(targetSetting, dragTargetNode, false, dropCallback);
+ } else {
+ dropCallback();
+ }
+
+ } else {
+ view.selectNodes(sourceSetting, nodes);
+ setting.treeObj.trigger(consts.event.DROP, [event, setting.treeId, nodes, null, null, null]);
+ }
+ }
+
+ doc.bind("selectstart", _docSelect);
+ function _docSelect() {
+ return false;
+ }
+
+ //Avoid FireFox's Bug
+ //If zTree Div CSS set 'overflow', so drag node outside of zTree, and event.target is error.
+ if(eventMouseDown.preventDefault) {
+ eventMouseDown.preventDefault();
+ }
+ return true;
+ }
+ },
+ //method of tools for zTree
+ _tools = {
+ getAbs: function (obj) {
+ var oRect = obj.getBoundingClientRect(),
+ scrollTop = document.body.scrollTop+document.documentElement.scrollTop,
+ scrollLeft = document.body.scrollLeft+document.documentElement.scrollLeft;
+ return [oRect.left+scrollLeft,oRect.top+scrollTop];
+ },
+ inputFocus: function(inputObj) {
+ if (inputObj.get(0)) {
+ inputObj.focus();
+ tools.setCursorPosition(inputObj.get(0), inputObj.val().length);
+ }
+ },
+ inputSelect: function(inputObj) {
+ if (inputObj.get(0)) {
+ inputObj.focus();
+ inputObj.select();
+ }
+ },
+ setCursorPosition: function(obj, pos){
+ if(obj.setSelectionRange) {
+ obj.focus();
+ obj.setSelectionRange(pos,pos);
+ } else if (obj.createTextRange) {
+ var range = obj.createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', pos);
+ range.moveStart('character', pos);
+ range.select();
+ }
+ },
+ showIfameMask: function(setting, showSign) {
+ var root = data.getRoot(setting);
+ //clear full mask
+ while (root.dragMaskList.length > 0) {
+ root.dragMaskList[0].remove();
+ root.dragMaskList.shift();
+ }
+ if (showSign) {
+ //show mask
+ var iframeList = $$("iframe", setting);
+ for (var i = 0, l = iframeList.length; i < l; i++) {
+ var obj = iframeList.get(i),
+ r = tools.getAbs(obj),
+ dragMask = $$("<div id='zTreeMask_" + i + "' class='zTreeMask' style='top:" + r[1] + "px; left:" + r[0] + "px; width:" + obj.offsetWidth + "px; height:" + obj.offsetHeight + "px;'></div>", setting);
+ dragMask.appendTo($$("body", setting));
+ root.dragMaskList.push(dragMask);
+ }
+ }
+ }
+ },
+ //method of operate ztree dom
+ _view = {
+ addEditBtn: function(setting, node) {
+ if (node.editNameFlag || $$(node, consts.id.EDIT, setting).length > 0) {
+ return;
+ }
+ if (!tools.apply(setting.edit.showRenameBtn, [setting.treeId, node], setting.edit.showRenameBtn)) {
+ return;
+ }
+ var aObj = $$(node, consts.id.A, setting),
+ editStr = "<span class='" + consts.className.BUTTON + " edit' id='" + node.tId + consts.id.EDIT + "' title='"+tools.apply(setting.edit.renameTitle, [setting.treeId, node], setting.edit.renameTitle)+"' treeNode"+consts.id.EDIT+" style='display:none;'></span>";
+ aObj.append(editStr);
+
+ $$(node, consts.id.EDIT, setting).bind('click',
+ function() {
+ if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeEditName, [setting.treeId, node], true) == false) return false;
+ view.editNode(setting, node);
+ return false;
+ }
+ ).show();
+ },
+ addRemoveBtn: function(setting, node) {
+ if (node.editNameFlag || $$(node, consts.id.REMOVE, setting).length > 0) {
+ return;
+ }
+ if (!tools.apply(setting.edit.showRemoveBtn, [setting.treeId, node], setting.edit.showRemoveBtn)) {
+ return;
+ }
+ var aObj = $$(node, consts.id.A, setting),
+ removeStr = "<span class='" + consts.className.BUTTON + " remove' id='" + node.tId + consts.id.REMOVE + "' title='"+tools.apply(setting.edit.removeTitle, [setting.treeId, node], setting.edit.removeTitle)+"' treeNode"+consts.id.REMOVE+" style='display:none;'></span>";
+ aObj.append(removeStr);
+
+ $$(node, consts.id.REMOVE, setting).bind('click',
+ function() {
+ if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeRemove, [setting.treeId, node], true) == false) return false;
+ view.removeNode(setting, node);
+ setting.treeObj.trigger(consts.event.REMOVE, [setting.treeId, node]);
+ return false;
+ }
+ ).bind('mousedown',
+ function(eventMouseDown) {
+ return true;
+ }
+ ).show();
+ },
+ addHoverDom: function(setting, node) {
+ if (data.getRoots().showHoverDom) {
+ node.isHover = true;
+ if (setting.edit.enable) {
+ //view.addEditBtn(setting, node);
+ view.addRemoveBtn(setting, node);
+ view.addEditBtn(setting, node);
+ }
+ tools.apply(setting.view.addHoverDom, [setting.treeId, node]);
+ }
+ },
+ cancelCurEditNode: function (setting, forceName, isCancel) {
+ var root = data.getRoot(setting),
+ nameKey = setting.data.key.name,
+ node = root.curEditNode;
+
+ if (node) {
+ var inputObj = root.curEditInput,
+ newName = forceName ? forceName:(isCancel ? node[nameKey]: inputObj.val());
+ if (tools.apply(setting.callback.beforeRename, [setting.treeId, node, newName, isCancel], true) === false) {
+ return false;
+ } else {
+ node[nameKey] = newName;
+ setting.treeObj.trigger(consts.event.RENAME, [setting.treeId, node, isCancel]);
+ }
+ var aObj = $$(node, consts.id.A, setting);
+ aObj.removeClass(consts.node.CURSELECTED_EDIT);
+ inputObj.unbind();
+ view.setNodeName(setting, node);
+ node.editNameFlag = false;
+ root.curEditNode = null;
+ root.curEditInput = null;
+ view.selectNode(setting, node, false);
+ }
+ root.noSelection = true;
+ return true;
+ },
+ editNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ view.editNodeBlur = false;
+ if (data.isSelectedNode(setting, node) && root.curEditNode == node && node.editNameFlag) {
+ setTimeout(function() {tools.inputFocus(root.curEditInput);}, 0);
+ return;
+ }
+ var nameKey = setting.data.key.name;
+ node.editNameFlag = true;
+ view.removeTreeDom(setting, node);
+ view.cancelCurEditNode(setting);
+ view.selectNode(setting, node, false);
+ $$(node, consts.id.SPAN, setting).html("<input type=text class='rename' id='" + node.tId + consts.id.INPUT + "' treeNode" + consts.id.INPUT + " >");
+ var inputObj = $$(node, consts.id.INPUT, setting);
+ inputObj.attr("value", node[nameKey]);
+ if (setting.edit.editNameSelectAll) {
+ tools.inputSelect(inputObj);
+ } else {
+ tools.inputFocus(inputObj);
+ }
+
+ inputObj.bind('blur', function(event) {
+ if (!view.editNodeBlur) {
+ view.cancelCurEditNode(setting);
+ }
+ }).bind('keydown', function(event) {
+ if (event.keyCode=="13") {
+ view.editNodeBlur = true;
+ view.cancelCurEditNode(setting);
+ } else if (event.keyCode=="27") {
+ view.cancelCurEditNode(setting, null, true);
+ }
+ }).bind('click', function(event) {
+ return false;
+ }).bind('dblclick', function(event) {
+ return false;
+ });
+
+ $$(node, consts.id.A, setting).addClass(consts.node.CURSELECTED_EDIT);
+ root.curEditInput = inputObj;
+ root.noSelection = false;
+ root.curEditNode = node;
+ },
+ moveNode: function(setting, targetNode, node, moveType, animateFlag, isSilent) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ if (targetNode == node) return;
+ if (setting.data.keep.leaf && targetNode && !targetNode.isParent && moveType == consts.move.TYPE_INNER) return;
+ var oldParentNode = (node.parentTId ? node.getParentNode(): root),
+ targetNodeIsRoot = (targetNode === null || targetNode == root);
+ if (targetNodeIsRoot && targetNode === null) targetNode = root;
+ if (targetNodeIsRoot) moveType = consts.move.TYPE_INNER;
+ var targetParentNode = (targetNode.parentTId ? targetNode.getParentNode() : root);
+
+ if (moveType != consts.move.TYPE_PREV && moveType != consts.move.TYPE_NEXT) {
+ moveType = consts.move.TYPE_INNER;
+ }
+
+ if (moveType == consts.move.TYPE_INNER) {
+ if (targetNodeIsRoot) {
+ //parentTId of root node is null
+ node.parentTId = null;
+ } else {
+ if (!targetNode.isParent) {
+ targetNode.isParent = true;
+ targetNode.open = !!targetNode.open;
+ view.setNodeLineIcos(setting, targetNode);
+ }
+ node.parentTId = targetNode.tId;
+ }
+ }
+
+ //move node Dom
+ var targetObj, target_ulObj;
+ if (targetNodeIsRoot) {
+ targetObj = setting.treeObj;
+ target_ulObj = targetObj;
+ } else {
+ if (!isSilent && moveType == consts.move.TYPE_INNER) {
+ view.expandCollapseNode(setting, targetNode, true, false);
+ } else if (!isSilent) {
+ view.expandCollapseNode(setting, targetNode.getParentNode(), true, false);
+ }
+ targetObj = $$(targetNode, setting);
+ target_ulObj = $$(targetNode, consts.id.UL, setting);
+ if (!!targetObj.get(0) && !target_ulObj.get(0)) {
+ var ulstr = [];
+ view.makeUlHtml(setting, targetNode, ulstr, '');
+ targetObj.append(ulstr.join(''));
+ }
+ target_ulObj = $$(targetNode, consts.id.UL, setting);
+ }
+ var nodeDom = $$(node, setting);
+ if (!nodeDom.get(0)) {
+ nodeDom = view.appendNodes(setting, node.level, [node], null, false, true).join('');
+ } else if (!targetObj.get(0)) {
+ nodeDom.remove();
+ }
+ if (target_ulObj.get(0) && moveType == consts.move.TYPE_INNER) {
+ target_ulObj.append(nodeDom);
+ } else if (targetObj.get(0) && moveType == consts.move.TYPE_PREV) {
+ targetObj.before(nodeDom);
+ } else if (targetObj.get(0) && moveType == consts.move.TYPE_NEXT) {
+ targetObj.after(nodeDom);
+ }
+
+ //repair the data after move
+ var i,l,
+ tmpSrcIndex = -1,
+ tmpTargetIndex = 0,
+ oldNeighbor = null,
+ newNeighbor = null,
+ oldLevel = node.level;
+ if (node.isFirstNode) {
+ tmpSrcIndex = 0;
+ if (oldParentNode[childKey].length > 1 ) {
+ oldNeighbor = oldParentNode[childKey][1];
+ oldNeighbor.isFirstNode = true;
+ }
+ } else if (node.isLastNode) {
+ tmpSrcIndex = oldParentNode[childKey].length -1;
+ oldNeighbor = oldParentNode[childKey][tmpSrcIndex - 1];
+ oldNeighbor.isLastNode = true;
+ } else {
+ for (i = 0, l = oldParentNode[childKey].length; i < l; i++) {
+ if (oldParentNode[childKey][i].tId == node.tId) {
+ tmpSrcIndex = i;
+ break;
+ }
+ }
+ }
+ if (tmpSrcIndex >= 0) {
+ oldParentNode[childKey].splice(tmpSrcIndex, 1);
+ }
+ if (moveType != consts.move.TYPE_INNER) {
+ for (i = 0, l = targetParentNode[childKey].length; i < l; i++) {
+ if (targetParentNode[childKey][i].tId == targetNode.tId) tmpTargetIndex = i;
+ }
+ }
+ if (moveType == consts.move.TYPE_INNER) {
+ if (!targetNode[childKey]) targetNode[childKey] = new Array();
+ if (targetNode[childKey].length > 0) {
+ newNeighbor = targetNode[childKey][targetNode[childKey].length - 1];
+ newNeighbor.isLastNode = false;
+ }
+ targetNode[childKey].splice(targetNode[childKey].length, 0, node);
+ node.isLastNode = true;
+ node.isFirstNode = (targetNode[childKey].length == 1);
+ } else if (targetNode.isFirstNode && moveType == consts.move.TYPE_PREV) {
+ targetParentNode[childKey].splice(tmpTargetIndex, 0, node);
+ newNeighbor = targetNode;
+ newNeighbor.isFirstNode = false;
+ node.parentTId = targetNode.parentTId;
+ node.isFirstNode = true;
+ node.isLastNode = false;
+
+ } else if (targetNode.isLastNode && moveType == consts.move.TYPE_NEXT) {
+ targetParentNode[childKey].splice(tmpTargetIndex + 1, 0, node);
+ newNeighbor = targetNode;
+ newNeighbor.isLastNode = false;
+ node.parentTId = targetNode.parentTId;
+ node.isFirstNode = false;
+ node.isLastNode = true;
+
+ } else {
+ if (moveType == consts.move.TYPE_PREV) {
+ targetParentNode[childKey].splice(tmpTargetIndex, 0, node);
+ } else {
+ targetParentNode[childKey].splice(tmpTargetIndex + 1, 0, node);
+ }
+ node.parentTId = targetNode.parentTId;
+ node.isFirstNode = false;
+ node.isLastNode = false;
+ }
+ data.fixPIdKeyValue(setting, node);
+ data.setSonNodeLevel(setting, node.getParentNode(), node);
+
+ //repair node what been moved
+ view.setNodeLineIcos(setting, node);
+ view.repairNodeLevelClass(setting, node, oldLevel)
+
+ //repair node's old parentNode dom
+ if (!setting.data.keep.parent && oldParentNode[childKey].length < 1) {
+ //old parentNode has no child nodes
+ oldParentNode.isParent = false;
+ oldParentNode.open = false;
+ var tmp_ulObj = $$(oldParentNode, consts.id.UL, setting),
+ tmp_switchObj = $$(oldParentNode, consts.id.SWITCH, setting),
+ tmp_icoObj = $$(oldParentNode, consts.id.ICON, setting);
+ view.replaceSwitchClass(oldParentNode, tmp_switchObj, consts.folder.DOCU);
+ view.replaceIcoClass(oldParentNode, tmp_icoObj, consts.folder.DOCU);
+ tmp_ulObj.css("display", "none");
+
+ } else if (oldNeighbor) {
+ //old neigbor node
+ view.setNodeLineIcos(setting, oldNeighbor);
+ }
+
+ //new neigbor node
+ if (newNeighbor) {
+ view.setNodeLineIcos(setting, newNeighbor);
+ }
+
+ //repair checkbox / radio
+ if (!!setting.check && setting.check.enable && view.repairChkClass) {
+ view.repairChkClass(setting, oldParentNode);
+ view.repairParentChkClassWithSelf(setting, oldParentNode);
+ if (oldParentNode != node.parent)
+ view.repairParentChkClassWithSelf(setting, node);
+ }
+
+ //expand parents after move
+ if (!isSilent) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), true, animateFlag);
+ }
+ },
+ removeEditBtn: function(setting, node) {
+ $$(node, consts.id.EDIT, setting).unbind().remove();
+ },
+ removeRemoveBtn: function(setting, node) {
+ $$(node, consts.id.REMOVE, setting).unbind().remove();
+ },
+ removeTreeDom: function(setting, node) {
+ node.isHover = false;
+ view.removeEditBtn(setting, node);
+ view.removeRemoveBtn(setting, node);
+ tools.apply(setting.view.removeHoverDom, [setting.treeId, node]);
+ },
+ repairNodeLevelClass: function(setting, node, oldLevel) {
+ if (oldLevel === node.level) return;
+ var liObj = $$(node, setting),
+ aObj = $$(node, consts.id.A, setting),
+ ulObj = $$(node, consts.id.UL, setting),
+ oldClass = consts.className.LEVEL + oldLevel,
+ newClass = consts.className.LEVEL + node.level;
+ liObj.removeClass(oldClass);
+ liObj.addClass(newClass);
+ aObj.removeClass(oldClass);
+ aObj.addClass(newClass);
+ ulObj.removeClass(oldClass);
+ ulObj.addClass(newClass);
+ },
+ selectNodes : function(setting, nodes) {
+ for (var i=0, l=nodes.length; i<l; i++) {
+ view.selectNode(setting, nodes[i], i>0);
+ }
+ }
+ },
+
+ _z = {
+ tools: _tools,
+ view: _view,
+ event: _event,
+ data: _data
+ };
+ $.extend(true, $.fn.zTree.consts, _consts);
+ $.extend(true, $.fn.zTree._z, _z);
+
+ var zt = $.fn.zTree,
+ tools = zt._z.tools,
+ consts = zt.consts,
+ view = zt._z.view,
+ data = zt._z.data,
+ event = zt._z.event,
+ $$ = tools.$;
+
+ data.exSetting(_setting);
+ data.addInitBind(_bindEvent);
+ data.addInitUnBind(_unbindEvent);
+ data.addInitCache(_initCache);
+ data.addInitNode(_initNode);
+ data.addInitProxy(_eventProxy);
+ data.addInitRoot(_initRoot);
+ data.addZTreeTools(_zTreeTools);
+
+ var _cancelPreSelectedNode = view.cancelPreSelectedNode;
+ view.cancelPreSelectedNode = function (setting, node) {
+ var list = data.getRoot(setting).curSelectedList;
+ for (var i=0, j=list.length; i<j; i++) {
+ if (!node || node === list[i]) {
+ view.removeTreeDom(setting, list[i]);
+ if (node) break;
+ }
+ }
+ if (_cancelPreSelectedNode) _cancelPreSelectedNode.apply(view, arguments);
+ }
+
+ var _createNodes = view.createNodes;
+ view.createNodes = function(setting, level, nodes, parentNode) {
+ if (_createNodes) {
+ _createNodes.apply(view, arguments);
+ }
+ if (!nodes) return;
+ if (view.repairParentChkClassWithSelf) {
+ view.repairParentChkClassWithSelf(setting, parentNode);
+ }
+ }
+
+ var _makeNodeUrl = view.makeNodeUrl;
+ view.makeNodeUrl = function(setting, node) {
+ return setting.edit.enable ? null : (_makeNodeUrl.apply(view, arguments));
+ }
+
+ var _removeNode = view.removeNode;
+ view.removeNode = function(setting, node) {
+ var root = data.getRoot(setting);
+ if (root.curEditNode === node) root.curEditNode = null;
+ if (_removeNode) {
+ _removeNode.apply(view, arguments);
+ }
+ }
+
+ var _selectNode = view.selectNode;
+ view.selectNode = function(setting, node, addFlag) {
+ var root = data.getRoot(setting);
+ if (data.isSelectedNode(setting, node) && root.curEditNode == node && node.editNameFlag) {
+ return false;
+ }
+ if (_selectNode) _selectNode.apply(view, arguments);
+ view.addHoverDom(setting, node);
+ return true;
+ }
+
+ var _uCanDo = tools.uCanDo;
+ tools.uCanDo = function(setting, e) {
+ var root = data.getRoot(setting);
+ if (e && (tools.eqs(e.type, "mouseover") || tools.eqs(e.type, "mouseout") || tools.eqs(e.type, "mousedown") || tools.eqs(e.type, "mouseup"))) {
+ return true;
+ }
+ if (root.curEditNode) {
+ view.editNodeBlur = false;
+ root.curEditInput.focus();
+ }
+ return (!root.curEditNode) && (_uCanDo ? _uCanDo.apply(view, arguments) : true);
+ }
+})(jQuery);
diff --git a/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.all.min.js b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.all.min.js
new file mode 100755
index 00000000..0677d9ed
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.all.min.js
@@ -0,0 +1,160 @@
+
+/*
+ * JQuery zTree core v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(p){var G,H,I,J,K,L,r={},u={},v={},M={treeId:"",treeObj:null,view:{addDiyDom:null,autoCancelSelected:!0,dblClickExpand:!0,expandSpeed:"fast",fontCss:{},nameIsHTML:!1,selectedMulti:!0,showIcon:!0,showLine:!0,showTitle:!0,txtSelectedEnable:!1},data:{key:{children:"children",name:"name",title:"",url:"url"},simpleData:{enable:!1,idKey:"id",pIdKey:"pId",rootPId:null},keep:{parent:!1,leaf:!1}},async:{enable:!1,contentType:"application/x-www-form-urlencoded",type:"post",dataType:"text",url:"",autoParam:[],
+otherParam:[],dataFilter:null},callback:{beforeAsync:null,beforeClick:null,beforeDblClick:null,beforeRightClick:null,beforeMouseDown:null,beforeMouseUp:null,beforeExpand:null,beforeCollapse:null,beforeRemove:null,onAsyncError:null,onAsyncSuccess:null,onNodeCreated:null,onClick:null,onDblClick:null,onRightClick:null,onMouseDown:null,onMouseUp:null,onExpand:null,onCollapse:null,onRemove:null}},w=[function(b){var a=b.treeObj,c=e.event;a.bind(c.NODECREATED,function(a,c,g){j.apply(b.callback.onNodeCreated,
+[a,c,g])});a.bind(c.CLICK,function(a,c,g,l,h){j.apply(b.callback.onClick,[c,g,l,h])});a.bind(c.EXPAND,function(a,c,g){j.apply(b.callback.onExpand,[a,c,g])});a.bind(c.COLLAPSE,function(a,c,g){j.apply(b.callback.onCollapse,[a,c,g])});a.bind(c.ASYNC_SUCCESS,function(a,c,g,l){j.apply(b.callback.onAsyncSuccess,[a,c,g,l])});a.bind(c.ASYNC_ERROR,function(a,c,g,l,h,e){j.apply(b.callback.onAsyncError,[a,c,g,l,h,e])});a.bind(c.REMOVE,function(a,c,g){j.apply(b.callback.onRemove,[a,c,g])})}],x=[function(b){var a=
+e.event;b.treeObj.unbind(a.NODECREATED).unbind(a.CLICK).unbind(a.EXPAND).unbind(a.COLLAPSE).unbind(a.ASYNC_SUCCESS).unbind(a.ASYNC_ERROR).unbind(a.REMOVE)}],y=[function(b){var a=h.getCache(b);a||(a={},h.setCache(b,a));a.nodes=[];a.doms=[]}],z=[function(b,a,c,d,f,g){if(c){var l=h.getRoot(b),e=b.data.key.children;c.level=a;c.tId=b.treeId+"_"+ ++l.zId;c.parentTId=d?d.tId:null;c.open=typeof c.open=="string"?j.eqs(c.open,"true"):!!c.open;c[e]&&c[e].length>0?(c.isParent=!0,c.zAsync=!0):(c.isParent=typeof c.isParent==
+"string"?j.eqs(c.isParent,"true"):!!c.isParent,c.open=c.isParent&&!b.async.enable?c.open:!1,c.zAsync=!c.isParent);c.isFirstNode=f;c.isLastNode=g;c.getParentNode=function(){return h.getNodeCache(b,c.parentTId)};c.getPreNode=function(){return h.getPreNode(b,c)};c.getNextNode=function(){return h.getNextNode(b,c)};c.isAjaxing=!1;h.fixPIdKeyValue(b,c)}}],s=[function(b){var a=b.target,c=h.getSetting(b.data.treeId),d="",f=null,g="",l="",i=null,n=null,k=null;if(j.eqs(b.type,"mousedown"))l="mousedown";else if(j.eqs(b.type,
+"mouseup"))l="mouseup";else if(j.eqs(b.type,"contextmenu"))l="contextmenu";else if(j.eqs(b.type,"click"))if(j.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+e.id.SWITCH)!==null)d=j.getNodeMainDom(a).id,g="switchNode";else{if(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}]))d=j.getNodeMainDom(k).id,g="clickNode"}else if(j.eqs(b.type,"dblclick")&&(l="dblclick",k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id,g="switchNode";if(l.length>0&&d.length==0&&
+(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id;if(d.length>0)switch(f=h.getNodeCache(c,d),g){case "switchNode":f.isParent?j.eqs(b.type,"click")||j.eqs(b.type,"dblclick")&&j.apply(c.view.dblClickExpand,[c.treeId,f],c.view.dblClickExpand)?i=G:g="":g="";break;case "clickNode":i=H}switch(l){case "mousedown":n=I;break;case "mouseup":n=J;break;case "dblclick":n=K;break;case "contextmenu":n=L}return{stop:!1,node:f,nodeEventType:g,nodeEventCallback:i,treeEventType:l,
+treeEventCallback:n}}],A=[function(b){var a=h.getRoot(b);a||(a={},h.setRoot(b,a));a[b.data.key.children]=[];a.expandTriggerFlag=!1;a.curSelectedList=[];a.noSelection=!0;a.createdNodes=[];a.zId=0;a._ver=(new Date).getTime()}],B=[],C=[],D=[],E=[],F=[],h={addNodeCache:function(b,a){h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=a},getNodeCacheId:function(b){return b.substring(b.lastIndexOf("_")+1)},addAfterA:function(b){C.push(b)},addBeforeA:function(b){B.push(b)},addInnerAfterA:function(b){E.push(b)},
+addInnerBeforeA:function(b){D.push(b)},addInitBind:function(b){w.push(b)},addInitUnBind:function(b){x.push(b)},addInitCache:function(b){y.push(b)},addInitNode:function(b){z.push(b)},addInitProxy:function(b,a){a?s.splice(0,0,b):s.push(b)},addInitRoot:function(b){A.push(b)},addNodesData:function(b,a,c){var d=b.data.key.children;a[d]||(a[d]=[]);if(a[d].length>0)a[d][a[d].length-1].isLastNode=!1,i.setNodeLineIcos(b,a[d][a[d].length-1]);a.isParent=!0;a[d]=a[d].concat(c)},addSelectedNode:function(b,a){var c=
+h.getRoot(b);h.isSelectedNode(b,a)||c.curSelectedList.push(a)},addCreatedNode:function(b,a){(b.callback.onNodeCreated||b.view.addDiyDom)&&h.getRoot(b).createdNodes.push(a)},addZTreeTools:function(b){F.push(b)},exSetting:function(b){p.extend(!0,M,b)},fixPIdKeyValue:function(b,a){b.data.simpleData.enable&&(a[b.data.simpleData.pIdKey]=a.parentTId?a.getParentNode()[b.data.simpleData.idKey]:b.data.simpleData.rootPId)},getAfterA:function(b,a,c){for(var d=0,f=C.length;d<f;d++)C[d].apply(this,arguments)},
+getBeforeA:function(b,a,c){for(var d=0,f=B.length;d<f;d++)B[d].apply(this,arguments)},getInnerAfterA:function(b,a,c){for(var d=0,f=E.length;d<f;d++)E[d].apply(this,arguments)},getInnerBeforeA:function(b,a,c){for(var d=0,f=D.length;d<f;d++)D[d].apply(this,arguments)},getCache:function(b){return v[b.treeId]},getNextNode:function(b,a){if(!a)return null;for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),f=0,g=d[c].length-1;f<=g;f++)if(d[c][f]===a)return f==g?null:d[c][f+1];return null},
+getNodeByParam:function(b,a,c,d){if(!a||!c)return null;for(var f=b.data.key.children,g=0,l=a.length;g<l;g++){if(a[g][c]==d)return a[g];var e=h.getNodeByParam(b,a[g][f],c,d);if(e)return e}return null},getNodeCache:function(b,a){if(!a)return null;var c=v[b.treeId].nodes[h.getNodeCacheId(a)];return c?c:null},getNodeName:function(b,a){return""+a[b.data.key.name]},getNodeTitle:function(b,a){return""+a[b.data.key.title===""?b.data.key.name:b.data.key.title]},getNodes:function(b){return h.getRoot(b)[b.data.key.children]},
+getNodesByParam:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],l=0,e=a.length;l<e;l++)a[l][c]==d&&g.push(a[l]),g=g.concat(h.getNodesByParam(b,a[l][f],c,d));return g},getNodesByParamFuzzy:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],d=d.toLowerCase(),l=0,e=a.length;l<e;l++)typeof a[l][c]=="string"&&a[l][c].toLowerCase().indexOf(d)>-1&&g.push(a[l]),g=g.concat(h.getNodesByParamFuzzy(b,a[l][f],c,d));return g},getNodesByFilter:function(b,a,c,d,f){if(!a)return d?
+null:[];for(var g=b.data.key.children,e=d?null:[],i=0,n=a.length;i<n;i++){if(j.apply(c,[a[i],f],!1)){if(d)return a[i];e.push(a[i])}var k=h.getNodesByFilter(b,a[i][g],c,d,f);if(d&&k)return k;e=d?k:e.concat(k)}return e},getPreNode:function(b,a){if(!a)return null;for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),f=0,g=d[c].length;f<g;f++)if(d[c][f]===a)return f==0?null:d[c][f-1];return null},getRoot:function(b){return b?u[b.treeId]:null},getRoots:function(){return u},getSetting:function(b){return r[b]},
+getSettings:function(){return r},getZTreeTools:function(b){return(b=this.getRoot(this.getSetting(b)))?b.treeTools:null},initCache:function(b){for(var a=0,c=y.length;a<c;a++)y[a].apply(this,arguments)},initNode:function(b,a,c,d,f,g){for(var e=0,h=z.length;e<h;e++)z[e].apply(this,arguments)},initRoot:function(b){for(var a=0,c=A.length;a<c;a++)A[a].apply(this,arguments)},isSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d])return!0;return!1},
+removeNodeCache:function(b,a){var c=b.data.key.children;if(a[c])for(var d=0,f=a[c].length;d<f;d++)arguments.callee(b,a[c][d]);h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=null},removeSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d]||!h.getNodeCache(b,c.curSelectedList[d].tId))c.curSelectedList.splice(d,1),d--,f--},setCache:function(b,a){v[b.treeId]=a},setRoot:function(b,a){u[b.treeId]=a},setZTreeTools:function(b,a){for(var c=0,d=
+F.length;c<d;c++)F[c].apply(this,arguments)},transformToArrayFormat:function(b,a){if(!a)return[];var c=b.data.key.children,d=[];if(j.isArray(a))for(var f=0,g=a.length;f<g;f++)d.push(a[f]),a[f][c]&&(d=d.concat(h.transformToArrayFormat(b,a[f][c])));else d.push(a),a[c]&&(d=d.concat(h.transformToArrayFormat(b,a[c])));return d},transformTozTreeFormat:function(b,a){var c,d,f=b.data.simpleData.idKey,g=b.data.simpleData.pIdKey,e=b.data.key.children;if(!f||f==""||!a)return[];if(j.isArray(a)){var h=[],i=[];
+for(c=0,d=a.length;c<d;c++)i[a[c][f]]=a[c];for(c=0,d=a.length;c<d;c++)i[a[c][g]]&&a[c][f]!=a[c][g]?(i[a[c][g]][e]||(i[a[c][g]][e]=[]),i[a[c][g]][e].push(a[c])):h.push(a[c]);return h}else return[a]}},m={bindEvent:function(b){for(var a=0,c=w.length;a<c;a++)w[a].apply(this,arguments)},unbindEvent:function(b){for(var a=0,c=x.length;a<c;a++)x[a].apply(this,arguments)},bindTree:function(b){var a={treeId:b.treeId},c=b.treeObj;b.view.txtSelectedEnable||c.bind("selectstart",function(a){a=a.originalEvent.srcElement.nodeName.toLowerCase();
+return a==="input"||a==="textarea"}).css({"-moz-user-select":"-moz-none"});c.bind("click",a,m.proxy);c.bind("dblclick",a,m.proxy);c.bind("mouseover",a,m.proxy);c.bind("mouseout",a,m.proxy);c.bind("mousedown",a,m.proxy);c.bind("mouseup",a,m.proxy);c.bind("contextmenu",a,m.proxy)},unbindTree:function(b){b.treeObj.unbind("click",m.proxy).unbind("dblclick",m.proxy).unbind("mouseover",m.proxy).unbind("mouseout",m.proxy).unbind("mousedown",m.proxy).unbind("mouseup",m.proxy).unbind("contextmenu",m.proxy)},
+doProxy:function(b){for(var a=[],c=0,d=s.length;c<d;c++){var f=s[c].apply(this,arguments);a.push(f);if(f.stop)break}return a},proxy:function(b){var a=h.getSetting(b.data.treeId);if(!j.uCanDo(a,b))return!0;for(var a=m.doProxy(b),c=!0,d=0,f=a.length;d<f;d++){var g=a[d];g.nodeEventCallback&&(c=g.nodeEventCallback.apply(g,[b,g.node])&&c);g.treeEventCallback&&(c=g.treeEventCallback.apply(g,[b,g.node])&&c)}return c}};G=function(b,a){var c=h.getSetting(b.data.treeId);if(a.open){if(j.apply(c.callback.beforeCollapse,
+[c.treeId,a],!0)==!1)return!0}else if(j.apply(c.callback.beforeExpand,[c.treeId,a],!0)==!1)return!0;h.getRoot(c).expandTriggerFlag=!0;i.switchNode(c,a);return!0};H=function(b,a){var c=h.getSetting(b.data.treeId),d=c.view.autoCancelSelected&&(b.ctrlKey||b.metaKey)&&h.isSelectedNode(c,a)?0:c.view.autoCancelSelected&&(b.ctrlKey||b.metaKey)&&c.view.selectedMulti?2:1;if(j.apply(c.callback.beforeClick,[c.treeId,a,d],!0)==!1)return!0;d===0?i.cancelPreSelectedNode(c,a):i.selectNode(c,a,d===2);c.treeObj.trigger(e.event.CLICK,
+[b,c.treeId,a,d]);return!0};I=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseDown,[c.treeId,a],!0)&&j.apply(c.callback.onMouseDown,[b,c.treeId,a]);return!0};J=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseUp,[c.treeId,a],!0)&&j.apply(c.callback.onMouseUp,[b,c.treeId,a]);return!0};K=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeDblClick,[c.treeId,a],!0)&&j.apply(c.callback.onDblClick,[b,c.treeId,a]);return!0};
+L=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeRightClick,[c.treeId,a],!0)&&j.apply(c.callback.onRightClick,[b,c.treeId,a]);return typeof c.callback.onRightClick!="function"};var j={apply:function(b,a,c){return typeof b=="function"?b.apply(N,a?a:[]):c},canAsync:function(b,a){var c=b.data.key.children;return b.async.enable&&a&&a.isParent&&!(a.zAsync||a[c]&&a[c].length>0)},clone:function(b){if(b===null)return null;var a=j.isArray(b)?[]:{},c;for(c in b)a[c]=b[c]instanceof
+Date?new Date(b[c].getTime()):typeof b[c]==="object"?arguments.callee(b[c]):b[c];return a},eqs:function(b,a){return b.toLowerCase()===a.toLowerCase()},isArray:function(b){return Object.prototype.toString.apply(b)==="[object Array]"},$:function(b,a,c){a&&typeof a!="string"&&(c=a,a="");return typeof b=="string"?p(b,c?c.treeObj.get(0).ownerDocument:null):p("#"+b.tId+a,c?c.treeObj:null)},getMDom:function(b,a,c){if(!a)return null;for(;a&&a.id!==b.treeId;){for(var d=0,f=c.length;a.tagName&&d<f;d++)if(j.eqs(a.tagName,
+c[d].tagName)&&a.getAttribute(c[d].attrName)!==null)return a;a=a.parentNode}return null},getNodeMainDom:function(b){return p(b).parent("li").get(0)||p(b).parentsUntil("li").parent().get(0)},isChildOrSelf:function(b,a){return p(b).closest("#"+a).length>0},uCanDo:function(){return!0}},i={addNodes:function(b,a,c,d){if(!b.data.keep.leaf||!a||a.isParent)if(j.isArray(c)||(c=[c]),b.data.simpleData.enable&&(c=h.transformTozTreeFormat(b,c)),a){var f=k(a,e.id.SWITCH,b),g=k(a,e.id.ICON,b),l=k(a,e.id.UL,b);if(!a.open)i.replaceSwitchClass(a,
+f,e.folder.CLOSE),i.replaceIcoClass(a,g,e.folder.CLOSE),a.open=!1,l.css({display:"none"});h.addNodesData(b,a,c);i.createNodes(b,a.level+1,c,a);d||i.expandCollapseParentNode(b,a,!0)}else h.addNodesData(b,h.getRoot(b),c),i.createNodes(b,0,c,null)},appendNodes:function(b,a,c,d,f,g){if(!c)return[];for(var e=[],j=b.data.key.children,k=0,m=c.length;k<m;k++){var o=c[k];if(f){var t=(d?d:h.getRoot(b))[j].length==c.length&&k==0;h.initNode(b,a,o,d,t,k==c.length-1,g);h.addNodeCache(b,o)}t=[];o[j]&&o[j].length>
+0&&(t=i.appendNodes(b,a+1,o[j],o,f,g&&o.open));g&&(i.makeDOMNodeMainBefore(e,b,o),i.makeDOMNodeLine(e,b,o),h.getBeforeA(b,o,e),i.makeDOMNodeNameBefore(e,b,o),h.getInnerBeforeA(b,o,e),i.makeDOMNodeIcon(e,b,o),h.getInnerAfterA(b,o,e),i.makeDOMNodeNameAfter(e,b,o),h.getAfterA(b,o,e),o.isParent&&o.open&&i.makeUlHtml(b,o,e,t.join("")),i.makeDOMNodeMainAfter(e,b,o),h.addCreatedNode(b,o))}return e},appendParentULDom:function(b,a){var c=[],d=k(a,b);!d.get(0)&&a.parentTId&&(i.appendParentULDom(b,a.getParentNode()),
+d=k(a,b));var f=k(a,e.id.UL,b);f.get(0)&&f.remove();f=i.appendNodes(b,a.level+1,a[b.data.key.children],a,!1,!0);i.makeUlHtml(b,a,c,f.join(""));d.append(c.join(""))},asyncNode:function(b,a,c,d){var f,g;if(a&&!a.isParent)return j.apply(d),!1;else if(a&&a.isAjaxing)return!1;else if(j.apply(b.callback.beforeAsync,[b.treeId,a],!0)==!1)return j.apply(d),!1;if(a)a.isAjaxing=!0,k(a,e.id.ICON,b).attr({style:"","class":e.className.BUTTON+" "+e.className.ICO_LOADING});var l={};for(f=0,g=b.async.autoParam.length;a&&
+f<g;f++){var q=b.async.autoParam[f].split("="),n=q;q.length>1&&(n=q[1],q=q[0]);l[n]=a[q]}if(j.isArray(b.async.otherParam))for(f=0,g=b.async.otherParam.length;f<g;f+=2)l[b.async.otherParam[f]]=b.async.otherParam[f+1];else for(var m in b.async.otherParam)l[m]=b.async.otherParam[m];var o=h.getRoot(b)._ver;p.ajax({contentType:b.async.contentType,type:b.async.type,url:j.apply(b.async.url,[b.treeId,a],b.async.url),data:l,dataType:b.async.dataType,success:function(f){if(o==h.getRoot(b)._ver){var g=[];try{g=
+!f||f.length==0?[]:typeof f=="string"?eval("("+f+")"):f}catch(l){g=f}if(a)a.isAjaxing=null,a.zAsync=!0;i.setNodeLineIcos(b,a);g&&g!==""?(g=j.apply(b.async.dataFilter,[b.treeId,a,g],g),i.addNodes(b,a,g?j.clone(g):[],!!c)):i.addNodes(b,a,[],!!c);b.treeObj.trigger(e.event.ASYNC_SUCCESS,[b.treeId,a,f]);j.apply(d)}},error:function(c,d,f){if(o==h.getRoot(b)._ver){if(a)a.isAjaxing=null;i.setNodeLineIcos(b,a);b.treeObj.trigger(e.event.ASYNC_ERROR,[b.treeId,a,c,d,f])}}});return!0},cancelPreSelectedNode:function(b,
+a){for(var c=h.getRoot(b).curSelectedList,d=c.length-1;d>=0;d--)if(!a||a===c[d])if(k(c[d],e.id.A,b).removeClass(e.node.CURSELECTED),a){h.removeSelectedNode(b,a);break}if(!a)h.getRoot(b).curSelectedList=[]},createNodeCallback:function(b){if(b.callback.onNodeCreated||b.view.addDiyDom)for(var a=h.getRoot(b);a.createdNodes.length>0;){var c=a.createdNodes.shift();j.apply(b.view.addDiyDom,[b.treeId,c]);b.callback.onNodeCreated&&b.treeObj.trigger(e.event.NODECREATED,[b.treeId,c])}},createNodes:function(b,
+a,c,d){if(c&&c.length!=0){var f=h.getRoot(b),g=b.data.key.children,g=!d||d.open||!!k(d[g][0],b).get(0);f.createdNodes=[];a=i.appendNodes(b,a,c,d,!0,g);d?(d=k(d,e.id.UL,b),d.get(0)&&d.append(a.join(""))):b.treeObj.append(a.join(""));i.createNodeCallback(b)}},destroy:function(b){b&&(h.initCache(b),h.initRoot(b),m.unbindTree(b),m.unbindEvent(b),b.treeObj.empty(),delete r[b.treeId])},expandCollapseNode:function(b,a,c,d,f){var g=h.getRoot(b),l=b.data.key.children;if(a){if(g.expandTriggerFlag){var q=f,
+f=function(){q&&q();a.open?b.treeObj.trigger(e.event.EXPAND,[b.treeId,a]):b.treeObj.trigger(e.event.COLLAPSE,[b.treeId,a])};g.expandTriggerFlag=!1}if(!a.open&&a.isParent&&(!k(a,e.id.UL,b).get(0)||a[l]&&a[l].length>0&&!k(a[l][0],b).get(0)))i.appendParentULDom(b,a),i.createNodeCallback(b);if(a.open==c)j.apply(f,[]);else{var c=k(a,e.id.UL,b),g=k(a,e.id.SWITCH,b),n=k(a,e.id.ICON,b);a.isParent?(a.open=!a.open,a.iconOpen&&a.iconClose&&n.attr("style",i.makeNodeIcoStyle(b,a)),a.open?(i.replaceSwitchClass(a,
+g,e.folder.OPEN),i.replaceIcoClass(a,n,e.folder.OPEN),d==!1||b.view.expandSpeed==""?(c.show(),j.apply(f,[])):a[l]&&a[l].length>0?c.slideDown(b.view.expandSpeed,f):(c.show(),j.apply(f,[]))):(i.replaceSwitchClass(a,g,e.folder.CLOSE),i.replaceIcoClass(a,n,e.folder.CLOSE),d==!1||b.view.expandSpeed==""||!(a[l]&&a[l].length>0)?(c.hide(),j.apply(f,[])):c.slideUp(b.view.expandSpeed,f))):j.apply(f,[])}}else j.apply(f,[])},expandCollapseParentNode:function(b,a,c,d,f){a&&(a.parentTId?(i.expandCollapseNode(b,
+a,c,d),a.parentTId&&i.expandCollapseParentNode(b,a.getParentNode(),c,d,f)):i.expandCollapseNode(b,a,c,d,f))},expandCollapseSonNode:function(b,a,c,d,f){var g=h.getRoot(b),e=b.data.key.children,g=a?a[e]:g[e],e=a?!1:d,j=h.getRoot(b).expandTriggerFlag;h.getRoot(b).expandTriggerFlag=!1;if(g)for(var k=0,m=g.length;k<m;k++)g[k]&&i.expandCollapseSonNode(b,g[k],c,e);h.getRoot(b).expandTriggerFlag=j;i.expandCollapseNode(b,a,c,d,f)},makeDOMNodeIcon:function(b,a,c){var d=h.getNodeName(a,c),d=a.view.nameIsHTML?
+d:d.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");b.push("<span id='",c.tId,e.id.ICON,"' title='' treeNode",e.id.ICON," class='",i.makeNodeIcoClass(a,c),"' style='",i.makeNodeIcoStyle(a,c),"'></span><span id='",c.tId,e.id.SPAN,"'>",d,"</span>")},makeDOMNodeLine:function(b,a,c){b.push("<span id='",c.tId,e.id.SWITCH,"' title='' class='",i.makeNodeLineClass(a,c),"' treeNode",e.id.SWITCH,"></span>")},makeDOMNodeMainAfter:function(b){b.push("</li>")},makeDOMNodeMainBefore:function(b,
+a,c){b.push("<li id='",c.tId,"' class='",e.className.LEVEL,c.level,"' tabindex='0' hidefocus='true' treenode>")},makeDOMNodeNameAfter:function(b){b.push("</a>")},makeDOMNodeNameBefore:function(b,a,c){var d=h.getNodeTitle(a,c),f=i.makeNodeUrl(a,c),g=i.makeNodeFontCss(a,c),l=[],k;for(k in g)l.push(k,":",g[k],";");b.push("<a id='",c.tId,e.id.A,"' class='",e.className.LEVEL,c.level,"' treeNode",e.id.A,' onclick="',c.click||"",'" ',f!=null&&f.length>0?"href='"+f+"'":""," target='",i.makeNodeTarget(c),
+"' style='",l.join(""),"'");j.apply(a.view.showTitle,[a.treeId,c],a.view.showTitle)&&d&&b.push("title='",d.replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),"'");b.push(">")},makeNodeFontCss:function(b,a){var c=j.apply(b.view.fontCss,[b.treeId,a],b.view.fontCss);return c&&typeof c!="function"?c:{}},makeNodeIcoClass:function(b,a){var c=["ico"];a.isAjaxing||(c[0]=(a.iconSkin?a.iconSkin+"_":"")+c[0],a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU));return e.className.BUTTON+
+" "+c.join("_")},makeNodeIcoStyle:function(b,a){var c=[];if(!a.isAjaxing){var d=a.isParent&&a.iconOpen&&a.iconClose?a.open?a.iconOpen:a.iconClose:a.icon;d&&c.push("background:url(",d,") 0 0 no-repeat;");(b.view.showIcon==!1||!j.apply(b.view.showIcon,[b.treeId,a],!0))&&c.push("width:0px;height:0px;")}return c.join("")},makeNodeLineClass:function(b,a){var c=[];b.view.showLine?a.level==0&&a.isFirstNode&&a.isLastNode?c.push(e.line.ROOT):a.level==0&&a.isFirstNode?c.push(e.line.ROOTS):a.isLastNode?c.push(e.line.BOTTOM):
+c.push(e.line.CENTER):c.push(e.line.NOLINE);a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU);return i.makeNodeLineClassEx(a)+c.join("_")},makeNodeLineClassEx:function(b){return e.className.BUTTON+" "+e.className.LEVEL+b.level+" "+e.className.SWITCH+" "},makeNodeTarget:function(b){return b.target||"_blank"},makeNodeUrl:function(b,a){var c=b.data.key.url;return a[c]?a[c]:null},makeUlHtml:function(b,a,c,d){c.push("<ul id='",a.tId,e.id.UL,"' class='",e.className.LEVEL,a.level,
+" ",i.makeUlLineClass(b,a),"' style='display:",a.open?"block":"none","'>");c.push(d);c.push("</ul>")},makeUlLineClass:function(b,a){return b.view.showLine&&!a.isLastNode?e.line.LINE:""},removeChildNodes:function(b,a){if(a){var c=b.data.key.children,d=a[c];if(d){for(var f=0,g=d.length;f<g;f++)h.removeNodeCache(b,d[f]);h.removeSelectedNode(b);delete a[c];b.data.keep.parent?k(a,e.id.UL,b).empty():(a.isParent=!1,a.open=!1,c=k(a,e.id.SWITCH,b),d=k(a,e.id.ICON,b),i.replaceSwitchClass(a,c,e.folder.DOCU),
+i.replaceIcoClass(a,d,e.folder.DOCU),k(a,e.id.UL,b).remove())}}},setFirstNode:function(b,a){var c=b.data.key.children;if(a[c].length>0)a[c][0].isFirstNode=!0},setLastNode:function(b,a){var c=b.data.key.children,d=a[c].length;if(d>0)a[c][d-1].isLastNode=!0},removeNode:function(b,a){var c=h.getRoot(b),d=b.data.key.children,f=a.parentTId?a.getParentNode():c;a.isFirstNode=!1;a.isLastNode=!1;a.getPreNode=function(){return null};a.getNextNode=function(){return null};if(h.getNodeCache(b,a.tId)){k(a,b).remove();
+h.removeNodeCache(b,a);h.removeSelectedNode(b,a);for(var g=0,l=f[d].length;g<l;g++)if(f[d][g].tId==a.tId){f[d].splice(g,1);break}i.setFirstNode(b,f);i.setLastNode(b,f);var j,g=f[d].length;if(!b.data.keep.parent&&g==0)f.isParent=!1,f.open=!1,g=k(f,e.id.UL,b),l=k(f,e.id.SWITCH,b),j=k(f,e.id.ICON,b),i.replaceSwitchClass(f,l,e.folder.DOCU),i.replaceIcoClass(f,j,e.folder.DOCU),g.css("display","none");else if(b.view.showLine&&g>0){var n=f[d][g-1],g=k(n,e.id.UL,b),l=k(n,e.id.SWITCH,b);j=k(n,e.id.ICON,b);
+f==c?f[d].length==1?i.replaceSwitchClass(n,l,e.line.ROOT):(c=k(f[d][0],e.id.SWITCH,b),i.replaceSwitchClass(f[d][0],c,e.line.ROOTS),i.replaceSwitchClass(n,l,e.line.BOTTOM)):i.replaceSwitchClass(n,l,e.line.BOTTOM);g.removeClass(e.line.LINE)}}},replaceIcoClass:function(b,a,c){if(a&&!b.isAjaxing&&(b=a.attr("class"),b!=void 0)){b=b.split("_");switch(c){case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:b[b.length-1]=c}a.attr("class",b.join("_"))}},replaceSwitchClass:function(b,a,c){if(a){var d=
+a.attr("class");if(d!=void 0){d=d.split("_");switch(c){case e.line.ROOT:case e.line.ROOTS:case e.line.CENTER:case e.line.BOTTOM:case e.line.NOLINE:d[0]=i.makeNodeLineClassEx(b)+c;break;case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:d[1]=c}a.attr("class",d.join("_"));c!==e.folder.DOCU?a.removeAttr("disabled"):a.attr("disabled","disabled")}}},selectNode:function(b,a,c){c||i.cancelPreSelectedNode(b);k(a,e.id.A,b).addClass(e.node.CURSELECTED);h.addSelectedNode(b,a)},setNodeFontCss:function(b,
+a){var c=k(a,e.id.A,b),d=i.makeNodeFontCss(b,a);d&&c.css(d)},setNodeLineIcos:function(b,a){if(a){var c=k(a,e.id.SWITCH,b),d=k(a,e.id.UL,b),f=k(a,e.id.ICON,b),g=i.makeUlLineClass(b,a);g.length==0?d.removeClass(e.line.LINE):d.addClass(g);c.attr("class",i.makeNodeLineClass(b,a));a.isParent?c.removeAttr("disabled"):c.attr("disabled","disabled");f.removeAttr("style");f.attr("style",i.makeNodeIcoStyle(b,a));f.attr("class",i.makeNodeIcoClass(b,a))}},setNodeName:function(b,a){var c=h.getNodeTitle(b,a),d=
+k(a,e.id.SPAN,b);d.empty();b.view.nameIsHTML?d.html(h.getNodeName(b,a)):d.text(h.getNodeName(b,a));j.apply(b.view.showTitle,[b.treeId,a],b.view.showTitle)&&k(a,e.id.A,b).attr("title",!c?"":c)},setNodeTarget:function(b,a){k(a,e.id.A,b).attr("target",i.makeNodeTarget(a))},setNodeUrl:function(b,a){var c=k(a,e.id.A,b),d=i.makeNodeUrl(b,a);d==null||d.length==0?c.removeAttr("href"):c.attr("href",d)},switchNode:function(b,a){a.open||!j.canAsync(b,a)?i.expandCollapseNode(b,a,!a.open):b.async.enable?i.asyncNode(b,
+a)||i.expandCollapseNode(b,a,!a.open):a&&i.expandCollapseNode(b,a,!a.open)}};p.fn.zTree={consts:{className:{BUTTON:"button",LEVEL:"level",ICO_LOADING:"ico_loading",SWITCH:"switch"},event:{NODECREATED:"ztree_nodeCreated",CLICK:"ztree_click",EXPAND:"ztree_expand",COLLAPSE:"ztree_collapse",ASYNC_SUCCESS:"ztree_async_success",ASYNC_ERROR:"ztree_async_error",REMOVE:"ztree_remove"},id:{A:"_a",ICON:"_ico",SPAN:"_span",SWITCH:"_switch",UL:"_ul"},line:{ROOT:"root",ROOTS:"roots",CENTER:"center",BOTTOM:"bottom",
+NOLINE:"noline",LINE:"line"},folder:{OPEN:"open",CLOSE:"close",DOCU:"docu"},node:{CURSELECTED:"curSelectedNode"}},_z:{tools:j,view:i,event:m,data:h},getZTreeObj:function(b){return(b=h.getZTreeTools(b))?b:null},destroy:function(b){if(b&&b.length>0)i.destroy(h.getSetting(b));else for(var a in r)i.destroy(r[a])},init:function(b,a,c){var d=j.clone(M);p.extend(!0,d,a);d.treeId=b.attr("id");d.treeObj=b;d.treeObj.empty();r[d.treeId]=d;if(typeof document.body.style.maxHeight==="undefined")d.view.expandSpeed=
+"";h.initRoot(d);b=h.getRoot(d);a=d.data.key.children;c=c?j.clone(j.isArray(c)?c:[c]):[];b[a]=d.data.simpleData.enable?h.transformTozTreeFormat(d,c):c;h.initCache(d);m.unbindTree(d);m.bindTree(d);m.unbindEvent(d);m.bindEvent(d);c={setting:d,addNodes:function(a,b,c){function e(){i.addNodes(d,a,h,c==!0)}if(!b)return null;a||(a=null);if(a&&!a.isParent&&d.data.keep.leaf)return null;var h=j.clone(j.isArray(b)?b:[b]);j.canAsync(d,a)?i.asyncNode(d,a,c,e):e();return h},cancelSelectedNode:function(a){i.cancelPreSelectedNode(d,
+a)},destroy:function(){i.destroy(d)},expandAll:function(a){a=!!a;i.expandCollapseSonNode(d,null,a,!0);return a},expandNode:function(a,b,c,e,n){if(!a||!a.isParent)return null;b!==!0&&b!==!1&&(b=!a.open);if((n=!!n)&&b&&j.apply(d.callback.beforeExpand,[d.treeId,a],!0)==!1)return null;else if(n&&!b&&j.apply(d.callback.beforeCollapse,[d.treeId,a],!0)==!1)return null;b&&a.parentTId&&i.expandCollapseParentNode(d,a.getParentNode(),b,!1);if(b===a.open&&!c)return null;h.getRoot(d).expandTriggerFlag=n;if(!j.canAsync(d,
+a)&&c)i.expandCollapseSonNode(d,a,b,!0,function(){if(e!==!1)try{k(a,d).focus().blur()}catch(b){}});else if(a.open=!b,i.switchNode(this.setting,a),e!==!1)try{k(a,d).focus().blur()}catch(m){}return b},getNodes:function(){return h.getNodes(d)},getNodeByParam:function(a,b,c){return!a?null:h.getNodeByParam(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodeByTId:function(a){return h.getNodeCache(d,a)},getNodesByParam:function(a,b,c){return!a?null:h.getNodesByParam(d,c?c[d.data.key.children]:h.getNodes(d),
+a,b)},getNodesByParamFuzzy:function(a,b,c){return!a?null:h.getNodesByParamFuzzy(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodesByFilter:function(a,b,c,e){b=!!b;return!a||typeof a!="function"?b?null:[]:h.getNodesByFilter(d,c?c[d.data.key.children]:h.getNodes(d),a,b,e)},getNodeIndex:function(a){if(!a)return null;for(var b=d.data.key.children,c=a.parentTId?a.getParentNode():h.getRoot(d),e=0,i=c[b].length;e<i;e++)if(c[b][e]==a)return e;return-1},getSelectedNodes:function(){for(var a=[],b=h.getRoot(d).curSelectedList,
+c=0,e=b.length;c<e;c++)a.push(b[c]);return a},isSelectedNode:function(a){return h.isSelectedNode(d,a)},reAsyncChildNodes:function(a,b,c){if(this.setting.async.enable){var j=!a;j&&(a=h.getRoot(d));if(b=="refresh"){for(var b=this.setting.data.key.children,m=0,p=a[b]?a[b].length:0;m<p;m++)h.removeNodeCache(d,a[b][m]);h.removeSelectedNode(d);a[b]=[];j?this.setting.treeObj.empty():k(a,e.id.UL,d).empty()}i.asyncNode(this.setting,j?null:a,!!c)}},refresh:function(){this.setting.treeObj.empty();var a=h.getRoot(d),
+b=a[d.data.key.children];h.initRoot(d);a[d.data.key.children]=b;h.initCache(d);i.createNodes(d,0,a[d.data.key.children])},removeChildNodes:function(a){if(!a)return null;var b=a[d.data.key.children];i.removeChildNodes(d,a);return b?b:null},removeNode:function(a,b){a&&(b=!!b,b&&j.apply(d.callback.beforeRemove,[d.treeId,a],!0)==!1||(i.removeNode(d,a),b&&this.setting.treeObj.trigger(e.event.REMOVE,[d.treeId,a])))},selectNode:function(a,b){if(a&&j.uCanDo(d)){b=d.view.selectedMulti&&b;if(a.parentTId)i.expandCollapseParentNode(d,
+a.getParentNode(),!0,!1,function(){try{k(a,d).focus().blur()}catch(b){}});else try{k(a,d).focus().blur()}catch(c){}i.selectNode(d,a,b)}},transformTozTreeNodes:function(a){return h.transformTozTreeFormat(d,a)},transformToArray:function(a){return h.transformToArrayFormat(d,a)},updateNode:function(a){a&&k(a,d).get(0)&&j.uCanDo(d)&&(i.setNodeName(d,a),i.setNodeTarget(d,a),i.setNodeUrl(d,a),i.setNodeLineIcos(d,a),i.setNodeFontCss(d,a))}};b.treeTools=c;h.setZTreeTools(d,c);b[a]&&b[a].length>0?i.createNodes(d,
+0,b[a]):d.async.enable&&d.async.url&&d.async.url!==""&&i.asyncNode(d);return c}};var N=p.fn.zTree,k=j.$,e=N.consts})(jQuery);
+
+/*
+ * JQuery zTree excheck v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(m){var p,q,r,o={event:{CHECK:"ztree_check"},id:{CHECK:"_check"},checkbox:{STYLE:"checkbox",DEFAULT:"chk",DISABLED:"disable",FALSE:"false",TRUE:"true",FULL:"full",PART:"part",FOCUS:"focus"},radio:{STYLE:"radio",TYPE_ALL:"all",TYPE_LEVEL:"level"}},v={check:{enable:!1,autoCheckTrigger:!1,chkStyle:o.checkbox.STYLE,nocheckInherit:!1,chkDisabledInherit:!1,radioType:o.radio.TYPE_LEVEL,chkboxType:{Y:"ps",N:"ps"}},data:{key:{checked:"checked"}},callback:{beforeCheck:null,onCheck:null}};p=function(c,
+a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=b.data.key.checked;if(k.apply(b.callback.beforeCheck,[b.treeId,a],!0)==!1)return!0;a[d]=!a[d];e.checkNodeRelation(b,a);d=n(a,j.id.CHECK,b);e.setChkClass(b,d,a);e.repairParentChkClassWithSelf(b,a);b.treeObj.trigger(j.event.CHECK,[c,b.treeId,a]);return!0};q=function(c,a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,j.id.CHECK,b);a.check_Focus=!0;e.setChkClass(b,d,a);return!0};r=function(c,a){if(a.chkDisabled===
+!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,j.id.CHECK,b);a.check_Focus=!1;e.setChkClass(b,d,a);return!0};m.extend(!0,m.fn.zTree.consts,o);m.extend(!0,m.fn.zTree._z,{tools:{},view:{checkNodeRelation:function(c,a){var b,d,h,i=c.data.key.children,l=c.data.key.checked;b=j.radio;if(c.check.chkStyle==b.STYLE){var g=f.getRadioCheckedList(c);if(a[l])if(c.check.radioType==b.TYPE_ALL){for(d=g.length-1;d>=0;d--)b=g[d],b[l]&&b!=a&&(b[l]=!1,g.splice(d,1),e.setChkClass(c,n(b,j.id.CHECK,c),b),b.parentTId!=
+a.parentTId&&e.repairParentChkClassWithSelf(c,b));g.push(a)}else{g=a.parentTId?a.getParentNode():f.getRoot(c);for(d=0,h=g[i].length;d<h;d++)b=g[i][d],b[l]&&b!=a&&(b[l]=!1,e.setChkClass(c,n(b,j.id.CHECK,c),b))}else if(c.check.radioType==b.TYPE_ALL)for(d=0,h=g.length;d<h;d++)if(a==g[d]){g.splice(d,1);break}}else a[l]&&(!a[i]||a[i].length==0||c.check.chkboxType.Y.indexOf("s")>-1)&&e.setSonNodeCheckBox(c,a,!0),!a[l]&&(!a[i]||a[i].length==0||c.check.chkboxType.N.indexOf("s")>-1)&&e.setSonNodeCheckBox(c,
+a,!1),a[l]&&c.check.chkboxType.Y.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!0),!a[l]&&c.check.chkboxType.N.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!1)},makeChkClass:function(c,a){var b=c.data.key.checked,d=j.checkbox,h=j.radio,i="",i=a.chkDisabled===!0?d.DISABLED:a.halfCheck?d.PART:c.check.chkStyle==h.STYLE?a.check_Child_State<1?d.FULL:d.PART:a[b]?a.check_Child_State===2||a.check_Child_State===-1?d.FULL:d.PART:a.check_Child_State<1?d.FULL:d.PART,b=c.check.chkStyle+"_"+(a[b]?d.TRUE:d.FALSE)+
+"_"+i,b=a.check_Focus&&a.chkDisabled!==!0?b+"_"+d.FOCUS:b;return j.className.BUTTON+" "+d.DEFAULT+" "+b},repairAllChk:function(c,a){if(c.check.enable&&c.check.chkStyle===j.checkbox.STYLE)for(var b=c.data.key.checked,d=c.data.key.children,h=f.getRoot(c),i=0,l=h[d].length;i<l;i++){var g=h[d][i];g.nocheck!==!0&&g.chkDisabled!==!0&&(g[b]=a);e.setSonNodeCheckBox(c,g,a)}},repairChkClass:function(c,a){if(a&&(f.makeChkFlag(c,a),a.nocheck!==!0)){var b=n(a,j.id.CHECK,c);e.setChkClass(c,b,a)}},repairParentChkClass:function(c,
+a){if(a&&a.parentTId){var b=a.getParentNode();e.repairChkClass(c,b);e.repairParentChkClass(c,b)}},repairParentChkClassWithSelf:function(c,a){if(a){var b=c.data.key.children;a[b]&&a[b].length>0?e.repairParentChkClass(c,a[b][0]):e.repairParentChkClass(c,a)}},repairSonChkDisabled:function(c,a,b,d){if(a){var h=c.data.key.children;if(a.chkDisabled!=b)a.chkDisabled=b;e.repairChkClass(c,a);if(a[h]&&d)for(var i=0,l=a[h].length;i<l;i++)e.repairSonChkDisabled(c,a[h][i],b,d)}},repairParentChkDisabled:function(c,
+a,b,d){if(a){if(a.chkDisabled!=b&&d)a.chkDisabled=b;e.repairChkClass(c,a);e.repairParentChkDisabled(c,a.getParentNode(),b,d)}},setChkClass:function(c,a,b){a&&(b.nocheck===!0?a.hide():a.show(),a.removeClass(),a.addClass(e.makeChkClass(c,b)))},setParentNodeCheckBox:function(c,a,b,d){var h=c.data.key.children,i=c.data.key.checked,l=n(a,j.id.CHECK,c);d||(d=a);f.makeChkFlag(c,a);a.nocheck!==!0&&a.chkDisabled!==!0&&(a[i]=b,e.setChkClass(c,l,a),c.check.autoCheckTrigger&&a!=d&&c.treeObj.trigger(j.event.CHECK,
+[null,c.treeId,a]));if(a.parentTId){l=!0;if(!b)for(var h=a.getParentNode()[h],g=0,k=h.length;g<k;g++)if(h[g].nocheck!==!0&&h[g].chkDisabled!==!0&&h[g][i]||(h[g].nocheck===!0||h[g].chkDisabled===!0)&&h[g].check_Child_State>0){l=!1;break}l&&e.setParentNodeCheckBox(c,a.getParentNode(),b,d)}},setSonNodeCheckBox:function(c,a,b,d){if(a){var h=c.data.key.children,i=c.data.key.checked,l=n(a,j.id.CHECK,c);d||(d=a);var g=!1;if(a[h])for(var k=0,m=a[h].length;k<m&&a.chkDisabled!==!0;k++){var o=a[h][k];e.setSonNodeCheckBox(c,
+o,b,d);o.chkDisabled===!0&&(g=!0)}if(a!=f.getRoot(c)&&a.chkDisabled!==!0){g&&a.nocheck!==!0&&f.makeChkFlag(c,a);if(a.nocheck!==!0&&a.chkDisabled!==!0){if(a[i]=b,!g)a.check_Child_State=a[h]&&a[h].length>0?b?2:0:-1}else a.check_Child_State=-1;e.setChkClass(c,l,a);c.check.autoCheckTrigger&&a!=d&&a.nocheck!==!0&&a.chkDisabled!==!0&&c.treeObj.trigger(j.event.CHECK,[null,c.treeId,a])}}}},event:{},data:{getRadioCheckedList:function(c){for(var a=f.getRoot(c).radioCheckedList,b=0,d=a.length;b<d;b++)f.getNodeCache(c,
+a[b].tId)||(a.splice(b,1),b--,d--);return a},getCheckStatus:function(c,a){if(!c.check.enable||a.nocheck||a.chkDisabled)return null;var b=c.data.key.checked;return{checked:a[b],half:a.halfCheck?a.halfCheck:c.check.chkStyle==j.radio.STYLE?a.check_Child_State===2:a[b]?a.check_Child_State>-1&&a.check_Child_State<2:a.check_Child_State>0}},getTreeCheckedNodes:function(c,a,b,d){if(!a)return[];for(var h=c.data.key.children,i=c.data.key.checked,e=b&&c.check.chkStyle==j.radio.STYLE&&c.check.radioType==j.radio.TYPE_ALL,
+d=!d?[]:d,g=0,k=a.length;g<k;g++){if(a[g].nocheck!==!0&&a[g].chkDisabled!==!0&&a[g][i]==b&&(d.push(a[g]),e))break;f.getTreeCheckedNodes(c,a[g][h],b,d);if(e&&d.length>0)break}return d},getTreeChangeCheckedNodes:function(c,a,b){if(!a)return[];for(var d=c.data.key.children,h=c.data.key.checked,b=!b?[]:b,i=0,e=a.length;i<e;i++)a[i].nocheck!==!0&&a[i].chkDisabled!==!0&&a[i][h]!=a[i].checkedOld&&b.push(a[i]),f.getTreeChangeCheckedNodes(c,a[i][d],b);return b},makeChkFlag:function(c,a){if(a){var b=c.data.key.children,
+d=c.data.key.checked,h=-1;if(a[b])for(var i=0,e=a[b].length;i<e;i++){var g=a[b][i],f=-1;if(c.check.chkStyle==j.radio.STYLE)if(f=g.nocheck===!0||g.chkDisabled===!0?g.check_Child_State:g.halfCheck===!0?2:g[d]?2:g.check_Child_State>0?2:0,f==2){h=2;break}else f==0&&(h=0);else if(c.check.chkStyle==j.checkbox.STYLE)if(f=g.nocheck===!0||g.chkDisabled===!0?g.check_Child_State:g.halfCheck===!0?1:g[d]?g.check_Child_State===-1||g.check_Child_State===2?2:1:g.check_Child_State>0?1:0,f===1){h=1;break}else if(f===
+2&&h>-1&&i>0&&f!==h){h=1;break}else if(h===2&&f>-1&&f<2){h=1;break}else f>-1&&(h=f)}a.check_Child_State=h}}}});var m=m.fn.zTree,k=m._z.tools,j=m.consts,e=m._z.view,f=m._z.data,n=k.$;f.exSetting(v);f.addInitBind(function(c){c.treeObj.bind(j.event.CHECK,function(a,b,d,h){a.srcEvent=b;k.apply(c.callback.onCheck,[a,d,h])})});f.addInitUnBind(function(c){c.treeObj.unbind(j.event.CHECK)});f.addInitCache(function(){});f.addInitNode(function(c,a,b,d){if(b){a=c.data.key.checked;typeof b[a]=="string"&&(b[a]=
+k.eqs(b[a],"true"));b[a]=!!b[a];b.checkedOld=b[a];if(typeof b.nocheck=="string")b.nocheck=k.eqs(b.nocheck,"true");b.nocheck=!!b.nocheck||c.check.nocheckInherit&&d&&!!d.nocheck;if(typeof b.chkDisabled=="string")b.chkDisabled=k.eqs(b.chkDisabled,"true");b.chkDisabled=!!b.chkDisabled||c.check.chkDisabledInherit&&d&&!!d.chkDisabled;if(typeof b.halfCheck=="string")b.halfCheck=k.eqs(b.halfCheck,"true");b.halfCheck=!!b.halfCheck;b.check_Child_State=-1;b.check_Focus=!1;b.getCheckStatus=function(){return f.getCheckStatus(c,
+b)};c.check.chkStyle==j.radio.STYLE&&c.check.radioType==j.radio.TYPE_ALL&&b[a]&&f.getRoot(c).radioCheckedList.push(b)}});f.addInitProxy(function(c){var a=c.target,b=f.getSetting(c.data.treeId),d="",h=null,e="",l=null;if(k.eqs(c.type,"mouseover")){if(b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=k.getNodeMainDom(a).id,e="mouseoverCheck"}else if(k.eqs(c.type,"mouseout")){if(b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=
+k.getNodeMainDom(a).id,e="mouseoutCheck"}else if(k.eqs(c.type,"click")&&b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=k.getNodeMainDom(a).id,e="checkNode";if(d.length>0)switch(h=f.getNodeCache(b,d),e){case "checkNode":l=p;break;case "mouseoverCheck":l=q;break;case "mouseoutCheck":l=r}return{stop:e==="checkNode",node:h,nodeEventType:e,nodeEventCallback:l,treeEventType:"",treeEventCallback:null}},!0);f.addInitRoot(function(c){f.getRoot(c).radioCheckedList=[]});
+f.addBeforeA(function(c,a,b){c.check.enable&&(f.makeChkFlag(c,a),b.push("<span ID='",a.tId,j.id.CHECK,"' class='",e.makeChkClass(c,a),"' treeNode",j.id.CHECK,a.nocheck===!0?" style='display:none;'":"","></span>"))});f.addZTreeTools(function(c,a){a.checkNode=function(a,b,c,f){var g=this.setting.data.key.checked;if(a.chkDisabled!==!0&&(b!==!0&&b!==!1&&(b=!a[g]),f=!!f,(a[g]!==b||c)&&!(f&&k.apply(this.setting.callback.beforeCheck,[this.setting.treeId,a],!0)==!1)&&k.uCanDo(this.setting)&&this.setting.check.enable&&
+a.nocheck!==!0))a[g]=b,b=n(a,j.id.CHECK,this.setting),(c||this.setting.check.chkStyle===j.radio.STYLE)&&e.checkNodeRelation(this.setting,a),e.setChkClass(this.setting,b,a),e.repairParentChkClassWithSelf(this.setting,a),f&&this.setting.treeObj.trigger(j.event.CHECK,[null,this.setting.treeId,a])};a.checkAllNodes=function(a){e.repairAllChk(this.setting,!!a)};a.getCheckedNodes=function(a){var b=this.setting.data.key.children;return f.getTreeCheckedNodes(this.setting,f.getRoot(this.setting)[b],a!==!1)};
+a.getChangeCheckedNodes=function(){var a=this.setting.data.key.children;return f.getTreeChangeCheckedNodes(this.setting,f.getRoot(this.setting)[a])};a.setChkDisabled=function(a,b,c,f){b=!!b;c=!!c;e.repairSonChkDisabled(this.setting,a,b,!!f);e.repairParentChkDisabled(this.setting,a.getParentNode(),b,c)};var b=a.updateNode;a.updateNode=function(c,f){b&&b.apply(a,arguments);if(c&&this.setting.check.enable&&n(c,this.setting).get(0)&&k.uCanDo(this.setting)){var i=n(c,j.id.CHECK,this.setting);(f==!0||this.setting.check.chkStyle===
+j.radio.STYLE)&&e.checkNodeRelation(this.setting,c);e.setChkClass(this.setting,i,c);e.repairParentChkClassWithSelf(this.setting,c)}}});var s=e.createNodes;e.createNodes=function(c,a,b,d){s&&s.apply(e,arguments);b&&e.repairParentChkClassWithSelf(c,d)};var t=e.removeNode;e.removeNode=function(c,a){var b=a.getParentNode();t&&t.apply(e,arguments);a&&b&&(e.repairChkClass(c,b),e.repairParentChkClass(c,b))};var u=e.appendNodes;e.appendNodes=function(c,a,b,d,h,i){var j="";u&&(j=u.apply(e,arguments));d&&f.makeChkFlag(c,
+d);return j}})(jQuery);
+
+/*
+ * JQuery zTree exedit v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(w){var I={event:{DRAG:"ztree_drag",DROP:"ztree_drop",RENAME:"ztree_rename",DRAGMOVE:"ztree_dragmove"},id:{EDIT:"_edit",INPUT:"_input",REMOVE:"_remove"},move:{TYPE_INNER:"inner",TYPE_PREV:"prev",TYPE_NEXT:"next"},node:{CURSELECTED_EDIT:"curSelectedNode_Edit",TMPTARGET_TREE:"tmpTargetzTree",TMPTARGET_NODE:"tmpTargetNode"}},x={onHoverOverNode:function(b,a){var c=m.getSetting(b.data.treeId),d=m.getRoot(c);if(d.curHoverNode!=a)x.onHoverOutNode(b);d.curHoverNode=a;f.addHoverDom(c,a)},onHoverOutNode:function(b){var b=
+m.getSetting(b.data.treeId),a=m.getRoot(b);if(a.curHoverNode&&!m.isSelectedNode(b,a.curHoverNode))f.removeTreeDom(b,a.curHoverNode),a.curHoverNode=null},onMousedownNode:function(b,a){function c(b){if(C.dragFlag==0&&Math.abs(N-b.clientX)<e.edit.drag.minMoveSize&&Math.abs(O-b.clientY)<e.edit.drag.minMoveSize)return!0;var a,c,n,k,i;i=e.data.key.children;M.css("cursor","pointer");if(C.dragFlag==0){if(g.apply(e.callback.beforeDrag,[e.treeId,l],!0)==!1)return r(b),!0;for(a=0,c=l.length;a<c;a++){if(a==0)C.dragNodeShowBefore=
+[];n=l[a];n.isParent&&n.open?(f.expandCollapseNode(e,n,!n.open),C.dragNodeShowBefore[n.tId]=!0):C.dragNodeShowBefore[n.tId]=!1}C.dragFlag=1;t.showHoverDom=!1;g.showIfameMask(e,!0);n=!0;k=-1;if(l.length>1){var j=l[0].parentTId?l[0].getParentNode()[i]:m.getNodes(e);i=[];for(a=0,c=j.length;a<c;a++)if(C.dragNodeShowBefore[j[a].tId]!==void 0&&(n&&k>-1&&k+1!==a&&(n=!1),i.push(j[a]),k=a),l.length===i.length){l=i;break}}n&&(H=l[0].getPreNode(),R=l[l.length-1].getNextNode());D=o("<ul class='zTreeDragUL'></ul>",
+e);for(a=0,c=l.length;a<c;a++)n=l[a],n.editNameFlag=!1,f.selectNode(e,n,a>0),f.removeTreeDom(e,n),a>e.edit.drag.maxShowNodeNum-1||(k=o("<li id='"+n.tId+"_tmp'></li>",e),k.append(o(n,d.id.A,e).clone()),k.css("padding","0"),k.children("#"+n.tId+d.id.A).removeClass(d.node.CURSELECTED),D.append(k),a==e.edit.drag.maxShowNodeNum-1&&(k=o("<li id='"+n.tId+"_moretmp'><a> ... </a></li>",e),D.append(k)));D.attr("id",l[0].tId+d.id.UL+"_tmp");D.addClass(e.treeObj.attr("class"));D.appendTo(M);B=o("<span class='tmpzTreeMove_arrow'></span>",
+e);B.attr("id","zTreeMove_arrow_tmp");B.appendTo(M);e.treeObj.trigger(d.event.DRAG,[b,e.treeId,l])}if(C.dragFlag==1){s&&B.attr("id")==b.target.id&&u&&b.clientX+F.scrollLeft()+2>w("#"+u+d.id.A,s).offset().left?(n=w("#"+u+d.id.A,s),b.target=n.length>0?n.get(0):b.target):s&&(s.removeClass(d.node.TMPTARGET_TREE),u&&w("#"+u+d.id.A,s).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER));
+u=s=null;J=!1;h=e;n=m.getSettings();for(var y in n)if(n[y].treeId&&n[y].edit.enable&&n[y].treeId!=e.treeId&&(b.target.id==n[y].treeId||w(b.target).parents("#"+n[y].treeId).length>0))J=!0,h=n[y];y=F.scrollTop();k=F.scrollLeft();i=h.treeObj.offset();a=h.treeObj.get(0).scrollHeight;n=h.treeObj.get(0).scrollWidth;c=b.clientY+y-i.top;var p=h.treeObj.height()+i.top-b.clientY-y,q=b.clientX+k-i.left,x=h.treeObj.width()+i.left-b.clientX-k;i=c<e.edit.drag.borderMax&&c>e.edit.drag.borderMin;var j=p<e.edit.drag.borderMax&&
+p>e.edit.drag.borderMin,K=q<e.edit.drag.borderMax&&q>e.edit.drag.borderMin,G=x<e.edit.drag.borderMax&&x>e.edit.drag.borderMin,p=c>e.edit.drag.borderMin&&p>e.edit.drag.borderMin&&q>e.edit.drag.borderMin&&x>e.edit.drag.borderMin,q=i&&h.treeObj.scrollTop()<=0,x=j&&h.treeObj.scrollTop()+h.treeObj.height()+10>=a,P=K&&h.treeObj.scrollLeft()<=0,Q=G&&h.treeObj.scrollLeft()+h.treeObj.width()+10>=n;if(b.target&&g.isChildOrSelf(b.target,h.treeId)){for(var E=b.target;E&&E.tagName&&!g.eqs(E.tagName,"li")&&E.id!=
+h.treeId;)E=E.parentNode;var S=!0;for(a=0,c=l.length;a<c;a++)if(n=l[a],E.id===n.tId){S=!1;break}else if(o(n,e).find("#"+E.id).length>0){S=!1;break}if(S&&b.target&&g.isChildOrSelf(b.target,E.id+d.id.A))s=w(E),u=E.id}n=l[0];if(p&&g.isChildOrSelf(b.target,h.treeId)){if(!s&&(b.target.id==h.treeId||q||x||P||Q)&&(J||!J&&n.parentTId))s=h.treeObj;i?h.treeObj.scrollTop(h.treeObj.scrollTop()-10):j&&h.treeObj.scrollTop(h.treeObj.scrollTop()+10);K?h.treeObj.scrollLeft(h.treeObj.scrollLeft()-10):G&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+
+10);s&&s!=h.treeObj&&s.offset().left<h.treeObj.offset().left&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+s.offset().left-h.treeObj.offset().left)}D.css({top:b.clientY+y+3+"px",left:b.clientX+k+3+"px"});i=a=0;if(s&&s.attr("id")!=h.treeId){var z=u==null?null:m.getNodeCache(h,u);c=(b.ctrlKey||b.metaKey)&&e.edit.drag.isMove&&e.edit.drag.isCopy||!e.edit.drag.isMove&&e.edit.drag.isCopy;a=!!(H&&u===H.tId);i=!!(R&&u===R.tId);k=n.parentTId&&n.parentTId==u;n=(c||!i)&&g.apply(h.edit.drag.prev,[h.treeId,l,z],
+!!h.edit.drag.prev);a=(c||!a)&&g.apply(h.edit.drag.next,[h.treeId,l,z],!!h.edit.drag.next);G=(c||!k)&&!(h.data.keep.leaf&&!z.isParent)&&g.apply(h.edit.drag.inner,[h.treeId,l,z],!!h.edit.drag.inner);if(!n&&!a&&!G){if(s=null,u="",v=d.move.TYPE_INNER,B.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null}else{c=w("#"+u+d.id.A,s);i=z.isLastNode?null:w("#"+z.getNextNode().tId+d.id.A,s.next());j=c.offset().top;k=c.offset().left;K=n?G?0.25:a?
+0.5:1:-1;G=a?G?0.75:n?0.5:0:-1;y=(b.clientY+y-j)/c.height();(K==1||y<=K&&y>=-0.2)&&n?(a=1-B.width(),i=j-B.height()/2,v=d.move.TYPE_PREV):(G==0||y>=G&&y<=1.2)&&a?(a=1-B.width(),i=i==null||z.isParent&&z.open?j+c.height()-B.height()/2:i.offset().top-B.height()/2,v=d.move.TYPE_NEXT):(a=5-B.width(),i=j,v=d.move.TYPE_INNER);B.css({display:"block",top:i+"px",left:k+a+"px"});c.addClass(d.node.TMPTARGET_NODE+"_"+v);if(T!=u||U!=v)L=(new Date).getTime();if(z&&z.isParent&&v==d.move.TYPE_INNER&&(y=!0,window.zTreeMoveTimer&&
+window.zTreeMoveTargetNodeTId!==z.tId?(clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null):window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId===z.tId&&(y=!1),y))window.zTreeMoveTimer=setTimeout(function(){v==d.move.TYPE_INNER&&z&&z.isParent&&!z.open&&(new Date).getTime()-L>h.edit.drag.autoOpenTime&&g.apply(h.callback.beforeDragOpen,[h.treeId,z],!0)&&(f.switchNode(h,z),h.edit.drag.autoExpandTrigger&&h.treeObj.trigger(d.event.EXPAND,[h.treeId,z]))},h.edit.drag.autoOpenTime+50),
+window.zTreeMoveTargetNodeTId=z.tId}}else if(v=d.move.TYPE_INNER,s&&g.apply(h.edit.drag.inner,[h.treeId,l,null],!!h.edit.drag.inner)?s.addClass(d.node.TMPTARGET_TREE):s=null,B.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;T=u;U=v;e.treeObj.trigger(d.event.DRAGMOVE,[b,e.treeId,l])}return!1}function r(b){if(window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;U=T=null;F.unbind("mousemove",c);
+F.unbind("mouseup",r);F.unbind("selectstart",k);M.css("cursor","auto");s&&(s.removeClass(d.node.TMPTARGET_TREE),u&&w("#"+u+d.id.A,s).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER));g.showIfameMask(e,!1);t.showHoverDom=!0;if(C.dragFlag!=0){C.dragFlag=0;var a,i,j;for(a=0,i=l.length;a<i;a++)j=l[a],j.isParent&&C.dragNodeShowBefore[j.tId]&&!j.open&&(f.expandCollapseNode(e,j,!j.open),
+delete C.dragNodeShowBefore[j.tId]);D&&D.remove();B&&B.remove();var p=(b.ctrlKey||b.metaKey)&&e.edit.drag.isMove&&e.edit.drag.isCopy||!e.edit.drag.isMove&&e.edit.drag.isCopy;!p&&s&&u&&l[0].parentTId&&u==l[0].parentTId&&v==d.move.TYPE_INNER&&(s=null);if(s){var q=u==null?null:m.getNodeCache(h,u);if(g.apply(e.callback.beforeDrop,[h.treeId,l,q,v,p],!0)==!1)f.selectNodes(x,l);else{var A=p?g.clone(l):l;a=function(){if(J){if(!p)for(var a=0,c=l.length;a<c;a++)f.removeNode(e,l[a]);if(v==d.move.TYPE_INNER)f.addNodes(h,
+q,A);else if(f.addNodes(h,q.getParentNode(),A),v==d.move.TYPE_PREV)for(a=0,c=A.length;a<c;a++)f.moveNode(h,q,A[a],v,!1);else for(a=-1,c=A.length-1;a<c;c--)f.moveNode(h,q,A[c],v,!1)}else if(p&&v==d.move.TYPE_INNER)f.addNodes(h,q,A);else if(p&&f.addNodes(h,q.getParentNode(),A),v!=d.move.TYPE_NEXT)for(a=0,c=A.length;a<c;a++)f.moveNode(h,q,A[a],v,!1);else for(a=-1,c=A.length-1;a<c;c--)f.moveNode(h,q,A[c],v,!1);f.selectNodes(h,A);o(A[0],e).focus().blur();e.treeObj.trigger(d.event.DROP,[b,h.treeId,A,q,
+v,p])};v==d.move.TYPE_INNER&&g.canAsync(h,q)?f.asyncNode(h,q,!1,a):a()}}else f.selectNodes(x,l),e.treeObj.trigger(d.event.DROP,[b,e.treeId,l,null,null,null])}}function k(){return!1}var i,j,e=m.getSetting(b.data.treeId),C=m.getRoot(e),t=m.getRoots();if(b.button==2||!e.edit.enable||!e.edit.drag.isCopy&&!e.edit.drag.isMove)return!0;var p=b.target,q=m.getRoot(e).curSelectedList,l=[];if(m.isSelectedNode(e,a))for(i=0,j=q.length;i<j;i++){if(q[i].editNameFlag&&g.eqs(p.tagName,"input")&&p.getAttribute("treeNode"+
+d.id.INPUT)!==null)return!0;l.push(q[i]);if(l[0].parentTId!==q[i].parentTId){l=[a];break}}else l=[a];f.editNodeBlur=!0;f.cancelCurEditNode(e);var F=w(e.treeObj.get(0).ownerDocument),M=w(e.treeObj.get(0).ownerDocument.body),D,B,s,J=!1,h=e,x=e,H,R,T=null,U=null,u=null,v=d.move.TYPE_INNER,N=b.clientX,O=b.clientY,L=(new Date).getTime();g.uCanDo(e)&&F.bind("mousemove",c);F.bind("mouseup",r);F.bind("selectstart",k);b.preventDefault&&b.preventDefault();return!0}};w.extend(!0,w.fn.zTree.consts,I);w.extend(!0,
+w.fn.zTree._z,{tools:{getAbs:function(b){b=b.getBoundingClientRect();return[b.left+(document.body.scrollLeft+document.documentElement.scrollLeft),b.top+(document.body.scrollTop+document.documentElement.scrollTop)]},inputFocus:function(b){b.get(0)&&(b.focus(),g.setCursorPosition(b.get(0),b.val().length))},inputSelect:function(b){b.get(0)&&(b.focus(),b.select())},setCursorPosition:function(b,a){if(b.setSelectionRange)b.focus(),b.setSelectionRange(a,a);else if(b.createTextRange){var c=b.createTextRange();
+c.collapse(!0);c.moveEnd("character",a);c.moveStart("character",a);c.select()}},showIfameMask:function(b,a){for(var c=m.getRoot(b);c.dragMaskList.length>0;)c.dragMaskList[0].remove(),c.dragMaskList.shift();if(a)for(var d=o("iframe",b),f=0,i=d.length;f<i;f++){var j=d.get(f),e=g.getAbs(j),j=o("<div id='zTreeMask_"+f+"' class='zTreeMask' style='top:"+e[1]+"px; left:"+e[0]+"px; width:"+j.offsetWidth+"px; height:"+j.offsetHeight+"px;'></div>",b);j.appendTo(o("body",b));c.dragMaskList.push(j)}}},view:{addEditBtn:function(b,
+a){if(!(a.editNameFlag||o(a,d.id.EDIT,b).length>0)&&g.apply(b.edit.showRenameBtn,[b.treeId,a],b.edit.showRenameBtn)){var c=o(a,d.id.A,b),r="<span class='"+d.className.BUTTON+" edit' id='"+a.tId+d.id.EDIT+"' title='"+g.apply(b.edit.renameTitle,[b.treeId,a],b.edit.renameTitle)+"' treeNode"+d.id.EDIT+" style='display:none;'></span>";c.append(r);o(a,d.id.EDIT,b).bind("click",function(){if(!g.uCanDo(b)||g.apply(b.callback.beforeEditName,[b.treeId,a],!0)==!1)return!1;f.editNode(b,a);return!1}).show()}},
+addRemoveBtn:function(b,a){if(!(a.editNameFlag||o(a,d.id.REMOVE,b).length>0)&&g.apply(b.edit.showRemoveBtn,[b.treeId,a],b.edit.showRemoveBtn)){var c=o(a,d.id.A,b),r="<span class='"+d.className.BUTTON+" remove' id='"+a.tId+d.id.REMOVE+"' title='"+g.apply(b.edit.removeTitle,[b.treeId,a],b.edit.removeTitle)+"' treeNode"+d.id.REMOVE+" style='display:none;'></span>";c.append(r);o(a,d.id.REMOVE,b).bind("click",function(){if(!g.uCanDo(b)||g.apply(b.callback.beforeRemove,[b.treeId,a],!0)==!1)return!1;f.removeNode(b,
+a);b.treeObj.trigger(d.event.REMOVE,[b.treeId,a]);return!1}).bind("mousedown",function(){return!0}).show()}},addHoverDom:function(b,a){if(m.getRoots().showHoverDom)a.isHover=!0,b.edit.enable&&(f.addEditBtn(b,a),f.addRemoveBtn(b,a)),g.apply(b.view.addHoverDom,[b.treeId,a])},cancelCurEditNode:function(b,a,c){var r=m.getRoot(b),k=b.data.key.name,i=r.curEditNode;if(i){var j=r.curEditInput,a=a?a:c?i[k]:j.val();if(g.apply(b.callback.beforeRename,[b.treeId,i,a,c],!0)===!1)return!1;else i[k]=a,b.treeObj.trigger(d.event.RENAME,
+[b.treeId,i,c]);o(i,d.id.A,b).removeClass(d.node.CURSELECTED_EDIT);j.unbind();f.setNodeName(b,i);i.editNameFlag=!1;r.curEditNode=null;r.curEditInput=null;f.selectNode(b,i,!1)}return r.noSelection=!0},editNode:function(b,a){var c=m.getRoot(b);f.editNodeBlur=!1;if(m.isSelectedNode(b,a)&&c.curEditNode==a&&a.editNameFlag)setTimeout(function(){g.inputFocus(c.curEditInput)},0);else{var r=b.data.key.name;a.editNameFlag=!0;f.removeTreeDom(b,a);f.cancelCurEditNode(b);f.selectNode(b,a,!1);o(a,d.id.SPAN,b).html("<input type=text class='rename' id='"+
+a.tId+d.id.INPUT+"' treeNode"+d.id.INPUT+" >");var k=o(a,d.id.INPUT,b);k.attr("value",a[r]);b.edit.editNameSelectAll?g.inputSelect(k):g.inputFocus(k);k.bind("blur",function(){f.editNodeBlur||f.cancelCurEditNode(b)}).bind("keydown",function(a){a.keyCode=="13"?(f.editNodeBlur=!0,f.cancelCurEditNode(b)):a.keyCode=="27"&&f.cancelCurEditNode(b,null,!0)}).bind("click",function(){return!1}).bind("dblclick",function(){return!1});o(a,d.id.A,b).addClass(d.node.CURSELECTED_EDIT);c.curEditInput=k;c.noSelection=
+!1;c.curEditNode=a}},moveNode:function(b,a,c,r,k,i){var j=m.getRoot(b),e=b.data.key.children;if(a!=c&&(!b.data.keep.leaf||!a||a.isParent||r!=d.move.TYPE_INNER)){var g=c.parentTId?c.getParentNode():j,t=a===null||a==j;t&&a===null&&(a=j);if(t)r=d.move.TYPE_INNER;j=a.parentTId?a.getParentNode():j;if(r!=d.move.TYPE_PREV&&r!=d.move.TYPE_NEXT)r=d.move.TYPE_INNER;if(r==d.move.TYPE_INNER)if(t)c.parentTId=null;else{if(!a.isParent)a.isParent=!0,a.open=!!a.open,f.setNodeLineIcos(b,a);c.parentTId=a.tId}var p;
+t?p=t=b.treeObj:(!i&&r==d.move.TYPE_INNER?f.expandCollapseNode(b,a,!0,!1):i||f.expandCollapseNode(b,a.getParentNode(),!0,!1),t=o(a,b),p=o(a,d.id.UL,b),t.get(0)&&!p.get(0)&&(p=[],f.makeUlHtml(b,a,p,""),t.append(p.join(""))),p=o(a,d.id.UL,b));var q=o(c,b);q.get(0)?t.get(0)||q.remove():q=f.appendNodes(b,c.level,[c],null,!1,!0).join("");p.get(0)&&r==d.move.TYPE_INNER?p.append(q):t.get(0)&&r==d.move.TYPE_PREV?t.before(q):t.get(0)&&r==d.move.TYPE_NEXT&&t.after(q);var l=-1,w=0,x=null,t=null,D=c.level;if(c.isFirstNode){if(l=
+0,g[e].length>1)x=g[e][1],x.isFirstNode=!0}else if(c.isLastNode)l=g[e].length-1,x=g[e][l-1],x.isLastNode=!0;else for(p=0,q=g[e].length;p<q;p++)if(g[e][p].tId==c.tId){l=p;break}l>=0&&g[e].splice(l,1);if(r!=d.move.TYPE_INNER)for(p=0,q=j[e].length;p<q;p++)j[e][p].tId==a.tId&&(w=p);if(r==d.move.TYPE_INNER){a[e]||(a[e]=[]);if(a[e].length>0)t=a[e][a[e].length-1],t.isLastNode=!1;a[e].splice(a[e].length,0,c);c.isLastNode=!0;c.isFirstNode=a[e].length==1}else a.isFirstNode&&r==d.move.TYPE_PREV?(j[e].splice(w,
+0,c),t=a,t.isFirstNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!0,c.isLastNode=!1):a.isLastNode&&r==d.move.TYPE_NEXT?(j[e].splice(w+1,0,c),t=a,t.isLastNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!0):(r==d.move.TYPE_PREV?j[e].splice(w,0,c):j[e].splice(w+1,0,c),c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!1);m.fixPIdKeyValue(b,c);m.setSonNodeLevel(b,c.getParentNode(),c);f.setNodeLineIcos(b,c);f.repairNodeLevelClass(b,c,D);!b.data.keep.parent&&g[e].length<1?(g.isParent=!1,
+g.open=!1,a=o(g,d.id.UL,b),r=o(g,d.id.SWITCH,b),e=o(g,d.id.ICON,b),f.replaceSwitchClass(g,r,d.folder.DOCU),f.replaceIcoClass(g,e,d.folder.DOCU),a.css("display","none")):x&&f.setNodeLineIcos(b,x);t&&f.setNodeLineIcos(b,t);b.check&&b.check.enable&&f.repairChkClass&&(f.repairChkClass(b,g),f.repairParentChkClassWithSelf(b,g),g!=c.parent&&f.repairParentChkClassWithSelf(b,c));i||f.expandCollapseParentNode(b,c.getParentNode(),!0,k)}},removeEditBtn:function(b,a){o(a,d.id.EDIT,b).unbind().remove()},removeRemoveBtn:function(b,
+a){o(a,d.id.REMOVE,b).unbind().remove()},removeTreeDom:function(b,a){a.isHover=!1;f.removeEditBtn(b,a);f.removeRemoveBtn(b,a);g.apply(b.view.removeHoverDom,[b.treeId,a])},repairNodeLevelClass:function(b,a,c){if(c!==a.level){var f=o(a,b),g=o(a,d.id.A,b),b=o(a,d.id.UL,b),c=d.className.LEVEL+c,a=d.className.LEVEL+a.level;f.removeClass(c);f.addClass(a);g.removeClass(c);g.addClass(a);b.removeClass(c);b.addClass(a)}},selectNodes:function(b,a){for(var c=0,d=a.length;c<d;c++)f.selectNode(b,a[c],c>0)}},event:{},
+data:{setSonNodeLevel:function(b,a,c){if(c){var d=b.data.key.children;c.level=a?a.level+1:0;if(c[d])for(var a=0,f=c[d].length;a<f;a++)c[d][a]&&m.setSonNodeLevel(b,c,c[d][a])}}}});var H=w.fn.zTree,g=H._z.tools,d=H.consts,f=H._z.view,m=H._z.data,o=g.$;m.exSetting({edit:{enable:!1,editNameSelectAll:!1,showRemoveBtn:!0,showRenameBtn:!0,removeTitle:"remove",renameTitle:"rename",drag:{autoExpandTrigger:!1,isCopy:!0,isMove:!0,prev:!0,next:!0,inner:!0,minMoveSize:5,borderMax:10,borderMin:-5,maxShowNodeNum:5,
+autoOpenTime:500}},view:{addHoverDom:null,removeHoverDom:null},callback:{beforeDrag:null,beforeDragOpen:null,beforeDrop:null,beforeEditName:null,beforeRename:null,onDrag:null,onDragMove:null,onDrop:null,onRename:null}});m.addInitBind(function(b){var a=b.treeObj,c=d.event;a.bind(c.RENAME,function(a,c,d,f){g.apply(b.callback.onRename,[a,c,d,f])});a.bind(c.DRAG,function(a,c,d,f){g.apply(b.callback.onDrag,[c,d,f])});a.bind(c.DRAGMOVE,function(a,c,d,f){g.apply(b.callback.onDragMove,[c,d,f])});a.bind(c.DROP,
+function(a,c,d,f,e,m,o){g.apply(b.callback.onDrop,[c,d,f,e,m,o])})});m.addInitUnBind(function(b){var b=b.treeObj,a=d.event;b.unbind(a.RENAME);b.unbind(a.DRAG);b.unbind(a.DRAGMOVE);b.unbind(a.DROP)});m.addInitCache(function(){});m.addInitNode(function(b,a,c){if(c)c.isHover=!1,c.editNameFlag=!1});m.addInitProxy(function(b){var a=b.target,c=m.getSetting(b.data.treeId),f=b.relatedTarget,k="",i=null,j="",e=null,o=null;if(g.eqs(b.type,"mouseover")){if(o=g.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+d.id.A}]))k=
+g.getNodeMainDom(o).id,j="hoverOverNode"}else if(g.eqs(b.type,"mouseout"))o=g.getMDom(c,f,[{tagName:"a",attrName:"treeNode"+d.id.A}]),o||(k="remove",j="hoverOutNode");else if(g.eqs(b.type,"mousedown")&&(o=g.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+d.id.A}])))k=g.getNodeMainDom(o).id,j="mousedownNode";if(k.length>0)switch(i=m.getNodeCache(c,k),j){case "mousedownNode":e=x.onMousedownNode;break;case "hoverOverNode":e=x.onHoverOverNode;break;case "hoverOutNode":e=x.onHoverOutNode}return{stop:!1,
+node:i,nodeEventType:j,nodeEventCallback:e,treeEventType:"",treeEventCallback:null}});m.addInitRoot(function(b){var b=m.getRoot(b),a=m.getRoots();b.curEditNode=null;b.curEditInput=null;b.curHoverNode=null;b.dragFlag=0;b.dragNodeShowBefore=[];b.dragMaskList=[];a.showHoverDom=!0});m.addZTreeTools(function(b,a){a.cancelEditName=function(a){m.getRoot(this.setting).curEditNode&&f.cancelCurEditNode(this.setting,a?a:null,!0)};a.copyNode=function(a,b,k,i){if(!b)return null;if(a&&!a.isParent&&this.setting.data.keep.leaf&&
+k===d.move.TYPE_INNER)return null;var j=this,e=g.clone(b);if(!a)a=null,k=d.move.TYPE_INNER;k==d.move.TYPE_INNER?(b=function(){f.addNodes(j.setting,a,[e],i)},g.canAsync(this.setting,a)?f.asyncNode(this.setting,a,i,b):b()):(f.addNodes(this.setting,a.parentNode,[e],i),f.moveNode(this.setting,a,e,k,!1,i));return e};a.editName=function(a){a&&a.tId&&a===m.getNodeCache(this.setting,a.tId)&&(a.parentTId&&f.expandCollapseParentNode(this.setting,a.getParentNode(),!0),f.editNode(this.setting,a))};a.moveNode=
+function(a,b,k,i){function j(){f.moveNode(e.setting,a,b,k,!1,i)}if(!b)return b;if(a&&!a.isParent&&this.setting.data.keep.leaf&&k===d.move.TYPE_INNER)return null;else if(a&&(b.parentTId==a.tId&&k==d.move.TYPE_INNER||o(b,this.setting).find("#"+a.tId).length>0))return null;else a||(a=null);var e=this;g.canAsync(this.setting,a)&&k===d.move.TYPE_INNER?f.asyncNode(this.setting,a,i,j):j();return b};a.setEditable=function(a){this.setting.edit.enable=a;return this.refresh()}});var N=f.cancelPreSelectedNode;
+f.cancelPreSelectedNode=function(b,a){for(var c=m.getRoot(b).curSelectedList,d=0,g=c.length;d<g;d++)if(!a||a===c[d])if(f.removeTreeDom(b,c[d]),a)break;N&&N.apply(f,arguments)};var O=f.createNodes;f.createNodes=function(b,a,c,d){O&&O.apply(f,arguments);c&&f.repairParentChkClassWithSelf&&f.repairParentChkClassWithSelf(b,d)};var V=f.makeNodeUrl;f.makeNodeUrl=function(b,a){return b.edit.enable?null:V.apply(f,arguments)};var L=f.removeNode;f.removeNode=function(b,a){var c=m.getRoot(b);if(c.curEditNode===
+a)c.curEditNode=null;L&&L.apply(f,arguments)};var P=f.selectNode;f.selectNode=function(b,a,c){var d=m.getRoot(b);if(m.isSelectedNode(b,a)&&d.curEditNode==a&&a.editNameFlag)return!1;P&&P.apply(f,arguments);f.addHoverDom(b,a);return!0};var Q=g.uCanDo;g.uCanDo=function(b,a){var c=m.getRoot(b);if(a&&(g.eqs(a.type,"mouseover")||g.eqs(a.type,"mouseout")||g.eqs(a.type,"mousedown")||g.eqs(a.type,"mouseup")))return!0;if(c.curEditNode)f.editNodeBlur=!1,c.curEditInput.focus();return!c.curEditNode&&(Q?Q.apply(f,
+arguments):!0)}})(jQuery);
+
diff --git a/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.core.js b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.core.js
new file mode 100755
index 00000000..7dd93c6b
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.core.js
@@ -0,0 +1,1684 @@
+/*
+ * JQuery zTree core v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function($){
+ var settings = {}, roots = {}, caches = {},
+ //default consts of core
+ _consts = {
+ className: {
+ BUTTON: "button",
+ LEVEL: "level",
+ ICO_LOADING: "ico_loading",
+ SWITCH: "switch"
+ },
+ event: {
+ NODECREATED: "ztree_nodeCreated",
+ CLICK: "ztree_click",
+ EXPAND: "ztree_expand",
+ COLLAPSE: "ztree_collapse",
+ ASYNC_SUCCESS: "ztree_async_success",
+ ASYNC_ERROR: "ztree_async_error",
+ REMOVE: "ztree_remove"
+ },
+ id: {
+ A: "_a",
+ ICON: "_ico",
+ SPAN: "_span",
+ SWITCH: "_switch",
+ UL: "_ul"
+ },
+ line: {
+ ROOT: "root",
+ ROOTS: "roots",
+ CENTER: "center",
+ BOTTOM: "bottom",
+ NOLINE: "noline",
+ LINE: "line"
+ },
+ folder: {
+ OPEN: "open",
+ CLOSE: "close",
+ DOCU: "docu"
+ },
+ node: {
+ CURSELECTED: "curSelectedNode"
+ }
+ },
+ //default setting of core
+ _setting = {
+ treeId: "",
+ treeObj: null,
+ view: {
+ addDiyDom: null,
+ autoCancelSelected: true,
+ dblClickExpand: true,
+ expandSpeed: "fast",
+ fontCss: {},
+ nameIsHTML: false,
+ selectedMulti: true,
+ showIcon: true,
+ showLine: true,
+ showTitle: true,
+ txtSelectedEnable: false
+ },
+ data: {
+ key: {
+ children: "children",
+ name: "name",
+ title: "",
+ url: "url"
+ },
+ simpleData: {
+ enable: false,
+ idKey: "id",
+ pIdKey: "pId",
+ rootPId: null
+ },
+ keep: {
+ parent: false,
+ leaf: false
+ }
+ },
+ async: {
+ enable: false,
+ contentType: "application/x-www-form-urlencoded",
+ type: "post",
+ dataType: "text",
+ url: "",
+ autoParam: [],
+ otherParam: [],
+ dataFilter: null
+ },
+ callback: {
+ beforeAsync:null,
+ beforeClick:null,
+ beforeDblClick:null,
+ beforeRightClick:null,
+ beforeMouseDown:null,
+ beforeMouseUp:null,
+ beforeExpand:null,
+ beforeCollapse:null,
+ beforeRemove:null,
+
+ onAsyncError:null,
+ onAsyncSuccess:null,
+ onNodeCreated:null,
+ onClick:null,
+ onDblClick:null,
+ onRightClick:null,
+ onMouseDown:null,
+ onMouseUp:null,
+ onExpand:null,
+ onCollapse:null,
+ onRemove:null
+ }
+ },
+ //default root of core
+ //zTree use root to save full data
+ _initRoot = function (setting) {
+ var r = data.getRoot(setting);
+ if (!r) {
+ r = {};
+ data.setRoot(setting, r);
+ }
+ r[setting.data.key.children] = [];
+ r.expandTriggerFlag = false;
+ r.curSelectedList = [];
+ r.noSelection = true;
+ r.createdNodes = [];
+ r.zId = 0;
+ r._ver = (new Date()).getTime();
+ },
+ //default cache of core
+ _initCache = function(setting) {
+ var c = data.getCache(setting);
+ if (!c) {
+ c = {};
+ data.setCache(setting, c);
+ }
+ c.nodes = [];
+ c.doms = [];
+ },
+ //default bindEvent of core
+ _bindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.bind(c.NODECREATED, function (event, treeId, node) {
+ tools.apply(setting.callback.onNodeCreated, [event, treeId, node]);
+ });
+
+ o.bind(c.CLICK, function (event, srcEvent, treeId, node, clickFlag) {
+ tools.apply(setting.callback.onClick, [srcEvent, treeId, node, clickFlag]);
+ });
+
+ o.bind(c.EXPAND, function (event, treeId, node) {
+ tools.apply(setting.callback.onExpand, [event, treeId, node]);
+ });
+
+ o.bind(c.COLLAPSE, function (event, treeId, node) {
+ tools.apply(setting.callback.onCollapse, [event, treeId, node]);
+ });
+
+ o.bind(c.ASYNC_SUCCESS, function (event, treeId, node, msg) {
+ tools.apply(setting.callback.onAsyncSuccess, [event, treeId, node, msg]);
+ });
+
+ o.bind(c.ASYNC_ERROR, function (event, treeId, node, XMLHttpRequest, textStatus, errorThrown) {
+ tools.apply(setting.callback.onAsyncError, [event, treeId, node, XMLHttpRequest, textStatus, errorThrown]);
+ });
+
+ o.bind(c.REMOVE, function (event, treeId, treeNode) {
+ tools.apply(setting.callback.onRemove, [event, treeId, treeNode]);
+ });
+ },
+ _unbindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.unbind(c.NODECREATED)
+ .unbind(c.CLICK)
+ .unbind(c.EXPAND)
+ .unbind(c.COLLAPSE)
+ .unbind(c.ASYNC_SUCCESS)
+ .unbind(c.ASYNC_ERROR)
+ .unbind(c.REMOVE);
+ },
+ //default event proxy of core
+ _eventProxy = function(event) {
+ var target = event.target,
+ setting = data.getSetting(event.data.treeId),
+ tId = "", node = null,
+ nodeEventType = "", treeEventType = "",
+ nodeEventCallback = null, treeEventCallback = null,
+ tmp = null;
+
+ if (tools.eqs(event.type, "mousedown")) {
+ treeEventType = "mousedown";
+ } else if (tools.eqs(event.type, "mouseup")) {
+ treeEventType = "mouseup";
+ } else if (tools.eqs(event.type, "contextmenu")) {
+ treeEventType = "contextmenu";
+ } else if (tools.eqs(event.type, "click")) {
+ if (tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.SWITCH) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "switchNode";
+ } else {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "clickNode";
+ }
+ }
+ } else if (tools.eqs(event.type, "dblclick")) {
+ treeEventType = "dblclick";
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "switchNode";
+ }
+ }
+ if (treeEventType.length > 0 && tId.length == 0) {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {tId = tools.getNodeMainDom(tmp).id;}
+ }
+ // event to node
+ if (tId.length>0) {
+ node = data.getNodeCache(setting, tId);
+ switch (nodeEventType) {
+ case "switchNode" :
+ if (!node.isParent) {
+ nodeEventType = "";
+ } else if (tools.eqs(event.type, "click")
+ || (tools.eqs(event.type, "dblclick") && tools.apply(setting.view.dblClickExpand, [setting.treeId, node], setting.view.dblClickExpand))) {
+ nodeEventCallback = handler.onSwitchNode;
+ } else {
+ nodeEventType = "";
+ }
+ break;
+ case "clickNode" :
+ nodeEventCallback = handler.onClickNode;
+ break;
+ }
+ }
+ // event to zTree
+ switch (treeEventType) {
+ case "mousedown" :
+ treeEventCallback = handler.onZTreeMousedown;
+ break;
+ case "mouseup" :
+ treeEventCallback = handler.onZTreeMouseup;
+ break;
+ case "dblclick" :
+ treeEventCallback = handler.onZTreeDblclick;
+ break;
+ case "contextmenu" :
+ treeEventCallback = handler.onZTreeContextmenu;
+ break;
+ }
+ var proxyResult = {
+ stop: false,
+ node: node,
+ nodeEventType: nodeEventType,
+ nodeEventCallback: nodeEventCallback,
+ treeEventType: treeEventType,
+ treeEventCallback: treeEventCallback
+ };
+ return proxyResult
+ },
+ //default init node of core
+ _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
+ if (!n) return;
+ var r = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ n.level = level;
+ n.tId = setting.treeId + "_" + (++r.zId);
+ n.parentTId = parentNode ? parentNode.tId : null;
+ n.open = (typeof n.open == "string") ? tools.eqs(n.open, "true") : !!n.open;
+ if (n[childKey] && n[childKey].length > 0) {
+ n.isParent = true;
+ n.zAsync = true;
+ } else {
+ n.isParent = (typeof n.isParent == "string") ? tools.eqs(n.isParent, "true") : !!n.isParent;
+ n.open = (n.isParent && !setting.async.enable) ? n.open : false;
+ n.zAsync = !n.isParent;
+ }
+ n.isFirstNode = isFirstNode;
+ n.isLastNode = isLastNode;
+ n.getParentNode = function() {return data.getNodeCache(setting, n.parentTId);};
+ n.getPreNode = function() {return data.getPreNode(setting, n);};
+ n.getNextNode = function() {return data.getNextNode(setting, n);};
+ n.isAjaxing = false;
+ data.fixPIdKeyValue(setting, n);
+ },
+ _init = {
+ bind: [_bindEvent],
+ unbind: [_unbindEvent],
+ caches: [_initCache],
+ nodes: [_initNode],
+ proxys: [_eventProxy],
+ roots: [_initRoot],
+ beforeA: [],
+ afterA: [],
+ innerBeforeA: [],
+ innerAfterA: [],
+ zTreeTools: []
+ },
+ //method of operate data
+ data = {
+ addNodeCache: function(setting, node) {
+ data.getCache(setting).nodes[data.getNodeCacheId(node.tId)] = node;
+ },
+ getNodeCacheId: function(tId) {
+ return tId.substring(tId.lastIndexOf("_")+1);
+ },
+ addAfterA: function(afterA) {
+ _init.afterA.push(afterA);
+ },
+ addBeforeA: function(beforeA) {
+ _init.beforeA.push(beforeA);
+ },
+ addInnerAfterA: function(innerAfterA) {
+ _init.innerAfterA.push(innerAfterA);
+ },
+ addInnerBeforeA: function(innerBeforeA) {
+ _init.innerBeforeA.push(innerBeforeA);
+ },
+ addInitBind: function(bindEvent) {
+ _init.bind.push(bindEvent);
+ },
+ addInitUnBind: function(unbindEvent) {
+ _init.unbind.push(unbindEvent);
+ },
+ addInitCache: function(initCache) {
+ _init.caches.push(initCache);
+ },
+ addInitNode: function(initNode) {
+ _init.nodes.push(initNode);
+ },
+ addInitProxy: function(initProxy, isFirst) {
+ if (!!isFirst) {
+ _init.proxys.splice(0,0,initProxy);
+ } else {
+ _init.proxys.push(initProxy);
+ }
+ },
+ addInitRoot: function(initRoot) {
+ _init.roots.push(initRoot);
+ },
+ addNodesData: function(setting, parentNode, nodes) {
+ var childKey = setting.data.key.children;
+ if (!parentNode[childKey]) parentNode[childKey] = [];
+ if (parentNode[childKey].length > 0) {
+ parentNode[childKey][parentNode[childKey].length - 1].isLastNode = false;
+ view.setNodeLineIcos(setting, parentNode[childKey][parentNode[childKey].length - 1]);
+ }
+ parentNode.isParent = true;
+ parentNode[childKey] = parentNode[childKey].concat(nodes);
+ },
+ addSelectedNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ if (!data.isSelectedNode(setting, node)) {
+ root.curSelectedList.push(node);
+ }
+ },
+ addCreatedNode: function(setting, node) {
+ if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) {
+ var root = data.getRoot(setting);
+ root.createdNodes.push(node);
+ }
+ },
+ addZTreeTools: function(zTreeTools) {
+ _init.zTreeTools.push(zTreeTools);
+ },
+ exSetting: function(s) {
+ $.extend(true, _setting, s);
+ },
+ fixPIdKeyValue: function(setting, node) {
+ if (setting.data.simpleData.enable) {
+ node[setting.data.simpleData.pIdKey] = node.parentTId ? node.getParentNode()[setting.data.simpleData.idKey] : setting.data.simpleData.rootPId;
+ }
+ },
+ getAfterA: function(setting, node, array) {
+ for (var i=0, j=_init.afterA.length; i<j; i++) {
+ _init.afterA[i].apply(this, arguments);
+ }
+ },
+ getBeforeA: function(setting, node, array) {
+ for (var i=0, j=_init.beforeA.length; i<j; i++) {
+ _init.beforeA[i].apply(this, arguments);
+ }
+ },
+ getInnerAfterA: function(setting, node, array) {
+ for (var i=0, j=_init.innerAfterA.length; i<j; i++) {
+ _init.innerAfterA[i].apply(this, arguments);
+ }
+ },
+ getInnerBeforeA: function(setting, node, array) {
+ for (var i=0, j=_init.innerBeforeA.length; i<j; i++) {
+ _init.innerBeforeA[i].apply(this, arguments);
+ }
+ },
+ getCache: function(setting) {
+ return caches[setting.treeId];
+ },
+ getNextNode: function(setting, node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ p = node.parentTId ? node.getParentNode() : data.getRoot(setting);
+ for (var i=0, l=p[childKey].length-1; i<=l; i++) {
+ if (p[childKey][i] === node) {
+ return (i==l ? null : p[childKey][i+1]);
+ }
+ }
+ return null;
+ },
+ getNodeByParam: function(setting, nodes, key, value) {
+ if (!nodes || !key) return null;
+ var childKey = setting.data.key.children;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i][key] == value) {
+ return nodes[i];
+ }
+ var tmp = data.getNodeByParam(setting, nodes[i][childKey], key, value);
+ if (tmp) return tmp;
+ }
+ return null;
+ },
+ getNodeCache: function(setting, tId) {
+ if (!tId) return null;
+ var n = caches[setting.treeId].nodes[data.getNodeCacheId(tId)];
+ return n ? n : null;
+ },
+ getNodeName: function(setting, node) {
+ var nameKey = setting.data.key.name;
+ return "" + node[nameKey];
+ },
+ getNodeTitle: function(setting, node) {
+ var t = setting.data.key.title === "" ? setting.data.key.name : setting.data.key.title;
+ return "" + node[t];
+ },
+ getNodes: function(setting) {
+ return data.getRoot(setting)[setting.data.key.children];
+ },
+ getNodesByParam: function(setting, nodes, key, value) {
+ if (!nodes || !key) return [];
+ var childKey = setting.data.key.children,
+ result = [];
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i][key] == value) {
+ result.push(nodes[i]);
+ }
+ result = result.concat(data.getNodesByParam(setting, nodes[i][childKey], key, value));
+ }
+ return result;
+ },
+ getNodesByParamFuzzy: function(setting, nodes, key, value) {
+ if (!nodes || !key) return [];
+ var childKey = setting.data.key.children,
+ result = [];
+ value = value.toLowerCase();
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (typeof nodes[i][key] == "string" && nodes[i][key].toLowerCase().indexOf(value)>-1) {
+ result.push(nodes[i]);
+ }
+ result = result.concat(data.getNodesByParamFuzzy(setting, nodes[i][childKey], key, value));
+ }
+ return result;
+ },
+ getNodesByFilter: function(setting, nodes, filter, isSingle, invokeParam) {
+ if (!nodes) return (isSingle ? null : []);
+ var childKey = setting.data.key.children,
+ result = isSingle ? null : [];
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (tools.apply(filter, [nodes[i], invokeParam], false)) {
+ if (isSingle) {return nodes[i];}
+ result.push(nodes[i]);
+ }
+ var tmpResult = data.getNodesByFilter(setting, nodes[i][childKey], filter, isSingle, invokeParam);
+ if (isSingle && !!tmpResult) {return tmpResult;}
+ result = isSingle ? tmpResult : result.concat(tmpResult);
+ }
+ return result;
+ },
+ getPreNode: function(setting, node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ p = node.parentTId ? node.getParentNode() : data.getRoot(setting);
+ for (var i=0, l=p[childKey].length; i<l; i++) {
+ if (p[childKey][i] === node) {
+ return (i==0 ? null : p[childKey][i-1]);
+ }
+ }
+ return null;
+ },
+ getRoot: function(setting) {
+ return setting ? roots[setting.treeId] : null;
+ },
+ getRoots: function() {
+ return roots;
+ },
+ getSetting: function(treeId) {
+ return settings[treeId];
+ },
+ getSettings: function() {
+ return settings;
+ },
+ getZTreeTools: function(treeId) {
+ var r = this.getRoot(this.getSetting(treeId));
+ return r ? r.treeTools : null;
+ },
+ initCache: function(setting) {
+ for (var i=0, j=_init.caches.length; i<j; i++) {
+ _init.caches[i].apply(this, arguments);
+ }
+ },
+ initNode: function(setting, level, node, parentNode, preNode, nextNode) {
+ for (var i=0, j=_init.nodes.length; i<j; i++) {
+ _init.nodes[i].apply(this, arguments);
+ }
+ },
+ initRoot: function(setting) {
+ for (var i=0, j=_init.roots.length; i<j; i++) {
+ _init.roots[i].apply(this, arguments);
+ }
+ },
+ isSelectedNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ for (var i=0, j=root.curSelectedList.length; i<j; i++) {
+ if(node === root.curSelectedList[i]) return true;
+ }
+ return false;
+ },
+ removeNodeCache: function(setting, node) {
+ var childKey = setting.data.key.children;
+ if (node[childKey]) {
+ for (var i=0, l=node[childKey].length; i<l; i++) {
+ arguments.callee(setting, node[childKey][i]);
+ }
+ }
+ data.getCache(setting).nodes[data.getNodeCacheId(node.tId)] = null;
+ },
+ removeSelectedNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ for (var i=0, j=root.curSelectedList.length; i<j; i++) {
+ if(node === root.curSelectedList[i] || !data.getNodeCache(setting, root.curSelectedList[i].tId)) {
+ root.curSelectedList.splice(i, 1);
+ i--;j--;
+ }
+ }
+ },
+ setCache: function(setting, cache) {
+ caches[setting.treeId] = cache;
+ },
+ setRoot: function(setting, root) {
+ roots[setting.treeId] = root;
+ },
+ setZTreeTools: function(setting, zTreeTools) {
+ for (var i=0, j=_init.zTreeTools.length; i<j; i++) {
+ _init.zTreeTools[i].apply(this, arguments);
+ }
+ },
+ transformToArrayFormat: function (setting, nodes) {
+ if (!nodes) return [];
+ var childKey = setting.data.key.children,
+ r = [];
+ if (tools.isArray(nodes)) {
+ for (var i=0, l=nodes.length; i<l; i++) {
+ r.push(nodes[i]);
+ if (nodes[i][childKey])
+ r = r.concat(data.transformToArrayFormat(setting, nodes[i][childKey]));
+ }
+ } else {
+ r.push(nodes);
+ if (nodes[childKey])
+ r = r.concat(data.transformToArrayFormat(setting, nodes[childKey]));
+ }
+ return r;
+ },
+ transformTozTreeFormat: function(setting, sNodes) {
+ var i,l,
+ key = setting.data.simpleData.idKey,
+ parentKey = setting.data.simpleData.pIdKey,
+ childKey = setting.data.key.children;
+ if (!key || key=="" || !sNodes) return [];
+
+ if (tools.isArray(sNodes)) {
+ var r = [];
+ var tmpMap = [];
+ for (i=0, l=sNodes.length; i<l; i++) {
+ tmpMap[sNodes[i][key]] = sNodes[i];
+ }
+ for (i=0, l=sNodes.length; i<l; i++) {
+ if (tmpMap[sNodes[i][parentKey]] && sNodes[i][key] != sNodes[i][parentKey]) {
+ if (!tmpMap[sNodes[i][parentKey]][childKey])
+ tmpMap[sNodes[i][parentKey]][childKey] = [];
+ tmpMap[sNodes[i][parentKey]][childKey].push(sNodes[i]);
+ } else {
+ r.push(sNodes[i]);
+ }
+ }
+ return r;
+ }else {
+ return [sNodes];
+ }
+ }
+ },
+ //method of event proxy
+ event = {
+ bindEvent: function(setting) {
+ for (var i=0, j=_init.bind.length; i<j; i++) {
+ _init.bind[i].apply(this, arguments);
+ }
+ },
+ unbindEvent: function(setting) {
+ for (var i=0, j=_init.unbind.length; i<j; i++) {
+ _init.unbind[i].apply(this, arguments);
+ }
+ },
+ bindTree: function(setting) {
+ var eventParam = {
+ treeId: setting.treeId
+ },
+ o = setting.treeObj;
+ if (!setting.view.txtSelectedEnable) {
+ // for can't select text
+ o.bind('selectstart', function(e){
+ var node
+ var n = e.originalEvent.srcElement.nodeName.toLowerCase();
+ return (n === "input" || n === "textarea" );
+ }).css({
+ "-moz-user-select":"-moz-none"
+ });
+ }
+ o.bind('click', eventParam, event.proxy);
+ o.bind('dblclick', eventParam, event.proxy);
+ o.bind('mouseover', eventParam, event.proxy);
+ o.bind('mouseout', eventParam, event.proxy);
+ o.bind('mousedown', eventParam, event.proxy);
+ o.bind('mouseup', eventParam, event.proxy);
+ o.bind('contextmenu', eventParam, event.proxy);
+ },
+ unbindTree: function(setting) {
+ var o = setting.treeObj;
+ o.unbind('click', event.proxy)
+ .unbind('dblclick', event.proxy)
+ .unbind('mouseover', event.proxy)
+ .unbind('mouseout', event.proxy)
+ .unbind('mousedown', event.proxy)
+ .unbind('mouseup', event.proxy)
+ .unbind('contextmenu', event.proxy);
+ },
+ doProxy: function(e) {
+ var results = [];
+ for (var i=0, j=_init.proxys.length; i<j; i++) {
+ var proxyResult = _init.proxys[i].apply(this, arguments);
+ results.push(proxyResult);
+ if (proxyResult.stop) {
+ break;
+ }
+ }
+ return results;
+ },
+ proxy: function(e) {
+ var setting = data.getSetting(e.data.treeId);
+ if (!tools.uCanDo(setting, e)) return true;
+ var results = event.doProxy(e),
+ r = true, x = false;
+ for (var i=0, l=results.length; i<l; i++) {
+ var proxyResult = results[i];
+ if (proxyResult.nodeEventCallback) {
+ x = true;
+ r = proxyResult.nodeEventCallback.apply(proxyResult, [e, proxyResult.node]) && r;
+ }
+ if (proxyResult.treeEventCallback) {
+ x = true;
+ r = proxyResult.treeEventCallback.apply(proxyResult, [e, proxyResult.node]) && r;
+ }
+ }
+ return r;
+ }
+ },
+ //method of event handler
+ handler = {
+ onSwitchNode: function (event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (node.open) {
+ if (tools.apply(setting.callback.beforeCollapse, [setting.treeId, node], true) == false) return true;
+ data.getRoot(setting).expandTriggerFlag = true;
+ view.switchNode(setting, node);
+ } else {
+ if (tools.apply(setting.callback.beforeExpand, [setting.treeId, node], true) == false) return true;
+ data.getRoot(setting).expandTriggerFlag = true;
+ view.switchNode(setting, node);
+ }
+ return true;
+ },
+ onClickNode: function (event, node) {
+ var setting = data.getSetting(event.data.treeId),
+ clickFlag = ( (setting.view.autoCancelSelected && (event.ctrlKey || event.metaKey)) && data.isSelectedNode(setting, node)) ? 0 : (setting.view.autoCancelSelected && (event.ctrlKey || event.metaKey) && setting.view.selectedMulti) ? 2 : 1;
+ if (tools.apply(setting.callback.beforeClick, [setting.treeId, node, clickFlag], true) == false) return true;
+ if (clickFlag === 0) {
+ view.cancelPreSelectedNode(setting, node);
+ } else {
+ view.selectNode(setting, node, clickFlag === 2);
+ }
+ setting.treeObj.trigger(consts.event.CLICK, [event, setting.treeId, node, clickFlag]);
+ return true;
+ },
+ onZTreeMousedown: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeMouseDown, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onMouseDown, [event, setting.treeId, node]);
+ }
+ return true;
+ },
+ onZTreeMouseup: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeMouseUp, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onMouseUp, [event, setting.treeId, node]);
+ }
+ return true;
+ },
+ onZTreeDblclick: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeDblClick, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onDblClick, [event, setting.treeId, node]);
+ }
+ return true;
+ },
+ onZTreeContextmenu: function(event, node) {
+ var setting = data.getSetting(event.data.treeId);
+ if (tools.apply(setting.callback.beforeRightClick, [setting.treeId, node], true)) {
+ tools.apply(setting.callback.onRightClick, [event, setting.treeId, node]);
+ }
+ return (typeof setting.callback.onRightClick) != "function";
+ }
+ },
+ //method of tools for zTree
+ tools = {
+ apply: function(fun, param, defaultValue) {
+ if ((typeof fun) == "function") {
+ return fun.apply(zt, param?param:[]);
+ }
+ return defaultValue;
+ },
+ canAsync: function(setting, node) {
+ var childKey = setting.data.key.children;
+ return (setting.async.enable && node && node.isParent && !(node.zAsync || (node[childKey] && node[childKey].length > 0)));
+ },
+ clone: function (obj){
+ if (obj === null) return null;
+ var o = tools.isArray(obj) ? [] : {};
+ for(var i in obj){
+ o[i] = (obj[i] instanceof Date) ? new Date(obj[i].getTime()) : (typeof obj[i] === "object" ? arguments.callee(obj[i]) : obj[i]);
+ }
+ return o;
+ },
+ eqs: function(str1, str2) {
+ return str1.toLowerCase() === str2.toLowerCase();
+ },
+ isArray: function(arr) {
+ return Object.prototype.toString.apply(arr) === "[object Array]";
+ },
+ $: function(node, exp, setting) {
+ if (!!exp && typeof exp != "string") {
+ setting = exp;
+ exp = "";
+ }
+ if (typeof node == "string") {
+ return $(node, setting ? setting.treeObj.get(0).ownerDocument : null);
+ } else {
+ return $("#" + node.tId + exp, setting ? setting.treeObj : null);
+ }
+ },
+ getMDom: function (setting, curDom, targetExpr) {
+ if (!curDom) return null;
+ while (curDom && curDom.id !== setting.treeId) {
+ for (var i=0, l=targetExpr.length; curDom.tagName && i<l; i++) {
+ if (tools.eqs(curDom.tagName, targetExpr[i].tagName) && curDom.getAttribute(targetExpr[i].attrName) !== null) {
+ return curDom;
+ }
+ }
+ curDom = curDom.parentNode;
+ }
+ return null;
+ },
+ getNodeMainDom:function(target) {
+ return ($(target).parent("li").get(0) || $(target).parentsUntil("li").parent().get(0));
+ },
+ isChildOrSelf: function(dom, parentId) {
+ return ( $(dom).closest("#" + parentId).length> 0 );
+ },
+ uCanDo: function(setting, e) {
+ return true;
+ }
+ },
+ //method of operate ztree dom
+ view = {
+ addNodes: function(setting, parentNode, newNodes, isSilent) {
+ if (setting.data.keep.leaf && parentNode && !parentNode.isParent) {
+ return;
+ }
+ if (!tools.isArray(newNodes)) {
+ newNodes = [newNodes];
+ }
+ if (setting.data.simpleData.enable) {
+ newNodes = data.transformTozTreeFormat(setting, newNodes);
+ }
+ if (parentNode) {
+ var target_switchObj = $$(parentNode, consts.id.SWITCH, setting),
+ target_icoObj = $$(parentNode, consts.id.ICON, setting),
+ target_ulObj = $$(parentNode, consts.id.UL, setting);
+
+ if (!parentNode.open) {
+ view.replaceSwitchClass(parentNode, target_switchObj, consts.folder.CLOSE);
+ view.replaceIcoClass(parentNode, target_icoObj, consts.folder.CLOSE);
+ parentNode.open = false;
+ target_ulObj.css({
+ "display": "none"
+ });
+ }
+
+ data.addNodesData(setting, parentNode, newNodes);
+ view.createNodes(setting, parentNode.level + 1, newNodes, parentNode);
+ if (!isSilent) {
+ view.expandCollapseParentNode(setting, parentNode, true);
+ }
+ } else {
+ data.addNodesData(setting, data.getRoot(setting), newNodes);
+ view.createNodes(setting, 0, newNodes, null);
+ }
+ },
+ appendNodes: function(setting, level, nodes, parentNode, initFlag, openFlag) {
+ if (!nodes) return [];
+ var html = [],
+ childKey = setting.data.key.children;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ var node = nodes[i];
+ if (initFlag) {
+ var tmpPNode = (parentNode) ? parentNode: data.getRoot(setting),
+ tmpPChild = tmpPNode[childKey],
+ isFirstNode = ((tmpPChild.length == nodes.length) && (i == 0)),
+ isLastNode = (i == (nodes.length - 1));
+ data.initNode(setting, level, node, parentNode, isFirstNode, isLastNode, openFlag);
+ data.addNodeCache(setting, node);
+ }
+
+ var childHtml = [];
+ if (node[childKey] && node[childKey].length > 0) {
+ //make child html first, because checkType
+ childHtml = view.appendNodes(setting, level + 1, node[childKey], node, initFlag, openFlag && node.open);
+ }
+ if (openFlag) {
+
+ view.makeDOMNodeMainBefore(html, setting, node);
+ view.makeDOMNodeLine(html, setting, node);
+ data.getBeforeA(setting, node, html);
+ view.makeDOMNodeNameBefore(html, setting, node);
+ data.getInnerBeforeA(setting, node, html);
+ view.makeDOMNodeIcon(html, setting, node);
+ data.getInnerAfterA(setting, node, html);
+ view.makeDOMNodeNameAfter(html, setting, node);
+ data.getAfterA(setting, node, html);
+ if (node.isParent && node.open) {
+ view.makeUlHtml(setting, node, html, childHtml.join(''));
+ }
+ view.makeDOMNodeMainAfter(html, setting, node);
+ data.addCreatedNode(setting, node);
+ }
+ }
+ return html;
+ },
+ appendParentULDom: function(setting, node) {
+ var html = [],
+ nObj = $$(node, setting);
+ if (!nObj.get(0) && !!node.parentTId) {
+ view.appendParentULDom(setting, node.getParentNode());
+ nObj = $$(node, setting);
+ }
+ var ulObj = $$(node, consts.id.UL, setting);
+ if (ulObj.get(0)) {
+ ulObj.remove();
+ }
+ var childKey = setting.data.key.children,
+ childHtml = view.appendNodes(setting, node.level+1, node[childKey], node, false, true);
+ view.makeUlHtml(setting, node, html, childHtml.join(''));
+ nObj.append(html.join(''));
+ },
+ asyncNode: function(setting, node, isSilent, callback) {
+ var i, l;
+ if (node && !node.isParent) {
+ tools.apply(callback);
+ return false;
+ } else if (node && node.isAjaxing) {
+ return false;
+ } else if (tools.apply(setting.callback.beforeAsync, [setting.treeId, node], true) == false) {
+ tools.apply(callback);
+ return false;
+ }
+ if (node) {
+ node.isAjaxing = true;
+ var icoObj = $$(node, consts.id.ICON, setting);
+ icoObj.attr({"style":"", "class":consts.className.BUTTON + " " + consts.className.ICO_LOADING});
+ }
+
+ var tmpParam = {};
+ for (i = 0, l = setting.async.autoParam.length; node && i < l; i++) {
+ var pKey = setting.async.autoParam[i].split("="), spKey = pKey;
+ if (pKey.length>1) {
+ spKey = pKey[1];
+ pKey = pKey[0];
+ }
+ tmpParam[spKey] = node[pKey];
+ }
+ if (tools.isArray(setting.async.otherParam)) {
+ for (i = 0, l = setting.async.otherParam.length; i < l; i += 2) {
+ tmpParam[setting.async.otherParam[i]] = setting.async.otherParam[i + 1];
+ }
+ } else {
+ for (var p in setting.async.otherParam) {
+ tmpParam[p] = setting.async.otherParam[p];
+ }
+ }
+
+ var _tmpV = data.getRoot(setting)._ver;
+ $.ajax({
+ contentType: setting.async.contentType,
+ type: setting.async.type,
+ url: tools.apply(setting.async.url, [setting.treeId, node], setting.async.url),
+ data: tmpParam,
+ dataType: setting.async.dataType,
+ success: function(msg) {
+ if (_tmpV != data.getRoot(setting)._ver) {
+ return;
+ }
+ var newNodes = [];
+ try {
+ if (!msg || msg.length == 0) {
+ newNodes = [];
+ } else if (typeof msg == "string") {
+ newNodes = eval("(" + msg + ")");
+ } else {
+ newNodes = msg;
+ }
+ } catch(err) {
+ newNodes = msg;
+ }
+
+ if (node) {
+ node.isAjaxing = null;
+ node.zAsync = true;
+ }
+ view.setNodeLineIcos(setting, node);
+ if (newNodes && newNodes !== "") {
+ newNodes = tools.apply(setting.async.dataFilter, [setting.treeId, node, newNodes], newNodes);
+ view.addNodes(setting, node, !!newNodes ? tools.clone(newNodes) : [], !!isSilent);
+ } else {
+ view.addNodes(setting, node, [], !!isSilent);
+ }
+ setting.treeObj.trigger(consts.event.ASYNC_SUCCESS, [setting.treeId, node, msg]);
+ tools.apply(callback);
+ },
+ error: function(XMLHttpRequest, textStatus, errorThrown) {
+ if (_tmpV != data.getRoot(setting)._ver) {
+ return;
+ }
+ if (node) node.isAjaxing = null;
+ view.setNodeLineIcos(setting, node);
+ setting.treeObj.trigger(consts.event.ASYNC_ERROR, [setting.treeId, node, XMLHttpRequest, textStatus, errorThrown]);
+ }
+ });
+ return true;
+ },
+ cancelPreSelectedNode: function (setting, node) {
+ var list = data.getRoot(setting).curSelectedList;
+ for (var i=0, j=list.length-1; j>=i; j--) {
+ if (!node || node === list[j]) {
+ $$(list[j], consts.id.A, setting).removeClass(consts.node.CURSELECTED);
+ if (node) {
+ data.removeSelectedNode(setting, node);
+ break;
+ }
+ }
+ }
+ if (!node) data.getRoot(setting).curSelectedList = [];
+ },
+ createNodeCallback: function(setting) {
+ if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) {
+ var root = data.getRoot(setting);
+ while (root.createdNodes.length>0) {
+ var node = root.createdNodes.shift();
+ tools.apply(setting.view.addDiyDom, [setting.treeId, node]);
+ if (!!setting.callback.onNodeCreated) {
+ setting.treeObj.trigger(consts.event.NODECREATED, [setting.treeId, node]);
+ }
+ }
+ }
+ },
+ createNodes: function(setting, level, nodes, parentNode) {
+ if (!nodes || nodes.length == 0) return;
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children,
+ openFlag = !parentNode || parentNode.open || !!$$(parentNode[childKey][0], setting).get(0);
+ root.createdNodes = [];
+ var zTreeHtml = view.appendNodes(setting, level, nodes, parentNode, true, openFlag);
+ if (!parentNode) {
+ setting.treeObj.append(zTreeHtml.join(''));
+ } else {
+ var ulObj = $$(parentNode, consts.id.UL, setting);
+ if (ulObj.get(0)) {
+ ulObj.append(zTreeHtml.join(''));
+ }
+ }
+ view.createNodeCallback(setting);
+ },
+ destroy: function(setting) {
+ if (!setting) return;
+ data.initCache(setting);
+ data.initRoot(setting);
+ event.unbindTree(setting);
+ event.unbindEvent(setting);
+ setting.treeObj.empty();
+ delete settings[setting.treeId];
+ },
+ expandCollapseNode: function(setting, node, expandFlag, animateFlag, callback) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ if (!node) {
+ tools.apply(callback, []);
+ return;
+ }
+ if (root.expandTriggerFlag) {
+ var _callback = callback;
+ callback = function(){
+ if (_callback) _callback();
+ if (node.open) {
+ setting.treeObj.trigger(consts.event.EXPAND, [setting.treeId, node]);
+ } else {
+ setting.treeObj.trigger(consts.event.COLLAPSE, [setting.treeId, node]);
+ }
+ };
+ root.expandTriggerFlag = false;
+ }
+ if (!node.open && node.isParent && ((!$$(node, consts.id.UL, setting).get(0)) || (node[childKey] && node[childKey].length>0 && !$$(node[childKey][0], setting).get(0)))) {
+ view.appendParentULDom(setting, node);
+ view.createNodeCallback(setting);
+ }
+ if (node.open == expandFlag) {
+ tools.apply(callback, []);
+ return;
+ }
+ var ulObj = $$(node, consts.id.UL, setting),
+ switchObj = $$(node, consts.id.SWITCH, setting),
+ icoObj = $$(node, consts.id.ICON, setting);
+
+ if (node.isParent) {
+ node.open = !node.open;
+ if (node.iconOpen && node.iconClose) {
+ icoObj.attr("style", view.makeNodeIcoStyle(setting, node));
+ }
+
+ if (node.open) {
+ view.replaceSwitchClass(node, switchObj, consts.folder.OPEN);
+ view.replaceIcoClass(node, icoObj, consts.folder.OPEN);
+ if (animateFlag == false || setting.view.expandSpeed == "") {
+ ulObj.show();
+ tools.apply(callback, []);
+ } else {
+ if (node[childKey] && node[childKey].length > 0) {
+ ulObj.slideDown(setting.view.expandSpeed, callback);
+ } else {
+ ulObj.show();
+ tools.apply(callback, []);
+ }
+ }
+ } else {
+ view.replaceSwitchClass(node, switchObj, consts.folder.CLOSE);
+ view.replaceIcoClass(node, icoObj, consts.folder.CLOSE);
+ if (animateFlag == false || setting.view.expandSpeed == "" || !(node[childKey] && node[childKey].length > 0)) {
+ ulObj.hide();
+ tools.apply(callback, []);
+ } else {
+ ulObj.slideUp(setting.view.expandSpeed, callback);
+ }
+ }
+ } else {
+ tools.apply(callback, []);
+ }
+ },
+ expandCollapseParentNode: function(setting, node, expandFlag, animateFlag, callback) {
+ if (!node) return;
+ if (!node.parentTId) {
+ view.expandCollapseNode(setting, node, expandFlag, animateFlag, callback);
+ return;
+ } else {
+ view.expandCollapseNode(setting, node, expandFlag, animateFlag);
+ }
+ if (node.parentTId) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), expandFlag, animateFlag, callback);
+ }
+ },
+ expandCollapseSonNode: function(setting, node, expandFlag, animateFlag, callback) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children,
+ treeNodes = (node) ? node[childKey]: root[childKey],
+ selfAnimateSign = (node) ? false : animateFlag,
+ expandTriggerFlag = data.getRoot(setting).expandTriggerFlag;
+ data.getRoot(setting).expandTriggerFlag = false;
+ if (treeNodes) {
+ for (var i = 0, l = treeNodes.length; i < l; i++) {
+ if (treeNodes[i]) view.expandCollapseSonNode(setting, treeNodes[i], expandFlag, selfAnimateSign);
+ }
+ }
+ data.getRoot(setting).expandTriggerFlag = expandTriggerFlag;
+ view.expandCollapseNode(setting, node, expandFlag, animateFlag, callback );
+ },
+ makeDOMNodeIcon: function(html, setting, node) {
+ var nameStr = data.getNodeName(setting, node),
+ name = setting.view.nameIsHTML ? nameStr : nameStr.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
+ html.push("<span id='", node.tId, consts.id.ICON,
+ "' title='' treeNode", consts.id.ICON," class='", view.makeNodeIcoClass(setting, node),
+ "' style='", view.makeNodeIcoStyle(setting, node), "'></span><span id='", node.tId, consts.id.SPAN,
+ "'>",name,"</span>");
+ },
+ makeDOMNodeLine: function(html, setting, node) {
+ html.push("<span id='", node.tId, consts.id.SWITCH, "' title='' class='", view.makeNodeLineClass(setting, node), "' treeNode", consts.id.SWITCH,"></span>");
+ },
+ makeDOMNodeMainAfter: function(html, setting, node) {
+ html.push("</li>");
+ },
+ makeDOMNodeMainBefore: function(html, setting, node) {
+ html.push("<li id='", node.tId, "' class='", consts.className.LEVEL, node.level,"' tabindex='0' hidefocus='true' treenode>");
+ },
+ makeDOMNodeNameAfter: function(html, setting, node) {
+ html.push("</a>");
+ },
+ makeDOMNodeNameBefore: function(html, setting, node) {
+ var title = data.getNodeTitle(setting, node),
+ url = view.makeNodeUrl(setting, node),
+ fontcss = view.makeNodeFontCss(setting, node),
+ fontStyle = [];
+ for (var f in fontcss) {
+ fontStyle.push(f, ":", fontcss[f], ";");
+ }
+ html.push("<a id='", node.tId, consts.id.A, "' class='", consts.className.LEVEL, node.level,"' treeNode", consts.id.A," onclick=\"", (node.click || ''),
+ "\" ", ((url != null && url.length > 0) ? "href='" + url + "'" : ""), " target='",view.makeNodeTarget(node),"' style='", fontStyle.join(''),
+ "'");
+ if (tools.apply(setting.view.showTitle, [setting.treeId, node], setting.view.showTitle) && title) {html.push("title='", title.replace(/'/g,"&#39;").replace(/</g,'&lt;').replace(/>/g,'&gt;'),"'");}
+ html.push(">");
+ },
+ makeNodeFontCss: function(setting, node) {
+ var fontCss = tools.apply(setting.view.fontCss, [setting.treeId, node], setting.view.fontCss);
+ return (fontCss && ((typeof fontCss) != "function")) ? fontCss : {};
+ },
+ makeNodeIcoClass: function(setting, node) {
+ var icoCss = ["ico"];
+ if (!node.isAjaxing) {
+ icoCss[0] = (node.iconSkin ? node.iconSkin + "_" : "") + icoCss[0];
+ if (node.isParent) {
+ icoCss.push(node.open ? consts.folder.OPEN : consts.folder.CLOSE);
+ } else {
+ icoCss.push(consts.folder.DOCU);
+ }
+ }
+ return consts.className.BUTTON + " " + icoCss.join('_');
+ },
+ makeNodeIcoStyle: function(setting, node) {
+ var icoStyle = [];
+ if (!node.isAjaxing) {
+ var icon = (node.isParent && node.iconOpen && node.iconClose) ? (node.open ? node.iconOpen : node.iconClose) : node.icon;
+ if (icon) icoStyle.push("background:url(", icon, ") 0 0 no-repeat;");
+ if (setting.view.showIcon == false || !tools.apply(setting.view.showIcon, [setting.treeId, node], true)) {
+ icoStyle.push("width:0px;height:0px;");
+ }
+ }
+ return icoStyle.join('');
+ },
+ makeNodeLineClass: function(setting, node) {
+ var lineClass = [];
+ if (setting.view.showLine) {
+ if (node.level == 0 && node.isFirstNode && node.isLastNode) {
+ lineClass.push(consts.line.ROOT);
+ } else if (node.level == 0 && node.isFirstNode) {
+ lineClass.push(consts.line.ROOTS);
+ } else if (node.isLastNode) {
+ lineClass.push(consts.line.BOTTOM);
+ } else {
+ lineClass.push(consts.line.CENTER);
+ }
+ } else {
+ lineClass.push(consts.line.NOLINE);
+ }
+ if (node.isParent) {
+ lineClass.push(node.open ? consts.folder.OPEN : consts.folder.CLOSE);
+ } else {
+ lineClass.push(consts.folder.DOCU);
+ }
+ return view.makeNodeLineClassEx(node) + lineClass.join('_');
+ },
+ makeNodeLineClassEx: function(node) {
+ return consts.className.BUTTON + " " + consts.className.LEVEL + node.level + " " + consts.className.SWITCH + " ";
+ },
+ makeNodeTarget: function(node) {
+ return (node.target || "_blank");
+ },
+ makeNodeUrl: function(setting, node) {
+ var urlKey = setting.data.key.url;
+ return node[urlKey] ? node[urlKey] : null;
+ },
+ makeUlHtml: function(setting, node, html, content) {
+ html.push("<ul id='", node.tId, consts.id.UL, "' class='", consts.className.LEVEL, node.level, " ", view.makeUlLineClass(setting, node), "' style='display:", (node.open ? "block": "none"),"'>");
+ html.push(content);
+ html.push("</ul>");
+ },
+ makeUlLineClass: function(setting, node) {
+ return ((setting.view.showLine && !node.isLastNode) ? consts.line.LINE : "");
+ },
+ removeChildNodes: function(setting, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children,
+ nodes = node[childKey];
+ if (!nodes) return;
+
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ data.removeNodeCache(setting, nodes[i]);
+ }
+ data.removeSelectedNode(setting);
+ delete node[childKey];
+
+ if (!setting.data.keep.parent) {
+ node.isParent = false;
+ node.open = false;
+ var tmp_switchObj = $$(node, consts.id.SWITCH, setting),
+ tmp_icoObj = $$(node, consts.id.ICON, setting);
+ view.replaceSwitchClass(node, tmp_switchObj, consts.folder.DOCU);
+ view.replaceIcoClass(node, tmp_icoObj, consts.folder.DOCU);
+ $$(node, consts.id.UL, setting).remove();
+ } else {
+ $$(node, consts.id.UL, setting).empty();
+ }
+ },
+ setFirstNode: function(setting, parentNode) {
+ var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
+ if ( childLength > 0) {
+ parentNode[childKey][0].isFirstNode = true;
+ }
+ },
+ setLastNode: function(setting, parentNode) {
+ var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
+ if ( childLength > 0) {
+ parentNode[childKey][childLength - 1].isLastNode = true;
+ }
+ },
+ removeNode: function(setting, node) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children,
+ parentNode = (node.parentTId) ? node.getParentNode() : root;
+
+ node.isFirstNode = false;
+ node.isLastNode = false;
+ node.getPreNode = function() {return null;};
+ node.getNextNode = function() {return null;};
+
+ if (!data.getNodeCache(setting, node.tId)) {
+ return;
+ }
+
+ $$(node, setting).remove();
+ data.removeNodeCache(setting, node);
+ data.removeSelectedNode(setting, node);
+
+ for (var i = 0, l = parentNode[childKey].length; i < l; i++) {
+ if (parentNode[childKey][i].tId == node.tId) {
+ parentNode[childKey].splice(i, 1);
+ break;
+ }
+ }
+ view.setFirstNode(setting, parentNode);
+ view.setLastNode(setting, parentNode);
+
+ var tmp_ulObj,tmp_switchObj,tmp_icoObj,
+ childLength = parentNode[childKey].length;
+
+ //repair nodes old parent
+ if (!setting.data.keep.parent && childLength == 0) {
+ //old parentNode has no child nodes
+ parentNode.isParent = false;
+ parentNode.open = false;
+ tmp_ulObj = $$(parentNode, consts.id.UL, setting);
+ tmp_switchObj = $$(parentNode, consts.id.SWITCH, setting);
+ tmp_icoObj = $$(parentNode, consts.id.ICON, setting);
+ view.replaceSwitchClass(parentNode, tmp_switchObj, consts.folder.DOCU);
+ view.replaceIcoClass(parentNode, tmp_icoObj, consts.folder.DOCU);
+ tmp_ulObj.css("display", "none");
+
+ } else if (setting.view.showLine && childLength > 0) {
+ //old parentNode has child nodes
+ var newLast = parentNode[childKey][childLength - 1];
+ tmp_ulObj = $$(newLast, consts.id.UL, setting);
+ tmp_switchObj = $$(newLast, consts.id.SWITCH, setting);
+ tmp_icoObj = $$(newLast, consts.id.ICON, setting);
+ if (parentNode == root) {
+ if (parentNode[childKey].length == 1) {
+ //node was root, and ztree has only one root after move node
+ view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.ROOT);
+ } else {
+ var tmp_first_switchObj = $$(parentNode[childKey][0], consts.id.SWITCH, setting);
+ view.replaceSwitchClass(parentNode[childKey][0], tmp_first_switchObj, consts.line.ROOTS);
+ view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.BOTTOM);
+ }
+ } else {
+ view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.BOTTOM);
+ }
+ tmp_ulObj.removeClass(consts.line.LINE);
+ }
+ },
+ replaceIcoClass: function(node, obj, newName) {
+ if (!obj || node.isAjaxing) return;
+ var tmpName = obj.attr("class");
+ if (tmpName == undefined) return;
+ var tmpList = tmpName.split("_");
+ switch (newName) {
+ case consts.folder.OPEN:
+ case consts.folder.CLOSE:
+ case consts.folder.DOCU:
+ tmpList[tmpList.length-1] = newName;
+ break;
+ }
+ obj.attr("class", tmpList.join("_"));
+ },
+ replaceSwitchClass: function(node, obj, newName) {
+ if (!obj) return;
+ var tmpName = obj.attr("class");
+ if (tmpName == undefined) return;
+ var tmpList = tmpName.split("_");
+ switch (newName) {
+ case consts.line.ROOT:
+ case consts.line.ROOTS:
+ case consts.line.CENTER:
+ case consts.line.BOTTOM:
+ case consts.line.NOLINE:
+ tmpList[0] = view.makeNodeLineClassEx(node) + newName;
+ break;
+ case consts.folder.OPEN:
+ case consts.folder.CLOSE:
+ case consts.folder.DOCU:
+ tmpList[1] = newName;
+ break;
+ }
+ obj.attr("class", tmpList.join("_"));
+ if (newName !== consts.folder.DOCU) {
+ obj.removeAttr("disabled");
+ } else {
+ obj.attr("disabled", "disabled");
+ }
+ },
+ selectNode: function(setting, node, addFlag) {
+ if (!addFlag) {
+ view.cancelPreSelectedNode(setting);
+ }
+ $$(node, consts.id.A, setting).addClass(consts.node.CURSELECTED);
+ data.addSelectedNode(setting, node);
+ },
+ setNodeFontCss: function(setting, treeNode) {
+ var aObj = $$(treeNode, consts.id.A, setting),
+ fontCss = view.makeNodeFontCss(setting, treeNode);
+ if (fontCss) {
+ aObj.css(fontCss);
+ }
+ },
+ setNodeLineIcos: function(setting, node) {
+ if (!node) return;
+ var switchObj = $$(node, consts.id.SWITCH, setting),
+ ulObj = $$(node, consts.id.UL, setting),
+ icoObj = $$(node, consts.id.ICON, setting),
+ ulLine = view.makeUlLineClass(setting, node);
+ if (ulLine.length==0) {
+ ulObj.removeClass(consts.line.LINE);
+ } else {
+ ulObj.addClass(ulLine);
+ }
+ switchObj.attr("class", view.makeNodeLineClass(setting, node));
+ if (node.isParent) {
+ switchObj.removeAttr("disabled");
+ } else {
+ switchObj.attr("disabled", "disabled");
+ }
+ icoObj.removeAttr("style");
+ icoObj.attr("style", view.makeNodeIcoStyle(setting, node));
+ icoObj.attr("class", view.makeNodeIcoClass(setting, node));
+ },
+ setNodeName: function(setting, node) {
+ var title = data.getNodeTitle(setting, node),
+ nObj = $$(node, consts.id.SPAN, setting);
+ nObj.empty();
+ if (setting.view.nameIsHTML) {
+ nObj.html(data.getNodeName(setting, node));
+ } else {
+ nObj.text(data.getNodeName(setting, node));
+ }
+ if (tools.apply(setting.view.showTitle, [setting.treeId, node], setting.view.showTitle)) {
+ var aObj = $$(node, consts.id.A, setting);
+ aObj.attr("title", !title ? "" : title);
+ }
+ },
+ setNodeTarget: function(setting, node) {
+ var aObj = $$(node, consts.id.A, setting);
+ aObj.attr("target", view.makeNodeTarget(node));
+ },
+ setNodeUrl: function(setting, node) {
+ var aObj = $$(node, consts.id.A, setting),
+ url = view.makeNodeUrl(setting, node);
+ if (url == null || url.length == 0) {
+ aObj.removeAttr("href");
+ } else {
+ aObj.attr("href", url);
+ }
+ },
+ switchNode: function(setting, node) {
+ if (node.open || !tools.canAsync(setting, node)) {
+ view.expandCollapseNode(setting, node, !node.open);
+ } else if (setting.async.enable) {
+ if (!view.asyncNode(setting, node)) {
+ view.expandCollapseNode(setting, node, !node.open);
+ return;
+ }
+ } else if (node) {
+ view.expandCollapseNode(setting, node, !node.open);
+ }
+ }
+ };
+ // zTree defind
+ $.fn.zTree = {
+ consts : _consts,
+ _z : {
+ tools: tools,
+ view: view,
+ event: event,
+ data: data
+ },
+ getZTreeObj: function(treeId) {
+ var o = data.getZTreeTools(treeId);
+ return o ? o : null;
+ },
+ destroy: function(treeId) {
+ if (!!treeId && treeId.length > 0) {
+ view.destroy(data.getSetting(treeId));
+ } else {
+ for(var s in settings) {
+ view.destroy(settings[s]);
+ }
+ }
+ },
+ init: function(obj, zSetting, zNodes) {
+ var setting = tools.clone(_setting);
+ $.extend(true, setting, zSetting);
+ setting.treeId = obj.attr("id");
+ setting.treeObj = obj;
+ setting.treeObj.empty();
+ settings[setting.treeId] = setting;
+ //For some older browser,(e.g., ie6)
+ if(typeof document.body.style.maxHeight === "undefined") {
+ setting.view.expandSpeed = "";
+ }
+ data.initRoot(setting);
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ zNodes = zNodes ? tools.clone(tools.isArray(zNodes)? zNodes : [zNodes]) : [];
+ if (setting.data.simpleData.enable) {
+ root[childKey] = data.transformTozTreeFormat(setting, zNodes);
+ } else {
+ root[childKey] = zNodes;
+ }
+
+ data.initCache(setting);
+ event.unbindTree(setting);
+ event.bindTree(setting);
+ event.unbindEvent(setting);
+ event.bindEvent(setting);
+
+ var zTreeTools = {
+ setting : setting,
+ addNodes : function(parentNode, newNodes, isSilent) {
+ if (!newNodes) return null;
+ if (!parentNode) parentNode = null;
+ if (parentNode && !parentNode.isParent && setting.data.keep.leaf) return null;
+ var xNewNodes = tools.clone(tools.isArray(newNodes)? newNodes: [newNodes]);
+ function addCallback() {
+ view.addNodes(setting, parentNode, xNewNodes, (isSilent==true));
+ }
+
+ if (tools.canAsync(setting, parentNode)) {
+ view.asyncNode(setting, parentNode, isSilent, addCallback);
+ } else {
+ addCallback();
+ }
+ return xNewNodes;
+ },
+ cancelSelectedNode : function(node) {
+ view.cancelPreSelectedNode(setting, node);
+ },
+ destroy : function() {
+ view.destroy(setting);
+ },
+ expandAll : function(expandFlag) {
+ expandFlag = !!expandFlag;
+ view.expandCollapseSonNode(setting, null, expandFlag, true);
+ return expandFlag;
+ },
+ expandNode : function(node, expandFlag, sonSign, focus, callbackFlag) {
+ if (!node || !node.isParent) return null;
+ if (expandFlag !== true && expandFlag !== false) {
+ expandFlag = !node.open;
+ }
+ callbackFlag = !!callbackFlag;
+
+ if (callbackFlag && expandFlag && (tools.apply(setting.callback.beforeExpand, [setting.treeId, node], true) == false)) {
+ return null;
+ } else if (callbackFlag && !expandFlag && (tools.apply(setting.callback.beforeCollapse, [setting.treeId, node], true) == false)) {
+ return null;
+ }
+ if (expandFlag && node.parentTId) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), expandFlag, false);
+ }
+ if (expandFlag === node.open && !sonSign) {
+ return null;
+ }
+
+ data.getRoot(setting).expandTriggerFlag = callbackFlag;
+ if (!tools.canAsync(setting, node) && sonSign) {
+ view.expandCollapseSonNode(setting, node, expandFlag, true, function() {
+ if (focus !== false) {try{$$(node, setting).focus().blur();}catch(e){}}
+ });
+ } else {
+ node.open = !expandFlag;
+ view.switchNode(this.setting, node);
+ if (focus !== false) {try{$$(node, setting).focus().blur();}catch(e){}}
+ }
+ return expandFlag;
+ },
+ getNodes : function() {
+ return data.getNodes(setting);
+ },
+ getNodeByParam : function(key, value, parentNode) {
+ if (!key) return null;
+ return data.getNodeByParam(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), key, value);
+ },
+ getNodeByTId : function(tId) {
+ return data.getNodeCache(setting, tId);
+ },
+ getNodesByParam : function(key, value, parentNode) {
+ if (!key) return null;
+ return data.getNodesByParam(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), key, value);
+ },
+ getNodesByParamFuzzy : function(key, value, parentNode) {
+ if (!key) return null;
+ return data.getNodesByParamFuzzy(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), key, value);
+ },
+ getNodesByFilter: function(filter, isSingle, parentNode, invokeParam) {
+ isSingle = !!isSingle;
+ if (!filter || (typeof filter != "function")) return (isSingle ? null : []);
+ return data.getNodesByFilter(setting, parentNode?parentNode[setting.data.key.children]:data.getNodes(setting), filter, isSingle, invokeParam);
+ },
+ getNodeIndex : function(node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting);
+ for (var i=0, l = parentNode[childKey].length; i < l; i++) {
+ if (parentNode[childKey][i] == node) return i;
+ }
+ return -1;
+ },
+ getSelectedNodes : function() {
+ var r = [], list = data.getRoot(setting).curSelectedList;
+ for (var i=0, l=list.length; i<l; i++) {
+ r.push(list[i]);
+ }
+ return r;
+ },
+ isSelectedNode : function(node) {
+ return data.isSelectedNode(setting, node);
+ },
+ reAsyncChildNodes : function(parentNode, reloadType, isSilent) {
+ if (!this.setting.async.enable) return;
+ var isRoot = !parentNode;
+ if (isRoot) {
+ parentNode = data.getRoot(setting);
+ }
+ if (reloadType=="refresh") {
+ var childKey = this.setting.data.key.children;
+ for (var i = 0, l = parentNode[childKey] ? parentNode[childKey].length : 0; i < l; i++) {
+ data.removeNodeCache(setting, parentNode[childKey][i]);
+ }
+ data.removeSelectedNode(setting);
+ parentNode[childKey] = [];
+ if (isRoot) {
+ this.setting.treeObj.empty();
+ } else {
+ var ulObj = $$(parentNode, consts.id.UL, setting);
+ ulObj.empty();
+ }
+ }
+ view.asyncNode(this.setting, isRoot? null:parentNode, !!isSilent);
+ },
+ refresh : function() {
+ this.setting.treeObj.empty();
+ var root = data.getRoot(setting),
+ nodes = root[setting.data.key.children]
+ data.initRoot(setting);
+ root[setting.data.key.children] = nodes
+ data.initCache(setting);
+ view.createNodes(setting, 0, root[setting.data.key.children]);
+ },
+ removeChildNodes : function(node) {
+ if (!node) return null;
+ var childKey = setting.data.key.children,
+ nodes = node[childKey];
+ view.removeChildNodes(setting, node);
+ return nodes ? nodes : null;
+ },
+ removeNode : function(node, callbackFlag) {
+ if (!node) return;
+ callbackFlag = !!callbackFlag;
+ if (callbackFlag && tools.apply(setting.callback.beforeRemove, [setting.treeId, node], true) == false) return;
+ view.removeNode(setting, node);
+ if (callbackFlag) {
+ this.setting.treeObj.trigger(consts.event.REMOVE, [setting.treeId, node]);
+ }
+ },
+ selectNode : function(node, addFlag) {
+ if (!node) return;
+ if (tools.uCanDo(setting)) {
+ addFlag = setting.view.selectedMulti && addFlag;
+ if (node.parentTId) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), true, false, function() {
+ try{$$(node, setting).focus().blur();}catch(e){}
+ });
+ } else {
+ try{$$(node, setting).focus().blur();}catch(e){}
+ }
+ view.selectNode(setting, node, addFlag);
+ }
+ },
+ transformTozTreeNodes : function(simpleNodes) {
+ return data.transformTozTreeFormat(setting, simpleNodes);
+ },
+ transformToArray : function(nodes) {
+ return data.transformToArrayFormat(setting, nodes);
+ },
+ updateNode : function(node, checkTypeFlag) {
+ if (!node) return;
+ var nObj = $$(node, setting);
+ if (nObj.get(0) && tools.uCanDo(setting)) {
+ view.setNodeName(setting, node);
+ view.setNodeTarget(setting, node);
+ view.setNodeUrl(setting, node);
+ view.setNodeLineIcos(setting, node);
+ view.setNodeFontCss(setting, node);
+ }
+ }
+ }
+ root.treeTools = zTreeTools;
+ data.setZTreeTools(setting, zTreeTools);
+
+ if (root[childKey] && root[childKey].length > 0) {
+ view.createNodes(setting, 0, root[childKey]);
+ } else if (setting.async.enable && setting.async.url && setting.async.url !== '') {
+ view.asyncNode(setting);
+ }
+ return zTreeTools;
+ }
+ };
+
+ var zt = $.fn.zTree,
+ $$ = tools.$,
+ consts = zt.consts;
+})(jQuery); \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.core.min.js b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.core.min.js
new file mode 100755
index 00000000..705bdb4f
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.core.min.js
@@ -0,0 +1,69 @@
+/*
+ * JQuery zTree core v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(p){var G,H,I,J,K,L,r={},u={},v={},M={treeId:"",treeObj:null,view:{addDiyDom:null,autoCancelSelected:!0,dblClickExpand:!0,expandSpeed:"fast",fontCss:{},nameIsHTML:!1,selectedMulti:!0,showIcon:!0,showLine:!0,showTitle:!0,txtSelectedEnable:!1},data:{key:{children:"children",name:"name",title:"",url:"url"},simpleData:{enable:!1,idKey:"id",pIdKey:"pId",rootPId:null},keep:{parent:!1,leaf:!1}},async:{enable:!1,contentType:"application/x-www-form-urlencoded",type:"post",dataType:"text",url:"",autoParam:[],
+otherParam:[],dataFilter:null},callback:{beforeAsync:null,beforeClick:null,beforeDblClick:null,beforeRightClick:null,beforeMouseDown:null,beforeMouseUp:null,beforeExpand:null,beforeCollapse:null,beforeRemove:null,onAsyncError:null,onAsyncSuccess:null,onNodeCreated:null,onClick:null,onDblClick:null,onRightClick:null,onMouseDown:null,onMouseUp:null,onExpand:null,onCollapse:null,onRemove:null}},w=[function(b){var a=b.treeObj,c=e.event;a.bind(c.NODECREATED,function(a,c,g){j.apply(b.callback.onNodeCreated,
+[a,c,g])});a.bind(c.CLICK,function(a,c,g,l,h){j.apply(b.callback.onClick,[c,g,l,h])});a.bind(c.EXPAND,function(a,c,g){j.apply(b.callback.onExpand,[a,c,g])});a.bind(c.COLLAPSE,function(a,c,g){j.apply(b.callback.onCollapse,[a,c,g])});a.bind(c.ASYNC_SUCCESS,function(a,c,g,l){j.apply(b.callback.onAsyncSuccess,[a,c,g,l])});a.bind(c.ASYNC_ERROR,function(a,c,g,l,h,e){j.apply(b.callback.onAsyncError,[a,c,g,l,h,e])});a.bind(c.REMOVE,function(a,c,g){j.apply(b.callback.onRemove,[a,c,g])})}],x=[function(b){var a=
+e.event;b.treeObj.unbind(a.NODECREATED).unbind(a.CLICK).unbind(a.EXPAND).unbind(a.COLLAPSE).unbind(a.ASYNC_SUCCESS).unbind(a.ASYNC_ERROR).unbind(a.REMOVE)}],y=[function(b){var a=h.getCache(b);a||(a={},h.setCache(b,a));a.nodes=[];a.doms=[]}],z=[function(b,a,c,d,f,g){if(c){var l=h.getRoot(b),e=b.data.key.children;c.level=a;c.tId=b.treeId+"_"+ ++l.zId;c.parentTId=d?d.tId:null;c.open=typeof c.open=="string"?j.eqs(c.open,"true"):!!c.open;c[e]&&c[e].length>0?(c.isParent=!0,c.zAsync=!0):(c.isParent=typeof c.isParent==
+"string"?j.eqs(c.isParent,"true"):!!c.isParent,c.open=c.isParent&&!b.async.enable?c.open:!1,c.zAsync=!c.isParent);c.isFirstNode=f;c.isLastNode=g;c.getParentNode=function(){return h.getNodeCache(b,c.parentTId)};c.getPreNode=function(){return h.getPreNode(b,c)};c.getNextNode=function(){return h.getNextNode(b,c)};c.isAjaxing=!1;h.fixPIdKeyValue(b,c)}}],s=[function(b){var a=b.target,c=h.getSetting(b.data.treeId),d="",f=null,g="",l="",i=null,n=null,k=null;if(j.eqs(b.type,"mousedown"))l="mousedown";else if(j.eqs(b.type,
+"mouseup"))l="mouseup";else if(j.eqs(b.type,"contextmenu"))l="contextmenu";else if(j.eqs(b.type,"click"))if(j.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+e.id.SWITCH)!==null)d=j.getNodeMainDom(a).id,g="switchNode";else{if(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}]))d=j.getNodeMainDom(k).id,g="clickNode"}else if(j.eqs(b.type,"dblclick")&&(l="dblclick",k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id,g="switchNode";if(l.length>0&&d.length==0&&
+(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id;if(d.length>0)switch(f=h.getNodeCache(c,d),g){case "switchNode":f.isParent?j.eqs(b.type,"click")||j.eqs(b.type,"dblclick")&&j.apply(c.view.dblClickExpand,[c.treeId,f],c.view.dblClickExpand)?i=G:g="":g="";break;case "clickNode":i=H}switch(l){case "mousedown":n=I;break;case "mouseup":n=J;break;case "dblclick":n=K;break;case "contextmenu":n=L}return{stop:!1,node:f,nodeEventType:g,nodeEventCallback:i,treeEventType:l,
+treeEventCallback:n}}],A=[function(b){var a=h.getRoot(b);a||(a={},h.setRoot(b,a));a[b.data.key.children]=[];a.expandTriggerFlag=!1;a.curSelectedList=[];a.noSelection=!0;a.createdNodes=[];a.zId=0;a._ver=(new Date).getTime()}],B=[],C=[],D=[],E=[],F=[],h={addNodeCache:function(b,a){h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=a},getNodeCacheId:function(b){return b.substring(b.lastIndexOf("_")+1)},addAfterA:function(b){C.push(b)},addBeforeA:function(b){B.push(b)},addInnerAfterA:function(b){E.push(b)},
+addInnerBeforeA:function(b){D.push(b)},addInitBind:function(b){w.push(b)},addInitUnBind:function(b){x.push(b)},addInitCache:function(b){y.push(b)},addInitNode:function(b){z.push(b)},addInitProxy:function(b,a){a?s.splice(0,0,b):s.push(b)},addInitRoot:function(b){A.push(b)},addNodesData:function(b,a,c){var d=b.data.key.children;a[d]||(a[d]=[]);if(a[d].length>0)a[d][a[d].length-1].isLastNode=!1,i.setNodeLineIcos(b,a[d][a[d].length-1]);a.isParent=!0;a[d]=a[d].concat(c)},addSelectedNode:function(b,a){var c=
+h.getRoot(b);h.isSelectedNode(b,a)||c.curSelectedList.push(a)},addCreatedNode:function(b,a){(b.callback.onNodeCreated||b.view.addDiyDom)&&h.getRoot(b).createdNodes.push(a)},addZTreeTools:function(b){F.push(b)},exSetting:function(b){p.extend(!0,M,b)},fixPIdKeyValue:function(b,a){b.data.simpleData.enable&&(a[b.data.simpleData.pIdKey]=a.parentTId?a.getParentNode()[b.data.simpleData.idKey]:b.data.simpleData.rootPId)},getAfterA:function(b,a,c){for(var d=0,f=C.length;d<f;d++)C[d].apply(this,arguments)},
+getBeforeA:function(b,a,c){for(var d=0,f=B.length;d<f;d++)B[d].apply(this,arguments)},getInnerAfterA:function(b,a,c){for(var d=0,f=E.length;d<f;d++)E[d].apply(this,arguments)},getInnerBeforeA:function(b,a,c){for(var d=0,f=D.length;d<f;d++)D[d].apply(this,arguments)},getCache:function(b){return v[b.treeId]},getNextNode:function(b,a){if(!a)return null;for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),f=0,g=d[c].length-1;f<=g;f++)if(d[c][f]===a)return f==g?null:d[c][f+1];return null},
+getNodeByParam:function(b,a,c,d){if(!a||!c)return null;for(var f=b.data.key.children,g=0,l=a.length;g<l;g++){if(a[g][c]==d)return a[g];var e=h.getNodeByParam(b,a[g][f],c,d);if(e)return e}return null},getNodeCache:function(b,a){if(!a)return null;var c=v[b.treeId].nodes[h.getNodeCacheId(a)];return c?c:null},getNodeName:function(b,a){return""+a[b.data.key.name]},getNodeTitle:function(b,a){return""+a[b.data.key.title===""?b.data.key.name:b.data.key.title]},getNodes:function(b){return h.getRoot(b)[b.data.key.children]},
+getNodesByParam:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],l=0,e=a.length;l<e;l++)a[l][c]==d&&g.push(a[l]),g=g.concat(h.getNodesByParam(b,a[l][f],c,d));return g},getNodesByParamFuzzy:function(b,a,c,d){if(!a||!c)return[];for(var f=b.data.key.children,g=[],d=d.toLowerCase(),l=0,e=a.length;l<e;l++)typeof a[l][c]=="string"&&a[l][c].toLowerCase().indexOf(d)>-1&&g.push(a[l]),g=g.concat(h.getNodesByParamFuzzy(b,a[l][f],c,d));return g},getNodesByFilter:function(b,a,c,d,f){if(!a)return d?
+null:[];for(var g=b.data.key.children,e=d?null:[],i=0,n=a.length;i<n;i++){if(j.apply(c,[a[i],f],!1)){if(d)return a[i];e.push(a[i])}var k=h.getNodesByFilter(b,a[i][g],c,d,f);if(d&&k)return k;e=d?k:e.concat(k)}return e},getPreNode:function(b,a){if(!a)return null;for(var c=b.data.key.children,d=a.parentTId?a.getParentNode():h.getRoot(b),f=0,g=d[c].length;f<g;f++)if(d[c][f]===a)return f==0?null:d[c][f-1];return null},getRoot:function(b){return b?u[b.treeId]:null},getRoots:function(){return u},getSetting:function(b){return r[b]},
+getSettings:function(){return r},getZTreeTools:function(b){return(b=this.getRoot(this.getSetting(b)))?b.treeTools:null},initCache:function(b){for(var a=0,c=y.length;a<c;a++)y[a].apply(this,arguments)},initNode:function(b,a,c,d,f,g){for(var e=0,h=z.length;e<h;e++)z[e].apply(this,arguments)},initRoot:function(b){for(var a=0,c=A.length;a<c;a++)A[a].apply(this,arguments)},isSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d])return!0;return!1},
+removeNodeCache:function(b,a){var c=b.data.key.children;if(a[c])for(var d=0,f=a[c].length;d<f;d++)arguments.callee(b,a[c][d]);h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=null},removeSelectedNode:function(b,a){for(var c=h.getRoot(b),d=0,f=c.curSelectedList.length;d<f;d++)if(a===c.curSelectedList[d]||!h.getNodeCache(b,c.curSelectedList[d].tId))c.curSelectedList.splice(d,1),d--,f--},setCache:function(b,a){v[b.treeId]=a},setRoot:function(b,a){u[b.treeId]=a},setZTreeTools:function(b,a){for(var c=0,d=
+F.length;c<d;c++)F[c].apply(this,arguments)},transformToArrayFormat:function(b,a){if(!a)return[];var c=b.data.key.children,d=[];if(j.isArray(a))for(var f=0,g=a.length;f<g;f++)d.push(a[f]),a[f][c]&&(d=d.concat(h.transformToArrayFormat(b,a[f][c])));else d.push(a),a[c]&&(d=d.concat(h.transformToArrayFormat(b,a[c])));return d},transformTozTreeFormat:function(b,a){var c,d,f=b.data.simpleData.idKey,g=b.data.simpleData.pIdKey,e=b.data.key.children;if(!f||f==""||!a)return[];if(j.isArray(a)){var h=[],i=[];
+for(c=0,d=a.length;c<d;c++)i[a[c][f]]=a[c];for(c=0,d=a.length;c<d;c++)i[a[c][g]]&&a[c][f]!=a[c][g]?(i[a[c][g]][e]||(i[a[c][g]][e]=[]),i[a[c][g]][e].push(a[c])):h.push(a[c]);return h}else return[a]}},m={bindEvent:function(b){for(var a=0,c=w.length;a<c;a++)w[a].apply(this,arguments)},unbindEvent:function(b){for(var a=0,c=x.length;a<c;a++)x[a].apply(this,arguments)},bindTree:function(b){var a={treeId:b.treeId},c=b.treeObj;b.view.txtSelectedEnable||c.bind("selectstart",function(a){a=a.originalEvent.srcElement.nodeName.toLowerCase();
+return a==="input"||a==="textarea"}).css({"-moz-user-select":"-moz-none"});c.bind("click",a,m.proxy);c.bind("dblclick",a,m.proxy);c.bind("mouseover",a,m.proxy);c.bind("mouseout",a,m.proxy);c.bind("mousedown",a,m.proxy);c.bind("mouseup",a,m.proxy);c.bind("contextmenu",a,m.proxy)},unbindTree:function(b){b.treeObj.unbind("click",m.proxy).unbind("dblclick",m.proxy).unbind("mouseover",m.proxy).unbind("mouseout",m.proxy).unbind("mousedown",m.proxy).unbind("mouseup",m.proxy).unbind("contextmenu",m.proxy)},
+doProxy:function(b){for(var a=[],c=0,d=s.length;c<d;c++){var f=s[c].apply(this,arguments);a.push(f);if(f.stop)break}return a},proxy:function(b){var a=h.getSetting(b.data.treeId);if(!j.uCanDo(a,b))return!0;for(var a=m.doProxy(b),c=!0,d=0,f=a.length;d<f;d++){var g=a[d];g.nodeEventCallback&&(c=g.nodeEventCallback.apply(g,[b,g.node])&&c);g.treeEventCallback&&(c=g.treeEventCallback.apply(g,[b,g.node])&&c)}return c}};G=function(b,a){var c=h.getSetting(b.data.treeId);if(a.open){if(j.apply(c.callback.beforeCollapse,
+[c.treeId,a],!0)==!1)return!0}else if(j.apply(c.callback.beforeExpand,[c.treeId,a],!0)==!1)return!0;h.getRoot(c).expandTriggerFlag=!0;i.switchNode(c,a);return!0};H=function(b,a){var c=h.getSetting(b.data.treeId),d=c.view.autoCancelSelected&&(b.ctrlKey||b.metaKey)&&h.isSelectedNode(c,a)?0:c.view.autoCancelSelected&&(b.ctrlKey||b.metaKey)&&c.view.selectedMulti?2:1;if(j.apply(c.callback.beforeClick,[c.treeId,a,d],!0)==!1)return!0;d===0?i.cancelPreSelectedNode(c,a):i.selectNode(c,a,d===2);c.treeObj.trigger(e.event.CLICK,
+[b,c.treeId,a,d]);return!0};I=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseDown,[c.treeId,a],!0)&&j.apply(c.callback.onMouseDown,[b,c.treeId,a]);return!0};J=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeMouseUp,[c.treeId,a],!0)&&j.apply(c.callback.onMouseUp,[b,c.treeId,a]);return!0};K=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeDblClick,[c.treeId,a],!0)&&j.apply(c.callback.onDblClick,[b,c.treeId,a]);return!0};
+L=function(b,a){var c=h.getSetting(b.data.treeId);j.apply(c.callback.beforeRightClick,[c.treeId,a],!0)&&j.apply(c.callback.onRightClick,[b,c.treeId,a]);return typeof c.callback.onRightClick!="function"};var j={apply:function(b,a,c){return typeof b=="function"?b.apply(N,a?a:[]):c},canAsync:function(b,a){var c=b.data.key.children;return b.async.enable&&a&&a.isParent&&!(a.zAsync||a[c]&&a[c].length>0)},clone:function(b){if(b===null)return null;var a=j.isArray(b)?[]:{},c;for(c in b)a[c]=b[c]instanceof
+Date?new Date(b[c].getTime()):typeof b[c]==="object"?arguments.callee(b[c]):b[c];return a},eqs:function(b,a){return b.toLowerCase()===a.toLowerCase()},isArray:function(b){return Object.prototype.toString.apply(b)==="[object Array]"},$:function(b,a,c){a&&typeof a!="string"&&(c=a,a="");return typeof b=="string"?p(b,c?c.treeObj.get(0).ownerDocument:null):p("#"+b.tId+a,c?c.treeObj:null)},getMDom:function(b,a,c){if(!a)return null;for(;a&&a.id!==b.treeId;){for(var d=0,f=c.length;a.tagName&&d<f;d++)if(j.eqs(a.tagName,
+c[d].tagName)&&a.getAttribute(c[d].attrName)!==null)return a;a=a.parentNode}return null},getNodeMainDom:function(b){return p(b).parent("li").get(0)||p(b).parentsUntil("li").parent().get(0)},isChildOrSelf:function(b,a){return p(b).closest("#"+a).length>0},uCanDo:function(){return!0}},i={addNodes:function(b,a,c,d){if(!b.data.keep.leaf||!a||a.isParent)if(j.isArray(c)||(c=[c]),b.data.simpleData.enable&&(c=h.transformTozTreeFormat(b,c)),a){var f=k(a,e.id.SWITCH,b),g=k(a,e.id.ICON,b),l=k(a,e.id.UL,b);if(!a.open)i.replaceSwitchClass(a,
+f,e.folder.CLOSE),i.replaceIcoClass(a,g,e.folder.CLOSE),a.open=!1,l.css({display:"none"});h.addNodesData(b,a,c);i.createNodes(b,a.level+1,c,a);d||i.expandCollapseParentNode(b,a,!0)}else h.addNodesData(b,h.getRoot(b),c),i.createNodes(b,0,c,null)},appendNodes:function(b,a,c,d,f,g){if(!c)return[];for(var e=[],j=b.data.key.children,k=0,m=c.length;k<m;k++){var o=c[k];if(f){var t=(d?d:h.getRoot(b))[j].length==c.length&&k==0;h.initNode(b,a,o,d,t,k==c.length-1,g);h.addNodeCache(b,o)}t=[];o[j]&&o[j].length>
+0&&(t=i.appendNodes(b,a+1,o[j],o,f,g&&o.open));g&&(i.makeDOMNodeMainBefore(e,b,o),i.makeDOMNodeLine(e,b,o),h.getBeforeA(b,o,e),i.makeDOMNodeNameBefore(e,b,o),h.getInnerBeforeA(b,o,e),i.makeDOMNodeIcon(e,b,o),h.getInnerAfterA(b,o,e),i.makeDOMNodeNameAfter(e,b,o),h.getAfterA(b,o,e),o.isParent&&o.open&&i.makeUlHtml(b,o,e,t.join("")),i.makeDOMNodeMainAfter(e,b,o),h.addCreatedNode(b,o))}return e},appendParentULDom:function(b,a){var c=[],d=k(a,b);!d.get(0)&&a.parentTId&&(i.appendParentULDom(b,a.getParentNode()),
+d=k(a,b));var f=k(a,e.id.UL,b);f.get(0)&&f.remove();f=i.appendNodes(b,a.level+1,a[b.data.key.children],a,!1,!0);i.makeUlHtml(b,a,c,f.join(""));d.append(c.join(""))},asyncNode:function(b,a,c,d){var f,g;if(a&&!a.isParent)return j.apply(d),!1;else if(a&&a.isAjaxing)return!1;else if(j.apply(b.callback.beforeAsync,[b.treeId,a],!0)==!1)return j.apply(d),!1;if(a)a.isAjaxing=!0,k(a,e.id.ICON,b).attr({style:"","class":e.className.BUTTON+" "+e.className.ICO_LOADING});var l={};for(f=0,g=b.async.autoParam.length;a&&
+f<g;f++){var q=b.async.autoParam[f].split("="),n=q;q.length>1&&(n=q[1],q=q[0]);l[n]=a[q]}if(j.isArray(b.async.otherParam))for(f=0,g=b.async.otherParam.length;f<g;f+=2)l[b.async.otherParam[f]]=b.async.otherParam[f+1];else for(var m in b.async.otherParam)l[m]=b.async.otherParam[m];var o=h.getRoot(b)._ver;p.ajax({contentType:b.async.contentType,type:b.async.type,url:j.apply(b.async.url,[b.treeId,a],b.async.url),data:l,dataType:b.async.dataType,success:function(f){if(o==h.getRoot(b)._ver){var g=[];try{g=
+!f||f.length==0?[]:typeof f=="string"?eval("("+f+")"):f}catch(l){g=f}if(a)a.isAjaxing=null,a.zAsync=!0;i.setNodeLineIcos(b,a);g&&g!==""?(g=j.apply(b.async.dataFilter,[b.treeId,a,g],g),i.addNodes(b,a,g?j.clone(g):[],!!c)):i.addNodes(b,a,[],!!c);b.treeObj.trigger(e.event.ASYNC_SUCCESS,[b.treeId,a,f]);j.apply(d)}},error:function(c,d,f){if(o==h.getRoot(b)._ver){if(a)a.isAjaxing=null;i.setNodeLineIcos(b,a);b.treeObj.trigger(e.event.ASYNC_ERROR,[b.treeId,a,c,d,f])}}});return!0},cancelPreSelectedNode:function(b,
+a){for(var c=h.getRoot(b).curSelectedList,d=c.length-1;d>=0;d--)if(!a||a===c[d])if(k(c[d],e.id.A,b).removeClass(e.node.CURSELECTED),a){h.removeSelectedNode(b,a);break}if(!a)h.getRoot(b).curSelectedList=[]},createNodeCallback:function(b){if(b.callback.onNodeCreated||b.view.addDiyDom)for(var a=h.getRoot(b);a.createdNodes.length>0;){var c=a.createdNodes.shift();j.apply(b.view.addDiyDom,[b.treeId,c]);b.callback.onNodeCreated&&b.treeObj.trigger(e.event.NODECREATED,[b.treeId,c])}},createNodes:function(b,
+a,c,d){if(c&&c.length!=0){var f=h.getRoot(b),g=b.data.key.children,g=!d||d.open||!!k(d[g][0],b).get(0);f.createdNodes=[];a=i.appendNodes(b,a,c,d,!0,g);d?(d=k(d,e.id.UL,b),d.get(0)&&d.append(a.join(""))):b.treeObj.append(a.join(""));i.createNodeCallback(b)}},destroy:function(b){b&&(h.initCache(b),h.initRoot(b),m.unbindTree(b),m.unbindEvent(b),b.treeObj.empty(),delete r[b.treeId])},expandCollapseNode:function(b,a,c,d,f){var g=h.getRoot(b),l=b.data.key.children;if(a){if(g.expandTriggerFlag){var q=f,
+f=function(){q&&q();a.open?b.treeObj.trigger(e.event.EXPAND,[b.treeId,a]):b.treeObj.trigger(e.event.COLLAPSE,[b.treeId,a])};g.expandTriggerFlag=!1}if(!a.open&&a.isParent&&(!k(a,e.id.UL,b).get(0)||a[l]&&a[l].length>0&&!k(a[l][0],b).get(0)))i.appendParentULDom(b,a),i.createNodeCallback(b);if(a.open==c)j.apply(f,[]);else{var c=k(a,e.id.UL,b),g=k(a,e.id.SWITCH,b),n=k(a,e.id.ICON,b);a.isParent?(a.open=!a.open,a.iconOpen&&a.iconClose&&n.attr("style",i.makeNodeIcoStyle(b,a)),a.open?(i.replaceSwitchClass(a,
+g,e.folder.OPEN),i.replaceIcoClass(a,n,e.folder.OPEN),d==!1||b.view.expandSpeed==""?(c.show(),j.apply(f,[])):a[l]&&a[l].length>0?c.slideDown(b.view.expandSpeed,f):(c.show(),j.apply(f,[]))):(i.replaceSwitchClass(a,g,e.folder.CLOSE),i.replaceIcoClass(a,n,e.folder.CLOSE),d==!1||b.view.expandSpeed==""||!(a[l]&&a[l].length>0)?(c.hide(),j.apply(f,[])):c.slideUp(b.view.expandSpeed,f))):j.apply(f,[])}}else j.apply(f,[])},expandCollapseParentNode:function(b,a,c,d,f){a&&(a.parentTId?(i.expandCollapseNode(b,
+a,c,d),a.parentTId&&i.expandCollapseParentNode(b,a.getParentNode(),c,d,f)):i.expandCollapseNode(b,a,c,d,f))},expandCollapseSonNode:function(b,a,c,d,f){var g=h.getRoot(b),e=b.data.key.children,g=a?a[e]:g[e],e=a?!1:d,j=h.getRoot(b).expandTriggerFlag;h.getRoot(b).expandTriggerFlag=!1;if(g)for(var k=0,m=g.length;k<m;k++)g[k]&&i.expandCollapseSonNode(b,g[k],c,e);h.getRoot(b).expandTriggerFlag=j;i.expandCollapseNode(b,a,c,d,f)},makeDOMNodeIcon:function(b,a,c){var d=h.getNodeName(a,c),d=a.view.nameIsHTML?
+d:d.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");b.push("<span id='",c.tId,e.id.ICON,"' title='' treeNode",e.id.ICON," class='",i.makeNodeIcoClass(a,c),"' style='",i.makeNodeIcoStyle(a,c),"'></span><span id='",c.tId,e.id.SPAN,"'>",d,"</span>")},makeDOMNodeLine:function(b,a,c){b.push("<span id='",c.tId,e.id.SWITCH,"' title='' class='",i.makeNodeLineClass(a,c),"' treeNode",e.id.SWITCH,"></span>")},makeDOMNodeMainAfter:function(b){b.push("</li>")},makeDOMNodeMainBefore:function(b,
+a,c){b.push("<li id='",c.tId,"' class='",e.className.LEVEL,c.level,"' tabindex='0' hidefocus='true' treenode>")},makeDOMNodeNameAfter:function(b){b.push("</a>")},makeDOMNodeNameBefore:function(b,a,c){var d=h.getNodeTitle(a,c),f=i.makeNodeUrl(a,c),g=i.makeNodeFontCss(a,c),l=[],k;for(k in g)l.push(k,":",g[k],";");b.push("<a id='",c.tId,e.id.A,"' class='",e.className.LEVEL,c.level,"' treeNode",e.id.A,' onclick="',c.click||"",'" ',f!=null&&f.length>0?"href='"+f+"'":""," target='",i.makeNodeTarget(c),
+"' style='",l.join(""),"'");j.apply(a.view.showTitle,[a.treeId,c],a.view.showTitle)&&d&&b.push("title='",d.replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),"'");b.push(">")},makeNodeFontCss:function(b,a){var c=j.apply(b.view.fontCss,[b.treeId,a],b.view.fontCss);return c&&typeof c!="function"?c:{}},makeNodeIcoClass:function(b,a){var c=["ico"];a.isAjaxing||(c[0]=(a.iconSkin?a.iconSkin+"_":"")+c[0],a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU));return e.className.BUTTON+
+" "+c.join("_")},makeNodeIcoStyle:function(b,a){var c=[];if(!a.isAjaxing){var d=a.isParent&&a.iconOpen&&a.iconClose?a.open?a.iconOpen:a.iconClose:a.icon;d&&c.push("background:url(",d,") 0 0 no-repeat;");(b.view.showIcon==!1||!j.apply(b.view.showIcon,[b.treeId,a],!0))&&c.push("width:0px;height:0px;")}return c.join("")},makeNodeLineClass:function(b,a){var c=[];b.view.showLine?a.level==0&&a.isFirstNode&&a.isLastNode?c.push(e.line.ROOT):a.level==0&&a.isFirstNode?c.push(e.line.ROOTS):a.isLastNode?c.push(e.line.BOTTOM):
+c.push(e.line.CENTER):c.push(e.line.NOLINE);a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU);return i.makeNodeLineClassEx(a)+c.join("_")},makeNodeLineClassEx:function(b){return e.className.BUTTON+" "+e.className.LEVEL+b.level+" "+e.className.SWITCH+" "},makeNodeTarget:function(b){return b.target||"_blank"},makeNodeUrl:function(b,a){var c=b.data.key.url;return a[c]?a[c]:null},makeUlHtml:function(b,a,c,d){c.push("<ul id='",a.tId,e.id.UL,"' class='",e.className.LEVEL,a.level,
+" ",i.makeUlLineClass(b,a),"' style='display:",a.open?"block":"none","'>");c.push(d);c.push("</ul>")},makeUlLineClass:function(b,a){return b.view.showLine&&!a.isLastNode?e.line.LINE:""},removeChildNodes:function(b,a){if(a){var c=b.data.key.children,d=a[c];if(d){for(var f=0,g=d.length;f<g;f++)h.removeNodeCache(b,d[f]);h.removeSelectedNode(b);delete a[c];b.data.keep.parent?k(a,e.id.UL,b).empty():(a.isParent=!1,a.open=!1,c=k(a,e.id.SWITCH,b),d=k(a,e.id.ICON,b),i.replaceSwitchClass(a,c,e.folder.DOCU),
+i.replaceIcoClass(a,d,e.folder.DOCU),k(a,e.id.UL,b).remove())}}},setFirstNode:function(b,a){var c=b.data.key.children;if(a[c].length>0)a[c][0].isFirstNode=!0},setLastNode:function(b,a){var c=b.data.key.children,d=a[c].length;if(d>0)a[c][d-1].isLastNode=!0},removeNode:function(b,a){var c=h.getRoot(b),d=b.data.key.children,f=a.parentTId?a.getParentNode():c;a.isFirstNode=!1;a.isLastNode=!1;a.getPreNode=function(){return null};a.getNextNode=function(){return null};if(h.getNodeCache(b,a.tId)){k(a,b).remove();
+h.removeNodeCache(b,a);h.removeSelectedNode(b,a);for(var g=0,l=f[d].length;g<l;g++)if(f[d][g].tId==a.tId){f[d].splice(g,1);break}i.setFirstNode(b,f);i.setLastNode(b,f);var j,g=f[d].length;if(!b.data.keep.parent&&g==0)f.isParent=!1,f.open=!1,g=k(f,e.id.UL,b),l=k(f,e.id.SWITCH,b),j=k(f,e.id.ICON,b),i.replaceSwitchClass(f,l,e.folder.DOCU),i.replaceIcoClass(f,j,e.folder.DOCU),g.css("display","none");else if(b.view.showLine&&g>0){var n=f[d][g-1],g=k(n,e.id.UL,b),l=k(n,e.id.SWITCH,b);j=k(n,e.id.ICON,b);
+f==c?f[d].length==1?i.replaceSwitchClass(n,l,e.line.ROOT):(c=k(f[d][0],e.id.SWITCH,b),i.replaceSwitchClass(f[d][0],c,e.line.ROOTS),i.replaceSwitchClass(n,l,e.line.BOTTOM)):i.replaceSwitchClass(n,l,e.line.BOTTOM);g.removeClass(e.line.LINE)}}},replaceIcoClass:function(b,a,c){if(a&&!b.isAjaxing&&(b=a.attr("class"),b!=void 0)){b=b.split("_");switch(c){case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:b[b.length-1]=c}a.attr("class",b.join("_"))}},replaceSwitchClass:function(b,a,c){if(a){var d=
+a.attr("class");if(d!=void 0){d=d.split("_");switch(c){case e.line.ROOT:case e.line.ROOTS:case e.line.CENTER:case e.line.BOTTOM:case e.line.NOLINE:d[0]=i.makeNodeLineClassEx(b)+c;break;case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:d[1]=c}a.attr("class",d.join("_"));c!==e.folder.DOCU?a.removeAttr("disabled"):a.attr("disabled","disabled")}}},selectNode:function(b,a,c){c||i.cancelPreSelectedNode(b);k(a,e.id.A,b).addClass(e.node.CURSELECTED);h.addSelectedNode(b,a)},setNodeFontCss:function(b,
+a){var c=k(a,e.id.A,b),d=i.makeNodeFontCss(b,a);d&&c.css(d)},setNodeLineIcos:function(b,a){if(a){var c=k(a,e.id.SWITCH,b),d=k(a,e.id.UL,b),f=k(a,e.id.ICON,b),g=i.makeUlLineClass(b,a);g.length==0?d.removeClass(e.line.LINE):d.addClass(g);c.attr("class",i.makeNodeLineClass(b,a));a.isParent?c.removeAttr("disabled"):c.attr("disabled","disabled");f.removeAttr("style");f.attr("style",i.makeNodeIcoStyle(b,a));f.attr("class",i.makeNodeIcoClass(b,a))}},setNodeName:function(b,a){var c=h.getNodeTitle(b,a),d=
+k(a,e.id.SPAN,b);d.empty();b.view.nameIsHTML?d.html(h.getNodeName(b,a)):d.text(h.getNodeName(b,a));j.apply(b.view.showTitle,[b.treeId,a],b.view.showTitle)&&k(a,e.id.A,b).attr("title",!c?"":c)},setNodeTarget:function(b,a){k(a,e.id.A,b).attr("target",i.makeNodeTarget(a))},setNodeUrl:function(b,a){var c=k(a,e.id.A,b),d=i.makeNodeUrl(b,a);d==null||d.length==0?c.removeAttr("href"):c.attr("href",d)},switchNode:function(b,a){a.open||!j.canAsync(b,a)?i.expandCollapseNode(b,a,!a.open):b.async.enable?i.asyncNode(b,
+a)||i.expandCollapseNode(b,a,!a.open):a&&i.expandCollapseNode(b,a,!a.open)}};p.fn.zTree={consts:{className:{BUTTON:"button",LEVEL:"level",ICO_LOADING:"ico_loading",SWITCH:"switch"},event:{NODECREATED:"ztree_nodeCreated",CLICK:"ztree_click",EXPAND:"ztree_expand",COLLAPSE:"ztree_collapse",ASYNC_SUCCESS:"ztree_async_success",ASYNC_ERROR:"ztree_async_error",REMOVE:"ztree_remove"},id:{A:"_a",ICON:"_ico",SPAN:"_span",SWITCH:"_switch",UL:"_ul"},line:{ROOT:"root",ROOTS:"roots",CENTER:"center",BOTTOM:"bottom",
+NOLINE:"noline",LINE:"line"},folder:{OPEN:"open",CLOSE:"close",DOCU:"docu"},node:{CURSELECTED:"curSelectedNode"}},_z:{tools:j,view:i,event:m,data:h},getZTreeObj:function(b){return(b=h.getZTreeTools(b))?b:null},destroy:function(b){if(b&&b.length>0)i.destroy(h.getSetting(b));else for(var a in r)i.destroy(r[a])},init:function(b,a,c){var d=j.clone(M);p.extend(!0,d,a);d.treeId=b.attr("id");d.treeObj=b;d.treeObj.empty();r[d.treeId]=d;if(typeof document.body.style.maxHeight==="undefined")d.view.expandSpeed=
+"";h.initRoot(d);b=h.getRoot(d);a=d.data.key.children;c=c?j.clone(j.isArray(c)?c:[c]):[];b[a]=d.data.simpleData.enable?h.transformTozTreeFormat(d,c):c;h.initCache(d);m.unbindTree(d);m.bindTree(d);m.unbindEvent(d);m.bindEvent(d);c={setting:d,addNodes:function(a,b,c){function e(){i.addNodes(d,a,h,c==!0)}if(!b)return null;a||(a=null);if(a&&!a.isParent&&d.data.keep.leaf)return null;var h=j.clone(j.isArray(b)?b:[b]);j.canAsync(d,a)?i.asyncNode(d,a,c,e):e();return h},cancelSelectedNode:function(a){i.cancelPreSelectedNode(d,
+a)},destroy:function(){i.destroy(d)},expandAll:function(a){a=!!a;i.expandCollapseSonNode(d,null,a,!0);return a},expandNode:function(a,b,c,e,n){if(!a||!a.isParent)return null;b!==!0&&b!==!1&&(b=!a.open);if((n=!!n)&&b&&j.apply(d.callback.beforeExpand,[d.treeId,a],!0)==!1)return null;else if(n&&!b&&j.apply(d.callback.beforeCollapse,[d.treeId,a],!0)==!1)return null;b&&a.parentTId&&i.expandCollapseParentNode(d,a.getParentNode(),b,!1);if(b===a.open&&!c)return null;h.getRoot(d).expandTriggerFlag=n;if(!j.canAsync(d,
+a)&&c)i.expandCollapseSonNode(d,a,b,!0,function(){if(e!==!1)try{k(a,d).focus().blur()}catch(b){}});else if(a.open=!b,i.switchNode(this.setting,a),e!==!1)try{k(a,d).focus().blur()}catch(m){}return b},getNodes:function(){return h.getNodes(d)},getNodeByParam:function(a,b,c){return!a?null:h.getNodeByParam(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodeByTId:function(a){return h.getNodeCache(d,a)},getNodesByParam:function(a,b,c){return!a?null:h.getNodesByParam(d,c?c[d.data.key.children]:h.getNodes(d),
+a,b)},getNodesByParamFuzzy:function(a,b,c){return!a?null:h.getNodesByParamFuzzy(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodesByFilter:function(a,b,c,e){b=!!b;return!a||typeof a!="function"?b?null:[]:h.getNodesByFilter(d,c?c[d.data.key.children]:h.getNodes(d),a,b,e)},getNodeIndex:function(a){if(!a)return null;for(var b=d.data.key.children,c=a.parentTId?a.getParentNode():h.getRoot(d),e=0,i=c[b].length;e<i;e++)if(c[b][e]==a)return e;return-1},getSelectedNodes:function(){for(var a=[],b=h.getRoot(d).curSelectedList,
+c=0,e=b.length;c<e;c++)a.push(b[c]);return a},isSelectedNode:function(a){return h.isSelectedNode(d,a)},reAsyncChildNodes:function(a,b,c){if(this.setting.async.enable){var j=!a;j&&(a=h.getRoot(d));if(b=="refresh"){for(var b=this.setting.data.key.children,m=0,p=a[b]?a[b].length:0;m<p;m++)h.removeNodeCache(d,a[b][m]);h.removeSelectedNode(d);a[b]=[];j?this.setting.treeObj.empty():k(a,e.id.UL,d).empty()}i.asyncNode(this.setting,j?null:a,!!c)}},refresh:function(){this.setting.treeObj.empty();var a=h.getRoot(d),
+b=a[d.data.key.children];h.initRoot(d);a[d.data.key.children]=b;h.initCache(d);i.createNodes(d,0,a[d.data.key.children])},removeChildNodes:function(a){if(!a)return null;var b=a[d.data.key.children];i.removeChildNodes(d,a);return b?b:null},removeNode:function(a,b){a&&(b=!!b,b&&j.apply(d.callback.beforeRemove,[d.treeId,a],!0)==!1||(i.removeNode(d,a),b&&this.setting.treeObj.trigger(e.event.REMOVE,[d.treeId,a])))},selectNode:function(a,b){if(a&&j.uCanDo(d)){b=d.view.selectedMulti&&b;if(a.parentTId)i.expandCollapseParentNode(d,
+a.getParentNode(),!0,!1,function(){try{k(a,d).focus().blur()}catch(b){}});else try{k(a,d).focus().blur()}catch(c){}i.selectNode(d,a,b)}},transformTozTreeNodes:function(a){return h.transformTozTreeFormat(d,a)},transformToArray:function(a){return h.transformToArrayFormat(d,a)},updateNode:function(a){a&&k(a,d).get(0)&&j.uCanDo(d)&&(i.setNodeName(d,a),i.setNodeTarget(d,a),i.setNodeUrl(d,a),i.setNodeLineIcos(d,a),i.setNodeFontCss(d,a))}};b.treeTools=c;h.setZTreeTools(d,c);b[a]&&b[a].length>0?i.createNodes(d,
+0,b[a]):d.async.enable&&d.async.url&&d.async.url!==""&&i.asyncNode(d);return c}};var N=p.fn.zTree,k=j.$,e=N.consts})(jQuery);
diff --git a/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.excheck.js b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.excheck.js
new file mode 100755
index 00000000..1374c525
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.excheck.js
@@ -0,0 +1,629 @@
+/*
+ * JQuery zTree excheck v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function($){
+ //default consts of excheck
+ var _consts = {
+ event: {
+ CHECK: "ztree_check"
+ },
+ id: {
+ CHECK: "_check"
+ },
+ checkbox: {
+ STYLE: "checkbox",
+ DEFAULT: "chk",
+ DISABLED: "disable",
+ FALSE: "false",
+ TRUE: "true",
+ FULL: "full",
+ PART: "part",
+ FOCUS: "focus"
+ },
+ radio: {
+ STYLE: "radio",
+ TYPE_ALL: "all",
+ TYPE_LEVEL: "level"
+ }
+ },
+ //default setting of excheck
+ _setting = {
+ check: {
+ enable: false,
+ autoCheckTrigger: false,
+ chkStyle: _consts.checkbox.STYLE,
+ nocheckInherit: false,
+ chkDisabledInherit: false,
+ radioType: _consts.radio.TYPE_LEVEL,
+ chkboxType: {
+ "Y": "ps",
+ "N": "ps"
+ }
+ },
+ data: {
+ key: {
+ checked: "checked"
+ }
+ },
+ callback: {
+ beforeCheck:null,
+ onCheck:null
+ }
+ },
+ //default root of excheck
+ _initRoot = function (setting) {
+ var r = data.getRoot(setting);
+ r.radioCheckedList = [];
+ },
+ //default cache of excheck
+ _initCache = function(treeId) {},
+ //default bind event of excheck
+ _bindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.bind(c.CHECK, function (event, srcEvent, treeId, node) {
+ event.srcEvent = srcEvent;
+ tools.apply(setting.callback.onCheck, [event, treeId, node]);
+ });
+ },
+ _unbindEvent = function(setting) {
+ var o = setting.treeObj,
+ c = consts.event;
+ o.unbind(c.CHECK);
+ },
+ //default event proxy of excheck
+ _eventProxy = function(e) {
+ var target = e.target,
+ setting = data.getSetting(e.data.treeId),
+ tId = "", node = null,
+ nodeEventType = "", treeEventType = "",
+ nodeEventCallback = null, treeEventCallback = null;
+
+ if (tools.eqs(e.type, "mouseover")) {
+ if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "mouseoverCheck";
+ }
+ } else if (tools.eqs(e.type, "mouseout")) {
+ if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "mouseoutCheck";
+ }
+ } else if (tools.eqs(e.type, "click")) {
+ if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) {
+ tId = tools.getNodeMainDom(target).id;
+ nodeEventType = "checkNode";
+ }
+ }
+ if (tId.length>0) {
+ node = data.getNodeCache(setting, tId);
+ switch (nodeEventType) {
+ case "checkNode" :
+ nodeEventCallback = _handler.onCheckNode;
+ break;
+ case "mouseoverCheck" :
+ nodeEventCallback = _handler.onMouseoverCheck;
+ break;
+ case "mouseoutCheck" :
+ nodeEventCallback = _handler.onMouseoutCheck;
+ break;
+ }
+ }
+ var proxyResult = {
+ stop: nodeEventType === "checkNode",
+ node: node,
+ nodeEventType: nodeEventType,
+ nodeEventCallback: nodeEventCallback,
+ treeEventType: treeEventType,
+ treeEventCallback: treeEventCallback
+ };
+ return proxyResult
+ },
+ //default init node of excheck
+ _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
+ if (!n) return;
+ var checkedKey = setting.data.key.checked;
+ if (typeof n[checkedKey] == "string") n[checkedKey] = tools.eqs(n[checkedKey], "true");
+ n[checkedKey] = !!n[checkedKey];
+ n.checkedOld = n[checkedKey];
+ if (typeof n.nocheck == "string") n.nocheck = tools.eqs(n.nocheck, "true");
+ n.nocheck = !!n.nocheck || (setting.check.nocheckInherit && parentNode && !!parentNode.nocheck);
+ if (typeof n.chkDisabled == "string") n.chkDisabled = tools.eqs(n.chkDisabled, "true");
+ n.chkDisabled = !!n.chkDisabled || (setting.check.chkDisabledInherit && parentNode && !!parentNode.chkDisabled);
+ if (typeof n.halfCheck == "string") n.halfCheck = tools.eqs(n.halfCheck, "true");
+ n.halfCheck = !!n.halfCheck;
+ n.check_Child_State = -1;
+ n.check_Focus = false;
+ n.getCheckStatus = function() {return data.getCheckStatus(setting, n);};
+
+ if (setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL && n[checkedKey] ) {
+ var r = data.getRoot(setting);
+ r.radioCheckedList.push(n);
+ }
+ },
+ //add dom for check
+ _beforeA = function(setting, node, html) {
+ var checkedKey = setting.data.key.checked;
+ if (setting.check.enable) {
+ data.makeChkFlag(setting, node);
+ html.push("<span ID='", node.tId, consts.id.CHECK, "' class='", view.makeChkClass(setting, node), "' treeNode", consts.id.CHECK, (node.nocheck === true?" style='display:none;'":""),"></span>");
+ }
+ },
+ //update zTreeObj, add method of check
+ _zTreeTools = function(setting, zTreeTools) {
+ zTreeTools.checkNode = function(node, checked, checkTypeFlag, callbackFlag) {
+ var checkedKey = this.setting.data.key.checked;
+ if (node.chkDisabled === true) return;
+ if (checked !== true && checked !== false) {
+ checked = !node[checkedKey];
+ }
+ callbackFlag = !!callbackFlag;
+
+ if (node[checkedKey] === checked && !checkTypeFlag) {
+ return;
+ } else if (callbackFlag && tools.apply(this.setting.callback.beforeCheck, [this.setting.treeId, node], true) == false) {
+ return;
+ }
+ if (tools.uCanDo(this.setting) && this.setting.check.enable && node.nocheck !== true) {
+ node[checkedKey] = checked;
+ var checkObj = $$(node, consts.id.CHECK, this.setting);
+ if (checkTypeFlag || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node);
+ view.setChkClass(this.setting, checkObj, node);
+ view.repairParentChkClassWithSelf(this.setting, node);
+ if (callbackFlag) {
+ this.setting.treeObj.trigger(consts.event.CHECK, [null, this.setting.treeId, node]);
+ }
+ }
+ }
+
+ zTreeTools.checkAllNodes = function(checked) {
+ view.repairAllChk(this.setting, !!checked);
+ }
+
+ zTreeTools.getCheckedNodes = function(checked) {
+ var childKey = this.setting.data.key.children;
+ checked = (checked !== false);
+ return data.getTreeCheckedNodes(this.setting, data.getRoot(this.setting)[childKey], checked);
+ }
+
+ zTreeTools.getChangeCheckedNodes = function() {
+ var childKey = this.setting.data.key.children;
+ return data.getTreeChangeCheckedNodes(this.setting, data.getRoot(this.setting)[childKey]);
+ }
+
+ zTreeTools.setChkDisabled = function(node, disabled, inheritParent, inheritChildren) {
+ disabled = !!disabled;
+ inheritParent = !!inheritParent;
+ inheritChildren = !!inheritChildren;
+ view.repairSonChkDisabled(this.setting, node, disabled, inheritChildren);
+ view.repairParentChkDisabled(this.setting, node.getParentNode(), disabled, inheritParent);
+ }
+
+ var _updateNode = zTreeTools.updateNode;
+ zTreeTools.updateNode = function(node, checkTypeFlag) {
+ if (_updateNode) _updateNode.apply(zTreeTools, arguments);
+ if (!node || !this.setting.check.enable) return;
+ var nObj = $$(node, this.setting);
+ if (nObj.get(0) && tools.uCanDo(this.setting)) {
+ var checkObj = $$(node, consts.id.CHECK, this.setting);
+ if (checkTypeFlag == true || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node);
+ view.setChkClass(this.setting, checkObj, node);
+ view.repairParentChkClassWithSelf(this.setting, node);
+ }
+ }
+ },
+ //method of operate data
+ _data = {
+ getRadioCheckedList: function(setting) {
+ var checkedList = data.getRoot(setting).radioCheckedList;
+ for (var i=0, j=checkedList.length; i<j; i++) {
+ if(!data.getNodeCache(setting, checkedList[i].tId)) {
+ checkedList.splice(i, 1);
+ i--; j--;
+ }
+ }
+ return checkedList;
+ },
+ getCheckStatus: function(setting, node) {
+ if (!setting.check.enable || node.nocheck || node.chkDisabled) return null;
+ var checkedKey = setting.data.key.checked,
+ r = {
+ checked: node[checkedKey],
+ half: node.halfCheck ? node.halfCheck : (setting.check.chkStyle == consts.radio.STYLE ? (node.check_Child_State === 2) : (node[checkedKey] ? (node.check_Child_State > -1 && node.check_Child_State < 2) : (node.check_Child_State > 0)))
+ };
+ return r;
+ },
+ getTreeCheckedNodes: function(setting, nodes, checked, results) {
+ if (!nodes) return [];
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ onlyOne = (checked && setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL);
+ results = !results ? [] : results;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i].nocheck !== true && nodes[i].chkDisabled !== true && nodes[i][checkedKey] == checked) {
+ results.push(nodes[i]);
+ if(onlyOne) {
+ break;
+ }
+ }
+ data.getTreeCheckedNodes(setting, nodes[i][childKey], checked, results);
+ if(onlyOne && results.length > 0) {
+ break;
+ }
+ }
+ return results;
+ },
+ getTreeChangeCheckedNodes: function(setting, nodes, results) {
+ if (!nodes) return [];
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked;
+ results = !results ? [] : results;
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i].nocheck !== true && nodes[i].chkDisabled !== true && nodes[i][checkedKey] != nodes[i].checkedOld) {
+ results.push(nodes[i]);
+ }
+ data.getTreeChangeCheckedNodes(setting, nodes[i][childKey], results);
+ }
+ return results;
+ },
+ makeChkFlag: function(setting, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ chkFlag = -1;
+ if (node[childKey]) {
+ for (var i = 0, l = node[childKey].length; i < l; i++) {
+ var cNode = node[childKey][i];
+ var tmp = -1;
+ if (setting.check.chkStyle == consts.radio.STYLE) {
+ if (cNode.nocheck === true || cNode.chkDisabled === true) {
+ tmp = cNode.check_Child_State;
+ } else if (cNode.halfCheck === true) {
+ tmp = 2;
+ } else if (cNode[checkedKey]) {
+ tmp = 2;
+ } else {
+ tmp = cNode.check_Child_State > 0 ? 2:0;
+ }
+ if (tmp == 2) {
+ chkFlag = 2; break;
+ } else if (tmp == 0){
+ chkFlag = 0;
+ }
+ } else if (setting.check.chkStyle == consts.checkbox.STYLE) {
+ if (cNode.nocheck === true || cNode.chkDisabled === true) {
+ tmp = cNode.check_Child_State;
+ } else if (cNode.halfCheck === true) {
+ tmp = 1;
+ } else if (cNode[checkedKey] ) {
+ tmp = (cNode.check_Child_State === -1 || cNode.check_Child_State === 2) ? 2 : 1;
+ } else {
+ tmp = (cNode.check_Child_State > 0) ? 1 : 0;
+ }
+ if (tmp === 1) {
+ chkFlag = 1; break;
+ } else if (tmp === 2 && chkFlag > -1 && i > 0 && tmp !== chkFlag) {
+ chkFlag = 1; break;
+ } else if (chkFlag === 2 && tmp > -1 && tmp < 2) {
+ chkFlag = 1; break;
+ } else if (tmp > -1) {
+ chkFlag = tmp;
+ }
+ }
+ }
+ }
+ node.check_Child_State = chkFlag;
+ }
+ },
+ //method of event proxy
+ _event = {
+
+ },
+ //method of event handler
+ _handler = {
+ onCheckNode: function (event, node) {
+ if (node.chkDisabled === true) return false;
+ var setting = data.getSetting(event.data.treeId),
+ checkedKey = setting.data.key.checked;
+ if (tools.apply(setting.callback.beforeCheck, [setting.treeId, node], true) == false) return true;
+ node[checkedKey] = !node[checkedKey];
+ view.checkNodeRelation(setting, node);
+ var checkObj = $$(node, consts.id.CHECK, setting);
+ view.setChkClass(setting, checkObj, node);
+ view.repairParentChkClassWithSelf(setting, node);
+ setting.treeObj.trigger(consts.event.CHECK, [event, setting.treeId, node]);
+ return true;
+ },
+ onMouseoverCheck: function(event, node) {
+ if (node.chkDisabled === true) return false;
+ var setting = data.getSetting(event.data.treeId),
+ checkObj = $$(node, consts.id.CHECK, setting);
+ node.check_Focus = true;
+ view.setChkClass(setting, checkObj, node);
+ return true;
+ },
+ onMouseoutCheck: function(event, node) {
+ if (node.chkDisabled === true) return false;
+ var setting = data.getSetting(event.data.treeId),
+ checkObj = $$(node, consts.id.CHECK, setting);
+ node.check_Focus = false;
+ view.setChkClass(setting, checkObj, node);
+ return true;
+ }
+ },
+ //method of tools for zTree
+ _tools = {
+
+ },
+ //method of operate ztree dom
+ _view = {
+ checkNodeRelation: function(setting, node) {
+ var pNode, i, l,
+ childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ r = consts.radio;
+ if (setting.check.chkStyle == r.STYLE) {
+ var checkedList = data.getRadioCheckedList(setting);
+ if (node[checkedKey]) {
+ if (setting.check.radioType == r.TYPE_ALL) {
+ for (i = checkedList.length-1; i >= 0; i--) {
+ pNode = checkedList[i];
+ if (pNode[checkedKey] && pNode != node) {
+ pNode[checkedKey] = false;
+ checkedList.splice(i, 1);
+
+ view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode);
+ if (pNode.parentTId != node.parentTId) {
+ view.repairParentChkClassWithSelf(setting, pNode);
+ }
+ }
+ }
+ checkedList.push(node);
+ } else {
+ var parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting);
+ for (i = 0, l = parentNode[childKey].length; i < l; i++) {
+ pNode = parentNode[childKey][i];
+ if (pNode[checkedKey] && pNode != node) {
+ pNode[checkedKey] = false;
+ view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode);
+ }
+ }
+ }
+ } else if (setting.check.radioType == r.TYPE_ALL) {
+ for (i = 0, l = checkedList.length; i < l; i++) {
+ if (node == checkedList[i]) {
+ checkedList.splice(i, 1);
+ break;
+ }
+ }
+ }
+
+ } else {
+ if (node[checkedKey] && (!node[childKey] || node[childKey].length==0 || setting.check.chkboxType.Y.indexOf("s") > -1)) {
+ view.setSonNodeCheckBox(setting, node, true);
+ }
+ if (!node[checkedKey] && (!node[childKey] || node[childKey].length==0 || setting.check.chkboxType.N.indexOf("s") > -1)) {
+ view.setSonNodeCheckBox(setting, node, false);
+ }
+ if (node[checkedKey] && setting.check.chkboxType.Y.indexOf("p") > -1) {
+ view.setParentNodeCheckBox(setting, node, true);
+ }
+ if (!node[checkedKey] && setting.check.chkboxType.N.indexOf("p") > -1) {
+ view.setParentNodeCheckBox(setting, node, false);
+ }
+ }
+ },
+ makeChkClass: function(setting, node) {
+ var checkedKey = setting.data.key.checked,
+ c = consts.checkbox, r = consts.radio,
+ fullStyle = "";
+ if (node.chkDisabled === true) {
+ fullStyle = c.DISABLED;
+ } else if (node.halfCheck) {
+ fullStyle = c.PART;
+ } else if (setting.check.chkStyle == r.STYLE) {
+ fullStyle = (node.check_Child_State < 1)? c.FULL:c.PART;
+ } else {
+ fullStyle = node[checkedKey] ? ((node.check_Child_State === 2 || node.check_Child_State === -1) ? c.FULL:c.PART) : ((node.check_Child_State < 1)? c.FULL:c.PART);
+ }
+ var chkName = setting.check.chkStyle + "_" + (node[checkedKey] ? c.TRUE : c.FALSE) + "_" + fullStyle;
+ chkName = (node.check_Focus && node.chkDisabled !== true) ? chkName + "_" + c.FOCUS : chkName;
+ return consts.className.BUTTON + " " + c.DEFAULT + " " + chkName;
+ },
+ repairAllChk: function(setting, checked) {
+ if (setting.check.enable && setting.check.chkStyle === consts.checkbox.STYLE) {
+ var checkedKey = setting.data.key.checked,
+ childKey = setting.data.key.children,
+ root = data.getRoot(setting);
+ for (var i = 0, l = root[childKey].length; i<l ; i++) {
+ var node = root[childKey][i];
+ if (node.nocheck !== true && node.chkDisabled !== true) {
+ node[checkedKey] = checked;
+ }
+ view.setSonNodeCheckBox(setting, node, checked);
+ }
+ }
+ },
+ repairChkClass: function(setting, node) {
+ if (!node) return;
+ data.makeChkFlag(setting, node);
+ if (node.nocheck !== true) {
+ var checkObj = $$(node, consts.id.CHECK, setting);
+ view.setChkClass(setting, checkObj, node);
+ }
+ },
+ repairParentChkClass: function(setting, node) {
+ if (!node || !node.parentTId) return;
+ var pNode = node.getParentNode();
+ view.repairChkClass(setting, pNode);
+ view.repairParentChkClass(setting, pNode);
+ },
+ repairParentChkClassWithSelf: function(setting, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children;
+ if (node[childKey] && node[childKey].length > 0) {
+ view.repairParentChkClass(setting, node[childKey][0]);
+ } else {
+ view.repairParentChkClass(setting, node);
+ }
+ },
+ repairSonChkDisabled: function(setting, node, chkDisabled, inherit) {
+ if (!node) return;
+ var childKey = setting.data.key.children;
+ if (node.chkDisabled != chkDisabled) {
+ node.chkDisabled = chkDisabled;
+ }
+ view.repairChkClass(setting, node);
+ if (node[childKey] && inherit) {
+ for (var i = 0, l = node[childKey].length; i < l; i++) {
+ var sNode = node[childKey][i];
+ view.repairSonChkDisabled(setting, sNode, chkDisabled, inherit);
+ }
+ }
+ },
+ repairParentChkDisabled: function(setting, node, chkDisabled, inherit) {
+ if (!node) return;
+ if (node.chkDisabled != chkDisabled && inherit) {
+ node.chkDisabled = chkDisabled;
+ }
+ view.repairChkClass(setting, node);
+ view.repairParentChkDisabled(setting, node.getParentNode(), chkDisabled, inherit);
+ },
+ setChkClass: function(setting, obj, node) {
+ if (!obj) return;
+ if (node.nocheck === true) {
+ obj.hide();
+ } else {
+ obj.show();
+ }
+ obj.removeClass();
+ obj.addClass(view.makeChkClass(setting, node));
+ },
+ setParentNodeCheckBox: function(setting, node, value, srcNode) {
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ checkObj = $$(node, consts.id.CHECK, setting);
+ if (!srcNode) srcNode = node;
+ data.makeChkFlag(setting, node);
+ if (node.nocheck !== true && node.chkDisabled !== true) {
+ node[checkedKey] = value;
+ view.setChkClass(setting, checkObj, node);
+ if (setting.check.autoCheckTrigger && node != srcNode) {
+ setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]);
+ }
+ }
+ if (node.parentTId) {
+ var pSign = true;
+ if (!value) {
+ var pNodes = node.getParentNode()[childKey];
+ for (var i = 0, l = pNodes.length; i < l; i++) {
+ if ((pNodes[i].nocheck !== true && pNodes[i].chkDisabled !== true && pNodes[i][checkedKey])
+ || ((pNodes[i].nocheck === true || pNodes[i].chkDisabled === true) && pNodes[i].check_Child_State > 0)) {
+ pSign = false;
+ break;
+ }
+ }
+ }
+ if (pSign) {
+ view.setParentNodeCheckBox(setting, node.getParentNode(), value, srcNode);
+ }
+ }
+ },
+ setSonNodeCheckBox: function(setting, node, value, srcNode) {
+ if (!node) return;
+ var childKey = setting.data.key.children,
+ checkedKey = setting.data.key.checked,
+ checkObj = $$(node, consts.id.CHECK, setting);
+ if (!srcNode) srcNode = node;
+
+ var hasDisable = false;
+ if (node[childKey]) {
+ for (var i = 0, l = node[childKey].length; i < l && node.chkDisabled !== true; i++) {
+ var sNode = node[childKey][i];
+ view.setSonNodeCheckBox(setting, sNode, value, srcNode);
+ if (sNode.chkDisabled === true) hasDisable = true;
+ }
+ }
+
+ if (node != data.getRoot(setting) && node.chkDisabled !== true) {
+ if (hasDisable && node.nocheck !== true) {
+ data.makeChkFlag(setting, node);
+ }
+ if (node.nocheck !== true && node.chkDisabled !== true) {
+ node[checkedKey] = value;
+ if (!hasDisable) node.check_Child_State = (node[childKey] && node[childKey].length > 0) ? (value ? 2 : 0) : -1;
+ } else {
+ node.check_Child_State = -1;
+ }
+ view.setChkClass(setting, checkObj, node);
+ if (setting.check.autoCheckTrigger && node != srcNode && node.nocheck !== true && node.chkDisabled !== true) {
+ setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]);
+ }
+ }
+
+ }
+ },
+
+ _z = {
+ tools: _tools,
+ view: _view,
+ event: _event,
+ data: _data
+ };
+ $.extend(true, $.fn.zTree.consts, _consts);
+ $.extend(true, $.fn.zTree._z, _z);
+
+ var zt = $.fn.zTree,
+ tools = zt._z.tools,
+ consts = zt.consts,
+ view = zt._z.view,
+ data = zt._z.data,
+ event = zt._z.event,
+ $$ = tools.$;
+
+ data.exSetting(_setting);
+ data.addInitBind(_bindEvent);
+ data.addInitUnBind(_unbindEvent);
+ data.addInitCache(_initCache);
+ data.addInitNode(_initNode);
+ data.addInitProxy(_eventProxy, true);
+ data.addInitRoot(_initRoot);
+ data.addBeforeA(_beforeA);
+ data.addZTreeTools(_zTreeTools);
+
+ var _createNodes = view.createNodes;
+ view.createNodes = function(setting, level, nodes, parentNode) {
+ if (_createNodes) _createNodes.apply(view, arguments);
+ if (!nodes) return;
+ view.repairParentChkClassWithSelf(setting, parentNode);
+ }
+ var _removeNode = view.removeNode;
+ view.removeNode = function(setting, node) {
+ var parentNode = node.getParentNode();
+ if (_removeNode) _removeNode.apply(view, arguments);
+ if (!node || !parentNode) return;
+ view.repairChkClass(setting, parentNode);
+ view.repairParentChkClass(setting, parentNode);
+ }
+
+ var _appendNodes = view.appendNodes;
+ view.appendNodes = function(setting, level, nodes, parentNode, initFlag, openFlag) {
+ var html = "";
+ if (_appendNodes) {
+ html = _appendNodes.apply(view, arguments);
+ }
+ if (parentNode) {
+ data.makeChkFlag(setting, parentNode);
+ }
+ return html;
+ }
+})(jQuery); \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.excheck.min.js b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.excheck.min.js
new file mode 100755
index 00000000..9c56f461
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.excheck.min.js
@@ -0,0 +1,34 @@
+/*
+ * JQuery zTree excheck v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(m){var p,q,r,o={event:{CHECK:"ztree_check"},id:{CHECK:"_check"},checkbox:{STYLE:"checkbox",DEFAULT:"chk",DISABLED:"disable",FALSE:"false",TRUE:"true",FULL:"full",PART:"part",FOCUS:"focus"},radio:{STYLE:"radio",TYPE_ALL:"all",TYPE_LEVEL:"level"}},v={check:{enable:!1,autoCheckTrigger:!1,chkStyle:o.checkbox.STYLE,nocheckInherit:!1,chkDisabledInherit:!1,radioType:o.radio.TYPE_LEVEL,chkboxType:{Y:"ps",N:"ps"}},data:{key:{checked:"checked"}},callback:{beforeCheck:null,onCheck:null}};p=function(c,
+a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=b.data.key.checked;if(k.apply(b.callback.beforeCheck,[b.treeId,a],!0)==!1)return!0;a[d]=!a[d];e.checkNodeRelation(b,a);d=n(a,j.id.CHECK,b);e.setChkClass(b,d,a);e.repairParentChkClassWithSelf(b,a);b.treeObj.trigger(j.event.CHECK,[c,b.treeId,a]);return!0};q=function(c,a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,j.id.CHECK,b);a.check_Focus=!0;e.setChkClass(b,d,a);return!0};r=function(c,a){if(a.chkDisabled===
+!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,j.id.CHECK,b);a.check_Focus=!1;e.setChkClass(b,d,a);return!0};m.extend(!0,m.fn.zTree.consts,o);m.extend(!0,m.fn.zTree._z,{tools:{},view:{checkNodeRelation:function(c,a){var b,d,h,i=c.data.key.children,l=c.data.key.checked;b=j.radio;if(c.check.chkStyle==b.STYLE){var g=f.getRadioCheckedList(c);if(a[l])if(c.check.radioType==b.TYPE_ALL){for(d=g.length-1;d>=0;d--)b=g[d],b[l]&&b!=a&&(b[l]=!1,g.splice(d,1),e.setChkClass(c,n(b,j.id.CHECK,c),b),b.parentTId!=
+a.parentTId&&e.repairParentChkClassWithSelf(c,b));g.push(a)}else{g=a.parentTId?a.getParentNode():f.getRoot(c);for(d=0,h=g[i].length;d<h;d++)b=g[i][d],b[l]&&b!=a&&(b[l]=!1,e.setChkClass(c,n(b,j.id.CHECK,c),b))}else if(c.check.radioType==b.TYPE_ALL)for(d=0,h=g.length;d<h;d++)if(a==g[d]){g.splice(d,1);break}}else a[l]&&(!a[i]||a[i].length==0||c.check.chkboxType.Y.indexOf("s")>-1)&&e.setSonNodeCheckBox(c,a,!0),!a[l]&&(!a[i]||a[i].length==0||c.check.chkboxType.N.indexOf("s")>-1)&&e.setSonNodeCheckBox(c,
+a,!1),a[l]&&c.check.chkboxType.Y.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!0),!a[l]&&c.check.chkboxType.N.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!1)},makeChkClass:function(c,a){var b=c.data.key.checked,d=j.checkbox,h=j.radio,i="",i=a.chkDisabled===!0?d.DISABLED:a.halfCheck?d.PART:c.check.chkStyle==h.STYLE?a.check_Child_State<1?d.FULL:d.PART:a[b]?a.check_Child_State===2||a.check_Child_State===-1?d.FULL:d.PART:a.check_Child_State<1?d.FULL:d.PART,b=c.check.chkStyle+"_"+(a[b]?d.TRUE:d.FALSE)+
+"_"+i,b=a.check_Focus&&a.chkDisabled!==!0?b+"_"+d.FOCUS:b;return j.className.BUTTON+" "+d.DEFAULT+" "+b},repairAllChk:function(c,a){if(c.check.enable&&c.check.chkStyle===j.checkbox.STYLE)for(var b=c.data.key.checked,d=c.data.key.children,h=f.getRoot(c),i=0,l=h[d].length;i<l;i++){var g=h[d][i];g.nocheck!==!0&&g.chkDisabled!==!0&&(g[b]=a);e.setSonNodeCheckBox(c,g,a)}},repairChkClass:function(c,a){if(a&&(f.makeChkFlag(c,a),a.nocheck!==!0)){var b=n(a,j.id.CHECK,c);e.setChkClass(c,b,a)}},repairParentChkClass:function(c,
+a){if(a&&a.parentTId){var b=a.getParentNode();e.repairChkClass(c,b);e.repairParentChkClass(c,b)}},repairParentChkClassWithSelf:function(c,a){if(a){var b=c.data.key.children;a[b]&&a[b].length>0?e.repairParentChkClass(c,a[b][0]):e.repairParentChkClass(c,a)}},repairSonChkDisabled:function(c,a,b,d){if(a){var h=c.data.key.children;if(a.chkDisabled!=b)a.chkDisabled=b;e.repairChkClass(c,a);if(a[h]&&d)for(var i=0,l=a[h].length;i<l;i++)e.repairSonChkDisabled(c,a[h][i],b,d)}},repairParentChkDisabled:function(c,
+a,b,d){if(a){if(a.chkDisabled!=b&&d)a.chkDisabled=b;e.repairChkClass(c,a);e.repairParentChkDisabled(c,a.getParentNode(),b,d)}},setChkClass:function(c,a,b){a&&(b.nocheck===!0?a.hide():a.show(),a.removeClass(),a.addClass(e.makeChkClass(c,b)))},setParentNodeCheckBox:function(c,a,b,d){var h=c.data.key.children,i=c.data.key.checked,l=n(a,j.id.CHECK,c);d||(d=a);f.makeChkFlag(c,a);a.nocheck!==!0&&a.chkDisabled!==!0&&(a[i]=b,e.setChkClass(c,l,a),c.check.autoCheckTrigger&&a!=d&&c.treeObj.trigger(j.event.CHECK,
+[null,c.treeId,a]));if(a.parentTId){l=!0;if(!b)for(var h=a.getParentNode()[h],g=0,k=h.length;g<k;g++)if(h[g].nocheck!==!0&&h[g].chkDisabled!==!0&&h[g][i]||(h[g].nocheck===!0||h[g].chkDisabled===!0)&&h[g].check_Child_State>0){l=!1;break}l&&e.setParentNodeCheckBox(c,a.getParentNode(),b,d)}},setSonNodeCheckBox:function(c,a,b,d){if(a){var h=c.data.key.children,i=c.data.key.checked,l=n(a,j.id.CHECK,c);d||(d=a);var g=!1;if(a[h])for(var k=0,m=a[h].length;k<m&&a.chkDisabled!==!0;k++){var o=a[h][k];e.setSonNodeCheckBox(c,
+o,b,d);o.chkDisabled===!0&&(g=!0)}if(a!=f.getRoot(c)&&a.chkDisabled!==!0){g&&a.nocheck!==!0&&f.makeChkFlag(c,a);if(a.nocheck!==!0&&a.chkDisabled!==!0){if(a[i]=b,!g)a.check_Child_State=a[h]&&a[h].length>0?b?2:0:-1}else a.check_Child_State=-1;e.setChkClass(c,l,a);c.check.autoCheckTrigger&&a!=d&&a.nocheck!==!0&&a.chkDisabled!==!0&&c.treeObj.trigger(j.event.CHECK,[null,c.treeId,a])}}}},event:{},data:{getRadioCheckedList:function(c){for(var a=f.getRoot(c).radioCheckedList,b=0,d=a.length;b<d;b++)f.getNodeCache(c,
+a[b].tId)||(a.splice(b,1),b--,d--);return a},getCheckStatus:function(c,a){if(!c.check.enable||a.nocheck||a.chkDisabled)return null;var b=c.data.key.checked;return{checked:a[b],half:a.halfCheck?a.halfCheck:c.check.chkStyle==j.radio.STYLE?a.check_Child_State===2:a[b]?a.check_Child_State>-1&&a.check_Child_State<2:a.check_Child_State>0}},getTreeCheckedNodes:function(c,a,b,d){if(!a)return[];for(var h=c.data.key.children,i=c.data.key.checked,e=b&&c.check.chkStyle==j.radio.STYLE&&c.check.radioType==j.radio.TYPE_ALL,
+d=!d?[]:d,g=0,k=a.length;g<k;g++){if(a[g].nocheck!==!0&&a[g].chkDisabled!==!0&&a[g][i]==b&&(d.push(a[g]),e))break;f.getTreeCheckedNodes(c,a[g][h],b,d);if(e&&d.length>0)break}return d},getTreeChangeCheckedNodes:function(c,a,b){if(!a)return[];for(var d=c.data.key.children,h=c.data.key.checked,b=!b?[]:b,i=0,e=a.length;i<e;i++)a[i].nocheck!==!0&&a[i].chkDisabled!==!0&&a[i][h]!=a[i].checkedOld&&b.push(a[i]),f.getTreeChangeCheckedNodes(c,a[i][d],b);return b},makeChkFlag:function(c,a){if(a){var b=c.data.key.children,
+d=c.data.key.checked,h=-1;if(a[b])for(var i=0,e=a[b].length;i<e;i++){var g=a[b][i],f=-1;if(c.check.chkStyle==j.radio.STYLE)if(f=g.nocheck===!0||g.chkDisabled===!0?g.check_Child_State:g.halfCheck===!0?2:g[d]?2:g.check_Child_State>0?2:0,f==2){h=2;break}else f==0&&(h=0);else if(c.check.chkStyle==j.checkbox.STYLE)if(f=g.nocheck===!0||g.chkDisabled===!0?g.check_Child_State:g.halfCheck===!0?1:g[d]?g.check_Child_State===-1||g.check_Child_State===2?2:1:g.check_Child_State>0?1:0,f===1){h=1;break}else if(f===
+2&&h>-1&&i>0&&f!==h){h=1;break}else if(h===2&&f>-1&&f<2){h=1;break}else f>-1&&(h=f)}a.check_Child_State=h}}}});var m=m.fn.zTree,k=m._z.tools,j=m.consts,e=m._z.view,f=m._z.data,n=k.$;f.exSetting(v);f.addInitBind(function(c){c.treeObj.bind(j.event.CHECK,function(a,b,d,h){a.srcEvent=b;k.apply(c.callback.onCheck,[a,d,h])})});f.addInitUnBind(function(c){c.treeObj.unbind(j.event.CHECK)});f.addInitCache(function(){});f.addInitNode(function(c,a,b,d){if(b){a=c.data.key.checked;typeof b[a]=="string"&&(b[a]=
+k.eqs(b[a],"true"));b[a]=!!b[a];b.checkedOld=b[a];if(typeof b.nocheck=="string")b.nocheck=k.eqs(b.nocheck,"true");b.nocheck=!!b.nocheck||c.check.nocheckInherit&&d&&!!d.nocheck;if(typeof b.chkDisabled=="string")b.chkDisabled=k.eqs(b.chkDisabled,"true");b.chkDisabled=!!b.chkDisabled||c.check.chkDisabledInherit&&d&&!!d.chkDisabled;if(typeof b.halfCheck=="string")b.halfCheck=k.eqs(b.halfCheck,"true");b.halfCheck=!!b.halfCheck;b.check_Child_State=-1;b.check_Focus=!1;b.getCheckStatus=function(){return f.getCheckStatus(c,
+b)};c.check.chkStyle==j.radio.STYLE&&c.check.radioType==j.radio.TYPE_ALL&&b[a]&&f.getRoot(c).radioCheckedList.push(b)}});f.addInitProxy(function(c){var a=c.target,b=f.getSetting(c.data.treeId),d="",h=null,e="",l=null;if(k.eqs(c.type,"mouseover")){if(b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=k.getNodeMainDom(a).id,e="mouseoverCheck"}else if(k.eqs(c.type,"mouseout")){if(b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=
+k.getNodeMainDom(a).id,e="mouseoutCheck"}else if(k.eqs(c.type,"click")&&b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=k.getNodeMainDom(a).id,e="checkNode";if(d.length>0)switch(h=f.getNodeCache(b,d),e){case "checkNode":l=p;break;case "mouseoverCheck":l=q;break;case "mouseoutCheck":l=r}return{stop:e==="checkNode",node:h,nodeEventType:e,nodeEventCallback:l,treeEventType:"",treeEventCallback:null}},!0);f.addInitRoot(function(c){f.getRoot(c).radioCheckedList=[]});
+f.addBeforeA(function(c,a,b){c.check.enable&&(f.makeChkFlag(c,a),b.push("<span ID='",a.tId,j.id.CHECK,"' class='",e.makeChkClass(c,a),"' treeNode",j.id.CHECK,a.nocheck===!0?" style='display:none;'":"","></span>"))});f.addZTreeTools(function(c,a){a.checkNode=function(a,b,c,f){var g=this.setting.data.key.checked;if(a.chkDisabled!==!0&&(b!==!0&&b!==!1&&(b=!a[g]),f=!!f,(a[g]!==b||c)&&!(f&&k.apply(this.setting.callback.beforeCheck,[this.setting.treeId,a],!0)==!1)&&k.uCanDo(this.setting)&&this.setting.check.enable&&
+a.nocheck!==!0))a[g]=b,b=n(a,j.id.CHECK,this.setting),(c||this.setting.check.chkStyle===j.radio.STYLE)&&e.checkNodeRelation(this.setting,a),e.setChkClass(this.setting,b,a),e.repairParentChkClassWithSelf(this.setting,a),f&&this.setting.treeObj.trigger(j.event.CHECK,[null,this.setting.treeId,a])};a.checkAllNodes=function(a){e.repairAllChk(this.setting,!!a)};a.getCheckedNodes=function(a){var b=this.setting.data.key.children;return f.getTreeCheckedNodes(this.setting,f.getRoot(this.setting)[b],a!==!1)};
+a.getChangeCheckedNodes=function(){var a=this.setting.data.key.children;return f.getTreeChangeCheckedNodes(this.setting,f.getRoot(this.setting)[a])};a.setChkDisabled=function(a,b,c,f){b=!!b;c=!!c;e.repairSonChkDisabled(this.setting,a,b,!!f);e.repairParentChkDisabled(this.setting,a.getParentNode(),b,c)};var b=a.updateNode;a.updateNode=function(c,f){b&&b.apply(a,arguments);if(c&&this.setting.check.enable&&n(c,this.setting).get(0)&&k.uCanDo(this.setting)){var i=n(c,j.id.CHECK,this.setting);(f==!0||this.setting.check.chkStyle===
+j.radio.STYLE)&&e.checkNodeRelation(this.setting,c);e.setChkClass(this.setting,i,c);e.repairParentChkClassWithSelf(this.setting,c)}}});var s=e.createNodes;e.createNodes=function(c,a,b,d){s&&s.apply(e,arguments);b&&e.repairParentChkClassWithSelf(c,d)};var t=e.removeNode;e.removeNode=function(c,a){var b=a.getParentNode();t&&t.apply(e,arguments);a&&b&&(e.repairChkClass(c,b),e.repairParentChkClass(c,b))};var u=e.appendNodes;e.appendNodes=function(c,a,b,d,h,i){var j="";u&&(j=u.apply(e,arguments));d&&f.makeChkFlag(c,
+d);return j}})(jQuery);
diff --git a/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exedit.js b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exedit.js
new file mode 100755
index 00000000..70a20936
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exedit.js
@@ -0,0 +1,1191 @@
+/*
+ * JQuery zTree exedit v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function($){
+ //default consts of exedit
+ var _consts = {
+ event: {
+ DRAG: "ztree_drag",
+ DROP: "ztree_drop",
+ RENAME: "ztree_rename",
+ DRAGMOVE:"ztree_dragmove"
+ },
+ id: {
+ EDIT: "_edit",
+ INPUT: "_input",
+ REMOVE: "_remove"
+ },
+ move: {
+ TYPE_INNER: "inner",
+ TYPE_PREV: "prev",
+ TYPE_NEXT: "next"
+ },
+ node: {
+ CURSELECTED_EDIT: "curSelectedNode_Edit",
+ TMPTARGET_TREE: "tmpTargetzTree",
+ TMPTARGET_NODE: "tmpTargetNode"
+ }
+ },
+ //default setting of exedit
+ _setting = {
+ edit: {
+ enable: false,
+ editNameSelectAll: false,
+ showRemoveBtn: true,
+ showRenameBtn: true,
+ removeTitle: "remove",
+ renameTitle: "rename",
+ drag: {
+ autoExpandTrigger: false,
+ isCopy: true,
+ isMove: true,
+ prev: true,
+ next: true,
+ inner: true,
+ minMoveSize: 5,
+ borderMax: 10,
+ borderMin: -5,
+ maxShowNodeNum: 5,
+ autoOpenTime: 500
+ }
+ },
+ view: {
+ addHoverDom: null,
+ removeHoverDom: null
+ },
+ callback: {
+ beforeDrag:null,
+ beforeDragOpen:null,
+ beforeDrop:null,
+ beforeEditName:null,
+ beforeRename:null,
+ onDrag:null,
+ onDragMove:null,
+ onDrop:null,
+ onRename:null
+ }
+ },
+ //default root of exedit
+ _initRoot = function (setting) {
+ var r = data.getRoot(setting), rs = data.getRoots();
+ r.curEditNode = null;
+ r.curEditInput = null;
+ r.curHoverNode = null;
+ r.dragFlag = 0;
+ r.dragNodeShowBefore = [];
+ r.dragMaskList = new Array();
+ rs.showHoverDom = true;
+ },
+ //default cache of exedit
+ _initCache = function(treeId) {},
+ //default bind event of exedit
+ _bindEvent = function(setting) {
+ var o = setting.treeObj;
+ var c = consts.event;
+ o.bind(c.RENAME, function (event, treeId, treeNode, isCancel) {
+ tools.apply(setting.callback.onRename, [event, treeId, treeNode, isCancel]);
+ });
+
+ o.bind(c.DRAG, function (event, srcEvent, treeId, treeNodes) {
+ tools.apply(setting.callback.onDrag, [srcEvent, treeId, treeNodes]);
+ });
+
+ o.bind(c.DRAGMOVE,function(event, srcEvent, treeId, treeNodes){
+ tools.apply(setting.callback.onDragMove,[srcEvent, treeId, treeNodes]);
+ });
+
+ o.bind(c.DROP, function (event, srcEvent, treeId, treeNodes, targetNode, moveType, isCopy) {
+ tools.apply(setting.callback.onDrop, [srcEvent, treeId, treeNodes, targetNode, moveType, isCopy]);
+ });
+ },
+ _unbindEvent = function(setting) {
+ var o = setting.treeObj;
+ var c = consts.event;
+ o.unbind(c.RENAME);
+ o.unbind(c.DRAG);
+ o.unbind(c.DRAGMOVE);
+ o.unbind(c.DROP);
+ },
+ //default event proxy of exedit
+ _eventProxy = function(e) {
+ var target = e.target,
+ setting = data.getSetting(e.data.treeId),
+ relatedTarget = e.relatedTarget,
+ tId = "", node = null,
+ nodeEventType = "", treeEventType = "",
+ nodeEventCallback = null, treeEventCallback = null,
+ tmp = null;
+
+ if (tools.eqs(e.type, "mouseover")) {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "hoverOverNode";
+ }
+ } else if (tools.eqs(e.type, "mouseout")) {
+ tmp = tools.getMDom(setting, relatedTarget, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (!tmp) {
+ tId = "remove";
+ nodeEventType = "hoverOutNode";
+ }
+ } else if (tools.eqs(e.type, "mousedown")) {
+ tmp = tools.getMDom(setting, target, [{tagName:"a", attrName:"treeNode"+consts.id.A}]);
+ if (tmp) {
+ tId = tools.getNodeMainDom(tmp).id;
+ nodeEventType = "mousedownNode";
+ }
+ }
+ if (tId.length>0) {
+ node = data.getNodeCache(setting, tId);
+ switch (nodeEventType) {
+ case "mousedownNode" :
+ nodeEventCallback = _handler.onMousedownNode;
+ break;
+ case "hoverOverNode" :
+ nodeEventCallback = _handler.onHoverOverNode;
+ break;
+ case "hoverOutNode" :
+ nodeEventCallback = _handler.onHoverOutNode;
+ break;
+ }
+ }
+ var proxyResult = {
+ stop: false,
+ node: node,
+ nodeEventType: nodeEventType,
+ nodeEventCallback: nodeEventCallback,
+ treeEventType: treeEventType,
+ treeEventCallback: treeEventCallback
+ };
+ return proxyResult
+ },
+ //default init node of exedit
+ _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
+ if (!n) return;
+ n.isHover = false;
+ n.editNameFlag = false;
+ },
+ //update zTreeObj, add method of edit
+ _zTreeTools = function(setting, zTreeTools) {
+ zTreeTools.cancelEditName = function(newName) {
+ var root = data.getRoot(this.setting);
+ if (!root.curEditNode) return;
+ view.cancelCurEditNode(this.setting, newName?newName:null, true);
+ }
+ zTreeTools.copyNode = function(targetNode, node, moveType, isSilent) {
+ if (!node) return null;
+ if (targetNode && !targetNode.isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) return null;
+ var _this = this,
+ newNode = tools.clone(node);
+ if (!targetNode) {
+ targetNode = null;
+ moveType = consts.move.TYPE_INNER;
+ }
+ if (moveType == consts.move.TYPE_INNER) {
+ function copyCallback() {
+ view.addNodes(_this.setting, targetNode, [newNode], isSilent);
+ }
+
+ if (tools.canAsync(this.setting, targetNode)) {
+ view.asyncNode(this.setting, targetNode, isSilent, copyCallback);
+ } else {
+ copyCallback();
+ }
+ } else {
+ view.addNodes(this.setting, targetNode.parentNode, [newNode], isSilent);
+ view.moveNode(this.setting, targetNode, newNode, moveType, false, isSilent);
+ }
+ return newNode;
+ }
+ zTreeTools.editName = function(node) {
+ if (!node || !node.tId || node !== data.getNodeCache(this.setting, node.tId)) return;
+ if (node.parentTId) view.expandCollapseParentNode(this.setting, node.getParentNode(), true);
+ view.editNode(this.setting, node)
+ }
+ zTreeTools.moveNode = function(targetNode, node, moveType, isSilent) {
+ if (!node) return node;
+ if (targetNode && !targetNode.isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) {
+ return null;
+ } else if (targetNode && ((node.parentTId == targetNode.tId && moveType == consts.move.TYPE_INNER) || $$(node, this.setting).find("#" + targetNode.tId).length > 0)) {
+ return null;
+ } else if (!targetNode) {
+ targetNode = null;
+ }
+ var _this = this;
+ function moveCallback() {
+ view.moveNode(_this.setting, targetNode, node, moveType, false, isSilent);
+ }
+ if (tools.canAsync(this.setting, targetNode) && moveType === consts.move.TYPE_INNER) {
+ view.asyncNode(this.setting, targetNode, isSilent, moveCallback);
+ } else {
+ moveCallback();
+ }
+ return node;
+ }
+ zTreeTools.setEditable = function(editable) {
+ this.setting.edit.enable = editable;
+ return this.refresh();
+ }
+ },
+ //method of operate data
+ _data = {
+ setSonNodeLevel: function(setting, parentNode, node) {
+ if (!node) return;
+ var childKey = setting.data.key.children;
+ node.level = (parentNode)? parentNode.level + 1 : 0;
+ if (!node[childKey]) return;
+ for (var i = 0, l = node[childKey].length; i < l; i++) {
+ if (node[childKey][i]) data.setSonNodeLevel(setting, node, node[childKey][i]);
+ }
+ }
+ },
+ //method of event proxy
+ _event = {
+
+ },
+ //method of event handler
+ _handler = {
+ onHoverOverNode: function(event, node) {
+ var setting = data.getSetting(event.data.treeId),
+ root = data.getRoot(setting);
+ if (root.curHoverNode != node) {
+ _handler.onHoverOutNode(event);
+ }
+ root.curHoverNode = node;
+ view.addHoverDom(setting, node);
+ },
+ onHoverOutNode: function(event, node) {
+ var setting = data.getSetting(event.data.treeId),
+ root = data.getRoot(setting);
+ if (root.curHoverNode && !data.isSelectedNode(setting, root.curHoverNode)) {
+ view.removeTreeDom(setting, root.curHoverNode);
+ root.curHoverNode = null;
+ }
+ },
+ onMousedownNode: function(eventMouseDown, _node) {
+ var i,l,
+ setting = data.getSetting(eventMouseDown.data.treeId),
+ root = data.getRoot(setting), roots = data.getRoots();
+ //right click can't drag & drop
+ if (eventMouseDown.button == 2 || !setting.edit.enable || (!setting.edit.drag.isCopy && !setting.edit.drag.isMove)) return true;
+
+ //input of edit node name can't drag & drop
+ var target = eventMouseDown.target,
+ _nodes = data.getRoot(setting).curSelectedList,
+ nodes = [];
+ if (!data.isSelectedNode(setting, _node)) {
+ nodes = [_node];
+ } else {
+ for (i=0, l=_nodes.length; i<l; i++) {
+ if (_nodes[i].editNameFlag && tools.eqs(target.tagName, "input") && target.getAttribute("treeNode"+consts.id.INPUT) !== null) {
+ return true;
+ }
+ nodes.push(_nodes[i]);
+ if (nodes[0].parentTId !== _nodes[i].parentTId) {
+ nodes = [_node];
+ break;
+ }
+ }
+ }
+
+ view.editNodeBlur = true;
+ view.cancelCurEditNode(setting);
+
+ var doc = $(setting.treeObj.get(0).ownerDocument),
+ body = $(setting.treeObj.get(0).ownerDocument.body), curNode, tmpArrow, tmpTarget,
+ isOtherTree = false,
+ targetSetting = setting,
+ sourceSetting = setting,
+ preNode, nextNode,
+ preTmpTargetNodeId = null,
+ preTmpMoveType = null,
+ tmpTargetNodeId = null,
+ moveType = consts.move.TYPE_INNER,
+ mouseDownX = eventMouseDown.clientX,
+ mouseDownY = eventMouseDown.clientY,
+ startTime = (new Date()).getTime();
+
+ if (tools.uCanDo(setting)) {
+ doc.bind("mousemove", _docMouseMove);
+ }
+ function _docMouseMove(event) {
+ //avoid start drag after click node
+ if (root.dragFlag == 0 && Math.abs(mouseDownX - event.clientX) < setting.edit.drag.minMoveSize
+ && Math.abs(mouseDownY - event.clientY) < setting.edit.drag.minMoveSize) {
+ return true;
+ }
+ var i, l, tmpNode, tmpDom, tmpNodes,
+ childKey = setting.data.key.children;
+ body.css("cursor", "pointer");
+
+ if (root.dragFlag == 0) {
+ if (tools.apply(setting.callback.beforeDrag, [setting.treeId, nodes], true) == false) {
+ _docMouseUp(event);
+ return true;
+ }
+
+ for (i=0, l=nodes.length; i<l; i++) {
+ if (i==0) {
+ root.dragNodeShowBefore = [];
+ }
+ tmpNode = nodes[i];
+ if (tmpNode.isParent && tmpNode.open) {
+ view.expandCollapseNode(setting, tmpNode, !tmpNode.open);
+ root.dragNodeShowBefore[tmpNode.tId] = true;
+ } else {
+ root.dragNodeShowBefore[tmpNode.tId] = false;
+ }
+ }
+
+ root.dragFlag = 1;
+ roots.showHoverDom = false;
+ tools.showIfameMask(setting, true);
+
+ //sort
+ var isOrder = true, lastIndex = -1;
+ if (nodes.length>1) {
+ var pNodes = nodes[0].parentTId ? nodes[0].getParentNode()[childKey] : data.getNodes(setting);
+ tmpNodes = [];
+ for (i=0, l=pNodes.length; i<l; i++) {
+ if (root.dragNodeShowBefore[pNodes[i].tId] !== undefined) {
+ if (isOrder && lastIndex > -1 && (lastIndex+1) !== i) {
+ isOrder = false;
+ }
+ tmpNodes.push(pNodes[i]);
+ lastIndex = i;
+ }
+ if (nodes.length === tmpNodes.length) {
+ nodes = tmpNodes;
+ break;
+ }
+ }
+ }
+ if (isOrder) {
+ preNode = nodes[0].getPreNode();
+ nextNode = nodes[nodes.length-1].getNextNode();
+ }
+
+ //set node in selected
+ curNode = $$("<ul class='zTreeDragUL'></ul>", setting);
+ for (i=0, l=nodes.length; i<l; i++) {
+ tmpNode = nodes[i];
+ tmpNode.editNameFlag = false;
+ view.selectNode(setting, tmpNode, i>0);
+ view.removeTreeDom(setting, tmpNode);
+
+ if (i > setting.edit.drag.maxShowNodeNum-1) {
+ continue;
+ }
+
+ tmpDom = $$("<li id='"+ tmpNode.tId +"_tmp'></li>", setting);
+ tmpDom.append($$(tmpNode, consts.id.A, setting).clone());
+ tmpDom.css("padding", "0");
+ tmpDom.children("#" + tmpNode.tId + consts.id.A).removeClass(consts.node.CURSELECTED);
+ curNode.append(tmpDom);
+ if (i == setting.edit.drag.maxShowNodeNum-1) {
+ tmpDom = $$("<li id='"+ tmpNode.tId +"_moretmp'><a> ... </a></li>", setting);
+ curNode.append(tmpDom);
+ }
+ }
+ curNode.attr("id", nodes[0].tId + consts.id.UL + "_tmp");
+ curNode.addClass(setting.treeObj.attr("class"));
+ curNode.appendTo(body);
+
+ tmpArrow = $$("<span class='tmpzTreeMove_arrow'></span>", setting);
+ tmpArrow.attr("id", "zTreeMove_arrow_tmp");
+ tmpArrow.appendTo(body);
+
+ setting.treeObj.trigger(consts.event.DRAG, [event, setting.treeId, nodes]);
+ }
+
+ if (root.dragFlag == 1) {
+ if (tmpTarget && tmpArrow.attr("id") == event.target.id && tmpTargetNodeId && (event.clientX + doc.scrollLeft()+2) > ($("#" + tmpTargetNodeId + consts.id.A, tmpTarget).offset().left)) {
+ var xT = $("#" + tmpTargetNodeId + consts.id.A, tmpTarget);
+ event.target = (xT.length > 0) ? xT.get(0) : event.target;
+ } else if (tmpTarget) {
+ tmpTarget.removeClass(consts.node.TMPTARGET_TREE);
+ if (tmpTargetNodeId) $("#" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + "_" + consts.move.TYPE_PREV)
+ .removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_INNER);
+ }
+ tmpTarget = null;
+ tmpTargetNodeId = null;
+
+ //judge drag & drop in multi ztree
+ isOtherTree = false;
+ targetSetting = setting;
+ var settings = data.getSettings();
+ for (var s in settings) {
+ if (settings[s].treeId && settings[s].edit.enable && settings[s].treeId != setting.treeId
+ && (event.target.id == settings[s].treeId || $(event.target).parents("#" + settings[s].treeId).length>0)) {
+ isOtherTree = true;
+ targetSetting = settings[s];
+ }
+ }
+
+ var docScrollTop = doc.scrollTop(),
+ docScrollLeft = doc.scrollLeft(),
+ treeOffset = targetSetting.treeObj.offset(),
+ scrollHeight = targetSetting.treeObj.get(0).scrollHeight,
+ scrollWidth = targetSetting.treeObj.get(0).scrollWidth,
+ dTop = (event.clientY + docScrollTop - treeOffset.top),
+ dBottom = (targetSetting.treeObj.height() + treeOffset.top - event.clientY - docScrollTop),
+ dLeft = (event.clientX + docScrollLeft - treeOffset.left),
+ dRight = (targetSetting.treeObj.width() + treeOffset.left - event.clientX - docScrollLeft),
+ isTop = (dTop < setting.edit.drag.borderMax && dTop > setting.edit.drag.borderMin),
+ isBottom = (dBottom < setting.edit.drag.borderMax && dBottom > setting.edit.drag.borderMin),
+ isLeft = (dLeft < setting.edit.drag.borderMax && dLeft > setting.edit.drag.borderMin),
+ isRight = (dRight < setting.edit.drag.borderMax && dRight > setting.edit.drag.borderMin),
+ isTreeInner = dTop > setting.edit.drag.borderMin && dBottom > setting.edit.drag.borderMin && dLeft > setting.edit.drag.borderMin && dRight > setting.edit.drag.borderMin,
+ isTreeTop = (isTop && targetSetting.treeObj.scrollTop() <= 0),
+ isTreeBottom = (isBottom && (targetSetting.treeObj.scrollTop() + targetSetting.treeObj.height()+10) >= scrollHeight),
+ isTreeLeft = (isLeft && targetSetting.treeObj.scrollLeft() <= 0),
+ isTreeRight = (isRight && (targetSetting.treeObj.scrollLeft() + targetSetting.treeObj.width()+10) >= scrollWidth);
+
+ if (event.target && tools.isChildOrSelf(event.target, targetSetting.treeId)) {
+ //get node <li> dom
+ var targetObj = event.target;
+ while (targetObj && targetObj.tagName && !tools.eqs(targetObj.tagName, "li") && targetObj.id != targetSetting.treeId) {
+ targetObj = targetObj.parentNode;
+ }
+
+ var canMove = true;
+ //don't move to self or children of self
+ for (i=0, l=nodes.length; i<l; i++) {
+ tmpNode = nodes[i];
+ if (targetObj.id === tmpNode.tId) {
+ canMove = false;
+ break;
+ } else if ($$(tmpNode, setting).find("#" + targetObj.id).length > 0) {
+ canMove = false;
+ break;
+ }
+ }
+ if (canMove && event.target && tools.isChildOrSelf(event.target, targetObj.id + consts.id.A)) {
+ tmpTarget = $(targetObj);
+ tmpTargetNodeId = targetObj.id;
+ }
+ }
+
+ //the mouse must be in zTree
+ tmpNode = nodes[0];
+ if (isTreeInner && tools.isChildOrSelf(event.target, targetSetting.treeId)) {
+ //judge mouse move in root of ztree
+ if (!tmpTarget && (event.target.id == targetSetting.treeId || isTreeTop || isTreeBottom || isTreeLeft || isTreeRight) && (isOtherTree || (!isOtherTree && tmpNode.parentTId))) {
+ tmpTarget = targetSetting.treeObj;
+ }
+ //auto scroll top
+ if (isTop) {
+ targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop()-10);
+ } else if (isBottom) {
+ targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop()+10);
+ }
+ if (isLeft) {
+ targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft()-10);
+ } else if (isRight) {
+ targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft()+10);
+ }
+ //auto scroll left
+ if (tmpTarget && tmpTarget != targetSetting.treeObj && tmpTarget.offset().left < targetSetting.treeObj.offset().left) {
+ targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft()+ tmpTarget.offset().left - targetSetting.treeObj.offset().left);
+ }
+ }
+
+ curNode.css({
+ "top": (event.clientY + docScrollTop + 3) + "px",
+ "left": (event.clientX + docScrollLeft + 3) + "px"
+ });
+
+ var dX = 0;
+ var dY = 0;
+ if (tmpTarget && tmpTarget.attr("id")!=targetSetting.treeId) {
+ var tmpTargetNode = tmpTargetNodeId == null ? null: data.getNodeCache(targetSetting, tmpTargetNodeId),
+ isCopy = ((event.ctrlKey || event.metaKey) && setting.edit.drag.isMove && setting.edit.drag.isCopy) || (!setting.edit.drag.isMove && setting.edit.drag.isCopy),
+ isPrev = !!(preNode && tmpTargetNodeId === preNode.tId),
+ isNext = !!(nextNode && tmpTargetNodeId === nextNode.tId),
+ isInner = (tmpNode.parentTId && tmpNode.parentTId == tmpTargetNodeId),
+ canPrev = (isCopy || !isNext) && tools.apply(targetSetting.edit.drag.prev, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.prev),
+ canNext = (isCopy || !isPrev) && tools.apply(targetSetting.edit.drag.next, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.next),
+ canInner = (isCopy || !isInner) && !(targetSetting.data.keep.leaf && !tmpTargetNode.isParent) && tools.apply(targetSetting.edit.drag.inner, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.edit.drag.inner);
+ if (!canPrev && !canNext && !canInner) {
+ tmpTarget = null;
+ tmpTargetNodeId = "";
+ moveType = consts.move.TYPE_INNER;
+ tmpArrow.css({
+ "display":"none"
+ });
+ if (window.zTreeMoveTimer) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null
+ }
+ } else {
+ var tmpTargetA = $("#" + tmpTargetNodeId + consts.id.A, tmpTarget),
+ tmpNextA = tmpTargetNode.isLastNode ? null : $("#" + tmpTargetNode.getNextNode().tId + consts.id.A, tmpTarget.next()),
+ tmpTop = tmpTargetA.offset().top,
+ tmpLeft = tmpTargetA.offset().left,
+ prevPercent = canPrev ? (canInner ? 0.25 : (canNext ? 0.5 : 1) ) : -1,
+ nextPercent = canNext ? (canInner ? 0.75 : (canPrev ? 0.5 : 0) ) : -1,
+ dY_percent = (event.clientY + docScrollTop - tmpTop)/tmpTargetA.height();
+ if ((prevPercent==1 ||dY_percent<=prevPercent && dY_percent>=-.2) && canPrev) {
+ dX = 1 - tmpArrow.width();
+ dY = tmpTop - tmpArrow.height()/2;
+ moveType = consts.move.TYPE_PREV;
+ } else if ((nextPercent==0 || dY_percent>=nextPercent && dY_percent<=1.2) && canNext) {
+ dX = 1 - tmpArrow.width();
+ dY = (tmpNextA == null || (tmpTargetNode.isParent && tmpTargetNode.open)) ? (tmpTop + tmpTargetA.height() - tmpArrow.height()/2) : (tmpNextA.offset().top - tmpArrow.height()/2);
+ moveType = consts.move.TYPE_NEXT;
+ }else {
+ dX = 5 - tmpArrow.width();
+ dY = tmpTop;
+ moveType = consts.move.TYPE_INNER;
+ }
+ tmpArrow.css({
+ "display":"block",
+ "top": dY + "px",
+ "left": (tmpLeft + dX) + "px"
+ });
+ tmpTargetA.addClass(consts.node.TMPTARGET_NODE + "_" + moveType);
+
+ if (preTmpTargetNodeId != tmpTargetNodeId || preTmpMoveType != moveType) {
+ startTime = (new Date()).getTime();
+ }
+ if (tmpTargetNode && tmpTargetNode.isParent && moveType == consts.move.TYPE_INNER) {
+ var startTimer = true;
+ if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId !== tmpTargetNode.tId) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null;
+ }else if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId === tmpTargetNode.tId) {
+ startTimer = false;
+ }
+ if (startTimer) {
+ window.zTreeMoveTimer = setTimeout(function() {
+ if (moveType != consts.move.TYPE_INNER) return;
+ if (tmpTargetNode && tmpTargetNode.isParent && !tmpTargetNode.open && (new Date()).getTime() - startTime > targetSetting.edit.drag.autoOpenTime
+ && tools.apply(targetSetting.callback.beforeDragOpen, [targetSetting.treeId, tmpTargetNode], true)) {
+ view.switchNode(targetSetting, tmpTargetNode);
+ if (targetSetting.edit.drag.autoExpandTrigger) {
+ targetSetting.treeObj.trigger(consts.event.EXPAND, [targetSetting.treeId, tmpTargetNode]);
+ }
+ }
+ }, targetSetting.edit.drag.autoOpenTime+50);
+ window.zTreeMoveTargetNodeTId = tmpTargetNode.tId;
+ }
+ }
+ }
+ } else {
+ moveType = consts.move.TYPE_INNER;
+ if (tmpTarget && tools.apply(targetSetting.edit.drag.inner, [targetSetting.treeId, nodes, null], !!targetSetting.edit.drag.inner)) {
+ tmpTarget.addClass(consts.node.TMPTARGET_TREE);
+ } else {
+ tmpTarget = null;
+ }
+ tmpArrow.css({
+ "display":"none"
+ });
+ if (window.zTreeMoveTimer) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null;
+ }
+ }
+ preTmpTargetNodeId = tmpTargetNodeId;
+ preTmpMoveType = moveType;
+
+ setting.treeObj.trigger(consts.event.DRAGMOVE, [event, setting.treeId, nodes]);
+ }
+ return false;
+ }
+
+ doc.bind("mouseup", _docMouseUp);
+ function _docMouseUp(event) {
+ if (window.zTreeMoveTimer) {
+ clearTimeout(window.zTreeMoveTimer);
+ window.zTreeMoveTargetNodeTId = null;
+ }
+ preTmpTargetNodeId = null;
+ preTmpMoveType = null;
+ doc.unbind("mousemove", _docMouseMove);
+ doc.unbind("mouseup", _docMouseUp);
+ doc.unbind("selectstart", _docSelect);
+ body.css("cursor", "auto");
+ if (tmpTarget) {
+ tmpTarget.removeClass(consts.node.TMPTARGET_TREE);
+ if (tmpTargetNodeId) $("#" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + "_" + consts.move.TYPE_PREV)
+ .removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_INNER);
+ }
+ tools.showIfameMask(setting, false);
+
+ roots.showHoverDom = true;
+ if (root.dragFlag == 0) return;
+ root.dragFlag = 0;
+
+ var i, l, tmpNode;
+ for (i=0, l=nodes.length; i<l; i++) {
+ tmpNode = nodes[i];
+ if (tmpNode.isParent && root.dragNodeShowBefore[tmpNode.tId] && !tmpNode.open) {
+ view.expandCollapseNode(setting, tmpNode, !tmpNode.open);
+ delete root.dragNodeShowBefore[tmpNode.tId];
+ }
+ }
+
+ if (curNode) curNode.remove();
+ if (tmpArrow) tmpArrow.remove();
+
+ var isCopy = ((event.ctrlKey || event.metaKey) && setting.edit.drag.isMove && setting.edit.drag.isCopy) || (!setting.edit.drag.isMove && setting.edit.drag.isCopy);
+ if (!isCopy && tmpTarget && tmpTargetNodeId && nodes[0].parentTId && tmpTargetNodeId==nodes[0].parentTId && moveType == consts.move.TYPE_INNER) {
+ tmpTarget = null;
+ }
+ if (tmpTarget) {
+ var dragTargetNode = tmpTargetNodeId == null ? null: data.getNodeCache(targetSetting, tmpTargetNodeId);
+ if (tools.apply(setting.callback.beforeDrop, [targetSetting.treeId, nodes, dragTargetNode, moveType, isCopy], true) == false) {
+ view.selectNodes(sourceSetting, nodes);
+ return;
+ }
+ var newNodes = isCopy ? tools.clone(nodes) : nodes;
+
+ function dropCallback() {
+ if (isOtherTree) {
+ if (!isCopy) {
+ for(var i=0, l=nodes.length; i<l; i++) {
+ view.removeNode(setting, nodes[i]);
+ }
+ }
+ if (moveType == consts.move.TYPE_INNER) {
+ view.addNodes(targetSetting, dragTargetNode, newNodes);
+ } else {
+ view.addNodes(targetSetting, dragTargetNode.getParentNode(), newNodes);
+ if (moveType == consts.move.TYPE_PREV) {
+ for (i=0, l=newNodes.length; i<l; i++) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[i], moveType, false);
+ }
+ } else {
+ for (i=-1, l=newNodes.length-1; i<l; l--) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[l], moveType, false);
+ }
+ }
+ }
+ } else {
+ if (isCopy && moveType == consts.move.TYPE_INNER) {
+ view.addNodes(targetSetting, dragTargetNode, newNodes);
+ } else {
+ if (isCopy) {
+ view.addNodes(targetSetting, dragTargetNode.getParentNode(), newNodes);
+ }
+ if (moveType != consts.move.TYPE_NEXT) {
+ for (i=0, l=newNodes.length; i<l; i++) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[i], moveType, false);
+ }
+ } else {
+ for (i=-1, l=newNodes.length-1; i<l; l--) {
+ view.moveNode(targetSetting, dragTargetNode, newNodes[l], moveType, false);
+ }
+ }
+ }
+ }
+ view.selectNodes(targetSetting, newNodes);
+ $$(newNodes[0], setting).focus().blur();
+
+ setting.treeObj.trigger(consts.event.DROP, [event, targetSetting.treeId, newNodes, dragTargetNode, moveType, isCopy]);
+ }
+
+ if (moveType == consts.move.TYPE_INNER && tools.canAsync(targetSetting, dragTargetNode)) {
+ view.asyncNode(targetSetting, dragTargetNode, false, dropCallback);
+ } else {
+ dropCallback();
+ }
+
+ } else {
+ view.selectNodes(sourceSetting, nodes);
+ setting.treeObj.trigger(consts.event.DROP, [event, setting.treeId, nodes, null, null, null]);
+ }
+ }
+
+ doc.bind("selectstart", _docSelect);
+ function _docSelect() {
+ return false;
+ }
+
+ //Avoid FireFox's Bug
+ //If zTree Div CSS set 'overflow', so drag node outside of zTree, and event.target is error.
+ if(eventMouseDown.preventDefault) {
+ eventMouseDown.preventDefault();
+ }
+ return true;
+ }
+ },
+ //method of tools for zTree
+ _tools = {
+ getAbs: function (obj) {
+ var oRect = obj.getBoundingClientRect(),
+ scrollTop = document.body.scrollTop+document.documentElement.scrollTop,
+ scrollLeft = document.body.scrollLeft+document.documentElement.scrollLeft;
+ return [oRect.left+scrollLeft,oRect.top+scrollTop];
+ },
+ inputFocus: function(inputObj) {
+ if (inputObj.get(0)) {
+ inputObj.focus();
+ tools.setCursorPosition(inputObj.get(0), inputObj.val().length);
+ }
+ },
+ inputSelect: function(inputObj) {
+ if (inputObj.get(0)) {
+ inputObj.focus();
+ inputObj.select();
+ }
+ },
+ setCursorPosition: function(obj, pos){
+ if(obj.setSelectionRange) {
+ obj.focus();
+ obj.setSelectionRange(pos,pos);
+ } else if (obj.createTextRange) {
+ var range = obj.createTextRange();
+ range.collapse(true);
+ range.moveEnd('character', pos);
+ range.moveStart('character', pos);
+ range.select();
+ }
+ },
+ showIfameMask: function(setting, showSign) {
+ var root = data.getRoot(setting);
+ //clear full mask
+ while (root.dragMaskList.length > 0) {
+ root.dragMaskList[0].remove();
+ root.dragMaskList.shift();
+ }
+ if (showSign) {
+ //show mask
+ var iframeList = $$("iframe", setting);
+ for (var i = 0, l = iframeList.length; i < l; i++) {
+ var obj = iframeList.get(i),
+ r = tools.getAbs(obj),
+ dragMask = $$("<div id='zTreeMask_" + i + "' class='zTreeMask' style='top:" + r[1] + "px; left:" + r[0] + "px; width:" + obj.offsetWidth + "px; height:" + obj.offsetHeight + "px;'></div>", setting);
+ dragMask.appendTo($$("body", setting));
+ root.dragMaskList.push(dragMask);
+ }
+ }
+ }
+ },
+ //method of operate ztree dom
+ _view = {
+ addEditBtn: function(setting, node) {
+ if (node.editNameFlag || $$(node, consts.id.EDIT, setting).length > 0) {
+ return;
+ }
+ if (!tools.apply(setting.edit.showRenameBtn, [setting.treeId, node], setting.edit.showRenameBtn)) {
+ return;
+ }
+ var aObj = $$(node, consts.id.A, setting),
+ editStr = "<span class='" + consts.className.BUTTON + " edit' id='" + node.tId + consts.id.EDIT + "' title='"+tools.apply(setting.edit.renameTitle, [setting.treeId, node], setting.edit.renameTitle)+"' treeNode"+consts.id.EDIT+" style='display:none;'></span>";
+ aObj.append(editStr);
+
+ $$(node, consts.id.EDIT, setting).bind('click',
+ function() {
+ if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeEditName, [setting.treeId, node], true) == false) return false;
+ view.editNode(setting, node);
+ return false;
+ }
+ ).show();
+ },
+ addRemoveBtn: function(setting, node) {
+ if (node.editNameFlag || $$(node, consts.id.REMOVE, setting).length > 0) {
+ return;
+ }
+ if (!tools.apply(setting.edit.showRemoveBtn, [setting.treeId, node], setting.edit.showRemoveBtn)) {
+ return;
+ }
+ var aObj = $$(node, consts.id.A, setting),
+ removeStr = "<span class='" + consts.className.BUTTON + " remove' id='" + node.tId + consts.id.REMOVE + "' title='"+tools.apply(setting.edit.removeTitle, [setting.treeId, node], setting.edit.removeTitle)+"' treeNode"+consts.id.REMOVE+" style='display:none;'></span>";
+ aObj.append(removeStr);
+
+ $$(node, consts.id.REMOVE, setting).bind('click',
+ function() {
+ if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeRemove, [setting.treeId, node], true) == false) return false;
+ view.removeNode(setting, node);
+ setting.treeObj.trigger(consts.event.REMOVE, [setting.treeId, node]);
+ return false;
+ }
+ ).bind('mousedown',
+ function(eventMouseDown) {
+ return true;
+ }
+ ).show();
+ },
+ addHoverDom: function(setting, node) {
+ if (data.getRoots().showHoverDom) {
+ node.isHover = true;
+ if (setting.edit.enable) {
+ view.addEditBtn(setting, node);
+ view.addRemoveBtn(setting, node);
+ }
+ tools.apply(setting.view.addHoverDom, [setting.treeId, node]);
+ }
+ },
+ cancelCurEditNode: function (setting, forceName, isCancel) {
+ var root = data.getRoot(setting),
+ nameKey = setting.data.key.name,
+ node = root.curEditNode;
+
+ if (node) {
+ var inputObj = root.curEditInput,
+ newName = forceName ? forceName:(isCancel ? node[nameKey]: inputObj.val());
+ if (tools.apply(setting.callback.beforeRename, [setting.treeId, node, newName, isCancel], true) === false) {
+ return false;
+ } else {
+ node[nameKey] = newName;
+ setting.treeObj.trigger(consts.event.RENAME, [setting.treeId, node, isCancel]);
+ }
+ var aObj = $$(node, consts.id.A, setting);
+ aObj.removeClass(consts.node.CURSELECTED_EDIT);
+ inputObj.unbind();
+ view.setNodeName(setting, node);
+ node.editNameFlag = false;
+ root.curEditNode = null;
+ root.curEditInput = null;
+ view.selectNode(setting, node, false);
+ }
+ root.noSelection = true;
+ return true;
+ },
+ editNode: function(setting, node) {
+ var root = data.getRoot(setting);
+ view.editNodeBlur = false;
+ if (data.isSelectedNode(setting, node) && root.curEditNode == node && node.editNameFlag) {
+ setTimeout(function() {tools.inputFocus(root.curEditInput);}, 0);
+ return;
+ }
+ var nameKey = setting.data.key.name;
+ node.editNameFlag = true;
+ view.removeTreeDom(setting, node);
+ view.cancelCurEditNode(setting);
+ view.selectNode(setting, node, false);
+ $$(node, consts.id.SPAN, setting).html("<input type=text class='rename' id='" + node.tId + consts.id.INPUT + "' treeNode" + consts.id.INPUT + " >");
+ var inputObj = $$(node, consts.id.INPUT, setting);
+ inputObj.attr("value", node[nameKey]);
+ if (setting.edit.editNameSelectAll) {
+ tools.inputSelect(inputObj);
+ } else {
+ tools.inputFocus(inputObj);
+ }
+
+ inputObj.bind('blur', function(event) {
+ if (!view.editNodeBlur) {
+ view.cancelCurEditNode(setting);
+ }
+ }).bind('keydown', function(event) {
+ if (event.keyCode=="13") {
+ view.editNodeBlur = true;
+ view.cancelCurEditNode(setting);
+ } else if (event.keyCode=="27") {
+ view.cancelCurEditNode(setting, null, true);
+ }
+ }).bind('click', function(event) {
+ return false;
+ }).bind('dblclick', function(event) {
+ return false;
+ });
+
+ $$(node, consts.id.A, setting).addClass(consts.node.CURSELECTED_EDIT);
+ root.curEditInput = inputObj;
+ root.noSelection = false;
+ root.curEditNode = node;
+ },
+ moveNode: function(setting, targetNode, node, moveType, animateFlag, isSilent) {
+ var root = data.getRoot(setting),
+ childKey = setting.data.key.children;
+ if (targetNode == node) return;
+ if (setting.data.keep.leaf && targetNode && !targetNode.isParent && moveType == consts.move.TYPE_INNER) return;
+ var oldParentNode = (node.parentTId ? node.getParentNode(): root),
+ targetNodeIsRoot = (targetNode === null || targetNode == root);
+ if (targetNodeIsRoot && targetNode === null) targetNode = root;
+ if (targetNodeIsRoot) moveType = consts.move.TYPE_INNER;
+ var targetParentNode = (targetNode.parentTId ? targetNode.getParentNode() : root);
+
+ if (moveType != consts.move.TYPE_PREV && moveType != consts.move.TYPE_NEXT) {
+ moveType = consts.move.TYPE_INNER;
+ }
+
+ if (moveType == consts.move.TYPE_INNER) {
+ if (targetNodeIsRoot) {
+ //parentTId of root node is null
+ node.parentTId = null;
+ } else {
+ if (!targetNode.isParent) {
+ targetNode.isParent = true;
+ targetNode.open = !!targetNode.open;
+ view.setNodeLineIcos(setting, targetNode);
+ }
+ node.parentTId = targetNode.tId;
+ }
+ }
+
+ //move node Dom
+ var targetObj, target_ulObj;
+ if (targetNodeIsRoot) {
+ targetObj = setting.treeObj;
+ target_ulObj = targetObj;
+ } else {
+ if (!isSilent && moveType == consts.move.TYPE_INNER) {
+ view.expandCollapseNode(setting, targetNode, true, false);
+ } else if (!isSilent) {
+ view.expandCollapseNode(setting, targetNode.getParentNode(), true, false);
+ }
+ targetObj = $$(targetNode, setting);
+ target_ulObj = $$(targetNode, consts.id.UL, setting);
+ if (!!targetObj.get(0) && !target_ulObj.get(0)) {
+ var ulstr = [];
+ view.makeUlHtml(setting, targetNode, ulstr, '');
+ targetObj.append(ulstr.join(''));
+ }
+ target_ulObj = $$(targetNode, consts.id.UL, setting);
+ }
+ var nodeDom = $$(node, setting);
+ if (!nodeDom.get(0)) {
+ nodeDom = view.appendNodes(setting, node.level, [node], null, false, true).join('');
+ } else if (!targetObj.get(0)) {
+ nodeDom.remove();
+ }
+ if (target_ulObj.get(0) && moveType == consts.move.TYPE_INNER) {
+ target_ulObj.append(nodeDom);
+ } else if (targetObj.get(0) && moveType == consts.move.TYPE_PREV) {
+ targetObj.before(nodeDom);
+ } else if (targetObj.get(0) && moveType == consts.move.TYPE_NEXT) {
+ targetObj.after(nodeDom);
+ }
+
+ //repair the data after move
+ var i,l,
+ tmpSrcIndex = -1,
+ tmpTargetIndex = 0,
+ oldNeighbor = null,
+ newNeighbor = null,
+ oldLevel = node.level;
+ if (node.isFirstNode) {
+ tmpSrcIndex = 0;
+ if (oldParentNode[childKey].length > 1 ) {
+ oldNeighbor = oldParentNode[childKey][1];
+ oldNeighbor.isFirstNode = true;
+ }
+ } else if (node.isLastNode) {
+ tmpSrcIndex = oldParentNode[childKey].length -1;
+ oldNeighbor = oldParentNode[childKey][tmpSrcIndex - 1];
+ oldNeighbor.isLastNode = true;
+ } else {
+ for (i = 0, l = oldParentNode[childKey].length; i < l; i++) {
+ if (oldParentNode[childKey][i].tId == node.tId) {
+ tmpSrcIndex = i;
+ break;
+ }
+ }
+ }
+ if (tmpSrcIndex >= 0) {
+ oldParentNode[childKey].splice(tmpSrcIndex, 1);
+ }
+ if (moveType != consts.move.TYPE_INNER) {
+ for (i = 0, l = targetParentNode[childKey].length; i < l; i++) {
+ if (targetParentNode[childKey][i].tId == targetNode.tId) tmpTargetIndex = i;
+ }
+ }
+ if (moveType == consts.move.TYPE_INNER) {
+ if (!targetNode[childKey]) targetNode[childKey] = new Array();
+ if (targetNode[childKey].length > 0) {
+ newNeighbor = targetNode[childKey][targetNode[childKey].length - 1];
+ newNeighbor.isLastNode = false;
+ }
+ targetNode[childKey].splice(targetNode[childKey].length, 0, node);
+ node.isLastNode = true;
+ node.isFirstNode = (targetNode[childKey].length == 1);
+ } else if (targetNode.isFirstNode && moveType == consts.move.TYPE_PREV) {
+ targetParentNode[childKey].splice(tmpTargetIndex, 0, node);
+ newNeighbor = targetNode;
+ newNeighbor.isFirstNode = false;
+ node.parentTId = targetNode.parentTId;
+ node.isFirstNode = true;
+ node.isLastNode = false;
+
+ } else if (targetNode.isLastNode && moveType == consts.move.TYPE_NEXT) {
+ targetParentNode[childKey].splice(tmpTargetIndex + 1, 0, node);
+ newNeighbor = targetNode;
+ newNeighbor.isLastNode = false;
+ node.parentTId = targetNode.parentTId;
+ node.isFirstNode = false;
+ node.isLastNode = true;
+
+ } else {
+ if (moveType == consts.move.TYPE_PREV) {
+ targetParentNode[childKey].splice(tmpTargetIndex, 0, node);
+ } else {
+ targetParentNode[childKey].splice(tmpTargetIndex + 1, 0, node);
+ }
+ node.parentTId = targetNode.parentTId;
+ node.isFirstNode = false;
+ node.isLastNode = false;
+ }
+ data.fixPIdKeyValue(setting, node);
+ data.setSonNodeLevel(setting, node.getParentNode(), node);
+
+ //repair node what been moved
+ view.setNodeLineIcos(setting, node);
+ view.repairNodeLevelClass(setting, node, oldLevel)
+
+ //repair node's old parentNode dom
+ if (!setting.data.keep.parent && oldParentNode[childKey].length < 1) {
+ //old parentNode has no child nodes
+ oldParentNode.isParent = false;
+ oldParentNode.open = false;
+ var tmp_ulObj = $$(oldParentNode, consts.id.UL, setting),
+ tmp_switchObj = $$(oldParentNode, consts.id.SWITCH, setting),
+ tmp_icoObj = $$(oldParentNode, consts.id.ICON, setting);
+ view.replaceSwitchClass(oldParentNode, tmp_switchObj, consts.folder.DOCU);
+ view.replaceIcoClass(oldParentNode, tmp_icoObj, consts.folder.DOCU);
+ tmp_ulObj.css("display", "none");
+
+ } else if (oldNeighbor) {
+ //old neigbor node
+ view.setNodeLineIcos(setting, oldNeighbor);
+ }
+
+ //new neigbor node
+ if (newNeighbor) {
+ view.setNodeLineIcos(setting, newNeighbor);
+ }
+
+ //repair checkbox / radio
+ if (!!setting.check && setting.check.enable && view.repairChkClass) {
+ view.repairChkClass(setting, oldParentNode);
+ view.repairParentChkClassWithSelf(setting, oldParentNode);
+ if (oldParentNode != node.parent)
+ view.repairParentChkClassWithSelf(setting, node);
+ }
+
+ //expand parents after move
+ if (!isSilent) {
+ view.expandCollapseParentNode(setting, node.getParentNode(), true, animateFlag);
+ }
+ },
+ removeEditBtn: function(setting, node) {
+ $$(node, consts.id.EDIT, setting).unbind().remove();
+ },
+ removeRemoveBtn: function(setting, node) {
+ $$(node, consts.id.REMOVE, setting).unbind().remove();
+ },
+ removeTreeDom: function(setting, node) {
+ node.isHover = false;
+ view.removeEditBtn(setting, node);
+ view.removeRemoveBtn(setting, node);
+ tools.apply(setting.view.removeHoverDom, [setting.treeId, node]);
+ },
+ repairNodeLevelClass: function(setting, node, oldLevel) {
+ if (oldLevel === node.level) return;
+ var liObj = $$(node, setting),
+ aObj = $$(node, consts.id.A, setting),
+ ulObj = $$(node, consts.id.UL, setting),
+ oldClass = consts.className.LEVEL + oldLevel,
+ newClass = consts.className.LEVEL + node.level;
+ liObj.removeClass(oldClass);
+ liObj.addClass(newClass);
+ aObj.removeClass(oldClass);
+ aObj.addClass(newClass);
+ ulObj.removeClass(oldClass);
+ ulObj.addClass(newClass);
+ },
+ selectNodes : function(setting, nodes) {
+ for (var i=0, l=nodes.length; i<l; i++) {
+ view.selectNode(setting, nodes[i], i>0);
+ }
+ }
+ },
+
+ _z = {
+ tools: _tools,
+ view: _view,
+ event: _event,
+ data: _data
+ };
+ $.extend(true, $.fn.zTree.consts, _consts);
+ $.extend(true, $.fn.zTree._z, _z);
+
+ var zt = $.fn.zTree,
+ tools = zt._z.tools,
+ consts = zt.consts,
+ view = zt._z.view,
+ data = zt._z.data,
+ event = zt._z.event,
+ $$ = tools.$;
+
+ data.exSetting(_setting);
+ data.addInitBind(_bindEvent);
+ data.addInitUnBind(_unbindEvent);
+ data.addInitCache(_initCache);
+ data.addInitNode(_initNode);
+ data.addInitProxy(_eventProxy);
+ data.addInitRoot(_initRoot);
+ data.addZTreeTools(_zTreeTools);
+
+ var _cancelPreSelectedNode = view.cancelPreSelectedNode;
+ view.cancelPreSelectedNode = function (setting, node) {
+ var list = data.getRoot(setting).curSelectedList;
+ for (var i=0, j=list.length; i<j; i++) {
+ if (!node || node === list[i]) {
+ view.removeTreeDom(setting, list[i]);
+ if (node) break;
+ }
+ }
+ if (_cancelPreSelectedNode) _cancelPreSelectedNode.apply(view, arguments);
+ }
+
+ var _createNodes = view.createNodes;
+ view.createNodes = function(setting, level, nodes, parentNode) {
+ if (_createNodes) {
+ _createNodes.apply(view, arguments);
+ }
+ if (!nodes) return;
+ if (view.repairParentChkClassWithSelf) {
+ view.repairParentChkClassWithSelf(setting, parentNode);
+ }
+ }
+
+ var _makeNodeUrl = view.makeNodeUrl;
+ view.makeNodeUrl = function(setting, node) {
+ return setting.edit.enable ? null : (_makeNodeUrl.apply(view, arguments));
+ }
+
+ var _removeNode = view.removeNode;
+ view.removeNode = function(setting, node) {
+ var root = data.getRoot(setting);
+ if (root.curEditNode === node) root.curEditNode = null;
+ if (_removeNode) {
+ _removeNode.apply(view, arguments);
+ }
+ }
+
+ var _selectNode = view.selectNode;
+ view.selectNode = function(setting, node, addFlag) {
+ var root = data.getRoot(setting);
+ if (data.isSelectedNode(setting, node) && root.curEditNode == node && node.editNameFlag) {
+ return false;
+ }
+ if (_selectNode) _selectNode.apply(view, arguments);
+ view.addHoverDom(setting, node);
+ return true;
+ }
+
+ var _uCanDo = tools.uCanDo;
+ tools.uCanDo = function(setting, e) {
+ var root = data.getRoot(setting);
+ if (e && (tools.eqs(e.type, "mouseover") || tools.eqs(e.type, "mouseout") || tools.eqs(e.type, "mousedown") || tools.eqs(e.type, "mouseup"))) {
+ return true;
+ }
+ if (root.curEditNode) {
+ view.editNodeBlur = false;
+ root.curEditInput.focus();
+ }
+ return (!root.curEditNode) && (_uCanDo ? _uCanDo.apply(view, arguments) : true);
+ }
+})(jQuery); \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exedit.min.js b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exedit.min.js
new file mode 100755
index 00000000..2e748326
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exedit.min.js
@@ -0,0 +1,53 @@
+/*
+ * JQuery zTree exedit v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(w){var I={event:{DRAG:"ztree_drag",DROP:"ztree_drop",RENAME:"ztree_rename",DRAGMOVE:"ztree_dragmove"},id:{EDIT:"_edit",INPUT:"_input",REMOVE:"_remove"},move:{TYPE_INNER:"inner",TYPE_PREV:"prev",TYPE_NEXT:"next"},node:{CURSELECTED_EDIT:"curSelectedNode_Edit",TMPTARGET_TREE:"tmpTargetzTree",TMPTARGET_NODE:"tmpTargetNode"}},x={onHoverOverNode:function(b,a){var c=m.getSetting(b.data.treeId),d=m.getRoot(c);if(d.curHoverNode!=a)x.onHoverOutNode(b);d.curHoverNode=a;f.addHoverDom(c,a)},onHoverOutNode:function(b){var b=
+m.getSetting(b.data.treeId),a=m.getRoot(b);if(a.curHoverNode&&!m.isSelectedNode(b,a.curHoverNode))f.removeTreeDom(b,a.curHoverNode),a.curHoverNode=null},onMousedownNode:function(b,a){function c(b){if(C.dragFlag==0&&Math.abs(N-b.clientX)<e.edit.drag.minMoveSize&&Math.abs(O-b.clientY)<e.edit.drag.minMoveSize)return!0;var a,c,n,k,i;i=e.data.key.children;M.css("cursor","pointer");if(C.dragFlag==0){if(g.apply(e.callback.beforeDrag,[e.treeId,l],!0)==!1)return r(b),!0;for(a=0,c=l.length;a<c;a++){if(a==0)C.dragNodeShowBefore=
+[];n=l[a];n.isParent&&n.open?(f.expandCollapseNode(e,n,!n.open),C.dragNodeShowBefore[n.tId]=!0):C.dragNodeShowBefore[n.tId]=!1}C.dragFlag=1;t.showHoverDom=!1;g.showIfameMask(e,!0);n=!0;k=-1;if(l.length>1){var j=l[0].parentTId?l[0].getParentNode()[i]:m.getNodes(e);i=[];for(a=0,c=j.length;a<c;a++)if(C.dragNodeShowBefore[j[a].tId]!==void 0&&(n&&k>-1&&k+1!==a&&(n=!1),i.push(j[a]),k=a),l.length===i.length){l=i;break}}n&&(H=l[0].getPreNode(),R=l[l.length-1].getNextNode());D=o("<ul class='zTreeDragUL'></ul>",
+e);for(a=0,c=l.length;a<c;a++)n=l[a],n.editNameFlag=!1,f.selectNode(e,n,a>0),f.removeTreeDom(e,n),a>e.edit.drag.maxShowNodeNum-1||(k=o("<li id='"+n.tId+"_tmp'></li>",e),k.append(o(n,d.id.A,e).clone()),k.css("padding","0"),k.children("#"+n.tId+d.id.A).removeClass(d.node.CURSELECTED),D.append(k),a==e.edit.drag.maxShowNodeNum-1&&(k=o("<li id='"+n.tId+"_moretmp'><a> ... </a></li>",e),D.append(k)));D.attr("id",l[0].tId+d.id.UL+"_tmp");D.addClass(e.treeObj.attr("class"));D.appendTo(M);B=o("<span class='tmpzTreeMove_arrow'></span>",
+e);B.attr("id","zTreeMove_arrow_tmp");B.appendTo(M);e.treeObj.trigger(d.event.DRAG,[b,e.treeId,l])}if(C.dragFlag==1){s&&B.attr("id")==b.target.id&&u&&b.clientX+F.scrollLeft()+2>w("#"+u+d.id.A,s).offset().left?(n=w("#"+u+d.id.A,s),b.target=n.length>0?n.get(0):b.target):s&&(s.removeClass(d.node.TMPTARGET_TREE),u&&w("#"+u+d.id.A,s).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER));
+u=s=null;J=!1;h=e;n=m.getSettings();for(var y in n)if(n[y].treeId&&n[y].edit.enable&&n[y].treeId!=e.treeId&&(b.target.id==n[y].treeId||w(b.target).parents("#"+n[y].treeId).length>0))J=!0,h=n[y];y=F.scrollTop();k=F.scrollLeft();i=h.treeObj.offset();a=h.treeObj.get(0).scrollHeight;n=h.treeObj.get(0).scrollWidth;c=b.clientY+y-i.top;var p=h.treeObj.height()+i.top-b.clientY-y,q=b.clientX+k-i.left,x=h.treeObj.width()+i.left-b.clientX-k;i=c<e.edit.drag.borderMax&&c>e.edit.drag.borderMin;var j=p<e.edit.drag.borderMax&&
+p>e.edit.drag.borderMin,K=q<e.edit.drag.borderMax&&q>e.edit.drag.borderMin,G=x<e.edit.drag.borderMax&&x>e.edit.drag.borderMin,p=c>e.edit.drag.borderMin&&p>e.edit.drag.borderMin&&q>e.edit.drag.borderMin&&x>e.edit.drag.borderMin,q=i&&h.treeObj.scrollTop()<=0,x=j&&h.treeObj.scrollTop()+h.treeObj.height()+10>=a,P=K&&h.treeObj.scrollLeft()<=0,Q=G&&h.treeObj.scrollLeft()+h.treeObj.width()+10>=n;if(b.target&&g.isChildOrSelf(b.target,h.treeId)){for(var E=b.target;E&&E.tagName&&!g.eqs(E.tagName,"li")&&E.id!=
+h.treeId;)E=E.parentNode;var S=!0;for(a=0,c=l.length;a<c;a++)if(n=l[a],E.id===n.tId){S=!1;break}else if(o(n,e).find("#"+E.id).length>0){S=!1;break}if(S&&b.target&&g.isChildOrSelf(b.target,E.id+d.id.A))s=w(E),u=E.id}n=l[0];if(p&&g.isChildOrSelf(b.target,h.treeId)){if(!s&&(b.target.id==h.treeId||q||x||P||Q)&&(J||!J&&n.parentTId))s=h.treeObj;i?h.treeObj.scrollTop(h.treeObj.scrollTop()-10):j&&h.treeObj.scrollTop(h.treeObj.scrollTop()+10);K?h.treeObj.scrollLeft(h.treeObj.scrollLeft()-10):G&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+
+10);s&&s!=h.treeObj&&s.offset().left<h.treeObj.offset().left&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+s.offset().left-h.treeObj.offset().left)}D.css({top:b.clientY+y+3+"px",left:b.clientX+k+3+"px"});i=a=0;if(s&&s.attr("id")!=h.treeId){var z=u==null?null:m.getNodeCache(h,u);c=(b.ctrlKey||b.metaKey)&&e.edit.drag.isMove&&e.edit.drag.isCopy||!e.edit.drag.isMove&&e.edit.drag.isCopy;a=!!(H&&u===H.tId);i=!!(R&&u===R.tId);k=n.parentTId&&n.parentTId==u;n=(c||!i)&&g.apply(h.edit.drag.prev,[h.treeId,l,z],
+!!h.edit.drag.prev);a=(c||!a)&&g.apply(h.edit.drag.next,[h.treeId,l,z],!!h.edit.drag.next);G=(c||!k)&&!(h.data.keep.leaf&&!z.isParent)&&g.apply(h.edit.drag.inner,[h.treeId,l,z],!!h.edit.drag.inner);if(!n&&!a&&!G){if(s=null,u="",v=d.move.TYPE_INNER,B.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null}else{c=w("#"+u+d.id.A,s);i=z.isLastNode?null:w("#"+z.getNextNode().tId+d.id.A,s.next());j=c.offset().top;k=c.offset().left;K=n?G?0.25:a?
+0.5:1:-1;G=a?G?0.75:n?0.5:0:-1;y=(b.clientY+y-j)/c.height();(K==1||y<=K&&y>=-0.2)&&n?(a=1-B.width(),i=j-B.height()/2,v=d.move.TYPE_PREV):(G==0||y>=G&&y<=1.2)&&a?(a=1-B.width(),i=i==null||z.isParent&&z.open?j+c.height()-B.height()/2:i.offset().top-B.height()/2,v=d.move.TYPE_NEXT):(a=5-B.width(),i=j,v=d.move.TYPE_INNER);B.css({display:"block",top:i+"px",left:k+a+"px"});c.addClass(d.node.TMPTARGET_NODE+"_"+v);if(T!=u||U!=v)L=(new Date).getTime();if(z&&z.isParent&&v==d.move.TYPE_INNER&&(y=!0,window.zTreeMoveTimer&&
+window.zTreeMoveTargetNodeTId!==z.tId?(clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null):window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId===z.tId&&(y=!1),y))window.zTreeMoveTimer=setTimeout(function(){v==d.move.TYPE_INNER&&z&&z.isParent&&!z.open&&(new Date).getTime()-L>h.edit.drag.autoOpenTime&&g.apply(h.callback.beforeDragOpen,[h.treeId,z],!0)&&(f.switchNode(h,z),h.edit.drag.autoExpandTrigger&&h.treeObj.trigger(d.event.EXPAND,[h.treeId,z]))},h.edit.drag.autoOpenTime+50),
+window.zTreeMoveTargetNodeTId=z.tId}}else if(v=d.move.TYPE_INNER,s&&g.apply(h.edit.drag.inner,[h.treeId,l,null],!!h.edit.drag.inner)?s.addClass(d.node.TMPTARGET_TREE):s=null,B.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;T=u;U=v;e.treeObj.trigger(d.event.DRAGMOVE,[b,e.treeId,l])}return!1}function r(b){if(window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;U=T=null;F.unbind("mousemove",c);
+F.unbind("mouseup",r);F.unbind("selectstart",k);M.css("cursor","auto");s&&(s.removeClass(d.node.TMPTARGET_TREE),u&&w("#"+u+d.id.A,s).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER));g.showIfameMask(e,!1);t.showHoverDom=!0;if(C.dragFlag!=0){C.dragFlag=0;var a,i,j;for(a=0,i=l.length;a<i;a++)j=l[a],j.isParent&&C.dragNodeShowBefore[j.tId]&&!j.open&&(f.expandCollapseNode(e,j,!j.open),
+delete C.dragNodeShowBefore[j.tId]);D&&D.remove();B&&B.remove();var p=(b.ctrlKey||b.metaKey)&&e.edit.drag.isMove&&e.edit.drag.isCopy||!e.edit.drag.isMove&&e.edit.drag.isCopy;!p&&s&&u&&l[0].parentTId&&u==l[0].parentTId&&v==d.move.TYPE_INNER&&(s=null);if(s){var q=u==null?null:m.getNodeCache(h,u);if(g.apply(e.callback.beforeDrop,[h.treeId,l,q,v,p],!0)==!1)f.selectNodes(x,l);else{var A=p?g.clone(l):l;a=function(){if(J){if(!p)for(var a=0,c=l.length;a<c;a++)f.removeNode(e,l[a]);if(v==d.move.TYPE_INNER)f.addNodes(h,
+q,A);else if(f.addNodes(h,q.getParentNode(),A),v==d.move.TYPE_PREV)for(a=0,c=A.length;a<c;a++)f.moveNode(h,q,A[a],v,!1);else for(a=-1,c=A.length-1;a<c;c--)f.moveNode(h,q,A[c],v,!1)}else if(p&&v==d.move.TYPE_INNER)f.addNodes(h,q,A);else if(p&&f.addNodes(h,q.getParentNode(),A),v!=d.move.TYPE_NEXT)for(a=0,c=A.length;a<c;a++)f.moveNode(h,q,A[a],v,!1);else for(a=-1,c=A.length-1;a<c;c--)f.moveNode(h,q,A[c],v,!1);f.selectNodes(h,A);o(A[0],e).focus().blur();e.treeObj.trigger(d.event.DROP,[b,h.treeId,A,q,
+v,p])};v==d.move.TYPE_INNER&&g.canAsync(h,q)?f.asyncNode(h,q,!1,a):a()}}else f.selectNodes(x,l),e.treeObj.trigger(d.event.DROP,[b,e.treeId,l,null,null,null])}}function k(){return!1}var i,j,e=m.getSetting(b.data.treeId),C=m.getRoot(e),t=m.getRoots();if(b.button==2||!e.edit.enable||!e.edit.drag.isCopy&&!e.edit.drag.isMove)return!0;var p=b.target,q=m.getRoot(e).curSelectedList,l=[];if(m.isSelectedNode(e,a))for(i=0,j=q.length;i<j;i++){if(q[i].editNameFlag&&g.eqs(p.tagName,"input")&&p.getAttribute("treeNode"+
+d.id.INPUT)!==null)return!0;l.push(q[i]);if(l[0].parentTId!==q[i].parentTId){l=[a];break}}else l=[a];f.editNodeBlur=!0;f.cancelCurEditNode(e);var F=w(e.treeObj.get(0).ownerDocument),M=w(e.treeObj.get(0).ownerDocument.body),D,B,s,J=!1,h=e,x=e,H,R,T=null,U=null,u=null,v=d.move.TYPE_INNER,N=b.clientX,O=b.clientY,L=(new Date).getTime();g.uCanDo(e)&&F.bind("mousemove",c);F.bind("mouseup",r);F.bind("selectstart",k);b.preventDefault&&b.preventDefault();return!0}};w.extend(!0,w.fn.zTree.consts,I);w.extend(!0,
+w.fn.zTree._z,{tools:{getAbs:function(b){b=b.getBoundingClientRect();return[b.left+(document.body.scrollLeft+document.documentElement.scrollLeft),b.top+(document.body.scrollTop+document.documentElement.scrollTop)]},inputFocus:function(b){b.get(0)&&(b.focus(),g.setCursorPosition(b.get(0),b.val().length))},inputSelect:function(b){b.get(0)&&(b.focus(),b.select())},setCursorPosition:function(b,a){if(b.setSelectionRange)b.focus(),b.setSelectionRange(a,a);else if(b.createTextRange){var c=b.createTextRange();
+c.collapse(!0);c.moveEnd("character",a);c.moveStart("character",a);c.select()}},showIfameMask:function(b,a){for(var c=m.getRoot(b);c.dragMaskList.length>0;)c.dragMaskList[0].remove(),c.dragMaskList.shift();if(a)for(var d=o("iframe",b),f=0,i=d.length;f<i;f++){var j=d.get(f),e=g.getAbs(j),j=o("<div id='zTreeMask_"+f+"' class='zTreeMask' style='top:"+e[1]+"px; left:"+e[0]+"px; width:"+j.offsetWidth+"px; height:"+j.offsetHeight+"px;'></div>",b);j.appendTo(o("body",b));c.dragMaskList.push(j)}}},view:{addEditBtn:function(b,
+a){if(!(a.editNameFlag||o(a,d.id.EDIT,b).length>0)&&g.apply(b.edit.showRenameBtn,[b.treeId,a],b.edit.showRenameBtn)){var c=o(a,d.id.A,b),r="<span class='"+d.className.BUTTON+" edit' id='"+a.tId+d.id.EDIT+"' title='"+g.apply(b.edit.renameTitle,[b.treeId,a],b.edit.renameTitle)+"' treeNode"+d.id.EDIT+" style='display:none;'></span>";c.append(r);o(a,d.id.EDIT,b).bind("click",function(){if(!g.uCanDo(b)||g.apply(b.callback.beforeEditName,[b.treeId,a],!0)==!1)return!1;f.editNode(b,a);return!1}).show()}},
+addRemoveBtn:function(b,a){if(!(a.editNameFlag||o(a,d.id.REMOVE,b).length>0)&&g.apply(b.edit.showRemoveBtn,[b.treeId,a],b.edit.showRemoveBtn)){var c=o(a,d.id.A,b),r="<span class='"+d.className.BUTTON+" remove' id='"+a.tId+d.id.REMOVE+"' title='"+g.apply(b.edit.removeTitle,[b.treeId,a],b.edit.removeTitle)+"' treeNode"+d.id.REMOVE+" style='display:none;'></span>";c.append(r);o(a,d.id.REMOVE,b).bind("click",function(){if(!g.uCanDo(b)||g.apply(b.callback.beforeRemove,[b.treeId,a],!0)==!1)return!1;f.removeNode(b,
+a);b.treeObj.trigger(d.event.REMOVE,[b.treeId,a]);return!1}).bind("mousedown",function(){return!0}).show()}},addHoverDom:function(b,a){if(m.getRoots().showHoverDom)a.isHover=!0,b.edit.enable&&(f.addEditBtn(b,a),f.addRemoveBtn(b,a)),g.apply(b.view.addHoverDom,[b.treeId,a])},cancelCurEditNode:function(b,a,c){var r=m.getRoot(b),k=b.data.key.name,i=r.curEditNode;if(i){var j=r.curEditInput,a=a?a:c?i[k]:j.val();if(g.apply(b.callback.beforeRename,[b.treeId,i,a,c],!0)===!1)return!1;else i[k]=a,b.treeObj.trigger(d.event.RENAME,
+[b.treeId,i,c]);o(i,d.id.A,b).removeClass(d.node.CURSELECTED_EDIT);j.unbind();f.setNodeName(b,i);i.editNameFlag=!1;r.curEditNode=null;r.curEditInput=null;f.selectNode(b,i,!1)}return r.noSelection=!0},editNode:function(b,a){var c=m.getRoot(b);f.editNodeBlur=!1;if(m.isSelectedNode(b,a)&&c.curEditNode==a&&a.editNameFlag)setTimeout(function(){g.inputFocus(c.curEditInput)},0);else{var r=b.data.key.name;a.editNameFlag=!0;f.removeTreeDom(b,a);f.cancelCurEditNode(b);f.selectNode(b,a,!1);o(a,d.id.SPAN,b).html("<input type=text class='rename' id='"+
+a.tId+d.id.INPUT+"' treeNode"+d.id.INPUT+" >");var k=o(a,d.id.INPUT,b);k.attr("value",a[r]);b.edit.editNameSelectAll?g.inputSelect(k):g.inputFocus(k);k.bind("blur",function(){f.editNodeBlur||f.cancelCurEditNode(b)}).bind("keydown",function(a){a.keyCode=="13"?(f.editNodeBlur=!0,f.cancelCurEditNode(b)):a.keyCode=="27"&&f.cancelCurEditNode(b,null,!0)}).bind("click",function(){return!1}).bind("dblclick",function(){return!1});o(a,d.id.A,b).addClass(d.node.CURSELECTED_EDIT);c.curEditInput=k;c.noSelection=
+!1;c.curEditNode=a}},moveNode:function(b,a,c,r,k,i){var j=m.getRoot(b),e=b.data.key.children;if(a!=c&&(!b.data.keep.leaf||!a||a.isParent||r!=d.move.TYPE_INNER)){var g=c.parentTId?c.getParentNode():j,t=a===null||a==j;t&&a===null&&(a=j);if(t)r=d.move.TYPE_INNER;j=a.parentTId?a.getParentNode():j;if(r!=d.move.TYPE_PREV&&r!=d.move.TYPE_NEXT)r=d.move.TYPE_INNER;if(r==d.move.TYPE_INNER)if(t)c.parentTId=null;else{if(!a.isParent)a.isParent=!0,a.open=!!a.open,f.setNodeLineIcos(b,a);c.parentTId=a.tId}var p;
+t?p=t=b.treeObj:(!i&&r==d.move.TYPE_INNER?f.expandCollapseNode(b,a,!0,!1):i||f.expandCollapseNode(b,a.getParentNode(),!0,!1),t=o(a,b),p=o(a,d.id.UL,b),t.get(0)&&!p.get(0)&&(p=[],f.makeUlHtml(b,a,p,""),t.append(p.join(""))),p=o(a,d.id.UL,b));var q=o(c,b);q.get(0)?t.get(0)||q.remove():q=f.appendNodes(b,c.level,[c],null,!1,!0).join("");p.get(0)&&r==d.move.TYPE_INNER?p.append(q):t.get(0)&&r==d.move.TYPE_PREV?t.before(q):t.get(0)&&r==d.move.TYPE_NEXT&&t.after(q);var l=-1,w=0,x=null,t=null,D=c.level;if(c.isFirstNode){if(l=
+0,g[e].length>1)x=g[e][1],x.isFirstNode=!0}else if(c.isLastNode)l=g[e].length-1,x=g[e][l-1],x.isLastNode=!0;else for(p=0,q=g[e].length;p<q;p++)if(g[e][p].tId==c.tId){l=p;break}l>=0&&g[e].splice(l,1);if(r!=d.move.TYPE_INNER)for(p=0,q=j[e].length;p<q;p++)j[e][p].tId==a.tId&&(w=p);if(r==d.move.TYPE_INNER){a[e]||(a[e]=[]);if(a[e].length>0)t=a[e][a[e].length-1],t.isLastNode=!1;a[e].splice(a[e].length,0,c);c.isLastNode=!0;c.isFirstNode=a[e].length==1}else a.isFirstNode&&r==d.move.TYPE_PREV?(j[e].splice(w,
+0,c),t=a,t.isFirstNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!0,c.isLastNode=!1):a.isLastNode&&r==d.move.TYPE_NEXT?(j[e].splice(w+1,0,c),t=a,t.isLastNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!0):(r==d.move.TYPE_PREV?j[e].splice(w,0,c):j[e].splice(w+1,0,c),c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!1);m.fixPIdKeyValue(b,c);m.setSonNodeLevel(b,c.getParentNode(),c);f.setNodeLineIcos(b,c);f.repairNodeLevelClass(b,c,D);!b.data.keep.parent&&g[e].length<1?(g.isParent=!1,
+g.open=!1,a=o(g,d.id.UL,b),r=o(g,d.id.SWITCH,b),e=o(g,d.id.ICON,b),f.replaceSwitchClass(g,r,d.folder.DOCU),f.replaceIcoClass(g,e,d.folder.DOCU),a.css("display","none")):x&&f.setNodeLineIcos(b,x);t&&f.setNodeLineIcos(b,t);b.check&&b.check.enable&&f.repairChkClass&&(f.repairChkClass(b,g),f.repairParentChkClassWithSelf(b,g),g!=c.parent&&f.repairParentChkClassWithSelf(b,c));i||f.expandCollapseParentNode(b,c.getParentNode(),!0,k)}},removeEditBtn:function(b,a){o(a,d.id.EDIT,b).unbind().remove()},removeRemoveBtn:function(b,
+a){o(a,d.id.REMOVE,b).unbind().remove()},removeTreeDom:function(b,a){a.isHover=!1;f.removeEditBtn(b,a);f.removeRemoveBtn(b,a);g.apply(b.view.removeHoverDom,[b.treeId,a])},repairNodeLevelClass:function(b,a,c){if(c!==a.level){var f=o(a,b),g=o(a,d.id.A,b),b=o(a,d.id.UL,b),c=d.className.LEVEL+c,a=d.className.LEVEL+a.level;f.removeClass(c);f.addClass(a);g.removeClass(c);g.addClass(a);b.removeClass(c);b.addClass(a)}},selectNodes:function(b,a){for(var c=0,d=a.length;c<d;c++)f.selectNode(b,a[c],c>0)}},event:{},
+data:{setSonNodeLevel:function(b,a,c){if(c){var d=b.data.key.children;c.level=a?a.level+1:0;if(c[d])for(var a=0,f=c[d].length;a<f;a++)c[d][a]&&m.setSonNodeLevel(b,c,c[d][a])}}}});var H=w.fn.zTree,g=H._z.tools,d=H.consts,f=H._z.view,m=H._z.data,o=g.$;m.exSetting({edit:{enable:!1,editNameSelectAll:!1,showRemoveBtn:!0,showRenameBtn:!0,removeTitle:"remove",renameTitle:"rename",drag:{autoExpandTrigger:!1,isCopy:!0,isMove:!0,prev:!0,next:!0,inner:!0,minMoveSize:5,borderMax:10,borderMin:-5,maxShowNodeNum:5,
+autoOpenTime:500}},view:{addHoverDom:null,removeHoverDom:null},callback:{beforeDrag:null,beforeDragOpen:null,beforeDrop:null,beforeEditName:null,beforeRename:null,onDrag:null,onDragMove:null,onDrop:null,onRename:null}});m.addInitBind(function(b){var a=b.treeObj,c=d.event;a.bind(c.RENAME,function(a,c,d,f){g.apply(b.callback.onRename,[a,c,d,f])});a.bind(c.DRAG,function(a,c,d,f){g.apply(b.callback.onDrag,[c,d,f])});a.bind(c.DRAGMOVE,function(a,c,d,f){g.apply(b.callback.onDragMove,[c,d,f])});a.bind(c.DROP,
+function(a,c,d,f,e,m,o){g.apply(b.callback.onDrop,[c,d,f,e,m,o])})});m.addInitUnBind(function(b){var b=b.treeObj,a=d.event;b.unbind(a.RENAME);b.unbind(a.DRAG);b.unbind(a.DRAGMOVE);b.unbind(a.DROP)});m.addInitCache(function(){});m.addInitNode(function(b,a,c){if(c)c.isHover=!1,c.editNameFlag=!1});m.addInitProxy(function(b){var a=b.target,c=m.getSetting(b.data.treeId),f=b.relatedTarget,k="",i=null,j="",e=null,o=null;if(g.eqs(b.type,"mouseover")){if(o=g.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+d.id.A}]))k=
+g.getNodeMainDom(o).id,j="hoverOverNode"}else if(g.eqs(b.type,"mouseout"))o=g.getMDom(c,f,[{tagName:"a",attrName:"treeNode"+d.id.A}]),o||(k="remove",j="hoverOutNode");else if(g.eqs(b.type,"mousedown")&&(o=g.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+d.id.A}])))k=g.getNodeMainDom(o).id,j="mousedownNode";if(k.length>0)switch(i=m.getNodeCache(c,k),j){case "mousedownNode":e=x.onMousedownNode;break;case "hoverOverNode":e=x.onHoverOverNode;break;case "hoverOutNode":e=x.onHoverOutNode}return{stop:!1,
+node:i,nodeEventType:j,nodeEventCallback:e,treeEventType:"",treeEventCallback:null}});m.addInitRoot(function(b){var b=m.getRoot(b),a=m.getRoots();b.curEditNode=null;b.curEditInput=null;b.curHoverNode=null;b.dragFlag=0;b.dragNodeShowBefore=[];b.dragMaskList=[];a.showHoverDom=!0});m.addZTreeTools(function(b,a){a.cancelEditName=function(a){m.getRoot(this.setting).curEditNode&&f.cancelCurEditNode(this.setting,a?a:null,!0)};a.copyNode=function(a,b,k,i){if(!b)return null;if(a&&!a.isParent&&this.setting.data.keep.leaf&&
+k===d.move.TYPE_INNER)return null;var j=this,e=g.clone(b);if(!a)a=null,k=d.move.TYPE_INNER;k==d.move.TYPE_INNER?(b=function(){f.addNodes(j.setting,a,[e],i)},g.canAsync(this.setting,a)?f.asyncNode(this.setting,a,i,b):b()):(f.addNodes(this.setting,a.parentNode,[e],i),f.moveNode(this.setting,a,e,k,!1,i));return e};a.editName=function(a){a&&a.tId&&a===m.getNodeCache(this.setting,a.tId)&&(a.parentTId&&f.expandCollapseParentNode(this.setting,a.getParentNode(),!0),f.editNode(this.setting,a))};a.moveNode=
+function(a,b,k,i){function j(){f.moveNode(e.setting,a,b,k,!1,i)}if(!b)return b;if(a&&!a.isParent&&this.setting.data.keep.leaf&&k===d.move.TYPE_INNER)return null;else if(a&&(b.parentTId==a.tId&&k==d.move.TYPE_INNER||o(b,this.setting).find("#"+a.tId).length>0))return null;else a||(a=null);var e=this;g.canAsync(this.setting,a)&&k===d.move.TYPE_INNER?f.asyncNode(this.setting,a,i,j):j();return b};a.setEditable=function(a){this.setting.edit.enable=a;return this.refresh()}});var N=f.cancelPreSelectedNode;
+f.cancelPreSelectedNode=function(b,a){for(var c=m.getRoot(b).curSelectedList,d=0,g=c.length;d<g;d++)if(!a||a===c[d])if(f.removeTreeDom(b,c[d]),a)break;N&&N.apply(f,arguments)};var O=f.createNodes;f.createNodes=function(b,a,c,d){O&&O.apply(f,arguments);c&&f.repairParentChkClassWithSelf&&f.repairParentChkClassWithSelf(b,d)};var V=f.makeNodeUrl;f.makeNodeUrl=function(b,a){return b.edit.enable?null:V.apply(f,arguments)};var L=f.removeNode;f.removeNode=function(b,a){var c=m.getRoot(b);if(c.curEditNode===
+a)c.curEditNode=null;L&&L.apply(f,arguments)};var P=f.selectNode;f.selectNode=function(b,a,c){var d=m.getRoot(b);if(m.isSelectedNode(b,a)&&d.curEditNode==a&&a.editNameFlag)return!1;P&&P.apply(f,arguments);f.addHoverDom(b,a);return!0};var Q=g.uCanDo;g.uCanDo=function(b,a){var c=m.getRoot(b);if(a&&(g.eqs(a.type,"mouseover")||g.eqs(a.type,"mouseout")||g.eqs(a.type,"mousedown")||g.eqs(a.type,"mouseup")))return!0;if(c.curEditNode)f.editNodeBlur=!1,c.curEditInput.focus();return!c.curEditNode&&(Q?Q.apply(f,
+arguments):!0)}})(jQuery);
diff --git a/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exhide.js b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exhide.js
new file mode 100755
index 00000000..05a5bfb7
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exhide.js
@@ -0,0 +1,363 @@
+/*
+ * JQuery zTree exHideNodes v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function($){
+ //default init node of exLib
+ var _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
+ if (typeof n.isHidden == "string") n.isHidden = tools.eqs(n.isHidden, "true");
+ n.isHidden = !!n.isHidden;
+ data.initHideForExCheck(setting, n);
+ },
+ //add dom for check
+ _beforeA = function(setting, node, html) {},
+ //update zTreeObj, add method of exLib
+ _zTreeTools = function(setting, zTreeTools) {
+ zTreeTools.showNodes = function(nodes, options) {
+ view.showNodes(setting, nodes, options);
+ }
+ zTreeTools.showNode = function(node, options) {
+ if (!node) {
+ return;
+ }
+ view.showNodes(setting, [node], options);
+ }
+ zTreeTools.hideNodes = function(nodes, options) {
+ view.hideNodes(setting, nodes, options);
+ }
+ zTreeTools.hideNode = function(node, options) {
+ if (!node) {
+ return;
+ }
+ view.hideNodes(setting, [node], options);
+ }
+
+ var _checkNode = zTreeTools.checkNode;
+ if (_checkNode) {
+ zTreeTools.checkNode = function(node, checked, checkTypeFlag, callbackFlag) {
+ if (!!node && !!node.isHidden) {
+ return;
+ }
+ _checkNode.apply(zTreeTools, arguments);
+ }
+ }
+ },
+ //method of operate data
+ _data = {
+ initHideForExCheck: function(setting, n) {
+ if (n.isHidden && setting.check && setting.check.enable) {
+ if(typeof n._nocheck == "undefined") {
+ n._nocheck = !!n.nocheck
+ n.nocheck = true;
+ }
+ n.check_Child_State = -1;
+ if (view.repairParentChkClassWithSelf) {
+ view.repairParentChkClassWithSelf(setting, n);
+ }
+ }
+ },
+ initShowForExCheck: function(setting, n) {
+ if (!n.isHidden && setting.check && setting.check.enable) {
+ if(typeof n._nocheck != "undefined") {
+ n.nocheck = n._nocheck;
+ delete n._nocheck;
+ }
+ if (view.setChkClass) {
+ var checkObj = $$(n, consts.id.CHECK, setting);
+ view.setChkClass(setting, checkObj, n);
+ }
+ if (view.repairParentChkClassWithSelf) {
+ view.repairParentChkClassWithSelf(setting, n);
+ }
+ }
+ }
+ },
+ //method of operate ztree dom
+ _view = {
+ clearOldFirstNode: function(setting, node) {
+ var n = node.getNextNode();
+ while(!!n){
+ if (n.isFirstNode) {
+ n.isFirstNode = false;
+ view.setNodeLineIcos(setting, n);
+ break;
+ }
+ if (n.isLastNode) {
+ break;
+ }
+ n = n.getNextNode();
+ }
+ },
+ clearOldLastNode: function(setting, node) {
+ var n = node.getPreNode();
+ while(!!n){
+ if (n.isLastNode) {
+ n.isLastNode = false;
+ view.setNodeLineIcos(setting, n);
+ break;
+ }
+ if (n.isFirstNode) {
+ break;
+ }
+ n = n.getPreNode();
+ }
+ },
+ makeDOMNodeMainBefore: function(html, setting, node) {
+ html.push("<li ", (node.isHidden ? "style='display:none;' " : ""), "id='", node.tId, "' class='", consts.className.LEVEL, node.level,"' tabindex='0' hidefocus='true' treenode>");
+ },
+ showNode: function(setting, node, options) {
+ node.isHidden = false;
+ data.initShowForExCheck(setting, node);
+ $$(node, setting).show();
+ },
+ showNodes: function(setting, nodes, options) {
+ if (!nodes || nodes.length == 0) {
+ return;
+ }
+ var pList = {}, i, j;
+ for (i=0, j=nodes.length; i<j; i++) {
+ var n = nodes[i];
+ if (!pList[n.parentTId]) {
+ var pn = n.getParentNode();
+ pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode();
+ }
+ view.showNode(setting, n, options);
+ }
+ for (var tId in pList) {
+ var children = pList[tId][setting.data.key.children];
+ view.setFirstNodeForShow(setting, children);
+ view.setLastNodeForShow(setting, children);
+ }
+ },
+ hideNode: function(setting, node, options) {
+ node.isHidden = true;
+ node.isFirstNode = false;
+ node.isLastNode = false;
+ data.initHideForExCheck(setting, node);
+ view.cancelPreSelectedNode(setting, node);
+ $$(node, setting).hide();
+ },
+ hideNodes: function(setting, nodes, options) {
+ if (!nodes || nodes.length == 0) {
+ return;
+ }
+ var pList = {}, i, j;
+ for (i=0, j=nodes.length; i<j; i++) {
+ var n = nodes[i];
+ if ((n.isFirstNode || n.isLastNode) && !pList[n.parentTId]) {
+ var pn = n.getParentNode();
+ pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode();
+ }
+ view.hideNode(setting, n, options);
+ }
+ for (var tId in pList) {
+ var children = pList[tId][setting.data.key.children];
+ view.setFirstNodeForHide(setting, children);
+ view.setLastNodeForHide(setting, children);
+ }
+ },
+ setFirstNode: function(setting, parentNode) {
+ var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
+ if (childLength > 0 && !parentNode[childKey][0].isHidden) {
+ parentNode[childKey][0].isFirstNode = true;
+ } else if (childLength > 0) {
+ view.setFirstNodeForHide(setting, parentNode[childKey]);
+ }
+ },
+ setLastNode: function(setting, parentNode) {
+ var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
+ if (childLength > 0 && !parentNode[childKey][0].isHidden) {
+ parentNode[childKey][childLength - 1].isLastNode = true;
+ } else if (childLength > 0) {
+ view.setLastNodeForHide(setting, parentNode[childKey]);
+ }
+ },
+ setFirstNodeForHide: function(setting, nodes) {
+ var n,i,j;
+ for (i=0, j=nodes.length; i<j; i++) {
+ n = nodes[i];
+ if (n.isFirstNode) {
+ break;
+ }
+ if (!n.isHidden && !n.isFirstNode) {
+ n.isFirstNode = true;
+ view.setNodeLineIcos(setting, n);
+ break;
+ } else {
+ n = null;
+ }
+ }
+ return n;
+ },
+ setFirstNodeForShow: function(setting, nodes) {
+ var n,i,j, first, old;
+ for(i=0, j=nodes.length; i<j; i++) {
+ n = nodes[i];
+ if (!first && !n.isHidden && n.isFirstNode) {
+ first = n;
+ break;
+ } else if (!first && !n.isHidden && !n.isFirstNode) {
+ n.isFirstNode = true;
+ first = n;
+ view.setNodeLineIcos(setting, n);
+ } else if (first && n.isFirstNode) {
+ n.isFirstNode = false;
+ old = n;
+ view.setNodeLineIcos(setting, n);
+ break;
+ } else {
+ n = null;
+ }
+ }
+ return {"new":first, "old":old};
+ },
+ setLastNodeForHide: function(setting, nodes) {
+ var n,i;
+ for (i=nodes.length-1; i>=0; i--) {
+ n = nodes[i];
+ if (n.isLastNode) {
+ break;
+ }
+ if (!n.isHidden && !n.isLastNode) {
+ n.isLastNode = true;
+ view.setNodeLineIcos(setting, n);
+ break;
+ } else {
+ n = null;
+ }
+ }
+ return n;
+ },
+ setLastNodeForShow: function(setting, nodes) {
+ var n,i,j, last, old;
+ for (i=nodes.length-1; i>=0; i--) {
+ n = nodes[i];
+ if (!last && !n.isHidden && n.isLastNode) {
+ last = n;
+ break;
+ } else if (!last && !n.isHidden && !n.isLastNode) {
+ n.isLastNode = true;
+ last = n;
+ view.setNodeLineIcos(setting, n);
+ } else if (last && n.isLastNode) {
+ n.isLastNode = false;
+ old = n;
+ view.setNodeLineIcos(setting, n);
+ break;
+ } else {
+ n = null;
+ }
+ }
+ return {"new":last, "old":old};
+ }
+ },
+
+ _z = {
+ view: _view,
+ data: _data
+ };
+ $.extend(true, $.fn.zTree._z, _z);
+
+ var zt = $.fn.zTree,
+ tools = zt._z.tools,
+ consts = zt.consts,
+ view = zt._z.view,
+ data = zt._z.data,
+ event = zt._z.event,
+ $$ = tools.$;
+
+ data.addInitNode(_initNode);
+ data.addBeforeA(_beforeA);
+ data.addZTreeTools(_zTreeTools);
+
+// Override method in core
+ var _dInitNode = data.initNode;
+ data.initNode = function(setting, level, node, parentNode, isFirstNode, isLastNode, openFlag) {
+ var tmpPNode = (parentNode) ? parentNode: data.getRoot(setting),
+ children = tmpPNode[setting.data.key.children];
+ data.tmpHideFirstNode = view.setFirstNodeForHide(setting, children);
+ data.tmpHideLastNode = view.setLastNodeForHide(setting, children);
+ view.setNodeLineIcos(setting, data.tmpHideFirstNode);
+ view.setNodeLineIcos(setting, data.tmpHideLastNode);
+ isFirstNode = (data.tmpHideFirstNode === node);
+ isLastNode = (data.tmpHideLastNode === node);
+ if (_dInitNode) _dInitNode.apply(data, arguments);
+ if (isLastNode) {
+ view.clearOldLastNode(setting, node);
+ }
+ };
+
+ var _makeChkFlag = data.makeChkFlag;
+ if (!!_makeChkFlag) {
+ data.makeChkFlag = function(setting, node) {
+ if (!!node && !!node.isHidden) {
+ return;
+ }
+ _makeChkFlag.apply(data, arguments);
+ }
+ }
+
+ var _getTreeCheckedNodes = data.getTreeCheckedNodes;
+ if (!!_getTreeCheckedNodes) {
+ data.getTreeCheckedNodes = function(setting, nodes, checked, results) {
+ if (!!nodes && nodes.length > 0) {
+ var p = nodes[0].getParentNode();
+ if (!!p && !!p.isHidden) {
+ return [];
+ }
+ }
+ return _getTreeCheckedNodes.apply(data, arguments);
+ }
+ }
+
+ var _getTreeChangeCheckedNodes = data.getTreeChangeCheckedNodes;
+ if (!!_getTreeChangeCheckedNodes) {
+ data.getTreeChangeCheckedNodes = function(setting, nodes, results) {
+ if (!!nodes && nodes.length > 0) {
+ var p = nodes[0].getParentNode();
+ if (!!p && !!p.isHidden) {
+ return [];
+ }
+ }
+ return _getTreeChangeCheckedNodes.apply(data, arguments);
+ }
+ }
+
+ var _expandCollapseSonNode = view.expandCollapseSonNode;
+ if (!!_expandCollapseSonNode) {
+ view.expandCollapseSonNode = function(setting, node, expandFlag, animateFlag, callback) {
+ if (!!node && !!node.isHidden) {
+ return;
+ }
+ _expandCollapseSonNode.apply(view, arguments);
+ }
+ }
+
+ var _setSonNodeCheckBox = view.setSonNodeCheckBox;
+ if (!!_setSonNodeCheckBox) {
+ view.setSonNodeCheckBox = function(setting, node, value, srcNode) {
+ if (!!node && !!node.isHidden) {
+ return;
+ }
+ _setSonNodeCheckBox.apply(view, arguments);
+ }
+ }
+
+ var _repairParentChkClassWithSelf = view.repairParentChkClassWithSelf;
+ if (!!_repairParentChkClassWithSelf) {
+ view.repairParentChkClassWithSelf = function(setting, node) {
+ if (!!node && !!node.isHidden) {
+ return;
+ }
+ _repairParentChkClassWithSelf.apply(view, arguments);
+ }
+ }
+})(jQuery); \ No newline at end of file
diff --git a/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exhide.min.js b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exhide.min.js
new file mode 100755
index 00000000..f1dce5bd
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exhide.min.js
@@ -0,0 +1,22 @@
+/*
+ * JQuery zTree exHideNodes v3.5.16
+ * http://zTree.me/
+ *
+ * Copyright (c) 2010 Hunter.z
+ *
+ * Licensed same as jquery - MIT License
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * email: hunter.z@263.net
+ * Date: 2014-03-09
+ */
+(function(i){i.extend(!0,i.fn.zTree._z,{view:{clearOldFirstNode:function(c,a){for(var b=a.getNextNode();b;){if(b.isFirstNode){b.isFirstNode=!1;d.setNodeLineIcos(c,b);break}if(b.isLastNode)break;b=b.getNextNode()}},clearOldLastNode:function(c,a){for(var b=a.getPreNode();b;){if(b.isLastNode){b.isLastNode=!1;d.setNodeLineIcos(c,b);break}if(b.isFirstNode)break;b=b.getPreNode()}},makeDOMNodeMainBefore:function(c,a,b){c.push("<li ",b.isHidden?"style='display:none;' ":"","id='",b.tId,"' class='",l.className.LEVEL,
+b.level,"' tabindex='0' hidefocus='true' treenode>")},showNode:function(c,a){a.isHidden=!1;f.initShowForExCheck(c,a);j(a,c).show()},showNodes:function(c,a,b){if(a&&a.length!=0){var e={},g,k;for(g=0,k=a.length;g<k;g++){var h=a[g];if(!e[h.parentTId]){var i=h.getParentNode();e[h.parentTId]=i===null?f.getRoot(c):h.getParentNode()}d.showNode(c,h,b)}for(var j in e)a=e[j][c.data.key.children],d.setFirstNodeForShow(c,a),d.setLastNodeForShow(c,a)}},hideNode:function(c,a){a.isHidden=!0;a.isFirstNode=!1;a.isLastNode=
+!1;f.initHideForExCheck(c,a);d.cancelPreSelectedNode(c,a);j(a,c).hide()},hideNodes:function(c,a,b){if(a&&a.length!=0){var e={},g,k;for(g=0,k=a.length;g<k;g++){var h=a[g];if((h.isFirstNode||h.isLastNode)&&!e[h.parentTId]){var i=h.getParentNode();e[h.parentTId]=i===null?f.getRoot(c):h.getParentNode()}d.hideNode(c,h,b)}for(var j in e)a=e[j][c.data.key.children],d.setFirstNodeForHide(c,a),d.setLastNodeForHide(c,a)}},setFirstNode:function(c,a){var b=c.data.key.children,e=a[b].length;e>0&&!a[b][0].isHidden?
+a[b][0].isFirstNode=!0:e>0&&d.setFirstNodeForHide(c,a[b])},setLastNode:function(c,a){var b=c.data.key.children,e=a[b].length;e>0&&!a[b][0].isHidden?a[b][e-1].isLastNode=!0:e>0&&d.setLastNodeForHide(c,a[b])},setFirstNodeForHide:function(c,a){var b,e,g;for(e=0,g=a.length;e<g;e++){b=a[e];if(b.isFirstNode)break;if(!b.isHidden&&!b.isFirstNode){b.isFirstNode=!0;d.setNodeLineIcos(c,b);break}else b=null}return b},setFirstNodeForShow:function(c,a){var b,e,g,f,h;for(e=0,g=a.length;e<g;e++)if(b=a[e],!f&&!b.isHidden&&
+b.isFirstNode){f=b;break}else if(!f&&!b.isHidden&&!b.isFirstNode)b.isFirstNode=!0,f=b,d.setNodeLineIcos(c,b);else if(f&&b.isFirstNode){b.isFirstNode=!1;h=b;d.setNodeLineIcos(c,b);break}return{"new":f,old:h}},setLastNodeForHide:function(c,a){var b,e;for(e=a.length-1;e>=0;e--){b=a[e];if(b.isLastNode)break;if(!b.isHidden&&!b.isLastNode){b.isLastNode=!0;d.setNodeLineIcos(c,b);break}else b=null}return b},setLastNodeForShow:function(c,a){var b,e,g,f;for(e=a.length-1;e>=0;e--)if(b=a[e],!g&&!b.isHidden&&
+b.isLastNode){g=b;break}else if(!g&&!b.isHidden&&!b.isLastNode)b.isLastNode=!0,g=b,d.setNodeLineIcos(c,b);else if(g&&b.isLastNode){b.isLastNode=!1;f=b;d.setNodeLineIcos(c,b);break}return{"new":g,old:f}}},data:{initHideForExCheck:function(c,a){if(a.isHidden&&c.check&&c.check.enable){if(typeof a._nocheck=="undefined")a._nocheck=!!a.nocheck,a.nocheck=!0;a.check_Child_State=-1;d.repairParentChkClassWithSelf&&d.repairParentChkClassWithSelf(c,a)}},initShowForExCheck:function(c,a){if(!a.isHidden&&c.check&&
+c.check.enable){if(typeof a._nocheck!="undefined")a.nocheck=a._nocheck,delete a._nocheck;if(d.setChkClass){var b=j(a,l.id.CHECK,c);d.setChkClass(c,b,a)}d.repairParentChkClassWithSelf&&d.repairParentChkClassWithSelf(c,a)}}}});var i=i.fn.zTree,m=i._z.tools,l=i.consts,d=i._z.view,f=i._z.data,j=m.$;f.addInitNode(function(c,a,b){if(typeof b.isHidden=="string")b.isHidden=m.eqs(b.isHidden,"true");b.isHidden=!!b.isHidden;f.initHideForExCheck(c,b)});f.addBeforeA(function(){});f.addZTreeTools(function(c,a){a.showNodes=
+function(a,b){d.showNodes(c,a,b)};a.showNode=function(a,b){a&&d.showNodes(c,[a],b)};a.hideNodes=function(a,b){d.hideNodes(c,a,b)};a.hideNode=function(a,b){a&&d.hideNodes(c,[a],b)};var b=a.checkNode;if(b)a.checkNode=function(c,d,f,h){(!c||!c.isHidden)&&b.apply(a,arguments)}});var n=f.initNode;f.initNode=function(c,a,b,e,g,i,h){var j=(e?e:f.getRoot(c))[c.data.key.children];f.tmpHideFirstNode=d.setFirstNodeForHide(c,j);f.tmpHideLastNode=d.setLastNodeForHide(c,j);d.setNodeLineIcos(c,f.tmpHideFirstNode);
+d.setNodeLineIcos(c,f.tmpHideLastNode);g=f.tmpHideFirstNode===b;i=f.tmpHideLastNode===b;n&&n.apply(f,arguments);i&&d.clearOldLastNode(c,b)};var o=f.makeChkFlag;if(o)f.makeChkFlag=function(c,a){(!a||!a.isHidden)&&o.apply(f,arguments)};var p=f.getTreeCheckedNodes;if(p)f.getTreeCheckedNodes=function(c,a,b,e){if(a&&a.length>0){var d=a[0].getParentNode();if(d&&d.isHidden)return[]}return p.apply(f,arguments)};var q=f.getTreeChangeCheckedNodes;if(q)f.getTreeChangeCheckedNodes=function(c,a,b){if(a&&a.length>
+0){var d=a[0].getParentNode();if(d&&d.isHidden)return[]}return q.apply(f,arguments)};var r=d.expandCollapseSonNode;if(r)d.expandCollapseSonNode=function(c,a,b,e,f){(!a||!a.isHidden)&&r.apply(d,arguments)};var s=d.setSonNodeCheckBox;if(s)d.setSonNodeCheckBox=function(c,a,b,e){(!a||!a.isHidden)&&s.apply(d,arguments)};var t=d.repairParentChkClassWithSelf;if(t)d.repairParentChkClassWithSelf=function(c,a){(!a||!a.isHidden)&&t.apply(d,arguments)}})(jQuery);
diff --git a/common/src/main/webapp/thirdparty/zTree/zTree.v3.jquery.json b/common/src/main/webapp/thirdparty/zTree/zTree.v3.jquery.json
new file mode 100755
index 00000000..ef26b102
--- /dev/null
+++ b/common/src/main/webapp/thirdparty/zTree/zTree.v3.jquery.json
@@ -0,0 +1,35 @@
+{
+ "name": "zTree.v3",
+ "title": "zTree.v3",
+ "description": "jquery tree plugin",
+ "keywords": [
+ "tree",
+ "ui"
+ ],
+ "version": "3.5.16",
+ "author": {
+ "name": "Zhang QiGang",
+ "email":"hunter.z@263.net",
+ "url": "https://github.com/zTree/zTree_v3"
+ },
+ "maintainers": [
+ {
+ "name": "Zhang QiGang",
+ "email":"hunter.z@263.net",
+ "url": "http://www.ztree.me/"
+ }
+ ],
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "http://www.ztree.me/v3/main.php#_license"
+ }
+ ],
+ "bugs": "https://github.com/zTree/zTree_v3/issues",
+ "homepage": "http://www.ztree.me/",
+ "demo": "http://www.ztree.me/v3/demo.php",
+ "docs": "http://www.ztree.me/v3/api.php",
+ "dependencies": {
+ "jquery": ">=1.4.4"
+ }
+}