From 8e30fbf41dabee082aafb60fe0639b504497674d Mon Sep 17 00:00:00 2001 From: AvinashS Date: Wed, 30 Aug 2017 18:39:12 +0530 Subject: vnfsdk market place seed code refactoring cleanup the package names and a test file correction Change-Id: Icc5a3b48189824dfe5cb84f05ce2c496bcfa3eab IssueId: VNFSDK-74 Signed-off-by: AvinashS --- common/src/main/webapp/thirdparty/License.txt | 362 - .../main/webapp/thirdparty/animate/animate.min.css | 6 - common/src/main/webapp/thirdparty/avalon/avalon.js | 5819 -- .../main/webapp/thirdparty/avalon/avalon.modern.js | 4935 -- .../src/main/webapp/thirdparty/bootbox/LICENSE.md | 23 - .../src/main/webapp/thirdparty/bootbox/README.md | 91 - .../main/webapp/thirdparty/bootbox/bootbox.min.js | 6 - .../daterangepicker-bs3.css | 319 - .../bootstrap-daterangepicker/daterangepicker.js | 1257 - .../thirdparty/bootstrap-daterangepicker/moment.js | 2808 - .../bootstrap-daterangepicker/moment.min.js | 6 - .../bootstrap-growl/bootstrap-growl.min.js | 2 - .../thirdparty/bootstrap/css/bootstrap-dt.css | 5804 -- .../thirdparty/bootstrap/css/bootstrap.min.css | 7 - .../fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 288 - .../fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes .../webapp/thirdparty/bootstrap/js/bootstrap.js | 1951 - .../thirdparty/bootstrap/js/bootstrap.min.js | 6 - .../bootstrap/js/bootstrap2-typeahead.min.js | 21 - common/src/main/webapp/thirdparty/cometd/cometd.js | 3045 -- .../thirdparty/cometd/cometd/AckExtension.js | 112 - .../thirdparty/cometd/cometd/ReloadExtension.js | 234 - .../thirdparty/cometd/cometd/TimeStampExtension.js | 42 - .../thirdparty/cometd/cometd/TimeSyncExtension.js | 216 - .../thirdparty/cometd/jquery/jquery.cometd-ack.js | 34 - .../cometd/jquery/jquery.cometd-reload.js | 42 - .../cometd/jquery/jquery.cometd-timestamp.js | 34 - .../cometd/jquery/jquery.cometd-timesync.js | 34 - .../thirdparty/cometd/jquery/jquery.cometd.js | 139 - .../main/webapp/thirdparty/css/animate-custom.css | 3945 -- .../main/webapp/thirdparty/css/bootstrap.min.css | 7 - .../webapp/thirdparty/css/font-awesome.min.css | 4 - .../src/main/webapp/thirdparty/css/img/Thumbs.db | Bin 2560 -> 0 bytes .../main/webapp/thirdparty/css/img/diy/1_close.png | Bin 601 -> 0 bytes .../main/webapp/thirdparty/css/img/diy/1_open.png | Bin 580 -> 0 bytes .../src/main/webapp/thirdparty/css/img/diy/2.png | Bin 570 -> 0 bytes .../src/main/webapp/thirdparty/css/img/diy/3.png | Bin 762 -> 0 bytes .../src/main/webapp/thirdparty/css/img/diy/4.png | Bin 399 -> 0 bytes .../src/main/webapp/thirdparty/css/img/diy/5.png | Bin 710 -> 0 bytes .../src/main/webapp/thirdparty/css/img/diy/6.png | Bin 432 -> 0 bytes .../src/main/webapp/thirdparty/css/img/diy/7.png | Bin 534 -> 0 bytes .../src/main/webapp/thirdparty/css/img/diy/8.png | Bin 529 -> 0 bytes .../src/main/webapp/thirdparty/css/img/diy/9.png | Bin 467 -> 0 bytes .../main/webapp/thirdparty/css/img/line_conn.gif | Bin 45 -> 0 bytes .../src/main/webapp/thirdparty/css/img/loading.gif | Bin 381 -> 0 bytes .../webapp/thirdparty/css/img/zTreeStandard.gif | Bin 5564 -> 0 bytes .../webapp/thirdparty/css/img/zTreeStandard.png | Bin 11173 -> 0 bytes .../src/main/webapp/thirdparty/css/magic-check.css | 123 - .../main/webapp/thirdparty/css/ng-table.min.css | 2 - .../main/webapp/thirdparty/css/ngict-component.css | 789 - common/src/main/webapp/thirdparty/css/plugins.css | 1561 - common/src/main/webapp/thirdparty/css/style.css | 4715 -- .../webapp/thirdparty/css/uniform.default.min.css | 1 - .../src/main/webapp/thirdparty/css/zTreeStyle.css | 97 - .../webapp/thirdparty/data-tables/DT_bootstrap.css | 240 - .../webapp/thirdparty/data-tables/DT_bootstrap.js | 363 - .../webapp/thirdparty/data-tables/DataTableICT.js | 1459 - .../thirdparty/data-tables/DataTableSmartClient.js | 1215 - .../data-tables/DataTableSmartClientApp.js | 1312 - .../data-tables/app-test-i18n-datatable-zh-CN.json | 51 - .../app-universal-i18n-datatable-en-US.json | 89 - .../app-universal-i18n-datatable-zh-CN.json | 90 - .../webapp/thirdparty/data-tables/dataTable.html | 155 - .../data-tables/dataTables.bootstrap.css | 331 - .../data-tables/images/loading-spinner-grey.gif | Bin 5203 -> 0 bytes .../thirdparty/data-tables/images/sort_asc.png | Bin 1118 -> 0 bytes .../thirdparty/data-tables/images/sort_both.png | Bin 1136 -> 0 bytes .../thirdparty/data-tables/images/sort_desc.png | Bin 1127 -> 0 bytes .../data-tables/jquery.dataTables-1.9.4.js | 12101 ---- .../data-tables/jquery.dataTables-1.9.4.min.js | 155 - .../thirdparty/data-tables/jquery.dataTables.js | 15268 ------ .../data-tables/jquery.dataTables.min.css | 1 - .../data-tables/jquery.dataTables.min.js | 166 - .../thirdparty/data-tables/style-datatable.css | 154 - .../main/webapp/thirdparty/echarts/echarts-all.js | 50 - .../src/main/webapp/thirdparty/echarts/echarts.js | 54502 ------------------- .../thirdparty/font-awesome/css/font-awesome.css | 1672 - .../font-awesome/css/font-awesome.min.css | 4 - .../thirdparty/font-awesome/fonts/FontAwesome.otf | Bin 85908 -> 0 bytes .../font-awesome/fonts/fontawesome-webfont.eot | Bin 56006 -> 0 bytes .../font-awesome/fonts/fontawesome-webfont.svg | 520 - .../font-awesome/fonts/fontawesome-webfont.ttf | Bin 112160 -> 0 bytes .../font-awesome/fonts/fontawesome-webfont.woff | Bin 65452 -> 0 bytes .../font-awesome/less/bordered-pulled.less | 16 - .../webapp/thirdparty/font-awesome/less/core.less | 11 - .../thirdparty/font-awesome/less/fixed-width.less | 6 - .../thirdparty/font-awesome/less/font-awesome.less | 17 - .../webapp/thirdparty/font-awesome/less/icons.less | 552 - .../thirdparty/font-awesome/less/larger.less | 13 - .../webapp/thirdparty/font-awesome/less/list.less | 19 - .../thirdparty/font-awesome/less/mixins.less | 25 - .../webapp/thirdparty/font-awesome/less/path.less | 14 - .../font-awesome/less/rotated-flipped.less | 20 - .../thirdparty/font-awesome/less/spinning.less | 29 - .../thirdparty/font-awesome/less/stacked.less | 20 - .../thirdparty/font-awesome/less/variables.less | 561 - .../font-awesome/scss/_bordered-pulled.scss | 16 - .../webapp/thirdparty/font-awesome/scss/_core.scss | 11 - .../thirdparty/font-awesome/scss/_fixed-width.scss | 6 - .../thirdparty/font-awesome/scss/_icons.scss | 552 - .../thirdparty/font-awesome/scss/_larger.scss | 13 - .../webapp/thirdparty/font-awesome/scss/_list.scss | 19 - .../thirdparty/font-awesome/scss/_mixins.scss | 25 - .../webapp/thirdparty/font-awesome/scss/_path.scss | 14 - .../font-awesome/scss/_rotated-flipped.scss | 20 - .../thirdparty/font-awesome/scss/_spinning.scss | 29 - .../thirdparty/font-awesome/scss/_stacked.scss | 20 - .../thirdparty/font-awesome/scss/_variables.scss | 561 - .../thirdparty/font-awesome/scss/font-awesome.scss | 17 - .../webapp/thirdparty/fonts/BebasNeue-webfont.eot | Bin 10031 -> 0 bytes .../webapp/thirdparty/fonts/BebasNeue-webfont.svg | 146 - .../webapp/thirdparty/fonts/BebasNeue-webfont.ttf | Bin 21736 -> 0 bytes .../webapp/thirdparty/fonts/BebasNeue-webfont.woff | Bin 11632 -> 0 bytes .../thirdparty/fonts/fontawesome-webfont.eot | Bin 56006 -> 0 bytes .../thirdparty/fonts/fontawesome-webfont.svg | 520 - .../thirdparty/fonts/fontawesome-webfont.ttf | Bin 112160 -> 0 bytes .../thirdparty/fonts/fontawesome-webfont.woff | Bin 65452 -> 0 bytes .../webapp/thirdparty/fonts/fontomas-webfont.eot | Bin 3336 -> 0 bytes .../webapp/thirdparty/fonts/fontomas-webfont.svg | 31 - .../webapp/thirdparty/fonts/fontomas-webfont.ttf | Bin 3128 -> 0 bytes .../webapp/thirdparty/fonts/fontomas-webfont.woff | Bin 2280 -> 0 bytes .../thirdparty/fonts/franchise-bold-webfont.eot | Bin 29144 -> 0 bytes .../thirdparty/fonts/franchise-bold-webfont.svg | 175 - .../thirdparty/fonts/franchise-bold-webfont.ttf | Bin 28788 -> 0 bytes .../thirdparty/fonts/franchise-bold-webfont.woff | Bin 14972 -> 0 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 288 - .../fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes .../src/main/webapp/thirdparty/icheck/bower.json | 42 - .../webapp/thirdparty/icheck/demo/css/Thumbs.db | Bin 5120 -> 0 bytes .../webapp/thirdparty/icheck/demo/css/banner.jpg | Bin 32768 -> 0 bytes .../webapp/thirdparty/icheck/demo/css/custom.css | 261 - .../webapp/thirdparty/icheck/demo/css/custom.styl | 1191 - .../webapp/thirdparty/icheck/demo/css/icheck.png | Bin 2382 -> 0 bytes .../thirdparty/icheck/demo/css/ie/arrow-bottom.png | Bin 184 -> 0 bytes .../thirdparty/icheck/demo/css/ie/arrow-top.png | Bin 175 -> 0 bytes .../thirdparty/icheck/demo/css/ie/header-line.png | Bin 611 -> 0 bytes .../thirdparty/icheck/demo/css/ie/icon-fork.png | Bin 213 -> 0 bytes .../thirdparty/icheck/demo/css/ie/icon-github.png | Bin 634 -> 0 bytes .../thirdparty/icheck/demo/css/ie/icon-lab.png | Bin 683 -> 0 bytes .../thirdparty/icheck/demo/css/ie/icon-options.png | Bin 666 -> 0 bytes .../thirdparty/icheck/demo/css/ie/icon-star.png | Bin 348 -> 0 bytes .../thirdparty/icheck/demo/css/montserrat-bold.eot | Bin 13099 -> 0 bytes .../thirdparty/icheck/demo/css/montserrat-bold.svg | 1490 - .../thirdparty/icheck/demo/css/montserrat-bold.ttf | Bin 32768 -> 0 bytes .../icheck/demo/css/montserrat-bold.woff | Bin 15736 -> 0 bytes .../icheck/demo/css/montserrat-regular.eot | Bin 13114 -> 0 bytes .../icheck/demo/css/montserrat-regular.svg | 1365 - .../icheck/demo/css/montserrat-regular.ttf | Bin 32768 -> 0 bytes .../icheck/demo/css/montserrat-regular.woff | Bin 15692 -> 0 bytes .../thirdparty/icheck/demo/css/normalize.css | 527 - .../main/webapp/thirdparty/icheck/demo/index.html | 1544 - .../webapp/thirdparty/icheck/demo/js/custom.js | 109 - .../webapp/thirdparty/icheck/demo/js/custom.min.js | 5 - .../webapp/thirdparty/icheck/demo/js/jquery.js | 4 - .../main/webapp/thirdparty/icheck/demo/js/zepto.js | 41 - .../webapp/thirdparty/icheck/icheck.jquery.json | 48 - common/src/main/webapp/thirdparty/icheck/icheck.js | 509 - .../main/webapp/thirdparty/icheck/icheck.min.js | 11 - .../main/webapp/thirdparty/icheck/skins/all.css | 61 - .../webapp/thirdparty/icheck/skins/flat/_all.css | 530 - .../webapp/thirdparty/icheck/skins/flat/aero.css | 53 - .../webapp/thirdparty/icheck/skins/flat/aero.png | Bin 1520 -> 0 bytes .../thirdparty/icheck/skins/flat/aero@2x.png | Bin 3218 -> 0 bytes .../webapp/thirdparty/icheck/skins/flat/blue.css | 53 - .../webapp/thirdparty/icheck/skins/flat/blue.png | Bin 1518 -> 0 bytes .../thirdparty/icheck/skins/flat/blue@2x.png | Bin 3217 -> 0 bytes .../webapp/thirdparty/icheck/skins/flat/flat.css | 53 - .../webapp/thirdparty/icheck/skins/flat/flat.png | Bin 1515 -> 0 bytes .../thirdparty/icheck/skins/flat/flat@2x.png | Bin 3217 -> 0 bytes .../webapp/thirdparty/icheck/skins/flat/green.css | 53 - .../webapp/thirdparty/icheck/skins/flat/green.png | Bin 1444 -> 0 bytes .../thirdparty/icheck/skins/flat/green@2x.png | Bin 3117 -> 0 bytes .../webapp/thirdparty/icheck/skins/flat/grey.css | 53 - .../webapp/thirdparty/icheck/skins/flat/grey.png | Bin 1516 -> 0 bytes .../thirdparty/icheck/skins/flat/grey@2x.png | Bin 3217 -> 0 bytes .../webapp/thirdparty/icheck/skins/flat/orange.css | 53 - .../webapp/thirdparty/icheck/skins/flat/orange.png | Bin 1518 -> 0 bytes .../thirdparty/icheck/skins/flat/orange@2x.png | Bin 3275 -> 0 bytes .../webapp/thirdparty/icheck/skins/flat/pink.css | 53 - .../webapp/thirdparty/icheck/skins/flat/pink.png | Bin 1522 -> 0 bytes .../thirdparty/icheck/skins/flat/pink@2x.png | Bin 3218 -> 0 bytes .../webapp/thirdparty/icheck/skins/flat/purple.css | 53 - .../webapp/thirdparty/icheck/skins/flat/purple.png | Bin 1519 -> 0 bytes .../thirdparty/icheck/skins/flat/purple@2x.png | Bin 3218 -> 0 bytes .../webapp/thirdparty/icheck/skins/flat/red.css | 53 - .../webapp/thirdparty/icheck/skins/flat/red.png | Bin 1516 -> 0 bytes .../webapp/thirdparty/icheck/skins/flat/red@2x.png | Bin 3276 -> 0 bytes .../webapp/thirdparty/icheck/skins/flat/yellow.css | 53 - .../webapp/thirdparty/icheck/skins/flat/yellow.png | Bin 1516 -> 0 bytes .../thirdparty/icheck/skins/flat/yellow@2x.png | Bin 3216 -> 0 bytes .../thirdparty/icheck/skins/futurico/futurico.css | 53 - .../thirdparty/icheck/skins/futurico/futurico.png | Bin 1734 -> 0 bytes .../icheck/skins/futurico/futurico@2x.png | Bin 3446 -> 0 bytes .../webapp/thirdparty/icheck/skins/line/Thumbs.db | Bin 4608 -> 0 bytes .../webapp/thirdparty/icheck/skins/line/_all.css | 710 - .../webapp/thirdparty/icheck/skins/line/aero.css | 71 - .../webapp/thirdparty/icheck/skins/line/blue.css | 71 - .../webapp/thirdparty/icheck/skins/line/green.css | 71 - .../webapp/thirdparty/icheck/skins/line/grey.css | 71 - .../webapp/thirdparty/icheck/skins/line/line.css | 71 - .../webapp/thirdparty/icheck/skins/line/line.png | Bin 588 -> 0 bytes .../thirdparty/icheck/skins/line/line@2x.png | Bin 1073 -> 0 bytes .../webapp/thirdparty/icheck/skins/line/orange.css | 71 - .../webapp/thirdparty/icheck/skins/line/pink.css | 71 - .../webapp/thirdparty/icheck/skins/line/purple.css | 71 - .../webapp/thirdparty/icheck/skins/line/red.css | 71 - .../webapp/thirdparty/icheck/skins/line/yellow.css | 71 - .../thirdparty/icheck/skins/minimal/_all.css | 590 - .../thirdparty/icheck/skins/minimal/aero.css | 59 - .../thirdparty/icheck/skins/minimal/aero.png | Bin 1151 -> 0 bytes .../thirdparty/icheck/skins/minimal/aero@2x.png | Bin 1409 -> 0 bytes .../thirdparty/icheck/skins/minimal/blue.css | 59 - .../thirdparty/icheck/skins/minimal/blue.png | Bin 1132 -> 0 bytes .../thirdparty/icheck/skins/minimal/blue@2x.png | Bin 1410 -> 0 bytes .../thirdparty/icheck/skins/minimal/green.css | 59 - .../thirdparty/icheck/skins/minimal/green.png | Bin 1143 -> 0 bytes .../thirdparty/icheck/skins/minimal/green@2x.png | Bin 1408 -> 0 bytes .../thirdparty/icheck/skins/minimal/grey.css | 59 - .../thirdparty/icheck/skins/minimal/grey.png | Bin 1142 -> 0 bytes .../thirdparty/icheck/skins/minimal/grey@2x.png | Bin 1407 -> 0 bytes .../thirdparty/icheck/skins/minimal/minimal.css | 59 - .../thirdparty/icheck/skins/minimal/minimal.png | Bin 1114 -> 0 bytes .../thirdparty/icheck/skins/minimal/minimal@2x.png | Bin 1410 -> 0 bytes .../thirdparty/icheck/skins/minimal/orange.css | 59 - .../thirdparty/icheck/skins/minimal/orange.png | Bin 1139 -> 0 bytes .../thirdparty/icheck/skins/minimal/orange@2x.png | Bin 1407 -> 0 bytes .../thirdparty/icheck/skins/minimal/pink.css | 59 - .../thirdparty/icheck/skins/minimal/pink.png | Bin 1150 -> 0 bytes .../thirdparty/icheck/skins/minimal/pink@2x.png | Bin 1409 -> 0 bytes .../thirdparty/icheck/skins/minimal/purple.css | 59 - .../thirdparty/icheck/skins/minimal/purple.png | Bin 1132 -> 0 bytes .../thirdparty/icheck/skins/minimal/purple@2x.png | Bin 1409 -> 0 bytes .../webapp/thirdparty/icheck/skins/minimal/red.css | 59 - .../webapp/thirdparty/icheck/skins/minimal/red.png | Bin 1130 -> 0 bytes .../thirdparty/icheck/skins/minimal/red@2x.png | Bin 1410 -> 0 bytes .../thirdparty/icheck/skins/minimal/yellow.css | 59 - .../thirdparty/icheck/skins/minimal/yellow.png | Bin 1135 -> 0 bytes .../thirdparty/icheck/skins/minimal/yellow@2x.png | Bin 1406 -> 0 bytes .../thirdparty/icheck/skins/polaris/polaris.css | 59 - .../thirdparty/icheck/skins/polaris/polaris.png | Bin 6401 -> 0 bytes .../thirdparty/icheck/skins/polaris/polaris@2x.png | Bin 32768 -> 0 bytes .../thirdparty/icheck/skins/square/Thumbs.db | Bin 32768 -> 0 bytes .../webapp/thirdparty/icheck/skins/square/_all.css | 590 - .../webapp/thirdparty/icheck/skins/square/aero.css | 59 - .../webapp/thirdparty/icheck/skins/square/aero.png | Bin 4436 -> 0 bytes .../thirdparty/icheck/skins/square/aero@2x.png | Bin 4455 -> 0 bytes .../webapp/thirdparty/icheck/skins/square/blue.css | 59 - .../webapp/thirdparty/icheck/skins/square/blue.png | Bin 2185 -> 0 bytes .../thirdparty/icheck/skins/square/blue@2x.png | Bin 4485 -> 0 bytes .../thirdparty/icheck/skins/square/green.css | 59 - .../thirdparty/icheck/skins/square/green.png | Bin 2193 -> 0 bytes .../thirdparty/icheck/skins/square/green@2x.png | Bin 4498 -> 0 bytes .../webapp/thirdparty/icheck/skins/square/grey.css | 59 - .../webapp/thirdparty/icheck/skins/square/grey.png | Bin 2186 -> 0 bytes .../thirdparty/icheck/skins/square/grey@2x.png | Bin 4483 -> 0 bytes .../thirdparty/icheck/skins/square/orange.css | 59 - .../thirdparty/icheck/skins/square/orange.png | Bin 2181 -> 0 bytes .../thirdparty/icheck/skins/square/orange@2x.png | Bin 4474 -> 0 bytes .../webapp/thirdparty/icheck/skins/square/pink.css | 59 - .../webapp/thirdparty/icheck/skins/square/pink.png | Bin 2189 -> 0 bytes .../thirdparty/icheck/skins/square/pink@2x.png | Bin 4479 -> 0 bytes .../thirdparty/icheck/skins/square/purple.css | 59 - .../thirdparty/icheck/skins/square/purple.png | Bin 2188 -> 0 bytes .../thirdparty/icheck/skins/square/purple@2x.png | Bin 4501 -> 0 bytes .../webapp/thirdparty/icheck/skins/square/red.css | 59 - .../webapp/thirdparty/icheck/skins/square/red.png | Bin 2190 -> 0 bytes .../thirdparty/icheck/skins/square/red@2x.png | Bin 4490 -> 0 bytes .../thirdparty/icheck/skins/square/square.css | 59 - .../thirdparty/icheck/skins/square/square.png | Bin 2175 -> 0 bytes .../thirdparty/icheck/skins/square/square@2x.png | Bin 4478 -> 0 bytes .../thirdparty/icheck/skins/square/yellow.css | 59 - .../thirdparty/icheck/skins/square/yellow.png | Bin 2131 -> 0 bytes .../thirdparty/icheck/skins/square/yellow@2x.png | Bin 4385 -> 0 bytes common/src/main/webapp/thirdparty/images/add.png | Bin 1104 -> 0 bytes .../checkbox-radio/checkbox-checked-disabled.png | Bin 3087 -> 0 bytes .../images/checkbox-radio/checkbox-checked.png | Bin 3053 -> 0 bytes .../images/checkbox-radio/checkbox-disabled.png | Bin 2830 -> 0 bytes .../images/checkbox-radio/checkbox-hover.png | Bin 2835 -> 0 bytes .../images/checkbox-radio/checkbox-init.png | Bin 2833 -> 0 bytes .../checkbox-radio/radio-checked-disabled.png | Bin 2993 -> 0 bytes .../images/checkbox-radio/radio-checked.png | Bin 3235 -> 0 bytes .../images/checkbox-radio/radio-disabled.png | Bin 3045 -> 0 bytes .../images/checkbox-radio/radio-hover.png | Bin 3068 -> 0 bytes .../images/checkbox-radio/radio-init.png | Bin 3036 -> 0 bytes .../webapp/thirdparty/images/collapse_arrow.png | Bin 1174 -> 0 bytes .../src/main/webapp/thirdparty/images/delete.png | Bin 1100 -> 0 bytes common/src/main/webapp/thirdparty/images/edit.png | Bin 3045 -> 0 bytes .../main/webapp/thirdparty/images/expand_arrow.png | Bin 1182 -> 0 bytes common/src/main/webapp/thirdparty/images/openo.png | Bin 49007 -> 0 bytes .../main/webapp/thirdparty/images/searchicon.png | Bin 366 -> 0 bytes .../jQuery-File-Upload/css/jquery.fileupload.css | 37 - .../thirdparty/jQuery-File-Upload/img/loading.gif | Bin 3897 -> 0 bytes .../jQuery-File-Upload/img/progressbar.gif | Bin 3323 -> 0 bytes .../jQuery-File-Upload/js/jquery.fileupload.js | 1477 - .../js/jquery.iframe-transport.js | 217 - .../js/vendor/jquery.ui.widget.js | 572 - .../thirdparty/jquery-cokie/jquery.cokie.min.js | 9 - .../webapp/thirdparty/jquery-validation/README.md | 72 - .../jquery-validation/dist/additional-methods.js | 617 - .../dist/additional-methods.min.js | 11 - .../jquery-validation/dist/jquery.validate.js | 1231 - .../jquery-validation/dist/jquery.validate.min.js | 12 - .../jquery-validation/js/additional-methods.js | 928 - .../jquery-validation/js/additional-methods.min.js | 4 - .../jquery-validation/js/jquery.validate.js | 1357 - .../jquery-validation/js/jquery.validate.min.js | 4 - .../js/localization/messages_ar.js | 33 - .../js/localization/messages_ar.min.js | 4 - .../js/localization/messages_bg.js | 33 - .../js/localization/messages_bg.min.js | 4 - .../js/localization/messages_ca.js | 33 - .../js/localization/messages_ca.min.js | 4 - .../js/localization/messages_cs.js | 33 - .../js/localization/messages_cs.min.js | 4 - .../js/localization/messages_da.js | 30 - .../js/localization/messages_da.min.js | 4 - .../js/localization/messages_de.js | 30 - .../js/localization/messages_de.min.js | 4 - .../js/localization/messages_el.js | 33 - .../js/localization/messages_el.min.js | 4 - .../js/localization/messages_es.js | 36 - .../js/localization/messages_es.min.js | 4 - .../js/localization/messages_es_AR.js | 37 - .../js/localization/messages_es_AR.min.js | 4 - .../js/localization/messages_et.js | 31 - .../js/localization/messages_et.min.js | 4 - .../js/localization/messages_eu.js | 33 - .../js/localization/messages_eu.min.js | 4 - .../js/localization/messages_fa.js | 36 - .../js/localization/messages_fa.min.js | 4 - .../js/localization/messages_fi.js | 31 - .../js/localization/messages_fi.min.js | 4 - .../js/localization/messages_fr.js | 59 - .../js/localization/messages_fr.min.js | 4 - .../js/localization/messages_gl.js | 38 - .../js/localization/messages_gl.min.js | 4 - .../js/localization/messages_he.js | 33 - .../js/localization/messages_he.min.js | 4 - .../js/localization/messages_hr.js | 33 - .../js/localization/messages_hr.min.js | 4 - .../js/localization/messages_hu.js | 32 - .../js/localization/messages_hu.min.js | 4 - .../js/localization/messages_id.js | 32 - .../js/localization/messages_id.min.js | 4 - .../js/localization/messages_is.js | 31 - .../js/localization/messages_is.min.js | 4 - .../js/localization/messages_it.js | 36 - .../js/localization/messages_it.min.js | 4 - .../js/localization/messages_ja.js | 33 - .../js/localization/messages_ja.min.js | 4 - .../js/localization/messages_ka.js | 33 - .../js/localization/messages_ka.min.js | 4 - .../js/localization/messages_kk.js | 33 - .../js/localization/messages_kk.min.js | 4 - .../js/localization/messages_ko.js | 33 - .../js/localization/messages_ko.min.js | 4 - .../js/localization/messages_lt.js | 33 - .../js/localization/messages_lt.min.js | 4 - .../js/localization/messages_lv.js | 33 - .../js/localization/messages_lv.min.js | 4 - .../js/localization/messages_my.js | 33 - .../js/localization/messages_my.min.js | 4 - .../js/localization/messages_nl.js | 43 - .../js/localization/messages_nl.min.js | 4 - .../js/localization/messages_no.js | 33 - .../js/localization/messages_no.min.js | 4 - .../js/localization/messages_pl.js | 33 - .../js/localization/messages_pl.min.js | 4 - .../js/localization/messages_pt_BR.js | 37 - .../js/localization/messages_pt_BR.min.js | 4 - .../js/localization/messages_pt_PT.js | 37 - .../js/localization/messages_pt_PT.min.js | 4 - .../js/localization/messages_ro.js | 33 - .../js/localization/messages_ro.min.js | 4 - .../js/localization/messages_ru.js | 33 - .../js/localization/messages_ru.min.js | 4 - .../js/localization/messages_si.js | 33 - .../js/localization/messages_si.min.js | 4 - .../js/localization/messages_sk.js | 30 - .../js/localization/messages_sk.min.js | 4 - .../js/localization/messages_sl.js | 33 - .../js/localization/messages_sl.min.js | 4 - .../js/localization/messages_sr.js | 33 - .../js/localization/messages_sr.min.js | 4 - .../js/localization/messages_sr_lat.js | 33 - .../js/localization/messages_sr_lat.min.js | 4 - .../js/localization/messages_sv.js | 31 - .../js/localization/messages_sv.min.js | 4 - .../js/localization/messages_th.js | 33 - .../js/localization/messages_th.min.js | 4 - .../js/localization/messages_tj.js | 33 - .../js/localization/messages_tj.min.js | 4 - .../js/localization/messages_tr.js | 33 - .../js/localization/messages_tr.min.js | 4 - .../js/localization/messages_uk.js | 33 - .../js/localization/messages_uk.min.js | 4 - .../js/localization/messages_vi.js | 33 - .../js/localization/messages_vi.min.js | 4 - .../js/localization/messages_zh.js | 33 - .../js/localization/messages_zh.min.js | 4 - .../js/localization/messages_zh_TW.js | 34 - .../js/localization/messages_zh_TW.min.js | 4 - .../js/localization/methods_de.js | 22 - .../js/localization/methods_de.min.js | 4 - .../js/localization/methods_es_CL.js | 22 - .../js/localization/methods_es_CL.min.js | 4 - .../js/localization/methods_fi.js | 22 - .../js/localization/methods_fi.min.js | 4 - .../js/localization/methods_nl.js | 19 - .../js/localization/methods_nl.min.js | 4 - .../js/localization/methods_pt.js | 19 - .../js/localization/methods_pt.min.js | 4 - .../jquery.i18n/jquery.i18n.properties-1.0.9.js | 479 - .../webapp/thirdparty/jquery/jquery-1.10.2.min.js | 4 - .../main/webapp/thirdparty/jquery/jquery-1.11.2.js | 10346 ---- .../webapp/thirdparty/jquery/jquery-1.11.2.min.js | 4 - .../webapp/thirdparty/jquery/jquery-1.11.2.min.map | 1 - .../webapp/thirdparty/jquery/jquery-1.4.4.min.js | 167 - .../main/webapp/thirdparty/jquery/jquery-2.1.3.js | 9205 ---- .../webapp/thirdparty/jquery/jquery-2.1.3.min.js | 4 - .../webapp/thirdparty/jquery/jquery-2.1.3.min.map | 1 - .../thirdparty/jquery/jquery-migrate-1.2.1.js | 521 - .../thirdparty/jquery/jquery-migrate-1.2.1.min.js | 2 - .../main/webapp/thirdparty/jquery/jquery.reveal.js | 152 - .../webapp/thirdparty/js/angular-ui-router.min.js | 8 - .../src/main/webapp/thirdparty/js/angular.min.js | 295 - .../js/bootstrap-table-filter-control.min.js | 7 - .../webapp/thirdparty/js/bootstrap-table.min.js | 8 - .../src/main/webapp/thirdparty/js/bootstrap.min.js | 6 - common/src/main/webapp/thirdparty/js/core/const.js | 46 - .../src/main/webapp/thirdparty/js/core/hk.min.js | 819 - .../webapp/thirdparty/js/core/load_menuList.js | 70 - .../webapp/thirdparty/js/core/openoFrameWork.js | 3701 -- .../src/main/webapp/thirdparty/js/core/pym.min.js | 16 - common/src/main/webapp/thirdparty/js/jquery-ui.js | 18706 ------- .../src/main/webapp/thirdparty/js/jquery.cookie.js | 117 - .../webapp/thirdparty/js/jquery.ztree.core-3.5.js | 70 - .../main/webapp/thirdparty/js/jquery_1.12.4.min.js | 5 - common/src/main/webapp/thirdparty/js/mustache.js | 630 - .../src/main/webapp/thirdparty/js/ng-table.min.js | 2 - common/src/main/webapp/thirdparty/js/tools.js | 1021 - .../src/main/webapp/thirdparty/uniform/README.md | 389 - .../thirdparty/uniform/css/uniform.default.css | 366 - .../thirdparty/uniform/css/uniform.default.min.css | 1 - .../thirdparty/uniform/css/uniform.default.scss | 150 - .../thirdparty/uniform/images/bg-input-focus.png | Bin 143 -> 0 bytes .../webapp/thirdparty/uniform/images/bg-input.png | Bin 143 -> 0 bytes .../webapp/thirdparty/uniform/images/sprite.png | Bin 31815 -> 0 bytes .../thirdparty/uniform/images/sprite_original.png | Bin 34229 -> 0 bytes .../webapp/thirdparty/uniform/jquery.uniform.js | 1068 - .../thirdparty/uniform/jquery.uniform.min.js | 1 - .../main/webapp/thirdparty/zTree/api/API_cn.html | 103 - .../main/webapp/thirdparty/zTree/api/API_en.html | 102 - .../main/webapp/thirdparty/zTree/api/apiCss/api.js | 592 - .../webapp/thirdparty/zTree/api/apiCss/common.css | 219 - .../thirdparty/zTree/api/apiCss/common_ie6.css | 23 - .../thirdparty/zTree/api/apiCss/img/apiMenu.gif | Bin 1736 -> 0 bytes .../thirdparty/zTree/api/apiCss/img/apiMenu.png | Bin 3954 -> 0 bytes .../thirdparty/zTree/api/apiCss/img/background.jpg | Bin 36520 -> 0 bytes .../thirdparty/zTree/api/apiCss/img/chinese.png | Bin 1556 -> 0 bytes .../thirdparty/zTree/api/apiCss/img/close.png | Bin 1908 -> 0 bytes .../thirdparty/zTree/api/apiCss/img/contact-bg.png | Bin 177 -> 0 bytes .../thirdparty/zTree/api/apiCss/img/english.png | Bin 1356 -> 0 bytes .../thirdparty/zTree/api/apiCss/img/header-bg.png | Bin 148 -> 0 bytes .../thirdparty/zTree/api/apiCss/img/lightbulb.png | Bin 27355 -> 0 bytes .../zTree/api/apiCss/img/overlay_arrow.gif | Bin 625 -> 0 bytes .../zTree/api/apiCss/img/overlay_arrow.png | Bin 830 -> 0 bytes .../thirdparty/zTree/api/apiCss/img/overlay_bg.png | Bin 109 -> 0 bytes .../zTree/api/apiCss/img/overlay_close_IE6.gif | Bin 441 -> 0 bytes .../zTree/api/apiCss/img/zTreeStandard.gif | Bin 6851 -> 0 bytes .../zTree/api/apiCss/img/zTreeStandard.png | Bin 12573 -> 0 bytes .../zTree/api/apiCss/jquery-1.6.2.min.js | 18 - .../zTree/api/apiCss/jquery.ztree.core-3.5.js | 69 - .../zTree/api/apiCss/zTreeStyleForApi.css | 49 - .../thirdparty/zTree/api/cn/fn.zTree._z.html | 13 - .../thirdparty/zTree/api/cn/fn.zTree.destroy.html | 28 - .../zTree/api/cn/fn.zTree.getZTreeObj.html | 24 - .../thirdparty/zTree/api/cn/fn.zTree.init.html | 74 - .../zTree/api/cn/setting.async.autoParam.html | 39 - .../zTree/api/cn/setting.async.contentType.html | 29 - .../zTree/api/cn/setting.async.dataFilter.html | 45 - .../zTree/api/cn/setting.async.dataType.html | 29 - .../zTree/api/cn/setting.async.enable.html | 30 - .../zTree/api/cn/setting.async.otherParam.html | 40 - .../zTree/api/cn/setting.async.type.html | 30 - .../thirdparty/zTree/api/cn/setting.async.url.html | 50 - .../zTree/api/cn/setting.callback.beforeAsync.html | 35 - .../zTree/api/cn/setting.callback.beforeCheck.html | 34 - .../zTree/api/cn/setting.callback.beforeClick.html | 49 - .../api/cn/setting.callback.beforeCollapse.html | 34 - .../api/cn/setting.callback.beforeDblClick.html | 36 - .../zTree/api/cn/setting.callback.beforeDrag.html | 39 - .../api/cn/setting.callback.beforeDragOpen.html | 37 - .../zTree/api/cn/setting.callback.beforeDrop.html | 48 - .../api/cn/setting.callback.beforeEditName.html | 38 - .../api/cn/setting.callback.beforeExpand.html | 34 - .../api/cn/setting.callback.beforeMouseDown.html | 35 - .../api/cn/setting.callback.beforeMouseUp.html | 35 - .../api/cn/setting.callback.beforeRemove.html | 37 - .../api/cn/setting.callback.beforeRename.html | 46 - .../api/cn/setting.callback.beforeRightClick.html | 35 - .../api/cn/setting.callback.onAsyncError.html | 42 - .../api/cn/setting.callback.onAsyncSuccess.html | 38 - .../zTree/api/cn/setting.callback.onCheck.html | 34 - .../zTree/api/cn/setting.callback.onClick.html | 49 - .../zTree/api/cn/setting.callback.onCollapse.html | 34 - .../zTree/api/cn/setting.callback.onDblClick.html | 35 - .../zTree/api/cn/setting.callback.onDrag.html | 34 - .../zTree/api/cn/setting.callback.onDragMove.html | 34 - .../zTree/api/cn/setting.callback.onDrop.html | 46 - .../zTree/api/cn/setting.callback.onExpand.html | 34 - .../zTree/api/cn/setting.callback.onMouseDown.html | 35 - .../zTree/api/cn/setting.callback.onMouseUp.html | 35 - .../api/cn/setting.callback.onNodeCreated.html | 35 - .../zTree/api/cn/setting.callback.onRemove.html | 34 - .../zTree/api/cn/setting.callback.onRename.html | 40 - .../api/cn/setting.callback.onRightClick.html | 36 - .../api/cn/setting.check.autoCheckTrigger.html | 28 - .../api/cn/setting.check.chkDisabledInherit.html | 28 - .../zTree/api/cn/setting.check.chkStyle.html | 48 - .../zTree/api/cn/setting.check.chkboxType.html | 31 - .../zTree/api/cn/setting.check.enable.html | 25 - .../zTree/api/cn/setting.check.nocheckInherit.html | 28 - .../zTree/api/cn/setting.check.radioType.html | 29 - .../zTree/api/cn/setting.data.keep.leaf.html | 28 - .../zTree/api/cn/setting.data.keep.parent.html | 28 - .../zTree/api/cn/setting.data.key.checked.html | 24 - .../zTree/api/cn/setting.data.key.children.html | 23 - .../zTree/api/cn/setting.data.key.name.html | 23 - .../zTree/api/cn/setting.data.key.title.html | 24 - .../zTree/api/cn/setting.data.key.url.html | 24 - .../api/cn/setting.data.simpleData.enable.html | 38 - .../api/cn/setting.data.simpleData.idKey.html | 32 - .../api/cn/setting.data.simpleData.pIdKey.html | 32 - .../api/cn/setting.data.simpleData.rootPId.html | 32 - .../cn/setting.edit.drag.autoExpandTrigger.html | 28 - .../api/cn/setting.edit.drag.autoOpenTime.html | 25 - .../zTree/api/cn/setting.edit.drag.borderMax.html | 25 - .../zTree/api/cn/setting.edit.drag.borderMin.html | 25 - .../zTree/api/cn/setting.edit.drag.inner.html | 59 - .../zTree/api/cn/setting.edit.drag.isCopy.html | 32 - .../zTree/api/cn/setting.edit.drag.isMove.html | 32 - .../api/cn/setting.edit.drag.maxShowNodeNum.html | 25 - .../api/cn/setting.edit.drag.minMoveSize.html | 25 - .../zTree/api/cn/setting.edit.drag.next.html | 58 - .../zTree/api/cn/setting.edit.drag.prev.html | 58 - .../api/cn/setting.edit.editNameSelectAll.html | 27 - .../zTree/api/cn/setting.edit.enable.html | 38 - .../zTree/api/cn/setting.edit.removeTitle.html | 48 - .../zTree/api/cn/setting.edit.renameTitle.html | 48 - .../zTree/api/cn/setting.edit.showRemoveBtn.html | 49 - .../zTree/api/cn/setting.edit.showRenameBtn.html | 51 - .../thirdparty/zTree/api/cn/setting.treeId.html | 14 - .../thirdparty/zTree/api/cn/setting.treeObj.html | 14 - .../zTree/api/cn/setting.view.addDiyDom.html | 40 - .../zTree/api/cn/setting.view.addHoverDom.html | 45 - .../api/cn/setting.view.autoCancelSelected.html | 26 - .../zTree/api/cn/setting.view.dblClickExpand.html | 44 - .../zTree/api/cn/setting.view.expandSpeed.html | 31 - .../zTree/api/cn/setting.view.fontCss.html | 42 - .../zTree/api/cn/setting.view.nameIsHTML.html | 27 - .../zTree/api/cn/setting.view.removeHoverDom.html | 45 - .../zTree/api/cn/setting.view.selectedMulti.html | 27 - .../zTree/api/cn/setting.view.showIcon.html | 44 - .../zTree/api/cn/setting.view.showLine.html | 25 - .../zTree/api/cn/setting.view.showTitle.html | 46 - .../api/cn/setting.view.txtSelectedEnable.html | 25 - .../zTree/api/cn/treeNode.check_Child_State.html | 43 - .../zTree/api/cn/treeNode.check_Focus.html | 19 - .../thirdparty/zTree/api/cn/treeNode.checked.html | 32 - .../zTree/api/cn/treeNode.checkedOld.html | 25 - .../thirdparty/zTree/api/cn/treeNode.children.html | 35 - .../zTree/api/cn/treeNode.chkDisabled.html | 28 - .../thirdparty/zTree/api/cn/treeNode.click.html | 24 - .../thirdparty/zTree/api/cn/treeNode.diy.html | 15 - .../zTree/api/cn/treeNode.editNameFlag.html | 19 - .../zTree/api/cn/treeNode.getCheckStatus.html | 63 - .../zTree/api/cn/treeNode.getNextNode.html | 27 - .../zTree/api/cn/treeNode.getParentNode.html | 27 - .../zTree/api/cn/treeNode.getPreNode.html | 27 - .../zTree/api/cn/treeNode.halfCheck.html | 29 - .../thirdparty/zTree/api/cn/treeNode.icon.html | 33 - .../zTree/api/cn/treeNode.iconClose.html | 33 - .../thirdparty/zTree/api/cn/treeNode.iconOpen.html | 33 - .../thirdparty/zTree/api/cn/treeNode.iconSkin.html | 43 - .../zTree/api/cn/treeNode.isAjaxing.html | 26 - .../zTree/api/cn/treeNode.isFirstNode.html | 28 - .../thirdparty/zTree/api/cn/treeNode.isHidden.html | 27 - .../thirdparty/zTree/api/cn/treeNode.isHover.html | 19 - .../zTree/api/cn/treeNode.isLastNode.html | 28 - .../thirdparty/zTree/api/cn/treeNode.isParent.html | 28 - .../thirdparty/zTree/api/cn/treeNode.level.html | 25 - .../thirdparty/zTree/api/cn/treeNode.name.html | 25 - .../thirdparty/zTree/api/cn/treeNode.nocheck.html | 26 - .../thirdparty/zTree/api/cn/treeNode.open.html | 30 - .../zTree/api/cn/treeNode.parentTId.html | 27 - .../thirdparty/zTree/api/cn/treeNode.tId.html | 25 - .../thirdparty/zTree/api/cn/treeNode.target.html | 24 - .../thirdparty/zTree/api/cn/treeNode.url.html | 25 - .../thirdparty/zTree/api/cn/treeNode.zAsync.html | 28 - .../thirdparty/zTree/api/cn/zTreeObj.addNodes.html | 42 - .../zTree/api/cn/zTreeObj.cancelEditName.html | 30 - .../zTree/api/cn/zTreeObj.cancelSelectedNode.html | 35 - .../zTree/api/cn/zTreeObj.checkAllNodes.html | 29 - .../zTree/api/cn/zTreeObj.checkNode.html | 44 - .../thirdparty/zTree/api/cn/zTreeObj.copyNode.html | 44 - .../thirdparty/zTree/api/cn/zTreeObj.destroy.html | 25 - .../thirdparty/zTree/api/cn/zTreeObj.editName.html | 29 - .../zTree/api/cn/zTreeObj.expandAll.html | 30 - .../zTree/api/cn/zTreeObj.expandNode.html | 50 - .../api/cn/zTreeObj.getChangeCheckedNodes.html | 24 - .../zTree/api/cn/zTreeObj.getCheckedNodes.html | 28 - .../zTree/api/cn/zTreeObj.getNodeByParam.html | 32 - .../zTree/api/cn/zTreeObj.getNodeByTId.html | 27 - .../zTree/api/cn/zTreeObj.getNodeIndex.html | 30 - .../thirdparty/zTree/api/cn/zTreeObj.getNodes.html | 26 - .../zTree/api/cn/zTreeObj.getNodesByFilter.html | 43 - .../zTree/api/cn/zTreeObj.getNodesByParam.html | 31 - .../api/cn/zTreeObj.getNodesByParamFuzzy.html | 32 - .../zTree/api/cn/zTreeObj.getSelectedNodes.html | 23 - .../thirdparty/zTree/api/cn/zTreeObj.hideNode.html | 29 - .../zTree/api/cn/zTreeObj.hideNodes.html | 29 - .../thirdparty/zTree/api/cn/zTreeObj.moveNode.html | 46 - .../zTree/api/cn/zTreeObj.reAsyncChildNodes.html | 42 - .../thirdparty/zTree/api/cn/zTreeObj.refresh.html | 24 - .../zTree/api/cn/zTreeObj.removeChildNodes.html | 32 - .../zTree/api/cn/zTreeObj.removeNode.html | 34 - .../zTree/api/cn/zTreeObj.selectNode.html | 34 - .../zTree/api/cn/zTreeObj.setChkDisabled.html | 44 - .../zTree/api/cn/zTreeObj.setEditable.html | 27 - .../thirdparty/zTree/api/cn/zTreeObj.setting.html | 13 - .../thirdparty/zTree/api/cn/zTreeObj.showNode.html | 31 - .../zTree/api/cn/zTreeObj.showNodes.html | 29 - .../zTree/api/cn/zTreeObj.transformToArray.html | 25 - .../api/cn/zTreeObj.transformTozTreeNodes.html | 43 - .../zTree/api/cn/zTreeObj.updateNode.html | 37 - .../thirdparty/zTree/api/en/fn.zTree._z.html | 13 - .../thirdparty/zTree/api/en/fn.zTree.destroy.html | 28 - .../zTree/api/en/fn.zTree.getZTreeObj.html | 25 - .../thirdparty/zTree/api/en/fn.zTree.init.html | 75 - .../zTree/api/en/setting.async.autoParam.html | 39 - .../zTree/api/en/setting.async.contentType.html | 29 - .../zTree/api/en/setting.async.dataFilter.html | 45 - .../zTree/api/en/setting.async.dataType.html | 29 - .../zTree/api/en/setting.async.enable.html | 30 - .../zTree/api/en/setting.async.otherParam.html | 40 - .../zTree/api/en/setting.async.type.html | 30 - .../thirdparty/zTree/api/en/setting.async.url.html | 50 - .../zTree/api/en/setting.callback.beforeAsync.html | 35 - .../zTree/api/en/setting.callback.beforeCheck.html | 34 - .../zTree/api/en/setting.callback.beforeClick.html | 49 - .../api/en/setting.callback.beforeCollapse.html | 34 - .../api/en/setting.callback.beforeDblClick.html | 36 - .../zTree/api/en/setting.callback.beforeDrag.html | 39 - .../api/en/setting.callback.beforeDragOpen.html | 37 - .../zTree/api/en/setting.callback.beforeDrop.html | 50 - .../api/en/setting.callback.beforeEditName.html | 38 - .../api/en/setting.callback.beforeExpand.html | 34 - .../api/en/setting.callback.beforeMouseDown.html | 35 - .../api/en/setting.callback.beforeMouseUp.html | 35 - .../api/en/setting.callback.beforeRemove.html | 37 - .../api/en/setting.callback.beforeRename.html | 46 - .../api/en/setting.callback.beforeRightClick.html | 35 - .../api/en/setting.callback.onAsyncError.html | 42 - .../api/en/setting.callback.onAsyncSuccess.html | 38 - .../zTree/api/en/setting.callback.onCheck.html | 34 - .../zTree/api/en/setting.callback.onClick.html | 49 - .../zTree/api/en/setting.callback.onCollapse.html | 34 - .../zTree/api/en/setting.callback.onDblClick.html | 35 - .../zTree/api/en/setting.callback.onDrag.html | 34 - .../zTree/api/en/setting.callback.onDragMove.html | 34 - .../zTree/api/en/setting.callback.onDrop.html | 48 - .../zTree/api/en/setting.callback.onExpand.html | 34 - .../zTree/api/en/setting.callback.onMouseDown.html | 35 - .../zTree/api/en/setting.callback.onMouseUp.html | 35 - .../api/en/setting.callback.onNodeCreated.html | 35 - .../zTree/api/en/setting.callback.onRemove.html | 34 - .../zTree/api/en/setting.callback.onRename.html | 40 - .../api/en/setting.callback.onRightClick.html | 36 - .../api/en/setting.check.autoCheckTrigger.html | 29 - .../api/en/setting.check.chkDisabledInherit.html | 28 - .../zTree/api/en/setting.check.chkStyle.html | 48 - .../zTree/api/en/setting.check.chkboxType.html | 31 - .../zTree/api/en/setting.check.enable.html | 26 - .../zTree/api/en/setting.check.nocheckInherit.html | 28 - .../zTree/api/en/setting.check.radioType.html | 29 - .../zTree/api/en/setting.data.keep.leaf.html | 28 - .../zTree/api/en/setting.data.keep.parent.html | 28 - .../zTree/api/en/setting.data.key.checked.html | 24 - .../zTree/api/en/setting.data.key.children.html | 23 - .../zTree/api/en/setting.data.key.name.html | 23 - .../zTree/api/en/setting.data.key.title.html | 24 - .../zTree/api/en/setting.data.key.url.html | 24 - .../api/en/setting.data.simpleData.enable.html | 39 - .../api/en/setting.data.simpleData.idKey.html | 32 - .../api/en/setting.data.simpleData.pIdKey.html | 32 - .../api/en/setting.data.simpleData.rootPId.html | 32 - .../en/setting.edit.drag.autoExpandTrigger.html | 29 - .../api/en/setting.edit.drag.autoOpenTime.html | 25 - .../zTree/api/en/setting.edit.drag.borderMax.html | 25 - .../zTree/api/en/setting.edit.drag.borderMin.html | 25 - .../zTree/api/en/setting.edit.drag.inner.html | 60 - .../zTree/api/en/setting.edit.drag.isCopy.html | 32 - .../zTree/api/en/setting.edit.drag.isMove.html | 32 - .../api/en/setting.edit.drag.maxShowNodeNum.html | 25 - .../api/en/setting.edit.drag.minMoveSize.html | 25 - .../zTree/api/en/setting.edit.drag.next.html | 59 - .../zTree/api/en/setting.edit.drag.prev.html | 59 - .../api/en/setting.edit.editNameSelectAll.html | 27 - .../zTree/api/en/setting.edit.enable.html | 39 - .../zTree/api/en/setting.edit.removeTitle.html | 48 - .../zTree/api/en/setting.edit.renameTitle.html | 48 - .../zTree/api/en/setting.edit.showRemoveBtn.html | 50 - .../zTree/api/en/setting.edit.showRenameBtn.html | 52 - .../thirdparty/zTree/api/en/setting.treeId.html | 14 - .../thirdparty/zTree/api/en/setting.treeObj.html | 14 - .../zTree/api/en/setting.view.addDiyDom.html | 40 - .../zTree/api/en/setting.view.addHoverDom.html | 45 - .../api/en/setting.view.autoCancelSelected.html | 27 - .../zTree/api/en/setting.view.dblClickExpand.html | 45 - .../zTree/api/en/setting.view.expandSpeed.html | 31 - .../zTree/api/en/setting.view.fontCss.html | 42 - .../zTree/api/en/setting.view.nameIsHTML.html | 28 - .../zTree/api/en/setting.view.removeHoverDom.html | 45 - .../zTree/api/en/setting.view.selectedMulti.html | 28 - .../zTree/api/en/setting.view.showIcon.html | 45 - .../zTree/api/en/setting.view.showLine.html | 26 - .../zTree/api/en/setting.view.showTitle.html | 47 - .../api/en/setting.view.txtSelectedEnable.html | 26 - .../zTree/api/en/treeNode.check_Child_State.html | 43 - .../zTree/api/en/treeNode.check_Focus.html | 19 - .../thirdparty/zTree/api/en/treeNode.checked.html | 32 - .../zTree/api/en/treeNode.checkedOld.html | 25 - .../thirdparty/zTree/api/en/treeNode.children.html | 35 - .../zTree/api/en/treeNode.chkDisabled.html | 28 - .../thirdparty/zTree/api/en/treeNode.click.html | 24 - .../thirdparty/zTree/api/en/treeNode.diy.html | 15 - .../zTree/api/en/treeNode.editNameFlag.html | 19 - .../zTree/api/en/treeNode.getCheckStatus.html | 63 - .../zTree/api/en/treeNode.getNextNode.html | 27 - .../zTree/api/en/treeNode.getParentNode.html | 27 - .../zTree/api/en/treeNode.getPreNode.html | 27 - .../zTree/api/en/treeNode.halfCheck.html | 29 - .../thirdparty/zTree/api/en/treeNode.icon.html | 33 - .../zTree/api/en/treeNode.iconClose.html | 33 - .../thirdparty/zTree/api/en/treeNode.iconOpen.html | 33 - .../thirdparty/zTree/api/en/treeNode.iconSkin.html | 43 - .../zTree/api/en/treeNode.isAjaxing.html | 26 - .../zTree/api/en/treeNode.isFirstNode.html | 28 - .../thirdparty/zTree/api/en/treeNode.isHidden.html | 28 - .../thirdparty/zTree/api/en/treeNode.isHover.html | 19 - .../zTree/api/en/treeNode.isLastNode.html | 28 - .../thirdparty/zTree/api/en/treeNode.isParent.html | 28 - .../thirdparty/zTree/api/en/treeNode.level.html | 25 - .../thirdparty/zTree/api/en/treeNode.name.html | 25 - .../thirdparty/zTree/api/en/treeNode.nocheck.html | 26 - .../thirdparty/zTree/api/en/treeNode.open.html | 30 - .../zTree/api/en/treeNode.parentTId.html | 27 - .../thirdparty/zTree/api/en/treeNode.tId.html | 25 - .../thirdparty/zTree/api/en/treeNode.target.html | 24 - .../thirdparty/zTree/api/en/treeNode.url.html | 25 - .../thirdparty/zTree/api/en/treeNode.zAsync.html | 28 - .../thirdparty/zTree/api/en/zTreeObj.addNodes.html | 42 - .../zTree/api/en/zTreeObj.cancelEditName.html | 30 - .../zTree/api/en/zTreeObj.cancelSelectedNode.html | 35 - .../zTree/api/en/zTreeObj.checkAllNodes.html | 29 - .../zTree/api/en/zTreeObj.checkNode.html | 44 - .../thirdparty/zTree/api/en/zTreeObj.copyNode.html | 47 - .../thirdparty/zTree/api/en/zTreeObj.destroy.html | 25 - .../thirdparty/zTree/api/en/zTreeObj.editName.html | 29 - .../zTree/api/en/zTreeObj.expandAll.html | 30 - .../zTree/api/en/zTreeObj.expandNode.html | 50 - .../api/en/zTreeObj.getChangeCheckedNodes.html | 24 - .../zTree/api/en/zTreeObj.getCheckedNodes.html | 28 - .../zTree/api/en/zTreeObj.getNodeByParam.html | 32 - .../zTree/api/en/zTreeObj.getNodeByTId.html | 27 - .../zTree/api/en/zTreeObj.getNodeIndex.html | 30 - .../thirdparty/zTree/api/en/zTreeObj.getNodes.html | 26 - .../zTree/api/en/zTreeObj.getNodesByFilter.html | 43 - .../zTree/api/en/zTreeObj.getNodesByParam.html | 31 - .../api/en/zTreeObj.getNodesByParamFuzzy.html | 32 - .../zTree/api/en/zTreeObj.getSelectedNodes.html | 23 - .../thirdparty/zTree/api/en/zTreeObj.hideNode.html | 29 - .../zTree/api/en/zTreeObj.hideNodes.html | 29 - .../thirdparty/zTree/api/en/zTreeObj.moveNode.html | 49 - .../zTree/api/en/zTreeObj.reAsyncChildNodes.html | 42 - .../thirdparty/zTree/api/en/zTreeObj.refresh.html | 24 - .../zTree/api/en/zTreeObj.removeChildNodes.html | 32 - .../zTree/api/en/zTreeObj.removeNode.html | 34 - .../zTree/api/en/zTreeObj.selectNode.html | 34 - .../zTree/api/en/zTreeObj.setChkDisabled.html | 44 - .../zTree/api/en/zTreeObj.setEditable.html | 27 - .../thirdparty/zTree/api/en/zTreeObj.setting.html | 14 - .../thirdparty/zTree/api/en/zTreeObj.showNode.html | 31 - .../zTree/api/en/zTreeObj.showNodes.html | 29 - .../zTree/api/en/zTreeObj.transformToArray.html | 27 - .../api/en/zTreeObj.transformTozTreeNodes.html | 44 - .../zTree/api/en/zTreeObj.updateNode.html | 37 - .../src/main/webapp/thirdparty/zTree/css/demo.css | 33 - .../thirdparty/zTree/css/zTreeStyle/ReadMe.txt | 1 - .../thirdparty/zTree/css/zTreeStyle/img/Thumbs.db | Bin 23552 -> 0 bytes .../zTree/css/zTreeStyle/img/diy/1_close.png | Bin 601 -> 0 bytes .../zTree/css/zTreeStyle/img/diy/1_open.png | Bin 580 -> 0 bytes .../thirdparty/zTree/css/zTreeStyle/img/diy/2.png | Bin 570 -> 0 bytes .../thirdparty/zTree/css/zTreeStyle/img/diy/3.png | Bin 762 -> 0 bytes .../thirdparty/zTree/css/zTreeStyle/img/diy/4.png | Bin 399 -> 0 bytes .../thirdparty/zTree/css/zTreeStyle/img/diy/5.png | Bin 710 -> 0 bytes .../thirdparty/zTree/css/zTreeStyle/img/diy/6.png | Bin 432 -> 0 bytes .../thirdparty/zTree/css/zTreeStyle/img/diy/7.png | Bin 534 -> 0 bytes .../thirdparty/zTree/css/zTreeStyle/img/diy/8.png | Bin 529 -> 0 bytes .../thirdparty/zTree/css/zTreeStyle/img/diy/9.png | Bin 467 -> 0 bytes .../zTree/css/zTreeStyle/img/diy/Thumbs.db | Bin 19968 -> 0 bytes .../zTree/css/zTreeStyle/img/line_conn.gif | Bin 45 -> 0 bytes .../zTree/css/zTreeStyle/img/loading.gif | Bin 381 -> 0 bytes .../zTree/css/zTreeStyle/img/zTreeStandard.gif | Bin 5564 -> 0 bytes .../zTree/css/zTreeStyle/img/zTreeStandard.gifbak | Bin 5564 -> 0 bytes .../zTree/css/zTreeStyle/img/zTreeStandard.png | Bin 11206 -> 0 bytes .../zTree/css/zTreeStyle/img/zTreeStandard.pngbak | Bin 11173 -> 0 bytes .../zTree/css/zTreeStyle/img/zTreeStandard.psd | Bin 93494 -> 0 bytes .../thirdparty/zTree/css/zTreeStyle/zTreeStyle.css | 107 - .../webapp/thirdparty/zTree/js/jquery.ztree.all.js | 3506 -- .../thirdparty/zTree/js/jquery.ztree.all.min.js | 160 - .../thirdparty/zTree/js/jquery.ztree.core.js | 1684 - .../thirdparty/zTree/js/jquery.ztree.core.min.js | 69 - .../thirdparty/zTree/js/jquery.ztree.excheck.js | 629 - .../zTree/js/jquery.ztree.excheck.min.js | 34 - .../thirdparty/zTree/js/jquery.ztree.exedit.js | 1191 - .../thirdparty/zTree/js/jquery.ztree.exedit.min.js | 53 - .../thirdparty/zTree/js/jquery.ztree.exhide.js | 363 - .../thirdparty/zTree/js/jquery.ztree.exhide.min.js | 22 - .../webapp/thirdparty/zTree/zTree.v3.jquery.json | 35 - 837 files changed, 221468 deletions(-) delete mode 100755 common/src/main/webapp/thirdparty/License.txt delete mode 100755 common/src/main/webapp/thirdparty/animate/animate.min.css delete mode 100755 common/src/main/webapp/thirdparty/avalon/avalon.js delete mode 100755 common/src/main/webapp/thirdparty/avalon/avalon.modern.js delete mode 100755 common/src/main/webapp/thirdparty/bootbox/LICENSE.md delete mode 100755 common/src/main/webapp/thirdparty/bootbox/README.md delete mode 100755 common/src/main/webapp/thirdparty/bootbox/bootbox.min.js delete mode 100755 common/src/main/webapp/thirdparty/bootstrap-daterangepicker/daterangepicker-bs3.css delete mode 100755 common/src/main/webapp/thirdparty/bootstrap-daterangepicker/daterangepicker.js delete mode 100755 common/src/main/webapp/thirdparty/bootstrap-daterangepicker/moment.js delete mode 100755 common/src/main/webapp/thirdparty/bootstrap-daterangepicker/moment.min.js delete mode 100755 common/src/main/webapp/thirdparty/bootstrap-growl/bootstrap-growl.min.js delete mode 100755 common/src/main/webapp/thirdparty/bootstrap/css/bootstrap-dt.css delete mode 100755 common/src/main/webapp/thirdparty/bootstrap/css/bootstrap.min.css delete mode 100755 common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.eot delete mode 100755 common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.svg delete mode 100755 common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.ttf delete mode 100755 common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff delete mode 100755 common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff2 delete mode 100755 common/src/main/webapp/thirdparty/bootstrap/js/bootstrap.js delete mode 100755 common/src/main/webapp/thirdparty/bootstrap/js/bootstrap.min.js delete mode 100755 common/src/main/webapp/thirdparty/bootstrap/js/bootstrap2-typeahead.min.js delete mode 100755 common/src/main/webapp/thirdparty/cometd/cometd.js delete mode 100755 common/src/main/webapp/thirdparty/cometd/cometd/AckExtension.js delete mode 100755 common/src/main/webapp/thirdparty/cometd/cometd/ReloadExtension.js delete mode 100755 common/src/main/webapp/thirdparty/cometd/cometd/TimeStampExtension.js delete mode 100755 common/src/main/webapp/thirdparty/cometd/cometd/TimeSyncExtension.js delete mode 100755 common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-ack.js delete mode 100755 common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-reload.js delete mode 100755 common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-timestamp.js delete mode 100755 common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd-timesync.js delete mode 100755 common/src/main/webapp/thirdparty/cometd/jquery/jquery.cometd.js delete mode 100755 common/src/main/webapp/thirdparty/css/animate-custom.css delete mode 100755 common/src/main/webapp/thirdparty/css/bootstrap.min.css delete mode 100755 common/src/main/webapp/thirdparty/css/font-awesome.min.css delete mode 100755 common/src/main/webapp/thirdparty/css/img/Thumbs.db delete mode 100755 common/src/main/webapp/thirdparty/css/img/diy/1_close.png delete mode 100755 common/src/main/webapp/thirdparty/css/img/diy/1_open.png delete mode 100755 common/src/main/webapp/thirdparty/css/img/diy/2.png delete mode 100755 common/src/main/webapp/thirdparty/css/img/diy/3.png delete mode 100755 common/src/main/webapp/thirdparty/css/img/diy/4.png delete mode 100755 common/src/main/webapp/thirdparty/css/img/diy/5.png delete mode 100755 common/src/main/webapp/thirdparty/css/img/diy/6.png delete mode 100755 common/src/main/webapp/thirdparty/css/img/diy/7.png delete mode 100755 common/src/main/webapp/thirdparty/css/img/diy/8.png delete mode 100755 common/src/main/webapp/thirdparty/css/img/diy/9.png delete mode 100755 common/src/main/webapp/thirdparty/css/img/line_conn.gif delete mode 100755 common/src/main/webapp/thirdparty/css/img/loading.gif delete mode 100755 common/src/main/webapp/thirdparty/css/img/zTreeStandard.gif delete mode 100755 common/src/main/webapp/thirdparty/css/img/zTreeStandard.png delete mode 100755 common/src/main/webapp/thirdparty/css/magic-check.css delete mode 100755 common/src/main/webapp/thirdparty/css/ng-table.min.css delete mode 100755 common/src/main/webapp/thirdparty/css/ngict-component.css delete mode 100755 common/src/main/webapp/thirdparty/css/plugins.css delete mode 100755 common/src/main/webapp/thirdparty/css/style.css delete mode 100755 common/src/main/webapp/thirdparty/css/uniform.default.min.css delete mode 100755 common/src/main/webapp/thirdparty/css/zTreeStyle.css delete mode 100755 common/src/main/webapp/thirdparty/data-tables/DT_bootstrap.css delete mode 100755 common/src/main/webapp/thirdparty/data-tables/DT_bootstrap.js delete mode 100755 common/src/main/webapp/thirdparty/data-tables/DataTableICT.js delete mode 100755 common/src/main/webapp/thirdparty/data-tables/DataTableSmartClient.js delete mode 100755 common/src/main/webapp/thirdparty/data-tables/DataTableSmartClientApp.js delete mode 100755 common/src/main/webapp/thirdparty/data-tables/app-test-i18n-datatable-zh-CN.json delete mode 100755 common/src/main/webapp/thirdparty/data-tables/app-universal-i18n-datatable-en-US.json delete mode 100755 common/src/main/webapp/thirdparty/data-tables/app-universal-i18n-datatable-zh-CN.json delete mode 100755 common/src/main/webapp/thirdparty/data-tables/dataTable.html delete mode 100755 common/src/main/webapp/thirdparty/data-tables/dataTables.bootstrap.css delete mode 100755 common/src/main/webapp/thirdparty/data-tables/images/loading-spinner-grey.gif delete mode 100755 common/src/main/webapp/thirdparty/data-tables/images/sort_asc.png delete mode 100755 common/src/main/webapp/thirdparty/data-tables/images/sort_both.png delete mode 100755 common/src/main/webapp/thirdparty/data-tables/images/sort_desc.png delete mode 100755 common/src/main/webapp/thirdparty/data-tables/jquery.dataTables-1.9.4.js delete mode 100755 common/src/main/webapp/thirdparty/data-tables/jquery.dataTables-1.9.4.min.js delete mode 100755 common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.js delete mode 100755 common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.min.css delete mode 100755 common/src/main/webapp/thirdparty/data-tables/jquery.dataTables.min.js delete mode 100755 common/src/main/webapp/thirdparty/data-tables/style-datatable.css delete mode 100755 common/src/main/webapp/thirdparty/echarts/echarts-all.js delete mode 100755 common/src/main/webapp/thirdparty/echarts/echarts.js delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/css/font-awesome.css delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/css/font-awesome.min.css delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/fonts/FontAwesome.otf delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.eot delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.svg delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.ttf delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/fonts/fontawesome-webfont.woff delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/less/bordered-pulled.less delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/less/core.less delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/less/fixed-width.less delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/less/font-awesome.less delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/less/icons.less delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/less/larger.less delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/less/list.less delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/less/mixins.less delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/less/path.less delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/less/rotated-flipped.less delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/less/spinning.less delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/less/stacked.less delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/less/variables.less delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/scss/_bordered-pulled.scss delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/scss/_core.scss delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/scss/_fixed-width.scss delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/scss/_icons.scss delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/scss/_larger.scss delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/scss/_list.scss delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/scss/_mixins.scss delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/scss/_path.scss delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/scss/_rotated-flipped.scss delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/scss/_spinning.scss delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/scss/_stacked.scss delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/scss/_variables.scss delete mode 100755 common/src/main/webapp/thirdparty/font-awesome/scss/font-awesome.scss delete mode 100755 common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.eot delete mode 100755 common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.svg delete mode 100755 common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.ttf delete mode 100755 common/src/main/webapp/thirdparty/fonts/BebasNeue-webfont.woff delete mode 100755 common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.eot delete mode 100755 common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.svg delete mode 100755 common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.ttf delete mode 100755 common/src/main/webapp/thirdparty/fonts/fontawesome-webfont.woff delete mode 100755 common/src/main/webapp/thirdparty/fonts/fontomas-webfont.eot delete mode 100755 common/src/main/webapp/thirdparty/fonts/fontomas-webfont.svg delete mode 100755 common/src/main/webapp/thirdparty/fonts/fontomas-webfont.ttf delete mode 100755 common/src/main/webapp/thirdparty/fonts/fontomas-webfont.woff delete mode 100755 common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.eot delete mode 100755 common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.svg delete mode 100755 common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.ttf delete mode 100755 common/src/main/webapp/thirdparty/fonts/franchise-bold-webfont.woff delete mode 100755 common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.eot delete mode 100755 common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.svg delete mode 100755 common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.ttf delete mode 100755 common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.woff delete mode 100755 common/src/main/webapp/thirdparty/fonts/glyphicons-halflings-regular.woff2 delete mode 100755 common/src/main/webapp/thirdparty/icheck/bower.json delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/Thumbs.db delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/banner.jpg delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/custom.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/custom.styl delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/icheck.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/ie/arrow-bottom.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/ie/arrow-top.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/ie/header-line.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-fork.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-github.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-lab.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-options.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/ie/icon-star.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.eot delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.svg delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.ttf delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-bold.woff delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.eot delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.svg delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.ttf delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/montserrat-regular.woff delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/css/normalize.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/index.html delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/js/custom.js delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/js/custom.min.js delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/js/jquery.js delete mode 100755 common/src/main/webapp/thirdparty/icheck/demo/js/zepto.js delete mode 100755 common/src/main/webapp/thirdparty/icheck/icheck.jquery.json delete mode 100755 common/src/main/webapp/thirdparty/icheck/icheck.js delete mode 100755 common/src/main/webapp/thirdparty/icheck/icheck.min.js delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/all.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/_all.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/aero.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/aero.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/aero@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/blue.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/blue.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/blue@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/flat.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/flat.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/flat@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/green.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/green.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/green@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/grey.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/grey.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/grey@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/orange.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/orange.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/orange@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/pink.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/pink.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/pink@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/purple.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/purple.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/purple@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/red.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/red.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/red@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/yellow.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/yellow.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/flat/yellow@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/futurico/futurico.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/futurico/futurico.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/futurico/futurico@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/line/Thumbs.db delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/line/_all.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/line/aero.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/line/blue.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/line/green.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/line/grey.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/line/line.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/line/line.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/line/line@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/line/orange.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/line/pink.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/line/purple.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/line/red.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/line/yellow.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/_all.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/aero.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/aero.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/aero@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/blue.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/blue.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/blue@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/green.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/green.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/green@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/grey.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/grey.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/grey@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/minimal.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/minimal.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/minimal@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/orange.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/orange.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/orange@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/pink.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/pink.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/pink@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/purple.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/purple.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/purple@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/red.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/red.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/red@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/yellow.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/yellow.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/minimal/yellow@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/polaris/polaris.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/polaris/polaris.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/polaris/polaris@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/Thumbs.db delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/_all.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/aero.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/aero.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/aero@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/blue.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/blue.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/blue@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/green.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/green.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/green@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/grey.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/grey.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/grey@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/orange.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/orange.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/orange@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/pink.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/pink.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/pink@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/purple.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/purple.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/purple@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/red.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/red.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/red@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/square.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/square.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/square@2x.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/yellow.css delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/yellow.png delete mode 100755 common/src/main/webapp/thirdparty/icheck/skins/square/yellow@2x.png delete mode 100755 common/src/main/webapp/thirdparty/images/add.png delete mode 100755 common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-checked-disabled.png delete mode 100755 common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-checked.png delete mode 100755 common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-disabled.png delete mode 100755 common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-hover.png delete mode 100755 common/src/main/webapp/thirdparty/images/checkbox-radio/checkbox-init.png delete mode 100755 common/src/main/webapp/thirdparty/images/checkbox-radio/radio-checked-disabled.png delete mode 100755 common/src/main/webapp/thirdparty/images/checkbox-radio/radio-checked.png delete mode 100755 common/src/main/webapp/thirdparty/images/checkbox-radio/radio-disabled.png delete mode 100755 common/src/main/webapp/thirdparty/images/checkbox-radio/radio-hover.png delete mode 100755 common/src/main/webapp/thirdparty/images/checkbox-radio/radio-init.png delete mode 100755 common/src/main/webapp/thirdparty/images/collapse_arrow.png delete mode 100755 common/src/main/webapp/thirdparty/images/delete.png delete mode 100755 common/src/main/webapp/thirdparty/images/edit.png delete mode 100755 common/src/main/webapp/thirdparty/images/expand_arrow.png delete mode 100755 common/src/main/webapp/thirdparty/images/openo.png delete mode 100755 common/src/main/webapp/thirdparty/images/searchicon.png delete mode 100755 common/src/main/webapp/thirdparty/jQuery-File-Upload/css/jquery.fileupload.css delete mode 100755 common/src/main/webapp/thirdparty/jQuery-File-Upload/img/loading.gif delete mode 100755 common/src/main/webapp/thirdparty/jQuery-File-Upload/img/progressbar.gif delete mode 100755 common/src/main/webapp/thirdparty/jQuery-File-Upload/js/jquery.fileupload.js delete mode 100755 common/src/main/webapp/thirdparty/jQuery-File-Upload/js/jquery.iframe-transport.js delete mode 100755 common/src/main/webapp/thirdparty/jQuery-File-Upload/js/vendor/jquery.ui.widget.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-cokie/jquery.cokie.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/README.md delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/dist/additional-methods.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/dist/additional-methods.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/dist/jquery.validate.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/dist/jquery.validate.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/additional-methods.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/additional-methods.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/jquery.validate.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/jquery.validate.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ar.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ar.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_bg.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_bg.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ca.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ca.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_cs.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_cs.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_da.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_da.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_de.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_de.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_el.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_el.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es_AR.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_es_AR.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_et.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_et.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_eu.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_eu.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fa.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fa.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fi.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fi.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fr.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_fr.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_gl.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_gl.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_he.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_he.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hr.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hr.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hu.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_hu.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_id.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_id.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_is.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_is.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_it.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_it.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ja.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ja.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ka.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ka.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_kk.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_kk.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ko.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ko.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lt.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lt.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lv.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_lv.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_my.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_my.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_nl.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_nl.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_no.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_no.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pl.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pl.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_BR.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_BR.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_PT.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_pt_PT.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ro.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ro.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ru.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_ru.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_si.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_si.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sk.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sk.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sl.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sl.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr_lat.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sr_lat.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sv.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_sv.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_th.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_th.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tj.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tj.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tr.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_tr.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_uk.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_uk.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_vi.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_vi.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh_TW.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/messages_zh_TW.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_de.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_de.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_es_CL.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_es_CL.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_fi.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_fi.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_nl.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_nl.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_pt.js delete mode 100755 common/src/main/webapp/thirdparty/jquery-validation/js/localization/methods_pt.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery.i18n/jquery.i18n.properties-1.0.9.js delete mode 100755 common/src/main/webapp/thirdparty/jquery/jquery-1.10.2.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.js delete mode 100755 common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery/jquery-1.11.2.min.map delete mode 100755 common/src/main/webapp/thirdparty/jquery/jquery-1.4.4.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.js delete mode 100755 common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery/jquery-2.1.3.min.map delete mode 100755 common/src/main/webapp/thirdparty/jquery/jquery-migrate-1.2.1.js delete mode 100755 common/src/main/webapp/thirdparty/jquery/jquery-migrate-1.2.1.min.js delete mode 100755 common/src/main/webapp/thirdparty/jquery/jquery.reveal.js delete mode 100755 common/src/main/webapp/thirdparty/js/angular-ui-router.min.js delete mode 100755 common/src/main/webapp/thirdparty/js/angular.min.js delete mode 100755 common/src/main/webapp/thirdparty/js/bootstrap-table-filter-control.min.js delete mode 100755 common/src/main/webapp/thirdparty/js/bootstrap-table.min.js delete mode 100755 common/src/main/webapp/thirdparty/js/bootstrap.min.js delete mode 100755 common/src/main/webapp/thirdparty/js/core/const.js delete mode 100755 common/src/main/webapp/thirdparty/js/core/hk.min.js delete mode 100755 common/src/main/webapp/thirdparty/js/core/load_menuList.js delete mode 100755 common/src/main/webapp/thirdparty/js/core/openoFrameWork.js delete mode 100755 common/src/main/webapp/thirdparty/js/core/pym.min.js delete mode 100755 common/src/main/webapp/thirdparty/js/jquery-ui.js delete mode 100755 common/src/main/webapp/thirdparty/js/jquery.cookie.js delete mode 100755 common/src/main/webapp/thirdparty/js/jquery.ztree.core-3.5.js delete mode 100755 common/src/main/webapp/thirdparty/js/jquery_1.12.4.min.js delete mode 100755 common/src/main/webapp/thirdparty/js/mustache.js delete mode 100755 common/src/main/webapp/thirdparty/js/ng-table.min.js delete mode 100755 common/src/main/webapp/thirdparty/js/tools.js delete mode 100755 common/src/main/webapp/thirdparty/uniform/README.md delete mode 100755 common/src/main/webapp/thirdparty/uniform/css/uniform.default.css delete mode 100755 common/src/main/webapp/thirdparty/uniform/css/uniform.default.min.css delete mode 100755 common/src/main/webapp/thirdparty/uniform/css/uniform.default.scss delete mode 100755 common/src/main/webapp/thirdparty/uniform/images/bg-input-focus.png delete mode 100755 common/src/main/webapp/thirdparty/uniform/images/bg-input.png delete mode 100755 common/src/main/webapp/thirdparty/uniform/images/sprite.png delete mode 100755 common/src/main/webapp/thirdparty/uniform/images/sprite_original.png delete mode 100755 common/src/main/webapp/thirdparty/uniform/jquery.uniform.js delete mode 100755 common/src/main/webapp/thirdparty/uniform/jquery.uniform.min.js delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/API_cn.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/API_en.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/api.js delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/common.css delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/common_ie6.css delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/img/apiMenu.gif delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/img/apiMenu.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/img/background.jpg delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/img/chinese.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/img/close.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/img/contact-bg.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/img/english.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/img/header-bg.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/img/lightbulb.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_arrow.gif delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_arrow.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_bg.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/img/overlay_close_IE6.gif delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/img/zTreeStandard.gif delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/img/zTreeStandard.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/jquery-1.6.2.min.js delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/jquery.ztree.core-3.5.js delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/apiCss/zTreeStyleForApi.css delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree._z.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree.destroy.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree.getZTreeObj.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/fn.zTree.init.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.autoParam.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.contentType.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.dataFilter.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.dataType.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.enable.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.otherParam.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.type.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.async.url.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeAsync.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeCheck.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeClick.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeCollapse.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDblClick.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDrag.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDragOpen.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeDrop.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeEditName.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeExpand.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeMouseDown.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeMouseUp.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeRemove.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeRename.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.beforeRightClick.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onAsyncError.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onAsyncSuccess.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onCheck.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onClick.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onCollapse.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDblClick.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDrag.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDragMove.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onDrop.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onExpand.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onMouseDown.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onMouseUp.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onNodeCreated.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onRemove.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onRename.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.callback.onRightClick.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.autoCheckTrigger.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.chkDisabledInherit.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.chkStyle.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.chkboxType.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.enable.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.nocheckInherit.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.check.radioType.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.keep.leaf.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.keep.parent.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.checked.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.children.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.name.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.title.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.key.url.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.enable.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.idKey.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.pIdKey.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.data.simpleData.rootPId.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.autoExpandTrigger.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.autoOpenTime.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.borderMax.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.borderMin.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.inner.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.isCopy.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.isMove.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.maxShowNodeNum.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.minMoveSize.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.next.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.drag.prev.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.editNameSelectAll.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.enable.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.removeTitle.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.renameTitle.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.showRemoveBtn.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.edit.showRenameBtn.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.treeId.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.treeObj.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.addDiyDom.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.addHoverDom.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.autoCancelSelected.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.dblClickExpand.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.expandSpeed.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.fontCss.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.nameIsHTML.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.removeHoverDom.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.selectedMulti.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.showIcon.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.showLine.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.showTitle.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/setting.view.txtSelectedEnable.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.check_Child_State.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.check_Focus.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.checked.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.checkedOld.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.children.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.chkDisabled.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.click.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.diy.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.editNameFlag.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getCheckStatus.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getNextNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getParentNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.getPreNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.halfCheck.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.icon.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.iconClose.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.iconOpen.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.iconSkin.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isAjaxing.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isFirstNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isHidden.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isHover.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isLastNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.isParent.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.level.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.name.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.nocheck.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.open.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.parentTId.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.tId.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.target.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.url.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/treeNode.zAsync.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.addNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.cancelEditName.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.cancelSelectedNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.checkAllNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.checkNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.copyNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.destroy.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.editName.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.expandAll.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.expandNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getChangeCheckedNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getCheckedNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodeByParam.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodeByTId.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodeIndex.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodesByFilter.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodesByParam.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getNodesByParamFuzzy.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.getSelectedNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.hideNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.hideNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.moveNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.reAsyncChildNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.refresh.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.removeChildNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.removeNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.selectNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.setChkDisabled.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.setEditable.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.setting.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.showNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.showNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.transformToArray.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.transformTozTreeNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/cn/zTreeObj.updateNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree._z.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree.destroy.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree.getZTreeObj.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/fn.zTree.init.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.async.autoParam.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.async.contentType.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.async.dataFilter.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.async.dataType.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.async.enable.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.async.otherParam.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.async.type.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.async.url.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeAsync.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeCheck.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeClick.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeCollapse.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDblClick.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDrag.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDragOpen.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeDrop.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeEditName.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeExpand.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeMouseDown.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeMouseUp.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeRemove.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeRename.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.beforeRightClick.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onAsyncError.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onAsyncSuccess.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onCheck.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onClick.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onCollapse.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDblClick.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDrag.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDragMove.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onDrop.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onExpand.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onMouseDown.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onMouseUp.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onNodeCreated.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onRemove.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onRename.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.callback.onRightClick.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.check.autoCheckTrigger.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.check.chkDisabledInherit.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.check.chkStyle.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.check.chkboxType.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.check.enable.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.check.nocheckInherit.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.check.radioType.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.data.keep.leaf.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.data.keep.parent.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.checked.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.children.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.name.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.title.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.data.key.url.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.enable.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.idKey.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.pIdKey.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.data.simpleData.rootPId.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.autoExpandTrigger.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.autoOpenTime.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.borderMax.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.borderMin.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.inner.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.isCopy.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.isMove.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.maxShowNodeNum.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.minMoveSize.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.next.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.drag.prev.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.editNameSelectAll.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.enable.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.removeTitle.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.renameTitle.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.showRemoveBtn.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.edit.showRenameBtn.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.treeId.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.treeObj.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.view.addDiyDom.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.view.addHoverDom.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.view.autoCancelSelected.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.view.dblClickExpand.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.view.expandSpeed.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.view.fontCss.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.view.nameIsHTML.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.view.removeHoverDom.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.view.selectedMulti.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.view.showIcon.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.view.showLine.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.view.showTitle.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/setting.view.txtSelectedEnable.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.check_Child_State.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.check_Focus.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.checked.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.checkedOld.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.children.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.chkDisabled.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.click.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.diy.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.editNameFlag.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getCheckStatus.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getNextNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getParentNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.getPreNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.halfCheck.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.icon.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.iconClose.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.iconOpen.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.iconSkin.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isAjaxing.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isFirstNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isHidden.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isHover.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isLastNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.isParent.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.level.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.name.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.nocheck.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.open.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.parentTId.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.tId.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.target.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.url.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/treeNode.zAsync.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.addNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.cancelEditName.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.cancelSelectedNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.checkAllNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.checkNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.copyNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.destroy.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.editName.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.expandAll.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.expandNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getChangeCheckedNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getCheckedNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodeByParam.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodeByTId.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodeIndex.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodesByFilter.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodesByParam.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getNodesByParamFuzzy.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.getSelectedNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.hideNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.hideNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.moveNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.reAsyncChildNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.refresh.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.removeChildNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.removeNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.selectNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.setChkDisabled.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.setEditable.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.setting.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.showNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.showNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.transformToArray.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.transformTozTreeNodes.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/api/en/zTreeObj.updateNode.html delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/demo.css delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/ReadMe.txt delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/Thumbs.db delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/1_close.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/1_open.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/2.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/3.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/4.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/5.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/6.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/7.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/8.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/9.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/diy/Thumbs.db delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/line_conn.gif delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/loading.gif delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gif delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.gifbak delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.png delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.pngbak delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/img/zTreeStandard.psd delete mode 100755 common/src/main/webapp/thirdparty/zTree/css/zTreeStyle/zTreeStyle.css delete mode 100755 common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.all.js delete mode 100755 common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.all.min.js delete mode 100755 common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.core.js delete mode 100755 common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.core.min.js delete mode 100755 common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.excheck.js delete mode 100755 common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.excheck.min.js delete mode 100755 common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exedit.js delete mode 100755 common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exedit.min.js delete mode 100755 common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exhide.js delete mode 100755 common/src/main/webapp/thirdparty/zTree/js/jquery.ztree.exhide.min.js delete mode 100755 common/src/main/webapp/thirdparty/zTree/zTree.v3.jquery.json (limited to 'common/src/main/webapp/thirdparty') diff --git a/common/src/main/webapp/thirdparty/License.txt b/common/src/main/webapp/thirdparty/License.txt deleted file mode 100755 index 8e698ecb..00000000 --- a/common/src/main/webapp/thirdparty/License.txt +++ /dev/null @@ -1,362 +0,0 @@ -THIS LICENSE FILE CONTAINS THE LICENSE APPLICABLE DEPENDING ON THE TYPE OF CONTRIBUTIONS. - -APACHE LICENSE 2 IS APPLICABLE FOR SOURCE CODE, CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL FOR DOCUMENTATION - -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - -Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. - -"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. - -2. Grant of Copyright License. - -Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. - -Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. - -You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and You must cause any modified files to carry prominent notices stating that You changed the files; and You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. - -5. Submission of Contributions. - -Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. - -6. Trademarks. - -This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. - -Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. - -In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. - -While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -Attribution 4.0 International - -https://creativecommons.org/licenses/by/4.0/legalcode - -Creative Commons Corporation ("Creative Commons") is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an "as-is" basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More_considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees -Creative Commons Attribution 4.0 International Public License - -By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - c. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - d. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - e. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - f. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - g. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - h. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - i. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - j. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - k. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - -Section 2 -- Scope. - - a. License grant. - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - a. reproduce and Share the Licensed Material, in whole or - in part; and - b. produce, reproduce, and Share Adapted Material. - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - 3. Term. The term of this Public License is specified in Section - 6(a). - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - 5. Downstream recipients. - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - b. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - b. Other rights. - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - 2. Patent and trademark rights are not licensed under this - Public License. - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties. - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the following conditions. - - a. Attribution. - 1. If You Share the Licensed Material (including in modified - form), You must: - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - ii. a copyright notice; - iii. a notice that refers to this Public License; - iv. a notice that refers to the disclaimer of - warranties; - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - 4. If You Share Adapted Material You produce, the Adapter's - License You apply must not prevent recipients of the Adapted - Material from complying with this Public License. - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database; - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material; and - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. -For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - 2. upon express reinstatement by the Licensor. - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. -Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the "Licensor." The text of the Creative Commons public licenses is dedicated to the public domain under the CC0 Public Domain Dedication. Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark "Creative Commons" or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. - -Creative Commons may be contacted at creativecommons.org. \ No newline at end of file diff --git a/common/src/main/webapp/thirdparty/animate/animate.min.css b/common/src/main/webapp/thirdparty/animate/animate.min.css deleted file mode 100755 index 88b94d50..00000000 --- a/common/src/main/webapp/thirdparty/animate/animate.min.css +++ /dev/null @@ -1,6 +0,0 @@ -@charset "UTF-8";/*! -Animate.css - http://daneden.me/animate -Licensed under the MIT license - http://opensource.org/licenses/MIT - -Copyright (c) 2014 Daniel Eden -*/.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);-ms-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);-ms-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);-ms-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);-ms-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);-ms-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);-ms-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);-ms-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);-ms-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);-ms-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);-ms-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);-ms-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);-ms-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);-ms-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);-ms-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{0%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);-ms-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;-ms-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);-ms-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);-ms-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);-ms-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);-ms-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);-ms-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);-ms-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);-ms-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);-ms-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);-ms-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);-ms-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);-ms-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);-ms-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);-ms-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);-ms-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);-ms-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);-ms-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);-ms-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;-ms-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);-ms-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);-ms-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);-ms-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);-ms-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);-ms-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);-ms-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);-ms-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);-ms-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);-ms-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);-ms-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);-ms-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);-ms-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);-ms-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-ms-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);-ms-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;-ms-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);-ms-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);-ms-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-ms-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-ms-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);-ms-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);-ms-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);-ms-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);-ms-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);-ms-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);-ms-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);-ms-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);-ms-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);-ms-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);-ms-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);-ms-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0,0,1,45deg);-ms-transform:rotate(0,0,1,45deg);transform:rotate(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);-ms-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);-ms-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);-ms-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);-ms-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);-ms-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);-ms-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);-ms-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-ms-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);-ms-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);-ms-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);-ms-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);-ms-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-ms-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-ms-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp} \ No newline at end of file diff --git a/common/src/main/webapp/thirdparty/avalon/avalon.js b/common/src/main/webapp/thirdparty/avalon/avalon.js deleted file mode 100755 index a22bb7de..00000000 --- a/common/src/main/webapp/thirdparty/avalon/avalon.js +++ /dev/null @@ -1,5819 +0,0 @@ -/*================================================== - Copyright (c) 2013-2015 å¸å¾’正美 and other contributors - http://www.cnblogs.com/rubylouvre/ - https://github.com/RubyLouvre - http://weibo.com/jslouvre/ - - Released under the MIT license - avalon.js 1.45 built in 2015.7.17 - support IE6+ and other browsers - ==================================================*/ -(function(global, factory) { - - if (typeof module === "object" && typeof module.exports === "object") { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get avalon. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var avalon = require("avalon")(window); - module.exports = global.document ? factory(global, true) : function(w) { - if (!w.document) { - throw new Error("Avalon requires a window with a document") - } - return factory(w) - } - } else { - factory(global) - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function(window, noGlobal){ - -/********************************************************************* - * 全局å˜é‡åŠæ–¹æ³• * - **********************************************************************/ -var expose = new Date() - 0 -//http://stackoverflow.com/questions/7290086/javascript-use-strict-and-nicks-find-global-function -var DOC = window.document -var head = DOC.getElementsByTagName("head")[0] //HEAD元素 -var ifGroup = head.insertBefore(document.createElement("avalon"), head.firstChild) //é¿å…IE6 base标签BUG -ifGroup.innerHTML = "X" -ifGroup.setAttribute("ms-skip", "1") -ifGroup.className = "avalonHide" -var rnative = /\[native code\]/ //判定是å¦åŽŸç”Ÿå‡½æ•° -function log() { - if (window.console && avalon.config.debug) { - // http://stackoverflow.com/questions/8785624/how-to-safely-wrap-console-log - Function.apply.call(console.log, console, arguments) - } -} - - -var subscribers = "$" + expose -var otherRequire = window.require -var otherDefine = window.define -var innerRequire -var stopRepeatAssign = false -var rword = /[^, ]+/g //切割字符串为一个个å°å—,以空格或豆å·åˆ†å¼€å®ƒä»¬ï¼Œç»“åˆreplace实现字符串的forEach -var rcomplexType = /^(?:object|array)$/ -var rsvg = /^\[object SVG\w*Element\]$/ -var rwindow = /^\[object (?:Window|DOMWindow|global)\]$/ -var oproto = Object.prototype -var ohasOwn = oproto.hasOwnProperty -var serialize = oproto.toString -var ap = Array.prototype -var aslice = ap.slice -var Registry = {} //将函数æ›å…‰åˆ°æ­¤å¯¹è±¡ä¸Šï¼Œæ–¹ä¾¿è®¿é—®å™¨æ”¶é›†ä¾èµ– -var W3C = window.dispatchEvent -var root = DOC.documentElement -var avalonFragment = DOC.createDocumentFragment() -var cinerator = DOC.createElement("div") -var class2type = {} -"Boolean Number String Function Array Date RegExp Object Error".replace(rword, function (name) { - class2type["[object " + name + "]"] = name.toLowerCase() -}) - - -function noop() { -} - - -function oneObject(array, val) { - if (typeof array === "string") { - array = array.match(rword) || [] - } - var result = {}, - value = val !== void 0 ? val : 1 - for (var i = 0, n = array.length; i < n; i++) { - result[array[i]] = value - } - return result -} - -//生æˆUUID http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript -var generateID = function (prefix) { - prefix = prefix || "avalon" - return String(Math.random() + Math.random()).replace(/\d\.\d{4}/, prefix) -} -function IE() { - if (window.VBArray) { - var mode = document.documentMode - return mode ? mode : window.XMLHttpRequest ? 7 : 6 - } else { - return NaN - } -} -var IEVersion = IE() - -avalon = function (el) { //创建jQueryå¼çš„æ— new 实例化结构 - return new avalon.init(el) -} - -avalon.profile = function () { - if (window.console && avalon.config.profile) { - Function.apply.call(console.log, console, arguments) - } -} - -/*视æµè§ˆå™¨æƒ…况采用最快的异步回调*/ -avalon.nextTick = new function () {// jshint ignore:line - var tickImmediate = window.setImmediate - var tickObserver = window.MutationObserver - var tickPost = W3C && window.postMessage - if (tickImmediate) { - return tickImmediate.bind(window) - } - - var queue = [] - function callback() { - var n = queue.length - for (var i = 0; i < n; i++) { - queue[i]() - } - queue = queue.slice(n) - } - - if (tickObserver) { - var node = document.createTextNode("avalon") - new tickObserver(callback).observe(node, {characterData: true})// jshint ignore:line - return function (fn) { - queue.push(fn) - node.data = Math.random() - } - } - - if (tickPost) { - window.addEventListener("message", function (e) { - var source = e.source - if ((source === window || source === null) && e.data === "process-tick") { - e.stopPropagation() - callback() - } - }) - - return function (fn) { - queue.push(fn) - window.postMessage('process-tick', '*') - } - } - - return function (fn) { - setTimeout(fn, 0) - } -}// jshint ignore:line -/********************************************************************* - * avalonçš„é™æ€æ–¹æ³•å®šä¹‰åŒº * - **********************************************************************/ -avalon.init = function (el) { - this[0] = this.element = el -} -avalon.fn = avalon.prototype = avalon.init.prototype - -avalon.type = function (obj) { //å–得目标的类型 - if (obj == null) { - return String(obj) - } - // 早期的webkit内核æµè§ˆå™¨å®žçŽ°äº†å·²åºŸå¼ƒçš„ecma262v4标准,å¯ä»¥å°†æ­£åˆ™å­—é¢é‡å½“作函数使用,因此typeof在判定正则时会返回function - return typeof obj === "object" || typeof obj === "function" ? - class2type[serialize.call(obj)] || "object" : - typeof obj -} - -var isFunction = typeof alert === "object" ? function (fn) { - try { - return /^\s*\bfunction\b/.test(fn + "") - } catch (e) { - return false - } -} : function (fn) { - return serialize.call(fn) === "[object Function]" -} -avalon.isFunction = isFunction - -avalon.isWindow = function (obj) { - if (!obj) - return false - // 利用IE678 window == document为true,document == window竟然为false的神奇特性 - // 标准æµè§ˆå™¨åŠIE9,IE10等使用 正则检测 - return obj == obj.document && obj.document != obj //jshint ignore:line -} - -function isWindow(obj) { - return rwindow.test(serialize.call(obj)) -} -if (isWindow(window)) { - avalon.isWindow = isWindow -} -var enu -for (enu in avalon({})) { - break -} -var enumerateBUG = enu !== "0" //IE6下为true, 其他为false -/*判定是å¦æ˜¯ä¸€ä¸ªæœ´ç´ çš„javascript对象(Object),ä¸æ˜¯DOM对象,ä¸æ˜¯BOM对象,ä¸æ˜¯è‡ªå®šä¹‰ç±»çš„实例*/ -avalon.isPlainObject = function (obj, key) { - if (!obj || avalon.type(obj) !== "object" || obj.nodeType || avalon.isWindow(obj)) { - return false; - } - try { //IE内置对象没有constructor - if (obj.constructor && !ohasOwn.call(obj, "constructor") && !ohasOwn.call(obj.constructor.prototype, "isPrototypeOf")) { - return false; - } - } catch (e) { //IE8 9会在这里抛错 - return false; - } - if (enumerateBUG) { - for (key in obj) { - return ohasOwn.call(obj, key) - } - } - for (key in obj) { - } - return key === void 0 || ohasOwn.call(obj, key) -} -if (rnative.test(Object.getPrototypeOf)) { - avalon.isPlainObject = function (obj) { - // 简å•çš„ typeof obj === "object"检测,会致使用isPlainObject(window)在opera下通ä¸è¿‡ - return serialize.call(obj) === "[object Object]" && Object.getPrototypeOf(obj) === oproto - } -} -//与jQuery.extend方法,å¯ç”¨äºŽæµ…æ‹·è´ï¼Œæ·±æ‹·è´ -avalon.mix = avalon.fn.mix = function () { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false - - // 如果第一个å‚数为布尔,判定是å¦æ·±æ‹·è´ - if (typeof target === "boolean") { - deep = target - target = arguments[1] || {} - i++ - } - - //ç¡®ä¿æŽ¥å—方为一个å¤æ‚çš„æ•°æ®ç±»åž‹ - if (typeof target !== "object" && !isFunction(target)) { - target = {} - } - - //如果åªæœ‰ä¸€ä¸ªå‚数,那么新æˆå‘˜æ·»åŠ äºŽmix所在的对象上 - if (i === length) { - target = this - i-- - } - - for (; i < length; i++) { - //åªå¤„ç†éžç©ºå‚æ•° - if ((options = arguments[i]) != null) { - for (name in options) { - src = target[name] - try { - copy = options[name] //当options为VBS对象时报错 - } catch (e) { - continue - } - - // 防止环引用 - if (target === copy) { - continue - } - if (deep && copy && (avalon.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { - - if (copyIsArray) { - copyIsArray = false - clone = src && Array.isArray(src) ? src : [] - - } else { - clone = src && avalon.isPlainObject(src) ? src : {} - } - - target[name] = avalon.mix(deep, clone, copy) - } else if (copy !== void 0) { - target[name] = copy - } - } - } - } - return target -} - -function _number(a, len) { //用于模拟slice, splice的效果 - a = Math.floor(a) || 0 - return a < 0 ? Math.max(len + a, 0) : Math.min(a, len); -} -avalon.mix({ - rword: rword, - subscribers: subscribers, - version: 1.45, - ui: {}, - log: log, - slice: W3C ? function (nodes, start, end) { - return aslice.call(nodes, start, end) - } : function (nodes, start, end) { - var ret = [] - var len = nodes.length - if (end === void 0) - end = len - if (typeof end === "number" && isFinite(end)) { - start = _number(start, len) - end = _number(end, len) - for (var i = start; i < end; ++i) { - ret[i - start] = nodes[i] - } - } - return ret - }, - noop: noop, - /*如果ä¸ç”¨Error对象å°è£…一下,str在控制å°ä¸‹å¯èƒ½ä¼šä¹±ç */ - error: function (str, e) { - throw (e || Error)(str) - }, - /*将一个以空格或逗å·éš”开的字符串或数组,转æ¢æˆä¸€ä¸ªé”®å€¼éƒ½ä¸º1的对象*/ - oneObject: oneObject, - /* avalon.range(10) - => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - avalon.range(1, 11) - => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - avalon.range(0, 30, 5) - => [0, 5, 10, 15, 20, 25] - avalon.range(0, -10, -1) - => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] - avalon.range(0) - => []*/ - range: function (start, end, step) { // 用于生æˆæ•´æ•°æ•°ç»„ - step || (step = 1) - if (end == null) { - end = start || 0 - start = 0 - } - var index = -1, - length = Math.max(0, Math.ceil((end - start) / step)), - result = new Array(length) - while (++index < length) { - result[index] = start - start += step - } - return result - }, - eventHooks: [], - /*绑定事件*/ - bind: function(el, type, fn, phase) { - var hooks = avalon.eventHooks - var hook = hooks[type] - if (typeof hook === "object") { - type = hook.type - if (hook.deel) { - fn = hook.deel(el, type, fn, phase) - } - } - var callback = W3C ? fn : function(e) { - fn.call(el, fixEvent(e)); - } - if (W3C) { - el.addEventListener(type, callback, !!phase) - } else { - el.attachEvent("on" + type, callback) - } - return callback - }, - /*å¸è½½äº‹ä»¶*/ - unbind: function(el, type, fn, phase) { - var hooks = avalon.eventHooks - var hook = hooks[type] - var callback = fn || noop - if (typeof hook === "object") { - type = hook.type - if (hook.deel) { - fn = hook.deel(el, type, fn, false) - } - } - if (W3C) { - el.removeEventListener(type, callback, !!phase) - } else { - el.detachEvent("on" + type, callback) - } - }, - /*读写删除元素节点的样å¼*/ - css: function (node, name, value) { - if (node instanceof avalon) { - node = node[0] - } - var prop = /[_-]/.test(name) ? camelize(name) : name, fn - name = avalon.cssName(prop) || prop - if (value === void 0 || typeof value === "boolean") { //获å–æ ·å¼ - fn = cssHooks[prop + ":get"] || cssHooks["@:get"] - if (name === "background") { - name = "backgroundColor" - } - var val = fn(node, name) - return value === true ? parseFloat(val) || 0 : val - } else if (value === "") { //è¯·é™¤æ ·å¼ - node.style[name] = "" - } else { //è®¾ç½®æ ·å¼ - if (value == null || value !== value) { - return - } - if (isFinite(value) && !avalon.cssNumber[prop]) { - value += "px" - } - fn = cssHooks[prop + ":set"] || cssHooks["@:set"] - fn(node, name, value) - } - }, - /*é历数组与对象,回调的第一个å‚数为索引或键å,第二个或元素或键值*/ - each: function (obj, fn) { - if (obj) { //排除null, undefined - var i = 0 - if (isArrayLike(obj)) { - for (var n = obj.length; i < n; i++) { - if (fn(i, obj[i]) === false) - break - } - } else { - for (i in obj) { - if (obj.hasOwnProperty(i) && fn(i, obj[i]) === false) { - break - } - } - } - } - }, - //收集元素的data-{{prefix}}-*属性,并转æ¢ä¸ºå¯¹è±¡ - getWidgetData: function (elem, prefix) { - var raw = avalon(elem).data() - var result = {} - for (var i in raw) { - if (i.indexOf(prefix) === 0) { - result[i.replace(prefix, "").replace(/\w/, function (a) { - return a.toLowerCase() - })] = raw[i] - } - } - return result - }, - Array: { - /*åªæœ‰å½“å‰æ•°ç»„ä¸å­˜åœ¨æ­¤å…ƒç´ æ—¶åªæ·»åŠ å®ƒ*/ - ensure: function (target, item) { - if (target.indexOf(item) === -1) { - return target.push(item) - } - }, - /*移除数组中指定ä½ç½®çš„元素,返回布尔表示æˆåŠŸä¸Žå¦*/ - removeAt: function (target, index) { - return !!target.splice(index, 1).length - }, - /*移除数组中第一个匹é…ä¼ å‚的那个元素,返回布尔表示æˆåŠŸä¸Žå¦*/ - remove: function (target, item) { - var index = target.indexOf(item) - if (~index) - return avalon.Array.removeAt(target, index) - return false - } - } -}) - -var bindingHandlers = avalon.bindingHandlers = {} -var bindingExecutors = avalon.bindingExecutors = {} - -/*判定是å¦ç±»æ•°ç»„,如节点集åˆï¼Œçº¯æ•°ç»„,arguments与拥有éžè´Ÿæ•´æ•°çš„length属性的纯JS对象*/ -function isArrayLike(obj) { - if (!obj) - return false - var n = obj.length - if (n === (n >>> 0)) { //检测length属性是å¦ä¸ºéžè´Ÿæ•´æ•° - var type = serialize.call(obj).slice(8, -1) - if (/(?:regexp|string|function|window|global)$/i.test(type)) - return false - if (type === "Array") - return true - try { - if ({}.propertyIsEnumerable.call(obj, "length") === false) { //如果是原生对象 - return /^\s?function/.test(obj.item || obj.callee) - } - return true - } catch (e) { //IEçš„NodeList直接抛错 - return !obj.window //IE6-8 window - } - } - return false -} - - -// https://github.com/rsms/js-lru -var Cache = new function() {// jshint ignore:line - function LRU(maxLength) { - this.size = 0 - this.limit = maxLength - this.head = this.tail = void 0 - this._keymap = {} - } - - var p = LRU.prototype - - p.put = function(key, value) { - var entry = { - key: key, - value: value - } - this._keymap[key] = entry - if (this.tail) { - this.tail.newer = entry - entry.older = this.tail - } else { - this.head = entry - } - this.tail = entry - if (this.size === this.limit) { - this.shift() - } else { - this.size++ - } - return value - } - - p.shift = function() { - var entry = this.head - if (entry) { - this.head = this.head.newer - this.head.older = - entry.newer = - entry.older = - this._keymap[entry.key] = void 0 - } - } - p.get = function(key) { - var entry = this._keymap[key] - if (entry === void 0) - return - if (entry === this.tail) { - return entry.value - } - // HEAD--------------TAIL - // <.older .newer> - // <--- add direction -- - // A B C E - if (entry.newer) { - if (entry === this.head) { - this.head = entry.newer - } - entry.newer.older = entry.older // C <-- E. - } - if (entry.older) { - entry.older.newer = entry.newer // C. --> E - } - entry.newer = void 0 // D --x - entry.older = this.tail // D. --> E - if (this.tail) { - this.tail.newer = entry // E. <-- D - } - this.tail = entry - return entry.value - } - return LRU -}// jshint ignore:line - -/********************************************************************* - * javascript åº•å±‚è¡¥ä¸ * - **********************************************************************/ -if (!"å¸å¾’正美".trim) { - var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g - String.prototype.trim = function () { - return this.replace(rtrim, "") - } -} -var hasDontEnumBug = !({ - 'toString': null -}).propertyIsEnumerable('toString'), - hasProtoEnumBug = (function () { - }).propertyIsEnumerable('prototype'), - dontEnums = [ - "toString", - "toLocaleString", - "valueOf", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "constructor" - ], - dontEnumsLength = dontEnums.length; -if (!Object.keys) { - Object.keys = function (object) { //ecma262v5 15.2.3.14 - var theKeys = [] - var skipProto = hasProtoEnumBug && typeof object === "function" - if (typeof object === "string" || (object && object.callee)) { - for (var i = 0; i < object.length; ++i) { - theKeys.push(String(i)) - } - } else { - for (var name in object) { - if (!(skipProto && name === "prototype") && ohasOwn.call(object, name)) { - theKeys.push(String(name)) - } - } - } - - if (hasDontEnumBug) { - var ctor = object.constructor, - skipConstructor = ctor && ctor.prototype === object - for (var j = 0; j < dontEnumsLength; j++) { - var dontEnum = dontEnums[j] - if (!(skipConstructor && dontEnum === "constructor") && ohasOwn.call(object, dontEnum)) { - theKeys.push(dontEnum) - } - } - } - return theKeys - } -} -if (!Array.isArray) { - Array.isArray = function (a) { - return serialize.call(a) === "[object Array]" - } -} - -if (!noop.bind) { - Function.prototype.bind = function (scope) { - if (arguments.length < 2 && scope === void 0) - return this - var fn = this, - argv = arguments - return function () { - var args = [], - i - for (i = 1; i < argv.length; i++) - args.push(argv[i]) - for (i = 0; i < arguments.length; i++) - args.push(arguments[i]) - return fn.apply(scope, args) - } - } -} - -function iterator(vars, body, ret) { - var fun = 'for(var ' + vars + 'i=0,n = this.length; i < n; i++){' + body.replace('_', '((i in this) && fn.call(scope,this[i],i,this))') + '}' + ret - /* jshint ignore:start */ - return Function("fn,scope", fun) - /* jshint ignore:end */ -} -if (!rnative.test([].map)) { - avalon.mix(ap, { - //定ä½æ“作,返回数组中第一个等于给定å‚数的元素的索引值。 - indexOf: function (item, index) { - var n = this.length, - i = ~~index - if (i < 0) - i += n - for (; i < n; i++) - if (this[i] === item) - return i - return -1 - }, - //定ä½æ“作,åŒä¸Šï¼Œä¸è¿‡æ˜¯ä»ŽåŽé历。 - lastIndexOf: function (item, index) { - var n = this.length, - i = index == null ? n - 1 : index - if (i < 0) - i = Math.max(0, n + i) - for (; i >= 0; i--) - if (this[i] === item) - return i - return -1 - }, - //迭代æ“作,将数组的元素挨个儿传入一个函数中执行。Prototype.js的对应å字为each。 - forEach: iterator("", '_', ""), - //迭代类 在数组中的æ¯ä¸ªé¡¹ä¸Šè¿è¡Œä¸€ä¸ªå‡½æ•°ï¼Œå¦‚果此函数的值为真,则此元素作为新数组的元素收集起æ¥ï¼Œå¹¶è¿”回新数组 - filter: iterator('r=[],j=0,', 'if(_)r[j++]=this[i]', 'return r'), - //收集æ“作,将数组的元素挨个儿传入一个函数中执行,然åŽæŠŠå®ƒä»¬çš„返回值组æˆä¸€ä¸ªæ–°æ•°ç»„返回。Prototype.js的对应å字为collect。 - map: iterator('r=[],', 'r[i]=_', 'return r'), - //åªè¦æ•°ç»„中有一个元素满足æ¡ä»¶ï¼ˆæ”¾è¿›ç»™å®šå‡½æ•°è¿”回true),那么它就返回true。Prototype.js的对应å字为any。 - some: iterator("", 'if(_)return true', 'return false'), - //åªæœ‰æ•°ç»„中的元素都满足æ¡ä»¶ï¼ˆæ”¾è¿›ç»™å®šå‡½æ•°è¿”回true),它æ‰è¿”回true。Prototype.js的对应å字为all。 - every: iterator("", 'if(!_)return false', 'return true') - }) -} -/********************************************************************* - * DOM åº•å±‚è¡¥ä¸ * - **********************************************************************/ - -function fixContains(root, el) { - try { //IE6-8,游离于DOM树外的文本节点,访问parentNode有时会抛错 - while ((el = el.parentNode)) - if (el === root) - return true - return false - } catch (e) { - return false - } -} -avalon.contains = fixContains -//IE6-11的文档对象没有contains -if (!DOC.contains) { - DOC.contains = function (b) { - return fixContains(DOC, b) - } -} - -function outerHTML() { - return new XMLSerializer().serializeToString(this) -} - -if (window.SVGElement) { - //safari5+是把contains方法放在Element.prototype上而ä¸æ˜¯Node.prototype - if (!DOC.createTextNode("x").contains) { - Node.prototype.contains = function (arg) {//IE6-8没有Node对象 - return !!(this.compareDocumentPosition(arg) & 16) - } - } - var svgns = "http://www.w3.org/2000/svg" - var svg = DOC.createElementNS(svgns, "svg") - svg.innerHTML = '' - if (!rsvg.test(svg.firstChild)) { // #409 - function enumerateNode(node, targetNode) {// jshint ignore:line - if (node && node.childNodes) { - var nodes = node.childNodes - for (var i = 0, el; el = nodes[i++]; ) { - if (el.tagName) { - var svg = DOC.createElementNS(svgns, - el.tagName.toLowerCase()) - ap.forEach.call(el.attributes, function (attr) { - svg.setAttribute(attr.name, attr.value) //å¤åˆ¶å±žæ€§ - })// jshint ignore:line - // 递归处ç†å­èŠ‚点 - enumerateNode(el, svg) - targetNode.appendChild(svg) - } - } - } - } - Object.defineProperties(SVGElement.prototype, { - "outerHTML": {//IE9-11,firefoxä¸æ”¯æŒSVG元素的innerHTML,outerHTML属性 - enumerable: true, - configurable: true, - get: outerHTML, - set: function (html) { - var tagName = this.tagName.toLowerCase(), - par = this.parentNode, - frag = avalon.parseHTML(html) - // æ“作的svg,直接æ’å…¥ - if (tagName === "svg") { - par.insertBefore(frag, this) - // svg节点的å­èŠ‚点类似 - } else { - var newFrag = DOC.createDocumentFragment() - enumerateNode(frag, newFrag) - par.insertBefore(newFrag, this) - } - par.removeChild(this) - } - }, - "innerHTML": { - enumerable: true, - configurable: true, - get: function () { - var s = this.outerHTML - var ropen = new RegExp("<" + this.nodeName + '\\b(?:(["\'])[^"]*?(\\1)|[^>])*>', "i") - var rclose = new RegExp("<\/" + this.nodeName + ">$", "i") - return s.replace(ropen, "").replace(rclose, "") - }, - set: function (html) { - if (avalon.clearHTML) { - avalon.clearHTML(this) - var frag = avalon.parseHTML(html) - enumerateNode(frag, this) - } - } - } - }) - } -} -if (!root.outerHTML && window.HTMLElement) { //firefox 到11æ—¶æ‰æœ‰outerHTML - HTMLElement.prototype.__defineGetter__("outerHTML", outerHTML); -} - - -//============================= event binding ======================= -var rmouseEvent = /^(?:mouse|contextmenu|drag)|click/ -function fixEvent(event) { - var ret = {} - for (var i in event) { - ret[i] = event[i] - } - var target = ret.target = event.srcElement - if (event.type.indexOf("key") === 0) { - ret.which = event.charCode != null ? event.charCode : event.keyCode - } else if (rmouseEvent.test(event.type)) { - var doc = target.ownerDocument || DOC - var box = doc.compatMode === "BackCompat" ? doc.body : doc.documentElement - ret.pageX = event.clientX + (box.scrollLeft >> 0) - (box.clientLeft >> 0) - ret.pageY = event.clientY + (box.scrollTop >> 0) - (box.clientTop >> 0) - ret.wheelDeltaY = ret.wheelDelta - ret.wheelDeltaX = 0 - } - ret.timeStamp = new Date() - 0 - ret.originalEvent = event - ret.preventDefault = function () { //阻止默认行为 - event.returnValue = false - } - ret.stopPropagation = function () { //阻止事件在DOM树中的传播 - event.cancelBubble = true - } - return ret -} - -var eventHooks = avalon.eventHooks -//针对firefox, chrome修正mouseenter, mouseleave -if (!("onmouseenter" in root)) { - avalon.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" - }, function (origType, fixType) { - eventHooks[origType] = { - type: fixType, - deel: function (elem, _, fn) { - return function (e) { - var t = e.relatedTarget - if (!t || (t !== elem && !(elem.compareDocumentPosition(t) & 16))) { - delete e.type - e.type = origType - return fn.call(elem, e) - } - } - } - } - }) -} -//针对IE9+, w3c修正animationend -avalon.each({ - AnimationEvent: "animationend", - WebKitAnimationEvent: "webkitAnimationEnd" -}, function (construct, fixType) { - if (window[construct] && !eventHooks.animationend) { - eventHooks.animationend = { - type: fixType - } - } -}) -//针对IE6-8修正input -if (!("oninput" in DOC.createElement("input"))) { - eventHooks.input = { - type: "propertychange", - deel: function (elem, _, fn) { - return function (e) { - if (e.propertyName === "value") { - e.type = "input" - return fn.call(elem, e) - } - } - } - } -} -if (DOC.onmousewheel === void 0) { - /* IE6-11 chrome mousewheel wheelDetla 下 -120 上 120 - firefox DOMMouseScroll detail 下3 上-3 - firefox wheel detlaY 下3 上-3 - IE9-11 wheel deltaY 下40 上-40 - chrome wheel deltaY 下100 上-100 */ - var fixWheelType = DOC.onwheel !== void 0 ? "wheel" : "DOMMouseScroll" - var fixWheelDelta = fixWheelType === "wheel" ? "deltaY" : "detail" - eventHooks.mousewheel = { - type: fixWheelType, - deel: function (elem, _, fn) { - return function (e) { - e.wheelDeltaY = e.wheelDelta = e[fixWheelDelta] > 0 ? -120 : 120 - e.wheelDeltaX = 0 - if (Object.defineProperty) { - Object.defineProperty(e, "type", { - value: "mousewheel" - }) - } - fn.call(elem, e) - } - } - } -} - - - -/********************************************************************* - * é…置系统 * - **********************************************************************/ - -function kernel(settings) { - for (var p in settings) { - if (!ohasOwn.call(settings, p)) - continue - var val = settings[p] - if (typeof kernel.plugins[p] === "function") { - kernel.plugins[p](val) - } else if (typeof kernel[p] === "object") { - avalon.mix(kernel[p], val) - } else { - kernel[p] = val - } - } - return this -} -var openTag, closeTag, rexpr, rexprg, rbind, rregexp = /[-.*+?^${}()|[\]\/\\]/g - -function escapeRegExp(target) { - //http://stevenlevithan.com/regex/xregexp/ - //将字符串安全格å¼åŒ–为正则表达å¼çš„æºç  - return (target + "").replace(rregexp, "\\$&") -} - -var plugins = { - loader: function (builtin) { - var flag = innerRequire && builtin - window.require = flag ? innerRequire : otherRequire - window.define = flag ? innerRequire.define : otherDefine - }, - interpolate: function (array) { - openTag = array[0] - closeTag = array[1] - if (openTag === closeTag) { - throw new SyntaxError("openTag!==closeTag") - var test = openTag + "test" + closeTag - cinerator.innerHTML = test - if (cinerator.innerHTML !== test && cinerator.innerHTML.indexOf("<") > -1) { - throw new SyntaxError("此定界符ä¸åˆæ³•") - } - cinerator.innerHTML = "" - } - var o = escapeRegExp(openTag), - c = escapeRegExp(closeTag) - rexpr = new RegExp(o + "(.*?)" + c) - rexprg = new RegExp(o + "(.*?)" + c, "g") - rbind = new RegExp(o + ".*?" + c + "|\\sms-") - } -} - -kernel.debug = true -kernel.plugins = plugins -kernel.plugins['interpolate'](["{{", "}}"]) -kernel.paths = {} -kernel.shim = {} -kernel.maxRepeatSize = 100 -avalon.config = kernel -var ravalon = /(\w+)\[(avalonctrl)="(\S+)"\]/ -var findNodes = DOC.querySelectorAll ? function(str) { - return DOC.querySelectorAll(str) -} : function(str) { - var match = str.match(ravalon) - var all = DOC.getElementsByTagName(match[1]) - var nodes = [] - for (var i = 0, el; el = all[i++]; ) { - if (el.getAttribute(match[2]) === match[3]) { - nodes.push(el) - } - } - return nodes -} -/********************************************************************* - * 事件总线 * - **********************************************************************/ -var EventBus = { - $watch: function (type, callback) { - if (typeof callback === "function") { - var callbacks = this.$events[type] - if (callbacks) { - callbacks.push(callback) - } else { - this.$events[type] = [callback] - } - } else { //é‡æ–°å¼€å§‹ç›‘å¬æ­¤VM的第一é‡ç®€å•å±žæ€§çš„å˜åŠ¨ - this.$events = this.$watch.backup - } - return this - }, - $unwatch: function (type, callback) { - var n = arguments.length - if (n === 0) { //让此VM的所有$watch回调无效化 - this.$watch.backup = this.$events - this.$events = {} - } else if (n === 1) { - this.$events[type] = [] - } else { - var callbacks = this.$events[type] || [] - var i = callbacks.length - while (~--i < 0) { - if (callbacks[i] === callback) { - return callbacks.splice(i, 1) - } - } - } - return this - }, - $fire: function (type) { - var special, i, v, callback - if (/^(\w+)!(\S+)$/.test(type)) { - special = RegExp.$1 - type = RegExp.$2 - } - var events = this.$events - if (!events) - return - var args = aslice.call(arguments, 1) - var detail = [type].concat(args) - if (special === "all") { - for (i in avalon.vmodels) { - v = avalon.vmodels[i] - if (v !== this) { - v.$fire.apply(v, detail) - } - } - } else if (special === "up" || special === "down") { - var elements = events.expr ? findNodes(events.expr) : [] - if (elements.length === 0) - return - for (i in avalon.vmodels) { - v = avalon.vmodels[i] - if (v !== this) { - if (v.$events.expr) { - var eventNodes = findNodes(v.$events.expr) - if (eventNodes.length === 0) { - continue - } - //循环两个vmodel中的节点,查找匹é…(å‘上匹é…或者å‘下匹é…)的节点并设置标识 - /* jshint ignore:start */ - ap.forEach.call(eventNodes, function (node) { - ap.forEach.call(elements, function (element) { - var ok = special === "down" ? element.contains(node) : //å‘下æ•èŽ· - node.contains(element) //å‘上冒泡 - if (ok) { - node._avalon = v //符åˆæ¡ä»¶çš„加一个标识 - } - }); - }) - /* jshint ignore:end */ - } - } - } - var nodes = DOC.getElementsByTagName("*") //å®žçŽ°èŠ‚ç‚¹æŽ’åº - var alls = [] - ap.forEach.call(nodes, function (el) { - if (el._avalon) { - alls.push(el._avalon) - el._avalon = "" - el.removeAttribute("_avalon") - } - }) - if (special === "up") { - alls.reverse() - } - for (i = 0; callback = alls[i++]; ) { - if (callback.$fire.apply(callback, detail) === false) { - break - } - } - } else { - var callbacks = events[type] || [] - var all = events.$all || [] - for (i = 0; callback = callbacks[i++]; ) { - if (isFunction(callback)) - callback.apply(this, args) - } - for (i = 0; callback = all[i++]; ) { - if (isFunction(callback)) - callback.apply(this, arguments) - } - } - } -} - -/********************************************************************* - * modelFactory * - **********************************************************************/ -//avalon最核心的方法的两个方法之一(å¦ä¸€ä¸ªæ˜¯avalon.scan),返回一个ViewModel(VM) -var VMODELS = avalon.vmodels = {} //所有vmodel都储存在这里 -avalon.define = function (id, factory) { - var $id = id.$id || id - if (!$id) { - log("warning: vm必须指定$id") - } - if (VMODELS[$id]) { - log("warning: " + $id + " å·²ç»å­˜åœ¨äºŽavalon.vmodels中") - } - if (typeof id === "object") { - var model = modelFactory(id) - } else { - var scope = { - $watch: noop - } - factory(scope) //得到所有定义 - - model = modelFactory(scope) //å·å¤©æ¢æ—¥ï¼Œå°†scopeæ¢ä¸ºmodel - stopRepeatAssign = true - factory(model) - stopRepeatAssign = false - } - model.$id = $id - return VMODELS[$id] = model -} - -//一些ä¸éœ€è¦è¢«ç›‘å¬çš„属性 -var $$skipArray = String("$id,$watch,$unwatch,$fire,$events,$model,$skipArray,$proxy,$reinitialize,$propertyNames").match(rword) -var defineProperty = Object.defineProperty -var canHideOwn = true -//如果æµè§ˆå™¨ä¸æ”¯æŒecma262v5çš„Object.defineProperties或者存在BUG,比如IE8 -//标准æµè§ˆå™¨ä½¿ç”¨__defineGetter__, __defineSetter__实现 -try { - defineProperty({}, "_", { - value: "x" - }) - var defineProperties = Object.defineProperties -} catch (e) { - canHideOwn = false -} - -function modelFactory(source, $special, $model) { - if (Array.isArray(source)) { - var arr = source.concat() - source.length = 0 - var collection = arrayFactory(source) - collection.pushArray(arr) - return collection - } - //0 null undefined || Node || VModel(fix IE6-8 createWithProxy $val: val引å‘çš„BUG) - if (!source || source.nodeType > 0 || (source.$id && source.$events)) { - return source - } - var $skipArray = Array.isArray(source.$skipArray) ? source.$skipArray : [] - $skipArray.$special = $special || {} //强制è¦ç›‘å¬çš„属性 - var $vmodel = {} //è¦è¿”回的对象, 它在IE6-8下å¯èƒ½è¢«å·é¾™è½¬å‡¤ - $model = $model || {} //vmodels.$model属性 - var $events = {} //vmodel.$events属性 - var accessors = {} //监控属性 - var computed = [] - $$skipArray.forEach(function (name) { - delete source[name] - }) - var names = Object.keys(source) - /* jshint ignore:start */ - names.forEach(function (name, accessor) { - var val = source[name] - $model[name] = val - if (isObservable(name, val, $skipArray)) { - //总共产生三ç§accessor - $events[name] = [] - var valueType = avalon.type(val) - //总共产生三ç§accessor - if (valueType === "object" && isFunction(val.get) && Object.keys(val).length <= 2) { - accessor = makeComputedAccessor(name, val) - computed.push(accessor) - } else if (rcomplexType.test(valueType)) { - accessor = makeComplexAccessor(name, val, valueType, $events[name]) - } else { - accessor = makeSimpleAccessor(name, val) - } - accessors[name] = accessor - } - }) - /* jshint ignore:end */ - - $vmodel = defineProperties($vmodel, descriptorFactory(accessors), source) //生æˆä¸€ä¸ªç©ºçš„ViewModel - for (var i = 0; i < names.length; i++) { - var name = names[i] - if (!accessors[name]) { - $vmodel[name] = source[name] - } - } - //添加$id, $model, $events, $watch, $unwatch, $fire - $vmodel.$propertyNames = names.join("­") - $vmodel.$id = generateID() - $vmodel.$model = $model - $vmodel.$events = $events - for (i in EventBus) { - var fn = EventBus[i] - if (!W3C) { //在IE6-8下,VB对象的方法里的this并ä¸æŒ‡å‘自身,需è¦ç”¨bind处ç†ä¸€ä¸‹ - fn = fn.bind($vmodel) - } - $vmodel[i] = fn - } - if (canHideOwn) { - Object.defineProperty($vmodel, "hasOwnProperty", hasOwnDescriptor) - } else { - /* jshint ignore:start */ - $vmodel.hasOwnProperty = function (name) { - return name in $vmodel.$model - } - /* jshint ignore:end */ - } - - $vmodel.$reinitialize = function () { - computed.forEach(function (accessor) { - delete accessor._value - delete accessor.oldArgs - accessor.digest = function () { - accessor.call($vmodel) - } - dependencyDetection.begin({ - callback: function (vm, dependency) {//dependency为一个accessor - var name = dependency._name - if (dependency !== accessor) { - var list = vm.$events[name] - injectDependency(list, accessor.digest) - } - } - }) - try { - accessor.get.call($vmodel) - } finally { - dependencyDetection.end() - } - }) - } - $vmodel.$reinitialize() - return $vmodel -} - -var hasOwnDescriptor = { - value: function (name) { - return name in this.$model - }, - writable: false, - enumerable: false, - configurable: true -} -//创建一个简å•è®¿é—®å™¨ -function makeSimpleAccessor(name, value) { - function accessor(value) { - var oldValue = accessor._value - if (arguments.length > 0) { - if (!stopRepeatAssign && !isEqual(value, oldValue)) { - accessor.updateValue(this, value) - accessor.notify(this, value, oldValue) - } - return this - } else { - dependencyDetection.collectDependency(this, accessor) - return oldValue - } - } - accessorFactory(accessor, name) - accessor._value = value - return accessor; -} - -//创建一个计算访问器 -function makeComputedAccessor(name, options) { - function accessor(value) {//计算属性 - var oldValue = accessor._value - var init = ("_value" in accessor) - if (arguments.length > 0) { - if (stopRepeatAssign) { - return this - } - if (typeof accessor.set === "function") { - if (accessor.oldArgs !== value) { - accessor.oldArgs = value - var $events = this.$events - var lock = $events[name] - $events[name] = [] //清空回调,防止内部冒泡而触å‘多次$fire - accessor.set.call(this, value) - $events[name] = lock - value = accessor.get.call(this) - if (value !== oldValue) { - accessor.updateValue(this, value) - accessor.notify(this, value, oldValue) //触å‘$watch回调 - } - } - } - return this - } else { - //å°†ä¾èµ–于自己的高层访问器或视图刷新函数(以绑定对象形å¼ï¼‰æ”¾åˆ°è‡ªå·±çš„订阅数组中 - //将自己注入到低层访问器的订阅数组中 - value = accessor.get.call(this) - accessor.updateValue(this, value) - if (init && oldValue !== value) { - accessor.notify(this, value, oldValue) //触å‘$watch回调 - } - return value - } - } - accessor.set = options.set - accessor.get = options.get - accessorFactory(accessor, name) - return accessor -} - -//创建一个å¤æ‚访问器 -function makeComplexAccessor(name, initValue, valueType, list) { - function accessor(value) { - var oldValue = accessor._value - - var son = accessor._vmodel - if (arguments.length > 0) { - if (stopRepeatAssign) { - return this - } - if (valueType === "array") { - var a = son, b = value, - an = a.length, - bn = b.length - a.$lock = true - if (an > bn) { - a.splice(bn, an - bn) - } else if (bn > an) { - a.push.apply(a, b.slice(an)) - } - var n = Math.min(an, bn) - for (var i = 0; i < n; i++) { - a.set(i, b[i]) - } - delete a.$lock - a._fire("set") - } else if (valueType === "object") { - var newPropertyNames = Object.keys(value).join("­") - if (son.$propertyNames === newPropertyNames) { - for (i in value) { - son[i] = value[i] - } - } else { - var sson = accessor._vmodel = modelFactory(value) - var sevent = sson.$events - var oevent = son.$events - for (var i in sevent) { - var arr = sevent[i] - if (Array.isArray(arr)) { - arr = arr.concat(oevent[i]) - } - } - sevent[subscribers] = oevent[subscribers] - sson.$proxy = son.$proxy - son = sson - } - } - accessor.updateValue(this, son.$model) - accessor.notify(this, this._value, oldValue) - return this - } else { - dependencyDetection.collectDependency(this, accessor) - return son - } - } - accessorFactory(accessor, name) - var son = accessor._vmodel = modelFactory(initValue) - son.$events[subscribers] = list - return accessor -} - -function globalUpdateValue(vmodel, value) { - vmodel.$model[this._name] = this._value = value -} - -function globalNotify(vmodel, value, oldValue) { - var name = this._name - var array = vmodel.$events[name] //刷新值 - if (array) { - fireDependencies(array) //åŒæ­¥è§†å›¾ - EventBus.$fire.call(vmodel, name, value, oldValue) //触å‘$watch回调 - } -} - -function accessorFactory(accessor, name) { - accessor._name = name - //åŒæ—¶æ›´æ–°_value与model - accessor.updateValue = globalUpdateValue - accessor.notify = globalNotify -} - -//比较两个值是å¦ç›¸ç­‰ -var isEqual = Object.is || function (v1, v2) { - if (v1 === 0 && v2 === 0) { - return 1 / v1 === 1 / v2 - } else if (v1 !== v1) { - return v2 !== v2 - } else { - return v1 === v2 - } -} - -function isObservable(name, value, $skipArray) { - if (isFunction(value) || value && value.nodeType) { - return false - } - if ($skipArray.indexOf(name) !== -1) { - return false - } - var $special = $skipArray.$special - if (name && name.charAt(0) === "$" && !$special[name]) { - return false - } - return true -} - -var descriptorFactory = W3C ? function (obj) { - var descriptors = {} - for (var i in obj) { - descriptors[i] = { - get: obj[i], - set: obj[i], - enumerable: true, - configurable: true - } - } - return descriptors -} : function (a) { - return a -} - -//===================ä¿®å¤æµè§ˆå™¨å¯¹Object.defineProperties的支æŒ================= -if (!canHideOwn) { - if ("__defineGetter__" in avalon) { - defineProperty = function (obj, prop, desc) { - if ('value' in desc) { - obj[prop] = desc.value - } - if ("get" in desc) { - obj.__defineGetter__(prop, desc.get) - } - if ('set' in desc) { - obj.__defineSetter__(prop, desc.set) - } - return obj - } - defineProperties = function (obj, descs) { - for (var prop in descs) { - if (descs.hasOwnProperty(prop)) { - defineProperty(obj, prop, descs[prop]) - } - } - return obj - } - } - if (IEVersion) { - var VBClassPool = {} - window.execScript([// jshint ignore:line - "Function parseVB(code)", - "\tExecuteGlobal(code)", - "End Function" //转æ¢ä¸€æ®µæ–‡æœ¬ä¸ºVBä»£ç  - ].join("\n"), "VBScript") - function VBMediator(instance, accessors, name, value) {// jshint ignore:line - var accessor = accessors[name] - if (arguments.length === 4) { - accessor.call(instance, value) - } else { - return accessor.call(instance) - } - } - defineProperties = function (name, accessors, properties) { - // jshint ignore:line - var buffer = [] - buffer.push( - "\r\n\tPrivate [__data__], [__proxy__]", - "\tPublic Default Function [__const__](d, p)", - "\t\tSet [__data__] = d: set [__proxy__] = p", - "\t\tSet [__const__] = Me", //链å¼è°ƒç”¨ - "\tEnd Function") - //添加普通属性,因为VBScript对象ä¸èƒ½åƒJS那样éšæ„增删属性,必须在这里预先定义好 - for (name in properties) { - if (!accessors.hasOwnProperty(name)) { - buffer.push("\tPublic [" + name + "]") - } - } - $$skipArray.forEach(function (name) { - if (!accessors.hasOwnProperty(name)) { - buffer.push("\tPublic [" + name + "]") - } - }) - buffer.push("\tPublic [" + 'hasOwnProperty' + "]") - //添加访问器属性 - for (name in accessors) { - buffer.push( - //由于ä¸çŸ¥å¯¹æ–¹ä¼šä¼ å…¥ä»€ä¹ˆ,å› æ­¤set, let都用上 - "\tPublic Property Let [" + name + "](val" + expose + ")", //setter - "\t\tCall [__proxy__](Me,[__data__], \"" + name + "\", val" + expose + ")", - "\tEnd Property", - "\tPublic Property Set [" + name + "](val" + expose + ")", //setter - "\t\tCall [__proxy__](Me,[__data__], \"" + name + "\", val" + expose + ")", - "\tEnd Property", - "\tPublic Property Get [" + name + "]", //getter - "\tOn Error Resume Next", //必须优先使用set语å¥,å¦åˆ™å®ƒä¼šè¯¯å°†æ•°ç»„当字符串返回 - "\t\tSet[" + name + "] = [__proxy__](Me,[__data__],\"" + name + "\")", - "\tIf Err.Number <> 0 Then", - "\t\t[" + name + "] = [__proxy__](Me,[__data__],\"" + name + "\")", - "\tEnd If", - "\tOn Error Goto 0", - "\tEnd Property") - - } - - buffer.push("End Class") - var body = buffer.join("\r\n") - var className =VBClassPool[body] - if (!className) { - className = generateID("VBClass") - window.parseVB("Class " + className + body) - window.parseVB([ - "Function " + className + "Factory(a, b)", //创建实例并传入两个关键的å‚æ•° - "\tDim o", - "\tSet o = (New " + className + ")(a, b)", - "\tSet " + className + "Factory = o", - "End Function" - ].join("\r\n")) - VBClassPool[body] = className - } - var ret = window[className + "Factory"](accessors, VBMediator) //å¾—åˆ°å…¶äº§å“ - return ret //å¾—åˆ°å…¶äº§å“ - } - } -} - -/********************************************************************* - * 监控数组(与ms-each, ms-repeaté…åˆä½¿ç”¨ï¼‰ * - **********************************************************************/ - -function arrayFactory(model) { - var array = [] - array.$id = generateID() - array.$model = model //æ•°æ®æ¨¡åž‹ - array.$events = {} - array.$events[subscribers] = [] - array._ = modelFactory({ - length: model.length - }) - array._.$watch("length", function (a, b) { - array.$fire("length", a, b) - }) - for (var i in EventBus) { - array[i] = EventBus[i] - } - avalon.mix(array, arrayPrototype) - return array -} - -function mutateArray(method, pos, n, index, method2, pos2, n2) { - var oldLen = this.length, loop = 2 - while (--loop) { - switch (method) { - case "add": - /* jshint ignore:start */ - var array = this.$model.slice(pos, pos + n).map(function (el) { - if (rcomplexType.test(avalon.type(el))) { - return el.$id ? el : modelFactory(el, 0, el) - } else { - return el - } - }) - /* jshint ignore:end */ - _splice.apply(this, [pos, 0].concat(array)) - this._fire("add", pos, n) - break - case "del": - var ret = this._splice(pos, n) - this._fire("del", pos, n) - break - } - if (method2) { - method = method2 - pos = pos2 - n = n2 - loop = 2 - method2 = 0 - } - } - this._fire("index", index) - if (this.length !== oldLen) { - this._.length = this.length - } - return ret -} - -var _splice = ap.splice -var arrayPrototype = { - _splice: _splice, - _fire: function (method, a, b) { - fireDependencies(this.$events[subscribers], method, a, b) - }, - size: function () { //å–得数组长度,这个函数å¯ä»¥åŒæ­¥è§†å›¾ï¼Œlengthä¸èƒ½ - return this._.length - }, - pushArray: function (array) { - var m = array.length, n = this.length - if (m) { - ap.push.apply(this.$model, array) - mutateArray.call(this, "add", n, m, Math.max(0, n - 1)) - } - return m + n - }, - push: function () { - //http://jsperf.com/closure-with-arguments - var array = [] - var i, n = arguments.length - for (i = 0; i < n; i++) { - array[i] = arguments[i] - } - return this.pushArray(array) - }, - unshift: function () { - var m = arguments.length, n = this.length - if (m) { - ap.unshift.apply(this.$model, arguments) - mutateArray.call(this, "add", 0, m, 0) - } - return m + n //IE67çš„unshiftä¸ä¼šè¿”回长度 - }, - shift: function () { - if (this.length) { - var el = this.$model.shift() - mutateArray.call(this, "del", 0, 1, 0) - return el //返回被移除的元素 - } - }, - pop: function () { - var n = this.length - if (n) { - var el = this.$model.pop() - mutateArray.call(this, "del", n - 1, 1, Math.max(0, n - 2)) - return el //返回被移除的元素 - } - }, - splice: function (start) { - var m = arguments.length, args = [], change - var removed = _splice.apply(this.$model, arguments) - if (removed.length) { //如果用户删掉了元素 - args.push("del", start, removed.length, 0) - change = true - } - if (m > 2) { //如果用户添加了元素 - if (change) { - args.splice(3, 1, 0, "add", start, m - 2) - } else { - args.push("add", start, m - 2, 0) - } - change = true - } - if (change) { //返回被移除的元素 - return mutateArray.apply(this, args) - } else { - return [] - } - }, - contains: function (el) { //判定是å¦åŒ…å« - return this.indexOf(el) !== -1 - }, - remove: function (el) { //移除第一个等于给定值的元素 - return this.removeAt(this.indexOf(el)) - }, - removeAt: function (index) { //移除指定索引上的元素 - if (index >= 0) { - this.$model.splice(index, 1) - return mutateArray.call(this, "del", index, 1, 0) - } - return [] - }, - clear: function () { - this.$model.length = this.length = this._.length = 0 //清空数组 - this._fire("clear", 0) - return this - }, - removeAll: function (all) { //移除N个元素 - if (Array.isArray(all)) { - for (var i = this.length - 1; i >= 0; i--) { - if (all.indexOf(this[i]) !== -1) { - this.removeAt(i) - } - } - } else if (typeof all === "function") { - for ( i = this.length - 1; i >= 0; i--) { - var el = this[i] - if (all(el, i)) { - this.removeAt(i) - } - } - } else { - this.clear() - } - }, - ensure: function (el) { - if (!this.contains(el)) { //åªæœ‰ä¸å­˜åœ¨æ‰push - this.push(el) - } - return this - }, - set: function (index, val) { - if (index >= 0) { - var valueType = avalon.type(val) - if (val && val.$model) { - val = val.$model - } - var target = this[index] - if (valueType === "object") { - for (var i in val) { - if (target.hasOwnProperty(i)) { - target[i] = val[i] - } - } - } else if (valueType === "array") { - target.clear().push.apply(target, val) - } else if (target !== val) { - this[index] = val - this.$model[index] = val - this._fire("set", index, val) - } - } - return this - } -} -//相当于原æ¥bindingExecutors.repeat çš„index分支 -function resetIndex(array, pos) { - var last = array.length - 1 - for (var el; el = array[pos]; pos++) { - el.$index = pos - el.$first = pos === 0 - el.$last = pos === last - } -} - -function sortByIndex(array, indexes) { - var map = {}; - for (var i = 0, n = indexes.length; i < n; i++) { - map[i] = array[i] // preserve - var j = indexes[i] - if (j in map) { - array[i] = map[j] - delete map[j] - } else { - array[i] = array[j] - } - } -} - -"sort,reverse".replace(rword, function (method) { - arrayPrototype[method] = function () { - var newArray = this.$model//这是è¦æŽ’åºçš„新数组 - var oldArray = newArray.concat() //ä¿æŒåŽŸæ¥çŠ¶æ€çš„旧数组 - var mask = Math.random() - var indexes = [] - var hasSort - ap[method].apply(newArray, arguments) //æŽ’åº - for (var i = 0, n = oldArray.length; i < n; i++) { - var neo = newArray[i] - var old = oldArray[i] - if (isEqual(neo, old)) { - indexes.push(i) - } else { - var index = oldArray.indexOf(neo) - indexes.push(index)//得到新数组的æ¯ä¸ªå…ƒç´ åœ¨æ—§æ•°ç»„对应的ä½ç½® - oldArray[index] = mask //å±è”½å·²ç»æ‰¾è¿‡çš„元素 - hasSort = true - } - } - if (hasSort) { - sortByIndex(this, indexes) - // sortByIndex(this.$proxy, indexes) - this._fire("move", indexes) - this._fire("index", 0) - } - return this - } -}) - - -/********************************************************************* - * ä¾èµ–调度系统 * - **********************************************************************/ -//检测两个对象间的ä¾èµ–关系 -var dependencyDetection = (function () { - var outerFrames = [] - var currentFrame - return { - begin: function (accessorObject) { - //accessorObject为一个拥有callback的对象 - outerFrames.push(currentFrame) - currentFrame = accessorObject - }, - end: function () { - currentFrame = outerFrames.pop() - }, - collectDependency: function (vmodel, accessor) { - if (currentFrame) { - //被dependencyDetection.begin调用 - currentFrame.callback(vmodel, accessor); - } - } - }; -})() -//将绑定对象注入到其ä¾èµ–项的订阅数组中 -var ronduplex = /^(duplex|on)$/ -avalon.injectBinding = function (data) { - var valueFn = data.evaluator - if (valueFn) { //如果是求值函数 - dependencyDetection.begin({ - callback: function (vmodel, dependency) { - injectDependency(vmodel.$events[dependency._name], data) - } - }) - try { - var value = ronduplex.test(data.type) ? data : valueFn.apply(0, data.args) - if(value === void 0){ - delete data.evaluator - } - data.handler(value, data.element, data) - } catch (e) { - //log("warning:exception throwed in [avalon.injectBinding] " + e) - delete data.evaluator - var node = data.element - if (node.nodeType === 3) { - var parent = node.parentNode - if (kernel.commentInterpolate) { - parent.replaceChild(DOC.createComment(data.value), node) - } else { - node.data = openTag + (data.oneTime ? "::" : "") + data.value + closeTag - } - } - } finally { - dependencyDetection.end() - } - } -} - -//å°†ä¾èµ–项(比它高层的访问器或构建视图刷新函数的绑定对象)注入到订阅者数组 -function injectDependency(list, data) { - if (data.oneTime) - return - if (list && avalon.Array.ensure(list, data) && data.element) { - injectDisposeQueue(data, list) - } -} - -//通知ä¾èµ–于这个访问器的订阅者更新自身 -function fireDependencies(list) { - if (list && list.length) { - if (new Date() - beginTime > 444 && typeof list[0] === "object") { - rejectDisposeQueue() - } - var args = aslice.call(arguments, 1) - for (var i = list.length, fn; fn = list[--i]; ) { - var el = fn.element - if (el && el.parentNode) { - try { - var valueFn = fn.evaluator - if (fn.$repeat) { - fn.handler.apply(fn, args) //处ç†ç›‘控数组的方法 - }else if("$repeat" in fn || !valueFn ){//如果没有eval,å…ˆeval - bindingHandlers[fn.type](fn, fn.vmodels) - } else if (fn.type !== "on") { //事件绑定åªèƒ½ç”±ç”¨æˆ·è§¦å‘,ä¸èƒ½ç”±ç¨‹åºè§¦å‘ - var value = valueFn.apply(0, fn.args || []) - fn.handler(value, el, fn) - } - } catch (e) { } - } - } - } -} -/********************************************************************* - * 定时GC回收机制 * - **********************************************************************/ -var disposeCount = 0 -var disposeQueue = avalon.$$subscribers = [] -var beginTime = new Date() -var oldInfo = {} -var uuid2Node = {} -function getUid(obj, makeID) { //IE9+,标准æµè§ˆå™¨ - if (!obj.uuid && !makeID) { - obj.uuid = ++disposeCount - uuid2Node[obj.uuid] = obj - } - return obj.uuid -} -function getNode(uuid) { - return uuid2Node[uuid] -} -//添加到回收列队中 -function injectDisposeQueue(data, list) { - var elem = data.element - if (!data.uuid) { - if (elem.nodeType !== 1) { - data.uuid = data.type + (data.pos || 0) + "-" + getUid(elem.parentNode) - } else { - data.uuid = data.name + "-" + getUid(elem) - } - } - var lists = data.lists || (data.lists = []) - avalon.Array.ensure(lists, list) - list.$uuid = list.$uuid || generateID() - if (!disposeQueue[data.uuid]) { - disposeQueue[data.uuid] = 1 - disposeQueue.push(data) - } -} - -function rejectDisposeQueue(data) { - if (avalon.optimize) - return - var i = disposeQueue.length - var n = i - var allTypes = [] - var iffishTypes = {} - var newInfo = {} - //对页é¢ä¸Šæ‰€æœ‰ç»‘定对象进行分门别类, åªæ£€æµ‹ä¸ªæ•°å‘生å˜åŒ–的类型 - while (data = disposeQueue[--i]) { - var type = data.type - if (newInfo[type]) { - newInfo[type]++ - } else { - newInfo[type] = 1 - allTypes.push(type) - } - } - var diff = false - allTypes.forEach(function (type) { - if (oldInfo[type] !== newInfo[type]) { - iffishTypes[type] = 1 - diff = true - } - }) - i = n - if (diff) { - while (data = disposeQueue[--i]) { - if (!data.element) - continue - if (iffishTypes[data.type] && shouldDispose(data.element)) { //如果它没有在DOMæ ‘ - disposeQueue.splice(i, 1) - delete disposeQueue[data.uuid] - delete uuid2Node[data.element.uuid] - var lists = data.lists - for (var k = 0, list; list = lists[k++]; ) { - avalon.Array.remove(lists, list) - avalon.Array.remove(list, data) - } - disposeData(data) - } - } - } - oldInfo = newInfo - beginTime = new Date() -} - -function disposeData(data) { - data.element = null - data.rollback && data.rollback() - for (var key in data) { - data[key] = null - } -} - -function shouldDispose(el) { - try {//IE下,如果文本节点脱离DOM树,访问parentNode会报错 - if (!el.parentNode) { - return true - } - } catch (e) { - return true - } - - return el.msRetain ? 0 : (el.nodeType === 1 ? !root.contains(el) : !avalon.contains(root, el)) -} - -/************************************************************************ - * HTML处ç†(parseHTML, innerHTML, clearHTML) * - ************************************************************************/ -// We have to close these tags to support XHTML -var tagHooks = { - area: [1, "", ""], - param: [1, "", ""], - col: [2, "", "
"], - legend: [1, "
", "
"], - option: [1, ""], - thead: [1, "", "
"], - tr: [2, "", "
"], - td: [3, "", "
"], - g: [1, '', ''], - //IE6-8在用innerHTML生æˆèŠ‚点时,ä¸èƒ½ç›´æŽ¥åˆ›å»ºno-scope元素与HTML5的新标签 - _default: W3C ? [0, "", ""] : [1, "X
", "
"] //divå¯ä»¥ä¸ç”¨é—­åˆ -} -tagHooks.th = tagHooks.td -tagHooks.optgroup = tagHooks.option -tagHooks.tbody = tagHooks.tfoot = tagHooks.colgroup = tagHooks.caption = tagHooks.thead -String("circle,defs,ellipse,image,line,path,polygon,polyline,rect,symbol,text,use").replace(rword, function (tag) { - tagHooks[tag] = tagHooks.g //处ç†SVG -}) -var rtagName = /<([\w:]+)/ //å–å¾—å…¶tagName -var rxhtml = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig -var rcreate = W3C ? /[^\d\D]/ : /(<(?:script|link|style|meta|noscript))/ig -var scriptTypes = oneObject(["", "text/javascript", "text/ecmascript", "application/ecmascript", "application/javascript"]) -var rnest = /<(?:tb|td|tf|th|tr|col|opt|leg|cap|area)/ //需è¦å¤„ç†å¥—嵌关系的标签 -var script = DOC.createElement("script") -var rhtml = /<|&#?\w+;/ -avalon.parseHTML = function (html) { - var fragment = avalonFragment.cloneNode(false) - if (typeof html !== "string") { - return fragment - } - if (!rhtml.test(html)) { - fragment.appendChild(DOC.createTextNode(html)) - return fragment - } - html = html.replace(rxhtml, "<$1>").trim() - var tag = (rtagName.exec(html) || ["", ""])[1].toLowerCase(), - //å–得其标签å - wrap = tagHooks[tag] || tagHooks._default, - wrapper = cinerator, - firstChild, neo - if (!W3C) { //fix IE - html = html.replace(rcreate, "
$1") //在link style script等标签之å‰æ·»åŠ ä¸€ä¸ªè¡¥ä¸ - } - wrapper.innerHTML = wrap[1] + html + wrap[2] - var els = wrapper.getElementsByTagName("script") - if (els.length) { //使用innerHTML生æˆçš„script节点ä¸ä¼šå‘出请求与执行text属性 - for (var i = 0, el; el = els[i++]; ) { - if (scriptTypes[el.type]) { - //以å·é¾™è½¬å‡¤æ–¹å¼æ¢å¤æ‰§è¡Œè„šæœ¬åŠŸèƒ½ - neo = script.cloneNode(false) //FFä¸èƒ½çœç•¥å‚æ•° - ap.forEach.call(el.attributes, function (attr) { - if (attr && attr.specified) { - neo[attr.name] = attr.value //å¤åˆ¶å…¶å±žæ€§ - neo.setAttribute(attr.name, attr.value) - } - }) // jshint ignore:line - neo.text = el.text - el.parentNode.replaceChild(neo, el) //替æ¢èŠ‚点 - } - } - } - if (!W3C) { //fix IE - var target = wrap[1] === "X
" ? wrapper.lastChild.firstChild : wrapper.lastChild - if (target && target.tagName === "TABLE" && tag !== "tbody") { - //IE6-7å¤„ç† --> , - // --> , - // -->
- for (els = target.childNodes, i = 0; el = els[i++]; ) { - if (el.tagName === "TBODY" && !el.innerHTML) { - target.removeChild(el) - break - } - } - } - els = wrapper.getElementsByTagName("br") - var n = els.length - while (el = els[--n]) { - if (el.className === "msNoScope") { - el.parentNode.removeChild(el) - } - } - for (els = wrapper.all, i = 0; el = els[i++]; ) { //fix VML - if (isVML(el)) { - fixVML(el) - } - } - } - //移除我们为了符åˆå¥—嵌关系而添加的标签 - for (i = wrap[0]; i--; wrapper = wrapper.lastChild) { - } - while (firstChild = wrapper.firstChild) { // å°†wrapperä¸Šçš„èŠ‚ç‚¹è½¬ç§»åˆ°æ–‡æ¡£ç¢Žç‰‡ä¸Šï¼ - fragment.appendChild(firstChild) - } - return fragment -} - -function isVML(src) { - var nodeName = src.nodeName - return nodeName.toLowerCase() === nodeName && src.scopeName && src.outerText === "" -} - -function fixVML(node) { - if (node.currentStyle.behavior !== "url(#default#VML)") { - node.style.behavior = "url(#default#VML)" - node.style.display = "inline-block" - node.style.zoom = 1 //hasLayout - } -} -avalon.innerHTML = function (node, html) { - if (!W3C && (!rcreate.test(html) && !rnest.test(html))) { - try { - node.innerHTML = html - return - } catch (e) { - } - } - var a = this.parseHTML(html) - this.clearHTML(node).appendChild(a) -} -avalon.clearHTML = function (node) { - node.textContent = "" - while (node.firstChild) { - node.removeChild(node.firstChild) - } - return node -} - -/********************************************************************* - * avalon的原型方法定义区 * - **********************************************************************/ - -function hyphen(target) { - //转æ¢ä¸ºè¿žå­—符线风格 - return target.replace(/([a-z\d])([A-Z]+)/g, "$1-$2").toLowerCase() -} - -function camelize(target) { - //æå‰åˆ¤æ–­ï¼Œæ高getStyle等的效率 - if (!target || target.indexOf("-") < 0 && target.indexOf("_") < 0) { - return target - } - //转æ¢ä¸ºé©¼å³°é£Žæ ¼ - return target.replace(/[-_][^-_]/g, function(match) { - return match.charAt(1).toUpperCase() - }) -} - -var fakeClassListMethods = { - _toString: function() { - var node = this.node - var cls = node.className - var str = typeof cls === "string" ? cls : cls.baseVal - return str.split(/\s+/).join(" ") - }, - _contains: function(cls) { - return (" " + this + " ").indexOf(" " + cls + " ") > -1 - }, - _add: function(cls) { - if (!this.contains(cls)) { - this._set(this + " " + cls) - } - }, - _remove: function(cls) { - this._set((" " + this + " ").replace(" " + cls + " ", " ")) - }, - __set: function(cls) { - cls = cls.trim() - var node = this.node - if (rsvg.test(node)) { - //SVG元素的className是一个对象 SVGAnimatedString { baseVal="", animVal=""},åªèƒ½é€šè¿‡set/getAttributeæ“作 - node.setAttribute("class", cls) - } else { - node.className = cls - } - } //toggle存在版本差异,因此ä¸ä½¿ç”¨å®ƒ -} - - function fakeClassList(node) { - if (!("classList" in node)) { - node.classList = { - node: node - } - for (var k in fakeClassListMethods) { - node.classList[k.slice(1)] = fakeClassListMethods[k] - } - } - return node.classList - } - - - "add,remove".replace(rword, function(method) { - avalon.fn[method + "Class"] = function(cls) { - var el = this[0] - //https://developer.mozilla.org/zh-CN/docs/Mozilla/Firefox/Releases/26 - if (cls && typeof cls === "string" && el && el.nodeType === 1) { - cls.replace(/\S+/g, function(c) { - fakeClassList(el)[method](c) - }) - } - return this - } - }) - avalon.fn.mix({ - hasClass: function(cls) { - var el = this[0] || {} - return el.nodeType === 1 && fakeClassList(el).contains(cls) - }, - toggleClass: function(value, stateVal) { - var className, i = 0 - var classNames = String(value).split(/\s+/) - var isBool = typeof stateVal === "boolean" - while ((className = classNames[i++])) { - var state = isBool ? stateVal : !this.hasClass(className) - this[state ? "addClass" : "removeClass"](className) - } - return this - }, - attr: function(name, value) { - if (arguments.length === 2) { - this[0].setAttribute(name, value) - return this - } else { - return this[0].getAttribute(name) - } - }, - data: function(name, value) { - name = "data-" + hyphen(name || "") - switch (arguments.length) { - case 2: - this.attr(name, value) - return this - case 1: - var val = this.attr(name) - return parseData(val) - case 0: - var ret = {} - ap.forEach.call(this[0].attributes, function(attr) { - if (attr) { - name = attr.name - if (!name.indexOf("data-")) { - name = camelize(name.slice(5)) - ret[name] = parseData(attr.value) - } - } - }) - return ret - } - }, - removeData: function(name) { - name = "data-" + hyphen(name) - this[0].removeAttribute(name) - return this - }, - css: function(name, value) { - if (avalon.isPlainObject(name)) { - for (var i in name) { - avalon.css(this, i, name[i]) - } - } else { - var ret = avalon.css(this, name, value) - } - return ret !== void 0 ? ret : this - }, - position: function() { - var offsetParent, offset, - elem = this[0], - parentOffset = { - top: 0, - left: 0 - } - if (!elem) { - return - } - if (this.css("position") === "fixed") { - offset = elem.getBoundingClientRect() - } else { - offsetParent = this.offsetParent() //得到真正的offsetParent - offset = this.offset() // 得到正确的offsetParent - if (offsetParent[0].tagName !== "HTML") { - parentOffset = offsetParent.offset() - } - parentOffset.top += avalon.css(offsetParent[0], "borderTopWidth", true) - parentOffset.left += avalon.css(offsetParent[0], "borderLeftWidth", true) - - // Subtract offsetParent scroll positions - parentOffset.top -= offsetParent.scrollTop() - parentOffset.left -= offsetParent.scrollLeft() - } - return { - top: offset.top - parentOffset.top - avalon.css(elem, "marginTop", true), - left: offset.left - parentOffset.left - avalon.css(elem, "marginLeft", true) - } - }, - offsetParent: function() { - var offsetParent = this[0].offsetParent - while (offsetParent && avalon.css(offsetParent, "position") === "static") { - offsetParent = offsetParent.offsetParent; - } - return avalon(offsetParent || root) - }, - bind: function(type, fn, phase) { - if (this[0]) { //此方法ä¸ä¼šé“¾ - return avalon.bind(this[0], type, fn, phase) - } - }, - unbind: function(type, fn, phase) { - if (this[0]) { - avalon.unbind(this[0], type, fn, phase) - } - return this - }, - val: function(value) { - var node = this[0] - if (node && node.nodeType === 1) { - var get = arguments.length === 0 - var access = get ? ":get" : ":set" - var fn = valHooks[getValType(node) + access] - if (fn) { - var val = fn(node, value) - } else if (get) { - return (node.value || "").replace(/\r/g, "") - } else { - node.value = value - } - } - return get ? val : this - } - }) - - function parseData(data) { - try { - if (typeof data === "object") - return data - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : +data + "" === data ? +data : rbrace.test(data) ? avalon.parseJSON(data) : data - } catch (e) {} - return data - } -var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, - rvalidchars = /^[\],:{}\s]*$/, - rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, - rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, - rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g -avalon.parseJSON = window.JSON ? JSON.parse : function(data) { - if (typeof data === "string") { - data = data.trim(); - if (data) { - if (rvalidchars.test(data.replace(rvalidescape, "@") - .replace(rvalidtokens, "]") - .replace(rvalidbraces, ""))) { - return (new Function("return " + data))() // jshint ignore:line - } - } - avalon.error("Invalid JSON: " + data) - } - return data -} - -//生æˆavalon.fn.scrollLeft, avalon.fn.scrollTop方法 -avalon.each({ - scrollLeft: "pageXOffset", - scrollTop: "pageYOffset" -}, function(method, prop) { - avalon.fn[method] = function(val) { - var node = this[0] || {}, win = getWindow(node), - top = method === "scrollTop" - if (!arguments.length) { - return win ? (prop in win) ? win[prop] : root[method] : node[method] - } else { - if (win) { - win.scrollTo(!top ? val : avalon(win).scrollLeft(), top ? val : avalon(win).scrollTop()) - } else { - node[method] = val - } - } - } -}) - -function getWindow(node) { - return node.window && node.document ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false; -} -//=============================css相关======================= -var cssHooks = avalon.cssHooks = {} -var prefixes = ["", "-webkit-", "-o-", "-moz-", "-ms-"] -var cssMap = { - "float": W3C ? "cssFloat" : "styleFloat" -} -avalon.cssNumber = oneObject("columnCount,order,fillOpacity,fontWeight,lineHeight,opacity,orphans,widows,zIndex,zoom") - -avalon.cssName = function(name, host, camelCase) { - if (cssMap[name]) { - return cssMap[name] - } - host = host || root.style - for (var i = 0, n = prefixes.length; i < n; i++) { - camelCase = camelize(prefixes[i] + name) - if (camelCase in host) { - return (cssMap[name] = camelCase) - } - } - return null -} -cssHooks["@:set"] = function(node, name, value) { - try { //node.style.width = NaN;node.style.width = "xxxxxxx";node.style.width = undefine 在旧å¼IE下会抛异常 - node.style[name] = value - } catch (e) {} -} -if (window.getComputedStyle) { - cssHooks["@:get"] = function(node, name) { - if (!node || !node.style) { - throw new Error("getComputedStyleè¦æ±‚传入一个节点 " + node) - } - var ret, styles = getComputedStyle(node, null) - if (styles) { - ret = name === "filter" ? styles.getPropertyValue(name) : styles[name] - if (ret === "") { - ret = node.style[name] //其他æµè§ˆå™¨éœ€è¦æˆ‘们手动å–内è”æ ·å¼ - } - } - return ret - } - cssHooks["opacity:get"] = function(node) { - var ret = cssHooks["@:get"](node, "opacity") - return ret === "" ? "1" : ret - } -} else { - var rnumnonpx = /^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i - var rposition = /^(top|right|bottom|left)$/ - var ralpha = /alpha\([^)]*\)/i - var ie8 = !! window.XDomainRequest - var salpha = "DXImageTransform.Microsoft.Alpha" - var border = { - thin: ie8 ? '1px' : '2px', - medium: ie8 ? '3px' : '4px', - thick: ie8 ? '5px' : '6px' - } - cssHooks["@:get"] = function(node, name) { - //å–得精确值,ä¸è¿‡å®ƒæœ‰å¯èƒ½æ˜¯å¸¦em,pc,mm,pt,%ç­‰å•ä½ - var currentStyle = node.currentStyle - var ret = currentStyle[name] - if ((rnumnonpx.test(ret) && !rposition.test(ret))) { - //①,ä¿å­˜åŽŸæœ‰çš„style.left, runtimeStyle.left, - var style = node.style, - left = style.left, - rsLeft = node.runtimeStyle.left - //②由于③处的style.left = xxx会影å“到currentStyle.left, - //因此把它currentStyle.left放到runtimeStyle.left, - //runtimeStyle.left拥有最高优先级,ä¸ä¼šstyle.leftå½±å“ - node.runtimeStyle.left = currentStyle.left - //③将精确值赋给到style.left,然åŽé€šè¿‡IEçš„å¦ä¸€ä¸ªç§æœ‰å±žæ€§ style.pixelLeft - //得到å•ä½ä¸ºpx的结果;fontSize的分支è§http://bugs.jquery.com/ticket/760 - style.left = name === 'fontSize' ? '1em' : (ret || 0) - ret = style.pixelLeft + "px" - //④还原 style.left,runtimeStyle.left - style.left = left - node.runtimeStyle.left = rsLeft - } - if (ret === "medium") { - name = name.replace("Width", "Style") - //border width 默认值为medium,å³ä½¿å…¶ä¸º0" - if (currentStyle[name] === "none") { - ret = "0px" - } - } - return ret === "" ? "auto" : border[ret] || ret - } - cssHooks["opacity:set"] = function(node, name, value) { - var style = node.style - var opacity = isFinite(value) && value <= 1 ? "alpha(opacity=" + value * 100 + ")" : "" - var filter = style.filter || ""; - style.zoom = 1 - //ä¸èƒ½ä½¿ç”¨ä»¥ä¸‹æ–¹å¼è®¾ç½®é€æ˜Žåº¦ - //node.filters.alpha.opacity = value * 100 - style.filter = (ralpha.test(filter) ? - filter.replace(ralpha, opacity) : - filter + " " + opacity).trim() - if (!style.filter) { - style.removeAttribute("filter") - } - } - cssHooks["opacity:get"] = function(node) { - //这是最快的获å–IEé€æ˜Žå€¼çš„æ–¹å¼ï¼Œä¸éœ€è¦åŠ¨ç”¨æ­£åˆ™äº†ï¼ - var alpha = node.filters.alpha || node.filters[salpha], - op = alpha && alpha.enabled ? alpha.opacity : 100 - return (op / 100) + "" //ç¡®ä¿è¿”回的是字符串 - } -} - -"top,left".replace(rword, function(name) { - cssHooks[name + ":get"] = function(node) { - var computed = cssHooks["@:get"](node, name) - return /px$/.test(computed) ? computed : - avalon(node).position()[name] + "px" - } -}) - -var cssShow = { - position: "absolute", - visibility: "hidden", - display: "block" -} - -var rdisplayswap = /^(none|table(?!-c[ea]).+)/ - - function showHidden(node, array) { - //http://www.cnblogs.com/rubylouvre/archive/2012/10/27/2742529.html - if (node.offsetWidth <= 0) { //opera.offsetWidthå¯èƒ½å°äºŽ0 - if (rdisplayswap.test(cssHooks["@:get"](node, "display"))) { - var obj = { - node: node - } - for (var name in cssShow) { - obj[name] = node.style[name] - node.style[name] = cssShow[name] - } - array.push(obj) - } - var parent = node.parentNode - if (parent && parent.nodeType === 1) { - showHidden(parent, array) - } - } - } - "Width,Height".replace(rword, function(name) { //fix 481 - var method = name.toLowerCase(), - clientProp = "client" + name, - scrollProp = "scroll" + name, - offsetProp = "offset" + name - cssHooks[method + ":get"] = function(node, which, override) { - var boxSizing = -4 - if (typeof override === "number") { - boxSizing = override - } - which = name === "Width" ? ["Left", "Right"] : ["Top", "Bottom"] - var ret = node[offsetProp] // border-box 0 - if (boxSizing === 2) { // margin-box 2 - return ret + avalon.css(node, "margin" + which[0], true) + avalon.css(node, "margin" + which[1], true) - } - if (boxSizing < 0) { // padding-box -2 - ret = ret - avalon.css(node, "border" + which[0] + "Width", true) - avalon.css(node, "border" + which[1] + "Width", true) - } - if (boxSizing === -4) { // content-box -4 - ret = ret - avalon.css(node, "padding" + which[0], true) - avalon.css(node, "padding" + which[1], true) - } - return ret - } - cssHooks[method + "&get"] = function(node) { - var hidden = []; - showHidden(node, hidden); - var val = cssHooks[method + ":get"](node) - for (var i = 0, obj; obj = hidden[i++];) { - node = obj.node - for (var n in obj) { - if (typeof obj[n] === "string") { - node.style[n] = obj[n] - } - } - } - return val; - } - avalon.fn[method] = function(value) { //会忽视其display - var node = this[0] - if (arguments.length === 0) { - if (node.setTimeout) { //å–得窗å£å°ºå¯¸,IE9åŽå¯ä»¥ç”¨node.innerWidth /innerHeight代替 - return node["inner" + name] || node.document.documentElement[clientProp] - } - if (node.nodeType === 9) { //å–得页é¢å°ºå¯¸ - var doc = node.documentElement - //FF chrome html.scrollHeight< body.scrollHeight - //IE æ ‡å‡†æ¨¡å¼ : html.scrollHeight> body.scrollHeight - //IE æ€ªå¼‚æ¨¡å¼ : html.scrollHeight 最大等于å¯è§†çª—å£å¤šä¸€ç‚¹ï¼Ÿ - return Math.max(node.body[scrollProp], doc[scrollProp], node.body[offsetProp], doc[offsetProp], doc[clientProp]) - } - return cssHooks[method + "&get"](node) - } else { - return this.css(method, value) - } - } - avalon.fn["inner" + name] = function() { - return cssHooks[method + ":get"](this[0], void 0, -2) - } - avalon.fn["outer" + name] = function(includeMargin) { - return cssHooks[method + ":get"](this[0], void 0, includeMargin === true ? 2 : 0) - } - }) - avalon.fn.offset = function() { //å–å¾—è·ç¦»é¡µé¢å·¦å³è§’çš„åæ ‡ - var node = this[0], - box = { - left: 0, - top: 0 - } - if (!node || !node.tagName || !node.ownerDocument) { - return box - } - var doc = node.ownerDocument, - body = doc.body, - root = doc.documentElement, - win = doc.defaultView || doc.parentWindow - if (!avalon.contains(root, node)) { - return box - } - //http://hkom.blog1.fc2.com/?mode=m&no=750 bodyçš„å移é‡æ˜¯ä¸åŒ…å«marginçš„ - //我们å¯ä»¥é€šè¿‡getBoundingClientRectæ¥èŽ·å¾—元素相对于clientçš„rect. - //http://msdn.microsoft.com/en-us/library/ms536433.aspx - if (node.getBoundingClientRect) { - box = node.getBoundingClientRect() // BlackBerry 5, iOS 3 (original iPhone) - } - //chrome/IE6: body.scrollTop, firefox/other: root.scrollTop - var clientTop = root.clientTop || body.clientTop, - clientLeft = root.clientLeft || body.clientLeft, - scrollTop = Math.max(win.pageYOffset || 0, root.scrollTop, body.scrollTop), - scrollLeft = Math.max(win.pageXOffset || 0, root.scrollLeft, body.scrollLeft) - // 把滚动è·ç¦»åŠ åˆ°left,top中去。 - // IE一些版本中会自动为HTML元素加上2pxçš„border,我们需è¦åŽ»æŽ‰å®ƒ - // http://msdn.microsoft.com/en-us/library/ms533564(VS.85).aspx - return { - top: box.top + scrollTop - clientTop, - left: box.left + scrollLeft - clientLeft - } - } - - //==================================val相关============================ - - function getValType(elem) { - var ret = elem.tagName.toLowerCase() - return ret === "input" && /checkbox|radio/.test(elem.type) ? "checked" : ret - } -var roption = /^]+))?)*\s+value[\s=]/i -var valHooks = { - "option:get": IEVersion ? function(node) { - //在IE11åŠW3C,如果没有指定value,那么node.value默认为node.text(存在trim作),但IE9-10则是å–innerHTML(没trimæ“作) - //specified并ä¸å¯é ï¼Œå› æ­¤é€šè¿‡åˆ†æžouterHTML判定用户有没有显示定义value - return roption.test(node.outerHTML) ? node.value : node.text.trim() - } : function(node) { - return node.value - }, - "select:get": function(node, value) { - var option, options = node.options, - index = node.selectedIndex, - getter = valHooks["option:get"], - one = node.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? max : one ? index : 0 - for (; i < max; i++) { - option = options[i] - //æ—§å¼IE在resetåŽä¸ä¼šæ”¹å˜selected,需è¦æ”¹ç”¨i === index判定 - //我们过滤所有disabledçš„option元素,但在safari5下,如果设置select为disable,那么其所有孩å­éƒ½disable - //因此当一个元素为disable,需è¦æ£€æµ‹å…¶æ˜¯å¦æ˜¾å¼è®¾ç½®äº†disableåŠå…¶çˆ¶èŠ‚点的disable情况 - if ((option.selected || i === index) && !option.disabled) { - value = getter(option) - if (one) { - return value - } - //收集所有selected值组æˆæ•°ç»„返回 - values.push(value) - } - } - return values - }, - "select:set": function(node, values, optionSet) { - values = [].concat(values) //强制转æ¢ä¸ºæ•°ç»„ - var getter = valHooks["option:get"] - for (var i = 0, el; el = node.options[i++];) { - if ((el.selected = values.indexOf(getter(el)) > -1)) { - optionSet = true - } - } - if (!optionSet) { - node.selectedIndex = -1 - } - } -} - -/********************************************************************* - * 编译系统 * - **********************************************************************/ -var meta = { - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"': '\\"', - '\\': '\\\\' -} -var quote = window.JSON && JSON.stringify || function(str) { - return '"' + str.replace(/[\\\"\x00-\x1f]/g, function(a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' -} - -var keywords = [ - "break,case,catch,continue,debugger,default,delete,do,else,false", - "finally,for,function,if,in,instanceof,new,null,return,switch,this", - "throw,true,try,typeof,var,void,while,with", /* 关键字*/ - "abstract,boolean,byte,char,class,const,double,enum,export,extends", - "final,float,goto,implements,import,int,interface,long,native", - "package,private,protected,public,short,static,super,synchronized", - "throws,transient,volatile", /*ä¿ç•™å­—*/ - "arguments,let,yield,undefined" /* ECMA 5 - use strict*/].join(",") -var rrexpstr = /\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|[\s\t\n]*\.[\s\t\n]*[$\w\.]+/g -var rsplit = /[^\w$]+/g -var rkeywords = new RegExp(["\\b" + keywords.replace(/,/g, '\\b|\\b') + "\\b"].join('|'), 'g') -var rnumber = /\b\d[^,]*/g -var rcomma = /^,+|,+$/g -var variablePool = new Cache(512) -var getVariables = function (code) { - var key = "," + code.trim() - var ret = variablePool.get(key) - if (ret) { - return ret - } - var match = code - .replace(rrexpstr, "") - .replace(rsplit, ",") - .replace(rkeywords, "") - .replace(rnumber, "") - .replace(rcomma, "") - .split(/^$|,+/) - return variablePool.put(key, uniqSet(match)) -} -/*添加赋值语å¥*/ - -function addAssign(vars, scope, name, data) { - var ret = [], - prefix = " = " + name + "." - for (var i = vars.length, prop; prop = vars[--i]; ) { - if (scope.hasOwnProperty(prop)) { - ret.push(prop + prefix + prop) - data.vars.push(prop) - if (data.type === "duplex") { - vars.get = name + "." + prop - } - vars.splice(i, 1) - } - } - return ret -} - -function uniqSet(array) { - var ret = [], - unique = {} - for (var i = 0; i < array.length; i++) { - var el = array[i] - var id = el && typeof el.$id === "string" ? el.$id : el - if (!unique[id]) { - unique[id] = ret.push(el) - } - } - return ret -} -//缓存求值函数,以便多次利用 -var evaluatorPool = new Cache(128) -//å–得求值函数åŠå…¶ä¼ å‚ -var rduplex = /\w\[.*\]|\w\.\w/ -var rproxy = /(\$proxy\$[a-z]+)\d+$/ -var rthimRightParentheses = /\)\s*$/ -var rthimOtherParentheses = /\)\s*\|/g -var rquoteFilterName = /\|\s*([$\w]+)/g -var rpatchBracket = /"\s*\["/g -var rthimLeftParentheses = /"\s*\(/g -function parseFilter(val, filters) { - filters = filters - .replace(rthimRightParentheses, "")//处ç†æœ€åŽçš„å°æ‹¬å· - .replace(rthimOtherParentheses, function () {//处ç†å…¶ä»–å°æ‹¬å· - return "],|" - }) - .replace(rquoteFilterName, function (a, b) { //处ç†|åŠå®ƒåŽé¢çš„过滤器的åå­— - return "[" + quote(b) - }) - .replace(rpatchBracket, function () { - return '"],["' - }) - .replace(rthimLeftParentheses, function () { - return '",' - }) + "]" - return "return avalon.filters.$filter(" + val + ", " + filters + ")" -} - -function parseExpr(code, scopes, data) { - var dataType = data.type - var filters = data.filters || "" - var exprId = scopes.map(function (el) { - return String(el.$id).replace(rproxy, "$1") - }) + code + dataType + filters - var vars = getVariables(code).concat(), - assigns = [], - names = [], - args = [], - prefix = "" - //args 是一个对象数组, names 是将è¦ç”Ÿæˆçš„求值函数的å‚æ•° - scopes = uniqSet(scopes) - data.vars = [] - for (var i = 0, sn = scopes.length; i < sn; i++) { - if (vars.length) { - var name = "vm" + expose + "_" + i - names.push(name) - args.push(scopes[i]) - assigns.push.apply(assigns, addAssign(vars, scopes[i], name, data)) - } - } - if (!assigns.length && dataType === "duplex") { - return - } - if (dataType !== "duplex" && (code.indexOf("||") > -1 || code.indexOf("&&") > -1)) { - //https://github.com/RubyLouvre/avalon/issues/583 - data.vars.forEach(function (v) { - var reg = new RegExp("\\b" + v + "(?:\\.\\w+|\\[\\w+\\])+", "ig") - code = code.replace(reg, function (_) { - var c = _.charAt(v.length) - var r = IEVersion ? code.slice(arguments[1] + _.length) : RegExp.rightContext - var method = /^\s*\(/.test(r) - if (c === "." || c === "[" || method) {//比如v为aa,我们åªåŒ¹é…aa.bb,aa[cc],ä¸åŒ¹é…aaa.xxx - var name = "var" + String(Math.random()).replace(/^0\./, "") - if (method) {//array.size() - var array = _.split(".") - if (array.length > 2) { - var last = array.pop() - assigns.push(name + " = " + array.join(".")) - return name + "." + last - } else { - return _ - } - } - assigns.push(name + " = " + _) - return name - } else { - return _ - } - }) - }) - } - //---------------args---------------- - data.args = args - //---------------cache---------------- - delete data.vars - var fn = evaluatorPool.get(exprId) //直接从缓存,å…å¾—é‡å¤ç”Ÿæˆ - if (fn) { - data.evaluator = fn - return - } - prefix = assigns.join(", ") - if (prefix) { - prefix = "var " + prefix - } - if (/\S/.test(filters)) { //文本绑定,åŒå·¥ç»‘定æ‰æœ‰è¿‡æ»¤å™¨ - if (!/text|html/.test(data.type)) { - throw Error("ms-" + data.type + "ä¸æ”¯æŒè¿‡æ»¤å™¨") - } - code = "\nvar ret" + expose + " = " + code + ";\r\n" - code += parseFilter("ret" + expose, filters) - } else if (dataType === "duplex") { //åŒå·¥ç»‘定 - var _body = "'use strict';\nreturn function(vvv){\n\t" + - prefix + - ";\n\tif(!arguments.length){\n\t\treturn " + - code + - "\n\t}\n\t" + (!rduplex.test(code) ? vars.get : code) + - "= vvv;\n} " - try { - fn = Function.apply(noop, names.concat(_body)) - data.evaluator = evaluatorPool.put(exprId, fn) - } catch (e) { - log("debug: parse error," + e.message) - } - return - } else if (dataType === "on") { //事件绑定 - if (code.indexOf("(") === -1) { - code += ".call(this, $event)" - } else { - code = code.replace("(", ".call(this,") - } - names.push("$event") - code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需è¦Function("return ;") - var lastIndex = code.lastIndexOf("\nreturn") - var header = code.slice(0, lastIndex) - var footer = code.slice(lastIndex) - code = header + "\n" + footer - } else { //其他绑定 - code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需è¦Function("return ;") - } - try { - fn = Function.apply(noop, names.concat("'use strict';\n" + prefix + code)) - data.evaluator = evaluatorPool.put(exprId, fn) - } catch (e) { - log("debug: parse error," + e.message) - } finally { - vars = assigns = names = null //释放内存 - } -} - - -//parseExprçš„æ™ºèƒ½å¼•ç”¨ä»£ç† - -function parseExprProxy(code, scopes, data, tokens, noRegister) { - if (Array.isArray(tokens)) { - code = tokens.map(function (el) { - return el.expr ? "(" + el.value + ")" : quote(el.value) - }).join(" + ") - } - parseExpr(code, scopes, data) - if (data.evaluator && !noRegister) { - data.handler = bindingExecutors[data.handlerName || data.type] - //方便调试 - //这里éžå¸¸é‡è¦,我们通过判定视图刷新函数的element是å¦åœ¨DOM树决定 - //将它移出订阅者列表 - avalon.injectBinding(data) - } -} -avalon.parseExprProxy = parseExprProxy -/********************************************************************* - * 扫æ系统 * - **********************************************************************/ - -avalon.scan = function(elem, vmodel) { - elem = elem || root - var vmodels = vmodel ? [].concat(vmodel) : [] - scanTag(elem, vmodels) -} - -//http://www.w3.org/TR/html5/syntax.html#void-elements -var stopScan = oneObject("area,base,basefont,br,col,command,embed,hr,img,input,link,meta,param,source,track,wbr,noscript,script,style,textarea".toUpperCase()) - -function checkScan(elem, callback, innerHTML) { - var id = setTimeout(function() { - var currHTML = elem.innerHTML - clearTimeout(id) - if (currHTML === innerHTML) { - callback() - } else { - checkScan(elem, callback, currHTML) - } - }) -} - - -function createSignalTower(elem, vmodel) { - var id = elem.getAttribute("avalonctrl") || vmodel.$id - elem.setAttribute("avalonctrl", id) - vmodel.$events.expr = elem.tagName + '[avalonctrl="' + id + '"]' -} - -var getBindingCallback = function(elem, name, vmodels) { - var callback = elem.getAttribute(name) - if (callback) { - for (var i = 0, vm; vm = vmodels[i++]; ) { - if (vm.hasOwnProperty(callback) && typeof vm[callback] === "function") { - return vm[callback] - } - } - } -} - -function executeBindings(bindings, vmodels) { - for (var i = 0, data; data = bindings[i++]; ) { - data.vmodels = vmodels - bindingHandlers[data.type](data, vmodels) - if (data.evaluator && data.element && data.element.nodeType === 1) { //移除数æ®ç»‘å®šï¼Œé˜²æ­¢è¢«äºŒæ¬¡è§£æž - //chrome使用removeAttributeNode移除ä¸å­˜åœ¨çš„特性节点时会报错 https://github.com/RubyLouvre/avalon/issues/99 - data.element.removeAttribute(data.name) - } - } - bindings.length = 0 -} - -//https://github.com/RubyLouvre/avalon/issues/636 -var mergeTextNodes = IEVersion && window.MutationObserver ? function (elem) { - var node = elem.firstChild, text - while (node) { - var aaa = node.nextSibling - if (node.nodeType === 3) { - if (text) { - text.nodeValue += node.nodeValue - elem.removeChild(node) - } else { - text = node - } - } else { - text = null - } - node = aaa - } -} : 0 -var roneTime = /^\s*::/ -var rmsAttr = /ms-(\w+)-?(.*)/ -var priorityMap = { - "if": 10, - "repeat": 90, - "data": 100, - "widget": 110, - "each": 1400, - "with": 1500, - "duplex": 2000, - "on": 3000 -} - -var events = oneObject("animationend,blur,change,input,click,dblclick,focus,keydown,keypress,keyup,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,scan,scroll,submit") -var obsoleteAttrs = oneObject("value,title,alt,checked,selected,disabled,readonly,enabled") -function bindingSorter(a, b) { - return a.priority - b.priority -} - -function scanAttr(elem, vmodels, match) { - var scanNode = true - if (vmodels.length) { - var attributes = getAttributes ? getAttributes(elem) : elem.attributes - var bindings = [] - var fixAttrs = [] - var msData = {} - for (var i = 0, attr; attr = attributes[i++]; ) { - if (attr.specified) { - if (match = attr.name.match(rmsAttr)) { - //如果是以指定å‰ç¼€å‘½åçš„ - var type = match[1] - var param = match[2] || "" - var value = attr.value - var name = attr.name - if (events[type]) { - param = type - type = "on" - } else if (obsoleteAttrs[type]) { - if (type === "enabled") {//åƒæŽ‰ms-enabled绑定,用ms-disabled代替 - log("warning!ms-enabled或ms-attr-enabledå·²ç»è¢«åºŸå¼ƒ") - type = "disabled" - value = "!(" + value + ")" - } - param = type - type = "attr" - name = "ms-" + type + "-"+ param - fixAttrs.push([attr.name, name, value]) - } - msData[name] = value - if (typeof bindingHandlers[type] === "function") { - var newValue = value.replace(roneTime, "") - var oneTime = value !== newValue - var binding = { - type: type, - param: param, - element: elem, - name: name, - value: newValue, - oneTime: oneTime, - uuid: name+"-"+getUid(elem), - //chrome与firefox下Number(param)得到的值ä¸ä¸€æ · #855 - priority: (priorityMap[type] || type.charCodeAt(0) * 10 )+ (Number(param.replace(/\D/g, "")) || 0) - } - if (type === "html" || type === "text") { - var token = getToken(value) - avalon.mix(binding, token) - binding.filters = binding.filters.replace(rhasHtml, function () { - binding.type = "html" - binding.group = 1 - return "" - })// jshint ignore:line - } else if (type === "duplex") { - var hasDuplex = name - } else if (name === "ms-if-loop") { - binding.priority += 100 - } - bindings.push(binding) - if (type === "widget") { - elem.msData = elem.msData || msData - } - } - } - } - } - if (bindings.length) { - bindings.sort(bindingSorter) - fixAttrs.forEach(function (arr) { - log("warning!请改用" + arr[1] + "代替" + arr[0] + "!") - elem.removeAttribute(arr[0]) - elem.setAttribute(arr[1], arr[2]) - }) - //http://bugs.jquery.com/ticket/7071 - //在IE下对VML读å–type属性,会让此元素所有属性都å˜æˆ - if (hasDuplex) { - if (msData["ms-attr-checked"]) { - log("warning!一个控件ä¸èƒ½åŒæ—¶å®šä¹‰ms-attr-checked与" + hasDuplex) - } - if (msData["ms-attr-value"]) { - log("warning!一个控件ä¸èƒ½åŒæ—¶å®šä¹‰ms-attr-value与" + hasDuplex) - } - } - for (i = 0; binding = bindings[i]; i++) { - type = binding.type - if (rnoscanAttrBinding.test(type)) { - return executeBindings(bindings.slice(0, i + 1), vmodels) - } else if (scanNode) { - scanNode = !rnoscanNodeBinding.test(type) - } - } - executeBindings(bindings, vmodels) - } - } - if (scanNode && !stopScan[elem.tagName] && rbind.test(elem.innerHTML.replace(rlt, "<").replace(rgt, ">"))) { - mergeTextNodes && mergeTextNodes(elem) - scanNodeList(elem, vmodels) //扫æå­å­™å…ƒç´  - } -} -var rnoscanAttrBinding = /^if|widget|repeat$/ -var rnoscanNodeBinding = /^each|with|html|include$/ -//IE67下,在循环绑定中,一个节点如果是通过cloneNode得到,自定义属性的specified为false,无法进入里é¢çš„分支, -//但如果我们去掉scanAttr中的attr.specified检测,一个元素会有80+个特性节点(因为它ä¸åŒºåˆ†å›ºæœ‰å±žæ€§ä¸Žè‡ªå®šä¹‰å±žæ€§ï¼‰ï¼Œå¾ˆå®¹æ˜“å¡æ­»é¡µé¢ -if (!"1" [0]) { - var attrPool = new Cache(512) - var rattrs = /\s+(ms-[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g, - rquote = /^['"]/, - rtag = /<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/i, - ramp = /&/g - //IE6-8解æžHTML5新标签,会将它分解两个元素节点与一个文本节点 - //
ddd
- // window.onload = function() { - // var body = document.body - // for (var i = 0, el; el = body.children[i++]; ) { - // avalon.log(el.outerHTML) - // } - // } - //ä¾æ¬¡è¾“出
,
- var getAttributes = function (elem) { - var html = elem.outerHTML - //处ç†IE6-8解æžHTML5新标签的情况,åŠ
ç­‰åŠé—­åˆæ ‡ç­¾outerHTML为空的情况 - if (html.slice(0, 2) === " ms-important(1) --> ms-controller(2) --> ms-if(10) --> ms-repeat(100) - //--> ms-if-loop(110) --> ms-attr(970) ...--> ms-each(1400)-->ms-with(1500)--〉ms-duplex(2000)åž«åŽ - var a = elem.getAttribute("ms-skip") - //#360 在旧å¼IE中 Object标签在引入Flash等资æºæ—¶,å¯èƒ½å‡ºçŽ°æ²¡æœ‰getAttributeNode,innerHTML的情形 - if (!elem.getAttributeNode) { - return log("warning " + elem.tagName + " no getAttributeNode method") - } - var b = elem.getAttributeNode("ms-important") - var c = elem.getAttributeNode("ms-controller") - if (typeof a === "string") { - return - } else if (node = b || c) { - var newVmodel = avalon.vmodels[node.value] - if (!newVmodel) { - return - } - //ms-importantä¸åŒ…å«çˆ¶VM,ms-controller相å - vmodels = node === b ? [newVmodel] : [newVmodel].concat(vmodels) - var name = node.name - elem.removeAttribute(name) //removeAttributeNodeä¸ä¼šåˆ·æ–°[ms-controller]æ ·å¼è§„则 - avalon(elem).removeClass(name) - createSignalTower(elem, newVmodel) - } - scanAttr(elem, vmodels) //扫æ特性节点 -} -var rhasHtml = /\|\s*html(?:\b|$)/, - r11a = /\|\|/g, - rlt = /</g, - rgt = />/g, - rstringLiteral = /(['"])(\\\1|.)+?\1/g -function getToken(value) { - if (value.indexOf("|") > 0) { - var scapegoat = value.replace(rstringLiteral, function (_) { - return Array(_.length + 1).join("1")// jshint ignore:line - }) - var index = scapegoat.replace(r11a, "\u1122\u3344").indexOf("|") //干掉所有短路或 - if (index > -1) { - return { - filters: value.slice(index), - value: value.slice(0, index), - expr: true - } - } - } - return { - value: value, - filters: "", - expr: true - } -} - -function scanExpr(str) { - var tokens = [], - value, start = 0, - stop - do { - stop = str.indexOf(openTag, start) - if (stop === -1) { - break - } - value = str.slice(start, stop) - if (value) { // {{ 左边的文本 - tokens.push({ - value: value, - filters: "", - expr: false - }) - } - start = stop + openTag.length - stop = str.indexOf(closeTag, start) - if (stop === -1) { - break - } - value = str.slice(start, stop) - if (value) { //处ç†{{ }}æ’å€¼è¡¨è¾¾å¼ - tokens.push(getToken(value, start)) - } - start = stop + closeTag.length - } while (1) - value = str.slice(start) - if (value) { //}} å³è¾¹çš„文本 - tokens.push({ - value: value, - expr: false, - filters: "" - }) - } - return tokens -} - -function scanText(textNode, vmodels, index) { - var bindings = [] - tokens = scanExpr(textNode.data) - if (tokens.length) { - for (var i = 0; token = tokens[i++]; ) { - var node = DOC.createTextNode(token.value) //将文本转æ¢ä¸ºæ–‡æœ¬èŠ‚点,并替æ¢åŽŸæ¥çš„文本节点 - if (token.expr) { - token.value = token.value.replace(roneTime, function () { - token.oneTime = true - return "" - }) - token.type = "text" - token.element = node - token.filters = token.filters.replace(rhasHtml, function (a, b,c) { - token.type = "html" - return "" - })// jshint ignore:line - token.pos = index * 1000 + i - bindings.push(token) //收集带有æ’值表达å¼çš„文本 - } - avalonFragment.appendChild(node) - } - textNode.parentNode.replaceChild(avalonFragment, textNode) - if (bindings.length) - executeBindings(bindings, vmodels) - } -} - -var bools = ["autofocus,autoplay,async,allowTransparency,checked,controls", - "declare,disabled,defer,defaultChecked,defaultSelected", - "contentEditable,isMap,loop,multiple,noHref,noResize,noShade", - "open,readOnly,selected" -].join(",") -var boolMap = {} -bools.replace(rword, function(name) { - boolMap[name.toLowerCase()] = name -}) - -var propMap = { //属性å映射 - "accept-charset": "acceptCharset", - "char": "ch", - "charoff": "chOff", - "class": "className", - "for": "htmlFor", - "http-equiv": "httpEquiv" -} - -var anomaly = ["accessKey,bgColor,cellPadding,cellSpacing,codeBase,codeType,colSpan", - "dateTime,defaultValue,frameBorder,longDesc,maxLength,marginWidth,marginHeight", - "rowSpan,tabIndex,useMap,vSpace,valueType,vAlign" -].join(",") -anomaly.replace(rword, function(name) { - propMap[name.toLowerCase()] = name -}) - -var rnoscripts = /(?:[\s\S]+?)<\/noscript>/img -var rnoscriptText = /([\s\S]+?)<\/noscript>/im - -var getXHR = function() { - return new(window.XMLHttpRequest || ActiveXObject)("Microsoft.XMLHTTP") // jshint ignore:line -} - -var templatePool = avalon.templateCache = {} - -bindingHandlers.attr = function(data, vmodels) { - var text = data.value.trim(), - simple = true - if (text.indexOf(openTag) > -1 && text.indexOf(closeTag) > 2) { - simple = false - if (rexpr.test(text) && RegExp.rightContext === "" && RegExp.leftContext === "") { - simple = true - text = RegExp.$1 - } - } - if (data.type === "include") { - var elem = data.element - data.includeRendered = getBindingCallback(elem, "data-include-rendered", vmodels) - data.includeLoaded = getBindingCallback(elem, "data-include-loaded", vmodels) - var outer = data.includeReplace = !! avalon(elem).data("includeReplace") - if (avalon(elem).data("includeCache")) { - data.templateCache = {} - } - data.startInclude = DOC.createComment("ms-include") - data.endInclude = DOC.createComment("ms-include-end") - if (outer) { - data.element = data.startInclude - elem.parentNode.insertBefore(data.startInclude, elem) - elem.parentNode.insertBefore(data.endInclude, elem.nextSibling) - } else { - elem.insertBefore(data.startInclude, elem.firstChild) - elem.appendChild(data.endInclude) - } - } - data.handlerName = "attr" //handleName用于处ç†å¤šç§ç»‘定共用åŒä¸€ç§bindingExecutor的情况 - parseExprProxy(text, vmodels, data, (simple ? 0 : scanExpr(data.value))) -} - -bindingExecutors.attr = function(val, elem, data) { - var method = data.type, - attrName = data.param - if (method === "css") { - avalon(elem).css(attrName, val) - } else if (method === "attr") { - - // ms-attr-class="xxx" vm.xxx="aaa bbb ccc"将元素的className设置为aaa bbb ccc - // ms-attr-class="xxx" vm.xxx=false 清空元素的所有类å - // ms-attr-name="yyy" vm.yyy="ooo" 为元素设置name属性 - var toRemove = (val === false) || (val === null) || (val === void 0) - - if (!W3C && propMap[attrName]) { //æ—§å¼IE下需è¦è¿›è¡Œå字映射 - attrName = propMap[attrName] - } - var bool = boolMap[attrName] - if (typeof elem[bool] === "boolean") { - elem[bool] = !! val //布尔属性必须使用el.xxx = true|falseæ–¹å¼è®¾å€¼ - if (!val) { //如果为false, IE全系列下相当于setAttribute(xxx,''),会影å“到样å¼,需è¦è¿›ä¸€æ­¥å¤„ç† - toRemove = true - } - } - if (toRemove) { - return elem.removeAttribute(attrName) - } - //SVGåªèƒ½ä½¿ç”¨setAttribute(xxx, yyy), VMLåªèƒ½ä½¿ç”¨elem.xxx = yyy ,HTML的固有属性必须elem.xxx = yyy - var isInnate = rsvg.test(elem) ? false : (DOC.namespaces && isVML(elem)) ? true : attrName in elem.cloneNode(false) - if (isInnate) { - elem[attrName] = val+"" - } else { - elem.setAttribute(attrName, val) - } - } else if (method === "include" && val) { - var vmodels = data.vmodels - var rendered = data.includeRendered - var loaded = data.includeLoaded - var replace = data.includeReplace - var target = replace ? elem.parentNode : elem - var scanTemplate = function(text) { - if (loaded) { - var newText = loaded.apply(target, [text].concat(vmodels)) - if (typeof newText === "string") - text = newText - } - if (rendered) { - checkScan(target, function() { - rendered.call(target) - }, NaN) - } - var lastID = data.includeLastID - if (data.templateCache && lastID && lastID !== val) { - var lastTemplate = data.templateCache[lastID] - if (!lastTemplate) { - lastTemplate = data.templateCache[lastID] = DOC.createElement("div") - ifGroup.appendChild(lastTemplate) - } - } - data.includeLastID = val - while (true) { - var node = data.startInclude.nextSibling - if (node && node !== data.endInclude) { - target.removeChild(node) - if (lastTemplate) - lastTemplate.appendChild(node) - } else { - break - } - } - var dom = getTemplateNodes(data, val, text) - var nodes = avalon.slice(dom.childNodes) - target.insertBefore(dom, data.endInclude) - scanNodeArray(nodes, vmodels) - } - - if (data.param === "src") { - if (typeof templatePool[val] === "string") { - avalon.nextTick(function() { - scanTemplate(templatePool[val]) - }) - } else if (Array.isArray(templatePool[val])) { //#805 防止在循环绑定中å‘出许多相åŒçš„请求 - templatePool[val].push(scanTemplate) - } else { - var xhr = getXHR() - xhr.onreadystatechange = function() { - if (xhr.readyState === 4) { - var s = xhr.status - if (s >= 200 && s < 300 || s === 304 || s === 1223) { - var text = xhr.responseText - for (var f = 0, fn; fn = templatePool[val][f++];) { - fn(text) - } - templatePool[val] = text - } - } - } - templatePool[val] = [scanTemplate] - xhr.open("GET", val, true) - if ("withCredentials" in xhr) { - xhr.withCredentials = true - } - xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest") - xhr.send(null) - } - } else { - //IE系列与够新的标准æµè§ˆå™¨æ”¯æŒé€šè¿‡IDå–得元素(firefox14+) - //http://tjvantoll.com/2012/07/19/dom-element-references-as-global-variables/ - var el = val && val.nodeType === 1 ? val : DOC.getElementById(val) - if (el) { - if (el.tagName === "NOSCRIPT" && !(el.innerHTML || el.fixIE78)) { //IE7-8 innerText,innerHTML都无法å–得其内容,IE6能å–å¾—å…¶innerHTML - xhr = getXHR() //IE9-11与chromeçš„innerHTML会得到转义的内容,它们的innerTextå¯ä»¥ - xhr.open("GET", location, false) //谢谢Nodejs 乱炖群 深圳-纯属虚构 - xhr.send(null) - //http://bbs.csdn.net/topics/390349046?page=1#post-393492653 - var noscripts = DOC.getElementsByTagName("noscript") - var array = (xhr.responseText || "").match(rnoscripts) || [] - var n = array.length - for (var i = 0; i < n; i++) { - var tag = noscripts[i] - if (tag) { //IE6-8中noscript标签的innerHTML,innerText是åªè¯»çš„ - tag.style.display = "none" //http://haslayout.net/css/noscript-Ghost-Bug - tag.fixIE78 = (array[i].match(rnoscriptText) || ["", " "])[1] - } - } - } - avalon.nextTick(function() { - scanTemplate(el.fixIE78 || el.value || el.innerText || el.innerHTML) - }) - } - } - } else { - if (!root.hasAttribute && typeof val === "string" && (method === "src" || method === "href")) { - val = val.replace(/&/g, "&") //处ç†IE67自动转义的问题 - } - elem[method] = val - if (window.chrome && elem.tagName === "EMBED") { - var parent = elem.parentNode //#525 chrome1-37下embed标签动æ€è®¾ç½®srcä¸èƒ½å‘生请求 - var comment = document.createComment("ms-src") - parent.replaceChild(comment, elem) - parent.replaceChild(elem, comment) - } - } -} - -function getTemplateNodes(data, id, text) { - var div = data.templateCache && data.templateCache[id] - if (div) { - var dom = DOC.createDocumentFragment(), - firstChild - while (firstChild = div.firstChild) { - dom.appendChild(firstChild) - } - return dom - } - return avalon.parseHTML(text) -} - -//这几个指令都å¯ä»¥ä½¿ç”¨æ’值表达å¼ï¼Œå¦‚ms-src="aaa/{{b}}/{{c}}.html" -"title,alt,src,value,css,include,href".replace(rword, function(name) { - bindingHandlers[name] = bindingHandlers.attr -}) -//æ ¹æ®VM的属性值或表达å¼çš„值切æ¢ç±»å,ms-class="xxx yyy zzz:flag" -//http://www.cnblogs.com/rubylouvre/archive/2012/12/17/2818540.html -bindingHandlers["class"] = function(data, vmodels) { - var oldStyle = data.param, - text = data.value, - rightExpr - data.handlerName = "class" - if (!oldStyle || isFinite(oldStyle)) { - data.param = "" //去掉数字 - var noExpr = text.replace(rexprg, function(a) { - return a.replace(/./g, "0") - //return Math.pow(10, a.length - 1) //å°†æ’值表达å¼æ’å…¥10çš„N-1次方æ¥å ä½ - }) - var colonIndex = noExpr.indexOf(":") //å–得第一个冒å·çš„ä½ç½® - if (colonIndex === -1) { // 比如 ms-class="aaa bbb ccc" 的情况 - var className = text - } else { // 比如 ms-class-1="ui-state-active:checked" 的情况 - className = text.slice(0, colonIndex) - rightExpr = text.slice(colonIndex + 1) - parseExpr(rightExpr, vmodels, data) //决定是添加还是删除 - if (!data.evaluator) { - log("debug: ms-class '" + (rightExpr || "").trim() + "' ä¸å­˜åœ¨äºŽVM中") - return false - } else { - data._evaluator = data.evaluator - data._args = data.args - } - } - var hasExpr = rexpr.test(className) //比如ms-class="width{{w}}"的情况 - if (!hasExpr) { - data.immobileClass = className - } - parseExprProxy("", vmodels, data, (hasExpr ? scanExpr(className) : 0)) - } else { - data.immobileClass = data.oldStyle = data.param - parseExprProxy(text, vmodels, data) - } -} - -bindingExecutors["class"] = function(val, elem, data) { - var $elem = avalon(elem), - method = data.type - if (method === "class" && data.oldStyle) { //如果是旧风格 - $elem.toggleClass(data.oldStyle, !! val) - } else { - //如果存在冒å·å°±æœ‰æ±‚值函数 - data.toggleClass = data._evaluator ? !! data._evaluator.apply(elem, data._args) : true - data.newClass = data.immobileClass || val - if (data.oldClass && data.newClass !== data.oldClass) { - $elem.removeClass(data.oldClass) - } - data.oldClass = data.newClass - switch (method) { - case "class": - $elem.toggleClass(data.newClass, data.toggleClass) - break - case "hover": - case "active": - if (!data.hasBindEvent) { //ç¡®ä¿åªç»‘定一次 - var activate = "mouseenter" //在移出移入时切æ¢ç±»å - var abandon = "mouseleave" - if (method === "active") { //在èšç„¦å¤±ç„¦ä¸­åˆ‡æ¢ç±»å - elem.tabIndex = elem.tabIndex || -1 - activate = "mousedown" - abandon = "mouseup" - var fn0 = $elem.bind("mouseleave", function() { - data.toggleClass && $elem.removeClass(data.newClass) - }) - } - var fn1 = $elem.bind(activate, function() { - data.toggleClass && $elem.addClass(data.newClass) - }) - var fn2 = $elem.bind(abandon, function() { - data.toggleClass && $elem.removeClass(data.newClass) - }) - data.rollback = function() { - $elem.unbind("mouseleave", fn0) - $elem.unbind(activate, fn1) - $elem.unbind(abandon, fn2) - } - data.hasBindEvent = true - } - break; - } - } -} - -"hover,active".replace(rword, function(method) { - bindingHandlers[method] = bindingHandlers["class"] -}) -//ms-controller绑定已ç»åœ¨scanTag 方法中实现 -//ms-css绑定已由ms-attr绑定实现 - - -// bindingHandlers.data 定义在if.js -bindingExecutors.data = function(val, elem, data) { - var key = "data-" + data.param - if (val && typeof val === "object") { - elem[key] = val - } else { - elem.setAttribute(key, String(val)) - } -} -//åŒå·¥ç»‘定 -var duplexBinding = bindingHandlers.duplex = function(data, vmodels) { - var elem = data.element, - hasCast - parseExprProxy(data.value, vmodels, data, 0, 1) - - data.changed = getBindingCallback(elem, "data-duplex-changed", vmodels) || noop - if (data.evaluator && data.args) { - var params = [] - var casting = oneObject("string,number,boolean,checked") - if (elem.type === "radio" && data.param === "") { - data.param = "checked" - } - if (elem.msData) { - elem.msData["ms-duplex"] = data.value - } - data.param.replace(/\w+/g, function(name) { - if (/^(checkbox|radio)$/.test(elem.type) && /^(radio|checked)$/.test(name)) { - if (name === "radio") - log("ms-duplex-radioå·²ç»æ›´å为ms-duplex-checked") - name = "checked" - data.isChecked = true - } - if (name === "bool") { - name = "boolean" - log("ms-duplex-boolå·²ç»æ›´å为ms-duplex-boolean") - } else if (name === "text") { - name = "string" - log("ms-duplex-textå·²ç»æ›´å为ms-duplex-string") - } - if (casting[name]) { - hasCast = true - } - avalon.Array.ensure(params, name) - }) - if (!hasCast) { - params.push("string") - } - data.param = params.join("-") - data.bound = function(type, callback) { - if (elem.addEventListener) { - elem.addEventListener(type, callback, false) - } else { - elem.attachEvent("on" + type, callback) - } - var old = data.rollback - data.rollback = function() { - elem.avalonSetter = null - avalon.unbind(elem, type, callback) - old && old() - } - } - for (var i in avalon.vmodels) { - var v = avalon.vmodels[i] - v.$fire("avalon-ms-duplex-init", data) - } - var cpipe = data.pipe || (data.pipe = pipe) - cpipe(null, data, "init") - var tagName = elem.tagName - duplexBinding[tagName] && duplexBinding[tagName](elem, data.evaluator.apply(null, data.args), data) - } -} -//ä¸å­˜åœ¨ bindingExecutors.duplex - - function fixNull(val) { - return val == null ? "" : val - } -avalon.duplexHooks = { - checked: { - get: function(val, data) { - return !data.element.oldValue - } - }, - string: { - get: function(val) { //åŒæ­¥åˆ°VM - return val - }, - set: fixNull - }, - "boolean": { - get: function(val) { - return val === "true" - }, - set: fixNull - }, - number: { - get: function(val, data) { - var number = parseFloat(val) - if (-val === -number) { - return number - } - var arr = /strong|medium|weak/.exec(data.element.getAttribute("data-duplex-number")) || ["medium"] - switch (arr[0]) { - case "strong": - return 0 - case "medium": - return val === "" ? "" : 0 - case "weak": - return val - } - }, - set: fixNull - } -} - -function pipe(val, data, action, e) { - data.param.replace(/\w+/g, function(name) { - var hook = avalon.duplexHooks[name] - if (hook && typeof hook[action] === "function") { - val = hook[action](val, data) - } - }) - return val -} - -var TimerID, ribbon = [] - - avalon.tick = function(fn) { - if (ribbon.push(fn) === 1) { - TimerID = setInterval(ticker, 60) - } - } - - function ticker() { - for (var n = ribbon.length - 1; n >= 0; n--) { - var el = ribbon[n] - if (el() === false) { - ribbon.splice(n, 1) - } - } - if (!ribbon.length) { - clearInterval(TimerID) - } - } - -var watchValueInTimer = noop -var rmsinput = /text|password|hidden/ -new function() { // jshint ignore:line - try { //#272 IE9-IE11, firefox - var setters = {} - var aproto = HTMLInputElement.prototype - var bproto = HTMLTextAreaElement.prototype - function newSetter(value) { // jshint ignore:line - setters[this.tagName].call(this, value) - if (rmsinput.test(this.type) && !this.msFocus && this.avalonSetter) { - this.avalonSetter() - } - } - var inputProto = HTMLInputElement.prototype - Object.getOwnPropertyNames(inputProto) //æ•…æ„引å‘IE6-8ç­‰æµè§ˆå™¨æŠ¥é”™ - setters["INPUT"] = Object.getOwnPropertyDescriptor(aproto, "value").set - - Object.defineProperty(aproto, "value", { - set: newSetter - }) - setters["TEXTAREA"] = Object.getOwnPropertyDescriptor(bproto, "value").set - Object.defineProperty(bproto, "value", { - set: newSetter - }) - } catch (e) { - //在chrome 43中 ms-duplex终于ä¸éœ€è¦ä½¿ç”¨å®šæ—¶å™¨å®žçŽ°åŒå‘绑定了 - // http://updates.html5rocks.com/2015/04/DOM-attributes-now-on-the-prototype - // https://docs.google.com/document/d/1jwA8mtClwxI-QJuHT7872Z0pxpZz8PBkf2bGAbsUtqs/edit?pli=1 - watchValueInTimer = avalon.tick - } -} // jshint ignore:line -if (IEVersion) { - avalon.bind(DOC, "selectionchange", function(e) { - var el = DOC.activeElement - if (el && typeof el.avalonSetter === "function") { - el.avalonSetter() - } - }) -} - -//处ç†radio, checkbox, text, textarea, password -duplexBinding.INPUT = function(element, evaluator, data) { - var $type = element.type, - bound = data.bound, - $elem = avalon(element), - composing = false - - function callback(value) { - data.changed.call(this, value, data) - } - - function compositionStart() { - composing = true - } - - function compositionEnd() { - composing = false - } - //当valueå˜åŒ–时改å˜model的值 - var updateVModel = function() { - if (composing) //处ç†ä¸­æ–‡è¾“入法在minlengh下引å‘çš„BUG - return - var val = element.oldValue = element.value //防止递归调用形æˆæ­»å¾ªçŽ¯ - var lastValue = data.pipe(val, data, "get") - if ($elem.data("duplexObserve") !== false) { - evaluator(lastValue) - callback.call(element, lastValue) - if ($elem.data("duplex-focus")) { - avalon.nextTick(function() { - element.focus() - }) - } - } - } - //当modelå˜åŒ–æ—¶,它就会改å˜value的值 - data.handler = function() { - var val = data.pipe(evaluator(), data, "set") + "" //fix #673 - if (val !== element.oldValue) { - element.value = val - } - } - if (data.isChecked || $type === "radio") { - var IE6 = IEVersion === 6 - updateVModel = function() { - if ($elem.data("duplexObserve") !== false) { - var lastValue = data.pipe(element.value, data, "get") - evaluator(lastValue) - callback.call(element, lastValue) - } - } - data.handler = function() { - var val = evaluator() - var checked = data.isChecked ? !! val : val + "" === element.value - element.oldValue = checked - if (IE6) { - setTimeout(function() { - //IE8 checkbox, radio是使用defaultChecked控制选中状æ€ï¼Œ - //并且è¦å…ˆè®¾ç½®defaultCheckedåŽè®¾ç½®checked - //并且必须设置延迟 - element.defaultChecked = checked - element.checked = checked - }, 31) - } else { - element.checked = checked - } - } - bound("click", updateVModel) - } else if ($type === "checkbox") { - updateVModel = function() { - if ($elem.data("duplexObserve") !== false) { - var method = element.checked ? "ensure" : "remove" - var array = evaluator() - if (!Array.isArray(array)) { - log("ms-duplex应用于checkbox上è¦å¯¹åº”一个数组") - array = [array] - } - var val = data.pipe(element.value, data, "get") - avalon.Array[method](array, val) - callback.call(element, array) - } - } - - data.handler = function() { - var array = [].concat(evaluator()) //强制转æ¢ä¸ºæ•°ç»„ - var val = data.pipe(element.value, data, "get") - element.checked = array.indexOf(val) > -1 - } - bound(W3C ? "change" : "click", updateVModel) - } else { - var events = element.getAttribute("data-duplex-event") || "input" - if (element.attributes["data-event"]) { - log("data-event指令已ç»åºŸå¼ƒï¼Œè¯·æ”¹ç”¨data-duplex-event") - } - - function delay(e) { // jshint ignore:line - setTimeout(function() { - updateVModel(e) - }) - } - events.replace(rword, function(name) { - switch (name) { - case "input": - if (!IEVersion) { // W3C - bound("input", updateVModel) - //éžIEæµè§ˆå™¨æ‰ç”¨è¿™ä¸ª - bound("compositionstart", compositionStart) - bound("compositionend", compositionEnd) - bound("DOMAutoComplete", updateVModel) - } else { //onpropertychange事件无法区分是程åºè§¦å‘è¿˜æ˜¯ç”¨æˆ·è§¦å‘ - // IE下通过selectionchange事件监å¬IE9+点击inputå³è¾¹çš„X的清空行为,åŠç²˜è´´ï¼Œå‰ªåˆ‡ï¼Œåˆ é™¤è¡Œä¸º - if (IEVersion > 8) { - bound("input", updateVModel) //IE9使用propertychange无法监å¬ä¸­æ–‡è¾“入改动 - } else { - bound("propertychange", function(e) { //IE6-8下第一次修改时ä¸ä¼šè§¦å‘,需è¦ä½¿ç”¨keydown或selectionchange修正 - if (e.propertyName === "value") { - updateVModel() - } - }) - } - bound("dragend", delay) - //http://www.cnblogs.com/rubylouvre/archive/2013/02/17/2914604.html - //http://www.matts411.com/post/internet-explorer-9-oninput/ - } - break - default: - bound(name, updateVModel) - break - } - }) - bound("focus", function() { - element.msFocus = true - }) - bound("blur", function() { - element.msFocus = false - }) - - if (rmsinput.test($type)) { - watchValueInTimer(function() { - if (root.contains(element)) { - if (!element.msFocus && element.oldValue !== element.value) { - updateVModel() - } - } else if (!element.msRetain) { - return false - } - }) - } - - element.avalonSetter = updateVModel //#765 - } - - element.oldValue = element.value - avalon.injectBinding(data) - callback.call(element, element.value) -} -duplexBinding.TEXTAREA = duplexBinding.INPUT -duplexBinding.SELECT = function(element, evaluator, data) { - var $elem = avalon(element) - - function updateVModel() { - if ($elem.data("duplexObserve") !== false) { - var val = $elem.val() //字符串或字符串数组 - if (Array.isArray(val)) { - val = val.map(function(v) { - return data.pipe(v, data, "get") - }) - } else { - val = data.pipe(val, data, "get") - } - if (val + "" !== element.oldValue) { - evaluator(val) - } - data.changed.call(element, val, data) - } - } - data.handler = function() { - var val = evaluator() - val = val && val.$model || val - if (Array.isArray(val)) { - if (!element.multiple) { - log("ms-duplex在ä¸èƒ½å¯¹åº”一个数组") - } - } - //å¿…é¡»å˜æˆå­—符串åŽæ‰èƒ½æ¯”较 - val = Array.isArray(val) ? val.map(String) : val + "" - if (val + "" !== element.oldValue) { - $elem.val(val) - element.oldValue = val + "" - } - } - data.bound("change", updateVModel) - element.msCallback = function() { - avalon.injectBinding(data) - data.changed.call(element, evaluator(), data) - } -} -// bindingHandlers.html 定义在if.js -bindingExecutors.html = function (val, elem, data) { - var isHtmlFilter = elem.nodeType !== 1 - var parent = isHtmlFilter ? elem.parentNode : elem - if (!parent) - return - val = val == null ? "" : val - if (data.oldText !== val) { - data.oldText = val - } else { - return - } - if (elem.nodeType === 3) { - var signature = generateID("html") - parent.insertBefore(DOC.createComment(signature), elem) - data.element = DOC.createComment(signature + ":end") - parent.replaceChild(data.element, elem) - elem = data.element - } - if (typeof val !== "object") {//string, number, boolean - var fragment = avalon.parseHTML(String(val)) - } else if (val.nodeType === 11) { //å°†val转æ¢ä¸ºæ–‡æ¡£ç¢Žç‰‡ - fragment = val - } else if (val.nodeType === 1 || val.item) { - var nodes = val.nodeType === 1 ? val.childNodes : val.item - fragment = avalonFragment.cloneNode(true) - while (nodes[0]) { - fragment.appendChild(nodes[0]) - } - } - - nodes = avalon.slice(fragment.childNodes) - //æ’å…¥å ä½ç¬¦, 如果是过滤器,需è¦æœ‰èŠ‚制地移除指定的数é‡,如果是html指令,直接清空 - if (isHtmlFilter) { - var endValue = elem.nodeValue.slice(0, -4) - while (true) { - var node = elem.previousSibling - if (!node || node.nodeType === 8 && node.nodeValue === endValue) { - break - } else { - parent.removeChild(node) - } - } - parent.insertBefore(fragment, elem) - } else { - avalon.clearHTML(elem).appendChild(fragment) - } - scanNodeArray(nodes, data.vmodels) -} -bindingHandlers["if"] = - bindingHandlers.data = - bindingHandlers.text = - bindingHandlers.html = - function(data, vmodels) { - parseExprProxy(data.value, vmodels, data) -} - -bindingExecutors["if"] = function(val, elem, data) { - try { - if(!elem.parentNode) return - } catch(e) {return} - if (val) { //æ’回DOMæ ‘ - if (elem.nodeType === 8) { - elem.parentNode.replaceChild(data.template, elem) - // animate.enter(data.template, elem.parentNode) - elem = data.element = data.template //这时å¯èƒ½ä¸ºnull - } - if (elem.getAttribute(data.name)) { - elem.removeAttribute(data.name) - scanAttr(elem, data.vmodels) - } - data.rollback = null - } else { //移出DOM树,并用注释节点å æ®åŽŸä½ç½® - if (elem.nodeType === 1) { - var node = data.element = DOC.createComment("ms-if") - elem.parentNode.replaceChild(node, elem) - // animate.leave(elem, node.parentNode, node) - data.template = elem //元素节点 - ifGroup.appendChild(elem) - data.rollback = function() { - if (elem.parentNode === ifGroup) { - ifGroup.removeChild(elem) - } - } - } - } -} -//ms-important绑定已ç»åœ¨scanTag 方法中实现 -//ms-include绑定已由ms-attr绑定实现 - -var rdash = /\(([^)]*)\)/ -bindingHandlers.on = function(data, vmodels) { - var value = data.value - data.type = "on" - var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10 - if (typeof bindingHandlers.on[eventType + "Hook"] === "function") { - bindingHandlers.on[eventType + "Hook"](data) - } - if (value.indexOf("(") > 0 && value.indexOf(")") > -1) { - var matched = (value.match(rdash) || ["", ""])[1].trim() - if (matched === "" || matched === "$event") { // aaa() aaa($event)当æˆaaaå¤„ç† - value = value.replace(rdash, "") - } - } - parseExprProxy(value, vmodels, data) -} - -bindingExecutors.on = function(callback, elem, data) { - callback = function(e) { - var fn = data.evaluator || noop - return fn.apply(this, data.args.concat(e)) - } - var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10 - if (eventType === "scan") { - callback.call(elem, { - type: eventType - }) - } else if (typeof data.specialBind === "function") { - data.specialBind(elem, callback) - } else { - var removeFn = avalon.bind(elem, eventType, callback) - } - data.rollback = function() { - if (typeof data.specialUnbind === "function") { - data.specialUnbind() - } else { - avalon.unbind(elem, eventType, removeFn) - } - } -} -bindingHandlers.repeat = function (data, vmodels) { - var type = data.type - parseExprProxy(data.value, vmodels, data, 0, 1) - data.proxies = [] - var freturn = false - try { - var $repeat = data.$repeat = data.evaluator.apply(0, data.args || []) - var xtype = avalon.type($repeat) - if (xtype !== "object" && xtype !== "array") { - freturn = true - avalon.log("warning:" + data.value + "åªèƒ½æ˜¯å¯¹è±¡æˆ–数组") - } - } catch (e) { - freturn = true - } - var arr = data.value.split(".") || [] - if (arr.length > 1) { - arr.pop() - var n = arr[0] - for (var i = 0, v; v = vmodels[i++]; ) { - if (v && v.hasOwnProperty(n)) { - var events = v[n].$events || {} - events[subscribers] = events[subscribers] || [] - events[subscribers].push(data) - break - } - } - } - - var elem = data.element - if (elem.nodeType === 1) { - elem.removeAttribute(data.name) - data.sortedCallback = getBindingCallback(elem, "data-with-sorted", vmodels) - data.renderedCallback = getBindingCallback(elem, "data-" + type + "-rendered", vmodels) - var signature = generateID(type) - var start = DOC.createComment(signature) - var end = DOC.createComment(signature + ":end") - data.signature = signature - data.template = avalonFragment.cloneNode(false) - if (type === "repeat") { - var parent = elem.parentNode - parent.replaceChild(end, elem) - parent.insertBefore(start, end) - data.template.appendChild(elem) - } else { - while (elem.firstChild) { - data.template.appendChild(elem.firstChild) - } - elem.appendChild(start) - elem.appendChild(end) - } - data.element = end - data.handler = bindingExecutors.repeat - data.rollback = function () { - var elem = data.element - if (!elem) - return - data.handler("clear") - } - } - - if (freturn) { - return - } - - data.$outer = {} - var check0 = "$key" - var check1 = "$val" - if (Array.isArray($repeat)) { - check0 = "$first" - check1 = "$last" - } - - for (i = 0; v = vmodels[i++]; ) { - if (v.hasOwnProperty(check0) && v.hasOwnProperty(check1)) { - data.$outer = v - break - } - } - var $events = $repeat.$events - var $list = ($events || {})[subscribers] - injectDependency($list, data) - if (xtype === "object") { - data.$with = true - $repeat.$proxy || ($repeat.$proxy = {}) - data.handler("append", $repeat) - } else if ($repeat.length) { - data.handler("add", 0, $repeat.length) - } -} - -bindingExecutors.repeat = function (method, pos, el) { - if (!method && this.$with) { - method = "append" - var flag = "update" - } - if (method) { - var data = this, start, fragment - var end = data.element - var comments = getComments(data) - var parent = end.parentNode - var proxies = data.proxies - var transation = avalonFragment.cloneNode(false) - switch (method) { - case "add": //在posä½ç½®åŽæ·»åŠ el数组(pos为æ’å…¥ä½ç½®,el为è¦æ’入的个数) - var n = pos + el - var fragments = [] - for (var i = pos; i < n; i++) { - var proxy = eachProxyAgent(i, data) - proxies.splice(i, 0, proxy) - shimController(data, transation, proxy, fragments) - } - var now = new Date() - 0 - avalon.optimize = avalon.optimize || now - for (i = 0; fragment = fragments[i++]; ) { - scanNodeArray(fragment.nodes, fragment.vmodels) - fragment.nodes = fragment.vmodels = null - } - if (avalon.optimize === now) { - avalon.optimize = null - } - parent.insertBefore(transation, comments[pos] || end) - avalon.profile("æ’å…¥æ“作花费了 " + (new Date - now)) - break - case "del": //å°†posåŽçš„el个元素删掉(pos, el都是数字) - sweepNodes(comments[pos], comments[pos + el] || end) - var removed = proxies.splice(pos, el) - recycleProxies(removed, "each") - break - case "clear": - start = comments[0] - if (start) { - sweepNodes(start, end) - if (data.$with) { - parent.insertBefore(start, end) - } - } - recycleProxies(proxies, "each") - break - case "move": - start = comments[0] - if (start) { - var signature = start.nodeValue - var rooms = [] - var room = [], - node - sweepNodes(start, end, function () { - room.unshift(this) - if (this.nodeValue === signature) { - rooms.unshift(room) - room = [] - } - }) - sortByIndex(rooms, pos) - sortByIndex(proxies, pos) - while (room = rooms.shift()) { - while (node = room.shift()) { - transation.appendChild(node) - } - } - parent.insertBefore(transation, end) - } - break - case "index": //å°†proxies中的第pos个起的所有元素é‡æ–°ç´¢å¼• - var last = proxies.length - 1 - for (; el = proxies[pos]; pos++) { - el.$index = pos - el.$first = pos === 0 - el.$last = pos === last - } - return - case "set": //å°†proxies中的第pos个元素的VM设置为el(pos为数字,elä»»æ„) - proxy = proxies[pos] - if (proxy) { - fireDependencies(proxy.$events[data.param || "el"]) - } - break - case "append": - var object = data.$repeat //原æ¥ç¬¬2å‚数, 被循环对象 - var oldProxy = object.$proxy //代ç†å¯¹è±¡ç»„æˆçš„hash - var keys = [] - now = new Date() - 0 - avalon.optimize = avalon.optimize || now - if (flag === "update") { - if (!data.evaluator) { - parseExprProxy(data.value, data.vmodels, data, 0, 1) - } - object = data.$repeat = data.evaluator.apply(0, data.args || []) - object.$proxy = oldProxy - } - var pool = object.$proxy || {} - removed = [] - var nodes = data.element.parentNode.childNodes - var add = false - for (i = 0; node = nodes[i++]; ) { - if (node.nodeValue === data.signature) { - add = true - } else if (node.nodeValue === data.signature + ":end") { - add = false - } - if (add) { - removed.push(node) - } - } - - var indexNode = [], item - var keyIndex = data.keyIndex || (data.keyIndex = {}) - //将现有的节点全部移出DOMæ ‘ - for ( i = 0; i < removed.length; i++) { - el = removed[i] - if (el.nodeValue === data.signature) { - item = avalonFragment.cloneNode(false) - indexNode.push(item) - } - item.appendChild(el) - } - - - for (var key in object) { //当å‰å¯¹è±¡çš„所有键å - if (object.hasOwnProperty(key) && key !== "hasOwnProperty" && key !== "$proxy") { - keys.push(key) - } - } - - for (var i = 0; key = keys[i++]; ) { - if (!pool.hasOwnProperty(key)) {//添加缺失的代ç†VM - pool[key] = withProxyAgent(pool[key], key, data) - } else { - pool[key].$val = object[key] - } - } - - for ( key in pool) { - if (keys.indexOf(key) === -1) {//删除没用的代ç†VM - proxyRecycler(pool[key], withProxyPool) //去掉之å‰çš„代ç†VM - delete pool[key] - } - } - var fragments = [] - var renderKeys = keys //需è¦æ¸²æŸ“到DOM树去的键å - var end = data.element - if (data.sortedCallback) { //å¦‚æžœæœ‰å›žè°ƒï¼Œåˆ™è®©å®ƒä»¬æŽ’åº - var keys2 = data.sortedCallback.call(parent, keys) - if (keys2 && Array.isArray(keys2)) { - renderKeys = keys2 - } - } - - for (i = 0; i < renderKeys.length; i++) { - key = renderKeys[i] - if (typeof keyIndex[key] === "number") { - transation.appendChild(indexNode[keyIndex[key]]) - fragments.push({}) - } else { - shimController(data, transation, pool[key], fragments) - } - } - - for (i = 0; i < renderKeys.length; i++) { - keyIndex[renderKeys[i]] = i - } - - for (i = 0; fragment = fragments[i++]; ) { - if (fragment.nodes) { - scanNodeArray(fragment.nodes, fragment.vmodels) - fragment.nodes = fragment.vmodels = null - } - } - if (avalon.optimize === now) { - avalon.optimize = null - } - parent.insertBefore(transation, end) - avalon.profile("æ’å…¥æ“作花费了 " + (new Date - now)) - break - } - if (!data.$repeat || data.$repeat.hasOwnProperty("$lock")) //IE6-8 VBScript对象会报错, 有时候data.$repeatä¸å­˜åœ¨ - return - if (method === "clear") - method = "del" - var callback = data.renderedCallback || noop, - args = arguments - if (parent.oldValue && parent.tagName === "SELECT") { //fix #503 - avalon(parent).val(parent.oldValue.split(",")) - } - callback.apply(parent, args) - } -} -"with,each".replace(rword, function (name) { - bindingHandlers[name] = bindingHandlers.repeat -}) - -function shimController(data, transation, proxy, fragments) { - var content = data.template.cloneNode(true) - var nodes = avalon.slice(content.childNodes) - content.insertBefore(DOC.createComment(data.signature), content.firstChild) - transation.appendChild(content) - var nv = [proxy].concat(data.vmodels) - var fragment = { - nodes: nodes, - vmodels: nv - } - fragments.push(fragment) -} - -function getComments(data) { - var ret = [] - var nodes = data.element.parentNode.childNodes - for(var i= 0, node; node = nodes[i++];){ - if(node.nodeValue === data.signature){ - ret.push( node ) - }else if(node.nodeValue === data.signature+":end"){ - break - } - } - return ret -} - - -//移除掉start与end之间的节点(ä¿ç•™end) -function sweepNodes(start, end, callback) { - while (true) { - var node = end.previousSibling - if (!node) - break - node.parentNode.removeChild(node) - callback && callback.call(node) - if (node === start) { - break - } - } -} - -// 为ms-each,ms-with, ms-repeat会创建一个代ç†VM, -// 通过它们ä¿æŒä¸€ä¸ªä¸‹ä¸Šæ–‡ï¼Œè®©ç”¨æˆ·èƒ½è°ƒç”¨$index,$first,$last,$remove,$key,$val,$outer等属性与方法 -// 所有代ç†VM的产生,消费,收集,存放通过xxxProxyFactory,xxxProxyAgent, recycleProxies,xxxProxyPool实现 -var withProxyPool = [] -function withProxyFactory() { - var proxy = modelFactory({ - $key: "", - $outer: {}, - $host: {}, - $val: { - get: function () { - return this.$host[this.$key] - }, - set: function (val) { - this.$host[this.$key] = val - } - } - }, { - $val: 1 - }) - proxy.$id = generateID("$proxy$with") - return proxy -} - -function withProxyAgent(proxy, key, data) { - proxy = proxy || withProxyPool.pop() - if (!proxy) { - proxy = withProxyFactory() - } else { - proxy.$reinitialize() - } - var host = data.$repeat - proxy.$key = key - proxy.$host = host - proxy.$outer = data.$outer - if (host.$events) { - proxy.$events.$val = host.$events[key] - } else { - proxy.$events = {} - } - return proxy -} - - -function recycleProxies(proxies) { - eachProxyRecycler(proxies) -} -function eachProxyRecycler(proxies) { - proxies.forEach(function (proxy) { - proxyRecycler(proxy, eachProxyPool) - }) - proxies.length = 0 -} - - -var eachProxyPool = [] -function eachProxyFactory(name) { - var source = { - $host: [], - $outer: {}, - $index: 0, - $first: false, - $last: false, - $remove: avalon.noop - } - source[name] = { - get: function () { - var e = this.$events - var array = e.$index - e.$index = e[name] //#817 通过$index为el收集ä¾èµ– - try { - return this.$host[this.$index] - } finally { - e.$index = array - } - }, - set: function (val) { - try { - var e = this.$events - var array = e.$index - e.$index = [] - this.$host.set(this.$index, val) - } finally { - e.$index = array - } - } - } - var second = { - $last: 1, - $first: 1, - $index: 1 - } - var proxy = modelFactory(source, second) - proxy.$id = generateID("$proxy$each") - return proxy -} - -function eachProxyAgent(index, data) { - var param = data.param || "el", - proxy - for (var i = 0, n = eachProxyPool.length; i < n; i++) { - var candidate = eachProxyPool[i] - if (candidate && candidate.hasOwnProperty(param)) { - proxy = candidate - eachProxyPool.splice(i, 1) - } - } - if (!proxy) { - proxy = eachProxyFactory(param) - } - var host = data.$repeat - var last = host.length - 1 - proxy.$index = index - proxy.$first = index === 0 - proxy.$last = index === last - proxy.$host = host - proxy.$outer = data.$outer - proxy.$remove = function () { - return host.removeAt(proxy.$index) - } - return proxy -} - - -function proxyRecycler(proxy, proxyPool) { - for (var i in proxy.$events) { - if (Array.isArray(proxy.$events[i])) { - proxy.$events[i].forEach(function (data) { - if (typeof data === "object") - disposeData(data) - })// jshint ignore:line - proxy.$events[i].length = 0 - } - } - proxy.$host = proxy.$outer = {} - if (proxyPool.unshift(proxy) > kernel.maxRepeatSize) { - proxyPool.pop() - } -} -/********************************************************************* - * å„ç§æŒ‡ä»¤ * - **********************************************************************/ -//ms-skip绑定已ç»åœ¨scanTag 方法中实现 -// bindingHandlers.text 定义在if.js -bindingExecutors.text = function(val, elem) { - val = val == null ? "" : val //ä¸åœ¨é¡µé¢ä¸Šæ˜¾ç¤ºundefined null - if (elem.nodeType === 3) { //绑定在文本节点上 - try { //IE对游离于DOM树外的节点赋值会报错 - elem.data = val - } catch (e) {} - } else { //绑定在特性节点上 - if ("textContent" in elem) { - elem.textContent = val - } else { - elem.innerText = val - } - } -} -function parseDisplay(nodeName, val) { - //用于å–得此类标签的默认display值 - var key = "_" + nodeName - if (!parseDisplay[key]) { - var node = DOC.createElement(nodeName) - root.appendChild(node) - if (W3C) { - val = getComputedStyle(node, null).display - } else { - val = node.currentStyle.display - } - root.removeChild(node) - parseDisplay[key] = val - } - return parseDisplay[key] -} - -avalon.parseDisplay = parseDisplay - -bindingHandlers.visible = function(data, vmodels) { - var elem = data.element - var display = elem.style.display - if(display === "none"){ - display = parseDisplay(elem.nodeName) - } - data.display = display - parseExprProxy(data.value, vmodels, data) -} - -bindingExecutors.visible = function(val, elem, data) { - elem.style.display = val ? data.display : "none" -} -bindingHandlers.widget = function(data, vmodels) { - var args = data.value.match(rword) - var elem = data.element - var widget = args[0] - var id = args[1] - if (!id || id === "$") { //没有定义或为$时,å–组件å+éšæœºæ•° - id = generateID(widget) - } - var optName = args[2] || widget //没有定义,å–组件å - var constructor = avalon.ui[widget] - if (typeof constructor === "function") { //ms-widget="tabs,tabsAAA,optname" - vmodels = elem.vmodels || vmodels - for (var i = 0, v; v = vmodels[i++];) { - if (v.hasOwnProperty(optName) && typeof v[optName] === "object") { - var vmOptions = v[optName] - vmOptions = vmOptions.$model || vmOptions - break - } - } - if (vmOptions) { - var wid = vmOptions[widget + "Id"] - if (typeof wid === "string") { - log("warning!ä¸å†æ”¯æŒ" + widget + "Id") - id = wid - } - } - //抽å–data-tooltip-textã€data-tooltip-attr属性,组æˆä¸€ä¸ªé…置对象 - var widgetData = avalon.getWidgetData(elem, widget) - data.value = [widget, id, optName].join(",") - data[widget + "Id"] = id - data.evaluator = noop - elem.msData["ms-widget-id"] = id - var options = data[widget + "Options"] = avalon.mix({}, constructor.defaults, vmOptions || {}, widgetData) - elem.removeAttribute("ms-widget") - var vmodel = constructor(elem, data, vmodels) || {} //防止组件ä¸è¿”回VM - if (vmodel.$id) { - avalon.vmodels[id] = vmodel - createSignalTower(elem, vmodel) - try { - vmodel.$init(function() { - avalon.scan(elem, [vmodel].concat(vmodels)) - if (typeof options.onInit === "function") { - options.onInit.call(elem, vmodel, options, vmodels) - } - }) - } catch (e) {} - data.rollback = function() { - try { - vmodel.widgetElement = null - vmodel.$remove() - } catch (e) {} - elem.msData = {} - delete avalon.vmodels[vmodel.$id] - } - injectDisposeQueue(data, widgetList) - if (window.chrome) { - elem.addEventListener("DOMNodeRemovedFromDocument", function() { - setTimeout(rejectDisposeQueue) - }) - } - } else { - avalon.scan(elem, vmodels) - } - } else if (vmodels.length) { //如果该组件还没有加载,那么ä¿å­˜å½“å‰çš„vmodels - elem.vmodels = vmodels - } -} -var widgetList = [] -//ä¸å­˜åœ¨ bindingExecutors.widget -/********************************************************************* - * 自带过滤器 * - **********************************************************************/ -var rscripts = /]*>([\S\s]*?)<\/script\s*>/gim -var ron = /\s+(on[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g -var ropen = /<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/ig -var rsanitize = { - a: /\b(href)\=("javascript[^"]*"|'javascript[^']*')/ig, - img: /\b(src)\=("javascript[^"]*"|'javascript[^']*')/ig, - form: /\b(action)\=("javascript[^"]*"|'javascript[^']*')/ig -} -var rsurrogate = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g -var rnoalphanumeric = /([^\#-~| |!])/g; - -function numberFormat(number, decimals, point, thousands) { - //form http://phpjs.org/functions/number_format/ - //number 必需,è¦æ ¼å¼åŒ–çš„æ•°å­— - //decimals å¯é€‰ï¼Œè§„定多少个å°æ•°ä½ã€‚ - //point å¯é€‰ï¼Œè§„定用作å°æ•°ç‚¹çš„字符串(默认为 . )。 - //thousands å¯é€‰ï¼Œè§„定用作åƒä½åˆ†éš”符的字符串(默认为 , ),如果设置了该å‚数,那么所有其他å‚数都是必需的。 - number = (number + '') - .replace(/[^0-9+\-Ee.]/g, '') - var n = !isFinite(+number) ? 0 : +number, - prec = !isFinite(+decimals) ? 3 : Math.abs(decimals), - sep = thousands || ",", - dec = point || ".", - s = '', - toFixedFix = function(n, prec) { - var k = Math.pow(10, prec) - return '' + (Math.round(n * k) / k) - .toFixed(prec) - } - // Fix for IE parseFloat(0.55).toFixed(0) = 0; - s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)) - .split('.') - if (s[0].length > 3) { - s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep) - } - if ((s[1] || '') - .length < prec) { - s[1] = s[1] || '' - s[1] += new Array(prec - s[1].length + 1) - .join('0') - } - return s.join(dec) -} - - -var filters = avalon.filters = { - uppercase: function(str) { - return str.toUpperCase() - }, - lowercase: function(str) { - return str.toLowerCase() - }, - truncate: function(str, length, truncation) { - //length,新字符串长度,truncation,新字符串的结尾的字段,返回新字符串 - length = length || 30 - truncation = typeof truncation === "string" ? truncation : "..." - return str.length > length ? str.slice(0, length - truncation.length) + truncation : String(str) - }, - $filter: function(val) { - for (var i = 1, n = arguments.length; i < n; i++) { - var array = arguments[i] - var fn = avalon.filters[array.shift()] - if (typeof fn === "function") { - var arr = [val].concat(array) - val = fn.apply(null, arr) - } - } - return val - }, - camelize: camelize, - //https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet - // chrome - // chrome - // IE67chrome - // IE67chrome - // IE67chrome - sanitize: function(str) { - return str.replace(rscripts, "").replace(ropen, function(a, b) { - var match = a.toLowerCase().match(/<(\w+)\s/) - if (match) { //处ç†a标签的href属性,img标签的src属性,form标签的action属性 - var reg = rsanitize[match[1]] - if (reg) { - a = a.replace(reg, function(s, name, value) { - var quote = value.charAt(0) - return name + "=" + quote + "javascript:void(0)" + quote// jshint ignore:line - }) - } - } - return a.replace(ron, " ").replace(/\s+/g, " ") //移除onXXX事件 - }) - }, - escape: function(str) { - //将字符串ç»è¿‡ str 转义得到适åˆåœ¨é¡µé¢ä¸­æ˜¾ç¤ºçš„内容, ä¾‹å¦‚æ›¿æ¢ < 为 < - return String(str). - replace(/&/g, '&'). - replace(rsurrogate, function(value) { - var hi = value.charCodeAt(0) - var low = value.charCodeAt(1) - return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';' - }). - replace(rnoalphanumeric, function(value) { - return '&#' + value.charCodeAt(0) + ';' - }). - replace(//g, '>') - }, - currency: function(amount, symbol, fractionSize) { - return (symbol || "\uFFE5") + numberFormat(amount, isFinite(fractionSize) ? fractionSize : 2) - }, - number: numberFormat -} -/* - 'yyyy': 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010) - 'yy': 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10) - 'y': 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199) - 'MMMM': Month in year (January-December) - 'MMM': Month in year (Jan-Dec) - 'MM': Month in year, padded (01-12) - 'M': Month in year (1-12) - 'dd': Day in month, padded (01-31) - 'd': Day in month (1-31) - 'EEEE': Day in Week,(Sunday-Saturday) - 'EEE': Day in Week, (Sun-Sat) - 'HH': Hour in day, padded (00-23) - 'H': Hour in day (0-23) - 'hh': Hour in am/pm, padded (01-12) - 'h': Hour in am/pm, (1-12) - 'mm': Minute in hour, padded (00-59) - 'm': Minute in hour (0-59) - 'ss': Second in minute, padded (00-59) - 's': Second in minute (0-59) - 'a': am/pm marker - 'Z': 4 digit (+sign) representation of the timezone offset (-1200-+1200) - format string can also be one of the following predefined localizable formats: - - 'medium': equivalent to 'MMM d, y h:mm:ss a' for en_US locale (e.g. Sep 3, 2010 12:05:08 pm) - 'short': equivalent to 'M/d/yy h:mm a' for en_US locale (e.g. 9/3/10 12:05 pm) - 'fullDate': equivalent to 'EEEE, MMMM d,y' for en_US locale (e.g. Friday, September 3, 2010) - 'longDate': equivalent to 'MMMM d, y' for en_US locale (e.g. September 3, 2010 - 'mediumDate': equivalent to 'MMM d, y' for en_US locale (e.g. Sep 3, 2010) - 'shortDate': equivalent to 'M/d/yy' for en_US locale (e.g. 9/3/10) - 'mediumTime': equivalent to 'h:mm:ss a' for en_US locale (e.g. 12:05:08 pm) - 'shortTime': equivalent to 'h:mm a' for en_US locale (e.g. 12:05 pm) - */ -new function() {// jshint ignore:line - function toInt(str) { - return parseInt(str, 10) || 0 - } - - function padNumber(num, digits, trim) { - var neg = "" - if (num < 0) { - neg = '-' - num = -num - } - num = "" + num - while (num.length < digits) - num = "0" + num - if (trim) - num = num.substr(num.length - digits) - return neg + num - } - - function dateGetter(name, size, offset, trim) { - return function(date) { - var value = date["get" + name]() - if (offset > 0 || value > -offset) - value += offset - if (value === 0 && offset === -12) { - value = 12 - } - return padNumber(value, size, trim) - } - } - - function dateStrGetter(name, shortForm) { - return function(date, formats) { - var value = date["get" + name]() - var get = (shortForm ? ("SHORT" + name) : name).toUpperCase() - return formats[get][value] - } - } - - function timeZoneGetter(date) { - var zone = -1 * date.getTimezoneOffset() - var paddedZone = (zone >= 0) ? "+" : "" - paddedZone += padNumber(Math[zone > 0 ? "floor" : "ceil"](zone / 60), 2) + padNumber(Math.abs(zone % 60), 2) - return paddedZone - } - //å–得上åˆä¸‹åˆ - - function ampmGetter(date, formats) { - return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1] - } - var DATE_FORMATS = { - yyyy: dateGetter("FullYear", 4), - yy: dateGetter("FullYear", 2, 0, true), - y: dateGetter("FullYear", 1), - MMMM: dateStrGetter("Month"), - MMM: dateStrGetter("Month", true), - MM: dateGetter("Month", 2, 1), - M: dateGetter("Month", 1, 1), - dd: dateGetter("Date", 2), - d: dateGetter("Date", 1), - HH: dateGetter("Hours", 2), - H: dateGetter("Hours", 1), - hh: dateGetter("Hours", 2, -12), - h: dateGetter("Hours", 1, -12), - mm: dateGetter("Minutes", 2), - m: dateGetter("Minutes", 1), - ss: dateGetter("Seconds", 2), - s: dateGetter("Seconds", 1), - sss: dateGetter("Milliseconds", 3), - EEEE: dateStrGetter("Day"), - EEE: dateStrGetter("Day", true), - a: ampmGetter, - Z: timeZoneGetter - } - var rdateFormat = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/ - var raspnetjson = /^\/Date\((\d+)\)\/$/ - filters.date = function(date, format) { - var locate = filters.date.locate, - text = "", - parts = [], - fn, match - format = format || "mediumDate" - format = locate[format] || format - if (typeof date === "string") { - if (/^\d+$/.test(date)) { - date = toInt(date) - } else if (raspnetjson.test(date)) { - date = +RegExp.$1 - } else { - var trimDate = date.trim() - var dateArray = [0, 0, 0, 0, 0, 0, 0] - var oDate = new Date(0) - //å–得年月日 - trimDate = trimDate.replace(/^(\d+)\D(\d+)\D(\d+)/, function(_, a, b, c) { - var array = c.length === 4 ? [c, a, b] : [a, b, c] - dateArray[0] = toInt(array[0]) //å¹´ - dateArray[1] = toInt(array[1]) - 1 //月 - dateArray[2] = toInt(array[2]) //æ—¥ - return "" - }) - var dateSetter = oDate.setFullYear - var timeSetter = oDate.setHours - trimDate = trimDate.replace(/[T\s](\d+):(\d+):?(\d+)?\.?(\d)?/, function(_, a, b, c, d) { - dateArray[3] = toInt(a) //å°æ—¶ - dateArray[4] = toInt(b) //分钟 - dateArray[5] = toInt(c) //秒 - if (d) { //毫秒 - dateArray[6] = Math.round(parseFloat("0." + d) * 1000) - } - return "" - }) - var tzHour = 0 - var tzMin = 0 - trimDate = trimDate.replace(/Z|([+-])(\d\d):?(\d\d)/, function(z, symbol, c, d) { - dateSetter = oDate.setUTCFullYear - timeSetter = oDate.setUTCHours - if (symbol) { - tzHour = toInt(symbol + c) - tzMin = toInt(symbol + d) - } - return "" - }) - - dateArray[3] -= tzHour - dateArray[4] -= tzMin - dateSetter.apply(oDate, dateArray.slice(0, 3)) - timeSetter.apply(oDate, dateArray.slice(3)) - date = oDate - } - } - if (typeof date === "number") { - date = new Date(date) - } - if (avalon.type(date) !== "date") { - return - } - while (format) { - match = rdateFormat.exec(format) - if (match) { - parts = parts.concat(match.slice(1)) - format = parts.pop() - } else { - parts.push(format) - format = null - } - } - parts.forEach(function(value) { - fn = DATE_FORMATS[value] - text += fn ? fn(date, locate) : value.replace(/(^'|'$)/g, "").replace(/''/g, "'") - }) - return text - } - var locate = { - AMPMS: { - 0: "上åˆ", - 1: "下åˆ" - }, - DAY: { - 0: "星期日", - 1: "星期一", - 2: "星期二", - 3: "星期三", - 4: "星期四", - 5: "星期五", - 6: "星期六" - }, - MONTH: { - 0: "1月", - 1: "2月", - 2: "3月", - 3: "4月", - 4: "5月", - 5: "6月", - 6: "7月", - 7: "8月", - 8: "9月", - 9: "10月", - 10: "11月", - 11: "12月" - }, - SHORTDAY: { - "0": "周日", - "1": "周一", - "2": "周二", - "3": "周三", - "4": "周四", - "5": "周五", - "6": "周六" - }, - fullDate: "yå¹´M月dæ—¥EEEE", - longDate: "yå¹´M月dæ—¥", - medium: "yyyy-M-d H:mm:ss", - mediumDate: "yyyy-M-d", - mediumTime: "H:mm:ss", - "short": "yy-M-d ah:mm", - shortDate: "yy-M-d", - shortTime: "ah:mm" - } - locate.SHORTMONTH = locate.MONTH - filters.date.locate = locate -}// jshint ignore:line -/********************************************************************* - * AMD加载器 * - **********************************************************************/ -//https://www.devbridge.com/articles/understanding-amd-requirejs/ -//http://maxogden.com/nested-dependencies.html -var modules = avalon.modules = { - "domReady!": { - exports: avalon, - state: 3 - }, - "avalon": { - exports: avalon, - state: 4 - } -} -//Object(modules[id]).state拥有如下值 -// undefined 没有定义 -// 1(send) å·²ç»å‘出请求 -// 2(loading) å·²ç»è¢«æ‰§è¡Œä½†è¿˜æ²¡æœ‰æ‰§è¡Œå®Œæˆï¼Œåœ¨è¿™ä¸ªé˜¶æ®µdefine方法会被执行 -// 3(loaded) 执行完毕,通过onload/onreadystatechange回调判定,在这个阶段checkDeps方法会执行 -// 4(execute) å…¶ä¾èµ–也执行完毕, 值放到exports对象上,在这个阶段fireFactory方法会执行 -modules.exports = modules.avalon - -new function () {// jshint ignore:line - var loadings = [] //正在加载中的模å—列表 - var factorys = [] //放置define方法的factory函数 - var rjsext = /\.js$/i - function makeRequest(name, config) { -//1. 去掉资æºå‰ç¼€ - var res = "js" - name = name.replace(/^(\w+)\!/, function (a, b) { - res = b - return "" - }) - if (res === "ready") { - log("debug: ready!å·²ç»è¢«åºŸå¼ƒï¼Œè¯·ä½¿ç”¨domReady!") - res = "domReady" - } -//2. 去掉querystring, hash - var query = "" - name = name.replace(rquery, function (a) { - query = a - return "" - }) - //3. 去掉扩展å - var suffix = "." + res - var ext = /js|css/.test(suffix) ? suffix : "" - name = name.replace(/\.[a-z0-9]+$/g, function (a) { - if (a === suffix) { - ext = a - return "" - } else { - return a - } - }) - var req = avalon.mix({ - query: query, - ext: ext, - res: res, - name: name, - toUrl: toUrl - }, config) - req.toUrl(name) - return req - } - - function fireRequest(req) { - var name = req.name - var res = req.res - //1. 如果该模å—å·²ç»å‘出请求,直接返回 - var module = modules[name] - var urlNoQuery = name && req.urlNoQuery - if (module && module.state >= 1) { - return name - } - module = modules[urlNoQuery] - if (module && module.state >= 3) { - innerRequire(module.deps || [], module.factory, urlNoQuery) - return urlNoQuery - } - if (name && !module) { - module = modules[urlNoQuery] = { - id: urlNoQuery, - state: 1 //send - } - var wrap = function (obj) { - resources[res] = obj - obj.load(name, req, function (a) { - if (arguments.length && a !== void 0) { - module.exports = a - } - module.state = 4 - checkDeps() - }) - } - - if (!resources[res]) { - innerRequire([res], wrap) - } else { - wrap(resources[res]) - } - } - return name ? urlNoQuery : res + "!" - } - -//核心API之一 require - var requireQueue = [] - var isUserFirstRequire = false - innerRequire = avalon.require = function (array, factory, parentUrl, defineConfig) { - if (!isUserFirstRequire) { - requireQueue.push(avalon.slice(arguments)) - if (arguments.length <= 2) { - isUserFirstRequire = true - var queue = requireQueue.splice(0, requireQueue.length), args - while (args = queue.shift()) { - innerRequire.apply(null, args) - } - } - return - } - - if (!Array.isArray(array)) { - avalon.error("require方法的第一个å‚数应为数组 " + array) - } - var deps = [] // 放置所有ä¾èµ–项的完整路径 - var uniq = {} - var id = parentUrl || "callback" + setTimeout("1")// jshint ignore:line - defineConfig = defineConfig || {} - defineConfig.baseUrl = kernel.baseUrl - var isBuilt = !!defineConfig.built - if (parentUrl) { - defineConfig.parentUrl = parentUrl.substr(0, parentUrl.lastIndexOf("/")) - defineConfig.mapUrl = parentUrl.replace(rjsext, "") - } - if (isBuilt) { - var req = makeRequest(defineConfig.defineName, defineConfig) - id = req.urlNoQuery - } else { - array.forEach(function (name) { - var req = makeRequest(name, defineConfig) - var url = fireRequest(req) //加载资æºï¼Œå¹¶è¿”回该资æºçš„å®Œæ•´åœ°å€ - if (url) { - if (!uniq[url]) { - deps.push(url) - uniq[url] = "å¸å¾’正美" //åŽ»é‡ - } - } - }) - } - - var module = modules[id] - if (!module || module.state !== 4) { - modules[id] = { - id: id, - deps: isBuilt ? array.concat() : deps, - factory: factory || noop, - state: 3 - } - } - if (!module) { - //如果此模å—是定义在å¦ä¸€ä¸ªJS文件中, 那必须等该文件加载完毕, æ‰èƒ½æ”¾åˆ°æ£€æµ‹åˆ—队中 - loadings.push(id) - } - checkDeps() - } - -//核心API之二 require - innerRequire.define = function (name, deps, factory) { //模å—å,ä¾èµ–列表,模å—本身 - if (typeof name !== "string") { - factory = deps - deps = name - name = "anonymous" - } - if (!Array.isArray(deps)) { - factory = deps - deps = [] - } - var config = { - built: !isUserFirstRequire, //用r.js打包åŽ,所有define会放到requirejsä¹‹å‰ - defineName: name - } - var args = [deps, factory, config] - factory.require = function (url) { - args.splice(2, 0, url) - if (modules[url]) { - modules[url].state = 3 //loaded - var isCycle = false - try { - isCycle = checkCycle(modules[url].deps, url) - } catch (e) { - } - if (isCycle) { - avalon.error(url + "模å—与之å‰çš„模å—存在循环ä¾èµ–,请ä¸è¦ç›´æŽ¥ç”¨script标签引入" + url + "模å—") - } - } - delete factory.require //释放内存 - innerRequire.apply(null, args) //0,1,2 --> 1,2,0 - } -//æ ¹æ®æ ‡å‡†,所有éµå¾ªW3C标准的æµè§ˆå™¨,script标签会按标签的出现顺åºæ‰§è¡Œã€‚ -//è€çš„æµè§ˆå™¨ä¸­ï¼ŒåŠ è½½ä¹Ÿæ˜¯æŒ‰é¡ºåºçš„:一个文件下载完æˆåŽï¼Œæ‰å¼€å§‹ä¸‹è½½ä¸‹ä¸€ä¸ªæ–‡ä»¶ã€‚ -//较新的æµè§ˆå™¨ä¸­ï¼ˆIE8+ ã€FireFox3.5+ ã€Chrome4+ ã€Safari4+),为了å‡å°è¯·æ±‚时间以优化体验, -//下载å¯ä»¥æ˜¯å¹¶è¡Œçš„,但是执行顺åºè¿˜æ˜¯æŒ‰ç…§æ ‡ç­¾å‡ºçŽ°çš„顺åºã€‚ -//但如果script标签是动æ€æ’入的, 就未必按照先请求先执行的原则了,目测åªæœ‰firefoxéµå®ˆ -//唯一比较一致的是,IE10+åŠå…¶ä»–标准æµè§ˆå™¨,一旦开始解æžè„šæœ¬, 就会一直堵在那里,直接脚本解æžå®Œæ¯• -//亦å³ï¼Œå…ˆè¿›å…¥loading阶段的script标签(模å—)必然会先进入loaded阶段 - var url = config.built ? "unknown" : getCurrentScript() - if (url) { - var module = modules[url] - if (module) { - module.state = 2 - } - factory.require(url) - } else {//åˆå¹¶å‰åŽçš„safari,åˆå¹¶åŽçš„IE6-9走此分支 - factorys.push(factory) - } - } -//核心API之三 require.config(settings) - innerRequire.config = kernel - //核心API之四 define.amd 标识其符åˆAMD规范 - innerRequire.define.amd = modules - - //==========================对用户é…置项进行å†åŠ å·¥========================== - var allpaths = kernel["orig.paths"] = {} - var allmaps = kernel["orig.map"] = {} - var allpackages = kernel["packages"] = [] - var allargs = kernel["orig.args"] = {} - avalon.mix(plugins, { - paths: function (hash) { - avalon.mix(allpaths, hash) - kernel.paths = makeIndexArray(allpaths) - }, - map: function (hash) { - avalon.mix(allmaps, hash) - var list = makeIndexArray(allmaps, 1, 1) - avalon.each(list, function (_, item) { - item.val = makeIndexArray(item.val) - }) - kernel.map = list - }, - packages: function (array) { - array = array.concat(allpackages) - var uniq = {} - var ret = [] - for (var i = 0, pkg; pkg = array[i++]; ) { - pkg = typeof pkg === "string" ? {name: pkg} : pkg - var name = pkg.name - if (!uniq[name]) { - var url = joinPath(pkg.location || name, pkg.main || "main") - url = url.replace(rjsext, "") - ret.push(pkg) - uniq[name] = pkg.location = url - pkg.reg = makeMatcher(name) - } - } - kernel.packages = ret.sort() - }, - urlArgs: function (hash) { - if (typeof hash === "string") { - hash = {"*": hash} - } - avalon.mix(allargs, hash) - kernel.urlArgs = makeIndexArray(allargs, 1) - }, - baseUrl: function (url) { - if (!isAbsUrl(url)) { - var baseElement = head.getElementsByTagName("base")[0] - if (baseElement) { - head.removeChild(baseElement) - } - var node = DOC.createElement("a") - node.href = url - url = getFullUrl(node, "href") - if (baseElement) { - head.insertBefore(baseElement, head.firstChild) - } - } - if (url.length > 3) - kernel.baseUrl = url - }, - shim: function (obj) { - for (var i in obj) { - var value = obj[i] - if (Array.isArray(value)) { - value = obj[i] = { - deps: value - } - } - if (!value.exportsFn && (value.exports || value.init)) { - value.exportsFn = makeExports(value) - } - } - kernel.shim = obj - } - - }) - - - //==============================内部方法================================= - function checkCycle(deps, nick) { - //检测是å¦å­˜åœ¨å¾ªçŽ¯ä¾èµ– - for (var i = 0, id; id = deps[i++]; ) { - if (modules[id].state !== 4 && - (id === nick || checkCycle(modules[id].deps, nick))) { - return true - } - } - } - - function checkFail(node, onError, fuckIE) { - var id = trimQuery(node.src) //检测是å¦æ­»é“¾ - node.onload = node.onreadystatechange = node.onerror = null - if (onError || (fuckIE && modules[id] && !modules[id].state)) { - setTimeout(function () { - head.removeChild(node) - node = null // 处ç†æ—§å¼IE下的循环引用问题 - }) - log("debug: 加载 " + id + " 失败" + onError + " " + (!modules[id].state)) - } else { - return true - } - } - - function checkDeps() { - //检测此JS模å—çš„ä¾èµ–是å¦éƒ½å·²å®‰è£…完毕,是则安装自身 - loop: for (var i = loadings.length, id; id = loadings[--i]; ) { - var obj = modules[id], - deps = obj.deps - if (!deps) - continue - for (var j = 0, key; key = deps[j]; j++) { - if (Object(modules[key]).state !== 4) { - continue loop - } - } - //如果deps是空对象或者其ä¾èµ–的模å—的状æ€éƒ½æ˜¯2 - if (obj.state !== 4) { - loadings.splice(i, 1) //必须先移除å†å®‰è£…,防止在IE下DOM树建完åŽæ‰‹åŠ¨åˆ·æ–°é¡µé¢ï¼Œä¼šå¤šæ¬¡æ‰§è¡Œå®ƒ - fireFactory(obj.id, obj.deps, obj.factory) - checkDeps() //如果æˆåŠŸ,则å†æ‰§è¡Œä¸€æ¬¡,以防有些模å—就差本模å—没有安装好 - } - } - } - - var rreadyState = /complete|loaded/ - function loadJS(url, id, callback) { - //通过scriptèŠ‚ç‚¹åŠ è½½ç›®æ ‡æ¨¡å— - var node = DOC.createElement("script") - node.className = subscribers //让getCurrentScriptåªå¤„ç†ç±»å为subscribersçš„script节点 - var supportLoad = "onload" in node - var onEvent = supportLoad ? "onload" : "onreadystatechange" - function onload() { - var factory = factorys.pop() - factory && factory.require(id) - if (callback) { - callback() - } - if (checkFail(node, false, !supportLoad)) { - log("debug: å·²æˆåŠŸåŠ è½½ " + url) - id && loadings.push(id) - checkDeps() - } - } - var index = 0, loadID - node[onEvent] = supportLoad ? onload : function () { - if (rreadyState.test(node.readyState)) { - ++index - if (index === 1) { - loadID = setTimeout(onload, 500) - } else { - clearTimeout(loadID) - onload() - } - } - } - node.onerror = function () { - checkFail(node, true) - } - - head.insertBefore(node, head.firstChild) //chrome下第二个å‚æ•°ä¸èƒ½ä¸ºnull - node.src = url //æ’入到head的第一个节点å‰ï¼Œé˜²æ­¢IE6下head标签没闭åˆå‰ä½¿ç”¨appendChild抛错 - log("debug: 正准备加载 " + url) //æ›´é‡è¦çš„是IE6下å¯ä»¥æ”¶çª„getCurrentScript的寻找范围 - } - - var resources = innerRequire.plugins = { - //三大常用资æºæ’件 js!, css!, text!, ready! - ready: { - load: noop - }, - js: { - load: function (name, req, onLoad) { - var url = req.url - var id = req.urlNoQuery - var shim = kernel.shim[name.replace(rjsext, "")] - if (shim) { //shim机制 - innerRequire(shim.deps || [], function () { - var args = avalon.slice(arguments) - loadJS(url, id, function () { - onLoad(shim.exportsFn ? shim.exportsFn.apply(0, args) : void 0) - }) - }) - } else { - loadJS(url, id) - } - } - }, - css: { - load: function (name, req, onLoad) { - var url = req.url - var node = DOC.createElement("link") - node.rel = "stylesheet" - node.href = url - head.insertBefore(node, head.firstChild) - log("debug: å·²æˆåŠŸåŠ è½½ " + url) - onLoad() - } - }, - text: { - load: function (name, req, onLoad) { - var url = req.url - var xhr = getXHR() - xhr.onreadystatechange = function () { - if (xhr.readyState === 4) { - var status = xhr.status; - if (status > 399 && status < 600) { - avalon.error(url + " 对应资æºä¸å­˜åœ¨æˆ–æ²¡æœ‰å¼€å¯ CORS") - } else { - log("debug: å·²æˆåŠŸåŠ è½½ " + url) - onLoad(xhr.responseText) - } - } - } - var time = "_=" + (new Date() - 0) - var _url = url.indexOf("?") === -1 ? url + "?" + time : url + "&" + time - xhr.open("GET", _url, true) - if ("withCredentials" in xhr) {//这是处ç†è·¨åŸŸ - xhr.withCredentials = true - } - xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest")//告诉åŽç«¯è¿™æ˜¯AJAX请求 - xhr.send() - log("debug: 正准备加载 " + url) - } - } - } - innerRequire.checkDeps = checkDeps - - var rquery = /(\?[^#]*)$/ - function trimQuery(url) { - return (url || "").replace(rquery, "") - } - - function isAbsUrl(path) { - //http://stackoverflow.com/questions/10687099/how-to-test-if-a-url-string-is-absolute-or-relative - return /^(?:[a-z]+:)?\/\//i.test(String(path)) - } - - function getFullUrl(node, src) { - return"1"[0] ? node[src] : node.getAttribute(src, 4) - } - - function getCurrentScript() { - // inspireb by https://github.com/samyk/jiagra/blob/master/jiagra.js - var stack - try { - a.b.c() //强制报错,以便æ•èŽ·e.stack - } catch (e) { //safari5çš„sourceURL,firefoxçš„fileName,它们的效果与e.stackä¸ä¸€æ · - stack = e.stack - if (!stack && window.opera) { - //opera 9没有e.stack,但有e.Backtrace,但ä¸èƒ½ç›´æŽ¥å–å¾—,需è¦å¯¹eå¯¹è±¡è½¬å­—ç¬¦ä¸²è¿›è¡ŒæŠ½å– - stack = (String(e).match(/of linked script \S+/g) || []).join(" ") - } - } - if (stack) { - /**e.stack最åŽä¸€è¡Œåœ¨æ‰€æœ‰æ”¯æŒçš„æµè§ˆå™¨å¤§è‡´å¦‚下: - *chrome23: - * at http://113.93.50.63/data.js:4:1 - *firefox17: - *@http://113.93.50.63/query.js:4 - *opera12:http://www.oldapps.com/opera.php?system=Windows_XP - *@http://113.93.50.63/data.js:4 - *IE10: - * at Global code (http://113.93.50.63/data.js:4:1) - * //firefox4+ å¯ä»¥ç”¨document.currentScript - */ - stack = stack.split(/[@ ]/g).pop() //å–得最åŽä¸€è¡Œ,最åŽä¸€ä¸ªç©ºæ ¼æˆ–@之åŽçš„部分 - stack = stack[0] === "(" ? stack.slice(1, -1) : stack.replace(/\s/, "") //去掉æ¢è¡Œç¬¦ - return trimQuery(stack.replace(/(:\d+)?:\d+$/i, "")) //去掉行å·ä¸Žæˆ–许存在的出错字符起始ä½ç½® - } - var nodes = head.getElementsByTagName("script") //åªåœ¨head标签中寻找 - for (var i = nodes.length, node; node = nodes[--i]; ) { - if (node.className === subscribers && node.readyState === "interactive") { - var url = getFullUrl(node, "src") - return node.className = trimQuery(url) - } - } - } - - var rcallback = /^callback\d+$/ - function fireFactory(id, deps, factory) { - var module = Object(modules[id]) - module.state = 4 - for (var i = 0, array = [], d; d = deps[i++]; ) { - if (d === "exports") { - var obj = module.exports || (module.exports = {}) - array.push(obj) - } else { - array.push(modules[d].exports) - } - } - try { - var ret = factory.apply(window, array) - } catch (e) { - log("执行[" + id + "]模å—çš„factory抛错: ", e) - } - if (ret !== void 0) { - module.exports = ret - } - if (rcallback.test(id)) { - delete modules[id] - } - delete module.factory - return ret - } - function toUrl(id) { - if (id.indexOf(this.res + "!") === 0) { - id = id.slice(this.res.length + 1) //处ç†define("css!style",[], function(){})的情况 - } - var url = id - //1. 是å¦å‘½ä¸­pathsé…置项 - var usePath = 0 - var baseUrl = this.baseUrl - var rootUrl = this.parentUrl || baseUrl - eachIndexArray(id, kernel.paths, function (value, key) { - url = url.replace(key, value) - usePath = 1 - }) - //2. 是å¦å‘½ä¸­packagesé…置项 - if (!usePath) { - eachIndexArray(id, kernel.packages, function (value, key, item) { - url = url.replace(item.name, item.location) - }) - } - //3. 是å¦å‘½ä¸­mapé…置项 - if (this.mapUrl) { - eachIndexArray(this.mapUrl, kernel.map, function (array) { - eachIndexArray(url, array, function (mdValue, mdKey) { - url = url.replace(mdKey, mdValue) - rootUrl = baseUrl - }) - }) - } - var ext = this.ext - if (ext && usePath && url.slice(-ext.length) === ext) { - url = url.slice(0, -ext.length) - } - //4. 转æ¢ä¸ºç»å¯¹è·¯å¾„ - if (!isAbsUrl(url)) { - rootUrl = this.built || /^\w/.test(url) ? baseUrl : rootUrl - url = joinPath(rootUrl, url) - } - //5. 还原扩展å,query - var urlNoQuery = url + ext - url = urlNoQuery + this.query - //6. 处ç†urlArgs - eachIndexArray(id, kernel.urlArgs, function (value) { - url += (url.indexOf("?") === -1 ? "?" : "&") + value; - }) - this.url = url - return this.urlNoQuery = urlNoQuery - } - - function makeIndexArray(hash, useStar, part) { - //创建一个ç»è¿‡ç‰¹æ®Šç®—法排好åºçš„数组 - var index = hash2array(hash, useStar, part) - index.sort(descSorterByName) - return index - } - - function makeMatcher(prefix) { - return new RegExp('^' + prefix + '(/|$)') - } - - function makeExports(value) { - return function () { - var ret - if (value.init) { - ret = value.init.apply(window, arguments) - } - return ret || (value.exports && getGlobal(value.exports)) - } - } - - - function hash2array(hash, useStar, part) { - var array = []; - for (var key in hash) { - if (ohasOwn.call(hash, key)) { - var item = { - name: key, - val: hash[key] - } - array.push(item) - item.reg = key === "*" && useStar ? /^/ : makeMatcher(key) - if (part && key !== "*") { - item.reg = new RegExp('\/' + key.replace(/^\//, "") + '(/|$)') - } - } - } - return array - } - - function eachIndexArray(moduleID, array, matcher) { - array = array || [] - for (var i = 0, el; el = array[i++]; ) { - if (el.reg.test(moduleID)) { - matcher(el.val, el.name, el) - return false - } - } - } - // æ ¹æ®å…ƒç´ çš„name项进行数组字符数逆åºçš„排åºå‡½æ•° - function descSorterByName(a, b) { - var aaa = a.name - var bbb = b.name - if (bbb === "*") { - return -1 - } - if (aaa === "*") { - return 1 - } - return bbb.length - aaa.length - } - - var rdeuce = /\/\w+\/\.\./ - function joinPath(a, b) { - if (a.charAt(a.length - 1) !== "/") { - a += "/" - } - if (b.slice(0, 2) === "./") { //相对于兄弟路径 - return a + b.slice(2) - } - if (b.slice(0, 2) === "..") { //相对于父路径 - a += b - while (rdeuce.test(a)) { - a = a.replace(rdeuce, "") - } - return a - } - if (b.slice(0, 1) === "/") { - return a + b.slice(1) - } - return a + b - } - - function getGlobal(value) { - if (!value) { - return value - } - var g = window - value.split(".").forEach(function (part) { - g = g[part] - }) - return g - } - - var mainNode = DOC.scripts[DOC.scripts.length - 1] - var dataMain = mainNode.getAttribute("data-main") - if (dataMain) { - plugins.baseUrl(dataMain) - var href = kernel.baseUrl - kernel.baseUrl = href.slice(0, href.lastIndexOf("/") + 1) - loadJS(href.replace(rjsext, "") + ".js") - } else { - var loaderUrl = trimQuery(getFullUrl(mainNode, "src")) - kernel.baseUrl = loaderUrl.slice(0, loaderUrl.lastIndexOf("/") + 1) - } -}// jshint ignore:line - -/********************************************************************* - * DOMReady * - **********************************************************************/ - -var readyList = [], isReady -var fireReady = function(fn) { - isReady = true - if (innerRequire) { - modules["domReady!"].state = 4 - innerRequire.checkDeps() - } - while(fn = readyList.shift()){ - fn(avalon) - } -} - -function doScrollCheck() { - try { //IE下通过doScrollCheck检测DOM树是å¦å»ºå®Œ - root.doScroll("left") - fireReady() - } catch (e) { - setTimeout(doScrollCheck) - } -} - -if (DOC.readyState === "complete") { - setTimeout(fireReady) //如果在domReady之外加载 -} else if (W3C) { - DOC.addEventListener("DOMContentLoaded", fireReady) -} else { - DOC.attachEvent("onreadystatechange", function() { - if (DOC.readyState === "complete") { - fireReady() - } - }) - try { - var isTop = window.frameElement === null - } catch (e) { - } - if (root.doScroll && isTop && window.external) {//fix IE iframe BUG - doScrollCheck() - } -} -avalon.bind(window, "load", fireReady) - -avalon.ready = function(fn) { - if (!isReady) { - readyList.push(fn) - } else { - fn(avalon) - } -} - -avalon.config({ - loader: true -}) - -avalon.ready(function() { - avalon.scan(DOC.body) -}) - -// Register as a named AMD module, since avalon can be concatenated with other -// files that may use define, but not via a proper concatenation script that -// understands anonymous AMD modules. A named AMD is safest and most robust -// way to register. Lowercase avalon is used because AMD module names are -// derived from file names, and Avalon is normally delivered in a lowercase -// file name. Do this after creating the global so that if an AMD module wants -// to call noConflict to hide this version of avalon, it will work. - -// Note that for maximum portability, libraries that are not avalon should -// declare themselves as anonymous modules, and avoid setting a global if an -// AMD loader is present. avalon is a special case. For more information, see -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon - if (typeof define === "function" && define.amd) { - define("avalon", [], function() { - return avalon - }) - } -// Map over avalon in case of overwrite - var _avalon = window.avalon - avalon.noConflict = function(deep) { - if (deep && window.avalon === avalon) { - window.avalon = _avalon - } - return avalon - } -// Expose avalon identifiers, even in AMD -// and CommonJS for browser emulators - if (noGlobal === void 0) { - window.avalon = avalon - } - return avalon - -})); \ No newline at end of file diff --git a/common/src/main/webapp/thirdparty/avalon/avalon.modern.js b/common/src/main/webapp/thirdparty/avalon/avalon.modern.js deleted file mode 100755 index 048b4241..00000000 --- a/common/src/main/webapp/thirdparty/avalon/avalon.modern.js +++ /dev/null @@ -1,4935 +0,0 @@ -/*================================================== - Copyright (c) 2013-2015 å¸å¾’正美 and other contributors - http://www.cnblogs.com/rubylouvre/ - https://github.com/RubyLouvre - http://weibo.com/jslouvre/ - - Released under the MIT license - avalon.modern.js 1.43 built in 2015.5.21 - support IE10+ and other browsers - ==================================================*/ -(function (global, factory) { - - if (typeof module === "object" && typeof module.exports === "object") { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get avalon. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var avalon = require("avalon")(window); - module.exports = global.document ? factory(global, true) : function (w) { - if (!w.document) { - throw new Error("Avalon requires a window with a document") - } - return factory(w) - } - } else { - factory(global) - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function (window, noGlobal) { - - /********************************************************************* - * 全局å˜é‡åŠæ–¹æ³• * - **********************************************************************/ - var expose = Date.now() -//http://stackoverflow.com/questions/7290086/javascript-use-strict-and-nicks-find-global-function - var DOC = window.document - var head = DOC.head //HEAD元素 - head.insertAdjacentHTML("afterBegin", '') - var ifGroup = head.firstChild - - function log() { - if (avalon.config.debug) { -// http://stackoverflow.com/questions/8785624/how-to-safely-wrap-console-log - console.log.apply(console, arguments) - } - } - - /** - * Creates a new object without a prototype. This object is useful for lookup without having to - * guard against prototypically inherited properties via hasOwnProperty. - * - * Related micro-benchmarks: - * - http://jsperf.com/object-create2 - * - http://jsperf.com/proto-map-lookup/2 - * - http://jsperf.com/for-in-vs-object-keys2 - */ - function createMap() { - return Object.create(null) - } - - var subscribers = "$" + expose - var otherRequire = window.require - var otherDefine = window.define - var innerRequire - var stopRepeatAssign = false - var rword = /[^, ]+/g //切割字符串为一个个å°å—,以空格或豆å·åˆ†å¼€å®ƒä»¬ï¼Œç»“åˆreplace实现字符串的forEach - var rcomplexType = /^(?:object|array)$/ - var rsvg = /^\[object SVG\w*Element\]$/ - var rwindow = /^\[object (?:Window|DOMWindow|global)\]$/ - var oproto = Object.prototype - var ohasOwn = oproto.hasOwnProperty - var serialize = oproto.toString - var ap = Array.prototype - var aslice = ap.slice - var Registry = {} //将函数æ›å…‰åˆ°æ­¤å¯¹è±¡ä¸Šï¼Œæ–¹ä¾¿è®¿é—®å™¨æ”¶é›†ä¾èµ– - var W3C = window.dispatchEvent - var root = DOC.documentElement - var hyperspace = DOC.createDocumentFragment() - var cinerator = DOC.createElement("div") - var class2type = {} - "Boolean Number String Function Array Date RegExp Object Error".replace(rword, function (name) { - class2type["[object " + name + "]"] = name.toLowerCase() - }) - - - function noop() { - } - - - function oneObject(array, val) { - if (typeof array === "string") { - array = array.match(rword) || [] - } - var result = {}, - value = val !== void 0 ? val : 1 - for (var i = 0, n = array.length; i < n; i++) { - result[array[i]] = value - } - return result - } - -//生æˆUUID http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript - var generateID = function (prefix) { - prefix = prefix || "avalon" - return String(Math.random() + Math.random()).replace(/\d\.\d{4}/, prefix) - } - - function IE() { - if (window.VBArray) { - var mode = document.documentMode - return mode ? mode : window.XMLHttpRequest ? 7 : 6 - } else { - return 0 - } - } - - var IEVersion = IE() - - avalon = function (el) { //创建jQueryå¼çš„æ— new 实例化结构 - return new avalon.init(el) - } - - /*视æµè§ˆå™¨æƒ…况采用最快的异步回调*/ - avalon.nextTick = new function () {// jshint ignore:line - var tickImmediate = window.setImmediate - var tickObserver = window.MutationObserver - var tickPost = W3C && window.postMessage - if (tickImmediate) { - return tickImmediate.bind(window) - } - - var queue = [] - - function callback() { - var n = queue.length - for (var i = 0; i < n; i++) { - queue[i]() - } - queue = queue.slice(n) - } - - if (tickObserver) { - var node = document.createTextNode("avalon") - new tickObserver(callback).observe(node, {characterData: true})// jshint ignore:line - return function (fn) { - queue.push(fn) - node.data = Math.random() - } - } - - if (tickPost) { - window.addEventListener("message", function (e) { - var source = e.source - if ((source === window || source === null) && e.data === "process-tick") { - e.stopPropagation() - callback() - } - }) - - return function (fn) { - queue.push(fn) - window.postMessage('process-tick', '*') - } - } - - return function (fn) { - setTimeout(fn, 0) - } - }// jshint ignore:line - /********************************************************************* - * avalonçš„é™æ€æ–¹æ³•å®šä¹‰åŒº * - **********************************************************************/ - avalon.init = function (el) { - this[0] = this.element = el - } - avalon.fn = avalon.prototype = avalon.init.prototype - - avalon.type = function (obj) { //å–得目标的类型 - if (obj == null) { - return String(obj) - } - // 早期的webkit内核æµè§ˆå™¨å®žçŽ°äº†å·²åºŸå¼ƒçš„ecma262v4标准,å¯ä»¥å°†æ­£åˆ™å­—é¢é‡å½“作函数使用,因此typeof在判定正则时会返回function - return typeof obj === "object" || typeof obj === "function" ? - class2type[serialize.call(obj)] || "object" : - typeof obj - } - - var isFunction = function (fn) { - return serialize.call(fn) === "[object Function]" - } - - avalon.isFunction = isFunction - - avalon.isWindow = function (obj) { - return rwindow.test(serialize.call(obj)) - } - - /*判定是å¦æ˜¯ä¸€ä¸ªæœ´ç´ çš„javascript对象(Object),ä¸æ˜¯DOM对象,ä¸æ˜¯BOM对象,ä¸æ˜¯è‡ªå®šä¹‰ç±»çš„实例*/ - - avalon.isPlainObject = function (obj) { - // 简å•çš„ typeof obj === "object"检测,会致使用isPlainObject(window)在opera下通ä¸è¿‡ - return serialize.call(obj) === "[object Object]" && Object.getPrototypeOf(obj) === oproto - } - -//与jQuery.extend方法,å¯ç”¨äºŽæµ…æ‹·è´ï¼Œæ·±æ‹·è´ - avalon.mix = avalon.fn.mix = function () { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false - - // 如果第一个å‚数为布尔,判定是å¦æ·±æ‹·è´ - if (typeof target === "boolean") { - deep = target - target = arguments[1] || {} - i++ - } - - //ç¡®ä¿æŽ¥å—方为一个å¤æ‚çš„æ•°æ®ç±»åž‹ - if (typeof target !== "object" && !isFunction(target)) { - target = {} - } - - //如果åªæœ‰ä¸€ä¸ªå‚数,那么新æˆå‘˜æ·»åŠ äºŽmix所在的对象上 - if (i === length) { - target = this - i-- - } - - for (; i < length; i++) { - //åªå¤„ç†éžç©ºå‚æ•° - if ((options = arguments[i]) != null) { - for (name in options) { - src = target[name] - copy = options[name] - // 防止环引用 - if (target === copy) { - continue - } - if (deep && copy && (avalon.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { - - if (copyIsArray) { - copyIsArray = false - clone = src && Array.isArray(src) ? src : [] - - } else { - clone = src && avalon.isPlainObject(src) ? src : {} - } - - target[name] = avalon.mix(deep, clone, copy) - } else if (copy !== void 0) { - target[name] = copy - } - } - } - } - return target - } - - function _number(a, len) { //用于模拟slice, splice的效果 - a = Math.floor(a) || 0 - return a < 0 ? Math.max(len + a, 0) : Math.min(a, len); - } - - avalon.mix({ - rword: rword, - subscribers: subscribers, - version: 1.43, - ui: {}, - log: log, - slice: function (nodes, start, end) { - return aslice.call(nodes, start, end) - }, - noop: noop, - /*如果ä¸ç”¨Error对象å°è£…一下,str在控制å°ä¸‹å¯èƒ½ä¼šä¹±ç */ - error: function (str, e) { - throw new (e || Error)(str)// jshint ignore:line - }, - /*将一个以空格或逗å·éš”开的字符串或数组,转æ¢æˆä¸€ä¸ªé”®å€¼éƒ½ä¸º1的对象*/ - oneObject: oneObject, - /* avalon.range(10) - => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - avalon.range(1, 11) - => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - avalon.range(0, 30, 5) - => [0, 5, 10, 15, 20, 25] - avalon.range(0, -10, -1) - => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] - avalon.range(0) - => []*/ - range: function (start, end, step) { // 用于生æˆæ•´æ•°æ•°ç»„ - step || (step = 1) - if (end == null) { - end = start || 0 - start = 0 - } - var index = -1, - length = Math.max(0, Math.ceil((end - start) / step)), - result = new Array(length) - while (++index < length) { - result[index] = start - start += step - } - return result - }, - eventHooks: {}, - /*绑定事件*/ - bind: function (el, type, fn, phase) { - var hooks = avalon.eventHooks - var hook = hooks[type] - if (typeof hook === "object") { - type = hook.type - if (hook.deel) { - fn = hook.deel(el, type, fn, phase) - } - } - if (!fn.unbind) - el.addEventListener(type, fn, !!phase) - return fn - }, - /*å¸è½½äº‹ä»¶*/ - unbind: function (el, type, fn, phase) { - var hooks = avalon.eventHooks - var hook = hooks[type] - var callback = fn || noop - if (typeof hook === "object") { - type = hook.type - if (hook.deel) { - fn = hook.deel(el, type, fn, false) - } - } - el.removeEventListener(type, callback, !!phase) - }, - /*读写删除元素节点的样å¼*/ - css: function (node, name, value) { - if (node instanceof avalon) { - node = node[0] - } - var prop = /[_-]/.test(name) ? camelize(name) : name, fn - name = avalon.cssName(prop) || prop - if (value === void 0 || typeof value === "boolean") { //获å–æ ·å¼ - fn = cssHooks[prop + ":get"] || cssHooks["@:get"] - if (name === "background") { - name = "backgroundColor" - } - var val = fn(node, name) - return value === true ? parseFloat(val) || 0 : val - } else if (value === "") { //è¯·é™¤æ ·å¼ - node.style[name] = "" - } else { //è®¾ç½®æ ·å¼ - if (value == null || value !== value) { - return - } - if (isFinite(value) && !avalon.cssNumber[prop]) { - value += "px" - } - fn = cssHooks[prop + ":set"] || cssHooks["@:set"] - fn(node, name, value) - } - }, - /*é历数组与对象,回调的第一个å‚数为索引或键å,第二个或元素或键值*/ - each: function (obj, fn) { - if (obj) { //排除null, undefined - var i = 0 - if (isArrayLike(obj)) { - for (var n = obj.length; i < n; i++) { - if (fn(i, obj[i]) === false) - break - } - } else { - for (i in obj) { - if (obj.hasOwnProperty(i) && fn(i, obj[i]) === false) { - break - } - } - } - } - }, - //收集元素的data-{{prefix}}-*属性,并转æ¢ä¸ºå¯¹è±¡ - getWidgetData: function (elem, prefix) { - var raw = avalon(elem).data() - var result = {} - for (var i in raw) { - if (i.indexOf(prefix) === 0) { - result[i.replace(prefix, "").replace(/\w/, function (a) { - return a.toLowerCase() - })] = raw[i] - } - } - return result - }, - Array: { - /*åªæœ‰å½“å‰æ•°ç»„ä¸å­˜åœ¨æ­¤å…ƒç´ æ—¶åªæ·»åŠ å®ƒ*/ - ensure: function (target, item) { - if (target.indexOf(item) === -1) { - return target.push(item) - } - }, - /*移除数组中指定ä½ç½®çš„元素,返回布尔表示æˆåŠŸä¸Žå¦*/ - removeAt: function (target, index) { - return !!target.splice(index, 1).length - }, - /*移除数组中第一个匹é…ä¼ å‚的那个元素,返回布尔表示æˆåŠŸä¸Žå¦*/ - remove: function (target, item) { - var index = target.indexOf(item) - if (~index) - return avalon.Array.removeAt(target, index) - return false - } - } - }) - - var bindingHandlers = avalon.bindingHandlers = {} - var bindingExecutors = avalon.bindingExecutors = {} - - /*判定是å¦ç±»æ•°ç»„,如节点集åˆï¼Œçº¯æ•°ç»„,arguments与拥有éžè´Ÿæ•´æ•°çš„length属性的纯JS对象*/ - function isArrayLike(obj) { - if (obj && typeof obj === "object") { - var n = obj.length, - str = serialize.call(obj) - if (/(Array|List|Collection|Map|Arguments)\]$/.test(str)) { - return true - } else if (str === "[object Object]" && n === (n >>> 0)) { - return true //由于ecma262v5能修改对象属性的enumerable,因此ä¸èƒ½ç”¨propertyIsEnumerableæ¥åˆ¤å®šäº† - } - } - return false - } - - -// https://github.com/rsms/js-lru - var Cache = new function () {// jshint ignore:line - function LRU(maxLength) { - this.size = 0 - this.limit = maxLength - this.head = this.tail = void 0 - this._keymap = {} - } - - var p = LRU.prototype - - p.put = function (key, value) { - var entry = { - key: key, - value: value - } - this._keymap[key] = entry - if (this.tail) { - this.tail.newer = entry - entry.older = this.tail - } else { - this.head = entry - } - this.tail = entry - if (this.size === this.limit) { - this.shift() - } else { - this.size++ - } - return value - } - - p.shift = function () { - var entry = this.head - if (entry) { - this.head = this.head.newer - this.head.older = - entry.newer = - entry.older = - this._keymap[entry.key] = void 0 - } - } - p.get = function (key) { - var entry = this._keymap[key] - if (entry === void 0) - return - if (entry === this.tail) { - return entry.value - } - // HEAD--------------TAIL - // <.older .newer> - // <--- add direction -- - // A B C E - if (entry.newer) { - if (entry === this.head) { - this.head = entry.newer - } - entry.newer.older = entry.older // C <-- E. - } - if (entry.older) { - entry.older.newer = entry.newer // C. --> E - } - entry.newer = void 0 // D --x - entry.older = this.tail // D. --> E - if (this.tail) { - this.tail.newer = entry // E. <-- D - } - this.tail = entry - return entry.value - } - return LRU - }// jshint ignore:line - - /********************************************************************* - * DOM åº•å±‚è¡¥ä¸ * - **********************************************************************/ -//safari5+是把contains方法放在Element.prototype上而ä¸æ˜¯Node.prototype - if (!DOC.contains) { - Node.prototype.contains = function (arg) { - return !!(this.compareDocumentPosition(arg) & 16) - } - } - avalon.contains = function (root, el) { - try { - while ((el = el.parentNode)) - if (el === root) - return true - return false - } catch (e) { - return false - } - } - - if (window.SVGElement) { - var svgns = "http://www.w3.org/2000/svg" - var svg = DOC.createElementNS(svgns, "svg") - svg.innerHTML = '' - if (!rsvg.test(svg.firstChild)) {// #409 - /* jshint ignore:start */ - function enumerateNode(node, targetNode) { - if (node && node.childNodes) { - var nodes = node.childNodes - for (var i = 0, el; el = nodes[i++];) { - if (el.tagName) { - var svg = DOC.createElementNS(svgns, - el.tagName.toLowerCase()) - // copy attrs - ap.forEach.call(el.attributes, function (attr) { - svg.setAttribute(attr.name, attr.value) - }) - // 递归处ç†å­èŠ‚点 - enumerateNode(el, svg) - targetNode.appendChild(svg) - } - } - } - } - - /* jshint ignore:end */ - Object.defineProperties(SVGElement.prototype, { - "outerHTML": {//IE9-11,firefoxä¸æ”¯æŒSVG元素的innerHTML,outerHTML属性 - enumerable: true, - configurable: true, - get: function () { - return new XMLSerializer().serializeToString(this) - }, - set: function (html) { - var tagName = this.tagName.toLowerCase(), - par = this.parentNode, - frag = avalon.parseHTML(html) - // æ“作的svg,直接æ’å…¥ - if (tagName === "svg") { - par.insertBefore(frag, this) - // svg节点的å­èŠ‚点类似 - } else { - var newFrag = DOC.createDocumentFragment() - enumerateNode(frag, newFrag) - par.insertBefore(newFrag, this) - } - par.removeChild(this) - } - }, - "innerHTML": { - enumerable: true, - configurable: true, - get: function () { - var s = this.outerHTML - var ropen = new RegExp("<" + this.nodeName + '\\b(?:(["\'])[^"]*?(\\1)|[^>])*>', "i") - var rclose = new RegExp("<\/" + this.nodeName + ">$", "i") - return s.replace(ropen, "").replace(rclose, "") - }, - set: function (html) { - if (avalon.clearHTML) { - avalon.clearHTML(this) - var frag = avalon.parseHTML(html) - enumerateNode(frag, this) - } - } - } - }) - } - } -//========================= event binding ==================== - var eventHooks = avalon.eventHooks -//针对firefox, chrome修正mouseenter, mouseleave(chrome30+) - if (!("onmouseenter" in root)) { - avalon.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" - }, function (origType, fixType) { - eventHooks[origType] = { - type: fixType, - deel: function (elem, _, fn) { - return function (e) { - var t = e.relatedTarget - if (!t || (t !== elem && !(elem.compareDocumentPosition(t) & 16))) { - delete e.type - e.type = origType - return fn.call(elem, e) - } - } - } - } - }) - } -//针对IE9+, w3c修正animationend - avalon.each({ - AnimationEvent: "animationend", - WebKitAnimationEvent: "webkitAnimationEnd" - }, function (construct, fixType) { - if (window[construct] && !eventHooks.animationend) { - eventHooks.animationend = { - type: fixType - } - } - }) - - if (DOC.onmousewheel === void 0) { - /* IE6-11 chrome mousewheel wheelDetla 下 -120 上 120 - firefox DOMMouseScroll detail 下3 上-3 - firefox wheel detlaY 下3 上-3 - IE9-11 wheel deltaY 下40 上-40 - chrome wheel deltaY 下100 上-100 */ - eventHooks.mousewheel = { - type: "wheel", - deel: function (elem, _, fn) { - return function (e) { - e.wheelDeltaY = e.wheelDelta = e.deltaY > 0 ? -120 : 120 - e.wheelDeltaX = 0 - Object.defineProperty(e, "type", { - value: "mousewheel" - }) - fn.call(elem, e) - } - } - } - } - - /********************************************************************* - * é…置系统 * - **********************************************************************/ - - function kernel(settings) { - for (var p in settings) { - if (!ohasOwn.call(settings, p)) - continue - var val = settings[p] - if (typeof kernel.plugins[p] === "function") { - kernel.plugins[p](val) - } else if (typeof kernel[p] === "object") { - avalon.mix(kernel[p], val) - } else { - kernel[p] = val - } - } - return this - } - - var openTag, closeTag, rexpr, rexprg, rbind, rregexp = /[-.*+?^${}()|[\]\/\\]/g - - function escapeRegExp(target) { - //http://stevenlevithan.com/regex/xregexp/ - //将字符串安全格å¼åŒ–为正则表达å¼çš„æºç  - return (target + "").replace(rregexp, "\\$&") - } - - var plugins = { - loader: function (builtin) { - var flag = innerRequire && builtin - window.require = flag ? innerRequire : otherRequire - window.define = flag ? innerRequire.define : otherDefine - }, - interpolate: function (array) { - openTag = array[0] - closeTag = array[1] - if (openTag === closeTag) { - throw new SyntaxError("openTag!==closeTag") - } else if (array + "" === "") { - kernel.commentInterpolate = true - } else { - var test = openTag + "test" + closeTag - cinerator.innerHTML = test - if (cinerator.innerHTML !== test && cinerator.innerHTML.indexOf("<") > -1) { - throw new SyntaxError("此定界符ä¸åˆæ³•") - } - cinerator.innerHTML = "" - } - var o = escapeRegExp(openTag), - c = escapeRegExp(closeTag) - rexpr = new RegExp(o + "(.*?)" + c) - rexprg = new RegExp(o + "(.*?)" + c, "g") - rbind = new RegExp(o + ".*?" + c + "|\\sms-") - } - } - - kernel.debug = true - kernel.plugins = plugins - kernel.plugins['interpolate'](["{{", "}}"]) - kernel.paths = {} - kernel.shim = {} - kernel.maxRepeatSize = 100 - avalon.config = kernel - var ravalon = /(\w+)\[(avalonctrl)="(\S+)"\]/ - var findNodes = function (str) { - return DOC.querySelectorAll(str) - } - /********************************************************************* - * 事件总线 * - **********************************************************************/ - var EventBus = { - $watch: function (type, callback) { - if (typeof callback === "function") { - var callbacks = this.$events[type] - if (callbacks) { - callbacks.push(callback) - } else { - this.$events[type] = [callback] - } - } else { //é‡æ–°å¼€å§‹ç›‘å¬æ­¤VM的第一é‡ç®€å•å±žæ€§çš„å˜åŠ¨ - this.$events = this.$watch.backup - } - return this - }, - $unwatch: function (type, callback) { - var n = arguments.length - if (n === 0) { //让此VM的所有$watch回调无效化 - this.$watch.backup = this.$events - this.$events = {} - } else if (n === 1) { - this.$events[type] = [] - } else { - var callbacks = this.$events[type] || [] - var i = callbacks.length - while (~--i < 0) { - if (callbacks[i] === callback) { - return callbacks.splice(i, 1) - } - } - } - return this - }, - $fire: function (type) { - var special, i, v, callback - if (/^(\w+)!(\S+)$/.test(type)) { - special = RegExp.$1 - type = RegExp.$2 - } - var events = this.$events - if (!events) - return - var args = aslice.call(arguments, 1) - var detail = [type].concat(args) - if (special === "all") { - for (i in avalon.vmodels) { - v = avalon.vmodels[i] - if (v !== this) { - v.$fire.apply(v, detail) - } - } - } else if (special === "up" || special === "down") { - var elements = events.expr ? findNodes(events.expr) : [] - if (elements.length === 0) - return - for (i in avalon.vmodels) { - v = avalon.vmodels[i] - if (v !== this) { - if (v.$events.expr) { - var eventNodes = findNodes(v.$events.expr) - if (eventNodes.length === 0) { - continue - } - //循环两个vmodel中的节点,查找匹é…(å‘上匹é…或者å‘下匹é…)的节点并设置标识 - /* jshint ignore:start */ - Array.prototype.forEach.call(eventNodes, function (node) { - Array.prototype.forEach.call(elements, function (element) { - var ok = special === "down" ? element.contains(node) : //å‘下æ•èŽ· - node.contains(element) //å‘上冒泡 - if (ok) { - node._avalon = v //符åˆæ¡ä»¶çš„加一个标识 - } - }); - }) - /* jshint ignore:end */ - } - } - } - var nodes = DOC.getElementsByTagName("*") //å®žçŽ°èŠ‚ç‚¹æŽ’åº - var alls = [] - Array.prototype.forEach.call(nodes, function (el) { - if (el._avalon) { - alls.push(el._avalon) - el._avalon = "" - el.removeAttribute("_avalon") - } - }) - if (special === "up") { - alls.reverse() - } - for (i = 0; callback = alls[i++];) { - if (callback.$fire.apply(callback, detail) === false) { - break - } - } - } else { - var callbacks = events[type] || [] - var all = events.$all || [] - for (i = 0; callback = callbacks[i++];) { - if (isFunction(callback)) - callback.apply(this, args) - } - for (i = 0; callback = all[i++];) { - if (isFunction(callback)) - callback.apply(this, arguments) - } - } - } - } - - /********************************************************************* - * modelFactory * - **********************************************************************/ -//avalon最核心的方法的两个方法之一(å¦ä¸€ä¸ªæ˜¯avalon.scan),返回一个ViewModel(VM) - var VMODELS = avalon.vmodels = createMap() //所有vmodel都储存在这里 - avalon.define = function (id, factory) { - var $id = id.$id || id - if (!$id) { - log("warning: vm必须指定$id") - } - if (VMODELS[$id]) { - log("warning: " + $id + " å·²ç»å­˜åœ¨äºŽavalon.vmodels中") - } - if (typeof id === "object") { - var model = modelFactory(id) - } else { - var scope = { - $watch: noop - } - factory(scope) //得到所有定义 - model = modelFactory(scope) //å·å¤©æ¢æ—¥ï¼Œå°†scopeæ¢ä¸ºmodel - stopRepeatAssign = true - factory(model) - stopRepeatAssign = false - } - model.$id = $id - return VMODELS[$id] = model - } - -//一些ä¸éœ€è¦è¢«ç›‘å¬çš„属性 - var $$skipArray = String("$id,$watch,$unwatch,$fire,$events,$model,$skipArray").match(rword) - - function isObservable(name, value, $skipArray) { - if (isFunction(value) || value && value.nodeType) { - return false - } - if ($skipArray.indexOf(name) !== -1) { - return false - } - if ($$skipArray.indexOf(name) !== -1) { - return false - } - var $special = $skipArray.$special - if (name && name.charAt(0) === "$" && !$special[name]) { - return false - } - return true - } - -//ms-with,ms-each, ms-repeat绑定生æˆçš„代ç†å¯¹è±¡å‚¨å­˜æ±  - var midway = createMap() - - function getNewValue(accessor, name, value, $vmodel) { - switch (accessor.type) { - case 0://计算属性 - var getter = accessor.get - var setter = accessor.set - if (isFunction(setter)) { - var $events = $vmodel.$events - var lock = $events[name] - $events[name] = [] //清空回调,防止内部冒泡而触å‘多次$fire - setter.call($vmodel, value) - $events[name] = lock - } - return getter.call($vmodel) //åŒæ­¥$model - case 1://监控属性 - return value - case 2://对象属性(包括数组与哈希) - if (value !== $vmodel.$model[name]) { - var svmodel = accessor.svmodel = objectFactory($vmodel, name, value, accessor.valueType) - value = svmodel.$model //åŒæ­¥$model - var fn = midway[svmodel.$id] - fn && fn() //åŒæ­¥è§†å›¾ - } - return value - } - } - - function modelFactory(source, $special, $model) { - if (Array.isArray(source)) { - var arr = source.concat() - source.length = 0 - var collection = Collection(source)// jshint ignore:line - collection.pushArray(arr) - return collection - } - //0 null undefined || Node || VModel - if (!source || source.nodeType > 0 || (source.$id && source.$events)) { - return source - } - if (!Array.isArray(source.$skipArray)) { - source.$skipArray = [] - } - source.$skipArray.$special = $special || createMap() //强制è¦ç›‘å¬çš„属性 - var $vmodel = {} //è¦è¿”回的对象, 它在IE6-8下å¯èƒ½è¢«å·é¾™è½¬å‡¤ - $model = $model || {} //vmodels.$model属性 - var $events = createMap() //vmodel.$events属性 - var watchedProperties = createMap() //监控属性 - var initCallbacks = [] //åˆå§‹åŒ–æ‰æ‰§è¡Œçš„函数 - for (var i in source) { - (function (name, val) { - $model[name] = val - if (!isObservable(name, val, source.$skipArray)) { - return //过滤所有éžç›‘控属性 - } - //总共产生三ç§accessor - $events[name] = [] - var valueType = avalon.type(val) - var accessor = function (newValue) { - var name = accessor._name - var $vmodel = this - var $model = $vmodel.$model - var oldValue = $model[name] - var $events = $vmodel.$events - - if (arguments.length) { - if (stopRepeatAssign) { - return - } - //计算属性与对象属性需è¦é‡æ–°è®¡ç®—newValue - if (accessor.type !== 1) { - newValue = getNewValue(accessor, name, newValue, $vmodel) - if (!accessor.type) - return - } - if (!isEqual(oldValue, newValue)) { - $model[name] = newValue - notifySubscribers($events[name]) //åŒæ­¥è§†å›¾ - safeFire($vmodel, name, newValue, oldValue) //触å‘$watch回调 - } - } else { - if (accessor.type === 0) { //type 0 计算属性 1 监控属性 2 对象属性 - //计算属性ä¸éœ€è¦æ”¶é›†è§†å›¾åˆ·æ–°å‡½æ•°,都是由其他监控属性代劳 - newValue = accessor.get.call($vmodel) - if (oldValue !== newValue) { - $model[name] = newValue - //这里ä¸ç”¨åŒæ­¥è§†å›¾ - safeFire($vmodel, name, newValue, oldValue) //触å‘$watch回调 - } - return newValue - } else { - collectSubscribers($events[name]) //收集视图函数 - return accessor.svmodel || oldValue - } - } - } - //总共产生三ç§accessor - if (valueType === "object" && isFunction(val.get) && Object.keys(val).length <= 2) { - //第1ç§ä¸ºè®¡ç®—属性, å› å˜é‡ï¼Œé€šè¿‡å…¶ä»–监控属性触å‘å…¶æ”¹å˜ - accessor.set = val.set - accessor.get = val.get - accessor.type = 0 - initCallbacks.push(function () { - var data = { - evaluator: function () { - data.type = Math.random(), - data.element = null - $model[name] = accessor.get.call($vmodel) - }, - element: head, - type: Math.random(), - handler: noop, - args: [] - } - Registry[expose] = data - accessor.call($vmodel) - delete Registry[expose] - }) - } else if (rcomplexType.test(valueType)) { - //第2ç§ä¸ºå¯¹è±¡å±žæ€§ï¼Œäº§ç”Ÿå­VM与监控数组 - accessor.type = 2 - accessor.valueType = valueType - initCallbacks.push(function () { - var svmodel = modelFactory(val, 0, $model[name]) - accessor.svmodel = svmodel - svmodel.$events[subscribers] = $events[name] - }) - } else { - accessor.type = 1 - //第3ç§ä¸ºç›‘控属性,对应简å•çš„æ•°æ®ç±»åž‹ï¼Œè‡ªå˜é‡ - } - accessor._name = name - watchedProperties[name] = accessor - })(i, source[i])// jshint ignore:line - } - - $$skipArray.forEach(function (name) { - delete source[name] - delete $model[name] //这些特殊属性ä¸åº”该在$model中出现 - }) - - $vmodel = Object.defineProperties($vmodel, descriptorFactory(watchedProperties), source) //生æˆä¸€ä¸ªç©ºçš„ViewModel - for (var name in source) { - if (!watchedProperties[name]) { - $vmodel[name] = source[name] - } - } - //添加$id, $model, $events, $watch, $unwatch, $fire - $vmodel.$id = generateID() - $vmodel.$model = $model - $vmodel.$events = $events - for (i in EventBus) { - $vmodel[i] = EventBus[i] - } - - Object.defineProperty($vmodel, "hasOwnProperty", { - value: function (name) { - return name in this.$model - }, - writable: false, - enumerable: false, - configurable: true - }) - - initCallbacks.forEach(function (cb) { //收集ä¾èµ– - cb() - }) - return $vmodel - } - -//比较两个值是å¦ç›¸ç­‰ - var isEqual = Object.is || function (v1, v2) { - if (v1 === 0 && v2 === 0) { - return 1 / v1 === 1 / v2 - } else if (v1 !== v1) { - return v2 !== v2 - } else { - return v1 === v2 - } - } - - function safeFire(a, b, c, d) { - if (a.$events) { - EventBus.$fire.call(a, b, c, d) - } - } - - var descriptorFactory = function (obj) { - var descriptors = createMap() - for (var i in obj) { - descriptors[i] = { - get: obj[i], - set: obj[i], - enumerable: true, - configurable: true - } - } - return descriptors - } - -//应用于第2ç§accessor - function objectFactory(parent, name, value, valueType) { - //a为原æ¥çš„VM, b为新数组或新对象 - var son = parent[name] - if (valueType === "array") { - if (!Array.isArray(value) || son === value) { - return son //fix https://github.com/RubyLouvre/avalon/issues/261 - } - son._.$unwatch() - son.clear() - son._.$watch() - son.pushArray(value.concat()) - return son - } else { - var iterators = parent.$events[name] - var ret = modelFactory(value) - ret.$events[subscribers] = iterators - midway[ret.$id] = function (data) { - while (data = iterators.shift()) { - (function (el) { - avalon.nextTick(function () { - var type = el.type - if (type && bindingHandlers[type]) { //#753 - el.rollback && el.rollback() //还原 ms-with ms-on - bindingHandlers[type](el, el.vmodels) - } - }) - })(data)// jshint ignore:line - } - delete midway[ret.$id] - } - return ret - } - } - - /********************************************************************* - * 监控数组(与ms-each, ms-repeaté…åˆä½¿ç”¨ï¼‰ * - **********************************************************************/ - - function Collection(model) { - var array = [] - array.$id = generateID() - array.$model = model //æ•°æ®æ¨¡åž‹ - array.$events = {} - array.$events[subscribers] = [] - array._ = modelFactory({ - length: model.length - }) - array._.$watch("length", function (a, b) { - array.$fire("length", a, b) - }) - for (var i in EventBus) { - array[i] = EventBus[i] - } - array.$map = { - el: 1 - } - array.$proxy = [] - avalon.mix(array, CollectionPrototype) - return array - } - - function mutateArray(method, pos, n, index, method2, pos2, n2) { - var oldLen = this.length, loop = 2 - while (--loop) { - switch (method) { - case "add": - /* jshint ignore:start */ - var m = pos + n - var array = this.$model.slice(pos, m).map(function (el) { - if (rcomplexType.test(avalon.type(el))) {//转æ¢ä¸ºVM - return el.$id ? el : modelFactory(el, 0, el) - } else { - return el - } - }) - /* jshint ignore:end */ - for (var i = pos; i < m; i++) {//生æˆä»£ç†VM - var proxy = eachProxyAgent(i, this) - this.$proxy.splice(i, 0, proxy) - } - _splice.apply(this, [pos, 0].concat(array)) - this._fire("add", pos, n) - break - case "del": - var ret = this._splice(pos, n) - var removed = this.$proxy.splice(pos, n) //回收代ç†VM - recycleProxies(removed, "each") - this._fire("del", pos, n) - break - } - if (method2) { - method = method2 - pos = pos2 - n = n2 - loop = 2 - method2 = 0 - } - } - resetIndex(this.$proxy, index) - if (this.length !== oldLen) { - this._.length = this.length - } - return ret - } - - var _splice = ap.splice - var CollectionPrototype = { - _splice: _splice, - _fire: function (method, a, b) { - notifySubscribers(this.$events[subscribers], method, a, b) - }, - size: function () { //å–得数组长度,这个函数å¯ä»¥åŒæ­¥è§†å›¾ï¼Œlengthä¸èƒ½ - return this._.length - }, - pushArray: function (array) { - var m = array.length, n = this.length - if (m) { - ap.push.apply(this.$model, array) - mutateArray.call(this, "add", n, m, Math.max(0, n - 1)) - } - return m + n - }, - push: function () { - //http://jsperf.com/closure-with-arguments - var array = [] - var i, n = arguments.length - for (i = 0; i < n; i++) { - array[i] = arguments[i] - } - return this.pushArray(array) - }, - unshift: function () { - var m = arguments.length, n = this.length - if (m) { - ap.unshift.apply(this.$model, arguments) - mutateArray.call(this, "add", 0, m, 0) - } - return m + n //IE67çš„unshiftä¸ä¼šè¿”回长度 - }, - shift: function () { - if (this.length) { - var el = this.$model.shift() - mutateArray.call(this, "del", 0, 1, 0) - return el //返回被移除的元素 - } - }, - pop: function () { - var n = this.length - if (n) { - var el = this.$model.pop() - mutateArray.call(this, "del", n - 1, 1, Math.max(0, n - 2)) - return el //返回被移除的元素 - } - }, - splice: function (start) { - var m = arguments.length, args = [], change - var removed = _splice.apply(this.$model, arguments) - if (removed.length) { //如果用户删掉了元素 - args.push("del", start, removed.length, 0) - change = true - } - if (m > 2) { //如果用户添加了元素 - if (change) { - args.splice(3, 1, 0, "add", start, m - 2) - } else { - args.push("add", start, m - 2, 0) - } - change = true - } - if (change) { //返回被移除的元素 - return mutateArray.apply(this, args) - } else { - return [] - } - }, - contains: function (el) { //判定是å¦åŒ…å« - return this.indexOf(el) !== -1 - }, - remove: function (el) { //移除第一个等于给定值的元素 - return this.removeAt(this.indexOf(el)) - }, - removeAt: function (index) { //移除指定索引上的元素 - if (index >= 0) { - this.$model.splice(index, 1) - return mutateArray.call(this, "del", index, 1, 0) - } - return [] - }, - clear: function () { - recycleProxies(this.$proxy, "each") - this.$model.length = this.$proxy.length = this.length = this._.length = 0 //清空数组 - this._fire("clear", 0) - return this - }, - removeAll: function (all) { //移除N个元素 - if (Array.isArray(all)) { - all.forEach(function (el) { - this.remove(el) - }, this) - } else if (typeof all === "function") { - for (var i = this.length - 1; i >= 0; i--) { - var el = this[i] - if (all(el, i)) { - this.removeAt(i) - } - } - } else { - this.clear() - } - }, - ensure: function (el) { - if (!this.contains(el)) { //åªæœ‰ä¸å­˜åœ¨æ‰push - this.push(el) - } - return this - }, - set: function (index, val) { - if (index >= 0) { - var valueType = avalon.type(val) - if (val && val.$model) { - val = val.$model - } - var target = this[index] - if (valueType === "object") { - for (var i in val) { - if (target.hasOwnProperty(i)) { - target[i] = val[i] - } - } - } else if (valueType === "array") { - target.clear().push.apply(target, val) - } else if (target !== val) { - this[index] = val - this.$model[index] = val - var proxy = this.$proxy[index] - if (proxy) { - notifySubscribers(proxy.$events.el) - } - // this._fire("set", index, val) - } - } - return this - } - } -//相当于原æ¥bindingExecutors.repeat çš„index分支 - function resetIndex(array, pos) { - var last = array.length - 1 - for (var el; el = array[pos]; pos++) { - el.$index = pos - el.$first = pos === 0 - el.$last = pos === last - } - } - - function sortByIndex(array, indexes) { - var map = {}; - for (var i = 0, n = indexes.length; i < n; i++) { - map[i] = array[i] // preserve - var j = indexes[i] - if (j in map) { - array[i] = map[j] - delete map[j] - } else { - array[i] = array[j] - } - } - } - - "sort,reverse".replace(rword, function (method) { - CollectionPrototype[method] = function () { - var newArray = this.$model//这是è¦æŽ’åºçš„新数组 - var oldArray = newArray.concat() //ä¿æŒåŽŸæ¥çŠ¶æ€çš„旧数组 - var mask = Math.random() - var indexes = [] - var hasSort - ap[method].apply(newArray, arguments) //æŽ’åº - for (var i = 0, n = oldArray.length; i < n; i++) { - var neo = newArray[i] - var old = oldArray[i] - if (isEqual(neo, old)) { - indexes.push(i) - } else { - var index = oldArray.indexOf(neo) - indexes.push(index)//得到新数组的æ¯ä¸ªå…ƒç´ åœ¨æ—§æ•°ç»„对应的ä½ç½® - oldArray[index] = mask //å±è”½å·²ç»æ‰¾è¿‡çš„元素 - hasSort = true - } - } - if (hasSort) { - sortByIndex(this, indexes) - sortByIndex(this.$proxy, indexes) - this._fire("move", indexes) - resetIndex(this.$proxy, 0) - } - return this - } - }) - - /********************************************************************* - * ä¾èµ–调度系统 * - **********************************************************************/ - var ronduplex = /^(duplex|on)$/ - - avalon.injectBinding = function (data) { - Registry[expose] = data //暴光此函数,方便collectSubscribers收集 - avalon.openComputedCollect = true - var fn = data.evaluator - if (fn) { //如果是求值函数 - try { - var c = ronduplex.test(data.type) ? data : fn.apply(0, data.args) - if (!data.noRefresh) - data.handler(c, data.element, data) - } catch (e) { - //log("warning:exception throwed in [avalon.injectBinding] " + e) - delete data.evaluator - var node = data.element - if (node.nodeType === 3) { - var parent = node.parentNode - if (kernel.commentInterpolate) { - parent.replaceChild(DOC.createComment(data.value), node) - } else { - node.data = openTag + data.value + closeTag - } - } - } - } - avalon.openComputedCollect = false - delete Registry[expose] - } - - function collectSubscribers(list) { //收集ä¾èµ–于这个访问器的订阅者 - var data = Registry[expose] - if (list && data && avalon.Array.ensure(list, data) && data.element) { //åªæœ‰æ•°ç»„ä¸å­˜åœ¨æ­¤å…ƒç´ æ‰push进去 - addSubscribers(data, list) - } - } - - - function addSubscribers(data, list) { - data.$uuid = data.$uuid || generateID() - list.$uuid = list.$uuid || generateID() - var obj = { - data: data, - list: list, - $$uuid: data.$uuid + list.$uuid - } - if (!$$subscribers[obj.$$uuid]) { - $$subscribers[obj.$$uuid] = 1 - $$subscribers.push(obj) - } - } - - function disposeData(data) { - data.element = null - data.rollback && data.rollback() - for (var key in data) { - data[key] = null - } - } - - function isRemove(el) { - try {//IE下,如果文本节点脱离DOM树,访问parentNode会报错 - if (!el.parentNode) { - return true - } - } catch (e) { - return true - } - return el.msRetain ? 0 : (el.nodeType === 1 ? typeof el.sourceIndex === "number" ? - el.sourceIndex === 0 : !root.contains(el) : !avalon.contains(root, el)) - } - - var $$subscribers = avalon.$$subscribers = [] - var beginTime = new Date() - var oldInfo = {} - - function removeSubscribers() { - var i = $$subscribers.length - var n = i - var k = 0 - var obj - var types = [] - var newInfo = {} - var needTest = {} - while (obj = $$subscribers[--i]) { - var data = obj.data - var type = data.type - if (newInfo[type]) { - newInfo[type]++ - } else { - newInfo[type] = 1 - types.push(type) - } - } - var diff = false - types.forEach(function (type) { - if (oldInfo[type] !== newInfo[type]) { - needTest[type] = 1 - diff = true - } - }) - i = n - //avalon.log("需è¦æ£€æµ‹çš„个数 " + i) - if (diff) { - //avalon.log("有需è¦ç§»é™¤çš„元素") - while (obj = $$subscribers[--i]) { - data = obj.data - if (data.element === void 0) - continue - if (needTest[data.type] && isRemove(data.element)) { //如果它没有在DOMæ ‘ - k++ - $$subscribers.splice(i, 1) - delete $$subscribers[obj.$$uuid] - avalon.Array.remove(obj.list, data) - //log("debug: remove " + data.type) - disposeData(data) - obj.data = obj.list = null - } - } - } - oldInfo = newInfo - // avalon.log("å·²ç»ç§»é™¤çš„个数 " + k) - beginTime = new Date() - } - - function notifySubscribers(list) { //通知ä¾èµ–于这个访问器的订阅者更新自身 - if (list && list.length) { - if (new Date() - beginTime > 444 && typeof list[0] === "object") { - removeSubscribers() - } - var args = aslice.call(arguments, 1) - for (var i = list.length, fn; fn = list[--i];) { - var el = fn.element - if (el && el.parentNode) { - if (fn.$repeat) { - fn.handler.apply(fn, args) //处ç†ç›‘控数组的方法 - } else if (fn.type !== "on") { //事件绑定åªèƒ½ç”±ç”¨æˆ·è§¦å‘,ä¸èƒ½ç”±ç¨‹åºè§¦å‘ - var fun = fn.evaluator || noop - fn.handler(fun.apply(0, fn.args || []), el, fn) - } - } - } - } - } - - /************************************************************************ - * HTML处ç†(parseHTML, innerHTML, clearHTML) * - **************************************************************************/ -//parseHTML的辅助å˜é‡ - var tagHooks = new function () {// jshint ignore:line - avalon.mix(this, { - option: DOC.createElement("select"), - thead: DOC.createElement("table"), - td: DOC.createElement("tr"), - area: DOC.createElement("map"), - tr: DOC.createElement("tbody"), - col: DOC.createElement("colgroup"), - legend: DOC.createElement("fieldset"), - _default: DOC.createElement("div"), - "g": DOC.createElementNS("http://www.w3.org/2000/svg", "svg") - }) - this.optgroup = this.option - this.tbody = this.tfoot = this.colgroup = this.caption = this.thead - this.th = this.td - }// jshint ignore:line - - String("circle,defs,ellipse,image,line,path,polygon,polyline,rect,symbol,text,use").replace(rword, function (tag) { - tagHooks[tag] = tagHooks.g //处ç†SVG - }) - var rtagName = /<([\w:]+)/ - var rxhtml = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig - var scriptTypes = oneObject(["", "text/javascript", "text/ecmascript", "application/ecmascript", "application/javascript"]) - var script = DOC.createElement("script") - var rhtml = /<|&#?\w+;/ - avalon.parseHTML = function (html) { - var fragment = hyperspace.cloneNode(false) - if (typeof html !== "string") { - return fragment - } - if (!rhtml.test(html)) { - fragment.appendChild(DOC.createTextNode(html)) - return fragment - } - html = html.replace(rxhtml, "<$1>").trim() - var tag = (rtagName.exec(html) || ["", ""])[1].toLowerCase(), - //å–得其标签å - wrapper = tagHooks[tag] || tagHooks._default, - firstChild - wrapper.innerHTML = html - var els = wrapper.getElementsByTagName("script") - if (els.length) { //使用innerHTML生æˆçš„script节点ä¸ä¼šå‘出请求与执行text属性 - for (var i = 0, el; el = els[i++];) { - if (scriptTypes[el.type]) { - var neo = script.cloneNode(false) //FFä¸èƒ½çœç•¥å‚æ•° - ap.forEach.call(el.attributes, function (attr) { - neo.setAttribute(attr.name, attr.value) - })// jshint ignore:line - neo.text = el.text - el.parentNode.replaceChild(neo, el) - } - } - } - - while (firstChild = wrapper.firstChild) { // å°†wrapperä¸Šçš„èŠ‚ç‚¹è½¬ç§»åˆ°æ–‡æ¡£ç¢Žç‰‡ä¸Šï¼ - fragment.appendChild(firstChild) - } - return fragment - } - - avalon.innerHTML = function (node, html) { - var a = this.parseHTML(html) - this.clearHTML(node).appendChild(a) - } - - avalon.clearHTML = function (node) { - node.textContent = "" - while (node.firstChild) { - node.removeChild(node.firstChild) - } - return node - } - - /********************************************************************* - * 扫æ系统 * - **********************************************************************/ - - avalon.scan = function (elem, vmodel) { - elem = elem || root - var vmodels = vmodel ? [].concat(vmodel) : [] - scanTag(elem, vmodels) - } - -//http://www.w3.org/TR/html5/syntax.html#void-elements - var stopScan = oneObject("area,base,basefont,br,col,command,embed,hr,img,input,link,meta,param,source,track,wbr,noscript,script,style,textarea".toUpperCase()) - - function checkScan(elem, callback, innerHTML) { - var id = setTimeout(function () { - var currHTML = elem.innerHTML - clearTimeout(id) - if (currHTML === innerHTML) { - callback() - } else { - checkScan(elem, callback, currHTML) - } - }) - } - - - function createSignalTower(elem, vmodel) { - var id = elem.getAttribute("avalonctrl") || vmodel.$id - elem.setAttribute("avalonctrl", id) - vmodel.$events.expr = elem.tagName + '[avalonctrl="' + id + '"]' - } - - var getBindingCallback = function (elem, name, vmodels) { - var callback = elem.getAttribute(name) - if (callback) { - for (var i = 0, vm; vm = vmodels[i++];) { - if (vm.hasOwnProperty(callback) && typeof vm[callback] === "function") { - return vm[callback] - } - } - } - } - - function executeBindings(bindings, vmodels) { - for (var i = 0, data; data = bindings[i++];) { - data.vmodels = vmodels - bindingHandlers[data.type](data, vmodels) - if (data.evaluator && data.element && data.element.nodeType === 1) { //移除数æ®ç»‘å®šï¼Œé˜²æ­¢è¢«äºŒæ¬¡è§£æž - //chrome使用removeAttributeNode移除ä¸å­˜åœ¨çš„特性节点时会报错 https://github.com/RubyLouvre/avalon/issues/99 - data.element.removeAttribute(data.name) - } - } - bindings.length = 0 - } - -//https://github.com/RubyLouvre/avalon/issues/636 - var mergeTextNodes = IEVersion && window.MutationObserver ? function (elem) { - var node = elem.firstChild, text - while (node) { - var aaa = node.nextSibling - if (node.nodeType === 3) { - if (text) { - text.nodeValue += node.nodeValue - elem.removeChild(node) - } else { - text = node - } - } else { - text = null - } - node = aaa - } - } : 0 - - var rmsAttr = /ms-(\w+)-?(.*)/ - var priorityMap = { - "if": 10, - "repeat": 90, - "data": 100, - "widget": 110, - "each": 1400, - "with": 1500, - "duplex": 2000, - "on": 3000 - } - - var events = oneObject("animationend,blur,change,input,click,dblclick,focus,keydown,keypress,keyup,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,scan,scroll,submit") - var obsoleteAttrs = oneObject("value,title,alt,checked,selected,disabled,readonly,enabled") - - function bindingSorter(a, b) { - return a.priority - b.priority - } - - function scanAttr(elem, vmodels) { - //防止setAttribute, removeAttributeæ—¶ attributes自动被åŒæ­¥,导致for循环出错 - var attributes = elem.hasAttributes() ? avalon.slice(elem.attributes) : [] - var bindings = [], - msData = createMap(), - match - for (var i = 0, attr; attr = attributes[i++];) { - if (attr.specified) { - if (match = attr.name.match(rmsAttr)) { - //如果是以指定å‰ç¼€å‘½åçš„ - var type = match[1] - var param = match[2] || "" - var value = attr.value - var name = attr.name - msData[name] = value - if (events[type]) { - param = type - type = "on" - } else if (obsoleteAttrs[type]) { - log("warning!请改用ms-attr-" + type + "代替ms-" + type + "ï¼") - if (type === "enabled") {//åƒæŽ‰ms-enabled绑定,用ms-disabled代替 - log("warning!ms-enabled或ms-attr-enabledå·²ç»è¢«åºŸå¼ƒ") - type = "disabled" - value = "!(" + value + ")" - } - param = type - type = "attr" - elem.removeAttribute(name) - name = "ms-attr-" + param - elem.setAttribute(name, value) - match = [name] - msData[name] = value - } - if (typeof bindingHandlers[type] === "function") { - var binding = { - type: type, - param: param, - element: elem, - name: match[0], - value: value, - priority: type in priorityMap ? priorityMap[type] : type.charCodeAt(0) * 10 + (Number(param) || 0) - } - if (type === "html" || type === "text") { - var token = getToken(value) - avalon.mix(binding, token) - binding.filters = binding.filters.replace(rhasHtml, function () { - binding.type = "html" - binding.group = 1 - return "" - })// jshint ignore:line - } - if (name === "ms-if-loop") { - binding.priority += 100 - } - if (vmodels.length) { - bindings.push(binding) - if (type === "widget") { - elem.msData = elem.msData || msData - } - } - } - } - } - } - var control = elem.type - if (control && msData["ms-duplex"]) { - if (msData["ms-attr-checked"] && /radio|checkbox/.test(control)) { - log("warning!" + control + "控件ä¸èƒ½åŒæ—¶å®šä¹‰ms-attr-checked与ms-duplex") - } - if (msData["ms-attr-value"] && /text|password/.test(control)) { - log("warning!" + control + "控件ä¸èƒ½åŒæ—¶å®šä¹‰ms-attr-value与ms-duplex") - } - } - bindings.sort(bindingSorter) - var scanNode = true - for (i = 0; binding = bindings[i]; i++) { - type = binding.type - if (rnoscanAttrBinding.test(type)) { - return executeBindings(bindings.slice(0, i + 1), vmodels) - } else if (scanNode) { - scanNode = !rnoscanNodeBinding.test(type) - } - } - executeBindings(bindings, vmodels) - if (scanNode && !stopScan[elem.tagName] && rbind.test(elem.innerHTML + elem.textContent)) { - mergeTextNodes && mergeTextNodes(elem) - scanNodeList(elem, vmodels) //扫æå­å­™å…ƒç´  - } - } - - var rnoscanAttrBinding = /^if|widget|repeat$/ - var rnoscanNodeBinding = /^each|with|html|include$/ - - function scanNodeList(parent, vmodels) { - var node = parent.firstChild - while (node) { - var nextNode = node.nextSibling - scanNode(node, node.nodeType, vmodels) - node = nextNode - } - } - - function scanNodeArray(nodes, vmodels) { - for (var i = 0, node; node = nodes[i++];) { - scanNode(node, node.nodeType, vmodels) - } - } - - function scanNode(node, nodeType, vmodels) { - if (nodeType === 1) { - scanTag(node, vmodels) //扫æ元素节点 - if (node.msCallback) { - node.msCallback() - node.msCallback = void 0 - } - } else if (nodeType === 3 && rexpr.test(node.data)) { - scanText(node, vmodels) //扫æ文本节点 - } else if (kernel.commentInterpolate && nodeType === 8 && !rexpr.test(node.nodeValue)) { - scanText(node, vmodels) //扫æ注释节点 - } - } - - function scanTag(elem, vmodels, node) { - //扫æé¡ºåº ms-skip(0) --> ms-important(1) --> ms-controller(2) --> ms-if(10) --> ms-repeat(100) - //--> ms-if-loop(110) --> ms-attr(970) ...--> ms-each(1400)-->ms-with(1500)--〉ms-duplex(2000)åž«åŽ - var a = elem.getAttribute("ms-skip") - var b = elem.getAttributeNode("ms-important") - var c = elem.getAttributeNode("ms-controller") - if (typeof a === "string") { - return - } else if (node = b || c) { - var newVmodel = avalon.vmodels[node.value] - if (!newVmodel) { - return - } - //ms-importantä¸åŒ…å«çˆ¶VM,ms-controller相å - vmodels = node === b ? [newVmodel] : [newVmodel].concat(vmodels) - elem.removeAttribute(node.name) //removeAttributeNodeä¸ä¼šåˆ·æ–°[ms-controller]æ ·å¼è§„则 - elem.classList.remove(node.name) - createSignalTower(elem, newVmodel) - } - scanAttr(elem, vmodels) //扫æ特性节点 - } - - var rhasHtml = /\|\s*html\s*/, - r11a = /\|\|/g, - rlt = /</g, - rgt = />/g, - rstringLiteral = /(['"])(\\\1|.)+?\1/g - - function getToken(value) { - if (value.indexOf("|") > 0) { - var scapegoat = value.replace(rstringLiteral, function (_) { - return Array(_.length + 1).join("1")// jshint ignore:line - }) - var index = scapegoat.replace(r11a, "\u1122\u3344").indexOf("|") //干掉所有短路或 - if (index > -1) { - return { - filters: value.slice(index), - value: value.slice(0, index), - expr: true - } - } - } - return { - value: value, - filters: "", - expr: true - } - } - - function scanExpr(str) { - var tokens = [], - value, start = 0, - stop - do { - stop = str.indexOf(openTag, start) - if (stop === -1) { - break - } - value = str.slice(start, stop) - if (value) { // {{ 左边的文本 - tokens.push({ - value: value, - filters: "", - expr: false - }) - } - start = stop + openTag.length - stop = str.indexOf(closeTag, start) - if (stop === -1) { - break - } - value = str.slice(start, stop) - if (value) { //处ç†{{ }}æ’å€¼è¡¨è¾¾å¼ - tokens.push(getToken(value)) - } - start = stop + closeTag.length - } while (1) - value = str.slice(start) - if (value) { //}} å³è¾¹çš„文本 - tokens.push({ - value: value, - expr: false, - filters: "" - }) - } - return tokens - } - - function scanText(textNode, vmodels) { - var bindings = [] - if (textNode.nodeType === 8) { - var token = getToken(textNode.nodeValue) - var tokens = [token] - } else { - tokens = scanExpr(textNode.data) - } - if (tokens.length) { - for (var i = 0; token = tokens[i++];) { - var node = DOC.createTextNode(token.value) //将文本转æ¢ä¸ºæ–‡æœ¬èŠ‚点,并替æ¢åŽŸæ¥çš„文本节点 - if (token.expr) { - token.type = "text" - token.element = node - token.filters = token.filters.replace(rhasHtml, function () { - token.type = "html" - token.group = 1 - return "" - })// jshint ignore:line - bindings.push(token) //收集带有æ’值表达å¼çš„文本 - } - hyperspace.appendChild(node) - } - textNode.parentNode.replaceChild(hyperspace, textNode) - if (bindings.length) - executeBindings(bindings, vmodels) - } - } - - /********************************************************************* - * avalon的原型方法定义区 * - **********************************************************************/ - - function hyphen(target) { - //转æ¢ä¸ºè¿žå­—符线风格 - return target.replace(/([a-z\d])([A-Z]+)/g, "$1-$2").toLowerCase() - } - - function camelize(target) { - //转æ¢ä¸ºé©¼å³°é£Žæ ¼ - if (target.indexOf("-") < 0 && target.indexOf("_") < 0) { - return target //æå‰åˆ¤æ–­ï¼Œæ高getStyle等的效率 - } - return target.replace(/[-_][^-_]/g, function (match) { - return match.charAt(1).toUpperCase() - }) - } - - "add,remove".replace(rword, function (method) { - avalon.fn[method + "Class"] = function (cls) { - var el = this[0] - //https://developer.mozilla.org/zh-CN/docs/Mozilla/Firefox/Releases/26 - if (cls && typeof cls === "string" && el && el.nodeType === 1) { - cls.replace(/\S+/g, function (c) { - el.classList[method](c) - }) - } - return this - } - }) - - avalon.fn.mix({ - hasClass: function (cls) { - var el = this[0] || {} //IE10+, chrome8+, firefox3.6+, safari5.1+,opera11.5+支æŒclassList,chrome24+,firefox26+支æŒclassList2.0 - return el.nodeType === 1 && el.classList.contains(cls) - }, - toggleClass: function (value, stateVal) { - var className, i = 0 - var classNames = String(value).split(/\s+/) - var isBool = typeof stateVal === "boolean" - while ((className = classNames[i++])) { - var state = isBool ? stateVal : !this.hasClass(className) - this[state ? "addClass" : "removeClass"](className) - } - return this - }, - attr: function (name, value) { - if (arguments.length === 2) { - this[0].setAttribute(name, value) - return this - } else { - return this[0].getAttribute(name) - } - }, - data: function (name, value) { - name = "data-" + hyphen(name || "") - switch (arguments.length) { - case 2: - this.attr(name, value) - return this - case 1: - var val = this.attr(name) - return parseData(val) - case 0: - var ret = {} - ap.forEach.call(this[0].attributes, function (attr) { - if (attr) { - name = attr.name - if (!name.indexOf("data-")) { - name = camelize(name.slice(5)) - ret[name] = parseData(attr.value) - } - } - }) - return ret - } - }, - removeData: function (name) { - name = "data-" + hyphen(name) - this[0].removeAttribute(name) - return this - }, - css: function (name, value) { - if (avalon.isPlainObject(name)) { - for (var i in name) { - avalon.css(this, i, name[i]) - } - } else { - var ret = avalon.css(this, name, value) - } - return ret !== void 0 ? ret : this - }, - position: function () { - var offsetParent, offset, - elem = this[0], - parentOffset = { - top: 0, - left: 0 - }; - if (!elem) { - return - } - if (this.css("position") === "fixed") { - offset = elem.getBoundingClientRect() - } else { - offsetParent = this.offsetParent() //得到真正的offsetParent - offset = this.offset() // 得到正确的offsetParent - if (offsetParent[0].tagName !== "HTML") { - parentOffset = offsetParent.offset() - } - parentOffset.top += avalon.css(offsetParent[0], "borderTopWidth", true) - parentOffset.left += avalon.css(offsetParent[0], "borderLeftWidth", true) - // Subtract offsetParent scroll positions - parentOffset.top -= offsetParent.scrollTop() - parentOffset.left -= offsetParent.scrollLeft() - } - return { - top: offset.top - parentOffset.top - avalon.css(elem, "marginTop", true), - left: offset.left - parentOffset.left - avalon.css(elem, "marginLeft", true) - } - }, - offsetParent: function () { - var offsetParent = this[0].offsetParent - while (offsetParent && avalon.css(offsetParent, "position") === "static") { - offsetParent = offsetParent.offsetParent; - } - return avalon(offsetParent || root) - }, - bind: function (type, fn, phase) { - if (this[0]) { //此方法ä¸ä¼šé“¾ - return avalon.bind(this[0], type, fn, phase) - } - }, - unbind: function (type, fn, phase) { - if (this[0]) { - avalon.unbind(this[0], type, fn, phase) - } - return this - }, - val: function (value) { - var node = this[0] - if (node && node.nodeType === 1) { - var get = arguments.length === 0 - var access = get ? ":get" : ":set" - var fn = valHooks[getValType(node) + access] - if (fn) { - var val = fn(node, value) - } else if (get) { - return (node.value || "").replace(/\r/g, "") - } else { - node.value = value - } - } - return get ? val : this - } - }) - - if (root.dataset) { - avalon.fn.data = function (name, val) { - name = name && camelize(name) - var dataset = this[0].dataset - switch (arguments.length) { - case 2: - dataset[name] = val - return this - case 1: - val = dataset[name] - return parseData(val) - case 0: - var ret = createMap() - for (name in dataset) { - ret[name] = parseData(dataset[name]) - } - return ret - } - } - } - var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/ - avalon.parseJSON = JSON.parse - - function parseData(data) { - try { - if (typeof data === "object") - return data - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : +data + "" === data ? +data : rbrace.test(data) ? JSON.parse(data) : data - } catch (e) { - } - return data - } - - avalon.each({ - scrollLeft: "pageXOffset", - scrollTop: "pageYOffset" - }, function (method, prop) { - avalon.fn[method] = function (val) { - var node = this[0] || {}, win = getWindow(node), - top = method === "scrollTop" - if (!arguments.length) { - return win ? win[prop] : node[method] - } else { - if (win) { - win.scrollTo(!top ? val : win[prop], top ? val : win[prop]) - } else { - node[method] = val - } - } - } - }) - - function getWindow(node) { - return node.window && node.document ? node : node.nodeType === 9 ? node.defaultView : false - } - -//=============================css相关================================== - var cssHooks = avalon.cssHooks = createMap() - var prefixes = ["", "-webkit-", "-moz-", "-ms-"] //去掉opera-15çš„æ”¯æŒ - var cssMap = { - "float": "cssFloat" - } - avalon.cssNumber = oneObject("columnCount,order,fillOpacity,fontWeight,lineHeight,opacity,orphans,widows,zIndex,zoom") - - avalon.cssName = function (name, host, camelCase) { - if (cssMap[name]) { - return cssMap[name] - } - host = host || root.style - for (var i = 0, n = prefixes.length; i < n; i++) { - camelCase = camelize(prefixes[i] + name) - if (camelCase in host) { - return (cssMap[name] = camelCase) - } - } - return null - } - cssHooks["@:set"] = function (node, name, value) { - node.style[name] = value - } - - cssHooks["@:get"] = function (node, name) { - if (!node || !node.style) { - throw new Error("getComputedStyleè¦æ±‚传入一个节点 " + node) - } - var ret, computed = getComputedStyle(node) - if (computed) { - ret = name === "filter" ? computed.getPropertyValue(name) : computed[name] - if (ret === "") { - ret = node.style[name] //其他æµè§ˆå™¨éœ€è¦æˆ‘们手动å–内è”æ ·å¼ - } - } - return ret - } - cssHooks["opacity:get"] = function (node) { - var ret = cssHooks["@:get"](node, "opacity") - return ret === "" ? "1" : ret - } - - "top,left".replace(rword, function (name) { - cssHooks[name + ":get"] = function (node) { - var computed = cssHooks["@:get"](node, name) - return /px$/.test(computed) ? computed : - avalon(node).position()[name] + "px" - } - }) - var cssShow = { - position: "absolute", - visibility: "hidden", - display: "block" - } - var rdisplayswap = /^(none|table(?!-c[ea]).+)/ - - function showHidden(node, array) { - //http://www.cnblogs.com/rubylouvre/archive/2012/10/27/2742529.html - if (node.offsetWidth <= 0) { //opera.offsetWidthå¯èƒ½å°äºŽ0 - var styles = getComputedStyle(node, null) - if (rdisplayswap.test(styles["display"])) { - var obj = { - node: node - } - for (var name in cssShow) { - obj[name] = styles[name] - node.style[name] = cssShow[name] - } - array.push(obj) - } - var parent = node.parentNode - if (parent && parent.nodeType === 1) { - showHidden(parent, array) - } - } - } - - "Width,Height".replace(rword, function (name) { //fix 481 - var method = name.toLowerCase(), - clientProp = "client" + name, - scrollProp = "scroll" + name, - offsetProp = "offset" + name - cssHooks[method + ":get"] = function (node, which, override) { - var boxSizing = -4 - if (typeof override === "number") { - boxSizing = override - } - which = name === "Width" ? ["Left", "Right"] : ["Top", "Bottom"] - var ret = node[offsetProp] // border-box 0 - if (boxSizing === 2) { // margin-box 2 - return ret + avalon.css(node, "margin" + which[0], true) + avalon.css(node, "margin" + which[1], true) - } - if (boxSizing < 0) { // padding-box -2 - ret = ret - avalon.css(node, "border" + which[0] + "Width", true) - avalon.css(node, "border" + which[1] + "Width", true) - } - if (boxSizing === -4) { // content-box -4 - ret = ret - avalon.css(node, "padding" + which[0], true) - avalon.css(node, "padding" + which[1], true) - } - return ret - } - cssHooks[method + "&get"] = function (node) { - var hidden = []; - showHidden(node, hidden); - var val = cssHooks[method + ":get"](node) - for (var i = 0, obj; obj = hidden[i++];) { - node = obj.node - for (var n in obj) { - if (typeof obj[n] === "string") { - node.style[n] = obj[n] - } - } - } - return val; - } - avalon.fn[method] = function (value) { //会忽视其display - var node = this[0] - if (arguments.length === 0) { - if (node.setTimeout) { //å–得窗å£å°ºå¯¸,IE9åŽå¯ä»¥ç”¨node.innerWidth /innerHeight代替 - return node["inner" + name] - } - if (node.nodeType === 9) { //å–得页é¢å°ºå¯¸ - var doc = node.documentElement - //FF chrome html.scrollHeight< body.scrollHeight - //IE æ ‡å‡†æ¨¡å¼ : html.scrollHeight> body.scrollHeight - //IE æ€ªå¼‚æ¨¡å¼ : html.scrollHeight 最大等于å¯è§†çª—å£å¤šä¸€ç‚¹ï¼Ÿ - return Math.max(node.body[scrollProp], doc[scrollProp], node.body[offsetProp], doc[offsetProp], doc[clientProp]) - } - return cssHooks[method + "&get"](node) - } else { - return this.css(method, value) - } - } - avalon.fn["inner" + name] = function () { - return cssHooks[method + ":get"](this[0], void 0, -2) - } - avalon.fn["outer" + name] = function (includeMargin) { - return cssHooks[method + ":get"](this[0], void 0, includeMargin === true ? 2 : 0) - } - }) - avalon.fn.offset = function () { //å–å¾—è·ç¦»é¡µé¢å·¦å³è§’çš„åæ ‡ - var node = this[0] - try { - var rect = node.getBoundingClientRect() - // Make sure element is not hidden (display: none) or disconnected - // https://github.com/jquery/jquery/pull/2043/files#r23981494 - if (rect.width || rect.height || node.getClientRects().length) { - var doc = node.ownerDocument - var root = doc.documentElement - var win = doc.defaultView - return { - top: rect.top + win.pageYOffset - root.clientTop, - left: rect.left + win.pageXOffset - root.clientLeft - } - } - } catch (e) { - return { - left: 0, - top: 0 - } - } - } - //=============================val相关======================= - - function getValType(elem) { - var ret = elem.tagName.toLowerCase() - return ret === "input" && /checkbox|radio/.test(elem.type) ? "checked" : ret - } - - var valHooks = { - "select:get": function (node, value) { - var option, options = node.options, - index = node.selectedIndex, - one = node.type === "select-one" || index < 0, - values = one ? null : [], - max = one ? index + 1 : options.length, - i = index < 0 ? max : one ? index : 0 - for (; i < max; i++) { - option = options[i] - //æ—§å¼IE在resetåŽä¸ä¼šæ”¹å˜selected,需è¦æ”¹ç”¨i === index判定 - //我们过滤所有disabledçš„option元素,但在safari5下,如果设置select为disable,那么其所有孩å­éƒ½disable - //因此当一个元素为disable,需è¦æ£€æµ‹å…¶æ˜¯å¦æ˜¾å¼è®¾ç½®äº†disableåŠå…¶çˆ¶èŠ‚点的disable情况 - if ((option.selected || i === index) && !option.disabled) { - value = option.value - if (one) { - return value - } - //收集所有selected值组æˆæ•°ç»„返回 - values.push(value) - } - } - return values - }, - "select:set": function (node, values, optionSet) { - values = [].concat(values) //强制转æ¢ä¸ºæ•°ç»„ - for (var i = 0, el; el = node.options[i++];) { - if ((el.selected = values.indexOf(el.value) > -1)) { - optionSet = true - } - } - if (!optionSet) { - node.selectedIndex = -1 - } - } - } - /********************************************************************* - * 编译系统 * - **********************************************************************/ - var quote = JSON.stringify - - var keywords = [ - "break,case,catch,continue,debugger,default,delete,do,else,false", - "finally,for,function,if,in,instanceof,new,null,return,switch,this", - "throw,true,try,typeof,var,void,while,with", /* 关键字*/ - "abstract,boolean,byte,char,class,const,double,enum,export,extends", - "final,float,goto,implements,import,int,interface,long,native", - "package,private,protected,public,short,static,super,synchronized", - "throws,transient,volatile", /*ä¿ç•™å­—*/ - "arguments,let,yield,undefined" /* ECMA 5 - use strict*/].join(",") - var rrexpstr = /\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|[\s\t\n]*\.[\s\t\n]*[$\w\.]+/g - var rsplit = /[^\w$]+/g - var rkeywords = new RegExp(["\\b" + keywords.replace(/,/g, '\\b|\\b') + "\\b"].join('|'), 'g') - var rnumber = /\b\d[^,]*/g - var rcomma = /^,+|,+$/g - var cacheVars = new Cache(512) - var getVariables = function (code) { - var key = "," + code.trim() - var ret = cacheVars.get(key) - if (ret) { - return ret - } - var match = code - .replace(rrexpstr, "") - .replace(rsplit, ",") - .replace(rkeywords, "") - .replace(rnumber, "") - .replace(rcomma, "") - .split(/^$|,+/) - return cacheVars.put(key, uniqSet(match)) - } - /*添加赋值语å¥*/ - - function addAssign(vars, scope, name, data) { - var ret = [], - prefix = " = " + name + "." - var isProxy = /\$proxy\$each/.test(scope.$id) - for (var i = vars.length, prop; prop = vars[--i];) { - var el = isProxy && scope.$map[prop] ? "el" : prop - if (scope.hasOwnProperty(el)) { - ret.push(prop + prefix + el) - data.vars.push(prop) - if (data.type === "duplex") { - vars.get = name + "." + el - } - vars.splice(i, 1) - } - } - return ret - } - - function uniqSet(array) { - var ret = [], - unique = {} - for (var i = 0; i < array.length; i++) { - var el = array[i] - var id = el && typeof el.$id === "string" ? el.$id : el - if (!unique[id]) { - unique[id] = ret.push(el) - } - } - return ret - } - -//缓存求值函数,以便多次利用 - var cacheExprs = new Cache(128) -//å–得求值函数åŠå…¶ä¼ å‚ - var rduplex = /\w\[.*\]|\w\.\w/ - var rproxy = /(\$proxy\$[a-z]+)\d+$/ - var rthimRightParentheses = /\)\s*$/ - var rthimOtherParentheses = /\)\s*\|/g - var rquoteFilterName = /\|\s*([$\w]+)/g - var rpatchBracket = /"\s*\["/g - var rthimLeftParentheses = /"\s*\(/g - - function parseFilter(val, filters) { - filters = filters - .replace(rthimRightParentheses, "")//处ç†æœ€åŽçš„å°æ‹¬å· - .replace(rthimOtherParentheses, function () {//处ç†å…¶ä»–å°æ‹¬å· - return "],|" - }) - .replace(rquoteFilterName, function (a, b) { //处ç†|åŠå®ƒåŽé¢çš„过滤器的åå­— - return "[" + quote(b) - }) - .replace(rpatchBracket, function () { - return '"],["' - }) - .replace(rthimLeftParentheses, function () { - return '",' - }) + "]" - return "return avalon.filters.$filter(" + val + ", " + filters + ")" - } - - function parseExpr(code, scopes, data) { - var dataType = data.type - var filters = data.filters || "" - var exprId = scopes.map(function (el) { - return String(el.$id).replace(rproxy, "$1") - }) + code + dataType + filters - var vars = getVariables(code).concat(), - assigns = [], - names = [], - args = [], - prefix = "" - //args 是一个对象数组, names 是将è¦ç”Ÿæˆçš„求值函数的å‚æ•° - scopes = uniqSet(scopes) - data.vars = [] - for (var i = 0, sn = scopes.length; i < sn; i++) { - if (vars.length) { - var name = "vm" + expose + "_" + i - names.push(name) - args.push(scopes[i]) - assigns.push.apply(assigns, addAssign(vars, scopes[i], name, data)) - } - } - if (!assigns.length && dataType === "duplex") { - return - } - if (dataType !== "duplex" && (code.indexOf("||") > -1 || code.indexOf("&&") > -1)) { - //https://github.com/RubyLouvre/avalon/issues/583 - data.vars.forEach(function (v) { - var reg = new RegExp("\\b" + v + "(?:\\.\\w+|\\[\\w+\\])+", "ig") - code = code.replace(reg, function (_) { - var c = _.charAt(v.length) - var r = IEVersion ? code.slice(arguments[1] + _.length) : RegExp.rightContext - var method = /^\s*\(/.test(r) - if (c === "." || c === "[" || method) {//比如v为aa,我们åªåŒ¹é…aa.bb,aa[cc],ä¸åŒ¹é…aaa.xxx - var name = "var" + String(Math.random()).replace(/^0\./, "") - if (method) {//array.size() - var array = _.split(".") - if (array.length > 2) { - var last = array.pop() - assigns.push(name + " = " + array.join(".")) - return name + "." + last - } else { - return _ - } - } - assigns.push(name + " = " + _) - return name - } else { - return _ - } - }) - }) - } - //---------------args---------------- - data.args = args - //---------------cache---------------- - var fn = cacheExprs.get(exprId) //直接从缓存,å…å¾—é‡å¤ç”Ÿæˆ - if (fn) { - data.evaluator = fn - return - } - prefix = assigns.join(", ") - if (prefix) { - prefix = "var " + prefix - } - if (/\S/.test(filters)) { //文本绑定,åŒå·¥ç»‘定æ‰æœ‰è¿‡æ»¤å™¨ - if (!/text|html/.test(data.type)) { - throw Error("ms-" + data.type + "ä¸æ”¯æŒè¿‡æ»¤å™¨") - } - code = "\nvar ret" + expose + " = " + code + ";\r\n" - code += parseFilter("ret" + expose, filters) - } else if (dataType === "duplex") { //åŒå·¥ç»‘定 - var _body = "'use strict';\nreturn function(vvv){\n\t" + - prefix + - ";\n\tif(!arguments.length){\n\t\treturn " + - code + - "\n\t}\n\t" + (!rduplex.test(code) ? vars.get : code) + - "= vvv;\n} " - try { - fn = Function.apply(noop, names.concat(_body)) - data.evaluator = cacheExprs.put(exprId, fn) - } catch (e) { - log("debug: parse error," + e.message) - } - return - } else if (dataType === "on") { //事件绑定 - if (code.indexOf("(") === -1) { - code += ".call(this, $event)" - } else { - code = code.replace("(", ".call(this,") - } - names.push("$event") - code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需è¦Function("return ;") - var lastIndex = code.lastIndexOf("\nreturn") - var header = code.slice(0, lastIndex) - var footer = code.slice(lastIndex) - code = header + "\n" + footer - } else { //其他绑定 - code = "\nreturn " + code + ";" //IE全家 Function("return ")出错,需è¦Function("return ;") - } - try { - fn = Function.apply(noop, names.concat("'use strict';\n" + prefix + code)) - data.evaluator = cacheExprs.put(exprId, fn) - } catch (e) { - log("debug: parse error," + e.message) - } finally { - vars = assigns = names = null //释放内存 - } - } - - -//parseExprçš„æ™ºèƒ½å¼•ç”¨ä»£ç† - - function parseExprProxy(code, scopes, data, tokens, noRegister) { - if (Array.isArray(tokens)) { - code = tokens.map(function (el) { - return el.expr ? "(" + el.value + ")" : quote(el.value) - }).join(" + ") - } - parseExpr(code, scopes, data) - if (data.evaluator && !noRegister) { - data.handler = bindingExecutors[data.handlerName || data.type] - //方便调试 - //这里éžå¸¸é‡è¦,我们通过判定视图刷新函数的element是å¦åœ¨DOM树决定 - //将它移出订阅者列表 - avalon.injectBinding(data) - } - } - - avalon.parseExprProxy = parseExprProxy - var bools = ["autofocus,autoplay,async,allowTransparency,checked,controls", - "declare,disabled,defer,defaultChecked,defaultSelected", - "contentEditable,isMap,loop,multiple,noHref,noResize,noShade", - "open,readOnly,selected" - ].join(",") - var boolMap = {} - bools.replace(rword, function (name) { - boolMap[name.toLowerCase()] = name - }) - - var propMap = { //属性å映射 - "accept-charset": "acceptCharset", - "char": "ch", - "charoff": "chOff", - "class": "className", - "for": "htmlFor", - "http-equiv": "httpEquiv" - } - - var anomaly = ["accessKey,bgColor,cellPadding,cellSpacing,codeBase,codeType,colSpan", - "dateTime,defaultValue,frameBorder,longDesc,maxLength,marginWidth,marginHeight", - "rowSpan,tabIndex,useMap,vSpace,valueType,vAlign" - ].join(",") - anomaly.replace(rword, function (name) { - propMap[name.toLowerCase()] = name - }) - - var rnoscripts = /(?:[\s\S]+?)<\/noscript>/img - var rnoscriptText = /([\s\S]+?)<\/noscript>/im - - var getXHR = function () { - return new (window.XMLHttpRequest || ActiveXObject)("Microsoft.XMLHTTP") // jshint ignore:line - } - - var cacheTmpls = avalon.templateCache = {} - - bindingHandlers.attr = function (data, vmodels) { - var text = data.value.trim(), - simple = true - if (text.indexOf(openTag) > -1 && text.indexOf(closeTag) > 2) { - simple = false - if (rexpr.test(text) && RegExp.rightContext === "" && RegExp.leftContext === "") { - simple = true - text = RegExp.$1 - } - } - if (data.type === "include") { - var elem = data.element - data.includeRendered = getBindingCallback(elem, "data-include-rendered", vmodels) - data.includeLoaded = getBindingCallback(elem, "data-include-loaded", vmodels) - var outer = data.includeReplace = !!avalon(elem).data("includeReplace") - if (avalon(elem).data("includeCache")) { - data.templateCache = {} - } - data.startInclude = DOC.createComment("ms-include") - data.endInclude = DOC.createComment("ms-include-end") - if (outer) { - data.element = data.startInclude - elem.parentNode.insertBefore(data.startInclude, elem) - elem.parentNode.insertBefore(data.endInclude, elem.nextSibling) - } else { - elem.insertBefore(data.startInclude, elem.firstChild) - elem.appendChild(data.endInclude) - } - } - data.handlerName = "attr" //handleName用于处ç†å¤šç§ç»‘定共用åŒä¸€ç§bindingExecutor的情况 - parseExprProxy(text, vmodels, data, (simple ? 0 : scanExpr(data.value))) - } - - bindingExecutors.attr = function (val, elem, data) { - var method = data.type, - attrName = data.param - if (method === "css") { - avalon(elem).css(attrName, val) - } else if (method === "attr") { - // ms-attr-class="xxx" vm.xxx="aaa bbb ccc"将元素的className设置为aaa bbb ccc - // ms-attr-class="xxx" vm.xxx=false 清空元素的所有类å - // ms-attr-name="yyy" vm.yyy="ooo" 为元素设置name属性 - var toRemove = (val === false) || (val === null) || (val === void 0) - - if (!W3C && propMap[attrName]) { //æ—§å¼IE下需è¦è¿›è¡Œå字映射 - attrName = propMap[attrName] - } - var bool = boolMap[attrName] - if (typeof elem[bool] === "boolean") { - elem[bool] = !!val //布尔属性必须使用el.xxx = true|falseæ–¹å¼è®¾å€¼ - if (!val) { //如果为false, IE全系列下相当于setAttribute(xxx,''),会影å“到样å¼,需è¦è¿›ä¸€æ­¥å¤„ç† - toRemove = true - } - } - if (toRemove) { - return elem.removeAttribute(attrName) - } - - //SVGåªèƒ½ä½¿ç”¨setAttribute(xxx, yyy), VMLåªèƒ½ä½¿ç”¨elem.xxx = yyy ,HTML的固有属性必须elem.xxx = yyy - var isInnate = rsvg.test(elem) ? false : (DOC.namespaces && isVML(elem)) ? true : attrName in elem.cloneNode(false) - if (isInnate) { - elem[attrName] = val - } else { - elem.setAttribute(attrName, val) - } - } else if (method === "include" && val) { - var vmodels = data.vmodels - var rendered = data.includeRendered - var loaded = data.includeLoaded - var replace = data.includeReplace - var target = replace ? elem.parentNode : elem - var scanTemplate = function (text) { - if (loaded) { - var newText = loaded.apply(target, [text].concat(vmodels)) - if (typeof newText === "string") - text = newText - } - if (rendered) { - checkScan(target, function () { - rendered.call(target) - }, NaN) - } - var lastID = data.includeLastID - if (data.templateCache && lastID && lastID !== val) { - var lastTemplate = data.templateCache[lastID] - if (!lastTemplate) { - lastTemplate = data.templateCache[lastID] = DOC.createElement("div") - ifGroup.appendChild(lastTemplate) - } - } - data.includeLastID = val - while (true) { - var node = data.startInclude.nextSibling - if (node && node !== data.endInclude) { - target.removeChild(node) - if (lastTemplate) - lastTemplate.appendChild(node) - } else { - break - } - } - var dom = getTemplateNodes(data, val, text) - var nodes = avalon.slice(dom.childNodes) - target.insertBefore(dom, data.endInclude) - scanNodeArray(nodes, vmodels) - } - - if (data.param === "src") { - if (typeof cacheTmpls[val] === "string") { - avalon.nextTick(function () { - scanTemplate(cacheTmpls[val]) - }) - } else if (Array.isArray(cacheTmpls[val])) { //#805 防止在循环绑定中å‘出许多相åŒçš„请求 - cacheTmpls[val].push(scanTemplate) - } else { - var xhr = getXHR() - xhr.onreadystatechange = function () { - if (xhr.readyState === 4) { - var s = xhr.status - if (s >= 200 && s < 300 || s === 304 || s === 1223) { - var text = xhr.responseText - for (var f = 0, fn; fn = cacheTmpls[val][f++];) { - fn(text) - } - cacheTmpls[val] = text - } - } - } - cacheTmpls[val] = [scanTemplate] - xhr.open("GET", val, true) - if ("withCredentials" in xhr) { - xhr.withCredentials = true - } - xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest") - xhr.send(null) - } - } else { - //IE系列与够新的标准æµè§ˆå™¨æ”¯æŒé€šè¿‡IDå–得元素(firefox14+) - //http://tjvantoll.com/2012/07/19/dom-element-references-as-global-variables/ - var el = val && val.nodeType === 1 ? val : DOC.getElementById(val) - if (el) { - if (el.tagName === "NOSCRIPT" && !(el.innerHTML || el.fixIE78)) { //IE7-8 innerText,innerHTML都无法å–得其内容,IE6能å–å¾—å…¶innerHTML - xhr = getXHR() //IE9-11与chromeçš„innerHTML会得到转义的内容,它们的innerTextå¯ä»¥ - xhr.open("GET", location, false) //谢谢Nodejs 乱炖群 深圳-纯属虚构 - xhr.send(null) - //http://bbs.csdn.net/topics/390349046?page=1#post-393492653 - var noscripts = DOC.getElementsByTagName("noscript") - var array = (xhr.responseText || "").match(rnoscripts) || [] - var n = array.length - for (var i = 0; i < n; i++) { - var tag = noscripts[i] - if (tag) { //IE6-8中noscript标签的innerHTML,innerText是åªè¯»çš„ - tag.style.display = "none" //http://haslayout.net/css/noscript-Ghost-Bug - tag.fixIE78 = (array[i].match(rnoscriptText) || ["", " "])[1] - } - } - } - avalon.nextTick(function () { - scanTemplate(el.fixIE78 || el.value || el.innerText || el.innerHTML) - }) - } - } - } else { - if (!root.hasAttribute && typeof val === "string" && (method === "src" || method === "href")) { - val = val.replace(/&/g, "&") //处ç†IE67自动转义的问题 - } - elem[method] = val - if (window.chrome && elem.tagName === "EMBED") { - var parent = elem.parentNode //#525 chrome1-37下embed标签动æ€è®¾ç½®srcä¸èƒ½å‘生请求 - var comment = document.createComment("ms-src") - parent.replaceChild(comment, elem) - parent.replaceChild(elem, comment) - } - } - } - - function getTemplateNodes(data, id, text) { - var div = data.templateCache && data.templateCache[id] - if (div) { - var dom = DOC.createDocumentFragment(), - firstChild - while (firstChild = div.firstChild) { - dom.appendChild(firstChild) - } - return dom - } - return avalon.parseHTML(text) - } - -//这几个指令都å¯ä»¥ä½¿ç”¨æ’值表达å¼ï¼Œå¦‚ms-src="aaa/{{b}}/{{c}}.html" - "title,alt,src,value,css,include,href".replace(rword, function (name) { - bindingHandlers[name] = bindingHandlers.attr - }) -//æ ¹æ®VM的属性值或表达å¼çš„值切æ¢ç±»å,ms-class="xxx yyy zzz:flag" -//http://www.cnblogs.com/rubylouvre/archive/2012/12/17/2818540.html - bindingHandlers["class"] = function (data, vmodels) { - var oldStyle = data.param, - text = data.value, - rightExpr - data.handlerName = "class" - if (!oldStyle || isFinite(oldStyle)) { - data.param = "" //去掉数字 - var noExpr = text.replace(rexprg, function (a) { - return a.replace(/./g, "0") - //return Math.pow(10, a.length - 1) //å°†æ’值表达å¼æ’å…¥10çš„N-1次方æ¥å ä½ - }) - var colonIndex = noExpr.indexOf(":") //å–得第一个冒å·çš„ä½ç½® - if (colonIndex === -1) { // 比如 ms-class="aaa bbb ccc" 的情况 - var className = text - } else { // 比如 ms-class-1="ui-state-active:checked" 的情况 - className = text.slice(0, colonIndex) - rightExpr = text.slice(colonIndex + 1) - parseExpr(rightExpr, vmodels, data) //决定是添加还是删除 - if (!data.evaluator) { - log("debug: ms-class '" + (rightExpr || "").trim() + "' ä¸å­˜åœ¨äºŽVM中") - return false - } else { - data._evaluator = data.evaluator - data._args = data.args - } - } - var hasExpr = rexpr.test(className) //比如ms-class="width{{w}}"的情况 - if (!hasExpr) { - data.immobileClass = className - } - parseExprProxy("", vmodels, data, (hasExpr ? scanExpr(className) : 0)) - } else { - data.immobileClass = data.oldStyle = data.param - parseExprProxy(text, vmodels, data) - } - } - - bindingExecutors["class"] = function (val, elem, data) { - var $elem = avalon(elem), - method = data.type - if (method === "class" && data.oldStyle) { //如果是旧风格 - $elem.toggleClass(data.oldStyle, !!val) - } else { - //如果存在冒å·å°±æœ‰æ±‚值函数 - data.toggleClass = data._evaluator ? !!data._evaluator.apply(elem, data._args) : true - data.newClass = data.immobileClass || val - if (data.oldClass && data.newClass !== data.oldClass) { - $elem.removeClass(data.oldClass) - } - data.oldClass = data.newClass - switch (method) { - case "class": - $elem.toggleClass(data.newClass, data.toggleClass) - break - case "hover": - case "active": - if (!data.hasBindEvent) { //ç¡®ä¿åªç»‘定一次 - var activate = "mouseenter" //在移出移入时切æ¢ç±»å - var abandon = "mouseleave" - if (method === "active") { //在èšç„¦å¤±ç„¦ä¸­åˆ‡æ¢ç±»å - elem.tabIndex = elem.tabIndex || -1 - activate = "mousedown" - abandon = "mouseup" - var fn0 = $elem.bind("mouseleave", function () { - data.toggleClass && $elem.removeClass(data.newClass) - }) - } - var fn1 = $elem.bind(activate, function () { - data.toggleClass && $elem.addClass(data.newClass) - }) - var fn2 = $elem.bind(abandon, function () { - data.toggleClass && $elem.removeClass(data.newClass) - }) - data.rollback = function () { - $elem.unbind("mouseleave", fn0) - $elem.unbind(activate, fn1) - $elem.unbind(abandon, fn2) - } - data.hasBindEvent = true - } - break; - } - } - } - - "hover,active".replace(rword, function (method) { - bindingHandlers[method] = bindingHandlers["class"] - }) -//ms-controller绑定已ç»åœ¨scanTag 方法中实现 -//ms-css绑定已由ms-attr绑定实现 - - -// bindingHandlers.data 定义在if.js - bindingExecutors.data = function (val, elem, data) { - var key = "data-" + data.param - if (val && typeof val === "object") { - elem[key] = val - } else { - elem.setAttribute(key, String(val)) - } - } -//åŒå·¥ç»‘定 - var duplexBinding = bindingHandlers.duplex = function (data, vmodels) { - var elem = data.element, - hasCast - parseExprProxy(data.value, vmodels, data, 0, 1) - - data.changed = getBindingCallback(elem, "data-duplex-changed", vmodels) || noop - if (data.evaluator && data.args) { - var params = [] - var casting = oneObject("string,number,boolean,checked") - if (elem.type === "radio" && data.param === "") { - data.param = "checked" - } - if (elem.msData) { - elem.msData["ms-duplex"] = data.value - } - data.param.replace(/\w+/g, function (name) { - if (/^(checkbox|radio)$/.test(elem.type) && /^(radio|checked)$/.test(name)) { - if (name === "radio") - log("ms-duplex-radioå·²ç»æ›´å为ms-duplex-checked") - name = "checked" - data.isChecked = true - } - if (name === "bool") { - name = "boolean" - log("ms-duplex-boolå·²ç»æ›´å为ms-duplex-boolean") - } else if (name === "text") { - name = "string" - log("ms-duplex-textå·²ç»æ›´å为ms-duplex-string") - } - if (casting[name]) { - hasCast = true - } - avalon.Array.ensure(params, name) - }) - if (!hasCast) { - params.push("string") - } - data.param = params.join("-") - data.bound = function (type, callback) { - if (elem.addEventListener) { - elem.addEventListener(type, callback, false) - } else { - elem.attachEvent("on" + type, callback) - } - var old = data.rollback - data.rollback = function () { - elem.avalonSetter = null - avalon.unbind(elem, type, callback) - old && old() - } - } - for (var i in avalon.vmodels) { - var v = avalon.vmodels[i] - v.$fire("avalon-ms-duplex-init", data) - } - var cpipe = data.pipe || (data.pipe = pipe) - cpipe(null, data, "init") - var tagName = elem.tagName - duplexBinding[tagName] && duplexBinding[tagName](elem, data.evaluator.apply(null, data.args), data) - } - } -//ä¸å­˜åœ¨ bindingExecutors.duplex - - function fixNull(val) { - return val == null ? "" : val - } - - avalon.duplexHooks = { - checked: { - get: function (val, data) { - return !data.element.oldValue - } - }, - string: { - get: function (val) { //åŒæ­¥åˆ°VM - return val - }, - set: fixNull - }, - "boolean": { - get: function (val) { - return val === "true" - }, - set: fixNull - }, - number: { - get: function (val, data) { - var number = parseFloat(val) - if (-val === -number) { - return number - } - var arr = /strong|medium|weak/.exec(data.element.getAttribute("data-duplex-number")) || ["medium"] - switch (arr[0]) { - case "strong": - return 0 - case "medium": - return val === "" ? "" : 0 - case "weak": - return val - } - }, - set: fixNull - } - } - - function pipe(val, data, action, e) { - data.param.replace(/\w+/g, function (name) { - var hook = avalon.duplexHooks[name] - if (hook && typeof hook[action] === "function") { - val = hook[action](val, data) - } - }) - return val - } - - var TimerID, ribbon = [] - - avalon.tick = function (fn) { - if (ribbon.push(fn) === 1) { - TimerID = setInterval(ticker, 60) - } - } - - function ticker() { - for (var n = ribbon.length - 1; n >= 0; n--) { - var el = ribbon[n] - if (el() === false) { - ribbon.splice(n, 1) - } - } - if (!ribbon.length) { - clearInterval(TimerID) - } - } - - var watchValueInTimer = noop - var rmsinput = /text|password|hidden/ - new function () { // jshint ignore:line - try { //#272 IE9-IE11, firefox - var setters = {} - var aproto = HTMLInputElement.prototype - var bproto = HTMLTextAreaElement.prototype - - function newSetter(value) { // jshint ignore:line - if (avalon.contains(root, this)) { - setters[this.tagName].call(this, value) - if (!rmsinput.test(this.type)) - return - if (!this.msFocus && this.avalonSetter) { - this.avalonSetter() - } - } - } - - var inputProto = HTMLInputElement.prototype - Object.getOwnPropertyNames(inputProto) //æ•…æ„引å‘IE6-8ç­‰æµè§ˆå™¨æŠ¥é”™ - setters["INPUT"] = Object.getOwnPropertyDescriptor(aproto, "value").set - Object.defineProperty(aproto, "value", { - set: newSetter - }) - setters["TEXTAREA"] = Object.getOwnPropertyDescriptor(bproto, "value").set - Object.defineProperty(bproto, "value", { - set: newSetter - }) - } catch (e) { - //在chrome 43中 ms-duplex终于ä¸éœ€è¦ä½¿ç”¨å®šæ—¶å™¨å®žçŽ°åŒå‘绑定了 - // http://updates.html5rocks.com/2015/04/DOM-attributes-now-on-the-prototype - // https://docs.google.com/document/d/1jwA8mtClwxI-QJuHT7872Z0pxpZz8PBkf2bGAbsUtqs/edit?pli=1 - watchValueInTimer = avalon.tick - } - } // jshint ignore:line -//处ç†radio, checkbox, text, textarea, password - duplexBinding.INPUT = function (element, evaluator, data) { - var $type = element.type, - bound = data.bound, - $elem = avalon(element), - composing = false - - function callback(value) { - data.changed.call(this, value, data) - } - - function compositionStart() { - composing = true - } - - function compositionEnd() { - composing = false - } - - //当valueå˜åŒ–时改å˜model的值 - - var updateVModel = function () { - if (composing) //处ç†ä¸­æ–‡è¾“入法在minlengh下引å‘çš„BUG - return - var val = element.oldValue = element.value //防止递归调用形æˆæ­»å¾ªçŽ¯ - var lastValue = data.pipe(val, data, "get") - if ($elem.data("duplexObserve") !== false) { - evaluator(lastValue) - callback.call(element, lastValue) - if ($elem.data("duplex-focus")) { - avalon.nextTick(function () { - element.focus() - }) - } - } - } - //当modelå˜åŒ–æ—¶,它就会改å˜value的值 - data.handler = function () { - var val = data.pipe(evaluator(), data, "set") + "" - if (val !== element.oldValue) { - element.value = val - } - } - if (data.isChecked || $type === "radio") { - updateVModel = function () { - if ($elem.data("duplexObserve") !== false) { - var lastValue = data.pipe(element.value, data, "get") - evaluator(lastValue) - callback.call(element, lastValue) - } - } - data.handler = function () { - var val = evaluator() - var checked = data.isChecked ? !!val : val + "" === element.value - element.checked = element.oldValue = checked - } - bound("click", updateVModel) - } else if ($type === "checkbox") { - updateVModel = function () { - if ($elem.data("duplexObserve") !== false) { - var method = element.checked ? "ensure" : "remove" - var array = evaluator() - if (!Array.isArray(array)) { - log("ms-duplex应用于checkbox上è¦å¯¹åº”一个数组") - array = [array] - } - avalon.Array[method](array, data.pipe(element.value, data, "get")) - callback.call(element, array) - } - } - data.handler = function () { - var array = [].concat(evaluator()) //强制转æ¢ä¸ºæ•°ç»„ - element.checked = array.indexOf(data.pipe(element.value, data, "get")) > -1 - } - bound("change", updateVModel) - } else { - var events = element.getAttribute("data-duplex-event") || "input" - if (element.attributes["data-event"]) { - log("data-event指令已ç»åºŸå¼ƒï¼Œè¯·æ”¹ç”¨data-duplex-event") - } - events.replace(rword, function (name) { - switch (name) { - case "input": - bound("input", updateVModel) - bound("DOMAutoComplete", updateVModel) - if (!IEVersion) { - bound("compositionstart", compositionStart) - bound("compositionend", compositionEnd) - } - break - default: - bound(name, updateVModel) - break - } - }) - bound("focus", function () { - element.msFocus = true - }) - bound("blur", function () { - element.msFocus = false - }) - if (rmsinput.test($type)) { - watchValueInTimer(function () { - if (root.contains(element)) { - if (!element.msFocus && element.oldValue !== element.value) { - updateVModel() - } - } else if (!element.msRetain) { - return false - } - }) - } - - element.avalonSetter = updateVModel - } - - element.oldValue = element.value - avalon.injectBinding(data) - callback.call(element, element.value) - } - duplexBinding.TEXTAREA = duplexBinding.INPUT - duplexBinding.SELECT = function (element, evaluator, data) { - var $elem = avalon(element) - - function updateVModel() { - if ($elem.data("duplexObserve") !== false) { - var val = $elem.val() //字符串或字符串数组 - if (Array.isArray(val)) { - val = val.map(function (v) { - return data.pipe(v, data, "get") - }) - } else { - val = data.pipe(val, data, "get") - } - if (val + "" !== element.oldValue) { - evaluator(val) - } - data.changed.call(element, val, data) - } - } - - data.handler = function () { - var val = evaluator() - val = val && val.$model || val - if (Array.isArray(val)) { - if (!element.multiple) { - log("ms-duplex在ä¸èƒ½å¯¹åº”一个数组") - } - } - //å¿…é¡»å˜æˆå­—符串åŽæ‰èƒ½æ¯”较 - val = Array.isArray(val) ? val.map(String) : val + "" - if (val + "" !== element.oldValue) { - $elem.val(val) - element.oldValue = val + "" - } - } - data.bound("change", updateVModel) - element.msCallback = function () { - avalon.injectBinding(data) - data.changed.call(element, evaluator(), data) - } - } -// bindingHandlers.html 定义在if.js - bindingExecutors.html = function (val, elem, data) { - val = val == null ? "" : val - var isHtmlFilter = "group" in data - var parent = isHtmlFilter ? elem.parentNode : elem - if (!parent) - return - if (typeof val === "string") { - var fragment = avalon.parseHTML(val) - } else if (val.nodeType === 11) { //å°†val转æ¢ä¸ºæ–‡æ¡£ç¢Žç‰‡ - fragment = val - } else if (val.nodeType === 1 || val.item) { - var nodes = val.nodeType === 1 ? val.childNodes : val.item - fragment = hyperspace.cloneNode(true) - while (nodes[0]) { - fragment.appendChild(nodes[0]) - } - } - if (!fragment.firstChild) { - fragment.appendChild(DOC.createComment("ms-html")) - } - nodes = avalon.slice(fragment.childNodes) - //æ’å…¥å ä½ç¬¦, 如果是过滤器,需è¦æœ‰èŠ‚制地移除指定的数é‡,如果是html指令,直接清空 - if (isHtmlFilter) { - var n = data.group, - i = 1 - - data.group = nodes.length - data.element = nodes[0] - - while (i < n) { - var node = elem.nextSibling - if (node) { - parent.removeChild(node) - i++ - } - } - parent.replaceChild(fragment, elem) - } else { - avalon.clearHTML(parent).appendChild(fragment) - } - scanNodeArray(nodes, data.vmodels) - } - bindingHandlers["if"] = - bindingHandlers.data = - bindingHandlers.text = - bindingHandlers.html = - function (data, vmodels) { - parseExprProxy(data.value, vmodels, data) - } - - bindingExecutors["if"] = function (val, elem, data) { - if (val) { //æ’回DOMæ ‘ - if (elem.nodeType === 8) { - elem.parentNode.replaceChild(data.template, elem) - elem = data.element = data.template //这时å¯èƒ½ä¸ºnull - } - if (elem.getAttribute(data.name)) { - elem.removeAttribute(data.name) - scanAttr(elem, data.vmodels) - } - data.rollback = null - } else { //移出DOM树,并用注释节点å æ®åŽŸä½ç½® - if (elem.nodeType === 1) { - var node = data.element = DOC.createComment("ms-if") - elem.parentNode.replaceChild(node, elem) - data.template = elem //元素节点 - ifGroup.appendChild(elem) - data.rollback = function () { - if (elem.parentNode === ifGroup) { - ifGroup.removeChild(elem) - } - } - } - } - } -//ms-important绑定已ç»åœ¨scanTag 方法中实现 -//ms-include绑定已由ms-attr绑定实现 - - var rdash = /\(([^)]*)\)/ - bindingHandlers.on = function (data, vmodels) { - var value = data.value - data.type = "on" - var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10 - if (typeof bindingHandlers.on[eventType + "Hook"] === "function") { - bindingHandlers.on[eventType + "Hook"](data) - } - if (value.indexOf("(") > 0 && value.indexOf(")") > -1) { - var matched = (value.match(rdash) || ["", ""])[1].trim() - if (matched === "" || matched === "$event") { // aaa() aaa($event)当æˆaaaå¤„ç† - value = value.replace(rdash, "") - } - } - parseExprProxy(value, vmodels, data) - } - - bindingExecutors.on = function (callback, elem, data) { - callback = function (e) { - var fn = data.evaluator || noop - return fn.apply(this, data.args.concat(e)) - } - var eventType = data.param.replace(/-\d+$/, "") // ms-on-mousemove-10 - if (eventType === "scan") { - callback.call(elem, { - type: eventType - }) - } else if (typeof data.specialBind === "function") { - data.specialBind(elem, callback) - } else { - var removeFn = avalon.bind(elem, eventType, callback) - } - data.rollback = function () { - if (typeof data.specialUnbind === "function") { - data.specialUnbind() - } else { - avalon.unbind(elem, eventType, removeFn) - } - } - } - bindingHandlers.repeat = function (data, vmodels) { - var type = data.type - parseExprProxy(data.value, vmodels, data, 0, 1) - var freturn = false - try { - var $repeat = data.$repeat = data.evaluator.apply(0, data.args || []) - var xtype = avalon.type($repeat) - if (xtype !== "object" && xtype !== "array") { - freturn = true - avalon.log("warning:" + data.value + "åªèƒ½æ˜¯å¯¹è±¡æˆ–数组") - } - } catch (e) { - freturn = true - } - - var arr = data.value.split(".") || [] - if (arr.length > 1) { - arr.pop() - var n = arr[0] - for (var i = 0, v; v = vmodels[i++];) { - if (v && v.hasOwnProperty(n)) { - var events = v[n].$events || {} - events[subscribers] = events[subscribers] || [] - events[subscribers].push(data) - break - } - } - } - var elem = data.element - elem.removeAttribute(data.name) - - data.sortedCallback = getBindingCallback(elem, "data-with-sorted", vmodels) - data.renderedCallback = getBindingCallback(elem, "data-" + type + "-rendered", vmodels) - var signature = generateID(type) - var comment = data.element = DOC.createComment(signature + ":end") - data.clone = DOC.createComment(signature) - hyperspace.appendChild(comment) - - if (type === "each" || type === "with") { - data.template = elem.innerHTML.trim() - avalon.clearHTML(elem).appendChild(comment) - } else { - data.template = elem.outerHTML.trim() - elem.parentNode.replaceChild(comment, elem) - } - data.template = avalon.parseHTML(data.template) - data.rollback = function () { - var elem = data.element - if (!elem) - return - bindingExecutors.repeat.call(data, "clear") - var parentNode = elem.parentNode - var content = data.template - var target = content.firstChild - parentNode.replaceChild(content, elem) - var start = data.$with - start && start.parentNode && start.parentNode.removeChild(start) - target = data.element = data.type === "repeat" ? target : parentNode - } - if (freturn) { - return - } - data.handler = bindingExecutors.repeat - data.$outer = {} - var check0 = "$key" - var check1 = "$val" - if (Array.isArray($repeat)) { - $repeat.$map[data.param || "el"] = 1 - check0 = "$first" - check1 = "$last" - } - for (i = 0; v = vmodels[i++];) { - if (v.hasOwnProperty(check0) && v.hasOwnProperty(check1)) { - data.$outer = v - break - } - } - var $events = $repeat.$events - var $list = ($events || {})[subscribers] - if ($list && avalon.Array.ensure($list, data)) { - addSubscribers(data, $list) - } - if (xtype === "object") { - data.$with = true - var pool = !$events ? {} : $events.$withProxyPool || ($events.$withProxyPool = {}) - data.handler("append", $repeat, pool) - } else if ($repeat.length) { - data.handler("add", 0, $repeat.length) - } - } - - bindingExecutors.repeat = function (method, pos, el) { - if (method) { - var data = this, start, fragment - var end = data.element - var comments = getComments(data) - var parent = end.parentNode - var transation = hyperspace.cloneNode(false) - switch (method) { - case "add": //在posä½ç½®åŽæ·»åŠ el数组(pos为æ’å…¥ä½ç½®,el为è¦æ’入的个数) - var n = pos + el - var fragments = [] - var array = data.$repeat - for (var i = pos; i < n; i++) { - var proxy = array.$proxy[i] - proxy.$outer = data.$outer - shimController(data, transation, proxy, fragments) - } - parent.insertBefore(transation, comments[pos] || end) - for (i = 0; fragment = fragments[i++];) { - scanNodeArray(fragment.nodes, fragment.vmodels) - fragment.nodes = fragment.vmodels = null - } - break - case "del": //å°†posåŽçš„el个元素删掉(pos, el都是数字) - sweepNodes(comments[pos], comments[pos + el] || end) - break - case "clear": - start = comments[0] - if (start) { - sweepNodes(start, end) - } - break - case "move": - start = comments[0] - if (start) { - var signature = start.nodeValue - var rooms = [] - var room = [], - node - sweepNodes(start, end, function () { - room.unshift(this) - if (this.nodeValue === signature) { - rooms.unshift(room) - room = [] - } - }) - sortByIndex(rooms, pos) - while (room = rooms.shift()) { - while (node = room.shift()) { - transation.appendChild(node) - } - } - parent.insertBefore(transation, end) - } - break - case "append": //å°†pos的键值对从el中å–出(pos为一个普通对象,el为预先生æˆå¥½çš„代ç†VM对象池) - var pool = el - var keys = [] - fragments = [] - for (var key in pos) { //得到所有键å - if (pos.hasOwnProperty(key) && key !== "hasOwnProperty") { - keys.push(key) - } - } - if (data.sortedCallback) { //å¦‚æžœæœ‰å›žè°ƒï¼Œåˆ™è®©å®ƒä»¬æŽ’åº - var keys2 = data.sortedCallback.call(parent, keys) - if (keys2 && Array.isArray(keys2) && keys2.length) { - keys = keys2 - } - } - for (i = 0; key = keys[i++];) { - if (key !== "hasOwnProperty") { - if (!pool[key]) { - pool[key] = withProxyAgent(key, data) - } - shimController(data, transation, pool[key], fragments) - } - } - var comment = data.$with = data.clone - parent.insertBefore(comment, end) - parent.insertBefore(transation, end) - for (i = 0; fragment = fragments[i++];) { - scanNodeArray(fragment.nodes, fragment.vmodels) - fragment.nodes = fragment.vmodels = null - } - break - } - if (method === "clear") - method = "del" - var callback = data.renderedCallback || noop, - args = arguments - checkScan(parent, function () { - callback.apply(parent, args) - if (parent.oldValue && parent.tagName === "SELECT") { //fix #503 - avalon(parent).val(parent.oldValue.split(",")) - } - }, NaN) - } - } - - "with,each".replace(rword, function (name) { - bindingHandlers[name] = bindingHandlers.repeat - }) - - function shimController(data, transation, proxy, fragments) { - var content = data.template.cloneNode(true) - var nodes = avalon.slice(content.childNodes) - if (!data.$with) { - content.insertBefore(data.clone.cloneNode(false), content.firstChild) - } - transation.appendChild(content) - var nv = [proxy].concat(data.vmodels) - var fragment = { - nodes: nodes, - vmodels: nv - } - fragments.push(fragment) - } - - function getComments(data) { - var end = data.element - var signature = end.nodeValue.replace(":end", "") - var node = end.previousSibling - var array = [] - while (node) { - if (node.nodeValue === signature) { - array.unshift(node) - } - node = node.previousSibling - } - return array - } - - -//移除掉start与end之间的节点(ä¿ç•™end) - function sweepNodes(start, end, callback) { - while (true) { - var node = end.previousSibling - if (!node) - break - node.parentNode.removeChild(node) - callback && callback.call(node) - if (node === start) { - break - } - } - } - -// 为ms-each,ms-with, ms-repeat会创建一个代ç†VM, -// 通过它们ä¿æŒä¸€ä¸ªä¸‹ä¸Šæ–‡ï¼Œè®©ç”¨æˆ·èƒ½è°ƒç”¨$index,$first,$last,$remove,$key,$val,$outer等属性与方法 -// 所有代ç†VM的产生,消费,收集,存放通过xxxProxyFactory,xxxProxyAgent, recycleProxies,xxxProxyPool实现 - var eachProxyPool = [] - var withProxyPool = [] - - function eachProxyFactory() { - var source = { - $index: 0, - $first: false, - $last: false, - $map: {}, - $host: [], - $outer: {}, - $remove: avalon.noop, - el: { - get: function () { - var e = this.$events - var array = e.$index - e.$index = e.el //#817 通过$index为el收集ä¾èµ– - try { - return this.$host[this.$index] - } finally { - e.$index = array - } - }, - set: function (val) { - this.$host.set(this.$index, val) - } - } - } - - var second = { - $last: 1, - $first: 1, - $index: 1 - } - var proxy = modelFactory(source, second) - proxy.$id = generateID("$proxy$each") - return proxy - } - - function eachProxyAgent(index, host) { - var proxy = eachProxyPool.shift() - if (!proxy) { - proxy = eachProxyFactory() - } - var last = host.length - 1 - proxy.$index = index - proxy.$first = index === 0 - proxy.$last = index === last - proxy.$map = host.$map - proxy.$host = host - proxy.$remove = function () { - return host.removeAt(proxy.$index) - } - return proxy - } - - function withProxyFactory() { - var proxy = modelFactory({ - $key: "", - $outer: {}, - $host: {}, - $val: { - get: function () { - return this.$host[this.$key] - }, - set: function (val) { - this.$host[this.$key] = val - } - } - }, { - $val: 1 - }) - proxy.$id = generateID("$proxy$with") - return proxy - } - - function withProxyAgent(key, data) { - var proxy = withProxyPool.pop() - if (!proxy) { - proxy = withProxyFactory() - } - var host = data.$repeat - proxy.$key = key - proxy.$host = host - proxy.$outer = data.$outer - if (host.$events) { - proxy.$events.$val = host.$events[key] - } else { - proxy.$events = {} - } - return proxy - } - - function recycleProxies(proxies, type) { - var proxyPool = type === "each" ? eachProxyPool : withProxyPool - avalon.each(proxies, function (key, proxy) { - if (proxy.$events) { - for (var i in proxy.$events) { - if (Array.isArray(proxy.$events[i])) { - proxy.$events[i].forEach(function (data) { - if (typeof data === "object") - disposeData(data) - }) // jshint ignore:line - proxy.$events[i].length = 0 - } - } - proxy.$host = proxy.$outer = {} - if (proxyPool.unshift(proxy) > kernel.maxRepeatSize) { - proxyPool.pop() - } - } - }) - if (type === "each") - proxies.length = 0 - } - - /********************************************************************* - * å„ç§æŒ‡ä»¤ * - **********************************************************************/ -//ms-skip绑定已ç»åœ¨scanTag 方法中实现 -// bindingHandlers.text 定义在if.js - bindingExecutors.text = function (val, elem) { - val = val == null ? "" : val //ä¸åœ¨é¡µé¢ä¸Šæ˜¾ç¤ºundefined null - if (elem.nodeType === 3) { //绑定在文本节点上 - try { //IE对游离于DOM树外的节点赋值会报错 - elem.data = val - } catch (e) { - } - } else { //绑定在特性节点上 - elem.textContent = val - } - } - function parseDisplay(nodeName, val) { - //用于å–得此类标签的默认display值 - var key = "_" + nodeName - if (!parseDisplay[key]) { - var node = DOC.createElement(nodeName) - root.appendChild(node) - if (W3C) { - val = getComputedStyle(node, null).display - } else { - val = node.currentStyle.display - } - root.removeChild(node) - parseDisplay[key] = val - } - return parseDisplay[key] - } - - avalon.parseDisplay = parseDisplay - - bindingHandlers.visible = function (data, vmodels) { - var elem = avalon(data.element) - var display = elem.css("display") - if (display === "none") { - var style = elem[0].style - var has = /visibility/i.test(style.cssText) - var visible = elem.css("visibility") - style.display = "" - style.visibility = "hidden" - display = elem.css("display") - if (display === "none") { - display = parseDisplay(elem[0].nodeName) - } - style.visibility = has ? visible : "" - } - data.display = display - parseExprProxy(data.value, vmodels, data) - } - - bindingExecutors.visible = function (val, elem, data) { - elem.style.display = val ? data.display : "none" - } - bindingHandlers.widget = function (data, vmodels) { - var args = data.value.match(rword) - var elem = data.element - var widget = args[0] - var id = args[1] - if (!id || id === "$") { //没有定义或为$时,å–组件å+éšæœºæ•° - id = generateID(widget) - } - var optName = args[2] || widget //没有定义,å–组件å - var constructor = avalon.ui[widget] - if (typeof constructor === "function") { //ms-widget="tabs,tabsAAA,optname" - vmodels = elem.vmodels || vmodels - for (var i = 0, v; v = vmodels[i++];) { - if (v.hasOwnProperty(optName) && typeof v[optName] === "object") { - var vmOptions = v[optName] - vmOptions = vmOptions.$model || vmOptions - break - } - } - if (vmOptions) { - var wid = vmOptions[widget + "Id"] - if (typeof wid === "string") { - log("warning!ä¸å†æ”¯æŒ" + widget + "Id") - id = wid - } - } - //抽å–data-tooltip-textã€data-tooltip-attr属性,组æˆä¸€ä¸ªé…置对象 - var widgetData = avalon.getWidgetData(elem, widget) - data.value = [widget, id, optName].join(",") - data[widget + "Id"] = id - data.evaluator = noop - elem.msData["ms-widget-id"] = id - var options = data[widget + "Options"] = avalon.mix({}, constructor.defaults, vmOptions || {}, widgetData) - elem.removeAttribute("ms-widget") - var vmodel = constructor(elem, data, vmodels) || {} //防止组件ä¸è¿”回VM - if (vmodel.$id) { - avalon.vmodels[id] = vmodel - createSignalTower(elem, vmodel) - try { - vmodel.$init(function () { - avalon.scan(elem, [vmodel].concat(vmodels)) - if (typeof options.onInit === "function") { - options.onInit.call(elem, vmodel, options, vmodels) - } - }) - } catch (e) { - } - data.rollback = function () { - try { - vmodel.widgetElement = null - vmodel.$remove() - } catch (e) { - } - elem.msData = {} - delete avalon.vmodels[vmodel.$id] - } - addSubscribers(data, widgetList) - if (window.chrome) { - elem.addEventListener("DOMNodeRemovedFromDocument", function () { - setTimeout(removeSubscribers) - }) - } - } else { - avalon.scan(elem, vmodels) - } - } else if (vmodels.length) { //如果该组件还没有加载,那么ä¿å­˜å½“å‰çš„vmodels - elem.vmodels = vmodels - } - } - var widgetList = [] -//ä¸å­˜åœ¨ bindingExecutors.widget - /********************************************************************* - * 自带过滤器 * - **********************************************************************/ - var rscripts = /]*>([\S\s]*?)<\/script\s*>/gim - var ron = /\s+(on[^=\s]+)(?:=("[^"]*"|'[^']*'|[^\s>]+))?/g - var ropen = /<\w+\b(?:(["'])[^"]*?(\1)|[^>])*>/ig - var rsanitize = { - a: /\b(href)\=("javascript[^"]*"|'javascript[^']*')/ig, - img: /\b(src)\=("javascript[^"]*"|'javascript[^']*')/ig, - form: /\b(action)\=("javascript[^"]*"|'javascript[^']*')/ig - } - var rsurrogate = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g - var rnoalphanumeric = /([^\#-~| |!])/g; - - function numberFormat(number, decimals, point, thousands) { - //form http://phpjs.org/functions/number_format/ - //number 必需,è¦æ ¼å¼åŒ–çš„æ•°å­— - //decimals å¯é€‰ï¼Œè§„定多少个å°æ•°ä½ã€‚ - //point å¯é€‰ï¼Œè§„定用作å°æ•°ç‚¹çš„字符串(默认为 . )。 - //thousands å¯é€‰ï¼Œè§„定用作åƒä½åˆ†éš”符的字符串(默认为 , ),如果设置了该å‚数,那么所有其他å‚数都是必需的。 - number = (number + '') - .replace(/[^0-9+\-Ee.]/g, '') - var n = !isFinite(+number) ? 0 : +number, - prec = !isFinite(+decimals) ? 3 : Math.abs(decimals), - sep = thousands || ",", - dec = point || ".", - s = '', - toFixedFix = function (n, prec) { - var k = Math.pow(10, prec) - return '' + (Math.round(n * k) / k) - .toFixed(prec) - } - // Fix for IE parseFloat(0.55).toFixed(0) = 0; - s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)) - .split('.') - if (s[0].length > 3) { - s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep) - } - if ((s[1] || '') - .length < prec) { - s[1] = s[1] || '' - s[1] += new Array(prec - s[1].length + 1) - .join('0') - } - return s.join(dec) - } - - - var filters = avalon.filters = { - uppercase: function (str) { - return str.toUpperCase() - }, - lowercase: function (str) { - return str.toLowerCase() - }, - truncate: function (str, length, truncation) { - //length,新字符串长度,truncation,新字符串的结尾的字段,返回新字符串 - length = length || 30 - truncation = truncation === void(0) ? "..." : truncation - return str.length > length ? str.slice(0, length - truncation.length) + truncation : String(str) - }, - $filter: function (val) { - for (var i = 1, n = arguments.length; i < n; i++) { - var array = arguments[i] - var fn = avalon.filters[array.shift()] - if (typeof fn === "function") { - var arr = [val].concat(array) - val = fn.apply(null, arr) - } - } - return val - }, - camelize: camelize, - //https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet - // chrome - // chrome - // IE67chrome - // IE67chrome - // IE67chrome - sanitize: function (str) { - return str.replace(rscripts, "").replace(ropen, function (a, b) { - var match = a.toLowerCase().match(/<(\w+)\s/) - if (match) { //处ç†a标签的href属性,img标签的src属性,form标签的action属性 - var reg = rsanitize[match[1]] - if (reg) { - a = a.replace(reg, function (s, name, value) { - var quote = value.charAt(0) - return name + "=" + quote + "javascript:void(0)" + quote// jshint ignore:line - }) - } - } - return a.replace(ron, " ").replace(/\s+/g, " ") //移除onXXX事件 - }) - }, - escape: function (str) { - //将字符串ç»è¿‡ str 转义得到适åˆåœ¨é¡µé¢ä¸­æ˜¾ç¤ºçš„内容, ä¾‹å¦‚æ›¿æ¢ < 为 < - return String(str). - replace(/&/g, '&'). - replace(rsurrogate, function (value) { - var hi = value.charCodeAt(0) - var low = value.charCodeAt(1) - return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';' - }). - replace(rnoalphanumeric, function (value) { - return '&#' + value.charCodeAt(0) + ';' - }). - replace(//g, '>') - }, - currency: function (amount, symbol, fractionSize) { - return (symbol || "\uFFE5") + numberFormat(amount, isFinite(fractionSize) ? fractionSize : 2) - }, - number: numberFormat - } - /* - 'yyyy': 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010) - 'yy': 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10) - 'y': 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199) - 'MMMM': Month in year (January-December) - 'MMM': Month in year (Jan-Dec) - 'MM': Month in year, padded (01-12) - 'M': Month in year (1-12) - 'dd': Day in month, padded (01-31) - 'd': Day in month (1-31) - 'EEEE': Day in Week,(Sunday-Saturday) - 'EEE': Day in Week, (Sun-Sat) - 'HH': Hour in day, padded (00-23) - 'H': Hour in day (0-23) - 'hh': Hour in am/pm, padded (01-12) - 'h': Hour in am/pm, (1-12) - 'mm': Minute in hour, padded (00-59) - 'm': Minute in hour (0-59) - 'ss': Second in minute, padded (00-59) - 's': Second in minute (0-59) - 'a': am/pm marker - 'Z': 4 digit (+sign) representation of the timezone offset (-1200-+1200) - format string can also be one of the following predefined localizable formats: - - 'medium': equivalent to 'MMM d, y h:mm:ss a' for en_US locale (e.g. Sep 3, 2010 12:05:08 pm) - 'short': equivalent to 'M/d/yy h:mm a' for en_US locale (e.g. 9/3/10 12:05 pm) - 'fullDate': equivalent to 'EEEE, MMMM d,y' for en_US locale (e.g. Friday, September 3, 2010) - 'longDate': equivalent to 'MMMM d, y' for en_US locale (e.g. September 3, 2010 - 'mediumDate': equivalent to 'MMM d, y' for en_US locale (e.g. Sep 3, 2010) - 'shortDate': equivalent to 'M/d/yy' for en_US locale (e.g. 9/3/10) - 'mediumTime': equivalent to 'h:mm:ss a' for en_US locale (e.g. 12:05:08 pm) - 'shortTime': equivalent to 'h:mm a' for en_US locale (e.g. 12:05 pm) - */ - new function () {// jshint ignore:line - function toInt(str) { - return parseInt(str, 10) || 0 - } - - function padNumber(num, digits, trim) { - var neg = "" - if (num < 0) { - neg = '-' - num = -num - } - num = "" + num - while (num.length < digits) - num = "0" + num - if (trim) - num = num.substr(num.length - digits) - return neg + num - } - - function dateGetter(name, size, offset, trim) { - return function (date) { - var value = date["get" + name]() - if (offset > 0 || value > -offset) - value += offset - if (value === 0 && offset === -12) { - value = 12 - } - return padNumber(value, size, trim) - } - } - - function dateStrGetter(name, shortForm) { - return function (date, formats) { - var value = date["get" + name]() - var get = (shortForm ? ("SHORT" + name) : name).toUpperCase() - return formats[get][value] - } - } - - function timeZoneGetter(date) { - var zone = -1 * date.getTimezoneOffset() - var paddedZone = (zone >= 0) ? "+" : "" - paddedZone += padNumber(Math[zone > 0 ? "floor" : "ceil"](zone / 60), 2) + padNumber(Math.abs(zone % 60), 2) - return paddedZone - } - - //å–得上åˆä¸‹åˆ - - function ampmGetter(date, formats) { - return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1] - } - - var DATE_FORMATS = { - yyyy: dateGetter("FullYear", 4), - yy: dateGetter("FullYear", 2, 0, true), - y: dateGetter("FullYear", 1), - MMMM: dateStrGetter("Month"), - MMM: dateStrGetter("Month", true), - MM: dateGetter("Month", 2, 1), - M: dateGetter("Month", 1, 1), - dd: dateGetter("Date", 2), - d: dateGetter("Date", 1), - HH: dateGetter("Hours", 2), - H: dateGetter("Hours", 1), - hh: dateGetter("Hours", 2, -12), - h: dateGetter("Hours", 1, -12), - mm: dateGetter("Minutes", 2), - m: dateGetter("Minutes", 1), - ss: dateGetter("Seconds", 2), - s: dateGetter("Seconds", 1), - sss: dateGetter("Milliseconds", 3), - EEEE: dateStrGetter("Day"), - EEE: dateStrGetter("Day", true), - a: ampmGetter, - Z: timeZoneGetter - } - var rdateFormat = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z))(.*)/ - var raspnetjson = /^\/Date\((\d+)\)\/$/ - filters.date = function (date, format) { - var locate = filters.date.locate, - text = "", - parts = [], - fn, match - format = format || "mediumDate" - format = locate[format] || format - if (typeof date === "string") { - if (/^\d+$/.test(date)) { - date = toInt(date) - } else if (raspnetjson.test(date)) { - date = +RegExp.$1 - } else { - var trimDate = date.trim() - var dateArray = [0, 0, 0, 0, 0, 0, 0] - var oDate = new Date(0) - //å–得年月日 - trimDate = trimDate.replace(/^(\d+)\D(\d+)\D(\d+)/, function (_, a, b, c) { - var array = c.length === 4 ? [c, a, b] : [a, b, c] - dateArray[0] = toInt(array[0]) //å¹´ - dateArray[1] = toInt(array[1]) - 1 //月 - dateArray[2] = toInt(array[2]) //æ—¥ - return "" - }) - var dateSetter = oDate.setFullYear - var timeSetter = oDate.setHours - trimDate = trimDate.replace(/[T\s](\d+):(\d+):?(\d+)?\.?(\d)?/, function (_, a, b, c, d) { - dateArray[3] = toInt(a) //å°æ—¶ - dateArray[4] = toInt(b) //分钟 - dateArray[5] = toInt(c) //秒 - if (d) { //毫秒 - dateArray[6] = Math.round(parseFloat("0." + d) * 1000) - } - return "" - }) - var tzHour = 0 - var tzMin = 0 - trimDate = trimDate.replace(/Z|([+-])(\d\d):?(\d\d)/, function (z, symbol, c, d) { - dateSetter = oDate.setUTCFullYear - timeSetter = oDate.setUTCHours - if (symbol) { - tzHour = toInt(symbol + c) - tzMin = toInt(symbol + d) - } - return "" - }) - - dateArray[3] -= tzHour - dateArray[4] -= tzMin - dateSetter.apply(oDate, dateArray.slice(0, 3)) - timeSetter.apply(oDate, dateArray.slice(3)) - date = oDate - } - } - if (typeof date === "number") { - date = new Date(date) - } - if (avalon.type(date) !== "date") { - return - } - while (format) { - match = rdateFormat.exec(format) - if (match) { - parts = parts.concat(match.slice(1)) - format = parts.pop() - } else { - parts.push(format) - format = null - } - } - parts.forEach(function (value) { - fn = DATE_FORMATS[value] - text += fn ? fn(date, locate) : value.replace(/(^'|'$)/g, "").replace(/''/g, "'") - }) - return text - } - var locate = { - AMPMS: { - 0: "上åˆ", - 1: "下åˆ" - }, - DAY: { - 0: "星期日", - 1: "星期一", - 2: "星期二", - 3: "星期三", - 4: "星期四", - 5: "星期五", - 6: "星期六" - }, - MONTH: { - 0: "1月", - 1: "2月", - 2: "3月", - 3: "4月", - 4: "5月", - 5: "6月", - 6: "7月", - 7: "8月", - 8: "9月", - 9: "10月", - 10: "11月", - 11: "12月" - }, - SHORTDAY: { - "0": "周日", - "1": "周一", - "2": "周二", - "3": "周三", - "4": "周四", - "5": "周五", - "6": "周六" - }, - fullDate: "yå¹´M月dæ—¥EEEE", - longDate: "yå¹´M月dæ—¥", - medium: "yyyy-M-d H:mm:ss", - mediumDate: "yyyy-M-d", - mediumTime: "H:mm:ss", - "short": "yy-M-d ah:mm", - shortDate: "yy-M-d", - shortTime: "ah:mm" - } - locate.SHORTMONTH = locate.MONTH - filters.date.locate = locate - }// jshint ignore:line - /********************************************************************* - * AMD加载器 * - **********************************************************************/ -//https://www.devbridge.com/articles/understanding-amd-requirejs/ -//http://maxogden.com/nested-dependencies.html - var modules = avalon.modules = { - "domReady!": { - exports: avalon, - state: 3 - }, - "avalon": { - exports: avalon, - state: 4 - } - } -//Object(modules[id]).state拥有如下值 -// undefined 没有定义 -// 1(send) å·²ç»å‘出请求 -// 2(loading) å·²ç»è¢«æ‰§è¡Œä½†è¿˜æ²¡æœ‰æ‰§è¡Œå®Œæˆï¼Œåœ¨è¿™ä¸ªé˜¶æ®µdefine方法会被执行 -// 3(loaded) 执行完毕,通过onload/onreadystatechange回调判定,在这个阶段checkDeps方法会执行 -// 4(execute) å…¶ä¾èµ–也执行完毕, 值放到exports对象上,在这个阶段fireFactory方法会执行 - modules.exports = modules.avalon - - new function () {// jshint ignore:line - var loadings = [] //正在加载中的模å—列表 - var factorys = [] //放置define方法的factory函数 - var rjsext = /\.js$/i - - function makeRequest(name, config) { -//1. 去掉资æºå‰ç¼€ - var res = "js" - name = name.replace(/^(\w+)\!/, function (a, b) { - res = b - return "" - }) - if (res === "ready") { - log("debug: ready!å·²ç»è¢«åºŸå¼ƒï¼Œè¯·ä½¿ç”¨domReady!") - res = "domReady" - } -//2. 去掉querystring, hash - var query = "" - name = name.replace(rquery, function (a) { - query = a - return "" - }) - //3. 去掉扩展å - var suffix = "." + res - var ext = /js|css/.test(suffix) ? suffix : "" - name = name.replace(/\.[a-z0-9]+$/g, function (a) { - if (a === suffix) { - ext = a - return "" - } else { - return a - } - }) - var req = avalon.mix({ - query: query, - ext: ext, - res: res, - name: name, - toUrl: toUrl - }, config) - req.toUrl(name) - return req - } - - function fireRequest(req) { - var name = req.name - var res = req.res - //1. 如果该模å—å·²ç»å‘出请求,直接返回 - var module = modules[name] - var urlNoQuery = name && req.urlNoQuery - if (module && module.state >= 1) { - return name - } - module = modules[urlNoQuery] - if (module && module.state >= 3) { - innerRequire(module.deps || [], module.factory, urlNoQuery) - return urlNoQuery - } - if (name && !module) { - module = modules[urlNoQuery] = { - id: urlNoQuery, - state: 1 //send - } - var wrap = function (obj) { - resources[res] = obj - obj.load(name, req, function (a) { - if (arguments.length && a !== void 0) { - module.exports = a - } - module.state = 4 - checkDeps() - }) - } - - if (!resources[res]) { - innerRequire([res], wrap) - } else { - wrap(resources[res]) - } - } - return name ? urlNoQuery : res + "!" - } - -//核心API之一 require - var requireQueue = [] - var isUserFirstRequire = false - innerRequire = avalon.require = function (array, factory, parentUrl, defineConfig) { - if (!isUserFirstRequire) { - requireQueue.push(avalon.slice(arguments)) - if (arguments.length <= 2) { - isUserFirstRequire = true - var queue = requireQueue.splice(0, requireQueue.length), args - while (args = queue.shift()) { - innerRequire.apply(null, args) - } - } - return - } - - if (!Array.isArray(array)) { - avalon.error("require方法的第一个å‚数应为数组 " + array) - } - var deps = [] // 放置所有ä¾èµ–项的完整路径 - var uniq = createMap() - var id = parentUrl || "callback" + setTimeout("1")// jshint ignore:line - defineConfig = defineConfig || createMap() - defineConfig.baseUrl = kernel.baseUrl - var isBuilt = !!defineConfig.built - if (parentUrl) { - defineConfig.parentUrl = parentUrl.substr(0, parentUrl.lastIndexOf("/")) - defineConfig.mapUrl = parentUrl.replace(rjsext, "") - } - if (isBuilt) { - var req = makeRequest(defineConfig.defineName, defineConfig) - id = req.urlNoQuery - } else { - array.forEach(function (name) { - var req = makeRequest(name, defineConfig) - var url = fireRequest(req) //加载资æºï¼Œå¹¶è¿”回该资æºçš„å®Œæ•´åœ°å€ - if (url) { - if (!uniq[url]) { - deps.push(url) - uniq[url] = "å¸å¾’正美" //åŽ»é‡ - } - } - }) - } - - var module = modules[id] - if (!module || module.state !== 4) { - modules[id] = { - id: id, - deps: isBuilt ? array.concat() : deps, - factory: factory || noop, - state: 3 - } - } - if (!module) { - //如果此模å—是定义在å¦ä¸€ä¸ªJS文件中, 那必须等该文件加载完毕, æ‰èƒ½æ”¾åˆ°æ£€æµ‹åˆ—队中 - loadings.push(id) - } - checkDeps() - } - -//核心API之二 require - innerRequire.define = function (name, deps, factory) { //模å—å,ä¾èµ–列表,模å—本身 - if (typeof name !== "string") { - factory = deps - deps = name - name = "anonymous" - } - if (!Array.isArray(deps)) { - factory = deps - deps = [] - } - var config = { - built: !isUserFirstRequire, //用r.js打包åŽ,所有define会放到requirejsä¹‹å‰ - defineName: name - } - var args = [deps, factory, config] - factory.require = function (url) { - args.splice(2, 0, url) - if (modules[url]) { - modules[url].state = 3 //loaded - var isCycle = false - try { - isCycle = checkCycle(modules[url].deps, url) - } catch (e) { - } - if (isCycle) { - avalon.error(url + "模å—与之å‰çš„模å—存在循环ä¾èµ–,请ä¸è¦ç›´æŽ¥ç”¨script标签引入" + url + "模å—") - } - } - delete factory.require //释放内存 - innerRequire.apply(null, args) //0,1,2 --> 1,2,0 - } -//æ ¹æ®æ ‡å‡†,所有éµå¾ªW3C标准的æµè§ˆå™¨,script标签会按标签的出现顺åºæ‰§è¡Œã€‚ -//è€çš„æµè§ˆå™¨ä¸­ï¼ŒåŠ è½½ä¹Ÿæ˜¯æŒ‰é¡ºåºçš„:一个文件下载完æˆåŽï¼Œæ‰å¼€å§‹ä¸‹è½½ä¸‹ä¸€ä¸ªæ–‡ä»¶ã€‚ -//较新的æµè§ˆå™¨ä¸­ï¼ˆIE8+ ã€FireFox3.5+ ã€Chrome4+ ã€Safari4+),为了å‡å°è¯·æ±‚时间以优化体验, -//下载å¯ä»¥æ˜¯å¹¶è¡Œçš„,但是执行顺åºè¿˜æ˜¯æŒ‰ç…§æ ‡ç­¾å‡ºçŽ°çš„顺åºã€‚ -//但如果script标签是动æ€æ’入的, 就未必按照先请求先执行的原则了,目测åªæœ‰firefoxéµå®ˆ -//唯一比较一致的是,IE10+åŠå…¶ä»–标准æµè§ˆå™¨,一旦开始解æžè„šæœ¬, 就会一直堵在那里,直接脚本解æžå®Œæ¯• -//亦å³ï¼Œå…ˆè¿›å…¥loading阶段的script标签(模å—)必然会先进入loaded阶段 - var url = config.built ? "unknown" : getCurrentScript() - if (url) { - var module = modules[url] - if (module) { - module.state = 2 - } - factory.require(url) - } else {//åˆå¹¶å‰åŽçš„safari,åˆå¹¶åŽçš„IE6-9走此分支 - factorys.push(factory) - } - } -//核心API之三 require.config(settings) - innerRequire.config = kernel - //核心API之四 define.amd 标识其符åˆAMD规范 - innerRequire.define.amd = modules - - //==========================对用户é…置项进行å†åŠ å·¥========================== - var allpaths = kernel["orig.paths"] = createMap() - var allmaps = kernel["orig.map"] = createMap() - var allpackages = kernel["packages"] = [] - var allargs = kernel["orig.args"] = createMap() - avalon.mix(plugins, { - paths: function (hash) { - avalon.mix(allpaths, hash) - kernel.paths = makeIndexArray(allpaths) - }, - map: function (hash) { - avalon.mix(allmaps, hash) - var list = makeIndexArray(allmaps, 1, 1) - avalon.each(list, function (_, item) { - item.val = makeIndexArray(item.val) - }) - kernel.map = list - }, - packages: function (array) { - array = array.concat(allpackages) - var uniq = createMap() - var ret = [] - for (var i = 0, pkg; pkg = array[i++];) { - pkg = typeof pkg === "string" ? {name: pkg} : pkg - var name = pkg.name - if (!uniq[name]) { - var url = joinPath(pkg.location || name, pkg.main || "main") - url = url.replace(rjsext, "") - ret.push(pkg) - uniq[name] = pkg.location = url - pkg.reg = makeMatcher(name) - } - } - kernel.packages = ret.sort() - }, - urlArgs: function (hash) { - if (typeof hash === "string") { - hash = {"*": hash} - } - avalon.mix(allargs, hash) - kernel.urlArgs = makeIndexArray(allargs, 1) - }, - baseUrl: function (url) { - if (!isAbsUrl(url)) { - var baseElement = head.getElementsByTagName("base")[0] - if (baseElement) { - head.removeChild(baseElement) - } - var node = DOC.createElement("a") - node.href = url - url = node.href - if (baseElement) { - head.insertBefore(baseElement, head.firstChild) - } - } - if (url.length > 3) - kernel.baseUrl = url - }, - shim: function (obj) { - for (var i in obj) { - var value = obj[i] - if (Array.isArray(value)) { - value = obj[i] = { - deps: value - } - } - if (!value.exportsFn && (value.exports || value.init)) { - value.exportsFn = makeExports(value) - } - } - kernel.shim = obj - } - - }) - - - //==============================内部方法================================= - function checkCycle(deps, nick) { - //检测是å¦å­˜åœ¨å¾ªçŽ¯ä¾èµ– - for (var i = 0, id; id = deps[i++];) { - if (modules[id].state !== 4 && - (id === nick || checkCycle(modules[id].deps, nick))) { - return true - } - } - } - - function checkFail(node, onError) { - var id = trimQuery(node.src) //检测是å¦æ­»é“¾ - node.onload = node.onerror = null - if (onError) { - setTimeout(function () { - head.removeChild(node) - node = null // 处ç†æ—§å¼IE下的循环引用问题 - }) - log("debug: 加载 " + id + " 失败" + onError + " " + (!modules[id].state)) - } else { - return true - } - } - - function checkDeps() { - //检测此JS模å—çš„ä¾èµ–是å¦éƒ½å·²å®‰è£…完毕,是则安装自身 - loop: for (var i = loadings.length, id; id = loadings[--i];) { - var obj = modules[id], - deps = obj.deps - if (!deps) - continue - for (var j = 0, key; key = deps[j]; j++) { - if (Object(modules[key]).state !== 4) { - continue loop - } - } - //如果deps是空对象或者其ä¾èµ–的模å—的状æ€éƒ½æ˜¯2 - if (obj.state !== 4) { - loadings.splice(i, 1) //必须先移除å†å®‰è£…,防止在IE下DOM树建完åŽæ‰‹åŠ¨åˆ·æ–°é¡µé¢ï¼Œä¼šå¤šæ¬¡æ‰§è¡Œå®ƒ - fireFactory(obj.id, obj.deps, obj.factory) - checkDeps() //如果æˆåŠŸ,则å†æ‰§è¡Œä¸€æ¬¡,以防有些模å—就差本模å—没有安装好 - } - } - } - - function loadJS(url, id, callback) { - //通过scriptèŠ‚ç‚¹åŠ è½½ç›®æ ‡æ¨¡å— - var node = DOC.createElement("script") - node.className = subscribers //让getCurrentScriptåªå¤„ç†ç±»å为subscribersçš„script节点 - node.onload = function () { - var factory = factorys.pop() - factory && factory.require(id) - if (callback) { - callback() - } - log("debug: å·²æˆåŠŸåŠ è½½ " + url) - id && loadings.push(id) - checkDeps() - } - node.onerror = function () { - checkFail(node, true) - } - - head.insertBefore(node, head.firstChild) //chrome下第二个å‚æ•°ä¸èƒ½ä¸ºnull - node.src = url //æ’入到head的第一个节点å‰ï¼Œé˜²æ­¢IE6下head标签没闭åˆå‰ä½¿ç”¨appendChild抛错 - log("debug: 正准备加载 " + url) //æ›´é‡è¦çš„是IE6下å¯ä»¥æ”¶çª„getCurrentScript的寻找范围 - } - - var resources = innerRequire.plugins = { - //三大常用资æºæ’件 js!, css!, text!, ready! - ready: { - load: noop - }, - js: { - load: function (name, req, onLoad) { - var url = req.url - var id = req.urlNoQuery - var shim = kernel.shim[name.replace(rjsext, "")] - if (shim) { //shim机制 - innerRequire(shim.deps || [], function () { - var args = avalon.slice(arguments) - loadJS(url, id, function () { - onLoad(shim.exportsFn ? shim.exportsFn.apply(0, args) : void 0) - }) - }) - } else { - loadJS(url, id) - } - } - }, - css: { - load: function (name, req, onLoad) { - var url = req.url - head.insertAdjacentHTML("afterBegin", '') - log("debug: å·²æˆåŠŸåŠ è½½ " + url) - onLoad() - } - }, - text: { - load: function (name, req, onLoad) { - var url = req.url - var xhr = getXHR() - xhr.onload = function () { - var status = xhr.status; - if (status > 399 && status < 600) { - avalon.error(url + " 对应资æºä¸å­˜åœ¨æˆ–æ²¡æœ‰å¼€å¯ CORS") - } else { - log("debug: å·²æˆåŠŸåŠ è½½ " + url) - onLoad(xhr.responseText) - } - } - xhr.open("GET", url, true) - if ("withCredentials" in xhr) {//这是处ç†è·¨åŸŸ - xhr.withCredentials = true - } - xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest")//告诉åŽç«¯è¿™æ˜¯AJAX请求 - xhr.send() - log("debug: 正准备加载 " + url) - } - } - } - innerRequire.checkDeps = checkDeps - - var rquery = /(\?[^#]*)$/ - - function trimQuery(url) { - return (url || "").replace(rquery, "") - } - - function isAbsUrl(path) { - //http://stackoverflow.com/questions/10687099/how-to-test-if-a-url-string-is-absolute-or-relative - return /^(?:[a-z]+:)?\/\//i.test(String(path)) - } - - - function getCurrentScript() { - // inspireb by https://github.com/samyk/jiagra/blob/master/jiagra.js - var stack - try { - a.b.c() //强制报错,以便æ•èŽ·e.stack - } catch (e) { //safari5çš„sourceURL,firefoxçš„fileName,它们的效果与e.stackä¸ä¸€æ · - stack = e.stack - } - if (stack) { - /**e.stack最åŽä¸€è¡Œåœ¨æ‰€æœ‰æ”¯æŒçš„æµè§ˆå™¨å¤§è‡´å¦‚下: - *chrome23: - * at http://113.93.50.63/data.js:4:1 - *firefox17: - *@http://113.93.50.63/query.js:4 - *opera12:http://www.oldapps.com/opera.php?system=Windows_XP - *@http://113.93.50.63/data.js:4 - *IE10: - * at Global code (http://113.93.50.63/data.js:4:1) - * //firefox4+ å¯ä»¥ç”¨document.currentScript - */ - stack = stack.split(/[@ ]/g).pop() //å–得最åŽä¸€è¡Œ,最åŽä¸€ä¸ªç©ºæ ¼æˆ–@之åŽçš„部分 - stack = stack[0] === "(" ? stack.slice(1, -1) : stack.replace(/\s/, "") //去掉æ¢è¡Œç¬¦ - return trimQuery(stack.replace(/(:\d+)?:\d+$/i, "")) //去掉行å·ä¸Žæˆ–许存在的出错字符起始ä½ç½® - } - var nodes = head.getElementsByTagName("script") //åªåœ¨head标签中寻找 - for (var i = nodes.length, node; node = nodes[--i];) { - if (node.className === subscribers && node.readyState === "interactive") { - var url = node.src - return node.className = trimQuery(url) - } - } - } - - var rcallback = /^callback\d+$/ - - function fireFactory(id, deps, factory) { - var module = Object(modules[id]) - module.state = 4 - for (var i = 0, array = [], d; d = deps[i++];) { - if (d === "exports") { - var obj = module.exports || (module.exports = createMap()) - array.push(obj) - } else { - array.push(modules[d].exports) - } - } - try { - var ret = factory.apply(window, array) - } catch (e) { - log("执行[" + id + "]模å—çš„factory抛错: " + e) - } - if (ret !== void 0) { - module.exports = ret - } - if (rcallback.test(id)) { - delete modules[id] - } - delete module.factory - return ret - } - - function toUrl(id) { - if (id.indexOf(this.res + "!") === 0) { - id = id.slice(this.res.length + 1) //处ç†define("css!style",[], function(){})的情况 - } - var url = id - //1. 是å¦å‘½ä¸­pathsé…置项 - var usePath = 0 - var baseUrl = this.baseUrl - var rootUrl = this.parentUrl || baseUrl - eachIndexArray(id, kernel.paths, function (value, key) { - url = url.replace(key, value) - usePath = 1 - }) - //2. 是å¦å‘½ä¸­packagesé…置项 - if (!usePath) { - eachIndexArray(id, kernel.packages, function (value, key, item) { - url = url.replace(item.name, item.location) - }) - } - //3. 是å¦å‘½ä¸­mapé…置项 - if (this.mapUrl) { - eachIndexArray(this.mapUrl, kernel.map, function (array) { - eachIndexArray(url, array, function (mdValue, mdKey) { - url = url.replace(mdKey, mdValue) - rootUrl = baseUrl - }) - }) - } - var ext = this.ext - if (ext && usePath && url.slice(-ext.length) === ext) { - url = url.slice(0, -ext.length) - } - //4. 转æ¢ä¸ºç»å¯¹è·¯å¾„ - if (!isAbsUrl(url)) { - rootUrl = this.built || /^\w/.test(url) ? baseUrl : rootUrl - url = joinPath(rootUrl, url) - } - //5. 还原扩展å,query - var urlNoQuery = url + ext - url = urlNoQuery + this.query - //6. 处ç†urlArgs - eachIndexArray(id, kernel.urlArgs, function (value) { - url += (url.indexOf("?") === -1 ? "?" : "&") + value; - }) - this.url = url - return this.urlNoQuery = urlNoQuery - } - - function makeIndexArray(hash, useStar, part) { - //创建一个ç»è¿‡ç‰¹æ®Šç®—法排好åºçš„数组 - var index = hash2array(hash, useStar, part) - index.sort(descSorterByName) - return index - } - - function makeMatcher(prefix) { - return new RegExp('^' + prefix + '(/|$)') - } - - function makeExports(value) { - return function () { - var ret - if (value.init) { - ret = value.init.apply(window, arguments) - } - return ret || (value.exports && getGlobal(value.exports)) - } - } - - - function hash2array(hash, useStar, part) { - var array = []; - for (var key in hash) { - // if (hash.hasOwnProperty(key)) {//hash是由createMap创建没有hasOwnProperty - var item = { - name: key, - val: hash[key] - } - array.push(item) - item.reg = key === "*" && useStar ? /^/ : makeMatcher(key) - if (part && key !== "*") { - item.reg = new RegExp('\/' + key.replace(/^\//, "") + '(/|$)') - } - // } - } - return array - } - - function eachIndexArray(moduleID, array, matcher) { - array = array || [] - for (var i = 0, el; el = array[i++];) { - if (el.reg.test(moduleID)) { - matcher(el.val, el.name, el) - return false - } - } - } - - // æ ¹æ®å…ƒç´ çš„name项进行数组字符数逆åºçš„排åºå‡½æ•° - function descSorterByName(a, b) { - var aaa = a.name - var bbb = b.name - if (bbb === "*") { - return -1 - } - if (aaa === "*") { - return 1 - } - return bbb.length - aaa.length - } - - var rdeuce = /\/\w+\/\.\./ - - function joinPath(a, b) { - if (a.charAt(a.length - 1) !== "/") { - a += "/" - } - if (b.slice(0, 2) === "./") { //相对于兄弟路径 - return a + b.slice(2) - } - if (b.slice(0, 2) === "..") { //相对于父路径 - a += b - while (rdeuce.test(a)) { - a = a.replace(rdeuce, "") - } - return a - } - if (b.slice(0, 1) === "/") { - return a + b.slice(1) - } - return a + b - } - - function getGlobal(value) { - if (!value) { - return value - } - var g = window - value.split(".").forEach(function (part) { - g = g[part] - }) - return g - } - - var mainNode = DOC.scripts[DOC.scripts.length - 1] - var dataMain = mainNode.getAttribute("data-main") - if (dataMain) { - plugins.baseUrl(dataMain) - var href = kernel.baseUrl - kernel.baseUrl = href.slice(0, href.lastIndexOf("/") + 1) - loadJS(href.replace(rjsext, "") + ".js") - } else { - var loaderUrl = trimQuery(mainNode.src) - kernel.baseUrl = loaderUrl.slice(0, loaderUrl.lastIndexOf("/") + 1) - } - }// jshint ignore:line - - /********************************************************************* - * DOMReady * - **********************************************************************/ - var readyList = [], isReady - var fireReady = function (fn) { - isReady = true - if (innerRequire) { - modules["domReady!"].state = 4 - innerRequire.checkDeps() - } - while (fn = readyList.shift()) { - fn(avalon) - } - } - - - if (DOC.readyState === "complete") { - setTimeout(fireReady) //如果在domReady之外加载 - } else { - DOC.addEventListener("DOMContentLoaded", fireReady) - } - window.addEventListener("load", fireReady) - avalon.ready = function (fn) { - if (!isReady) { - readyList.push(fn) - } else { - fn(avalon) - } - } - avalon.config({ - loader: true - }) - avalon.ready(function () { - avalon.scan(DOC.body) - }) - -// Register as a named AMD module, since avalon can be concatenated with other -// files that may use define, but not via a proper concatenation script that -// understands anonymous AMD modules. A named AMD is safest and most robust -// way to register. Lowercase avalon is used because AMD module names are -// derived from file names, and Avalon is normally delivered in a lowercase -// file name. Do this after creating the global so that if an AMD module wants -// to call noConflict to hide this version of avalon, it will work. - -// Note that for maximum portability, libraries that are not avalon should -// declare themselves as anonymous modules, and avoid setting a global if an -// AMD loader is present. avalon is a special case. For more information, see -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon - if (typeof define === "function" && define.amd) { - define("avalon", [], function () { - return avalon - }) - } -// Map over avalon in case of overwrite - var _avalon = window.avalon - avalon.noConflict = function (deep) { - if (deep && window.avalon === avalon) { - window.avalon = _avalon - } - return avalon - } -// Expose avalon identifiers, even in AMD -// and CommonJS for browser emulators - if (noGlobal === void 0) { - window.avalon = avalon - } - - window._injectTer = function (code) { - return eval(code) - } - - return avalon - -})); \ No newline at end of file diff --git a/common/src/main/webapp/thirdparty/bootbox/LICENSE.md b/common/src/main/webapp/thirdparty/bootbox/LICENSE.md deleted file mode 100755 index 8219f598..00000000 --- a/common/src/main/webapp/thirdparty/bootbox/LICENSE.md +++ /dev/null @@ -1,23 +0,0 @@ -# License - -(The MIT License) - -Copyright (C) 2011-2014 by Nick Payne - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE diff --git a/common/src/main/webapp/thirdparty/bootbox/README.md b/common/src/main/webapp/thirdparty/bootbox/README.md deleted file mode 100755 index eedb7210..00000000 --- a/common/src/main/webapp/thirdparty/bootbox/README.md +++ /dev/null @@ -1,91 +0,0 @@ -# Bootbox - Bootstrap powered alert, confirm and flexible dialog boxes - -Please see http://bootboxjs.com for full usage instructions, or head over to http://paynedigital.com/bootbox for -the original writeup about the project. - -## Contact - -The easiest thing is to [find me on twitter @makeusabrew](http://twitter.com/makeusabrew). - -## Contributing - -Please see the [CONTRIBUTING](https://github.com/makeusabrew/bootbox/blob/master/CONTRIBUTING.md) file for guidelines. - -## Running Tests [![Build Status](https://api.travis-ci.org/makeusabrew/bootbox.svg)](http://travis-ci.org/makeusabrew/bootbox) - -Tests are run using [Karma](http://karma-runner.github.io/0.8/index.html) using the Mocha test adapter. -To run the tests yourself, simply run ```npm install``` within the project followed by ```npm test```. -Please note that this will require [PhantomJS](http://phantomjs.org/) being installed and in your path - if -it is not, you may run the tests and capture browsers manually by running ```karma start``` from the root -of the project. - -The project is also hosted on [Travis CI](https://travis-ci.org/makeusabrew/bootbox) - when submitting -pull requests **please** ensure your tests pass as failing requests will be rejected. See the -[CONTRIBUTING](https://github.com/makeusabrew/bootbox/blob/master/CONTRIBUTING.md) file for more information. - -## Building a minified release - -The repository no longer contains a minified bootbox.min.js file - this is now only generated -[for releases](https://github.com/makeusabrew/bootbox/releases). To build your own minified copy -for use in development simply run ```npm install``` if you haven't already, followed by ```grunt uglify```. -This will generate a bootbox.min.js file in your working directory. - -## A note on Bootstrap dependencies - -Bootbox **4.0.0** is the first release to support Bootstrap 3.0.0. - -Bootbox **3.3.0** is the *last* release to support Bootstrap 2.2.x. - -Much more dependency information can be found [on the Bootbox website](http://bootboxjs.com/#dependencies). - -### Roadmap - -The latest major release of Bootbox - 4.0.0 - involved a total rewrite of the -internal code and introduced an entirely new public API. It has not re-implemented -some functionality from the 3.x series as of yet; this will be addressed in the -coming weeks in the form of new minor releases; -[a task list for 4.3.0 is available](https://github.com/makeusabrew/bootbox/issues/220) - -please feel free to add feedback and requests. - -There is no new major (e.g. 5.x) release on the roadmap at present. - -## Latest Release: 4.2.0 - -* Add Swedish locale -* Add Latvian locale -* Add Turkish locale -* Add Hebrew locale -* Add password input type -* Add textarea input type -* Add date input type -* Add time input type -* Add number input type -* Support DOM selectors for container argument -* UMD support -* Better support on mobile devices - -For a full list of releases and changes please see [the changelog](https://github.com/makeusabrew/bootbox/blob/master/CHANGELOG.md). - -## License - -(The MIT License) - -Copyright (C) 2011-2014 by Nick Payne - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE diff --git a/common/src/main/webapp/thirdparty/bootbox/bootbox.min.js b/common/src/main/webapp/thirdparty/bootbox/bootbox.min.js deleted file mode 100755 index a7ea24fe..00000000 --- a/common/src/main/webapp/thirdparty/bootbox/bootbox.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * bootbox.js v4.3.0 - * - * http://bootboxjs.com/license.txt - */ -!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["jquery"],b):"object"==typeof exports?module.exports=b(require("jquery")):a.bootbox=b(a.jQuery)}(this,function a(b,c){"use strict";function d(a){var b=q[o.locale];return b?b[a]:q.en[a]}function e(a,c,d){a.stopPropagation(),a.preventDefault();var e=b.isFunction(d)&&d(a)===!1;e||c.modal("hide")}function f(a){var b,c=0;for(b in a)c++;return c}function g(a,c){var d=0;b.each(a,function(a,b){c(a,b,d++)})}function h(a){var c,d;if("object"!=typeof a)throw new Error("Please supply an object of options");if(!a.message)throw new Error("Please specify a message");return a=b.extend({},o,a),a.buttons||(a.buttons={}),a.backdrop=a.backdrop?"static":!1,c=a.buttons,d=f(c),g(c,function(a,e,f){if(b.isFunction(e)&&(e=c[a]={callback:e}),"object"!==b.type(e))throw new Error("button with key "+a+" must be an object");e.label||(e.label=a),e.className||(e.className=2>=d&&f===d-1?"btn-primary":"btn-default")}),a}function i(a,b){var c=a.length,d={};if(1>c||c>2)throw new Error("Invalid argument length");return 2===c||"string"==typeof a[0]?(d[b[0]]=a[0],d[b[1]]=a[1]):d=a[0],d}function j(a,c,d){return b.extend(!0,{},a,i(c,d))}function k(a,b,c,d){var e={className:"bootbox-"+a,buttons:l.apply(null,b)};return m(j(e,d,c),b)}function l(){for(var a={},b=0,c=arguments.length;c>b;b++){var e=arguments[b],f=e.toLowerCase(),g=e.toUpperCase();a[f]={label:d(g)}}return a}function m(a,b){var d={};return g(b,function(a,b){d[b]=!0}),g(a.buttons,function(a){if(d[a]===c)throw new Error("button key "+a+" is not allowed (options are "+b.join("\n")+")")}),a}var n={dialog:"",header:"",footer:"",closeButton:"",form:"
",inputs:{text:"",textarea:"",email:"",select:"",checkbox:"
",date:"",time:"",number:"",password:""}},o={locale:"en",backdrop:!0,animate:!0,className:null,closeButton:!0,show:!0,container:"body"},p={};p.alert=function(){var a;if(a=k("alert",["ok"],["message","callback"],arguments),a.callback&&!b.isFunction(a.callback))throw new Error("alert requires callback property to be a function when provided");return a.buttons.ok.callback=a.onEscape=function(){return b.isFunction(a.callback)?a.callback():!0},p.dialog(a)},p.confirm=function(){var a;if(a=k("confirm",["cancel","confirm"],["message","callback"],arguments),a.buttons.cancel.callback=a.onEscape=function(){return a.callback(!1)},a.buttons.confirm.callback=function(){return a.callback(!0)},!b.isFunction(a.callback))throw new Error("confirm requires a callback");return p.dialog(a)},p.prompt=function(){var a,d,e,f,h,i,k;if(f=b(n.form),d={className:"bootbox-prompt",buttons:l("cancel","confirm"),value:"",inputType:"text"},a=m(j(d,arguments,["title","callback"]),["cancel","confirm"]),i=a.show===c?!0:a.show,a.message=f,a.buttons.cancel.callback=a.onEscape=function(){return a.callback(null)},a.buttons.confirm.callback=function(){var c;switch(a.inputType){case"text":case"textarea":case"email":case"select":case"date":case"time":case"number":case"password":c=h.val();break;case"checkbox":var d=h.find("input:checked");c=[],g(d,function(a,d){c.push(b(d).val())})}return a.callback(c)},a.show=!1,!a.title)throw new Error("prompt requires a title");if(!b.isFunction(a.callback))throw new Error("prompt requires a callback");if(!n.inputs[a.inputType])throw new Error("invalid prompt type");switch(h=b(n.inputs[a.inputType]),a.inputType){case"text":case"textarea":case"email":case"date":case"time":case"number":case"password":h.val(a.value);break;case"select":var o={};if(k=a.inputOptions||[],!k.length)throw new Error("prompt with select requires options");g(k,function(a,d){var e=h;if(d.value===c||d.text===c)throw new Error("given options in wrong format");d.group&&(o[d.group]||(o[d.group]=b("").attr("label",d.group)),e=o[d.group]),e.append("")}),g(o,function(a,b){h.append(b)}),h.val(a.value);break;case"checkbox":var q=b.isArray(a.value)?a.value:[a.value];if(k=a.inputOptions||[],!k.length)throw new Error("prompt with checkbox requires options");if(!k[0].value||!k[0].text)throw new Error("given options in wrong format");h=b("
"),g(k,function(c,d){var e=b(n.inputs[a.inputType]);e.find("input").attr("value",d.value),e.find("label").append(d.text),g(q,function(a,b){b===d.value&&e.find("input").prop("checked",!0)}),h.append(e)})}return a.placeholder&&h.attr("placeholder",a.placeholder),a.pattern&&h.attr("pattern",a.pattern),f.append(h),f.on("submit",function(a){a.preventDefault(),a.stopPropagation(),e.find(".btn-primary").click()}),e=p.dialog(a),e.off("shown.bs.modal"),e.on("shown.bs.modal",function(){h.focus()}),i===!0&&e.modal("show"),e},p.dialog=function(a){a=h(a);var c=b(n.dialog),d=c.find(".modal-dialog"),f=c.find(".modal-body"),i=a.buttons,j="",k={onEscape:a.onEscape};if(g(i,function(a,b){j+="",k[a]=b.callback}),f.find(".bootbox-body").html(a.message),a.animate===!0&&c.addClass("fade"),a.className&&c.addClass(a.className),"large"===a.size&&d.addClass("modal-lg"),"small"===a.size&&d.addClass("modal-sm"),a.title&&f.before(n.header),a.closeButton){var l=b(n.closeButton);a.title?c.find(".modal-header").prepend(l):l.css("margin-top","-10px").prependTo(f)}return a.title&&c.find(".modal-title").html(a.title),j.length&&(f.after(n.footer),c.find(".modal-footer").html(j)),c.on("hidden.bs.modal",function(a){a.target===this&&c.remove()}),c.on("shown.bs.modal",function(){c.find(".btn-primary:first").focus()}),c.on("escape.close.bb",function(a){k.onEscape&&e(a,c,k.onEscape)}),c.on("click",".modal-footer button",function(a){var d=b(this).data("bb-handler");e(a,c,k[d])}),c.on("click",".bootbox-close-button",function(a){e(a,c,k.onEscape)}),c.on("keyup",function(a){27===a.which&&c.trigger("escape.close.bb")}),b(a.container).append(c),c.modal({backdrop:a.backdrop,keyboard:!1,show:!1}),a.show&&c.modal("show"),c},p.setDefaults=function(){var a={};2===arguments.length?a[arguments[0]]=arguments[1]:a=arguments[0],b.extend(o,a)},p.hideAll=function(){return b(".bootbox").modal("hide"),p};var q={br:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Sim"},cs:{OK:"OK",CANCEL:"ZruÅ¡it",CONFIRM:"Potvrdit"},da:{OK:"OK",CANCEL:"Annuller",CONFIRM:"Accepter"},de:{OK:"OK",CANCEL:"Abbrechen",CONFIRM:"Akzeptieren"},el:{OK:"Εντάξει",CANCEL:"ΑκÏÏωση",CONFIRM:"Επιβεβαίωση"},en:{OK:"OK",CANCEL:"Cancel",CONFIRM:"OK"},es:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Aceptar"},et:{OK:"OK",CANCEL:"Katkesta",CONFIRM:"OK"},fi:{OK:"OK",CANCEL:"Peruuta",CONFIRM:"OK"},fr:{OK:"OK",CANCEL:"Annuler",CONFIRM:"D'accord"},he:{OK:"×ישור",CANCEL:"ביטול",CONFIRM:"×ישור"},id:{OK:"OK",CANCEL:"Batal",CONFIRM:"OK"},it:{OK:"OK",CANCEL:"Annulla",CONFIRM:"Conferma"},ja:{OK:"OK",CANCEL:"キャンセル",CONFIRM:"確èª"},lt:{OK:"Gerai",CANCEL:"AtÅ¡aukti",CONFIRM:"Patvirtinti"},lv:{OK:"Labi",CANCEL:"Atcelt",CONFIRM:"ApstiprinÄt"},nl:{OK:"OK",CANCEL:"Annuleren",CONFIRM:"Accepteren"},no:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},pl:{OK:"OK",CANCEL:"Anuluj",CONFIRM:"Potwierdź"},pt:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Confirmar"},ru:{OK:"OK",CANCEL:"Отмена",CONFIRM:"Применить"},sv:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},tr:{OK:"Tamam",CANCEL:"Ä°ptal",CONFIRM:"Onayla"},zh_CN:{OK:"OK",CANCEL:"å–消",CONFIRM:"确认"},zh_TW:{OK:"OK",CANCEL:"å–消",CONFIRM:"確èª"}};return p.init=function(c){return a(c||b)},p}); \ No newline at end of file diff --git a/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/daterangepicker-bs3.css b/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/daterangepicker-bs3.css deleted file mode 100755 index 71111cf7..00000000 --- a/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/daterangepicker-bs3.css +++ /dev/null @@ -1,319 +0,0 @@ -/*! - * 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 deleted file mode 100755 index c24c0ad6..00000000 --- a/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/daterangepicker.js +++ /dev/null @@ -1,1257 +0,0 @@ -/** -* @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 = ''; - - //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 = '
    '; - for (range in this.ranges) { - list += '
  • ' + range + '
  • '; - } - list += '
  • ' + this.locale.customRangeLabel + '
  • '; - list += '
'; - 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 = '"; - - var yearHtml = ''; - - return monthHtml + yearHtml; - }, - - renderCalendar: function (calendar, selected, minDate, maxDate, side) { - - var html = '
'; - html += ''; - html += ''; - html += ''; - - // add empty cell for week number - if (this.showWeekNumbers) - html += ''; - - if (!minDate || minDate.isBefore(calendar.firstDay)) { - html += ''; - } else { - html += ''; - } - - 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 += ''; - if (!maxDate || maxDate.isAfter(calendar.lastDay)) { - html += ''; - } else { - html += ''; - } - - html += ''; - html += ''; - - // add week number label - if (this.showWeekNumbers) - html += ''; - - $.each(this.locale.daysOfWeek, function (index, dayOfWeek) { - html += ''; - }); - - html += ''; - html += ''; - html += ''; - - for (var row = 0; row < 6; row++) { - html += ''; - - // add week number - if (this.showWeekNumbers) - html += ''; - - 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 += ''; - } - html += ''; - } - - html += ''; - html += '
' + dateHtml + '
' + this.locale.weekLabel + '' + dayOfWeek + '
' + calendar[row][0].week() + '' + calendar[row][col].date() + '
'; - html += '
'; - - var i; - if (this.timePicker) { - - html += '
'; - html += ' : '; - - html += ' '; - - if (this.timePickerSeconds) { - html += ': '; - } - - if (this.timePicker12Hour) { - html += ''; - } - - html += '
'; - - } - - 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 deleted file mode 100755 index 1800b5de..00000000 --- a/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/moment.js +++ /dev/null @@ -1,2808 +0,0 @@ -//! 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 deleted file mode 100755 index c30bbff2..00000000 --- a/common/src/main/webapp/thirdparty/bootstrap-daterangepicker/moment.min.js +++ /dev/null @@ -1,6 +0,0 @@ -//! 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.lengthd;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;f0;){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;b0&&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;fg)&&(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=e0,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=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 00:!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()+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 deleted file mode 100755 index ce6deb10..00000000 --- a/common/src/main/webapp/thirdparty/bootstrap-growl/bootstrap-growl.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/* Project: Bootstrap Growl - v2.0.0 | Author: Mouse0270 aka Robert McIntosh | License: MIT License | Website: https://github.com/mouse0270/bootstrap-growl */ -(function(e,t,n,r){var i="growl",s="plugin_"+i,o={element:"body",type:"info",allow_dismiss:true,placement:{from:"top",align:"right"},offset:20,spacing:10,z_index:1031,delay:5e3,timer:1e3,url_target:"_blank",mouse_over:false,animate:{enter:"animated fadeInDown",exit:"animated fadeOutUp"},icon_type:"class",template:''};var u=function(t,n){o=e.extend(true,{},o,n)},a=function(t,n,r){var n={content:{message:typeof n=="object"?n.message:n,title:n.title?n.title:null,icon:n.icon?n.icon:null,url:n.url?n.url:null}};r=e.extend(true,{},n,r);this.settings=e.extend(true,{},o,r);plugin=this;f(r,this.settings,plugin);this.$template=$template},f=function(t,n,r){var i={settings:n,$element:e(n.element),template:n.template};$template=l(i);c($template,i.settings);h($template,i.settings);p($template,i.settings,r)},l=function(t){var n=e(t.settings.template);n.addClass("alert-"+t.settings.type);n.attr("data-growl-position",t.settings.placement.from+"-"+t.settings.placement.align);n.find('[data-growl="dismiss"]').css("display","none");if(t.settings.allow_dismiss){n.find('[data-growl="dismiss"]').css("display","inline-block")}return n},c=function(e,t){e.find('[data-growl="dismiss"]').css({position:"absolute",top:"5px",right:"10px","z-index":t.z_index-1>=1?t.z_index-1:1});if(t.content.icon){if(t.icon_type.toLowerCase()=="class"){e.find('[data-growl="icon"]').addClass(t.content.icon)}else{if(e.find('[data-growl="icon"]').is("img")){e.find('[data-growl="icon"]').attr("src",t.content.icon)}else{e.find('[data-growl="icon"]').append('')}}}if(t.content.title){e.find('[data-growl="title"]').html(t.content.title)}if(t.content.message){e.find('[data-growl="message"]').html(t.content.message)}if(t.content.url){e.find('[data-growl="url"]').attr("href",t.content.url).attr("target",t.url_target);e.find('[data-growl="url"]').css({position:"absolute",top:"0px",left:"0px",width:"100%",height:"100%","z-index":t.z_index-2>=1?t.z_index-2:1})}},h=function(t,n){var r=n.offset,i={position:n.element==="body"?"fixed":"absolute",margin:0,"z-index":n.z_index,display:"inline-block"};e('[data-growl-position="'+n.placement.from+"-"+n.placement.align+'"]').each(function(){return r=Math.max(r,parseInt(e(this).css(n.placement.from))+e(this).outerHeight()+n.spacing)});i[n.placement.from]=r+"px";t.css(i);e(n.element).append(t);switch(n.placement.align){case"center":t.css({left:"50%",marginLeft:-(t.outerWidth()/2)+"px"});break;case"left":t.css("left",n.offset+"px");break;case"right":t.css("right",n.offset+"px");break}t.addClass("growl-animated")},p=function(e,t,n){e.addClass(t.animate.enter);e.find('[data-growl="dismiss"]').on("click",function(){n.close()});e.on("mouseover",function(t){e.addClass("hovering")}).on("mouseout",function(){e.removeClass("hovering")});if(t.delay>=1){e.data("growl-delay",t.delay);var r=setInterval(function(){var i=parseInt(e.data("growl-delay"))-t.timer;console.log();if(!e.hasClass("hovering")&&t.mouse_over=="pause"||t.mouse_over!="pause"){e.data("growl-delay",i)}if(i<=0){clearInterval(r);n.close()}},t.timer)}};a.prototype={update:function(e,t){switch(e){case"icon":if(this.settings.icon_type.toLowerCase()=="class"){this.$template.find('[data-growl="icon"]').removeClass(this.settings.content.icon);this.$template.find('[data-growl="icon"]').addClass(t)}else{if(this.$template.find('[data-growl="icon"]').is("img")){this.$template.find('[data-growl="icon"]')}else{this.$template.find('[data-growl="icon"]').find("img").attr().attr("src",t)}}break;case"url":this.$template.find('[data-growl="url"]').attr("href",t);break;case"type":this.$template.removeClass("alert-"+this.settings.type);this.$template.addClass("alert-"+t);break;default:this.$template.find('[data-growl="'+e+'"]').html(t)}return this},close:function(){var t=this.$template,n=this.settings,r=t.css(n.placement.from),i=false;t.addClass(this.settings.animate.exit);t.nextAll('[data-growl-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]').each(function(){e(this).css(n.placement.from,r);r=parseInt(r)+n.spacing+e(this).outerHeight()});t.one("webkitAnimationStart oanimationstart MSAnimationStart animationstart",function(e){i=true});t.one("webkitAnimationEnd oanimationend MSAnimationEnd animationend",function(t){e(this).remove()});setTimeout(function(){console.log(i);if(!i){t.remove()}},100);return this}};e.growl=function(e,t){if(e==false){u(this,t);return false}var n=new a(this,e,t);return n}})(jQuery,window,document) \ No newline at end of file diff --git a/common/src/main/webapp/thirdparty/bootstrap/css/bootstrap-dt.css b/common/src/main/webapp/thirdparty/bootstrap/css/bootstrap-dt.css deleted file mode 100755 index 2828337d..00000000 --- a/common/src/main/webapp/thirdparty/bootstrap/css/bootstrap-dt.css +++ /dev/null @@ -1,5804 +0,0 @@ -/*! - * Bootstrap v3.1.1 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -/*! normalize.css v3.0.0 | MIT License | git.io/normalize */ -html { - font-family: sans-serif; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - margin: .67em 0; - font-size: 2em; -} -mark { - color: #000; - background: #ff0; -} -small { - font-size: 80%; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sup { - top: -.5em; -} -sub { - bottom: -.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - height: 0; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - margin: 0; - font: inherit; - color: inherit; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - padding: 0; - border: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - -webkit-appearance: textfield; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - padding: .35em .625em .75em; - margin: 0 2px; - border: 1px solid #c0c0c0; -} -legend { - padding: 0; - border: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-spacing: 0; - border-collapse: collapse; -} -td, -th { -} -@media print { - * { - color: #000 !important; - text-shadow: none !important; - background: transparent !important; - box-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - a[href^="javascript:"]:after, - a[href^="#"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - select { - background: #fff !important; - } - .navbar { - display: none; - } - .table td, - .table th { - background-color: #fff !important; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -.dataTableWrapperDiv div { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 62.5%; - - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #428bca; - text-decoration: none; -} -a:hover, -a:focus { - color: #2a6496; - text-decoration: underline; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - display: inline-block; - max-width: 100%; - height: auto; - padding: 4px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 20px; - margin-bottom: 20px; - border: 0; - border-top: 1px solid #eee; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: inherit; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #999; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 20px; - margin-bottom: 10px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10px; - margin-bottom: 10px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 36px; -} -h2, -.h2 { - font-size: 30px; -} -h3, -.h3 { - font-size: 24px; -} -h4, -.h4 { - font-size: 18px; -} -h5, -.h5 { - font-size: 14px; -} -h6, -.h6 { - font-size: 12px; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 200; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 21px; - } -} -small, -.small { - font-size: 85%; -} -cite { - font-style: normal; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.text-justify { - text-align: justify; -} -.text-muted { - color: #999; -} -.text-primary { - color: #428bca; -} -a.text-primary:hover { - color: #3071a9; -} -.text-success { - color: #3c763d; -} -a.text-success:hover { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #428bca; -} -a.bg-primary:hover { - background-color: #3071a9; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - margin-left: -5px; - list-style: none; -} -.list-inline > li { - display: inline-block; - padding-right: 5px; - padding-left: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - overflow: hidden; - clear: left; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #999; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10px 20px; - margin: 0 0 20px; - font-size: 17.5px; - border-left: 5px solid #eee; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #999; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - text-align: right; - border-right: 5px solid #eee; - border-left: 0; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -blockquote:before, -blockquote:after { - content: ""; -} -address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - white-space: nowrap; - background-color: #f9f2f4; - border-radius: 4px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #fff; - background-color: #333; - border-radius: 3px; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); -} -pre { - display: block; - padding: 9.5px; - margin: 0 0 10px; - font-size: 13px; - line-height: 1.42857143; - color: #333; - word-break: break-all; - word-wrap: break-word; - background-color: #f5f5f5; - border: 1px solid #ccc; - border-radius: 4px; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -@media (min-width: 768px) { - .container { - width: 750px; - } -} -@media (min-width: 992px) { - .container { - width: 970px; - } -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} -.container-fluid { - padding-right: 15px; - padding-left: 15px; - margin-right: auto; - margin-left: auto; -} -.row { - margin-right: -15px; - margin-left: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: 0; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: 0; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0; -} -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - right: 100%; - } - .col-sm-pull-11 { - right: 91.66666667%; - } - .col-sm-pull-10 { - right: 83.33333333%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-8 { - right: 66.66666667%; - } - .col-sm-pull-7 { - right: 58.33333333%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-5 { - right: 41.66666667%; - } - .col-sm-pull-4 { - right: 33.33333333%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-2 { - right: 16.66666667%; - } - .col-sm-pull-1 { - right: 8.33333333%; - } - .col-sm-pull-0 { - right: 0; - } - .col-sm-push-12 { - left: 100%; - } - .col-sm-push-11 { - left: 91.66666667%; - } - .col-sm-push-10 { - left: 83.33333333%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-8 { - left: 66.66666667%; - } - .col-sm-push-7 { - left: 58.33333333%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-5 { - left: 41.66666667%; - } - .col-sm-push-4 { - left: 33.33333333%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-2 { - left: 16.66666667%; - } - .col-sm-push-1 { - left: 8.33333333%; - } - .col-sm-push-0 { - left: 0; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0; - } -} -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - right: 100%; - } - .col-md-pull-11 { - right: 91.66666667%; - } - .col-md-pull-10 { - right: 83.33333333%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-8 { - right: 66.66666667%; - } - .col-md-pull-7 { - right: 58.33333333%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-5 { - right: 41.66666667%; - } - .col-md-pull-4 { - right: 33.33333333%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-2 { - right: 16.66666667%; - } - .col-md-pull-1 { - right: 8.33333333%; - } - .col-md-pull-0 { - right: 0; - } - .col-md-push-12 { - left: 100%; - } - .col-md-push-11 { - left: 91.66666667%; - } - .col-md-push-10 { - left: 83.33333333%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-8 { - left: 66.66666667%; - } - .col-md-push-7 { - left: 58.33333333%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-5 { - left: 41.66666667%; - } - .col-md-push-4 { - left: 33.33333333%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-2 { - left: 16.66666667%; - } - .col-md-push-1 { - left: 8.33333333%; - } - .col-md-push-0 { - left: 0; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0; - } -} -@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: 0; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: 0; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0; - } -} -table { - max-width: 100%; - background-color: transparent; -} -th { - text-align: left; -} -.table { - width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #ddd; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ddd; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #fff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-child(odd) > td, -.table-striped > tbody > tr:nth-child(odd) > th { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover > td, -.table-hover > tbody > tr:hover > th { - /*background-color: #f5f5f5;*/ - background-color:#dbedff; -} -.dataTableTdSelected{ - background-color:#dbedff !important; -} -table col[class*="col-"] { - position: static; - display: table-column; - float: none; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - display: table-cell; - float: none; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -@media (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 15px; - overflow-x: scroll; - overflow-y: hidden; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ddd; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} -label { - display: inline-block; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - /* IE8-9 */ - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857143; - color: #555; -} -.form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.form-control:focus { - border-color: #66afe9; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); -} -.form-control::-moz-placeholder { - color: #999; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #999; -} -.form-control::-webkit-input-placeholder { - color: #999; -} -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - cursor: not-allowed; - background-color: #eee; - opacity: 1; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -input[type="date"] { - line-height: 34px; -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - display: block; - min-height: 20px; - padding-left: 20px; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - display: inline; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - float: left; - margin-left: -20px; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -.radio[disabled], -.radio-inline[disabled], -.checkbox[disabled], -.checkbox-inline[disabled], -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"], -fieldset[disabled] .radio, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.input-lg { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -select.input-lg { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 42.5px; -} -.has-feedback .form-control-feedback { - position: absolute; - top: 25px; - right: 0; - display: block; - width: 34px; - height: 34px; - line-height: 34px; - text-align: center; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-success .form-control:focus { - border-color: #2b542c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; -} -.has-success .input-group-addon { - color: #3c763d; - background-color: #dff0d8; - border-color: #3c763d; -} -.has-success .form-control-feedback { - color: #3c763d; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-warning .form-control:focus { - border-color: #66512c; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; -} -.has-warning .input-group-addon { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #8a6d3b; -} -.has-warning .form-control-feedback { - color: #8a6d3b; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); -} -.has-error .form-control:focus { - border-color: #843534; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; -} -.has-error .input-group-addon { - color: #a94442; - background-color: #f2dede; - border-color: #a94442; -} -.has-error .form-control-feedback { - color: #a94442; -} -.form-control-static { - margin-bottom: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #737373; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - padding-left: 0; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - float: none; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .control-label, -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; -} -.form-horizontal .form-group { - margin-right: -15px; - margin-left: -15px; -} -.form-horizontal .form-control-static { - padding-top: 7px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - text-align: right; - } -} -.form-horizontal .has-feedback .form-control-feedback { - top: 0; - right: 15px; -} -.btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: normal; - line-height: 1.42857143; - text-align: center; - white-space: nowrap; - vertical-align: middle; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus { - color: #333; - text-decoration: none; -} -.btn:active, -.btn.active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - pointer-events: none; - cursor: not-allowed; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - opacity: .65; -} -.btn.default { - color: #333333; - text-shadow: none; - background-color: #e5e5e5; - height:12px; -} -.btn.default:hover, -.btn.default:focus, -.btn.default:active, -.btn.default.active, -.btn.default[disabled], -.btn.default.disabled { - color: #333333; - background-color: #d8d8d8 !important; - outline: none !important; -} - -.btn-default:hover, -.btn-default:focus, -.btn-default:active, -.btn-default.active, -.open .dropdown-toggle.btn-default { - color: #333; - background-color: #ebebeb; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - background-color: #fff; - border-color: #ccc; -} -.btn-default .badge { - color: #fff; - background-color: #333; -} -.btn-primary { - color: #fff; - background-color: #428bca; - border-color: #357ebd; -} -.btn-primary:hover, -.btn-primary:focus, -.btn-primary:active, -.btn-primary.active, -.open .dropdown-toggle.btn-primary { - color: #fff; - background-color: #3276b1; - border-color: #285e8e; -} -.btn-primary:active, -.btn-primary.active, -.open .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - background-color: #428bca; - border-color: #357ebd; -} -.btn-primary .badge { - color: #428bca; - background-color: #fff; -} -.btn-success { - color: #fff; - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success:hover, -.btn-success:focus, -.btn-success:active, -.btn-success.active, -.open .dropdown-toggle.btn-success { - color: #fff; - background-color: #47a447; - border-color: #398439; -} -.btn-success:active, -.btn-success.active, -.open .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success .badge { - color: #5cb85c; - background-color: #fff; -} -.btn-info { - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info:hover, -.btn-info:focus, -.btn-info:active, -.btn-info.active, -.open .dropdown-toggle.btn-info { - color: #fff; - background-color: #39b3d7; - border-color: #269abc; -} -.btn-info:active, -.btn-info.active, -.open .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info .badge { - color: #5bc0de; - background-color: #fff; -} -.btn-warning { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:hover, -.btn-warning:focus, -.btn-warning:active, -.btn-warning.active, -.open .dropdown-toggle.btn-warning { - color: #fff; - background-color: #ed9c28; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #fff; -} -.btn-danger { - color: #fff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:hover, -.btn-danger:focus, -.btn-danger:active, -.btn-danger.active, -.open .dropdown-toggle.btn-danger { - color: #fff; - background-color: #d2322d; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - font-weight: normal; - color: #428bca; - cursor: pointer; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #2a6496; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #999; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-sm { - padding: 2px 10px 8px 10px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; - padding-right: 0; - padding-left: 0; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity .15s linear; - transition: opacity .15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition: height .35s ease; - transition: height .35s ease; -} -@font-face { - font-family: 'Glyphicons Halflings'; - - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\2a"; -} -.glyphicon-plus:before { - content: "\2b"; -} -.glyphicon-euro:before { - content: "\20ac"; -} -.glyphicon-minus:before { - content: "\2212"; -} -.glyphicon-cloud:before { - content: "\2601"; -} -.glyphicon-envelope:before { - content: "\2709"; -} -.glyphicon-pencil:before { - content: "\270f"; -} -.glyphicon-glass:before { - content: "\e001"; -} -.glyphicon-music:before { - content: "\e002"; -} -.glyphicon-search:before { - content: "\e003"; -} -.glyphicon-heart:before { - content: "\e005"; -} -.glyphicon-star:before { - content: "\e006"; -} -.glyphicon-star-empty:before { - content: "\e007"; -} -.glyphicon-user:before { - content: "\e008"; -} -.glyphicon-film:before { - content: "\e009"; -} -.glyphicon-th-large:before { - content: "\e010"; -} -.glyphicon-th:before { - content: "\e011"; -} -.glyphicon-th-list:before { - content: "\e012"; -} -.glyphicon-ok:before { - content: "\e013"; -} -.glyphicon-remove:before { - content: "\e014"; -} -.glyphicon-zoom-in:before { - content: "\e015"; -} -.glyphicon-zoom-out:before { - content: "\e016"; -} -.glyphicon-off:before { - content: "\e017"; -} -.glyphicon-signal:before { - content: "\e018"; -} -.glyphicon-cog:before { - content: "\e019"; -} -.glyphicon-trash:before { - content: "\e020"; -} -.glyphicon-home:before { - content: "\e021"; -} -.glyphicon-file:before { - content: "\e022"; -} -.glyphicon-time:before { - content: "\e023"; -} -.glyphicon-road:before { - content: "\e024"; -} -.glyphicon-download-alt:before { - content: "\e025"; -} -.glyphicon-download:before { - content: "\e026"; -} -.glyphicon-upload:before { - content: "\e027"; -} -.glyphicon-inbox:before { - content: "\e028"; -} -.glyphicon-play-circle:before { - content: "\e029"; -} -.glyphicon-repeat:before { - content: "\e030"; -} -.glyphicon-refresh:before { - content: "\e031"; -} -.glyphicon-list-alt:before { - content: "\e032"; -} -.glyphicon-lock:before { - content: "\e033"; -} -.glyphicon-flag:before { - content: "\e034"; -} -.glyphicon-headphones:before { - content: "\e035"; -} -.glyphicon-volume-off:before { - content: "\e036"; -} -.glyphicon-volume-down:before { - content: "\e037"; -} -.glyphicon-volume-up:before { - content: "\e038"; -} -.glyphicon-qrcode:before { - content: "\e039"; -} -.glyphicon-barcode:before { - content: "\e040"; -} -.glyphicon-tag:before { - content: "\e041"; -} -.glyphicon-tags:before { - content: "\e042"; -} -.glyphicon-book:before { - content: "\e043"; -} -.glyphicon-bookmark:before { - content: "\e044"; -} -.glyphicon-print:before { - content: "\e045"; -} -.glyphicon-camera:before { - content: "\e046"; -} -.glyphicon-font:before { - content: "\e047"; -} -.glyphicon-bold:before { - content: "\e048"; -} -.glyphicon-italic:before { - content: "\e049"; -} -.glyphicon-text-height:before { - content: "\e050"; -} -.glyphicon-text-width:before { - content: "\e051"; -} -.glyphicon-align-left:before { - content: "\e052"; -} -.glyphicon-align-center:before { - content: "\e053"; -} -.glyphicon-align-right:before { - content: "\e054"; -} -.glyphicon-align-justify:before { - content: "\e055"; -} -.glyphicon-list:before { - content: "\e056"; -} -.glyphicon-indent-left:before { - content: "\e057"; -} -.glyphicon-indent-right:before { - content: "\e058"; -} -.glyphicon-facetime-video:before { - content: "\e059"; -} -.glyphicon-picture:before { - content: "\e060"; -} -.glyphicon-map-marker:before { - content: "\e062"; -} -.glyphicon-adjust:before { - content: "\e063"; -} -.glyphicon-tint:before { - content: "\e064"; -} -.glyphicon-edit:before { - content: "\e065"; -} -.glyphicon-share:before { - content: "\e066"; -} -.glyphicon-check:before { - content: "\e067"; -} -.glyphicon-move:before { - content: "\e068"; -} -.glyphicon-step-backward:before { - content: "\e069"; -} -.glyphicon-fast-backward:before { - content: "\e070"; -} -.glyphicon-backward:before { - content: "\e071"; -} -.glyphicon-play:before { - content: "\e072"; -} -.glyphicon-pause:before { - content: "\e073"; -} -.glyphicon-stop:before { - content: "\e074"; -} -.glyphicon-forward:before { - content: "\e075"; -} -.glyphicon-fast-forward:before { - content: "\e076"; -} -.glyphicon-step-forward:before { - content: "\e077"; -} -.glyphicon-eject:before { - content: "\e078"; -} -.glyphicon-chevron-left:before { - content: "\e079"; -} -.glyphicon-chevron-right:before { - content: "\e080"; -} -.glyphicon-plus-sign:before { - content: "\e081"; -} -.glyphicon-minus-sign:before { - content: "\e082"; -} -.glyphicon-remove-sign:before { - content: "\e083"; -} -.glyphicon-ok-sign:before { - content: "\e084"; -} -.glyphicon-question-sign:before { - content: "\e085"; -} -.glyphicon-info-sign:before { - content: "\e086"; -} -.glyphicon-screenshot:before { - content: "\e087"; -} -.glyphicon-remove-circle:before { - content: "\e088"; -} -.glyphicon-ok-circle:before { - content: "\e089"; -} -.glyphicon-ban-circle:before { - content: "\e090"; -} -.glyphicon-arrow-left:before { - content: "\e091"; -} -.glyphicon-arrow-right:before { - content: "\e092"; -} -.glyphicon-arrow-up:before { - content: "\e093"; -} -.glyphicon-arrow-down:before { - content: "\e094"; -} -.glyphicon-share-alt:before { - content: "\e095"; -} -.glyphicon-resize-full:before { - content: "\e096"; -} -.glyphicon-resize-small:before { - content: "\e097"; -} -.glyphicon-exclamation-sign:before { - content: "\e101"; -} -.glyphicon-gift:before { - content: "\e102"; -} -.glyphicon-leaf:before { - content: "\e103"; -} -.glyphicon-fire:before { - content: "\e104"; -} -.glyphicon-eye-open:before { - content: "\e105"; -} -.glyphicon-eye-close:before { - content: "\e106"; -} -.glyphicon-warning-sign:before { - content: "\e107"; -} -.glyphicon-plane:before { - content: "\e108"; -} -.glyphicon-calendar:before { - content: "\e109"; -} -.glyphicon-random:before { - content: "\e110"; -} -.glyphicon-comment:before { - content: "\e111"; -} -.glyphicon-magnet:before { - content: "\e112"; -} -.glyphicon-chevron-up:before { - content: "\e113"; -} -.glyphicon-chevron-down:before { - content: "\e114"; -} -.glyphicon-retweet:before { - content: "\e115"; -} -.glyphicon-shopping-cart:before { - content: "\e116"; -} -.glyphicon-folder-close:before { - content: "\e117"; -} -.glyphicon-folder-open:before { - content: "\e118"; -} -.glyphicon-resize-vertical:before { - content: "\e119"; -} -.glyphicon-resize-horizontal:before { - content: "\e120"; -} -.glyphicon-hdd:before { - content: "\e121"; -} -.glyphicon-bullhorn:before { - content: "\e122"; -} -.glyphicon-bell:before { - content: "\e123"; -} -.glyphicon-certificate:before { - content: "\e124"; -} -.glyphicon-thumbs-up:before { - content: "\e125"; -} -.glyphicon-thumbs-down:before { - content: "\e126"; -} -.glyphicon-hand-right:before { - content: "\e127"; -} -.glyphicon-hand-left:before { - content: "\e128"; -} -.glyphicon-hand-up:before { - content: "\e129"; -} -.glyphicon-hand-down:before { - content: "\e130"; -} -.glyphicon-circle-arrow-right:before { - content: "\e131"; -} -.glyphicon-circle-arrow-left:before { - content: "\e132"; -} -.glyphicon-circle-arrow-up:before { - content: "\e133"; -} -.glyphicon-circle-arrow-down:before { - content: "\e134"; -} -.glyphicon-globe:before { - content: "\e135"; -} -.glyphicon-wrench:before { - content: "\e136"; -} -.glyphicon-tasks:before { - content: "\e137"; -} -.glyphicon-filter:before { - content: "\e138"; -} -.glyphicon-briefcase:before { - content: "\e139"; -} -.glyphicon-fullscreen:before { - content: "\e140"; -} -.glyphicon-dashboard:before { - content: "\e141"; -} -.glyphicon-paperclip:before { - content: "\e142"; -} -.glyphicon-heart-empty:before { - content: "\e143"; -} -.glyphicon-link:before { - content: "\e144"; -} -.glyphicon-phone:before { - content: "\e145"; -} -.glyphicon-pushpin:before { - content: "\e146"; -} -.glyphicon-usd:before { - content: "\e148"; -} -.glyphicon-gbp:before { - content: "\e149"; -} -.glyphicon-sort:before { - content: "\e150"; -} -.glyphicon-sort-by-alphabet:before { - content: "\e151"; -} -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} -.glyphicon-sort-by-order:before { - content: "\e153"; -} -.glyphicon-sort-by-order-alt:before { - content: "\e154"; -} -.glyphicon-sort-by-attributes:before { - content: "\e155"; -} -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} -.glyphicon-unchecked:before { - content: "\e157"; -} -.glyphicon-expand:before { - content: "\e158"; -} -.glyphicon-collapse-down:before { - content: "\e159"; -} -.glyphicon-collapse-up:before { - content: "\e160"; -} -.glyphicon-log-in:before { - content: "\e161"; -} -.glyphicon-flash:before { - content: "\e162"; -} -.glyphicon-log-out:before { - content: "\e163"; -} -.glyphicon-new-window:before { - content: "\e164"; -} -.glyphicon-record:before { - content: "\e165"; -} -.glyphicon-save:before { - content: "\e166"; -} -.glyphicon-open:before { - content: "\e167"; -} -.glyphicon-saved:before { - content: "\e168"; -} -.glyphicon-import:before { - content: "\e169"; -} -.glyphicon-export:before { - content: "\e170"; -} -.glyphicon-send:before { - content: "\e171"; -} -.glyphicon-floppy-disk:before { - content: "\e172"; -} -.glyphicon-floppy-saved:before { - content: "\e173"; -} -.glyphicon-floppy-remove:before { - content: "\e174"; -} -.glyphicon-floppy-save:before { - content: "\e175"; -} -.glyphicon-floppy-open:before { - content: "\e176"; -} -.glyphicon-credit-card:before { - content: "\e177"; -} -.glyphicon-transfer:before { - content: "\e178"; -} -.glyphicon-cutlery:before { - content: "\e179"; -} -.glyphicon-header:before { - content: "\e180"; -} -.glyphicon-compressed:before { - content: "\e181"; -} -.glyphicon-earphone:before { - content: "\e182"; -} -.glyphicon-phone-alt:before { - content: "\e183"; -} -.glyphicon-tower:before { - content: "\e184"; -} -.glyphicon-stats:before { - content: "\e185"; -} -.glyphicon-sd-video:before { - content: "\e186"; -} -.glyphicon-hd-video:before { - content: "\e187"; -} -.glyphicon-subtitles:before { - content: "\e188"; -} -.glyphicon-sound-stereo:before { - content: "\e189"; -} -.glyphicon-sound-dolby:before { - content: "\e190"; -} -.glyphicon-sound-5-1:before { - content: "\e191"; -} -.glyphicon-sound-6-1:before { - content: "\e192"; -} -.glyphicon-sound-7-1:before { - content: "\e193"; -} -.glyphicon-copyright-mark:before { - content: "\e194"; -} -.glyphicon-registration-mark:before { - content: "\e195"; -} -.glyphicon-cloud-download:before { - content: "\e197"; -} -.glyphicon-cloud-upload:before { - content: "\e198"; -} -.glyphicon-tree-conifer:before { - content: "\e199"; -} -.glyphicon-tree-deciduous:before { - content: "\e200"; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px solid; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - font-size: 14px; - list-style: none; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); - box-shadow: 0 6px 12px rgba(0, 0, 0, .175); -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - background-color: #428bca; - outline: 0; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #999; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - cursor: not-allowed; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - right: 0; - left: auto; -} -.dropdown-menu-left { - right: auto; - left: 0; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #999; -} -.dropdown-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - content: ""; - border-top: 0; - border-bottom: 4px solid; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - right: 0; - left: auto; - } - .navbar-right .dropdown-menu-left { - right: auto; - left: 0; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus { - outline: none; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child > .btn:last-child, -.btn-group > .btn-group:first-child > .dropdown-toggle { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn-group:last-child > .btn:first-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-right: 8px; - padding-left: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-right: 12px; - padding-left: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-left-radius: 0; - border-top-right-radius: 0; - border-bottom-left-radius: 4px; -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - display: table-cell; - float: none; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -[data-toggle="buttons"] > .btn > input[type="radio"], -[data-toggle="buttons"] > .btn > input[type="checkbox"] { - display: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*="col-"] { - float: none; - padding-right: 0; - padding-left: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 46px; - line-height: 46px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 30px; - line-height: 30px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 6px 12px; - font-size: 14px; - font-weight: normal; - line-height: 1; - color: #555; - text-align: center; - background-color: #eee; - border: 1px solid #ccc; - border-radius: 4px; -} -.input-group-addon.input-sm { - padding: 5px 10px; - font-size: 12px; - border-radius: 3px; -} -.input-group-addon.input-lg { - padding: 10px 16px; - font-size: 18px; - border-radius: 6px; -} -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; -} -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group-addon:first-child { - border-right: 0; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - margin-left: -1px; -} -.nav { - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li.disabled > a { - color: #999; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #999; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #eee; - border-color: #428bca; -} -.nav .nav-divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #ddd; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #eee #eee #ddd; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #555; - cursor: default; - background-color: #fff; - border: 1px solid #ddd; - border-bottom-color: transparent; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 4px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #fff; - background-color: #428bca; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - margin-bottom: 5px; - text-align: center; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 4px 4px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar { - position: relative; - min-height: 50px; - margin-bottom: 20px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 4px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - max-height: 340px; - padding-right: 15px; - padding-left: 15px; - overflow-x: visible; - -webkit-overflow-scrolling: touch; - border-top: 1px solid transparent; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-right: 0; - padding-left: 0; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - height: 50px; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; - } -} -.navbar-toggle { - position: relative; - float: right; - padding: 9px 10px; - margin-top: 8px; - margin-right: 15px; - margin-bottom: 8px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.navbar-toggle:focus { - outline: none; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 7.5px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } - .navbar-nav.navbar-right:last-child { - margin-right: -15px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - } -} -.navbar-form { - padding: 10px 15px; - margin-top: 8px; - margin-right: -15px; - margin-bottom: 8px; - margin-left: -15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - padding-left: 0; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - float: none; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - padding-top: 0; - padding-bottom: 0; - margin-right: 0; - margin-left: 0; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-form.navbar-right:last-child { - margin-right: -15px; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; -} -.navbar-btn.btn-sm { - margin-top: 10px; - margin-bottom: 10px; -} -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; -} -.navbar-text { - margin-top: 15px; - margin-bottom: 15px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-right: 15px; - margin-left: 15px; - } - .navbar-text.navbar-right:last-child { - margin-right: 0; - } -} -.navbar-default { - background-color: #f8f8f8; - border-color: #e7e7e7; -} -.navbar-default .navbar-brand { - color: #777; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #5e5e5e; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #777; -} -.navbar-default .navbar-nav > li > a { - color: #777; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #ddd; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #888; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #e7e7e7; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - color: #555; - background-color: #e7e7e7; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #777; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #ccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #777; -} -.navbar-default .navbar-link:hover { - color: #333; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #999; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #999; -} -.navbar-inverse .navbar-nav > li > a { - color: #999; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #333; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #fff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #101010; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - color: #fff; - background-color: #080808; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #999; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #999; -} -.navbar-inverse .navbar-link:hover { - color: #fff; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #f5f5f5; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - padding: 0 5px; - color: #ccc; - content: "/\00a0"; -} -.breadcrumb > .active { - color: #999; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 4px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - margin-left: -1px; - line-height: 1.42857143; - color: #428bca; - text-decoration: none; - background-color: #fff; - border: 1px solid #ddd; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - color: #2a6496; - background-color: #eee; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 2; - color: #fff; - cursor: default; - background-color: #428bca; - border-color: #428bca; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #999; - cursor: not-allowed; - background-color: #fff; - border-color: #ddd; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 10px 16px; - font-size: 18px; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-top-left-radius: 6px; - border-bottom-left-radius: 6px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-top-right-radius: 6px; - border-bottom-right-radius: 6px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 5px 10px; - font-size: 12px; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 20px 0; - text-align: center; - list-style: none; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #eee; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #999; - cursor: not-allowed; - background-color: #fff; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -.label[href]:hover, -.label[href]:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #999; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #808080; -} -.label-primary { - background-color: #428bca; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #3071a9; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - background-color: #999; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -a.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #428bca; - background-color: #fff; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding: 30px; - margin-bottom: 30px; - color: inherit; - background-color: #eee; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; -} -.container .jumbotron { - border-radius: 6px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding-top: 48px; - padding-bottom: 48px; - } - .container .jumbotron { - padding-right: 60px; - padding-left: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 63px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: all .2s ease-in-out; - transition: all .2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-right: auto; - margin-left: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #428bca; -} -.thumbnail .caption { - padding: 9px; - color: #333; -} -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable { - padding-right: 35px; -} -.alert-dismissable .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.alert-success hr { - border-top-color: #c9e2b3; -} -.alert-success .alert-link { - color: #2b542c; -} -.alert-info { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.alert-info hr { - border-top-color: #a6e1ec; -} -.alert-info .alert-link { - color: #245269; -} -.alert-warning { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.alert-warning hr { - border-top-color: #f7e1b5; -} -.alert-warning .alert-link { - color: #66512c; -} -.alert-danger { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.alert-danger hr { - border-top-color: #e4b9c0; -} -.alert-danger .alert-link { - color: #843534; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - height: 20px; - margin-bottom: 20px; - overflow: hidden; - background-color: #f5f5f5; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); -} -.progress-bar { - float: left; - width: 0; - height: 100%; - font-size: 12px; - line-height: 20px; - color: #fff; - text-align: center; - background-color: #428bca; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); - -webkit-transition: width .6s ease; - transition: width .6s ease; -} -.progress-striped .progress-bar { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-size: 40px 40px; -} -.progress.active .progress-bar { - -webkit-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #5cb85c; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-info { - background-color: #5bc0de; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #f0ad4e; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #d9534f; -} -.progress-striped .progress-bar-danger { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); -} -.media, -.media-body { - overflow: hidden; - zoom: 1; -} -.media, -.media .media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media-object { - display: block; -} -.media-heading { - margin: 0 0 5px; -} -.media > .pull-left { - margin-right: 10px; -} -.media > .pull-right { - margin-left: 10px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - padding-left: 0; - margin-bottom: 20px; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #fff; - border: 1px solid #ddd; -} -.list-group-item:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -a.list-group-item { - color: #555; -} -a.list-group-item .list-group-item-heading { - color: #333; -} -a.list-group-item:hover, -a.list-group-item:focus { - text-decoration: none; - background-color: #f5f5f5; -} -a.list-group-item.active, -a.list-group-item.active:hover, -a.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #428bca; - border-color: #428bca; -} -a.list-group-item.active .list-group-item-heading, -a.list-group-item.active:hover .list-group-item-heading, -a.list-group-item.active:focus .list-group-item-heading { - color: inherit; -} -a.list-group-item.active .list-group-item-text, -a.list-group-item.active:hover .list-group-item-text, -a.list-group-item.active:focus .list-group-item-text { - color: #e1edf7; -} -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; -} -a.list-group-item-success { - color: #3c763d; -} -a.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -a.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -a.list-group-item-success.active:hover, -a.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; -} -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; -} -a.list-group-item-info { - color: #31708f; -} -a.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -a.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -a.list-group-item-info.active:hover, -a.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; -} -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; -} -a.list-group-item-warning { - color: #8a6d3b; -} -a.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -a.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; -} -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; -} -a.list-group-item-danger { - color: #a94442; -} -a.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -a.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus { - color: #fff; - background-color: #a94442; - border-color: #a94442; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 20px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: 0 1px 1px rgba(0, 0, 0, .05); -} -.panel-body { - padding: 15px; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; -} -.panel-title > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #f5f5f5; - border-top: 1px solid #ddd; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table { - margin-bottom: 0; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive { - border-top: 1px solid #ddd; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - margin-bottom: 0; - border: 0; -} -.panel-group { - margin-bottom: 20px; -} -.panel-group .panel { - margin-bottom: 0; - overflow: hidden; - border-radius: 4px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse .panel-body { - border-top: 1px solid #ddd; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #ddd; -} -.panel-default { - border-color: #ddd; -} -.panel-default > .panel-heading { - color: #333; - background-color: #f5f5f5; - border-color: #ddd; -} -.panel-default > .panel-heading + .panel-collapse .panel-body { - border-top-color: #ddd; -} -.panel-default > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #ddd; -} -.panel-primary { - border-color: #428bca; -} -.panel-primary > .panel-heading { - color: #fff; - background-color: #428bca; - border-color: #428bca; -} -.panel-primary > .panel-heading + .panel-collapse .panel-body { - border-top-color: #428bca; -} -.panel-primary > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #428bca; -} -.panel-success { - border-color: #d6e9c6; -} -.panel-success > .panel-heading { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -.panel-success > .panel-heading + .panel-collapse .panel-body { - border-top-color: #d6e9c6; -} -.panel-success > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #d6e9c6; -} -.panel-info { - border-color: #bce8f1; -} -.panel-info > .panel-heading { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.panel-info > .panel-heading + .panel-collapse .panel-body { - border-top-color: #bce8f1; -} -.panel-info > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #bce8f1; -} -.panel-warning { - border-color: #faebcc; -} -.panel-warning > .panel-heading { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.panel-warning > .panel-heading + .panel-collapse .panel-body { - border-top-color: #faebcc; -} -.panel-warning > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #faebcc; -} -.panel-danger { - border-color: #ebccd1; -} -.panel-danger > .panel-heading { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.panel-danger > .panel-heading + .panel-collapse .panel-body { - border-top-color: #ebccd1; -} -.panel-danger > .panel-footer + .panel-collapse .panel-body { - border-bottom-color: #ebccd1; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #f5f5f5; - border: 1px solid #e3e3e3; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, .15); -} -.well-lg { - padding: 24px; - border-radius: 6px; -} -.well-sm { - padding: 9px; - border-radius: 3px; -} -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - filter: alpha(opacity=20); - opacity: .2; -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - filter: alpha(opacity=50); - opacity: .5; -} -button.close { - -webkit-appearance: none; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; -} -.modal-open { - overflow: hidden; -} -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - display: none; - overflow: auto; - overflow-y: scroll; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transition: -webkit-transform .3s ease-out; - -moz-transition: -moz-transform .3s ease-out; - -o-transition: -o-transform .3s ease-out; - transition: transform .3s ease-out; - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - transform: translate(0, -25%); -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #999; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - outline: none; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); - box-shadow: 0 3px 9px rgba(0, 0, 0, .5); -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - /*background-color: #000;*/ - background-color: #fff; -} -.modal-backdrop.fade { - filter: alpha(opacity=0); - opacity: 0; -} -.modal-backdrop.in { - filter: alpha(opacity=50); - opacity: .5; -} -.modal-header { - min-height: 16.42857143px; - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - position: relative; - padding: 20px; -} -.modal-footer { - padding: 19px 20px 20px; - margin-top: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-bottom: 0; - margin-left: 5px; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - box-shadow: 0 5px 15px rgba(0, 0, 0, .5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1030; - display: block; - font-size: 12px; - line-height: 1.4; - visibility: visible; - filter: alpha(opacity=0); - opacity: 0; -} -.tooltip.in { - filter: alpha(opacity=90); - opacity: .9; -} -.tooltip.top { - padding: 5px 0; - margin-top: -3px; -} -.tooltip.right { - padding: 0 5px; - margin-left: 3px; -} -.tooltip.bottom { - padding: 5px 0; - margin-top: 3px; -} -.tooltip.left { - padding: 0 5px; - margin-left: -3px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #fff; - text-align: center; - text-decoration: none; - background-color: #000; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-left .tooltip-arrow { - bottom: 0; - left: 5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-right .tooltip-arrow { - right: 5px; - bottom: 0; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - left: 5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - right: 5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1010; - display: none; - max-width: 276px; - padding: 1px; - text-align: left; - white-space: normal; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); - box-shadow: 0 5px 10px rgba(0, 0, 0, .2); -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - font-weight: normal; - line-height: 18px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - content: ""; - border-width: 10px; -} -.popover.top > .arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, .25); - border-bottom-width: 0; -} -.popover.top > .arrow:after { - bottom: 1px; - margin-left: -10px; - content: " "; - border-top-color: #fff; - border-bottom-width: 0; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, .25); - border-left-width: 0; -} -.popover.right > .arrow:after { - bottom: -10px; - left: 1px; - content: " "; - border-right-color: #fff; - border-left-width: 0; -} -.popover.bottom > .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, .25); -} -.popover.bottom > .arrow:after { - top: 1px; - margin-left: -10px; - content: " "; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, .25); -} -.popover.left > .arrow:after { - right: 1px; - bottom: -10px; - content: " "; - border-right-width: 0; - border-left-color: #fff; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner > .item { - position: relative; - display: none; - -webkit-transition: .6s ease-in-out left; - transition: .6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 15%; - font-size: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); - filter: alpha(opacity=50); - opacity: .5; -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .5) 0%), color-stop(rgba(0, 0, 0, .0001) 100%)); - background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control.right { - right: 0; - left: auto; - background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, .0001) 0%), color-stop(rgba(0, 0, 0, .5) 100%)); - background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); - background-repeat: repeat-x; -} -.carousel-control:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: none; - opacity: .9; -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - margin-top: -10px; - margin-left: -10px; - font-family: serif; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - padding-left: 0; - margin-left: -30%; - text-align: center; - list-style: none; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); - border: 1px solid #fff; - border-radius: 10px; -} -.carousel-indicators .active { - width: 12px; - height: 12px; - margin: 0; - background-color: #fff; -} -.carousel-caption { - position: absolute; - right: 15%; - bottom: 20px; - left: 15%; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #fff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, .6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - margin-left: -15px; - font-size: 30px; - } - .carousel-caption { - right: 20%; - left: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-footer:before, -.modal-footer:after { - display: table; - content: " "; -} -.clearfix:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-right: auto; - margin-left: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; - visibility: hidden !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} -/*# sourceMappingURL=bootstrap.css.map */ diff --git a/common/src/main/webapp/thirdparty/bootstrap/css/bootstrap.min.css b/common/src/main/webapp/thirdparty/bootstrap/css/bootstrap.min.css deleted file mode 100755 index 679272d2..00000000 --- a/common/src/main/webapp/thirdparty/bootstrap/css/bootstrap.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v3.1.1 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file 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 deleted file mode 100755 index b93a4953..00000000 Binary files a/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.eot and /dev/null 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 deleted file mode 100755 index 94fb5490..00000000 --- a/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file 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 deleted file mode 100755 index 1413fc60..00000000 Binary files a/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.ttf and /dev/null 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 deleted file mode 100755 index 9e612858..00000000 Binary files a/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff and /dev/null 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 deleted file mode 100755 index 64539b54..00000000 Binary files a/common/src/main/webapp/thirdparty/bootstrap/fonts/glyphicons-halflings-regular.woff2 and /dev/null differ diff --git a/common/src/main/webapp/thirdparty/bootstrap/js/bootstrap.js b/common/src/main/webapp/thirdparty/bootstrap/js/bootstrap.js deleted file mode 100755 index 8ae571b6..00000000 --- a/common/src/main/webapp/thirdparty/bootstrap/js/bootstrap.js +++ /dev/null @@ -1,1951 +0,0 @@ -/*! - * Bootstrap v3.1.1 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') } - -/* ======================================================================== - * Bootstrap: transition.js v3.1.1 - * http://getbootstrap.com/javascript/#transitions - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap') - - var transEndEventNames = { - 'WebkitTransition' : 'webkitTransitionEnd', - 'MozTransition' : 'transitionend', - 'OTransition' : 'oTransitionEnd otransitionend', - 'transition' : 'transitionend' - } - - for (var name in transEndEventNames) { - if (el.style[name] !== undefined) { - return { end: transEndEventNames[name] } - } - } - - return false // explicit for ie8 ( ._.) - } - - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function (duration) { - var called = false, $el = this - $(this).one($.support.transition.end, function () { called = true }) - var callback = function () { if (!called) $($el).trigger($.support.transition.end) } - setTimeout(callback, duration) - return this - } - - $(function () { - $.support.transition = transitionEnd() - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: alert.js v3.1.1 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // ALERT CLASS DEFINITION - // ====================== - - var dismiss = '[data-dismiss="alert"]' - var Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.prototype.close = function (e) { - var $this = $(this) - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = $(selector) - - if (e) e.preventDefault() - - if (!$parent.length) { - $parent = $this.hasClass('alert') ? $this : $this.parent() - } - - $parent.trigger(e = $.Event('close.bs.alert')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - $parent.trigger('closed.bs.alert').remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent - .one($.support.transition.end, removeElement) - .emulateTransitionEnd(150) : - removeElement() - } - - - // ALERT PLUGIN DEFINITION - // ======================= - - var old = $.fn.alert - - $.fn.alert = function (option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.alert') - - if (!data) $this.data('bs.alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - $.fn.alert.Constructor = Alert - - - // ALERT NO CONFLICT - // ================= - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - // ALERT DATA-API - // ============== - - $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: button.js v3.1.1 - * http://getbootstrap.com/javascript/#buttons - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // BUTTON PUBLIC CLASS DEFINITION - // ============================== - - var Button = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Button.DEFAULTS, options) - this.isLoading = false - } - - Button.DEFAULTS = { - loadingText: 'loading...' - } - - Button.prototype.setState = function (state) { - var d = 'disabled' - var $el = this.$element - var val = $el.is('input') ? 'val' : 'html' - var data = $el.data() - - state = state + 'Text' - - if (!data.resetText) $el.data('resetText', $el[val]()) - - $el[val](data[state] || this.options[state]) - - // push to event loop to allow forms to submit - setTimeout($.proxy(function () { - if (state == 'loadingText') { - this.isLoading = true - $el.addClass(d).attr(d, d) - } else if (this.isLoading) { - this.isLoading = false - $el.removeClass(d).removeAttr(d) - } - }, this), 0) - } - - Button.prototype.toggle = function () { - var changed = true - var $parent = this.$element.closest('[data-toggle="buttons"]') - - if ($parent.length) { - var $input = this.$element.find('input') - if ($input.prop('type') == 'radio') { - if ($input.prop('checked') && this.$element.hasClass('active')) changed = false - else $parent.find('.active').removeClass('active') - } - if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') - } - - if (changed) this.$element.toggleClass('active') - } - - - // BUTTON PLUGIN DEFINITION - // ======================== - - var old = $.fn.button - - $.fn.button = function (option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.button') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.button', (data = new Button(this, options))) - - if (option == 'toggle') data.toggle() - else if (option) data.setState(option) - }) - } - - $.fn.button.Constructor = Button - - - // BUTTON NO CONFLICT - // ================== - - $.fn.button.noConflict = function () { - $.fn.button = old - return this - } - - - // BUTTON DATA-API - // =============== - - $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { - var $btn = $(e.target) - if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') - $btn.button('toggle') - e.preventDefault() - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: carousel.js v3.1.1 - * http://getbootstrap.com/javascript/#carousel - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CAROUSEL CLASS DEFINITION - // ========================= - - var Carousel = function (element, options) { - this.$element = $(element) - this.$indicators = this.$element.find('.carousel-indicators') - this.options = options - this.paused = - this.sliding = - this.interval = - this.$active = - this.$items = null - - this.options.pause == 'hover' && this.$element - .on('mouseenter', $.proxy(this.pause, this)) - .on('mouseleave', $.proxy(this.cycle, this)) - } - - Carousel.DEFAULTS = { - interval: 5000, - pause: 'hover', - wrap: true - } - - Carousel.prototype.cycle = function (e) { - e || (this.paused = false) - - this.interval && clearInterval(this.interval) - - this.options.interval - && !this.paused - && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) - - return this - } - - Carousel.prototype.getActiveIndex = function () { - this.$active = this.$element.find('.item.active') - this.$items = this.$active.parent().children() - - return this.$items.index(this.$active) - } - - Carousel.prototype.to = function (pos) { - var that = this - var activeIndex = this.getActiveIndex() - - if (pos > (this.$items.length - 1) || pos < 0) return - - if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) - if (activeIndex == pos) return this.pause().cycle() - - return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) - } - - Carousel.prototype.pause = function (e) { - e || (this.paused = true) - - if (this.$element.find('.next, .prev').length && $.support.transition) { - this.$element.trigger($.support.transition.end) - this.cycle(true) - } - - this.interval = clearInterval(this.interval) - - return this - } - - Carousel.prototype.next = function () { - if (this.sliding) return - return this.slide('next') - } - - Carousel.prototype.prev = function () { - if (this.sliding) return - return this.slide('prev') - } - - Carousel.prototype.slide = function (type, next) { - var $active = this.$element.find('.item.active') - var $next = next || $active[type]() - var isCycling = this.interval - var direction = type == 'next' ? 'left' : 'right' - var fallback = type == 'next' ? 'first' : 'last' - var that = this - - if (!$next.length) { - if (!this.options.wrap) return - $next = this.$element.find('.item')[fallback]() - } - - if ($next.hasClass('active')) return this.sliding = false - - var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) - this.$element.trigger(e) - if (e.isDefaultPrevented()) return - - this.sliding = true - - isCycling && this.pause() - - if (this.$indicators.length) { - this.$indicators.find('.active').removeClass('active') - this.$element.one('slid.bs.carousel', function () { - var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) - $nextIndicator && $nextIndicator.addClass('active') - }) - } - - if ($.support.transition && this.$element.hasClass('slide')) { - $next.addClass(type) - $next[0].offsetWidth // force reflow - $active.addClass(direction) - $next.addClass(direction) - $active - .one($.support.transition.end, function () { - $next.removeClass([type, direction].join(' ')).addClass('active') - $active.removeClass(['active', direction].join(' ')) - that.sliding = false - setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0) - }) - .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000) - } else { - $active.removeClass('active') - $next.addClass('active') - this.sliding = false - this.$element.trigger('slid.bs.carousel') - } - - isCycling && this.cycle() - - return this - } - - - // CAROUSEL PLUGIN DEFINITION - // ========================== - - var old = $.fn.carousel - - $.fn.carousel = function (option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.carousel') - var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) - var action = typeof option == 'string' ? option : options.slide - - if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) - if (typeof option == 'number') data.to(option) - else if (action) data[action]() - else if (options.interval) data.pause().cycle() - }) - } - - $.fn.carousel.Constructor = Carousel - - - // CAROUSEL NO CONFLICT - // ==================== - - $.fn.carousel.noConflict = function () { - $.fn.carousel = old - return this - } - - - // CAROUSEL DATA-API - // ================= - - $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { - var $this = $(this), href - var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 - var options = $.extend({}, $target.data(), $this.data()) - var slideIndex = $this.attr('data-slide-to') - if (slideIndex) options.interval = false - - $target.carousel(options) - - if (slideIndex = $this.attr('data-slide-to')) { - $target.data('bs.carousel').to(slideIndex) - } - - e.preventDefault() - }) - - $(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - $carousel.carousel($carousel.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: collapse.js v3.1.1 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ - - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Collapse.DEFAULTS, options) - this.transitioning = null - - if (this.options.parent) this.$parent = $(this.options.parent) - if (this.options.toggle) this.toggle() - } - - Collapse.DEFAULTS = { - toggle: true - } - - Collapse.prototype.dimension = function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } - - Collapse.prototype.show = function () { - if (this.transitioning || this.$element.hasClass('in')) return - - var startEvent = $.Event('show.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var actives = this.$parent && this.$parent.find('> .panel > .in') - - if (actives && actives.length) { - var hasData = actives.data('bs.collapse') - if (hasData && hasData.transitioning) return - actives.collapse('hide') - hasData || actives.data('bs.collapse', null) - } - - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - .addClass('collapsing') - [dimension](0) - - this.transitioning = 1 - - var complete = function () { - this.$element - .removeClass('collapsing') - .addClass('collapse in') - [dimension]('auto') - this.transitioning = 0 - this.$element.trigger('shown.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - var scrollSize = $.camelCase(['scroll', dimension].join('-')) - - this.$element - .one($.support.transition.end, $.proxy(complete, this)) - .emulateTransitionEnd(350) - [dimension](this.$element[0][scrollSize]) - } - - Collapse.prototype.hide = function () { - if (this.transitioning || !this.$element.hasClass('in')) return - - var startEvent = $.Event('hide.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var dimension = this.dimension() - - this.$element - [dimension](this.$element[dimension]()) - [0].offsetHeight - - this.$element - .addClass('collapsing') - .removeClass('collapse') - .removeClass('in') - - this.transitioning = 1 - - var complete = function () { - this.transitioning = 0 - this.$element - .trigger('hidden.bs.collapse') - .removeClass('collapsing') - .addClass('collapse') - } - - if (!$.support.transition) return complete.call(this) - - this.$element - [dimension](0) - .one($.support.transition.end, $.proxy(complete, this)) - .emulateTransitionEnd(350) - } - - Collapse.prototype.toggle = function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } - - - // COLLAPSE PLUGIN DEFINITION - // ========================== - - var old = $.fn.collapse - - $.fn.collapse = function (option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.collapse') - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data && options.toggle && option == 'show') option = !option - if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - $.fn.collapse.Constructor = Collapse - - - // COLLAPSE NO CONFLICT - // ==================== - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } - - - // COLLAPSE DATA-API - // ================= - - $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { - var $this = $(this), href - var target = $this.attr('data-target') - || e.preventDefault() - || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 - var $target = $(target) - var data = $target.data('bs.collapse') - var option = data ? 'toggle' : $this.data() - var parent = $this.attr('data-parent') - var $parent = parent && $(parent) - - if (!data || !data.transitioning) { - if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') - $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') - } - - $target.collapse(option) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: dropdown.js v3.1.1 - * http://getbootstrap.com/javascript/#dropdowns - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // DROPDOWN CLASS DEFINITION - // ========================= - - var backdrop = '.dropdown-backdrop' - var toggle = '[data-toggle=dropdown]' - var Dropdown = function (element) { - $(element).on('click.bs.dropdown', this.toggle) - } - - Dropdown.prototype.toggle = function (e) { - var $this = $(this) - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { - // if mobile we use a backdrop because click events don't delegate - $(''); - $(tds.eq(j)).height('0px'); - $(tds.eq(j)).css('padding-top','0px'); - $(tds.eq(j)).css('padding-bottom','0px'); - $(tds.eq(j)).css('border-top-width','0px'); - $(tds.eq(j)).css('border-bottom-width','0px'); - } - $(rowClone).height('0px'); - $tableHead.append($(rowClone).prop("outerHTML")); - } - - $('div.dataTables_scrollBody', tableWrapper).css('width','100%'); - $('div.dataTables_scrollHead', tableWrapper).css('width','98.5%'); - $('div.dataTables_scrollHeadInner', tableWrapper).css('padding-right', 0); - - //添加浮动确认å确认按钮 - if(rowOverFlag){ - addRowOverlap(); - } - - //设置表格本体高度 - $('div.dataTables_scrollBody', tableWrapper).css('height', tableHeight); - } - } - }, options); - - tableOptions = options; - - columns = columnsDefined; - xsHiddenColumns = xsHiddenColumnsDefined; - smHiddenColumns = smHiddenColumnsDefined; - // create table's jquery object - table = $(options.src); - tableContainer = table.parents("div#table-container" + contextData.curentDatableId); - // apply the special class that used to restyle the default datatable - - $.fn.dataTableExt.oStdClasses.sWrapper = $.fn.dataTableExt.oStdClasses.sWrapper + " dataTables_extended_wrapper"; - - // initialize a datatable - dataTable = table.dataTable(options.dataTable); - - tableWrapper = table.parents('div.dataTables_wrapper', tableContainer); - - // modify table per page dropdown input by appliying some classes - $('.dataTables_length select', tableWrapper).addClass("form-control input-xsmall input-sm"); - - // handle group checkboxes check/uncheck - $('.group-checkable', tableContainer).change(function () { - var set = $('tbody > tr > td:nth-child(1) input[type="checkbox"]', table); - var checked = $(this).is(":checked"); - $(set).each(function () { - $(this).attr("checked", checked); - }); - $.uniform.update(set); - countSelectedRecords(); - }); - - // handle row's checkbox click - table.on('change', 'tbody > tr > td:nth-child(1) input[type="checkbox"]', function(){ - countSelectedRecords(); - }); - - //if ($.browser.safari) { - // $('.table-container').css('width','100%'); - //} - //填充表头å³è¾¹ç•Œ - $('div.dataTables_scrollHead', tableContainer).css('display','inline-block'); - //var dataTables_scrollHead_height = $('.dataTables_scrollHead').css( "height" ); - $("div.dataTables_scrollHead", tableContainer).after("
"); - if($.browser.mozilla){ - $('div#divRightPadding', tableContainer).css('height', '40'); - } - - //éšè—掉æŸäº›åˆ— - var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper); - var $tableBody = $('table#datatable_ajax' + contextData.curentDatableId, tableWrapper); - - for(var i=0;i tr > th#' + columns[j].columnId, $tableHead).addClass('hidden-xs'); - $('thead > tr > th#' + columns[j].columnId, $tableBody).addClass('hidden-xs'); - break; - } - } - } - - for(var i=0;i tr > th#' + columns[j].columnId, $tableHead).addClass('hidden-sm'); - $('thead > tr > th#' + columns[j].columnId, $tableBody).addClass('hidden-sm'); - break; - } - } - } - },//end init------------------------------------------------------------------------------------ - - getSelectedRowsCount: function() { - return $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).size(); - }, - - getSelectedRows: function() { - var rows = []; - $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).each(function(){ - rows.push({rowDataNo: $(this).attr("rowDataNo"), name: $(this).attr("name"), value: $(this).val()}); - }); - - return rows; - }, - - addAjaxParam: function(name, value) { - ajaxParams.push({"name": name, "value": value}); - }, - - clearAjaxParams: function(name, value) { - ajaxParams = []; - }, - - getDataTable: function() { - return dataTable; - }, - - getTableWrapper: function() { - return tableWrapper; - }, - - gettableContainer: function() { - return tableContainer; - }, - - getTable: function() { - return table; - }, - - setOpenRowFlag: function(openRowFlagInput) { - openRowFlag = openRowFlagInput; - }, - - setRowOverFlag: function(rowOverFlagInput) { - rowOverFlag = rowOverFlagInput; - }, - - setRowCheckable: function(rowCheckableInput) { - rowCheckable = rowCheckableInput; - }, - - setColumnsTooLong: function(columnsTooLongInput) { - columnsTooLong = columnsTooLongInput; - }, - - setSTotalRecordsSource: function(sTotalRecordsSourceInput){ - sTotalRecordsSource = sTotalRecordsSourceInput; - }, - - setTotalRecords: function(totalRecordsInput){ - totalRecords = totalRecordsInput; - }, - - setTableHeight: function(tableHeightInput){ - tableHeight = tableHeightInput; - }, - - setCallbackList: function(list){ - if($.isArray(list)){ - callbackList = list; - } - }, - - getCheckedRowDatas:function(){ - checkedRowDatas = []; - $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).each(function(){ - var rowNoId = $(this).attr("rowDataNo"); - var rowNoIndex = rowNoId.slice(rowNoId.indexOf("_") + 1); - checkedRowDatas.push(currentPageData[parseInt(rowNoIndex)]); - }); - return checkedRowDatas; - }, - - setRequestType: function(requestTypeInput){ - requestType = requestTypeInput; - }, - - setContextData: function(newContextData){ - contextData = newContextData; - }, - - setTotalPage: function(newTotalPage){ - $("#datatable_ajax" + contextData.curentDatableId + "_info").html(tableOptions.dataTable.oLanguage.sInfo.replace("_TOTAL_", newTotalPage + "")); - } - - }; - -}; - -var TableAjaxICT = function () { - - var contextData; - - var initPickers = function () { - //init date pickers - $('.date-picker').datepicker({ - //rtl: App.isRTL(), - autoclose: true - }); - } - - //判断a数组是å¦åŒ…å«b数组 - function isContained(largeArray, smallArray){ - if(!(largeArray instanceof Array) || !(smallArray instanceof Array)) - return false; - if(largeArray.length < smallArray.length) - return false; - for(var i = 0; i < smallArray.length; i++){ - var flag = false; - for(j=0;j' + alarmId + ''; - sOut += '' + columns[4].columnTitle + '' + perceivedSeverity + ''; - sOut += '' + columns[9].columnTitle + '' + alarmType + ''; - sOut += '' + columns[3].columnTitle + '' + alarmRaisedTime + ''; - - sOut += '' + columns[5].columnTitle + '' + probableCauseDesc + ''; - sOut += '' + columns[15].columnTitle + '' + alarmChangedTime + ''; - sOut += '' + columns[11].columnTitle + '' + ackState + ''; - - sOut += '' + columns[12].columnTitle + '' + ackTime + ''; - sOut += '' + columns[13].columnTitle + '' + ackUserId + ''; - sOut += '' + columns[14].columnTitle + '' + ackSystemId + ''; - sOut += '' + columns[7].columnTitle + '' + neip + ''; - - sOut += '' + columns[2].columnTitle + '' + moc + ''; - sOut += '' + columns[1].columnTitle + '' + resDisplayName + ''; - - sOut += '' + columns[8].columnTitle + '' + componentname + ''; - sOut += '' + columns[16].columnTitle + '' + position1 + ''; - - sOut += '' + columns[10].columnTitle + '' + specificproblem + ''; - - sOut += '' + columns[6].columnTitle + '' + additionalText + ''; - - sOut += '' + $.i18n.prop('aos_fm_SuggestionSetting_view_DefaultSuggestionGroupTitle').replace(';', '').replace(/\"/g,'') + '' + ''; - - sOut += '' + $.i18n.prop('aos_fm_SuggestionSetting_view_SettingSuggestionGroupTitle').replace(';', '').replace(/\"/g,'') + ''; - - sOut += ''; - - /* - var systemType = 0; - var code = 0; - for (var i = 0; i < oTable.datas.length; i++) { - var temp = oTable.datas[i]; - if (temp.alarmId == oTr['alarmId'].value) { - systemType = temp.systemType; - code = temp.probableCauseCode; - } - }*/ - var data = { - "systemType" : systemType, - "code" : code - }; - var sendData = JSON.stringify(data); - $.ajax({ - "dataType" : 'json', - "type" : "GET", - "url" : "/web/rest/web/fm/Maintenance" + "?" + "data=" + sendData, - "contentType" : 'application/json; charset=utf-8', - "data" : null, - "success" : function (json) { - $('tr').find('td#defaulInfo' + id).text(json.defaulInfo); - $('tr').find('td#customInfo' + id).text(json.customInfo); - var modify = $('#customInfoModify' + id); - modify.on('click', function () { - var span = $('#modifyBtnSpan' + id); - var customInfo = $('tr').find('td#customInfo' + id); - var cancel = $('#cancelDiv' + id); - if (span['0'].className === 'fa fa-pencil-square-o') { - var value = customInfo['0'].textContent; - customInfo['0'].textContent = ''; - customInfo['0'].innerHTML = ''; - span['0'].className = 'fa fa-floppy-o'; - cancel['0'].innerHTML = ''; - $('#cancelBtn' + id).on('click', function () { - customInfo['0'].innerHTML = ''; - customInfo['0'].textContent = value; - cancel['0'].innerHTML = ''; - span['0'].className = 'fa fa-pencil-square-o'; - }); - } else { - var inputValue = $('#customInfoInput' + id)['0'].value; - customInfo['0'].innerHTML = ''; - customInfo['0'].textContent = inputValue; - span['0'].className = 'fa fa-pencil-square-o'; - cancel['0'].innerHTML = ''; - var modifyData = { - "systemType" : systemType, - "code" : code, - "defaulInfo" : json.defaulInfo, - "customInfo" : inputValue - }; - $.ajax({ - "dataType" : 'json', - "type" : "PUT", - "url" : "/web/rest/web/fm/Maintenance", - "contentType" : 'application/json; charset=utf-8', - "data" : JSON.stringify(modifyData), - "error" : function () { - alert('Modify Error!'); - } - }); - } - }); - }, - "error" : function () { - alert('Communication Error!'); - } - }); - - return sOut; - } - - var generateColumns = function(columns, openRowFlag, rowCheckable){ - var $tableData = $('table#datatable_ajax' + contextData.curentDatableId); - var theadTR = $('thead > tr', $tableData); - if(rowCheckable){ - theadTR.append(''); - } - if(openRowFlag){ - theadTR.append('  '); - } - for(var i=0;i' + columns[i].columnTitle + ''); - } - } - - var sortHandling = function(oTable, openRowFlag, rowCheckable){ - var indexSkip = -1; - if(openRowFlag&&rowCheckable){ - indexSkip = 1; - }else if(openRowFlag&&!rowCheckable||!openRowFlag&&rowCheckable){ - indexSkip = 0; - } - var $sortOrder = 0; //排åºç±»åž‹ 1表示å‡åºï¼Œ0表示é™åº - var tableWrapper = $('div.dataTables_wrapper', contextData.wrapperDivContext); - var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper); - var $tableData = $('table#datatable_ajax' + contextData.curentDatableId); - var clearSort = function(currentTh){ - var ths = $tableHead.find('th').get(); - var tableDataHeadTHs = $tableData.find('th').get(); - $.each( ths, function( index, th ){ - if(index > indexSkip){ - if($(th).text() != currentTh.text()){ - if($(th).is('.sorting_disabled')){ - //do nothing; - }else if($(th).is('.sorting_asc')){ - $(th).removeClass('sorting_asc').addClass('sorting_disabled'); - $(tableDataHeadTHs[index]).removeClass('sorting_asc').addClass('sorting_disabled'); - }else if($(th).is('.sorting_desc')){ - $(th).removeClass('sorting_desc').addClass('sorting_disabled'); - $(tableDataHeadTHs[index]).removeClass('sorting_desc').addClass('sorting_disabled'); - } - } - } - }); - } - - $('th', $tableHead).each(function( column ) - { - if(column>indexSkip){ - //处ç†ä¸‰ç§æœ‰å¯èƒ½å­˜åœ¨çš„排åºå­—段,比较方法 - var findSortKey; - if( $(this).is('.sort-title') || $(this).is('.sorting_disabled') ) - { - findSortKey = function( $cell ) - { - var cellText = $cell.text(); - if(isNaN(cellText)){ - return $cell.text().toUpperCase(); - }else{ - return parseFloat(cellText); - } - //return $cell.text().toUpperCase(); - } - } - else if( $(this).is('.sort-date') ) - { - findSortKey = function( $cell ) - { - return Date.parse('1' + $cell.text()); - } - } - else if( $(this).is('.sort-price') ) - { - findSortKey = function( $cell ) - { - var key = parseFloat($cell.text().replace(/^[^\d.]*/, '')) - return isNaN(key) ? 0 : key; - } - } - - //æŽ’åº - if( findSortKey ) - { - $(this).click(function() - { - $sortOrder = $sortOrder == 0 ? 1 : 0; - var tableDataHeadTHs = $tableData.find('th').get(); - - if($sortOrder == 1){ - if($(this).is('.sorting_disabled')){ - $(this).removeClass('sorting_disabled').addClass('sorting_asc'); - $(tableDataHeadTHs[column]).removeClass('sorting_disabled').addClass('sorting_asc'); - }else if($(this).is('.sorting_asc')){ - $(this).removeClass('sorting_asc').addClass('sorting_desc'); - $(tableDataHeadTHs[column]).removeClass('sorting_asc').addClass('sorting_desc'); - }else if($(this).is('.sorting_desc')){ - $(this).removeClass('sorting_desc').addClass('sorting_asc'); - $(tableDataHeadTHs[column]).removeClass('sorting_desc').addClass('sorting_asc'); - } - }else{ - if($(this).is('.sorting_disabled')){ - $(this).removeClass('sorting_disabled').addClass('sorting_desc'); - $(tableDataHeadTHs[column]).removeClass('sorting_disabled').addClass('sorting_desc'); - }else if($(this).is('.sorting_asc')){ - $(this).removeClass('sorting_asc').addClass('sorting_desc'); - $(tableDataHeadTHs[column]).removeClass('sorting_asc').addClass('sorting_desc'); - }else if($(this).is('.sorting_desc')){ - $(this).removeClass('sorting_desc').addClass('sorting_asc'); - $(tableDataHeadTHs[column]).removeClass('sorting_desc').addClass('sorting_asc'); - } - } - clearSort($(this)); - - var rows = $tableData.find('tbody > tr').get(); - - $.each( rows, function( index, row ) - { - //先关掉所有行 - if ( oTable.fnIsOpen(row) ) - { - $(row).find('.row-details').click(); - } - }); - - //é‡æ–°å–得所有行,å¦åˆ™æŽ’åºåŽè¡¨æ ¼æ˜¾ç¤ºå¼‚常 - rows = $tableData.find('tbody > tr').get(); - - $.each( rows, function( index, row ) - { - row.sortKey = findSortKey($(row).children('td').eq(column)); - }); - //排åºæ–¹æ³• - rows.sort(function( a, b ) - { - if( $sortOrder == 1 ) - { - //å‡åº - if(a.sortKey < b.sortKey) return -1; - if(a.sortKey > b.sortKey) return 1; - return 0; - } - else - { - //é™åº - if(a.sortKey < b.sortKey) return 1; - if(a.sortKey > b.sortKey) return -1; - return 0; - } - }); - //排åºåŽçš„对象添加给$table - $.each( rows, function( index, row ) - { - $tableData.children('tbody').append(row); - row.sortKey = null; - }); - }); - } - } - }); - } - - var handleRecords = function(requestDatas, columns, xsHiddenColumns, smHiddenColumns, oLanguage, openRowFlag, rowCheckable, rowOverFlag, requestURL, requestParameters, tableHeight, columnsTooLong, sTotalRecordsSource, callbackList, totalRecords, requestType) { - - /* - jQuery.getJSON('/web/newict/framework/thirdparty/data-tables/app-universal-i18n-datatable-' + lang + '.json', - function(data) { - oLanguage = data; - }); - */ - grid = DatatableICT(); - grid.setCallbackList(callbackList); - grid.setContextData(contextData); - grid.setOpenRowFlag(openRowFlag); - grid.setRowCheckable(rowCheckable); - grid.setRowOverFlag(rowOverFlag); - grid.setColumnsTooLong(columnsTooLong); - grid.setSTotalRecordsSource(sTotalRecordsSource); - grid.setTotalRecords(totalRecords); - grid.setTableHeight(tableHeight); - grid.setRequestType(requestType); - //å–得查询æ¡ä»¶ -// if(!requestStr || requestStr.length == 0){ -// requestStr = JSON.stringify(requestAllData); -// } - grid.clearAjaxParams(); - if(requestType == "GET"){ - grid.addAjaxParam('data', JSON.stringify(requestDatas)); - }else{ - grid.addAjaxParam('data', requestDatas); - } - //å–得其他å‚æ•° - for(var i=0;i table.dataTable', tableWrapper); - var ths = $tableHead.find('th').get(); - var $tableData = $('table#datatable_ajax' + contextData.curentDatableId); - var tableDataHeadTHs = $tableData.find('th').get(); - $.each( ths, function( index, th ){ - //clear all sort direction - if($(th).is('.sorting_disabled')){ - //do nothing; - }else if($(th).is('.sorting_asc')){ - $(th).removeClass('sorting_asc').addClass('sorting_disabled'); - $(tableDataHeadTHs[index]).removeClass('sorting_asc').addClass('sorting_disabled'); - }else if($(th).is('.sorting_desc')){ - $(th).removeClass('sorting_desc').addClass('sorting_disabled'); - $(tableDataHeadTHs[index]).removeClass('sorting_desc').addClass('sorting_disabled'); - } - }); - - }, - onError: function(grid) { - // execute some code on network or other general error - }, - dataTable: { - "sDom" : "tr<'row'<'col-md-6 col-sm-12'><'col-md-6 col-sm-12'pli>>", // datatable layout - "oLanguage": oLanguage, - //"bAutoWidth": true, - "sScrollY": tableHeight, - "bScrollCollapse": true, - "sScrollX": "100%", - //"sScrollXInner": "110%", - "aLengthMenu": [ - [20, 50, 100], - [20, 50, 100] // change per page values here - ], - "iDisplayLength": 100, // default record count per page - "bServerSide": true, // server side processing - "sAjaxSource": requestURL // ajax source - } - }, columns, xsHiddenColumns, smHiddenColumns, openRowFlag, rowCheckable); - } - - /* - * Insert a 'details' column to the table - */ - var insertDetails = function (oTable, columns, rowCheckable) { - - var $tableData = $('table#datatable_ajax' + contextData.curentDatableId); - - $tableData.on('click', ' tbody td .row-details', function () { - var nTr = $(this).parents('tr')[0]; - if (oTable.fnIsOpen(nTr)) { - /* This row is already open - close it */ - $(this).addClass("row-details-close").removeClass("row-details-open"); - oTable.fnClose(nTr); - } else { - /* Open this row */ - $(this).addClass("row-details-open").removeClass("row-details-close"); - oTable.fnOpen(nTr, fnFormatDetails(oTable, nTr, columns, rowCheckable), 'details'); - } - }); - } - - return { - - //main function to initiate the module - init: function (requestDatas, lang, configPathPrefix, callbackList, newColumns, totalPage) { - - var oLanguage; - var columns; - var xsHiddenColumns; - var smHiddenColumns; - var columnsAll; - - var openRowFlag = false; - var rowOverFlag = false; - var rowCheckable = false; - var requestURL=""; - var requestAllData; - var requestParameters; - - var tableHeight; - var tableWidth; - - var columnsTooLong; - var sTotalRecordsSource=""; - var totalRecords = 0; - - var requestType = "GET"; - - //å–得当å‰é…ç½®åŠå›½é™…åŒ–ä¿¡æ¯ - $.ajax({ - dataType: 'json', - url: configPathPrefix + '-' + lang + '.json', - async: false, - contentType:'application/json; charset=utf-8', - "success": function(data) { - oLanguage = data.language; - columns = data.columns; - if(newColumns){ - columns = newColumns; - } - xsHiddenColumns = data.xsHiddenColumns; - smHiddenColumns = data.smHiddenColumns; - columnsAll = data.columnsAll; - if(newColumns){ - columnsAll = newColumns; - } - openRowFlag = data.openRowFlag == 'true'? true: false; - rowOverFlag = data.rowOverFlag == 'true'? true: false; - rowCheckable = data.rowCheckable == 'true'? true: false; - requestURL = data.requestURL; - //requestAllData = data.requestAllData; - requestParameters = data.requestParameters; - tableHeight = data.tableHeight; - tableWidth = data.tableWidth; - columnsTooLong = data.columnsTooLong; - sTotalRecordsSource = data.sTotalRecordsSource; - if(data.sTotalRecords){ //性能的情况直接指定总行数 - totalRecords = parseInt(data.sTotalRecords); - } - if(totalPage){ //å¯ä»¥ä»Žå‚数指定总行数,适用于å•ç‹¬å‘请求获得总行数的场景 - totalRecords = totalPage; - } - if(data.requestType){ - requestType = data.requestType; - } - }, - "error" : function (xhr, info) { - alert('Communication Error! Error reason:' + info); - } - }); - - $('div#dataTableWrapperDiv' + contextData.curentDatableId).css('width', tableWidth); - - if(!isContained(xsHiddenColumns, smHiddenColumns) || !isContained(columns, xsHiddenColumns) || !isContained(columnsAll, columns)){ - alert('Columns claim error: (smHiddenColumns <= xsHiddenColumns <= columns <= columnsAll) Please!'); - return; - } - - generateColumns(columns, openRowFlag, rowCheckable); - //initPickers(); - handleRecords(requestDatas, columns, xsHiddenColumns, smHiddenColumns, oLanguage, openRowFlag, rowCheckable, rowOverFlag, requestURL, requestParameters, tableHeight, columnsTooLong, sTotalRecordsSource, callbackList, totalRecords, requestType); - //获得åˆå§‹åŒ–完毕的DataTable对象 - var oTable = grid.getDataTable(); - if(openRowFlag){ - insertDetails(oTable, columnsAll, rowCheckable); - } - sortHandling(oTable, openRowFlag, rowCheckable); - //oTable.fnAdjustColumnSizing(true); - return oTable; - }, - - getDataGrid: function(){ - return grid; - }, - - setContextData: function(newContextData){ - contextData = newContextData; - } - - }; - -}(); - -var addTableElementsId = function(){ - - var outterDivs = $('div.dataTableWrapperDiv'); - var currentId; - - if(outterDivs && outterDivs.length > 0) { - var maxId = -1; - var divIdNo; - $.each(outterDivs, function (index, div) { - var divId = $(div).attr("id"); - divIdNo = divId.substring(20); - if (divIdNo || divIdNo.length > 0){ - if (parseInt(divIdNo) > maxId) { - maxId = parseInt(divIdNo); - } - } - }); - currentId = maxId + 1; - } - - var curentDatableId = "_" + currentId; - - var dataTableWrapperDiv = $('div#dataTableWrapperDiv');//新添加的outterDiv - $(dataTableWrapperDiv).attr("id", "dataTableWrapperDiv" + curentDatableId); - var dataTableWrapperDivContext = dataTableWrapperDiv; - $('div.table-container', dataTableWrapperDiv).attr("id", "table-container" + curentDatableId); - $('table#datatable_ajax', dataTableWrapperDiv).attr("id", "datatable_ajax" + curentDatableId); - $('div#divOverlay', dataTableWrapperDiv).attr("id", "divOverlay" + curentDatableId); - //$('div#buttonConfirm', dataTableWrapperDiv).attr("id", "buttonConfirm" + curentDatableId); - //$('div#buttonUnConfirm', dataTableWrapperDiv).attr("id", "buttonUnConfirm" + curentDatableId); - $('div#myModal', dataTableWrapperDiv).attr("id", "myModal" + curentDatableId); - $('div#myModalConfirm', dataTableWrapperDiv).attr("id", "myModalConfirm" + curentDatableId); - $('span#alarm_number', dataTableWrapperDiv).attr("id", "alarm_number" + curentDatableId); - - return { - "curentDatableId": curentDatableId, - "wrapperDivContext":dataTableWrapperDivContext - } -} - -var DataTableICT = function(requestDatas, tableDivId, tableDivPath, configPathPrefix, callbackList, newColumns, totalPage){ - - /* var requestStr = ""; - if(datas){ - requestStr = JSON.stringify(datas); - } */ - - var lang = getLanguage(); - //lang = 'en-US'; - - /**å–得表格组件所需html片段 **/ - /*jQuery('div#' + tableDivId).load(tableDivPath, function() { - var contextData = addTableElementsId(); - TableAjaxICT.setContextData(contextData); - - var lang = getLanguage(); - //lang = 'en-US'; - var oTable = TableAjaxICT.init(requestStr, lang, configPathPrefix); - - //é‡æ–°è°ƒèŠ‚列宽以适应window resize - $(window).bind('resize', function () { - //oTable.DataTable.models.oSettings.bAjaxDataGet = false; - oTable.fnAdjustColumnSizing(); - } ); - });*/ - - /**åŒæ­¥å–得表格组件所需html片段 **/ - $.ajax({ - async : false, - "dataType" : "html", - "type" : "GET", - "url" : tableDivPath, - "data" : null, - "success" : function (html, textStatus, jqXHR) { - $('div#' + tableDivId).html(html); - }, - "error" : function () { - alert("Communication error!"); - } - }); - - var contextData = addTableElementsId(); - TableAjaxICT.setContextData(contextData); - - var oTable = TableAjaxICT.init(requestDatas, lang, configPathPrefix, callbackList, newColumns, totalPage); - - //é‡æ–°è°ƒèŠ‚列宽以适应window resize - $(window).bind('resize', function () { - //oTable.DataTable.models.oSettings.bAjaxDataGet = false; - oTable.fnAdjustColumnSizing(); - } ); - - return TableAjaxICT.getDataGrid(); -} diff --git a/common/src/main/webapp/thirdparty/data-tables/DataTableSmartClient.js b/common/src/main/webapp/thirdparty/data-tables/DataTableSmartClient.js deleted file mode 100755 index 4cb8cb58..00000000 --- a/common/src/main/webapp/thirdparty/data-tables/DataTableSmartClient.js +++ /dev/null @@ -1,1215 +0,0 @@ -/*** - Wrapper/Helper Class for datagrid based on jQuery Datatable Plugin - ***/ -var DatatableICT = function () { - - var tableOptions; // main options - var dataTable; // datatable object - var table; // actual table jquery object - var tableContainer; // actual table container object - var tableWrapper; // actual table wrapper jquery object - var tableInitialized = false; - var ajaxParams = []; // set filter mode - var columns; - var xsHiddenColumns; - var smHiddenColumns; - var columnMaxLength = 30; - var columnsTooLong; - var hidden_xs_maxWidth = 768; - var hidden_sm_maxWidth = 991; - - var openRowFlag = false; - var rowOverFlag = false; - var rowCheckable = false; - - var aTargetsAll; - var sTotalRecordsSource; - var tableHeight; - - var includedInXsHiddenColumns = function(columnId){ - for(var i=0;i tr > td:nth-child(1) input[type="checkbox"]:checked', table).size(); - var text = tableOptions.dataTable.oLanguage.sGroupActions; - if (selected > 0) { - $('.table-group-actions > span', tableWrapper).text(text.replace("_TOTAL_", selected)); - } else { - $('.table-group-actions > span', tableWrapper).text(""); - } - } - - var jsonObjectToArray = function(json, columns, iDraw){ - var jsonToDatatable = {aaData:[], sEcho:iDraw, iTotalRecords:0, iTotalDisplayRecords:0 }; - for(var i=0; i"); - } - if(openRowFlag){ - jsonToDatatable.aaData[i].push(""); - } - for(var j=0; j= hidden_xs_maxWidth && $(window).width() < hidden_sm_maxWidth && includedInSmHiddenColumns(columns[j].columnId )){ - /*éšè—pad尺寸需è¦éšè—的列*/ - }else if($(window).width() < hidden_xs_maxWidth && includedInXsHiddenColumns(columns[j].columnId )){ - /*éšè—手机尺寸需è¦éšè—的列*/ - }else{ - var currentColumnId = columns[j].columnId; - if(jQuery.inArray(currentColumnId, columnsTooLong) > -1){ - var rawText = ""; - for(var k=0;k columnMaxLength){ - jsonToDatatable.aaData[i].push(rawText.slice(0, columnMaxLength) + '...'); - }else{ - jsonToDatatable.aaData[i].push(resRowObject[currentColumnId]); - } - } else { - jsonToDatatable.aaData[i].push(resRowObject[currentColumnId]); - } - - } - } - } - jsonToDatatable.sEcho++; - var totalRow = 0; - var totalRecordsSource = eval('json.' + sTotalRecordsSource); - if(totalRecordsSource && totalRecordsSource.length >0){ - totalRow = parseInt(totalRecordsSource); - } - if(isNaN(totalRow)){ - alert('All rows counting number got fail!'); - }else{ - jsonToDatatable.iTotalRecords = totalRow; - jsonToDatatable.iTotalDisplayRecords = totalRow; - } - return jsonToDatatable; - } - - var singleAlarmDel = function(divOverlay){ - - //æ ¹æ®æµ®åŠ¨æ¡†çš„当å‰id获å–需è¦åˆ é™¤çš„è¡Œ - var trId = divOverlay.attr('id_tr'); - tr=$('tr#' + trId); - var tds = $(tr).children(); - var tdAlarmId = $(tds.eq(2)).text(); - - var data= { - "alarmId":[parseInt(tdAlarmId)] - }; - - var sSource = "/web/rest/web/fm/curalarms?data=" + JSON.stringify(data) + "&_operationType=remove&_dataSource=isc_PageRestDataSource_0&isc_metaDataPrefix=_&isc_dataFormat=json"; - - $.ajax( { - "dataType": 'json', - "type": "DELETE", - "url": sSource, - "data" : null, - "contentType" : 'application/json; charset=utf-8', - "success": function(json) { - if(json.response.status == 0){ - var resRowObject = json.response.data[0]; - //alert('删除æˆåŠŸ'); - } - if(json.response.status == -1){ - //alert('删除失败'); - } - }, - "error": function() { - alert('Communication Error!'); - } - } ); - } - - var singleAlarmAckUnAck = function(divOverlay, ackType){ - - //æ ¹æ®æµ®åŠ¨æ¡†çš„当å‰id获å–需è¦ç¡®è®¤çš„è¡Œ - var trId = divOverlay.attr('id_tr'); - var tr = $('tr#' + trId); - - //å–å¾—éšè—的头部表格的相应行 - var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable'); - //var trHead = $('tbody > tr:nth-child(' + trId + ')', $tableHead); - var trHead = $('tr#' + trId.replace('body', 'head'), $tableHead); - var tdDivs = $('td > div', trHead); - - var tds = $(tr).children(); - var tdAlarmId = ""; - if(rowCheckable){ - tdAlarmId = $(tds.eq(2)).text(); - }else{ - tdAlarmId = $(tds.eq(1)).text(); - } - - var aoData = - { - "dataSource":"isc_PageRestDataSource_0", - "operationType":"update", - "componentId":"isc_com_zte_ums_aos_fm_view_eventview_table_AlarmTable_0", - "data":{ - "viewType":1, - "state":ackType, - "alarmId":[ - parseInt(tdAlarmId) - ] - }, - "oldValues":null - }; - - var sSource = "/web/rest/web/fm/curalarms?isc_dataFormat=json"; - - $.ajax( { - "dataType": 'json', - "type": "PUT", - "url": sSource, - "contentType": 'application/json; charset=utf-8', - "data": JSON.stringify(aoData), - "success": function(json) { - json = AlarmLabels.transformFieldNames(json); - if(json.response.status == 0){ - var resRowObject = json.response.data[0]; - var columnsCopy = $.extend(true, [], columns); - //éšè—列的情况下需è¦ç‰¹æ®Šå¤„ç† - if($(window).width()>=hidden_xs_maxWidth && $(window).width() -1) { - var rawText = ""; - for(var k=0;k columnMaxLength){ - $(tds.eq(i)).html(rawText.slice(0, columnMaxLength) + '...'); - $(tdDivs.eq(i)).html(rawText.slice(0, columnMaxLength) + '...'); - }else{ - $(tds.eq(i)).html(resRowObject[currentColumnId]); - $(tdDivs.eq(i)).html(resRowObject[currentColumnId]); - } - } else { - $(tds.eq(i)).html(resRowObject[currentColumnId]); - $(tdDivs.eq(i)).html(resRowObject[currentColumnId]); - } - } - //更新缓存中的当å‰è¡Œæ•°æ® - for (var t = 0; t < dataTable.datas.length; t++) { - var temp = dataTable.datas[t]; - if (temp.alarmId == resRowObject['alarmId']) { - dataTable.datas[t] = resRowObject; - break; - } - } - } - if(json.response.status == -1){ - $('div#myModalConfirm').modal({ - keyboard: false, - backdrop: 'static' - }); - $('span#alarm_number').html(tdAlarmId); - //å›½é™…åŒ–ä¿¡æ¯ - if(ackType==1){ - $('span#aos_fm_alarm_opeater_ack_already').html($.i18n.prop('aos_fm_alarm_opeater_ack_already_ok')); - }else{ - $('span#aos_fm_alarm_opeater_ack_already').html($.i18n.prop('aos_fm_alarm_opeater_ack_already_un')); - } - } - }, - "error": function() { - alert('Communication Error!'); - } - } ); - } - - var addRowOverlap = function(){ - var $tableData = $('table#datatable_ajax'); - //å–å¾—éšè—的头部表格的相应行 - var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable'); - var trHeads = $tableHead.find('tr').get(); - $.each( trHeads, function( index, trHead ){ - $(trHead).attr('id', 'headTableTR' + index); - }); - //å–得浮动div - var $divOverlay = $('div#divOverlay'); - var divScrollHead = $('div.dataTables_scrollHead'); - var divRightPadding = $('div#divRightPadding'); - //å–表头下边沿ä½ç½® - var tableHeadBottomHeight = $(divScrollHead).position().top + $(divScrollHead).height(); - var tableBottom = $tableData.position().top + $tableData.height(); - //å–表格å³è¾¹æ²¿ä½ç½® - var tableRightEdgePosition = $(divRightPadding).position().left; - var trs = $tableData.find('tr').get(); - $.each( trs, function( index, tr ){ - var tdEmpty = $('td.dataTables_empty',tr); - if(!tdEmpty || tdEmpty.length ==0 ){ - $(tr).attr('id', 'bodyTableTR' + index); - //$divOverlay.attr('id_tr', 'bodyTableTR' + index); - $(tr).one('hover', function(){ - var rowPos = $(tr).position(); - var currentTrTop = rowPos.top; - //var bottomLeft = rowPos.left; - $divOverlay.attr('id_tr', 'bodyTableTR' + index); - $divOverlay.css({ - display: 'block', - position: 'absolute', - 'background-color': '#e5e5e5', - //opacity: 0.7, - border: 'solid 0px', - top: currentTrTop + 6, - left: tableRightEdgePosition - 308, - width: 300, - height: 30 - }); - //防止浮动框跳出表格内容区域 - if( $divOverlay.position().top < tableHeadBottomHeight || $divOverlay.position().top + $divOverlay.height() > tableBottom){ - $divOverlay.css('display', 'none'); - } - var buttonConfirm = $('div#buttonConfirm', $divOverlay); - var buttonUnConfirm = $('div#buttonUnConfirm', $divOverlay); - $(buttonConfirm).one('click', function(){ - var buttonRoundedTDsConfirm = $(buttonConfirm).find('td.buttonRounded'); - var buttonRoundedTDsUnConfirm = $(buttonUnConfirm).find('td.buttonRoundedDisabled'); - if(buttonRoundedTDsConfirm && buttonRoundedTDsConfirm.length > 0){ - $.each(buttonRoundedTDsConfirm, function(index, td){ - $(td).removeClass('buttonRounded').addClass('buttonRoundedDisabled'); - }); - $.each(buttonRoundedTDsUnConfirm, function(index, td){ - $(td).removeClass('buttonRoundedDisabled').addClass('buttonRounded'); - }); - $divOverlay.css('display', 'none'); - singleAlarmAckUnAck($divOverlay, 1); - } - }); - $(buttonUnConfirm).one('click', function(){ - var buttonRoundedTDsUnConfirm = $(buttonUnConfirm).find('td.buttonRounded'); - var buttonRoundedTDsConfirm = $(buttonConfirm).find('td.buttonRoundedDisabled'); - if(buttonRoundedTDsUnConfirm && buttonRoundedTDsUnConfirm.length > 0){ - $.each(buttonRoundedTDsUnConfirm, function(index, td){ - $(td).removeClass('buttonRounded').addClass('buttonRoundedDisabled'); - }); - $.each(buttonRoundedTDsConfirm, function(index, td){ - $(td).removeClass('buttonRoundedDisabled').addClass('buttonRounded'); - }); - $divOverlay.css('display', 'none'); - singleAlarmAckUnAck($divOverlay, 2); - } - }); - var buttonDelete = $('div#buttonDelete', $divOverlay); - $(buttonDelete).die().live('click', function(){ - //弹出删除确认对è¯æ¡† - $('div#myModal').modal({ - keyboard: false, - backdrop: 'static' - }); - $('#delConfirm').die().live('click', function(){ - $divOverlay.css('display', 'none'); - dataTable.fnClose(tr); - $(tr).remove(); - //删除表头表格的相应行 - $('tr#' + $(tr).attr('id').replace('body', 'head'), $tableHead).remove(); - //删除åŽç«¯æ•°æ® - singleAlarmDel($divOverlay); - //刷新表格 - dataTable.fnAdjustColumnSizing(); - }); - }); - //展开行的情况éšè— - $('td.details > table.detailTable').on('hover', function(){ - $divOverlay.css('display', 'none'); - }); - }); - } - }); - } - - return { - - //main function to initiate the module - init: function (options, columnsDefined, xsHiddenColumnsDefined, smHiddenColumnsDefined) { - - if (!$().dataTable) { - return; - } - - var the = this; - - //记录需è¦ç¦æŽ‰é»˜è®¤æŽ’åºçš„列 - var aTargets = []; - var targetsLength = columnsDefined.length; - if(rowCheckable)targetsLength++; - if(openRowFlag)targetsLength++; - for(var i=0;i<'col-md-4 col-sm-12'<'table-group-actions pull-right'>>r><'table-scrollable't><'row'<'col-md-8 col-sm-12'pli><'col-md-4 col-sm-12'>r>>", // datatable layout - - "aoColumnDefs" : [{ // define columns sorting options(by default all columns are sortable extept the first checkbox column) - 'bSortable' : false, - 'aTargets' : aTargets - }], - - "bAutoWidth": false, // disable fixed width and enable fluid table - //"bSortCellsTop": true, // make sortable only the first row in thead - "sPaginationType": "bootstrap_extended", // pagination type(bootstrap, bootstrap_full_number or bootstrap_extended) - "bProcessing": true, // enable/disable display message box on record load - "bServerSide": true, // enable/disable server side ajax loading - "sAjaxSource": "", // define ajax source URL - //"sServerMethod": "GET", - - // handle ajax request - "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) { - //for ICT Paging - //var startIndex = aoData[3].value;//"iDisplayStart" - //var pageLength = aoData[4].value;//"iDisplayLength" - var oPaging = oSettings.oInstance.fnPagingInfo(); - //var startIndex = oPaging.iStart; - var pageLength = oPaging.iLength; - var curPageNo = oPaging.iPage + 1; - - for(var k=aoData.length-1;k>=0;k--){ - var flag = -1; - if(aoData[k].name=='pageSize'){ - aoData[k].value=pageLength; - flag++; - } - if(aoData[k].name=='pageNo'){ - aoData[k].value=curPageNo; - flag++ - } - if(flag == 1)break; - } - - oSettings.jqXHR = $.ajax( { - "dataType": 'json', - "type": "GET", - "url": sSource, - "data": aoData, - "success": function(res, textStatus, jqXHR) { - if (res.sMessage) { - openoFrameWork.alert({type: (res.sStatus == 'OK' ? 'success' : 'danger'), icon: (res.sStatus == 'OK' ? 'check' : 'warning'), message: res.sMessage, container: tableWrapper, place: 'prepend'}); - } - if ($('.group-checkable', tableContainer).size() === 1) { - $('.group-checkable', tableContainer).attr("checked", false); - $.uniform.update($('.group-checkable', tableContainer)); - } - if (tableOptions.onSuccess) { - tableOptions.onSuccess.call(the); - } - //ä¿å­˜æ•°æ®åœ¨dataTable对象中给行详细信æ¯é¢æ¿ç”¨ - dataTable.datas = res.response.data; - if(res.response.status < 0){ - alert(res.response.data); - return; - } - - //å‘Šè­¦å­—æ®µå€¼è½¬æ¢ - res = AlarmLabels.transformFieldNames(res); - - res = jsonObjectToArray(res, columns, oSettings.iDraw); - - //é‡ç»˜è¡¨æ ¼ - fnCallback(res, textStatus, jqXHR); - }, - "error": function() { - if (tableOptions.onError) { - tableOptions.onError.call(the); - } - openoFrameWork.alert({type: 'danger', icon: 'warning', message: tableOptions.dataTable.oLanguage.sAjaxRequestGeneralError, container: tableWrapper, place: 'prepend'}); - $('.dataTables_processing', tableWrapper).remove(); - } - } ); - - }, - - // pass additional parameter - "fnServerParams": function ( aoData ) { - //here can be added an external ajax request parameters. - //for(var i in ajaxParams) { - for(var i=0; i table.dataTable', tableWrapper); - var tbodyHead = $('tbody', $tableHead); - if(tbodyHead && tbodyHead.length >0){ - $(tbodyHead).remove(); - } - - var $tableBody = $('table#datatable_ajax', tableWrapper); - var trIn = $('thead > tr:nth-child(1)', $tableHead); - var trBodyHead = $('thead > tr:nth-child(1)', $tableBody); - var tds = $(trIn).children(); - var ths = $(trBodyHead).children(); - for(var k=0;k' + tds.eq(k).html() + '
'); - } - var bodyRows = $('tbody > tr', $tableBody); - for(var i=0;i' + tds.eq(j).html() + '
'); - $(tds.eq(j)).height('0px'); - $(tds.eq(j)).css('padding-top','0px'); - $(tds.eq(j)).css('padding-bottom','0px'); - $(tds.eq(j)).css('border-top-width','0px'); - $(tds.eq(j)).css('border-bottom-width','0px'); - } - $(rowClone).height('0px'); - $tableHead.append($(rowClone).prop("outerHTML")); - } - - $('.dataTables_scrollBody').css('width','100%'); - $('.dataTables_scrollHead').css('width','98.5%'); - $('.dataTables_scrollHeadInner').css('padding-right', 0); - - //添加浮动确认å确认按钮 - if(rowOverFlag){ - addRowOverlap(); - } - - //设置表格本体高度 - $('div.dataTables_scrollBody').css('height', tableHeight); - } - } - }, options); - - tableOptions = options; - - columns = columnsDefined; - xsHiddenColumns = xsHiddenColumnsDefined; - smHiddenColumns = smHiddenColumnsDefined; - // create table's jquery object - table = $(options.src); - tableContainer = table.parents(".table-container"); - // apply the special class that used to restyle the default datatable - - $.fn.dataTableExt.oStdClasses.sWrapper = $.fn.dataTableExt.oStdClasses.sWrapper + " dataTables_extended_wrapper"; - - // initialize a datatable - dataTable = table.dataTable(options.dataTable); - - tableWrapper = table.parents('.dataTables_wrapper'); - - // modify table per page dropdown input by appliying some classes - $('.dataTables_length select', tableWrapper).addClass("form-control input-xsmall input-sm"); - - // handle group checkboxes check/uncheck - $('.group-checkable', tableContainer).change(function () { - var set = $('tbody > tr > td:nth-child(1) input[type="checkbox"]', table); - var checked = $(this).is(":checked"); - $(set).each(function () { - $(this).attr("checked", checked); - }); - $.uniform.update(set); - countSelectedRecords(); - }); - - // handle row's checkbox click - table.on('change', 'tbody > tr > td:nth-child(1) input[type="checkbox"]', function(){ - countSelectedRecords(); - }); - - //填充表头å³è¾¹ç•Œ - $('.dataTables_scrollHead').css('display','inline-block'); - //var dataTables_scrollHead_height = $('.dataTables_scrollHead').css( "height" ); - $(".dataTables_scrollHead").after("
"); - if($.browser.mozilla){ - $('#divRightPadding').css('height', '40'); - } - - //éšè—掉æŸäº›åˆ— - var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper); - var $tableBody = $('table#datatable_ajax', tableWrapper); - - for(var i=0;i tr > th#' + columns[j].columnId, $tableHead).addClass('hidden-xs'); - $('thead > tr > th#' + columns[j].columnId, $tableBody).addClass('hidden-xs'); - break; - } - } - } - - for(var i=0;i tr > th#' + columns[j].columnId, $tableHead).addClass('hidden-sm'); - $('thead > tr > th#' + columns[j].columnId, $tableBody).addClass('hidden-sm'); - break; - } - } - } - },//end init------------------------------------------------------------------------------------ - - getSelectedRowsCount: function() { - return $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).size(); - }, - - getSelectedRows: function() { - var rows = []; - $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).each(function(){ - rows.push({name: $(this).attr("name"), value: $(this).val()}); - }); - - return rows; - }, - - addAjaxParam: function(name, value) { - ajaxParams.push({"name": name, "value": value}); - }, - - clearAjaxParams: function(name, value) { - ajaxParams = []; - }, - - getDataTable: function() { - return dataTable; - }, - - getTableWrapper: function() { - return tableWrapper; - }, - - gettableContainer: function() { - return tableContainer; - }, - - getTable: function() { - return table; - }, - - setOpenRowFlag: function(openRowFlagInput) { - openRowFlag = openRowFlagInput; - }, - - setRowOverFlag: function(rowOverFlagInput) { - rowOverFlag = rowOverFlagInput; - }, - - setRowCheckable: function(rowCheckableInput) { - rowCheckable = rowCheckableInput; - }, - - setColumnsTooLong: function(columnsTooLongInput) { - columnsTooLong = columnsTooLongInput; - }, - - setSTotalRecordsSource: function(sTotalRecordsSourceInput){ - sTotalRecordsSource = sTotalRecordsSourceInput; - }, - - setTableHeight: function(tableHeightInput){ - tableHeight = tableHeightInput; - } - - }; - -}; - -var TableAjaxICT = function () { - - var initPickers = function () { - //init date pickers - $('.date-picker').datepicker({ - //rtl: App.isRTL(), - autoclose: true - }); - } - - //判断a数组是å¦åŒ…å«b数组 - function isContained(largeArray, smallArray){ - if(!(largeArray instanceof Array) || !(smallArray instanceof Array)) - return false; - if(largeArray.length < smallArray.length) - return false; - for(var i = 0; i < smallArray.length; i++){ - var flag = false; - for(j=0;j' + alarmId + ''; - sOut += '' + columns[4].columnTitle + '' + perceivedSeverity + ''; - sOut += '' + columns[9].columnTitle + '' + alarmType + ''; - sOut += '' + columns[3].columnTitle + '' + alarmRaisedTime + ''; - - sOut += '' + columns[5].columnTitle + '' + probableCauseDesc + ''; - sOut += '' + columns[15].columnTitle + '' + alarmChangedTime + ''; - sOut += '' + columns[11].columnTitle + '' + ackState + ''; - - sOut += '' + columns[12].columnTitle + '' + ackTime + ''; - sOut += '' + columns[13].columnTitle + '' + ackUserId + ''; - sOut += '' + columns[14].columnTitle + '' + ackSystemId + ''; - sOut += '' + columns[7].columnTitle + '' + neip + ''; - - sOut += '' + columns[2].columnTitle + '' + moc + ''; - sOut += '' + columns[1].columnTitle + '' + resDisplayName + ''; - - sOut += '' + columns[8].columnTitle + '' + componentname + ''; - sOut += '' + columns[16].columnTitle + '' + position1 + ''; - - sOut += '' + columns[10].columnTitle + '' + specificproblem + ''; - - sOut += '' + columns[6].columnTitle + '' + additionalText + ''; - - sOut += '' + $.i18n.prop('aos_fm_SuggestionSetting_view_DefaultSuggestionGroupTitle').replace(';', '').replace(/\"/g,'') + '' + ''; - - sOut += '' + $.i18n.prop('aos_fm_SuggestionSetting_view_SettingSuggestionGroupTitle').replace(';', '').replace(/\"/g,'') + ''; - - sOut += ''; - - /* - var systemType = 0; - var code = 0; - for (var i = 0; i < oTable.datas.length; i++) { - var temp = oTable.datas[i]; - if (temp.alarmId == oTr['alarmId'].value) { - systemType = temp.systemType; - code = temp.probableCauseCode; - } - }*/ - var data = { - "systemType" : systemType, - "code" : code - }; - var sendData = JSON.stringify(data); - $.ajax({ - "dataType" : 'json', - "type" : "GET", - "url" : "/web/rest/web/fm/Maintenance" + "?" + "data=" + sendData, - "contentType" : 'application/json; charset=utf-8', - "data" : null, - "success" : function (json) { - $('tr').find('td#defaulInfo' + id).text(json.defaulInfo); - $('tr').find('td#customInfo' + id).text(json.customInfo); - var modify = $('#customInfoModify' + id); - modify.on('click', function () { - var span = $('#modifyBtnSpan' + id); - var customInfo = $('tr').find('td#customInfo' + id); - var cancel = $('#cancelDiv' + id); - if (span['0'].className === 'fa fa-pencil-square-o') { - var value = customInfo['0'].textContent; - customInfo['0'].textContent = ''; - customInfo['0'].innerHTML = ''; - span['0'].className = 'fa fa-floppy-o'; - cancel['0'].innerHTML = ''; - $('#cancelBtn' + id).on('click', function () { - customInfo['0'].innerHTML = ''; - customInfo['0'].textContent = value; - cancel['0'].innerHTML = ''; - span['0'].className = 'fa fa-pencil-square-o'; - }); - } else { - var inputValue = $('#customInfoInput' + id)['0'].value; - customInfo['0'].innerHTML = ''; - customInfo['0'].textContent = inputValue; - span['0'].className = 'fa fa-pencil-square-o'; - cancel['0'].innerHTML = ''; - var modifyData = { - "systemType" : systemType, - "code" : code, - "defaulInfo" : json.defaulInfo, - "customInfo" : inputValue - }; - $.ajax({ - "dataType" : 'json', - "type" : "PUT", - "url" : "/web/rest/web/fm/Maintenance", - "contentType" : 'application/json; charset=utf-8', - "data" : JSON.stringify(modifyData), - "error" : function () { - alert('Modify Error!'); - } - }); - } - }); - }, - "error" : function () { - alert('Communication Error!'); - } - }); - - return sOut; - } - - var generateColumns = function(columns, openRowFlag, rowCheckable){ - var $tableData = $('table#datatable_ajax'); - var theadTR = $('thead > tr', $tableData); - if(rowCheckable){ - theadTR.append(''); - } - if(openRowFlag){ - theadTR.append('  '); - } - for(var i=0;i' + columns[i].columnTitle + ''); - } - } - - var sortHandling = function(oTable, openRowFlag, rowCheckable){ - var indexSkip = -1; - if(openRowFlag&&rowCheckable){ - indexSkip = 1; - }else if(openRowFlag&&!rowCheckable||!openRowFlag&&rowCheckable){ - indexSkip = 0; - } - var $sortOrder = 0; //排åºç±»åž‹ 1表示å‡åºï¼Œ0表示é™åº - var tableWrapper = $('div#datatable_ajax_wrapper'); - var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper); - var $tableData = $('table#datatable_ajax'); - var clearSort = function(currentTh){ - var ths = $tableHead.find('th').get(); - var tableDataHeadTHs = $tableData.find('th').get(); - $.each( ths, function( index, th ){ - if(index > indexSkip){ - if($(th).text() != currentTh.text()){ - if($(th).is('.sorting_disabled')){ - //do nothing; - }else if($(th).is('.sorting_asc')){ - $(th).removeClass('sorting_asc').addClass('sorting_disabled'); - $(tableDataHeadTHs[index]).removeClass('sorting_asc').addClass('sorting_disabled'); - }else if($(th).is('.sorting_desc')){ - $(th).removeClass('sorting_desc').addClass('sorting_disabled'); - $(tableDataHeadTHs[index]).removeClass('sorting_desc').addClass('sorting_disabled'); - } - } - } - }); - } - - $('th', $tableHead).each(function( column ) - { - if(column>indexSkip){ - //处ç†ä¸‰ç§æœ‰å¯èƒ½å­˜åœ¨çš„排åºå­—段,比较方法 - var findSortKey; - if( $(this).is('.sort-title') || $(this).is('.sorting_disabled') ) - { - findSortKey = function( $cell ) - { - var cellText = $cell.text(); - if(isNaN(cellText)){ - return $cell.text().toUpperCase(); - }else{ - return parseFloat(cellText); - } - //return $cell.text().toUpperCase(); - } - } - else if( $(this).is('.sort-date') ) - { - findSortKey = function( $cell ) - { - return Date.parse('1' + $cell.text()); - } - } - else if( $(this).is('.sort-price') ) - { - findSortKey = function( $cell ) - { - var key = parseFloat($cell.text().replace(/^[^\d.]*/, '')) - return isNaN(key) ? 0 : key; - } - } - - //æŽ’åº - if( findSortKey ) - { - $(this).click(function() - { - $sortOrder = $sortOrder == 0 ? 1 : 0; - var tableDataHeadTHs = $tableData.find('th').get(); - - if($sortOrder == 1){ - if($(this).is('.sorting_disabled')){ - $(this).removeClass('sorting_disabled').addClass('sorting_asc'); - $(tableDataHeadTHs[column]).removeClass('sorting_disabled').addClass('sorting_asc'); - }else if($(this).is('.sorting_asc')){ - $(this).removeClass('sorting_asc').addClass('sorting_desc'); - $(tableDataHeadTHs[column]).removeClass('sorting_asc').addClass('sorting_desc'); - }else if($(this).is('.sorting_desc')){ - $(this).removeClass('sorting_desc').addClass('sorting_asc'); - $(tableDataHeadTHs[column]).removeClass('sorting_desc').addClass('sorting_asc'); - } - }else{ - if($(this).is('.sorting_disabled')){ - $(this).removeClass('sorting_disabled').addClass('sorting_desc'); - $(tableDataHeadTHs[column]).removeClass('sorting_disabled').addClass('sorting_desc'); - }else if($(this).is('.sorting_asc')){ - $(this).removeClass('sorting_asc').addClass('sorting_desc'); - $(tableDataHeadTHs[column]).removeClass('sorting_asc').addClass('sorting_desc'); - }else if($(this).is('.sorting_desc')){ - $(this).removeClass('sorting_desc').addClass('sorting_asc'); - $(tableDataHeadTHs[column]).removeClass('sorting_desc').addClass('sorting_asc'); - } - } - clearSort($(this)); - - var rows = $tableData.find('tbody > tr').get(); - - $.each( rows, function( index, row ) - { - //先关掉所有行 - if ( oTable.fnIsOpen(row) ) - { - $(row).find('.row-details').click(); - } - }); - - //é‡æ–°å–得所有行,å¦åˆ™æŽ’åºåŽè¡¨æ ¼æ˜¾ç¤ºå¼‚常 - rows = $tableData.find('tbody > tr').get(); - - $.each( rows, function( index, row ) - { - row.sortKey = findSortKey($(row).children('td').eq(column)); - }); - //排åºæ–¹æ³• - rows.sort(function( a, b ) - { - if( $sortOrder == 1 ) - { - //å‡åº - if(a.sortKey < b.sortKey) return -1; - if(a.sortKey > b.sortKey) return 1; - return 0; - } - else - { - //é™åº - if(a.sortKey < b.sortKey) return 1; - if(a.sortKey > b.sortKey) return -1; - return 0; - } - }); - //排åºåŽçš„对象添加给$table - $.each( rows, function( index, row ) - { - $tableData.children('tbody').append(row); - row.sortKey = null; - }); - }); - } - } - }); - } - - var handleRecords = function(requestStr, columns, xsHiddenColumns, smHiddenColumns, oLanguage, openRowFlag, rowCheckable, rowOverFlag, requestURL, requestParameters, tableHeight, columnsTooLong, sTotalRecordsSource) { - - /* - jQuery.getJSON('/web/newict/framework/thirdparty/data-tables/app-universal-i18n-datatable-' + lang + '.json', - function(data) { - oLanguage = data; - }); - */ - grid.setOpenRowFlag(openRowFlag); - grid.setRowCheckable(rowCheckable); - grid.setRowOverFlag(rowOverFlag); - grid.setColumnsTooLong(columnsTooLong); - grid.setSTotalRecordsSource(sTotalRecordsSource); - grid.setTableHeight(tableHeight); - //å–得查询æ¡ä»¶ -// if(!requestStr || requestStr.length == 0){ -// requestStr = JSON.stringify(requestAllData); -// } - grid.clearAjaxParams(); - grid.addAjaxParam('data', requestStr); - //å–得其他å‚æ•° - for(var i=0;i table.dataTable', tableWrapper); - var ths = $tableHead.find('th').get(); - var $tableData = $('table#datatable_ajax'); - var tableDataHeadTHs = $tableData.find('th').get(); - $.each( ths, function( index, th ){ - //clear all sort direction - if($(th).is('.sorting_disabled')){ - //do nothing; - }else if($(th).is('.sorting_asc')){ - $(th).removeClass('sorting_asc').addClass('sorting_disabled'); - $(tableDataHeadTHs[index]).removeClass('sorting_asc').addClass('sorting_disabled'); - }else if($(th).is('.sorting_desc')){ - $(th).removeClass('sorting_desc').addClass('sorting_disabled'); - $(tableDataHeadTHs[index]).removeClass('sorting_desc').addClass('sorting_disabled'); - } - }); - - }, - onError: function(grid) { - // execute some code on network or other general error - }, - dataTable: { - "sDom" : "tr<'row'<'col-md-6 col-sm-12'><'col-md-6 col-sm-12'pli>>", // datatable layout - "oLanguage": oLanguage, - //"bAutoWidth": true, - "sScrollY": tableHeight, - "bScrollCollapse": true, - "sScrollX": "100%", - //"sScrollXInner": "110%", - "aLengthMenu": [ - [20, 50, 100], - [20, 50, 100] // change per page values here - ], - "iDisplayLength": 20, // default record count per page - "bServerSide": true, // server side processing - "sAjaxSource": requestURL // ajax source - } - }, columns, xsHiddenColumns, smHiddenColumns, openRowFlag, rowCheckable); - } - - /* - * Insert a 'details' column to the table - */ - var insertDetails = function (oTable, columns, rowCheckable) { - - var $tableData = $('table#datatable_ajax'); - - $tableData.on('click', ' tbody td .row-details', function () { - var nTr = $(this).parents('tr')[0]; - if (oTable.fnIsOpen(nTr)) { - /* This row is already open - close it */ - $(this).addClass("row-details-close").removeClass("row-details-open"); - oTable.fnClose(nTr); - } else { - /* Open this row */ - $(this).addClass("row-details-open").removeClass("row-details-close"); - oTable.fnOpen(nTr, fnFormatDetails(oTable, nTr, columns, rowCheckable), 'details'); - } - }); - } - - return { - - //main function to initiate the module - init: function (requestStr, lang, configPathPrefix) { - - var oLanguage; - var columns; - var xsHiddenColumns; - var smHiddenColumns; - var columnsAll; - - var openRowFlag = false; - var rowOverFlag = false; - var rowCheckable = false; - var requestURL=""; - var requestAllData; - var requestParameters; - - var tableHeight; - var tableWidth; - - var columnsTooLong; - var sTotalRecordsSource=""; - - //å–得当å‰é…ç½®åŠå›½é™…åŒ–ä¿¡æ¯ - $.ajax({ - dataType: 'json', - url: configPathPrefix + '-' + lang + '.json', - async: false, - contentType:'application/json; charset=utf-8', - "success": function(data) { - oLanguage = data.language; - columns = data.columns; - xsHiddenColumns = data.xsHiddenColumns; - smHiddenColumns = data.smHiddenColumns; - columnsAll = data.columnsAll; - openRowFlag = data.openRowFlag == 'true'? true: false; - rowOverFlag = data.rowOverFlag == 'true'? true: false; - rowCheckable = data.rowCheckable == 'true'? true: false; - requestURL = data.requestURL; - //requestAllData = data.requestAllData; - requestParameters = data.requestParameters; - tableHeight = data.tableHeight; - tableWidth = data.tableWidth; - columnsTooLong = data.columnsTooLong; - sTotalRecordsSource = data.sTotalRecordsSource; - }, - "error" : function (xhr, info) { - alert('Communication Error! Error reason:' + info); - } - }); - - $('#dataTableWrapperDiv').css('width', tableWidth); - - if(!isContained(xsHiddenColumns, smHiddenColumns) || !isContained(columns, xsHiddenColumns) || !isContained(columnsAll, columns)){ - alert('Columns claim error: (smHiddenColumns <= xsHiddenColumns <= columns <= columnsAll) Please!'); - return; - } - - generateColumns(columns, openRowFlag, rowCheckable); - //initPickers(); - handleRecords(requestStr, columns, xsHiddenColumns, smHiddenColumns, oLanguage, openRowFlag, rowCheckable, rowOverFlag, requestURL, requestParameters, tableHeight, columnsTooLong, sTotalRecordsSource); - //获得åˆå§‹åŒ–完毕的DataTable对象 - var oTable = grid.getDataTable(); - if(openRowFlag){ - insertDetails(oTable, columnsAll, rowCheckable); - } - sortHandling(oTable, openRowFlag, rowCheckable); - //oTable.fnAdjustColumnSizing(true); - return oTable; - } - - }; - -}(); - -var DataTableSmartClient = function(datas, configPathPrefix){ - - var requestStr = ""; - if(datas){ - requestStr = JSON.stringify(datas); - } - - var lang = getLanguage(); - //lang = 'en-US'; - loadi18n_FM(lang); - //requestStr = ""; - var oTable = TableAjaxICT.init(requestStr, lang, configPathPrefix); - - //é‡æ–°è°ƒèŠ‚列宽以适应window resize - $(window).one('resize', function () { - //oTable.DataTable.models.oSettings.bAjaxDataGet = false; - oTable.fnAdjustColumnSizing(false); - } ); -} diff --git a/common/src/main/webapp/thirdparty/data-tables/DataTableSmartClientApp.js b/common/src/main/webapp/thirdparty/data-tables/DataTableSmartClientApp.js deleted file mode 100755 index 8584aae3..00000000 --- a/common/src/main/webapp/thirdparty/data-tables/DataTableSmartClientApp.js +++ /dev/null @@ -1,1312 +0,0 @@ -/*** - Wrapper/Helper Class for datagrid based on jQuery Datatable Plugin - ***/ -var DatatableICT = function () { - - var tableOptions; // main options - var dataTable; // datatable object - var table; // actual table jquery object - var tableContainer; // actual table container object - var tableWrapper; // actual table wrapper jquery object - var tableInitialized = false; - var ajaxParams = []; // set filter mode - var columns; - var xsHiddenColumns; - var smHiddenColumns; - var columnMaxLength = 30; - var columnsTooLong; - var hidden_xs_maxWidth = 768; - var hidden_sm_maxWidth = 991; - - var openRowFlag = false; - var rowOverFlag = false; - var rowCheckable = false; - - var aTargetsAll; - var sTotalRecordsSource; - var tableHeight; - - var callbackList = []; - - var includedInXsHiddenColumns = function(columnId){ - for(var i=0;i tr > td:nth-child(1) input[type="checkbox"]:checked', table).size(); - var text = tableOptions.dataTable.oLanguage.sGroupActions; - if (selected > 0) { - $('.table-group-actions > span', tableWrapper).text(text.replace("_TOTAL_", selected)); - } else { - $('.table-group-actions > span', tableWrapper).text(""); - } - } - - var jsonObjectToArray = function(json, columns, iDraw){ - var jsonToDatatable = {aaData:[], sEcho:iDraw, iTotalRecords:0, iTotalDisplayRecords:0 }; - for(var i=0; i"); - } - if(openRowFlag){ - jsonToDatatable.aaData[i].push(""); - } - for(var j=0; j= hidden_xs_maxWidth && $(window).width() < hidden_sm_maxWidth && includedInSmHiddenColumns(columns[j].columnId )){ - /*éšè—pad尺寸需è¦éšè—的列*/ - }else if($(window).width() < hidden_xs_maxWidth && includedInXsHiddenColumns(columns[j].columnId )){ - /*éšè—手机尺寸需è¦éšè—的列*/ - }else{ - var currentColumnId = columns[j].columnId; - if(jQuery.inArray(currentColumnId, columnsTooLong) > -1){ - var rawText = ""; - for(var k=0;k columnMaxLength){ - jsonToDatatable.aaData[i].push(rawText.slice(0, columnMaxLength) + '...'); - }else{ - jsonToDatatable.aaData[i].push(resRowObject[currentColumnId]); - } - } else { - jsonToDatatable.aaData[i].push(resRowObject[currentColumnId]); - } - - } - } - } - jsonToDatatable.sEcho++; - var totalRow = 0; - var totalRecordsSource = eval('json.' + sTotalRecordsSource); - if(totalRecordsSource && totalRecordsSource.length >0){ - totalRow = parseInt(totalRecordsSource); - } - if(isNaN(totalRow)){ - alert('All rows counting number got fail!'); - }else{ - jsonToDatatable.iTotalRecords = totalRow; - jsonToDatatable.iTotalDisplayRecords = totalRow; - } - return jsonToDatatable; - } - - var singleAlarmDel = function(divOverlay){ - - //æ ¹æ®æµ®åŠ¨æ¡†çš„当å‰id获å–需è¦åˆ é™¤çš„è¡Œ - var trId = divOverlay.attr('id_tr'); - tr=$('tr#' + trId); - var tds = $(tr).children(); - var tdAlarmId = ""; - if(rowCheckable){ - tdAlarmId = $(tds.eq(2)).text(); - }else{ - tdAlarmId = $(tds.eq(1)).text(); - } - - var data= { - "alarmId":[parseInt(tdAlarmId)] - }; - - var sSource = "/web/rest/web/fm/curalarms?data=" + JSON.stringify(data) + "&_operationType=remove&_dataSource=isc_PageRestDataSource_0&isc_metaDataPrefix=_&isc_dataFormat=json"; - - $.ajax( { - "dataType": 'json', - "type": "DELETE", - "url": sSource, - "data" : null, - "contentType" : 'application/json; charset=utf-8', - "success": function(json) { - if(json.response.status == 0){ - var resRowObject = json.response.data[0]; - //alert('删除æˆåŠŸ'); - } - if(json.response.status == -1){ - //alert('删除失败'); - } - }, - "error": function() { - alert('Communication Error!'); - } - } ); - } - - var singleAlarmAckUnAck = function(divOverlay, ackType){ - - //æ ¹æ®æµ®åŠ¨æ¡†çš„当å‰id获å–需è¦ç¡®è®¤çš„è¡Œ - var trId = divOverlay.attr('id_tr'); - var tr = $('tr#' + trId); - - //å–å¾—éšè—的头部表格的相应行 - var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable'); - //var trHead = $('tbody > tr:nth-child(' + trId + ')', $tableHead); - var trHead = $('tr#' + trId.replace('body', 'head'), $tableHead); - var tdDivs = $('td > div', trHead); - - var tds = $(tr).children(); - var tdAlarmId = ""; - if(rowCheckable){ - tdAlarmId = $(tds.eq(2)).text(); - }else{ - tdAlarmId = $(tds.eq(1)).text(); - } - - var aoData = - { - "dataSource":"isc_PageRestDataSource_0", - "operationType":"update", - "componentId":"isc_com_zte_ums_aos_fm_view_eventview_table_AlarmTable_0", - "data":{ - "viewType":1, - "state":ackType, - "alarmId":[ - parseInt(tdAlarmId) - ] - }, - "oldValues":null - }; - - var sSource = "/web/rest/web/fm/curalarms?isc_dataFormat=json"; - - $.ajax( { - "dataType": 'json', - "type": "PUT", - "url": sSource, - "contentType": 'application/json; charset=utf-8', - "data": JSON.stringify(aoData), - "success": function(json) { - /*for(var i=0;i0){ - json = callbackList[i](json); - break; - } - }*/ - //json = AlarmLabels.transformFieldNames(json); - if(callbackList[1]){ - json = callbackList[1](json); - } - if(json.response.status == 0){ - var resRowObject = json.response.data[0]; - var columnsCopy = $.extend(true, [], columns); - //éšè—列的情况下需è¦ç‰¹æ®Šå¤„ç† - if($(window).width()>=hidden_xs_maxWidth && $(window).width() -1) { - var rawText = ""; - for(var k=0;k columnMaxLength){ - $(tds.eq(i)).html(rawText.slice(0, columnMaxLength) + '...'); - $(tdDivs.eq(i)).html(rawText.slice(0, columnMaxLength) + '...'); - }else{ - $(tds.eq(i)).html(resRowObject[currentColumnId]); - $(tdDivs.eq(i)).html(resRowObject[currentColumnId]); - } - } else { - $(tds.eq(i)).html(resRowObject[currentColumnId]); - $(tdDivs.eq(i)).html(resRowObject[currentColumnId]); - } - } - //更新缓存中的当å‰è¡Œæ•°æ® - for (var t = 0; t < dataTable.datas.length; t++) { - var temp = dataTable.datas[t]; - if (temp.alarmId == resRowObject['alarmId']) { - dataTable.datas[t] = resRowObject; - break; - } - } - } - if(json.response.status == -1){ - $('div#myModalConfirm').modal({ - keyboard: false, - backdrop: 'static' - }); - $('span#alarm_number').html(tdAlarmId); - //å›½é™…åŒ–ä¿¡æ¯ - if(ackType==1){ - $('span#aos_fm_alarm_opeater_ack_already').html($.i18n.prop('aos_fm_alarm_opeater_ack_already_ok')); - }else{ - $('span#aos_fm_alarm_opeater_ack_already').html($.i18n.prop('aos_fm_alarm_opeater_ack_already_un')); - } - } - //å¡«å……å•å…ƒæ ¼é¢œè‰² - var divColor = $("div.cellBackgroundColor", tr); - $(divColor).parent().css("background", $(divColor).css("background-color")); - }, - "error": function() { - alert('Communication Error!'); - } - } ); - } - - var addRowOverlap = function(){ - var $tableData = $('table#datatable_ajax'); - //å–å¾—éšè—的头部表格的相应行 - var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable'); - var trHeads = $tableHead.find('tr').get(); - $.each( trHeads, function( index, trHead ){ - $(trHead).attr('id', 'headTableTR' + index); - }); - //å–得浮动div - var $divOverlay = $('div#divOverlay'); - var divScrollHead = $('div.dataTables_scrollHead'); - var divRightPadding = $('div#divRightPadding'); - //å–表头下边沿ä½ç½® - var tableHeadBottomHeight = $(divScrollHead).position().top + $(divScrollHead).height(); - var tableBottom = $tableData.position().top + $tableData.height() + 3; - //å–表格å³è¾¹æ²¿ä½ç½® - var tableRightEdgePosition = $(divRightPadding).position().left; - var trs = $tableData.find('tr').get(); - $.each( trs, function( index, tr ){ - var tdEmpty = $('td.dataTables_empty',tr); - if(!tdEmpty || tdEmpty.length ==0 ){ - $(tr).attr('id', 'bodyTableTR' + index); - //$divOverlay.attr('id_tr', 'bodyTableTR' + index); - $(tr).one('hover', function(){ - var rowPos = $(tr).position(); - var currentTrTop = rowPos.top; - //var bottomLeft = rowPos.left; - $divOverlay.attr('id_tr', 'bodyTableTR' + index); - $divOverlay.css({ - display: 'block', - position: 'absolute', - 'background-color': '#e5e5e5', - //opacity: 0.7, - border: 'solid 0px', - top: currentTrTop + 6, - left: tableRightEdgePosition - 308, - width: 300, - height: 30 - }); - //防止浮动框跳出表格内容区域 - if( $divOverlay.position().top < tableHeadBottomHeight || $divOverlay.position().top + $divOverlay.height() > tableBottom){ - $divOverlay.css('display', 'none'); - } - var buttonConfirm = $('div#buttonConfirm', $divOverlay); - var buttonUnConfirm = $('div#buttonUnConfirm', $divOverlay); - //åˆå§‹åŒ–悬浮按钮当å‰è¡Œçš„确认åç¡®è®¤çŠ¶æ€ - if($(tr).find('span.alarmAck') && $(tr).find('span.alarmAck').length >0){ - var spanAck = $(tr).find('span.alarmAck'); - var ackState = $(spanAck).attr('ack_id'); - var buttonTDsConfirm = $(buttonConfirm).find('td'); - var buttonTDsUnConfirm = $(buttonUnConfirm).find('td'); - if(ackState=="2"){ - if(buttonTDsConfirm && buttonTDsConfirm.length > 0 && buttonTDsUnConfirm && buttonTDsUnConfirm.length > 0){ - $.each(buttonTDsConfirm, function(index, td){ - $(td).removeClass('buttonRoundedDisabled').addClass('buttonRounded'); - }); - $.each(buttonTDsUnConfirm, function(index, td){ - $(td).removeClass('buttonRounded').addClass('buttonRoundedDisabled'); - }); - } - }else{ - if(buttonTDsConfirm && buttonTDsConfirm.length > 0 && buttonTDsUnConfirm && buttonTDsUnConfirm.length > 0){ - $.each(buttonTDsConfirm, function(index, td){ - $(td).removeClass('buttonRounded').addClass('buttonRoundedDisabled'); - }); - $.each(buttonTDsUnConfirm, function(index, td){ - $(td).removeClass('buttonRoundedDisabled').addClass('buttonRounded'); - }); - } - } - } - //添加确认å确认点击事件 - $(buttonConfirm).one('click', function(){ - var buttonRoundedTDsConfirm = $(buttonConfirm).find('td.buttonRounded'); - var buttonRoundedTDsUnConfirm = $(buttonUnConfirm).find('td.buttonRoundedDisabled'); - if(buttonRoundedTDsConfirm && buttonRoundedTDsConfirm.length > 0){ - $.each(buttonRoundedTDsConfirm, function(index, td){ - $(td).removeClass('buttonRounded').addClass('buttonRoundedDisabled'); - }); - $.each(buttonRoundedTDsUnConfirm, function(index, td){ - $(td).removeClass('buttonRoundedDisabled').addClass('buttonRounded'); - }); - $divOverlay.css('display', 'none'); - singleAlarmAckUnAck($divOverlay, 1); - } - }); - $(buttonUnConfirm).one('click', function(){ - var buttonRoundedTDsUnConfirm = $(buttonUnConfirm).find('td.buttonRounded'); - var buttonRoundedTDsConfirm = $(buttonConfirm).find('td.buttonRoundedDisabled'); - if(buttonRoundedTDsUnConfirm && buttonRoundedTDsUnConfirm.length > 0){ - $.each(buttonRoundedTDsUnConfirm, function(index, td){ - $(td).removeClass('buttonRounded').addClass('buttonRoundedDisabled'); - }); - $.each(buttonRoundedTDsConfirm, function(index, td){ - $(td).removeClass('buttonRoundedDisabled').addClass('buttonRounded'); - }); - $divOverlay.css('display', 'none'); - singleAlarmAckUnAck($divOverlay, 2); - } - }); - var buttonDelete = $('div#buttonDelete', $divOverlay); - $(buttonDelete).die().live('click', function(){ - $divOverlay.css('display', 'none'); - var trIdToDelete = $divOverlay.attr('id_tr'); - var toDeleteTr=$('tr#' + trIdToDelete); - $("td", toDeleteTr).addClass('dataTableTdSelected'); - //弹出删除确认对è¯æ¡† - $('div#myModal').modal({ - keyboard: false, - backdrop: 'static' - }); - $('#delConfirm').die().live('click', function(){ - //$divOverlay.css('display', 'none'); - dataTable.fnClose(tr); - //删除åŽç«¯æ•°æ® - singleAlarmDel($divOverlay); - //删除当å‰è¡Œ - $(tr).remove(); - //删除表头表格的相应行 - $('tr#' + $(tr).attr('id').replace('body', 'head'), $tableHead).remove(); - //刷新表格 - //dataTable.fnAdjustColumnSizing(); - }); - $('#myModal').on('hidden.bs.modal', function (e) { - $("td", toDeleteTr).removeClass('dataTableTdSelected'); - }) - }); - //展开行的情况éšè— - $('td.details > table.detailTable').on('hover', function(){ - $divOverlay.css('display', 'none'); - }); - $('div#myModal').on('hover', function(){ - $divOverlay.css('display', 'none'); - }); - }); - } - }); - } - - return { - - //main function to initiate the module - init: function (options, columnsDefined, xsHiddenColumnsDefined, smHiddenColumnsDefined) { - - if (!$().dataTable) { - return; - } - - var the = this; - - //记录需è¦ç¦æŽ‰é»˜è®¤æŽ’åºçš„列 - var aTargets = []; - var targetsLength = columnsDefined.length; - if(rowCheckable)targetsLength++; - if(openRowFlag)targetsLength++; - for(var i=0;i<'col-md-4 col-sm-12'<'table-group-actions pull-right'>>r><'table-scrollable't><'row'<'col-md-8 col-sm-12'pli><'col-md-4 col-sm-12'>r>>", // datatable layout - - "aoColumnDefs" : [{ // define columns sorting options(by default all columns are sortable extept the first checkbox column) - 'bSortable' : false, - 'aTargets' : aTargets - }], - - "bAutoWidth": false, // disable fixed width and enable fluid table - //"bSortCellsTop": true, // make sortable only the first row in thead - "sPaginationType": "bootstrap_extended", // pagination type(bootstrap, bootstrap_full_number or bootstrap_extended) - "bProcessing": true, // enable/disable display message box on record load - "bServerSide": true, // enable/disable server side ajax loading - "sAjaxSource": "", // define ajax source URL - //"sServerMethod": "GET", - - // handle ajax request - "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) { - //for ICT Paging - //var startIndex = aoData[3].value;//"iDisplayStart" - //var pageLength = aoData[4].value;//"iDisplayLength" - var oPaging = oSettings.oInstance.fnPagingInfo(); - //var startIndex = oPaging.iStart; - var pageLength = oPaging.iLength; - var curPageNo = oPaging.iPage + 1; - - for(var k=aoData.length-1;k>=0;k--){ - var flag = -1; - if(aoData[k].name=='pageSize'){ - aoData[k].value=pageLength; - flag++; - } - if(aoData[k].name=='pageNo'){ - aoData[k].value=curPageNo; - flag++ - } - if(flag == 1)break; - } - - oSettings.jqXHR = $.ajax( { - "dataType": 'json', - "type": "GET", - "url": sSource, - "data": aoData, - "success": function(res, textStatus, jqXHR) { - if (res.sMessage) { - openoFrameWork.alert({type: (res.sStatus == 'OK' ? 'success' : 'danger'), icon: (res.sStatus == 'OK' ? 'check' : 'warning'), message: res.sMessage, container: tableWrapper, place: 'prepend'}); - } - if ($('.group-checkable', tableContainer).size() === 1) { - $('.group-checkable', tableContainer).attr("checked", false); - $.uniform.update($('.group-checkable', tableContainer)); - } - if (tableOptions.onSuccess) { - tableOptions.onSuccess.call(the); - } - //ä¿å­˜æ•°æ®åœ¨dataTable对象中给行详细信æ¯é¢æ¿ç”¨ - dataTable.datas = res.response.data; - if(res.response.status < 0){ - alert(res.response.data); - return; - } - - //å‘Šè­¦å­—æ®µå€¼è½¬æ¢ - //res = AlarmLabels.transformFieldNames(res); - /*for(var i=0;i0){ - res = callbackList[i](res); - break; - } - }*/ - if(callbackList[1]){ - res = callbackList[1](res); - } - - res = jsonObjectToArray(res, columns, oSettings.iDraw); - - //é‡ç»˜è¡¨æ ¼ - fnCallback(res, textStatus, jqXHR); - }, - "error": function() { - if (tableOptions.onError) { - tableOptions.onError.call(the); - } - openoFrameWork.alert({type: 'danger', icon: 'warning', message: tableOptions.dataTable.oLanguage.sAjaxRequestGeneralError, container: tableWrapper, place: 'prepend'}); - $('.dataTables_processing', tableWrapper).remove(); - } - } ); - - }, - - // pass additional parameter - "fnServerParams": function ( aoData ) { - //here can be added an external ajax request parameters. - //for(var i in ajaxParams) { - for(var i=0; i table.dataTable', tableWrapper); - var tbodyHead = $('tbody', $tableHead); - if(tbodyHead && tbodyHead.length >0){ - $(tbodyHead).remove(); - } - - var $tableBody = $('table#datatable_ajax', tableWrapper); - var trIn = $('thead > tr:nth-child(1)', $tableHead); - var trBodyHead = $('thead > tr:nth-child(1)', $tableBody); - var tds = $(trIn).children(); - var ths = $(trBodyHead).children(); - for(var k=0;k' + tds.eq(k).html() + ''); - } - var bodyRows = $('tbody > tr', $tableBody); - for(var i=0;i' + tds.eq(j).html() + ''); - $(tds.eq(j)).height('0px'); - $(tds.eq(j)).css('padding-top','0px'); - $(tds.eq(j)).css('padding-bottom','0px'); - $(tds.eq(j)).css('border-top-width','0px'); - $(tds.eq(j)).css('border-bottom-width','0px'); - } - $(rowClone).height('0px'); - $tableHead.append($(rowClone).prop("outerHTML")); - } - - $('.dataTables_scrollBody').css('width','100%'); - $('.dataTables_scrollHead').css('width','98.5%'); - $('.dataTables_scrollHeadInner').css('padding-right', 0); - - //添加浮动确认å确认按钮 - if(rowOverFlag){ - addRowOverlap(); - } - - //å¡«å……å•å…ƒæ ¼é¢œè‰² - var divColors = $("div.cellBackgroundColor", $tableBody); - $.each( divColors, function( index, divColor ){ - $(divColor).parent().css("background", $(divColor).css("background-color")); - }); - - //设置表格本体高度 - $('div.dataTables_scrollBody').css('height', tableHeight); - } - } - }, options); - - tableOptions = options; - - columns = columnsDefined; - xsHiddenColumns = xsHiddenColumnsDefined; - smHiddenColumns = smHiddenColumnsDefined; - // create table's jquery object - table = $(options.src); - tableContainer = table.parents(".table-container"); - // apply the special class that used to restyle the default datatable - - $.fn.dataTableExt.oStdClasses.sWrapper = $.fn.dataTableExt.oStdClasses.sWrapper + " dataTables_extended_wrapper"; - - // initialize a datatable - dataTable = table.dataTable(options.dataTable); - - tableWrapper = table.parents('.dataTables_wrapper'); - - // modify table per page dropdown input by appliying some classes - $('.dataTables_length select', tableWrapper).addClass("form-control input-xsmall input-sm"); - - // handle group checkboxes check/uncheck - $('.group-checkable', tableContainer).change(function () { - var set = $('tbody > tr > td:nth-child(1) input[type="checkbox"]', table); - var checked = $(this).is(":checked"); - $(set).each(function () { - $(this).attr("checked", checked); - }); - $.uniform.update(set); - countSelectedRecords(); - }); - - // handle row's checkbox click - table.on('change', 'tbody > tr > td:nth-child(1) input[type="checkbox"]', function(){ - countSelectedRecords(); - }); - - //填充表头å³è¾¹ç•Œ - $('.dataTables_scrollHead').css('display','inline-block'); - //var dataTables_scrollHead_height = $('.dataTables_scrollHead').css( "height" ); - $(".dataTables_scrollHead").after("
"); - if($.browser.mozilla){ - $('#divRightPadding').css('height', '40'); - } - - //éšè—掉æŸäº›åˆ— - var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper); - var $tableBody = $('table#datatable_ajax', tableWrapper); - - for(var i=0;i tr > th#' + columns[j].columnId, $tableHead).addClass('hidden-xs'); - $('thead > tr > th#' + columns[j].columnId, $tableBody).addClass('hidden-xs'); - break; - } - } - } - - for(var i=0;i tr > th#' + columns[j].columnId, $tableHead).addClass('hidden-sm'); - $('thead > tr > th#' + columns[j].columnId, $tableBody).addClass('hidden-sm'); - break; - } - } - } - },//end init------------------------------------------------------------------------------------ - - getSelectedRowsCount: function() { - return $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).size(); - }, - - getSelectedRows: function() { - var rows = []; - $('tbody > tr > td:nth-child(1) input[type="checkbox"]:checked', table).each(function(){ - rows.push({name: $(this).attr("name"), value: $(this).val()}); - }); - - return rows; - }, - - addAjaxParam: function(name, value) { - ajaxParams.push({"name": name, "value": value}); - }, - - clearAjaxParams: function(name, value) { - ajaxParams = []; - }, - - getDataTable: function() { - return dataTable; - }, - - getTableWrapper: function() { - return tableWrapper; - }, - - gettableContainer: function() { - return tableContainer; - }, - - getTable: function() { - return table; - }, - - setOpenRowFlag: function(openRowFlagInput) { - openRowFlag = openRowFlagInput; - }, - - setRowOverFlag: function(rowOverFlagInput) { - rowOverFlag = rowOverFlagInput; - }, - - setRowCheckable: function(rowCheckableInput) { - rowCheckable = rowCheckableInput; - }, - - setColumnsTooLong: function(columnsTooLongInput) { - columnsTooLong = columnsTooLongInput; - }, - - setSTotalRecordsSource: function(sTotalRecordsSourceInput){ - sTotalRecordsSource = sTotalRecordsSourceInput; - }, - - setTableHeight: function(tableHeightInput){ - tableHeight = tableHeightInput; - }, - - setCallbackList: function(list){ - if($.isArray(list)){ - callbackList = list; - } - } - - }; - -}; - -var TableAjaxICT = function () { - - var initPickers = function () { - //init date pickers - $('.date-picker').datepicker({ - //rtl: App.isRTL(), - autoclose: true - }); - } - - //判断a数组是å¦åŒ…å«b数组 - function isContained(largeArray, smallArray){ - if(!(largeArray instanceof Array) || !(smallArray instanceof Array)) - return false; - if(largeArray.length < smallArray.length) - return false; - for(var i = 0; i < smallArray.length; i++){ - var flag = false; - for(j=0;j 0){ - detailTableId = "alarmDetailInfo" + detailTables.length; - } - var sOut = ''; - sOut += ''; - sOut += ''; - sOut += ''; - sOut += ''; - - sOut += ''; - sOut += ''; - sOut += ''; - - sOut += ''; - sOut += ''; - sOut += ''; - sOut += ''; - - sOut += ''; - sOut += ''; - - sOut += ''; - sOut += ''; - - sOut += ''; - - sOut += ''; - - sOut += ''; - - sOut += ''; - - sOut += '
' + columns[0].columnTitle + '' + alarmId + '' + columns[4].columnTitle + '' + perceivedSeverity + '' + columns[9].columnTitle + '' + alarmType + '' + columns[3].columnTitle + '' + alarmRaisedTime + '
' + columns[5].columnTitle + '' + probableCauseDesc + '' + columns[15].columnTitle + '' + alarmChangedTime + '' + columns[11].columnTitle + '' + ackState + '
' + columns[12].columnTitle + '' + ackTime + '' + columns[13].columnTitle + '' + ackUserId + '' + columns[14].columnTitle + '' + ackSystemId + '' + columns[7].columnTitle + '' + neip + '
' + columns[2].columnTitle + '' + moc + '' + columns[1].columnTitle + '' + resDisplayName + '
' + columns[8].columnTitle + '' + componentname + '' + columns[16].columnTitle + '' + position1 + '
' + columns[10].columnTitle + '' + specificproblem + '
' + columns[6].columnTitle + '' + additionalText + '
' + $.i18n.prop('aos_fm_SuggestionSetting_view_DefaultSuggestionGroupTitle').replace(';', '').replace(/\"/g,'') + '' + '
' + $.i18n.prop('aos_fm_SuggestionSetting_view_SettingSuggestionGroupTitle').replace(';', '').replace(/\"/g,'') + '
'; - - /* - var systemType = 0; - var code = 0; - for (var i = 0; i < oTable.datas.length; i++) { - var temp = oTable.datas[i]; - if (temp.alarmId == oTr['alarmId'].value) { - systemType = temp.systemType; - code = temp.probableCauseCode; - } - }*/ - var data = { - "systemType" : systemType, - "code" : code - }; - var sendData = JSON.stringify(data); - $.ajax({ - "dataType" : 'json', - "type" : "GET", - "url" : "/web/rest/web/fm/Maintenance" + "?" + "data=" + sendData, - "contentType" : 'application/json; charset=utf-8', - "data" : null, - "success" : function (json) { - $('tr').find('td#defaulInfo' + id).text(json.defaulInfo); - $('tr').find('td#customInfo' + id).text(json.customInfo); - var modify = $('#customInfoModify' + id); - modify.on('click', function () { - var span = $('#modifyBtnSpan' + id); - var customInfo = $('tr').find('td#customInfo' + id); - var cancel = $('#cancelDiv' + id); - if (span['0'].className === 'fa fa-pencil-square-o') { - var value = customInfo['0'].textContent; - customInfo['0'].textContent = ''; - customInfo['0'].innerHTML = ''; - span['0'].className = 'fa fa-floppy-o'; - cancel['0'].innerHTML = ''; - $('#cancelBtn' + id).on('click', function () { - customInfo['0'].innerHTML = ''; - customInfo['0'].textContent = value; - cancel['0'].innerHTML = ''; - span['0'].className = 'fa fa-pencil-square-o'; - }); - } else { - var inputValue = $('#customInfoInput' + id)['0'].value; - customInfo['0'].innerHTML = ''; - customInfo['0'].textContent = inputValue; - span['0'].className = 'fa fa-pencil-square-o'; - cancel['0'].innerHTML = ''; - var modifyData = { - "systemType" : systemType, - "code" : code, - "defaulInfo" : json.defaulInfo, - "customInfo" : inputValue - }; - $.ajax({ - "dataType" : 'json', - "type" : "PUT", - "url" : "/web/rest/web/fm/Maintenance", - "contentType" : 'application/json; charset=utf-8', - "data" : JSON.stringify(modifyData), - "error" : function () { - alert('Modify Error!'); - } - }); - } - }); - }, - "error" : function () { - alert('Communication Error!'); - } - }); - - return sOut; - } - - var generateColumns = function(columns, openRowFlag, rowCheckable){ - var $tableData = $('table#datatable_ajax'); - var theadTR = $('thead > tr', $tableData); - if(rowCheckable){ - theadTR.append(''); - } - if(openRowFlag){ - theadTR.append('  '); - } - for(var i=0;i' + columns[i].columnTitle + ''); - } - } - - var sortHandling = function(oTable, openRowFlag, rowCheckable){ - var indexSkip = -1; - if(openRowFlag&&rowCheckable){ - indexSkip = 1; - }else if(openRowFlag&&!rowCheckable||!openRowFlag&&rowCheckable){ - indexSkip = 0; - } - var $sortOrder = 0; //排åºç±»åž‹ 1表示å‡åºï¼Œ0表示é™åº - var tableWrapper = $('div#datatable_ajax_wrapper'); - var $tableHead = $('div.dataTables_scrollHeadInner > table.dataTable', tableWrapper); - var $tableData = $('table#datatable_ajax'); - var clearSort = function(currentTh){ - var ths = $tableHead.find('th').get(); - var tableDataHeadTHs = $tableData.find('th').get(); - $.each( ths, function( index, th ){ - if(index > indexSkip){ - if($(th).text() != currentTh.text()){ - if($(th).is('.sorting_disabled')){ - //do nothing; - }else if($(th).is('.sorting_asc')){ - $(th).removeClass('sorting_asc').addClass('sorting_disabled'); - $(tableDataHeadTHs[index]).removeClass('sorting_asc').addClass('sorting_disabled'); - }else if($(th).is('.sorting_desc')){ - $(th).removeClass('sorting_desc').addClass('sorting_disabled'); - $(tableDataHeadTHs[index]).removeClass('sorting_desc').addClass('sorting_disabled'); - } - } - } - }); - } - - $('th', $tableHead).each(function( column ) - { - if(column>indexSkip){ - //处ç†ä¸‰ç§æœ‰å¯èƒ½å­˜åœ¨çš„排åºå­—段,比较方法 - var findSortKey; - if( $(this).is('.sort-title') || $(this).is('.sorting_disabled') ) - { - findSortKey = function( $cell ) - { - var cellText = $cell.text(); - if(isNaN(cellText)){ - return $cell.text().toUpperCase(); - }else{ - return parseFloat(cellText); - } - //return $cell.text().toUpperCase(); - } - } - else if( $(this).is('.sort-date') ) - { - findSortKey = function( $cell ) - { - return Date.parse('1' + $cell.text()); - } - } - else if( $(this).is('.sort-price') ) - { - findSortKey = function( $cell ) - { - var key = parseFloat($cell.text().replace(/^[^\d.]*/, '')) - return isNaN(key) ? 0 : key; - } - } - - //æŽ’åº - if( findSortKey ) - { - $(this).click(function() - { - $sortOrder = $sortOrder == 0 ? 1 : 0; - var tableDataHeadTHs = $tableData.find('th').get(); - - if($sortOrder == 1){ - if($(this).is('.sorting_disabled')){ - $(this).removeClass('sorting_disabled').addClass('sorting_asc'); - $(tableDataHeadTHs[column]).removeClass('sorting_disabled').addClass('sorting_asc'); - }else if($(this).is('.sorting_asc')){ - $(this).removeClass('sorting_asc').addClass('sorting_desc'); - $(tableDataHeadTHs[column]).removeClass('sorting_asc').addClass('sorting_desc'); - }else if($(this).is('.sorting_desc')){ - $(this).removeClass('sorting_desc').addClass('sorting_asc'); - $(tableDataHeadTHs[column]).removeClass('sorting_desc').addClass('sorting_asc'); - } - }else{ - if($(this).is('.sorting_disabled')){ - $(this).removeClass('sorting_disabled').addClass('sorting_desc'); - $(tableDataHeadTHs[column]).removeClass('sorting_disabled').addClass('sorting_desc'); - }else if($(this).is('.sorting_asc')){ - $(this).removeClass('sorting_asc').addClass('sorting_desc'); - $(tableDataHeadTHs[column]).removeClass('sorting_asc').addClass('sorting_desc'); - }else if($(this).is('.sorting_desc')){ - $(this).removeClass('sorting_desc').addClass('sorting_asc'); - $(tableDataHeadTHs[column]).removeClass('sorting_desc').addClass('sorting_asc'); - } - } - clearSort($(this)); - - var rows = $tableData.find('tbody > tr').get(); - - $.each( rows, function( index, row ) - { - //先关掉所有行 - if ( oTable.fnIsOpen(row) ) - { - $(row).find('.row-details').click(); - } - }); - - //é‡æ–°å–得所有行,å¦åˆ™æŽ’åºåŽè¡¨æ ¼æ˜¾ç¤ºå¼‚常 - rows = $tableData.find('tbody > tr').get(); - - $.each( rows, function( index, row ) - { - row.sortKey = findSortKey($(row).children('td').eq(column)); - }); - //排åºæ–¹æ³• - rows.sort(function( a, b ) - { - if( $sortOrder == 1 ) - { - //å‡åº - if(a.sortKey < b.sortKey) return -1; - if(a.sortKey > b.sortKey) return 1; - return 0; - } - else - { - //é™åº - if(a.sortKey < b.sortKey) return 1; - if(a.sortKey > b.sortKey) return -1; - return 0; - } - }); - //排åºåŽçš„对象添加给$table - $.each( rows, function( index, row ) - { - $tableData.children('tbody').append(row); - row.sortKey = null; - }); - }); - } - } - }); - } - - var handleRecords = function(requestStr, columns, xsHiddenColumns, smHiddenColumns, oLanguage, openRowFlag, rowCheckable, rowOverFlag, requestURL, requestParameters, tableHeight, columnsTooLong, sTotalRecordsSource, callbackList) { - - /* - jQuery.getJSON('/web/newict/framework/thirdparty/data-tables/app-universal-i18n-datatable-' + lang + '.json', - function(data) { - oLanguage = data; - }); - */ - grid.setCallbackList(callbackList); - grid.setOpenRowFlag(openRowFlag); - grid.setRowCheckable(rowCheckable); - grid.setRowOverFlag(rowOverFlag); - grid.setColumnsTooLong(columnsTooLong); - grid.setSTotalRecordsSource(sTotalRecordsSource); - grid.setTableHeight(tableHeight); - //å–得查询æ¡ä»¶ -// if(!requestStr || requestStr.length == 0){ -// requestStr = JSON.stringify(requestAllData); -// } - grid.clearAjaxParams(); - grid.addAjaxParam('data', requestStr); - //å–得其他å‚æ•° - for(var i=0;i table.dataTable', tableWrapper); - var ths = $tableHead.find('th').get(); - var $tableData = $('table#datatable_ajax'); - var tableDataHeadTHs = $tableData.find('th').get(); - $.each( ths, function( index, th ){ - //clear all sort direction - if($(th).is('.sorting_disabled')){ - //do nothing; - }else if($(th).is('.sorting_asc')){ - $(th).removeClass('sorting_asc').addClass('sorting_disabled'); - $(tableDataHeadTHs[index]).removeClass('sorting_asc').addClass('sorting_disabled'); - }else if($(th).is('.sorting_desc')){ - $(th).removeClass('sorting_desc').addClass('sorting_disabled'); - $(tableDataHeadTHs[index]).removeClass('sorting_desc').addClass('sorting_disabled'); - } - }); - - }, - onError: function(grid) { - // execute some code on network or other general error - }, - dataTable: { - "sDom" : "tr<'row'<'col-md-6 col-sm-12'><'col-md-6 col-sm-12'pli>>", // datatable layout - "oLanguage": oLanguage, - //"bAutoWidth": true, - "sScrollY": tableHeight, - "bScrollCollapse": true, - "sScrollX": "100%", - //"sScrollXInner": "110%", - "aLengthMenu": [ - [20, 50, 100], - [20, 50, 100] // change per page values here - ], - "iDisplayLength": 20, // default record count per page - "bServerSide": true, // server side processing - "sAjaxSource": requestURL // ajax source - } - }, columns, xsHiddenColumns, smHiddenColumns, openRowFlag, rowCheckable); - } - - /* - * Insert a 'details' column to the table - */ - var insertDetails = function (oTable, columns, rowCheckable) { - - var $tableData = $('table#datatable_ajax'); - - $tableData.on('click', ' tbody td .row-details', function () { - var nTr = $(this).parents('tr')[0]; - if (oTable.fnIsOpen(nTr)) { - /* This row is already open - close it */ - $(this).addClass("row-details-close").removeClass("row-details-open"); - oTable.fnClose(nTr); - } else { - /* Open this row */ - $(this).addClass("row-details-open").removeClass("row-details-close"); - oTable.fnOpen(nTr, fnFormatDetails(oTable, nTr, columns, rowCheckable), 'details'); - //å¡«å……å•å…ƒæ ¼é¢œè‰² - var divColor = $("div.cellBackgroundColor", $("table#" + detailTableId)); - $(divColor).parent().css("background", $(divColor).css("background-color")); - } - }); - } - - return { - - //main function to initiate the module - init: function (requestStr, lang, configPathPrefix, callbackList) { - - var oLanguage; - var columns; - var xsHiddenColumns; - var smHiddenColumns; - var columnsAll; - - var openRowFlag = false; - var rowOverFlag = false; - var rowCheckable = false; - var requestURL=""; - var requestAllData; - var requestParameters; - - var tableHeight; - var tableWidth; - - var columnsTooLong; - var sTotalRecordsSource=""; - - //å–得当å‰é…ç½®åŠå›½é™…åŒ–ä¿¡æ¯ - $.ajax({ - dataType: 'json', - url: configPathPrefix + '-' + lang + '.json', - async: false, - contentType:'application/json; charset=utf-8', - "success": function(data) { - oLanguage = data.language; - columns = data.columns; - xsHiddenColumns = data.xsHiddenColumns; - smHiddenColumns = data.smHiddenColumns; - columnsAll = data.columnsAll; - openRowFlag = data.openRowFlag == 'true'? true: false; - rowOverFlag = data.rowOverFlag == 'true'? true: false; - rowCheckable = data.rowCheckable == 'true'? true: false; - requestURL = data.requestURL; - //requestAllData = data.requestAllData; - requestParameters = data.requestParameters; - tableHeight = data.tableHeight; - tableWidth = data.tableWidth; - columnsTooLong = data.columnsTooLong; - sTotalRecordsSource = data.sTotalRecordsSource; - }, - "error" : function (xhr, info) { - alert('Communication Error! Error reason:' + info); - } - }); - - $('#dataTableWrapperDiv').css('width', tableWidth); - - if(!isContained(xsHiddenColumns, smHiddenColumns) || !isContained(columns, xsHiddenColumns) || !isContained(columnsAll, columns)){ - alert('Columns claim error: (smHiddenColumns <= xsHiddenColumns <= columns <= columnsAll) Please!'); - return; - } - - generateColumns(columns, openRowFlag, rowCheckable); - //initPickers(); - handleRecords(requestStr, columns, xsHiddenColumns, smHiddenColumns, oLanguage, openRowFlag, rowCheckable, rowOverFlag, requestURL, requestParameters, tableHeight, columnsTooLong, sTotalRecordsSource, callbackList); - //获得åˆå§‹åŒ–完毕的DataTable对象 - var oTable = grid.getDataTable(); - if(openRowFlag){ - insertDetails(oTable, columnsAll, rowCheckable); - } - sortHandling(oTable, openRowFlag, rowCheckable); - //oTable.fnAdjustColumnSizing(true); - return oTable; - } - - }; - -}(); - -var DataTableSmartClientApp = function(datas, configPathPrefix, callbackList){ - - var requestStr = ""; - if(datas){ - requestStr = JSON.stringify(datas); - } - - var lang = getLanguage(); - //lang = 'en-US'; - /*for(var i=0;i0){ - callbackList[i](lang); - break; - } - }*/ - if(callbackList && callbackList[0]){ - callbackList[0](lang); - } - //requestStr = ""; - var oTable = TableAjaxICT.init(requestStr, lang, configPathPrefix, callbackList); - - //é‡æ–°è°ƒèŠ‚列宽以适应window resize - $(window).one('resize', function () { - //oTable.DataTable.models.oSettings.bAjaxDataGet = false; - oTable.fnAdjustColumnSizing(false); - } ); -} 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 deleted file mode 100755 index fa209022..00000000 --- a/common/src/main/webapp/thirdparty/data-tables/app-test-i18n-datatable-zh-CN.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "language":{ - "sProcessing": "  å¤„ç†ä¸­...", - "sLengthMenu": "|æ¯é¡µ _MENU_ æ¡ç»“æžœ", - "sZeroRecords": "没有匹é…结果", - "sInfo": "|总共找到 _TOTAL_ æ¡ç»“æžœ", - "sInfoEmpty": "å…± 0 项", - "sGroupActions": "_TOTAL_ æ¡ç»“果被选择: ", - "sAjaxRequestGeneralError": "ä¸èƒ½å®Œæˆè¯·æ±‚,请检查您的网络连接情况。", - "sEmptyTable": "表中数æ®ä¸ºç©º", - "oPaginate": { - "sPrevious": "å‰é¡µ", - "sNext": "下页", - "sPage": "第", - "sPageOf": "页,总页数:" - } - }, - "columnsAll":[ - {"columnId":"0", "columnTitle":"开始时间"}, - {"columnId":"1", "columnTitle":"结æŸæ—¶é—´"}, - {"columnId":"2", "columnTitle":"查询粒度"}, - {"columnId":"3", "columnTitle":"网元ä½ç½®"}, - {"columnId":"4", "columnTitle":"CPU使用率(百分比)"} - ], - "columns":[ - {"columnId":"0", "columnTitle":"开始时间"}, - {"columnId":"1", "columnTitle":"结æŸæ—¶é—´"}, - {"columnId":"2", "columnTitle":"查询粒度"}, - {"columnId":"3", "columnTitle":"网元ä½ç½®"}, - {"columnId":"4", "columnTitle":"CPU使用率(百分比)"} - ], - "xsHiddenColumns":[ - ], - "smHiddenColumns":[ - ], - "columnsTooLong":["3"], - - "rowCheckable": "true", - "openRowFlag" : "false", - "rowOverFlag" : "false", - - "tableHeight":"250px", - "tableWidth":"100%", - - "requestType": "POST", - "requestURL": "/web/rest/web-pm/queryPmPageData", - "requestParameters":[ - ], - "sTotalRecordsSource":"response.extData", - "sTotalRecords":"108" -} \ No newline at end of file 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 deleted file mode 100755 index 809daa32..00000000 --- a/common/src/main/webapp/thirdparty/data-tables/app-universal-i18n-datatable-en-US.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "language":{ - "sProcessing": "  Loading...", - "sLengthMenu": "|View _MENU_ records", - "sInfo": "|Found total _TOTAL_ records", - "sInfoEmpty": "No records found to show", - "sGroupActions": "_TOTAL_ records selected: ", - "sAjaxRequestGeneralError": "Could not complete request. Please check your internet connection", - "sEmptyTable": "No data available in table", - "sZeroRecords": "No matching records found", - "oPaginate": { - "sPrevious": "Prev", - "sNext": "Next", - "sPage": "Page", - "sPageOf": "of" - } - }, - "columnsAll":[ - {"columnId":"alarmId", "columnTitle":"Alarm Id"}, - {"columnId":"resDisplayName", "columnTitle":"NE"}, - {"columnId":"moc", "columnTitle":"NE Type"}, - {"columnId":"alarmRaisedTime", "columnTitle":"Raised Time"}, - {"columnId":"perceivedSeverity", "columnTitle":"Severity"}, - {"columnId":"probableCauseDesc", "columnTitle":"Alarm Code"}, - {"columnId":"additionalText", "columnTitle":"Appendix Text"}, - {"columnId":"neip", "columnTitle":"NE IP"}, - {"columnId":"componentname", "columnTitle":"Location"}, - {"columnId":"alarmType", "columnTitle":"Alarm Type"}, - {"columnId":"specificproblem", "columnTitle":"Specific Problem"}, - {"columnId":"ackState", "columnTitle":"Acknowledged State"}, - {"columnId":"ackTime", "columnTitle":"Acknowledge Time"}, - {"columnId":"ackUserId", "columnTitle":"Acknowledge User"}, - {"columnId":"ackSystemId", "columnTitle":"Acknowledge System"}, - {"columnId":"alarmChangedTime", "columnTitle":"Changed Time"}, - {"columnId":"position1", "columnTitle":"Resource ID"} - ], - "columns":[ - {"columnId":"alarmId", "columnTitle":"Alarm Id"}, - {"columnId":"resDisplayName", "columnTitle":"NE"}, - {"columnId":"moc", "columnTitle":"NE Type"}, - {"columnId":"alarmRaisedTime", "columnTitle":"Raised Time"}, - {"columnId":"perceivedSeverity", "columnTitle":"Severity"}, - {"columnId":"probableCauseDesc", "columnTitle":"Alarm Code"}, - {"columnId":"additionalText", "columnTitle":"Appendix Text"}, - {"columnId":"neip", "columnTitle":"NE IP"}, - {"columnId":"componentname", "columnTitle":"Location"}, - {"columnId":"alarmType", "columnTitle":"Alarm Type"}, - {"columnId":"specificproblem", "columnTitle":"Specific Problem"}, - {"columnId":"ackState", "columnTitle":"Acknowledged State"}, - {"columnId":"ackTime", "columnTitle":"Acknowledge Time"}, - {"columnId":"ackUserId", "columnTitle":"Acknowledge User"}, - {"columnId":"ackSystemId", "columnTitle":"Acknowledge System"}, - {"columnId":"alarmChangedTime", "columnTitle":"Changed Time"}, - {"columnId":"position1", "columnTitle":"Resource ID"} - ], - "xsHiddenColumns":[ - {"columnId":"additionalText", "columnTitle":"Appendix Text"}, - {"columnId":"neip", "columnTitle":"NE IP"}, - {"columnId":"componentname", "columnTitle":"Location"}, - {"columnId":"position1", "columnTitle":"Resource ID"} - ], - "smHiddenColumns":[ - {"columnId":"position1", "columnTitle":"Resource ID"} - ], - "columnsTooLong":["additionalText", "moc", "componentname", "specificproblem", "position1"], - "sTotalRecordsSource":"response.extData", - - "rowCheckable": "true", - "openRowFlag" : "true", - "rowOverFlag" : "true", - - "tableHeight":"520px", - "tableWidth":"100%", - - "requestURL": "/web/rest/web/fm/curalarms", - "requestParameters":[ - {"paraId":"pageSize", "paraValue":"20"}, - {"paraId":"pageNo", "paraValue":"1"}, - {"paraId":"_operationType", "paraValue":"fetch"}, - {"paraId":"_startRow", "paraValue":"0"}, - {"paraId":"_endRow", "paraValue":"75"}, - {"paraId":"_textMatchStyle", "paraValue":"exact"}, - {"paraId":"_componentId", "paraValue":"isc_com_zte_ums_aos_fm_view_eventview_table_AlarmTable_0"}, - {"paraId":"_dataSource", "paraValue":"isc_PageRestDataSource_0"}, - {"paraId":"isc_metaDataPrefix", "paraValue":"_"}, - {"paraId":"isc_dataFormat", "paraValue":"json"} - ], - "sTotalRecordsSource":"response.extData" -} \ No newline at end of file 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 deleted file mode 100755 index 8a270a43..00000000 --- a/common/src/main/webapp/thirdparty/data-tables/app-universal-i18n-datatable-zh-CN.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "language":{ - "sProcessing": "  å¤„ç†ä¸­...", - "sLengthMenu": "|æ¯é¡µ _MENU_ æ¡ç»“æžœ", - "sZeroRecords": "没有匹é…结果", - "sInfo": "|总共找到 _TOTAL_ æ¡ç»“æžœ", - "sInfoEmpty": "å…± 0 项", - "sGroupActions": "_TOTAL_ æ¡ç»“果被选择: ", - "sAjaxRequestGeneralError": "ä¸èƒ½å®Œæˆè¯·æ±‚,请检查您的网络连接情况。", - "sEmptyTable": "表中数æ®ä¸ºç©º", - "oPaginate": { - "sPrevious": "å‰é¡µ", - "sNext": "下页", - "sPage": "第", - "sPageOf": "页,总页数:" - } - }, - "columnsAll":[ - {"columnId":"alarmId", "columnTitle":"告警编å·"}, - {"columnId":"resDisplayName", "columnTitle":"网元"}, - {"columnId":"moc", "columnTitle":"网元类型"}, - {"columnId":"alarmRaisedTime", "columnTitle":"å‘生时间"}, - {"columnId":"perceivedSeverity", "columnTitle":"级别"}, - {"columnId":"probableCauseDesc", "columnTitle":"å‘Šè­¦ç "}, - {"columnId":"additionalText", "columnTitle":"附加文本"}, - {"columnId":"neip", "columnTitle":"网元IP"}, - {"columnId":"componentname", "columnTitle":"网元内定ä½"}, - {"columnId":"alarmType", "columnTitle":"告警类型"}, - {"columnId":"specificproblem", "columnTitle":"告警原因"}, - {"columnId":"ackState", "columnTitle":"确认状æ€"}, - {"columnId":"ackTime", "columnTitle":"确认时间"}, - {"columnId":"ackUserId", "columnTitle":"确认用户"}, - {"columnId":"ackSystemId", "columnTitle":"确认系统"}, - {"columnId":"alarmChangedTime", "columnTitle":"修改时间"}, - {"columnId":"position1", "columnTitle":"资æºID"} - ], - "columns":[ - {"columnId":"alarmId", "columnTitle":"告警编å·"}, - {"columnId":"resDisplayName", "columnTitle":"网元"}, - {"columnId":"moc", "columnTitle":"网元类型"}, - {"columnId":"alarmRaisedTime", "columnTitle":"å‘生时间"}, - {"columnId":"perceivedSeverity", "columnTitle":"级别"}, - {"columnId":"probableCauseDesc", "columnTitle":"å‘Šè­¦ç "}, - {"columnId":"additionalText", "columnTitle":"附加文本"}, - {"columnId":"neip", "columnTitle":"网元IP"}, - {"columnId":"componentname", "columnTitle":"网元内定ä½"}, - {"columnId":"alarmType", "columnTitle":"告警类型"}, - {"columnId":"specificproblem", "columnTitle":"告警原因"}, - {"columnId":"ackState", "columnTitle":"确认状æ€"}, - {"columnId":"ackTime", "columnTitle":"确认时间"}, - {"columnId":"ackUserId", "columnTitle":"确认用户"}, - {"columnId":"ackSystemId", "columnTitle":"确认系统"}, - {"columnId":"alarmChangedTime", "columnTitle":"修改时间"}, - {"columnId":"position1", "columnTitle":"资æºID"} - ], - "xsHiddenColumns":[ - {"columnId":"additionalText", "columnTitle":"附加文本"}, - {"columnId":"neip", "columnTitle":"网元IP"}, - {"columnId":"componentname", "columnTitle":"网元内定ä½"}, - {"columnId":"position1", "columnTitle":"资æºID"} - ], - "smHiddenColumns":[ - {"columnId":"position1", "columnTitle":"资æºID"} - ], - "columnsTooLong":["additionalText", "moc", "componentname", "specificproblem", "position1"], - - "rowCheckable": "true", - "openRowFlag" : "true", - "rowOverFlag" : "true", - - "tableHeight":"520px", - "tableWidth":"100%", - - "requestURL": "/web/rest/web/fm/curalarms", - "requestAllData": {"rule":{"ruleId":-1,"name":"当å‰å‘Šè­¦","creator":"admin","createTime":1397439767310,"modifier":"","modifyTime":0,"description":"","state":true,"ruleType":1,"ruleSort":1,"owner":"","attrs":"","ruleData":""}}, - "requestParameters":[ - {"paraId":"pageSize", "paraValue":"20"}, - {"paraId":"pageNo", "paraValue":"1"}, - {"paraId":"_operationType", "paraValue":"fetch"}, - {"paraId":"_startRow", "paraValue":"0"}, - {"paraId":"_endRow", "paraValue":"75"}, - {"paraId":"_textMatchStyle", "paraValue":"exact"}, - {"paraId":"_componentId", "paraValue":"isc_com_zte_ums_aos_fm_view_eventview_table_AlarmTable_0"}, - {"paraId":"_dataSource", "paraValue":"isc_PageRestDataSource_0"}, - {"paraId":"isc_metaDataPrefix", "paraValue":"_"}, - {"paraId":"isc_dataFormat", "paraValue":"json"} - ], - "sTotalRecordsSource":"response.extData" -} - diff --git a/common/src/main/webapp/thirdparty/data-tables/dataTable.html b/common/src/main/webapp/thirdparty/data-tables/dataTable.html deleted file mode 100755 index afae5e3c..00000000 --- a/common/src/main/webapp/thirdparty/data-tables/dataTable.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - -
-
-
-
-
- - - - - - -
- - - - - -
-
-
- -
-
- - - - - - - - - - diff --git a/common/src/main/webapp/thirdparty/data-tables/dataTables.bootstrap.css b/common/src/main/webapp/thirdparty/data-tables/dataTables.bootstrap.css deleted file mode 100755 index ada85f7a..00000000 --- a/common/src/main/webapp/thirdparty/data-tables/dataTables.bootstrap.css +++ /dev/null @@ -1,331 +0,0 @@ -div.dataTables_length label { - font-weight: normal; - text-align: left; - white-space: nowrap; -} - -div.dataTables_length select { - height: 28px; - display: inline-block; -} - -div.dataTables_filter { - text-align: right; -} - -div.dataTables_filter label { - font-weight: normal; - white-space: nowrap; - text-align: left; -} - -div.dataTables_filter input { - margin-left: 0.5em; - display: inline-block; -} - -div.dataTables_info { - padding-top: 8px; - white-space: nowrap; -} - -div.dataTables_paginate { - margin: 0; - white-space: nowrap; - text-align: right; -} - -div.dataTables_paginate ul.pagination { - margin: 2px 0; - white-space: nowrap; -} - -@media screen and (max-width: 767px) { - div.dataTables_length, - div.dataTables_filter, - div.dataTables_info, - div.dataTables_paginate { - text-align: center; - } -} - - -table.dataTable td, -table.dataTable th { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - - -table.dataTable { - clear: both; - margin-top: 6px !important; - margin-bottom: 6px !important; - max-width: none !important; -} - -table.dataTable thead .sorting, -table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting_asc_disabled, -table.dataTable thead .sorting_desc_disabled { - cursor: pointer; -} - -table.dataTable thead .sorting { background: url('../images/sort_both.png') no-repeat center right; } -table.dataTable thead .sorting_asc { background: url('../images/sort_asc.png') no-repeat center right; } -table.dataTable thead .sorting_desc { background: url('../images/sort_desc.png') no-repeat center right; } - -table.dataTable thead .sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; } -table.dataTable thead .sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; } - -table.dataTable thead > tr > th { - padding-left: 18px; - padding-right: 18px; -} - -table.dataTable th:active { - outline: none; -} - -/* Scrolling */ -div.dataTables_scrollHead table { - margin-bottom: 0 !important; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -div.dataTables_scrollHead table thead tr:last-child th:first-child, -div.dataTables_scrollHead table thead tr:last-child td:first-child { - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -div.dataTables_scrollBody table { - border-top: none; - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -div.dataTables_scrollBody tbody tr:first-child th, -div.dataTables_scrollBody tbody tr:first-child td { - border-top: none; -} - -div.dataTables_scrollFoot table { - margin-top: 0 !important; - border-top: none; -} - -/* Frustratingly the border-collapse:collapse used by Bootstrap makes the column - width calculations when using scrolling impossible to align columns. We have - to use separate - */ -table.table-bordered.dataTable { - border-collapse: separate !important; -} -table.table-bordered thead th, -table.table-bordered thead td { - border-left-width: 0; - border-top-width: 0; -} -table.table-bordered tbody th, -table.table-bordered tbody td { - border-left-width: 0; - border-bottom-width: 0; -} -table.table-bordered th:last-child, -table.table-bordered td:last-child { - border-right-width: 0; -} -div.dataTables_scrollHead table.table-bordered { - border-bottom-width: 0; -} - - - - -/* - * TableTools styles - */ -.table.dataTable tbody tr.active td, -.table.dataTable tbody tr.active th { - background-color: #08C; - color: white; -} - -.table.dataTable tbody tr.active:hover td, -.table.dataTable tbody tr.active:hover th { - background-color: #0075b0 !important; -} - -.table.dataTable tbody tr.active th > a, -.table.dataTable tbody tr.active td > a { - color: white; -} - -.table-striped.dataTable tbody tr.active:nth-child(odd) td, -.table-striped.dataTable tbody tr.active:nth-child(odd) th { - background-color: #017ebc; -} - -table.DTTT_selectable tbody tr { - cursor: pointer; -} - -div.DTTT .btn:hover { - text-decoration: none !important; -} - -ul.DTTT_dropdown.dropdown-menu { - z-index: 2003; -} - -ul.DTTT_dropdown.dropdown-menu a { - color: #333 !important; /* needed only when demo_page.css is included */ -} - -ul.DTTT_dropdown.dropdown-menu li { - position: relative; -} - -ul.DTTT_dropdown.dropdown-menu li:hover a { - background-color: #0088cc; - color: white !important; -} - -div.DTTT_collection_background { - z-index: 2002; -} - -/* TableTools information display */ -div.DTTT_print_info { - position: fixed; - top: 50%; - left: 50%; - width: 400px; - height: 150px; - margin-left: -200px; - margin-top: -75px; - text-align: center; - color: #333; - padding: 10px 30px; - opacity: 0.95; - - background-color: white; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - - -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); -} - -div.DTTT_print_info h6 { - font-weight: normal; - font-size: 28px; - line-height: 28px; - margin: 1em; -} - -div.DTTT_print_info p { - font-size: 14px; - line-height: 20px; -} - -div.dataTables_processing { - position: absolute; - top: 50%; - left: 50%; - width: 100%; - height: 60px; - margin-left: -50%; - margin-top: -25px; - padding-top: 20px; - padding-bottom: 20px; - text-align: center; - font-size: 1.2em; - background-color: white; - background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0))); - background: -webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); - background: -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); - background: -ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); - background: -o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); - background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%); -} - - - -/* - * FixedColumns styles - */ -div.DTFC_LeftHeadWrapper table, -div.DTFC_LeftFootWrapper table, -div.DTFC_RightHeadWrapper table, -div.DTFC_RightFootWrapper table, -table.DTFC_Cloned tr.even { - background-color: white; - margin-bottom: 0; -} - -div.DTFC_RightHeadWrapper table , -div.DTFC_LeftHeadWrapper table { - border-bottom: none !important; - margin-bottom: 0 !important; - border-top-right-radius: 0 !important; - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child, -div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child, -div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child, -div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child { - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; -} - -div.DTFC_RightBodyWrapper table, -div.DTFC_LeftBodyWrapper table { - border-top: none; - margin: 0 !important; -} - -div.DTFC_RightBodyWrapper tbody tr:first-child th, -div.DTFC_RightBodyWrapper tbody tr:first-child td, -div.DTFC_LeftBodyWrapper tbody tr:first-child th, -div.DTFC_LeftBodyWrapper tbody tr:first-child td { - border-top: none; -} - -div.DTFC_RightFootWrapper table, -div.DTFC_LeftFootWrapper table { - border-top: none; - margin-top: 0 !important; -} - - -/* - * FixedHeader styles - */ -div.FixedHeader_Cloned table { - margin: 0 !important -} - - - - -div.dataTables_length, div.dataTables_info { - display: inline; -} - -div.dataTables_paginate { - display: inline; - float: right !important; -} - -input.pagination-panel-input { - width: 50px; -} - - 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 deleted file mode 100755 index 6d614d3d..00000000 Binary files a/common/src/main/webapp/thirdparty/data-tables/images/loading-spinner-grey.gif and /dev/null 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 deleted file mode 100755 index a88d7975..00000000 Binary files a/common/src/main/webapp/thirdparty/data-tables/images/sort_asc.png and /dev/null 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 deleted file mode 100755 index 18670406..00000000 Binary files a/common/src/main/webapp/thirdparty/data-tables/images/sort_both.png and /dev/null 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 deleted file mode 100755 index def071ed..00000000 Binary files a/common/src/main/webapp/thirdparty/data-tables/images/sort_desc.png and /dev/null 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 deleted file mode 100755 index 367680da..00000000 --- a/common/src/main/webapp/thirdparty/data-tables/jquery.dataTables-1.9.4.js +++ /dev/null @@ -1,12101 +0,0 @@ -/** - * @summary DataTables - * @description Paginate, search and sort HTML tables - * @version 1.9.4 - * @file jquery.dataTables.js - * @author Allan Jardine (www.sprymedia.co.uk) - * @contact www.sprymedia.co.uk/contact - * - * @copyright Copyright 2008-2012 Allan Jardine, all rights reserved. - * - * This source file is free software, under either the GPL v2 license or a - * BSD style license, available at: - * http://datatables.net/license_gpl2 - * http://datatables.net/license_bsd - * - * This source file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. - * - * For details please refer to: http://www.datatables.net - */ - -/*jslint evil: true, undef: true, browser: true */ -/*globals $, jQuery,define,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString,_fnRender,_fnNodeToColumnIndex,_fnInfoMacros,_fnBrowserDetect,_fnGetColumns*/ - -(/** @lends */function( window, document, undefined ) { - -(function( factory ) { - "use strict"; - - // Define as an AMD module if possible - if ( typeof define === 'function' && define.amd ) - { - define( ['jquery'], factory ); - } - /* Define using browser globals otherwise - * Prevent multiple instantiations if the script is loaded twice - */ - else if ( jQuery && !jQuery.fn.dataTable ) - { - factory( jQuery ); - } -} -(/** @lends */function( $ ) { - "use strict"; - /** - * DataTables is a plug-in for the jQuery Javascript library. It is a - * highly flexible tool, based upon the foundations of progressive - * enhancement, which will add advanced interaction controls to any - * HTML table. For a full list of features please refer to - * DataTables.net. - * - * Note that the DataTable object is not a global variable but is - * aliased to jQuery.fn.DataTable and jQuery.fn.dataTable through which - * it may be accessed. - * - * @class - * @param {object} [oInit={}] Configuration object for DataTables. Options - * are defined by {@link DataTable.defaults} - * @requires jQuery 1.3+ - * - * @example - * // Basic initialisation - * $(document).ready( function { - * $('#example').dataTable(); - * } ); - * - * @example - * // Initialisation with configuration options - in this case, disable - * // pagination and sorting. - * $(document).ready( function { - * $('#example').dataTable( { - * "bPaginate": false, - * "bSort": false - * } ); - * } ); - */ - var DataTable = function( oInit ) - { - - - /** - * Add a column to the list used for the table with default values - * @param {object} oSettings dataTables settings object - * @param {node} nTh The th element for this column - * @memberof DataTable#oApi - */ - function _fnAddColumn( oSettings, nTh ) - { - var oDefaults = DataTable.defaults.columns; - var iCol = oSettings.aoColumns.length; - var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, { - "sSortingClass": oSettings.oClasses.sSortable, - "sSortingClassJUI": oSettings.oClasses.sSortJUI, - "nTh": nTh ? nTh : document.createElement('th'), - "sTitle": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '', - "aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol], - "mData": oDefaults.mData ? oDefaults.oDefaults : iCol - } ); - oSettings.aoColumns.push( oCol ); - - /* Add a column specific filter */ - if ( oSettings.aoPreSearchCols[ iCol ] === undefined || oSettings.aoPreSearchCols[ iCol ] === null ) - { - oSettings.aoPreSearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch ); - } - else - { - var oPre = oSettings.aoPreSearchCols[ iCol ]; - - /* Don't require that the user must specify bRegex, bSmart or bCaseInsensitive */ - if ( oPre.bRegex === undefined ) - { - oPre.bRegex = true; - } - - if ( oPre.bSmart === undefined ) - { - oPre.bSmart = true; - } - - if ( oPre.bCaseInsensitive === undefined ) - { - oPre.bCaseInsensitive = true; - } - } - - /* Use the column options function to initialise classes etc */ - _fnColumnOptions( oSettings, iCol, null ); - } - - - /** - * Apply options for a column - * @param {object} oSettings dataTables settings object - * @param {int} iCol column index to consider - * @param {object} oOptions object with sType, bVisible and bSearchable etc - * @memberof DataTable#oApi - */ - function _fnColumnOptions( oSettings, iCol, oOptions ) - { - var oCol = oSettings.aoColumns[ iCol ]; - - /* User specified column options */ - if ( oOptions !== undefined && oOptions !== null ) - { - /* Backwards compatibility for mDataProp */ - if ( oOptions.mDataProp && !oOptions.mData ) - { - oOptions.mData = oOptions.mDataProp; - } - - if ( oOptions.sType !== undefined ) - { - oCol.sType = oOptions.sType; - oCol._bAutoType = false; - } - - $.extend( oCol, oOptions ); - _fnMap( oCol, oOptions, "sWidth", "sWidthOrig" ); - - /* iDataSort to be applied (backwards compatibility), but aDataSort will take - * priority if defined - */ - if ( oOptions.iDataSort !== undefined ) - { - oCol.aDataSort = [ oOptions.iDataSort ]; - } - _fnMap( oCol, oOptions, "aDataSort" ); - } - - /* Cache the data get and set functions for speed */ - var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null; - var mData = _fnGetObjectDataFn( oCol.mData ); - - oCol.fnGetData = function (oData, sSpecific) { - var innerData = mData( oData, sSpecific ); - - if ( oCol.mRender && (sSpecific && sSpecific !== '') ) - { - return mRender( innerData, sSpecific, oData ); - } - return innerData; - }; - oCol.fnSetData = _fnSetObjectDataFn( oCol.mData ); - - /* Feature sorting overrides column specific when off */ - if ( !oSettings.oFeatures.bSort ) - { - oCol.bSortable = false; - } - - /* Check that the class assignment is correct for sorting */ - if ( !oCol.bSortable || - ($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1) ) - { - oCol.sSortingClass = oSettings.oClasses.sSortableNone; - oCol.sSortingClassJUI = ""; - } - else if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1 ) - { - oCol.sSortingClass = oSettings.oClasses.sSortable; - oCol.sSortingClassJUI = oSettings.oClasses.sSortJUI; - } - else if ( $.inArray('asc', oCol.asSorting) != -1 && $.inArray('desc', oCol.asSorting) == -1 ) - { - oCol.sSortingClass = oSettings.oClasses.sSortableAsc; - oCol.sSortingClassJUI = oSettings.oClasses.sSortJUIAscAllowed; - } - else if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) != -1 ) - { - oCol.sSortingClass = oSettings.oClasses.sSortableDesc; - oCol.sSortingClassJUI = oSettings.oClasses.sSortJUIDescAllowed; - } - } - - - /** - * Adjust the table column widths for new data. Note: you would probably want to - * do a redraw after calling this function! - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnAdjustColumnSizing ( oSettings ) - { - /* Not interested in doing column width calculation if auto-width is disabled */ - if ( oSettings.oFeatures.bAutoWidth === false ) - { - return false; - } - - _fnCalculateColumnWidths( oSettings ); - for ( var i=0 , iLen=oSettings.aoColumns.length ; i