Commit bc0db98ef2c031423788e1407eb1945176fe3d03

Authored by Administrator
1 parent 81e7394d

add new promocode logic

Showing 30 changed files with 7879 additions and 21 deletions   Show diff stats
src/app/backend/views/index.php
... ... @@ -35,6 +35,11 @@
35 35 <script type="text/javascript" src="/js/jquery.fileupload.js"></script>
36 36  
37 37  
  38 + <script type="text/javascript" src="/js/datetimepicker-master/build/jquery.datetimepicker.full.min.js"></script>
  39 + <script type="text/javascript" src="/js/datetimepicker-master/build/jquery.datetimepicker.min.js"></script>
  40 + <link rel="stylesheet" href="/js/datetimepicker-master/build/jquery.datetimepicker.min.css">
  41 +
  42 +
38 43  
39 44 </head>
40 45  
... ...
src/app/backend/views/promo_codes/addEdit.php
... ... @@ -34,7 +34,7 @@
34 34 <div class="label"><label for="start_date">Дата начала действия промокода (включительно)</label></div>
35 35 <div class="input">
36 36 <input required type="text" name="start_date" id="start_date"
37   - value="<?= (isset( $page['0']['start_date'] ) && !empty( $page['0']['start_date'] ) ? date('d-m-Y', strtotime($page['0']['start_date'])) : '') ?>">
  37 + value="<?= (isset( $page['0']['start_date'] ) && !empty( $page['0']['start_date'] ) ? date('d-m-Y H:i:s', strtotime($page['0']['start_date'])) : '') ?>">
38 38  
39 39 </div>
40 40 </div>
... ... @@ -43,7 +43,7 @@
43 43 <div class="label"><label for="end_date">Дата окончания действия промокода (включительно)</label></div>
44 44 <div class="input">
45 45 <input required type="text" name="end_date" id="end_date"
46   - value="<?= (isset( $page['0']['end_date'] ) && !empty( $page['0']['end_date'] ) ? date('d-m-Y', strtotime($page['0']['end_date'])) : '') ?>">
  46 + value="<?= (isset( $page['0']['end_date'] ) && !empty( $page['0']['end_date'] ) ? date('d-m-Y H:i:s' , strtotime($page['0']['end_date'])) : '') ?>">
47 47 </div>
48 48 </div>
49 49  
... ... @@ -152,15 +152,15 @@
152 152 <script>
153 153  
154 154 var datepicker = {
155   - dateFormat: "dd-mm-yy"
  155 + format: "d-m-Y H:i:s"
156 156 };
157 157 var $body = $('body');
158 158 var filter = new Filter();
159 159 var catalog = new Catalog(<?= json_encode($catalog_temp) ?>);
160 160 console.log(catalog.getCatalog());
161 161  
162   - $('#start_date').datepicker(datepicker);
163   - $('#end_date').datepicker(datepicker);
  162 + $('#start_date').datetimepicker(datepicker);
  163 + $('#end_date').datetimepicker(datepicker);
164 164  
165 165 $("form").submit(function() {
166 166 $("input").removeAttr("disabled");
... ...
src/app/frontend/controllers/AjaxController.php
... ... @@ -184,27 +184,38 @@ class AjaxController extends \controllers\ControllerBase
184 184 $promo_code = $this->models->getPromoCodes()->getOneDataByCode($promo_code);
185 185 $user = isset($this->models->getCustomers()->getOneData($this->session->get('id'))['0']) ? $this->models->getCustomers()->getOneData($this->session->get('id'))['0'] : '';
186 186  
187   - if(!empty($promo_code) && $promo_code[0]['single_use']){
188   - if( !empty($user)){
189   - if(!empty($user['email'])){
190   - $data['code'] = $promo_code[0]['code'];
191   - $data['email'] = $user['email'];
192   - $promo_code_check = $this->models->getPromoToUser()->getOneDataByCode($data);
193   - if(!empty($promo_code_check)){
194   - throw new \Exception($this->t->_('error_promo_code_already_used'));
  187 +
  188 +
  189 + if(!empty($promo_code)) {
  190 + if($promo_code[0]['start_date'] && (strtotime($promo_code[0]['start_date']) > strtotime(date("Y-m-d H:i:s")))){
  191 + throw new \Exception($this->t->_('error_promo_code_not_start'));
  192 + }
  193 +
  194 + if($promo_code[0]['end_date'] && (strtotime($promo_code[0]['end_date']) < strtotime(date("Y-m-d H:i:s")))){
  195 + throw new \Exception($this->t->_('error_promo_code_is_ended'));
  196 + }
  197 +
  198 + if($promo_code[0]['single_use']){
  199 + if( !empty($user)){
  200 + if(!empty($user['email'])){
  201 + $data['code'] = $promo_code[0]['code'];
  202 + $data['email'] = $user['email'];
  203 + $promo_code_check = $this->models->getPromoToUser()->getOneDataByCode($data);
  204 + if(!empty($promo_code_check)){
  205 + throw new \Exception($this->t->_('error_promo_code_already_used'));
  206 + }
  207 + } else {
  208 + throw new \Exception($this->t->_('error_promo_code_empty_email'));
195 209 }
196 210 } else {
197   - throw new \Exception($this->t->_('error_promo_code_empty_email'));
  211 + throw new \Exception($this->t->_('error_promo_code_empty_user'));
198 212 }
199   - } else {
200   - throw new \Exception($this->t->_('error_promo_code_empty_user'));
201   - }
202 213  
203 214  
204 215  
205   - }
  216 + }
  217 +
206 218  
207   - if(!empty($promo_code)) {
208 219 if($this->common->applyPromoCode($promo_code[0], $cart['items'])) {
209 220 $this->session->set('promo_code', $promo_code[0]);
210 221 $this->common->countOrderSum($cart);
... ...
src/app/frontend/messages/ru.php
... ... @@ -390,7 +390,9 @@ return array(
390 390 "error_promo_code_is_empty" => "Промокод не указан",
391 391 "error_promo_code_empty_user" => "Промокод требует регистрации",
392 392 "error_promo_code_empty_email" => "Промокод требует указанный Email в карточке пользователя",
393   - "error_promo_code_already_used" => "Данный промокод уже использовался этим пользователем"
  393 + "error_promo_code_already_used" => "Данный промокод уже использовался этим пользователем",
394 394 "open_video_list" => "Раскрыть список",
395 395 "close_video_list" => "Закрыть список",
  396 + "error_promo_code_is_ended" => "Действие промокода закончилось",
  397 + "error_promo_code_not_start" => "Промокод еще не активен",
396 398 );
397 399 \ No newline at end of file
... ...
src/app/frontend/messages/ua.php
... ... @@ -422,5 +422,7 @@ return array(
422 422 "error_promo_code_is_empty" => "Промокод не вказаний",
423 423 "error_promo_code_empty_user" => "Промокод потребує реєстрації",
424 424 "error_promo_code_empty_email" => "Промокод потребує вказаний Email в картці користувача",
425   - "error_promo_code_already_used" => "Даний промокод вже використовувався цим користувачем"
  425 + "error_promo_code_already_used" => "Даний промокод вже використовувався цим користувачем",
  426 + "error_promo_code_is_ended" => "Дія промокоду закінчилося",
  427 + "error_promo_code_not_start" => "Промокод ще не активний",
426 428 );
427 429 \ No newline at end of file
... ...
www-backend/js/datetimepicker-master/.gitignore 0 → 100644
  1 +parse.php
  2 +bower_components
  3 +node_modules
... ...
www-backend/js/datetimepicker-master/MIT-LICENSE.txt 0 → 100644
  1 +Copyright (c) 2013 http://xdsoft.net
  2 +
  3 +Permission is hereby granted, free of charge, to any person obtaining a copy
  4 +of this software and associated documentation files (the "Software"), to deal
  5 +in the Software without restriction, including without limitation the rights
  6 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  7 +copies of the Software, and to permit persons to whom the Software is
  8 +furnished to do so, subject to the following conditions:
  9 +
  10 +The above copyright notice and this permission notice shall be included in
  11 +all copies or substantial portions of the Software.
  12 +
  13 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  14 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  15 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  16 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  17 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  18 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  19 +THE SOFTWARE.
0 20 \ No newline at end of file
... ...
www-backend/js/datetimepicker-master/README.md 0 → 100644
  1 +# PLEASE. Help me update documentation.
  2 +[Doc.tpl](https://github.com/xdan/datetimepicker/blob/master/doc.tpl)
  3 +This file will be automatically displayed on the site
  4 +
  5 +# datetimepicker
  6 +==============
  7 +
  8 +**!!! The latest version of the options 'lang' obsolete. The language setting is now global. !!!**
  9 +
  10 +Use this:
  11 +```javascript
  12 +$.datetimepicker.setLocale('en');
  13 +```
  14 +[Documentation][doc]
  15 +
  16 +jQuery Plugin Date and Time Picker
  17 +
  18 +DateTimePicker
  19 +
  20 +![ScreenShot](https://raw.github.com/xdan/datetimepicker/master/screen/1.png)
  21 +
  22 +DatePicker
  23 +
  24 +![ScreenShot](https://raw.github.com/xdan/datetimepicker/master/screen/2.png)
  25 +
  26 +TimePicker
  27 +
  28 +![ScreenShot](https://raw.github.com/xdan/datetimepicker/master/screen/3.png)
  29 +
  30 +Options to highlight individual dates or periods
  31 +
  32 +![ScreenShot](https://raw.github.com/Mingpao/datetimepicker/master/screen/4.png)
  33 +
  34 +![ScreenShot](https://raw.github.com/Mingpao/datetimepicker/master/screen/5.png)
  35 +
  36 +![ScreenShot](https://raw.github.com/Mingpao/datetimepicker/master/screen/6.png)
  37 +
  38 +[doc]: http://xdsoft.net/jqplugins/datetimepicker/
  39 +
  40 +### JS Build help
  41 +
  42 +**Requires Node and NPM** [Download and install node.js](http://nodejs.org/download/).
  43 +
  44 +Install:
  45 +
  46 +1. Install `bower` globally with `npm install -g bower`.
  47 +2. Run `npm install`. npm will look at `package.json` and automatically install the necessary dependencies.
  48 +3. Run `bower install`, which installs front-end packages defined in `bower.json`.
  49 +
  50 +Build:
  51 +
  52 +- `npm run build`
  53 +
  54 +When build completed, you'll have the following files:
  55 +- **build/jquery.datetimepicker.full.js** - browser file
  56 +- **build/jquery.datetimepicker.full.min.js** - browser minified file
  57 +- **build/jquery.datetimepicker.min.js** - amd module style minified file
0 58 \ No newline at end of file
... ...
www-backend/js/datetimepicker-master/bower.json 0 → 100644
  1 +{
  2 + "name": "datetimepicker",
  3 + "version": "2.5.4",
  4 + "main": [
  5 + "build/jquery.datetimepicker.full.min.js",
  6 + "jquery.datetimepicker.css"
  7 + ],
  8 + "ignore": [
  9 + "**/screen",
  10 + "**/datetimepicker.jquery.json",
  11 + "**/*.png",
  12 + "**/*.txt",
  13 + "**/*.md",
  14 + "**/*.html",
  15 + "**/*.tpl",
  16 + "**/jquery.js",
  17 + "bower_components",
  18 + "node_modules"
  19 + ],
  20 + "keywords": [
  21 + "calendar",
  22 + "date",
  23 + "time",
  24 + "form",
  25 + "datetime",
  26 + "datepicker",
  27 + "timepicker",
  28 + "datetimepicker",
  29 + "validation",
  30 + "ui",
  31 + "scroller",
  32 + "picker",
  33 + "i18n",
  34 + "input",
  35 + "jquery",
  36 + "touch"
  37 + ],
  38 + "authors": [
  39 + {
  40 + "name": "Chupurnov Valeriy",
  41 + "email": "chupurnov@gmail.com",
  42 + "homepage": "http://xdsoft.net/contacts.html"
  43 + }
  44 + ],
  45 + "dependencies": {
  46 + "jquery": ">= 1.7.2",
  47 + "jquery-mousewheel": ">= 3.1.13",
  48 + "php-date-formatter": ">= 1.3.3"
  49 + },
  50 + "license": "MIT",
  51 + "homepage": "http://xdsoft.net/jqplugins/datetimepicker/",
  52 + "repository": {
  53 + "type": "git",
  54 + "url": "git://github.com:xdan/datetimepicker.git"
  55 + }
  56 +}
... ...
www-backend/js/datetimepicker-master/build/jquery.datetimepicker.full.js 0 → 100644
  1 +/*!
  2 + * @copyright Copyright &copy; Kartik Visweswaran, Krajee.com, 2014 - 2015
  3 + * @version 1.3.3
  4 + *
  5 + * Date formatter utility library that allows formatting date/time variables or Date objects using PHP DateTime format.
  6 + * @see http://php.net/manual/en/function.date.php
  7 + *
  8 + * For more JQuery plugins visit http://plugins.krajee.com
  9 + * For more Yii related demos visit http://demos.krajee.com
  10 + */
  11 +var DateFormatter;
  12 +(function () {
  13 + "use strict";
  14 +
  15 + var _compare, _lpad, _extend, defaultSettings, DAY, HOUR;
  16 + DAY = 1000 * 60 * 60 * 24;
  17 + HOUR = 3600;
  18 +
  19 + _compare = function (str1, str2) {
  20 + return typeof(str1) === 'string' && typeof(str2) === 'string' && str1.toLowerCase() === str2.toLowerCase();
  21 + };
  22 + _lpad = function (value, length, char) {
  23 + var chr = char || '0', val = value.toString();
  24 + return val.length < length ? _lpad(chr + val, length) : val;
  25 + };
  26 + _extend = function (out) {
  27 + var i, obj;
  28 + out = out || {};
  29 + for (i = 1; i < arguments.length; i++) {
  30 + obj = arguments[i];
  31 + if (!obj) {
  32 + continue;
  33 + }
  34 + for (var key in obj) {
  35 + if (obj.hasOwnProperty(key)) {
  36 + if (typeof obj[key] === 'object') {
  37 + _extend(out[key], obj[key]);
  38 + } else {
  39 + out[key] = obj[key];
  40 + }
  41 + }
  42 + }
  43 + }
  44 + return out;
  45 + };
  46 + defaultSettings = {
  47 + dateSettings: {
  48 + days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
  49 + daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
  50 + months: [
  51 + 'January', 'February', 'March', 'April', 'May', 'June', 'July',
  52 + 'August', 'September', 'October', 'November', 'December'
  53 + ],
  54 + monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
  55 + meridiem: ['AM', 'PM'],
  56 + ordinal: function (number) {
  57 + var n = number % 10, suffixes = {1: 'st', 2: 'nd', 3: 'rd'};
  58 + return Math.floor(number % 100 / 10) === 1 || !suffixes[n] ? 'th' : suffixes[n];
  59 + }
  60 + },
  61 + separators: /[ \-+\/\.T:@]/g,
  62 + validParts: /[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,
  63 + intParts: /[djwNzmnyYhHgGis]/g,
  64 + tzParts: /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
  65 + tzClip: /[^-+\dA-Z]/g
  66 + };
  67 +
  68 + DateFormatter = function (options) {
  69 + var self = this, config = _extend(defaultSettings, options);
  70 + self.dateSettings = config.dateSettings;
  71 + self.separators = config.separators;
  72 + self.validParts = config.validParts;
  73 + self.intParts = config.intParts;
  74 + self.tzParts = config.tzParts;
  75 + self.tzClip = config.tzClip;
  76 + };
  77 +
  78 + DateFormatter.prototype = {
  79 + constructor: DateFormatter,
  80 + parseDate: function (vDate, vFormat) {
  81 + var self = this, vFormatParts, vDateParts, i, vDateFlag = false, vTimeFlag = false, vDatePart, iDatePart,
  82 + vSettings = self.dateSettings, vMonth, vMeriIndex, vMeriOffset, len, mer,
  83 + out = {date: null, year: null, month: null, day: null, hour: 0, min: 0, sec: 0};
  84 + if (!vDate) {
  85 + return undefined;
  86 + }
  87 + if (vDate instanceof Date) {
  88 + return vDate;
  89 + }
  90 + if (typeof vDate === 'number') {
  91 + return new Date(vDate);
  92 + }
  93 + if (vFormat === 'U') {
  94 + i = parseInt(vDate);
  95 + return i ? new Date(i * 1000) : vDate;
  96 + }
  97 + if (typeof vDate !== 'string') {
  98 + return '';
  99 + }
  100 + vFormatParts = vFormat.match(self.validParts);
  101 + if (!vFormatParts || vFormatParts.length === 0) {
  102 + throw new Error("Invalid date format definition.");
  103 + }
  104 + vDateParts = vDate.replace(self.separators, '\0').split('\0');
  105 + for (i = 0; i < vDateParts.length; i++) {
  106 + vDatePart = vDateParts[i];
  107 + iDatePart = parseInt(vDatePart);
  108 + switch (vFormatParts[i]) {
  109 + case 'y':
  110 + case 'Y':
  111 + len = vDatePart.length;
  112 + if (len === 2) {
  113 + out.year = parseInt((iDatePart < 70 ? '20' : '19') + vDatePart);
  114 + } else if (len === 4) {
  115 + out.year = iDatePart;
  116 + }
  117 + vDateFlag = true;
  118 + break;
  119 + case 'm':
  120 + case 'n':
  121 + case 'M':
  122 + case 'F':
  123 + if (isNaN(vDatePart)) {
  124 + vMonth = vSettings.monthsShort.indexOf(vDatePart);
  125 + if (vMonth > -1) {
  126 + out.month = vMonth + 1;
  127 + }
  128 + vMonth = vSettings.months.indexOf(vDatePart);
  129 + if (vMonth > -1) {
  130 + out.month = vMonth + 1;
  131 + }
  132 + } else {
  133 + if (iDatePart >= 1 && iDatePart <= 12) {
  134 + out.month = iDatePart;
  135 + }
  136 + }
  137 + vDateFlag = true;
  138 + break;
  139 + case 'd':
  140 + case 'j':
  141 + if (iDatePart >= 1 && iDatePart <= 31) {
  142 + out.day = iDatePart;
  143 + }
  144 + vDateFlag = true;
  145 + break;
  146 + case 'g':
  147 + case 'h':
  148 + vMeriIndex = (vFormatParts.indexOf('a') > -1) ? vFormatParts.indexOf('a') :
  149 + (vFormatParts.indexOf('A') > -1) ? vFormatParts.indexOf('A') : -1;
  150 + mer = vDateParts[vMeriIndex];
  151 + if (vMeriIndex > -1) {
  152 + vMeriOffset = _compare(mer, vSettings.meridiem[0]) ? 0 :
  153 + (_compare(mer, vSettings.meridiem[1]) ? 12 : -1);
  154 + if (iDatePart >= 1 && iDatePart <= 12 && vMeriOffset > -1) {
  155 + out.hour = iDatePart + vMeriOffset;
  156 + } else if (iDatePart >= 0 && iDatePart <= 23) {
  157 + out.hour = iDatePart;
  158 + }
  159 + } else if (iDatePart >= 0 && iDatePart <= 23) {
  160 + out.hour = iDatePart;
  161 + }
  162 + vTimeFlag = true;
  163 + break;
  164 + case 'G':
  165 + case 'H':
  166 + if (iDatePart >= 0 && iDatePart <= 23) {
  167 + out.hour = iDatePart;
  168 + }
  169 + vTimeFlag = true;
  170 + break;
  171 + case 'i':
  172 + if (iDatePart >= 0 && iDatePart <= 59) {
  173 + out.min = iDatePart;
  174 + }
  175 + vTimeFlag = true;
  176 + break;
  177 + case 's':
  178 + if (iDatePart >= 0 && iDatePart <= 59) {
  179 + out.sec = iDatePart;
  180 + }
  181 + vTimeFlag = true;
  182 + break;
  183 + }
  184 + }
  185 + if (vDateFlag === true && out.year && out.month && out.day) {
  186 + out.date = new Date(out.year, out.month - 1, out.day, out.hour, out.min, out.sec, 0);
  187 + } else {
  188 + if (vTimeFlag !== true) {
  189 + return false;
  190 + }
  191 + out.date = new Date(0, 0, 0, out.hour, out.min, out.sec, 0);
  192 + }
  193 + return out.date;
  194 + },
  195 + guessDate: function (vDateStr, vFormat) {
  196 + if (typeof vDateStr !== 'string') {
  197 + return vDateStr;
  198 + }
  199 + var self = this, vParts = vDateStr.replace(self.separators, '\0').split('\0'), vPattern = /^[djmn]/g,
  200 + vFormatParts = vFormat.match(self.validParts), vDate = new Date(), vDigit = 0, vYear, i, iPart, iSec;
  201 +
  202 + if (!vPattern.test(vFormatParts[0])) {
  203 + return vDateStr;
  204 + }
  205 +
  206 + for (i = 0; i < vParts.length; i++) {
  207 + vDigit = 2;
  208 + iPart = vParts[i];
  209 + iSec = parseInt(iPart.substr(0, 2));
  210 + switch (i) {
  211 + case 0:
  212 + if (vFormatParts[0] === 'm' || vFormatParts[0] === 'n') {
  213 + vDate.setMonth(iSec - 1);
  214 + } else {
  215 + vDate.setDate(iSec);
  216 + }
  217 + break;
  218 + case 1:
  219 + if (vFormatParts[0] === 'm' || vFormatParts[0] === 'n') {
  220 + vDate.setDate(iSec);
  221 + } else {
  222 + vDate.setMonth(iSec - 1);
  223 + }
  224 + break;
  225 + case 2:
  226 + vYear = vDate.getFullYear();
  227 + if (iPart.length < 4) {
  228 + vDate.setFullYear(parseInt(vYear.toString().substr(0, 4 - iPart.length) + iPart));
  229 + vDigit = iPart.length;
  230 + } else {
  231 + vDate.setFullYear = parseInt(iPart.substr(0, 4));
  232 + vDigit = 4;
  233 + }
  234 + break;
  235 + case 3:
  236 + vDate.setHours(iSec);
  237 + break;
  238 + case 4:
  239 + vDate.setMinutes(iSec);
  240 + break;
  241 + case 5:
  242 + vDate.setSeconds(iSec);
  243 + break;
  244 + }
  245 + if (iPart.substr(vDigit).length > 0) {
  246 + vParts.splice(i + 1, 0, iPart.substr(vDigit));
  247 + }
  248 + }
  249 + return vDate;
  250 + },
  251 + parseFormat: function (vChar, vDate) {
  252 + var self = this, vSettings = self.dateSettings, fmt, backspace = /\\?(.?)/gi, doFormat = function (t, s) {
  253 + return fmt[t] ? fmt[t]() : s;
  254 + };
  255 + fmt = {
  256 + /////////
  257 + // DAY //
  258 + /////////
  259 + /**
  260 + * Day of month with leading 0: `01..31`
  261 + * @return {string}
  262 + */
  263 + d: function () {
  264 + return _lpad(fmt.j(), 2);
  265 + },
  266 + /**
  267 + * Shorthand day name: `Mon...Sun`
  268 + * @return {string}
  269 + */
  270 + D: function () {
  271 + return vSettings.daysShort[fmt.w()];
  272 + },
  273 + /**
  274 + * Day of month: `1..31`
  275 + * @return {number}
  276 + */
  277 + j: function () {
  278 + return vDate.getDate();
  279 + },
  280 + /**
  281 + * Full day name: `Monday...Sunday`
  282 + * @return {number}
  283 + */
  284 + l: function () {
  285 + return vSettings.days[fmt.w()];
  286 + },
  287 + /**
  288 + * ISO-8601 day of week: `1[Mon]..7[Sun]`
  289 + * @return {number}
  290 + */
  291 + N: function () {
  292 + return fmt.w() || 7;
  293 + },
  294 + /**
  295 + * Day of week: `0[Sun]..6[Sat]`
  296 + * @return {number}
  297 + */
  298 + w: function () {
  299 + return vDate.getDay();
  300 + },
  301 + /**
  302 + * Day of year: `0..365`
  303 + * @return {number}
  304 + */
  305 + z: function () {
  306 + var a = new Date(fmt.Y(), fmt.n() - 1, fmt.j()), b = new Date(fmt.Y(), 0, 1);
  307 + return Math.round((a - b) / DAY);
  308 + },
  309 +
  310 + //////////
  311 + // WEEK //
  312 + //////////
  313 + /**
  314 + * ISO-8601 week number
  315 + * @return {number}
  316 + */
  317 + W: function () {
  318 + var a = new Date(fmt.Y(), fmt.n() - 1, fmt.j() - fmt.N() + 3), b = new Date(a.getFullYear(), 0, 4);
  319 + return _lpad(1 + Math.round((a - b) / DAY / 7), 2);
  320 + },
  321 +
  322 + ///////////
  323 + // MONTH //
  324 + ///////////
  325 + /**
  326 + * Full month name: `January...December`
  327 + * @return {string}
  328 + */
  329 + F: function () {
  330 + return vSettings.months[vDate.getMonth()];
  331 + },
  332 + /**
  333 + * Month w/leading 0: `01..12`
  334 + * @return {string}
  335 + */
  336 + m: function () {
  337 + return _lpad(fmt.n(), 2);
  338 + },
  339 + /**
  340 + * Shorthand month name; `Jan...Dec`
  341 + * @return {string}
  342 + */
  343 + M: function () {
  344 + return vSettings.monthsShort[vDate.getMonth()];
  345 + },
  346 + /**
  347 + * Month: `1...12`
  348 + * @return {number}
  349 + */
  350 + n: function () {
  351 + return vDate.getMonth() + 1;
  352 + },
  353 + /**
  354 + * Days in month: `28...31`
  355 + * @return {number}
  356 + */
  357 + t: function () {
  358 + return (new Date(fmt.Y(), fmt.n(), 0)).getDate();
  359 + },
  360 +
  361 + //////////
  362 + // YEAR //
  363 + //////////
  364 + /**
  365 + * Is leap year? `0 or 1`
  366 + * @return {number}
  367 + */
  368 + L: function () {
  369 + var Y = fmt.Y();
  370 + return (Y % 4 === 0 && Y % 100 !== 0 || Y % 400 === 0) ? 1 : 0;
  371 + },
  372 + /**
  373 + * ISO-8601 year
  374 + * @return {number}
  375 + */
  376 + o: function () {
  377 + var n = fmt.n(), W = fmt.W(), Y = fmt.Y();
  378 + return Y + (n === 12 && W < 9 ? 1 : n === 1 && W > 9 ? -1 : 0);
  379 + },
  380 + /**
  381 + * Full year: `e.g. 1980...2010`
  382 + * @return {number}
  383 + */
  384 + Y: function () {
  385 + return vDate.getFullYear();
  386 + },
  387 + /**
  388 + * Last two digits of year: `00...99`
  389 + * @return {string}
  390 + */
  391 + y: function () {
  392 + return fmt.Y().toString().slice(-2);
  393 + },
  394 +
  395 + //////////
  396 + // TIME //
  397 + //////////
  398 + /**
  399 + * Meridian lower: `am or pm`
  400 + * @return {string}
  401 + */
  402 + a: function () {
  403 + return fmt.A().toLowerCase();
  404 + },
  405 + /**
  406 + * Meridian upper: `AM or PM`
  407 + * @return {string}
  408 + */
  409 + A: function () {
  410 + var n = fmt.G() < 12 ? 0 : 1;
  411 + return vSettings.meridiem[n];
  412 + },
  413 + /**
  414 + * Swatch Internet time: `000..999`
  415 + * @return {string}
  416 + */
  417 + B: function () {
  418 + var H = vDate.getUTCHours() * HOUR, i = vDate.getUTCMinutes() * 60, s = vDate.getUTCSeconds();
  419 + return _lpad(Math.floor((H + i + s + HOUR) / 86.4) % 1000, 3);
  420 + },
  421 + /**
  422 + * 12-Hours: `1..12`
  423 + * @return {number}
  424 + */
  425 + g: function () {
  426 + return fmt.G() % 12 || 12;
  427 + },
  428 + /**
  429 + * 24-Hours: `0..23`
  430 + * @return {number}
  431 + */
  432 + G: function () {
  433 + return vDate.getHours();
  434 + },
  435 + /**
  436 + * 12-Hours with leading 0: `01..12`
  437 + * @return {string}
  438 + */
  439 + h: function () {
  440 + return _lpad(fmt.g(), 2);
  441 + },
  442 + /**
  443 + * 24-Hours w/leading 0: `00..23`
  444 + * @return {string}
  445 + */
  446 + H: function () {
  447 + return _lpad(fmt.G(), 2);
  448 + },
  449 + /**
  450 + * Minutes w/leading 0: `00..59`
  451 + * @return {string}
  452 + */
  453 + i: function () {
  454 + return _lpad(vDate.getMinutes(), 2);
  455 + },
  456 + /**
  457 + * Seconds w/leading 0: `00..59`
  458 + * @return {string}
  459 + */
  460 + s: function () {
  461 + return _lpad(vDate.getSeconds(), 2);
  462 + },
  463 + /**
  464 + * Microseconds: `000000-999000`
  465 + * @return {string}
  466 + */
  467 + u: function () {
  468 + return _lpad(vDate.getMilliseconds() * 1000, 6);
  469 + },
  470 +
  471 + //////////////
  472 + // TIMEZONE //
  473 + //////////////
  474 + /**
  475 + * Timezone identifier: `e.g. Atlantic/Azores, ...`
  476 + * @return {string}
  477 + */
  478 + e: function () {
  479 + var str = /\((.*)\)/.exec(String(vDate))[1];
  480 + return str || 'Coordinated Universal Time';
  481 + },
  482 + /**
  483 + * Timezone abbreviation: `e.g. EST, MDT, ...`
  484 + * @return {string}
  485 + */
  486 + T: function () {
  487 + var str = (String(vDate).match(self.tzParts) || [""]).pop().replace(self.tzClip, "");
  488 + return str || 'UTC';
  489 + },
  490 + /**
  491 + * DST observed? `0 or 1`
  492 + * @return {number}
  493 + */
  494 + I: function () {
  495 + var a = new Date(fmt.Y(), 0), c = Date.UTC(fmt.Y(), 0),
  496 + b = new Date(fmt.Y(), 6), d = Date.UTC(fmt.Y(), 6);
  497 + return ((a - c) !== (b - d)) ? 1 : 0;
  498 + },
  499 + /**
  500 + * Difference to GMT in hour format: `e.g. +0200`
  501 + * @return {string}
  502 + */
  503 + O: function () {
  504 + var tzo = vDate.getTimezoneOffset(), a = Math.abs(tzo);
  505 + return (tzo > 0 ? '-' : '+') + _lpad(Math.floor(a / 60) * 100 + a % 60, 4);
  506 + },
  507 + /**
  508 + * Difference to GMT with colon: `e.g. +02:00`
  509 + * @return {string}
  510 + */
  511 + P: function () {
  512 + var O = fmt.O();
  513 + return (O.substr(0, 3) + ':' + O.substr(3, 2));
  514 + },
  515 + /**
  516 + * Timezone offset in seconds: `-43200...50400`
  517 + * @return {number}
  518 + */
  519 + Z: function () {
  520 + return -vDate.getTimezoneOffset() * 60;
  521 + },
  522 +
  523 + ////////////////////
  524 + // FULL DATE TIME //
  525 + ////////////////////
  526 + /**
  527 + * ISO-8601 date
  528 + * @return {string}
  529 + */
  530 + c: function () {
  531 + return 'Y-m-d\\TH:i:sP'.replace(backspace, doFormat);
  532 + },
  533 + /**
  534 + * RFC 2822 date
  535 + * @return {string}
  536 + */
  537 + r: function () {
  538 + return 'D, d M Y H:i:s O'.replace(backspace, doFormat);
  539 + },
  540 + /**
  541 + * Seconds since UNIX epoch
  542 + * @return {number}
  543 + */
  544 + U: function () {
  545 + return vDate.getTime() / 1000 || 0;
  546 + }
  547 + };
  548 + return doFormat(vChar, vChar);
  549 + },
  550 + formatDate: function (vDate, vFormat) {
  551 + var self = this, i, n, len, str, vChar, vDateStr = '';
  552 + if (typeof vDate === 'string') {
  553 + vDate = self.parseDate(vDate, vFormat);
  554 + if (vDate === false) {
  555 + return false;
  556 + }
  557 + }
  558 + if (vDate instanceof Date) {
  559 + len = vFormat.length;
  560 + for (i = 0; i < len; i++) {
  561 + vChar = vFormat.charAt(i);
  562 + if (vChar === 'S') {
  563 + continue;
  564 + }
  565 + str = self.parseFormat(vChar, vDate);
  566 + if (i !== (len - 1) && self.intParts.test(vChar) && vFormat.charAt(i + 1) === 'S') {
  567 + n = parseInt(str);
  568 + str += self.dateSettings.ordinal(n);
  569 + }
  570 + vDateStr += str;
  571 + }
  572 + return vDateStr;
  573 + }
  574 + return '';
  575 + }
  576 + };
  577 +})();/**
  578 + * @preserve jQuery DateTimePicker plugin v2.5.4
  579 + * @homepage http://xdsoft.net/jqplugins/datetimepicker/
  580 + * @author Chupurnov Valeriy (<chupurnov@gmail.com>)
  581 + */
  582 +/*global DateFormatter, document,window,jQuery,setTimeout,clearTimeout,HighlightedDate,getCurrentValue*/
  583 +;(function (factory) {
  584 + if ( typeof define === 'function' && define.amd ) {
  585 + // AMD. Register as an anonymous module.
  586 + define(['jquery', 'jquery-mousewheel'], factory);
  587 + } else if (typeof exports === 'object') {
  588 + // Node/CommonJS style for Browserify
  589 + module.exports = factory;
  590 + } else {
  591 + // Browser globals
  592 + factory(jQuery);
  593 + }
  594 +}(function ($) {
  595 + 'use strict';
  596 +
  597 + var currentlyScrollingTimeDiv = false;
  598 +
  599 + var default_options = {
  600 + i18n: {
  601 + ar: { // Arabic
  602 + months: [
  603 + "كانون الثاني", "شباط", "آذار", "نيسان", "مايو", "حزيران", "تموز", "آب", "أيلول", "تشرين الأول", "تشرين الثاني", "كانون الأول"
  604 + ],
  605 + dayOfWeekShort: [
  606 + "ن", "ث", "ع", "خ", "ج", "س", "ح"
  607 + ],
  608 + dayOfWeek: ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", "الأحد"]
  609 + },
  610 + ro: { // Romanian
  611 + months: [
  612 + "Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"
  613 + ],
  614 + dayOfWeekShort: [
  615 + "Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ"
  616 + ],
  617 + dayOfWeek: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă"]
  618 + },
  619 + id: { // Indonesian
  620 + months: [
  621 + "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"
  622 + ],
  623 + dayOfWeekShort: [
  624 + "Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"
  625 + ],
  626 + dayOfWeek: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"]
  627 + },
  628 + is: { // Icelandic
  629 + months: [
  630 + "Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"
  631 + ],
  632 + dayOfWeekShort: [
  633 + "Sun", "Mán", "Þrið", "Mið", "Fim", "Fös", "Lau"
  634 + ],
  635 + dayOfWeek: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur"]
  636 + },
  637 + bg: { // Bulgarian
  638 + months: [
  639 + "Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"
  640 + ],
  641 + dayOfWeekShort: [
  642 + "Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"
  643 + ],
  644 + dayOfWeek: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота"]
  645 + },
  646 + fa: { // Persian/Farsi
  647 + months: [
  648 + 'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'
  649 + ],
  650 + dayOfWeekShort: [
  651 + 'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'
  652 + ],
  653 + dayOfWeek: ["یک‌شنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنج‌شنبه", "جمعه", "شنبه", "یک‌شنبه"]
  654 + },
  655 + ru: { // Russian
  656 + months: [
  657 + 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'
  658 + ],
  659 + dayOfWeekShort: [
  660 + "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"
  661 + ],
  662 + dayOfWeek: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"]
  663 + },
  664 + uk: { // Ukrainian
  665 + months: [
  666 + 'Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'
  667 + ],
  668 + dayOfWeekShort: [
  669 + "Ндл", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Сбт"
  670 + ],
  671 + dayOfWeek: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота"]
  672 + },
  673 + en: { // English
  674 + months: [
  675 + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
  676 + ],
  677 + dayOfWeekShort: [
  678 + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
  679 + ],
  680 + dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
  681 + },
  682 + el: { // Ελληνικά
  683 + months: [
  684 + "Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"
  685 + ],
  686 + dayOfWeekShort: [
  687 + "Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ"
  688 + ],
  689 + dayOfWeek: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"]
  690 + },
  691 + de: { // German
  692 + months: [
  693 + 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'
  694 + ],
  695 + dayOfWeekShort: [
  696 + "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"
  697 + ],
  698 + dayOfWeek: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]
  699 + },
  700 + nl: { // Dutch
  701 + months: [
  702 + "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"
  703 + ],
  704 + dayOfWeekShort: [
  705 + "zo", "ma", "di", "wo", "do", "vr", "za"
  706 + ],
  707 + dayOfWeek: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"]
  708 + },
  709 + tr: { // Turkish
  710 + months: [
  711 + "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"
  712 + ],
  713 + dayOfWeekShort: [
  714 + "Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts"
  715 + ],
  716 + dayOfWeek: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"]
  717 + },
  718 + fr: { //French
  719 + months: [
  720 + "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"
  721 + ],
  722 + dayOfWeekShort: [
  723 + "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"
  724 + ],
  725 + dayOfWeek: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"]
  726 + },
  727 + es: { // Spanish
  728 + months: [
  729 + "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"
  730 + ],
  731 + dayOfWeekShort: [
  732 + "Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"
  733 + ],
  734 + dayOfWeek: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"]
  735 + },
  736 + th: { // Thai
  737 + months: [
  738 + 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'
  739 + ],
  740 + dayOfWeekShort: [
  741 + 'อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'
  742 + ],
  743 + dayOfWeek: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"]
  744 + },
  745 + pl: { // Polish
  746 + months: [
  747 + "styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień"
  748 + ],
  749 + dayOfWeekShort: [
  750 + "nd", "pn", "wt", "śr", "cz", "pt", "sb"
  751 + ],
  752 + dayOfWeek: ["niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota"]
  753 + },
  754 + pt: { // Portuguese
  755 + months: [
  756 + "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
  757 + ],
  758 + dayOfWeekShort: [
  759 + "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab"
  760 + ],
  761 + dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"]
  762 + },
  763 + ch: { // Simplified Chinese
  764 + months: [
  765 + "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
  766 + ],
  767 + dayOfWeekShort: [
  768 + "日", "一", "二", "三", "四", "五", "六"
  769 + ]
  770 + },
  771 + se: { // Swedish
  772 + months: [
  773 + "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"
  774 + ],
  775 + dayOfWeekShort: [
  776 + "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"
  777 + ]
  778 + },
  779 + kr: { // Korean
  780 + months: [
  781 + "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"
  782 + ],
  783 + dayOfWeekShort: [
  784 + "일", "월", "화", "수", "목", "금", "토"
  785 + ],
  786 + dayOfWeek: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"]
  787 + },
  788 + it: { // Italian
  789 + months: [
  790 + "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"
  791 + ],
  792 + dayOfWeekShort: [
  793 + "Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"
  794 + ],
  795 + dayOfWeek: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"]
  796 + },
  797 + da: { // Dansk
  798 + months: [
  799 + "January", "Februar", "Marts", "April", "Maj", "Juni", "July", "August", "September", "Oktober", "November", "December"
  800 + ],
  801 + dayOfWeekShort: [
  802 + "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"
  803 + ],
  804 + dayOfWeek: ["søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"]
  805 + },
  806 + no: { // Norwegian
  807 + months: [
  808 + "Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"
  809 + ],
  810 + dayOfWeekShort: [
  811 + "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"
  812 + ],
  813 + dayOfWeek: ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag']
  814 + },
  815 + ja: { // Japanese
  816 + months: [
  817 + "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"
  818 + ],
  819 + dayOfWeekShort: [
  820 + "日", "月", "火", "水", "木", "金", "土"
  821 + ],
  822 + dayOfWeek: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜"]
  823 + },
  824 + vi: { // Vietnamese
  825 + months: [
  826 + "Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12"
  827 + ],
  828 + dayOfWeekShort: [
  829 + "CN", "T2", "T3", "T4", "T5", "T6", "T7"
  830 + ],
  831 + dayOfWeek: ["Chủ nhật", "Thứ hai", "Thứ ba", "Thứ tư", "Thứ năm", "Thứ sáu", "Thứ bảy"]
  832 + },
  833 + sl: { // Slovenščina
  834 + months: [
  835 + "Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"
  836 + ],
  837 + dayOfWeekShort: [
  838 + "Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob"
  839 + ],
  840 + dayOfWeek: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota"]
  841 + },
  842 + cs: { // Čeština
  843 + months: [
  844 + "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"
  845 + ],
  846 + dayOfWeekShort: [
  847 + "Ne", "Po", "Út", "St", "Čt", "Pá", "So"
  848 + ]
  849 + },
  850 + hu: { // Hungarian
  851 + months: [
  852 + "Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"
  853 + ],
  854 + dayOfWeekShort: [
  855 + "Va", "Hé", "Ke", "Sze", "Cs", "Pé", "Szo"
  856 + ],
  857 + dayOfWeek: ["vasárnap", "hétfő", "kedd", "szerda", "csütörtök", "péntek", "szombat"]
  858 + },
  859 + az: { //Azerbaijanian (Azeri)
  860 + months: [
  861 + "Yanvar", "Fevral", "Mart", "Aprel", "May", "Iyun", "Iyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"
  862 + ],
  863 + dayOfWeekShort: [
  864 + "B", "Be", "Ça", "Ç", "Ca", "C", "Ş"
  865 + ],
  866 + dayOfWeek: ["Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə"]
  867 + },
  868 + bs: { //Bosanski
  869 + months: [
  870 + "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"
  871 + ],
  872 + dayOfWeekShort: [
  873 + "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"
  874 + ],
  875 + dayOfWeek: ["Nedjelja","Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"]
  876 + },
  877 + ca: { //Català
  878 + months: [
  879 + "Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"
  880 + ],
  881 + dayOfWeekShort: [
  882 + "Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds"
  883 + ],
  884 + dayOfWeek: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"]
  885 + },
  886 + 'en-GB': { //English (British)
  887 + months: [
  888 + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
  889 + ],
  890 + dayOfWeekShort: [
  891 + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
  892 + ],
  893 + dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
  894 + },
  895 + et: { //"Eesti"
  896 + months: [
  897 + "Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember"
  898 + ],
  899 + dayOfWeekShort: [
  900 + "P", "E", "T", "K", "N", "R", "L"
  901 + ],
  902 + dayOfWeek: ["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev"]
  903 + },
  904 + eu: { //Euskara
  905 + months: [
  906 + "Urtarrila", "Otsaila", "Martxoa", "Apirila", "Maiatza", "Ekaina", "Uztaila", "Abuztua", "Iraila", "Urria", "Azaroa", "Abendua"
  907 + ],
  908 + dayOfWeekShort: [
  909 + "Ig.", "Al.", "Ar.", "Az.", "Og.", "Or.", "La."
  910 + ],
  911 + dayOfWeek: ['Igandea', 'Astelehena', 'Asteartea', 'Asteazkena', 'Osteguna', 'Ostirala', 'Larunbata']
  912 + },
  913 + fi: { //Finnish (Suomi)
  914 + months: [
  915 + "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu"
  916 + ],
  917 + dayOfWeekShort: [
  918 + "Su", "Ma", "Ti", "Ke", "To", "Pe", "La"
  919 + ],
  920 + dayOfWeek: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"]
  921 + },
  922 + gl: { //Galego
  923 + months: [
  924 + "Xan", "Feb", "Maz", "Abr", "Mai", "Xun", "Xul", "Ago", "Set", "Out", "Nov", "Dec"
  925 + ],
  926 + dayOfWeekShort: [
  927 + "Dom", "Lun", "Mar", "Mer", "Xov", "Ven", "Sab"
  928 + ],
  929 + dayOfWeek: ["Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado"]
  930 + },
  931 + hr: { //Hrvatski
  932 + months: [
  933 + "Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"
  934 + ],
  935 + dayOfWeekShort: [
  936 + "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"
  937 + ],
  938 + dayOfWeek: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"]
  939 + },
  940 + ko: { //Korean (한국어)
  941 + months: [
  942 + "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"
  943 + ],
  944 + dayOfWeekShort: [
  945 + "일", "월", "화", "수", "목", "금", "토"
  946 + ],
  947 + dayOfWeek: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"]
  948 + },
  949 + lt: { //Lithuanian (lietuvių)
  950 + months: [
  951 + "Sausio", "Vasario", "Kovo", "Balandžio", "Gegužės", "Birželio", "Liepos", "Rugpjūčio", "Rugsėjo", "Spalio", "Lapkričio", "Gruodžio"
  952 + ],
  953 + dayOfWeekShort: [
  954 + "Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Šeš"
  955 + ],
  956 + dayOfWeek: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis"]
  957 + },
  958 + lv: { //Latvian (Latviešu)
  959 + months: [
  960 + "Janvāris", "Februāris", "Marts", "Aprīlis ", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"
  961 + ],
  962 + dayOfWeekShort: [
  963 + "Sv", "Pr", "Ot", "Tr", "Ct", "Pk", "St"
  964 + ],
  965 + dayOfWeek: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena"]
  966 + },
  967 + mk: { //Macedonian (Македонски)
  968 + months: [
  969 + "јануари", "февруари", "март", "април", "мај", "јуни", "јули", "август", "септември", "октомври", "ноември", "декември"
  970 + ],
  971 + dayOfWeekShort: [
  972 + "нед", "пон", "вто", "сре", "чет", "пет", "саб"
  973 + ],
  974 + dayOfWeek: ["Недела", "Понеделник", "Вторник", "Среда", "Четврток", "Петок", "Сабота"]
  975 + },
  976 + mn: { //Mongolian (Монгол)
  977 + months: [
  978 + "1-р сар", "2-р сар", "3-р сар", "4-р сар", "5-р сар", "6-р сар", "7-р сар", "8-р сар", "9-р сар", "10-р сар", "11-р сар", "12-р сар"
  979 + ],
  980 + dayOfWeekShort: [
  981 + "Дав", "Мяг", "Лха", "Пүр", "Бсн", "Бям", "Ням"
  982 + ],
  983 + dayOfWeek: ["Даваа", "Мягмар", "Лхагва", "Пүрэв", "Баасан", "Бямба", "Ням"]
  984 + },
  985 + 'pt-BR': { //Português(Brasil)
  986 + months: [
  987 + "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
  988 + ],
  989 + dayOfWeekShort: [
  990 + "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"
  991 + ],
  992 + dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"]
  993 + },
  994 + sk: { //Slovenčina
  995 + months: [
  996 + "Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"
  997 + ],
  998 + dayOfWeekShort: [
  999 + "Ne", "Po", "Ut", "St", "Št", "Pi", "So"
  1000 + ],
  1001 + dayOfWeek: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota"]
  1002 + },
  1003 + sq: { //Albanian (Shqip)
  1004 + months: [
  1005 + "Janar", "Shkurt", "Mars", "Prill", "Maj", "Qershor", "Korrik", "Gusht", "Shtator", "Tetor", "Nëntor", "Dhjetor"
  1006 + ],
  1007 + dayOfWeekShort: [
  1008 + "Die", "Hën", "Mar", "Mër", "Enj", "Pre", "Shtu"
  1009 + ],
  1010 + dayOfWeek: ["E Diel", "E Hënë", "E Martē", "E Mërkurë", "E Enjte", "E Premte", "E Shtunë"]
  1011 + },
  1012 + 'sr-YU': { //Serbian (Srpski)
  1013 + months: [
  1014 + "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"
  1015 + ],
  1016 + dayOfWeekShort: [
  1017 + "Ned", "Pon", "Uto", "Sre", "čet", "Pet", "Sub"
  1018 + ],
  1019 + dayOfWeek: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota"]
  1020 + },
  1021 + sr: { //Serbian Cyrillic (Српски)
  1022 + months: [
  1023 + "јануар", "фебруар", "март", "април", "мај", "јун", "јул", "август", "септембар", "октобар", "новембар", "децембар"
  1024 + ],
  1025 + dayOfWeekShort: [
  1026 + "нед", "пон", "уто", "сре", "чет", "пет", "суб"
  1027 + ],
  1028 + dayOfWeek: ["Недеља","Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота"]
  1029 + },
  1030 + sv: { //Svenska
  1031 + months: [
  1032 + "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"
  1033 + ],
  1034 + dayOfWeekShort: [
  1035 + "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"
  1036 + ],
  1037 + dayOfWeek: ["Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag"]
  1038 + },
  1039 + 'zh-TW': { //Traditional Chinese (繁體中文)
  1040 + months: [
  1041 + "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
  1042 + ],
  1043 + dayOfWeekShort: [
  1044 + "日", "一", "二", "三", "四", "五", "六"
  1045 + ],
  1046 + dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
  1047 + },
  1048 + zh: { //Simplified Chinese (简体中文)
  1049 + months: [
  1050 + "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
  1051 + ],
  1052 + dayOfWeekShort: [
  1053 + "日", "一", "二", "三", "四", "五", "六"
  1054 + ],
  1055 + dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
  1056 + },
  1057 + he: { //Hebrew (עברית)
  1058 + months: [
  1059 + 'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'
  1060 + ],
  1061 + dayOfWeekShort: [
  1062 + 'א\'', 'ב\'', 'ג\'', 'ד\'', 'ה\'', 'ו\'', 'שבת'
  1063 + ],
  1064 + dayOfWeek: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"]
  1065 + },
  1066 + hy: { // Armenian
  1067 + months: [
  1068 + "Հունվար", "Փետրվար", "Մարտ", "Ապրիլ", "Մայիս", "Հունիս", "Հուլիս", "Օգոստոս", "Սեպտեմբեր", "Հոկտեմբեր", "Նոյեմբեր", "Դեկտեմբեր"
  1069 + ],
  1070 + dayOfWeekShort: [
  1071 + "Կի", "Երկ", "Երք", "Չոր", "Հնգ", "Ուրբ", "Շբթ"
  1072 + ],
  1073 + dayOfWeek: ["Կիրակի", "Երկուշաբթի", "Երեքշաբթի", "Չորեքշաբթի", "Հինգշաբթի", "Ուրբաթ", "Շաբաթ"]
  1074 + },
  1075 + kg: { // Kyrgyz
  1076 + months: [
  1077 + 'Үчтүн айы', 'Бирдин айы', 'Жалган Куран', 'Чын Куран', 'Бугу', 'Кулжа', 'Теке', 'Баш Оона', 'Аяк Оона', 'Тогуздун айы', 'Жетинин айы', 'Бештин айы'
  1078 + ],
  1079 + dayOfWeekShort: [
  1080 + "Жек", "Дүй", "Шей", "Шар", "Бей", "Жум", "Ише"
  1081 + ],
  1082 + dayOfWeek: [
  1083 + "Жекшемб", "Дүйшөмб", "Шейшемб", "Шаршемб", "Бейшемби", "Жума", "Ишенб"
  1084 + ]
  1085 + },
  1086 + rm: { // Romansh
  1087 + months: [
  1088 + "Schaner", "Favrer", "Mars", "Avrigl", "Matg", "Zercladur", "Fanadur", "Avust", "Settember", "October", "November", "December"
  1089 + ],
  1090 + dayOfWeekShort: [
  1091 + "Du", "Gli", "Ma", "Me", "Gie", "Ve", "So"
  1092 + ],
  1093 + dayOfWeek: [
  1094 + "Dumengia", "Glindesdi", "Mardi", "Mesemna", "Gievgia", "Venderdi", "Sonda"
  1095 + ]
  1096 + },
  1097 + ka: { // Georgian
  1098 + months: [
  1099 + 'იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი'
  1100 + ],
  1101 + dayOfWeekShort: [
  1102 + "კვ", "ორშ", "სამშ", "ოთხ", "ხუთ", "პარ", "შაბ"
  1103 + ],
  1104 + dayOfWeek: ["კვირა", "ორშაბათი", "სამშაბათი", "ოთხშაბათი", "ხუთშაბათი", "პარასკევი", "შაბათი"]
  1105 + },
  1106 + },
  1107 + value: '',
  1108 + rtl: false,
  1109 +
  1110 + format: 'Y/m/d H:i',
  1111 + formatTime: 'H:i',
  1112 + formatDate: 'Y/m/d',
  1113 +
  1114 + startDate: false, // new Date(), '1986/12/08', '-1970/01/05','-1970/01/05',
  1115 + step: 60,
  1116 + monthChangeSpinner: true,
  1117 +
  1118 + closeOnDateSelect: false,
  1119 + closeOnTimeSelect: true,
  1120 + closeOnWithoutClick: true,
  1121 + closeOnInputClick: true,
  1122 +
  1123 + timepicker: true,
  1124 + datepicker: true,
  1125 + weeks: false,
  1126 +
  1127 + defaultTime: false, // use formatTime format (ex. '10:00' for formatTime: 'H:i')
  1128 + defaultDate: false, // use formatDate format (ex new Date() or '1986/12/08' or '-1970/01/05' or '-1970/01/05')
  1129 +
  1130 + minDate: false,
  1131 + maxDate: false,
  1132 + minTime: false,
  1133 + maxTime: false,
  1134 + disabledMinTime: false,
  1135 + disabledMaxTime: false,
  1136 +
  1137 + allowTimes: [],
  1138 + opened: false,
  1139 + initTime: true,
  1140 + inline: false,
  1141 + theme: '',
  1142 +
  1143 + onSelectDate: function () {},
  1144 + onSelectTime: function () {},
  1145 + onChangeMonth: function () {},
  1146 + onGetWeekOfYear: function () {},
  1147 + onChangeYear: function () {},
  1148 + onChangeDateTime: function () {},
  1149 + onShow: function () {},
  1150 + onClose: function () {},
  1151 + onGenerate: function () {},
  1152 +
  1153 + withoutCopyright: true,
  1154 + inverseButton: false,
  1155 + hours12: false,
  1156 + next: 'xdsoft_next',
  1157 + prev : 'xdsoft_prev',
  1158 + dayOfWeekStart: 0,
  1159 + parentID: 'body',
  1160 + timeHeightInTimePicker: 25,
  1161 + timepickerScrollbar: true,
  1162 + todayButton: true,
  1163 + prevButton: true,
  1164 + nextButton: true,
  1165 + defaultSelect: true,
  1166 +
  1167 + scrollMonth: true,
  1168 + scrollTime: true,
  1169 + scrollInput: true,
  1170 +
  1171 + lazyInit: false,
  1172 + mask: false,
  1173 + validateOnBlur: true,
  1174 + allowBlank: true,
  1175 + yearStart: 1950,
  1176 + yearEnd: 2050,
  1177 + monthStart: 0,
  1178 + monthEnd: 11,
  1179 + style: '',
  1180 + id: '',
  1181 + fixed: false,
  1182 + roundTime: 'round', // ceil, floor
  1183 + className: '',
  1184 + weekends: [],
  1185 + highlightedDates: [],
  1186 + highlightedPeriods: [],
  1187 + allowDates : [],
  1188 + allowDateRe : null,
  1189 + disabledDates : [],
  1190 + disabledWeekDays: [],
  1191 + yearOffset: 0,
  1192 + beforeShowDay: null,
  1193 +
  1194 + enterLikeTab: true,
  1195 + showApplyButton: false
  1196 + };
  1197 +
  1198 + var dateHelper = null,
  1199 + globalLocaleDefault = 'en',
  1200 + globalLocale = 'en';
  1201 +
  1202 + var dateFormatterOptionsDefault = {
  1203 + meridiem: ['AM', 'PM']
  1204 + };
  1205 +
  1206 + var initDateFormatter = function(){
  1207 + var locale = default_options.i18n[globalLocale],
  1208 + opts = {
  1209 + days: locale.dayOfWeek,
  1210 + daysShort: locale.dayOfWeekShort,
  1211 + months: locale.months,
  1212 + monthsShort: $.map(locale.months, function(n){ return n.substring(0, 3) }),
  1213 + };
  1214 +
  1215 + dateHelper = new DateFormatter({
  1216 + dateSettings: $.extend({}, dateFormatterOptionsDefault, opts)
  1217 + });
  1218 + };
  1219 +
  1220 + // for locale settings
  1221 + $.datetimepicker = {
  1222 + setLocale: function(locale){
  1223 + var newLocale = default_options.i18n[locale]?locale:globalLocaleDefault;
  1224 + if(globalLocale != newLocale){
  1225 + globalLocale = newLocale;
  1226 + // reinit date formatter
  1227 + initDateFormatter();
  1228 + }
  1229 + },
  1230 + setDateFormatter: function(dateFormatter) {
  1231 + dateHelper = dateFormatter;
  1232 + },
  1233 + RFC_2822: 'D, d M Y H:i:s O',
  1234 + ATOM: 'Y-m-d\TH:i:sP',
  1235 + ISO_8601: 'Y-m-d\TH:i:sO',
  1236 + RFC_822: 'D, d M y H:i:s O',
  1237 + RFC_850: 'l, d-M-y H:i:s T',
  1238 + RFC_1036: 'D, d M y H:i:s O',
  1239 + RFC_1123: 'D, d M Y H:i:s O',
  1240 + RSS: 'D, d M Y H:i:s O',
  1241 + W3C: 'Y-m-d\TH:i:sP'
  1242 + };
  1243 +
  1244 + // first init date formatter
  1245 + initDateFormatter();
  1246 +
  1247 + // fix for ie8
  1248 + if (!window.getComputedStyle) {
  1249 + window.getComputedStyle = function (el, pseudo) {
  1250 + this.el = el;
  1251 + this.getPropertyValue = function (prop) {
  1252 + var re = /(\-([a-z]){1})/g;
  1253 + if (prop === 'float') {
  1254 + prop = 'styleFloat';
  1255 + }
  1256 + if (re.test(prop)) {
  1257 + prop = prop.replace(re, function (a, b, c) {
  1258 + return c.toUpperCase();
  1259 + });
  1260 + }
  1261 + return el.currentStyle[prop] || null;
  1262 + };
  1263 + return this;
  1264 + };
  1265 + }
  1266 + if (!Array.prototype.indexOf) {
  1267 + Array.prototype.indexOf = function (obj, start) {
  1268 + var i, j;
  1269 + for (i = (start || 0), j = this.length; i < j; i += 1) {
  1270 + if (this[i] === obj) { return i; }
  1271 + }
  1272 + return -1;
  1273 + };
  1274 + }
  1275 + Date.prototype.countDaysInMonth = function () {
  1276 + return new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate();
  1277 + };
  1278 + $.fn.xdsoftScroller = function (percent) {
  1279 + return this.each(function () {
  1280 + var timeboxparent = $(this),
  1281 + pointerEventToXY = function (e) {
  1282 + var out = {x: 0, y: 0},
  1283 + touch;
  1284 + if (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') {
  1285 + touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
  1286 + out.x = touch.clientX;
  1287 + out.y = touch.clientY;
  1288 + } else if (e.type === 'mousedown' || e.type === 'mouseup' || e.type === 'mousemove' || e.type === 'mouseover' || e.type === 'mouseout' || e.type === 'mouseenter' || e.type === 'mouseleave') {
  1289 + out.x = e.clientX;
  1290 + out.y = e.clientY;
  1291 + }
  1292 + return out;
  1293 + },
  1294 + timebox,
  1295 + parentHeight,
  1296 + height,
  1297 + scrollbar,
  1298 + scroller,
  1299 + maximumOffset = 100,
  1300 + start = false,
  1301 + startY = 0,
  1302 + startTop = 0,
  1303 + h1 = 0,
  1304 + touchStart = false,
  1305 + startTopScroll = 0,
  1306 + calcOffset = function () {};
  1307 + if (percent === 'hide') {
  1308 + timeboxparent.find('.xdsoft_scrollbar').hide();
  1309 + return;
  1310 + }
  1311 + if (!$(this).hasClass('xdsoft_scroller_box')) {
  1312 + timebox = timeboxparent.children().eq(0);
  1313 + parentHeight = timeboxparent[0].clientHeight;
  1314 + height = timebox[0].offsetHeight;
  1315 + scrollbar = $('<div class="xdsoft_scrollbar"></div>');
  1316 + scroller = $('<div class="xdsoft_scroller"></div>');
  1317 + scrollbar.append(scroller);
  1318 +
  1319 + timeboxparent.addClass('xdsoft_scroller_box').append(scrollbar);
  1320 + calcOffset = function calcOffset(event) {
  1321 + var offset = pointerEventToXY(event).y - startY + startTopScroll;
  1322 + if (offset < 0) {
  1323 + offset = 0;
  1324 + }
  1325 + if (offset + scroller[0].offsetHeight > h1) {
  1326 + offset = h1 - scroller[0].offsetHeight;
  1327 + }
  1328 + timeboxparent.trigger('scroll_element.xdsoft_scroller', [maximumOffset ? offset / maximumOffset : 0]);
  1329 + };
  1330 +
  1331 + scroller
  1332 + .on('touchstart.xdsoft_scroller mousedown.xdsoft_scroller', function (event) {
  1333 + if (!parentHeight) {
  1334 + timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);
  1335 + }
  1336 +
  1337 + startY = pointerEventToXY(event).y;
  1338 + startTopScroll = parseInt(scroller.css('margin-top'), 10);
  1339 + h1 = scrollbar[0].offsetHeight;
  1340 +
  1341 + if (event.type === 'mousedown' || event.type === 'touchstart') {
  1342 + if (document) {
  1343 + $(document.body).addClass('xdsoft_noselect');
  1344 + }
  1345 + $([document.body, window]).on('touchend mouseup.xdsoft_scroller', function arguments_callee() {
  1346 + $([document.body, window]).off('touchend mouseup.xdsoft_scroller', arguments_callee)
  1347 + .off('mousemove.xdsoft_scroller', calcOffset)
  1348 + .removeClass('xdsoft_noselect');
  1349 + });
  1350 + $(document.body).on('mousemove.xdsoft_scroller', calcOffset);
  1351 + } else {
  1352 + touchStart = true;
  1353 + event.stopPropagation();
  1354 + event.preventDefault();
  1355 + }
  1356 + })
  1357 + .on('touchmove', function (event) {
  1358 + if (touchStart) {
  1359 + event.preventDefault();
  1360 + calcOffset(event);
  1361 + }
  1362 + })
  1363 + .on('touchend touchcancel', function () {
  1364 + touchStart = false;
  1365 + startTopScroll = 0;
  1366 + });
  1367 +
  1368 + timeboxparent
  1369 + .on('scroll_element.xdsoft_scroller', function (event, percentage) {
  1370 + if (!parentHeight) {
  1371 + timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percentage, true]);
  1372 + }
  1373 + percentage = percentage > 1 ? 1 : (percentage < 0 || isNaN(percentage)) ? 0 : percentage;
  1374 +
  1375 + scroller.css('margin-top', maximumOffset * percentage);
  1376 +
  1377 + setTimeout(function () {
  1378 + timebox.css('marginTop', -parseInt((timebox[0].offsetHeight - parentHeight) * percentage, 10));
  1379 + }, 10);
  1380 + })
  1381 + .on('resize_scroll.xdsoft_scroller', function (event, percentage, noTriggerScroll) {
  1382 + var percent, sh;
  1383 + parentHeight = timeboxparent[0].clientHeight;
  1384 + height = timebox[0].offsetHeight;
  1385 + percent = parentHeight / height;
  1386 + sh = percent * scrollbar[0].offsetHeight;
  1387 + if (percent > 1) {
  1388 + scroller.hide();
  1389 + } else {
  1390 + scroller.show();
  1391 + scroller.css('height', parseInt(sh > 10 ? sh : 10, 10));
  1392 + maximumOffset = scrollbar[0].offsetHeight - scroller[0].offsetHeight;
  1393 + if (noTriggerScroll !== true) {
  1394 + timeboxparent.trigger('scroll_element.xdsoft_scroller', [percentage || Math.abs(parseInt(timebox.css('marginTop'), 10)) / (height - parentHeight)]);
  1395 + }
  1396 + }
  1397 + });
  1398 +
  1399 + timeboxparent.on('mousewheel', function (event) {
  1400 + var top = Math.abs(parseInt(timebox.css('marginTop'), 10));
  1401 +
  1402 + top = top - (event.deltaY * 20);
  1403 + if (top < 0) {
  1404 + top = 0;
  1405 + }
  1406 +
  1407 + timeboxparent.trigger('scroll_element.xdsoft_scroller', [top / (height - parentHeight)]);
  1408 + event.stopPropagation();
  1409 + return false;
  1410 + });
  1411 +
  1412 + timeboxparent.on('touchstart', function (event) {
  1413 + start = pointerEventToXY(event);
  1414 + startTop = Math.abs(parseInt(timebox.css('marginTop'), 10));
  1415 + });
  1416 +
  1417 + timeboxparent.on('touchmove', function (event) {
  1418 + if (start) {
  1419 + event.preventDefault();
  1420 + var coord = pointerEventToXY(event);
  1421 + timeboxparent.trigger('scroll_element.xdsoft_scroller', [(startTop - (coord.y - start.y)) / (height - parentHeight)]);
  1422 + }
  1423 + });
  1424 +
  1425 + timeboxparent.on('touchend touchcancel', function () {
  1426 + start = false;
  1427 + startTop = 0;
  1428 + });
  1429 + }
  1430 + timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);
  1431 + });
  1432 + };
  1433 +
  1434 + $.fn.datetimepicker = function (opt, opt2) {
  1435 + var result = this,
  1436 + KEY0 = 48,
  1437 + KEY9 = 57,
  1438 + _KEY0 = 96,
  1439 + _KEY9 = 105,
  1440 + CTRLKEY = 17,
  1441 + DEL = 46,
  1442 + ENTER = 13,
  1443 + ESC = 27,
  1444 + BACKSPACE = 8,
  1445 + ARROWLEFT = 37,
  1446 + ARROWUP = 38,
  1447 + ARROWRIGHT = 39,
  1448 + ARROWDOWN = 40,
  1449 + TAB = 9,
  1450 + F5 = 116,
  1451 + AKEY = 65,
  1452 + CKEY = 67,
  1453 + VKEY = 86,
  1454 + ZKEY = 90,
  1455 + YKEY = 89,
  1456 + ctrlDown = false,
  1457 + options = ($.isPlainObject(opt) || !opt) ? $.extend(true, {}, default_options, opt) : $.extend(true, {}, default_options),
  1458 +
  1459 + lazyInitTimer = 0,
  1460 + createDateTimePicker,
  1461 + destroyDateTimePicker,
  1462 +
  1463 + lazyInit = function (input) {
  1464 + input
  1465 + .on('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', function initOnActionCallback() {
  1466 + if (input.is(':disabled') || input.data('xdsoft_datetimepicker')) {
  1467 + return;
  1468 + }
  1469 + clearTimeout(lazyInitTimer);
  1470 + lazyInitTimer = setTimeout(function () {
  1471 +
  1472 + if (!input.data('xdsoft_datetimepicker')) {
  1473 + createDateTimePicker(input);
  1474 + }
  1475 + input
  1476 + .off('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', initOnActionCallback)
  1477 + .trigger('open.xdsoft');
  1478 + }, 100);
  1479 + });
  1480 + };
  1481 +
  1482 + createDateTimePicker = function (input) {
  1483 + var datetimepicker = $('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'),
  1484 + xdsoft_copyright = $('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),
  1485 + datepicker = $('<div class="xdsoft_datepicker active"></div>'),
  1486 + month_picker = $('<div class="xdsoft_monthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button>' +
  1487 + '<div class="xdsoft_label xdsoft_month"><span></span><i></i></div>' +
  1488 + '<div class="xdsoft_label xdsoft_year"><span></span><i></i></div>' +
  1489 + '<button type="button" class="xdsoft_next"></button></div>'),
  1490 + calendar = $('<div class="xdsoft_calendar"></div>'),
  1491 + timepicker = $('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),
  1492 + timeboxparent = timepicker.find('.xdsoft_time_box').eq(0),
  1493 + timebox = $('<div class="xdsoft_time_variant"></div>'),
  1494 + applyButton = $('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),
  1495 +
  1496 + monthselect = $('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),
  1497 + yearselect = $('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),
  1498 + triggerAfterOpen = false,
  1499 + XDSoft_datetime,
  1500 +
  1501 + xchangeTimer,
  1502 + timerclick,
  1503 + current_time_index,
  1504 + setPos,
  1505 + timer = 0,
  1506 + _xdsoft_datetime,
  1507 + forEachAncestorOf,
  1508 + throttle;
  1509 +
  1510 + if (options.id) {
  1511 + datetimepicker.attr('id', options.id);
  1512 + }
  1513 + if (options.style) {
  1514 + datetimepicker.attr('style', options.style);
  1515 + }
  1516 + if (options.weeks) {
  1517 + datetimepicker.addClass('xdsoft_showweeks');
  1518 + }
  1519 + if (options.rtl) {
  1520 + datetimepicker.addClass('xdsoft_rtl');
  1521 + }
  1522 +
  1523 + datetimepicker.addClass('xdsoft_' + options.theme);
  1524 + datetimepicker.addClass(options.className);
  1525 +
  1526 + month_picker
  1527 + .find('.xdsoft_month span')
  1528 + .after(monthselect);
  1529 + month_picker
  1530 + .find('.xdsoft_year span')
  1531 + .after(yearselect);
  1532 +
  1533 + month_picker
  1534 + .find('.xdsoft_month,.xdsoft_year')
  1535 + .on('touchstart mousedown.xdsoft', function (event) {
  1536 + var select = $(this).find('.xdsoft_select').eq(0),
  1537 + val = 0,
  1538 + top = 0,
  1539 + visible = select.is(':visible'),
  1540 + items,
  1541 + i;
  1542 +
  1543 + month_picker
  1544 + .find('.xdsoft_select')
  1545 + .hide();
  1546 + if (_xdsoft_datetime.currentTime) {
  1547 + val = _xdsoft_datetime.currentTime[$(this).hasClass('xdsoft_month') ? 'getMonth' : 'getFullYear']();
  1548 + }
  1549 +
  1550 + select[visible ? 'hide' : 'show']();
  1551 + for (items = select.find('div.xdsoft_option'), i = 0; i < items.length; i += 1) {
  1552 + if (items.eq(i).data('value') === val) {
  1553 + break;
  1554 + } else {
  1555 + top += items[0].offsetHeight;
  1556 + }
  1557 + }
  1558 +
  1559 + select.xdsoftScroller(top / (select.children()[0].offsetHeight - (select[0].clientHeight)));
  1560 + event.stopPropagation();
  1561 + return false;
  1562 + });
  1563 +
  1564 + month_picker
  1565 + .find('.xdsoft_select')
  1566 + .xdsoftScroller()
  1567 + .on('touchstart mousedown.xdsoft', function (event) {
  1568 + event.stopPropagation();
  1569 + event.preventDefault();
  1570 + })
  1571 + .on('touchstart mousedown.xdsoft', '.xdsoft_option', function () {
  1572 + if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) {
  1573 + _xdsoft_datetime.currentTime = _xdsoft_datetime.now();
  1574 + }
  1575 +
  1576 + var year = _xdsoft_datetime.currentTime.getFullYear();
  1577 + if (_xdsoft_datetime && _xdsoft_datetime.currentTime) {
  1578 + _xdsoft_datetime.currentTime[$(this).parent().parent().hasClass('xdsoft_monthselect') ? 'setMonth' : 'setFullYear']($(this).data('value'));
  1579 + }
  1580 +
  1581 + $(this).parent().parent().hide();
  1582 +
  1583 + datetimepicker.trigger('xchange.xdsoft');
  1584 + if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
  1585 + options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
  1586 + }
  1587 +
  1588 + if (year !== _xdsoft_datetime.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {
  1589 + options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
  1590 + }
  1591 + });
  1592 +
  1593 + datetimepicker.getValue = function () {
  1594 + return _xdsoft_datetime.getCurrentTime();
  1595 + };
  1596 +
  1597 + datetimepicker.setOptions = function (_options) {
  1598 + var highlightedDates = {};
  1599 +
  1600 + options = $.extend(true, {}, options, _options);
  1601 +
  1602 + if (_options.allowTimes && $.isArray(_options.allowTimes) && _options.allowTimes.length) {
  1603 + options.allowTimes = $.extend(true, [], _options.allowTimes);
  1604 + }
  1605 +
  1606 + if (_options.weekends && $.isArray(_options.weekends) && _options.weekends.length) {
  1607 + options.weekends = $.extend(true, [], _options.weekends);
  1608 + }
  1609 +
  1610 + if (_options.allowDates && $.isArray(_options.allowDates) && _options.allowDates.length) {
  1611 + options.allowDates = $.extend(true, [], _options.allowDates);
  1612 + }
  1613 +
  1614 + if (_options.allowDateRe && Object.prototype.toString.call(_options.allowDateRe)==="[object String]") {
  1615 + options.allowDateRe = new RegExp(_options.allowDateRe);
  1616 + }
  1617 +
  1618 + if (_options.highlightedDates && $.isArray(_options.highlightedDates) && _options.highlightedDates.length) {
  1619 + $.each(_options.highlightedDates, function (index, value) {
  1620 + var splitData = $.map(value.split(','), $.trim),
  1621 + exDesc,
  1622 + hDate = new HighlightedDate(dateHelper.parseDate(splitData[0], options.formatDate), splitData[1], splitData[2]), // date, desc, style
  1623 + keyDate = dateHelper.formatDate(hDate.date, options.formatDate);
  1624 + if (highlightedDates[keyDate] !== undefined) {
  1625 + exDesc = highlightedDates[keyDate].desc;
  1626 + if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) {
  1627 + highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc;
  1628 + }
  1629 + } else {
  1630 + highlightedDates[keyDate] = hDate;
  1631 + }
  1632 + });
  1633 +
  1634 + options.highlightedDates = $.extend(true, [], highlightedDates);
  1635 + }
  1636 +
  1637 + if (_options.highlightedPeriods && $.isArray(_options.highlightedPeriods) && _options.highlightedPeriods.length) {
  1638 + highlightedDates = $.extend(true, [], options.highlightedDates);
  1639 + $.each(_options.highlightedPeriods, function (index, value) {
  1640 + var dateTest, // start date
  1641 + dateEnd,
  1642 + desc,
  1643 + hDate,
  1644 + keyDate,
  1645 + exDesc,
  1646 + style;
  1647 + if ($.isArray(value)) {
  1648 + dateTest = value[0];
  1649 + dateEnd = value[1];
  1650 + desc = value[2];
  1651 + style = value[3];
  1652 + }
  1653 + else {
  1654 + var splitData = $.map(value.split(','), $.trim);
  1655 + dateTest = dateHelper.parseDate(splitData[0], options.formatDate);
  1656 + dateEnd = dateHelper.parseDate(splitData[1], options.formatDate);
  1657 + desc = splitData[2];
  1658 + style = splitData[3];
  1659 + }
  1660 +
  1661 + while (dateTest <= dateEnd) {
  1662 + hDate = new HighlightedDate(dateTest, desc, style);
  1663 + keyDate = dateHelper.formatDate(dateTest, options.formatDate);
  1664 + dateTest.setDate(dateTest.getDate() + 1);
  1665 + if (highlightedDates[keyDate] !== undefined) {
  1666 + exDesc = highlightedDates[keyDate].desc;
  1667 + if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) {
  1668 + highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc;
  1669 + }
  1670 + } else {
  1671 + highlightedDates[keyDate] = hDate;
  1672 + }
  1673 + }
  1674 + });
  1675 +
  1676 + options.highlightedDates = $.extend(true, [], highlightedDates);
  1677 + }
  1678 +
  1679 + if (_options.disabledDates && $.isArray(_options.disabledDates) && _options.disabledDates.length) {
  1680 + options.disabledDates = $.extend(true, [], _options.disabledDates);
  1681 + }
  1682 +
  1683 + if (_options.disabledWeekDays && $.isArray(_options.disabledWeekDays) && _options.disabledWeekDays.length) {
  1684 + options.disabledWeekDays = $.extend(true, [], _options.disabledWeekDays);
  1685 + }
  1686 +
  1687 + if ((options.open || options.opened) && (!options.inline)) {
  1688 + input.trigger('open.xdsoft');
  1689 + }
  1690 +
  1691 + if (options.inline) {
  1692 + triggerAfterOpen = true;
  1693 + datetimepicker.addClass('xdsoft_inline');
  1694 + input.after(datetimepicker).hide();
  1695 + }
  1696 +
  1697 + if (options.inverseButton) {
  1698 + options.next = 'xdsoft_prev';
  1699 + options.prev = 'xdsoft_next';
  1700 + }
  1701 +
  1702 + if (options.datepicker) {
  1703 + datepicker.addClass('active');
  1704 + } else {
  1705 + datepicker.removeClass('active');
  1706 + }
  1707 +
  1708 + if (options.timepicker) {
  1709 + timepicker.addClass('active');
  1710 + } else {
  1711 + timepicker.removeClass('active');
  1712 + }
  1713 +
  1714 + if (options.value) {
  1715 + _xdsoft_datetime.setCurrentTime(options.value);
  1716 + if (input && input.val) {
  1717 + input.val(_xdsoft_datetime.str);
  1718 + }
  1719 + }
  1720 +
  1721 + if (isNaN(options.dayOfWeekStart)) {
  1722 + options.dayOfWeekStart = 0;
  1723 + } else {
  1724 + options.dayOfWeekStart = parseInt(options.dayOfWeekStart, 10) % 7;
  1725 + }
  1726 +
  1727 + if (!options.timepickerScrollbar) {
  1728 + timeboxparent.xdsoftScroller('hide');
  1729 + }
  1730 +
  1731 + if (options.minDate && /^[\+\-](.*)$/.test(options.minDate)) {
  1732 + options.minDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.minDate), options.formatDate);
  1733 + }
  1734 +
  1735 + if (options.maxDate && /^[\+\-](.*)$/.test(options.maxDate)) {
  1736 + options.maxDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.maxDate), options.formatDate);
  1737 + }
  1738 +
  1739 + applyButton.toggle(options.showApplyButton);
  1740 +
  1741 + month_picker
  1742 + .find('.xdsoft_today_button')
  1743 + .css('visibility', !options.todayButton ? 'hidden' : 'visible');
  1744 +
  1745 + month_picker
  1746 + .find('.' + options.prev)
  1747 + .css('visibility', !options.prevButton ? 'hidden' : 'visible');
  1748 +
  1749 + month_picker
  1750 + .find('.' + options.next)
  1751 + .css('visibility', !options.nextButton ? 'hidden' : 'visible');
  1752 +
  1753 + setMask(options);
  1754 +
  1755 + if (options.validateOnBlur) {
  1756 + input
  1757 + .off('blur.xdsoft')
  1758 + .on('blur.xdsoft', function () {
  1759 + if (options.allowBlank && (!$.trim($(this).val()).length || (typeof options.mask == "string" && $.trim($(this).val()) === options.mask.replace(/[0-9]/g, '_')))) {
  1760 + $(this).val(null);
  1761 + datetimepicker.data('xdsoft_datetime').empty();
  1762 + } else {
  1763 + var d = dateHelper.parseDate($(this).val(), options.format);
  1764 + if (d) { // parseDate() may skip some invalid parts like date or time, so make it clear for user: show parsed date/time
  1765 + $(this).val(dateHelper.formatDate(d, options.format));
  1766 + } else {
  1767 + var splittedHours = +([$(this).val()[0], $(this).val()[1]].join('')),
  1768 + splittedMinutes = +([$(this).val()[2], $(this).val()[3]].join(''));
  1769 +
  1770 + // parse the numbers as 0312 => 03:12
  1771 + if (!options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60) {
  1772 + $(this).val([splittedHours, splittedMinutes].map(function (item) {
  1773 + return item > 9 ? item : '0' + item;
  1774 + }).join(':'));
  1775 + } else {
  1776 + $(this).val(dateHelper.formatDate(_xdsoft_datetime.now(), options.format));
  1777 + }
  1778 + }
  1779 + datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());
  1780 + }
  1781 +
  1782 + datetimepicker.trigger('changedatetime.xdsoft');
  1783 + datetimepicker.trigger('close.xdsoft');
  1784 + });
  1785 + }
  1786 + options.dayOfWeekStartPrev = (options.dayOfWeekStart === 0) ? 6 : options.dayOfWeekStart - 1;
  1787 +
  1788 + datetimepicker
  1789 + .trigger('xchange.xdsoft')
  1790 + .trigger('afterOpen.xdsoft');
  1791 + };
  1792 +
  1793 + datetimepicker
  1794 + .data('options', options)
  1795 + .on('touchstart mousedown.xdsoft', function (event) {
  1796 + event.stopPropagation();
  1797 + event.preventDefault();
  1798 + yearselect.hide();
  1799 + monthselect.hide();
  1800 + return false;
  1801 + });
  1802 +
  1803 + //scroll_element = timepicker.find('.xdsoft_time_box');
  1804 + timeboxparent.append(timebox);
  1805 + timeboxparent.xdsoftScroller();
  1806 +
  1807 + datetimepicker.on('afterOpen.xdsoft', function () {
  1808 + timeboxparent.xdsoftScroller();
  1809 + });
  1810 +
  1811 + datetimepicker
  1812 + .append(datepicker)
  1813 + .append(timepicker);
  1814 +
  1815 + if (options.withoutCopyright !== true) {
  1816 + datetimepicker
  1817 + .append(xdsoft_copyright);
  1818 + }
  1819 +
  1820 + datepicker
  1821 + .append(month_picker)
  1822 + .append(calendar)
  1823 + .append(applyButton);
  1824 +
  1825 + $(options.parentID)
  1826 + .append(datetimepicker);
  1827 +
  1828 + XDSoft_datetime = function () {
  1829 + var _this = this;
  1830 + _this.now = function (norecursion) {
  1831 + var d = new Date(),
  1832 + date,
  1833 + time;
  1834 +
  1835 + if (!norecursion && options.defaultDate) {
  1836 + date = _this.strToDateTime(options.defaultDate);
  1837 + d.setFullYear(date.getFullYear());
  1838 + d.setMonth(date.getMonth());
  1839 + d.setDate(date.getDate());
  1840 + }
  1841 +
  1842 + if (options.yearOffset) {
  1843 + d.setFullYear(d.getFullYear() + options.yearOffset);
  1844 + }
  1845 +
  1846 + if (!norecursion && options.defaultTime) {
  1847 + time = _this.strtotime(options.defaultTime);
  1848 + d.setHours(time.getHours());
  1849 + d.setMinutes(time.getMinutes());
  1850 + }
  1851 + return d;
  1852 + };
  1853 +
  1854 + _this.isValidDate = function (d) {
  1855 + if (Object.prototype.toString.call(d) !== "[object Date]") {
  1856 + return false;
  1857 + }
  1858 + return !isNaN(d.getTime());
  1859 + };
  1860 +
  1861 + _this.setCurrentTime = function (dTime, requireValidDate) {
  1862 + if (typeof dTime === 'string') {
  1863 + _this.currentTime = _this.strToDateTime(dTime);
  1864 + }
  1865 + else if (_this.isValidDate(dTime)) {
  1866 + _this.currentTime = dTime;
  1867 + }
  1868 + else if (!dTime && !requireValidDate && options.allowBlank) {
  1869 + _this.currentTime = null;
  1870 + }
  1871 + else {
  1872 + _this.currentTime = _this.now();
  1873 + }
  1874 +
  1875 + datetimepicker.trigger('xchange.xdsoft');
  1876 + };
  1877 +
  1878 + _this.empty = function () {
  1879 + _this.currentTime = null;
  1880 + };
  1881 +
  1882 + _this.getCurrentTime = function (dTime) {
  1883 + return _this.currentTime;
  1884 + };
  1885 +
  1886 + _this.nextMonth = function () {
  1887 +
  1888 + if (_this.currentTime === undefined || _this.currentTime === null) {
  1889 + _this.currentTime = _this.now();
  1890 + }
  1891 +
  1892 + var month = _this.currentTime.getMonth() + 1,
  1893 + year;
  1894 + if (month === 12) {
  1895 + _this.currentTime.setFullYear(_this.currentTime.getFullYear() + 1);
  1896 + month = 0;
  1897 + }
  1898 +
  1899 + year = _this.currentTime.getFullYear();
  1900 +
  1901 + _this.currentTime.setDate(
  1902 + Math.min(
  1903 + new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),
  1904 + _this.currentTime.getDate()
  1905 + )
  1906 + );
  1907 + _this.currentTime.setMonth(month);
  1908 +
  1909 + if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
  1910 + options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
  1911 + }
  1912 +
  1913 + if (year !== _this.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {
  1914 + options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
  1915 + }
  1916 +
  1917 + datetimepicker.trigger('xchange.xdsoft');
  1918 + return month;
  1919 + };
  1920 +
  1921 + _this.prevMonth = function () {
  1922 +
  1923 + if (_this.currentTime === undefined || _this.currentTime === null) {
  1924 + _this.currentTime = _this.now();
  1925 + }
  1926 +
  1927 + var month = _this.currentTime.getMonth() - 1;
  1928 + if (month === -1) {
  1929 + _this.currentTime.setFullYear(_this.currentTime.getFullYear() - 1);
  1930 + month = 11;
  1931 + }
  1932 + _this.currentTime.setDate(
  1933 + Math.min(
  1934 + new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),
  1935 + _this.currentTime.getDate()
  1936 + )
  1937 + );
  1938 + _this.currentTime.setMonth(month);
  1939 + if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
  1940 + options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
  1941 + }
  1942 + datetimepicker.trigger('xchange.xdsoft');
  1943 + return month;
  1944 + };
  1945 +
  1946 + _this.getWeekOfYear = function (datetime) {
  1947 + if (options.onGetWeekOfYear && $.isFunction(options.onGetWeekOfYear)) {
  1948 + var week = options.onGetWeekOfYear.call(datetimepicker, datetime);
  1949 + if (typeof week !== 'undefined') {
  1950 + return week;
  1951 + }
  1952 + }
  1953 + var onejan = new Date(datetime.getFullYear(), 0, 1);
  1954 + //First week of the year is th one with the first Thursday according to ISO8601
  1955 + if(onejan.getDay()!=4)
  1956 + onejan.setMonth(0, 1 + ((4 - onejan.getDay()+ 7) % 7));
  1957 + return Math.ceil((((datetime - onejan) / 86400000) + onejan.getDay() + 1) / 7);
  1958 + };
  1959 +
  1960 + _this.strToDateTime = function (sDateTime) {
  1961 + var tmpDate = [], timeOffset, currentTime;
  1962 +
  1963 + if (sDateTime && sDateTime instanceof Date && _this.isValidDate(sDateTime)) {
  1964 + return sDateTime;
  1965 + }
  1966 +
  1967 + tmpDate = /^(\+|\-)(.*)$/.exec(sDateTime);
  1968 + if (tmpDate) {
  1969 + tmpDate[2] = dateHelper.parseDate(tmpDate[2], options.formatDate);
  1970 + }
  1971 + if (tmpDate && tmpDate[2]) {
  1972 + timeOffset = tmpDate[2].getTime() - (tmpDate[2].getTimezoneOffset()) * 60000;
  1973 + currentTime = new Date((_this.now(true)).getTime() + parseInt(tmpDate[1] + '1', 10) * timeOffset);
  1974 + } else {
  1975 + currentTime = sDateTime ? dateHelper.parseDate(sDateTime, options.format) : _this.now();
  1976 + }
  1977 +
  1978 + if (!_this.isValidDate(currentTime)) {
  1979 + currentTime = _this.now();
  1980 + }
  1981 +
  1982 + return currentTime;
  1983 + };
  1984 +
  1985 + _this.strToDate = function (sDate) {
  1986 + if (sDate && sDate instanceof Date && _this.isValidDate(sDate)) {
  1987 + return sDate;
  1988 + }
  1989 +
  1990 + var currentTime = sDate ? dateHelper.parseDate(sDate, options.formatDate) : _this.now(true);
  1991 + if (!_this.isValidDate(currentTime)) {
  1992 + currentTime = _this.now(true);
  1993 + }
  1994 + return currentTime;
  1995 + };
  1996 +
  1997 + _this.strtotime = function (sTime) {
  1998 + if (sTime && sTime instanceof Date && _this.isValidDate(sTime)) {
  1999 + return sTime;
  2000 + }
  2001 + var currentTime = sTime ? dateHelper.parseDate(sTime, options.formatTime) : _this.now(true);
  2002 + if (!_this.isValidDate(currentTime)) {
  2003 + currentTime = _this.now(true);
  2004 + }
  2005 + return currentTime;
  2006 + };
  2007 +
  2008 + _this.str = function () {
  2009 + return dateHelper.formatDate(_this.currentTime, options.format);
  2010 + };
  2011 + _this.currentTime = this.now();
  2012 + };
  2013 +
  2014 + _xdsoft_datetime = new XDSoft_datetime();
  2015 +
  2016 + applyButton.on('touchend click', function (e) {//pathbrite
  2017 + e.preventDefault();
  2018 + datetimepicker.data('changed', true);
  2019 + _xdsoft_datetime.setCurrentTime(getCurrentValue());
  2020 + input.val(_xdsoft_datetime.str());
  2021 + datetimepicker.trigger('close.xdsoft');
  2022 + });
  2023 + month_picker
  2024 + .find('.xdsoft_today_button')
  2025 + .on('touchend mousedown.xdsoft', function () {
  2026 + datetimepicker.data('changed', true);
  2027 + _xdsoft_datetime.setCurrentTime(0, true);
  2028 + datetimepicker.trigger('afterOpen.xdsoft');
  2029 + }).on('dblclick.xdsoft', function () {
  2030 + var currentDate = _xdsoft_datetime.getCurrentTime(), minDate, maxDate;
  2031 + currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());
  2032 + minDate = _xdsoft_datetime.strToDate(options.minDate);
  2033 + minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());
  2034 + if (currentDate < minDate) {
  2035 + return;
  2036 + }
  2037 + maxDate = _xdsoft_datetime.strToDate(options.maxDate);
  2038 + maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate());
  2039 + if (currentDate > maxDate) {
  2040 + return;
  2041 + }
  2042 + input.val(_xdsoft_datetime.str());
  2043 + input.trigger('change');
  2044 + datetimepicker.trigger('close.xdsoft');
  2045 + });
  2046 + month_picker
  2047 + .find('.xdsoft_prev,.xdsoft_next')
  2048 + .on('touchend mousedown.xdsoft', function () {
  2049 + var $this = $(this),
  2050 + timer = 0,
  2051 + stop = false;
  2052 +
  2053 + (function arguments_callee1(v) {
  2054 + if ($this.hasClass(options.next)) {
  2055 + _xdsoft_datetime.nextMonth();
  2056 + } else if ($this.hasClass(options.prev)) {
  2057 + _xdsoft_datetime.prevMonth();
  2058 + }
  2059 + if (options.monthChangeSpinner) {
  2060 + if (!stop) {
  2061 + timer = setTimeout(arguments_callee1, v || 100);
  2062 + }
  2063 + }
  2064 + }(500));
  2065 +
  2066 + $([document.body, window]).on('touchend mouseup.xdsoft', function arguments_callee2() {
  2067 + clearTimeout(timer);
  2068 + stop = true;
  2069 + $([document.body, window]).off('touchend mouseup.xdsoft', arguments_callee2);
  2070 + });
  2071 + });
  2072 +
  2073 + timepicker
  2074 + .find('.xdsoft_prev,.xdsoft_next')
  2075 + .on('touchend mousedown.xdsoft', function () {
  2076 + var $this = $(this),
  2077 + timer = 0,
  2078 + stop = false,
  2079 + period = 110;
  2080 + (function arguments_callee4(v) {
  2081 + var pheight = timeboxparent[0].clientHeight,
  2082 + height = timebox[0].offsetHeight,
  2083 + top = Math.abs(parseInt(timebox.css('marginTop'), 10));
  2084 + if ($this.hasClass(options.next) && (height - pheight) - options.timeHeightInTimePicker >= top) {
  2085 + timebox.css('marginTop', '-' + (top + options.timeHeightInTimePicker) + 'px');
  2086 + } else if ($this.hasClass(options.prev) && top - options.timeHeightInTimePicker >= 0) {
  2087 + timebox.css('marginTop', '-' + (top - options.timeHeightInTimePicker) + 'px');
  2088 + }
  2089 + /**
  2090 + * Fixed bug:
  2091 + * When using css3 transition, it will cause a bug that you cannot scroll the timepicker list.
  2092 + * The reason is that the transition-duration time, if you set it to 0, all things fine, otherwise, this
  2093 + * would cause a bug when you use jquery.css method.
  2094 + * Let's say: * { transition: all .5s ease; }
  2095 + * jquery timebox.css('marginTop') will return the original value which is before you clicking the next/prev button,
  2096 + * meanwhile the timebox[0].style.marginTop will return the right value which is after you clicking the
  2097 + * next/prev button.
  2098 + *
  2099 + * What we should do:
  2100 + * Replace timebox.css('marginTop') with timebox[0].style.marginTop.
  2101 + */
  2102 + timeboxparent.trigger('scroll_element.xdsoft_scroller', [Math.abs(parseInt(timebox[0].style.marginTop, 10) / (height - pheight))]);
  2103 + period = (period > 10) ? 10 : period - 10;
  2104 + if (!stop) {
  2105 + timer = setTimeout(arguments_callee4, v || period);
  2106 + }
  2107 + }(500));
  2108 + $([document.body, window]).on('touchend mouseup.xdsoft', function arguments_callee5() {
  2109 + clearTimeout(timer);
  2110 + stop = true;
  2111 + $([document.body, window])
  2112 + .off('touchend mouseup.xdsoft', arguments_callee5);
  2113 + });
  2114 + });
  2115 +
  2116 + xchangeTimer = 0;
  2117 + // base handler - generating a calendar and timepicker
  2118 + datetimepicker
  2119 + .on('xchange.xdsoft', function (event) {
  2120 + clearTimeout(xchangeTimer);
  2121 + xchangeTimer = setTimeout(function () {
  2122 +
  2123 + if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) {
  2124 + //In case blanks are allowed, delay construction until we have a valid date
  2125 + if (options.allowBlank)
  2126 + return;
  2127 +
  2128 + _xdsoft_datetime.currentTime = _xdsoft_datetime.now();
  2129 + }
  2130 +
  2131 + var table = '',
  2132 + start = new Date(_xdsoft_datetime.currentTime.getFullYear(), _xdsoft_datetime.currentTime.getMonth(), 1, 12, 0, 0),
  2133 + i = 0,
  2134 + j,
  2135 + today = _xdsoft_datetime.now(),
  2136 + maxDate = false,
  2137 + minDate = false,
  2138 + hDate,
  2139 + day,
  2140 + d,
  2141 + y,
  2142 + m,
  2143 + w,
  2144 + classes = [],
  2145 + customDateSettings,
  2146 + newRow = true,
  2147 + time = '',
  2148 + h = '',
  2149 + line_time,
  2150 + description;
  2151 +
  2152 + while (start.getDay() !== options.dayOfWeekStart) {
  2153 + start.setDate(start.getDate() - 1);
  2154 + }
  2155 +
  2156 + table += '<table><thead><tr>';
  2157 +
  2158 + if (options.weeks) {
  2159 + table += '<th></th>';
  2160 + }
  2161 +
  2162 + for (j = 0; j < 7; j += 1) {
  2163 + table += '<th>' + options.i18n[globalLocale].dayOfWeekShort[(j + options.dayOfWeekStart) % 7] + '</th>';
  2164 + }
  2165 +
  2166 + table += '</tr></thead>';
  2167 + table += '<tbody>';
  2168 +
  2169 + if (options.maxDate !== false) {
  2170 + maxDate = _xdsoft_datetime.strToDate(options.maxDate);
  2171 + maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59, 59, 999);
  2172 + }
  2173 +
  2174 + if (options.minDate !== false) {
  2175 + minDate = _xdsoft_datetime.strToDate(options.minDate);
  2176 + minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());
  2177 + }
  2178 +
  2179 + while (i < _xdsoft_datetime.currentTime.countDaysInMonth() || start.getDay() !== options.dayOfWeekStart || _xdsoft_datetime.currentTime.getMonth() === start.getMonth()) {
  2180 + classes = [];
  2181 + i += 1;
  2182 +
  2183 + day = start.getDay();
  2184 + d = start.getDate();
  2185 + y = start.getFullYear();
  2186 + m = start.getMonth();
  2187 + w = _xdsoft_datetime.getWeekOfYear(start);
  2188 + description = '';
  2189 +
  2190 + classes.push('xdsoft_date');
  2191 +
  2192 + if (options.beforeShowDay && $.isFunction(options.beforeShowDay.call)) {
  2193 + customDateSettings = options.beforeShowDay.call(datetimepicker, start);
  2194 + } else {
  2195 + customDateSettings = null;
  2196 + }
  2197 +
  2198 + if(options.allowDateRe && Object.prototype.toString.call(options.allowDateRe) === "[object RegExp]"){
  2199 + if(!options.allowDateRe.test(dateHelper.formatDate(start, options.formatDate))){
  2200 + classes.push('xdsoft_disabled');
  2201 + }
  2202 + } else if(options.allowDates && options.allowDates.length>0){
  2203 + if(options.allowDates.indexOf(dateHelper.formatDate(start, options.formatDate)) === -1){
  2204 + classes.push('xdsoft_disabled');
  2205 + }
  2206 + } else if ((maxDate !== false && start > maxDate) || (minDate !== false && start < minDate) || (customDateSettings && customDateSettings[0] === false)) {
  2207 + classes.push('xdsoft_disabled');
  2208 + } else if (options.disabledDates.indexOf(dateHelper.formatDate(start, options.formatDate)) !== -1) {
  2209 + classes.push('xdsoft_disabled');
  2210 + } else if (options.disabledWeekDays.indexOf(day) !== -1) {
  2211 + classes.push('xdsoft_disabled');
  2212 + }else if (input.is('[readonly]')) {
  2213 + classes.push('xdsoft_disabled');
  2214 + }
  2215 +
  2216 + if (customDateSettings && customDateSettings[1] !== "") {
  2217 + classes.push(customDateSettings[1]);
  2218 + }
  2219 +
  2220 + if (_xdsoft_datetime.currentTime.getMonth() !== m) {
  2221 + classes.push('xdsoft_other_month');
  2222 + }
  2223 +
  2224 + if ((options.defaultSelect || datetimepicker.data('changed')) && dateHelper.formatDate(_xdsoft_datetime.currentTime, options.formatDate) === dateHelper.formatDate(start, options.formatDate)) {
  2225 + classes.push('xdsoft_current');
  2226 + }
  2227 +
  2228 + if (dateHelper.formatDate(today, options.formatDate) === dateHelper.formatDate(start, options.formatDate)) {
  2229 + classes.push('xdsoft_today');
  2230 + }
  2231 +
  2232 + if (start.getDay() === 0 || start.getDay() === 6 || options.weekends.indexOf(dateHelper.formatDate(start, options.formatDate)) !== -1) {
  2233 + classes.push('xdsoft_weekend');
  2234 + }
  2235 +
  2236 + if (options.highlightedDates[dateHelper.formatDate(start, options.formatDate)] !== undefined) {
  2237 + hDate = options.highlightedDates[dateHelper.formatDate(start, options.formatDate)];
  2238 + classes.push(hDate.style === undefined ? 'xdsoft_highlighted_default' : hDate.style);
  2239 + description = hDate.desc === undefined ? '' : hDate.desc;
  2240 + }
  2241 +
  2242 + if (options.beforeShowDay && $.isFunction(options.beforeShowDay)) {
  2243 + classes.push(options.beforeShowDay(start));
  2244 + }
  2245 +
  2246 + if (newRow) {
  2247 + table += '<tr>';
  2248 + newRow = false;
  2249 + if (options.weeks) {
  2250 + table += '<th>' + w + '</th>';
  2251 + }
  2252 + }
  2253 +
  2254 + table += '<td data-date="' + d + '" data-month="' + m + '" data-year="' + y + '"' + ' class="xdsoft_date xdsoft_day_of_week' + start.getDay() + ' ' + classes.join(' ') + '" title="' + description + '">' +
  2255 + '<div>' + d + '</div>' +
  2256 + '</td>';
  2257 +
  2258 + if (start.getDay() === options.dayOfWeekStartPrev) {
  2259 + table += '</tr>';
  2260 + newRow = true;
  2261 + }
  2262 +
  2263 + start.setDate(d + 1);
  2264 + }
  2265 + table += '</tbody></table>';
  2266 +
  2267 + calendar.html(table);
  2268 +
  2269 + month_picker.find('.xdsoft_label span').eq(0).text(options.i18n[globalLocale].months[_xdsoft_datetime.currentTime.getMonth()]);
  2270 + month_picker.find('.xdsoft_label span').eq(1).text(_xdsoft_datetime.currentTime.getFullYear());
  2271 +
  2272 + // generate timebox
  2273 + time = '';
  2274 + h = '';
  2275 + m = '';
  2276 +
  2277 + line_time = function line_time(h, m) {
  2278 + var now = _xdsoft_datetime.now(), optionDateTime, current_time,
  2279 + isALlowTimesInit = options.allowTimes && $.isArray(options.allowTimes) && options.allowTimes.length;
  2280 + now.setHours(h);
  2281 + h = parseInt(now.getHours(), 10);
  2282 + now.setMinutes(m);
  2283 + m = parseInt(now.getMinutes(), 10);
  2284 + optionDateTime = new Date(_xdsoft_datetime.currentTime);
  2285 + optionDateTime.setHours(h);
  2286 + optionDateTime.setMinutes(m);
  2287 + classes = [];
  2288 + if ((options.minDateTime !== false && options.minDateTime > optionDateTime) || (options.maxTime !== false && _xdsoft_datetime.strtotime(options.maxTime).getTime() < now.getTime()) || (options.minTime !== false && _xdsoft_datetime.strtotime(options.minTime).getTime() > now.getTime())) {
  2289 + classes.push('xdsoft_disabled');
  2290 + } else if ((options.minDateTime !== false && options.minDateTime > optionDateTime) || ((options.disabledMinTime !== false && now.getTime() > _xdsoft_datetime.strtotime(options.disabledMinTime).getTime()) && (options.disabledMaxTime !== false && now.getTime() < _xdsoft_datetime.strtotime(options.disabledMaxTime).getTime()))) {
  2291 + classes.push('xdsoft_disabled');
  2292 + } else if (input.is('[readonly]')) {
  2293 + classes.push('xdsoft_disabled');
  2294 + }
  2295 +
  2296 + current_time = new Date(_xdsoft_datetime.currentTime);
  2297 + current_time.setHours(parseInt(_xdsoft_datetime.currentTime.getHours(), 10));
  2298 +
  2299 + if (!isALlowTimesInit) {
  2300 + current_time.setMinutes(Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step);
  2301 + }
  2302 +
  2303 + if ((options.initTime || options.defaultSelect || datetimepicker.data('changed')) && current_time.getHours() === parseInt(h, 10) && ((!isALlowTimesInit && options.step > 59) || current_time.getMinutes() === parseInt(m, 10))) {
  2304 + if (options.defaultSelect || datetimepicker.data('changed')) {
  2305 + classes.push('xdsoft_current');
  2306 + } else if (options.initTime) {
  2307 + classes.push('xdsoft_init_time');
  2308 + }
  2309 + }
  2310 + if (parseInt(today.getHours(), 10) === parseInt(h, 10) && parseInt(today.getMinutes(), 10) === parseInt(m, 10)) {
  2311 + classes.push('xdsoft_today');
  2312 + }
  2313 + time += '<div class="xdsoft_time ' + classes.join(' ') + '" data-hour="' + h + '" data-minute="' + m + '">' + dateHelper.formatDate(now, options.formatTime) + '</div>';
  2314 + };
  2315 +
  2316 + if (!options.allowTimes || !$.isArray(options.allowTimes) || !options.allowTimes.length) {
  2317 + for (i = 0, j = 0; i < (options.hours12 ? 12 : 24); i += 1) {
  2318 + for (j = 0; j < 60; j += options.step) {
  2319 + h = (i < 10 ? '0' : '') + i;
  2320 + m = (j < 10 ? '0' : '') + j;
  2321 + line_time(h, m);
  2322 + }
  2323 + }
  2324 + } else {
  2325 + for (i = 0; i < options.allowTimes.length; i += 1) {
  2326 + h = _xdsoft_datetime.strtotime(options.allowTimes[i]).getHours();
  2327 + m = _xdsoft_datetime.strtotime(options.allowTimes[i]).getMinutes();
  2328 + line_time(h, m);
  2329 + }
  2330 + }
  2331 +
  2332 + timebox.html(time);
  2333 +
  2334 + opt = '';
  2335 + i = 0;
  2336 +
  2337 + for (i = parseInt(options.yearStart, 10) + options.yearOffset; i <= parseInt(options.yearEnd, 10) + options.yearOffset; i += 1) {
  2338 + opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getFullYear() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + i + '</div>';
  2339 + }
  2340 + yearselect.children().eq(0)
  2341 + .html(opt);
  2342 +
  2343 + for (i = parseInt(options.monthStart, 10), opt = ''; i <= parseInt(options.monthEnd, 10); i += 1) {
  2344 + opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getMonth() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + options.i18n[globalLocale].months[i] + '</div>';
  2345 + }
  2346 + monthselect.children().eq(0).html(opt);
  2347 + $(datetimepicker)
  2348 + .trigger('generate.xdsoft');
  2349 + }, 10);
  2350 + event.stopPropagation();
  2351 + })
  2352 + .on('afterOpen.xdsoft', function () {
  2353 + if (options.timepicker) {
  2354 + var classType, pheight, height, top;
  2355 + if (timebox.find('.xdsoft_current').length) {
  2356 + classType = '.xdsoft_current';
  2357 + } else if (timebox.find('.xdsoft_init_time').length) {
  2358 + classType = '.xdsoft_init_time';
  2359 + }
  2360 + if (classType) {
  2361 + pheight = timeboxparent[0].clientHeight;
  2362 + height = timebox[0].offsetHeight;
  2363 + top = timebox.find(classType).index() * options.timeHeightInTimePicker + 1;
  2364 + if ((height - pheight) < top) {
  2365 + top = height - pheight;
  2366 + }
  2367 + timeboxparent.trigger('scroll_element.xdsoft_scroller', [parseInt(top, 10) / (height - pheight)]);
  2368 + } else {
  2369 + timeboxparent.trigger('scroll_element.xdsoft_scroller', [0]);
  2370 + }
  2371 + }
  2372 + });
  2373 +
  2374 + timerclick = 0;
  2375 + calendar
  2376 + .on('touchend click.xdsoft', 'td', function (xdevent) {
  2377 + xdevent.stopPropagation(); // Prevents closing of Pop-ups, Modals and Flyouts in Bootstrap
  2378 + timerclick += 1;
  2379 + var $this = $(this),
  2380 + currentTime = _xdsoft_datetime.currentTime;
  2381 +
  2382 + if (currentTime === undefined || currentTime === null) {
  2383 + _xdsoft_datetime.currentTime = _xdsoft_datetime.now();
  2384 + currentTime = _xdsoft_datetime.currentTime;
  2385 + }
  2386 +
  2387 + if ($this.hasClass('xdsoft_disabled')) {
  2388 + return false;
  2389 + }
  2390 +
  2391 + currentTime.setDate(1);
  2392 + currentTime.setFullYear($this.data('year'));
  2393 + currentTime.setMonth($this.data('month'));
  2394 + currentTime.setDate($this.data('date'));
  2395 +
  2396 + datetimepicker.trigger('select.xdsoft', [currentTime]);
  2397 +
  2398 + input.val(_xdsoft_datetime.str());
  2399 +
  2400 + if (options.onSelectDate && $.isFunction(options.onSelectDate)) {
  2401 + options.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
  2402 + }
  2403 +
  2404 + datetimepicker.data('changed', true);
  2405 + datetimepicker.trigger('xchange.xdsoft');
  2406 + datetimepicker.trigger('changedatetime.xdsoft');
  2407 + if ((timerclick > 1 || (options.closeOnDateSelect === true || (options.closeOnDateSelect === false && !options.timepicker))) && !options.inline) {
  2408 + datetimepicker.trigger('close.xdsoft');
  2409 + }
  2410 + setTimeout(function () {
  2411 + timerclick = 0;
  2412 + }, 200);
  2413 + });
  2414 +
  2415 + timebox
  2416 + .on('touchmove', 'div', function () { currentlyScrollingTimeDiv = true; })
  2417 + .on('touchend click.xdsoft', 'div', function (xdevent) {
  2418 + xdevent.stopPropagation();
  2419 + if (currentlyScrollingTimeDiv) {
  2420 + currentlyScrollingTimeDiv = false;
  2421 + return;
  2422 + }
  2423 + var $this = $(this),
  2424 + currentTime = _xdsoft_datetime.currentTime;
  2425 +
  2426 + if (currentTime === undefined || currentTime === null) {
  2427 + _xdsoft_datetime.currentTime = _xdsoft_datetime.now();
  2428 + currentTime = _xdsoft_datetime.currentTime;
  2429 + }
  2430 +
  2431 + if ($this.hasClass('xdsoft_disabled')) {
  2432 + return false;
  2433 + }
  2434 + currentTime.setHours($this.data('hour'));
  2435 + currentTime.setMinutes($this.data('minute'));
  2436 + datetimepicker.trigger('select.xdsoft', [currentTime]);
  2437 +
  2438 + datetimepicker.data('input').val(_xdsoft_datetime.str());
  2439 +
  2440 + if (options.onSelectTime && $.isFunction(options.onSelectTime)) {
  2441 + options.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
  2442 + }
  2443 + datetimepicker.data('changed', true);
  2444 + datetimepicker.trigger('xchange.xdsoft');
  2445 + datetimepicker.trigger('changedatetime.xdsoft');
  2446 + if (options.inline !== true && options.closeOnTimeSelect === true) {
  2447 + datetimepicker.trigger('close.xdsoft');
  2448 + }
  2449 + });
  2450 +
  2451 + datepicker
  2452 + .on('mousewheel.xdsoft', function (event) {
  2453 + if (!options.scrollMonth) {
  2454 + return true;
  2455 + }
  2456 + if (event.deltaY < 0) {
  2457 + _xdsoft_datetime.nextMonth();
  2458 + } else {
  2459 + _xdsoft_datetime.prevMonth();
  2460 + }
  2461 + return false;
  2462 + });
  2463 +
  2464 + input
  2465 + .on('mousewheel.xdsoft', function (event) {
  2466 + if (!options.scrollInput) {
  2467 + return true;
  2468 + }
  2469 + if (!options.datepicker && options.timepicker) {
  2470 + current_time_index = timebox.find('.xdsoft_current').length ? timebox.find('.xdsoft_current').eq(0).index() : 0;
  2471 + if (current_time_index + event.deltaY >= 0 && current_time_index + event.deltaY < timebox.children().length) {
  2472 + current_time_index += event.deltaY;
  2473 + }
  2474 + if (timebox.children().eq(current_time_index).length) {
  2475 + timebox.children().eq(current_time_index).trigger('mousedown');
  2476 + }
  2477 + return false;
  2478 + }
  2479 + if (options.datepicker && !options.timepicker) {
  2480 + datepicker.trigger(event, [event.deltaY, event.deltaX, event.deltaY]);
  2481 + if (input.val) {
  2482 + input.val(_xdsoft_datetime.str());
  2483 + }
  2484 + datetimepicker.trigger('changedatetime.xdsoft');
  2485 + return false;
  2486 + }
  2487 + });
  2488 +
  2489 + datetimepicker
  2490 + .on('changedatetime.xdsoft', function (event) {
  2491 + if (options.onChangeDateTime && $.isFunction(options.onChangeDateTime)) {
  2492 + var $input = datetimepicker.data('input');
  2493 + options.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input, event);
  2494 + delete options.value;
  2495 + $input.trigger('change');
  2496 + }
  2497 + })
  2498 + .on('generate.xdsoft', function () {
  2499 + if (options.onGenerate && $.isFunction(options.onGenerate)) {
  2500 + options.onGenerate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
  2501 + }
  2502 + if (triggerAfterOpen) {
  2503 + datetimepicker.trigger('afterOpen.xdsoft');
  2504 + triggerAfterOpen = false;
  2505 + }
  2506 + })
  2507 + .on('click.xdsoft', function (xdevent) {
  2508 + xdevent.stopPropagation();
  2509 + });
  2510 +
  2511 + current_time_index = 0;
  2512 +
  2513 + /**
  2514 + * Runs the callback for each of the specified node's ancestors.
  2515 + *
  2516 + * Return FALSE from the callback to stop ascending.
  2517 + *
  2518 + * @param {DOMNode} node
  2519 + * @param {Function} callback
  2520 + * @returns {undefined}
  2521 + */
  2522 + forEachAncestorOf = function (node, callback) {
  2523 + do {
  2524 + node = node.parentNode;
  2525 +
  2526 + if (callback(node) === false) {
  2527 + break;
  2528 + }
  2529 + } while (node.nodeName !== 'HTML');
  2530 + };
  2531 +
  2532 + /**
  2533 + * Sets the position of the picker.
  2534 + *
  2535 + * @returns {undefined}
  2536 + */
  2537 + setPos = function () {
  2538 + var dateInputOffset,
  2539 + dateInputElem,
  2540 + verticalPosition,
  2541 + left,
  2542 + position,
  2543 + datetimepickerElem,
  2544 + dateInputHasFixedAncestor,
  2545 + $dateInput,
  2546 + windowWidth,
  2547 + verticalAnchorEdge,
  2548 + datetimepickerCss,
  2549 + windowHeight,
  2550 + windowScrollTop;
  2551 +
  2552 + $dateInput = datetimepicker.data('input');
  2553 + dateInputOffset = $dateInput.offset();
  2554 + dateInputElem = $dateInput[0];
  2555 +
  2556 + verticalAnchorEdge = 'top';
  2557 + verticalPosition = (dateInputOffset.top + dateInputElem.offsetHeight) - 1;
  2558 + left = dateInputOffset.left;
  2559 + position = "absolute";
  2560 +
  2561 + windowWidth = $(window).width();
  2562 + windowHeight = $(window).height();
  2563 + windowScrollTop = $(window).scrollTop();
  2564 +
  2565 + if ((document.documentElement.clientWidth - dateInputOffset.left) < datepicker.parent().outerWidth(true)) {
  2566 + var diff = datepicker.parent().outerWidth(true) - dateInputElem.offsetWidth;
  2567 + left = left - diff;
  2568 + }
  2569 +
  2570 + if ($dateInput.parent().css('direction') === 'rtl') {
  2571 + left -= (datetimepicker.outerWidth() - $dateInput.outerWidth());
  2572 + }
  2573 +
  2574 + if (options.fixed) {
  2575 + verticalPosition -= windowScrollTop;
  2576 + left -= $(window).scrollLeft();
  2577 + position = "fixed";
  2578 + } else {
  2579 + dateInputHasFixedAncestor = false;
  2580 +
  2581 + forEachAncestorOf(dateInputElem, function (ancestorNode) {
  2582 + if (window.getComputedStyle(ancestorNode).getPropertyValue('position') === 'fixed') {
  2583 + dateInputHasFixedAncestor = true;
  2584 + return false;
  2585 + }
  2586 + });
  2587 +
  2588 + if (dateInputHasFixedAncestor) {
  2589 + position = 'fixed';
  2590 +
  2591 + //If the picker won't fit entirely within the viewport then display it above the date input.
  2592 + if (verticalPosition + datetimepicker.outerHeight() > windowHeight + windowScrollTop) {
  2593 + verticalAnchorEdge = 'bottom';
  2594 + verticalPosition = (windowHeight + windowScrollTop) - dateInputOffset.top;
  2595 + } else {
  2596 + verticalPosition -= windowScrollTop;
  2597 + }
  2598 + } else {
  2599 + if (verticalPosition + dateInputElem.offsetHeight > windowHeight + windowScrollTop) {
  2600 + verticalPosition = dateInputOffset.top - dateInputElem.offsetHeight + 1;
  2601 + }
  2602 + }
  2603 +
  2604 + if (verticalPosition < 0) {
  2605 + verticalPosition = 0;
  2606 + }
  2607 +
  2608 + if (left + dateInputElem.offsetWidth > windowWidth) {
  2609 + left = windowWidth - dateInputElem.offsetWidth;
  2610 + }
  2611 + }
  2612 +
  2613 + datetimepickerElem = datetimepicker[0];
  2614 +
  2615 + forEachAncestorOf(datetimepickerElem, function (ancestorNode) {
  2616 + var ancestorNodePosition;
  2617 +
  2618 + ancestorNodePosition = window.getComputedStyle(ancestorNode).getPropertyValue('position');
  2619 +
  2620 + if (ancestorNodePosition === 'relative' && windowWidth >= ancestorNode.offsetWidth) {
  2621 + left = left - ((windowWidth - ancestorNode.offsetWidth) / 2);
  2622 + return false;
  2623 + }
  2624 + });
  2625 +
  2626 + datetimepickerCss = {
  2627 + position: position,
  2628 + left: left,
  2629 + top: '', //Initialize to prevent previous values interfering with new ones.
  2630 + bottom: '' //Initialize to prevent previous values interfering with new ones.
  2631 + };
  2632 +
  2633 + datetimepickerCss[verticalAnchorEdge] = verticalPosition;
  2634 +
  2635 + datetimepicker.css(datetimepickerCss);
  2636 + };
  2637 +
  2638 + datetimepicker
  2639 + .on('open.xdsoft', function (event) {
  2640 + var onShow = true;
  2641 + if (options.onShow && $.isFunction(options.onShow)) {
  2642 + onShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);
  2643 + }
  2644 + if (onShow !== false) {
  2645 + datetimepicker.show();
  2646 + setPos();
  2647 + $(window)
  2648 + .off('resize.xdsoft', setPos)
  2649 + .on('resize.xdsoft', setPos);
  2650 +
  2651 + if (options.closeOnWithoutClick) {
  2652 + $([document.body, window]).on('touchstart mousedown.xdsoft', function arguments_callee6() {
  2653 + datetimepicker.trigger('close.xdsoft');
  2654 + $([document.body, window]).off('touchstart mousedown.xdsoft', arguments_callee6);
  2655 + });
  2656 + }
  2657 + }
  2658 + })
  2659 + .on('close.xdsoft', function (event) {
  2660 + var onClose = true;
  2661 + month_picker
  2662 + .find('.xdsoft_month,.xdsoft_year')
  2663 + .find('.xdsoft_select')
  2664 + .hide();
  2665 + if (options.onClose && $.isFunction(options.onClose)) {
  2666 + onClose = options.onClose.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);
  2667 + }
  2668 + if (onClose !== false && !options.opened && !options.inline) {
  2669 + datetimepicker.hide();
  2670 + }
  2671 + event.stopPropagation();
  2672 + })
  2673 + .on('toggle.xdsoft', function () {
  2674 + if (datetimepicker.is(':visible')) {
  2675 + datetimepicker.trigger('close.xdsoft');
  2676 + } else {
  2677 + datetimepicker.trigger('open.xdsoft');
  2678 + }
  2679 + })
  2680 + .data('input', input);
  2681 +
  2682 + timer = 0;
  2683 +
  2684 + datetimepicker.data('xdsoft_datetime', _xdsoft_datetime);
  2685 + datetimepicker.setOptions(options);
  2686 +
  2687 + function getCurrentValue() {
  2688 + var ct = false, time;
  2689 +
  2690 + if (options.startDate) {
  2691 + ct = _xdsoft_datetime.strToDate(options.startDate);
  2692 + } else {
  2693 + ct = options.value || ((input && input.val && input.val()) ? input.val() : '');
  2694 + if (ct) {
  2695 + ct = _xdsoft_datetime.strToDateTime(ct);
  2696 + } else if (options.defaultDate) {
  2697 + ct = _xdsoft_datetime.strToDateTime(options.defaultDate);
  2698 + if (options.defaultTime) {
  2699 + time = _xdsoft_datetime.strtotime(options.defaultTime);
  2700 + ct.setHours(time.getHours());
  2701 + ct.setMinutes(time.getMinutes());
  2702 + }
  2703 + }
  2704 + }
  2705 +
  2706 + if (ct && _xdsoft_datetime.isValidDate(ct)) {
  2707 + datetimepicker.data('changed', true);
  2708 + } else {
  2709 + ct = '';
  2710 + }
  2711 +
  2712 + return ct || 0;
  2713 + }
  2714 +
  2715 + function setMask(options) {
  2716 +
  2717 + var isValidValue = function (mask, value) {
  2718 + var reg = mask
  2719 + .replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g, '\\$1')
  2720 + .replace(/_/g, '{digit+}')
  2721 + .replace(/([0-9]{1})/g, '{digit$1}')
  2722 + .replace(/\{digit([0-9]{1})\}/g, '[0-$1_]{1}')
  2723 + .replace(/\{digit[\+]\}/g, '[0-9_]{1}');
  2724 + return (new RegExp(reg)).test(value);
  2725 + },
  2726 + getCaretPos = function (input) {
  2727 + try {
  2728 + if (document.selection && document.selection.createRange) {
  2729 + var range = document.selection.createRange();
  2730 + return range.getBookmark().charCodeAt(2) - 2;
  2731 + }
  2732 + if (input.setSelectionRange) {
  2733 + return input.selectionStart;
  2734 + }
  2735 + } catch (e) {
  2736 + return 0;
  2737 + }
  2738 + },
  2739 + setCaretPos = function (node, pos) {
  2740 + node = (typeof node === "string" || node instanceof String) ? document.getElementById(node) : node;
  2741 + if (!node) {
  2742 + return false;
  2743 + }
  2744 + if (node.createTextRange) {
  2745 + var textRange = node.createTextRange();
  2746 + textRange.collapse(true);
  2747 + textRange.moveEnd('character', pos);
  2748 + textRange.moveStart('character', pos);
  2749 + textRange.select();
  2750 + return true;
  2751 + }
  2752 + if (node.setSelectionRange) {
  2753 + node.setSelectionRange(pos, pos);
  2754 + return true;
  2755 + }
  2756 + return false;
  2757 + };
  2758 + if(options.mask) {
  2759 + input.off('keydown.xdsoft');
  2760 + }
  2761 + if (options.mask === true) {
  2762 + if (typeof moment != 'undefined') {
  2763 + options.mask = options.format
  2764 + .replace(/Y{4}/g, '9999')
  2765 + .replace(/Y{2}/g, '99')
  2766 + .replace(/M{2}/g, '19')
  2767 + .replace(/D{2}/g, '39')
  2768 + .replace(/H{2}/g, '29')
  2769 + .replace(/m{2}/g, '59')
  2770 + .replace(/s{2}/g, '59');
  2771 + } else {
  2772 + options.mask = options.format
  2773 + .replace(/Y/g, '9999')
  2774 + .replace(/F/g, '9999')
  2775 + .replace(/m/g, '19')
  2776 + .replace(/d/g, '39')
  2777 + .replace(/H/g, '29')
  2778 + .replace(/i/g, '59')
  2779 + .replace(/s/g, '59');
  2780 + }
  2781 + }
  2782 +
  2783 + if ($.type(options.mask) === 'string') {
  2784 + if (!isValidValue(options.mask, input.val())) {
  2785 + input.val(options.mask.replace(/[0-9]/g, '_'));
  2786 + setCaretPos(input[0], 0);
  2787 + }
  2788 +
  2789 + input.on('keydown.xdsoft', function (event) {
  2790 + var val = this.value,
  2791 + key = event.which,
  2792 + pos,
  2793 + digit;
  2794 +
  2795 + if (((key >= KEY0 && key <= KEY9) || (key >= _KEY0 && key <= _KEY9)) || (key === BACKSPACE || key === DEL)) {
  2796 + pos = getCaretPos(this);
  2797 + digit = (key !== BACKSPACE && key !== DEL) ? String.fromCharCode((_KEY0 <= key && key <= _KEY9) ? key - KEY0 : key) : '_';
  2798 +
  2799 + if ((key === BACKSPACE || key === DEL) && pos) {
  2800 + pos -= 1;
  2801 + digit = '_';
  2802 + }
  2803 +
  2804 + while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {
  2805 + pos += (key === BACKSPACE || key === DEL) ? -1 : 1;
  2806 + }
  2807 +
  2808 + val = val.substr(0, pos) + digit + val.substr(pos + 1);
  2809 + if ($.trim(val) === '') {
  2810 + val = options.mask.replace(/[0-9]/g, '_');
  2811 + } else {
  2812 + if (pos === options.mask.length) {
  2813 + event.preventDefault();
  2814 + return false;
  2815 + }
  2816 + }
  2817 +
  2818 + pos += (key === BACKSPACE || key === DEL) ? 0 : 1;
  2819 + while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {
  2820 + pos += (key === BACKSPACE || key === DEL) ? -1 : 1;
  2821 + }
  2822 +
  2823 + if (isValidValue(options.mask, val)) {
  2824 + this.value = val;
  2825 + setCaretPos(this, pos);
  2826 + } else if ($.trim(val) === '') {
  2827 + this.value = options.mask.replace(/[0-9]/g, '_');
  2828 + } else {
  2829 + input.trigger('error_input.xdsoft');
  2830 + }
  2831 + } else {
  2832 + if (([AKEY, CKEY, VKEY, ZKEY, YKEY].indexOf(key) !== -1 && ctrlDown) || [ESC, ARROWUP, ARROWDOWN, ARROWLEFT, ARROWRIGHT, F5, CTRLKEY, TAB, ENTER].indexOf(key) !== -1) {
  2833 + return true;
  2834 + }
  2835 + }
  2836 +
  2837 + event.preventDefault();
  2838 + return false;
  2839 + });
  2840 + }
  2841 + }
  2842 +
  2843 + _xdsoft_datetime.setCurrentTime(getCurrentValue());
  2844 +
  2845 + input
  2846 + .data('xdsoft_datetimepicker', datetimepicker)
  2847 + .on('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', function () {
  2848 + if (input.is(':disabled') || (input.data('xdsoft_datetimepicker').is(':visible') && options.closeOnInputClick)) {
  2849 + return;
  2850 + }
  2851 + clearTimeout(timer);
  2852 + timer = setTimeout(function () {
  2853 + if (input.is(':disabled')) {
  2854 + return;
  2855 + }
  2856 +
  2857 + triggerAfterOpen = true;
  2858 + _xdsoft_datetime.setCurrentTime(getCurrentValue(), true);
  2859 + if(options.mask) {
  2860 + setMask(options);
  2861 + }
  2862 + datetimepicker.trigger('open.xdsoft');
  2863 + }, 100);
  2864 + })
  2865 + .on('keydown.xdsoft', function (event) {
  2866 + var elementSelector,
  2867 + key = event.which;
  2868 + if ([ENTER].indexOf(key) !== -1 && options.enterLikeTab) {
  2869 + elementSelector = $("input:visible,textarea:visible,button:visible,a:visible");
  2870 + datetimepicker.trigger('close.xdsoft');
  2871 + elementSelector.eq(elementSelector.index(this) + 1).focus();
  2872 + return false;
  2873 + }
  2874 + if ([TAB].indexOf(key) !== -1) {
  2875 + datetimepicker.trigger('close.xdsoft');
  2876 + return true;
  2877 + }
  2878 + })
  2879 + .on('blur.xdsoft', function () {
  2880 + datetimepicker.trigger('close.xdsoft');
  2881 + });
  2882 + };
  2883 + destroyDateTimePicker = function (input) {
  2884 + var datetimepicker = input.data('xdsoft_datetimepicker');
  2885 + if (datetimepicker) {
  2886 + datetimepicker.data('xdsoft_datetime', null);
  2887 + datetimepicker.remove();
  2888 + input
  2889 + .data('xdsoft_datetimepicker', null)
  2890 + .off('.xdsoft');
  2891 + $(window).off('resize.xdsoft');
  2892 + $([window, document.body]).off('mousedown.xdsoft touchstart');
  2893 + if (input.unmousewheel) {
  2894 + input.unmousewheel();
  2895 + }
  2896 + }
  2897 + };
  2898 + $(document)
  2899 + .off('keydown.xdsoftctrl keyup.xdsoftctrl')
  2900 + .on('keydown.xdsoftctrl', function (e) {
  2901 + if (e.keyCode === CTRLKEY) {
  2902 + ctrlDown = true;
  2903 + }
  2904 + })
  2905 + .on('keyup.xdsoftctrl', function (e) {
  2906 + if (e.keyCode === CTRLKEY) {
  2907 + ctrlDown = false;
  2908 + }
  2909 + });
  2910 +
  2911 + this.each(function () {
  2912 + var datetimepicker = $(this).data('xdsoft_datetimepicker'), $input;
  2913 + if (datetimepicker) {
  2914 + if ($.type(opt) === 'string') {
  2915 + switch (opt) {
  2916 + case 'show':
  2917 + $(this).select().focus();
  2918 + datetimepicker.trigger('open.xdsoft');
  2919 + break;
  2920 + case 'hide':
  2921 + datetimepicker.trigger('close.xdsoft');
  2922 + break;
  2923 + case 'toggle':
  2924 + datetimepicker.trigger('toggle.xdsoft');
  2925 + break;
  2926 + case 'destroy':
  2927 + destroyDateTimePicker($(this));
  2928 + break;
  2929 + case 'reset':
  2930 + this.value = this.defaultValue;
  2931 + if (!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(dateHelper.parseDate(this.value, options.format))) {
  2932 + datetimepicker.data('changed', false);
  2933 + }
  2934 + datetimepicker.data('xdsoft_datetime').setCurrentTime(this.value);
  2935 + break;
  2936 + case 'validate':
  2937 + $input = datetimepicker.data('input');
  2938 + $input.trigger('blur.xdsoft');
  2939 + break;
  2940 + default:
  2941 + if (datetimepicker[opt] && $.isFunction(datetimepicker[opt])) {
  2942 + result = datetimepicker[opt](opt2);
  2943 + }
  2944 + }
  2945 + } else {
  2946 + datetimepicker
  2947 + .setOptions(opt);
  2948 + }
  2949 + return 0;
  2950 + }
  2951 + if ($.type(opt) !== 'string') {
  2952 + if (!options.lazyInit || options.open || options.inline) {
  2953 + createDateTimePicker($(this));
  2954 + } else {
  2955 + lazyInit($(this));
  2956 + }
  2957 + }
  2958 + });
  2959 +
  2960 + return result;
  2961 + };
  2962 +
  2963 + $.fn.datetimepicker.defaults = default_options;
  2964 +
  2965 + function HighlightedDate(date, desc, style) {
  2966 + "use strict";
  2967 + this.date = date;
  2968 + this.desc = desc;
  2969 + this.style = style;
  2970 + }
  2971 +}));
  2972 +/*!
  2973 + * jQuery Mousewheel 3.1.13
  2974 + *
  2975 + * Copyright jQuery Foundation and other contributors
  2976 + * Released under the MIT license
  2977 + * http://jquery.org/license
  2978 + */
  2979 +
  2980 +(function (factory) {
  2981 + if ( typeof define === 'function' && define.amd ) {
  2982 + // AMD. Register as an anonymous module.
  2983 + define(['jquery'], factory);
  2984 + } else if (typeof exports === 'object') {
  2985 + // Node/CommonJS style for Browserify
  2986 + module.exports = factory;
  2987 + } else {
  2988 + // Browser globals
  2989 + factory(jQuery);
  2990 + }
  2991 +}(function ($) {
  2992 +
  2993 + var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
  2994 + toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?
  2995 + ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
  2996 + slice = Array.prototype.slice,
  2997 + nullLowestDeltaTimeout, lowestDelta;
  2998 +
  2999 + if ( $.event.fixHooks ) {
  3000 + for ( var i = toFix.length; i; ) {
  3001 + $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
  3002 + }
  3003 + }
  3004 +
  3005 + var special = $.event.special.mousewheel = {
  3006 + version: '3.1.12',
  3007 +
  3008 + setup: function() {
  3009 + if ( this.addEventListener ) {
  3010 + for ( var i = toBind.length; i; ) {
  3011 + this.addEventListener( toBind[--i], handler, false );
  3012 + }
  3013 + } else {
  3014 + this.onmousewheel = handler;
  3015 + }
  3016 + // Store the line height and page height for this particular element
  3017 + $.data(this, 'mousewheel-line-height', special.getLineHeight(this));
  3018 + $.data(this, 'mousewheel-page-height', special.getPageHeight(this));
  3019 + },
  3020 +
  3021 + teardown: function() {
  3022 + if ( this.removeEventListener ) {
  3023 + for ( var i = toBind.length; i; ) {
  3024 + this.removeEventListener( toBind[--i], handler, false );
  3025 + }
  3026 + } else {
  3027 + this.onmousewheel = null;
  3028 + }
  3029 + // Clean up the data we added to the element
  3030 + $.removeData(this, 'mousewheel-line-height');
  3031 + $.removeData(this, 'mousewheel-page-height');
  3032 + },
  3033 +
  3034 + getLineHeight: function(elem) {
  3035 + var $elem = $(elem),
  3036 + $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();
  3037 + if (!$parent.length) {
  3038 + $parent = $('body');
  3039 + }
  3040 + return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;
  3041 + },
  3042 +
  3043 + getPageHeight: function(elem) {
  3044 + return $(elem).height();
  3045 + },
  3046 +
  3047 + settings: {
  3048 + adjustOldDeltas: true, // see shouldAdjustOldDeltas() below
  3049 + normalizeOffset: true // calls getBoundingClientRect for each event
  3050 + }
  3051 + };
  3052 +
  3053 + $.fn.extend({
  3054 + mousewheel: function(fn) {
  3055 + return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');
  3056 + },
  3057 +
  3058 + unmousewheel: function(fn) {
  3059 + return this.unbind('mousewheel', fn);
  3060 + }
  3061 + });
  3062 +
  3063 +
  3064 + function handler(event) {
  3065 + var orgEvent = event || window.event,
  3066 + args = slice.call(arguments, 1),
  3067 + delta = 0,
  3068 + deltaX = 0,
  3069 + deltaY = 0,
  3070 + absDelta = 0,
  3071 + offsetX = 0,
  3072 + offsetY = 0;
  3073 + event = $.event.fix(orgEvent);
  3074 + event.type = 'mousewheel';
  3075 +
  3076 + // Old school scrollwheel delta
  3077 + if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; }
  3078 + if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; }
  3079 + if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; }
  3080 + if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }
  3081 +
  3082 + // Firefox < 17 horizontal scrolling related to DOMMouseScroll event
  3083 + if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
  3084 + deltaX = deltaY * -1;
  3085 + deltaY = 0;
  3086 + }
  3087 +
  3088 + // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
  3089 + delta = deltaY === 0 ? deltaX : deltaY;
  3090 +
  3091 + // New school wheel delta (wheel event)
  3092 + if ( 'deltaY' in orgEvent ) {
  3093 + deltaY = orgEvent.deltaY * -1;
  3094 + delta = deltaY;
  3095 + }
  3096 + if ( 'deltaX' in orgEvent ) {
  3097 + deltaX = orgEvent.deltaX;
  3098 + if ( deltaY === 0 ) { delta = deltaX * -1; }
  3099 + }
  3100 +
  3101 + // No change actually happened, no reason to go any further
  3102 + if ( deltaY === 0 && deltaX === 0 ) { return; }
  3103 +
  3104 + // Need to convert lines and pages to pixels if we aren't already in pixels
  3105 + // There are three delta modes:
  3106 + // * deltaMode 0 is by pixels, nothing to do
  3107 + // * deltaMode 1 is by lines
  3108 + // * deltaMode 2 is by pages
  3109 + if ( orgEvent.deltaMode === 1 ) {
  3110 + var lineHeight = $.data(this, 'mousewheel-line-height');
  3111 + delta *= lineHeight;
  3112 + deltaY *= lineHeight;
  3113 + deltaX *= lineHeight;
  3114 + } else if ( orgEvent.deltaMode === 2 ) {
  3115 + var pageHeight = $.data(this, 'mousewheel-page-height');
  3116 + delta *= pageHeight;
  3117 + deltaY *= pageHeight;
  3118 + deltaX *= pageHeight;
  3119 + }
  3120 +
  3121 + // Store lowest absolute delta to normalize the delta values
  3122 + absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );
  3123 +
  3124 + if ( !lowestDelta || absDelta < lowestDelta ) {
  3125 + lowestDelta = absDelta;
  3126 +
  3127 + // Adjust older deltas if necessary
  3128 + if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
  3129 + lowestDelta /= 40;
  3130 + }
  3131 + }
  3132 +
  3133 + // Adjust older deltas if necessary
  3134 + if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
  3135 + // Divide all the things by 40!
  3136 + delta /= 40;
  3137 + deltaX /= 40;
  3138 + deltaY /= 40;
  3139 + }
  3140 +
  3141 + // Get a whole, normalized value for the deltas
  3142 + delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta);
  3143 + deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);
  3144 + deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);
  3145 +
  3146 + // Normalise offsetX and offsetY properties
  3147 + if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {
  3148 + var boundingRect = this.getBoundingClientRect();
  3149 + offsetX = event.clientX - boundingRect.left;
  3150 + offsetY = event.clientY - boundingRect.top;
  3151 + }
  3152 +
  3153 + // Add information to the event object
  3154 + event.deltaX = deltaX;
  3155 + event.deltaY = deltaY;
  3156 + event.deltaFactor = lowestDelta;
  3157 + event.offsetX = offsetX;
  3158 + event.offsetY = offsetY;
  3159 + // Go ahead and set deltaMode to 0 since we converted to pixels
  3160 + // Although this is a little odd since we overwrite the deltaX/Y
  3161 + // properties with normalized deltas.
  3162 + event.deltaMode = 0;
  3163 +
  3164 + // Add event and delta to the front of the arguments
  3165 + args.unshift(event, delta, deltaX, deltaY);
  3166 +
  3167 + // Clearout lowestDelta after sometime to better
  3168 + // handle multiple device types that give different
  3169 + // a different lowestDelta
  3170 + // Ex: trackpad = 3 and mouse wheel = 120
  3171 + if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }
  3172 + nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);
  3173 +
  3174 + return ($.event.dispatch || $.event.handle).apply(this, args);
  3175 + }
  3176 +
  3177 + function nullLowestDelta() {
  3178 + lowestDelta = null;
  3179 + }
  3180 +
  3181 + function shouldAdjustOldDeltas(orgEvent, absDelta) {
  3182 + // If this is an older event and the delta is divisable by 120,
  3183 + // then we are assuming that the browser is treating this as an
  3184 + // older mouse wheel event and that we should divide the deltas
  3185 + // by 40 to try and get a more usable deltaFactor.
  3186 + // Side note, this actually impacts the reported scroll distance
  3187 + // in older browsers and can cause scrolling to be slower than native.
  3188 + // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
  3189 + return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;
  3190 + }
  3191 +
  3192 +}));
... ...
www-backend/js/datetimepicker-master/build/jquery.datetimepicker.full.min.js 0 → 100644
  1 +var DateFormatter;!function(){"use strict";var e,t,a,r,n,o;n=864e5,o=3600,e=function(e,t){return"string"==typeof e&&"string"==typeof t&&e.toLowerCase()===t.toLowerCase()},t=function(e,a,r){var n=r||"0",o=e.toString();return o.length<a?t(n+o,a):o},a=function(e){var t,r;for(e=e||{},t=1;t<arguments.length;t++)if(r=arguments[t])for(var n in r)r.hasOwnProperty(n)&&("object"==typeof r[n]?a(e[n],r[n]):e[n]=r[n]);return e},r={dateSettings:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],meridiem:["AM","PM"],ordinal:function(e){var t=e%10,a={1:"st",2:"nd",3:"rd"};return 1!==Math.floor(e%100/10)&&a[t]?a[t]:"th"}},separators:/[ \-+\/\.T:@]/g,validParts:/[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,intParts:/[djwNzmnyYhHgGis]/g,tzParts:/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,tzClip:/[^-+\dA-Z]/g},DateFormatter=function(e){var t=this,n=a(r,e);t.dateSettings=n.dateSettings,t.separators=n.separators,t.validParts=n.validParts,t.intParts=n.intParts,t.tzParts=n.tzParts,t.tzClip=n.tzClip},DateFormatter.prototype={constructor:DateFormatter,parseDate:function(t,a){var r,n,o,i,s,d,u,l,f,c,m=this,h=!1,g=!1,p=m.dateSettings,y={date:null,year:null,month:null,day:null,hour:0,min:0,sec:0};if(!t)return void 0;if(t instanceof Date)return t;if("number"==typeof t)return new Date(t);if("U"===a)return o=parseInt(t),o?new Date(1e3*o):t;if("string"!=typeof t)return"";if(r=a.match(m.validParts),!r||0===r.length)throw new Error("Invalid date format definition.");for(n=t.replace(m.separators,"\x00").split("\x00"),o=0;o<n.length;o++)switch(i=n[o],s=parseInt(i),r[o]){case"y":case"Y":f=i.length,2===f?y.year=parseInt((70>s?"20":"19")+i):4===f&&(y.year=s),h=!0;break;case"m":case"n":case"M":case"F":isNaN(i)?(d=p.monthsShort.indexOf(i),d>-1&&(y.month=d+1),d=p.months.indexOf(i),d>-1&&(y.month=d+1)):s>=1&&12>=s&&(y.month=s),h=!0;break;case"d":case"j":s>=1&&31>=s&&(y.day=s),h=!0;break;case"g":case"h":u=r.indexOf("a")>-1?r.indexOf("a"):r.indexOf("A")>-1?r.indexOf("A"):-1,c=n[u],u>-1?(l=e(c,p.meridiem[0])?0:e(c,p.meridiem[1])?12:-1,s>=1&&12>=s&&l>-1?y.hour=s+l:s>=0&&23>=s&&(y.hour=s)):s>=0&&23>=s&&(y.hour=s),g=!0;break;case"G":case"H":s>=0&&23>=s&&(y.hour=s),g=!0;break;case"i":s>=0&&59>=s&&(y.min=s),g=!0;break;case"s":s>=0&&59>=s&&(y.sec=s),g=!0}if(h===!0&&y.year&&y.month&&y.day)y.date=new Date(y.year,y.month-1,y.day,y.hour,y.min,y.sec,0);else{if(g!==!0)return!1;y.date=new Date(0,0,0,y.hour,y.min,y.sec,0)}return y.date},guessDate:function(e,t){if("string"!=typeof e)return e;var a,r,n,o,i=this,s=e.replace(i.separators,"\x00").split("\x00"),d=/^[djmn]/g,u=t.match(i.validParts),l=new Date,f=0;if(!d.test(u[0]))return e;for(r=0;r<s.length;r++){switch(f=2,n=s[r],o=parseInt(n.substr(0,2)),r){case 0:"m"===u[0]||"n"===u[0]?l.setMonth(o-1):l.setDate(o);break;case 1:"m"===u[0]||"n"===u[0]?l.setDate(o):l.setMonth(o-1);break;case 2:a=l.getFullYear(),n.length<4?(l.setFullYear(parseInt(a.toString().substr(0,4-n.length)+n)),f=n.length):(l.setFullYear=parseInt(n.substr(0,4)),f=4);break;case 3:l.setHours(o);break;case 4:l.setMinutes(o);break;case 5:l.setSeconds(o)}n.substr(f).length>0&&s.splice(r+1,0,n.substr(f))}return l},parseFormat:function(e,a){var r,i=this,s=i.dateSettings,d=/\\?(.?)/gi,u=function(e,t){return r[e]?r[e]():t};return r={d:function(){return t(r.j(),2)},D:function(){return s.daysShort[r.w()]},j:function(){return a.getDate()},l:function(){return s.days[r.w()]},N:function(){return r.w()||7},w:function(){return a.getDay()},z:function(){var e=new Date(r.Y(),r.n()-1,r.j()),t=new Date(r.Y(),0,1);return Math.round((e-t)/n)},W:function(){var e=new Date(r.Y(),r.n()-1,r.j()-r.N()+3),a=new Date(e.getFullYear(),0,4);return t(1+Math.round((e-a)/n/7),2)},F:function(){return s.months[a.getMonth()]},m:function(){return t(r.n(),2)},M:function(){return s.monthsShort[a.getMonth()]},n:function(){return a.getMonth()+1},t:function(){return new Date(r.Y(),r.n(),0).getDate()},L:function(){var e=r.Y();return e%4===0&&e%100!==0||e%400===0?1:0},o:function(){var e=r.n(),t=r.W(),a=r.Y();return a+(12===e&&9>t?1:1===e&&t>9?-1:0)},Y:function(){return a.getFullYear()},y:function(){return r.Y().toString().slice(-2)},a:function(){return r.A().toLowerCase()},A:function(){var e=r.G()<12?0:1;return s.meridiem[e]},B:function(){var e=a.getUTCHours()*o,r=60*a.getUTCMinutes(),n=a.getUTCSeconds();return t(Math.floor((e+r+n+o)/86.4)%1e3,3)},g:function(){return r.G()%12||12},G:function(){return a.getHours()},h:function(){return t(r.g(),2)},H:function(){return t(r.G(),2)},i:function(){return t(a.getMinutes(),2)},s:function(){return t(a.getSeconds(),2)},u:function(){return t(1e3*a.getMilliseconds(),6)},e:function(){var e=/\((.*)\)/.exec(String(a))[1];return e||"Coordinated Universal Time"},T:function(){var e=(String(a).match(i.tzParts)||[""]).pop().replace(i.tzClip,"");return e||"UTC"},I:function(){var e=new Date(r.Y(),0),t=Date.UTC(r.Y(),0),a=new Date(r.Y(),6),n=Date.UTC(r.Y(),6);return e-t!==a-n?1:0},O:function(){var e=a.getTimezoneOffset(),r=Math.abs(e);return(e>0?"-":"+")+t(100*Math.floor(r/60)+r%60,4)},P:function(){var e=r.O();return e.substr(0,3)+":"+e.substr(3,2)},Z:function(){return 60*-a.getTimezoneOffset()},c:function(){return"Y-m-d\\TH:i:sP".replace(d,u)},r:function(){return"D, d M Y H:i:s O".replace(d,u)},U:function(){return a.getTime()/1e3||0}},u(e,e)},formatDate:function(e,t){var a,r,n,o,i,s=this,d="";if("string"==typeof e&&(e=s.parseDate(e,t),e===!1))return!1;if(e instanceof Date){for(n=t.length,a=0;n>a;a++)i=t.charAt(a),"S"!==i&&(o=s.parseFormat(i,e),a!==n-1&&s.intParts.test(i)&&"S"===t.charAt(a+1)&&(r=parseInt(o),o+=s.dateSettings.ordinal(r)),d+=o);return d}return""}}}(),function(e){"function"==typeof define&&define.amd?define(["jquery","jquery-mousewheel"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){"use strict";function t(e,t,a){this.date=e,this.desc=t,this.style=a}var a={i18n:{ar:{months:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],dayOfWeekShort:["ن","ث","ع","خ","ج","س","ح"],dayOfWeek:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"]},ro:{months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],dayOfWeekShort:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],dayOfWeek:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"]},id:{months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],dayOfWeekShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],dayOfWeek:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},is:{months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],dayOfWeekShort:["Sun","Mán","Þrið","Mið","Fim","Fös","Lau"],dayOfWeek:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"]},bg:{months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],dayOfWeekShort:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"]},fa:{months:["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"],dayOfWeekShort:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayOfWeek:["یک‌شنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه","شنبه","یک‌شنبه"]},ru:{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],dayOfWeekShort:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"]},uk:{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],dayOfWeekShort:["Ндл","Пнд","Втр","Срд","Чтв","Птн","Сбт"],dayOfWeek:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"]},en:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},el:{months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],dayOfWeekShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayOfWeek:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"]},de:{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],dayOfWeekShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayOfWeek:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},nl:{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],dayOfWeekShort:["zo","ma","di","wo","do","vr","za"],dayOfWeek:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},tr:{months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],dayOfWeekShort:["Paz","Pts","Sal","Çar","Per","Cum","Cts"],dayOfWeek:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},fr:{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],dayOfWeekShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],dayOfWeek:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},es:{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],dayOfWeekShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],dayOfWeek:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"]},th:{months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],dayOfWeekShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayOfWeek:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"]},pl:{months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],dayOfWeekShort:["nd","pn","wt","śr","cz","pt","sb"],dayOfWeek:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},pt:{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},ch:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"]},se:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},kr:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},it:{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayOfWeek:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"]},da:{months:["January","Februar","Marts","April","Maj","Juni","July","August","September","Oktober","November","December"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},no:{months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"]},ja:{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeekShort:["日","月","火","水","木","金","土"],dayOfWeek:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"]},vi:{months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayOfWeekShort:["CN","T2","T3","T4","T5","T6","T7"],dayOfWeek:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"]},sl:{months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],dayOfWeekShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayOfWeek:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"]},cs:{months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],dayOfWeekShort:["Ne","Po","Út","St","Čt","Pá","So"]},hu:{months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],dayOfWeekShort:["Va","Hé","Ke","Sze","Cs","Pé","Szo"],dayOfWeek:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"]},az:{months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],dayOfWeekShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayOfWeek:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"]},bs:{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ca:{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],dayOfWeekShort:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"],dayOfWeek:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"]},"en-GB":{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},et:{months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],dayOfWeekShort:["P","E","T","K","N","R","L"],dayOfWeek:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"]},eu:{months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],dayOfWeekShort:["Ig.","Al.","Ar.","Az.","Og.","Or.","La."],dayOfWeek:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"]},fi:{months:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],dayOfWeekShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayOfWeek:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},gl:{months:["Xan","Feb","Maz","Abr","Mai","Xun","Xul","Ago","Set","Out","Nov","Dec"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Xov","Ven","Sab"],dayOfWeek:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"]},hr:{months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ko:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},lt:{months:["Sausio","Vasario","Kovo","Balandžio","Gegužės","Birželio","Liepos","Rugpjūčio","Rugsėjo","Spalio","Lapkričio","Gruodžio"],dayOfWeekShort:["Sek","Pir","Ant","Tre","Ket","Pen","Šeš"],dayOfWeek:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"]},lv:{months:["Janvāris","Februāris","Marts","Aprīlis ","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],dayOfWeekShort:["Sv","Pr","Ot","Tr","Ct","Pk","St"],dayOfWeek:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"]},mk:{months:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],dayOfWeekShort:["нед","пон","вто","сре","чет","пет","саб"],dayOfWeek:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"]},mn:{months:["1-р сар","2-р сар","3-р сар","4-р сар","5-р сар","6-р сар","7-р сар","8-р сар","9-р сар","10-р сар","11-р сар","12-р сар"],dayOfWeekShort:["Дав","Мяг","Лха","Пүр","Бсн","Бям","Ням"],dayOfWeek:["Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба","Ням"]},"pt-BR":{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},sk:{months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],dayOfWeekShort:["Ne","Po","Ut","St","Št","Pi","So"],dayOfWeek:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"]},sq:{months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],dayOfWeekShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],dayOfWeek:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"]},"sr-YU":{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sre","čet","Pet","Sub"],dayOfWeek:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"]},sr:{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],dayOfWeekShort:["нед","пон","уто","сре","чет","пет","суб"],dayOfWeek:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"]},sv:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayOfWeek:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"]},"zh-TW":{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},zh:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},he:{months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],dayOfWeekShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayOfWeek:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"]},hy:{months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],dayOfWeekShort:["Կի","Երկ","Երք","Չոր","Հնգ","Ուրբ","Շբթ"],dayOfWeek:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"]},kg:{months:["Үчтүн айы","Бирдин айы","Жалган Куран","Чын Куран","Бугу","Кулжа","Теке","Баш Оона","Аяк Оона","Тогуздун айы","Жетинин айы","Бештин айы"],dayOfWeekShort:["Жек","Дүй","Шей","Шар","Бей","Жум","Ише"],dayOfWeek:["Жекшемб","Дүйшөмб","Шейшемб","Шаршемб","Бейшемби","Жума","Ишенб"]},rm:{months:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],dayOfWeekShort:["Du","Gli","Ma","Me","Gie","Ve","So"],dayOfWeek:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"]},ka:{months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],dayOfWeekShort:["კვ","ორშ","სამშ","ოთხ","ხუთ","პარ","შაბ"],dayOfWeek:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"]}},value:"",rtl:!1,format:"Y/m/d H:i",formatTime:"H:i",formatDate:"Y/m/d",startDate:!1,step:60,monthChangeSpinner:!0,closeOnDateSelect:!1,closeOnTimeSelect:!0,closeOnWithoutClick:!0,closeOnInputClick:!0,timepicker:!0,datepicker:!0,weeks:!1,defaultTime:!1,defaultDate:!1,minDate:!1,maxDate:!1,minTime:!1,maxTime:!1,disabledMinTime:!1,disabledMaxTime:!1,allowTimes:[],opened:!1,initTime:!0,inline:!1,theme:"",onSelectDate:function(){},onSelectTime:function(){},onChangeMonth:function(){},onGetWeekOfYear:function(){},onChangeYear:function(){},onChangeDateTime:function(){},onShow:function(){},onClose:function(){},onGenerate:function(){},withoutCopyright:!0,inverseButton:!1,hours12:!1,next:"xdsoft_next",prev:"xdsoft_prev",dayOfWeekStart:0,parentID:"body",timeHeightInTimePicker:25,timepickerScrollbar:!0,todayButton:!0,prevButton:!0,nextButton:!0,defaultSelect:!0,scrollMonth:!0,scrollTime:!0,scrollInput:!0,lazyInit:!1,mask:!1,validateOnBlur:!0,allowBlank:!0,yearStart:1950,yearEnd:2050,monthStart:0,monthEnd:11,style:"",id:"",fixed:!1,roundTime:"round",className:"",weekends:[],highlightedDates:[],highlightedPeriods:[],allowDates:[],allowDateRe:null,disabledDates:[],disabledWeekDays:[],yearOffset:0,beforeShowDay:null,enterLikeTab:!0,showApplyButton:!1},r=null,n="en",o="en",i={meridiem:["AM","PM"]},s=function(){var t=a.i18n[o],n={days:t.dayOfWeek,daysShort:t.dayOfWeekShort,months:t.months,monthsShort:e.map(t.months,function(e){return e.substring(0,3)})};r=new DateFormatter({dateSettings:e.extend({},i,n)})};e.datetimepicker={setLocale:function(e){var t=a.i18n[e]?e:n;o!=t&&(o=t,s())},setDateFormatter:function(e){r=e},RFC_2822:"D, d M Y H:i:s O",ATOM:"Y-m-dTH:i:sP",ISO_8601:"Y-m-dTH:i:sO",RFC_822:"D, d M y H:i:s O",RFC_850:"l, d-M-y H:i:s T",RFC_1036:"D, d M y H:i:s O",RFC_1123:"D, d M Y H:i:s O",RSS:"D, d M Y H:i:s O",W3C:"Y-m-dTH:i:sP"},s(),window.getComputedStyle||(window.getComputedStyle=function(e){return this.el=e,this.getPropertyValue=function(t){var a=/(\-([a-z]){1})/g;return"float"===t&&(t="styleFloat"),a.test(t)&&(t=t.replace(a,function(e,t,a){return a.toUpperCase()})),e.currentStyle[t]||null},this}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var a,r;for(a=t||0,r=this.length;r>a;a+=1)if(this[a]===e)return a;return-1}),Date.prototype.countDaysInMonth=function(){return new Date(this.getFullYear(),this.getMonth()+1,0).getDate()},e.fn.xdsoftScroller=function(t){return this.each(function(){var a,r,n,o,i,s=e(this),d=function(e){var t,a={x:0,y:0};return"touchstart"===e.type||"touchmove"===e.type||"touchend"===e.type||"touchcancel"===e.type?(t=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],a.x=t.clientX,a.y=t.clientY):("mousedown"===e.type||"mouseup"===e.type||"mousemove"===e.type||"mouseover"===e.type||"mouseout"===e.type||"mouseenter"===e.type||"mouseleave"===e.type)&&(a.x=e.clientX,a.y=e.clientY),a},u=100,l=!1,f=0,c=0,m=0,h=!1,g=0,p=function(){};return"hide"===t?void s.find(".xdsoft_scrollbar").hide():(e(this).hasClass("xdsoft_scroller_box")||(a=s.children().eq(0),r=s[0].clientHeight,n=a[0].offsetHeight,o=e('<div class="xdsoft_scrollbar"></div>'),i=e('<div class="xdsoft_scroller"></div>'),o.append(i),s.addClass("xdsoft_scroller_box").append(o),p=function(e){var t=d(e).y-f+g;0>t&&(t=0),t+i[0].offsetHeight>m&&(t=m-i[0].offsetHeight),s.trigger("scroll_element.xdsoft_scroller",[u?t/u:0])},i.on("touchstart.xdsoft_scroller mousedown.xdsoft_scroller",function(a){r||s.trigger("resize_scroll.xdsoft_scroller",[t]),f=d(a).y,g=parseInt(i.css("margin-top"),10),m=o[0].offsetHeight,"mousedown"===a.type||"touchstart"===a.type?(document&&e(document.body).addClass("xdsoft_noselect"),e([document.body,window]).on("touchend mouseup.xdsoft_scroller",function n(){e([document.body,window]).off("touchend mouseup.xdsoft_scroller",n).off("mousemove.xdsoft_scroller",p).removeClass("xdsoft_noselect")}),e(document.body).on("mousemove.xdsoft_scroller",p)):(h=!0,a.stopPropagation(),a.preventDefault())}).on("touchmove",function(e){h&&(e.preventDefault(),p(e))}).on("touchend touchcancel",function(){h=!1,g=0}),s.on("scroll_element.xdsoft_scroller",function(e,t){r||s.trigger("resize_scroll.xdsoft_scroller",[t,!0]),t=t>1?1:0>t||isNaN(t)?0:t,i.css("margin-top",u*t),setTimeout(function(){a.css("marginTop",-parseInt((a[0].offsetHeight-r)*t,10))},10)}).on("resize_scroll.xdsoft_scroller",function(e,t,d){var l,f;r=s[0].clientHeight,n=a[0].offsetHeight,l=r/n,f=l*o[0].offsetHeight,l>1?i.hide():(i.show(),i.css("height",parseInt(f>10?f:10,10)),u=o[0].offsetHeight-i[0].offsetHeight,d!==!0&&s.trigger("scroll_element.xdsoft_scroller",[t||Math.abs(parseInt(a.css("marginTop"),10))/(n-r)]))}),s.on("mousewheel",function(e){var t=Math.abs(parseInt(a.css("marginTop"),10));return t-=20*e.deltaY,0>t&&(t=0),s.trigger("scroll_element.xdsoft_scroller",[t/(n-r)]),e.stopPropagation(),!1}),s.on("touchstart",function(e){l=d(e),c=Math.abs(parseInt(a.css("marginTop"),10))}),s.on("touchmove",function(e){if(l){e.preventDefault();var t=d(e);s.trigger("scroll_element.xdsoft_scroller",[(c-(t.y-l.y))/(n-r)])}}),s.on("touchend touchcancel",function(){l=!1,c=0})),void s.trigger("resize_scroll.xdsoft_scroller",[t]))})},e.fn.datetimepicker=function(n,i){var s,d,u=this,l=48,f=57,c=96,m=105,h=17,g=46,p=13,y=27,v=8,b=37,D=38,k=39,x=40,T=9,S=116,w=65,O=67,M=86,_=90,W=89,F=!1,C=e.isPlainObject(n)||!n?e.extend(!0,{},a,n):e.extend(!0,{},a),P=0,A=function(e){e.on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function t(){e.is(":disabled")||e.data("xdsoft_datetimepicker")||(clearTimeout(P),P=setTimeout(function(){e.data("xdsoft_datetimepicker")||s(e),e.off("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",t).trigger("open.xdsoft")},100))})};return s=function(a){function i(){var e,t=!1;return C.startDate?t=j.strToDate(C.startDate):(t=C.value||(a&&a.val&&a.val()?a.val():""),t?t=j.strToDateTime(t):C.defaultDate&&(t=j.strToDateTime(C.defaultDate),C.defaultTime&&(e=j.strtotime(C.defaultTime),t.setHours(e.getHours()),t.setMinutes(e.getMinutes())))),t&&j.isValidDate(t)?J.data("changed",!0):t="",t||0}function s(t){var r=function(e,t){var a=e.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g,"\\$1").replace(/_/g,"{digit+}").replace(/([0-9]{1})/g,"{digit$1}").replace(/\{digit([0-9]{1})\}/g,"[0-$1_]{1}").replace(/\{digit[\+]\}/g,"[0-9_]{1}");return new RegExp(a).test(t)},n=function(e){try{if(document.selection&&document.selection.createRange){var t=document.selection.createRange();return t.getBookmark().charCodeAt(2)-2}if(e.setSelectionRange)return e.selectionStart}catch(a){return 0}},o=function(e,t){if(e="string"==typeof e||e instanceof String?document.getElementById(e):e,!e)return!1;if(e.createTextRange){var a=e.createTextRange();return a.collapse(!0),a.moveEnd("character",t),a.moveStart("character",t),a.select(),!0}return e.setSelectionRange?(e.setSelectionRange(t,t),!0):!1};t.mask&&a.off("keydown.xdsoft"),t.mask===!0&&(t.mask="undefined"!=typeof moment?t.format.replace(/Y{4}/g,"9999").replace(/Y{2}/g,"99").replace(/M{2}/g,"19").replace(/D{2}/g,"39").replace(/H{2}/g,"29").replace(/m{2}/g,"59").replace(/s{2}/g,"59"):t.format.replace(/Y/g,"9999").replace(/F/g,"9999").replace(/m/g,"19").replace(/d/g,"39").replace(/H/g,"29").replace(/i/g,"59").replace(/s/g,"59")),"string"===e.type(t.mask)&&(r(t.mask,a.val())||(a.val(t.mask.replace(/[0-9]/g,"_")),o(a[0],0)),a.on("keydown.xdsoft",function(i){var s,d,u=this.value,C=i.which;if(C>=l&&f>=C||C>=c&&m>=C||C===v||C===g){for(s=n(this),d=C!==v&&C!==g?String.fromCharCode(C>=c&&m>=C?C-l:C):"_",C!==v&&C!==g||!s||(s-=1,d="_");/[^0-9_]/.test(t.mask.substr(s,1))&&s<t.mask.length&&s>0;)s+=C===v||C===g?-1:1;if(u=u.substr(0,s)+d+u.substr(s+1),""===e.trim(u))u=t.mask.replace(/[0-9]/g,"_");else if(s===t.mask.length)return i.preventDefault(),!1;for(s+=C===v||C===g?0:1;/[^0-9_]/.test(t.mask.substr(s,1))&&s<t.mask.length&&s>0;)s+=C===v||C===g?-1:1;r(t.mask,u)?(this.value=u,o(this,s)):""===e.trim(u)?this.value=t.mask.replace(/[0-9]/g,"_"):a.trigger("error_input.xdsoft")}else if(-1!==[w,O,M,_,W].indexOf(C)&&F||-1!==[y,D,x,b,k,S,h,T,p].indexOf(C))return!0;return i.preventDefault(),!1}))}var d,u,P,A,Y,j,H,J=e('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'),z=e('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),I=e('<div class="xdsoft_datepicker active"></div>'),N=e('<div class="xdsoft_monthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button><div class="xdsoft_label xdsoft_month"><span></span><i></i></div><div class="xdsoft_label xdsoft_year"><span></span><i></i></div><button type="button" class="xdsoft_next"></button></div>'),L=e('<div class="xdsoft_calendar"></div>'),E=e('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),R=E.find(".xdsoft_time_box").eq(0),B=e('<div class="xdsoft_time_variant"></div>'),V=e('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),G=e('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),U=e('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),q=!1,X=0;C.id&&J.attr("id",C.id),C.style&&J.attr("style",C.style),C.weeks&&J.addClass("xdsoft_showweeks"),C.rtl&&J.addClass("xdsoft_rtl"),J.addClass("xdsoft_"+C.theme),J.addClass(C.className),N.find(".xdsoft_month span").after(G),N.find(".xdsoft_year span").after(U),N.find(".xdsoft_month,.xdsoft_year").on("touchstart mousedown.xdsoft",function(t){var a,r,n=e(this).find(".xdsoft_select").eq(0),o=0,i=0,s=n.is(":visible");for(N.find(".xdsoft_select").hide(),j.currentTime&&(o=j.currentTime[e(this).hasClass("xdsoft_month")?"getMonth":"getFullYear"]()),n[s?"hide":"show"](),a=n.find("div.xdsoft_option"),r=0;r<a.length&&a.eq(r).data("value")!==o;r+=1)i+=a[0].offsetHeight;return n.xdsoftScroller(i/(n.children()[0].offsetHeight-n[0].clientHeight)),t.stopPropagation(),!1}),N.find(".xdsoft_select").xdsoftScroller().on("touchstart mousedown.xdsoft",function(e){e.stopPropagation(),e.preventDefault()}).on("touchstart mousedown.xdsoft",".xdsoft_option",function(){(void 0===j.currentTime||null===j.currentTime)&&(j.currentTime=j.now());var t=j.currentTime.getFullYear();j&&j.currentTime&&j.currentTime[e(this).parent().parent().hasClass("xdsoft_monthselect")?"setMonth":"setFullYear"](e(this).data("value")),e(this).parent().parent().hide(),J.trigger("xchange.xdsoft"),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(J,j.currentTime,J.data("input")),t!==j.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(J,j.currentTime,J.data("input"))}),J.getValue=function(){return j.getCurrentTime()},J.setOptions=function(n){var o={};C=e.extend(!0,{},C,n),n.allowTimes&&e.isArray(n.allowTimes)&&n.allowTimes.length&&(C.allowTimes=e.extend(!0,[],n.allowTimes)),n.weekends&&e.isArray(n.weekends)&&n.weekends.length&&(C.weekends=e.extend(!0,[],n.weekends)),n.allowDates&&e.isArray(n.allowDates)&&n.allowDates.length&&(C.allowDates=e.extend(!0,[],n.allowDates)),n.allowDateRe&&"[object String]"===Object.prototype.toString.call(n.allowDateRe)&&(C.allowDateRe=new RegExp(n.allowDateRe)),n.highlightedDates&&e.isArray(n.highlightedDates)&&n.highlightedDates.length&&(e.each(n.highlightedDates,function(a,n){var i,s=e.map(n.split(","),e.trim),d=new t(r.parseDate(s[0],C.formatDate),s[1],s[2]),u=r.formatDate(d.date,C.formatDate);void 0!==o[u]?(i=o[u].desc,i&&i.length&&d.desc&&d.desc.length&&(o[u].desc=i+"\n"+d.desc)):o[u]=d}),C.highlightedDates=e.extend(!0,[],o)),n.highlightedPeriods&&e.isArray(n.highlightedPeriods)&&n.highlightedPeriods.length&&(o=e.extend(!0,[],C.highlightedDates),
  2 +e.each(n.highlightedPeriods,function(a,n){var i,s,d,u,l,f,c;if(e.isArray(n))i=n[0],s=n[1],d=n[2],c=n[3];else{var m=e.map(n.split(","),e.trim);i=r.parseDate(m[0],C.formatDate),s=r.parseDate(m[1],C.formatDate),d=m[2],c=m[3]}for(;s>=i;)u=new t(i,d,c),l=r.formatDate(i,C.formatDate),i.setDate(i.getDate()+1),void 0!==o[l]?(f=o[l].desc,f&&f.length&&u.desc&&u.desc.length&&(o[l].desc=f+"\n"+u.desc)):o[l]=u}),C.highlightedDates=e.extend(!0,[],o)),n.disabledDates&&e.isArray(n.disabledDates)&&n.disabledDates.length&&(C.disabledDates=e.extend(!0,[],n.disabledDates)),n.disabledWeekDays&&e.isArray(n.disabledWeekDays)&&n.disabledWeekDays.length&&(C.disabledWeekDays=e.extend(!0,[],n.disabledWeekDays)),!C.open&&!C.opened||C.inline||a.trigger("open.xdsoft"),C.inline&&(q=!0,J.addClass("xdsoft_inline"),a.after(J).hide()),C.inverseButton&&(C.next="xdsoft_prev",C.prev="xdsoft_next"),C.datepicker?I.addClass("active"):I.removeClass("active"),C.timepicker?E.addClass("active"):E.removeClass("active"),C.value&&(j.setCurrentTime(C.value),a&&a.val&&a.val(j.str)),C.dayOfWeekStart=isNaN(C.dayOfWeekStart)?0:parseInt(C.dayOfWeekStart,10)%7,C.timepickerScrollbar||R.xdsoftScroller("hide"),C.minDate&&/^[\+\-](.*)$/.test(C.minDate)&&(C.minDate=r.formatDate(j.strToDateTime(C.minDate),C.formatDate)),C.maxDate&&/^[\+\-](.*)$/.test(C.maxDate)&&(C.maxDate=r.formatDate(j.strToDateTime(C.maxDate),C.formatDate)),V.toggle(C.showApplyButton),N.find(".xdsoft_today_button").css("visibility",C.todayButton?"visible":"hidden"),N.find("."+C.prev).css("visibility",C.prevButton?"visible":"hidden"),N.find("."+C.next).css("visibility",C.nextButton?"visible":"hidden"),s(C),C.validateOnBlur&&a.off("blur.xdsoft").on("blur.xdsoft",function(){if(C.allowBlank&&(!e.trim(e(this).val()).length||"string"==typeof C.mask&&e.trim(e(this).val())===C.mask.replace(/[0-9]/g,"_")))e(this).val(null),J.data("xdsoft_datetime").empty();else{var t=r.parseDate(e(this).val(),C.format);if(t)e(this).val(r.formatDate(t,C.format));else{var a=+[e(this).val()[0],e(this).val()[1]].join(""),n=+[e(this).val()[2],e(this).val()[3]].join("");e(this).val(!C.datepicker&&C.timepicker&&a>=0&&24>a&&n>=0&&60>n?[a,n].map(function(e){return e>9?e:"0"+e}).join(":"):r.formatDate(j.now(),C.format))}J.data("xdsoft_datetime").setCurrentTime(e(this).val())}J.trigger("changedatetime.xdsoft"),J.trigger("close.xdsoft")}),C.dayOfWeekStartPrev=0===C.dayOfWeekStart?6:C.dayOfWeekStart-1,J.trigger("xchange.xdsoft").trigger("afterOpen.xdsoft")},J.data("options",C).on("touchstart mousedown.xdsoft",function(e){return e.stopPropagation(),e.preventDefault(),U.hide(),G.hide(),!1}),R.append(B),R.xdsoftScroller(),J.on("afterOpen.xdsoft",function(){R.xdsoftScroller()}),J.append(I).append(E),C.withoutCopyright!==!0&&J.append(z),I.append(N).append(L).append(V),e(C.parentID).append(J),d=function(){var t=this;t.now=function(e){var a,r,n=new Date;return!e&&C.defaultDate&&(a=t.strToDateTime(C.defaultDate),n.setFullYear(a.getFullYear()),n.setMonth(a.getMonth()),n.setDate(a.getDate())),C.yearOffset&&n.setFullYear(n.getFullYear()+C.yearOffset),!e&&C.defaultTime&&(r=t.strtotime(C.defaultTime),n.setHours(r.getHours()),n.setMinutes(r.getMinutes())),n},t.isValidDate=function(e){return"[object Date]"!==Object.prototype.toString.call(e)?!1:!isNaN(e.getTime())},t.setCurrentTime=function(e,a){t.currentTime="string"==typeof e?t.strToDateTime(e):t.isValidDate(e)?e:e||a||!C.allowBlank?t.now():null,J.trigger("xchange.xdsoft")},t.empty=function(){t.currentTime=null},t.getCurrentTime=function(){return t.currentTime},t.nextMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var a,r=t.currentTime.getMonth()+1;return 12===r&&(t.currentTime.setFullYear(t.currentTime.getFullYear()+1),r=0),a=t.currentTime.getFullYear(),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),r+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(r),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(J,j.currentTime,J.data("input")),a!==t.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(J,j.currentTime,J.data("input")),J.trigger("xchange.xdsoft"),r},t.prevMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var a=t.currentTime.getMonth()-1;return-1===a&&(t.currentTime.setFullYear(t.currentTime.getFullYear()-1),a=11),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),a+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(a),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(J,j.currentTime,J.data("input")),J.trigger("xchange.xdsoft"),a},t.getWeekOfYear=function(t){if(C.onGetWeekOfYear&&e.isFunction(C.onGetWeekOfYear)){var a=C.onGetWeekOfYear.call(J,t);if("undefined"!=typeof a)return a}var r=new Date(t.getFullYear(),0,1);return 4!=r.getDay()&&r.setMonth(0,1+(4-r.getDay()+7)%7),Math.ceil(((t-r)/864e5+r.getDay()+1)/7)},t.strToDateTime=function(e){var a,n,o=[];return e&&e instanceof Date&&t.isValidDate(e)?e:(o=/^(\+|\-)(.*)$/.exec(e),o&&(o[2]=r.parseDate(o[2],C.formatDate)),o&&o[2]?(a=o[2].getTime()-6e4*o[2].getTimezoneOffset(),n=new Date(t.now(!0).getTime()+parseInt(o[1]+"1",10)*a)):n=e?r.parseDate(e,C.format):t.now(),t.isValidDate(n)||(n=t.now()),n)},t.strToDate=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?r.parseDate(e,C.formatDate):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.strtotime=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?r.parseDate(e,C.formatTime):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.str=function(){return r.formatDate(t.currentTime,C.format)},t.currentTime=this.now()},j=new d,V.on("touchend click",function(e){e.preventDefault(),J.data("changed",!0),j.setCurrentTime(i()),a.val(j.str()),J.trigger("close.xdsoft")}),N.find(".xdsoft_today_button").on("touchend mousedown.xdsoft",function(){J.data("changed",!0),j.setCurrentTime(0,!0),J.trigger("afterOpen.xdsoft")}).on("dblclick.xdsoft",function(){var e,t,r=j.getCurrentTime();r=new Date(r.getFullYear(),r.getMonth(),r.getDate()),e=j.strToDate(C.minDate),e=new Date(e.getFullYear(),e.getMonth(),e.getDate()),e>r||(t=j.strToDate(C.maxDate),t=new Date(t.getFullYear(),t.getMonth(),t.getDate()),r>t||(a.val(j.str()),a.trigger("change"),J.trigger("close.xdsoft")))}),N.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,r=!1;!function n(e){t.hasClass(C.next)?j.nextMonth():t.hasClass(C.prev)&&j.prevMonth(),C.monthChangeSpinner&&(r||(a=setTimeout(n,e||100)))}(500),e([document.body,window]).on("touchend mouseup.xdsoft",function o(){clearTimeout(a),r=!0,e([document.body,window]).off("touchend mouseup.xdsoft",o)})}),E.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,r=!1,n=110;!function o(e){var i=R[0].clientHeight,s=B[0].offsetHeight,d=Math.abs(parseInt(B.css("marginTop"),10));t.hasClass(C.next)&&s-i-C.timeHeightInTimePicker>=d?B.css("marginTop","-"+(d+C.timeHeightInTimePicker)+"px"):t.hasClass(C.prev)&&d-C.timeHeightInTimePicker>=0&&B.css("marginTop","-"+(d-C.timeHeightInTimePicker)+"px"),R.trigger("scroll_element.xdsoft_scroller",[Math.abs(parseInt(B[0].style.marginTop,10)/(s-i))]),n=n>10?10:n-10,r||(a=setTimeout(o,e||n))}(500),e([document.body,window]).on("touchend mouseup.xdsoft",function i(){clearTimeout(a),r=!0,e([document.body,window]).off("touchend mouseup.xdsoft",i)})}),u=0,J.on("xchange.xdsoft",function(t){clearTimeout(u),u=setTimeout(function(){if(void 0===j.currentTime||null===j.currentTime){if(C.allowBlank)return;j.currentTime=j.now()}for(var t,i,s,d,u,l,f,c,m,h,g="",p=new Date(j.currentTime.getFullYear(),j.currentTime.getMonth(),1,12,0,0),y=0,v=j.now(),b=!1,D=!1,k=[],x=!0,T="",S="";p.getDay()!==C.dayOfWeekStart;)p.setDate(p.getDate()-1);for(g+="<table><thead><tr>",C.weeks&&(g+="<th></th>"),t=0;7>t;t+=1)g+="<th>"+C.i18n[o].dayOfWeekShort[(t+C.dayOfWeekStart)%7]+"</th>";for(g+="</tr></thead>",g+="<tbody>",C.maxDate!==!1&&(b=j.strToDate(C.maxDate),b=new Date(b.getFullYear(),b.getMonth(),b.getDate(),23,59,59,999)),C.minDate!==!1&&(D=j.strToDate(C.minDate),D=new Date(D.getFullYear(),D.getMonth(),D.getDate()));y<j.currentTime.countDaysInMonth()||p.getDay()!==C.dayOfWeekStart||j.currentTime.getMonth()===p.getMonth();)k=[],y+=1,s=p.getDay(),d=p.getDate(),u=p.getFullYear(),l=p.getMonth(),f=j.getWeekOfYear(p),h="",k.push("xdsoft_date"),c=C.beforeShowDay&&e.isFunction(C.beforeShowDay.call)?C.beforeShowDay.call(J,p):null,C.allowDateRe&&"[object RegExp]"===Object.prototype.toString.call(C.allowDateRe)?C.allowDateRe.test(r.formatDate(p,C.formatDate))||k.push("xdsoft_disabled"):C.allowDates&&C.allowDates.length>0?-1===C.allowDates.indexOf(r.formatDate(p,C.formatDate))&&k.push("xdsoft_disabled"):b!==!1&&p>b||D!==!1&&D>p||c&&c[0]===!1?k.push("xdsoft_disabled"):-1!==C.disabledDates.indexOf(r.formatDate(p,C.formatDate))?k.push("xdsoft_disabled"):-1!==C.disabledWeekDays.indexOf(s)?k.push("xdsoft_disabled"):a.is("[readonly]")&&k.push("xdsoft_disabled"),c&&""!==c[1]&&k.push(c[1]),j.currentTime.getMonth()!==l&&k.push("xdsoft_other_month"),(C.defaultSelect||J.data("changed"))&&r.formatDate(j.currentTime,C.formatDate)===r.formatDate(p,C.formatDate)&&k.push("xdsoft_current"),r.formatDate(v,C.formatDate)===r.formatDate(p,C.formatDate)&&k.push("xdsoft_today"),(0===p.getDay()||6===p.getDay()||-1!==C.weekends.indexOf(r.formatDate(p,C.formatDate)))&&k.push("xdsoft_weekend"),void 0!==C.highlightedDates[r.formatDate(p,C.formatDate)]&&(i=C.highlightedDates[r.formatDate(p,C.formatDate)],k.push(void 0===i.style?"xdsoft_highlighted_default":i.style),h=void 0===i.desc?"":i.desc),C.beforeShowDay&&e.isFunction(C.beforeShowDay)&&k.push(C.beforeShowDay(p)),x&&(g+="<tr>",x=!1,C.weeks&&(g+="<th>"+f+"</th>")),g+='<td data-date="'+d+'" data-month="'+l+'" data-year="'+u+'" class="xdsoft_date xdsoft_day_of_week'+p.getDay()+" "+k.join(" ")+'" title="'+h+'"><div>'+d+"</div></td>",p.getDay()===C.dayOfWeekStartPrev&&(g+="</tr>",x=!0),p.setDate(d+1);if(g+="</tbody></table>",L.html(g),N.find(".xdsoft_label span").eq(0).text(C.i18n[o].months[j.currentTime.getMonth()]),N.find(".xdsoft_label span").eq(1).text(j.currentTime.getFullYear()),T="",S="",l="",m=function(t,n){var o,i,s=j.now(),d=C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length;s.setHours(t),t=parseInt(s.getHours(),10),s.setMinutes(n),n=parseInt(s.getMinutes(),10),o=new Date(j.currentTime),o.setHours(t),o.setMinutes(n),k=[],C.minDateTime!==!1&&C.minDateTime>o||C.maxTime!==!1&&j.strtotime(C.maxTime).getTime()<s.getTime()||C.minTime!==!1&&j.strtotime(C.minTime).getTime()>s.getTime()?k.push("xdsoft_disabled"):C.minDateTime!==!1&&C.minDateTime>o||C.disabledMinTime!==!1&&s.getTime()>j.strtotime(C.disabledMinTime).getTime()&&C.disabledMaxTime!==!1&&s.getTime()<j.strtotime(C.disabledMaxTime).getTime()?k.push("xdsoft_disabled"):a.is("[readonly]")&&k.push("xdsoft_disabled"),i=new Date(j.currentTime),i.setHours(parseInt(j.currentTime.getHours(),10)),d||i.setMinutes(Math[C.roundTime](j.currentTime.getMinutes()/C.step)*C.step),(C.initTime||C.defaultSelect||J.data("changed"))&&i.getHours()===parseInt(t,10)&&(!d&&C.step>59||i.getMinutes()===parseInt(n,10))&&(C.defaultSelect||J.data("changed")?k.push("xdsoft_current"):C.initTime&&k.push("xdsoft_init_time")),parseInt(v.getHours(),10)===parseInt(t,10)&&parseInt(v.getMinutes(),10)===parseInt(n,10)&&k.push("xdsoft_today"),T+='<div class="xdsoft_time '+k.join(" ")+'" data-hour="'+t+'" data-minute="'+n+'">'+r.formatDate(s,C.formatTime)+"</div>"},C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length)for(y=0;y<C.allowTimes.length;y+=1)S=j.strtotime(C.allowTimes[y]).getHours(),l=j.strtotime(C.allowTimes[y]).getMinutes(),m(S,l);else for(y=0,t=0;y<(C.hours12?12:24);y+=1)for(t=0;60>t;t+=C.step)S=(10>y?"0":"")+y,l=(10>t?"0":"")+t,m(S,l);for(B.html(T),n="",y=0,y=parseInt(C.yearStart,10)+C.yearOffset;y<=parseInt(C.yearEnd,10)+C.yearOffset;y+=1)n+='<div class="xdsoft_option '+(j.currentTime.getFullYear()===y?"xdsoft_current":"")+'" data-value="'+y+'">'+y+"</div>";for(U.children().eq(0).html(n),y=parseInt(C.monthStart,10),n="";y<=parseInt(C.monthEnd,10);y+=1)n+='<div class="xdsoft_option '+(j.currentTime.getMonth()===y?"xdsoft_current":"")+'" data-value="'+y+'">'+C.i18n[o].months[y]+"</div>";G.children().eq(0).html(n),e(J).trigger("generate.xdsoft")},10),t.stopPropagation()}).on("afterOpen.xdsoft",function(){if(C.timepicker){var e,t,a,r;B.find(".xdsoft_current").length?e=".xdsoft_current":B.find(".xdsoft_init_time").length&&(e=".xdsoft_init_time"),e?(t=R[0].clientHeight,a=B[0].offsetHeight,r=B.find(e).index()*C.timeHeightInTimePicker+1,r>a-t&&(r=a-t),R.trigger("scroll_element.xdsoft_scroller",[parseInt(r,10)/(a-t)])):R.trigger("scroll_element.xdsoft_scroller",[0])}}),P=0,L.on("touchend click.xdsoft","td",function(t){t.stopPropagation(),P+=1;var r=e(this),n=j.currentTime;return(void 0===n||null===n)&&(j.currentTime=j.now(),n=j.currentTime),r.hasClass("xdsoft_disabled")?!1:(n.setDate(1),n.setFullYear(r.data("year")),n.setMonth(r.data("month")),n.setDate(r.data("date")),J.trigger("select.xdsoft",[n]),a.val(j.str()),C.onSelectDate&&e.isFunction(C.onSelectDate)&&C.onSelectDate.call(J,j.currentTime,J.data("input"),t),J.data("changed",!0),J.trigger("xchange.xdsoft"),J.trigger("changedatetime.xdsoft"),(P>1||C.closeOnDateSelect===!0||C.closeOnDateSelect===!1&&!C.timepicker)&&!C.inline&&J.trigger("close.xdsoft"),void setTimeout(function(){P=0},200))}),B.on("touchend click.xdsoft","div",function(t){t.stopPropagation();var a=e(this),r=j.currentTime;return(void 0===r||null===r)&&(j.currentTime=j.now(),r=j.currentTime),a.hasClass("xdsoft_disabled")?!1:(r.setHours(a.data("hour")),r.setMinutes(a.data("minute")),J.trigger("select.xdsoft",[r]),J.data("input").val(j.str()),C.onSelectTime&&e.isFunction(C.onSelectTime)&&C.onSelectTime.call(J,j.currentTime,J.data("input"),t),J.data("changed",!0),J.trigger("xchange.xdsoft"),J.trigger("changedatetime.xdsoft"),void(C.inline!==!0&&C.closeOnTimeSelect===!0&&J.trigger("close.xdsoft")))}),I.on("mousewheel.xdsoft",function(e){return C.scrollMonth?(e.deltaY<0?j.nextMonth():j.prevMonth(),!1):!0}),a.on("mousewheel.xdsoft",function(e){return C.scrollInput?!C.datepicker&&C.timepicker?(A=B.find(".xdsoft_current").length?B.find(".xdsoft_current").eq(0).index():0,A+e.deltaY>=0&&A+e.deltaY<B.children().length&&(A+=e.deltaY),B.children().eq(A).length&&B.children().eq(A).trigger("mousedown"),!1):C.datepicker&&!C.timepicker?(I.trigger(e,[e.deltaY,e.deltaX,e.deltaY]),a.val&&a.val(j.str()),J.trigger("changedatetime.xdsoft"),!1):void 0:!0}),J.on("changedatetime.xdsoft",function(t){if(C.onChangeDateTime&&e.isFunction(C.onChangeDateTime)){var a=J.data("input");C.onChangeDateTime.call(J,j.currentTime,a,t),delete C.value,a.trigger("change")}}).on("generate.xdsoft",function(){C.onGenerate&&e.isFunction(C.onGenerate)&&C.onGenerate.call(J,j.currentTime,J.data("input")),q&&(J.trigger("afterOpen.xdsoft"),q=!1)}).on("click.xdsoft",function(e){e.stopPropagation()}),A=0,H=function(e,t){do if(e=e.parentNode,t(e)===!1)break;while("HTML"!==e.nodeName)},Y=function(){var t,a,r,n,o,i,s,d,u,l,f,c,m;if(d=J.data("input"),t=d.offset(),a=d[0],l="top",r=t.top+a.offsetHeight-1,n=t.left,o="absolute",u=e(window).width(),c=e(window).height(),m=e(window).scrollTop(),document.documentElement.clientWidth-t.left<I.parent().outerWidth(!0)){var h=I.parent().outerWidth(!0)-a.offsetWidth;n-=h}"rtl"===d.parent().css("direction")&&(n-=J.outerWidth()-d.outerWidth()),C.fixed?(r-=m,n-=e(window).scrollLeft(),o="fixed"):(s=!1,H(a,function(e){return"fixed"===window.getComputedStyle(e).getPropertyValue("position")?(s=!0,!1):void 0}),s?(o="fixed",r+J.outerHeight()>c+m?(l="bottom",r=c+m-t.top):r-=m):r+a.offsetHeight>c+m&&(r=t.top-a.offsetHeight+1),0>r&&(r=0),n+a.offsetWidth>u&&(n=u-a.offsetWidth)),i=J[0],H(i,function(e){var t;return t=window.getComputedStyle(e).getPropertyValue("position"),"relative"===t&&u>=e.offsetWidth?(n-=(u-e.offsetWidth)/2,!1):void 0}),f={position:o,left:n,top:"",bottom:""},f[l]=r,J.css(f)},J.on("open.xdsoft",function(t){var a=!0;C.onShow&&e.isFunction(C.onShow)&&(a=C.onShow.call(J,j.currentTime,J.data("input"),t)),a!==!1&&(J.show(),Y(),e(window).off("resize.xdsoft",Y).on("resize.xdsoft",Y),C.closeOnWithoutClick&&e([document.body,window]).on("touchstart mousedown.xdsoft",function r(){J.trigger("close.xdsoft"),e([document.body,window]).off("touchstart mousedown.xdsoft",r)}))}).on("close.xdsoft",function(t){var a=!0;N.find(".xdsoft_month,.xdsoft_year").find(".xdsoft_select").hide(),C.onClose&&e.isFunction(C.onClose)&&(a=C.onClose.call(J,j.currentTime,J.data("input"),t)),a===!1||C.opened||C.inline||J.hide(),t.stopPropagation()}).on("toggle.xdsoft",function(){J.trigger(J.is(":visible")?"close.xdsoft":"open.xdsoft")}).data("input",a),X=0,J.data("xdsoft_datetime",j),J.setOptions(C),j.setCurrentTime(i()),a.data("xdsoft_datetimepicker",J).on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function(){a.is(":disabled")||a.data("xdsoft_datetimepicker").is(":visible")&&C.closeOnInputClick||(clearTimeout(X),X=setTimeout(function(){a.is(":disabled")||(q=!0,j.setCurrentTime(i(),!0),C.mask&&s(C),J.trigger("open.xdsoft"))},100))}).on("keydown.xdsoft",function(t){var a,r=t.which;return-1!==[p].indexOf(r)&&C.enterLikeTab?(a=e("input:visible,textarea:visible,button:visible,a:visible"),J.trigger("close.xdsoft"),a.eq(a.index(this)+1).focus(),!1):-1!==[T].indexOf(r)?(J.trigger("close.xdsoft"),!0):void 0}).on("blur.xdsoft",function(){J.trigger("close.xdsoft")})},d=function(t){var a=t.data("xdsoft_datetimepicker");a&&(a.data("xdsoft_datetime",null),a.remove(),t.data("xdsoft_datetimepicker",null).off(".xdsoft"),e(window).off("resize.xdsoft"),e([window,document.body]).off("mousedown.xdsoft touchstart"),t.unmousewheel&&t.unmousewheel())},e(document).off("keydown.xdsoftctrl keyup.xdsoftctrl").on("keydown.xdsoftctrl",function(e){e.keyCode===h&&(F=!0)}).on("keyup.xdsoftctrl",function(e){e.keyCode===h&&(F=!1)}),this.each(function(){var t,a=e(this).data("xdsoft_datetimepicker");if(a){if("string"===e.type(n))switch(n){case"show":e(this).select().focus(),a.trigger("open.xdsoft");break;case"hide":a.trigger("close.xdsoft");break;case"toggle":a.trigger("toggle.xdsoft");break;case"destroy":d(e(this));break;case"reset":this.value=this.defaultValue,this.value&&a.data("xdsoft_datetime").isValidDate(r.parseDate(this.value,C.format))||a.data("changed",!1),a.data("xdsoft_datetime").setCurrentTime(this.value);break;case"validate":t=a.data("input"),t.trigger("blur.xdsoft");break;default:a[n]&&e.isFunction(a[n])&&(u=a[n](i))}else a.setOptions(n);return 0}"string"!==e.type(n)&&(!C.lazyInit||C.open||C.inline?s(e(this)):A(e(this)))}),u},e.fn.datetimepicker.defaults=a}),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){function t(t){var i=t||window.event,s=d.call(arguments,1),u=0,f=0,c=0,m=0,h=0,g=0;if(t=e.event.fix(i),t.type="mousewheel","detail"in i&&(c=-1*i.detail),"wheelDelta"in i&&(c=i.wheelDelta),"wheelDeltaY"in i&&(c=i.wheelDeltaY),"wheelDeltaX"in i&&(f=-1*i.wheelDeltaX),"axis"in i&&i.axis===i.HORIZONTAL_AXIS&&(f=-1*c,c=0),u=0===c?f:c,"deltaY"in i&&(c=-1*i.deltaY,u=c),"deltaX"in i&&(f=i.deltaX,0===c&&(u=-1*f)),0!==c||0!==f){if(1===i.deltaMode){var p=e.data(this,"mousewheel-line-height");u*=p,c*=p,f*=p}else if(2===i.deltaMode){var y=e.data(this,"mousewheel-page-height");u*=y,c*=y,f*=y}if(m=Math.max(Math.abs(c),Math.abs(f)),(!o||o>m)&&(o=m,r(i,m)&&(o/=40)),r(i,m)&&(u/=40,f/=40,c/=40),u=Math[u>=1?"floor":"ceil"](u/o),f=Math[f>=1?"floor":"ceil"](f/o),c=Math[c>=1?"floor":"ceil"](c/o),l.settings.normalizeOffset&&this.getBoundingClientRect){var v=this.getBoundingClientRect();h=t.clientX-v.left,g=t.clientY-v.top}return t.deltaX=f,t.deltaY=c,t.deltaFactor=o,t.offsetX=h,t.offsetY=g,t.deltaMode=0,s.unshift(t,u,f,c),n&&clearTimeout(n),n=setTimeout(a,200),(e.event.dispatch||e.event.handle).apply(this,s)}}function a(){o=null}function r(e,t){return l.settings.adjustOldDeltas&&"mousewheel"===e.type&&t%120===0}var n,o,i=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],s="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],d=Array.prototype.slice;if(e.event.fixHooks)for(var u=i.length;u;)e.event.fixHooks[i[--u]]=e.event.mouseHooks;var l=e.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var a=s.length;a;)this.addEventListener(s[--a],t,!1);else this.onmousewheel=t;e.data(this,"mousewheel-line-height",l.getLineHeight(this)),e.data(this,"mousewheel-page-height",l.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var a=s.length;a;)this.removeEventListener(s[--a],t,!1);else this.onmousewheel=null;e.removeData(this,"mousewheel-line-height"),e.removeData(this,"mousewheel-page-height")},getLineHeight:function(t){var a=e(t),r=a["offsetParent"in e.fn?"offsetParent":"parent"]();return r.length||(r=e("body")),parseInt(r.css("fontSize"),10)||parseInt(a.css("fontSize"),10)||16},getPageHeight:function(t){return e(t).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})});
... ...
www-backend/js/datetimepicker-master/build/jquery.datetimepicker.min.css 0 → 100644
  1 +.xdsoft_datetimepicker{box-shadow:0 5px 15px -5px rgba(0,0,0,0.506);background:#fff;border-bottom:1px solid #bbb;border-left:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;color:#333;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:8px;padding-left:0;padding-top:2px;position:absolute;z-index:9999;-moz-box-sizing:border-box;box-sizing:border-box;display:none}.xdsoft_datetimepicker.xdsoft_rtl{padding:8px 0 8px 8px}.xdsoft_datetimepicker iframe{position:absolute;left:0;top:0;width:75px;height:210px;background:transparent;border:0}.xdsoft_datetimepicker button{border:none !important}.xdsoft_noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.xdsoft_noselect::selection{background:transparent}.xdsoft_noselect::-moz-selection{background:transparent}.xdsoft_datetimepicker.xdsoft_inline{display:inline-block;position:static;box-shadow:none}.xdsoft_datetimepicker *{-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0}.xdsoft_datetimepicker .xdsoft_datepicker,.xdsoft_datetimepicker .xdsoft_timepicker{display:none}.xdsoft_datetimepicker .xdsoft_datepicker.active,.xdsoft_datetimepicker .xdsoft_timepicker.active{display:block}.xdsoft_datetimepicker .xdsoft_datepicker{width:224px;float:left;margin-left:8px}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_datepicker{float:right;margin-right:8px;margin-left:0}.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker{width:256px}.xdsoft_datetimepicker .xdsoft_timepicker{width:58px;float:left;text-align:center;margin-left:8px;margin-top:0}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker{float:right;margin-right:8px;margin-left:0}.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker{margin-top:8px;margin-bottom:3px}.xdsoft_datetimepicker .xdsoft_monthpicker{position:relative;text-align:center}.xdsoft_datetimepicker .xdsoft_label i,.xdsoft_datetimepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_next,.xdsoft_datetimepicker .xdsoft_today_button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC)}.xdsoft_datetimepicker .xdsoft_label i{opacity:.5;background-position:-92px -19px;display:inline-block;width:9px;height:20px;vertical-align:middle}.xdsoft_datetimepicker .xdsoft_prev{float:left;background-position:-20px 0}.xdsoft_datetimepicker .xdsoft_today_button{float:left;background-position:-70px 0;margin-left:5px}.xdsoft_datetimepicker .xdsoft_next{float:right;background-position:0 0}.xdsoft_datetimepicker .xdsoft_next,.xdsoft_datetimepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_today_button{background-color:transparent;background-repeat:no-repeat;border:0 none;cursor:pointer;display:block;height:30px;opacity:.5;-ms-filter:"alpha(opacity=50)";outline:medium none;overflow:hidden;padding:0;position:relative;text-indent:100%;white-space:nowrap;width:20px;min-width:0}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next{float:none;background-position:-40px -15px;height:15px;width:30px;display:block;margin-left:14px;margin-top:7px}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_prev,.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_next{float:none;margin-left:0;margin-right:14px}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev{background-position:-40px 0;margin-bottom:7px;margin-top:0}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box{height:151px;overflow:hidden;border-bottom:1px solid #ddd}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div{background:#f5f5f5;border-top:1px solid #ddd;color:#666;font-size:12px;text-align:center;border-collapse:collapse;cursor:pointer;border-bottom-width:0;height:25px;line-height:25px}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div:first-child{border-top-width:0}.xdsoft_datetimepicker .xdsoft_today_button:hover,.xdsoft_datetimepicker .xdsoft_next:hover,.xdsoft_datetimepicker .xdsoft_prev:hover{opacity:1;-ms-filter:"alpha(opacity=100)"}.xdsoft_datetimepicker .xdsoft_label{display:inline;position:relative;z-index:9999;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:bold;background-color:#fff;float:left;width:182px;text-align:center;cursor:pointer}.xdsoft_datetimepicker .xdsoft_label:hover>span{text-decoration:underline}.xdsoft_datetimepicker .xdsoft_label:hover i{opacity:1.0}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select{border:1px solid #ccc;position:absolute;right:0;top:30px;z-index:101;display:none;background:#fff;max-height:160px;overflow-y:hidden}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select.xdsoft_monthselect{right:-7px}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select.xdsoft_yearselect{right:2px}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select>div>.xdsoft_option:hover{color:#fff;background:#ff8000}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select>div>.xdsoft_option{padding:2px 10px 2px 5px;text-decoration:none !important}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select>div>.xdsoft_option.xdsoft_current{background:#3af;box-shadow:#178fe5 0 1px 3px 0 inset;color:#fff;font-weight:700}.xdsoft_datetimepicker .xdsoft_month{width:100px;text-align:right}.xdsoft_datetimepicker .xdsoft_calendar{clear:both}.xdsoft_datetimepicker .xdsoft_year{width:48px;margin-left:5px}.xdsoft_datetimepicker .xdsoft_calendar table{border-collapse:collapse;width:100%}.xdsoft_datetimepicker .xdsoft_calendar td>div{padding-right:5px}.xdsoft_datetimepicker .xdsoft_calendar th{height:25px}.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th{width:14.2857142%;background:#f5f5f5;border:1px solid #ddd;color:#666;font-size:12px;text-align:right;vertical-align:middle;padding:0;border-collapse:collapse;cursor:pointer;height:25px}.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th{width:12.5%}.xdsoft_datetimepicker .xdsoft_calendar th{background:#f1f1f1}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today{color:#3af}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_default{background:#ffe9d2;box-shadow:#ffb871 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_mint{background:#c1ffc9;box-shadow:#00dd1c 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current{background:#3af;box-shadow:#178fe5 0 1px 3px 0 inset;color:#fff;font-weight:700}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month,.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled,.xdsoft_datetimepicker .xdsoft_time_box>div>div.xdsoft_disabled{opacity:.5;-ms-filter:"alpha(opacity=50)";cursor:default}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled{opacity:.2;-ms-filter:"alpha(opacity=20)"}.xdsoft_datetimepicker .xdsoft_calendar td:hover,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div:hover{color:#fff !important;background:#ff8000 !important;box-shadow:none !important}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current.xdsoft_disabled:hover{background:#3af !important;box-shadow:#178fe5 0 1px 3px 0 inset !important;color:#fff !important}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_disabled:hover{color:inherit !important;background:inherit !important;box-shadow:inherit !important}.xdsoft_datetimepicker .xdsoft_calendar th{font-weight:700;text-align:center;color:#999;cursor:default}.xdsoft_datetimepicker .xdsoft_copyright{color:#ccc !important;font-size:10px;clear:both;float:none;margin-left:8px}.xdsoft_datetimepicker .xdsoft_copyright a{color:#eee !important}.xdsoft_datetimepicker .xdsoft_copyright a:hover{color:#aaa !important}.xdsoft_time_box{position:relative;border:1px solid #ccc}.xdsoft_scrollbar>.xdsoft_scroller{background:#ccc !important;height:20px;border-radius:3px}.xdsoft_scrollbar{position:absolute;width:7px;right:0;top:0;bottom:0;cursor:pointer}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_scrollbar{left:0;right:auto}.xdsoft_scroller_box{position:relative}.xdsoft_datetimepicker.xdsoft_dark{box-shadow:0 5px 15px -5px rgba(255,255,255,0.506);background:#000;border-bottom:1px solid #444;border-left:1px solid #333;border-right:1px solid #333;border-top:1px solid #333;color:#ccc}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box{border-bottom:1px solid #222}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box>div>div{background:#0a0a0a;border-top:1px solid #222;color:#999}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label{background-color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label>.xdsoft_select{border:1px solid #333;background:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label>.xdsoft_select>div>.xdsoft_option:hover{color:#000;background:#007fff}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label>.xdsoft_select>div>.xdsoft_option.xdsoft_current{background:#c50;box-shadow:#b03e00 0 1px 3px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==)}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{background:#0a0a0a;border:1px solid #222;color:#999}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{background:#0e0e0e}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today{color:#c50}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_default{background:#ffe9d2;box-shadow:#ffb871 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_mint{background:#c1ffc9;box-shadow:#00dd1c 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current{background:#c50;box-shadow:#b03e00 0 1px 3px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box>div>div:hover{color:#000 !important;background:#007fff !important}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{color:#666}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright{color:#333 !important}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a{color:#111 !important}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover{color:#555 !important}.xdsoft_dark .xdsoft_time_box{border:1px solid #333}.xdsoft_dark .xdsoft_scrollbar>.xdsoft_scroller{background:#333 !important}.xdsoft_datetimepicker .xdsoft_save_selected{display:block;border:1px solid #ddd !important;margin-top:5px;width:100%;color:#454551;font-size:13px}.xdsoft_datetimepicker .blue-gradient-button{font-family:"museo-sans","Book Antiqua",sans-serif;font-size:12px;font-weight:300;color:#82878c;height:28px;position:relative;padding:4px 17px 4px 33px;border:1px solid #d7d8da;background:-moz-linear-gradient(top,#fff 0,#f4f8fa 73%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(73%,#f4f8fa));background:-webkit-linear-gradient(top,#fff 0,#f4f8fa 73%);background:-o-linear-gradient(top,#fff 0,#f4f8fa 73%);background:-ms-linear-gradient(top,#fff 0,#f4f8fa 73%);background:linear-gradient(to bottom,#fff 0,#f4f8fa 73%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff',endColorstr='#f4f8fa',GradientType=0)}.xdsoft_datetimepicker .blue-gradient-button:hover,.xdsoft_datetimepicker .blue-gradient-button:focus,.xdsoft_datetimepicker .blue-gradient-button:hover span,.xdsoft_datetimepicker .blue-gradient-button:focus span{color:#454551;background:-moz-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f4f8fa),color-stop(73%,#FFF));background:-webkit-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:-o-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:-ms-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:linear-gradient(to bottom,#f4f8fa 0,#FFF 73%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f8fa',endColorstr='#FFF',GradientType=0)}
... ...
www-backend/js/datetimepicker-master/build/jquery.datetimepicker.min.js 0 → 100644
  1 +!function(e){"function"==typeof define&&define.amd?define(["jquery","jquery-mousewheel"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){"use strict";function t(e,t,a){this.date=e,this.desc=t,this.style=a}var a={i18n:{ar:{months:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],dayOfWeekShort:["ن","ث","ع","خ","ج","س","ح"],dayOfWeek:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"]},ro:{months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],dayOfWeekShort:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],dayOfWeek:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"]},id:{months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],dayOfWeekShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],dayOfWeek:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},is:{months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],dayOfWeekShort:["Sun","Mán","Þrið","Mið","Fim","Fös","Lau"],dayOfWeek:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"]},bg:{months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],dayOfWeekShort:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"]},fa:{months:["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"],dayOfWeekShort:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayOfWeek:["یک‌شنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه","شنبه","یک‌شنبه"]},ru:{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],dayOfWeekShort:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"]},uk:{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],dayOfWeekShort:["Ндл","Пнд","Втр","Срд","Чтв","Птн","Сбт"],dayOfWeek:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"]},en:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},el:{months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],dayOfWeekShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayOfWeek:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"]},de:{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],dayOfWeekShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayOfWeek:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},nl:{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],dayOfWeekShort:["zo","ma","di","wo","do","vr","za"],dayOfWeek:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},tr:{months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],dayOfWeekShort:["Paz","Pts","Sal","Çar","Per","Cum","Cts"],dayOfWeek:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},fr:{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],dayOfWeekShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],dayOfWeek:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},es:{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],dayOfWeekShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],dayOfWeek:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"]},th:{months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],dayOfWeekShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayOfWeek:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"]},pl:{months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],dayOfWeekShort:["nd","pn","wt","śr","cz","pt","sb"],dayOfWeek:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},pt:{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},ch:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"]},se:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},kr:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},it:{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayOfWeek:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"]},da:{months:["January","Februar","Marts","April","Maj","Juni","July","August","September","Oktober","November","December"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},no:{months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"]},ja:{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeekShort:["日","月","火","水","木","金","土"],dayOfWeek:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"]},vi:{months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayOfWeekShort:["CN","T2","T3","T4","T5","T6","T7"],dayOfWeek:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"]},sl:{months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],dayOfWeekShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayOfWeek:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"]},cs:{months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],dayOfWeekShort:["Ne","Po","Út","St","Čt","Pá","So"]},hu:{months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],dayOfWeekShort:["Va","Hé","Ke","Sze","Cs","Pé","Szo"],dayOfWeek:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"]},az:{months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],dayOfWeekShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayOfWeek:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"]},bs:{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ca:{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],dayOfWeekShort:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"],dayOfWeek:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"]},"en-GB":{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},et:{months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],dayOfWeekShort:["P","E","T","K","N","R","L"],dayOfWeek:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"]},eu:{months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],dayOfWeekShort:["Ig.","Al.","Ar.","Az.","Og.","Or.","La."],dayOfWeek:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"]},fi:{months:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],dayOfWeekShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayOfWeek:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},gl:{months:["Xan","Feb","Maz","Abr","Mai","Xun","Xul","Ago","Set","Out","Nov","Dec"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Xov","Ven","Sab"],dayOfWeek:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"]},hr:{months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ko:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},lt:{months:["Sausio","Vasario","Kovo","Balandžio","Gegužės","Birželio","Liepos","Rugpjūčio","Rugsėjo","Spalio","Lapkričio","Gruodžio"],dayOfWeekShort:["Sek","Pir","Ant","Tre","Ket","Pen","Šeš"],dayOfWeek:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"]},lv:{months:["Janvāris","Februāris","Marts","Aprīlis ","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],dayOfWeekShort:["Sv","Pr","Ot","Tr","Ct","Pk","St"],dayOfWeek:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"]},mk:{months:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],dayOfWeekShort:["нед","пон","вто","сре","чет","пет","саб"],dayOfWeek:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"]},mn:{months:["1-р сар","2-р сар","3-р сар","4-р сар","5-р сар","6-р сар","7-р сар","8-р сар","9-р сар","10-р сар","11-р сар","12-р сар"],dayOfWeekShort:["Дав","Мяг","Лха","Пүр","Бсн","Бям","Ням"],dayOfWeek:["Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба","Ням"]},"pt-BR":{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},sk:{months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],dayOfWeekShort:["Ne","Po","Ut","St","Št","Pi","So"],dayOfWeek:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"]},sq:{months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],dayOfWeekShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],dayOfWeek:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"]},"sr-YU":{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sre","čet","Pet","Sub"],dayOfWeek:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"]},sr:{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],dayOfWeekShort:["нед","пон","уто","сре","чет","пет","суб"],dayOfWeek:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"]},sv:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayOfWeek:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"]},"zh-TW":{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},zh:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},he:{months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],dayOfWeekShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayOfWeek:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"]},hy:{months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],dayOfWeekShort:["Կի","Երկ","Երք","Չոր","Հնգ","Ուրբ","Շբթ"],dayOfWeek:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"]},kg:{months:["Үчтүн айы","Бирдин айы","Жалган Куран","Чын Куран","Бугу","Кулжа","Теке","Баш Оона","Аяк Оона","Тогуздун айы","Жетинин айы","Бештин айы"],dayOfWeekShort:["Жек","Дүй","Шей","Шар","Бей","Жум","Ише"],dayOfWeek:["Жекшемб","Дүйшөмб","Шейшемб","Шаршемб","Бейшемби","Жума","Ишенб"]},rm:{months:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],dayOfWeekShort:["Du","Gli","Ma","Me","Gie","Ve","So"],dayOfWeek:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"]},ka:{months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],dayOfWeekShort:["კვ","ორშ","სამშ","ოთხ","ხუთ","პარ","შაბ"],dayOfWeek:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"]}},value:"",rtl:!1,format:"Y/m/d H:i",formatTime:"H:i",formatDate:"Y/m/d",startDate:!1,step:60,monthChangeSpinner:!0,closeOnDateSelect:!1,closeOnTimeSelect:!0,closeOnWithoutClick:!0,closeOnInputClick:!0,timepicker:!0,datepicker:!0,weeks:!1,defaultTime:!1,defaultDate:!1,minDate:!1,maxDate:!1,minTime:!1,maxTime:!1,disabledMinTime:!1,disabledMaxTime:!1,allowTimes:[],opened:!1,initTime:!0,inline:!1,theme:"",onSelectDate:function(){},onSelectTime:function(){},onChangeMonth:function(){},onGetWeekOfYear:function(){},onChangeYear:function(){},onChangeDateTime:function(){},onShow:function(){},onClose:function(){},onGenerate:function(){},withoutCopyright:!0,inverseButton:!1,hours12:!1,next:"xdsoft_next",prev:"xdsoft_prev",dayOfWeekStart:0,parentID:"body",timeHeightInTimePicker:25,timepickerScrollbar:!0,todayButton:!0,prevButton:!0,nextButton:!0,defaultSelect:!0,scrollMonth:!0,scrollTime:!0,scrollInput:!0,lazyInit:!1,mask:!1,validateOnBlur:!0,allowBlank:!0,yearStart:1950,yearEnd:2050,monthStart:0,monthEnd:11,style:"",id:"",fixed:!1,roundTime:"round",className:"",weekends:[],highlightedDates:[],highlightedPeriods:[],allowDates:[],allowDateRe:null,disabledDates:[],disabledWeekDays:[],yearOffset:0,beforeShowDay:null,enterLikeTab:!0,showApplyButton:!1},o=null,r="en",n="en",i={meridiem:["AM","PM"]},s=function(){var t=a.i18n[n],r={days:t.dayOfWeek,daysShort:t.dayOfWeekShort,months:t.months,monthsShort:e.map(t.months,function(e){return e.substring(0,3)})};o=new DateFormatter({dateSettings:e.extend({},i,r)})};e.datetimepicker={setLocale:function(e){var t=a.i18n[e]?e:r;n!=t&&(n=t,s())},setDateFormatter:function(e){o=e},RFC_2822:"D, d M Y H:i:s O",ATOM:"Y-m-dTH:i:sP",ISO_8601:"Y-m-dTH:i:sO",RFC_822:"D, d M y H:i:s O",RFC_850:"l, d-M-y H:i:s T",RFC_1036:"D, d M y H:i:s O",RFC_1123:"D, d M Y H:i:s O",RSS:"D, d M Y H:i:s O",W3C:"Y-m-dTH:i:sP"},s(),window.getComputedStyle||(window.getComputedStyle=function(e){return this.el=e,this.getPropertyValue=function(t){var a=/(\-([a-z]){1})/g;return"float"===t&&(t="styleFloat"),a.test(t)&&(t=t.replace(a,function(e,t,a){return a.toUpperCase()})),e.currentStyle[t]||null},this}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var a,o;for(a=t||0,o=this.length;o>a;a+=1)if(this[a]===e)return a;return-1}),Date.prototype.countDaysInMonth=function(){return new Date(this.getFullYear(),this.getMonth()+1,0).getDate()},e.fn.xdsoftScroller=function(t){return this.each(function(){var a,o,r,n,i,s=e(this),d=function(e){var t,a={x:0,y:0};return"touchstart"===e.type||"touchmove"===e.type||"touchend"===e.type||"touchcancel"===e.type?(t=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],a.x=t.clientX,a.y=t.clientY):("mousedown"===e.type||"mouseup"===e.type||"mousemove"===e.type||"mouseover"===e.type||"mouseout"===e.type||"mouseenter"===e.type||"mouseleave"===e.type)&&(a.x=e.clientX,a.y=e.clientY),a},u=100,l=!1,f=0,c=0,m=0,h=!1,g=0,p=function(){};return"hide"===t?void s.find(".xdsoft_scrollbar").hide():(e(this).hasClass("xdsoft_scroller_box")||(a=s.children().eq(0),o=s[0].clientHeight,r=a[0].offsetHeight,n=e('<div class="xdsoft_scrollbar"></div>'),i=e('<div class="xdsoft_scroller"></div>'),n.append(i),s.addClass("xdsoft_scroller_box").append(n),p=function(e){var t=d(e).y-f+g;0>t&&(t=0),t+i[0].offsetHeight>m&&(t=m-i[0].offsetHeight),s.trigger("scroll_element.xdsoft_scroller",[u?t/u:0])},i.on("touchstart.xdsoft_scroller mousedown.xdsoft_scroller",function(a){o||s.trigger("resize_scroll.xdsoft_scroller",[t]),f=d(a).y,g=parseInt(i.css("margin-top"),10),m=n[0].offsetHeight,"mousedown"===a.type||"touchstart"===a.type?(document&&e(document.body).addClass("xdsoft_noselect"),e([document.body,window]).on("touchend mouseup.xdsoft_scroller",function r(){e([document.body,window]).off("touchend mouseup.xdsoft_scroller",r).off("mousemove.xdsoft_scroller",p).removeClass("xdsoft_noselect")}),e(document.body).on("mousemove.xdsoft_scroller",p)):(h=!0,a.stopPropagation(),a.preventDefault())}).on("touchmove",function(e){h&&(e.preventDefault(),p(e))}).on("touchend touchcancel",function(){h=!1,g=0}),s.on("scroll_element.xdsoft_scroller",function(e,t){o||s.trigger("resize_scroll.xdsoft_scroller",[t,!0]),t=t>1?1:0>t||isNaN(t)?0:t,i.css("margin-top",u*t),setTimeout(function(){a.css("marginTop",-parseInt((a[0].offsetHeight-o)*t,10))},10)}).on("resize_scroll.xdsoft_scroller",function(e,t,d){var l,f;o=s[0].clientHeight,r=a[0].offsetHeight,l=o/r,f=l*n[0].offsetHeight,l>1?i.hide():(i.show(),i.css("height",parseInt(f>10?f:10,10)),u=n[0].offsetHeight-i[0].offsetHeight,d!==!0&&s.trigger("scroll_element.xdsoft_scroller",[t||Math.abs(parseInt(a.css("marginTop"),10))/(r-o)]))}),s.on("mousewheel",function(e){var t=Math.abs(parseInt(a.css("marginTop"),10));return t-=20*e.deltaY,0>t&&(t=0),s.trigger("scroll_element.xdsoft_scroller",[t/(r-o)]),e.stopPropagation(),!1}),s.on("touchstart",function(e){l=d(e),c=Math.abs(parseInt(a.css("marginTop"),10))}),s.on("touchmove",function(e){if(l){e.preventDefault();var t=d(e);s.trigger("scroll_element.xdsoft_scroller",[(c-(t.y-l.y))/(r-o)])}}),s.on("touchend touchcancel",function(){l=!1,c=0})),void s.trigger("resize_scroll.xdsoft_scroller",[t]))})},e.fn.datetimepicker=function(r,i){var s,d,u=this,l=48,f=57,c=96,m=105,h=17,g=46,p=13,y=27,k=8,b=37,x=38,v=39,D=40,T=9,S=116,O=65,w=67,M=86,_=90,W=89,F=!1,C=e.isPlainObject(r)||!r?e.extend(!0,{},a,r):e.extend(!0,{},a),A=0,P=function(e){e.on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function t(){e.is(":disabled")||e.data("xdsoft_datetimepicker")||(clearTimeout(A),A=setTimeout(function(){e.data("xdsoft_datetimepicker")||s(e),e.off("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",t).trigger("open.xdsoft")},100))})};return s=function(a){function i(){var e,t=!1;return C.startDate?t=J.strToDate(C.startDate):(t=C.value||(a&&a.val&&a.val()?a.val():""),t?t=J.strToDateTime(t):C.defaultDate&&(t=J.strToDateTime(C.defaultDate),C.defaultTime&&(e=J.strtotime(C.defaultTime),t.setHours(e.getHours()),t.setMinutes(e.getMinutes())))),t&&J.isValidDate(t)?Y.data("changed",!0):t="",t||0}function s(t){var o=function(e,t){var a=e.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g,"\\$1").replace(/_/g,"{digit+}").replace(/([0-9]{1})/g,"{digit$1}").replace(/\{digit([0-9]{1})\}/g,"[0-$1_]{1}").replace(/\{digit[\+]\}/g,"[0-9_]{1}");return new RegExp(a).test(t)},r=function(e){try{if(document.selection&&document.selection.createRange){var t=document.selection.createRange();return t.getBookmark().charCodeAt(2)-2}if(e.setSelectionRange)return e.selectionStart}catch(a){return 0}},n=function(e,t){if(e="string"==typeof e||e instanceof String?document.getElementById(e):e,!e)return!1;if(e.createTextRange){var a=e.createTextRange();return a.collapse(!0),a.moveEnd("character",t),a.moveStart("character",t),a.select(),!0}return e.setSelectionRange?(e.setSelectionRange(t,t),!0):!1};t.mask&&a.off("keydown.xdsoft"),t.mask===!0&&(t.mask="undefined"!=typeof moment?t.format.replace(/Y{4}/g,"9999").replace(/Y{2}/g,"99").replace(/M{2}/g,"19").replace(/D{2}/g,"39").replace(/H{2}/g,"29").replace(/m{2}/g,"59").replace(/s{2}/g,"59"):t.format.replace(/Y/g,"9999").replace(/F/g,"9999").replace(/m/g,"19").replace(/d/g,"39").replace(/H/g,"29").replace(/i/g,"59").replace(/s/g,"59")),"string"===e.type(t.mask)&&(o(t.mask,a.val())||(a.val(t.mask.replace(/[0-9]/g,"_")),n(a[0],0)),a.on("keydown.xdsoft",function(i){var s,d,u=this.value,C=i.which;if(C>=l&&f>=C||C>=c&&m>=C||C===k||C===g){for(s=r(this),d=C!==k&&C!==g?String.fromCharCode(C>=c&&m>=C?C-l:C):"_",C!==k&&C!==g||!s||(s-=1,d="_");/[^0-9_]/.test(t.mask.substr(s,1))&&s<t.mask.length&&s>0;)s+=C===k||C===g?-1:1;if(u=u.substr(0,s)+d+u.substr(s+1),""===e.trim(u))u=t.mask.replace(/[0-9]/g,"_");else if(s===t.mask.length)return i.preventDefault(),!1;for(s+=C===k||C===g?0:1;/[^0-9_]/.test(t.mask.substr(s,1))&&s<t.mask.length&&s>0;)s+=C===k||C===g?-1:1;o(t.mask,u)?(this.value=u,n(this,s)):""===e.trim(u)?this.value=t.mask.replace(/[0-9]/g,"_"):a.trigger("error_input.xdsoft")}else if(-1!==[O,w,M,_,W].indexOf(C)&&F||-1!==[y,x,D,b,v,S,h,T,p].indexOf(C))return!0;return i.preventDefault(),!1}))}var d,u,A,P,j,J,H,Y=e('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'),z=e('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),N=e('<div class="xdsoft_datepicker active"></div>'),I=e('<div class="xdsoft_monthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button><div class="xdsoft_label xdsoft_month"><span></span><i></i></div><div class="xdsoft_label xdsoft_year"><span></span><i></i></div><button type="button" class="xdsoft_next"></button></div>'),L=e('<div class="xdsoft_calendar"></div>'),R=e('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),V=R.find(".xdsoft_time_box").eq(0),E=e('<div class="xdsoft_time_variant"></div>'),B=e('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),G=e('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),q=e('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),K=!1,U=0;C.id&&Y.attr("id",C.id),C.style&&Y.attr("style",C.style),C.weeks&&Y.addClass("xdsoft_showweeks"),C.rtl&&Y.addClass("xdsoft_rtl"),Y.addClass("xdsoft_"+C.theme),Y.addClass(C.className),I.find(".xdsoft_month span").after(G),I.find(".xdsoft_year span").after(q),I.find(".xdsoft_month,.xdsoft_year").on("touchstart mousedown.xdsoft",function(t){var a,o,r=e(this).find(".xdsoft_select").eq(0),n=0,i=0,s=r.is(":visible");for(I.find(".xdsoft_select").hide(),J.currentTime&&(n=J.currentTime[e(this).hasClass("xdsoft_month")?"getMonth":"getFullYear"]()),r[s?"hide":"show"](),a=r.find("div.xdsoft_option"),o=0;o<a.length&&a.eq(o).data("value")!==n;o+=1)i+=a[0].offsetHeight;return r.xdsoftScroller(i/(r.children()[0].offsetHeight-r[0].clientHeight)),t.stopPropagation(),!1}),I.find(".xdsoft_select").xdsoftScroller().on("touchstart mousedown.xdsoft",function(e){e.stopPropagation(),e.preventDefault()}).on("touchstart mousedown.xdsoft",".xdsoft_option",function(){(void 0===J.currentTime||null===J.currentTime)&&(J.currentTime=J.now());var t=J.currentTime.getFullYear();J&&J.currentTime&&J.currentTime[e(this).parent().parent().hasClass("xdsoft_monthselect")?"setMonth":"setFullYear"](e(this).data("value")),e(this).parent().parent().hide(),Y.trigger("xchange.xdsoft"),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(Y,J.currentTime,Y.data("input")),t!==J.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(Y,J.currentTime,Y.data("input"))}),Y.getValue=function(){return J.getCurrentTime()},Y.setOptions=function(r){var n={};C=e.extend(!0,{},C,r),r.allowTimes&&e.isArray(r.allowTimes)&&r.allowTimes.length&&(C.allowTimes=e.extend(!0,[],r.allowTimes)),r.weekends&&e.isArray(r.weekends)&&r.weekends.length&&(C.weekends=e.extend(!0,[],r.weekends)),r.allowDates&&e.isArray(r.allowDates)&&r.allowDates.length&&(C.allowDates=e.extend(!0,[],r.allowDates)),r.allowDateRe&&"[object String]"===Object.prototype.toString.call(r.allowDateRe)&&(C.allowDateRe=new RegExp(r.allowDateRe)),r.highlightedDates&&e.isArray(r.highlightedDates)&&r.highlightedDates.length&&(e.each(r.highlightedDates,function(a,r){var i,s=e.map(r.split(","),e.trim),d=new t(o.parseDate(s[0],C.formatDate),s[1],s[2]),u=o.formatDate(d.date,C.formatDate);void 0!==n[u]?(i=n[u].desc,i&&i.length&&d.desc&&d.desc.length&&(n[u].desc=i+"\n"+d.desc)):n[u]=d}),C.highlightedDates=e.extend(!0,[],n)),r.highlightedPeriods&&e.isArray(r.highlightedPeriods)&&r.highlightedPeriods.length&&(n=e.extend(!0,[],C.highlightedDates),e.each(r.highlightedPeriods,function(a,r){var i,s,d,u,l,f,c;if(e.isArray(r))i=r[0],s=r[1],d=r[2],c=r[3];else{var m=e.map(r.split(","),e.trim);i=o.parseDate(m[0],C.formatDate),s=o.parseDate(m[1],C.formatDate),d=m[2],c=m[3]}for(;s>=i;)u=new t(i,d,c),l=o.formatDate(i,C.formatDate),i.setDate(i.getDate()+1),void 0!==n[l]?(f=n[l].desc,f&&f.length&&u.desc&&u.desc.length&&(n[l].desc=f+"\n"+u.desc)):n[l]=u}),C.highlightedDates=e.extend(!0,[],n)),r.disabledDates&&e.isArray(r.disabledDates)&&r.disabledDates.length&&(C.disabledDates=e.extend(!0,[],r.disabledDates)),r.disabledWeekDays&&e.isArray(r.disabledWeekDays)&&r.disabledWeekDays.length&&(C.disabledWeekDays=e.extend(!0,[],r.disabledWeekDays)),!C.open&&!C.opened||C.inline||a.trigger("open.xdsoft"),C.inline&&(K=!0,Y.addClass("xdsoft_inline"),a.after(Y).hide()),C.inverseButton&&(C.next="xdsoft_prev",C.prev="xdsoft_next"),C.datepicker?N.addClass("active"):N.removeClass("active"),C.timepicker?R.addClass("active"):R.removeClass("active"),C.value&&(J.setCurrentTime(C.value),a&&a.val&&a.val(J.str)),C.dayOfWeekStart=isNaN(C.dayOfWeekStart)?0:parseInt(C.dayOfWeekStart,10)%7,C.timepickerScrollbar||V.xdsoftScroller("hide"),C.minDate&&/^[\+\-](.*)$/.test(C.minDate)&&(C.minDate=o.formatDate(J.strToDateTime(C.minDate),C.formatDate)),C.maxDate&&/^[\+\-](.*)$/.test(C.maxDate)&&(C.maxDate=o.formatDate(J.strToDateTime(C.maxDate),C.formatDate)),B.toggle(C.showApplyButton),I.find(".xdsoft_today_button").css("visibility",C.todayButton?"visible":"hidden"),I.find("."+C.prev).css("visibility",C.prevButton?"visible":"hidden"),I.find("."+C.next).css("visibility",C.nextButton?"visible":"hidden"),s(C),C.validateOnBlur&&a.off("blur.xdsoft").on("blur.xdsoft",function(){if(C.allowBlank&&(!e.trim(e(this).val()).length||"string"==typeof C.mask&&e.trim(e(this).val())===C.mask.replace(/[0-9]/g,"_")))e(this).val(null),Y.data("xdsoft_datetime").empty();else{var t=o.parseDate(e(this).val(),C.format);if(t)e(this).val(o.formatDate(t,C.format));else{var a=+[e(this).val()[0],e(this).val()[1]].join(""),r=+[e(this).val()[2],e(this).val()[3]].join("");e(this).val(!C.datepicker&&C.timepicker&&a>=0&&24>a&&r>=0&&60>r?[a,r].map(function(e){return e>9?e:"0"+e}).join(":"):o.formatDate(J.now(),C.format))}Y.data("xdsoft_datetime").setCurrentTime(e(this).val())}Y.trigger("changedatetime.xdsoft"),Y.trigger("close.xdsoft")}),C.dayOfWeekStartPrev=0===C.dayOfWeekStart?6:C.dayOfWeekStart-1,Y.trigger("xchange.xdsoft").trigger("afterOpen.xdsoft")},Y.data("options",C).on("touchstart mousedown.xdsoft",function(e){return e.stopPropagation(),e.preventDefault(),q.hide(),G.hide(),!1}),V.append(E),V.xdsoftScroller(),Y.on("afterOpen.xdsoft",function(){V.xdsoftScroller()}),Y.append(N).append(R),C.withoutCopyright!==!0&&Y.append(z),N.append(I).append(L).append(B),e(C.parentID).append(Y),d=function(){var t=this;t.now=function(e){var a,o,r=new Date;return!e&&C.defaultDate&&(a=t.strToDateTime(C.defaultDate),r.setFullYear(a.getFullYear()),r.setMonth(a.getMonth()),r.setDate(a.getDate())),C.yearOffset&&r.setFullYear(r.getFullYear()+C.yearOffset),!e&&C.defaultTime&&(o=t.strtotime(C.defaultTime),r.setHours(o.getHours()),r.setMinutes(o.getMinutes())),r},t.isValidDate=function(e){return"[object Date]"!==Object.prototype.toString.call(e)?!1:!isNaN(e.getTime())},t.setCurrentTime=function(e,a){t.currentTime="string"==typeof e?t.strToDateTime(e):t.isValidDate(e)?e:e||a||!C.allowBlank?t.now():null,Y.trigger("xchange.xdsoft")},t.empty=function(){t.currentTime=null},t.getCurrentTime=function(){return t.currentTime},t.nextMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var a,o=t.currentTime.getMonth()+1;return 12===o&&(t.currentTime.setFullYear(t.currentTime.getFullYear()+1),o=0),a=t.currentTime.getFullYear(),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),o+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(o),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(Y,J.currentTime,Y.data("input")),a!==t.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(Y,J.currentTime,Y.data("input")),Y.trigger("xchange.xdsoft"),o},t.prevMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var a=t.currentTime.getMonth()-1;return-1===a&&(t.currentTime.setFullYear(t.currentTime.getFullYear()-1),a=11),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),a+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(a),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(Y,J.currentTime,Y.data("input")),Y.trigger("xchange.xdsoft"),a},t.getWeekOfYear=function(t){if(C.onGetWeekOfYear&&e.isFunction(C.onGetWeekOfYear)){var a=C.onGetWeekOfYear.call(Y,t);if("undefined"!=typeof a)return a}var o=new Date(t.getFullYear(),0,1);return 4!=o.getDay()&&o.setMonth(0,1+(4-o.getDay()+7)%7),Math.ceil(((t-o)/864e5+o.getDay()+1)/7)},t.strToDateTime=function(e){var a,r,n=[];return e&&e instanceof Date&&t.isValidDate(e)?e:(n=/^(\+|\-)(.*)$/.exec(e),n&&(n[2]=o.parseDate(n[2],C.formatDate)),n&&n[2]?(a=n[2].getTime()-6e4*n[2].getTimezoneOffset(),r=new Date(t.now(!0).getTime()+parseInt(n[1]+"1",10)*a)):r=e?o.parseDate(e,C.format):t.now(),t.isValidDate(r)||(r=t.now()),r)},t.strToDate=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?o.parseDate(e,C.formatDate):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.strtotime=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?o.parseDate(e,C.formatTime):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.str=function(){return o.formatDate(t.currentTime,C.format)},t.currentTime=this.now()},J=new d,B.on("touchend click",function(e){e.preventDefault(),Y.data("changed",!0),J.setCurrentTime(i()),a.val(J.str()),Y.trigger("close.xdsoft")}),I.find(".xdsoft_today_button").on("touchend mousedown.xdsoft",function(){
  2 +Y.data("changed",!0),J.setCurrentTime(0,!0),Y.trigger("afterOpen.xdsoft")}).on("dblclick.xdsoft",function(){var e,t,o=J.getCurrentTime();o=new Date(o.getFullYear(),o.getMonth(),o.getDate()),e=J.strToDate(C.minDate),e=new Date(e.getFullYear(),e.getMonth(),e.getDate()),e>o||(t=J.strToDate(C.maxDate),t=new Date(t.getFullYear(),t.getMonth(),t.getDate()),o>t||(a.val(J.str()),a.trigger("change"),Y.trigger("close.xdsoft")))}),I.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,o=!1;!function r(e){t.hasClass(C.next)?J.nextMonth():t.hasClass(C.prev)&&J.prevMonth(),C.monthChangeSpinner&&(o||(a=setTimeout(r,e||100)))}(500),e([document.body,window]).on("touchend mouseup.xdsoft",function n(){clearTimeout(a),o=!0,e([document.body,window]).off("touchend mouseup.xdsoft",n)})}),R.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,o=!1,r=110;!function n(e){var i=V[0].clientHeight,s=E[0].offsetHeight,d=Math.abs(parseInt(E.css("marginTop"),10));t.hasClass(C.next)&&s-i-C.timeHeightInTimePicker>=d?E.css("marginTop","-"+(d+C.timeHeightInTimePicker)+"px"):t.hasClass(C.prev)&&d-C.timeHeightInTimePicker>=0&&E.css("marginTop","-"+(d-C.timeHeightInTimePicker)+"px"),V.trigger("scroll_element.xdsoft_scroller",[Math.abs(parseInt(E[0].style.marginTop,10)/(s-i))]),r=r>10?10:r-10,o||(a=setTimeout(n,e||r))}(500),e([document.body,window]).on("touchend mouseup.xdsoft",function i(){clearTimeout(a),o=!0,e([document.body,window]).off("touchend mouseup.xdsoft",i)})}),u=0,Y.on("xchange.xdsoft",function(t){clearTimeout(u),u=setTimeout(function(){if(void 0===J.currentTime||null===J.currentTime){if(C.allowBlank)return;J.currentTime=J.now()}for(var t,i,s,d,u,l,f,c,m,h,g="",p=new Date(J.currentTime.getFullYear(),J.currentTime.getMonth(),1,12,0,0),y=0,k=J.now(),b=!1,x=!1,v=[],D=!0,T="",S="";p.getDay()!==C.dayOfWeekStart;)p.setDate(p.getDate()-1);for(g+="<table><thead><tr>",C.weeks&&(g+="<th></th>"),t=0;7>t;t+=1)g+="<th>"+C.i18n[n].dayOfWeekShort[(t+C.dayOfWeekStart)%7]+"</th>";for(g+="</tr></thead>",g+="<tbody>",C.maxDate!==!1&&(b=J.strToDate(C.maxDate),b=new Date(b.getFullYear(),b.getMonth(),b.getDate(),23,59,59,999)),C.minDate!==!1&&(x=J.strToDate(C.minDate),x=new Date(x.getFullYear(),x.getMonth(),x.getDate()));y<J.currentTime.countDaysInMonth()||p.getDay()!==C.dayOfWeekStart||J.currentTime.getMonth()===p.getMonth();)v=[],y+=1,s=p.getDay(),d=p.getDate(),u=p.getFullYear(),l=p.getMonth(),f=J.getWeekOfYear(p),h="",v.push("xdsoft_date"),c=C.beforeShowDay&&e.isFunction(C.beforeShowDay.call)?C.beforeShowDay.call(Y,p):null,C.allowDateRe&&"[object RegExp]"===Object.prototype.toString.call(C.allowDateRe)?C.allowDateRe.test(o.formatDate(p,C.formatDate))||v.push("xdsoft_disabled"):C.allowDates&&C.allowDates.length>0?-1===C.allowDates.indexOf(o.formatDate(p,C.formatDate))&&v.push("xdsoft_disabled"):b!==!1&&p>b||x!==!1&&x>p||c&&c[0]===!1?v.push("xdsoft_disabled"):-1!==C.disabledDates.indexOf(o.formatDate(p,C.formatDate))?v.push("xdsoft_disabled"):-1!==C.disabledWeekDays.indexOf(s)?v.push("xdsoft_disabled"):a.is("[readonly]")&&v.push("xdsoft_disabled"),c&&""!==c[1]&&v.push(c[1]),J.currentTime.getMonth()!==l&&v.push("xdsoft_other_month"),(C.defaultSelect||Y.data("changed"))&&o.formatDate(J.currentTime,C.formatDate)===o.formatDate(p,C.formatDate)&&v.push("xdsoft_current"),o.formatDate(k,C.formatDate)===o.formatDate(p,C.formatDate)&&v.push("xdsoft_today"),(0===p.getDay()||6===p.getDay()||-1!==C.weekends.indexOf(o.formatDate(p,C.formatDate)))&&v.push("xdsoft_weekend"),void 0!==C.highlightedDates[o.formatDate(p,C.formatDate)]&&(i=C.highlightedDates[o.formatDate(p,C.formatDate)],v.push(void 0===i.style?"xdsoft_highlighted_default":i.style),h=void 0===i.desc?"":i.desc),C.beforeShowDay&&e.isFunction(C.beforeShowDay)&&v.push(C.beforeShowDay(p)),D&&(g+="<tr>",D=!1,C.weeks&&(g+="<th>"+f+"</th>")),g+='<td data-date="'+d+'" data-month="'+l+'" data-year="'+u+'" class="xdsoft_date xdsoft_day_of_week'+p.getDay()+" "+v.join(" ")+'" title="'+h+'"><div>'+d+"</div></td>",p.getDay()===C.dayOfWeekStartPrev&&(g+="</tr>",D=!0),p.setDate(d+1);if(g+="</tbody></table>",L.html(g),I.find(".xdsoft_label span").eq(0).text(C.i18n[n].months[J.currentTime.getMonth()]),I.find(".xdsoft_label span").eq(1).text(J.currentTime.getFullYear()),T="",S="",l="",m=function(t,r){var n,i,s=J.now(),d=C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length;s.setHours(t),t=parseInt(s.getHours(),10),s.setMinutes(r),r=parseInt(s.getMinutes(),10),n=new Date(J.currentTime),n.setHours(t),n.setMinutes(r),v=[],C.minDateTime!==!1&&C.minDateTime>n||C.maxTime!==!1&&J.strtotime(C.maxTime).getTime()<s.getTime()||C.minTime!==!1&&J.strtotime(C.minTime).getTime()>s.getTime()?v.push("xdsoft_disabled"):C.minDateTime!==!1&&C.minDateTime>n||C.disabledMinTime!==!1&&s.getTime()>J.strtotime(C.disabledMinTime).getTime()&&C.disabledMaxTime!==!1&&s.getTime()<J.strtotime(C.disabledMaxTime).getTime()?v.push("xdsoft_disabled"):a.is("[readonly]")&&v.push("xdsoft_disabled"),i=new Date(J.currentTime),i.setHours(parseInt(J.currentTime.getHours(),10)),d||i.setMinutes(Math[C.roundTime](J.currentTime.getMinutes()/C.step)*C.step),(C.initTime||C.defaultSelect||Y.data("changed"))&&i.getHours()===parseInt(t,10)&&(!d&&C.step>59||i.getMinutes()===parseInt(r,10))&&(C.defaultSelect||Y.data("changed")?v.push("xdsoft_current"):C.initTime&&v.push("xdsoft_init_time")),parseInt(k.getHours(),10)===parseInt(t,10)&&parseInt(k.getMinutes(),10)===parseInt(r,10)&&v.push("xdsoft_today"),T+='<div class="xdsoft_time '+v.join(" ")+'" data-hour="'+t+'" data-minute="'+r+'">'+o.formatDate(s,C.formatTime)+"</div>"},C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length)for(y=0;y<C.allowTimes.length;y+=1)S=J.strtotime(C.allowTimes[y]).getHours(),l=J.strtotime(C.allowTimes[y]).getMinutes(),m(S,l);else for(y=0,t=0;y<(C.hours12?12:24);y+=1)for(t=0;60>t;t+=C.step)S=(10>y?"0":"")+y,l=(10>t?"0":"")+t,m(S,l);for(E.html(T),r="",y=0,y=parseInt(C.yearStart,10)+C.yearOffset;y<=parseInt(C.yearEnd,10)+C.yearOffset;y+=1)r+='<div class="xdsoft_option '+(J.currentTime.getFullYear()===y?"xdsoft_current":"")+'" data-value="'+y+'">'+y+"</div>";for(q.children().eq(0).html(r),y=parseInt(C.monthStart,10),r="";y<=parseInt(C.monthEnd,10);y+=1)r+='<div class="xdsoft_option '+(J.currentTime.getMonth()===y?"xdsoft_current":"")+'" data-value="'+y+'">'+C.i18n[n].months[y]+"</div>";G.children().eq(0).html(r),e(Y).trigger("generate.xdsoft")},10),t.stopPropagation()}).on("afterOpen.xdsoft",function(){if(C.timepicker){var e,t,a,o;E.find(".xdsoft_current").length?e=".xdsoft_current":E.find(".xdsoft_init_time").length&&(e=".xdsoft_init_time"),e?(t=V[0].clientHeight,a=E[0].offsetHeight,o=E.find(e).index()*C.timeHeightInTimePicker+1,o>a-t&&(o=a-t),V.trigger("scroll_element.xdsoft_scroller",[parseInt(o,10)/(a-t)])):V.trigger("scroll_element.xdsoft_scroller",[0])}}),A=0,L.on("touchend click.xdsoft","td",function(t){t.stopPropagation(),A+=1;var o=e(this),r=J.currentTime;return(void 0===r||null===r)&&(J.currentTime=J.now(),r=J.currentTime),o.hasClass("xdsoft_disabled")?!1:(r.setDate(1),r.setFullYear(o.data("year")),r.setMonth(o.data("month")),r.setDate(o.data("date")),Y.trigger("select.xdsoft",[r]),a.val(J.str()),C.onSelectDate&&e.isFunction(C.onSelectDate)&&C.onSelectDate.call(Y,J.currentTime,Y.data("input"),t),Y.data("changed",!0),Y.trigger("xchange.xdsoft"),Y.trigger("changedatetime.xdsoft"),(A>1||C.closeOnDateSelect===!0||C.closeOnDateSelect===!1&&!C.timepicker)&&!C.inline&&Y.trigger("close.xdsoft"),void setTimeout(function(){A=0},200))}),E.on("touchend click.xdsoft","div",function(t){t.stopPropagation();var a=e(this),o=J.currentTime;return(void 0===o||null===o)&&(J.currentTime=J.now(),o=J.currentTime),a.hasClass("xdsoft_disabled")?!1:(o.setHours(a.data("hour")),o.setMinutes(a.data("minute")),Y.trigger("select.xdsoft",[o]),Y.data("input").val(J.str()),C.onSelectTime&&e.isFunction(C.onSelectTime)&&C.onSelectTime.call(Y,J.currentTime,Y.data("input"),t),Y.data("changed",!0),Y.trigger("xchange.xdsoft"),Y.trigger("changedatetime.xdsoft"),void(C.inline!==!0&&C.closeOnTimeSelect===!0&&Y.trigger("close.xdsoft")))}),N.on("mousewheel.xdsoft",function(e){return C.scrollMonth?(e.deltaY<0?J.nextMonth():J.prevMonth(),!1):!0}),a.on("mousewheel.xdsoft",function(e){return C.scrollInput?!C.datepicker&&C.timepicker?(P=E.find(".xdsoft_current").length?E.find(".xdsoft_current").eq(0).index():0,P+e.deltaY>=0&&P+e.deltaY<E.children().length&&(P+=e.deltaY),E.children().eq(P).length&&E.children().eq(P).trigger("mousedown"),!1):C.datepicker&&!C.timepicker?(N.trigger(e,[e.deltaY,e.deltaX,e.deltaY]),a.val&&a.val(J.str()),Y.trigger("changedatetime.xdsoft"),!1):void 0:!0}),Y.on("changedatetime.xdsoft",function(t){if(C.onChangeDateTime&&e.isFunction(C.onChangeDateTime)){var a=Y.data("input");C.onChangeDateTime.call(Y,J.currentTime,a,t),delete C.value,a.trigger("change")}}).on("generate.xdsoft",function(){C.onGenerate&&e.isFunction(C.onGenerate)&&C.onGenerate.call(Y,J.currentTime,Y.data("input")),K&&(Y.trigger("afterOpen.xdsoft"),K=!1)}).on("click.xdsoft",function(e){e.stopPropagation()}),P=0,H=function(e,t){do if(e=e.parentNode,t(e)===!1)break;while("HTML"!==e.nodeName)},j=function(){var t,a,o,r,n,i,s,d,u,l,f,c,m;if(d=Y.data("input"),t=d.offset(),a=d[0],l="top",o=t.top+a.offsetHeight-1,r=t.left,n="absolute",u=e(window).width(),c=e(window).height(),m=e(window).scrollTop(),document.documentElement.clientWidth-t.left<N.parent().outerWidth(!0)){var h=N.parent().outerWidth(!0)-a.offsetWidth;r-=h}"rtl"===d.parent().css("direction")&&(r-=Y.outerWidth()-d.outerWidth()),C.fixed?(o-=m,r-=e(window).scrollLeft(),n="fixed"):(s=!1,H(a,function(e){return"fixed"===window.getComputedStyle(e).getPropertyValue("position")?(s=!0,!1):void 0}),s?(n="fixed",o+Y.outerHeight()>c+m?(l="bottom",o=c+m-t.top):o-=m):o+a.offsetHeight>c+m&&(o=t.top-a.offsetHeight+1),0>o&&(o=0),r+a.offsetWidth>u&&(r=u-a.offsetWidth)),i=Y[0],H(i,function(e){var t;return t=window.getComputedStyle(e).getPropertyValue("position"),"relative"===t&&u>=e.offsetWidth?(r-=(u-e.offsetWidth)/2,!1):void 0}),f={position:n,left:r,top:"",bottom:""},f[l]=o,Y.css(f)},Y.on("open.xdsoft",function(t){var a=!0;C.onShow&&e.isFunction(C.onShow)&&(a=C.onShow.call(Y,J.currentTime,Y.data("input"),t)),a!==!1&&(Y.show(),j(),e(window).off("resize.xdsoft",j).on("resize.xdsoft",j),C.closeOnWithoutClick&&e([document.body,window]).on("touchstart mousedown.xdsoft",function o(){Y.trigger("close.xdsoft"),e([document.body,window]).off("touchstart mousedown.xdsoft",o)}))}).on("close.xdsoft",function(t){var a=!0;I.find(".xdsoft_month,.xdsoft_year").find(".xdsoft_select").hide(),C.onClose&&e.isFunction(C.onClose)&&(a=C.onClose.call(Y,J.currentTime,Y.data("input"),t)),a===!1||C.opened||C.inline||Y.hide(),t.stopPropagation()}).on("toggle.xdsoft",function(){Y.trigger(Y.is(":visible")?"close.xdsoft":"open.xdsoft")}).data("input",a),U=0,Y.data("xdsoft_datetime",J),Y.setOptions(C),J.setCurrentTime(i()),a.data("xdsoft_datetimepicker",Y).on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function(){a.is(":disabled")||a.data("xdsoft_datetimepicker").is(":visible")&&C.closeOnInputClick||(clearTimeout(U),U=setTimeout(function(){a.is(":disabled")||(K=!0,J.setCurrentTime(i(),!0),C.mask&&s(C),Y.trigger("open.xdsoft"))},100))}).on("keydown.xdsoft",function(t){var a,o=t.which;return-1!==[p].indexOf(o)&&C.enterLikeTab?(a=e("input:visible,textarea:visible,button:visible,a:visible"),Y.trigger("close.xdsoft"),a.eq(a.index(this)+1).focus(),!1):-1!==[T].indexOf(o)?(Y.trigger("close.xdsoft"),!0):void 0}).on("blur.xdsoft",function(){Y.trigger("close.xdsoft")})},d=function(t){var a=t.data("xdsoft_datetimepicker");a&&(a.data("xdsoft_datetime",null),a.remove(),t.data("xdsoft_datetimepicker",null).off(".xdsoft"),e(window).off("resize.xdsoft"),e([window,document.body]).off("mousedown.xdsoft touchstart"),t.unmousewheel&&t.unmousewheel())},e(document).off("keydown.xdsoftctrl keyup.xdsoftctrl").on("keydown.xdsoftctrl",function(e){e.keyCode===h&&(F=!0)}).on("keyup.xdsoftctrl",function(e){e.keyCode===h&&(F=!1)}),this.each(function(){var t,a=e(this).data("xdsoft_datetimepicker");if(a){if("string"===e.type(r))switch(r){case"show":e(this).select().focus(),a.trigger("open.xdsoft");break;case"hide":a.trigger("close.xdsoft");break;case"toggle":a.trigger("toggle.xdsoft");break;case"destroy":d(e(this));break;case"reset":this.value=this.defaultValue,this.value&&a.data("xdsoft_datetime").isValidDate(o.parseDate(this.value,C.format))||a.data("changed",!1),a.data("xdsoft_datetime").setCurrentTime(this.value);break;case"validate":t=a.data("input"),t.trigger("blur.xdsoft");break;default:a[r]&&e.isFunction(a[r])&&(u=a[r](i))}else a.setOptions(r);return 0}"string"!==e.type(r)&&(!C.lazyInit||C.open||C.inline?s(e(this)):P(e(this)))}),u},e.fn.datetimepicker.defaults=a});
... ...
www-backend/js/datetimepicker-master/datetimepicker.jquery.json 0 → 100644
  1 +{
  2 + "name": "datetimepicker",
  3 + "version": "2.5.4",
  4 + "title": "jQuery Date and Time picker",
  5 + "description": "jQuery plugin for date, time, or datetime manipulation in form",
  6 + "keywords": [
  7 + "calendar",
  8 + "date",
  9 + "time",
  10 + "form",
  11 + "datetime",
  12 + "datepicker",
  13 + "timepicker",
  14 + "datetimepicker",
  15 + "validation",
  16 + "ui",
  17 + "scroller",
  18 + "picker",
  19 + "i18n",
  20 + "input",
  21 + "jquery",
  22 + "touch"
  23 + ],
  24 + "author": {
  25 + "name": "Chupurnov Valeriy",
  26 + "email": "chupurnov@gmail.com",
  27 + "url": "http://xdsoft.net/contacts.html"
  28 + },
  29 + "maintainers": [{
  30 + "name": "Chupurnov Valeriy",
  31 + "email": "chupurnov@gmail.com",
  32 + "url": "http://xdsoft.net"
  33 + }],
  34 + "licenses": [
  35 + {
  36 + "type": "MIT",
  37 + "url": "https://github.com/xdan/datetimepicker/blob/master/MIT-LICENSE.txt"
  38 + }
  39 + ],
  40 + "bugs": "https://github.com/xdan/datetimepicker/issues",
  41 + "homepage": "http://xdsoft.net/jqplugins/datetimepicker/",
  42 + "docs": "http://xdsoft.net/jqplugins/datetimepicker/",
  43 + "download": "https://github.com/xdan/datetimepicker/archive/master.zip",
  44 + "dependencies": {
  45 + "jquery": ">=1.7"
  46 + }
  47 +}
0 48 \ No newline at end of file
... ...
www-backend/js/datetimepicker-master/doc.tpl 0 → 100644
  1 +<h3>DateTimepicker</h3>
  2 +<p><input id="datetimepicker" type="text" value="2014/03/15 05:06" /></p>
  3 +<h3>Use mask DateTimepicker</h3>
  4 +<p><input id="datetimepicker_mask" type="text" value="" /></p>
  5 +<h3>TimePicker</h3>
  6 +<p><input id="datetimepicker1" type="text" /></p>
  7 +<h3>DatePicker</h3>
  8 +<p><input id="datetimepicker2" type="text" /></p>
  9 +<h3>Inline DateTimePicker</h3>
  10 +<p><input id="datetimepicker3" type="text" /></p>
  11 +<h3>Dark theme</h3>
  12 +<p><input id="datetimepicker_dark" type="text" /></p>
  13 +<script type="text/javascript">// <![CDATA[
  14 +jQuery(function(){
  15 +jQuery('#datetimepicker_mask').datetimepicker({
  16 + mask:'9999/19/39 29:59',
  17 +});
  18 +jQuery('#datetimepicker').datetimepicker();
  19 +jQuery('#datetimepicker').datetimepicker({value:'2015/04/15 05:06'});
  20 +jQuery('#datetimepicker1').datetimepicker({
  21 + datepicker:false,
  22 + format:'H:i',
  23 + value:'12:00'
  24 +});
  25 +jQuery('#datetimepicker2').datetimepicker({
  26 + timepicker:false,
  27 + format:'d/m/Y'
  28 +});
  29 +jQuery('#datetimepicker3').datetimepicker({
  30 + inline:true,
  31 + weeks:true
  32 +});
  33 +jQuery('#datetimepicker_dark').datetimepicker({
  34 + inline:true,
  35 + theme:'dark'
  36 +});
  37 +});
  38 +// ]]></script>
  39 +[include scripts/pp/reklama1.php]
  40 +<h2>How do I use it?</h2>
  41 +<p>First include to page css and js files</p>
  42 +<pre><code data-language="html">&lt;!-- this should go after your &lt;/body&gt; --&gt;
  43 +&lt;link rel="stylesheet" type="text/css" href="jquery.datetimepicker.css"/ &gt;
  44 +&lt;script src="jquery.js"&gt;&lt;/script&gt;
  45 +&lt;script src="build/jquery.datetimepicker.full.min.js"&gt;&lt;/script&gt;</code></pre>
  46 +<h2>Examples</h2>
  47 +<hr id="Simple" />
  48 +<h4>Simple init DateTimePicker Example <a href="#Simple">#</a></h4>
  49 +<p>HTML</p>
  50 +<pre><code data-language="html">&lt;input id="datetimepicker" type="text" &gt;</code></pre>
  51 +<p><strong>javaScript</strong></p>
  52 +<pre><code data-language="javascript">jQuery('#datetimepicker').datetimepicker();</code></pre>
  53 +<p><strong>Result</strong></p>
  54 +<p><input id="_datetimepicker" type="text" value="2014/03/15 05:06" /></p>
  55 +<script type="text/javascript">// <![CDATA[
  56 +jQuery(function(){jQuery('#_datetimepicker').datetimepicker();});
  57 +// ]]></script>
  58 +<hr id="i18n" />
  59 +<h4>i18n DatePicker Example <a href="#i18n">#</a></h4>
  60 +<p>All supported languages <a href="#lang">here</a></p>
  61 +<p><strong>javaScript</strong></p>
  62 +<pre><code data-language="javascript">jQuery.datetimepicker.setLocale('de');
  63 +
  64 +jQuery('#datetimepicker1').datetimepicker({
  65 + i18n:{
  66 + de:{
  67 + months:[
  68 + 'Januar','Februar','März','April',
  69 + 'Mai','Juni','Juli','August',
  70 + 'September','Oktober','November','Dezember',
  71 + ],
  72 + dayOfWeek:[
  73 + "So.", "Mo", "Di", "Mi",
  74 + "Do", "Fr", "Sa.",
  75 + ]
  76 + }
  77 + },
  78 + timepicker:false,
  79 + format:'d.m.Y'
  80 +});</code></pre>
  81 +<p><strong>Result</strong></p>
  82 +<p><input id="_datetimepicker1" type="text" value="15.08.2013" /></p>
  83 +<script type="text/javascript">// <![CDATA[
  84 +jQuery(function(){
  85 +jQuery('#_datetimepicker1').datetimepicker({
  86 + lang:'de',
  87 + i18n:{de:{
  88 + months:[
  89 + 'Januar','Februar','Marz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'
  90 + ],
  91 + dayOfWeek:["So.", "Mo", "Di", "Mi", "Do", "Fr", "Sa."]
  92 + }},
  93 +timepicker:false,
  94 +format:'d.m.Y'
  95 +});
  96 +});
  97 +// ]]></script>
  98 +<hr id="TimePicker" />
  99 +<h4>Only TimePicker Example <a href="#TimePicker">#</a></h4>
  100 +<p><strong>javaScript</strong></p>
  101 +<pre><code data-language="javascript">jQuery('#datetimepicker2').datetimepicker({
  102 + datepicker:false,
  103 + format:'H:i'
  104 +});</code></pre>
  105 +<p><strong>Result</strong></p>
  106 +<p><input id="_datetimepicker2" type="text" value="23:16" /></p>
  107 +<script type="text/javascript">// <![CDATA[
  108 +jQuery(function(){
  109 +jQuery('#_datetimepicker2').datetimepicker({
  110 + datepicker:false,
  111 + format:'H:i'
  112 +});
  113 +});
  114 +// ]]></script>
  115 +<h3 id="startdateex">Date Time Picker start date <a href="#startdateex">#</a></h3>
  116 +<p><strong>javaScript</strong></p>
  117 +<pre><code data-language="javascript">jQuery('#datetimepicker_start_time').datetimepicker({
  118 + startDate:'+1971/05/01'//or 1986/12/08
  119 +});</code></pre>
  120 +<p><strong>Result</strong></p>
  121 +<p><input id="datetimepicker_start_time" type="text" /></p>
  122 +<script type="text/javascript">// <![CDATA[
  123 +jQuery(function(){
  124 + jQuery('#datetimepicker_start_time').datetimepicker({
  125 + startDate:'+1971/05/01'
  126 + });
  127 +});
  128 +// ]]></script>
  129 +<h3 id="unixtime">Date Time Picker from unixtime <a href="#unixtime">#</a></h3>
  130 +<p><strong>javaScript</strong></p>
  131 +<pre><code data-language="javascript">jQuery('#datetimepicker_unixtime').datetimepicker({
  132 + format:'unixtime'
  133 +});</code></pre>
  134 +<p><strong>Result</strong></p>
  135 +<p><input id="datetimepicker_unixtime" type="text" /></p>
  136 +<script type="text/javascript">// <![CDATA[
  137 +jQuery(function(){
  138 + jQuery('#datetimepicker_unixtime').datetimepicker({
  139 + format:'unixtime'
  140 + });
  141 +});
  142 +// ]]></script>
  143 +<hr id="Inline" />
  144 +<h4>Inline DateTimePicker Example <a href="#Inline">#</a></h4>
  145 +<p><strong>javaScript</strong></p>
  146 +<pre><code data-language="javascript">jQuery('#datetimepicker3').datetimepicker({
  147 + format:'d.m.Y H:i',
  148 + inline:true,
  149 + lang:'ru'
  150 +});</code></pre>
  151 +<p><strong>Result</strong></p>
  152 +<p><input id="_datetimepicker3" type="text" value="10.12.2013 23:45" /></p>
  153 +<script type="text/javascript">// <![CDATA[
  154 +jQuery(function(){
  155 +jQuery('#_datetimepicker3').datetimepicker({
  156 + format:'d.m.Y H:i',
  157 + inline:true,
  158 + lang:'en'
  159 +});
  160 +});
  161 +// ]]></script>
  162 +<hr id="trigger" />
  163 +<h4>Icon trigger <a href="#trigger">#</a></h4>
  164 +<p>Click the icon next to the input field to show the datetimepicker</p>
  165 +<p><strong>javaScript</strong></p>
  166 +<pre><code data-language="javascript">jQuery('#datetimepicker4').datetimepicker({
  167 + format:'d.m.Y H:i',
  168 + lang:'ru'
  169 +});</code></pre>
  170 +<p>and handler onclick event</p>
  171 +<pre><code data-language="javascript">jQuery('#image_button').click(function(){
  172 + jQuery('#datetimepicker4').datetimepicker('show'); //support hide,show and destroy command
  173 +});</code></pre>
  174 +<p><strong>Result</strong></p>
  175 +<div class="row">
  176 +<div class="col-lg-6">
  177 +<div class="input-group"><input id="_datetimepicker4" class="form-control" type="text" value="10.12.2013 23:45" /></div>
  178 +<!-- /input-group --></div>
  179 +<!-- /.col-lg-6 --></div>
  180 +<!-- /.row -->
  181 +<script type="text/javascript">// <![CDATA[
  182 +jQuery(function(){
  183 +jQuery('#_datetimepicker4').datetimepicker({
  184 + format:'d.m.Y H:i',
  185 + lang:'en'
  186 +});
  187 +jQuery('#image_button').click(function(){
  188 + jQuery('#_datetimepicker4').datetimepicker('show');
  189 +});
  190 +});
  191 +// ]]></script>
  192 +<hr id="allowTimes" />
  193 +<h4>allowTimes options TimePicker Example <a href="#allowTimes">#</a></h4>
  194 +<p><strong>javaScript</strong></p>
  195 +<pre><code data-language="javascript">jQuery('#datetimepicker5').datetimepicker({
  196 + datepicker:false,
  197 + allowTimes:[
  198 + '12:00', '13:00', '15:00',
  199 + '17:00', '17:05', '17:20', '19:00', '20:00'
  200 + ]
  201 +});</code></pre>
  202 +<p><strong>Result</strong></p>
  203 +<p><input id="_datetimepicker5" type="text" value="23:45" /></p>
  204 +<script type="text/javascript">// <![CDATA[
  205 +jQuery(function(){
  206 +jQuery('#_datetimepicker5').datetimepicker({
  207 + datepicker:false,
  208 + allowTimes:['12:00','13:00','15:00','17:00','17:05','17:20','19:00','20:00']
  209 +});
  210 +});
  211 +// ]]></script>
  212 +<hr id="onChangeDateTime" />
  213 +<h4>handler onChangeDateTime Example <a href="#onChangeDateTime">#</a></h4>
  214 +<p><strong>javaScript</strong></p>
  215 +<pre><code data-language="javascript">jQuery('#datetimepicker6').datetimepicker({
  216 + timepicker:false,
  217 + onChangeDateTime:function(dp,$input){
  218 + alert($input.val())
  219 + }
  220 +});</code></pre>
  221 +<p><strong>Result</strong></p>
  222 +<p><input id="_datetimepicker6" type="text" value="" /></p>
  223 +<script type="text/javascript">// <![CDATA[
  224 +jQuery(function(){
  225 +jQuery('#_datetimepicker6').datetimepicker({
  226 + timepicker:false,
  227 + onChangeDateTime:function(current_time,$input){
  228 + alert($input.val())
  229 + }
  230 +});
  231 +});
  232 +// ]]></script>
  233 +<hr id="mindate" />
  234 +<h4>minDate and maxDate Example <a href="#mindate">#</a></h4>
  235 +<p><strong>javaScript</strong></p>
  236 +<pre><code data-language="javascript">jQuery('#datetimepicker7').datetimepicker({
  237 + timepicker:false,
  238 + formatDate:'Y/m/d',
  239 + minDate:'-1970/01/02',//yesterday is minimum date(for today use 0 or -1970/01/01)
  240 + maxDate:'+1970/01/02'//tomorrow is maximum date calendar
  241 +});</code></pre>
  242 +<p><strong>Result</strong></p>
  243 +<p><input id="_datetimepicker7" type="text" value="" /></p>
  244 +<script type="text/javascript">// <![CDATA[
  245 +jQuery(function(){
  246 +jQuery('#_datetimepicker7').datetimepicker({
  247 + timepicker:false,
  248 + formatDate:'Y/m/d',
  249 + minDate:'-1970/01/02', // yesterday is minimum date
  250 + maxDate:'+1970/01/02' // and tomorrow is maximum date calendar
  251 +});
  252 +});
  253 +// ]]></script>
  254 +<hr id="mask" />
  255 +<h4>Use mask input Example <a href="#mask">#</a></h4>
  256 +<p><strong>javaScript</strong></p>
  257 +<pre><code data-language="javascript">jQuery('#datetimepicker_mask').datetimepicker({
  258 + timepicker:false,
  259 + mask:true, // '9999/19/39 29:59' - digit is the maximum possible for a cell
  260 +});</code></pre>
  261 +<p><strong>Result</strong></p>
  262 +<p><input id="_datetimepicker_mask" type="text" value="" /></p>
  263 +<script type="text/javascript">// <![CDATA[
  264 +jQuery(function(){
  265 +jQuery('#_datetimepicker_mask').datetimepicker({
  266 + timepicker:false,
  267 + mask:'9999/19/39',
  268 + format:'Y/m/d'
  269 +});
  270 +});
  271 +// ]]></script>
  272 +<hr id="runtime_options" />
  273 +<h4>Set options runtime DateTimePicker <a href="#runtime_options">#</a></h4>
  274 +<p>If select day is Saturday, the minimum set 11:00, otherwise 8:00</p>
  275 +<p><strong>javaScript</strong></p>
  276 +<pre><code data-language="javascript">var logic = function( currentDateTime ){
  277 + // 'this' is jquery object datetimepicker
  278 + if( currentDateTime.getDay()==6 ){
  279 + this.setOptions({
  280 + minTime:'11:00'
  281 + });
  282 + }else
  283 + this.setOptions({
  284 + minTime:'8:00'
  285 + });
  286 +};
  287 +jQuery('#datetimepicker_rantime').datetimepicker({
  288 + onChangeDateTime:logic,
  289 + onShow:logic
  290 +});</code></pre>
  291 +<p><strong>Result</strong></p>
  292 +<p><input id="_datetimepicker_runtime" type="text" value="" /></p>
  293 +<script type="text/javascript">// <![CDATA[
  294 +jQuery(function(){
  295 +var logic = function( currentDateTime ){
  296 + if( currentDateTime.getDay()==6 ){
  297 + this.setOptions({
  298 + minTime:'11:00'
  299 + });
  300 + }else
  301 + this.setOptions({
  302 + minTime:'8:00'
  303 + });
  304 +};
  305 +jQuery('#_datetimepicker_runtime').datetimepicker({
  306 + onChangeDateTime:logic,
  307 + onShow:logic
  308 +});
  309 +});
  310 +// ]]></script>
  311 +<hr id="ongenerate" />
  312 +<h4>After generating a calendar called the event onGenerate <a href="#ongenerate">#</a></h4>
  313 +<p>Invert settings minDate and maxDate</p>
  314 +<p><strong>javaScript</strong></p>
  315 +<pre><code data-language="javascript">jQuery('#datetimepicker8').datetimepicker({
  316 + onGenerate:function( ct ){
  317 + jQuery(this).find('.xdsoft_date')
  318 + .toggleClass('xdsoft_disabled');
  319 + },
  320 + minDate:'-1970/01/2',
  321 + maxDate:'+1970/01/2',
  322 + timepicker:false
  323 +});</code></pre>
  324 +<p><strong>Result</strong></p>
  325 +<p><input id="_datetimepicker_ongenerate" type="text" value="" /></p>
  326 +<script type="text/javascript">// <![CDATA[
  327 +jQuery(function(){
  328 +jQuery('#_datetimepicker_ongenerate').datetimepicker({
  329 + onGenerate:function( ct ){
  330 + jQuery(this).find('.xdsoft_date')
  331 + .toggleClass('xdsoft_disabled');
  332 + },
  333 + minDate:'-1970/01/2',
  334 + maxDate:'+1970/01/2',
  335 + timepicker:false
  336 +});
  337 +});
  338 +// ]]></script>
  339 +<hr id="weekends_disable" />
  340 +<h4>disable all weekend <a href="#weekends_disable">#</a></h4>
  341 +<p><strong>javaScript</strong></p>
  342 +<pre><code data-language="javascript">jQuery('#datetimepicker9').datetimepicker({
  343 + onGenerate:function( ct ){
  344 + jQuery(this).find('.xdsoft_date.xdsoft_weekend')
  345 + .addClass('xdsoft_disabled');
  346 + },
  347 + weekends:['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014'],
  348 + timepicker:false
  349 +});</code></pre>
  350 +<p><strong>Result</strong></p>
  351 +<p><input id="_datetimepicker_weekends_disable" type="text" value="" /></p>
  352 +<script type="text/javascript">// <![CDATA[
  353 +jQuery(function(){
  354 +jQuery('#_datetimepicker_weekends_disable').datetimepicker({
  355 + onGenerate:function( ct ){
  356 + jQuery(this).find('.xdsoft_date.xdsoft_weekend')
  357 + .addClass('xdsoft_disabled');
  358 + },
  359 + weekends:['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014'],
  360 + timepicker:false
  361 +});
  362 +});
  363 +// ]]></script>
  364 +<hr id="use_other_date_parser" />
  365 +<h4>Use another date parser/formatter<a href="#use_other_date_parser">#</a></h4>
  366 +<p>By default, datetimepicker uses <a href="https://github.com/kartik-v/php-date-formatter">php-date-formatter</a> for parsing and formatting the date and time displayed. You can replace the library by setting a custom DateFormatter. Simply supply an object that implements the <tt>parseDate</tt> and <tt>formatDate</tt> methods. This example uses the popular <a href="http://momentjs.com/">MomentJS</a> library:</p>
  367 +<pre><code data-language="javascript">$.datetimepicker.setDateFormatter({
  368 + parseDate: function (date, format) {
  369 + var d = moment(date, format);
  370 + return d.isValid() ? d.toDate() : false;
  371 + },
  372 +
  373 + formatDate: function (date, format) {
  374 + return moment(date).format(format);
  375 + }
  376 +});
  377 +</code></pre>
  378 +<p>After this, you can init datetimepicker with moment.js <a href="http://momentjs.com/docs/#/parsing/string-format/" target="_blanc" rel="nofollow">format</a></p>
  379 +<pre><code data-language="javascript">jQuery('#datetimepicker').datetimepicker({
  380 + format:'DD.MM.YYYY h:mm a',
  381 + formatTime:'h:mm a',
  382 + formatDate:'DD.MM.YYYY'
  383 +});</code></pre>
  384 +<hr id="range" />
  385 +<h4>Range between date<a href="#range">#</a></h4>
  386 +<p><strong>javaScript</strong></p>
  387 +<pre><code data-language="javascript">jQuery(function(){
  388 + jQuery('#date_timepicker_start').datetimepicker({
  389 + format:'Y/m/d',
  390 + onShow:function( ct ){
  391 + this.setOptions({
  392 + maxDate:jQuery('#date_timepicker_end').val()?jQuery('#date_timepicker_end').val():false
  393 + })
  394 + },
  395 + timepicker:false
  396 + });
  397 + jQuery('#date_timepicker_end').datetimepicker({
  398 + format:'Y/m/d',
  399 + onShow:function( ct ){
  400 + this.setOptions({
  401 + minDate:jQuery('#date_timepicker_start').val()?jQuery('#date_timepicker_start').val():false
  402 + })
  403 + },
  404 + timepicker:false
  405 + });
  406 +});</code></pre>
  407 +<p><strong>Result</strong></p>
  408 +<p>Start <input id="date_timepicker_start" type="text" value="" /> End <input id="date_timepicker_end" type="text" value="" /></p>
  409 +<script type="text/javascript">// <![CDATA[
  410 +jQuery(function(){
  411 + jQuery('#date_timepicker_start').datetimepicker({
  412 + format:'Y/m/d',
  413 + onShow:function( ct ){
  414 + this.setOptions({
  415 + maxDate:jQuery('#date_timepicker_end').val()?jQuery('#date_timepicker_end').val():false
  416 + })
  417 + },
  418 + timepicker:false
  419 + });
  420 + jQuery('#date_timepicker_end').datetimepicker({
  421 + format:'Y/m/d',
  422 + onShow:function( ct ){
  423 + this.setOptions({
  424 + minDate:jQuery('#date_timepicker_start').val()?jQuery('#date_timepicker_start').val():false
  425 + })
  426 + },
  427 + timepicker:false
  428 + });
  429 +});
  430 +// ]]></script>
  431 +[include scripts/pp/reklama2.php]
  432 +{module 147}
  433 +<h2>Full options list</h2>
  434 +<table class="table table-condensed table-bordered table-striped">
  435 +<thead>
  436 +<tr><th style="text-align: center;"><strong>Name</strong></th><th style="text-align: center;"><strong> default</strong></th><th style="text-align: center;"><strong>Descr</strong></th><th style="width: 200px; text-align: center;"><strong>Ex.</strong></th></tr>
  437 +</thead>
  438 +<tbody>
  439 +<tr id="lazyInit">
  440 +<td><a href="#lazyInit">lazyInit</a></td>
  441 +<td>false</td>
  442 +<td>Initializing plugin occurs only when the user interacts. Greatly accelerates plugin work with a large number of fields</td>
  443 +<td> </td>
  444 +</tr>
  445 +<tr id="value">
  446 +<td><a href="#value">value</a></td>
  447 +<td>null</td>
  448 +<td>Current value datetimepicker. If it is set, ignored input.value</td>
  449 +<td>
  450 +<pre><code data-language="javascript">{value:'12.03.2013',
  451 + format:'d.m.Y'}</code></pre>
  452 +</td>
  453 +</tr>
  454 +<tr id="lang">
  455 +<td><a href="#lang">lang</a></td>
  456 +<td>en</td>
  457 +<td>Language i18n<br />
  458 +
  459 +<strong>ar</strong> - Arabic
  460 +<br /><strong>az</strong> - Azerbaijanian (Azeri)
  461 +<br /><strong>bg</strong> - Bulgarian
  462 +<br /><strong>bs</strong> - Bosanski
  463 +<br /><strong>ca</strong> - Català
  464 +<br /><strong>ch</strong> - Simplified Chinese
  465 +<br /><strong>cs</strong> - Čeština
  466 +<br /><strong>da</strong> - Dansk
  467 +<br /><strong>de</strong> - German
  468 +<br /><strong>el</strong> - Ελληνικά
  469 +<br /><strong>en</strong> - English
  470 +<br /><strong>en-GB</strong> - English (British)
  471 +<br /><strong>es</strong> - Spanish
  472 +<br /><strong>et</strong> - "Eesti"
  473 +<br /><strong>eu</strong> - Euskara
  474 +<br /><strong>fa</strong> - Persian
  475 +<br /><strong>fi</strong> - Finnish (Suomi)
  476 +<br /><strong>fr</strong> - French
  477 +<br /><strong>gl</strong> - Galego
  478 +<br /><strong>he</strong> - Hebrew (עברית)
  479 +<br /><strong>hr</strong> - Hrvatski
  480 +<br /><strong>hu</strong> - Hungarian
  481 +<br /><strong>id</strong> - Indonesian
  482 +<br /><strong>it</strong> - Italian
  483 +<br /><strong>ja</strong> - Japanese
  484 +<br /><strong>ko</strong> - Korean (한국어)
  485 +<br /><strong>kr</strong> - Korean
  486 +<br /><strong>lt</strong> - Lithuanian (lietuvių)
  487 +<br /><strong>lv</strong> - Latvian (Latviešu)
  488 +<br /><strong>mk</strong> - Macedonian (Македонски)
  489 +<br /><strong>mn</strong> - Mongolian (Монгол)
  490 +<br /><strong>nl</strong> - Dutch
  491 +<br /><strong>no</strong> - Norwegian
  492 +<br /><strong>pl</strong> - Polish
  493 +<br /><strong>pt</strong> - Portuguese
  494 +<br /><strong>pt-BR</strong> - Português(Brasil)
  495 +<br /><strong>ro</strong> - Romanian
  496 +<br /><strong>ru</strong> - Russian
  497 +<br /><strong>se</strong> - Swedish
  498 +<br /><strong>sk</strong> - Slovenčina
  499 +<br /><strong>sl</strong> - Slovenščina
  500 +<br /><strong>sq</strong> - Albanian (Shqip)
  501 +<br /><strong>sr</strong> - Serbian Cyrillic (Српски)
  502 +<br /><strong>sr-YU</strong> - Serbian (Srpski)
  503 +<br /><strong>sv</strong> - Svenska
  504 +<br /><strong>th</strong> - Thai
  505 +<br /><strong>tr</strong> - Turkish
  506 +<br /><strong>uk</strong> - Ukrainian
  507 +<br /><strong>vi</strong> - Vietnamese
  508 +<br /><strong>zh</strong> - Simplified Chinese (简体中文)
  509 +<br /><strong>zh-TW</strong> - Traditional Chinese (繁體中文)
  510 +<br />
  511 +
  512 +
  513 +</td>
  514 +<td>
  515 +<pre><code data-language="javascript">$.datetimepicker.setLocale('ru');</code></pre>
  516 +</td>
  517 +</tr>
  518 +<tr id="format">
  519 +<td><a href="#format">format</a></td>
  520 +<td>Y/m/d H:i</td>
  521 +<td>Format datetime. <a href="http://php.net/manual/ru/function.date.php" target="_blank">More</a> Also there is a special type of <a href="#unixtime"><em>«unixtime»</em></a></td>
  522 +<td>
  523 +<pre><code data-language="javascript">{format:'H'}
  524 +{format:'Y'}{format:'unixtime'}</code></pre>
  525 +</td>
  526 +</tr>
  527 +<tr id="formatDate">
  528 +<td><a href="#formatDate">formatDate</a></td>
  529 +<td>Y/m/d</td>
  530 +<td>Format date for minDate and maxDate</td>
  531 +<td>
  532 +<pre><code data-language="javascript">{formatDate:'d.m.Y'}</code></pre>
  533 +</td>
  534 +</tr>
  535 +<tr id="formatTime">
  536 +<td><a href="#formatTime">formatTime</a></td>
  537 +<td>H:i</td>
  538 +<td> Similarly, formatDate . But for minTime and maxTime</td>
  539 +<td>
  540 +<pre><code data-language="javascript">{formatTime:'H'}</code></pre>
  541 +</td>
  542 +</tr>
  543 +<tr id="step">
  544 +<td><a href="#step">step</a></td>
  545 +<td>60</td>
  546 +<td>Step time</td>
  547 +<td>
  548 +<pre><code data-language="javascript">{step:5}</code></pre>
  549 +</td>
  550 +</tr>
  551 +<tr id="closeOnDateSelect">
  552 +<td><a href="#closeOnDateSelect">closeOnDateSelect</a></td>
  553 +<td>0</td>
  554 +<td> </td>
  555 +<td>
  556 +<pre><code data-language="javascript">{closeOnDateSelect:true}</code></pre>
  557 +</td>
  558 +</tr>
  559 +<tr id="closeOnWithoutClick">
  560 +<td><a href="#closeOnWithoutClick">closeOnWithoutClick</a></td>
  561 +<td>true</td>
  562 +<td> </td>
  563 +<td>
  564 +<pre><code data-language="javascript">{ closeOnWithoutClick :false}</code></pre>
  565 +</td>
  566 +</tr>
  567 +<tr id="validateOnBlur">
  568 +<td><a href="#validateOnBlur">validateOnBlur</a></td>
  569 +<td>true</td>
  570 +<td>Verify datetime value from input, when losing focus. If value is not valid datetime, then to value inserts the current datetime</td>
  571 +<td>
  572 +<pre><code data-language="javascript">{ validateOnBlur:false}</code></pre>
  573 +</td>
  574 +</tr>
  575 +<tr id="timepicker">
  576 +<td><a href="#timepicker">timepicker</a></td>
  577 +<td>true</td>
  578 +<td> </td>
  579 +<td>
  580 +<pre><code data-language="javascript">{timepicker:false}</code></pre>
  581 +</td>
  582 +</tr>
  583 +<tr id="datepicker">
  584 +<td><a href="#datepicker">datepicker</a></td>
  585 +<td>true</td>
  586 +<td> </td>
  587 +<td>
  588 +<pre><code data-language="javascript">{datepicker:false}</code></pre>
  589 +</td>
  590 +</tr>
  591 +<tr id="weeks">
  592 +<td><a href="#weeks">weeks</a></td>
  593 +<td>false</td>
  594 +<td>Show week number</td>
  595 +<td>
  596 +<pre><code data-language="javascript">{weeks:true}</code></pre>
  597 +</td>
  598 +</tr>
  599 +<tr id="theme">
  600 +<td><a href="#theme">theme</a></td>
  601 +<td>'default'</td>
  602 +<td>Setting a color scheme. Now only supported default and dark theme</td>
  603 +<td>
  604 +<pre><code data-language="javascript">{theme:'dark'}</code></pre>
  605 +</td>
  606 +</tr>
  607 +<tr id="minDate">
  608 +<td><a href="#minDate">minDate</a></td>
  609 +<td>false</td>
  610 +<td> </td>
  611 +<td>
  612 +<pre><code data-language="javascript">{minDate:0} // today
  613 +{minDate:'2013/12/03'}
  614 +{minDate:'-1970/01/02'} // yesterday
  615 +{minDate:'05.12.2013',formatDate:'d.m.Y'}</code></pre>
  616 +</td>
  617 +</tr>
  618 +<tr id="maxDate">
  619 +<td><a href="#maxDate">maxDate</a></td>
  620 +<td>false</td>
  621 +<td> </td>
  622 +<td>
  623 +<pre><code data-language="javascript">{maxDate:0}
  624 +{maxDate:'2013/12/03'}
  625 +{maxDate:'+1970/01/02'} // tomorrow
  626 +{maxDate:'05.12.2013',formatDate:'d.m.Y'}</code></pre>
  627 +</td>
  628 +</tr>
  629 +<tr id="startDate">
  630 +<td><a href="#starDate">startDate</a></td>
  631 +<td>false</td>
  632 +<td>calendar set date use starDate</td>
  633 +<td>
  634 +<pre><code data-language="javascript">{startDate:'1987/12/03'}
  635 +{startDate:new Date()}
  636 +{startDate:'+1970/01/02'} // tomorrow
  637 +{startDate:'08.12.1986',formatDate:'d.m.Y'}</code></pre>
  638 +</td>
  639 +</tr>
  640 +
  641 +<tr id="defaultDate">
  642 +<td><a href="#defaultDate">defaultDate</a></td>
  643 +<td>false</td>
  644 +<td>if input value is empty, calendar set date use defaultDate</td>
  645 +<td>
  646 +<pre><code data-language="javascript">{defaultDate:'1987/12/03'}
  647 +{defaultDate:new Date()}
  648 +{defaultDate:'+1970/01/02'} // tomorrow
  649 +{defaultDate:'08.12.1986',formatDate:'d.m.Y'}</code></pre>
  650 +</td>
  651 +</tr>
  652 +
  653 +<tr id="defaultTime">
  654 +<td><a href="#defaultTime">defaultTime</a></td>
  655 +<td>false</td>
  656 +<td>if input value is empty, timepicker set time use defaultTime</td>
  657 +<td>
  658 +<pre><code data-language="javascript">{defaultTime:'05:00'}
  659 +{defaultTime:'33-12',formatTime:'i-H'}</code></pre>
  660 +</td>
  661 +</tr>
  662 +
  663 +<tr id="minTime">
  664 +<td><a href="#minTime">minTime</a></td>
  665 +<td>false</td>
  666 +<td> </td>
  667 +<td>
  668 +<pre><code data-language="javascript">{minTime:0,}// now
  669 +{minTime:new Date()}
  670 +{minTime:'12:00'}
  671 +{minTime:'13:45:34',formatTime:'H:i:s'}</code></pre>
  672 +</td>
  673 +</tr>
  674 +<tr id="maxTime">
  675 +<td><a href="#maxTime">maxTime</a></td>
  676 +<td>false</td>
  677 +<td> </td>
  678 +<td>
  679 +<pre><code data-language="javascript">{maxTime:0,}
  680 +{maxTime:'12:00'}
  681 +{maxTime:'13:45:34',formatTime:'H:i:s'}</code></pre>
  682 +</td>
  683 +</tr>
  684 +<tr id="allowTimes">
  685 +<td><a href="#allowTimes">allowTimes</a></td>
  686 +<td>[]</td>
  687 +<td> </td>
  688 +<td>
  689 +<pre><code data-language="javascript">{allowTimes:[
  690 + '09:00',
  691 + '11:00',
  692 + '12:00',
  693 + '21:00'
  694 +]}</code></pre>
  695 +</td>
  696 +</tr>
  697 +<tr id="mask">
  698 +<td><a href="#mask">mask</a></td>
  699 +<td>false</td>
  700 +<td>Use mask for input. true - automatically generates a mask on the field 'format', Digit from 0 to 9, set the highest possible digit for the value. For example: the first digit of hours can not be greater than 2, and the first digit of the minutes can not be greater than 5</td>
  701 +<td>
  702 +<pre>{mask:'9999/19/39',format:'Y/m/d'}
  703 +{mask:true,format:'Y/m/d'} // automatically generate a mask 9999/99/99
  704 +{mask:'29:59',format:'H:i'} //
  705 +{mask:true,format:'H:i'} //automatically generate a mask 99:99</pre>
  706 +</td>
  707 +</tr>
  708 +<tr id="opened">
  709 +<td><a href="#opened">opened</a></td>
  710 +<td>false</td>
  711 +<td> </td>
  712 +<td> </td>
  713 +</tr>
  714 +<tr id="yearoffset">
  715 +<td><a href="#yearoffset">yearOffset</a></td>
  716 +<td>0</td>
  717 +<td>Year offset for Buddhist era</td>
  718 +<td> </td>
  719 +</tr>
  720 +<tr id="inline">
  721 +<td><a href="#inline">inline</a></td>
  722 +<td>false</td>
  723 +<td> </td>
  724 +<td> </td>
  725 +</tr>
  726 +<tr id="todayButton">
  727 +<td><a href="#todayButton">todayButton</a></td>
  728 +<td>true</td>
  729 +<td>Show button "Go To Today"</td>
  730 +<td> </td>
  731 +</tr>
  732 +<tr id="defaultSelect">
  733 +<td><a href="#defaultSelect">defaultSelect</a></td>
  734 +<td>true</td>
  735 +<td>Highlight the current date even if the input is empty</td>
  736 +<td> </td>
  737 +</tr>
  738 +<tr id="allowBlank">
  739 +<td><a href="#allowBlank">allowBlank</a></td>
  740 +<td>false</td>
  741 +<td>Allow field to be empty even with the option <a href="#validateOnBlur">validateOnBlur</a> in true</td>
  742 +<td> </td>
  743 +</tr>
  744 +<tr id="timepickerScrollbar">
  745 +<td><a href="#timepickerScrollbar">timepickerScrollbar</a></td>
  746 +<td>true</td>
  747 +<td> </td>
  748 +<td> </td>
  749 +</tr>
  750 +<tr id="onSelectDate">
  751 +<td><a href="#onSelectDate">onSelectDate</a></td>
  752 +<td>function(){}</td>
  753 +<td> </td>
  754 +<td>
  755 +<pre><code data-language="javascript">onSelectDate:function(ct,$i){
  756 + alert(ct.dateFormat('d/m/Y'))
  757 +}</code></pre>
  758 +</td>
  759 +</tr>
  760 +<tr id="onSelectTime">
  761 +<td><a href="#onSelectTime">onSelectTime</a></td>
  762 +<td>function(current_time,$input){}</td>
  763 +<td> </td>
  764 +<td> </td>
  765 +</tr>
  766 +<tr id="onChangeMonth">
  767 +<td><a href="#onChangeMonth">onChangeMonth</a></td>
  768 +<td>function(current_time,$input){}</td>
  769 +<td> </td>
  770 +<td> </td>
  771 +</tr>
  772 + <tr id="onChangeYear">
  773 +<td><a href="#onChangeYear">onChangeYear</a></td>
  774 +<td>function(current_time,$input){}</td>
  775 +<td> </td>
  776 +<td> </td>
  777 +</tr>
  778 +<tr id="onChangeDateTime">
  779 +<td><a href="#onChangeDateTime">onChangeDateTime</a></td>
  780 +<td>function(current_time,$input){}</td>
  781 +<td> </td>
  782 +<td> </td>
  783 +</tr>
  784 +<tr id="onShow">
  785 +<td><a href="#onShow">onShow</a></td>
  786 +<td>function(current_time,$input){}</td>
  787 +<td> </td>
  788 +<td> </td>
  789 +</tr>
  790 +<tr id="onClose">
  791 +<td><a href="#onClose">onClose</a></td>
  792 +<td>function(current_time,$input){}</td>
  793 +<td> </td>
  794 +<td><pre><code data-language="javascript">onSelectDate:function(ct,$i){
  795 + $i.datetimepicker('destroy');
  796 +}</code></pre></td>
  797 +</tr>
  798 +<tr id="onGenerate">
  799 +<td><a href="#onGenerate">onGenerate</a></td>
  800 +<td>function(current_time,$input){}</td>
  801 +<td>trigger after construct calendar and timepicker</td>
  802 +<td> </td>
  803 +</tr>
  804 +<tr>
  805 +<td>withoutCopyright</td>
  806 +<td>true</td>
  807 +<td> </td>
  808 +<td> </td>
  809 +</tr>
  810 +<tr id="inverseButton">
  811 +<td><a href="#inverseButton">inverseButton</a></td>
  812 +<td>false</td>
  813 +<td> </td>
  814 +<td> </td>
  815 +</tr>
  816 +<tr id="scrollMonth">
  817 +<td><a href="#scrollMonth">scrollMonth</a></td>
  818 +<td>true</td>
  819 +<td> </td>
  820 +<td> </td>
  821 +</tr>
  822 +<tr id="scrollTime">
  823 +<td><a href="#scrollTime">scrollTime</a></td>
  824 +<td>true</td>
  825 +<td> </td>
  826 +<td> </td>
  827 +</tr>
  828 +<tr id="scrollInput">
  829 +<td><a href="#scrollInput">scrollInput</a></td>
  830 +<td>true</td>
  831 +<td> </td>
  832 +<td> </td>
  833 +</tr>
  834 +<tr id="hours12">
  835 +<td><a href="#hours12">hours12</a></td>
  836 +<td>false</td>
  837 +<td> </td>
  838 +<td> </td>
  839 +</tr>
  840 +<tr id="yearStart">
  841 +<td><a href="#yearStart">yearStart</a></td>
  842 +<td>1950</td>
  843 +<td>Start value for fast Year selector</td>
  844 +<td> </td>
  845 +</tr>
  846 +<tr id="yearEnd">
  847 +<td><a href="#yearEnd">yearEnd</a></td>
  848 +<td>2050</td>
  849 +<td>End value for fast Year selector</td>
  850 +<td> </td>
  851 +</tr>
  852 +<tr id="roundTime">
  853 +<td><a href="#roundTime">roundTime</a></td>
  854 +<td>round</td>
  855 +<td>Round time in timepicker, possible values: round, ceil, floor</td>
  856 +<td>
  857 +<pre><code data-language="javascript">{roundTime:'floor'}</code></pre>
  858 +</td>
  859 +</tr>
  860 +<tr id="dayOfWeekStart">
  861 +<td><a href="#dayOfWeekStart">dayOfWeekStart</a></td>
  862 +<td>0</td>
  863 +<td>
  864 +<p>Star week DatePicker. Default Sunday - 0.</p>
  865 +<p>Monday - 1 ...</p>
  866 +</td>
  867 +<td> </td>
  868 +</tr>
  869 +<tr id="className">
  870 +<td>className</td>
  871 +<td> </td>
  872 +<td> </td>
  873 +<td> </td>
  874 +</tr>
  875 +<tr id="weekends">
  876 +<td><a href="#weekends">weekends</a></td>
  877 +<td>[]</td>
  878 +<td> </td>
  879 +<td>
  880 +<pre><code data-language="javascript">['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014']</code></pre>
  881 +</td>
  882 +</tr>
  883 +<tr id="disabledDates">
  884 +<td><a href="#disabledDates">disabledDates</a></td>
  885 +<td>[]</td>
  886 +<td><p>Disbale all dates in list</p></td>
  887 +<td>
  888 +<pre><code data-language="javascript">{disabledDates: ['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014'], formatDate:'d.m.Y'}</code></pre>
  889 +</td>
  890 +</tr>
  891 +<tr id="allowDates">
  892 +<td><a href="#allowDates">allowDates</a></td>
  893 +<td>[]</td>
  894 +<td><p>Allow all dates in list</p></td>
  895 +<td>
  896 +<pre><code data-language="javascript">{allowDates: ['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014'], formatDate:'d.m.Y'}</code></pre>
  897 +</td>
  898 +</tr>
  899 +<tr id="allowDateRe">
  900 +<td><a href="#allowDateRe">allowDateRe</a></td>
  901 +<td>[]</td>
  902 +<td><p>Use Regex to check dates</p></td>
  903 +<td>
  904 +<pre><code data-language="javascript">{format:'Y-m-d',allowDateRe:'\d{4}-(03-31|06-30|09-30|12-31)' }</code></pre>
  905 +</td>
  906 +</tr>
  907 +<tr id="disabledWeekDays">
  908 +<td><a href="#disabledWeekDays">disabledWeekDays</a></td>
  909 +<td>[]</td>
  910 +<td><p>Disable days listed by index</p></td>
  911 +<td>
  912 +<pre><code data-language="javascript">[0, 3, 4]</code></pre>
  913 +</td>
  914 +</tr>
  915 +<tr id="id">
  916 +<td>id</td>
  917 +<td> </td>
  918 +<td> </td>
  919 +<td> </td>
  920 +</tr>
  921 +<tr id="style">
  922 +<td>style</td>
  923 +<td> </td>
  924 +<td> </td>
  925 +<td> </td>
  926 +</tr>
  927 +<tr id="ownerDocument">
  928 +<td>ownerDocument</td>
  929 +<td>document</td>
  930 +<td>The ownerDocument object for the datetimepicker to properly attach events and calc position (iframe support).</td>
  931 +<td> </td>
  932 +</tr>
  933 +<tr id="contentWindow">
  934 +<td>contentWindow</td>
  935 +<td>window</td>
  936 +<td>The contentWindow object that contains the datetimepicker to properly attach events (iframe support).</td>
  937 +<td> </td>
  938 +</tr>
  939 +</tbody>
  940 +</table>
  941 +<hr>
  942 +<h2 id="methods">Methods</h2>
  943 +<h3>show</h3>
  944 +<p>Show Datetimepicker</p>
  945 +<pre><code data-language="javascript">$('#input').datetimepicker();
  946 +$('button.somebutton').on('click', function () {
  947 + $('#input').datetimepicker('show');
  948 +});</code></pre>
  949 +<h3>hide</h3>
  950 +<p>Hide Datetimepicker</p>
  951 +<pre><code data-language="javascript">$('#input').datetimepicker();
  952 +$(window).on('resize', function () {
  953 + $('#input').datetimepicker('hide');
  954 +});</code></pre>
  955 +<h3>toggle</h3>
  956 +<p>Sgow/Hide Datetimepicker</p>
  957 +<pre><code data-language="javascript">$('#input').datetimepicker();
  958 +$('button.trigger').on('click', function () {
  959 + $('#input').datetimepicker('toggle');
  960 +});</code></pre>
  961 +<h3>destroy</h3>
  962 +<p>Destroy datetimepicker</p>
  963 +<pre><code data-language="javascript">$('#input').datetimepicker();
  964 +$('#input').datetimepicker('destroy');
  965 +</code></pre>
  966 +<h3>reset</h3>
  967 +<p>Reset datetimepicker's value</p>
  968 +<pre><code data-language="javascript">$('#input').datetimepicker();
  969 +$('#input').val('12/01/2006');
  970 +$('#input')
  971 + .datetimepicker('show')
  972 + .datetimepicker('reset')
  973 +</code></pre>
  974 +<h3>validate</h3>
  975 +<p>Validate datetimepicker's value </p>
  976 +<pre><code data-language="javascript">$('#input').datetimepicker();
  977 +$('#input').datetimepicker(validate)
  978 +</code></pre>
  979 +<h3>setOptions</h3>
  980 +<p>Set datetimepicker's options </p>
  981 +<pre><code data-language="javascript">$('#input').datetimepicker({format: 'd.m.Y'});
  982 +$('#input').datetimepicker('setOptions', {format: 'd/m/Y'});
  983 +//or
  984 +$('#input').datetimepicker({format: 'd/m/Y'});
  985 +</code></pre>
  986 +<h3>getValue</h3>
  987 +<p>Get current datetimepicker's value (Date object) </p>
  988 +<pre><code data-language="javascript">$('#input').datetimepicker();
  989 +$('button.somebutton').on('click', function () {
  990 + var d = $('#input').datetimepicker('getValue');
  991 + console.log(d.getFullYear());
  992 +});
  993 +</code></pre>
... ...
www-backend/js/datetimepicker-master/index.html 0 → 100644
  1 +<!DOCTYPE html>
  2 +<html lang="en">
  3 +<head>
  4 +<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
  5 +<link rel="stylesheet" type="text/css" href="./jquery.datetimepicker.css"/>
  6 +<style type="text/css">
  7 +
  8 +.custom-date-style {
  9 + background-color: red !important;
  10 +}
  11 +
  12 +.input{
  13 +}
  14 +.input-wide{
  15 + width: 500px;
  16 +}
  17 +
  18 +</style>
  19 +</head>
  20 +<body>
  21 +
  22 + <p><a href="http://xdsoft.net/jqplugins/datetimepicker/">Homepage</a></p>
  23 + <h3>DateTimePicker</h3>
  24 + <input type="text" value="" id="datetimepicker"/><br><br>
  25 + <h3>DateTimePickers selected by class</h3>
  26 + <input type="text" class="some_class" value="" id="some_class_1"/>
  27 + <input type="text" class="some_class" value="" id="some_class_2"/>
  28 + <h3>Mask DateTimePicker</h3>
  29 + <input type="text" value="" id="datetimepicker_mask"/><br><br>
  30 + <h3>TimePicker</h3>
  31 + <input type="text" id="datetimepicker1"/><br><br>
  32 + <h3>DatePicker</h3>
  33 + <input type="text" id="datetimepicker2"/><br><br>
  34 + <h3>Inline DateTimePicker</h3>
  35 + <!--<div id="console" style="background-color:#fff;color:red">sdfdsfsdf</div>-->
  36 + <input type="text" id="datetimepicker3"/><input type="button" onclick="$('#datetimepicker3').datetimepicker({value:'2011/12/11 12:00'})" value="set inline value 2011/12/11 12:00"/><br><br>
  37 + <h3>Button Trigger</h3>
  38 + <input type="text" value="2013/12/03 18:00" id="datetimepicker4"/><input id="open" type="button" value="open"/><input id="close" type="button" value="close"/><input id="reset" type="button" value="reset"/>
  39 + <h3>TimePicker allows time</h3>
  40 + <input type="text" id="datetimepicker5"/><br><br>
  41 + <h3>Destroy DateTimePicker</h3>
  42 + <input type="text" id="datetimepicker6"/><input id="destroy" type="button" value="destroy"/>
  43 + <h3>Set options runtime DateTimePicker</h3>
  44 + <input type="text" id="datetimepicker7"/>
  45 + <p>If select day is Saturday, the minimum set 11:00, otherwise 8:00</p>
  46 + <h3>onGenerate</h3>
  47 + <input type="text" id="datetimepicker8"/>
  48 + <h3>disable all weekend</h3>
  49 + <input type="text" id="datetimepicker9"/>
  50 + <h3>Default date and time </h3>
  51 + <input type="text" id="default_datetimepicker"/>
  52 + <h3>Show inline</h3>
  53 + <a href="javascript:void(0)" onclick="var si = document.getElementById('show_inline').style; si.display = (si.display=='none')?'block':'none';return false; ">Show/Hide</a>
  54 + <div id="show_inline" style="display:none">
  55 + <input type="text" id="datetimepicker10"/>
  56 + </div>
  57 + <h3>Disable Specific Dates</h3>
  58 + <p>Disable the dates 2 days from now.</p>
  59 + <input type="text" id="datetimepicker11"/>
  60 + <h3>Custom Date Styling</h3>
  61 + <p>Make the background of the date 2 days from now bright red.</p>
  62 + <input type="text" id="datetimepicker12"/>
  63 + <h3>Dark theme</h3>
  64 + <p>thank for this <a href="https://github.com/lampslave">https://github.com/lampslave</a></p>
  65 + <input type="text" id="datetimepicker_dark"/>
  66 + <h3>Date time format and locale</h3>
  67 + <p></p>
  68 + <select id="datetimepicker_format_locale">
  69 + <option value="en">English</option>
  70 + <option value="de">German</option>
  71 + <option value="ru">Russian</option>
  72 + <option value="uk">Ukrainian</option>
  73 + <option value="fr">French</option>
  74 + <option value="es">Spanish</option>
  75 + </select>
  76 + <input type="text" value="D, l, M, F, Y-m-d H:i:s" id="datetimepicker_format_value"/>
  77 + <input type="button" value="applay =>" id="datetimepicker_format_change"/>
  78 + <input type="text" id="datetimepicker_format" class="input input-wide"/>
  79 +</body>
  80 +<script src="./jquery.js"></script>
  81 +<script src="build/jquery.datetimepicker.full.js"></script>
  82 +<script>/*
  83 +window.onerror = function(errorMsg) {
  84 + $('#console').html($('#console').html()+'<br>'+errorMsg)
  85 +}*/
  86 +
  87 +$.datetimepicker.setLocale('en');
  88 +
  89 +$('#datetimepicker_format').datetimepicker({value:'2015/04/15 05:03', format: $("#datetimepicker_format_value").val()});
  90 +console.log($('#datetimepicker_format').datetimepicker('getValue'));
  91 +
  92 +$("#datetimepicker_format_change").on("click", function(e){
  93 + $("#datetimepicker_format").data('xdsoft_datetimepicker').setOptions({format: $("#datetimepicker_format_value").val()});
  94 +});
  95 +$("#datetimepicker_format_locale").on("change", function(e){
  96 + $.datetimepicker.setLocale($(e.currentTarget).val());
  97 +});
  98 +
  99 +$('#datetimepicker').datetimepicker({
  100 +dayOfWeekStart : 1,
  101 +lang:'en',
  102 +disabledDates:['1986/01/08','1986/01/09','1986/01/10'],
  103 +startDate: '1986/01/05'
  104 +});
  105 +$('#datetimepicker').datetimepicker({value:'2015/04/15 05:03',step:10});
  106 +
  107 +$('.some_class').datetimepicker();
  108 +
  109 +$('#default_datetimepicker').datetimepicker({
  110 + formatTime:'H:i',
  111 + formatDate:'d.m.Y',
  112 + //defaultDate:'8.12.1986', // it's my birthday
  113 + defaultDate:'+03.01.1970', // it's my birthday
  114 + defaultTime:'10:00',
  115 + timepickerScrollbar:false
  116 +});
  117 +
  118 +$('#datetimepicker10').datetimepicker({
  119 + step:5,
  120 + inline:true
  121 +});
  122 +$('#datetimepicker_mask').datetimepicker({
  123 + mask:'9999/19/39 29:59'
  124 +});
  125 +
  126 +$('#datetimepicker1').datetimepicker({
  127 + datepicker:false,
  128 + format:'H:i',
  129 + step:5
  130 +});
  131 +$('#datetimepicker2').datetimepicker({
  132 + yearOffset:222,
  133 + lang:'ch',
  134 + timepicker:false,
  135 + format:'d/m/Y',
  136 + formatDate:'Y/m/d',
  137 + minDate:'-1970/01/02', // yesterday is minimum date
  138 + maxDate:'+1970/01/02' // and tommorow is maximum date calendar
  139 +});
  140 +$('#datetimepicker3').datetimepicker({
  141 + inline:true
  142 +});
  143 +$('#datetimepicker4').datetimepicker();
  144 +$('#open').click(function(){
  145 + $('#datetimepicker4').datetimepicker('show');
  146 +});
  147 +$('#close').click(function(){
  148 + $('#datetimepicker4').datetimepicker('hide');
  149 +});
  150 +$('#reset').click(function(){
  151 + $('#datetimepicker4').datetimepicker('reset');
  152 +});
  153 +$('#datetimepicker5').datetimepicker({
  154 + datepicker:false,
  155 + allowTimes:['12:00','13:00','15:00','17:00','17:05','17:20','19:00','20:00'],
  156 + step:5
  157 +});
  158 +$('#datetimepicker6').datetimepicker();
  159 +$('#destroy').click(function(){
  160 + if( $('#datetimepicker6').data('xdsoft_datetimepicker') ){
  161 + $('#datetimepicker6').datetimepicker('destroy');
  162 + this.value = 'create';
  163 + }else{
  164 + $('#datetimepicker6').datetimepicker();
  165 + this.value = 'destroy';
  166 + }
  167 +});
  168 +var logic = function( currentDateTime ){
  169 + if (currentDateTime && currentDateTime.getDay() == 6){
  170 + this.setOptions({
  171 + minTime:'11:00'
  172 + });
  173 + }else
  174 + this.setOptions({
  175 + minTime:'8:00'
  176 + });
  177 +};
  178 +$('#datetimepicker7').datetimepicker({
  179 + onChangeDateTime:logic,
  180 + onShow:logic
  181 +});
  182 +$('#datetimepicker8').datetimepicker({
  183 + onGenerate:function( ct ){
  184 + $(this).find('.xdsoft_date')
  185 + .toggleClass('xdsoft_disabled');
  186 + },
  187 + minDate:'-1970/01/2',
  188 + maxDate:'+1970/01/2',
  189 + timepicker:false
  190 +});
  191 +$('#datetimepicker9').datetimepicker({
  192 + onGenerate:function( ct ){
  193 + $(this).find('.xdsoft_date.xdsoft_weekend')
  194 + .addClass('xdsoft_disabled');
  195 + },
  196 + weekends:['01.01.2014','02.01.2014','03.01.2014','04.01.2014','05.01.2014','06.01.2014'],
  197 + timepicker:false
  198 +});
  199 +var dateToDisable = new Date();
  200 + dateToDisable.setDate(dateToDisable.getDate() + 2);
  201 +$('#datetimepicker11').datetimepicker({
  202 + beforeShowDay: function(date) {
  203 + if (date.getMonth() == dateToDisable.getMonth() && date.getDate() == dateToDisable.getDate()) {
  204 + return [false, ""]
  205 + }
  206 +
  207 + return [true, ""];
  208 + }
  209 +});
  210 +$('#datetimepicker12').datetimepicker({
  211 + beforeShowDay: function(date) {
  212 + if (date.getMonth() == dateToDisable.getMonth() && date.getDate() == dateToDisable.getDate()) {
  213 + return [true, "custom-date-style"];
  214 + }
  215 +
  216 + return [true, ""];
  217 + }
  218 +});
  219 +$('#datetimepicker_dark').datetimepicker({theme:'dark'})
  220 +
  221 +
  222 +</script>
  223 +</html>
... ...
www-backend/js/datetimepicker-master/jquery.datetimepicker.css 0 → 100644
  1 +.xdsoft_datetimepicker {
  2 + box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.506);
  3 + background: #fff;
  4 + border-bottom: 1px solid #bbb;
  5 + border-left: 1px solid #ccc;
  6 + border-right: 1px solid #ccc;
  7 + border-top: 1px solid #ccc;
  8 + color: #333;
  9 + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  10 + padding: 8px;
  11 + padding-left: 0;
  12 + padding-top: 2px;
  13 + position: absolute;
  14 + z-index: 9999;
  15 + -moz-box-sizing: border-box;
  16 + box-sizing: border-box;
  17 + display: none;
  18 +}
  19 +.xdsoft_datetimepicker.xdsoft_rtl {
  20 + padding: 8px 0 8px 8px;
  21 +}
  22 +
  23 +.xdsoft_datetimepicker iframe {
  24 + position: absolute;
  25 + left: 0;
  26 + top: 0;
  27 + width: 75px;
  28 + height: 210px;
  29 + background: transparent;
  30 + border: none;
  31 +}
  32 +
  33 +/*For IE8 or lower*/
  34 +.xdsoft_datetimepicker button {
  35 + border: none !important;
  36 +}
  37 +
  38 +.xdsoft_noselect {
  39 + -webkit-touch-callout: none;
  40 + -webkit-user-select: none;
  41 + -khtml-user-select: none;
  42 + -moz-user-select: none;
  43 + -ms-user-select: none;
  44 + -o-user-select: none;
  45 + user-select: none;
  46 +}
  47 +
  48 +.xdsoft_noselect::selection { background: transparent }
  49 +.xdsoft_noselect::-moz-selection { background: transparent }
  50 +
  51 +.xdsoft_datetimepicker.xdsoft_inline {
  52 + display: inline-block;
  53 + position: static;
  54 + box-shadow: none;
  55 +}
  56 +
  57 +.xdsoft_datetimepicker * {
  58 + -moz-box-sizing: border-box;
  59 + box-sizing: border-box;
  60 + padding: 0;
  61 + margin: 0;
  62 +}
  63 +
  64 +.xdsoft_datetimepicker .xdsoft_datepicker, .xdsoft_datetimepicker .xdsoft_timepicker {
  65 + display: none;
  66 +}
  67 +
  68 +.xdsoft_datetimepicker .xdsoft_datepicker.active, .xdsoft_datetimepicker .xdsoft_timepicker.active {
  69 + display: block;
  70 +}
  71 +
  72 +.xdsoft_datetimepicker .xdsoft_datepicker {
  73 + width: 224px;
  74 + float: left;
  75 + margin-left: 8px;
  76 +}
  77 +.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_datepicker {
  78 + float: right;
  79 + margin-right: 8px;
  80 + margin-left: 0;
  81 +}
  82 +
  83 +.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker {
  84 + width: 256px;
  85 +}
  86 +
  87 +.xdsoft_datetimepicker .xdsoft_timepicker {
  88 + width: 58px;
  89 + float: left;
  90 + text-align: center;
  91 + margin-left: 8px;
  92 + margin-top: 0;
  93 +}
  94 +.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker {
  95 + float: right;
  96 + margin-right: 8px;
  97 + margin-left: 0;
  98 +}
  99 +
  100 +.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker {
  101 + margin-top: 8px;
  102 + margin-bottom: 3px
  103 +}
  104 +
  105 +.xdsoft_datetimepicker .xdsoft_monthpicker {
  106 + position: relative;
  107 + text-align: center;
  108 +}
  109 +
  110 +.xdsoft_datetimepicker .xdsoft_label i,
  111 +.xdsoft_datetimepicker .xdsoft_prev,
  112 +.xdsoft_datetimepicker .xdsoft_next,
  113 +.xdsoft_datetimepicker .xdsoft_today_button {
  114 + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC);
  115 +}
  116 +
  117 +.xdsoft_datetimepicker .xdsoft_label i {
  118 + opacity: 0.5;
  119 + background-position: -92px -19px;
  120 + display: inline-block;
  121 + width: 9px;
  122 + height: 20px;
  123 + vertical-align: middle;
  124 +}
  125 +
  126 +.xdsoft_datetimepicker .xdsoft_prev {
  127 + float: left;
  128 + background-position: -20px 0;
  129 +}
  130 +.xdsoft_datetimepicker .xdsoft_today_button {
  131 + float: left;
  132 + background-position: -70px 0;
  133 + margin-left: 5px;
  134 +}
  135 +
  136 +.xdsoft_datetimepicker .xdsoft_next {
  137 + float: right;
  138 + background-position: 0 0;
  139 +}
  140 +
  141 +.xdsoft_datetimepicker .xdsoft_next,
  142 +.xdsoft_datetimepicker .xdsoft_prev ,
  143 +.xdsoft_datetimepicker .xdsoft_today_button {
  144 + background-color: transparent;
  145 + background-repeat: no-repeat;
  146 + border: 0 none;
  147 + cursor: pointer;
  148 + display: block;
  149 + height: 30px;
  150 + opacity: 0.5;
  151 + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  152 + outline: medium none;
  153 + overflow: hidden;
  154 + padding: 0;
  155 + position: relative;
  156 + text-indent: 100%;
  157 + white-space: nowrap;
  158 + width: 20px;
  159 + min-width: 0;
  160 +}
  161 +
  162 +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,
  163 +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next {
  164 + float: none;
  165 + background-position: -40px -15px;
  166 + height: 15px;
  167 + width: 30px;
  168 + display: block;
  169 + margin-left: 14px;
  170 + margin-top: 7px;
  171 +}
  172 +.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_prev,
  173 +.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_next {
  174 + float: none;
  175 + margin-left: 0;
  176 + margin-right: 14px;
  177 +}
  178 +
  179 +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev {
  180 + background-position: -40px 0;
  181 + margin-bottom: 7px;
  182 + margin-top: 0;
  183 +}
  184 +
  185 +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box {
  186 + height: 151px;
  187 + overflow: hidden;
  188 + border-bottom: 1px solid #ddd;
  189 +}
  190 +
  191 +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div {
  192 + background: #f5f5f5;
  193 + border-top: 1px solid #ddd;
  194 + color: #666;
  195 + font-size: 12px;
  196 + text-align: center;
  197 + border-collapse: collapse;
  198 + cursor: pointer;
  199 + border-bottom-width: 0;
  200 + height: 25px;
  201 + line-height: 25px;
  202 +}
  203 +
  204 +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div > div:first-child {
  205 + border-top-width: 0;
  206 +}
  207 +
  208 +.xdsoft_datetimepicker .xdsoft_today_button:hover,
  209 +.xdsoft_datetimepicker .xdsoft_next:hover,
  210 +.xdsoft_datetimepicker .xdsoft_prev:hover {
  211 + opacity: 1;
  212 + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
  213 +}
  214 +
  215 +.xdsoft_datetimepicker .xdsoft_label {
  216 + display: inline;
  217 + position: relative;
  218 + z-index: 9999;
  219 + margin: 0;
  220 + padding: 5px 3px;
  221 + font-size: 14px;
  222 + line-height: 20px;
  223 + font-weight: bold;
  224 + background-color: #fff;
  225 + float: left;
  226 + width: 182px;
  227 + text-align: center;
  228 + cursor: pointer;
  229 +}
  230 +
  231 +.xdsoft_datetimepicker .xdsoft_label:hover>span {
  232 + text-decoration: underline;
  233 +}
  234 +
  235 +.xdsoft_datetimepicker .xdsoft_label:hover i {
  236 + opacity: 1.0;
  237 +}
  238 +
  239 +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select {
  240 + border: 1px solid #ccc;
  241 + position: absolute;
  242 + right: 0;
  243 + top: 30px;
  244 + z-index: 101;
  245 + display: none;
  246 + background: #fff;
  247 + max-height: 160px;
  248 + overflow-y: hidden;
  249 +}
  250 +
  251 +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect{ right: -7px }
  252 +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect{ right: 2px }
  253 +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {
  254 + color: #fff;
  255 + background: #ff8000;
  256 +}
  257 +
  258 +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option {
  259 + padding: 2px 10px 2px 5px;
  260 + text-decoration: none !important;
  261 +}
  262 +
  263 +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {
  264 + background: #33aaff;
  265 + box-shadow: #178fe5 0 1px 3px 0 inset;
  266 + color: #fff;
  267 + font-weight: 700;
  268 +}
  269 +
  270 +.xdsoft_datetimepicker .xdsoft_month {
  271 + width: 100px;
  272 + text-align: right;
  273 +}
  274 +
  275 +.xdsoft_datetimepicker .xdsoft_calendar {
  276 + clear: both;
  277 +}
  278 +
  279 +.xdsoft_datetimepicker .xdsoft_year{
  280 + width: 48px;
  281 + margin-left: 5px;
  282 +}
  283 +
  284 +.xdsoft_datetimepicker .xdsoft_calendar table {
  285 + border-collapse: collapse;
  286 + width: 100%;
  287 +
  288 +}
  289 +
  290 +.xdsoft_datetimepicker .xdsoft_calendar td > div {
  291 + padding-right: 5px;
  292 +}
  293 +
  294 +.xdsoft_datetimepicker .xdsoft_calendar th {
  295 + height: 25px;
  296 +}
  297 +
  298 +.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th {
  299 + width: 14.2857142%;
  300 + background: #f5f5f5;
  301 + border: 1px solid #ddd;
  302 + color: #666;
  303 + font-size: 12px;
  304 + text-align: right;
  305 + vertical-align: middle;
  306 + padding: 0;
  307 + border-collapse: collapse;
  308 + cursor: pointer;
  309 + height: 25px;
  310 +}
  311 +.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th {
  312 + width: 12.5%;
  313 +}
  314 +
  315 +.xdsoft_datetimepicker .xdsoft_calendar th {
  316 + background: #f1f1f1;
  317 +}
  318 +
  319 +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today {
  320 + color: #33aaff;
  321 +}
  322 +
  323 +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_default {
  324 + background: #ffe9d2;
  325 + box-shadow: #ffb871 0 1px 4px 0 inset;
  326 + color: #000;
  327 +}
  328 +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_mint {
  329 + background: #c1ffc9;
  330 + box-shadow: #00dd1c 0 1px 4px 0 inset;
  331 + color: #000;
  332 +}
  333 +
  334 +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,
  335 +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,
  336 +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current {
  337 + background: #33aaff;
  338 + box-shadow: #178fe5 0 1px 3px 0 inset;
  339 + color: #fff;
  340 + font-weight: 700;
  341 +}
  342 +
  343 +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month,
  344 +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled,
  345 +.xdsoft_datetimepicker .xdsoft_time_box >div >div.xdsoft_disabled {
  346 + opacity: 0.5;
  347 + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  348 + cursor: default;
  349 +}
  350 +
  351 +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled {
  352 + opacity: 0.2;
  353 + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
  354 +}
  355 +
  356 +.xdsoft_datetimepicker .xdsoft_calendar td:hover,
  357 +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div:hover {
  358 + color: #fff !important;
  359 + background: #ff8000 !important;
  360 + box-shadow: none !important;
  361 +}
  362 +
  363 +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover,
  364 +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current.xdsoft_disabled:hover {
  365 + background: #33aaff !important;
  366 + box-shadow: #178fe5 0 1px 3px 0 inset !important;
  367 + color: #fff !important;
  368 +}
  369 +
  370 +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,
  371 +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_disabled:hover {
  372 + color: inherit !important;
  373 + background: inherit !important;
  374 + box-shadow: inherit !important;
  375 +}
  376 +
  377 +.xdsoft_datetimepicker .xdsoft_calendar th {
  378 + font-weight: 700;
  379 + text-align: center;
  380 + color: #999;
  381 + cursor: default;
  382 +}
  383 +
  384 +.xdsoft_datetimepicker .xdsoft_copyright {
  385 + color: #ccc !important;
  386 + font-size: 10px;
  387 + clear: both;
  388 + float: none;
  389 + margin-left: 8px;
  390 +}
  391 +
  392 +.xdsoft_datetimepicker .xdsoft_copyright a { color: #eee !important }
  393 +.xdsoft_datetimepicker .xdsoft_copyright a:hover { color: #aaa !important }
  394 +
  395 +.xdsoft_time_box {
  396 + position: relative;
  397 + border: 1px solid #ccc;
  398 +}
  399 +.xdsoft_scrollbar >.xdsoft_scroller {
  400 + background: #ccc !important;
  401 + height: 20px;
  402 + border-radius: 3px;
  403 +}
  404 +.xdsoft_scrollbar {
  405 + position: absolute;
  406 + width: 7px;
  407 + right: 0;
  408 + top: 0;
  409 + bottom: 0;
  410 + cursor: pointer;
  411 +}
  412 +.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_scrollbar {
  413 + left: 0;
  414 + right: auto;
  415 +}
  416 +.xdsoft_scroller_box {
  417 + position: relative;
  418 +}
  419 +
  420 +.xdsoft_datetimepicker.xdsoft_dark {
  421 + box-shadow: 0 5px 15px -5px rgba(255, 255, 255, 0.506);
  422 + background: #000;
  423 + border-bottom: 1px solid #444;
  424 + border-left: 1px solid #333;
  425 + border-right: 1px solid #333;
  426 + border-top: 1px solid #333;
  427 + color: #ccc;
  428 +}
  429 +
  430 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box {
  431 + border-bottom: 1px solid #222;
  432 +}
  433 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div {
  434 + background: #0a0a0a;
  435 + border-top: 1px solid #222;
  436 + color: #999;
  437 +}
  438 +
  439 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label {
  440 + background-color: #000;
  441 +}
  442 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select {
  443 + border: 1px solid #333;
  444 + background: #000;
  445 +}
  446 +
  447 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {
  448 + color: #000;
  449 + background: #007fff;
  450 +}
  451 +
  452 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {
  453 + background: #cc5500;
  454 + box-shadow: #b03e00 0 1px 3px 0 inset;
  455 + color: #000;
  456 +}
  457 +
  458 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i,
  459 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev,
  460 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next,
  461 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button {
  462 + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==);
  463 +}
  464 +
  465 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td,
  466 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {
  467 + background: #0a0a0a;
  468 + border: 1px solid #222;
  469 + color: #999;
  470 +}
  471 +
  472 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {
  473 + background: #0e0e0e;
  474 +}
  475 +
  476 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today {
  477 + color: #cc5500;
  478 +}
  479 +
  480 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_default {
  481 + background: #ffe9d2;
  482 + box-shadow: #ffb871 0 1px 4px 0 inset;
  483 + color:#000;
  484 +}
  485 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_mint {
  486 + background: #c1ffc9;
  487 + box-shadow: #00dd1c 0 1px 4px 0 inset;
  488 + color:#000;
  489 +}
  490 +
  491 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default,
  492 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current,
  493 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current {
  494 + background: #cc5500;
  495 + box-shadow: #b03e00 0 1px 3px 0 inset;
  496 + color: #000;
  497 +}
  498 +
  499 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover,
  500 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div:hover {
  501 + color: #000 !important;
  502 + background: #007fff !important;
  503 +}
  504 +
  505 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {
  506 + color: #666;
  507 +}
  508 +
  509 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright { color: #333 !important }
  510 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a { color: #111 !important }
  511 +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover { color: #555 !important }
  512 +
  513 +.xdsoft_dark .xdsoft_time_box {
  514 + border: 1px solid #333;
  515 +}
  516 +
  517 +.xdsoft_dark .xdsoft_scrollbar >.xdsoft_scroller {
  518 + background: #333 !important;
  519 +}
  520 +.xdsoft_datetimepicker .xdsoft_save_selected {
  521 + display: block;
  522 + border: 1px solid #dddddd !important;
  523 + margin-top: 5px;
  524 + width: 100%;
  525 + color: #454551;
  526 + font-size: 13px;
  527 +}
  528 +.xdsoft_datetimepicker .blue-gradient-button {
  529 + font-family: "museo-sans", "Book Antiqua", sans-serif;
  530 + font-size: 12px;
  531 + font-weight: 300;
  532 + color: #82878c;
  533 + height: 28px;
  534 + position: relative;
  535 + padding: 4px 17px 4px 33px;
  536 + border: 1px solid #d7d8da;
  537 + background: -moz-linear-gradient(top, #fff 0%, #f4f8fa 73%);
  538 + /* FF3.6+ */
  539 + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(73%, #f4f8fa));
  540 + /* Chrome,Safari4+ */
  541 + background: -webkit-linear-gradient(top, #fff 0%, #f4f8fa 73%);
  542 + /* Chrome10+,Safari5.1+ */
  543 + background: -o-linear-gradient(top, #fff 0%, #f4f8fa 73%);
  544 + /* Opera 11.10+ */
  545 + background: -ms-linear-gradient(top, #fff 0%, #f4f8fa 73%);
  546 + /* IE10+ */
  547 + background: linear-gradient(to bottom, #fff 0%, #f4f8fa 73%);
  548 + /* W3C */
  549 + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff', endColorstr='#f4f8fa',GradientType=0 );
  550 +/* IE6-9 */
  551 +}
  552 +.xdsoft_datetimepicker .blue-gradient-button:hover, .xdsoft_datetimepicker .blue-gradient-button:focus, .xdsoft_datetimepicker .blue-gradient-button:hover span, .xdsoft_datetimepicker .blue-gradient-button:focus span {
  553 + color: #454551;
  554 + background: -moz-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
  555 + /* FF3.6+ */
  556 + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f4f8fa), color-stop(73%, #FFF));
  557 + /* Chrome,Safari4+ */
  558 + background: -webkit-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
  559 + /* Chrome10+,Safari5.1+ */
  560 + background: -o-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
  561 + /* Opera 11.10+ */
  562 + background: -ms-linear-gradient(top, #f4f8fa 0%, #FFF 73%);
  563 + /* IE10+ */
  564 + background: linear-gradient(to bottom, #f4f8fa 0%, #FFF 73%);
  565 + /* W3C */
  566 + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f8fa', endColorstr='#FFF',GradientType=0 );
  567 + /* IE6-9 */
  568 +}
... ...
www-backend/js/datetimepicker-master/jquery.datetimepicker.js 0 → 100755
  1 +/**
  2 + * @preserve jQuery DateTimePicker plugin v2.5.4
  3 + * @homepage http://xdsoft.net/jqplugins/datetimepicker/
  4 + * @author Chupurnov Valeriy (<chupurnov@gmail.com>)
  5 + */
  6 +/*global DateFormatter, document,window,jQuery,setTimeout,clearTimeout,HighlightedDate,getCurrentValue*/
  7 +;(function (factory) {
  8 + if ( typeof define === 'function' && define.amd ) {
  9 + // AMD. Register as an anonymous module.
  10 + define(['jquery', 'jquery-mousewheel'], factory);
  11 + } else if (typeof exports === 'object') {
  12 + // Node/CommonJS style for Browserify
  13 + module.exports = factory;
  14 + } else {
  15 + // Browser globals
  16 + factory(jQuery);
  17 + }
  18 +}(function ($) {
  19 + 'use strict';
  20 + var default_options = {
  21 + i18n: {
  22 + ar: { // Arabic
  23 + months: [
  24 + "كانون الثاني", "شباط", "آذار", "نيسان", "مايو", "حزيران", "تموز", "آب", "أيلول", "تشرين الأول", "تشرين الثاني", "كانون الأول"
  25 + ],
  26 + dayOfWeekShort: [
  27 + "ن", "ث", "ع", "خ", "ج", "س", "ح"
  28 + ],
  29 + dayOfWeek: ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", "الأحد"]
  30 + },
  31 + ro: { // Romanian
  32 + months: [
  33 + "Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"
  34 + ],
  35 + dayOfWeekShort: [
  36 + "Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ"
  37 + ],
  38 + dayOfWeek: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă"]
  39 + },
  40 + id: { // Indonesian
  41 + months: [
  42 + "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"
  43 + ],
  44 + dayOfWeekShort: [
  45 + "Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"
  46 + ],
  47 + dayOfWeek: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"]
  48 + },
  49 + is: { // Icelandic
  50 + months: [
  51 + "Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"
  52 + ],
  53 + dayOfWeekShort: [
  54 + "Sun", "Mán", "Þrið", "Mið", "Fim", "Fös", "Lau"
  55 + ],
  56 + dayOfWeek: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur"]
  57 + },
  58 + bg: { // Bulgarian
  59 + months: [
  60 + "Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"
  61 + ],
  62 + dayOfWeekShort: [
  63 + "Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"
  64 + ],
  65 + dayOfWeek: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота"]
  66 + },
  67 + fa: { // Persian/Farsi
  68 + months: [
  69 + 'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'
  70 + ],
  71 + dayOfWeekShort: [
  72 + 'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'
  73 + ],
  74 + dayOfWeek: ["یک‌شنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنج‌شنبه", "جمعه", "شنبه", "یک‌شنبه"]
  75 + },
  76 + ru: { // Russian
  77 + months: [
  78 + 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'
  79 + ],
  80 + dayOfWeekShort: [
  81 + "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"
  82 + ],
  83 + dayOfWeek: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"]
  84 + },
  85 + uk: { // Ukrainian
  86 + months: [
  87 + 'Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'
  88 + ],
  89 + dayOfWeekShort: [
  90 + "Ндл", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Сбт"
  91 + ],
  92 + dayOfWeek: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота"]
  93 + },
  94 + en: { // English
  95 + months: [
  96 + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
  97 + ],
  98 + dayOfWeekShort: [
  99 + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
  100 + ],
  101 + dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
  102 + },
  103 + el: { // Ελληνικά
  104 + months: [
  105 + "Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"
  106 + ],
  107 + dayOfWeekShort: [
  108 + "Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ"
  109 + ],
  110 + dayOfWeek: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"]
  111 + },
  112 + de: { // German
  113 + months: [
  114 + 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'
  115 + ],
  116 + dayOfWeekShort: [
  117 + "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"
  118 + ],
  119 + dayOfWeek: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]
  120 + },
  121 + nl: { // Dutch
  122 + months: [
  123 + "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"
  124 + ],
  125 + dayOfWeekShort: [
  126 + "zo", "ma", "di", "wo", "do", "vr", "za"
  127 + ],
  128 + dayOfWeek: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"]
  129 + },
  130 + tr: { // Turkish
  131 + months: [
  132 + "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"
  133 + ],
  134 + dayOfWeekShort: [
  135 + "Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts"
  136 + ],
  137 + dayOfWeek: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"]
  138 + },
  139 + fr: { //French
  140 + months: [
  141 + "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"
  142 + ],
  143 + dayOfWeekShort: [
  144 + "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"
  145 + ],
  146 + dayOfWeek: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"]
  147 + },
  148 + es: { // Spanish
  149 + months: [
  150 + "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"
  151 + ],
  152 + dayOfWeekShort: [
  153 + "Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"
  154 + ],
  155 + dayOfWeek: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"]
  156 + },
  157 + th: { // Thai
  158 + months: [
  159 + 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'
  160 + ],
  161 + dayOfWeekShort: [
  162 + 'อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'
  163 + ],
  164 + dayOfWeek: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"]
  165 + },
  166 + pl: { // Polish
  167 + months: [
  168 + "styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień"
  169 + ],
  170 + dayOfWeekShort: [
  171 + "nd", "pn", "wt", "śr", "cz", "pt", "sb"
  172 + ],
  173 + dayOfWeek: ["niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota"]
  174 + },
  175 + pt: { // Portuguese
  176 + months: [
  177 + "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
  178 + ],
  179 + dayOfWeekShort: [
  180 + "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab"
  181 + ],
  182 + dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"]
  183 + },
  184 + ch: { // Simplified Chinese
  185 + months: [
  186 + "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
  187 + ],
  188 + dayOfWeekShort: [
  189 + "日", "一", "二", "三", "四", "五", "六"
  190 + ]
  191 + },
  192 + se: { // Swedish
  193 + months: [
  194 + "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"
  195 + ],
  196 + dayOfWeekShort: [
  197 + "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"
  198 + ]
  199 + },
  200 + kr: { // Korean
  201 + months: [
  202 + "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"
  203 + ],
  204 + dayOfWeekShort: [
  205 + "일", "월", "화", "수", "목", "금", "토"
  206 + ],
  207 + dayOfWeek: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"]
  208 + },
  209 + it: { // Italian
  210 + months: [
  211 + "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"
  212 + ],
  213 + dayOfWeekShort: [
  214 + "Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"
  215 + ],
  216 + dayOfWeek: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"]
  217 + },
  218 + da: { // Dansk
  219 + months: [
  220 + "January", "Februar", "Marts", "April", "Maj", "Juni", "July", "August", "September", "Oktober", "November", "December"
  221 + ],
  222 + dayOfWeekShort: [
  223 + "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"
  224 + ],
  225 + dayOfWeek: ["søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"]
  226 + },
  227 + no: { // Norwegian
  228 + months: [
  229 + "Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"
  230 + ],
  231 + dayOfWeekShort: [
  232 + "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"
  233 + ],
  234 + dayOfWeek: ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag']
  235 + },
  236 + ja: { // Japanese
  237 + months: [
  238 + "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"
  239 + ],
  240 + dayOfWeekShort: [
  241 + "日", "月", "火", "水", "木", "金", "土"
  242 + ],
  243 + dayOfWeek: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜"]
  244 + },
  245 + vi: { // Vietnamese
  246 + months: [
  247 + "Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12"
  248 + ],
  249 + dayOfWeekShort: [
  250 + "CN", "T2", "T3", "T4", "T5", "T6", "T7"
  251 + ],
  252 + dayOfWeek: ["Chủ nhật", "Thứ hai", "Thứ ba", "Thứ tư", "Thứ năm", "Thứ sáu", "Thứ bảy"]
  253 + },
  254 + sl: { // Slovenščina
  255 + months: [
  256 + "Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"
  257 + ],
  258 + dayOfWeekShort: [
  259 + "Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob"
  260 + ],
  261 + dayOfWeek: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota"]
  262 + },
  263 + cs: { // Čeština
  264 + months: [
  265 + "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"
  266 + ],
  267 + dayOfWeekShort: [
  268 + "Ne", "Po", "Út", "St", "Čt", "Pá", "So"
  269 + ]
  270 + },
  271 + hu: { // Hungarian
  272 + months: [
  273 + "Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"
  274 + ],
  275 + dayOfWeekShort: [
  276 + "Va", "Hé", "Ke", "Sze", "Cs", "Pé", "Szo"
  277 + ],
  278 + dayOfWeek: ["vasárnap", "hétfő", "kedd", "szerda", "csütörtök", "péntek", "szombat"]
  279 + },
  280 + az: { //Azerbaijanian (Azeri)
  281 + months: [
  282 + "Yanvar", "Fevral", "Mart", "Aprel", "May", "Iyun", "Iyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"
  283 + ],
  284 + dayOfWeekShort: [
  285 + "B", "Be", "Ça", "Ç", "Ca", "C", "Ş"
  286 + ],
  287 + dayOfWeek: ["Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə"]
  288 + },
  289 + bs: { //Bosanski
  290 + months: [
  291 + "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"
  292 + ],
  293 + dayOfWeekShort: [
  294 + "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"
  295 + ],
  296 + dayOfWeek: ["Nedjelja","Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"]
  297 + },
  298 + ca: { //Català
  299 + months: [
  300 + "Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"
  301 + ],
  302 + dayOfWeekShort: [
  303 + "Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds"
  304 + ],
  305 + dayOfWeek: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"]
  306 + },
  307 + 'en-GB': { //English (British)
  308 + months: [
  309 + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
  310 + ],
  311 + dayOfWeekShort: [
  312 + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
  313 + ],
  314 + dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
  315 + },
  316 + et: { //"Eesti"
  317 + months: [
  318 + "Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember"
  319 + ],
  320 + dayOfWeekShort: [
  321 + "P", "E", "T", "K", "N", "R", "L"
  322 + ],
  323 + dayOfWeek: ["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev"]
  324 + },
  325 + eu: { //Euskara
  326 + months: [
  327 + "Urtarrila", "Otsaila", "Martxoa", "Apirila", "Maiatza", "Ekaina", "Uztaila", "Abuztua", "Iraila", "Urria", "Azaroa", "Abendua"
  328 + ],
  329 + dayOfWeekShort: [
  330 + "Ig.", "Al.", "Ar.", "Az.", "Og.", "Or.", "La."
  331 + ],
  332 + dayOfWeek: ['Igandea', 'Astelehena', 'Asteartea', 'Asteazkena', 'Osteguna', 'Ostirala', 'Larunbata']
  333 + },
  334 + fi: { //Finnish (Suomi)
  335 + months: [
  336 + "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu"
  337 + ],
  338 + dayOfWeekShort: [
  339 + "Su", "Ma", "Ti", "Ke", "To", "Pe", "La"
  340 + ],
  341 + dayOfWeek: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"]
  342 + },
  343 + gl: { //Galego
  344 + months: [
  345 + "Xan", "Feb", "Maz", "Abr", "Mai", "Xun", "Xul", "Ago", "Set", "Out", "Nov", "Dec"
  346 + ],
  347 + dayOfWeekShort: [
  348 + "Dom", "Lun", "Mar", "Mer", "Xov", "Ven", "Sab"
  349 + ],
  350 + dayOfWeek: ["Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado"]
  351 + },
  352 + hr: { //Hrvatski
  353 + months: [
  354 + "Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"
  355 + ],
  356 + dayOfWeekShort: [
  357 + "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"
  358 + ],
  359 + dayOfWeek: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"]
  360 + },
  361 + ko: { //Korean (한국어)
  362 + months: [
  363 + "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"
  364 + ],
  365 + dayOfWeekShort: [
  366 + "일", "월", "화", "수", "목", "금", "토"
  367 + ],
  368 + dayOfWeek: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"]
  369 + },
  370 + lt: { //Lithuanian (lietuvių)
  371 + months: [
  372 + "Sausio", "Vasario", "Kovo", "Balandžio", "Gegužės", "Birželio", "Liepos", "Rugpjūčio", "Rugsėjo", "Spalio", "Lapkričio", "Gruodžio"
  373 + ],
  374 + dayOfWeekShort: [
  375 + "Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Šeš"
  376 + ],
  377 + dayOfWeek: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis"]
  378 + },
  379 + lv: { //Latvian (Latviešu)
  380 + months: [
  381 + "Janvāris", "Februāris", "Marts", "Aprīlis ", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"
  382 + ],
  383 + dayOfWeekShort: [
  384 + "Sv", "Pr", "Ot", "Tr", "Ct", "Pk", "St"
  385 + ],
  386 + dayOfWeek: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena"]
  387 + },
  388 + mk: { //Macedonian (Македонски)
  389 + months: [
  390 + "јануари", "февруари", "март", "април", "мај", "јуни", "јули", "август", "септември", "октомври", "ноември", "декември"
  391 + ],
  392 + dayOfWeekShort: [
  393 + "нед", "пон", "вто", "сре", "чет", "пет", "саб"
  394 + ],
  395 + dayOfWeek: ["Недела", "Понеделник", "Вторник", "Среда", "Четврток", "Петок", "Сабота"]
  396 + },
  397 + mn: { //Mongolian (Монгол)
  398 + months: [
  399 + "1-р сар", "2-р сар", "3-р сар", "4-р сар", "5-р сар", "6-р сар", "7-р сар", "8-р сар", "9-р сар", "10-р сар", "11-р сар", "12-р сар"
  400 + ],
  401 + dayOfWeekShort: [
  402 + "Дав", "Мяг", "Лха", "Пүр", "Бсн", "Бям", "Ням"
  403 + ],
  404 + dayOfWeek: ["Даваа", "Мягмар", "Лхагва", "Пүрэв", "Баасан", "Бямба", "Ням"]
  405 + },
  406 + 'pt-BR': { //Português(Brasil)
  407 + months: [
  408 + "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
  409 + ],
  410 + dayOfWeekShort: [
  411 + "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"
  412 + ],
  413 + dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"]
  414 + },
  415 + sk: { //Slovenčina
  416 + months: [
  417 + "Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"
  418 + ],
  419 + dayOfWeekShort: [
  420 + "Ne", "Po", "Ut", "St", "Št", "Pi", "So"
  421 + ],
  422 + dayOfWeek: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota"]
  423 + },
  424 + sq: { //Albanian (Shqip)
  425 + months: [
  426 + "Janar", "Shkurt", "Mars", "Prill", "Maj", "Qershor", "Korrik", "Gusht", "Shtator", "Tetor", "Nëntor", "Dhjetor"
  427 + ],
  428 + dayOfWeekShort: [
  429 + "Die", "Hën", "Mar", "Mër", "Enj", "Pre", "Shtu"
  430 + ],
  431 + dayOfWeek: ["E Diel", "E Hënë", "E Martē", "E Mërkurë", "E Enjte", "E Premte", "E Shtunë"]
  432 + },
  433 + 'sr-YU': { //Serbian (Srpski)
  434 + months: [
  435 + "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"
  436 + ],
  437 + dayOfWeekShort: [
  438 + "Ned", "Pon", "Uto", "Sre", "čet", "Pet", "Sub"
  439 + ],
  440 + dayOfWeek: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota"]
  441 + },
  442 + sr: { //Serbian Cyrillic (Српски)
  443 + months: [
  444 + "јануар", "фебруар", "март", "април", "мај", "јун", "јул", "август", "септембар", "октобар", "новембар", "децембар"
  445 + ],
  446 + dayOfWeekShort: [
  447 + "нед", "пон", "уто", "сре", "чет", "пет", "суб"
  448 + ],
  449 + dayOfWeek: ["Недеља","Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота"]
  450 + },
  451 + sv: { //Svenska
  452 + months: [
  453 + "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"
  454 + ],
  455 + dayOfWeekShort: [
  456 + "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"
  457 + ],
  458 + dayOfWeek: ["Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag"]
  459 + },
  460 + 'zh-TW': { //Traditional Chinese (繁體中文)
  461 + months: [
  462 + "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
  463 + ],
  464 + dayOfWeekShort: [
  465 + "日", "一", "二", "三", "四", "五", "六"
  466 + ],
  467 + dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
  468 + },
  469 + zh: { //Simplified Chinese (简体中文)
  470 + months: [
  471 + "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
  472 + ],
  473 + dayOfWeekShort: [
  474 + "日", "一", "二", "三", "四", "五", "六"
  475 + ],
  476 + dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
  477 + },
  478 + he: { //Hebrew (עברית)
  479 + months: [
  480 + 'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'
  481 + ],
  482 + dayOfWeekShort: [
  483 + 'א\'', 'ב\'', 'ג\'', 'ד\'', 'ה\'', 'ו\'', 'שבת'
  484 + ],
  485 + dayOfWeek: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"]
  486 + },
  487 + hy: { // Armenian
  488 + months: [
  489 + "Հունվար", "Փետրվար", "Մարտ", "Ապրիլ", "Մայիս", "Հունիս", "Հուլիս", "Օգոստոս", "Սեպտեմբեր", "Հոկտեմբեր", "Նոյեմբեր", "Դեկտեմբեր"
  490 + ],
  491 + dayOfWeekShort: [
  492 + "Կի", "Երկ", "Երք", "Չոր", "Հնգ", "Ուրբ", "Շբթ"
  493 + ],
  494 + dayOfWeek: ["Կիրակի", "Երկուշաբթի", "Երեքշաբթի", "Չորեքշաբթի", "Հինգշաբթի", "Ուրբաթ", "Շաբաթ"]
  495 + },
  496 + kg: { // Kyrgyz
  497 + months: [
  498 + 'Үчтүн айы', 'Бирдин айы', 'Жалган Куран', 'Чын Куран', 'Бугу', 'Кулжа', 'Теке', 'Баш Оона', 'Аяк Оона', 'Тогуздун айы', 'Жетинин айы', 'Бештин айы'
  499 + ],
  500 + dayOfWeekShort: [
  501 + "Жек", "Дүй", "Шей", "Шар", "Бей", "Жум", "Ише"
  502 + ],
  503 + dayOfWeek: [
  504 + "Жекшемб", "Дүйшөмб", "Шейшемб", "Шаршемб", "Бейшемби", "Жума", "Ишенб"
  505 + ]
  506 + },
  507 + rm: { // Romansh
  508 + months: [
  509 + "Schaner", "Favrer", "Mars", "Avrigl", "Matg", "Zercladur", "Fanadur", "Avust", "Settember", "October", "November", "December"
  510 + ],
  511 + dayOfWeekShort: [
  512 + "Du", "Gli", "Ma", "Me", "Gie", "Ve", "So"
  513 + ],
  514 + dayOfWeek: [
  515 + "Dumengia", "Glindesdi", "Mardi", "Mesemna", "Gievgia", "Venderdi", "Sonda"
  516 + ]
  517 + },
  518 + ka: { // Georgian
  519 + months: [
  520 + 'იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი'
  521 + ],
  522 + dayOfWeekShort: [
  523 + "კვ", "ორშ", "სამშ", "ოთხ", "ხუთ", "პარ", "შაბ"
  524 + ],
  525 + dayOfWeek: ["კვირა", "ორშაბათი", "სამშაბათი", "ოთხშაბათი", "ხუთშაბათი", "პარასკევი", "შაბათი"]
  526 + }
  527 + },
  528 +
  529 + ownerDocument: document,
  530 + contentWindow: window,
  531 +
  532 + value: '',
  533 + rtl: false,
  534 +
  535 + format: 'Y/m/d H:i',
  536 + formatTime: 'H:i',
  537 + formatDate: 'Y/m/d',
  538 +
  539 + startDate: false, // new Date(), '1986/12/08', '-1970/01/05','-1970/01/05',
  540 + step: 60,
  541 + monthChangeSpinner: true,
  542 +
  543 + closeOnDateSelect: false,
  544 + closeOnTimeSelect: true,
  545 + closeOnWithoutClick: true,
  546 + closeOnInputClick: true,
  547 +
  548 + timepicker: true,
  549 + datepicker: true,
  550 + weeks: false,
  551 +
  552 + defaultTime: false, // use formatTime format (ex. '10:00' for formatTime: 'H:i')
  553 + defaultDate: false, // use formatDate format (ex new Date() or '1986/12/08' or '-1970/01/05' or '-1970/01/05')
  554 +
  555 + minDate: false,
  556 + maxDate: false,
  557 + minTime: false,
  558 + maxTime: false,
  559 + disabledMinTime: false,
  560 + disabledMaxTime: false,
  561 +
  562 + allowTimes: [],
  563 + opened: false,
  564 + initTime: true,
  565 + inline: false,
  566 + theme: '',
  567 +
  568 + onSelectDate: function () {},
  569 + onSelectTime: function () {},
  570 + onChangeMonth: function () {},
  571 + onGetWeekOfYear: function () {},
  572 + onChangeYear: function () {},
  573 + onChangeDateTime: function () {},
  574 + onShow: function () {},
  575 + onClose: function () {},
  576 + onGenerate: function () {},
  577 +
  578 + withoutCopyright: true,
  579 + inverseButton: false,
  580 + hours12: false,
  581 + next: 'xdsoft_next',
  582 + prev : 'xdsoft_prev',
  583 + dayOfWeekStart: 0,
  584 + parentID: 'body',
  585 + timeHeightInTimePicker: 25,
  586 + timepickerScrollbar: true,
  587 + todayButton: true,
  588 + prevButton: true,
  589 + nextButton: true,
  590 + defaultSelect: true,
  591 +
  592 + scrollMonth: true,
  593 + scrollTime: true,
  594 + scrollInput: true,
  595 +
  596 + lazyInit: false,
  597 + mask: false,
  598 + validateOnBlur: true,
  599 + allowBlank: true,
  600 + yearStart: 1950,
  601 + yearEnd: 2050,
  602 + monthStart: 0,
  603 + monthEnd: 11,
  604 + style: '',
  605 + id: '',
  606 + fixed: false,
  607 + roundTime: 'round', // ceil, floor
  608 + className: '',
  609 + weekends: [],
  610 + highlightedDates: [],
  611 + highlightedPeriods: [],
  612 + allowDates : [],
  613 + allowDateRe : null,
  614 + disabledDates : [],
  615 + disabledWeekDays: [],
  616 + yearOffset: 0,
  617 + beforeShowDay: null,
  618 +
  619 + enterLikeTab: true,
  620 + showApplyButton: false
  621 + };
  622 +
  623 + var dateHelper = null,
  624 + globalLocaleDefault = 'en',
  625 + globalLocale = 'en';
  626 +
  627 + var dateFormatterOptionsDefault = {
  628 + meridiem: ['AM', 'PM']
  629 + };
  630 +
  631 + var initDateFormatter = function(){
  632 + var locale = default_options.i18n[globalLocale],
  633 + opts = {
  634 + days: locale.dayOfWeek,
  635 + daysShort: locale.dayOfWeekShort,
  636 + months: locale.months,
  637 + monthsShort: $.map(locale.months, function(n){ return n.substring(0, 3) })
  638 + };
  639 +
  640 + if (typeof DateFormatter === 'function') {
  641 + dateHelper = new DateFormatter({
  642 + dateSettings: $.extend({}, dateFormatterOptionsDefault, opts)
  643 + });
  644 + }
  645 + };
  646 +
  647 + // for locale settings
  648 + $.datetimepicker = {
  649 + setLocale: function(locale){
  650 + var newLocale = default_options.i18n[locale]?locale:globalLocaleDefault;
  651 + if(globalLocale != newLocale){
  652 + globalLocale = newLocale;
  653 + // reinit date formatter
  654 + initDateFormatter();
  655 + }
  656 + },
  657 + setDateFormatter: function(dateFormatter) {
  658 + dateHelper = dateFormatter;
  659 + },
  660 + RFC_2822: 'D, d M Y H:i:s O',
  661 + ATOM: 'Y-m-d\TH:i:sP',
  662 + ISO_8601: 'Y-m-d\TH:i:sO',
  663 + RFC_822: 'D, d M y H:i:s O',
  664 + RFC_850: 'l, d-M-y H:i:s T',
  665 + RFC_1036: 'D, d M y H:i:s O',
  666 + RFC_1123: 'D, d M Y H:i:s O',
  667 + RSS: 'D, d M Y H:i:s O',
  668 + W3C: 'Y-m-d\TH:i:sP'
  669 + };
  670 +
  671 + // first init date formatter
  672 + initDateFormatter();
  673 +
  674 + // fix for ie8
  675 + if (!window.getComputedStyle) {
  676 + window.getComputedStyle = function (el, pseudo) {
  677 + this.el = el;
  678 + this.getPropertyValue = function (prop) {
  679 + var re = /(\-([a-z]){1})/g;
  680 + if (prop === 'float') {
  681 + prop = 'styleFloat';
  682 + }
  683 + if (re.test(prop)) {
  684 + prop = prop.replace(re, function (a, b, c) {
  685 + return c.toUpperCase();
  686 + });
  687 + }
  688 + return el.currentStyle[prop] || null;
  689 + };
  690 + return this;
  691 + };
  692 + }
  693 + if (!Array.prototype.indexOf) {
  694 + Array.prototype.indexOf = function (obj, start) {
  695 + var i, j;
  696 + for (i = (start || 0), j = this.length; i < j; i += 1) {
  697 + if (this[i] === obj) { return i; }
  698 + }
  699 + return -1;
  700 + };
  701 + }
  702 + Date.prototype.countDaysInMonth = function () {
  703 + return new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate();
  704 + };
  705 + $.fn.xdsoftScroller = function (options, percent) {
  706 + return this.each(function () {
  707 + var timeboxparent = $(this),
  708 + pointerEventToXY = function (e) {
  709 + var out = {x: 0, y: 0},
  710 + touch;
  711 + if (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') {
  712 + touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
  713 + out.x = touch.clientX;
  714 + out.y = touch.clientY;
  715 + } else if (e.type === 'mousedown' || e.type === 'mouseup' || e.type === 'mousemove' || e.type === 'mouseover' || e.type === 'mouseout' || e.type === 'mouseenter' || e.type === 'mouseleave') {
  716 + out.x = e.clientX;
  717 + out.y = e.clientY;
  718 + }
  719 + return out;
  720 + },
  721 + timebox,
  722 + parentHeight,
  723 + height,
  724 + scrollbar,
  725 + scroller,
  726 + maximumOffset = 100,
  727 + start = false,
  728 + startY = 0,
  729 + startTop = 0,
  730 + h1 = 0,
  731 + touchStart = false,
  732 + startTopScroll = 0,
  733 + calcOffset = function () {};
  734 + if (percent === 'hide') {
  735 + timeboxparent.find('.xdsoft_scrollbar').hide();
  736 + return;
  737 + }
  738 + if (!$(this).hasClass('xdsoft_scroller_box')) {
  739 + timebox = timeboxparent.children().eq(0);
  740 + parentHeight = timeboxparent[0].clientHeight;
  741 + height = timebox[0].offsetHeight;
  742 + scrollbar = $('<div class="xdsoft_scrollbar"></div>');
  743 + scroller = $('<div class="xdsoft_scroller"></div>');
  744 + scrollbar.append(scroller);
  745 +
  746 + timeboxparent.addClass('xdsoft_scroller_box').append(scrollbar);
  747 + calcOffset = function calcOffset(event) {
  748 + var offset = pointerEventToXY(event).y - startY + startTopScroll;
  749 + if (offset < 0) {
  750 + offset = 0;
  751 + }
  752 + if (offset + scroller[0].offsetHeight > h1) {
  753 + offset = h1 - scroller[0].offsetHeight;
  754 + }
  755 + timeboxparent.trigger('scroll_element.xdsoft_scroller', [maximumOffset ? offset / maximumOffset : 0]);
  756 + };
  757 +
  758 + scroller
  759 + .on('touchstart.xdsoft_scroller mousedown.xdsoft_scroller', function (event) {
  760 + if (!parentHeight) {
  761 + timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);
  762 + }
  763 +
  764 + startY = pointerEventToXY(event).y;
  765 + startTopScroll = parseInt(scroller.css('margin-top'), 10);
  766 + h1 = scrollbar[0].offsetHeight;
  767 +
  768 + if (event.type === 'mousedown' || event.type === 'touchstart') {
  769 + if (options.ownerDocument) {
  770 + $(options.ownerDocument.body).addClass('xdsoft_noselect');
  771 + }
  772 + $([options.ownerDocument.body, options.contentWindow]).on('touchend mouseup.xdsoft_scroller', function arguments_callee() {
  773 + $([options.ownerDocument.body, options.contentWindow]).off('touchend mouseup.xdsoft_scroller', arguments_callee)
  774 + .off('mousemove.xdsoft_scroller', calcOffset)
  775 + .removeClass('xdsoft_noselect');
  776 + });
  777 + $(options.ownerDocument.body).on('mousemove.xdsoft_scroller', calcOffset);
  778 + } else {
  779 + touchStart = true;
  780 + event.stopPropagation();
  781 + event.preventDefault();
  782 + }
  783 + })
  784 + .on('touchmove', function (event) {
  785 + if (touchStart) {
  786 + event.preventDefault();
  787 + calcOffset(event);
  788 + }
  789 + })
  790 + .on('touchend touchcancel', function () {
  791 + touchStart = false;
  792 + startTopScroll = 0;
  793 + });
  794 +
  795 + timeboxparent
  796 + .on('scroll_element.xdsoft_scroller', function (event, percentage) {
  797 + if (!parentHeight) {
  798 + timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percentage, true]);
  799 + }
  800 + percentage = percentage > 1 ? 1 : (percentage < 0 || isNaN(percentage)) ? 0 : percentage;
  801 +
  802 + scroller.css('margin-top', maximumOffset * percentage);
  803 +
  804 + setTimeout(function () {
  805 + timebox.css('marginTop', -parseInt((timebox[0].offsetHeight - parentHeight) * percentage, 10));
  806 + }, 10);
  807 + })
  808 + .on('resize_scroll.xdsoft_scroller', function (event, percentage, noTriggerScroll) {
  809 + var percent, sh;
  810 + parentHeight = timeboxparent[0].clientHeight;
  811 + height = timebox[0].offsetHeight;
  812 + percent = parentHeight / height;
  813 + sh = percent * scrollbar[0].offsetHeight;
  814 + if (percent > 1) {
  815 + scroller.hide();
  816 + } else {
  817 + scroller.show();
  818 + scroller.css('height', parseInt(sh > 10 ? sh : 10, 10));
  819 + maximumOffset = scrollbar[0].offsetHeight - scroller[0].offsetHeight;
  820 + if (noTriggerScroll !== true) {
  821 + timeboxparent.trigger('scroll_element.xdsoft_scroller', [percentage || Math.abs(parseInt(timebox.css('marginTop'), 10)) / (height - parentHeight)]);
  822 + }
  823 + }
  824 + });
  825 +
  826 + timeboxparent.on('mousewheel', function (event) {
  827 + var top = Math.abs(parseInt(timebox.css('marginTop'), 10));
  828 +
  829 + top = top - (event.deltaY * 20);
  830 + if (top < 0) {
  831 + top = 0;
  832 + }
  833 +
  834 + timeboxparent.trigger('scroll_element.xdsoft_scroller', [top / (height - parentHeight)]);
  835 + event.stopPropagation();
  836 + return false;
  837 + });
  838 +
  839 + timeboxparent.on('touchstart', function (event) {
  840 + start = pointerEventToXY(event);
  841 + startTop = Math.abs(parseInt(timebox.css('marginTop'), 10));
  842 + });
  843 +
  844 + timeboxparent.on('touchmove', function (event) {
  845 + if (start) {
  846 + event.preventDefault();
  847 + var coord = pointerEventToXY(event);
  848 + timeboxparent.trigger('scroll_element.xdsoft_scroller', [(startTop - (coord.y - start.y)) / (height - parentHeight)]);
  849 + }
  850 + });
  851 +
  852 + timeboxparent.on('touchend touchcancel', function () {
  853 + start = false;
  854 + startTop = 0;
  855 + });
  856 + }
  857 + timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);
  858 + });
  859 + };
  860 +
  861 + $.fn.datetimepicker = function (opt, opt2) {
  862 + var result = this,
  863 + KEY0 = 48,
  864 + KEY9 = 57,
  865 + _KEY0 = 96,
  866 + _KEY9 = 105,
  867 + CTRLKEY = 17,
  868 + DEL = 46,
  869 + ENTER = 13,
  870 + ESC = 27,
  871 + BACKSPACE = 8,
  872 + ARROWLEFT = 37,
  873 + ARROWUP = 38,
  874 + ARROWRIGHT = 39,
  875 + ARROWDOWN = 40,
  876 + TAB = 9,
  877 + F5 = 116,
  878 + AKEY = 65,
  879 + CKEY = 67,
  880 + VKEY = 86,
  881 + ZKEY = 90,
  882 + YKEY = 89,
  883 + ctrlDown = false,
  884 + options = ($.isPlainObject(opt) || !opt) ? $.extend(true, {}, default_options, opt) : $.extend(true, {}, default_options),
  885 +
  886 + lazyInitTimer = 0,
  887 + createDateTimePicker,
  888 + destroyDateTimePicker,
  889 +
  890 + lazyInit = function (input) {
  891 + input
  892 + .on('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', function initOnActionCallback() {
  893 + if (input.is(':disabled') || input.data('xdsoft_datetimepicker')) {
  894 + return;
  895 + }
  896 + clearTimeout(lazyInitTimer);
  897 + lazyInitTimer = setTimeout(function () {
  898 +
  899 + if (!input.data('xdsoft_datetimepicker')) {
  900 + createDateTimePicker(input);
  901 + }
  902 + input
  903 + .off('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', initOnActionCallback)
  904 + .trigger('open.xdsoft');
  905 + }, 100);
  906 + });
  907 + };
  908 +
  909 + createDateTimePicker = function (input) {
  910 + var datetimepicker = $('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'),
  911 + xdsoft_copyright = $('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),
  912 + datepicker = $('<div class="xdsoft_datepicker active"></div>'),
  913 + month_picker = $('<div class="xdsoft_monthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button>' +
  914 + '<div class="xdsoft_label xdsoft_month"><span></span><i></i></div>' +
  915 + '<div class="xdsoft_label xdsoft_year"><span></span><i></i></div>' +
  916 + '<button type="button" class="xdsoft_next"></button></div>'),
  917 + calendar = $('<div class="xdsoft_calendar"></div>'),
  918 + timepicker = $('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),
  919 + timeboxparent = timepicker.find('.xdsoft_time_box').eq(0),
  920 + timebox = $('<div class="xdsoft_time_variant"></div>'),
  921 + applyButton = $('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),
  922 +
  923 + monthselect = $('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),
  924 + yearselect = $('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),
  925 + triggerAfterOpen = false,
  926 + XDSoft_datetime,
  927 +
  928 + xchangeTimer,
  929 + timerclick,
  930 + current_time_index,
  931 + setPos,
  932 + timer = 0,
  933 + _xdsoft_datetime,
  934 + forEachAncestorOf,
  935 + throttle;
  936 +
  937 + if (options.id) {
  938 + datetimepicker.attr('id', options.id);
  939 + }
  940 + if (options.style) {
  941 + datetimepicker.attr('style', options.style);
  942 + }
  943 + if (options.weeks) {
  944 + datetimepicker.addClass('xdsoft_showweeks');
  945 + }
  946 + if (options.rtl) {
  947 + datetimepicker.addClass('xdsoft_rtl');
  948 + }
  949 +
  950 + datetimepicker.addClass('xdsoft_' + options.theme);
  951 + datetimepicker.addClass(options.className);
  952 +
  953 + month_picker
  954 + .find('.xdsoft_month span')
  955 + .after(monthselect);
  956 + month_picker
  957 + .find('.xdsoft_year span')
  958 + .after(yearselect);
  959 +
  960 + month_picker
  961 + .find('.xdsoft_month,.xdsoft_year')
  962 + .on('touchstart mousedown.xdsoft', function (event) {
  963 + var select = $(this).find('.xdsoft_select').eq(0),
  964 + val = 0,
  965 + top = 0,
  966 + visible = select.is(':visible'),
  967 + items,
  968 + i;
  969 +
  970 + month_picker
  971 + .find('.xdsoft_select')
  972 + .hide();
  973 + if (_xdsoft_datetime.currentTime) {
  974 + val = _xdsoft_datetime.currentTime[$(this).hasClass('xdsoft_month') ? 'getMonth' : 'getFullYear']();
  975 + }
  976 +
  977 + select[visible ? 'hide' : 'show']();
  978 + for (items = select.find('div.xdsoft_option'), i = 0; i < items.length; i += 1) {
  979 + if (items.eq(i).data('value') === val) {
  980 + break;
  981 + } else {
  982 + top += items[0].offsetHeight;
  983 + }
  984 + }
  985 +
  986 + select.xdsoftScroller(options, top / (select.children()[0].offsetHeight - (select[0].clientHeight)));
  987 + event.stopPropagation();
  988 + return false;
  989 + });
  990 +
  991 + month_picker
  992 + .find('.xdsoft_select')
  993 + .xdsoftScroller(options)
  994 + .on('touchstart mousedown.xdsoft', function (event) {
  995 + event.stopPropagation();
  996 + event.preventDefault();
  997 + })
  998 + .on('touchstart mousedown.xdsoft', '.xdsoft_option', function () {
  999 + if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) {
  1000 + _xdsoft_datetime.currentTime = _xdsoft_datetime.now();
  1001 + }
  1002 +
  1003 + var year = _xdsoft_datetime.currentTime.getFullYear();
  1004 + if (_xdsoft_datetime && _xdsoft_datetime.currentTime) {
  1005 + _xdsoft_datetime.currentTime[$(this).parent().parent().hasClass('xdsoft_monthselect') ? 'setMonth' : 'setFullYear']($(this).data('value'));
  1006 + }
  1007 +
  1008 + $(this).parent().parent().hide();
  1009 +
  1010 + datetimepicker.trigger('xchange.xdsoft');
  1011 + if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
  1012 + options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
  1013 + }
  1014 +
  1015 + if (year !== _xdsoft_datetime.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {
  1016 + options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
  1017 + }
  1018 + });
  1019 +
  1020 + datetimepicker.getValue = function () {
  1021 + return _xdsoft_datetime.getCurrentTime();
  1022 + };
  1023 +
  1024 + datetimepicker.setOptions = function (_options) {
  1025 + var highlightedDates = {};
  1026 +
  1027 + options = $.extend(true, {}, options, _options);
  1028 +
  1029 + if (_options.allowTimes && $.isArray(_options.allowTimes) && _options.allowTimes.length) {
  1030 + options.allowTimes = $.extend(true, [], _options.allowTimes);
  1031 + }
  1032 +
  1033 + if (_options.weekends && $.isArray(_options.weekends) && _options.weekends.length) {
  1034 + options.weekends = $.extend(true, [], _options.weekends);
  1035 + }
  1036 +
  1037 + if (_options.allowDates && $.isArray(_options.allowDates) && _options.allowDates.length) {
  1038 + options.allowDates = $.extend(true, [], _options.allowDates);
  1039 + }
  1040 +
  1041 + if (_options.allowDateRe && Object.prototype.toString.call(_options.allowDateRe)==="[object String]") {
  1042 + options.allowDateRe = new RegExp(_options.allowDateRe);
  1043 + }
  1044 +
  1045 + if (_options.highlightedDates && $.isArray(_options.highlightedDates) && _options.highlightedDates.length) {
  1046 + $.each(_options.highlightedDates, function (index, value) {
  1047 + var splitData = $.map(value.split(','), $.trim),
  1048 + exDesc,
  1049 + hDate = new HighlightedDate(dateHelper.parseDate(splitData[0], options.formatDate), splitData[1], splitData[2]), // date, desc, style
  1050 + keyDate = dateHelper.formatDate(hDate.date, options.formatDate);
  1051 + if (highlightedDates[keyDate] !== undefined) {
  1052 + exDesc = highlightedDates[keyDate].desc;
  1053 + if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) {
  1054 + highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc;
  1055 + }
  1056 + } else {
  1057 + highlightedDates[keyDate] = hDate;
  1058 + }
  1059 + });
  1060 +
  1061 + options.highlightedDates = $.extend(true, [], highlightedDates);
  1062 + }
  1063 +
  1064 + if (_options.highlightedPeriods && $.isArray(_options.highlightedPeriods) && _options.highlightedPeriods.length) {
  1065 + highlightedDates = $.extend(true, [], options.highlightedDates);
  1066 + $.each(_options.highlightedPeriods, function (index, value) {
  1067 + var dateTest, // start date
  1068 + dateEnd,
  1069 + desc,
  1070 + hDate,
  1071 + keyDate,
  1072 + exDesc,
  1073 + style;
  1074 + if ($.isArray(value)) {
  1075 + dateTest = value[0];
  1076 + dateEnd = value[1];
  1077 + desc = value[2];
  1078 + style = value[3];
  1079 + }
  1080 + else {
  1081 + var splitData = $.map(value.split(','), $.trim);
  1082 + dateTest = dateHelper.parseDate(splitData[0], options.formatDate);
  1083 + dateEnd = dateHelper.parseDate(splitData[1], options.formatDate);
  1084 + desc = splitData[2];
  1085 + style = splitData[3];
  1086 + }
  1087 +
  1088 + while (dateTest <= dateEnd) {
  1089 + hDate = new HighlightedDate(dateTest, desc, style);
  1090 + keyDate = dateHelper.formatDate(dateTest, options.formatDate);
  1091 + dateTest.setDate(dateTest.getDate() + 1);
  1092 + if (highlightedDates[keyDate] !== undefined) {
  1093 + exDesc = highlightedDates[keyDate].desc;
  1094 + if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) {
  1095 + highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc;
  1096 + }
  1097 + } else {
  1098 + highlightedDates[keyDate] = hDate;
  1099 + }
  1100 + }
  1101 + });
  1102 +
  1103 + options.highlightedDates = $.extend(true, [], highlightedDates);
  1104 + }
  1105 +
  1106 + if (_options.disabledDates && $.isArray(_options.disabledDates) && _options.disabledDates.length) {
  1107 + options.disabledDates = $.extend(true, [], _options.disabledDates);
  1108 + }
  1109 +
  1110 + if (_options.disabledWeekDays && $.isArray(_options.disabledWeekDays) && _options.disabledWeekDays.length) {
  1111 + options.disabledWeekDays = $.extend(true, [], _options.disabledWeekDays);
  1112 + }
  1113 +
  1114 + if ((options.open || options.opened) && (!options.inline)) {
  1115 + input.trigger('open.xdsoft');
  1116 + }
  1117 +
  1118 + if (options.inline) {
  1119 + triggerAfterOpen = true;
  1120 + datetimepicker.addClass('xdsoft_inline');
  1121 + input.after(datetimepicker).hide();
  1122 + }
  1123 +
  1124 + if (options.inverseButton) {
  1125 + options.next = 'xdsoft_prev';
  1126 + options.prev = 'xdsoft_next';
  1127 + }
  1128 +
  1129 + if (options.datepicker) {
  1130 + datepicker.addClass('active');
  1131 + } else {
  1132 + datepicker.removeClass('active');
  1133 + }
  1134 +
  1135 + if (options.timepicker) {
  1136 + timepicker.addClass('active');
  1137 + } else {
  1138 + timepicker.removeClass('active');
  1139 + }
  1140 +
  1141 + if (options.value) {
  1142 + _xdsoft_datetime.setCurrentTime(options.value);
  1143 + if (input && input.val) {
  1144 + input.val(_xdsoft_datetime.str);
  1145 + }
  1146 + }
  1147 +
  1148 + if (isNaN(options.dayOfWeekStart)) {
  1149 + options.dayOfWeekStart = 0;
  1150 + } else {
  1151 + options.dayOfWeekStart = parseInt(options.dayOfWeekStart, 10) % 7;
  1152 + }
  1153 +
  1154 + if (!options.timepickerScrollbar) {
  1155 + timeboxparent.xdsoftScroller(options, 'hide');
  1156 + }
  1157 +
  1158 + if (options.minDate && /^[\+\-](.*)$/.test(options.minDate)) {
  1159 + options.minDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.minDate), options.formatDate);
  1160 + }
  1161 +
  1162 + if (options.maxDate && /^[\+\-](.*)$/.test(options.maxDate)) {
  1163 + options.maxDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.maxDate), options.formatDate);
  1164 + }
  1165 +
  1166 + applyButton.toggle(options.showApplyButton);
  1167 +
  1168 + month_picker
  1169 + .find('.xdsoft_today_button')
  1170 + .css('visibility', !options.todayButton ? 'hidden' : 'visible');
  1171 +
  1172 + month_picker
  1173 + .find('.' + options.prev)
  1174 + .css('visibility', !options.prevButton ? 'hidden' : 'visible');
  1175 +
  1176 + month_picker
  1177 + .find('.' + options.next)
  1178 + .css('visibility', !options.nextButton ? 'hidden' : 'visible');
  1179 +
  1180 + setMask(options);
  1181 +
  1182 + if (options.validateOnBlur) {
  1183 + input
  1184 + .off('blur.xdsoft')
  1185 + .on('blur.xdsoft', function () {
  1186 + if (options.allowBlank && (!$.trim($(this).val()).length || (typeof options.mask == "string" && $.trim($(this).val()) === options.mask.replace(/[0-9]/g, '_')))) {
  1187 + $(this).val(null);
  1188 + datetimepicker.data('xdsoft_datetime').empty();
  1189 + } else {
  1190 + var d = dateHelper.parseDate($(this).val(), options.format);
  1191 + if (d) { // parseDate() may skip some invalid parts like date or time, so make it clear for user: show parsed date/time
  1192 + $(this).val(dateHelper.formatDate(d, options.format));
  1193 + } else {
  1194 + var splittedHours = +([$(this).val()[0], $(this).val()[1]].join('')),
  1195 + splittedMinutes = +([$(this).val()[2], $(this).val()[3]].join(''));
  1196 +
  1197 + // parse the numbers as 0312 => 03:12
  1198 + if (!options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60) {
  1199 + $(this).val([splittedHours, splittedMinutes].map(function (item) {
  1200 + return item > 9 ? item : '0' + item;
  1201 + }).join(':'));
  1202 + } else {
  1203 + $(this).val(dateHelper.formatDate(_xdsoft_datetime.now(), options.format));
  1204 + }
  1205 + }
  1206 + datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());
  1207 + }
  1208 +
  1209 + datetimepicker.trigger('changedatetime.xdsoft');
  1210 + datetimepicker.trigger('close.xdsoft');
  1211 + });
  1212 + }
  1213 + options.dayOfWeekStartPrev = (options.dayOfWeekStart === 0) ? 6 : options.dayOfWeekStart - 1;
  1214 +
  1215 + datetimepicker
  1216 + .trigger('xchange.xdsoft')
  1217 + .trigger('afterOpen.xdsoft');
  1218 + };
  1219 +
  1220 + datetimepicker
  1221 + .data('options', options)
  1222 + .on('touchstart mousedown.xdsoft', function (event) {
  1223 + event.stopPropagation();
  1224 + event.preventDefault();
  1225 + yearselect.hide();
  1226 + monthselect.hide();
  1227 + return false;
  1228 + });
  1229 +
  1230 + //scroll_element = timepicker.find('.xdsoft_time_box');
  1231 + timeboxparent.append(timebox);
  1232 + timeboxparent.xdsoftScroller(options);
  1233 +
  1234 + datetimepicker.on('afterOpen.xdsoft', function () {
  1235 + timeboxparent.xdsoftScroller(options);
  1236 + });
  1237 +
  1238 + datetimepicker
  1239 + .append(datepicker)
  1240 + .append(timepicker);
  1241 +
  1242 + if (options.withoutCopyright !== true) {
  1243 + datetimepicker
  1244 + .append(xdsoft_copyright);
  1245 + }
  1246 +
  1247 + datepicker
  1248 + .append(month_picker)
  1249 + .append(calendar)
  1250 + .append(applyButton);
  1251 +
  1252 + $(options.parentID)
  1253 + .append(datetimepicker);
  1254 +
  1255 + XDSoft_datetime = function () {
  1256 + var _this = this;
  1257 + _this.now = function (norecursion) {
  1258 + var d = new Date(),
  1259 + date,
  1260 + time;
  1261 +
  1262 + if (!norecursion && options.defaultDate) {
  1263 + date = _this.strToDateTime(options.defaultDate);
  1264 + d.setFullYear(date.getFullYear());
  1265 + d.setMonth(date.getMonth());
  1266 + d.setDate(date.getDate());
  1267 + }
  1268 +
  1269 + if (options.yearOffset) {
  1270 + d.setFullYear(d.getFullYear() + options.yearOffset);
  1271 + }
  1272 +
  1273 + if (!norecursion && options.defaultTime) {
  1274 + time = _this.strtotime(options.defaultTime);
  1275 + d.setHours(time.getHours());
  1276 + d.setMinutes(time.getMinutes());
  1277 + }
  1278 + return d;
  1279 + };
  1280 +
  1281 + _this.isValidDate = function (d) {
  1282 + if (Object.prototype.toString.call(d) !== "[object Date]") {
  1283 + return false;
  1284 + }
  1285 + return !isNaN(d.getTime());
  1286 + };
  1287 +
  1288 + _this.setCurrentTime = function (dTime, requireValidDate) {
  1289 + if (typeof dTime === 'string') {
  1290 + _this.currentTime = _this.strToDateTime(dTime);
  1291 + }
  1292 + else if (_this.isValidDate(dTime)) {
  1293 + _this.currentTime = dTime;
  1294 + }
  1295 + else if (!dTime && !requireValidDate && options.allowBlank) {
  1296 + _this.currentTime = null;
  1297 + }
  1298 + else {
  1299 + _this.currentTime = _this.now();
  1300 + }
  1301 +
  1302 + datetimepicker.trigger('xchange.xdsoft');
  1303 + };
  1304 +
  1305 + _this.empty = function () {
  1306 + _this.currentTime = null;
  1307 + };
  1308 +
  1309 + _this.getCurrentTime = function (dTime) {
  1310 + return _this.currentTime;
  1311 + };
  1312 +
  1313 + _this.nextMonth = function () {
  1314 +
  1315 + if (_this.currentTime === undefined || _this.currentTime === null) {
  1316 + _this.currentTime = _this.now();
  1317 + }
  1318 +
  1319 + var month = _this.currentTime.getMonth() + 1,
  1320 + year;
  1321 + if (month === 12) {
  1322 + _this.currentTime.setFullYear(_this.currentTime.getFullYear() + 1);
  1323 + month = 0;
  1324 + }
  1325 +
  1326 + year = _this.currentTime.getFullYear();
  1327 +
  1328 + _this.currentTime.setDate(
  1329 + Math.min(
  1330 + new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),
  1331 + _this.currentTime.getDate()
  1332 + )
  1333 + );
  1334 + _this.currentTime.setMonth(month);
  1335 +
  1336 + if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
  1337 + options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
  1338 + }
  1339 +
  1340 + if (year !== _this.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {
  1341 + options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
  1342 + }
  1343 +
  1344 + datetimepicker.trigger('xchange.xdsoft');
  1345 + return month;
  1346 + };
  1347 +
  1348 + _this.prevMonth = function () {
  1349 +
  1350 + if (_this.currentTime === undefined || _this.currentTime === null) {
  1351 + _this.currentTime = _this.now();
  1352 + }
  1353 +
  1354 + var month = _this.currentTime.getMonth() - 1;
  1355 + if (month === -1) {
  1356 + _this.currentTime.setFullYear(_this.currentTime.getFullYear() - 1);
  1357 + month = 11;
  1358 + }
  1359 + _this.currentTime.setDate(
  1360 + Math.min(
  1361 + new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),
  1362 + _this.currentTime.getDate()
  1363 + )
  1364 + );
  1365 + _this.currentTime.setMonth(month);
  1366 + if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
  1367 + options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
  1368 + }
  1369 + datetimepicker.trigger('xchange.xdsoft');
  1370 + return month;
  1371 + };
  1372 +
  1373 + _this.getWeekOfYear = function (datetime) {
  1374 + if (options.onGetWeekOfYear && $.isFunction(options.onGetWeekOfYear)) {
  1375 + var week = options.onGetWeekOfYear.call(datetimepicker, datetime);
  1376 + if (typeof week !== 'undefined') {
  1377 + return week;
  1378 + }
  1379 + }
  1380 + var onejan = new Date(datetime.getFullYear(), 0, 1);
  1381 + //First week of the year is th one with the first Thursday according to ISO8601
  1382 + if(onejan.getDay()!=4)
  1383 + onejan.setMonth(0, 1 + ((4 - onejan.getDay()+ 7) % 7));
  1384 + return Math.ceil((((datetime - onejan) / 86400000) + onejan.getDay() + 1) / 7);
  1385 + };
  1386 +
  1387 + _this.strToDateTime = function (sDateTime) {
  1388 + var tmpDate = [], timeOffset, currentTime;
  1389 +
  1390 + if (sDateTime && sDateTime instanceof Date && _this.isValidDate(sDateTime)) {
  1391 + return sDateTime;
  1392 + }
  1393 +
  1394 + tmpDate = /^(\+|\-)(.*)$/.exec(sDateTime);
  1395 + if (tmpDate) {
  1396 + tmpDate[2] = dateHelper.parseDate(tmpDate[2], options.formatDate);
  1397 + }
  1398 + if (tmpDate && tmpDate[2]) {
  1399 + timeOffset = tmpDate[2].getTime() - (tmpDate[2].getTimezoneOffset()) * 60000;
  1400 + currentTime = new Date((_this.now(true)).getTime() + parseInt(tmpDate[1] + '1', 10) * timeOffset);
  1401 + } else {
  1402 + currentTime = sDateTime ? dateHelper.parseDate(sDateTime, options.format) : _this.now();
  1403 + }
  1404 +
  1405 + if (!_this.isValidDate(currentTime)) {
  1406 + currentTime = _this.now();
  1407 + }
  1408 +
  1409 + return currentTime;
  1410 + };
  1411 +
  1412 + _this.strToDate = function (sDate) {
  1413 + if (sDate && sDate instanceof Date && _this.isValidDate(sDate)) {
  1414 + return sDate;
  1415 + }
  1416 +
  1417 + var currentTime = sDate ? dateHelper.parseDate(sDate, options.formatDate) : _this.now(true);
  1418 + if (!_this.isValidDate(currentTime)) {
  1419 + currentTime = _this.now(true);
  1420 + }
  1421 + return currentTime;
  1422 + };
  1423 +
  1424 + _this.strtotime = function (sTime) {
  1425 + if (sTime && sTime instanceof Date && _this.isValidDate(sTime)) {
  1426 + return sTime;
  1427 + }
  1428 + var currentTime = sTime ? dateHelper.parseDate(sTime, options.formatTime) : _this.now(true);
  1429 + if (!_this.isValidDate(currentTime)) {
  1430 + currentTime = _this.now(true);
  1431 + }
  1432 + return currentTime;
  1433 + };
  1434 +
  1435 + _this.str = function () {
  1436 + return dateHelper.formatDate(_this.currentTime, options.format);
  1437 + };
  1438 + _this.currentTime = this.now();
  1439 + };
  1440 +
  1441 + _xdsoft_datetime = new XDSoft_datetime();
  1442 +
  1443 + applyButton.on('touchend click', function (e) {//pathbrite
  1444 + e.preventDefault();
  1445 + datetimepicker.data('changed', true);
  1446 + _xdsoft_datetime.setCurrentTime(getCurrentValue());
  1447 + input.val(_xdsoft_datetime.str());
  1448 + datetimepicker.trigger('close.xdsoft');
  1449 + });
  1450 + month_picker
  1451 + .find('.xdsoft_today_button')
  1452 + .on('touchend mousedown.xdsoft', function () {
  1453 + datetimepicker.data('changed', true);
  1454 + _xdsoft_datetime.setCurrentTime(0, true);
  1455 + datetimepicker.trigger('afterOpen.xdsoft');
  1456 + }).on('dblclick.xdsoft', function () {
  1457 + var currentDate = _xdsoft_datetime.getCurrentTime(), minDate, maxDate;
  1458 + currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());
  1459 + minDate = _xdsoft_datetime.strToDate(options.minDate);
  1460 + minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());
  1461 + if (currentDate < minDate) {
  1462 + return;
  1463 + }
  1464 + maxDate = _xdsoft_datetime.strToDate(options.maxDate);
  1465 + maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate());
  1466 + if (currentDate > maxDate) {
  1467 + return;
  1468 + }
  1469 + input.val(_xdsoft_datetime.str());
  1470 + input.trigger('change');
  1471 + datetimepicker.trigger('close.xdsoft');
  1472 + });
  1473 + month_picker
  1474 + .find('.xdsoft_prev,.xdsoft_next')
  1475 + .on('touchend mousedown.xdsoft', function () {
  1476 + var $this = $(this),
  1477 + timer = 0,
  1478 + stop = false;
  1479 +
  1480 + (function arguments_callee1(v) {
  1481 + if ($this.hasClass(options.next)) {
  1482 + _xdsoft_datetime.nextMonth();
  1483 + } else if ($this.hasClass(options.prev)) {
  1484 + _xdsoft_datetime.prevMonth();
  1485 + }
  1486 + if (options.monthChangeSpinner) {
  1487 + if (!stop) {
  1488 + timer = setTimeout(arguments_callee1, v || 100);
  1489 + }
  1490 + }
  1491 + }(500));
  1492 +
  1493 + $([options.ownerDocument.body, options.contentWindow]).on('touchend mouseup.xdsoft', function arguments_callee2() {
  1494 + clearTimeout(timer);
  1495 + stop = true;
  1496 + $([options.ownerDocument.body, options.contentWindow]).off('touchend mouseup.xdsoft', arguments_callee2);
  1497 + });
  1498 + });
  1499 +
  1500 + timepicker
  1501 + .find('.xdsoft_prev,.xdsoft_next')
  1502 + .on('touchend mousedown.xdsoft', function () {
  1503 + var $this = $(this),
  1504 + timer = 0,
  1505 + stop = false,
  1506 + period = 110;
  1507 + (function arguments_callee4(v) {
  1508 + var pheight = timeboxparent[0].clientHeight,
  1509 + height = timebox[0].offsetHeight,
  1510 + top = Math.abs(parseInt(timebox.css('marginTop'), 10));
  1511 + if ($this.hasClass(options.next) && (height - pheight) - options.timeHeightInTimePicker >= top) {
  1512 + timebox.css('marginTop', '-' + (top + options.timeHeightInTimePicker) + 'px');
  1513 + } else if ($this.hasClass(options.prev) && top - options.timeHeightInTimePicker >= 0) {
  1514 + timebox.css('marginTop', '-' + (top - options.timeHeightInTimePicker) + 'px');
  1515 + }
  1516 + /**
  1517 + * Fixed bug:
  1518 + * When using css3 transition, it will cause a bug that you cannot scroll the timepicker list.
  1519 + * The reason is that the transition-duration time, if you set it to 0, all things fine, otherwise, this
  1520 + * would cause a bug when you use jquery.css method.
  1521 + * Let's say: * { transition: all .5s ease; }
  1522 + * jquery timebox.css('marginTop') will return the original value which is before you clicking the next/prev button,
  1523 + * meanwhile the timebox[0].style.marginTop will return the right value which is after you clicking the
  1524 + * next/prev button.
  1525 + *
  1526 + * What we should do:
  1527 + * Replace timebox.css('marginTop') with timebox[0].style.marginTop.
  1528 + */
  1529 + timeboxparent.trigger('scroll_element.xdsoft_scroller', [Math.abs(parseInt(timebox[0].style.marginTop, 10) / (height - pheight))]);
  1530 + period = (period > 10) ? 10 : period - 10;
  1531 + if (!stop) {
  1532 + timer = setTimeout(arguments_callee4, v || period);
  1533 + }
  1534 + }(500));
  1535 + $([options.ownerDocument.body, options.contentWindow]).on('touchend mouseup.xdsoft', function arguments_callee5() {
  1536 + clearTimeout(timer);
  1537 + stop = true;
  1538 + $([options.ownerDocument.body, options.contentWindow])
  1539 + .off('touchend mouseup.xdsoft', arguments_callee5);
  1540 + });
  1541 + });
  1542 +
  1543 + xchangeTimer = 0;
  1544 + // base handler - generating a calendar and timepicker
  1545 + datetimepicker
  1546 + .on('xchange.xdsoft', function (event) {
  1547 + clearTimeout(xchangeTimer);
  1548 + xchangeTimer = setTimeout(function () {
  1549 +
  1550 + if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) {
  1551 + //In case blanks are allowed, delay construction until we have a valid date
  1552 + if (options.allowBlank)
  1553 + return;
  1554 +
  1555 + _xdsoft_datetime.currentTime = _xdsoft_datetime.now();
  1556 + }
  1557 +
  1558 + var table = '',
  1559 + start = new Date(_xdsoft_datetime.currentTime.getFullYear(), _xdsoft_datetime.currentTime.getMonth(), 1, 12, 0, 0),
  1560 + i = 0,
  1561 + j,
  1562 + today = _xdsoft_datetime.now(),
  1563 + maxDate = false,
  1564 + minDate = false,
  1565 + hDate,
  1566 + day,
  1567 + d,
  1568 + y,
  1569 + m,
  1570 + w,
  1571 + classes = [],
  1572 + customDateSettings,
  1573 + newRow = true,
  1574 + time = '',
  1575 + h = '',
  1576 + line_time,
  1577 + description;
  1578 +
  1579 + while (start.getDay() !== options.dayOfWeekStart) {
  1580 + start.setDate(start.getDate() - 1);
  1581 + }
  1582 +
  1583 + table += '<table><thead><tr>';
  1584 +
  1585 + if (options.weeks) {
  1586 + table += '<th></th>';
  1587 + }
  1588 +
  1589 + for (j = 0; j < 7; j += 1) {
  1590 + table += '<th>' + options.i18n[globalLocale].dayOfWeekShort[(j + options.dayOfWeekStart) % 7] + '</th>';
  1591 + }
  1592 +
  1593 + table += '</tr></thead>';
  1594 + table += '<tbody>';
  1595 +
  1596 + if (options.maxDate !== false) {
  1597 + maxDate = _xdsoft_datetime.strToDate(options.maxDate);
  1598 + maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59, 59, 999);
  1599 + }
  1600 +
  1601 + if (options.minDate !== false) {
  1602 + minDate = _xdsoft_datetime.strToDate(options.minDate);
  1603 + minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());
  1604 + }
  1605 +
  1606 + while (i < _xdsoft_datetime.currentTime.countDaysInMonth() || start.getDay() !== options.dayOfWeekStart || _xdsoft_datetime.currentTime.getMonth() === start.getMonth()) {
  1607 + classes = [];
  1608 + i += 1;
  1609 +
  1610 + day = start.getDay();
  1611 + d = start.getDate();
  1612 + y = start.getFullYear();
  1613 + m = start.getMonth();
  1614 + w = _xdsoft_datetime.getWeekOfYear(start);
  1615 + description = '';
  1616 +
  1617 + classes.push('xdsoft_date');
  1618 +
  1619 + if (options.beforeShowDay && $.isFunction(options.beforeShowDay.call)) {
  1620 + customDateSettings = options.beforeShowDay.call(datetimepicker, start);
  1621 + } else {
  1622 + customDateSettings = null;
  1623 + }
  1624 +
  1625 + if(options.allowDateRe && Object.prototype.toString.call(options.allowDateRe) === "[object RegExp]"){
  1626 + if(!options.allowDateRe.test(dateHelper.formatDate(start, options.formatDate))){
  1627 + classes.push('xdsoft_disabled');
  1628 + }
  1629 + } else if(options.allowDates && options.allowDates.length>0){
  1630 + if(options.allowDates.indexOf(dateHelper.formatDate(start, options.formatDate)) === -1){
  1631 + classes.push('xdsoft_disabled');
  1632 + }
  1633 + } else if ((maxDate !== false && start > maxDate) || (minDate !== false && start < minDate) || (customDateSettings && customDateSettings[0] === false)) {
  1634 + classes.push('xdsoft_disabled');
  1635 + } else if (options.disabledDates.indexOf(dateHelper.formatDate(start, options.formatDate)) !== -1) {
  1636 + classes.push('xdsoft_disabled');
  1637 + } else if (options.disabledWeekDays.indexOf(day) !== -1) {
  1638 + classes.push('xdsoft_disabled');
  1639 + }else if (input.is('[readonly]')) {
  1640 + classes.push('xdsoft_disabled');
  1641 + }
  1642 +
  1643 + if (customDateSettings && customDateSettings[1] !== "") {
  1644 + classes.push(customDateSettings[1]);
  1645 + }
  1646 +
  1647 + if (_xdsoft_datetime.currentTime.getMonth() !== m) {
  1648 + classes.push('xdsoft_other_month');
  1649 + }
  1650 +
  1651 + if ((options.defaultSelect || datetimepicker.data('changed')) && dateHelper.formatDate(_xdsoft_datetime.currentTime, options.formatDate) === dateHelper.formatDate(start, options.formatDate)) {
  1652 + classes.push('xdsoft_current');
  1653 + }
  1654 +
  1655 + if (dateHelper.formatDate(today, options.formatDate) === dateHelper.formatDate(start, options.formatDate)) {
  1656 + classes.push('xdsoft_today');
  1657 + }
  1658 +
  1659 + if (start.getDay() === 0 || start.getDay() === 6 || options.weekends.indexOf(dateHelper.formatDate(start, options.formatDate)) !== -1) {
  1660 + classes.push('xdsoft_weekend');
  1661 + }
  1662 +
  1663 + if (options.highlightedDates[dateHelper.formatDate(start, options.formatDate)] !== undefined) {
  1664 + hDate = options.highlightedDates[dateHelper.formatDate(start, options.formatDate)];
  1665 + classes.push(hDate.style === undefined ? 'xdsoft_highlighted_default' : hDate.style);
  1666 + description = hDate.desc === undefined ? '' : hDate.desc;
  1667 + }
  1668 +
  1669 + if (options.beforeShowDay && $.isFunction(options.beforeShowDay)) {
  1670 + classes.push(options.beforeShowDay(start));
  1671 + }
  1672 +
  1673 + if (newRow) {
  1674 + table += '<tr>';
  1675 + newRow = false;
  1676 + if (options.weeks) {
  1677 + table += '<th>' + w + '</th>';
  1678 + }
  1679 + }
  1680 +
  1681 + table += '<td data-date="' + d + '" data-month="' + m + '" data-year="' + y + '"' + ' class="xdsoft_date xdsoft_day_of_week' + start.getDay() + ' ' + classes.join(' ') + '" title="' + description + '">' +
  1682 + '<div>' + d + '</div>' +
  1683 + '</td>';
  1684 +
  1685 + if (start.getDay() === options.dayOfWeekStartPrev) {
  1686 + table += '</tr>';
  1687 + newRow = true;
  1688 + }
  1689 +
  1690 + start.setDate(d + 1);
  1691 + }
  1692 + table += '</tbody></table>';
  1693 +
  1694 + calendar.html(table);
  1695 +
  1696 + month_picker.find('.xdsoft_label span').eq(0).text(options.i18n[globalLocale].months[_xdsoft_datetime.currentTime.getMonth()]);
  1697 + month_picker.find('.xdsoft_label span').eq(1).text(_xdsoft_datetime.currentTime.getFullYear());
  1698 +
  1699 + // generate timebox
  1700 + time = '';
  1701 + h = '';
  1702 + m = '';
  1703 +
  1704 + line_time = function line_time(h, m) {
  1705 + var now = _xdsoft_datetime.now(), optionDateTime, current_time,
  1706 + isALlowTimesInit = options.allowTimes && $.isArray(options.allowTimes) && options.allowTimes.length;
  1707 + now.setHours(h);
  1708 + h = parseInt(now.getHours(), 10);
  1709 + now.setMinutes(m);
  1710 + m = parseInt(now.getMinutes(), 10);
  1711 + optionDateTime = new Date(_xdsoft_datetime.currentTime);
  1712 + optionDateTime.setHours(h);
  1713 + optionDateTime.setMinutes(m);
  1714 + classes = [];
  1715 + if ((options.minDateTime !== false && options.minDateTime > optionDateTime) || (options.maxTime !== false && _xdsoft_datetime.strtotime(options.maxTime).getTime() < now.getTime()) || (options.minTime !== false && _xdsoft_datetime.strtotime(options.minTime).getTime() > now.getTime())) {
  1716 + classes.push('xdsoft_disabled');
  1717 + } else if ((options.minDateTime !== false && options.minDateTime > optionDateTime) || ((options.disabledMinTime !== false && now.getTime() > _xdsoft_datetime.strtotime(options.disabledMinTime).getTime()) && (options.disabledMaxTime !== false && now.getTime() < _xdsoft_datetime.strtotime(options.disabledMaxTime).getTime()))) {
  1718 + classes.push('xdsoft_disabled');
  1719 + } else if (input.is('[readonly]')) {
  1720 + classes.push('xdsoft_disabled');
  1721 + }
  1722 +
  1723 + current_time = new Date(_xdsoft_datetime.currentTime);
  1724 + current_time.setHours(parseInt(_xdsoft_datetime.currentTime.getHours(), 10));
  1725 +
  1726 + if (!isALlowTimesInit) {
  1727 + current_time.setMinutes(Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step);
  1728 + }
  1729 +
  1730 + if ((options.initTime || options.defaultSelect || datetimepicker.data('changed')) && current_time.getHours() === parseInt(h, 10) && ((!isALlowTimesInit && options.step > 59) || current_time.getMinutes() === parseInt(m, 10))) {
  1731 + if (options.defaultSelect || datetimepicker.data('changed')) {
  1732 + classes.push('xdsoft_current');
  1733 + } else if (options.initTime) {
  1734 + classes.push('xdsoft_init_time');
  1735 + }
  1736 + }
  1737 + if (parseInt(today.getHours(), 10) === parseInt(h, 10) && parseInt(today.getMinutes(), 10) === parseInt(m, 10)) {
  1738 + classes.push('xdsoft_today');
  1739 + }
  1740 + time += '<div class="xdsoft_time ' + classes.join(' ') + '" data-hour="' + h + '" data-minute="' + m + '">' + dateHelper.formatDate(now, options.formatTime) + '</div>';
  1741 + };
  1742 +
  1743 + if (!options.allowTimes || !$.isArray(options.allowTimes) || !options.allowTimes.length) {
  1744 + for (i = 0, j = 0; i < (options.hours12 ? 12 : 24); i += 1) {
  1745 + for (j = 0; j < 60; j += options.step) {
  1746 + h = (i < 10 ? '0' : '') + i;
  1747 + m = (j < 10 ? '0' : '') + j;
  1748 + line_time(h, m);
  1749 + }
  1750 + }
  1751 + } else {
  1752 + for (i = 0; i < options.allowTimes.length; i += 1) {
  1753 + h = _xdsoft_datetime.strtotime(options.allowTimes[i]).getHours();
  1754 + m = _xdsoft_datetime.strtotime(options.allowTimes[i]).getMinutes();
  1755 + line_time(h, m);
  1756 + }
  1757 + }
  1758 +
  1759 + timebox.html(time);
  1760 +
  1761 + opt = '';
  1762 + i = 0;
  1763 +
  1764 + for (i = parseInt(options.yearStart, 10) + options.yearOffset; i <= parseInt(options.yearEnd, 10) + options.yearOffset; i += 1) {
  1765 + opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getFullYear() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + i + '</div>';
  1766 + }
  1767 + yearselect.children().eq(0)
  1768 + .html(opt);
  1769 +
  1770 + for (i = parseInt(options.monthStart, 10), opt = ''; i <= parseInt(options.monthEnd, 10); i += 1) {
  1771 + opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getMonth() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + options.i18n[globalLocale].months[i] + '</div>';
  1772 + }
  1773 + monthselect.children().eq(0).html(opt);
  1774 + $(datetimepicker)
  1775 + .trigger('generate.xdsoft');
  1776 + }, 10);
  1777 + event.stopPropagation();
  1778 + })
  1779 + .on('afterOpen.xdsoft', function () {
  1780 + if (options.timepicker) {
  1781 + var classType, pheight, height, top;
  1782 + if (timebox.find('.xdsoft_current').length) {
  1783 + classType = '.xdsoft_current';
  1784 + } else if (timebox.find('.xdsoft_init_time').length) {
  1785 + classType = '.xdsoft_init_time';
  1786 + }
  1787 + if (classType) {
  1788 + pheight = timeboxparent[0].clientHeight;
  1789 + height = timebox[0].offsetHeight;
  1790 + top = timebox.find(classType).index() * options.timeHeightInTimePicker + 1;
  1791 + if ((height - pheight) < top) {
  1792 + top = height - pheight;
  1793 + }
  1794 + timeboxparent.trigger('scroll_element.xdsoft_scroller', [parseInt(top, 10) / (height - pheight)]);
  1795 + } else {
  1796 + timeboxparent.trigger('scroll_element.xdsoft_scroller', [0]);
  1797 + }
  1798 + }
  1799 + });
  1800 +
  1801 + timerclick = 0;
  1802 + calendar
  1803 + .on('touchend click.xdsoft', 'td', function (xdevent) {
  1804 + xdevent.stopPropagation(); // Prevents closing of Pop-ups, Modals and Flyouts in Bootstrap
  1805 + timerclick += 1;
  1806 + var $this = $(this),
  1807 + currentTime = _xdsoft_datetime.currentTime;
  1808 +
  1809 + if (currentTime === undefined || currentTime === null) {
  1810 + _xdsoft_datetime.currentTime = _xdsoft_datetime.now();
  1811 + currentTime = _xdsoft_datetime.currentTime;
  1812 + }
  1813 +
  1814 + if ($this.hasClass('xdsoft_disabled')) {
  1815 + return false;
  1816 + }
  1817 +
  1818 + currentTime.setDate(1);
  1819 + currentTime.setFullYear($this.data('year'));
  1820 + currentTime.setMonth($this.data('month'));
  1821 + currentTime.setDate($this.data('date'));
  1822 +
  1823 + datetimepicker.trigger('select.xdsoft', [currentTime]);
  1824 +
  1825 + input.val(_xdsoft_datetime.str());
  1826 +
  1827 + if (options.onSelectDate && $.isFunction(options.onSelectDate)) {
  1828 + options.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
  1829 + }
  1830 +
  1831 + datetimepicker.data('changed', true);
  1832 + datetimepicker.trigger('xchange.xdsoft');
  1833 + datetimepicker.trigger('changedatetime.xdsoft');
  1834 + if ((timerclick > 1 || (options.closeOnDateSelect === true || (options.closeOnDateSelect === false && !options.timepicker))) && !options.inline) {
  1835 + datetimepicker.trigger('close.xdsoft');
  1836 + }
  1837 + setTimeout(function () {
  1838 + timerclick = 0;
  1839 + }, 200);
  1840 + });
  1841 +
  1842 + timebox
  1843 + .on('touchend click.xdsoft', 'div', function (xdevent) {
  1844 + xdevent.stopPropagation();
  1845 + var $this = $(this),
  1846 + currentTime = _xdsoft_datetime.currentTime;
  1847 +
  1848 + if (currentTime === undefined || currentTime === null) {
  1849 + _xdsoft_datetime.currentTime = _xdsoft_datetime.now();
  1850 + currentTime = _xdsoft_datetime.currentTime;
  1851 + }
  1852 +
  1853 + if ($this.hasClass('xdsoft_disabled')) {
  1854 + return false;
  1855 + }
  1856 + currentTime.setHours($this.data('hour'));
  1857 + currentTime.setMinutes($this.data('minute'));
  1858 + datetimepicker.trigger('select.xdsoft', [currentTime]);
  1859 +
  1860 + datetimepicker.data('input').val(_xdsoft_datetime.str());
  1861 +
  1862 + if (options.onSelectTime && $.isFunction(options.onSelectTime)) {
  1863 + options.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
  1864 + }
  1865 + datetimepicker.data('changed', true);
  1866 + datetimepicker.trigger('xchange.xdsoft');
  1867 + datetimepicker.trigger('changedatetime.xdsoft');
  1868 + if (options.inline !== true && options.closeOnTimeSelect === true) {
  1869 + datetimepicker.trigger('close.xdsoft');
  1870 + }
  1871 + });
  1872 +
  1873 + datepicker
  1874 + .on('mousewheel.xdsoft', function (event) {
  1875 + if (!options.scrollMonth) {
  1876 + return true;
  1877 + }
  1878 + if (event.deltaY < 0) {
  1879 + _xdsoft_datetime.nextMonth();
  1880 + } else {
  1881 + _xdsoft_datetime.prevMonth();
  1882 + }
  1883 + return false;
  1884 + });
  1885 +
  1886 + input
  1887 + .on('mousewheel.xdsoft', function (event) {
  1888 + if (!options.scrollInput) {
  1889 + return true;
  1890 + }
  1891 + if (!options.datepicker && options.timepicker) {
  1892 + current_time_index = timebox.find('.xdsoft_current').length ? timebox.find('.xdsoft_current').eq(0).index() : 0;
  1893 + if (current_time_index + event.deltaY >= 0 && current_time_index + event.deltaY < timebox.children().length) {
  1894 + current_time_index += event.deltaY;
  1895 + }
  1896 + if (timebox.children().eq(current_time_index).length) {
  1897 + timebox.children().eq(current_time_index).trigger('mousedown');
  1898 + }
  1899 + return false;
  1900 + }
  1901 + if (options.datepicker && !options.timepicker) {
  1902 + datepicker.trigger(event, [event.deltaY, event.deltaX, event.deltaY]);
  1903 + if (input.val) {
  1904 + input.val(_xdsoft_datetime.str());
  1905 + }
  1906 + datetimepicker.trigger('changedatetime.xdsoft');
  1907 + return false;
  1908 + }
  1909 + });
  1910 +
  1911 + datetimepicker
  1912 + .on('changedatetime.xdsoft', function (event) {
  1913 + if (options.onChangeDateTime && $.isFunction(options.onChangeDateTime)) {
  1914 + var $input = datetimepicker.data('input');
  1915 + options.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input, event);
  1916 + delete options.value;
  1917 + $input.trigger('change');
  1918 + }
  1919 + })
  1920 + .on('generate.xdsoft', function () {
  1921 + if (options.onGenerate && $.isFunction(options.onGenerate)) {
  1922 + options.onGenerate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
  1923 + }
  1924 + if (triggerAfterOpen) {
  1925 + datetimepicker.trigger('afterOpen.xdsoft');
  1926 + triggerAfterOpen = false;
  1927 + }
  1928 + })
  1929 + .on('click.xdsoft', function (xdevent) {
  1930 + xdevent.stopPropagation();
  1931 + });
  1932 +
  1933 + current_time_index = 0;
  1934 +
  1935 + /**
  1936 + * Runs the callback for each of the specified node's ancestors.
  1937 + *
  1938 + * Return FALSE from the callback to stop ascending.
  1939 + *
  1940 + * @param {DOMNode} node
  1941 + * @param {Function} callback
  1942 + * @returns {undefined}
  1943 + */
  1944 + forEachAncestorOf = function (node, callback) {
  1945 + do {
  1946 + node = node.parentNode;
  1947 +
  1948 + if (callback(node) === false) {
  1949 + break;
  1950 + }
  1951 + } while (node.nodeName !== 'HTML');
  1952 + };
  1953 +
  1954 + /**
  1955 + * Sets the position of the picker.
  1956 + *
  1957 + * @returns {undefined}
  1958 + */
  1959 + setPos = function () {
  1960 + var dateInputOffset,
  1961 + dateInputElem,
  1962 + verticalPosition,
  1963 + left,
  1964 + position,
  1965 + datetimepickerElem,
  1966 + dateInputHasFixedAncestor,
  1967 + $dateInput,
  1968 + windowWidth,
  1969 + verticalAnchorEdge,
  1970 + datetimepickerCss,
  1971 + windowHeight,
  1972 + windowScrollTop;
  1973 +
  1974 + $dateInput = datetimepicker.data('input');
  1975 + dateInputOffset = $dateInput.offset();
  1976 + dateInputElem = $dateInput[0];
  1977 +
  1978 + verticalAnchorEdge = 'top';
  1979 + verticalPosition = (dateInputOffset.top + dateInputElem.offsetHeight) - 1;
  1980 + left = dateInputOffset.left;
  1981 + position = "absolute";
  1982 +
  1983 + windowWidth = $(options.contentWindow).width();
  1984 + windowHeight = $(options.contentWindow).height();
  1985 + windowScrollTop = $(options.contentWindow).scrollTop();
  1986 +
  1987 + if ((options.ownerDocument.documentElement.clientWidth - dateInputOffset.left) < datepicker.parent().outerWidth(true)) {
  1988 + var diff = datepicker.parent().outerWidth(true) - dateInputElem.offsetWidth;
  1989 + left = left - diff;
  1990 + }
  1991 +
  1992 + if ($dateInput.parent().css('direction') === 'rtl') {
  1993 + left -= (datetimepicker.outerWidth() - $dateInput.outerWidth());
  1994 + }
  1995 +
  1996 + if (options.fixed) {
  1997 + verticalPosition -= windowScrollTop;
  1998 + left -= $(options.contentWindow).scrollLeft();
  1999 + position = "fixed";
  2000 + } else {
  2001 + dateInputHasFixedAncestor = false;
  2002 +
  2003 + forEachAncestorOf(dateInputElem, function (ancestorNode) {
  2004 + if (options.contentWindow.getComputedStyle(ancestorNode).getPropertyValue('position') === 'fixed') {
  2005 + dateInputHasFixedAncestor = true;
  2006 + return false;
  2007 + }
  2008 + });
  2009 +
  2010 + if (dateInputHasFixedAncestor) {
  2011 + position = 'fixed';
  2012 +
  2013 + //If the picker won't fit entirely within the viewport then display it above the date input.
  2014 + if (verticalPosition + datetimepicker.outerHeight() > windowHeight + windowScrollTop) {
  2015 + verticalAnchorEdge = 'bottom';
  2016 + verticalPosition = (windowHeight + windowScrollTop) - dateInputOffset.top;
  2017 + } else {
  2018 + verticalPosition -= windowScrollTop;
  2019 + }
  2020 + } else {
  2021 + if (verticalPosition + dateInputElem.offsetHeight > windowHeight + windowScrollTop) {
  2022 + verticalPosition = dateInputOffset.top - dateInputElem.offsetHeight + 1;
  2023 + }
  2024 + }
  2025 +
  2026 + if (verticalPosition < 0) {
  2027 + verticalPosition = 0;
  2028 + }
  2029 +
  2030 + if (left + dateInputElem.offsetWidth > windowWidth) {
  2031 + left = windowWidth - dateInputElem.offsetWidth;
  2032 + }
  2033 + }
  2034 +
  2035 + datetimepickerElem = datetimepicker[0];
  2036 +
  2037 + forEachAncestorOf(datetimepickerElem, function (ancestorNode) {
  2038 + var ancestorNodePosition;
  2039 +
  2040 + ancestorNodePosition = options.contentWindow.getComputedStyle(ancestorNode).getPropertyValue('position');
  2041 +
  2042 + if (ancestorNodePosition === 'relative' && windowWidth >= ancestorNode.offsetWidth) {
  2043 + left = left - ((windowWidth - ancestorNode.offsetWidth) / 2);
  2044 + return false;
  2045 + }
  2046 + });
  2047 +
  2048 + datetimepickerCss = {
  2049 + position: position,
  2050 + left: left,
  2051 + top: '', //Initialize to prevent previous values interfering with new ones.
  2052 + bottom: '' //Initialize to prevent previous values interfering with new ones.
  2053 + };
  2054 +
  2055 + datetimepickerCss[verticalAnchorEdge] = verticalPosition;
  2056 +
  2057 + datetimepicker.css(datetimepickerCss);
  2058 + };
  2059 +
  2060 + datetimepicker
  2061 + .on('open.xdsoft', function (event) {
  2062 + var onShow = true;
  2063 + if (options.onShow && $.isFunction(options.onShow)) {
  2064 + onShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);
  2065 + }
  2066 + if (onShow !== false) {
  2067 + datetimepicker.show();
  2068 + setPos();
  2069 + $(options.contentWindow)
  2070 + .off('resize.xdsoft', setPos)
  2071 + .on('resize.xdsoft', setPos);
  2072 +
  2073 + if (options.closeOnWithoutClick) {
  2074 + $([options.ownerDocument.body, options.contentWindow]).on('touchstart mousedown.xdsoft', function arguments_callee6() {
  2075 + datetimepicker.trigger('close.xdsoft');
  2076 + $([options.ownerDocument.body, options.contentWindow]).off('touchstart mousedown.xdsoft', arguments_callee6);
  2077 + });
  2078 + }
  2079 + }
  2080 + })
  2081 + .on('close.xdsoft', function (event) {
  2082 + var onClose = true;
  2083 + month_picker
  2084 + .find('.xdsoft_month,.xdsoft_year')
  2085 + .find('.xdsoft_select')
  2086 + .hide();
  2087 + if (options.onClose && $.isFunction(options.onClose)) {
  2088 + onClose = options.onClose.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);
  2089 + }
  2090 + if (onClose !== false && !options.opened && !options.inline) {
  2091 + datetimepicker.hide();
  2092 + }
  2093 + event.stopPropagation();
  2094 + })
  2095 + .on('toggle.xdsoft', function () {
  2096 + if (datetimepicker.is(':visible')) {
  2097 + datetimepicker.trigger('close.xdsoft');
  2098 + } else {
  2099 + datetimepicker.trigger('open.xdsoft');
  2100 + }
  2101 + })
  2102 + .data('input', input);
  2103 +
  2104 + timer = 0;
  2105 +
  2106 + datetimepicker.data('xdsoft_datetime', _xdsoft_datetime);
  2107 + datetimepicker.setOptions(options);
  2108 +
  2109 + function getCurrentValue() {
  2110 + var ct = false, time;
  2111 +
  2112 + if (options.startDate) {
  2113 + ct = _xdsoft_datetime.strToDate(options.startDate);
  2114 + } else {
  2115 + ct = options.value || ((input && input.val && input.val()) ? input.val() : '');
  2116 + if (ct) {
  2117 + ct = _xdsoft_datetime.strToDateTime(ct);
  2118 + } else if (options.defaultDate) {
  2119 + ct = _xdsoft_datetime.strToDateTime(options.defaultDate);
  2120 + if (options.defaultTime) {
  2121 + time = _xdsoft_datetime.strtotime(options.defaultTime);
  2122 + ct.setHours(time.getHours());
  2123 + ct.setMinutes(time.getMinutes());
  2124 + }
  2125 + }
  2126 + }
  2127 +
  2128 + if (ct && _xdsoft_datetime.isValidDate(ct)) {
  2129 + datetimepicker.data('changed', true);
  2130 + } else {
  2131 + ct = '';
  2132 + }
  2133 +
  2134 + return ct || 0;
  2135 + }
  2136 +
  2137 + function setMask(options) {
  2138 +
  2139 + var isValidValue = function (mask, value) {
  2140 + var reg = mask
  2141 + .replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g, '\\$1')
  2142 + .replace(/_/g, '{digit+}')
  2143 + .replace(/([0-9]{1})/g, '{digit$1}')
  2144 + .replace(/\{digit([0-9]{1})\}/g, '[0-$1_]{1}')
  2145 + .replace(/\{digit[\+]\}/g, '[0-9_]{1}');
  2146 + return (new RegExp(reg)).test(value);
  2147 + },
  2148 + getCaretPos = function (input) {
  2149 + try {
  2150 + if (options.ownerDocument.selection && options.ownerDocument.selection.createRange) {
  2151 + var range = options.ownerDocument.selection.createRange();
  2152 + return range.getBookmark().charCodeAt(2) - 2;
  2153 + }
  2154 + if (input.setSelectionRange) {
  2155 + return input.selectionStart;
  2156 + }
  2157 + } catch (e) {
  2158 + return 0;
  2159 + }
  2160 + },
  2161 + setCaretPos = function (node, pos) {
  2162 + node = (typeof node === "string" || node instanceof String) ? options.ownerDocument.getElementById(node) : node;
  2163 + if (!node) {
  2164 + return false;
  2165 + }
  2166 + if (node.createTextRange) {
  2167 + var textRange = node.createTextRange();
  2168 + textRange.collapse(true);
  2169 + textRange.moveEnd('character', pos);
  2170 + textRange.moveStart('character', pos);
  2171 + textRange.select();
  2172 + return true;
  2173 + }
  2174 + if (node.setSelectionRange) {
  2175 + node.setSelectionRange(pos, pos);
  2176 + return true;
  2177 + }
  2178 + return false;
  2179 + };
  2180 + if(options.mask) {
  2181 + input.off('keydown.xdsoft');
  2182 + }
  2183 + if (options.mask === true) {
  2184 + if (typeof moment != 'undefined') {
  2185 + options.mask = options.format
  2186 + .replace(/Y{4}/g, '9999')
  2187 + .replace(/Y{2}/g, '99')
  2188 + .replace(/M{2}/g, '19')
  2189 + .replace(/D{2}/g, '39')
  2190 + .replace(/H{2}/g, '29')
  2191 + .replace(/m{2}/g, '59')
  2192 + .replace(/s{2}/g, '59');
  2193 + } else {
  2194 + options.mask = options.format
  2195 + .replace(/Y/g, '9999')
  2196 + .replace(/F/g, '9999')
  2197 + .replace(/m/g, '19')
  2198 + .replace(/d/g, '39')
  2199 + .replace(/H/g, '29')
  2200 + .replace(/i/g, '59')
  2201 + .replace(/s/g, '59');
  2202 + }
  2203 + }
  2204 +
  2205 + if ($.type(options.mask) === 'string') {
  2206 + if (!isValidValue(options.mask, input.val())) {
  2207 + input.val(options.mask.replace(/[0-9]/g, '_'));
  2208 + setCaretPos(input[0], 0);
  2209 + }
  2210 +
  2211 + input.on('keydown.xdsoft', function (event) {
  2212 + var val = this.value,
  2213 + key = event.which,
  2214 + pos,
  2215 + digit;
  2216 +
  2217 + if (((key >= KEY0 && key <= KEY9) || (key >= _KEY0 && key <= _KEY9)) || (key === BACKSPACE || key === DEL)) {
  2218 + pos = getCaretPos(this);
  2219 + digit = (key !== BACKSPACE && key !== DEL) ? String.fromCharCode((_KEY0 <= key && key <= _KEY9) ? key - KEY0 : key) : '_';
  2220 +
  2221 + if ((key === BACKSPACE || key === DEL) && pos) {
  2222 + pos -= 1;
  2223 + digit = '_';
  2224 + }
  2225 +
  2226 + while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {
  2227 + pos += (key === BACKSPACE || key === DEL) ? -1 : 1;
  2228 + }
  2229 +
  2230 + val = val.substr(0, pos) + digit + val.substr(pos + 1);
  2231 + if ($.trim(val) === '') {
  2232 + val = options.mask.replace(/[0-9]/g, '_');
  2233 + } else {
  2234 + if (pos === options.mask.length) {
  2235 + event.preventDefault();
  2236 + return false;
  2237 + }
  2238 + }
  2239 +
  2240 + pos += (key === BACKSPACE || key === DEL) ? 0 : 1;
  2241 + while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {
  2242 + pos += (key === BACKSPACE || key === DEL) ? -1 : 1;
  2243 + }
  2244 +
  2245 + if (isValidValue(options.mask, val)) {
  2246 + this.value = val;
  2247 + setCaretPos(this, pos);
  2248 + } else if ($.trim(val) === '') {
  2249 + this.value = options.mask.replace(/[0-9]/g, '_');
  2250 + } else {
  2251 + input.trigger('error_input.xdsoft');
  2252 + }
  2253 + } else {
  2254 + if (([AKEY, CKEY, VKEY, ZKEY, YKEY].indexOf(key) !== -1 && ctrlDown) || [ESC, ARROWUP, ARROWDOWN, ARROWLEFT, ARROWRIGHT, F5, CTRLKEY, TAB, ENTER].indexOf(key) !== -1) {
  2255 + return true;
  2256 + }
  2257 + }
  2258 +
  2259 + event.preventDefault();
  2260 + return false;
  2261 + });
  2262 + }
  2263 + }
  2264 +
  2265 + _xdsoft_datetime.setCurrentTime(getCurrentValue());
  2266 +
  2267 + input
  2268 + .data('xdsoft_datetimepicker', datetimepicker)
  2269 + .on('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', function () {
  2270 + if (input.is(':disabled') || (input.data('xdsoft_datetimepicker').is(':visible') && options.closeOnInputClick)) {
  2271 + return;
  2272 + }
  2273 + clearTimeout(timer);
  2274 + timer = setTimeout(function () {
  2275 + if (input.is(':disabled')) {
  2276 + return;
  2277 + }
  2278 +
  2279 + triggerAfterOpen = true;
  2280 + _xdsoft_datetime.setCurrentTime(getCurrentValue(), true);
  2281 + if(options.mask) {
  2282 + setMask(options);
  2283 + }
  2284 + datetimepicker.trigger('open.xdsoft');
  2285 + }, 100);
  2286 + })
  2287 + .on('keydown.xdsoft', function (event) {
  2288 + var elementSelector,
  2289 + key = event.which;
  2290 + if ([ENTER].indexOf(key) !== -1 && options.enterLikeTab) {
  2291 + elementSelector = $("input:visible,textarea:visible,button:visible,a:visible");
  2292 + datetimepicker.trigger('close.xdsoft');
  2293 + elementSelector.eq(elementSelector.index(this) + 1).focus();
  2294 + return false;
  2295 + }
  2296 + if ([TAB].indexOf(key) !== -1) {
  2297 + datetimepicker.trigger('close.xdsoft');
  2298 + return true;
  2299 + }
  2300 + })
  2301 + .on('blur.xdsoft', function () {
  2302 + datetimepicker.trigger('close.xdsoft');
  2303 + });
  2304 + };
  2305 + destroyDateTimePicker = function (input) {
  2306 + var datetimepicker = input.data('xdsoft_datetimepicker');
  2307 + if (datetimepicker) {
  2308 + datetimepicker.data('xdsoft_datetime', null);
  2309 + datetimepicker.remove();
  2310 + input
  2311 + .data('xdsoft_datetimepicker', null)
  2312 + .off('.xdsoft');
  2313 + $(options.contentWindow).off('resize.xdsoft');
  2314 + $([options.contentWindow, options.ownerDocument.body]).off('mousedown.xdsoft touchstart');
  2315 + if (input.unmousewheel) {
  2316 + input.unmousewheel();
  2317 + }
  2318 + }
  2319 + };
  2320 + $(options.ownerDocument)
  2321 + .off('keydown.xdsoftctrl keyup.xdsoftctrl')
  2322 + .on('keydown.xdsoftctrl', function (e) {
  2323 + if (e.keyCode === CTRLKEY) {
  2324 + ctrlDown = true;
  2325 + }
  2326 + })
  2327 + .on('keyup.xdsoftctrl', function (e) {
  2328 + if (e.keyCode === CTRLKEY) {
  2329 + ctrlDown = false;
  2330 + }
  2331 + });
  2332 +
  2333 + this.each(function () {
  2334 + var datetimepicker = $(this).data('xdsoft_datetimepicker'), $input;
  2335 + if (datetimepicker) {
  2336 + if ($.type(opt) === 'string') {
  2337 + switch (opt) {
  2338 + case 'show':
  2339 + $(this).select().focus();
  2340 + datetimepicker.trigger('open.xdsoft');
  2341 + break;
  2342 + case 'hide':
  2343 + datetimepicker.trigger('close.xdsoft');
  2344 + break;
  2345 + case 'toggle':
  2346 + datetimepicker.trigger('toggle.xdsoft');
  2347 + break;
  2348 + case 'destroy':
  2349 + destroyDateTimePicker($(this));
  2350 + break;
  2351 + case 'reset':
  2352 + this.value = this.defaultValue;
  2353 + if (!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(dateHelper.parseDate(this.value, options.format))) {
  2354 + datetimepicker.data('changed', false);
  2355 + }
  2356 + datetimepicker.data('xdsoft_datetime').setCurrentTime(this.value);
  2357 + break;
  2358 + case 'validate':
  2359 + $input = datetimepicker.data('input');
  2360 + $input.trigger('blur.xdsoft');
  2361 + break;
  2362 + default:
  2363 + if (datetimepicker[opt] && $.isFunction(datetimepicker[opt])) {
  2364 + result = datetimepicker[opt](opt2);
  2365 + }
  2366 + }
  2367 + } else {
  2368 + datetimepicker
  2369 + .setOptions(opt);
  2370 + }
  2371 + return 0;
  2372 + }
  2373 + if ($.type(opt) !== 'string') {
  2374 + if (!options.lazyInit || options.open || options.inline) {
  2375 + createDateTimePicker($(this));
  2376 + } else {
  2377 + lazyInit($(this));
  2378 + }
  2379 + }
  2380 + });
  2381 +
  2382 + return result;
  2383 + };
  2384 +
  2385 + $.fn.datetimepicker.defaults = default_options;
  2386 +
  2387 + function HighlightedDate(date, desc, style) {
  2388 + "use strict";
  2389 + this.date = date;
  2390 + this.desc = desc;
  2391 + this.style = style;
  2392 + }
  2393 +}));
... ...
www-backend/js/datetimepicker-master/jquery.datetimepicker.min.js 0 → 100644
  1 +!function(e){"function"==typeof define&&define.amd?define(["jquery","jquery-mousewheel","date-functions"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){"use strict";function i(e,t,a){this.date=e,this.desc=t,this.style=a}var t={i18n:{ar:{months:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],dayOfWeekShort:["ن","ث","ع","خ","ج","س","ح"],dayOfWeek:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"]},ro:{months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],dayOfWeekShort:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],dayOfWeek:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"]},id:{months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],dayOfWeekShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],dayOfWeek:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},is:{months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],dayOfWeekShort:["Sun","Mán","Þrið","Mið","Fim","Fös","Lau"],dayOfWeek:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"]},bg:{months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],dayOfWeekShort:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"]},fa:{months:["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"],dayOfWeekShort:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayOfWeek:["یک‌شنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه","شنبه","یک‌شنبه"]},ru:{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],dayOfWeekShort:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"]},uk:{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],dayOfWeekShort:["Ндл","Пнд","Втр","Срд","Чтв","Птн","Сбт"],dayOfWeek:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"]},en:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},el:{months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],dayOfWeekShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayOfWeek:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"]},de:{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],dayOfWeekShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayOfWeek:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},nl:{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],dayOfWeekShort:["zo","ma","di","wo","do","vr","za"],dayOfWeek:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},tr:{months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],dayOfWeekShort:["Paz","Pts","Sal","Çar","Per","Cum","Cts"],dayOfWeek:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},fr:{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],dayOfWeekShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],dayOfWeek:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},es:{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],dayOfWeekShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],dayOfWeek:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"]},th:{months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],dayOfWeekShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayOfWeek:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"]},pl:{months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],dayOfWeekShort:["nd","pn","wt","śr","cz","pt","sb"],dayOfWeek:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},pt:{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},ch:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"]},se:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},kr:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},it:{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayOfWeek:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"]},da:{months:["January","Februar","Marts","April","Maj","Juni","July","August","September","Oktober","November","December"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},no:{months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"]},ja:{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeekShort:["日","月","火","水","木","金","土"],dayOfWeek:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"]},vi:{months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayOfWeekShort:["CN","T2","T3","T4","T5","T6","T7"],dayOfWeek:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"]},sl:{months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],dayOfWeekShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayOfWeek:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"]},cs:{months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],dayOfWeekShort:["Ne","Po","Út","St","Čt","Pá","So"]},hu:{months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],dayOfWeekShort:["Va","Hé","Ke","Sze","Cs","Pé","Szo"],dayOfWeek:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"]},az:{months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],dayOfWeekShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayOfWeek:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"]},bs:{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ca:{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],dayOfWeekShort:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"],dayOfWeek:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"]},"en-GB":{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},et:{months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],dayOfWeekShort:["P","E","T","K","N","R","L"],dayOfWeek:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"]},eu:{months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],dayOfWeekShort:["Ig.","Al.","Ar.","Az.","Og.","Or.","La."],dayOfWeek:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"]},fi:{months:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],dayOfWeekShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayOfWeek:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},gl:{months:["Xan","Feb","Maz","Abr","Mai","Xun","Xul","Ago","Set","Out","Nov","Dec"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Xov","Ven","Sab"],dayOfWeek:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"]},hr:{months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ko:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},lt:{months:["Sausio","Vasario","Kovo","Balandžio","Gegužės","Birželio","Liepos","Rugpjūčio","Rugsėjo","Spalio","Lapkričio","Gruodžio"],dayOfWeekShort:["Sek","Pir","Ant","Tre","Ket","Pen","Šeš"],dayOfWeek:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"]},lv:{months:["Janvāris","Februāris","Marts","Aprīlis ","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],dayOfWeekShort:["Sv","Pr","Ot","Tr","Ct","Pk","St"],dayOfWeek:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"]},mk:{months:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],dayOfWeekShort:["нед","пон","вто","сре","чет","пет","саб"],dayOfWeek:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"]},mn:{months:["1-р сар","2-р сар","3-р сар","4-р сар","5-р сар","6-р сар","7-р сар","8-р сар","9-р сар","10-р сар","11-р сар","12-р сар"],dayOfWeekShort:["Дав","Мяг","Лха","Пүр","Бсн","Бям","Ням"],dayOfWeek:["Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба","Ням"]},"pt-BR":{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},sk:{months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],dayOfWeekShort:["Ne","Po","Ut","St","Št","Pi","So"],dayOfWeek:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"]},sq:{months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],dayOfWeekShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],dayOfWeek:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"]},"sr-YU":{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sre","čet","Pet","Sub"],dayOfWeek:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"]},sr:{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],dayOfWeekShort:["нед","пон","уто","сре","чет","пет","суб"],dayOfWeek:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"]},sv:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayOfWeek:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"]},"zh-TW":{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},zh:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},he:{months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],dayOfWeekShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayOfWeek:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"]},hy:{months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],dayOfWeekShort:["Կի","Երկ","Երք","Չոր","Հնգ","Ուրբ","Շբթ"],dayOfWeek:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"]},kg:{months:["Үчтүн айы","Бирдин айы","Жалган Куран","Чын Куран","Бугу","Кулжа","Теке","Баш Оона","Аяк Оона","Тогуздун айы","Жетинин айы","Бештин айы"],dayOfWeekShort:["Жек","Дүй","Шей","Шар","Бей","Жум","Ише"],dayOfWeek:["Жекшемб","Дүйшөмб","Шейшемб","Шаршемб","Бейшемби","Жума","Ишенб"]}},value:"",rtl:!1,format:"Y/m/d H:i",formatTime:"H:i",formatDate:"Y/m/d",startDate:!1,step:60,monthChangeSpinner:!0,closeOnDateSelect:!1,closeOnTimeSelect:!0,closeOnWithoutClick:!0,closeOnInputClick:!0,timepicker:!0,datepicker:!0,weeks:!1,defaultTime:!1,defaultDate:!1,minDate:!1,maxDate:!1,minTime:!1,maxTime:!1,disabledMinTime:!1,disabledMaxTime:!1,allowTimes:[],opened:!1,initTime:!0,inline:!1,theme:"",onSelectDate:function(){},onSelectTime:function(){},onChangeMonth:function(){},onChangeYear:function(){},onChangeDateTime:function(){},onShow:function(){},onClose:function(){},onGenerate:function(){},withoutCopyright:!0,inverseButton:!1,hours12:!1,next:"xdsoft_next",prev:"xdsoft_prev",dayOfWeekStart:0,parentID:"body",timeHeightInTimePicker:25,timepickerScrollbar:!0,todayButton:!0,prevButton:!0,nextButton:!0,defaultSelect:!0,scrollMonth:!0,scrollTime:!0,scrollInput:!0,lazyInit:!1,mask:!1,validateOnBlur:!0,allowBlank:!0,yearStart:1950,yearEnd:2050,monthStart:0,monthEnd:11,style:"",id:"",fixed:!1,roundTime:"round",className:"",weekends:[],highlightedDates:[],highlightedPeriods:[],disabledDates:[],disabledWeekDays:[],yearOffset:0,beforeShowDay:null,enterLikeTab:!0,showApplyButton:!1},a="en",r="en";e.datetimepicker={setLocale:function(e){r=t.i18n[e]?e:a,Date.monthNames=t.i18n[r].months,Date.dayNames=t.i18n[r].dayOfWeek}},window.getComputedStyle||(window.getComputedStyle=function(e){return this.el=e,this.getPropertyValue=function(t){var a=/(\-([a-z]){1})/g;return"float"===t&&(t="styleFloat"),a.test(t)&&(t=t.replace(a,function(e,t,a){return a.toUpperCase()})),e.currentStyle[t]||null},this}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var a,r;for(a=t||0,r=this.length;r>a;a+=1)if(this[a]===e)return a;return-1}),Date.prototype.countDaysInMonth=function(){return new Date(this.getFullYear(),this.getMonth()+1,0).getDate()},e.fn.xdsoftScroller=function(t){return this.each(function(){var n,o,s,d,f,a=e(this),r=function(e){var a,t={x:0,y:0};return"touchstart"===e.type||"touchmove"===e.type||"touchend"===e.type||"touchcancel"===e.type?(a=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],t.x=a.clientX,t.y=a.clientY):("mousedown"===e.type||"mouseup"===e.type||"mousemove"===e.type||"mouseover"===e.type||"mouseout"===e.type||"mouseenter"===e.type||"mouseleave"===e.type)&&(t.x=e.clientX,t.y=e.clientY),t},u=100,l=!1,m=0,c=0,h=0,g=!1,p=0,k=function(){};return"hide"===t?void a.find(".xdsoft_scrollbar").hide():(e(this).hasClass("xdsoft_scroller_box")||(n=a.children().eq(0),o=a[0].clientHeight,s=n[0].offsetHeight,d=e('<div class="xdsoft_scrollbar"></div>'),f=e('<div class="xdsoft_scroller"></div>'),d.append(f),a.addClass("xdsoft_scroller_box").append(d),k=function(e){var t=r(e).y-m+p;0>t&&(t=0),t+f[0].offsetHeight>h&&(t=h-f[0].offsetHeight),a.trigger("scroll_element.xdsoft_scroller",[u?t/u:0])},f.on("touchstart.xdsoft_scroller mousedown.xdsoft_scroller",function(i){o||a.trigger("resize_scroll.xdsoft_scroller",[t]),m=r(i).y,p=parseInt(f.css("margin-top"),10),h=d[0].offsetHeight,"mousedown"===i.type?(document&&e(document.body).addClass("xdsoft_noselect"),e([document.body,window]).on("mouseup.xdsoft_scroller",function n(){e([document.body,window]).off("mouseup.xdsoft_scroller",n).off("mousemove.xdsoft_scroller",k).removeClass("xdsoft_noselect")}),e(document.body).on("mousemove.xdsoft_scroller",k)):(g=!0,i.stopPropagation(),i.preventDefault())}).on("touchmove",function(e){g&&(e.preventDefault(),k(e))}).on("touchend touchcancel",function(){g=!1,p=0}),a.on("scroll_element.xdsoft_scroller",function(e,t){o||a.trigger("resize_scroll.xdsoft_scroller",[t,!0]),t=t>1?1:0>t||isNaN(t)?0:t,f.css("margin-top",u*t),setTimeout(function(){n.css("marginTop",-parseInt((n[0].offsetHeight-o)*t,10))},10)}).on("resize_scroll.xdsoft_scroller",function(e,t,r){var i,l;o=a[0].clientHeight,s=n[0].offsetHeight,i=o/s,l=i*d[0].offsetHeight,i>1?f.hide():(f.show(),f.css("height",parseInt(l>10?l:10,10)),u=d[0].offsetHeight-f[0].offsetHeight,r!==!0&&a.trigger("scroll_element.xdsoft_scroller",[t||Math.abs(parseInt(n.css("marginTop"),10))/(s-o)]))}),a.on("mousewheel",function(e){var t=Math.abs(parseInt(n.css("marginTop"),10));return t-=20*e.deltaY,0>t&&(t=0),a.trigger("scroll_element.xdsoft_scroller",[t/(s-o)]),e.stopPropagation(),!1}),a.on("touchstart",function(e){l=r(e),c=Math.abs(parseInt(n.css("marginTop"),10))}),a.on("touchmove",function(e){if(l){e.preventDefault();var t=r(e);a.trigger("scroll_element.xdsoft_scroller",[(c-(t.y-l.y))/(s-o)])}}),a.on("touchend touchcancel",function(){l=!1,c=0})),void a.trigger("resize_scroll.xdsoft_scroller",[t]))})},e.fn.datetimepicker=function(a){var _,W,n=48,o=57,s=96,d=105,f=17,u=46,l=13,m=27,c=8,h=37,g=38,p=39,k=40,y=9,x=116,b=65,v=67,T=86,D=90,S=89,O=!1,w=e.isPlainObject(a)||!a?e.extend(!0,{},t,a):e.extend(!0,{},t),M=0,F=function(e){e.on("open.xdsoft focusin.xdsoft mousedown.xdsoft",function t(){e.is(":disabled")||e.data("xdsoft_datetimepicker")||(clearTimeout(M),M=setTimeout(function(){e.data("xdsoft_datetimepicker")||_(e),e.off("open.xdsoft focusin.xdsoft mousedown.xdsoft",t).trigger("open.xdsoft")},100))})};return _=function(t){function K(){var a,e=!1;return w.startDate?e=R.strToDate(w.startDate):(e=w.value||(t&&t.val&&t.val()?t.val():""),e?e=R.strToDateTime(e):w.defaultDate&&(e=R.strToDateTime(w.defaultDate),w.defaultTime&&(a=R.strtotime(w.defaultTime),e.setHours(a.getHours()),e.setMinutes(a.getMinutes())))),e&&R.isValidDate(e)?M.data("changed",!0):e="",e||0}var I,Y,L,V,B,R,M=e('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'),_=e('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),W=e('<div class="xdsoft_datepicker active"></div>'),F=e('<div class="xdsoft_monthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button><div class="xdsoft_label xdsoft_month"><span></span><i></i></div><div class="xdsoft_label xdsoft_year"><span></span><i></i></div><button type="button" class="xdsoft_next"></button></div>'),C=e('<div class="xdsoft_calendar"></div>'),A=e('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),P=A.find(".xdsoft_time_box").eq(0),J=e('<div class="xdsoft_time_variant"></div>'),j=e('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),z=e('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),N=e('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),H=!1,E=0,q=0;w.id&&M.attr("id",w.id),w.style&&M.attr("style",w.style),w.weeks&&M.addClass("xdsoft_showweeks"),w.rtl&&M.addClass("xdsoft_rtl"),M.addClass("xdsoft_"+w.theme),M.addClass(w.className),F.find(".xdsoft_month span").after(z),F.find(".xdsoft_year span").after(N),F.find(".xdsoft_month,.xdsoft_year").on("mousedown.xdsoft",function(t){var o,s,a=e(this).find(".xdsoft_select").eq(0),r=0,i=0,n=a.is(":visible");for(F.find(".xdsoft_select").hide(),R.currentTime&&(r=R.currentTime[e(this).hasClass("xdsoft_month")?"getMonth":"getFullYear"]()),a[n?"hide":"show"](),o=a.find("div.xdsoft_option"),s=0;s<o.length&&o.eq(s).data("value")!==r;s+=1)i+=o[0].offsetHeight;return a.xdsoftScroller(i/(a.children()[0].offsetHeight-a[0].clientHeight)),t.stopPropagation(),!1}),F.find(".xdsoft_select").xdsoftScroller().on("mousedown.xdsoft",function(e){e.stopPropagation(),e.preventDefault()}).on("mousedown.xdsoft",".xdsoft_option",function(){(void 0===R.currentTime||null===R.currentTime)&&(R.currentTime=R.now());var a=R.currentTime.getFullYear();R&&R.currentTime&&R.currentTime[e(this).parent().parent().hasClass("xdsoft_monthselect")?"setMonth":"setFullYear"](e(this).data("value")),e(this).parent().parent().hide(),M.trigger("xchange.xdsoft"),w.onChangeMonth&&e.isFunction(w.onChangeMonth)&&w.onChangeMonth.call(M,R.currentTime,M.data("input")),a!==R.currentTime.getFullYear()&&e.isFunction(w.onChangeYear)&&w.onChangeYear.call(M,R.currentTime,M.data("input"))}),M.setOptions=function(a){var r={},_=function(e){try{if(document.selection&&document.selection.createRange){var t=document.selection.createRange();return t.getBookmark().charCodeAt(2)-2}if(e.setSelectionRange)return e.selectionStart}catch(a){return 0}},C=function(e,t){if(e="string"==typeof e||e instanceof String?document.getElementById(e):e,!e)return!1;if(e.createTextRange){var a=e.createTextRange();return a.collapse(!0),a.moveEnd("character",t),a.moveStart("character",t),a.select(),!0}return e.setSelectionRange?(e.setSelectionRange(t,t),!0):!1},J=function(e,t){var a=e.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g,"\\$1").replace(/_/g,"{digit+}").replace(/([0-9]{1})/g,"{digit$1}").replace(/\{digit([0-9]{1})\}/g,"[0-$1_]{1}").replace(/\{digit[\+]\}/g,"[0-9_]{1}");return new RegExp(a).test(t)};w=e.extend(!0,{},w,a),a.allowTimes&&e.isArray(a.allowTimes)&&a.allowTimes.length&&(w.allowTimes=e.extend(!0,[],a.allowTimes)),a.weekends&&e.isArray(a.weekends)&&a.weekends.length&&(w.weekends=e.extend(!0,[],a.weekends)),a.highlightedDates&&e.isArray(a.highlightedDates)&&a.highlightedDates.length&&(e.each(a.highlightedDates,function(t,a){var o,n=e.map(a.split(","),e.trim),s=new i(Date.parseDate(n[0],w.formatDate),n[1],n[2]),d=s.date.dateFormat(w.formatDate);void 0!==r[d]?(o=r[d].desc,o&&o.length&&s.desc&&s.desc.length&&(r[d].desc=o+"\n"+s.desc)):r[d]=s}),w.highlightedDates=e.extend(!0,[],r)),a.highlightedPeriods&&e.isArray(a.highlightedPeriods)&&a.highlightedPeriods.length&&(r=e.extend(!0,[],w.highlightedDates),e.each(a.highlightedPeriods,function(t,a){var n,o,s,d,f,u,l;if(e.isArray(a))n=a[0],o=a[1],s=a[2],l=a[3];else{var m=e.map(a.split(","),e.trim);n=Date.parseDate(m[0],w.formatDate),o=Date.parseDate(m[1],w.formatDate),s=m[2],l=m[3]}for(;o>=n;)d=new i(n,s,l),f=n.dateFormat(w.formatDate),n.setDate(n.getDate()+1),void 0!==r[f]?(u=r[f].desc,u&&u.length&&d.desc&&d.desc.length&&(r[f].desc=u+"\n"+d.desc)):r[f]=d}),w.highlightedDates=e.extend(!0,[],r)),a.disabledDates&&e.isArray(a.disabledDates)&&a.disabledDates.length&&(w.disabledDates=e.extend(!0,[],a.disabledDates)),a.disabledWeekDays&&e.isArray(a.disabledWeekDays)&&a.disabledWeekDays.length&&(w.disabledWeekDays=e.extend(!0,[],a.disabledWeekDays)),!w.open&&!w.opened||w.inline||t.trigger("open.xdsoft"),w.inline&&(H=!0,M.addClass("xdsoft_inline"),t.after(M).hide()),w.inverseButton&&(w.next="xdsoft_prev",w.prev="xdsoft_next"),w.datepicker?W.addClass("active"):W.removeClass("active"),w.timepicker?A.addClass("active"):A.removeClass("active"),w.value&&(R.setCurrentTime(w.value),t&&t.val&&t.val(R.str)),w.dayOfWeekStart=isNaN(w.dayOfWeekStart)?0:parseInt(w.dayOfWeekStart,10)%7,w.timepickerScrollbar||P.xdsoftScroller("hide"),w.minDate&&/^[\+\-](.*)$/.test(w.minDate)&&(w.minDate=R.strToDateTime(w.minDate).dateFormat(w.formatDate)),w.maxDate&&/^[\+\-](.*)$/.test(w.maxDate)&&(w.maxDate=R.strToDateTime(w.maxDate).dateFormat(w.formatDate)),j.toggle(w.showApplyButton),F.find(".xdsoft_today_button").css("visibility",w.todayButton?"visible":"hidden"),F.find("."+w.prev).css("visibility",w.prevButton?"visible":"hidden"),F.find("."+w.next).css("visibility",w.nextButton?"visible":"hidden"),w.mask&&(t.off("keydown.xdsoft"),w.mask===!0&&(w.mask=w.format.replace(/Y/g,"9999").replace(/F/g,"9999").replace(/m/g,"19").replace(/d/g,"39").replace(/H/g,"29").replace(/i/g,"59").replace(/s/g,"59")),"string"===e.type(w.mask)&&(J(w.mask,t.val())||t.val(w.mask.replace(/[0-9]/g,"_")),t.on("keydown.xdsoft",function(a){var M,W,r=this.value,i=a.which;if(i>=n&&o>=i||i>=s&&d>=i||i===c||i===u){for(M=_(this),W=i!==c&&i!==u?String.fromCharCode(i>=s&&d>=i?i-n:i):"_",i!==c&&i!==u||!M||(M-=1,W="_");/[^0-9_]/.test(w.mask.substr(M,1))&&M<w.mask.length&&M>0;)M+=i===c||i===u?-1:1;if(r=r.substr(0,M)+W+r.substr(M+1),""===e.trim(r))r=w.mask.replace(/[0-9]/g,"_");else if(M===w.mask.length)return a.preventDefault(),!1;for(M+=i===c||i===u?0:1;/[^0-9_]/.test(w.mask.substr(M,1))&&M<w.mask.length&&M>0;)M+=i===c||i===u?-1:1;J(w.mask,r)?(this.value=r,C(this,M)):""===e.trim(r)?this.value=w.mask.replace(/[0-9]/g,"_"):t.trigger("error_input.xdsoft")}else if(-1!==[b,v,T,D,S].indexOf(i)&&O||-1!==[m,g,k,h,p,x,f,y,l].indexOf(i))return!0;return a.preventDefault(),!1}))),w.validateOnBlur&&t.off("blur.xdsoft").on("blur.xdsoft",function(){if(w.allowBlank&&!e.trim(e(this).val()).length)e(this).val(null),M.data("xdsoft_datetime").empty();else if(Date.parseDate(e(this).val(),w.format))M.data("xdsoft_datetime").setCurrentTime(e(this).val());else{var t=+[e(this).val()[0],e(this).val()[1]].join(""),a=+[e(this).val()[2],e(this).val()[3]].join("");e(this).val(!w.datepicker&&w.timepicker&&t>=0&&24>t&&a>=0&&60>a?[t,a].map(function(e){return e>9?e:"0"+e}).join(":"):R.now().dateFormat(w.format)),M.data("xdsoft_datetime").setCurrentTime(e(this).val())}M.trigger("changedatetime.xdsoft")}),w.dayOfWeekStartPrev=0===w.dayOfWeekStart?6:w.dayOfWeekStart-1,M.trigger("xchange.xdsoft").trigger("afterOpen.xdsoft")},M.data("options",w).on("mousedown.xdsoft",function(e){return e.stopPropagation(),e.preventDefault(),N.hide(),z.hide(),!1}),P.append(J),P.xdsoftScroller(),M.on("afterOpen.xdsoft",function(){P.xdsoftScroller()}),M.append(W).append(A),w.withoutCopyright!==!0&&M.append(_),W.append(F).append(C).append(j),e(w.parentID).append(M),I=function(){var t=this;t.now=function(e){var r,i,a=new Date;return!e&&w.defaultDate&&(r=t.strToDateTime(w.defaultDate),a.setFullYear(r.getFullYear()),a.setMonth(r.getMonth()),a.setDate(r.getDate())),w.yearOffset&&a.setFullYear(a.getFullYear()+w.yearOffset),!e&&w.defaultTime&&(i=t.strtotime(w.defaultTime),a.setHours(i.getHours()),a.setMinutes(i.getMinutes())),a},t.isValidDate=function(e){return"[object Date]"!==Object.prototype.toString.call(e)?!1:!isNaN(e.getTime())},t.setCurrentTime=function(e){t.currentTime="string"==typeof e?t.strToDateTime(e):t.isValidDate(e)?e:t.now(),M.trigger("xchange.xdsoft")},t.empty=function(){t.currentTime=null},t.getCurrentTime=function(){return t.currentTime},t.nextMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var r,a=t.currentTime.getMonth()+1;return 12===a&&(t.currentTime.setFullYear(t.currentTime.getFullYear()+1),a=0),r=t.currentTime.getFullYear(),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),a+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(a),w.onChangeMonth&&e.isFunction(w.onChangeMonth)&&w.onChangeMonth.call(M,R.currentTime,M.data("input")),r!==t.currentTime.getFullYear()&&e.isFunction(w.onChangeYear)&&w.onChangeYear.call(M,R.currentTime,M.data("input")),M.trigger("xchange.xdsoft"),a},t.prevMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var a=t.currentTime.getMonth()-1;return-1===a&&(t.currentTime.setFullYear(t.currentTime.getFullYear()-1),a=11),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),a+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(a),w.onChangeMonth&&e.isFunction(w.onChangeMonth)&&w.onChangeMonth.call(M,R.currentTime,M.data("input")),M.trigger("xchange.xdsoft"),a},t.getWeekOfYear=function(e){var t=new Date(e.getFullYear(),0,1);return Math.ceil(((e-t)/864e5+t.getDay()+1)/7)},t.strToDateTime=function(e){var r,i,a=[];return e&&e instanceof Date&&t.isValidDate(e)?e:(a=/^(\+|\-)(.*)$/.exec(e),a&&(a[2]=Date.parseDate(a[2],w.formatDate)),a&&a[2]?(r=a[2].getTime()-6e4*a[2].getTimezoneOffset(),i=new Date(t.now(!0).getTime()+parseInt(a[1]+"1",10)*r)):i=e?Date.parseDate(e,w.format):t.now(),t.isValidDate(i)||(i=t.now()),i)},t.strToDate=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?Date.parseDate(e,w.formatDate):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.strtotime=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?Date.parseDate(e,w.formatTime):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.str=function(){return t.currentTime.dateFormat(w.format)},t.currentTime=this.now()},R=new I,j.on("click",function(e){e.preventDefault(),M.data("changed",!0),R.setCurrentTime(K()),t.val(R.str()),M.trigger("close.xdsoft")}),F.find(".xdsoft_today_button").on("mousedown.xdsoft",function(){M.data("changed",!0),R.setCurrentTime(0),M.trigger("afterOpen.xdsoft")}).on("dblclick.xdsoft",function(){var a,r,e=R.getCurrentTime();e=new Date(e.getFullYear(),e.getMonth(),e.getDate()),a=R.strToDate(w.minDate),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()),a>e||(r=R.strToDate(w.maxDate),r=new Date(r.getFullYear(),r.getMonth(),r.getDate()),e>r||(t.val(R.str()),t.trigger("change"),M.trigger("close.xdsoft")))}),F.find(".xdsoft_prev,.xdsoft_next").on("mousedown.xdsoft",function(){var t=e(this),a=0,r=!1;!function i(e){t.hasClass(w.next)?R.nextMonth():t.hasClass(w.prev)&&R.prevMonth(),w.monthChangeSpinner&&(r||(a=setTimeout(i,e||100)))}(500),e([document.body,window]).on("mouseup.xdsoft",function n(){clearTimeout(a),r=!0,e([document.body,window]).off("mouseup.xdsoft",n)})}),A.find(".xdsoft_prev,.xdsoft_next").on("mousedown.xdsoft",function(){var t=e(this),a=0,r=!1,i=110;!function n(e){var o=P[0].clientHeight,s=J[0].offsetHeight,d=Math.abs(parseInt(J.css("marginTop"),10));t.hasClass(w.next)&&s-o-w.timeHeightInTimePicker>=d?J.css("marginTop","-"+(d+w.timeHeightInTimePicker)+"px"):t.hasClass(w.prev)&&d-w.timeHeightInTimePicker>=0&&J.css("marginTop","-"+(d-w.timeHeightInTimePicker)+"px"),P.trigger("scroll_element.xdsoft_scroller",[Math.abs(parseInt(J.css("marginTop"),10)/(s-o))]),i=i>10?10:i-10,r||(a=setTimeout(n,e||i))}(500),e([document.body,window]).on("mouseup.xdsoft",function o(){clearTimeout(a),r=!0,e([document.body,window]).off("mouseup.xdsoft",o)})}),Y=0,M.on("xchange.xdsoft",function(t){clearTimeout(Y),Y=setTimeout(function(){(void 0===R.currentTime||null===R.currentTime)&&(R.currentTime=R.now());for(var o,u,l,m,c,h,g,k,v,T,t="",i=new Date(R.currentTime.getFullYear(),R.currentTime.getMonth(),1,12,0,0),n=0,s=R.now(),d=!1,f=!1,p=[],y=!0,x="",b="";i.getDay()!==w.dayOfWeekStart;)i.setDate(i.getDate()-1);for(t+="<table><thead><tr>",w.weeks&&(t+="<th></th>"),o=0;7>o;o+=1)t+="<th>"+w.i18n[r].dayOfWeekShort[(o+w.dayOfWeekStart)%7]+"</th>";
  2 +for(t+="</tr></thead>",t+="<tbody>",w.maxDate!==!1&&(d=R.strToDate(w.maxDate),d=new Date(d.getFullYear(),d.getMonth(),d.getDate(),23,59,59,999)),w.minDate!==!1&&(f=R.strToDate(w.minDate),f=new Date(f.getFullYear(),f.getMonth(),f.getDate()));n<R.currentTime.countDaysInMonth()||i.getDay()!==w.dayOfWeekStart||R.currentTime.getMonth()===i.getMonth();)p=[],n+=1,l=i.getDay(),m=i.getDate(),c=i.getFullYear(),h=i.getMonth(),g=R.getWeekOfYear(i),T="",p.push("xdsoft_date"),k=w.beforeShowDay&&e.isFunction(w.beforeShowDay.call)?w.beforeShowDay.call(M,i):null,d!==!1&&i>d||f!==!1&&f>i||k&&k[0]===!1?p.push("xdsoft_disabled"):-1!==w.disabledDates.indexOf(i.dateFormat(w.formatDate))?p.push("xdsoft_disabled"):-1!==w.disabledWeekDays.indexOf(l)&&p.push("xdsoft_disabled"),k&&""!==k[1]&&p.push(k[1]),R.currentTime.getMonth()!==h&&p.push("xdsoft_other_month"),(w.defaultSelect||M.data("changed"))&&R.currentTime.dateFormat(w.formatDate)===i.dateFormat(w.formatDate)&&p.push("xdsoft_current"),s.dateFormat(w.formatDate)===i.dateFormat(w.formatDate)&&p.push("xdsoft_today"),(0===i.getDay()||6===i.getDay()||-1!==w.weekends.indexOf(i.dateFormat(w.formatDate)))&&p.push("xdsoft_weekend"),void 0!==w.highlightedDates[i.dateFormat(w.formatDate)]&&(u=w.highlightedDates[i.dateFormat(w.formatDate)],p.push(void 0===u.style?"xdsoft_highlighted_default":u.style),T=void 0===u.desc?"":u.desc),w.beforeShowDay&&e.isFunction(w.beforeShowDay)&&p.push(w.beforeShowDay(i)),y&&(t+="<tr>",y=!1,w.weeks&&(t+="<th>"+g+"</th>")),t+='<td data-date="'+m+'" data-month="'+h+'" data-year="'+c+'" class="xdsoft_date xdsoft_day_of_week'+i.getDay()+" "+p.join(" ")+'" title="'+T+'"><div>'+m+"</div></td>",i.getDay()===w.dayOfWeekStartPrev&&(t+="</tr>",y=!0),i.setDate(m+1);if(t+="</tbody></table>",C.html(t),F.find(".xdsoft_label span").eq(0).text(w.i18n[r].months[R.currentTime.getMonth()]),F.find(".xdsoft_label span").eq(1).text(R.currentTime.getFullYear()),x="",b="",h="",v=function(t,a){var i,n,r=R.now(),o=w.allowTimes&&e.isArray(w.allowTimes)&&w.allowTimes.length;r.setHours(t),t=parseInt(r.getHours(),10),r.setMinutes(a),a=parseInt(r.getMinutes(),10),i=new Date(R.currentTime),i.setHours(t),i.setMinutes(a),p=[],(w.minDateTime!==!1&&w.minDateTime>i||w.maxTime!==!1&&R.strtotime(w.maxTime).getTime()<r.getTime()||w.minTime!==!1&&R.strtotime(w.minTime).getTime()>r.getTime())&&p.push("xdsoft_disabled"),(w.minDateTime!==!1&&w.minDateTime>i||w.disabledMinTime!==!1&&r.getTime()>R.strtotime(w.disabledMinTime).getTime()&&w.disabledMaxTime!==!1&&r.getTime()<R.strtotime(w.disabledMaxTime).getTime())&&p.push("xdsoft_disabled"),n=new Date(R.currentTime),n.setHours(parseInt(R.currentTime.getHours(),10)),o||n.setMinutes(Math[w.roundTime](R.currentTime.getMinutes()/w.step)*w.step),(w.initTime||w.defaultSelect||M.data("changed"))&&n.getHours()===parseInt(t,10)&&(!o&&w.step>59||n.getMinutes()===parseInt(a,10))&&(w.defaultSelect||M.data("changed")?p.push("xdsoft_current"):w.initTime&&p.push("xdsoft_init_time")),parseInt(s.getHours(),10)===parseInt(t,10)&&parseInt(s.getMinutes(),10)===parseInt(a,10)&&p.push("xdsoft_today"),x+='<div class="xdsoft_time '+p.join(" ")+'" data-hour="'+t+'" data-minute="'+a+'">'+r.dateFormat(w.formatTime)+"</div>"},w.allowTimes&&e.isArray(w.allowTimes)&&w.allowTimes.length)for(n=0;n<w.allowTimes.length;n+=1)b=R.strtotime(w.allowTimes[n]).getHours(),h=R.strtotime(w.allowTimes[n]).getMinutes(),v(b,h);else for(n=0,o=0;n<(w.hours12?12:24);n+=1)for(o=0;60>o;o+=w.step)b=(10>n?"0":"")+n,h=(10>o?"0":"")+o,v(b,h);for(J.html(x),a="",n=0,n=parseInt(w.yearStart,10)+w.yearOffset;n<=parseInt(w.yearEnd,10)+w.yearOffset;n+=1)a+='<div class="xdsoft_option '+(R.currentTime.getFullYear()===n?"xdsoft_current":"")+'" data-value="'+n+'">'+n+"</div>";for(N.children().eq(0).html(a),n=parseInt(w.monthStart,10),a="";n<=parseInt(w.monthEnd,10);n+=1)a+='<div class="xdsoft_option '+(R.currentTime.getMonth()===n?"xdsoft_current":"")+'" data-value="'+n+'">'+w.i18n[r].months[n]+"</div>";z.children().eq(0).html(a),e(M).trigger("generate.xdsoft")},10),t.stopPropagation()}).on("afterOpen.xdsoft",function(){if(w.timepicker){var e,t,a,r;J.find(".xdsoft_current").length?e=".xdsoft_current":J.find(".xdsoft_init_time").length&&(e=".xdsoft_init_time"),e?(t=P[0].clientHeight,a=J[0].offsetHeight,r=J.find(e).index()*w.timeHeightInTimePicker+1,r>a-t&&(r=a-t),P.trigger("scroll_element.xdsoft_scroller",[parseInt(r,10)/(a-t)])):P.trigger("scroll_element.xdsoft_scroller",[0])}}),L=0,C.on("click.xdsoft","td",function(a){a.stopPropagation(),L+=1;var r=e(this),i=R.currentTime;return(void 0===i||null===i)&&(R.currentTime=R.now(),i=R.currentTime),r.hasClass("xdsoft_disabled")?!1:(i.setDate(1),i.setFullYear(r.data("year")),i.setMonth(r.data("month")),i.setDate(r.data("date")),M.trigger("select.xdsoft",[i]),t.val(R.str()),w.onSelectDate&&e.isFunction(w.onSelectDate)&&w.onSelectDate.call(M,R.currentTime,M.data("input"),a),M.data("changed",!0),M.trigger("xchange.xdsoft"),M.trigger("changedatetime.xdsoft"),(L>1||w.closeOnDateSelect===!0||w.closeOnDateSelect===!1&&!w.timepicker)&&!w.inline&&M.trigger("close.xdsoft"),void setTimeout(function(){L=0},200))}),J.on("click.xdsoft","div",function(t){t.stopPropagation();var a=e(this),r=R.currentTime;return(void 0===r||null===r)&&(R.currentTime=R.now(),r=R.currentTime),a.hasClass("xdsoft_disabled")?!1:(r.setHours(a.data("hour")),r.setMinutes(a.data("minute")),M.trigger("select.xdsoft",[r]),M.data("input").val(R.str()),w.onSelectTime&&e.isFunction(w.onSelectTime)&&w.onSelectTime.call(M,R.currentTime,M.data("input"),t),M.data("changed",!0),M.trigger("xchange.xdsoft"),M.trigger("changedatetime.xdsoft"),void(w.inline!==!0&&w.closeOnTimeSelect===!0&&M.trigger("close.xdsoft")))}),W.on("mousewheel.xdsoft",function(e){return w.scrollMonth?(e.deltaY<0?R.nextMonth():R.prevMonth(),!1):!0}),t.on("mousewheel.xdsoft",function(e){return w.scrollInput?!w.datepicker&&w.timepicker?(V=J.find(".xdsoft_current").length?J.find(".xdsoft_current").eq(0).index():0,V+e.deltaY>=0&&V+e.deltaY<J.children().length&&(V+=e.deltaY),J.children().eq(V).length&&J.children().eq(V).trigger("mousedown"),!1):w.datepicker&&!w.timepicker?(W.trigger(e,[e.deltaY,e.deltaX,e.deltaY]),t.val&&t.val(R.str()),M.trigger("changedatetime.xdsoft"),!1):void 0:!0}),M.on("changedatetime.xdsoft",function(t){if(w.onChangeDateTime&&e.isFunction(w.onChangeDateTime)){var a=M.data("input");w.onChangeDateTime.call(M,R.currentTime,a,t),delete w.value,a.trigger("change")}}).on("generate.xdsoft",function(){w.onGenerate&&e.isFunction(w.onGenerate)&&w.onGenerate.call(M,R.currentTime,M.data("input")),H&&(M.trigger("afterOpen.xdsoft"),H=!1)}).on("click.xdsoft",function(e){e.stopPropagation()}),V=0,B=function(){var n,t=M.data("input").offset(),a=t.top+M.data("input")[0].offsetHeight-1,r=t.left,i="absolute";"rtl"==M.data("input").parent().css("direction")&&(r-=M.outerWidth()-M.data("input").outerWidth()),w.fixed?(a-=e(window).scrollTop(),r-=e(window).scrollLeft(),i="fixed"):(a+M[0].offsetHeight>e(window).height()+e(window).scrollTop()&&(a=t.top-M[0].offsetHeight+1),0>a&&(a=0),r+M[0].offsetWidth>e(window).width()&&(r=e(window).width()-M[0].offsetWidth)),n=M[0];do if(n=n.parentNode,"relative"===window.getComputedStyle(n).getPropertyValue("position")&&e(window).width()>=n.offsetWidth){r-=(e(window).width()-n.offsetWidth)/2;break}while("HTML"!==n.nodeName);M.css({left:r,top:a,position:i})},M.on("open.xdsoft",function(t){var a=!0;w.onShow&&e.isFunction(w.onShow)&&(a=w.onShow.call(M,R.currentTime,M.data("input"),t)),a!==!1&&(M.show(),B(),e(window).off("resize.xdsoft",B).on("resize.xdsoft",B),w.closeOnWithoutClick&&e([document.body,window]).on("mousedown.xdsoft",function r(){M.trigger("close.xdsoft"),e([document.body,window]).off("mousedown.xdsoft",r)}))}).on("close.xdsoft",function(t){var a=!0;F.find(".xdsoft_month,.xdsoft_year").find(".xdsoft_select").hide(),w.onClose&&e.isFunction(w.onClose)&&(a=w.onClose.call(M,R.currentTime,M.data("input"),t)),a===!1||w.opened||w.inline||M.hide(),t.stopPropagation()}).on("toggle.xdsoft",function(){M.trigger(M.is(":visible")?"close.xdsoft":"open.xdsoft")}).data("input",t),E=0,q=0,M.data("xdsoft_datetime",R),M.setOptions(w),R.setCurrentTime(K()),t.data("xdsoft_datetimepicker",M).on("open.xdsoft focusin.xdsoft mousedown.xdsoft",function(){t.is(":disabled")||t.data("xdsoft_datetimepicker").is(":visible")&&w.closeOnInputClick||(clearTimeout(E),E=setTimeout(function(){t.is(":disabled")||(H=!0,R.setCurrentTime(K()),M.trigger("open.xdsoft"))},100))}).on("keydown.xdsoft",function(t){var r,i=(this.value,t.which);return-1!==[l].indexOf(i)&&w.enterLikeTab?(r=e("input:visible,textarea:visible"),M.trigger("close.xdsoft"),r.eq(r.index(this)+1).focus(),!1):-1!==[y].indexOf(i)?(M.trigger("close.xdsoft"),!0):void 0})},W=function(t){var a=t.data("xdsoft_datetimepicker");a&&(a.data("xdsoft_datetime",null),a.remove(),t.data("xdsoft_datetimepicker",null).off(".xdsoft"),e(window).off("resize.xdsoft"),e([window,document.body]).off("mousedown.xdsoft"),t.unmousewheel&&t.unmousewheel())},e(document).off("keydown.xdsoftctrl keyup.xdsoftctrl").on("keydown.xdsoftctrl",function(e){e.keyCode===f&&(O=!0)}).on("keyup.xdsoftctrl",function(e){e.keyCode===f&&(O=!1)}),this.each(function(){var r,t=e(this).data("xdsoft_datetimepicker");if(t){if("string"===e.type(a))switch(a){case"show":e(this).select().focus(),t.trigger("open.xdsoft");break;case"hide":t.trigger("close.xdsoft");break;case"toggle":t.trigger("toggle.xdsoft");break;case"destroy":W(e(this));break;case"reset":this.value=this.defaultValue,this.value&&t.data("xdsoft_datetime").isValidDate(Date.parseDate(this.value,w.format))||t.data("changed",!1),t.data("xdsoft_datetime").setCurrentTime(this.value);break;case"validate":r=t.data("input"),r.trigger("blur.xdsoft")}else t.setOptions(a);return 0}"string"!==e.type(a)&&(!w.lazyInit||w.open||w.inline?_(e(this)):F(e(this)))})},e.fn.datetimepicker.defaults=t});
... ...
www-backend/js/datetimepicker-master/jquery.js 0 → 100644
  1 +/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
  2 +//@ sourceMappingURL=jquery-1.10.2.min.map
  3 +*/
  4 +(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
  5 +}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
  6 +u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
... ...
www-backend/js/datetimepicker-master/package.json 0 → 100644
  1 +{
  2 + "name": "jquery-datetimepicker",
  3 + "version": "2.5.4",
  4 + "description": "jQuery Plugin DateTimePicker it is DatePicker and TimePicker in one",
  5 + "main": "build/jquery.datetimepicker.full.min.js",
  6 + "scripts": {
  7 + "test": "echo \"Error: no test specified\" && exit 1",
  8 + "concat": "concat-cli -f bower_components/php-date-formatter/js/php-date-formatter.js jquery.datetimepicker.js bower_components/jquery-mousewheel/jquery.mousewheel.js -o build/jquery.datetimepicker.full.js",
  9 + "minify": "uglifyjs jquery.datetimepicker.js -c -m -o build/jquery.datetimepicker.min.js && uglifycss jquery.datetimepicker.css > build/jquery.datetimepicker.min.css",
  10 + "minifyconcat": "uglifyjs build/jquery.datetimepicker.full.js -c -m -o build/jquery.datetimepicker.full.min.js",
  11 + "github": "git add --all && git commit -m \"New version %npm_package_version% \" && git tag %npm_package_version% && git push --tags origin HEAD:master && npm publish",
  12 + "build": "npm run minify && npm run concat && npm run minifyconcat"
  13 + },
  14 + "repository": {
  15 + "type": "git",
  16 + "url": "https://github.com/xdan/datetimepicker.git"
  17 + },
  18 + "keywords": [
  19 + "jquery-plugin",
  20 + "calendar",
  21 + "date",
  22 + "time",
  23 + "datetime",
  24 + "datepicker",
  25 + "timepicker"
  26 + ],
  27 + "author": "Chupurnov <chupurnov@gmail.com> (http://xdsoft.net/)",
  28 + "license": "MIT",
  29 + "bugs": {
  30 + "url": "https://github.com/xdan/datetimepicker/issues"
  31 + },
  32 + "homepage": "https://github.com/xdan/datetimepicker",
  33 + "dependencies": {
  34 + "jquery": ">= 1.7.2",
  35 + "jquery-mousewheel": ">= 3.1.13",
  36 + "php-date-formatter": ">= 1.3.3"
  37 + },
  38 + "devDependencies": {
  39 + "concat": "azer/concat",
  40 + "concat-cli": "^4.0.0",
  41 + "uglifycss": "0.0.20",
  42 + "uglifyjs": "^2.4.10"
  43 + }
  44 +}
... ...
www-backend/js/datetimepicker-master/screen/1.png 0 → 100644

9.48 KB

www-backend/js/datetimepicker-master/screen/2.png 0 → 100644

5.02 KB

www-backend/js/datetimepicker-master/screen/3.1.png 0 → 100644

4.31 KB

www-backend/js/datetimepicker-master/screen/3.png 0 → 100644

2.44 KB

www-backend/js/datetimepicker-master/screen/4.png 0 → 100644

12.3 KB

www-backend/js/datetimepicker-master/screen/5.png 0 → 100644

13.8 KB

www-backend/js/datetimepicker-master/screen/6.png 0 → 100644

16.9 KB

www-backend/js/datetimepicker-master/tests/input_in_container_fixed_to_bottom_of_viewport.html 0 → 100755
  1 +<!DOCTYPE html>
  2 +<html>
  3 + <head>
  4 + <title>Input In Container Fixed To Bottom Of Viewport | datetimepicker Tests</title>
  5 + <meta charset="UTF-8">
  6 + <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7 +
  8 + <link rel="stylesheet" type="text/css" href="../jquery.datetimepicker.css"/>
  9 +
  10 + <style>
  11 + body {
  12 + margin: 0;
  13 + padding: 0;
  14 + }
  15 +
  16 + main {
  17 + width: 960px;
  18 + margin: 0 auto;
  19 + }
  20 +
  21 + #search {
  22 + position: fixed;
  23 + bottom: 0;
  24 + z-index: 3;
  25 + width: 100%;
  26 + color: #f0f0f0;
  27 + background-color: #333;
  28 + opacity: 0.9;
  29 + -webkit-opacity: 0.9;
  30 + -moz-opacity: 0.9;
  31 + }
  32 +
  33 + #search form {
  34 + width: 960px;
  35 + margin: 0 auto;
  36 + padding: 0.5em;
  37 + }
  38 +
  39 + #search form > div,
  40 + #filters form > div {
  41 + display: inline;
  42 + }
  43 + </style>
  44 + </head>
  45 +
  46 + <body>
  47 + <main>
  48 + <h1>Input In Container Fixed To Bottom Of Viewport</h1>
  49 +
  50 + <div id="filters">
  51 + <form method="post" action="?">
  52 + <div>
  53 + <label for="filter-date">Date</label>
  54 + <input type="text" name="filter-date" id="filter-date"/>
  55 + </div>
  56 +
  57 + <div>
  58 + <input type="submit" value="Filter"/>
  59 + </div>
  60 + </form>
  61 + </div>
  62 +
  63 + <ul>
  64 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  65 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  66 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  67 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  68 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  69 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  70 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  71 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  72 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  73 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  74 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  75 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  76 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  77 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  78 + </ul>
  79 + </main>
  80 +
  81 + <footer>
  82 + <div id="search">
  83 + <form method="post" action="?">
  84 + <div>
  85 + <label for="search-from-date">Date from</label>
  86 + <input type="text" name="search-from-date" id="search-from-date"/>
  87 + </div>
  88 +
  89 + <div>
  90 + <label for="search-to-date">Date to</label>
  91 + <input type="text" name="search-to-date" id="search-to-date"/>
  92 + </div>
  93 +
  94 + <div>
  95 + <input type="submit" value="Search"/>
  96 + </div>
  97 + </form>
  98 + </div>
  99 + </footer>
  100 +
  101 + <script src="../bower_components/jquery/dist/jquery.min.js"></script>
  102 + <script src="../build/jquery.datetimepicker.full.js"></script>
  103 +
  104 + <script>
  105 + /*jslint browser:true*/
  106 + /*global jQuery, document*/
  107 +
  108 + jQuery(document).ready(function () {
  109 + 'use strict';
  110 +
  111 + jQuery('#filter-date, #search-from-date, #search-to-date').datetimepicker();
  112 + });
  113 + </script>
  114 + </body>
  115 +</html>
... ...
www-backend/js/datetimepicker-master/tests/input_in_container_fixed_to_top_of_viewport.html 0 → 100755
  1 +<!DOCTYPE html>
  2 +<html>
  3 + <head>
  4 + <title>Input In Container Fixed To Top Of Viewport | datetimepicker Tests</title>
  5 + <meta charset="UTF-8">
  6 + <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7 +
  8 + <link rel="stylesheet" type="text/css" href="../jquery.datetimepicker.css"/>
  9 +
  10 + <style>
  11 + body {
  12 + margin: 0;
  13 + padding: 0;
  14 + }
  15 +
  16 + main {
  17 + width: 960px;
  18 + margin: 0 auto;
  19 + }
  20 +
  21 + #search {
  22 + position: fixed;
  23 + top: 0;
  24 + z-index: 3;
  25 + width: 100%;
  26 + color: #f0f0f0;
  27 + background-color: #333;
  28 + opacity: 0.9;
  29 + -webkit-opacity: 0.9;
  30 + -moz-opacity: 0.9;
  31 + }
  32 +
  33 + #search form {
  34 + width: 960px;
  35 + margin: 0 auto;
  36 + padding: 0.5em;
  37 + }
  38 +
  39 + #search form > div,
  40 + #filters form > div {
  41 + display: inline;
  42 + }
  43 + </style>
  44 + </head>
  45 +
  46 + <body>
  47 + <main>
  48 + <h1>Input In Container Fixed To Top Of Viewport</h1>
  49 +
  50 + <div id="filters">
  51 + <form method="post" action="?">
  52 + <div>
  53 + <label for="filter-date">Date</label>
  54 + <input type="text" name="filter-date" id="filter-date"/>
  55 + </div>
  56 +
  57 + <div>
  58 + <input type="submit" value="Filter"/>
  59 + </div>
  60 + </form>
  61 + </div>
  62 +
  63 + <ul>
  64 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  65 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  66 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  67 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  68 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  69 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  70 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  71 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  72 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  73 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  74 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  75 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  76 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  77 + <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ornare ante at risus varius molestie. Nulla bibendum mauris tellus, vitae fringilla dolor consectetur et. Praesent in ligula condimentum lacus semper mattis. Sed lobortis iaculis ipsum, a posuere dui dictum nec. Cras condimentum tristique tincidunt. Integer nisi mauris, mollis eget gravida eu, fringilla id eros. Nam posuere aliquet velit, in fermentum augue. Phasellus sit amet enim sit amet neque sollicitudin pellentesque. Vestibulum euismod, libero at rutrum malesuada, libero elit euismod velit, ut facilisis odio libero quis quam. Cras aliquet orci quis ultrices bibendum. In at erat et purus molestie varius aliquam et neque. Duis eleifend sagittis lectus consectetur rhoncus. Suspendisse porttitor nibh a tincidunt ultricies. Morbi hendrerit consectetur felis, eu ultricies diam. Fusce eget nulla ac magna tincidunt feugiat quis vestibulum nibh.</li>
  78 + </ul>
  79 + </main>
  80 +
  81 + <footer>
  82 + <div id="search">
  83 + <form method="post" action="?">
  84 + <div>
  85 + <label for="search-from-date">Date from</label>
  86 + <input type="text" name="search-from-date" id="search-from-date"/>
  87 + </div>
  88 +
  89 + <div>
  90 + <label for="search-to-date">Date to</label>
  91 + <input type="text" name="search-to-date" id="search-to-date"/>
  92 + </div>
  93 +
  94 + <div>
  95 + <input type="submit" value="Search"/>
  96 + </div>
  97 + </form>
  98 + </div>
  99 + </footer>
  100 +
  101 + <script src="../bower_components/jquery/dist/jquery.min.js"></script>
  102 + <script src="../build/jquery.datetimepicker.full.js"></script>
  103 +
  104 + <script>
  105 + /*jslint browser:true*/
  106 + /*global jQuery, document*/
  107 +
  108 + jQuery(document).ready(function () {
  109 + 'use strict';
  110 +
  111 + jQuery('#filter-date, #search-from-date, #search-to-date').datetimepicker();
  112 + });
  113 + </script>
  114 + </body>
  115 +</html>
... ...