UNPKG

datetimepicker

Version:

Responsive flat design jQuery DateTime Picker plugin for Web & Mobile

1,574 lines (1,357 loc) 99.3 kB
/* ----------------------------------------------------------------------------- jQuery DateTimePicker - Responsive flat design jQuery DateTime Picker plugin for Web & Mobile Version 0.1.39 Copyright (c)2014-2019 Lajpat Shah Contributors : https://github.com/nehakadam/DateTimePicker/contributors Repository : https://github.com/nehakadam/DateTimePicker Documentation : https://nehakadam.github.io/DateTimePicker ----------------------------------------------------------------------------- */ /* Support Object.keys in IE8 */ if(!Object.keys) { Object.keys = function(obj) { var keys = []; for (var i in obj) { if (obj.hasOwnProperty(i)) { keys.push(i); } } return keys; }; } $.DateTimePicker = $.DateTimePicker || { name: "DateTimePicker", i18n: {}, // Internationalization Objects defaults: //Plugin Defaults { mode: "date", defaultDate: null, dateSeparator: "-", timeSeparator: ":", timeMeridiemSeparator: " ", dateTimeSeparator: " ", monthYearSeparator: " ", dateTimeFormat: "dd-MM-yyyy HH:mm", dateFormat: "dd-MM-yyyy", timeFormat: "HH:mm", maxDate: null, minDate: null, maxTime: null, minTime: null, maxDateTime: null, minDateTime: null, shortDayNames: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], fullDayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], shortMonthNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], fullMonthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], labels: null, /*{"year": "Year", "month": "Month", "day": "Day", "hour": "Hour", "minutes": "Minutes", "seconds": "Seconds", "meridiem": "Meridiem"}*/ minuteInterval: 1, roundOffMinutes: true, secondsInterval: 1, roundOffSeconds: true, showHeader: true, titleContentDate: "Set Date", titleContentTime: "Set Time", titleContentDateTime: "Set Date & Time", buttonsToDisplay: ["HeaderCloseButton", "SetButton", "ClearButton"], setButtonContent: "Set", clearButtonContent: "Clear", incrementButtonContent: "+", decrementButtonContent: "-", setValueInTextboxOnEveryClick: false, readonlyInputs: false, animationDuration: 400, touchHoldInterval: 300, // in Milliseconds captureTouchHold: false, // capture Touch Hold Event mouseHoldInterval: 50, // in Milliseconds captureMouseHold: false, // capture Mouse Hold Event isPopup: true, parentElement: "body", isInline: false, inputElement: null, language: "", init: null, // init(oDateTimePicker) addEventHandlers: null, // addEventHandlers(oDateTimePicker) beforeShow: null, // beforeShow(oInputElement) afterShow: null, // afterShow(oInputElement) beforeHide: null, // beforeHide(oInputElement) afterHide: null, // afterHide(oInputElement) buttonClicked: null, // buttonClicked(sButtonType, oInputElement) where sButtonType = "SET"|"CLEAR"|"CANCEL"|"TAB" settingValueOfElement: null, // settingValueOfElement(sValue, dDateTime, oInputElement) formatHumanDate: null, // formatHumanDate(oDateTime, sMode, sFormat) parseDateTimeString: null, // parseDateTimeString(sDateTime, sMode, sFormat, oInputField) formatDateTimeString: null // formatDateTimeString(oDateTime, sMode, sFormat, oInputField) }, dataObject: // Temporary Variables For Calculation Specific to DateTimePicker Instance { dCurrentDate: new Date(), iCurrentDay: 0, iCurrentMonth: 0, iCurrentYear: 0, iCurrentHour: 0, iCurrentMinutes: 0, iCurrentSeconds: 0, sCurrentMeridiem: "", iMaxNumberOfDays: 0, sDateFormat: "", sTimeFormat: "", sDateTimeFormat: "", dMinValue: null, dMaxValue: null, sArrInputDateFormats: [], sArrInputTimeFormats: [], sArrInputDateTimeFormats: [], bArrMatchFormat: [], bDateMode: false, bTimeMode: false, bDateTimeMode: false, oInputElement: null, iTabIndex: 0, bElemFocused: false, bIs12Hour: false, sTouchButton: null, iTouchStart: null, oTimeInterval: null, bIsTouchDevice: "ontouchstart" in document.documentElement } }; $.cf = { _isValid: function(sValue) { return (sValue !== undefined && sValue !== null && sValue !== ""); }, _compare: function(sString1, sString2) { var bString1 = (sString1 !== undefined && sString1 !== null), bString2 = (sString2 !== undefined && sString2 !== null); if(bString1 && bString2) { if(sString1.toLowerCase() === sString2.toLowerCase()) return true; else return false; } else return false; } }; (function (factory) { if(typeof define === "function" && define.amd) { // AMD. Register as an anonymous module. define(["jquery"], factory); } else if(typeof exports === "object") { // Node/CommonJS module.exports = factory(require("jquery")); } else { // Browser globals factory(jQuery); } }(function ($) { "use strict"; function DateTimePicker(element, options) { this.element = element; var sLanguage = ""; sLanguage = ($.cf._isValid(options) && $.cf._isValid(options.language)) ? options.language : $.DateTimePicker.defaults.language; this.settings = $.extend({}, $.DateTimePicker.defaults, $.DateTimePicker.i18n[sLanguage], options); this.options = options; this.oData = $.extend({}, $.DateTimePicker.dataObject); this._defaults = $.DateTimePicker.defaults; this._name = $.DateTimePicker.name; this.init(); } $.fn.DateTimePicker = function (options) { var oDTP = $(this).data(), sArrDataKeys = oDTP ? Object.keys(oDTP) : [], iKey, sKey; if(typeof options === "string") { if($.cf._isValid(oDTP)) { if(options === "destroy") { if(sArrDataKeys.length > 0) { for(iKey in sArrDataKeys) { sKey = sArrDataKeys[iKey]; if(sKey.search("plugin_DateTimePicker") !== -1) { $(document).unbind("click.DateTimePicker keydown.DateTimePicker keyup.DateTimePicker"); $(this).children().remove(); $(this).removeData(); $(this).unbind(); $(this).removeClass("dtpicker-overlay dtpicker-mobile dtpicker-inline"); oDTP = oDTP[sKey]; console.log("Destroyed DateTimePicker Object"); console.log(oDTP); break; } } } else { console.log("No DateTimePicker Object Defined For This Element"); } } else if(options === "object") { if(sArrDataKeys.length > 0) { for(iKey in sArrDataKeys) { sKey = sArrDataKeys[iKey]; if(sKey.search("plugin_DateTimePicker") !== -1) { return oDTP[sKey]; } } } else { console.log("No DateTimePicker Object Defined For This Element"); } } } } else { return this.each(function() { $.removeData(this, "plugin_DateTimePicker"); if(!$.data(this, "plugin_DateTimePicker")) $.data(this, "plugin_DateTimePicker", new DateTimePicker(this, options)); }); } }; DateTimePicker.prototype = { // Public Method init: function () { var oDTP = this; oDTP._setDateFormatArray(); // Set DateFormatArray oDTP._setTimeFormatArray(); // Set TimeFormatArray oDTP._setDateTimeFormatArray(); // Set DateTimeFormatArray console.log($(oDTP.element).data('parentelement') + " " + $(oDTP.element).attr('data-parentelement')); if($(oDTP.element).data('parentelement') !== undefined) { oDTP.settings.parentElement = $(oDTP.element).data('parentelement'); } if(oDTP.settings.isPopup && !oDTP.settings.isInline) { oDTP._createPicker(); $(oDTP.element).addClass("dtpicker-mobile"); } if(oDTP.settings.isInline) { oDTP._createPicker(); oDTP._showPicker(oDTP.settings.inputElement); } if(oDTP.settings.init) oDTP.settings.init.call(oDTP); oDTP._addEventHandlersForInput(); }, _setDateFormatArray: function() { var oDTP = this; oDTP.oData.sArrInputDateFormats = []; var sDate = ""; // 0 - "dd-MM-yyyy" sDate = "dd" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "yyyy"; oDTP.oData.sArrInputDateFormats.push(sDate); // 1 - "MM-dd-yyyy" sDate = "MM" + oDTP.settings.dateSeparator + "dd" + oDTP.settings.dateSeparator + "yyyy"; oDTP.oData.sArrInputDateFormats.push(sDate); // 2 - "yyyy-MM-dd" sDate = "yyyy" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "dd"; oDTP.oData.sArrInputDateFormats.push(sDate); // 3 - "dd-MMM-yyyy" sDate = "dd" + oDTP.settings.dateSeparator + "MMM" + oDTP.settings.dateSeparator + "yyyy"; oDTP.oData.sArrInputDateFormats.push(sDate); // 4 - "MM yyyy" sDate = "MM" + oDTP.settings.monthYearSeparator + "yyyy"; oDTP.oData.sArrInputDateFormats.push(sDate); // 5 - "MMM yyyy" sDate = "MMM" + oDTP.settings.monthYearSeparator + "yyyy"; oDTP.oData.sArrInputDateFormats.push(sDate); // 6 - "MMM yyyy" sDate = "MMMM" + oDTP.settings.monthYearSeparator + "yyyy"; oDTP.oData.sArrInputDateFormats.push(sDate); // 7 - "yyyy MM" sDate = "yyyy" + oDTP.settings.monthYearSeparator + "MM"; oDTP.oData.sArrInputDateFormats.push(sDate); }, _setTimeFormatArray: function() { var oDTP = this; oDTP.oData.sArrInputTimeFormats = []; var sTime = ""; // 0 - "hh:mm:ss AA" sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss" + oDTP.settings.timeMeridiemSeparator + "AA"; oDTP.oData.sArrInputTimeFormats.push(sTime); // 1 - "HH:mm:ss" sTime = "HH" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss"; oDTP.oData.sArrInputTimeFormats.push(sTime); // 2 - "hh:mm AA" sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeMeridiemSeparator + "AA"; oDTP.oData.sArrInputTimeFormats.push(sTime); // 3 - "HH:mm" sTime = "HH" + oDTP.settings.timeSeparator + "mm"; oDTP.oData.sArrInputTimeFormats.push(sTime); }, _setDateTimeFormatArray: function() { var oDTP = this; oDTP.oData.sArrInputDateTimeFormats = []; var sDate = "", sTime = "", sDateTime = ""; // 0 - "dd-MM-yyyy HH:mm:ss" sDate = "dd" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "yyyy"; sTime = "HH" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); // 1 - "dd-MM-yyyy hh:mm:ss AA" sDate = "dd" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "yyyy"; sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss" + oDTP.settings.timeMeridiemSeparator + "AA"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); // 2 - "MM-dd-yyyy HH:mm:ss" sDate = "MM" + oDTP.settings.dateSeparator + "dd" + oDTP.settings.dateSeparator + "yyyy"; sTime = "HH" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); // 3 - "MM-dd-yyyy hh:mm:ss AA" sDate = "MM" + oDTP.settings.dateSeparator + "dd" + oDTP.settings.dateSeparator + "yyyy"; sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss" + oDTP.settings.timeMeridiemSeparator + "AA"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); // 4 - "yyyy-MM-dd HH:mm:ss" sDate = "yyyy" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "dd"; sTime = "HH" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); // 5 - "yyyy-MM-dd hh:mm:ss AA" sDate = "yyyy" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "dd"; sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss" + oDTP.settings.timeMeridiemSeparator + "AA"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); // 6 - "dd-MMM-yyyy hh:mm:ss" sDate = "dd" + oDTP.settings.dateSeparator + "MMM" + oDTP.settings.dateSeparator + "yyyy"; sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); // 7 - "dd-MMM-yyyy hh:mm:ss AA" sDate = "dd" + oDTP.settings.dateSeparator + "MMM" + oDTP.settings.dateSeparator + "yyyy"; sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss" + oDTP.settings.timeMeridiemSeparator + "AA"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); //-------------- // 8 - "dd-MM-yyyy HH:mm" sDate = "dd" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "yyyy"; sTime = "HH" + oDTP.settings.timeSeparator + "mm"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); // 9 - "dd-MM-yyyy hh:mm AA" sDate = "dd" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "yyyy"; sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeMeridiemSeparator + "AA"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); // 10 - "MM-dd-yyyy HH:mm" sDate = "MM" + oDTP.settings.dateSeparator + "dd" + oDTP.settings.dateSeparator + "yyyy"; sTime = "HH" + oDTP.settings.timeSeparator + "mm"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); // 11 - "MM-dd-yyyy hh:mm AA" sDate = "MM" + oDTP.settings.dateSeparator + "dd" + oDTP.settings.dateSeparator + "yyyy"; sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeMeridiemSeparator + "AA"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); // 12 - "yyyy-MM-dd HH:mm" sDate = "yyyy" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "dd"; sTime = "HH" + oDTP.settings.timeSeparator + "mm"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); // 13 - "yyyy-MM-dd hh:mm AA" sDate = "yyyy" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "dd"; sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeMeridiemSeparator + "AA"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); // 14 - "dd-MMM-yyyy hh:mm" sDate = "dd" + oDTP.settings.dateSeparator + "MMM" + oDTP.settings.dateSeparator + "yyyy"; sTime = "hh" + oDTP.settings.timeSeparator + "mm"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); // 15 - "dd-MMM-yyyy hh:mm AA" sDate = "dd" + oDTP.settings.dateSeparator + "MMM" + oDTP.settings.dateSeparator + "yyyy"; sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeMeridiemSeparator + "AA"; sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime; oDTP.oData.sArrInputDateTimeFormats.push(sDateTime); }, _matchFormat: function(sMode, sFormat) { var oDTP = this; oDTP.oData.bArrMatchFormat = []; oDTP.oData.bDateMode = false; oDTP.oData.bTimeMode = false; oDTP.oData.bDateTimeMode = false; var oArrInput = [], iTempIndex; sMode = $.cf._isValid(sMode) ? sMode : oDTP.settings.mode; if($.cf._compare(sMode, "date")) { sFormat = $.cf._isValid(sFormat) ? sFormat : oDTP.oData.sDateFormat; oDTP.oData.bDateMode = true; oArrInput = oDTP.oData.sArrInputDateFormats; } else if($.cf._compare(sMode, "time")) { sFormat = $.cf._isValid(sFormat) ? sFormat : oDTP.oData.sTimeFormat; oDTP.oData.bTimeMode = true; oArrInput = oDTP.oData.sArrInputTimeFormats; } else if($.cf._compare(sMode, "datetime")) { sFormat = $.cf._isValid(sFormat) ? sFormat : oDTP.oData.sDateTimeFormat; oDTP.oData.bDateTimeMode = true; oArrInput = oDTP.oData.sArrInputDateTimeFormats; } for(iTempIndex = 0; iTempIndex < oArrInput.length; iTempIndex++) { oDTP.oData.bArrMatchFormat.push( $.cf._compare(sFormat, oArrInput[iTempIndex]) ); } }, _setMatchFormat: function(iArgsLength, sMode, sFormat) { var oDTP = this; if(iArgsLength > 0) oDTP._matchFormat(sMode, sFormat); }, _createPicker: function() { var oDTP = this; if(oDTP.settings.isInline) { $(oDTP.element).addClass("dtpicker-inline"); } else { $(oDTP.element).addClass("dtpicker-overlay"); $(".dtpicker-overlay").click(function(e) { oDTP._hidePicker(""); }); } var sTempStr = ""; sTempStr += "<div class='dtpicker-bg'>"; sTempStr += "<div class='dtpicker-cont'>"; sTempStr += "<div class='dtpicker-content'>"; sTempStr += "<div class='dtpicker-subcontent'>"; sTempStr += "</div>"; sTempStr += "</div>"; sTempStr += "</div>"; sTempStr += "</div>"; $(oDTP.element).html(sTempStr); }, _addEventHandlersForInput: function() { var oDTP = this; if(!oDTP.settings.isInline) { oDTP.oData.oInputElement = null; $(oDTP.settings.parentElement).find("input[type='date'], input[type='time'], input[type='datetime']").each(function() { $(this).attr("data-field", $(this).attr("type")); $(this).attr("type", "text"); }); var sel = "[data-field='date'], [data-field='time'], [data-field='datetime']"; $(oDTP.settings.parentElement).off("focus", sel, oDTP._inputFieldFocus) .on ("focus", sel, {"obj": oDTP}, oDTP._inputFieldFocus) $(oDTP.settings.parentElement).off("click", sel, oDTP._inputFieldClick) .on ("click", sel, {"obj": oDTP}, oDTP._inputFieldClick); } if(oDTP.settings.addEventHandlers) oDTP.settings.addEventHandlers.call(oDTP); }, _inputFieldFocus: function(e) { var oDTP = e.data.obj; oDTP.showDateTimePicker(this); oDTP.oData.bMouseDown = false; }, _inputFieldClick: function(e) { var oDTP = e.data.obj; if(!$.cf._compare($(this).prop("tagName"), "input")) { oDTP.showDateTimePicker(this); } e.stopPropagation(); }, // Public Method getDateObjectForInputField: function(oInputField) { var oDTP = this; if($.cf._isValid(oInputField)) { var sDateTime = oDTP._getValueOfElement(oInputField), sMode = $(oInputField).data("field"), sFormat = "", dInput; if(!$.cf._isValid(sMode)) sMode = oDTP.settings.mode; if(! oDTP.settings.formatDateTimeString) { sFormat = $(oInputField).data("format"); if(!$.cf._isValid(sFormat)) { if($.cf._compare(sMode, "date")) sFormat = oDTP.settings.dateFormat; else if($.cf._compare(sMode, "time")) sFormat = oDTP.settings.timeFormat; else if($.cf._compare(sMode, "datetime")) sFormat = oDTP.settings.dateTimeFormat; } oDTP._matchFormat(sMode, sFormat); if($.cf._compare(sMode, "date")) dInput = oDTP._parseDate(sDateTime); else if($.cf._compare(sMode, "time")) dInput = oDTP._parseTime(sDateTime); else if($.cf._compare(sMode, "datetime")) dInput = oDTP._parseDateTime(sDateTime); } else { dInput = oDTP.settings.parseDateTimeString.call(oDTP, sDateTime, sMode, sFormat, $(oInputField)); } return dInput; } }, // Public Method setDateTimeStringInInputField: function(oInputField, dInput) { var oDTP = this; dInput = dInput || oDTP.oData.dCurrentDate; var oArrElements; if($.cf._isValid(oInputField)) { oArrElements = []; if(typeof oInputField === "string") oArrElements.push(oInputField); else if(typeof oInputField === "object") oArrElements = oInputField; } else { if($.cf._isValid(oDTP.settings.parentElement)) { oArrElements = $(oDTP.settings.parentElement).find("[data-field='date'], [data-field='time'], [data-field='datetime']"); } else { oArrElements = $("[data-field='date'], [data-field='time'], [data-field='datetime']"); } } oArrElements.each(function() { var oElement = this, sMode, sFormat, bIs12Hour, sOutput; sMode = $(oElement).data("field"); if(!$.cf._isValid(sMode)) sMode = oDTP.settings.mode; sFormat = "Custom"; bIs12Hour = false; if(! oDTP.settings.formatDateTimeString) { sFormat = $(oElement).data("format"); if(!$.cf._isValid(sFormat)) { if($.cf._compare(sMode, "date")) sFormat = oDTP.settings.dateFormat; else if($.cf._compare(sMode, "time")) sFormat = oDTP.settings.timeFormat; else if($.cf._compare(sMode, "datetime")) sFormat = oDTP.settings.dateTimeFormat; } bIs12Hour = oDTP.getIs12Hour(sMode, sFormat); } sOutput = oDTP._setOutput(sMode, sFormat, bIs12Hour, dInput, oElement); oDTP._setValueOfElement(sOutput, $(oElement)); }); }, // Public Method getDateTimeStringInFormat: function(sMode, sFormat, dInput) { var oDTP = this; return oDTP._setOutput(sMode, sFormat, oDTP.getIs12Hour(sMode, sFormat), dInput); }, // Public Method showDateTimePicker: function(oElement) { var oDTP = this; if(oDTP.oData.oInputElement !== null) { if(!oDTP.settings.isInline) oDTP._hidePicker(0, oElement); } else oDTP._showPicker(oElement); }, _setButtonAction: function(bFromTab) { var oDTP = this; if(oDTP.oData.oInputElement !== null) { oDTP._setValueOfElement(oDTP._setOutput()); if(bFromTab) { if(oDTP.settings.buttonClicked) oDTP.settings.buttonClicked.call(oDTP, "TAB", oDTP.oData.oInputElement); if(!oDTP.settings.isInline) oDTP._hidePicker(0); } else { if(!oDTP.settings.isInline) oDTP._hidePicker(""); } } }, _setOutput: function(sMode, sFormat, bIs12Hour, dCurrentDate, oElement) { var oDTP = this; dCurrentDate = $.cf._isValid(dCurrentDate) ? dCurrentDate : oDTP.oData.dCurrentDate; bIs12Hour = bIs12Hour || oDTP.oData.bIs12Hour; var oDTV = oDTP._setVariablesForDate(dCurrentDate, true, true); var sOutput = "", oFDate = oDTP._formatDate(oDTV), oFTime = oDTP._formatTime(oDTV), oFDT = $.extend({}, oFDate, oFTime), sDateStr = "", sTimeStr = "", iArgsLength = Function.length, bAddSeconds; if(oDTP.settings.formatDateTimeString) { sOutput = oDTP.settings.formatDateTimeString.call(oDTP, oFDT, sMode, sFormat, oElement); } else { // Set bDate, bTime, bDateTime & bArrMatchFormat based on arguments of this function oDTP._setMatchFormat(iArgsLength, sMode, sFormat); if(oDTP.oData.bDateMode) { if(oDTP.oData.bArrMatchFormat[0]) { sOutput = oFDT.dd + oDTP.settings.dateSeparator + oFDT.MM + oDTP.settings.dateSeparator + oFDT.yyyy; } else if(oDTP.oData.bArrMatchFormat[1]) { sOutput = oFDT.MM + oDTP.settings.dateSeparator + oFDT.dd + oDTP.settings.dateSeparator + oFDT.yyyy; } else if(oDTP.oData.bArrMatchFormat[2]) { sOutput = oFDT.yyyy + oDTP.settings.dateSeparator + oFDT.MM + oDTP.settings.dateSeparator + oFDT.dd; } else if(oDTP.oData.bArrMatchFormat[3]) { sOutput = oFDT.dd + oDTP.settings.dateSeparator + oFDT.monthShort + oDTP.settings.dateSeparator + oFDT.yyyy; } else if(oDTP.oData.bArrMatchFormat[4]) { sOutput = oFDT.MM + oDTP.settings.monthYearSeparator + oFDT.yyyy; } else if(oDTP.oData.bArrMatchFormat[5]) { sOutput = oFDT.monthShort + oDTP.settings.monthYearSeparator + oFDT.yyyy; } else if(oDTP.oData.bArrMatchFormat[6]) { sOutput = oFDT.month + oDTP.settings.monthYearSeparator + oFDT.yyyy; } else if(oDTP.oData.bArrMatchFormat[7]) { sOutput = oFDT.yyyy + oDTP.settings.monthYearSeparator + oFDT.MM; } } else if(oDTP.oData.bTimeMode) { if(oDTP.oData.bArrMatchFormat[0]) { sOutput = oFDT.hh + oDTP.settings.timeSeparator + oFDT.mm + oDTP.settings.timeSeparator + oFDT.ss + oDTP.settings.timeMeridiemSeparator + oFDT.ME; } else if(oDTP.oData.bArrMatchFormat[1]) { sOutput = oFDT.HH + oDTP.settings.timeSeparator + oFDT.mm + oDTP.settings.timeSeparator + oFDT.ss; } else if(oDTP.oData.bArrMatchFormat[2]) { sOutput = oFDT.hh + oDTP.settings.timeSeparator + oFDT.mm + oDTP.settings.timeMeridiemSeparator + oFDT.ME; } else if(oDTP.oData.bArrMatchFormat[3]) { sOutput = oFDT.HH + oDTP.settings.timeSeparator + oFDT.mm; } } else if(oDTP.oData.bDateTimeMode) { // Date Part - "dd-MM-yyyy" if(oDTP.oData.bArrMatchFormat[0] || oDTP.oData.bArrMatchFormat[1] || oDTP.oData.bArrMatchFormat[8] || oDTP.oData.bArrMatchFormat[9]) { sDateStr = oFDT.dd + oDTP.settings.dateSeparator + oFDT.MM + oDTP.settings.dateSeparator + oFDT.yyyy; } // Date Part - "MM-dd-yyyy" else if(oDTP.oData.bArrMatchFormat[2] || oDTP.oData.bArrMatchFormat[3] || oDTP.oData.bArrMatchFormat[10] || oDTP.oData.bArrMatchFormat[11]) { sDateStr = oFDT.MM + oDTP.settings.dateSeparator + oFDT.dd + oDTP.settings.dateSeparator + oFDT.yyyy; } // Date Part - "yyyy-MM-dd" else if(oDTP.oData.bArrMatchFormat[4] || oDTP.oData.bArrMatchFormat[5] || oDTP.oData.bArrMatchFormat[12] || oDTP.oData.bArrMatchFormat[13]) { sDateStr = oFDT.yyyy + oDTP.settings.dateSeparator + oFDT.MM + oDTP.settings.dateSeparator + oFDT.dd; } // Date Part - "dd-MMM-yyyy" else if(oDTP.oData.bArrMatchFormat[6] || oDTP.oData.bArrMatchFormat[7] || oDTP.oData.bArrMatchFormat[14] || oDTP.oData.bArrMatchFormat[15]) { sDateStr = oFDT.dd + oDTP.settings.dateSeparator + oFDT.monthShort + oDTP.settings.dateSeparator + oFDT.yyyy; } bAddSeconds = oDTP.oData.bArrMatchFormat[0] || oDTP.oData.bArrMatchFormat[1] || oDTP.oData.bArrMatchFormat[2] || oDTP.oData.bArrMatchFormat[3] || oDTP.oData.bArrMatchFormat[4] || oDTP.oData.bArrMatchFormat[5] || oDTP.oData.bArrMatchFormat[6] || oDTP.oData.bArrMatchFormat[7]; if(bIs12Hour) { if(bAddSeconds) { sTimeStr = oFDT.hh + oDTP.settings.timeSeparator + oFDT.mm + oDTP.settings.timeSeparator + oFDT.ss + oDTP.settings.timeMeridiemSeparator + oFDT.ME; } else { sTimeStr = oFDT.hh + oDTP.settings.timeSeparator + oFDT.mm + oDTP.settings.timeMeridiemSeparator + oFDT.ME; } } else { if(bAddSeconds) { sTimeStr = oFDT.HH + oDTP.settings.timeSeparator + oFDT.mm + oDTP.settings.timeSeparator + oFDT.ss; } else { sTimeStr = oFDT.HH + oDTP.settings.timeSeparator + oFDT.mm; } } if(sDateStr !== "" && sTimeStr !== "") sOutput = sDateStr + oDTP.settings.dateTimeSeparator + sTimeStr; } // Reset bDate, bTime, bDateTime & bArrMatchFormat to original values oDTP._setMatchFormat(iArgsLength); } return sOutput; }, _clearButtonAction: function() { var oDTP = this; if(oDTP.oData.oInputElement !== null) { oDTP._setValueOfElement(""); } if(!oDTP.settings.isInline) oDTP._hidePicker(""); }, _setOutputOnIncrementOrDecrement: function() { var oDTP = this; if($.cf._isValid(oDTP.oData.oInputElement) && oDTP.settings.setValueInTextboxOnEveryClick) { oDTP._setValueOfElement(oDTP._setOutput()); } }, _showPicker: function(oElement) { var oDTP = this; if(oDTP.oData.oInputElement === null) { oDTP.oData.oInputElement = oElement; oDTP.oData.iTabIndex = parseInt($(oElement).attr("tabIndex")); var sMode = $(oElement).data("field") || "", sMinValue = $(oElement).data("min") || "", sMaxValue = $(oElement).data("max") || "", sFormat = $(oElement).data("format") || "", sView = $(oElement).data("view") || "", sStartEnd = $(oElement).data("startend") || "", sStartEndElem = $(oElement).data("startendelem") || "", sCurrent = oDTP._getValueOfElement(oElement) || ""; if(sView !== "") { if($.cf._compare(sView, "Popup")) oDTP.setIsPopup(true); else oDTP.setIsPopup(false); } if(!oDTP.settings.isPopup && !oDTP.settings.isInline) { oDTP._createPicker(); var iElemTop = $(oDTP.oData.oInputElement).offset().top + $(oDTP.oData.oInputElement).outerHeight(), iElemLeft = $(oDTP.oData.oInputElement).offset().left, iElemWidth = $(oDTP.oData.oInputElement).outerWidth(); $(oDTP.element).css({position: "absolute", top: iElemTop, left: iElemLeft, width: iElemWidth, height: "auto"}); } if(oDTP.settings.beforeShow) oDTP.settings.beforeShow.call(oDTP, oElement); sMode = $.cf._isValid(sMode) ? sMode : oDTP.settings.mode; oDTP.settings.mode = sMode; if(!$.cf._isValid(sFormat)) { if($.cf._compare(sMode, "date")) sFormat = oDTP.settings.dateFormat; else if($.cf._compare(sMode, "time")) sFormat = oDTP.settings.timeFormat; else if($.cf._compare(sMode, "datetime")) sFormat = oDTP.settings.dateTimeFormat; } oDTP._matchFormat(sMode, sFormat); oDTP.oData.dMinValue = null; oDTP.oData.dMaxValue = null; oDTP.oData.bIs12Hour = false; var sMin, sMax, sTempDate, dTempDate, sTempTime, dTempTime, sTempDateTime, dTempDateTime; if(oDTP.oData.bDateMode) { sMin = sMinValue || oDTP.settings.minDate; sMax = sMaxValue || oDTP.settings.maxDate; oDTP.oData.sDateFormat = sFormat; if($.cf._isValid(sMin)) oDTP.oData.dMinValue = oDTP._parseDate(sMin); if($.cf._isValid(sMax)) oDTP.oData.dMaxValue = oDTP._parseDate(sMax); if(sStartEnd !== "" && ($.cf._compare(sStartEnd, "start") || $.cf._compare(sStartEnd, "end")) && sStartEndElem !== "") { if($(sStartEndElem).length >= 1) { sTempDate = oDTP._getValueOfElement($(sStartEndElem)); if(sTempDate !== "") { if(oDTP.settings.parseDateTimeString) dTempDate = oDTP.settings.parseDateTimeString.call(oDTP, sTempDate, sMode, sFormat, $(sStartEndElem)); else dTempDate = oDTP._parseDate(sTempDate); if($.cf._compare(sStartEnd, "start")) { if($.cf._isValid(sMax)) { if(oDTP._compareDates(dTempDate, oDTP.oData.dMaxValue) < 0) oDTP.oData.dMaxValue = new Date(dTempDate); } else oDTP.oData.dMaxValue = new Date(dTempDate); } else if($.cf._compare(sStartEnd, "end")) { if($.cf._isValid(sMin)) { if(oDTP._compareDates(dTempDate, oDTP.oData.dMinValue) > 0) oDTP.oData.dMinValue = new Date(dTempDate); } else oDTP.oData.dMinValue = new Date(dTempDate); } } } } if(oDTP.settings.parseDateTimeString) oDTP.oData.dCurrentDate = oDTP.settings.parseDateTimeString.call(oDTP, sCurrent, sMode, sFormat, $(oElement)); else oDTP.oData.dCurrentDate = oDTP._parseDate(sCurrent); oDTP.oData.dCurrentDate.setHours(0); oDTP.oData.dCurrentDate.setMinutes(0); oDTP.oData.dCurrentDate.setSeconds(0); } else if(oDTP.oData.bTimeMode) { sMin = sMinValue || oDTP.settings.minTime; sMax = sMaxValue || oDTP.settings.maxTime; oDTP.oData.sTimeFormat = sFormat; oDTP.oData.bIs12Hour = oDTP.getIs12Hour(); if($.cf._isValid(sMin)) { oDTP.oData.dMinValue = oDTP._parseTime(sMin); if(!$.cf._isValid(sMax)) { if(oDTP.oData.sTimeFormat === oDTP.oData.sArrInputTimeFormats[0]) sMax = "11:59:59 PM"; else if(oDTP.oData.sTimeFormat === oDTP.oData.sArrInputTimeFormats[1]) sMax = "23:59:59"; else if(oDTP.oData.sTimeFormat === oDTP.oData.sArrInputTimeFormats[2]) sMax = "11:59 PM"; else if(oDTP.oData.sTimeFormat === oDTP.oData.sArrInputTimeFormats[3]) sMax = "23:59"; oDTP.oData.dMaxValue = oDTP._parseTime(sMax); } } if($.cf._isValid(sMax)) { oDTP.oData.dMaxValue = oDTP._parseTime(sMax); if(!$.cf._isValid(sMin)) { if(oDTP.oData.sTimeFormat === oDTP.oData.sArrInputTimeFormats[0]) sMin = "12:00:00 AM"; else if(oDTP.oData.sTimeFormat === oDTP.oData.sArrInputTimeFormats[1]) sMin = "00:00:00"; else if(oDTP.oData.sTimeFormat === oDTP.oData.sArrInputTimeFormats[2]) sMin = "12:00 AM"; else if(oDTP.oData.sTimeFormat === oDTP.oData.sArrInputTimeFormats[3]) sMin = "00:00"; oDTP.oData.dMinValue = oDTP._parseTime(sMin); } } if(sStartEnd !== "" && ($.cf._compare(sStartEnd, "start") || $.cf._compare(sStartEnd, "end")) && sStartEndElem !== "") { if($(sStartEndElem).length >= 1) { sTempTime = oDTP._getValueOfElement($(sStartEndElem)); if(sTempTime !== "") { if(oDTP.settings.parseDateTimeString) dTempDate = oDTP.settings.parseDateTimeString.call(oDTP, sTempTime, sMode, sFormat, $(sStartEndElem)); else dTempTime = oDTP._parseTime(sTempTime); if($.cf._compare(sStartEnd, "start")) { dTempTime.setMinutes(dTempTime.getMinutes() - 1); if($.cf._isValid(sMax)) { if(oDTP._compareTime(dTempTime, oDTP.oData.dMaxValue) === 2) oDTP.oData.dMaxValue = new Date(dTempTime); } else oDTP.oData.dMaxValue = new Date(dTempTime); } else if($.cf._compare(sStartEnd, "end")) { dTempTime.setMinutes(dTempTime.getMinutes() + 1); if($.cf._isValid(sMin)) { if(oDTP._compareTime(dTempTime, oDTP.oData.dMinValue) === 3) oDTP.oData.dMinValue = new Date(dTempTime); } else oDTP.oData.dMinValue = new Date(dTempTime); } } } } if(oDTP.settings.parseDateTimeString) oDTP.oData.dCurrentDate = oDTP.settings.parseDateTimeString.call(oDTP, sCurrent, sMode, sFormat, $(oElement)); else oDTP.oData.dCurrentDate = oDTP._parseTime(sCurrent); } else if(oDTP.oData.bDateTimeMode) { sMin = sMinValue || oDTP.settings.minDateTime; sMax = sMaxValue || oDTP.settings.maxDateTime; oDTP.oData.sDateTimeFormat = sFormat; oDTP.oData.bIs12Hour = oDTP.getIs12Hour(); if($.cf._isValid(sMin)) oDTP.oData.dMinValue = oDTP._parseDateTime(sMin); if($.cf._isValid(sMax)) oDTP.oData.dMaxValue = oDTP._parseDateTime(sMax); if(sStartEnd !== "" && ($.cf._compare(sStartEnd, "start") || $.cf._compare(sStartEnd, "end")) && sStartEndElem !== "") { if($(sStartEndElem).length >= 1) { sTempDateTime = oDTP._getValueOfElement($(sStartEndElem)); if(sTempDateTime !== "") { if(oDTP.settings.parseDateTimeString) dTempDateTime = oDTP.settings.parseDateTimeString.call(oDTP, sTempDateTime, sMode, sFormat, $(sStartEndElem)); else dTempDateTime = oDTP._parseDateTime(sTempDateTime); if($.cf._compare(sStartEnd, "start")) { if($.cf._isValid(sMax)) { if(oDTP._compareDateTime(dTempDateTime, oDTP.oData.dMaxValue) < 0) oDTP.oData.dMaxValue = new Date(dTempDateTime); } else oDTP.oData.dMaxValue = new Date(dTempDateTime); } else if($.cf._compare(sStartEnd, "end")) { if($.cf._isValid(sMin)) { if(oDTP._compareDateTime(dTempDateTime, oDTP.oData.dMinValue) > 0) oDTP.oData.dMinValue = new Date(dTempDateTime); } else oDTP.oData.dMinValue = new Date(dTempDateTime); } } } } if(oDTP.settings.parseDateTimeString) oDTP.oData.dCurrentDate = oDTP.settings.parseDateTimeString.call(oDTP, sCurrent, sMode, sFormat, $(oElement)); else oDTP.oData.dCurrentDate = oDTP._parseDateTime(sCurrent); } oDTP._setVariablesForDate(); oDTP._modifyPicker(); $(oDTP.element).fadeIn(oDTP.settings.animationDuration); if(oDTP.settings.afterShow) { setTimeout(function() { oDTP.settings.afterShow.call(oDTP, oElement); }, oDTP.settings.animationDuration); } } }, _hidePicker: function(iDuration, oElementToShow) { var oDTP = this; var oElement = oDTP.oData.oInputElement; if(oDTP.settings.beforeHide) oDTP.settings.beforeHide.call(oDTP, oElement); if(!$.cf._isValid(iDuration)) iDuration = oDTP.settings.animationDuration; if($.cf._isValid(oDTP.oData.oInputElement)) { $(oDTP.oData.oInputElement).blur(); oDTP.oData.oInputElement = null; } $(oDTP.element).fadeOut(iDuration); if(iDuration === 0) { $(oDTP.element).find(".dtpicker-subcontent").html(""); } else { setTimeout(function() { $(oDTP.element).find(".dtpicker-subcontent").html(""); }, iDuration); } $(document).unbind("click.DateTimePicker keydown.DateTimePicker keyup.DateTimePicker"); if(oDTP.settings.afterHide) { if(iDuration === 0) { oDTP.settings.afterHide.call(oDTP, oElement); } else { setTimeout(function() { oDTP.settings.afterHide.call(oDTP, oElement); }, iDuration); } } if($.cf._isValid(oElementToShow)) oDTP._showPicker(oElementToShow); }, _modifyPicker: function() { var oDTP = this; var sTitleContent, iNumberOfColumns; var sArrFields = []; if(oDTP.oData.bDateMode) { sTitleContent = oDTP.settings.titleContentDate; iNumberOfColumns = 3; if(oDTP.oData.bArrMatchFormat[0]) // "dd-MM-yyyy" { sArrFields = ["day", "month", "year"]; } else if(oDTP.oData.bArrMatchFormat[1]) // "MM-dd-yyyy" { sArrFields = ["month", "day", "year"]; } else if(oDTP.oData.bArrMatchFormat[2]) // "yyyy-MM-dd" { sArrFields = ["year", "month", "day"]; } else if(oDTP.oData.bArrMatchFormat[3]) // "dd-MMM-yyyy" { sArrFields = ["day", "month", "year"]; } else if(oDTP.oData.bArrMatchFormat[4]) // "MM-yyyy" { iNumberOfColumns = 2; sArrFields = ["month", "year"]; } else if(oDTP.oData.bArrMatchFormat[5]) // "MMM yyyy" { iNumberOfColumns = 2; sArrFields = ["month", "year"]; } else if(oDTP.oData.bArrMatchFormat[6]) // "MMMM yyyy" { iNumberOfColumns = 2; sArrFields = ["month", "year"]; } else if(oDTP.oData.bArrMatchFormat[7]) // "yyyy-MM" { iNumberOfColumns = 2; sArrFields = ["year", "month"]; } } else if(oDTP.oData.bTimeMode) { sTitleContent = oDTP.settings.titleContentTime; if(oDTP.oData.bArrMatchFormat[0]) // hh:mm:ss AA { iNumberOfColumns = 4; sArrFields = ["hour", "minutes", "seconds", "meridiem"]; } else if(oDTP.oData.bArrMatchFormat[1]) // HH:mm:ss { iNumberOfColumns = 3; sArrFields = ["hour", "minutes", "seconds"]; } else if(oDTP.oData.bArrMatchFormat[2]) // hh:mm AA { iNumberOfColumns = 3; sArrFields = ["hour", "minutes", "meridiem"]; } else if(oDTP.oData.bArrMatchFormat[3]) // HH:mm { iNumberOfColumns = 2; sArrFields = ["hour", "minutes"]; } } else if(oDTP.oData.bDateTimeMode) { sTitleContent = oDTP.settings.titleContentDateTime; if(oDTP.oData.bArrMatchFormat[0]) { iNumberOfColumns = 6; sArrFields = ["day", "month", "year", "hour", "minutes", "seconds"]; } else if(oDTP.oData.bArrMatchFormat[1]) { iNumberOfColumns = 7; sArrFields = ["day", "month", "year", "hour", "minutes", "seconds", "meridiem"]; } else if(oDTP.oData.bArrMatchFormat[2]) { iNumberOfColumns = 6; sArrFields = ["month", "day", "year", "hour", "minutes", "seconds"]; } else if(oDTP.oData.bArrMatchFormat[3]) { iNumberOfColumns = 7; sArrFields = ["month", "day", "year", "hour", "minutes", "seconds", "meridiem"]; } else if(oDTP.oData.bArrMatchFormat[4]) { iNumberOfColumns = 6; sArrFields = ["year", "month", "day", "hour", "minutes", "seconds"]; } else if(oDTP.oData.bArrMatchFormat[5]) { iNumberOfColumns = 7; sArrFields = ["year", "month", "day", "hour", "minutes", "seconds", "meridiem"]; } else if(oDTP.oData.bArrMatchFormat[6]) { iNumberOfColumns = 6; sArrFields = ["day", "month", "year", "hour", "minutes", "seconds"]; } else if(oDTP.oData.bArrMatchFormat[7]) { iNumberOfColumns = 7; sArrFields = ["day", "month", "year", "hour", "minutes", "seconds", "meridiem"]; } else if(oDTP.oData.bArrMatchFormat[8]) { iNumberOfColumns = 5; sArrFields = ["day", "month", "year", "hour", "minutes"]; } else if(oDTP.oData.bArrMatchFormat[9]) { iNumberOfColumns = 6; sArrFields = ["day", "month", "year", "hour", "minutes", "meridiem"]; } else if(oDTP.oData.bArrMatchFormat[10]) { iNumberOfColumns = 5; sArrFields = ["month", "day", "year", "hour", "minutes"]; } else if(oDTP.oData.bArrMatchFormat[11]) { iNumberOfColumns = 6; sArrFields = ["month", "day", "year", "hour", "minutes", "meridiem"]; } else if(oDTP.oData.bArrMatchFormat[12]) { iNumberOfColumns = 5; sArrFields = ["year", "month", "day", "hour", "minutes"]; } else if(oDTP.oData.bArrMatchFormat[13]) { iNumberOfColumns = 6; sArrFields = ["year", "month", "day", "hour", "minutes", "meridiem"]; } else if(oDTP.oData.bArrMatchFormat[14]) { iNumberOfColumns = 5; sArrFields = ["day", "month", "year", "hour", "minutes"]; } else if(oDTP.oData.bArrMatchFormat[15]) { iNumberOfColumns = 6; sArrFields = ["day", "month", "year", "hour", "minutes", "meridiem"]; } } //-------------------------------------------------------------------- var sColumnClass = "dtpicker-comp" + iNumberOfColumns, bDisplayHeaderCloseButton = false, bDisplaySetButton = false, bDisplayClearButton = false, iTempIndex; for(iTempIndex = 0; iTempIndex < oDTP.settings.buttonsToDisplay.length; iTempIndex++) { if($.cf._compare(oDTP.settings.buttonsToDisplay[iTempIndex], "HeaderCloseButton")) bDisplayHeaderCloseButton = true; else if($.cf._compare(oDTP.settings.buttonsToDisplay[iTempIndex], "SetButton")) bDisplaySetButton = true; else if($.cf._compare(oDTP.settings.buttonsToDisplay[iTempIndex], "ClearButton")) bDisplayClearButton = true; } var sHeader = ""; if(oDTP.settings.showHeader) { sHeader += "<div class='dtpicker-header'>"; sHeader += "<div class='dtpicker-title'>" + sTitleContent + "</div>"; if(bDisplayHeaderCloseButton) sHeader += "<a class='dtpicker-close'>&times;</a>"; sHeader += "<div class='dtpicker-value'></div>"; sHeader += "</div>"; } //-------------------------------------------------------------------- var sDTPickerComp = ""; sDTPickerComp += "<div class='dtpicker-components'>"; for(iTempIndex = 0; iTempIndex < iNumberOfColumns; iTempIndex++) { var sFieldName = sArrFields[iTempIndex]; sDTPickerComp += "<div class='dtpicker-compOutline " + sColumnClass + "'>"; sDTPickerComp += "<div class='dtpicker-comp " + sFieldName + "'>"; sDTPickerComp += "<a class='dtpicker-compButton increment'>" + oDTP.settings.incrementButtonContent + "</a>"; if(oDTP.settings.readonlyInputs) sDTPickerComp += "<input type='text' class='dtpicker-compValue' readonly>"; else sDTPickerComp += "<input type='text' class='dtpicker-compValue'>"; sDTPickerComp += "<a class='dtpicker-compButton decrement'>" + oDTP.settings.decrementButtonContent + "</a>"; if(oDTP.settings.labels) sDTPickerComp += "<div class='dtpicker-label'>" + oDTP.settings.labels[sFieldName] + "</div>"; sDTPickerComp += "</div>"; sDTPickerComp += "</div>"; } sDTPickerComp += "</div>"; //-------------------------------------------------------------------- var sButtonContClass = ""; if(bDisplaySetButton && bDisplayClearButton) sButtonContClass = " dtpicker-twoButtons"; else sButtonContClass = " dtpicker-singleButton"; var sDTPickerButtons = ""; sDTPickerButtons += "<div class='dtpicker-buttonCont" + sButtonContClass + "'>"; if(bDisplaySetButton) sDTPickerButtons += "<a class='dtpicker-button dtpicker-buttonSet'>" + oDTP.settings.setButtonContent + "</a>"; if(bDisplayClearButton) sDTPickerButtons += "<a class='dtpicker-button dtpicker-buttonClear'>" + oDTP.settings.clearButtonContent + "</a>"; sDTPickerButtons += "</div>"; //-------------------------------------------------------------------- var sTempStr = sHeader + sDTPickerComp + sDTPickerButtons; $(oDTP.element).find(".dtpicker-subcontent").html(sTempStr); oDTP._setCurrentDate(); oDTP._addEventHandlersForPicker(); }, _addEventHandlersForPicker: function() { var oDTP = this; var classType, keyCode, $nextElem; if(!oDTP.settings.isInline) { $(document).on("click.DateTimePicker", function(e) { if (oDTP.oData.bElemFocused) oDTP._hidePicker(""); }); } $(document).on("keydown.DateTimePicker", function(e) { keyCode = parseInt(e.keyCode ? e.keyCode : e.which); if(! $(".dtpicker-compValue").is(":focus") && keyCode === 9) // TAB { oDTP._setButtonAction(true); $("[tabIndex=" + (oDTP.oData.iTabIndex + 1) + "]").focus(); return false; } else if($(".dtpicker-compValue").is(":focus")) { /*if(keyCode === 37) // Left Arrow { oDTP._setButtonAction(true); $nextElem = $(".dtpicker-compValue:focus").parent().prev().children(".dtpicker-compValue"); $nextElem.focus(); console.log('Left Arrow '); console.log($nextElem); return false; } else if(keyCode === 39) // Right Arrow { oDTP._setButtonAction(true); var compVal = $(".dtpicker-compValue:focus"); $nextElem = $(".dtpicker-compValue:focus").parent(".dtpicker-comp").next().children(".dtpicker-compValue"); $nextElem.focus(); console.log('Right Arrow '); console.log($nextElem); return false; } else*/ if(keyCode === 38) // Up Arrow { classType = $(".dtpicker-compValue:focus").parent().attr("class"); oDTP._incrementDecrementActionsUsingArrowAndMouse(classType, "inc"); return false; } else if(keyCode === 40) // Down Arrow { classType = $(".dtpicker-compValue:focus").parent().attr("class"); oDTP._incrementDecrementActionsUsingArrowAndMouse(classType, "dec"); return false; } } }); if(!oDTP.settings.isInline) { $(document).on("keydown.Date