/* ----------------------------------------------------------------------------- jQuery DateTimePicker - Responsive flat design jQuery DateTime Picker plugin for Web & Mobile Version 0.1.9 Copyright (c)2015 Curious Solutions Pvt Ltd and Neha Kadam http://curioussolutions.github.io/DateTimePicker https://github.com/CuriousSolutions/DateTimePicker ----------------------------------------------------------------------------- */ (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 ($) { var pluginName = "DateTimePicker"; var defaults = { mode: "date", defaultDate: new Date(), dateSeparator: "-", timeSeparator: ":", timeMeridiemSeparator: " ", dateTimeSeparator: " ", dateTimeFormat: "dd-MM-yyyy HH:mm:ss", 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"], formatHumanDate: function(sDate) { return sDate.dayShort + ", " + sDate.month + " " + sDate.dd + ", " + sDate.yyyy; }, minuteInterval: 1, roundOffMinutes: true, titleContentDate: "Set Date", titleContentTime: "Set Time", titleContentDateTime: "Set Maintenance Date & Time", buttonsToDisplay: ["HeaderCloseButton", "SetButton", "ClearButton"], setButtonContent: "Set", clearButtonContent: "Clear", setValueInTextboxOnEveryClick: false, animationDuration: 400, isPopup: true, parentElement: null, 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" }; var dataObject = { dCurrentDate: new Date(), iCurrentDay: 0, iCurrentMonth: 0, iCurrentYear: 0, iCurrentHour: 0, iCurrentMinutes: 0, sCurrentMeridiem: "", iMaxNumberOfDays: 0, sDateFormat: "", sTimeFormat: "", sDateTimeFormat: "", dMinValue: null, dMaxValue: null, sArrInputDateFormats: [], sArrInputTimeFormats: [], sArrInputDateTimeFormats: [], oInputElement: null, iTabIndex: 0, bElemFocused: false, bIs12Hour: false }; function DateTimePicker(element, options) { this.element = element; this.settings = $.extend({}, defaults, options); this.dataObject = dataObject; this._defaults = defaults; this._name = pluginName; this.init(); } $.fn.DateTimePicker = function (options) { return this.each(function() { $.removeData(this, "plugin_" + pluginName); if(!$.data(this, "plugin_" + pluginName)) $.data(this, "plugin_" + pluginName, new DateTimePicker(this, options)); }); }; DateTimePicker.prototype = { // Public Method init: function () { var dtPickerObj = this; dtPickerObj._setDateFormatArray(); // Set DateFormatArray dtPickerObj._setTimeFormatArray(); // Set TimeFormatArray dtPickerObj._setDateTimeFormatArray(); // Set DateTimeFormatArray if(dtPickerObj.settings.isPopup) { dtPickerObj._createPicker(); $(dtPickerObj.element).addClass("dtpicker-mobile"); } dtPickerObj._addEventHandlersForInput(); }, _setDateFormatArray: function() { var dtPickerObj = this; dtPickerObj.dataObject.sArrInputDateFormats = new Array(); var sDate = ""; // "dd-MM-yyyy" sDate = "dd" + dtPickerObj.settings.dateSeparator + "MM" + dtPickerObj.settings.dateSeparator + "yyyy"; dtPickerObj.dataObject.sArrInputDateFormats.push(sDate); // "MM-dd-yyyy" sDate = "MM" + dtPickerObj.settings.dateSeparator + "dd" + dtPickerObj.settings.dateSeparator + "yyyy"; dtPickerObj.dataObject.sArrInputDateFormats.push(sDate); // "yyyy-MM-dd" sDate = "yyyy" + dtPickerObj.settings.dateSeparator + "MM" + dtPickerObj.settings.dateSeparator + "dd"; dtPickerObj.dataObject.sArrInputDateFormats.push(sDate); // "dd-MMM-yyyy" sDate = "dd" + dtPickerObj.settings.dateSeparator + "MMM" + dtPickerObj.settings.dateSeparator + "yyyy"; dtPickerObj.dataObject.sArrInputDateFormats.push(sDate); }, _setTimeFormatArray: function() { var dtPickerObj = this; dtPickerObj.dataObject.sArrInputTimeFormats = new Array(); var sTime = ""; // "hh:mm AA" sTime = "hh" + dtPickerObj.settings.timeSeparator + "mm" + dtPickerObj.settings.timeMeridiemSeparator + "AA"; dtPickerObj.dataObject.sArrInputTimeFormats.push(sTime); // "HH:mm" sTime = "HH" + dtPickerObj.settings.timeSeparator + "mm"; dtPickerObj.dataObject.sArrInputTimeFormats.push(sTime); }, _setDateTimeFormatArray: function() { var dtPickerObj = this; dtPickerObj.dataObject.sArrInputDateTimeFormats = new Array(); var sDate = "", sTime = "", sDateTime = ""; // "dd-MM-yyyy HH:mm:ss" sDate = "dd" + dtPickerObj.settings.dateSeparator + "MM" + dtPickerObj.settings.dateSeparator + "yyyy"; sTime = "HH" + dtPickerObj.settings.timeSeparator + "mm" + dtPickerObj.settings.timeSeparator + "ss"; sDateTime = sDate + dtPickerObj.settings.dateTimeSeparator + sTime; dtPickerObj.dataObject.sArrInputDateTimeFormats.push(sDateTime); // "dd-MM-yyyy hh:mm:ss AA" sDate = "dd" + dtPickerObj.settings.dateSeparator + "MM" + dtPickerObj.settings.dateSeparator + "yyyy"; sTime = "hh" + dtPickerObj.settings.timeSeparator + "mm" + dtPickerObj.settings.timeSeparator + "ss" + dtPickerObj.settings.timeMeridiemSeparator + "AA"; sDateTime = sDate + dtPickerObj.settings.dateTimeSeparator + sTime; dtPickerObj.dataObject.sArrInputDateTimeFormats.push(sDateTime); // "MM-dd-yyyy HH:mm:ss" sDate = "MM" + dtPickerObj.settings.dateSeparator + "dd" + dtPickerObj.settings.dateSeparator + "yyyy"; sTime = "HH" + dtPickerObj.settings.timeSeparator + "mm" + dtPickerObj.settings.timeSeparator + "ss"; sDateTime = sDate + dtPickerObj.settings.dateTimeSeparator + sTime; dtPickerObj.dataObject.sArrInputDateTimeFormats.push(sDateTime); // "MM-dd-yyyy hh:mm:ss AA" sDate = "MM" + dtPickerObj.settings.dateSeparator + "dd" + dtPickerObj.settings.dateSeparator + "yyyy"; sTime = "hh" + dtPickerObj.settings.timeSeparator + "mm" + dtPickerObj.settings.timeSeparator + "ss" + dtPickerObj.settings.timeMeridiemSeparator + "AA"; sDateTime = sDate + dtPickerObj.settings.dateTimeSeparator + sTime; dtPickerObj.dataObject.sArrInputDateTimeFormats.push(sDateTime); // "yyyy-MM-dd HH:mm:ss" sDate = "yyyy" + dtPickerObj.settings.dateSeparator + "MM" + dtPickerObj.settings.dateSeparator + "dd"; sTime = "HH" + dtPickerObj.settings.timeSeparator + "mm" + dtPickerObj.settings.timeSeparator + "ss"; sDateTime = sDate + dtPickerObj.settings.dateTimeSeparator + sTime; dtPickerObj.dataObject.sArrInputDateTimeFormats.push(sDateTime); // "yyyy-MM-dd hh:mm:ss AA" sDate = "yyyy" + dtPickerObj.settings.dateSeparator + "MM" + dtPickerObj.settings.dateSeparator + "dd"; sTime = "hh" + dtPickerObj.settings.timeSeparator + "mm" + dtPickerObj.settings.timeSeparator + "ss" + dtPickerObj.settings.timeMeridiemSeparator + "AA"; sDateTime = sDate + dtPickerObj.settings.dateTimeSeparator + sTime; dtPickerObj.dataObject.sArrInputDateTimeFormats.push(sDateTime); // "dd-MMM-yyyy hh:mm:ss" sDate = "dd" + dtPickerObj.settings.dateSeparator + "MMM" + dtPickerObj.settings.dateSeparator + "yyyy"; sTime = "hh" + dtPickerObj.settings.timeSeparator + "mm" + dtPickerObj.settings.timeSeparator + "ss"; sDateTime = sDate + dtPickerObj.settings.dateTimeSeparator + sTime; dtPickerObj.dataObject.sArrInputDateTimeFormats.push(sDateTime); // "dd-MMM-yyyy hh:mm:ss AA" sDate = "dd" + dtPickerObj.settings.dateSeparator + "MMM" + dtPickerObj.settings.dateSeparator + "yyyy"; sTime = "hh" + dtPickerObj.settings.timeSeparator + "mm" + dtPickerObj.settings.timeSeparator + "ss" + dtPickerObj.settings.timeMeridiemSeparator + "AA"; sDateTime = sDate + dtPickerObj.settings.dateTimeSeparator + sTime; dtPickerObj.dataObject.sArrInputDateTimeFormats.push(sDateTime); }, _createPicker: function() { var dtPickerObj = this; $(dtPickerObj.element).addClass("dtpicker-overlay"); $(".dtpicker-overlay").click(function(e) { dtPickerObj._hidePicker(""); }); var sTempStr = ""; sTempStr += "
"; sTempStr += "
"; sTempStr += "
"; sTempStr += "
"; sTempStr += "
"; sTempStr += "
"; sTempStr += "
"; sTempStr += "
"; $(dtPickerObj.element).html(sTempStr); }, _addEventHandlersForInput: function() { var dtPickerObj = this; dtPickerObj.dataObject.oInputElement = null; var oArrElements = undefined; if(dtPickerObj.settings.parentElement != undefined) { $(dtPickerObj.settings.parentElement).find("input[type='date'], input[type='time'], input[type='datetime']").each(function() { var sType = $(this).attr("type"); $(this).attr("type", "text"); $(this).attr("data-field", sType); }); oArrElements = $(dtPickerObj.settings.parentElement).find("[data-field='date'], [data-field='time'], [data-field='datetime']"); } else { $("input[type='date'], input[type='time'], input[type='datetime']").each(function() { var sType = $(this).attr("type"); $(this).attr("type", "text"); $(this).attr("data-field", sType); }); oArrElements = $("[data-field='date'], [data-field='time'], [data-field='datetime']"); } $(oArrElements).unbind("focus", dtPickerObj._inputFieldFocus); $(oArrElements).on("focus", {"obj": dtPickerObj}, dtPickerObj._inputFieldFocus); $(oArrElements).not('input').click(function(e) { if(dtPickerObj.dataObject.oInputElement == null) { dtPickerObj.showDateTimePicker(this); } }); $(oArrElements).click(function(e) { e.stopPropagation(); }); if(dtPickerObj.settings.addEventHandlers) dtPickerObj.settings.addEventHandlers.call(dtPickerObj); }, _inputFieldFocus: function(e) { var dtPickerObj = e.data.obj; if(dtPickerObj.dataObject.oInputElement == null) { dtPickerObj.showDateTimePicker(e.target); } dtPickerObj.dataObject.bMouseDown = false; }, // Public Method setDateTimeStringInInputField: function(oInputField, dInput) { var dtPickerObj = this; dInput = dInput || dtPickerObj.dataObject.dCurrentDate; var oArrElements = undefined; if(oInputField !== null && oInputField !== undefined) { oArrElements = []; if(typeof oInputField === "string") oArrElements.push(oInputField); else if(typeof oInputField === "object") oArrElements = oInputField; } else { if(dtPickerObj.settings.parentElement !== null && dtPickerObj.settings.parentElement !== undefined) { oArrElements = $(dtPickerObj.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; sMode = $(oElement).data("field"); if(dtPickerObj._compare(sMode, "date")) sFormat = $(oElement).data("format") || dtPickerObj.settings.dateFormat; else if(dtPickerObj._compare(sMode, "time")) sFormat = $(oElement).data("format") || dtPickerObj.settings.timeFormat; else if(dtPickerObj._compare(sMode, "datetime")) sFormat = $(oElement).data("format") || dtPickerObj.settings.dateTimeFormat; bIs12Hour = dtPickerObj.getIs12Hour(sMode, sFormat); var sOutput = dtPickerObj._setOutput(sMode, sFormat, bIs12Hour, dInput); $(oElement).val(sOutput); }); }, // Public Method getDateTimeStringInFormat: function(sMode, sFormat, dInput) { var dtPickerObj = this; var bIs12Hour = dtPickerObj.getIs12Hour(sMode, sFormat); return dtPickerObj._setOutput(sMode, sFormat, bIs12Hour, dInput); }, // Public Method showDateTimePicker: function(oElement) { var dtPickerObj = this; if(dtPickerObj.dataObject.oInputElement == null) { dtPickerObj.dataObject.oInputElement = oElement; dtPickerObj.dataObject.iTabIndex = parseInt($(oElement).attr("tabIndex")); var sMode = $(oElement).data("field") || ""; var sMinValue = $(oElement).data("min") || ""; var sMaxValue = $(oElement).data("max") || ""; var sFormat = $(oElement).data("format") || ""; var sView = $(oElement).data("view") || ""; var sStartEnd = $(oElement).data("startend") || ""; var sStartEndElem = $(oElement).data("startendelem") || ""; var sCurrent = dtPickerObj._getValueOfElement(oElement) || ""; if(sView != "") { if(dtPickerObj._compare(sView, "Popup")) dtPickerObj.setIsPopup(true); else dtPickerObj.setIsPopup(false); } if(!dtPickerObj.settings.isPopup) { dtPickerObj._createPicker(); var iElemTop = $(dtPickerObj.dataObject.oInputElement).offset().top + $(dtPickerObj.dataObject.oInputElement).outerHeight(); var iElemLeft = $(dtPickerObj.dataObject.oInputElement).offset().left; var iElemWidth = $(dtPickerObj.dataObject.oInputElement).outerWidth(); $(dtPickerObj.element).css({position: "absolute", top: iElemTop, left: iElemLeft, width: iElemWidth, height: "auto"}); } dtPickerObj._showPicker(sMode, sMinValue, sMaxValue, sFormat, sCurrent, oElement, sStartEnd, sStartEndElem); } }, _setButtonAction: function(bFromTab) { var dtPickerObj = this; if(dtPickerObj.dataObject.oInputElement != null) { var sOutput = dtPickerObj._setOutput(); dtPickerObj._setValueOfElement(sOutput); if(bFromTab) dtPickerObj._hidePicker(0); else dtPickerObj._hidePicker(""); } }, _setOutput: function(sMode, sFormat, bIs12Hour, dCurrentDate) { var dtPickerObj = this; sMode = sMode || dtPickerObj.settings.mode; if(dtPickerObj._compare(sMode, "date")) sFormat = sFormat || dtPickerObj.dataObject.sDateFormat; else if(dtPickerObj._compare(sMode, "time")) sFormat = sFormat || dtPickerObj.dataObject.sTimeFormat; else if(dtPickerObj._compare(sMode, "datetime")) sFormat = sFormat || dtPickerObj.dataObject.sDateTimeFormat; dCurrentDate = dCurrentDate || dtPickerObj.dataObject.dCurrentDate; bIs12Hour = bIs12Hour || dtPickerObj.dataObject.bIs12Hour; var sOutput = "", iDate = dCurrentDate.getDate(), iMonth = dCurrentDate.getMonth(), iYear = dCurrentDate.getFullYear(), iHour = dCurrentDate.getHours(), iMinutes = dCurrentDate.getMinutes(), sDate, sMonth, sMeridiem, sHour, sMinutes, sDateStr = "", sTimeStr = ""; if(dtPickerObj._compare(sMode, "date")) { if(dtPickerObj._compare(sFormat, dtPickerObj.dataObject.sArrInputDateFormats[0])) { iMonth++; sDate = (iDate < 10) ? ("0" + iDate) : iDate; sMonth = (iMonth < 10) ? ("0" + iMonth) : iMonth; sOutput = sDate + dtPickerObj.settings.dateSeparator + sMonth + dtPickerObj.settings.dateSeparator + iYear; } else if(dtPickerObj._compare(sFormat, dtPickerObj.dataObject.sArrInputDateFormats[1])) { iMonth++; sDate = (iDate < 10) ? ("0" + iDate) : iDate; sMonth = (iMonth < 10) ? ("0" + iMonth) : iMonth; sOutput = sMonth + dtPickerObj.settings.dateSeparator + sDate + dtPickerObj.settings.dateSeparator + iYear; } else if(dtPickerObj._compare(sFormat, dtPickerObj.dataObject.sArrInputDateFormats[2])) { iMonth++; sDate = (iDate < 10) ? ("0" + iDate) : iDate; sMonth = (iMonth < 10) ? ("0" + iMonth) : iMonth; sOutput = iYear + dtPickerObj.settings.dateSeparator + sMonth + dtPickerObj.settings.dateSeparator + sDate; } else if(dtPickerObj._compare(sFormat, dtPickerObj.dataObject.sArrInputDateFormats[3])) { sDate = (iDate < 10) ? ("0" + iDate) : iDate; sMonth = dtPickerObj.settings.shortMonthNames[iMonth]; sOutput = sDate + dtPickerObj.settings.dateSeparator + sMonth + dtPickerObj.settings.dateSeparator + iYear; } } else if(dtPickerObj._compare(sMode, "time")) { if(dtPickerObj._compare(sFormat, dtPickerObj.dataObject.sArrInputTimeFormats[0])) { sMeridiem = dtPickerObj._determineMeridiemFromHourAndMinutes(iHour, iMinutes); if(iHour == 0 && sMeridiem == "AM") iHour = 12; else if(iHour > 12 && sMeridiem == "PM") iHour -= 12; sHour = (iHour < 10) ? ("0" + iHour) : iHour; sMinutes = (iMinutes < 10) ? ("0" + iMinutes) : iMinutes; sOutput = sHour + dtPickerObj.settings.timeSeparator + sMinutes + dtPickerObj.settings.timeMeridiemSeparator + sMeridiem; } else if(dtPickerObj._compare(sFormat, dtPickerObj.dataObject.sArrInputTimeFormats[1])) { sHour = (iHour < 10) ? ("0" + iHour) : iHour; sMinutes = (iMinutes < 10) ? ("0" + iMinutes) : iMinutes; sOutput = sHour + dtPickerObj.settings.timeSeparator + sMinutes; } } else if(dtPickerObj._compare(sMode, "datetime")) { if(dtPickerObj._compare(sFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[0]) || dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[1])) { iMonth++; sDate = (iDate < 10) ? ("0" + iDate) : iDate; sMonth = (iMonth < 10) ? ("0" + iMonth) : iMonth; sDateStr = sDate + dtPickerObj.settings.dateSeparator + sMonth + dtPickerObj.settings.dateSeparator + iYear; } else if(dtPickerObj._compare(sFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[2]) || dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[3])) { iMonth++; sDate = (iDate < 10) ? ("0" + iDate) : iDate; sMonth = (iMonth < 10) ? ("0" + iMonth) : iMonth; sDateStr = sMonth + dtPickerObj.settings.dateSeparator + sDate + dtPickerObj.settings.dateSeparator + iYear; } else if(dtPickerObj._compare(sFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[4]) || dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[5])) { iMonth++; sDate = (iDate < 10) ? ("0" + iDate) : iDate; sMonth = (iMonth < 10) ? ("0" + iMonth) : iMonth; sDateStr = iYear + dtPickerObj.settings.dateSeparator + sMonth + dtPickerObj.settings.dateSeparator + sDate; } else if(dtPickerObj._compare(sFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[6]) || dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[7])) { sDate = (iDate < 10) ? ("0" + iDate) : iDate; sMonth = dtPickerObj.settings.shortMonthNames[iMonth]; sDateStr = sDate + dtPickerObj.settings.dateSeparator + sMonth + dtPickerObj.settings.dateSeparator + iYear; } if(bIs12Hour) { sMeridiem = dtPickerObj._determineMeridiemFromHourAndMinutes(iHour, iMinutes); if(iHour == 0 && sMeridiem == "AM") iHour = 12; else if(iHour > 12 && sMeridiem == "PM") iHour -= 12; sHour = (iHour < 10) ? ("0" + iHour) : iHour; sMinutes = (iMinutes < 10) ? ("0" + iMinutes) : iMinutes; sTimeStr = sHour + dtPickerObj.settings.timeSeparator + sMinutes + dtPickerObj.settings.timeMeridiemSeparator + sMeridiem; } else { sHour = (iHour < 10) ? ("0" + iHour) : iHour; sMinutes = (iMinutes < 10) ? ("0" + iMinutes) : iMinutes; sTimeStr = sHour + dtPickerObj.settings.timeSeparator + sMinutes; } sOutput = sDateStr + dtPickerObj.settings.dateTimeSeparator + sTimeStr; } return sOutput; }, _clearButtonAction: function() { var dtPickerObj = this; if(dtPickerObj.dataObject.oInputElement != null) { dtPickerObj._setValueOfElement(""); } dtPickerObj._hidePicker(""); }, _setOutputOnIncrementOrDecrement: function() { var dtPickerObj = this; if(dtPickerObj.dataObject.oInputElement != null && dtPickerObj.settings.setValueInTextboxOnEveryClick) { var sOutput = dtPickerObj._setOutput(); dtPickerObj._setValueOfElement(sOutput); } }, _showPicker: function(sMode, sMinValue, sMaxValue, sFormat, sCurrent, oElement, sStartEnd, sStartEndElem) { var dtPickerObj = this; if(dtPickerObj.settings.beforeShow) dtPickerObj.settings.beforeShow.call(dtPickerObj, oElement); if(sMode != "") dtPickerObj.settings.mode = sMode; dtPickerObj.dataObject.dMinValue = null; dtPickerObj.dataObject.dMaxValue = null; dtPickerObj.dataObject.bIs12Hour = false; if(dtPickerObj._compare(dtPickerObj.settings.mode, "date")) { var sMin = sMinValue || dtPickerObj.settings.minDate; var sMax = sMaxValue || dtPickerObj.settings.maxDate; var sDateFormat = sFormat || dtPickerObj.settings.dateFormat; if(sDateFormat != "" && sDateFormat != null) dtPickerObj.dataObject.sDateFormat = sDateFormat; if(sMin != "" && sMin != null) dtPickerObj.dataObject.dMinValue = dtPickerObj._parseDate(sMin); if(sMax != "" && sMax != null) dtPickerObj.dataObject.dMaxValue = dtPickerObj._parseDate(sMax); if(sStartEnd != "" && (dtPickerObj._compare(sStartEnd, "start") || dtPickerObj._compare(sStartEnd, "end")) && sStartEndElem != "") { if($(sStartEndElem).length >= 1) { var sTempDate = dtPickerObj._getValueOfElement($(sStartEndElem)); if(sTempDate != "") { var dTempDate = dtPickerObj._parseDate(sTempDate); if(dtPickerObj._compare(sStartEnd, "start")) { if(sMax != "" && sMax != null) { if(dtPickerObj._compareDates(dTempDate, dtPickerObj.dataObject.dMaxValue) < 0) dtPickerObj.dataObject.dMaxValue = new Date(dTempDate); } else dtPickerObj.dataObject.dMaxValue = new Date(dTempDate); } else if(dtPickerObj._compare(sStartEnd, "end")) { if(sMin != "" && sMin != null) { if(dtPickerObj._compareDates(dTempDate, dtPickerObj.dataObject.dMinValue) > 0) dtPickerObj.dataObject.dMinValue = new Date(dTempDate); } else dtPickerObj.dataObject.dMinValue = new Date(dTempDate); } } } } dtPickerObj.dataObject.dCurrentDate = dtPickerObj._parseDate(sCurrent); dtPickerObj.dataObject.dCurrentDate.setHours(0); dtPickerObj.dataObject.dCurrentDate.setMinutes(0); dtPickerObj.dataObject.dCurrentDate.setSeconds(0); } else if(dtPickerObj._compare(dtPickerObj.settings.mode, "time")) { var sMin = sMinValue || dtPickerObj.settings.minTime; var sMax = sMaxValue || dtPickerObj.settings.maxTime; var sTimeFormat = sFormat || dtPickerObj.settings.timeFormat; if(sTimeFormat != "" && sTimeFormat != null) dtPickerObj.dataObject.sTimeFormat = sTimeFormat; if(sMin != "" && sMin != null) dtPickerObj.dataObject.dMinValue = dtPickerObj._parseTime(sMin); if(sMax != "" && sMax != null) dtPickerObj.dataObject.dMaxValue = dtPickerObj._parseTime(sMax); if(sStartEnd != "" && (dtPickerObj._compare(sStartEnd, "start") || dtPickerObj._compare(sStartEnd, "end")) && sStartEndElem != "") { if($(sStartEndElem).length >= 1) { var sTempTime = dtPickerObj._getValueOfElement($(sStartEndElem)); if(sTempTime != "") { var dTempTime = dtPickerObj._parseTime(sTempTime); if(dtPickerObj._compare(sStartEnd, "start")) { dTempTime.setMinutes(dTempTime.getMinutes() - 1); if(sMax != "" && sMax != null) { if(dtPickerObj._compareTime(dTempTime, dtPickerObj.dataObject.dMaxValue) == 2) dtPickerObj.dataObject.dMaxValue = new Date(dTempTime); } else dtPickerObj.dataObject.dMaxValue = new Date(dTempTime); } else if(dtPickerObj._compare(sStartEnd, "end")) { dTempTime.setMinutes(dTempTime.getMinutes() + 1); if(sMin != "" && sMin != null) { if(dtPickerObj._compareTime(dTempTime, dtPickerObj.dataObject.dMinValue) == 3) dtPickerObj.dataObject.dMinValue = new Date(dTempTime); } else dtPickerObj.dataObject.dMinValue = new Date(dTempTime); } } } } dtPickerObj.dataObject.bIs12Hour = dtPickerObj.getIs12Hour("time", dtPickerObj.dataObject.sTimeFormat); dtPickerObj.dataObject.dCurrentDate = dtPickerObj._parseTime(sCurrent); } else if(dtPickerObj._compare(dtPickerObj.settings.mode, "datetime")) { var sMin = sMinValue || dtPickerObj.settings.minDateTime; var sMax = sMaxValue || dtPickerObj.settings.maxDateTime; var sDateTimeFormat = sFormat || dtPickerObj.settings.dateTimeFormat; if(sDateTimeFormat != "" && sDateTimeFormat != null) dtPickerObj.dataObject.sDateTimeFormat = sDateTimeFormat; if(sMin != "" && sMin != null) dtPickerObj.dataObject.dMinValue = dtPickerObj._parseDateTime(sMin); if(sMax != "" && sMax != null) dtPickerObj.dataObject.dMaxValue = dtPickerObj._parseDateTime(sMax); if(sStartEnd != "" && (dtPickerObj._compare(sStartEnd, "start") || dtPickerObj._compare(sStartEnd, "end")) && sStartEndElem != "") { if($(sStartEndElem).length >= 1) { var sTempDateTime = dtPickerObj._getValueOfElement($(sStartEndElem)); if(sTempDateTime != "") { var dTempDateTime = dtPickerObj._parseDateTime(sTempDateTime); if(dtPickerObj._compare(sStartEnd, "start")) { if(sMax != "" && sMax != null) { if(dtPickerObj._compareDateTime(dTempDateTime, dtPickerObj.dataObject.dMaxValue) < 0) dtPickerObj.dataObject.dMaxValue = new Date(dTempDateTime); } else dtPickerObj.dataObject.dMaxValue = new Date(dTempDateTime); } else if(dtPickerObj._compare(sStartEnd, "end")) { if(sMin != "" && sMin != null) { if(dtPickerObj._compareDateTime(dTempDateTime, dtPickerObj.dataObject.dMinValue) > 0) dtPickerObj.dataObject.dMinValue = new Date(dTempDateTime); } else dtPickerObj.dataObject.dMinValue = new Date(dTempDateTime); } } } } dtPickerObj.dataObject.bIs12Hour = dtPickerObj.getIs12Hour("datetime", dtPickerObj.dataObject.sDateTimeFormat); dtPickerObj.dataObject.dCurrentDate = dtPickerObj._parseDateTime(sCurrent); } dtPickerObj._setVariablesForDate(); dtPickerObj._modifyPicker(); $(dtPickerObj.element).fadeIn(dtPickerObj.settings.animationDuration); if(dtPickerObj.settings.afterShow) { setTimeout(function() { dtPickerObj.settings.afterShow.call(dtPickerObj, oElement); }, dtPickerObj.settings.animationDuration); } }, _hidePicker: function(iDuration) { var dtPickerObj = this; var oElement = dtPickerObj.dataObject.oInputElement; if(dtPickerObj.settings.beforeHide) dtPickerObj.settings.beforeHide.call(dtPickerObj, oElement); if(iDuration === "" || iDuration === undefined || iDuration === null) iDuration = dtPickerObj.settings.animationDuration; if(dtPickerObj.dataObject.oInputElement != null) { $(dtPickerObj.dataObject.oInputElement).blur(); dtPickerObj.dataObject.oInputElement = null; } $(dtPickerObj.element).fadeOut(iDuration); if(iDuration == 0) { $(dtPickerObj.element).find('.dtpicker-subcontent').html(""); } else { setTimeout(function() { $(dtPickerObj.element).find('.dtpicker-subcontent').html(""); }, iDuration); } $(document).unbind("click.DateTimePicker"); $(document).unbind("keydown.DateTimePicker"); $(document).unbind("keyup.DateTimePicker"); if(dtPickerObj.settings.afterHide) { setTimeout(function() { dtPickerObj.settings.afterHide.call(dtPickerObj, oElement); }, iDuration); } }, _modifyPicker: function() { var dtPickerObj = this; var sTitleContent, iNumberOfColumns; var sArrFields = new Array(); if(dtPickerObj._compare(dtPickerObj.settings.mode, "date")) { sTitleContent = dtPickerObj.settings.titleContentDate; iNumberOfColumns = 3; if(dtPickerObj._compare(dtPickerObj.dataObject.sDateFormat, dtPickerObj.dataObject.sArrInputDateFormats[0])) // "dd-MM-yyyy" { sArrFields = ["day", "month", "year"]; } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateFormat, dtPickerObj.dataObject.sArrInputDateFormats[1])) // "MM-dd-yyyy" { sArrFields = ["month", "day", "year"]; } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateFormat, dtPickerObj.dataObject.sArrInputDateFormats[2])) // "yyyy-MM-dd" { sArrFields = ["year", "month", "day"]; } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateFormat, dtPickerObj.dataObject.sArrInputDateFormats[3])) // "dd-MMM-yyyy" { sArrFields = ["day", "month", "year"]; } } else if(dtPickerObj._compare(dtPickerObj.settings.mode, "time")) { sTitleContent = dtPickerObj.settings.titleContentTime; if(dtPickerObj._compare(dtPickerObj.dataObject.sTimeFormat, dtPickerObj.dataObject.sArrInputTimeFormats[0])) { iNumberOfColumns = 3; sArrFields = ["hour", "minutes", "meridiem"]; } else if(dtPickerObj._compare(dtPickerObj.dataObject.sTimeFormat, dtPickerObj.dataObject.sArrInputTimeFormats[1])) { iNumberOfColumns = 2; sArrFields = ["hour", "minutes"]; } } else if(dtPickerObj._compare(dtPickerObj.settings.mode, "datetime")) { sTitleContent = dtPickerObj.settings.titleContentDateTime; if(dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[0])) { iNumberOfColumns = 5; sArrFields = ["day", "month", "year", "hour", "minutes"]; } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[1])) { iNumberOfColumns = 6; sArrFields = ["day", "month", "year", "hour", "minutes", "meridiem"]; } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[2])) { iNumberOfColumns = 5; sArrFields = ["month", "day", "year", "hour", "minutes"]; } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[3])) { iNumberOfColumns = 6; sArrFields = ["month", "day", "year", "hour", "minutes", "meridiem"]; } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[4])) { iNumberOfColumns = 5; sArrFields = ["year", "month", "day", "hour", "minutes"]; } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[5])) { iNumberOfColumns = 6; sArrFields = ["year", "month", "day", "hour", "minutes", "meridiem"]; } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[6])) { iNumberOfColumns = 5; sArrFields = ["day", "month", "year", "hour", "minutes"]; } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[7])) { iNumberOfColumns = 6; sArrFields = ["day", "month", "year", "hour", "minutes", "meridiem"]; } } var sColumnClass = "dtpicker-comp" + iNumberOfColumns; //-------------------------------------------------------------------- var bDisplayHeaderCloseButton = false; var bDisplaySetButton = false; var bDisplayClearButton = false; for(var iTempIndex = 0; iTempIndex < dtPickerObj.settings.buttonsToDisplay.length; iTempIndex++) { if(dtPickerObj._compare(dtPickerObj.settings.buttonsToDisplay[iTempIndex], "HeaderCloseButton")) bDisplayHeaderCloseButton = true; else if(dtPickerObj._compare(dtPickerObj.settings.buttonsToDisplay[iTempIndex], "SetButton")) bDisplaySetButton = true; else if(dtPickerObj._compare(dtPickerObj.settings.buttonsToDisplay[iTempIndex], "ClearButton")) bDisplayClearButton = true; } var sHeader = ""; sHeader += "
"; sHeader += "
" + sTitleContent + "
"; if(bDisplayHeaderCloseButton) sHeader += "×"; sHeader += "
"; sHeader += "
"; //-------------------------------------------------------------------- var sDTPickerComp = ""; sDTPickerComp += "
"; for(var iTempIndex = 0; iTempIndex < iNumberOfColumns; iTempIndex++) { var sFieldName = sArrFields[iTempIndex]; sDTPickerComp += "
"; sDTPickerComp += "
"; sDTPickerComp += "+"; sDTPickerComp += ""; sDTPickerComp += "-"; sDTPickerComp += "
"; sDTPickerComp += "
"; } sDTPickerComp += "
"; //-------------------------------------------------------------------- var sButtonContClass = ""; if(bDisplaySetButton && bDisplayClearButton) sButtonContClass = " dtpicker-twoButtons"; else sButtonContClass = " dtpicker-singleButton"; var sDTPickerButtons = ""; sDTPickerButtons += "
"; if(bDisplaySetButton) sDTPickerButtons += "" + dtPickerObj.settings.setButtonContent + ""; if(bDisplayClearButton) sDTPickerButtons += "" + dtPickerObj.settings.clearButtonContent + ""; sDTPickerButtons += "
"; //-------------------------------------------------------------------- sTempStr = sHeader + sDTPickerComp + sDTPickerButtons; $(dtPickerObj.element).find('.dtpicker-subcontent').html(sTempStr); dtPickerObj._setCurrentDate(); dtPickerObj._addEventHandlersForPicker(); }, _addEventHandlersForPicker: function() { var dtPickerObj = this; $(document).on("click.DateTimePicker", function(e) { dtPickerObj._hidePicker(""); }); $(document).on("keydown.DateTimePicker", function(e) { if(! $('.dtpicker-compValue').is(':focus') && (e.keyCode ? e.keyCode : e.which) == "9") { dtPickerObj._setButtonAction(true); $("[tabIndex=" + (dtPickerObj.dataObject.iTabIndex + 1) + "]").focus(); return false; } }); $(document).on("keydown.DateTimePicker", function(e) { if(! $('.dtpicker-compValue').is(':focus') && (e.keyCode ? e.keyCode : e.which) != "9") { dtPickerObj._hidePicker(""); } }); $(".dtpicker-cont *").click(function(e) { e.stopPropagation(); }); $('.dtpicker-compValue').not('.month .dtpicker-compValue, .meridiem .dtpicker-compValue').keyup(function() { this.value = this.value.replace(/[^0-9\.]/g,''); }); $('.dtpicker-compValue').focus(function() { dtPickerObj.dataObject.bElemFocused = true; }); $('.dtpicker-compValue').blur(function() { dtPickerObj._getValuesFromInputBoxes(); dtPickerObj._setCurrentDate(); dtPickerObj.dataObject.bElemFocused = false; var $oParentElem = $(this).parent().parent(); setTimeout(function() { if($oParentElem.is(':last-child') && !dtPickerObj.dataObject.bElemFocused) { dtPickerObj._setButtonAction(false); } }, 50); }); $(".dtpicker-compValue").keyup(function() { var $oTextField = $(this); var sTextBoxVal = $oTextField.val(); var iLength = sTextBoxVal.length; if($oTextField.parent().hasClass("day") || $oTextField.parent().hasClass("hour") || $oTextField.parent().hasClass("minutes") || $oTextField.parent().hasClass("meridiem")) { if(iLength > 2) { var sNewTextBoxVal = sTextBoxVal.slice(0, 2); $oTextField.val(sNewTextBoxVal); } } else if($oTextField.parent().hasClass("month")) { if(iLength > 3) { var sNewTextBoxVal = sTextBoxVal.slice(0, 3); $oTextField.val(sNewTextBoxVal); } } else if($oTextField.parent().hasClass("year")) { if(iLength > 4) { var sNewTextBoxVal = sTextBoxVal.slice(0, 4); $oTextField.val(sNewTextBoxVal); } } }); //----------------------------------------------------------------------- $(dtPickerObj.element).find('.dtpicker-close').click(function(e) { if(dtPickerObj.settings.buttonClicked) dtPickerObj.settings.buttonClicked.call(dtPickerObj, "CLOSE", dtPickerObj.dataObject.oInputElement); dtPickerObj._hidePicker(""); }); $(dtPickerObj.element).find('.dtpicker-buttonSet').click(function(e) { if(dtPickerObj.settings.buttonClicked) dtPickerObj.settings.buttonClicked.call(dtPickerObj, "SET", dtPickerObj.dataObject.oInputElement); dtPickerObj._setButtonAction(false); }); $(dtPickerObj.element).find('.dtpicker-buttonClear').click(function(e) { if(dtPickerObj.settings.buttonClicked) dtPickerObj.settings.buttonClicked.call(dtPickerObj, "CLEAR", dtPickerObj.dataObject.oInputElement); dtPickerObj._clearButtonAction(); }); // ---------------------------------------------------------------------------- $(dtPickerObj.element).find(".day .increment").click(function(e) { dtPickerObj.dataObject.iCurrentDay++; dtPickerObj._setCurrentDate(); dtPickerObj._setOutputOnIncrementOrDecrement(); }); $(dtPickerObj.element).find(".day .decrement").click(function(e) { dtPickerObj.dataObject.iCurrentDay--; dtPickerObj._setCurrentDate(); dtPickerObj._setOutputOnIncrementOrDecrement(); }); $(dtPickerObj.element).find(".month .increment").click(function(e) { dtPickerObj.dataObject.iCurrentMonth++; dtPickerObj._setCurrentDate(); dtPickerObj._setOutputOnIncrementOrDecrement(); }); $(dtPickerObj.element).find(".month .decrement").click(function(e) { dtPickerObj.dataObject.iCurrentMonth--; dtPickerObj._setCurrentDate(); dtPickerObj._setOutputOnIncrementOrDecrement(); }); $(dtPickerObj.element).find(".year .increment").click(function(e) { dtPickerObj.dataObject.iCurrentYear++; dtPickerObj._setCurrentDate(); dtPickerObj._setOutputOnIncrementOrDecrement(); }); $(dtPickerObj.element).find(".year .decrement").click(function(e) { dtPickerObj.dataObject.iCurrentYear--; dtPickerObj._setCurrentDate(); dtPickerObj._setOutputOnIncrementOrDecrement(); }); $(dtPickerObj.element).find(".hour .increment").click(function(e) { dtPickerObj.dataObject.iCurrentHour++; dtPickerObj._setCurrentDate(); dtPickerObj._setOutputOnIncrementOrDecrement(); }); $(dtPickerObj.element).find(".hour .decrement").click(function(e) { dtPickerObj.dataObject.iCurrentHour--; dtPickerObj._setCurrentDate(); dtPickerObj._setOutputOnIncrementOrDecrement(); }); $(dtPickerObj.element).find(".minutes .increment").click(function(e) { dtPickerObj.dataObject.iCurrentMinutes += dtPickerObj.settings.minuteInterval; dtPickerObj._setCurrentDate(); dtPickerObj._setOutputOnIncrementOrDecrement(); }); $(dtPickerObj.element).find(".minutes .decrement").click(function(e) { dtPickerObj.dataObject.iCurrentMinutes -= dtPickerObj.settings.minuteInterval; dtPickerObj._setCurrentDate(); dtPickerObj._setOutputOnIncrementOrDecrement(); }); $(dtPickerObj.element).find(".meridiem .dtpicker-compButton").click(function(e) { if(dtPickerObj._compare(dtPickerObj.dataObject.sCurrentMeridiem, "AM")) { dtPickerObj.dataObject.sCurrentMeridiem = "PM"; dtPickerObj.dataObject.iCurrentHour += 12; } else if(dtPickerObj._compare(dtPickerObj.dataObject.sCurrentMeridiem, "PM")) { dtPickerObj.dataObject.sCurrentMeridiem = "AM"; dtPickerObj.dataObject.iCurrentHour -= 12; } dtPickerObj._setCurrentDate(); dtPickerObj._setOutputOnIncrementOrDecrement(); }); }, _adjustMinutes: function(iMinutes) { var dtPickerObj = this; if (dtPickerObj.settings.roundOffMinutes && dtPickerObj.settings.minuteInterval != 1) { iMinutes = (iMinutes % dtPickerObj.settings.minuteInterval) ? (iMinutes - iMinutes % dtPickerObj.settings.minuteInterval + dtPickerObj.settings.minuteInterval) : iMinutes; } return iMinutes; }, _getValueOfElement: function(oElem) { var dtPickerObj = this; var sElemValue = ""; if(dtPickerObj._compare($(oElem).prop("tagName"), "INPUT")) sElemValue = $(oElem).val(); else sElemValue = $(oElem).html(); return sElemValue; }, _setValueOfElement: function(sElemValue) { var dtPickerObj = this; var $oElem = $(dtPickerObj.dataObject.oInputElement); if(dtPickerObj._compare($oElem.prop("tagName"), "INPUT")) $oElem.val(sElemValue); else $oElem.html(sElemValue); $oElem.change(); return sElemValue; }, //----------------------------------------------------------------- _parseDate: function(sDate) { var dtPickerObj = this; var dTempDate = new Date(dtPickerObj.settings.defaultDate); var iDate = dTempDate.getDate(); var iMonth = dTempDate.getMonth(); var iYear = dTempDate.getFullYear(); if(sDate != "" && sDate != undefined && sDate != null) { var sArrDate = sDate.split(dtPickerObj.settings.dateSeparator); if(dtPickerObj._compare(dtPickerObj.dataObject.sDateFormat, dtPickerObj.dataObject.sArrInputDateFormats[0])) // "dd-MM-yyyy" { iDate = parseInt(sArrDate[0]); iMonth = parseInt(sArrDate[1] - 1); iYear = parseInt(sArrDate[2]); } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateFormat, dtPickerObj.dataObject.sArrInputDateFormats[1])) // "MM-dd-yyyy" { iMonth = parseInt(sArrDate[0] - 1); iDate = parseInt(sArrDate[1]); iYear = parseInt(sArrDate[2]); } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateFormat, dtPickerObj.dataObject.sArrInputDateFormats[2])) // "yyyy-MM-dd" { iYear = parseInt(sArrDate[0]); iMonth = parseInt(sArrDate[1] - 1); iDate = parseInt(sArrDate[2]); } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateFormat, dtPickerObj.dataObject.sArrInputDateFormats[3])) // "dd-MMM-yyyy" { iDate = parseInt(sArrDate[0]); iMonth = dtPickerObj._getShortMonthIndex(sArrDate[1]); iYear = parseInt(sArrDate[2]); } } dTempDate = new Date(iYear, iMonth, iDate, 0, 0, 0, 0); return dTempDate; }, _parseTime: function(sTime) { var dtPickerObj = this; var dTempDate = new Date(dtPickerObj.settings.defaultDate); var iDate = dTempDate.getDate(); var iMonth = dTempDate.getMonth(); var iYear = dTempDate.getFullYear(); var iHour = dTempDate.getHours(); var iMinutes = dTempDate.getMinutes(); if(sTime != "" && sTime != undefined && sTime != null) { if(dtPickerObj._compare(dtPickerObj.dataObject.sTimeFormat, dtPickerObj.dataObject.sArrInputTimeFormats[0])) // "hh:mm AA" { var sArrTime = sTime.split(dtPickerObj.settings.timeMeridiemSeparator); var sMeridiem = sArrTime[1]; var sArrTimeComp = sArrTime[0].split(dtPickerObj.settings.timeSeparator); iHour = parseInt(sArrTimeComp[0]); iMinutes = parseInt(sArrTimeComp[1]); if(iHour == 12 && dtPickerObj._compare(sMeridiem, "AM")) iHour = 0; else if(iHour < 12 && dtPickerObj._compare(sMeridiem, "PM")) iHour += 12; } else if(dtPickerObj._compare(dtPickerObj.dataObject.sTimeFormat, dtPickerObj.dataObject.sArrInputTimeFormats[1])) // "HH:mm" { var sArrTimeComp = sTime.split(dtPickerObj.settings.timeSeparator); iHour = parseInt(sArrTimeComp[0]); iMinutes = parseInt(sArrTimeComp[1]); } } iMinutes = dtPickerObj._adjustMinutes(iMinutes); dTempDate = new Date(iYear, iMonth, iDate, iHour, iMinutes, 0, 0); return dTempDate; }, _parseDateTime: function(sDateTime) { var dtPickerObj = this; var dTempDate = new Date(dtPickerObj.settings.defaultDate); var iDate = dTempDate.getDate(); var iMonth = dTempDate.getMonth(); var iYear = dTempDate.getFullYear(); var iHour = dTempDate.getHours(); var iMinutes = dTempDate.getMinutes(); var sMeridiem = ""; if(sDateTime != "" && sDateTime != undefined && sDateTime != null) { var sArrDateTime = sDateTime.split(dtPickerObj.settings.dateTimeSeparator); var sArrDate = sArrDateTime[0].split(dtPickerObj.settings.dateSeparator); if(dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[0]) || dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[1])) // "dd-MM-yyyy HH:mm:ss", "dd-MM-yyyy hh:mm:ss AA" { iDate = parseInt(sArrDate[0]); iMonth = parseInt(sArrDate[1] - 1); iYear = parseInt(sArrDate[2]); } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[2]) || dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[3])) // "MM-dd-yyyy HH:mm:ss", "MM-dd-yyyy hh:mm:ss AA" { iMonth = parseInt(sArrDate[0] - 1); iDate = parseInt(sArrDate[1]); iYear = parseInt(sArrDate[2]); } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[4]) || dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[5])) // "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd hh:mm:ss AA" { iYear = parseInt(sArrDate[0]); iMonth = parseInt(sArrDate[1] - 1); iDate = parseInt(sArrDate[2]); } else if(dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[6]) || dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[7])) // "dd-MMM-yyyy HH:mm:ss", "dd-MMM-yyyy hh:mm:ss AA" { iDate = parseInt(sArrDate[0]); iMonth = dtPickerObj._getShortMonthIndex(sArrDate[1]); iYear = parseInt(sArrDate[2]); } var sTime = sArrDateTime[1]; if(dtPickerObj.dataObject.bIs12Hour) { if(dtPickerObj._compare(dtPickerObj.settings.dateTimeSeparator, dtPickerObj.settings.timeMeridiemSeparator) && (sArrDateTime.length == 3)) sMeridiem = sArrDateTime[2]; else { var sArrTimeComp = sTime.split(dtPickerObj.settings.timeMeridiemSeparator); sTime = sArrTimeComp[0]; sMeridiem = sArrTimeComp[1]; } if(!(dtPickerObj._compare(sMeridiem, "AM") || dtPickerObj._compare(sMeridiem, "PM"))) sMeridiem = ""; } var sArrTime = sTime.split(dtPickerObj.settings.timeSeparator); iHour = parseInt(sArrTime[0]); iMinutes = parseInt(sArrTime[1]); if(iHour == 12 && dtPickerObj._compare(sMeridiem, "AM")) iHour = 0; else if(iHour < 12 && dtPickerObj._compare(sMeridiem, "PM")) iHour += 12; } iMinutes = dtPickerObj._adjustMinutes(iMinutes); dTempDate = new Date(iYear, iMonth, iDate, iHour, iMinutes, 0, 0); return dTempDate; }, _getShortMonthIndex: function(sMonthName) { var dtPickerObj = this; for(var iTempIndex = 0; iTempIndex < dtPickerObj.settings.shortMonthNames.length; iTempIndex++) { if(dtPickerObj._compare(sMonthName, dtPickerObj.settings.shortMonthNames[iTempIndex])) return iTempIndex; } }, // Public Method getIs12Hour: function(sMode, sFormat) { var dtPickerObj = this; var bIs12Hour = false; if(dtPickerObj._compare(sMode, "time")) { bIs12Hour = dtPickerObj._compare(sFormat, dtPickerObj.dataObject.sArrInputTimeFormats[0]); } else if(dtPickerObj._compare(sMode, "datetime")) { bIs12Hour = dtPickerObj._compare(sFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[1]) || dtPickerObj._compare(sFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[3]) || dtPickerObj._compare(sFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[5]) || dtPickerObj._compare(sFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[7]); } return bIs12Hour; }, //----------------------------------------------------------------- _setVariablesForDate: function() { var dtPickerObj = this; dtPickerObj.dataObject.iCurrentDay = dtPickerObj.dataObject.dCurrentDate.getDate(); dtPickerObj.dataObject.iCurrentMonth = dtPickerObj.dataObject.dCurrentDate.getMonth(); dtPickerObj.dataObject.iCurrentYear = dtPickerObj.dataObject.dCurrentDate.getFullYear(); if(dtPickerObj._compare(dtPickerObj.settings.mode, "time")) { dtPickerObj.dataObject.iCurrentHour = dtPickerObj.dataObject.dCurrentDate.getHours(); dtPickerObj.dataObject.iCurrentMinutes = dtPickerObj.dataObject.dCurrentDate.getMinutes(); if(dtPickerObj._compare(dtPickerObj.dataObject.sTimeFormat, dtPickerObj.dataObject.sArrInputTimeFormats[0])) { dtPickerObj.dataObject.sCurrentMeridiem = dtPickerObj._determineMeridiemFromHourAndMinutes(dtPickerObj.dataObject.iCurrentHour, dtPickerObj.dataObject.iCurrentMinutes); } } else if(dtPickerObj._compare(dtPickerObj.settings.mode, "datetime")) { dtPickerObj.dataObject.iCurrentHour = dtPickerObj.dataObject.dCurrentDate.getHours(); dtPickerObj.dataObject.iCurrentMinutes = dtPickerObj.dataObject.dCurrentDate.getMinutes(); if(dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[1]) || dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[3]) || dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[5]) || dtPickerObj._compare(dtPickerObj.dataObject.sDateTimeFormat, dtPickerObj.dataObject.sArrInputDateTimeFormats[7])) { dtPickerObj.dataObject.sCurrentMeridiem = dtPickerObj._determineMeridiemFromHourAndMinutes(dtPickerObj.dataObject.iCurrentHour, dtPickerObj.dataObject.iCurrentMinutes); } } }, _getValuesFromInputBoxes: function() { var dtPickerObj = this; if(dtPickerObj._compare(dtPickerObj.settings.mode, "date") || dtPickerObj._compare(dtPickerObj.settings.mode, "datetime")) { var sMonth = $(dtPickerObj.element).find(".month .dtpicker-compValue").val(); if(sMonth.length > 1) sMonth = sMonth.charAt(0).toUpperCase() + sMonth.slice(1); var iMonth = dtPickerObj.settings.shortMonthNames.indexOf(sMonth); if(iMonth != -1) { dtPickerObj.dataObject.iCurrentMonth = parseInt(iMonth); } else { if(sMonth.match("^[+|-]?[0-9]+$")) { dtPickerObj.dataObject.iCurrentMonth = parseInt(sMonth - 1); } } dtPickerObj.dataObject.iCurrentDay = parseInt($(dtPickerObj.element).find(".day .dtpicker-compValue").val()) || dtPickerObj.dataObject.iCurrentDay; dtPickerObj.dataObject.iCurrentYear = parseInt($(dtPickerObj.element).find(".year .dtpicker-compValue").val()) || dtPickerObj.dataObject.iCurrentYear; } if(dtPickerObj._compare(dtPickerObj.settings.mode, "time") || dtPickerObj._compare(dtPickerObj.settings.mode, "datetime")) { var iTempHour = parseInt($(dtPickerObj.element).find(".hour .dtpicker-compValue").val()), iTempMinutes = dtPickerObj._adjustMinutes(parseInt($(dtPickerObj.element).find(".minutes .dtpicker-compValue").val())); dtPickerObj.dataObject.iCurrentHour = isNaN(iTempHour) ? dtPickerObj.dataObject.iCurrentHour : iTempHour; dtPickerObj.dataObject.iCurrentMinutes = isNaN(iTempMinutes) ? dtPickerObj.dataObject.iCurrentMinutes : iTempMinutes; if(dtPickerObj._compare(dtPickerObj.settings.mode, "time")) { if(dtPickerObj.dataObject.bIs12Hour) { if(dtPickerObj.dataObject.iCurrentHour > 12) dtPickerObj.dataObject.iCurrentHour = (dtPickerObj.dataObject.iCurrentHour % 12); if(dtPickerObj.dataObject.iCurrentMinutes > 59) { var iExtraHour = dtPickerObj.dataObject.iCurrentMinutes / 60; var iExtraMinutes = dtPickerObj.dataObject.iCurrentMinutes % 59; var iNewHour = dtPickerObj.dataObject.iCurrentHour + iExtraHour; if(iNewHour > 12) dtPickerObj.dataObject.iCurrentHour = (iNewHour % 12); dtPickerObj.dataObject.iCurrentMinutes = iExtraMinutes; } } else { if(dtPickerObj.dataObject.iCurrentHour > 23) dtPickerObj.dataObject.iCurrentHour = (dtPickerObj.dataObject.iCurrentHour % 23); if(dtPickerObj.dataObject.iCurrentMinutes > 59) { var iExtraHour = dtPickerObj.dataObject.iCurrentMinutes / 60; var iExtraMinutes = dtPickerObj.dataObject.iCurrentMinutes % 59; var iNewHour = dtPickerObj.dataObject.iCurrentHour + iExtraHour; if(iNewHour > 23) dtPickerObj.dataObject.iCurrentHour = (iNewHour % 23); dtPickerObj.dataObject.iCurrentMinutes = iExtraMinutes; } } } if(dtPickerObj.dataObject.bIs12Hour) { var sMeridiem = $(dtPickerObj.element).find(".meridiem .dtpicker-compValue").val(); if(dtPickerObj._compare(sMeridiem, "AM") || dtPickerObj._compare(sMeridiem, "PM")) dtPickerObj.dataObject.sCurrentMeridiem = sMeridiem; if(dtPickerObj._compare(dtPickerObj.dataObject.sCurrentMeridiem, "PM")) { if(dtPickerObj.dataObject.iCurrentHour !== 12 && dtPickerObj.dataObject.iCurrentHour < 13) dtPickerObj.dataObject.iCurrentHour += 12; } if(dtPickerObj._compare(dtPickerObj.dataObject.sCurrentMeridiem, "AM") && dtPickerObj.dataObject.iCurrentHour == 12) dtPickerObj.dataObject.iCurrentHour = 0; } } }, _setCurrentDate: function() { var dtPickerObj = this; var dTempDate = new Date(dtPickerObj.dataObject.iCurrentYear, dtPickerObj.dataObject.iCurrentMonth, dtPickerObj.dataObject.iCurrentDay, dtPickerObj.dataObject.iCurrentHour, dtPickerObj.dataObject.iCurrentMinutes, 0, 0); var bGTMaxDate = false, bLTMinDate = false; if(dtPickerObj.dataObject.dMaxValue != null) bGTMaxDate = (dTempDate.getTime() > dtPickerObj.dataObject.dMaxValue.getTime()); if(dtPickerObj.dataObject.dMinValue != null) bLTMinDate = (dTempDate.getTime() < dtPickerObj.dataObject.dMinValue.getTime()); if(bGTMaxDate || bLTMinDate) { var bCDGTMaxDate = false, bCDLTMinDate = false; if(dtPickerObj.dataObject.dMaxValue != null) bCDGTMaxDate = (dtPickerObj.dataObject.dCurrentDate.getTime() > dtPickerObj.dataObject.dMaxValue.getTime()); if(dtPickerObj.dataObject.dMinValue != null) bCDLTMinDate = (dtPickerObj.dataObject.dCurrentDate.getTime() < dtPickerObj.dataObject.dMinValue.getTime()); if(!(bCDGTMaxDate || bCDLTMinDate)) dTempDate = new Date(dtPickerObj.dataObject.dCurrentDate); else { if(bCDGTMaxDate) dTempDate = new Date(dtPickerObj.dataObject.dMaxValue); if(bCDLTMinDate) dTempDate = new Date(dtPickerObj.dataObject.dMinValue); } } dtPickerObj.dataObject.dCurrentDate = new Date(dTempDate); dtPickerObj._setVariablesForDate(); if(dtPickerObj._compare(dtPickerObj.settings.mode, "date")) { var sDay = dtPickerObj.dataObject.iCurrentDay; sDay = (sDay < 10) ? ("0" + sDay) : sDay; var iMonth = dtPickerObj.dataObject.iCurrentMonth; var sMonth = dtPickerObj.dataObject.iCurrentMonth; sMonth = (sMonth < 10) ? ("0" + sMonth) : sMonth; var sMonthShort = dtPickerObj.settings.shortMonthNames[iMonth]; var sMonthFull = dtPickerObj.settings.fullMonthNames[iMonth]; var sYear = dtPickerObj.dataObject.iCurrentYear; var iDayOfTheWeek = dtPickerObj.dataObject.dCurrentDate.getDay(); var sDayOfTheWeek = dtPickerObj.settings.shortDayNames[iDayOfTheWeek]; var sDayOfTheWeekFull = dtPickerObj.settings.fullDayNames[iDayOfTheWeek]; $(dtPickerObj.element).find('.day .dtpicker-compValue').val(sDay); $(dtPickerObj.element).find('.month .dtpicker-compValue').val(sMonthShort); $(dtPickerObj.element).find('.year .dtpicker-compValue').val(sYear); var sDate = dtPickerObj.settings.formatHumanDate({ dd: sDay, MM: sMonth, yyyy: sYear, day: sDayOfTheWeekFull, dayShort: sDayOfTheWeek, month: sMonthFull, monthShort: sMonthShort }); // var sDate = sDayOfTheWeek + ", " + sMonthFull + " " + sDay + ", " + sYear; $(dtPickerObj.element).find('.dtpicker-value').html(sDate); } else if(dtPickerObj._compare(dtPickerObj.settings.mode, "time")) { var sHour = dtPickerObj.dataObject.iCurrentHour; if(dtPickerObj.dataObject.bIs12Hour) { if(sHour > 12) sHour -= 12; $(dtPickerObj.element).find('.meridiem .dtpicker-compValue').val(dtPickerObj.dataObject.sCurrentMeridiem); } sHour = (sHour < 10) ? ("0" + sHour) : sHour; if(dtPickerObj.dataObject.bIs12Hour && sHour == "00") sHour = 12; var sMinutes = dtPickerObj.dataObject.iCurrentMinutes; sMinutes = (sMinutes < 10) ? ("0" + sMinutes) : sMinutes; $(dtPickerObj.element).find('.hour .dtpicker-compValue').val(sHour); $(dtPickerObj.element).find('.minutes .dtpicker-compValue').val(sMinutes); var sTime = sHour + dtPickerObj.settings.timeSeparator + sMinutes; if(dtPickerObj.dataObject.bIs12Hour) sTime += dtPickerObj.settings.timeMeridiemSeparator + dtPickerObj.dataObject.sCurrentMeridiem; $(dtPickerObj.element).find('.dtpicker-value').html(sTime); } else if(dtPickerObj._compare(dtPickerObj.settings.mode, "datetime")) { var sDay = dtPickerObj.dataObject.iCurrentDay; sDay = (sDay < 10) ? ("0" + sDay) : sDay; var iMonth = dtPickerObj.dataObject.iCurrentMonth; var sMonth = (iMonth < 10) ? ("0" + iMonth) : iMonth; var sMonthShort = dtPickerObj.settings.shortMonthNames[iMonth]; var sMonthFull = dtPickerObj.settings.fullMonthNames[iMonth]; var sYear = dtPickerObj.dataObject.iCurrentYear; var iDayOfTheWeek = dtPickerObj.dataObject.dCurrentDate.getDay(); var sDayOfTheWeek = dtPickerObj.settings.shortDayNames[iDayOfTheWeek]; var sDayOfTheWeekFull = dtPickerObj.settings.fullDayNames[iDayOfTheWeek]; $(dtPickerObj.element).find('.day .dtpicker-compValue').val(sDay); $(dtPickerObj.element).find('.month .dtpicker-compValue').val(sMonthShort); $(dtPickerObj.element).find('.year .dtpicker-compValue').val(sYear); // var sDate = sDayOfTheWeek + ", " + sMonthFull + " " + sDay + ", " + sYear; var sDate = dtPickerObj.settings.formatHumanDate({ dd: sDay, MM: sMonth, yyyy: sYear, day: sDayOfTheWeekFull, dayShort: sDayOfTheWeek, month: sMonthFull, monthShort: sMonthShort }); //------------------------------------------------------------------ var sHour = dtPickerObj.dataObject.iCurrentHour; if(dtPickerObj.dataObject.bIs12Hour) { if(sHour > 12) sHour -= 12; $(dtPickerObj.element).find('.meridiem .dtpicker-compValue').val(dtPickerObj.dataObject.sCurrentMeridiem); } sHour = (sHour < 10) ? ("0" + sHour) : sHour; if(dtPickerObj.dataObject.bIs12Hour && sHour == "00") sHour = 12; var sMinutes = dtPickerObj.dataObject.iCurrentMinutes; sMinutes = (sMinutes < 10) ? ("0" + sMinutes) : sMinutes; $(dtPickerObj.element).find('.hour .dtpicker-compValue').val(sHour); $(dtPickerObj.element).find('.minutes .dtpicker-compValue').val(sMinutes); var sTime = sHour + dtPickerObj.settings.timeSeparator + sMinutes; if(dtPickerObj.dataObject.bIs12Hour) sTime += dtPickerObj.settings.timeMeridiemSeparator + dtPickerObj.dataObject.sCurrentMeridiem; //------------------------------------------------------------------ var sDateTime = sDate + dtPickerObj.settings.dateTimeSeparator + sTime; $(dtPickerObj.element).find('.dtpicker-value').html(sDateTime); } dtPickerObj._setButtons(); }, _setButtons: function() { var dtPickerObj = this; $(dtPickerObj.element).find('.dtpicker-compButton').removeClass("dtpicker-compButtonDisable").addClass('dtpicker-compButtonEnable'); var dTempDate; if(dtPickerObj.dataObject.dMaxValue != null) { if(dtPickerObj._compare(dtPickerObj.settings.mode, "time")) { // Decrement Hour if((dtPickerObj.dataObject.iCurrentHour + 1) > dtPickerObj.dataObject.dMaxValue.getHours() || ((dtPickerObj.dataObject.iCurrentHour + 1) == dtPickerObj.dataObject.dMaxValue.getHours() && dtPickerObj.dataObject.iCurrentMinutes > dtPickerObj.dataObject.dMaxValue.getMinutes())) $(dtPickerObj.element).find(".hour .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); // Decrement Minutes if(dtPickerObj.dataObject.iCurrentHour >= dtPickerObj.dataObject.dMaxValue.getHours() && (dtPickerObj.dataObject.iCurrentMinutes + 1) > dtPickerObj.dataObject.dMaxValue.getMinutes()) $(dtPickerObj.element).find(".minutes .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); } else { // Increment Day dTempDate = new Date(dtPickerObj.dataObject.iCurrentYear, dtPickerObj.dataObject.iCurrentMonth, (dtPickerObj.dataObject.iCurrentDay + 1), dtPickerObj.dataObject.iCurrentHour, dtPickerObj.dataObject.iCurrentMinutes, 0, 0); if(dTempDate.getTime() > dtPickerObj.dataObject.dMaxValue.getTime()) $(dtPickerObj.element).find(".day .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); // Increment Month dTempDate = new Date(dtPickerObj.dataObject.iCurrentYear, (dtPickerObj.dataObject.iCurrentMonth + 1), dtPickerObj.dataObject.iCurrentDay, dtPickerObj.dataObject.iCurrentHour, dtPickerObj.dataObject.iCurrentMinutes, 0, 0); if(dTempDate.getTime() > dtPickerObj.dataObject.dMaxValue.getTime()) $(dtPickerObj.element).find(".month .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); // Increment Year dTempDate = new Date((dtPickerObj.dataObject.iCurrentYear + 1), dtPickerObj.dataObject.iCurrentMonth, dtPickerObj.dataObject.iCurrentDay, dtPickerObj.dataObject.iCurrentHour, dtPickerObj.dataObject.iCurrentMinutes, 0, 0); if(dTempDate.getTime() > dtPickerObj.dataObject.dMaxValue.getTime()) $(dtPickerObj.element).find(".year .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); // Increment Hour dTempDate = new Date(dtPickerObj.dataObject.iCurrentYear, dtPickerObj.dataObject.iCurrentMonth, dtPickerObj.dataObject.iCurrentDay, (dtPickerObj.dataObject.iCurrentHour + 1), dtPickerObj.dataObject.iCurrentMinutes, 0, 0); if(dTempDate.getTime() > dtPickerObj.dataObject.dMaxValue.getTime()) $(dtPickerObj.element).find(".hour .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); // Increment Minutes dTempDate = new Date(dtPickerObj.dataObject.iCurrentYear, dtPickerObj.dataObject.iCurrentMonth, dtPickerObj.dataObject.iCurrentDay, dtPickerObj.dataObject.iCurrentHour, (dtPickerObj.dataObject.iCurrentMinutes + 1), 0, 0); if(dTempDate.getTime() > dtPickerObj.dataObject.dMaxValue.getTime()) $(dtPickerObj.element).find(".minutes .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); } } if(dtPickerObj.dataObject.dMinValue != null) { if(dtPickerObj._compare(dtPickerObj.settings.mode, "time")) { // Decrement Hour if((dtPickerObj.dataObject.iCurrentHour - 1) < dtPickerObj.dataObject.dMinValue.getHours() || ((dtPickerObj.dataObject.iCurrentHour - 1) == dtPickerObj.dataObject.dMinValue.getHours() && dtPickerObj.dataObject.iCurrentMinutes < dtPickerObj.dataObject.dMinValue.getMinutes())) $(dtPickerObj.element).find(".hour .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); // Decrement Minutes if(dtPickerObj.dataObject.iCurrentHour <= dtPickerObj.dataObject.dMinValue.getHours() && (dtPickerObj.dataObject.iCurrentMinutes - 1) < dtPickerObj.dataObject.dMinValue.getMinutes()) $(dtPickerObj.element).find(".minutes .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); } else { // Decrement Day dTempDate = new Date(dtPickerObj.dataObject.iCurrentYear, dtPickerObj.dataObject.iCurrentMonth, (dtPickerObj.dataObject.iCurrentDay - 1), dtPickerObj.dataObject.iCurrentHour, dtPickerObj.dataObject.iCurrentMinutes, 0, 0); if(dTempDate.getTime() < dtPickerObj.dataObject.dMinValue.getTime()) $(dtPickerObj.element).find(".day .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); // Decrement Month dTempDate = new Date(dtPickerObj.dataObject.iCurrentYear, (dtPickerObj.dataObject.iCurrentMonth - 1), dtPickerObj.dataObject.iCurrentDay, dtPickerObj.dataObject.iCurrentHour, dtPickerObj.dataObject.iCurrentMinutes, 0, 0); if(dTempDate.getTime() < dtPickerObj.dataObject.dMinValue.getTime()) $(dtPickerObj.element).find(".month .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); // Decrement Year dTempDate = new Date((dtPickerObj.dataObject.iCurrentYear - 1), dtPickerObj.dataObject.iCurrentMonth, dtPickerObj.dataObject.iCurrentDay, dtPickerObj.dataObject.iCurrentHour, dtPickerObj.dataObject.iCurrentMinutes, 0, 0); if(dTempDate.getTime() < dtPickerObj.dataObject.dMinValue.getTime()) $(dtPickerObj.element).find(".year .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); // Decrement Hour dTempDate = new Date(dtPickerObj.dataObject.iCurrentYear, dtPickerObj.dataObject.iCurrentMonth, dtPickerObj.dataObject.iCurrentDay, (dtPickerObj.dataObject.iCurrentHour - 1), dtPickerObj.dataObject.iCurrentMinutes, 0, 0); if(dTempDate.getTime() < dtPickerObj.dataObject.dMinValue.getTime()) $(dtPickerObj.element).find(".hour .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); // Decrement Minutes dTempDate = new Date(dtPickerObj.dataObject.iCurrentYear, dtPickerObj.dataObject.iCurrentMonth, dtPickerObj.dataObject.iCurrentDay, dtPickerObj.dataObject.iCurrentHour, (dtPickerObj.dataObject.iCurrentMinutes - 1), 0, 0); if(dTempDate.getTime() < dtPickerObj.dataObject.dMinValue.getTime()) $(dtPickerObj.element).find(".minutes .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); } } if(dtPickerObj.dataObject.bIs12Hour) { if(dtPickerObj.dataObject.dMaxValue != null || dtPickerObj.dataObject.dMinValue != null) { var iTempHour = dtPickerObj.dataObject.iCurrentHour; if(dtPickerObj._compare(dtPickerObj.dataObject.sCurrentMeridiem, "AM")) iTempHour += 12; else if(dtPickerObj._compare(dtPickerObj.dataObject.sCurrentMeridiem, "PM")) iTempHour -= 12; dTempDate = new Date(dtPickerObj.dataObject.iCurrentYear, dtPickerObj.dataObject.iCurrentMonth, dtPickerObj.dataObject.iCurrentDay, iTempHour, dtPickerObj.dataObject.iCurrentMinutes, 0, 0); if(dtPickerObj.dataObject.dMaxValue != null) { if(dtPickerObj._compare(dtPickerObj.settings.mode, "time")) { var iTempMinutes = dtPickerObj.dataObject.iCurrentMinutes; if(iTempHour > dtPickerObj.dataObject.dMaxValue.getHours() || (iTempHour == dtPickerObj.dataObject.dMaxValue.getHours() && iTempMinutes > dtPickerObj.dataObject.dMaxValue.getMinutes())) $(dtPickerObj.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); } else { if(dTempDate.getTime() > dtPickerObj.dataObject.dMaxValue.getTime()) $(dtPickerObj.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); } } if(dtPickerObj.dataObject.dMinValue != null) { if(dtPickerObj._compare(dtPickerObj.settings.mode, "time")) { var iTempMinutes = dtPickerObj.dataObject.iCurrentMinutes; if(iTempHour < dtPickerObj.dataObject.dMinValue.getHours() || (iTempHour == dtPickerObj.dataObject.dMinValue.getHours() && iTempMinutes < dtPickerObj.dataObject.dMinValue.getMinutes())) $(dtPickerObj.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); } else { if(dTempDate.getTime() < dtPickerObj.dataObject.dMinValue.getTime()) $(dtPickerObj.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable"); } } } } }, _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 false; }, // Public Method setIsPopup: function(bIsPopup) { var dtPickerObj = this; dtPickerObj.settings.isPopup = bIsPopup; if($(dtPickerObj.element).css("display") != "none") dtPickerObj._hidePicker(0); if(dtPickerObj.settings.isPopup) { $(dtPickerObj.element).addClass("dtpicker-mobile"); $(dtPickerObj.element).css({position: "fixed", top: 0, left: 0, width: "100%", height: "100%"}); } else { $(dtPickerObj.element).removeClass("dtpicker-mobile"); if(dtPickerObj.dataObject.oInputElement != null) { var iElemTop = $(dtPickerObj.dataObject.oInputElement).offset().top + $(dtPickerObj.dataObject.oInputElement).outerHeight(); var iElemLeft = $(dtPickerObj.dataObject.oInputElement).offset().left; var iElemWidth = $(dtPickerObj.dataObject.oInputElement).outerWidth(); $(dtPickerObj.element).css({position: "absolute", top: iElemTop, left: iElemLeft, width: iElemWidth, height: "auto"}); } } }, _compareDates: function(dDate1, dDate2) { dDate1 = new Date(dDate1.getDate(), dDate1.getMonth(), dDate1.getFullYear(), 0, 0, 0, 0); dDate1 = new Date(dDate1.getDate(), dDate1.getMonth(), dDate1.getFullYear(), 0, 0, 0, 0); var iDateDiff = (dDate1.getTime() - dDate2.getTime()) / 864E5; return (iDateDiff == 0) ? iDateDiff: (iDateDiff/Math.abs(iDateDiff)); }, _compareTime: function(dTime1, dTime2) { var iTimeMatch = 0; if((dTime1.getHours() == dTime2.getHours()) && (dTime1.getMinutes() == dTime2.getMinutes())) iTimeMatch = 1; // 1 = Exact Match else { if(dTime1.getHours() < dTime2.getHours()) iTimeMatch = 2; // time1 < time2 else if(dTime1.getHours() > dTime2.getHours()) iTimeMatch = 3; // time1 > time2 else if(dTime1.getHours() == dTime2.getHours()) { if(dTime1.getMinutes() < dTime2.getMinutes()) iTimeMatch = 2; // time1 < time2 else if(dTime1.getMinutes() > dTime2.getMinutes()) iTimeMatch = 3; // time1 > time2 } } return iTimeMatch; }, _compareDateTime: function(dDate1, dDate2) { var iDateTimeDiff = (dDate1.getTime() - dDate2.getTime()) / 6E4; return (iDateTimeDiff == 0) ? iDateTimeDiff: (iDateTimeDiff/Math.abs(iDateTimeDiff)); }, _determineMeridiemFromHourAndMinutes: function(iHour, iMinutes) { if (iHour > 12) { return "PM"; } else if(iHour == 12 && iMinutes >= 0) { return "PM"; } else { return "AM"; } } }; }));