//No.1 时间选择器 $(document).ready(function(){ var hour_temp = ""; var minute_temp = ""; for(var i=0;i<24;i++){ if(i<10){ if(i==0){ hour_temp += '
0'+i+'
' }else{ hour_temp += '
0'+i+'
' } }else{ hour_temp += '
'+i+'
' } } for(var i=0;i<60;i++){ if(i<10){ if(i==0){ minute_temp += '
0'+i+'
' }else{ minute_temp += '
0'+i+'
' } }else{ minute_temp += '
'+i+'
' } } $(".select_hour_box").html(hour_temp); $(".select_minute_box").html(minute_temp); $(".select_hour").on("click",function(){ var time_id = $(this).closest(".timepicker_box").attr("id"); var parent_height = $("#"+time_id).find(".timepicker_select").offset().top; var this_height = $(this).offset().top; var scroll_height = $("#"+time_id).find(".select_hour_box").scrollTop(); var move_height = this_height - parent_height + scroll_height; $("#"+time_id).find(".select_hour_box").animate({scrollTop:move_height},200); $("#"+time_id).find(".select_hour_box").children().removeClass("select_option"); $(this).addClass("select_option"); var times = $("#"+time_id).find(".select_hour_box .select_option").text() + ':' + $("#"+time_id).find(".select_minute_box .select_option").text(); $("#"+time_id).find(".timepicker input").val(times); }); $(".select_minute").on("click",function(){ var time_id = $(this).closest(".timepicker_box").attr("id"); var parent_height = $("#"+time_id).find(".timepicker_select").offset().top; var this_height = $(this).offset().top; var scroll_height = $("#"+time_id).find(".select_minute_box").scrollTop(); var move_height = this_height - parent_height + scroll_height; $("#"+time_id).find(".select_minute_box").animate({scrollTop:move_height},200); $("#"+time_id).find(".select_minute_box").children().removeClass("select_option"); $(this).addClass("select_option"); var times = $("#"+time_id).find(".select_hour_box .select_option").text() + ':' + $("#"+time_id).find(".select_minute_box .select_option").text(); $("#"+time_id).find(".timepicker input").val(times); }); $(".timepicker_box").on("click",function(e){ var time_id = this.id; $(".timepicker_select").not("#"+time_id+" .timepicker_select").animate({ height:'hide' },200); $("#"+this.id).find(".timepicker_select").animate({ height:'show' },200); e.stopPropagation(); }); }); $(document).on("click",function(e){ var time_id = this.id; $(".timepicker_select").animate({ height:'hide' },200); e.stopPropagation(); }); //。。。。。。。。。。。。。。。。。。。。。。。。。。。。// //No.2 分页 (function($){ var ms = { init:function(obj,args){ return (function(){ ms.fillHtml(obj,args); ms.bindEvent(obj,args); })(); }, //填充html fillHtml:function(obj,args){ return (function(){ obj.empty(); //上一页 if(args.current > 1){ obj.append(''); }else{ obj.remove('.prevPage'); obj.append(''); } //中间页码 if(args.current != 1 && args.current >= 4 && args.pageCount != 4){ obj.append(''+1+''); } if(args.current-2 > 2 && args.current <= args.pageCount && args.pageCount > 5){ obj.append('...'); } var start = args.current -2,end = args.current+2; if((start > 1 && args.current < 4)||args.current == 1){ end++; } if(args.current > args.pageCount-4 && args.current >= args.pageCount){ start--; } for (;start <= end; start++) { if(start <= args.pageCount && start >= 1){ if(start != args.current){ obj.append(''+ start +''); }else{ obj.append(''+ start +''); } } } if(args.current + 2 < args.pageCount - 1 && args.current >= 1 && args.pageCount > 5){ obj.append('...'); } if(args.current != args.pageCount && args.current < args.pageCount -2 && args.pageCount != 4){ obj.append(''+args.pageCount+''); } //下一页 if(args.current < args.pageCount){ obj.append(''); }else{ obj.remove('.nextPage'); obj.append(''); } obj.append('共'+args.pageCount+'页'); //跳转页码 if(args.turndown == 'true'){ obj.append('跳至确定'); } })(); }, //绑定事件 bindEvent:function(obj,args){ return (function(){ obj.off("click","a.tcdNumber"); //移除原有事件 避免重复绑定 obj.on("click","a.tcdNumber",function(){ var current = parseInt($(this).text()); ms.fillHtml(obj,{"current":current,"pageCount":args.pageCount,"turndown":args.turndown}); if(typeof(args.backFn)=="function"){ args.backFn(current); } }); //上一页 obj.off("click","a.prevPage"); //移除原有事件 避免重复绑定 obj.on("click","a.prevPage",function(){ var current = parseInt(obj.children("span.current").text()); ms.fillHtml(obj,{"current":current-1,"pageCount":args.pageCount,"turndown":args.turndown}); if(typeof(args.backFn)=="function"){ args.backFn(current-1); } }); //下一页 obj.off("click","a.nextPage"); //移除原有事件 避免重复绑定 obj.on("click","a.nextPage",function(){ var current = parseInt(obj.children("span.current").text()); ms.fillHtml(obj,{"current":current+1,"pageCount":args.pageCount,"turndown":args.turndown}); if(typeof(args.backFn)=="function"){ args.backFn(current+1); } }); //跳转 obj.off("click","a.turndown"); //移除原有事件 避免重复绑定 obj.on("click","a.turndown",function(){ var page = $("span.countYe input").val(); if(page.trim()==""){page=1;} page=parseInt(page); if(page==0){page=1;} if (page > args.pageCount) { ZZAlertInfo("您的输入有误,请重新输入!"); $("span.countYe input").val(''); $("span.countYe input").focus(); return; } ms.fillHtml(obj,{"current":page,"pageCount":args.pageCount,"turndown":args.turndown}); if(typeof(args.backFn)=="function"){ args.backFn(page); } // var page = parseInt($("span.countYe input").val()); // if (page > args.pageCount) { // ZZAlertInfo("您的输入有误,请重新输入!"); // return; // } // ms.fillHtml(obj,{"current":page,"pageCount":args.pageCount,"turndown":args.turndown}); // if(typeof(args.backFn)=="function"){ // args.backFn(page); // } }); })(); } } $.fn.createPage = function(options){ var args = $.extend({ pageCount : 10, current : 1, turndown:true, backFn : function(){} },options); ms.init(this,args); } })(jQuery); //NO.3 下拉筛选 (function (factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define(['jquery'], factory); } else if (typeof exports === 'object' && typeof require === 'function') { // Browserify factory(require('jquery')); } else { // Browser globals factory(jQuery); } }(function ( $, undefined ) { var pluginName = "comboSelect", dataKey = 'comboselect'; var defaults = { comboClass : 'combo-select', comboArrowClass : 'combo-arrow', comboDropDownClass : 'combo-dropdown', inputClass : 'combo-input text-input', disabledClass : 'option-disabled', hoverClass : 'option-hover', selectedClass : 'option-selected', markerClass : 'combo-marker', themeClass : '', maxHeight : 200, extendStyle : true, focusInput : true }; /** * Utility functions */ var keys = { ESC: 27, TAB: 9, RETURN: 13, LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, ENTER: 13, SHIFT: 16 }, isMobile = (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase())); /** * Constructor * @param {[Node]} element [Select element] * @param {[Object]} options [Option object] */ function Plugin ( element, options ) { /* Name of the plugin */ this._name = pluginName; /* Reverse lookup */ this.el = element /* Element */ this.$el = $(element) /* If multiple select: stop */ if(this.$el.prop('multiple')) return; /* Settings */ this.settings = $.extend( {}, defaults, options, this.$el.data() ); /* Defaults */ this._defaults = defaults; /* Options */ this.$options = this.$el.find('option, optgroup') /* Initialize */ this.init(); /* Instances */ $.fn[ pluginName ].instances.push(this); } $.extend(Plugin.prototype, { init: function () { /* Construct the comboselect */ this._construct(); /* Add event bindings */ this._events(); }, _construct: function(){ var self = this /** * Add negative TabIndex to `select` * Preserves previous tabindex */ this.$el.data('plugin_'+ dataKey + '_tabindex', this.$el.prop('tabindex')) /* Add a tab index for desktop browsers */ !isMobile && this.$el.prop("tabIndex", -1) /** * Wrap the Select */ this.$container = this.$el.wrapAll('
').parent(); /** * Check if select has a width attribute */ if(this.settings.extendStyle && this.$el.attr('style')){ this.$container.attr('style', this.$el.attr("style")) } /** * Append dropdown arrow */ this.$arrow = $('
').appendTo(this.$container) /** * Append dropdown */ this.$dropdown = $('
    ').appendTo(this.$container) /** * Create dropdown options */ var o = '', k = 0, p = ''; this.selectedIndex = this.$el.prop('selectedIndex') this.$options.each(function(i, e){ if(e.nodeName.toLowerCase() == 'optgroup'){ return o+='
  • '+this.label+'
  • ' } if(!e.value) p = e.innerHTML o+='
  • '+ (this.innerHTML) + '
  • ' k++; }) this.$dropdown.html(o) /** * Items */ this.$items = this.$dropdown.children(); /** * Append Input */ this.$input = $('').appendTo(this.$container) /* Update input text */ this._updateInput() }, _events: function(){ /* Input: focus */ this.$container.on('focus.input', 'input', $.proxy(this._focus, this)) /** * Input: mouseup * For input select() event to function correctly */ this.$container.on('mouseup.input', 'input', function(e){ e.preventDefault() }) /* Input: blur */ this.$container.on('blur.input', 'input', $.proxy(this._blur, this)) /* Select: change */ this.$el.on('change.select', $.proxy(this._change, this)) /* Select: focus */ this.$el.on('focus.select', $.proxy(this._focus, this)) /* Select: blur */ this.$el.on('blur.select', $.proxy(this._blurSelect, this)) /* Dropdown Arrow: click */ this.$container.on('click.arrow', '.'+this.settings.comboArrowClass , $.proxy(this._toggle, this)) /* Dropdown: close */ this.$container.on('comboselect:close', $.proxy(this._close, this)) /* Dropdown: open */ this.$container.on('comboselect:open', $.proxy(this._open, this)) /* HTML Click */ $('html').off('click.comboselect').on('click.comboselect', function(){ $.each($.fn[ pluginName ].instances, function(i, plugin){ plugin.$container.trigger('comboselect:close') }) }); /* Stop `event:click` bubbling */ this.$container.on('click.comboselect', function(e){ e.stopPropagation(); }) /* Input: keydown */ this.$container.on('keydown', 'input', $.proxy(this._keydown, this)) /* Input: keyup */ this.$container.on('keyup', 'input', $.proxy(this._keyup, this)) /* Dropdown item: click */ this.$container.on('click.item', '.option-item', $.proxy(this._select, this)) }, _keydown: function(event){ switch(event.which){ case keys.UP: this._move('up', event) break; case keys.DOWN: this._move('down', event) break; case keys.TAB: this._enter(event) break; case keys.RIGHT: this._autofill(event); break; case keys.ENTER: this._enter(event); break; default: break; } }, _keyup: function(event){ switch(event.which){ case keys.ESC: this.$container.trigger('comboselect:close') break; case keys.ENTER: case keys.UP: case keys.DOWN: case keys.LEFT: case keys.RIGHT: case keys.TAB: case keys.SHIFT: break; default: this._filter(event.target.value) break; } }, _enter: function(event){ var item = this._getHovered() item.length && this._select(item); /* Check if it enter key */ if(event && event.which == keys.ENTER){ if(!item.length) { /* Check if its illegal value */ this._blur(); return true; } event.preventDefault(); } }, _move: function(dir){ var items = this._getVisible(), current = this._getHovered(), index = current.prevAll('.option-item').filter(':visible').length, total = items.length switch(dir){ case 'up': index--; (index < 0) && (index = (total - 1)); break; case 'down': index++; (index >= total) && (index = 0); break; } items .removeClass(this.settings.hoverClass) .eq(index) .addClass(this.settings.hoverClass) if(!this.opened) this.$container.trigger('comboselect:open'); this._fixScroll() }, _select: function(event){ var item = event.currentTarget? $(event.currentTarget) : $(event); if(!item.length) return; /** * 1. get Index */ var index = item.data('index'); this._selectByIndex(index); this.$container.trigger('comboselect:close') }, _selectByIndex: function(index){ /** * Set selected index and trigger change * @type {[type]} */ if(typeof index == 'undefined'){ index = 0 } if(this.$el.prop('selectedIndex') != index){ this.$el.prop('selectedIndex', index).trigger('change'); } }, _autofill: function(){ var item = this._getHovered(); if(item.length){ var index = item.data('index') this._selectByIndex(index) } }, _filter: function(search){ var self = this, items = this._getAll(); needle = $.trim(search).toLowerCase(), reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g'), pattern = '(' + search.replace(reEscape, '\\$1') + ')'; /** * Unwrap all markers */ $('.'+self.settings.markerClass, items).contents().unwrap(); /* Search */ if(needle){ /* Hide Disabled and optgroups */ this.$items.filter('.option-group, .option-disabled').hide(); items .hide() .filter(function(){ var $this = $(this), text = $.trim($this.text()).toLowerCase(); /* Found */ if(text.toString().indexOf(needle) != -1){ /** * Wrap the selection */ $this .html(function(index, oldhtml){ return oldhtml.replace(new RegExp(pattern, 'gi'), '$1') }) return true } }) .show() }else{ this.$items.show(); } /* Open the comboselect */ this.$container.trigger('comboselect:open') }, _highlight: function(){ /* 1. Check if there is a selected item 2. Add hover class to it 3. If not add hover class to first item */ var visible = this._getVisible().removeClass(this.settings.hoverClass), $selected = visible.filter('.'+this.settings.selectedClass) if($selected.length){ $selected.addClass(this.settings.hoverClass); }else{ visible .removeClass(this.settings.hoverClass) .first() .addClass(this.settings.hoverClass) } }, _updateInput: function(){ var selected = this.$el.prop('selectedIndex') if(this.$el.val()){ text = this.$el.find('option').eq(selected).text() this.$input.val(text) }else{ this.$input.val('') } return this._getAll() .removeClass(this.settings.selectedClass) .filter(function(){ return $(this).data('index') == selected }) .addClass(this.settings.selectedClass) }, _blurSelect: function(){ this.$container.removeClass('combo-focus'); }, _focus: function(event){ /* Toggle focus class */ this.$container.toggleClass('combo-focus', !this.opened); /* If mobile: stop */ if(isMobile) return; /* Open combo */ if(!this.opened) this.$container.trigger('comboselect:open'); /* Select the input */ this.settings.focusInput && event && event.currentTarget && event.currentTarget.nodeName == 'INPUT' && event.currentTarget.select() }, _blur: function(){ /** * 1. Get hovered item * 2. If not check if input value == select option * 3. If none */ var val = $.trim(this.$input.val().toLowerCase()), isNumber = !isNaN(val); var index = this.$options.filter(function(){ if(isNumber){ return parseInt($.trim(this.innerHTML).toLowerCase()) == val } return $.trim(this.innerHTML).toLowerCase() == val }).prop('index') /* Select by Index */ this._selectByIndex(index) }, _change: function(){ this._updateInput(); }, _getAll: function(){ return this.$items.filter('.option-item') }, _getVisible: function(){ return this.$items.filter('.option-item').filter(':visible') }, _getHovered: function(){ return this._getVisible().filter('.' + this.settings.hoverClass); }, _open: function(){ var self = this this.$container.addClass('combo-open') this.opened = true /* Focus input field */ this.settings.focusInput && setTimeout(function(){ !self.$input.is(':focus') && self.$input.focus(); }); /* Highligh the items */ this._highlight() /* Fix scroll */ this._fixScroll() /* Close all others */ $.each($.fn[ pluginName ].instances, function(i, plugin){ if(plugin != self && plugin.opened) plugin.$container.trigger('comboselect:close') }) }, _toggle: function(){ this.opened? this._close.call(this) : this._open.call(this) }, _close: function(){ this.$container.removeClass('combo-open combo-focus') this.$container.trigger('comboselect:closed') this.opened = false /* Show all items */ this.$items.show(); }, _fixScroll: function(){ /** * If dropdown is hidden */ if(this.$dropdown.is(':hidden')) return; /** * Else */ var item = this._getHovered(); if(!item.length) return; /** * Scroll */ var offsetTop, upperBound, lowerBound, heightDelta = item.outerHeight() offsetTop = item[0].offsetTop; upperBound = this.$dropdown.scrollTop(); lowerBound = upperBound + this.settings.maxHeight - heightDelta; if (offsetTop < upperBound) { this.$dropdown.scrollTop(offsetTop); } else if (offsetTop > lowerBound) { this.$dropdown.scrollTop(offsetTop - this.settings.maxHeight + heightDelta); } }, /** * Destroy API */ dispose: function(){ /* Remove combo arrow, input, dropdown */ this.$arrow.remove() this.$input.remove() this.$dropdown.remove() /* Remove tabindex property */ this.$el .removeAttr("tabindex") /* Check if there is a tabindex set before */ if(!!this.$el.data('plugin_'+ dataKey + '_tabindex')){ this.$el.prop('tabindex', this.$el.data('plugin_'+ dataKey + '_tabindex')) } /* Unwrap */ this.$el.unwrap() /* Remove data */ this.$el.removeData('plugin_'+dataKey) /* Remove tabindex data */ this.$el.removeData('plugin_'+dataKey + '_tabindex') /* Remove change event on select */ this.$el.off('change.select focus.select blur.select'); } }); // A really lightweight plugin wrapper around the constructor, // preventing against multiple instantiations $.fn[ pluginName ] = function ( options, args ) { this.each(function() { var $e = $(this), instance = $e.data('plugin_'+dataKey) if (typeof options === 'string') { if (instance && typeof instance[options] === 'function') { instance[options](args); } }else{ if (instance && instance.dispose) { instance.dispose(); } $.data( this, "plugin_" + dataKey, new Plugin( this, options ) ); } }); // chain jQuery functions return this; }; $.fn[ pluginName ].instances = []; })); //No.4日历 (function(a) { if(typeof define === "function" && define.amd) { define(["jquery"], a) } else { if(typeof exports === "object") { a(require("jquery")) } else { a(jQuery) } } }(function(d, f) { if(!("indexOf" in Array.prototype)) { Array.prototype.indexOf = function(k, j) { if(j === f) { j = 0 } if(j < 0) { j += this.length } if(j < 0) { j = 0 } for(var l = this.length; j < l; j++) { if(j in this && this[j] === k) { return j } } return -1 } } function a() { var q, k, p, l, j, n, m, o; k = (new Date()).toString(); p = ((m = k.split("(")[1]) !== null ? m.slice(0, -1) : 0) || k.split(" "); if(p instanceof Array) { n = []; for(var l = 0, j = p.length; l < j; l++) { o = p[l]; if((q = (m = o.match(/\b[A-Z]+\b/)) !== null) ? m[0] : 0) { n.push(q) } } p = n.pop() } return p } function h() { return new Date(Date.UTC.apply(Date, arguments)) } var g = function(k, j) { var m = this; this.element = d(k); this.container = j.container || "body"; this.language = j.language || this.element.data("date-language") || "en"; this.language = this.language in e ? this.language : this.language.split("-")[0]; this.language = this.language in e ? this.language : "en"; this.isRTL = e[this.language].rtl || false; this.formatType = j.formatType || this.element.data("format-type") || "standard"; this.format = c.parseFormat(j.format || this.element.data("date-format") || e[this.language].format || c.getDefaultFormat(this.formatType, "input"), this.formatType); this.isInline = false; this.isVisible = false; this.isInput = this.element.is("input"); this.fontAwesome = j.fontAwesome || this.element.data("font-awesome") || false; this.bootcssVer = j.bootcssVer || (this.isInput ? (this.element.is(".form-control") ? 3 : 2) : (this.bootcssVer = this.element.is(".input-group") ? 3 : 2)); this.component = this.element.is(".date") ? (this.bootcssVer === 3 ? this.element.find(".input-group-addon .glyphicon-th, .input-group-addon .glyphicon-time, .input-group-addon .glyphicon-remove, .input-group-addon .glyphicon-calendar, .input-group-addon .fa-calendar, .input-group-addon .fa-clock-o").parent() : this.element.find(".add-on .icon-th, .add-on .icon-time, .add-on .icon-calendar, .add-on .fa-calendar, .add-on .fa-clock-o").parent()) : false; this.componentReset = this.element.is(".date") ? (this.bootcssVer === 3 ? this.element.find(".input-group-addon .glyphicon-remove, .input-group-addon .fa-times").parent() : this.element.find(".add-on .icon-remove, .add-on .fa-times").parent()) : false; this.hasInput = this.component && this.element.find("input").length; if(this.component && this.component.length === 0) { this.component = false } this.linkField = j.linkField || this.element.data("link-field") || false; this.linkFormat = c.parseFormat(j.linkFormat || this.element.data("link-format") || c.getDefaultFormat(this.formatType, "link"), this.formatType); this.minuteStep = j.minuteStep || this.element.data("minute-step") || 5; this.pickerPosition = j.pickerPosition || this.element.data("picker-position") || "bottom-right"; this.showMeridian = j.showMeridian || this.element.data("show-meridian") || false; this.initialDate = j.initialDate || new Date(); this.zIndex = j.zIndex || this.element.data("z-index") || f; this.title = typeof j.title === "undefined" ? false : j.title; this.timezone = j.timezone || a(); this.icons = { leftArrow: this.fontAwesome ? "fa-arrow-left" : (this.bootcssVer === 3 ? "glyphicon-arrow-left" : "glyphicon-arrow-left"), rightArrow: this.fontAwesome ? "fa-arrow-right" : (this.bootcssVer === 3 ? "glyphicon-arrow-right" : "glyphicon-arrow-right") }; this.icontype = this.fontAwesome ? "fa" : "glyphicon"; this._attachEvents(); this.clickedOutside = function(n) { if(d(n.target).closest(".datetimepicker").length === 0) { m.hide() } }; this.formatViewType = "datetime"; if("formatViewType" in j) { this.formatViewType = j.formatViewType } else { if("formatViewType" in this.element.data()) { this.formatViewType = this.element.data("formatViewType") } } this.minView = 0; if("minView" in j) { this.minView = j.minView } else { if("minView" in this.element.data()) { this.minView = this.element.data("min-view") } } this.minView = c.convertViewMode(this.minView); this.maxView = c.modes.length - 1; if("maxView" in j) { this.maxView = j.maxView } else { if("maxView" in this.element.data()) { this.maxView = this.element.data("max-view") } } this.maxView = c.convertViewMode(this.maxView); this.wheelViewModeNavigation = false; if("wheelViewModeNavigation" in j) { this.wheelViewModeNavigation = j.wheelViewModeNavigation } else { if("wheelViewModeNavigation" in this.element.data()) { this.wheelViewModeNavigation = this.element.data("view-mode-wheel-navigation") } } this.wheelViewModeNavigationInverseDirection = false; if("wheelViewModeNavigationInverseDirection" in j) { this.wheelViewModeNavigationInverseDirection = j.wheelViewModeNavigationInverseDirection } else { if("wheelViewModeNavigationInverseDirection" in this.element.data()) { this.wheelViewModeNavigationInverseDirection = this.element.data("view-mode-wheel-navigation-inverse-dir") } } this.wheelViewModeNavigationDelay = 100; if("wheelViewModeNavigationDelay" in j) { this.wheelViewModeNavigationDelay = j.wheelViewModeNavigationDelay } else { if("wheelViewModeNavigationDelay" in this.element.data()) { this.wheelViewModeNavigationDelay = this.element.data("view-mode-wheel-navigation-delay") } } this.startViewMode = 2; if("startView" in j) { this.startViewMode = j.startView } else { if("startView" in this.element.data()) { this.startViewMode = this.element.data("start-view") } } this.startViewMode = c.convertViewMode(this.startViewMode); this.viewMode = this.startViewMode; this.viewSelect = this.minView; if("viewSelect" in j) { this.viewSelect = j.viewSelect } else { if("viewSelect" in this.element.data()) { this.viewSelect = this.element.data("view-select") } } this.viewSelect = c.convertViewMode(this.viewSelect); this.forceParse = true; if("forceParse" in j) { this.forceParse = j.forceParse } else { if("dateForceParse" in this.element.data()) { this.forceParse = this.element.data("date-force-parse") } } var l = this.bootcssVer === 3 ? c.templateV3 : c.template; while(l.indexOf("{iconType}") !== -1) { l = l.replace("{iconType}", this.icontype) } while(l.indexOf("{leftArrow}") !== -1) { l = l.replace("{leftArrow}", this.icons.leftArrow) } while(l.indexOf("{rightArrow}") !== -1) { l = l.replace("{rightArrow}", this.icons.rightArrow) } this.picker = d(l).appendTo(this.isInline ? this.element : this.container).on({ click: d.proxy(this.click, this), mousedown: d.proxy(this.mousedown, this) }); if(this.wheelViewModeNavigation) { if(d.fn.mousewheel) { this.picker.on({ mousewheel: d.proxy(this.mousewheel, this) }) } else { console.log("Mouse Wheel event is not supported. Please include the jQuery Mouse Wheel plugin before enabling this option") } } if(this.isInline) { this.picker.addClass("datetimepicker-inline") } else { this.picker.addClass("datetimepicker-dropdown-" + this.pickerPosition + " dropdown-menu") } if(this.isRTL) { this.picker.addClass("datetimepicker-rtl"); var i = this.bootcssVer === 3 ? ".prev span, .next span" : ".prev i, .next i"; this.picker.find(i).toggleClass(this.icons.leftArrow + " " + this.icons.rightArrow) } d(document).on("mousedown touchend", this.clickedOutside); this.autoclose = false; if("autoclose" in j) { this.autoclose = j.autoclose } else { if("dateAutoclose" in this.element.data()) { this.autoclose = this.element.data("date-autoclose") } } this.keyboardNavigation = true; if("keyboardNavigation" in j) { this.keyboardNavigation = j.keyboardNavigation } else { if("dateKeyboardNavigation" in this.element.data()) { this.keyboardNavigation = this.element.data("date-keyboard-navigation") } } this.todayBtn = (j.todayBtn || this.element.data("date-today-btn") || false); this.clearBtn = (j.clearBtn || this.element.data("date-clear-btn") || false); this.todayHighlight = (j.todayHighlight || this.element.data("date-today-highlight") || false); this.weekStart = 0; if(typeof j.weekStart !== "undefined") { this.weekStart = j.weekStart } else { if(typeof this.element.data("date-weekstart") !== "undefined") { this.weekStart = this.element.data("date-weekstart") } else { if(typeof e[this.language].weekStart !== "undefined") { this.weekStart = e[this.language].weekStart } } } this.weekStart = this.weekStart % 7; this.weekEnd = ((this.weekStart + 6) % 7); this.onRenderDay = function(n) { var p = (j.onRenderDay || function() { return [] })(n); if(typeof p === "string") { p = [p] } var o = ["day"]; return o.concat((p ? p : [])) }; this.onRenderHour = function(n) { var p = (j.onRenderHour || function() { return [] })(n); var o = ["hour"]; if(typeof p === "string") { p = [p] } return o.concat((p ? p : [])) }; this.onRenderMinute = function(n) { var p = (j.onRenderMinute || function() { return [] })(n); var o = ["minute"]; if(typeof p === "string") { p = [p] } if(n < this.startDate || n > this.endDate) { o.push("disabled") } else { if(Math.floor(this.date.getUTCMinutes() / this.minuteStep) === Math.floor(n.getUTCMinutes() / this.minuteStep)) { o.push("active") } } return o.concat((p ? p : [])) }; this.onRenderYear = function(n) { var p = (j.onRenderYear || function() { return [] })(n); var o = ["year"]; if(typeof p === "string") { p = [p] } if(this.date.getUTCFullYear() === n.getUTCFullYear()) { o.push("active") } if(n < this.startDate || n > this.endDate) { o.push("disabled") } return o.concat((p ? p : [])) }; this.onRenderMonth = function(n) { var p = (j.onRenderMonth || function() { return [] })(n); var o = ["month"]; if(typeof p === "string") { p = [p] } return o.concat((p ? p : [])) }; this.startDate = new Date(-8639968443048000); this.endDate = new Date(8639968443048000); this.datesDisabled = []; this.daysOfWeekDisabled = []; this.setStartDate(j.startDate || this.element.data("date-startdate")); this.setEndDate(j.endDate || this.element.data("date-enddate")); this.setDatesDisabled(j.datesDisabled || this.element.data("date-dates-disabled")); this.setDaysOfWeekDisabled(j.daysOfWeekDisabled || this.element.data("date-days-of-week-disabled")); this.setMinutesDisabled(j.minutesDisabled || this.element.data("date-minute-disabled")); this.setHoursDisabled(j.hoursDisabled || this.element.data("date-hour-disabled")); this.fillDow(); this.fillMonths(); this.update(); this.showMode(); if(this.isInline) { this.show() } }; g.prototype = { constructor: g, _events: [], _attachEvents: function() { this._detachEvents(); if(this.isInput) { this._events = [ [this.element, { focus: d.proxy(this.show, this), keyup: d.proxy(this.update, this), keydown: d.proxy(this.keydown, this) }] ] } else { if(this.component && this.hasInput) { this._events = [ [this.element.find("input"), { focus: d.proxy(this.show, this), keyup: d.proxy(this.update, this), keydown: d.proxy(this.keydown, this) }], [this.component, { click: d.proxy(this.show, this) }] ]; if(this.componentReset) { this._events.push([this.componentReset, { click: d.proxy(this.reset, this) }]) } } else { if(this.element.is("div")) { this.isInline = true } else { this._events = [ [this.element, { click: d.proxy(this.show, this) }] ] } } } for(var j = 0, k, l; j < this._events.length; j++) { k = this._events[j][0]; l = this._events[j][1]; k.on(l) } }, _detachEvents: function() { for(var j = 0, k, l; j < this._events.length; j++) { k = this._events[j][0]; l = this._events[j][1]; k.off(l) } this._events = [] }, show: function(i) { this.picker.show(); this.height = this.component ? this.component.outerHeight() : this.element.outerHeight(); if(this.forceParse) { this.update() } this.place(); d(window).on("resize", d.proxy(this.place, this)); if(i) { i.stopPropagation(); i.preventDefault() } this.isVisible = true; this.element.trigger({ type: "show", date: this.date }) }, hide: function() { if(!this.isVisible) { return } if(this.isInline) { return } this.picker.hide(); d(window).off("resize", this.place); this.viewMode = this.startViewMode; this.showMode(); if(!this.isInput) { d(document).off("mousedown", this.hide) } if(this.forceParse && (this.isInput && this.element.val() || this.hasInput && this.element.find("input").val())) { this.setValue() } this.isVisible = false; this.element.trigger({ type: "hide", date: this.date }) }, remove: function() { this._detachEvents(); d(document).off("mousedown", this.clickedOutside); this.picker.remove(); delete this.picker; delete this.element.data().datetimepicker }, getDate: function() { var i = this.getUTCDate(); if(i === null) { return null } return new Date(i.getTime() + (i.getTimezoneOffset() * 60000)) }, getUTCDate: function() { return this.date }, getInitialDate: function() { return this.initialDate }, setInitialDate: function(i) { this.initialDate = i }, setDate: function(i) { this.setUTCDate(new Date(i.getTime() - (i.getTimezoneOffset() * 60000))) }, setUTCDate: function(i) { if(i >= this.startDate && i <= this.endDate) { this.date = i; this.setValue(); this.viewDate = this.date; this.fill() } else { this.element.trigger({ type: "outOfRange", date: i, startDate: this.startDate, endDate: this.endDate }) } }, setFormat: function(j) { this.format = c.parseFormat(j, this.formatType); var i; if(this.isInput) { i = this.element } else { if(this.component) { i = this.element.find("input") } } if(i && i.val()) { this.setValue() } }, setValue: function() { var i = this.getFormattedDate(); if(!this.isInput) { if(this.component) { this.element.find("input").val(i) } this.element.data("date", i) } else { this.element.val(i) } if(this.linkField) { d("#" + this.linkField).val(this.getFormattedDate(this.linkFormat)) } }, getFormattedDate: function(i) { i = i || this.format; return c.formatDate(this.date, i, this.language, this.formatType, this.timezone) }, setStartDate: function(i) { this.startDate = i || this.startDate; if(this.startDate.valueOf() !== 8639968443048000) { this.startDate = c.parseDate(this.startDate, this.format, this.language, this.formatType, this.timezone) } this.update(); this.updateNavArrows() }, setEndDate: function(i) { this.endDate = i || this.endDate; if(this.endDate.valueOf() !== 8639968443048000) { this.endDate = c.parseDate(this.endDate, this.format, this.language, this.formatType, this.timezone) } this.update(); this.updateNavArrows() }, setDatesDisabled: function(j) { this.datesDisabled = j || []; if(!d.isArray(this.datesDisabled)) { this.datesDisabled = this.datesDisabled.split(/,\s*/) } var i = this; this.datesDisabled = d.map(this.datesDisabled, function(k) { return c.parseDate(k, i.format, i.language, i.formatType, i.timezone).toDateString() }); this.update(); this.updateNavArrows() }, setTitle: function(i, j) { return this.picker.find(i).find("th:eq(1)").text(this.title === false ? j : this.title) }, setDaysOfWeekDisabled: function(i) { this.daysOfWeekDisabled = i || []; if(!d.isArray(this.daysOfWeekDisabled)) { this.daysOfWeekDisabled = this.daysOfWeekDisabled.split(/,\s*/) } this.daysOfWeekDisabled = d.map(this.daysOfWeekDisabled, function(j) { return parseInt(j, 10) }); this.update(); this.updateNavArrows() }, setMinutesDisabled: function(i) { this.minutesDisabled = i || []; if(!d.isArray(this.minutesDisabled)) { this.minutesDisabled = this.minutesDisabled.split(/,\s*/) } this.minutesDisabled = d.map(this.minutesDisabled, function(j) { return parseInt(j, 10) }); this.update(); this.updateNavArrows() }, setHoursDisabled: function(i) { this.hoursDisabled = i || []; if(!d.isArray(this.hoursDisabled)) { this.hoursDisabled = this.hoursDisabled.split(/,\s*/) } this.hoursDisabled = d.map(this.hoursDisabled, function(j) { return parseInt(j, 10) }); this.update(); this.updateNavArrows() }, place: function() { if(this.isInline) { return } if(!this.zIndex) { var j = 0; d("div").each(function() { var o = parseInt(d(this).css("zIndex"), 10); if(o > j) { j = o } }); this.zIndex = j + 10 } var n, m, l, k; if(this.container instanceof d) { k = this.container.offset() } else { k = d(this.container).offset() } if(this.component) { n = this.component.offset(); l = n.left; if(this.pickerPosition === "bottom-left" || this.pickerPosition === "top-left") { l += this.component.outerWidth() - this.picker.outerWidth() } } else { n = this.element.offset(); l = n.left; if(this.pickerPosition === "bottom-left" || this.pickerPosition === "top-left") { l += this.element.outerWidth() - this.picker.outerWidth() } } var i = document.body.clientWidth || window.innerWidth; if(l + 220 > i) { l = i - 220 } if(this.pickerPosition === "top-left" || this.pickerPosition === "top-right") { m = n.top - this.picker.outerHeight() } else { m = n.top + this.height } m = m - k.top; l = l - k.left; this.picker.css({ top: m, left: l, zIndex: this.zIndex }) }, update: function() { var i, j = false; if(arguments && arguments.length && (typeof arguments[0] === "string" || arguments[0] instanceof Date)) { i = arguments[0]; j = true } else { i = (this.isInput ? this.element.val() : this.element.find("input").val()) || this.element.data("date") || this.initialDate; if(typeof i === "string") { i = i.replace(/^\s+|\s+$/g, "") } } if(!i) { i = new Date(); j = false } this.date = c.parseDate(i, this.format, this.language, this.formatType, this.timezone); if(j) { this.setValue() } if(this.date < this.startDate) { this.viewDate = new Date(this.startDate) } else { if(this.date > this.endDate) { this.viewDate = new Date(this.endDate) } else { this.viewDate = new Date(this.date) } } this.fill() }, fillDow: function() { var i = this.weekStart, j = ""; while(i < this.weekStart + 7) { j += '' + e[this.language].daysMin[(i++) % 7] + "" } j += ""; this.picker.find(".datetimepicker-days thead").append(j) }, fillMonths: function() { var l = ""; var m = new Date(this.viewDate); for(var k = 0; k < 12; k++) { m.setUTCMonth(k); var j = this.onRenderMonth(m); l += '' + e[this.language].monthsShort[k] + "" } this.picker.find(".datetimepicker-months td").html(l) }, fill: function() { if(!this.date || !this.viewDate) { return } var E = new Date(this.viewDate), t = E.getUTCFullYear(), G = E.getUTCMonth(), n = E.getUTCDate(), A = E.getUTCHours(), w = this.startDate.getUTCFullYear(), B = this.startDate.getUTCMonth(), p = this.endDate.getUTCFullYear(), x = this.endDate.getUTCMonth() + 1, q = (new h(this.date.getUTCFullYear(), this.date.getUTCMonth(), this.date.getUTCDate())).valueOf(), D = new Date(); this.setTitle(".datetimepicker-days", e[this.language].months[G] + " " + t); if(this.formatViewType === "time") { var k = this.getFormattedDate(); this.setTitle(".datetimepicker-hours", k); this.setTitle(".datetimepicker-minutes", k) } else { this.setTitle(".datetimepicker-hours", n + " " + e[this.language].months[G] + " " + t); this.setTitle(".datetimepicker-minutes", n + " " + e[this.language].months[G] + " " + t) } this.picker.find("tfoot th.today").text(e[this.language].today || e.en.today).toggle(this.todayBtn !== false); this.picker.find("tfoot th.clear").text(e[this.language].clear || e.en.clear).toggle(this.clearBtn !== false); this.updateNavArrows(); this.fillMonths(); var I = h(t, G - 1, 28, 0, 0, 0, 0), z = c.getDaysInMonth(I.getUTCFullYear(), I.getUTCMonth()); I.setUTCDate(z); I.setUTCDate(z - (I.getUTCDay() - this.weekStart + 7) % 7); var j = new Date(I); j.setUTCDate(j.getUTCDate() + 42); j = j.valueOf(); var r = []; var F; while(I.valueOf() < j) { if(I.getUTCDay() === this.weekStart) { r.push("") } F = this.onRenderDay(I); if(I.getUTCFullYear() < t || (I.getUTCFullYear() === t && I.getUTCMonth() < G)) { F.push("old") } else { if(I.getUTCFullYear() > t || (I.getUTCFullYear() === t && I.getUTCMonth() > G)) { F.push("new") } } if(this.todayHighlight && I.getUTCFullYear() === D.getFullYear() && I.getUTCMonth() === D.getMonth() && I.getUTCDate() === D.getDate()) { F.push("today") } if(I.valueOf() === q) { F.push("active") } if((I.valueOf() + 86400000) <= this.startDate || I.valueOf() > this.endDate || d.inArray(I.getUTCDay(), this.daysOfWeekDisabled) !== -1 || d.inArray(I.toDateString(), this.datesDisabled) !== -1) { F.push("disabled") } r.push('' + I.getUTCDate() + ""); if(I.getUTCDay() === this.weekEnd) { r.push("") } I.setUTCDate(I.getUTCDate() + 1) } this.picker.find(".datetimepicker-days tbody").empty().append(r.join("")); r = []; var u = "", C = "", s = ""; var l = this.hoursDisabled || []; E = new Date(this.viewDate); for(var y = 0; y < 24; y++) { E.setUTCHours(y); F = this.onRenderHour(E); if(l.indexOf(y) !== -1) { F.push("disabled") } var v = h(t, G, n, y); if((v.valueOf() + 3600000) <= this.startDate || v.valueOf() > this.endDate) { F.push("disabled") } else { if(A === y) { F.push("active") } } if(this.showMeridian && e[this.language].meridiem.length === 2) { C = (y < 12 ? e[this.language].meridiem[0] : e[this.language].meridiem[1]); if(C !== s) { if(s !== "") { r.push("") } r.push('
    ' + C.toUpperCase() + "") } s = C; u = (y % 12 ? y % 12 : 12); if(y < 12) { F.push("hour_am") } else { F.push("hour_pm") } r.push('' + u + ""); if(y === 23) { r.push("
    ") } } else { u = y + ":00"; r.push('' + u + "") } } this.picker.find(".datetimepicker-hours td").html(r.join("")); r = []; u = ""; C = ""; s = ""; var m = this.minutesDisabled || []; E = new Date(this.viewDate); for(var y = 0; y < 60; y += this.minuteStep) { if(m.indexOf(y) !== -1) { continue } E.setUTCMinutes(y); E.setUTCSeconds(0); F = this.onRenderMinute(E); if(this.showMeridian && e[this.language].meridiem.length === 2) { C = (A < 12 ? e[this.language].meridiem[0] : e[this.language].meridiem[1]); if(C !== s) { if(s !== "") { r.push("") } r.push('
    ' + C.toUpperCase() + "") } s = C; u = (A % 12 ? A % 12 : 12); r.push('' + u + ":" + (y < 10 ? "0" + y : y) + ""); if(y === 59) { r.push("
    ") } } else { u = y + ":00"; r.push('' + A + ":" + (y < 10 ? "0" + y : y) + "") } } this.picker.find(".datetimepicker-minutes td").html(r.join("")); var J = this.date.getUTCFullYear(); var o = this.setTitle(".datetimepicker-months", t).end().find(".month").removeClass("active"); if(J === t) { o.eq(this.date.getUTCMonth()).addClass("active") } if(t < w || t > p) { o.addClass("disabled") } if(t === w) { o.slice(0, B).addClass("disabled") } if(t === p) { o.slice(x).addClass("disabled") } r = ""; t = parseInt(t / 10, 10) * 10; var H = this.setTitle(".datetimepicker-years", t + "-" + (t + 9)).end().find("td"); t -= 1; E = new Date(this.viewDate); for(var y = -1; y < 11; y++) { E.setUTCFullYear(t); F = this.onRenderYear(E); if(y === -1 || y === 10) { F.push(b) } r += '' + t + ""; t += 1 } H.html(r); this.place() }, updateNavArrows: function() { var m = new Date(this.viewDate), k = m.getUTCFullYear(), l = m.getUTCMonth(), j = m.getUTCDate(), i = m.getUTCHours(); switch(this.viewMode) { case 0: if(k <= this.startDate.getUTCFullYear() && l <= this.startDate.getUTCMonth() && j <= this.startDate.getUTCDate() && i <= this.startDate.getUTCHours()) { this.picker.find(".prev").css({ visibility: "hidden" }) } else { this.picker.find(".prev").css({ visibility: "visible" }) } if(k >= this.endDate.getUTCFullYear() && l >= this.endDate.getUTCMonth() && j >= this.endDate.getUTCDate() && i >= this.endDate.getUTCHours()) { this.picker.find(".next").css({ visibility: "hidden" }) } else { this.picker.find(".next").css({ visibility: "visible" }) } break; case 1: if(k <= this.startDate.getUTCFullYear() && l <= this.startDate.getUTCMonth() && j <= this.startDate.getUTCDate()) { this.picker.find(".prev").css({ visibility: "hidden" }) } else { this.picker.find(".prev").css({ visibility: "visible" }) } if(k >= this.endDate.getUTCFullYear() && l >= this.endDate.getUTCMonth() && j >= this.endDate.getUTCDate()) { this.picker.find(".next").css({ visibility: "hidden" }) } else { this.picker.find(".next").css({ visibility: "visible" }) } break; case 2: if(k <= this.startDate.getUTCFullYear() && l <= this.startDate.getUTCMonth()) { this.picker.find(".prev").css({ visibility: "hidden" }) } else { this.picker.find(".prev").css({ visibility: "visible" }) } if(k >= this.endDate.getUTCFullYear() && l >= this.endDate.getUTCMonth()) { this.picker.find(".next").css({ visibility: "hidden" }) } else { this.picker.find(".next").css({ visibility: "visible" }) } break; case 3: case 4: if(k <= this.startDate.getUTCFullYear()) { this.picker.find(".prev").css({ visibility: "hidden" }) } else { this.picker.find(".prev").css({ visibility: "visible" }) } if(k >= this.endDate.getUTCFullYear()) { this.picker.find(".next").css({ visibility: "hidden" }) } else { this.picker.find(".next").css({ visibility: "visible" }) } break } }, mousewheel: function(j) { j.preventDefault(); j.stopPropagation(); if(this.wheelPause) { return } this.wheelPause = true; var i = j.originalEvent; var l = i.wheelDelta; var k = l > 0 ? 1 : (l === 0) ? 0 : -1; if(this.wheelViewModeNavigationInverseDirection) { k = -k } this.showMode(k); setTimeout(d.proxy(function() { this.wheelPause = false }, this), this.wheelViewModeNavigationDelay) }, click: function(m) { m.stopPropagation(); m.preventDefault(); var n = d(m.target).closest("span, td, th, legend"); if(n.is("." + this.icontype)) { n = d(n).parent().closest("span, td, th, legend") } if(n.length === 1) { if(n.is(".disabled")) { this.element.trigger({ type: "outOfRange", date: this.viewDate, startDate: this.startDate, endDate: this.endDate }); return } switch(n[0].nodeName.toLowerCase()) { case "th": switch(n[0].className) { case "switch": this.showMode(1); break; case "prev": case "next": var i = c.modes[this.viewMode].navStep * (n[0].className === "prev" ? -1 : 1); switch(this.viewMode) { case 0: this.viewDate = this.moveHour(this.viewDate, i); break; case 1: this.viewDate = this.moveDate(this.viewDate, i); break; case 2: this.viewDate = this.moveMonth(this.viewDate, i); break; case 3: case 4: this.viewDate = this.moveYear(this.viewDate, i); break } this.fill(); this.element.trigger({ type: n[0].className + ":" + this.convertViewModeText(this.viewMode), date: this.viewDate, startDate: this.startDate, endDate: this.endDate }); break; case "clear": this.reset(); if(this.autoclose) { this.hide() } break; case "today": var j = new Date(); j = h(j.getFullYear(), j.getMonth(), j.getDate(), j.getHours(), j.getMinutes(), j.getSeconds(), 0); if(j < this.startDate) { j = this.startDate } else { if(j > this.endDate) { j = this.endDate } } this.viewMode = this.startViewMode; this.showMode(0); this._setDate(j); this.fill(); if(this.autoclose) { this.hide() } break } break; case "span": if(!n.is(".disabled")) { var p = this.viewDate.getUTCFullYear(), o = this.viewDate.getUTCMonth(), q = this.viewDate.getUTCDate(), r = this.viewDate.getUTCHours(), k = this.viewDate.getUTCMinutes(), s = this.viewDate.getUTCSeconds(); if(n.is(".month")) { this.viewDate.setUTCDate(1); o = n.parent().find("span").index(n); q = this.viewDate.getUTCDate(); this.viewDate.setUTCMonth(o); this.element.trigger({ type: "changeMonth", date: this.viewDate }); if(this.viewSelect >= 3) { this._setDate(h(p, o, q, r, k, s, 0)) } } else { if(n.is(".year")) { this.viewDate.setUTCDate(1); p = parseInt(n.text(), 10) || 0; this.viewDate.setUTCFullYear(p); this.element.trigger({ type: "changeYear", date: this.viewDate }); if(this.viewSelect >= 4) { this._setDate(h(p, o, q, r, k, s, 0)) } } else { if(n.is(".hour")) { r = parseInt(n.text(), 10) || 0; if(n.hasClass("hour_am") || n.hasClass("hour_pm")) { if(r === 12 && n.hasClass("hour_am")) { r = 0 } else { if(r !== 12 && n.hasClass("hour_pm")) { r += 12 } } } this.viewDate.setUTCHours(r); this.element.trigger({ type: "changeHour", date: this.viewDate }); if(this.viewSelect >= 1) { this._setDate(h(p, o, q, r, k, s, 0)) } } else { if(n.is(".minute")) { k = parseInt(n.text().substr(n.text().indexOf(":") + 1), 10) || 0; this.viewDate.setUTCMinutes(k); this.element.trigger({ type: "changeMinute", date: this.viewDate }); if(this.viewSelect >= 0) { this._setDate(h(p, o, q, r, k, s, 0)) } } } } } if(this.viewMode !== 0) { var l = this.viewMode; this.showMode(-1); this.fill(); if(l === this.viewMode && this.autoclose) { this.hide() } } else { this.fill(); if(this.autoclose) { this.hide() } } } break; case "td": if(n.is(".day") && !n.is(".disabled")) { var q = parseInt(n.text(), 10) || 1; var p = this.viewDate.getUTCFullYear(), o = this.viewDate.getUTCMonth(), r = this.viewDate.getUTCHours(), k = this.viewDate.getUTCMinutes(), s = this.viewDate.getUTCSeconds(); if(n.is(".old")) { if(o === 0) { o = 11; p -= 1 } else { o -= 1 } } else { if(n.is(".new")) { if(o === 11) { o = 0; p += 1 } else { o += 1 } } } this.viewDate.setUTCFullYear(p); this.viewDate.setUTCMonth(o, q); this.element.trigger({ type: "changeDay", date: this.viewDate }); if(this.viewSelect >= 2) { this._setDate(h(p, o, q, r, k, s, 0)) } } var l = this.viewMode; this.showMode(-1); this.fill(); if(l === this.viewMode && this.autoclose) { this.hide() } break } } }, _setDate: function(i, k) { if(!k || k === "date") { this.date = i } if(!k || k === "view") { this.viewDate = i } this.fill(); this.setValue(); var j; if(this.isInput) { j = this.element } else { if(this.component) { j = this.element.find("input") } } if(j) { j.change() } this.element.trigger({ type: "changeDate", date: this.getDate() }); if(i === null) { this.date = this.viewDate } }, moveMinute: function(j, i) { if(!i) { return j } var k = new Date(j.valueOf()); k.setUTCMinutes(k.getUTCMinutes() + (i * this.minuteStep)); return k }, moveHour: function(j, i) { if(!i) { return j } var k = new Date(j.valueOf()); k.setUTCHours(k.getUTCHours() + i); return k }, moveDate: function(j, i) { if(!i) { return j } var k = new Date(j.valueOf()); k.setUTCDate(k.getUTCDate() + i); return k }, moveMonth: function(j, k) { if(!k) { return j } var n = new Date(j.valueOf()), r = n.getUTCDate(), o = n.getUTCMonth(), m = Math.abs(k), q, p; k = k > 0 ? 1 : -1; if(m === 1) { p = k === -1 ? function() { return n.getUTCMonth() === o } : function() { return n.getUTCMonth() !== q }; q = o + k; n.setUTCMonth(q); if(q < 0 || q > 11) { q = (q + 12) % 12 } } else { for(var l = 0; l < m; l++) { n = this.moveMonth(n, k) } q = n.getUTCMonth(); n.setUTCDate(r); p = function() { return q !== n.getUTCMonth() } } while(p()) { n.setUTCDate(--r); n.setUTCMonth(q) } return n }, moveYear: function(j, i) { return this.moveMonth(j, i * 12) }, dateWithinRange: function(i) { return i >= this.startDate && i <= this.endDate }, keydown: function(o) { if(this.picker.is(":not(:visible)")) { if(o.keyCode === 27) { this.show() } return } var k = false, j, i, n; switch(o.keyCode) { case 27: this.hide(); o.preventDefault(); break; case 37: case 39: if(!this.keyboardNavigation) { break } j = o.keyCode === 37 ? -1 : 1; var m = this.viewMode; if(o.ctrlKey) { m += 2 } else { if(o.shiftKey) { m += 1 } } if(m === 4) { i = this.moveYear(this.date, j); n = this.moveYear(this.viewDate, j) } else { if(m === 3) { i = this.moveMonth(this.date, j); n = this.moveMonth(this.viewDate, j) } else { if(m === 2) { i = this.moveDate(this.date, j); n = this.moveDate(this.viewDate, j) } else { if(m === 1) { i = this.moveHour(this.date, j); n = this.moveHour(this.viewDate, j) } else { if(m === 0) { i = this.moveMinute(this.date, j); n = this.moveMinute(this.viewDate, j) } } } } } if(this.dateWithinRange(i)) { this.date = i; this.viewDate = n; this.setValue(); this.update(); o.preventDefault(); k = true } break; case 38: case 40: if(!this.keyboardNavigation) { break } j = o.keyCode === 38 ? -1 : 1; m = this.viewMode; if(o.ctrlKey) { m += 2 } else { if(o.shiftKey) { m += 1 } } if(m === 4) { i = this.moveYear(this.date, j); n = this.moveYear(this.viewDate, j) } else { if(m === 3) { i = this.moveMonth(this.date, j); n = this.moveMonth(this.viewDate, j) } else { if(m === 2) { i = this.moveDate(this.date, j * 7); n = this.moveDate(this.viewDate, j * 7) } else { if(m === 1) { if(this.showMeridian) { i = this.moveHour(this.date, j * 6); n = this.moveHour(this.viewDate, j * 6) } else { i = this.moveHour(this.date, j * 4); n = this.moveHour(this.viewDate, j * 4) } } else { if(m === 0) { i = this.moveMinute(this.date, j * 4); n = this.moveMinute(this.viewDate, j * 4) } } } } } if(this.dateWithinRange(i)) { this.date = i; this.viewDate = n; this.setValue(); this.update(); o.preventDefault(); k = true } break; case 13: if(this.viewMode !== 0) { var p = this.viewMode; this.showMode(-1); this.fill(); if(p === this.viewMode && this.autoclose) { this.hide() } } else { this.fill(); if(this.autoclose) { this.hide() } } o.preventDefault(); break; case 9: this.hide(); break } if(k) { var l; if(this.isInput) { l = this.element } else { if(this.component) { l = this.element.find("input") } } if(l) { l.change() } this.element.trigger({ type: "changeDate", date: this.getDate() }) } }, showMode: function(i) { if(i) { var j = Math.max(0, Math.min(c.modes.length - 1, this.viewMode + i)); if(j >= this.minView && j <= this.maxView) { this.element.trigger({ type: "changeMode", date: this.viewDate, oldViewMode: this.viewMode, newViewMode: j }); this.viewMode = j } } this.picker.find(">div").hide().filter(".datetimepicker-" + c.modes[this.viewMode].clsName).css("display", "block"); this.updateNavArrows() }, reset: function() { this._setDate(null, "date") }, convertViewModeText: function(i) { switch(i) { case 4: return "decade"; case 3: return "year"; case 2: return "month"; case 1: return "day"; case 0: return "hour" } } }; var b = d.fn.datetimepicker; d.fn.datetimepicker = function(k) { var i = Array.apply(null, arguments); i.shift(); var j; this.each(function() { var n = d(this), m = n.data("datetimepicker"), l = typeof k === "object" && k; if(!m) { n.data("datetimepicker", (m = new g(this, d.extend({}, d.fn.datetimepicker.defaults, l)))) } if(typeof k === "string" && typeof m[k] === "function") { j = m[k].apply(m, i); if(j !== f) { return false } } }); if(j !== f) { return j } else { return this } }; d.fn.datetimepicker.defaults = {}; d.fn.datetimepicker.Constructor = g; var e = d.fn.datetimepicker.dates = { en: { days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"], 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"], suffix: ["st", "nd", "rd", "th"], today: "Today", clear: "Clear" } }; var c = { modes: [{ clsName: "minutes", navFnc: "Hours", navStep: 1 }, { clsName: "hours", navFnc: "Date", navStep: 1 }, { clsName: "days", navFnc: "Month", navStep: 1 }, { clsName: "months", navFnc: "FullYear", navStep: 1 }, { clsName: "years", navFnc: "FullYear", navStep: 10 }], isLeapYear: function(i) { return(((i % 4 === 0) && (i % 100 !== 0)) || (i % 400 === 0)) }, getDaysInMonth: function(i, j) { return [31, (c.isLeapYear(i) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][j] }, getDefaultFormat: function(i, j) { if(i === "standard") { if(j === "input") { return "yyyy-mm-dd hh:ii" } else { return "yyyy-mm-dd hh:ii:ss" } } else { if(i === "php") { if(j === "input") { return "Y-m-d H:i" } else { return "Y-m-d H:i:s" } } else { throw new Error("Invalid format type.") } } }, validParts: function(i) { if(i === "standard") { return /t|hh?|HH?|p|P|z|Z|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g } else { if(i === "php") { return /[dDjlNwzFmMnStyYaABgGhHis]/g } else { throw new Error("Invalid format type.") } } }, nonpunctuation: /[^ -\/:-@\[-`{-~\t\n\rTZ]+/g, parseFormat: function(l, j) { var i = l.replace(this.validParts(j), "\0").split("\0"), k = l.match(this.validParts(j)); if(!i || !i.length || !k || k.length === 0) { throw new Error("Invalid date format.") } return { separators: i, parts: k } }, parseDate: function(A, y, v, j, r) { if(A instanceof Date) { var u = new Date(A.valueOf() - A.getTimezoneOffset() * 60000); u.setMilliseconds(0); return u } if(/^\d{4}\-\d{1,2}\-\d{1,2}$/.test(A)) { y = this.parseFormat("yyyy-mm-dd", j) } if(/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}$/.test(A)) { y = this.parseFormat("yyyy-mm-dd hh:ii", j) } if(/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}\:\d{1,2}[Z]{0,1}$/.test(A)) { y = this.parseFormat("yyyy-mm-dd hh:ii:ss", j) } if(/^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(A)) { var l = /([-+]\d+)([dmwy])/, q = A.match(/([-+]\d+)([dmwy])/g), t, p; A = new Date(); for(var x = 0; x < q.length; x++) { t = l.exec(q[x]); p = parseInt(t[1]); switch(t[2]) { case "d": A.setUTCDate(A.getUTCDate() + p); break; case "m": A = g.prototype.moveMonth.call(g.prototype, A, p); break; case "w": A.setUTCDate(A.getUTCDate() + p * 7); break; case "y": A = g.prototype.moveYear.call(g.prototype, A, p); break } } return h(A.getUTCFullYear(), A.getUTCMonth(), A.getUTCDate(), A.getUTCHours(), A.getUTCMinutes(), A.getUTCSeconds(), 0) } var q = A && A.toString().match(this.nonpunctuation) || [], A = new Date(0, 0, 0, 0, 0, 0, 0), m = {}, z = ["hh", "h", "ii", "i", "ss", "s", "yyyy", "yy", "M", "MM", "m", "mm", "D", "DD", "d", "dd", "H", "HH", "p", "P", "z", "Z"], o = { hh: function(s, i) { return s.setUTCHours(i) }, h: function(s, i) { return s.setUTCHours(i) }, HH: function(s, i) { return s.setUTCHours(i === 12 ? 0 : i) }, H: function(s, i) { return s.setUTCHours(i === 12 ? 0 : i) }, ii: function(s, i) { return s.setUTCMinutes(i) }, i: function(s, i) { return s.setUTCMinutes(i) }, ss: function(s, i) { return s.setUTCSeconds(i) }, s: function(s, i) { return s.setUTCSeconds(i) }, yyyy: function(s, i) { return s.setUTCFullYear(i) }, yy: function(s, i) { return s.setUTCFullYear(2000 + i) }, m: function(s, i) { i -= 1; while(i < 0) { i += 12 } i %= 12; s.setUTCMonth(i); while(s.getUTCMonth() !== i) { if(isNaN(s.getUTCMonth())) { return s } else { s.setUTCDate(s.getUTCDate() - 1) } } return s }, d: function(s, i) { return s.setUTCDate(i) }, p: function(s, i) { return s.setUTCHours(i === 1 ? s.getUTCHours() + 12 : s.getUTCHours()) }, z: function() { return r } }, B, k, t; o.M = o.MM = o.mm = o.m; o.dd = o.d; o.P = o.p; o.Z = o.z; A = h(A.getFullYear(), A.getMonth(), A.getDate(), A.getHours(), A.getMinutes(), A.getSeconds()); if(q.length === y.parts.length) { for(var x = 0, w = y.parts.length; x < w; x++) { B = parseInt(q[x], 10); t = y.parts[x]; if(isNaN(B)) { switch(t) { case "MM": k = d(e[v].months).filter(function() { var i = this.slice(0, q[x].length), s = q[x].slice(0, i.length); return i === s }); B = d.inArray(k[0], e[v].months) + 1; break; case "M": k = d(e[v].monthsShort).filter(function() { var i = this.slice(0, q[x].length), s = q[x].slice(0, i.length); return i.toLowerCase() === s.toLowerCase() }); B = d.inArray(k[0], e[v].monthsShort) + 1; break; case "p": case "P": B = d.inArray(q[x].toLowerCase(), e[v].meridiem); break; case "z": case "Z": r; break } } m[t] = B } for(var x = 0, n; x < z.length; x++) { n = z[x]; if(n in m && !isNaN(m[n])) { o[n](A, m[n]) } } } return A }, formatDate: function(l, q, m, p, o) { if(l === null) { return "" } var k; if(p === "standard") { k = { t: l.getTime(), yy: l.getUTCFullYear().toString().substring(2), yyyy: l.getUTCFullYear(), m: l.getUTCMonth() + 1, M: e[m].monthsShort[l.getUTCMonth()], MM: e[m].months[l.getUTCMonth()], d: l.getUTCDate(), D: e[m].daysShort[l.getUTCDay()], DD: e[m].days[l.getUTCDay()], p: (e[m].meridiem.length === 2 ? e[m].meridiem[l.getUTCHours() < 12 ? 0 : 1] : ""), h: l.getUTCHours(), i: l.getUTCMinutes(), s: l.getUTCSeconds(), z: o }; if(e[m].meridiem.length === 2) { k.H = (k.h % 12 === 0 ? 12 : k.h % 12) } else { k.H = k.h } k.HH = (k.H < 10 ? "0" : "") + k.H; k.P = k.p.toUpperCase(); k.Z = k.z; k.hh = (k.h < 10 ? "0" : "") + k.h; k.ii = (k.i < 10 ? "0" : "") + k.i; k.ss = (k.s < 10 ? "0" : "") + k.s; k.dd = (k.d < 10 ? "0" : "") + k.d; k.mm = (k.m < 10 ? "0" : "") + k.m } else { if(p === "php") { k = { y: l.getUTCFullYear().toString().substring(2), Y: l.getUTCFullYear(), F: e[m].months[l.getUTCMonth()], M: e[m].monthsShort[l.getUTCMonth()], n: l.getUTCMonth() + 1, t: c.getDaysInMonth(l.getUTCFullYear(), l.getUTCMonth()), j: l.getUTCDate(), l: e[m].days[l.getUTCDay()], D: e[m].daysShort[l.getUTCDay()], w: l.getUTCDay(), N: (l.getUTCDay() === 0 ? 7 : l.getUTCDay()), S: (l.getUTCDate() % 10 <= e[m].suffix.length ? e[m].suffix[l.getUTCDate() % 10 - 1] : ""), a: (e[m].meridiem.length === 2 ? e[m].meridiem[l.getUTCHours() < 12 ? 0 : 1] : ""), g: (l.getUTCHours() % 12 === 0 ? 12 : l.getUTCHours() % 12), G: l.getUTCHours(), i: l.getUTCMinutes(), s: l.getUTCSeconds() }; k.m = (k.n < 10 ? "0" : "") + k.n; k.d = (k.j < 10 ? "0" : "") + k.j; k.A = k.a.toString().toUpperCase(); k.h = (k.g < 10 ? "0" : "") + k.g; k.H = (k.G < 10 ? "0" : "") + k.G; k.i = (k.i < 10 ? "0" : "") + k.i; k.s = (k.s < 10 ? "0" : "") + k.s } else { throw new Error("Invalid format type.") } } var l = [], r = d.extend([], q.separators); for(var n = 0, j = q.parts.length; n < j; n++) { if(r.length) { l.push(r.shift()) } l.push(k[q.parts[n]]) } if(r.length) { l.push(r.shift()) } return l.join("") }, convertViewMode: function(i) { switch(i) { case 4: case "decade": i = 4; break; case 3: case "year": i = 3; break; case 2: case "month": i = 2; break; case 1: case "day": i = 1; break; case 0: case "hour": i = 0; break } return i }, headTemplate: '', headTemplateV3: ' ', contTemplate: '', footTemplate: '' }; c.template = '
    ' + c.headTemplate + c.contTemplate + c.footTemplate + '
    ' + c.headTemplate + c.contTemplate + c.footTemplate + '
    ' + c.headTemplate + "" + c.footTemplate + '
    ' + c.headTemplate + c.contTemplate + c.footTemplate + '
    ' + c.headTemplate + c.contTemplate + c.footTemplate + "
    "; c.templateV3 = '
    ' + c.headTemplateV3 + c.contTemplate + c.footTemplate + '
    ' + c.headTemplateV3 + c.contTemplate + c.footTemplate + '
    ' + c.headTemplateV3 + "" + c.footTemplate + '
    ' + c.headTemplateV3 + c.contTemplate + c.footTemplate + '
    ' + c.headTemplateV3 + c.contTemplate + c.footTemplate + "
    "; d.fn.datetimepicker.DPGlobal = c; d.fn.datetimepicker.noConflict = function() { d.fn.datetimepicker = b; return this }; d(document).on("focus.datetimepicker.data-api click.datetimepicker.data-api", '[data-provide="datetimepicker"]', function(j) { var i = d(this); if(i.data("datetimepicker")) { return } j.preventDefault(); i.datetimepicker("show") }); d(function() { d('[data-provide="datetimepicker-inline"]').datetimepicker() }) }));