3009 lines
94 KiB
JavaScript
3009 lines
94 KiB
JavaScript
/* -----------------------------------------------------------------------------
|
|
|
|
jQuery DateTimePicker - Responsive flat design jQuery DateTime Picker plugin for Web & mobile
|
|
Version 0.1.38
|
|
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'>×</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.DateTimePicker", function(e)
|
|
{
|
|
keyCode = parseInt(e.keyCode ? e.keyCode : e.which);
|
|
// console.log("keydown " + keyCode);
|
|
if(! $(".dtpicker-compValue").is(":focus") && keyCode !== 9)
|
|
{
|
|
//if(keyCode !== 37 && keyCode !== 39)
|
|
oDTP._hidePicker("");
|
|
}
|
|
});
|
|
}
|
|
|
|
$(".dtpicker-cont *").click(function(e)
|
|
{
|
|
e.stopPropagation();
|
|
});
|
|
|
|
if(!oDTP.settings.readonlyInputs)
|
|
{
|
|
$(".dtpicker-compValue").not(".month .dtpicker-compValue, .meridiem .dtpicker-compValue").keyup(function()
|
|
{
|
|
this.value = this.value.replace(/[^0-9\.]/g,"");
|
|
});
|
|
|
|
$(".dtpicker-compValue").focus(function()
|
|
{
|
|
oDTP.oData.bElemFocused = true;
|
|
$(this).select();
|
|
});
|
|
|
|
$(".dtpicker-compValue").blur(function()
|
|
{
|
|
oDTP._getValuesFromInputBoxes();
|
|
oDTP._setCurrentDate();
|
|
|
|
oDTP.oData.bElemFocused = false;
|
|
var $oParentElem = $(this).parent().parent();
|
|
setTimeout(function()
|
|
{
|
|
if($oParentElem.is(":last-child") && !oDTP.oData.bElemFocused)
|
|
{
|
|
oDTP._setButtonAction(false);
|
|
}
|
|
}, 50);
|
|
});
|
|
|
|
$(".dtpicker-compValue").keyup(function(e)
|
|
{
|
|
var $oTextField = $(this),
|
|
|
|
sTextBoxVal = $oTextField.val(),
|
|
iLength = sTextBoxVal.length,
|
|
sNewTextBoxVal;
|
|
|
|
if($oTextField.parent().hasClass("day") || $oTextField.parent().hasClass("hour") || $oTextField.parent().hasClass("minutes") || $oTextField.parent().hasClass("meridiem"))
|
|
{
|
|
if(iLength > 2)
|
|
{
|
|
sNewTextBoxVal = sTextBoxVal.slice(0, 2);
|
|
$oTextField.val(sNewTextBoxVal);
|
|
}
|
|
}
|
|
else if($oTextField.parent().hasClass("month"))
|
|
{
|
|
if(iLength > 3)
|
|
{
|
|
sNewTextBoxVal = sTextBoxVal.slice(0, 3);
|
|
$oTextField.val(sNewTextBoxVal);
|
|
}
|
|
}
|
|
else if($oTextField.parent().hasClass("year"))
|
|
{
|
|
if(iLength > 4)
|
|
{
|
|
sNewTextBoxVal = sTextBoxVal.slice(0, 4);
|
|
$oTextField.val(sNewTextBoxVal);
|
|
}
|
|
}
|
|
|
|
if(parseInt(e.keyCode ? e.keyCode : e.which) === 9)
|
|
$(this).select();
|
|
});
|
|
}
|
|
|
|
$(oDTP.element).find(".dtpicker-compValue").on("mousewheel DOMMouseScroll onmousewheel", function(e)
|
|
{
|
|
if($(".dtpicker-compValue").is(":focus"))
|
|
{
|
|
var delta = Math.max(-1, Math.min(1, e.originalEvent.wheelDelta));
|
|
|
|
if(delta > 0)
|
|
{
|
|
classType = $(".dtpicker-compValue:focus").parent().attr("class");
|
|
oDTP._incrementDecrementActionsUsingArrowAndMouse(classType, "inc");
|
|
}
|
|
else
|
|
{
|
|
classType = $(".dtpicker-compValue:focus").parent().attr("class");
|
|
oDTP._incrementDecrementActionsUsingArrowAndMouse(classType, "dec");
|
|
}
|
|
return false;
|
|
}
|
|
});
|
|
|
|
//-----------------------------------------------------------------------
|
|
|
|
$(oDTP.element).find(".dtpicker-close").click(function(e)
|
|
{
|
|
if(oDTP.settings.buttonClicked)
|
|
oDTP.settings.buttonClicked.call(oDTP, "CLOSE", oDTP.oData.oInputElement);
|
|
if(!oDTP.settings.isInline)
|
|
oDTP._hidePicker("");
|
|
});
|
|
|
|
$(oDTP.element).find(".dtpicker-buttonSet").click(function(e)
|
|
{
|
|
if(oDTP.settings.buttonClicked)
|
|
oDTP.settings.buttonClicked.call(oDTP, "SET", oDTP.oData.oInputElement);
|
|
oDTP._setButtonAction(false);
|
|
});
|
|
|
|
$(oDTP.element).find(".dtpicker-buttonClear").click(function(e)
|
|
{
|
|
if(oDTP.settings.buttonClicked)
|
|
oDTP.settings.buttonClicked.call(oDTP, "CLEAR", oDTP.oData.oInputElement);
|
|
oDTP._clearButtonAction();
|
|
});
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
//console.log((oDTP.settings.captureTouchHold || oDTP.settings.captureMouseHold));
|
|
if(oDTP.settings.captureTouchHold || oDTP.settings.captureMouseHold)
|
|
{
|
|
var sHoldEvents = "";
|
|
if(oDTP.settings.captureTouchHold && oDTP.oData.bIsTouchDevice)
|
|
sHoldEvents += "touchstart touchmove touchend ";
|
|
if(oDTP.settings.captureMouseHold)
|
|
sHoldEvents += "mousedown mouseup";
|
|
|
|
$(".dtpicker-cont *").on(sHoldEvents, function(e)
|
|
{
|
|
oDTP._clearIntervalForTouchEvents();
|
|
});
|
|
|
|
oDTP._bindTouchEvents("day");
|
|
oDTP._bindTouchEvents("month");
|
|
oDTP._bindTouchEvents("year");
|
|
oDTP._bindTouchEvents("hour");
|
|
oDTP._bindTouchEvents("minutes");
|
|
oDTP._bindTouchEvents("seconds");
|
|
}
|
|
else
|
|
{
|
|
$(oDTP.element).find(".day .increment, .day .increment *").click(function(e)
|
|
{
|
|
oDTP.oData.iCurrentDay++;
|
|
oDTP._setCurrentDate();
|
|
oDTP._setOutputOnIncrementOrDecrement();
|
|
});
|
|
|
|
$(oDTP.element).find(".day .decrement, .day .decrement *").click(function(e)
|
|
{
|
|
oDTP.oData.iCurrentDay--;
|
|
oDTP._setCurrentDate();
|
|
oDTP._setOutputOnIncrementOrDecrement();
|
|
});
|
|
|
|
$(oDTP.element).find(".month .increment, .month .increment *").click(function(e)
|
|
{
|
|
oDTP.oData.iCurrentMonth++;
|
|
oDTP._setCurrentDate();
|
|
oDTP._setOutputOnIncrementOrDecrement();
|
|
});
|
|
|
|
$(oDTP.element).find(".month .decrement, .month .decrement *").click(function(e)
|
|
{
|
|
oDTP.oData.iCurrentMonth--;
|
|
oDTP._setCurrentDate();
|
|
oDTP._setOutputOnIncrementOrDecrement();
|
|
});
|
|
|
|
$(oDTP.element).find(".year .increment, .year .increment *").click(function(e)
|
|
{
|
|
oDTP.oData.iCurrentYear++;
|
|
oDTP._setCurrentDate();
|
|
oDTP._setOutputOnIncrementOrDecrement();
|
|
});
|
|
|
|
$(oDTP.element).find(".year .decrement, .year .decrement *").click(function(e)
|
|
{
|
|
oDTP.oData.iCurrentYear--;
|
|
oDTP._setCurrentDate();
|
|
oDTP._setOutputOnIncrementOrDecrement();
|
|
});
|
|
|
|
$(oDTP.element).find(".hour .increment, .hour .increment *").click(function(e)
|
|
{
|
|
oDTP.oData.iCurrentHour++;
|
|
oDTP._setCurrentDate();
|
|
oDTP._setOutputOnIncrementOrDecrement();
|
|
});
|
|
|
|
$(oDTP.element).find(".hour .decrement, .hour .decrement *").click(function(e)
|
|
{
|
|
oDTP.oData.iCurrentHour--;
|
|
oDTP._setCurrentDate();
|
|
oDTP._setOutputOnIncrementOrDecrement();
|
|
});
|
|
|
|
$(oDTP.element).find(".minutes .increment, .minutes .increment *").click(function(e)
|
|
{
|
|
oDTP.oData.iCurrentMinutes += oDTP.settings.minuteInterval;
|
|
oDTP._setCurrentDate();
|
|
oDTP._setOutputOnIncrementOrDecrement();
|
|
});
|
|
|
|
$(oDTP.element).find(".minutes .decrement, .minutes .decrement *").click(function(e)
|
|
{
|
|
oDTP.oData.iCurrentMinutes -= oDTP.settings.minuteInterval;
|
|
oDTP._setCurrentDate();
|
|
oDTP._setOutputOnIncrementOrDecrement();
|
|
});
|
|
|
|
$(oDTP.element).find(".seconds .increment, .seconds .increment *").click(function(e)
|
|
{
|
|
oDTP.oData.iCurrentSeconds += oDTP.settings.secondsInterval;
|
|
oDTP._setCurrentDate();
|
|
oDTP._setOutputOnIncrementOrDecrement();
|
|
});
|
|
|
|
$(oDTP.element).find(".seconds .decrement, .seconds .decrement *").click(function(e)
|
|
{
|
|
oDTP.oData.iCurrentSeconds -= oDTP.settings.secondsInterval;
|
|
oDTP._setCurrentDate();
|
|
oDTP._setOutputOnIncrementOrDecrement();
|
|
});
|
|
}
|
|
|
|
$(oDTP.element).find(".meridiem .dtpicker-compButton, .meridiem .dtpicker-compButton *").click(function(e)
|
|
{
|
|
if($.cf._compare(oDTP.oData.sCurrentMeridiem, "AM"))
|
|
{
|
|
oDTP.oData.sCurrentMeridiem = "PM";
|
|
oDTP.oData.iCurrentHour += 12;
|
|
}
|
|
else if($.cf._compare(oDTP.oData.sCurrentMeridiem, "PM"))
|
|
{
|
|
oDTP.oData.sCurrentMeridiem = "AM";
|
|
oDTP.oData.iCurrentHour -= 12;
|
|
}
|
|
oDTP._setCurrentDate();
|
|
oDTP._setOutputOnIncrementOrDecrement();
|
|
});
|
|
},
|
|
|
|
_adjustMinutes: function(iMinutes)
|
|
{
|
|
var oDTP = this;
|
|
if(oDTP.settings.roundOffMinutes && oDTP.settings.minuteInterval !== 1)
|
|
{
|
|
iMinutes = (iMinutes % oDTP.settings.minuteInterval) ? (iMinutes - (iMinutes % oDTP.settings.minuteInterval) + oDTP.settings.minuteInterval) : iMinutes;
|
|
}
|
|
return iMinutes;
|
|
},
|
|
|
|
_adjustSeconds: function(iSeconds)
|
|
{
|
|
var oDTP = this;
|
|
if(oDTP.settings.roundOffSeconds && oDTP.settings.secondsInterval !== 1)
|
|
{
|
|
iSeconds = (iSeconds % oDTP.settings.secondsInterval) ? (iSeconds - (iSeconds % oDTP.settings.secondsInterval) + oDTP.settings.secondsInterval) : iSeconds;
|
|
}
|
|
return iSeconds;
|
|
},
|
|
|
|
_getValueOfElement: function(oElem)
|
|
{
|
|
var oDTP = this;
|
|
var sElemValue = "";
|
|
|
|
if($.cf._compare($(oElem).prop("tagName"), "INPUT"))
|
|
sElemValue = $(oElem).val();
|
|
else
|
|
sElemValue = $(oElem).html();
|
|
|
|
return sElemValue;
|
|
},
|
|
|
|
_setValueOfElement: function(sElemValue, $oElem)
|
|
{
|
|
var oDTP = this;
|
|
|
|
if(!$.cf._isValid($oElem))
|
|
$oElem = $(oDTP.oData.oInputElement);
|
|
|
|
if($.cf._compare($oElem.prop("tagName"), "INPUT"))
|
|
$oElem.val(sElemValue);
|
|
else
|
|
$oElem.html(sElemValue);
|
|
|
|
var dElemValue = oDTP.getDateObjectForInputField($oElem);
|
|
|
|
if(oDTP.settings.settingValueOfElement)
|
|
oDTP.settings.settingValueOfElement.call(oDTP, sElemValue, dElemValue, $oElem);
|
|
|
|
$oElem.change();
|
|
|
|
return sElemValue;
|
|
},
|
|
|
|
_bindTouchEvents: function(type)
|
|
{
|
|
var oDTP = this;
|
|
|
|
$(oDTP.element).find("." + type + " .increment, ." + type + " .increment *").on("touchstart mousedown", function(e)
|
|
{
|
|
e.stopPropagation();
|
|
if(!$.cf._isValid(oDTP.oData.sTouchButton))
|
|
{
|
|
oDTP.oData.iTouchStart = (new Date()).getTime();
|
|
oDTP.oData.sTouchButton = type + "-inc";
|
|
|
|
oDTP._setIntervalForTouchEvents();
|
|
}
|
|
});
|
|
|
|
$(oDTP.element).find("." + type + " .increment, ." + type + " .increment *").on("touchend mouseup", function(e)
|
|
{
|
|
e.stopPropagation();
|
|
oDTP._clearIntervalForTouchEvents();
|
|
});
|
|
|
|
$(oDTP.element).find("." + type + " .decrement, ." + type + " .decrement *").on("touchstart mousedown", function(e)
|
|
{
|
|
e.stopPropagation();
|
|
if(!$.cf._isValid(oDTP.oData.sTouchButton))
|
|
{
|
|
oDTP.oData.iTouchStart = (new Date()).getTime();
|
|
oDTP.oData.sTouchButton = type + "-dec";
|
|
|
|
oDTP._setIntervalForTouchEvents();
|
|
}
|
|
});
|
|
|
|
$(oDTP.element).find("." + type + " .decrement, ." + type + " .decrement *").on("touchend mouseup", function(e)
|
|
{
|
|
e.stopPropagation();
|
|
oDTP._clearIntervalForTouchEvents();
|
|
});
|
|
},
|
|
|
|
_setIntervalForTouchEvents: function()
|
|
{
|
|
var oDTP = this;
|
|
|
|
var iInterval = oDTP.oData.bIsTouchDevice ? oDTP.settings.touchHoldInterval : oDTP.settings.mouseHoldInterval;
|
|
if(!$.cf._isValid(oDTP.oData.oTimeInterval))
|
|
{
|
|
var iDiff;
|
|
|
|
oDTP.oData.oTimeInterval = setInterval(function()
|
|
{
|
|
iDiff = ((new Date()).getTime() - oDTP.oData.iTouchStart);
|
|
if(iDiff > iInterval && $.cf._isValid(oDTP.oData.sTouchButton))
|
|
{
|
|
if(oDTP.oData.sTouchButton === "day-inc")
|
|
{
|
|
oDTP.oData.iCurrentDay++;
|
|
}
|
|
else if(oDTP.oData.sTouchButton === "day-dec")
|
|
{
|
|
oDTP.oData.iCurrentDay--;
|
|
}
|
|
else if(oDTP.oData.sTouchButton === "month-inc")
|
|
{
|
|
oDTP.oData.iCurrentMonth++;
|
|
}
|
|
else if(oDTP.oData.sTouchButton === "month-dec")
|
|
{
|
|
oDTP.oData.iCurrentMonth--;
|
|
}
|
|
else if(oDTP.oData.sTouchButton === "year-inc")
|
|
{
|
|
oDTP.oData.iCurrentYear++;
|
|
}
|
|
else if(oDTP.oData.sTouchButton === "year-dec")
|
|
{
|
|
oDTP.oData.iCurrentYear--;
|
|
}
|
|
else if(oDTP.oData.sTouchButton === "hour-inc")
|
|
{
|
|
oDTP.oData.iCurrentHour++;
|
|
}
|
|
else if(oDTP.oData.sTouchButton === "hour-dec")
|
|
{
|
|
oDTP.oData.iCurrentHour--;
|
|
}
|
|
else if(oDTP.oData.sTouchButton === "minute-inc")
|
|
{
|
|
oDTP.oData.iCurrentMinutes += oDTP.settings.minuteInterval;
|
|
}
|
|
else if(oDTP.oData.sTouchButton === "minute-dec")
|
|
{
|
|
oDTP.oData.iCurrentMinutes -= oDTP.settings.minuteInterval;
|
|
}
|
|
else if(oDTP.oData.sTouchButton === "second-inc")
|
|
{
|
|
oDTP.oData.iCurrentSeconds += oDTP.settings.secondsInterval;
|
|
}
|
|
else if(oDTP.oData.sTouchButton === "second-dec")
|
|
{
|
|
oDTP.oData.iCurrentSeconds -= oDTP.settings.secondsInterval;
|
|
}
|
|
|
|
oDTP._setCurrentDate();
|
|
oDTP._setOutputOnIncrementOrDecrement();
|
|
|
|
oDTP.oData.iTouchStart = (new Date()).getTime();
|
|
}
|
|
}, iInterval);
|
|
}
|
|
},
|
|
|
|
_clearIntervalForTouchEvents: function()
|
|
{
|
|
var oDTP = this;
|
|
|
|
clearInterval(oDTP.oData.oTimeInterval);
|
|
if($.cf._isValid(oDTP.oData.sTouchButton))
|
|
{
|
|
oDTP.oData.sTouchButton = null;
|
|
oDTP.oData.iTouchStart = 0;
|
|
}
|
|
oDTP.oData.oTimeInterval = null;
|
|
},
|
|
|
|
_incrementDecrementActionsUsingArrowAndMouse: function(type, action)
|
|
{
|
|
var oDTP = this;
|
|
|
|
if(type.includes("day"))
|
|
{
|
|
if (action === "inc") oDTP.oData.iCurrentDay++;
|
|
else if (action === "dec") oDTP.oData.iCurrentDay--;
|
|
}
|
|
else if(type.includes("month"))
|
|
{
|
|
if (action === "inc") oDTP.oData.iCurrentMonth++;
|
|
else if (action === "dec") oDTP.oData.iCurrentMonth--;
|
|
}
|
|
else if(type.includes("year"))
|
|
{
|
|
if (action === "inc") oDTP.oData.iCurrentYear++;
|
|
else if (action === "dec") oDTP.oData.iCurrentYear--;
|
|
}
|
|
else if(type.includes("hour"))
|
|
{
|
|
if (action === "inc") oDTP.oData.iCurrentHour++;
|
|
else if (action === "dec") oDTP.oData.iCurrentHour--;
|
|
}
|
|
else if(type.includes("minutes"))
|
|
{
|
|
if (action === "inc") oDTP.oData.iCurrentMinutes += oDTP.settings.minuteInterval;
|
|
else if (action === "dec") oDTP.oData.iCurrentMinutes -= oDTP.settings.minuteInterval;
|
|
}
|
|
else if(type.includes("seconds"))
|
|
{
|
|
if (action === "inc") oDTP.oData.iCurrentSeconds += oDTP.settings.secondsInterval;
|
|
else if (action === "dec") oDTP.oData.iCurrentSeconds -= oDTP.settings.secondsInterval;
|
|
}
|
|
|
|
oDTP._setCurrentDate();
|
|
oDTP._setOutputOnIncrementOrDecrement();
|
|
},
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
_parseDate: function(sDate)
|
|
{
|
|
var oDTP = this;
|
|
|
|
var dTempDate = (oDTP.settings.defaultDate ? new Date(oDTP.settings.defaultDate) : new Date()),
|
|
iDate = dTempDate.getDate(),
|
|
iMonth = dTempDate.getMonth(),
|
|
iYear = dTempDate.getFullYear();
|
|
|
|
if($.cf._isValid(sDate))
|
|
{
|
|
if(typeof sDate === "string")
|
|
{
|
|
var sArrDate;
|
|
if(oDTP.oData.bArrMatchFormat[4] || oDTP.oData.bArrMatchFormat[5] || oDTP.oData.bArrMatchFormat[6])
|
|
sArrDate = sDate.split(oDTP.settings.monthYearSeparator);
|
|
else
|
|
sArrDate = sDate.split(oDTP.settings.dateSeparator);
|
|
|
|
if(oDTP.oData.bArrMatchFormat[0]) // "dd-MM-yyyy"
|
|
{
|
|
iDate = parseInt(sArrDate[0]);
|
|
iMonth = parseInt(sArrDate[1] - 1);
|
|
iYear = parseInt(sArrDate[2]);
|
|
}
|
|
else if(oDTP.oData.bArrMatchFormat[1]) // "MM-dd-yyyy"
|
|
{
|
|
iMonth = parseInt(sArrDate[0] - 1);
|
|
iDate = parseInt(sArrDate[1]);
|
|
iYear = parseInt(sArrDate[2]);
|
|
}
|
|
else if(oDTP.oData.bArrMatchFormat[2]) // "yyyy-MM-dd"
|
|
{
|
|
iYear = parseInt(sArrDate[0]);
|
|
iMonth = parseInt(sArrDate[1] - 1);
|
|
iDate = parseInt(sArrDate[2]);
|
|
}
|
|
else if(oDTP.oData.bArrMatchFormat[3]) // "dd-MMM-yyyy"
|
|
{
|
|
iDate = parseInt(sArrDate[0]);
|
|
iMonth = oDTP._getShortMonthIndex(sArrDate[1]);
|
|
iYear = parseInt(sArrDate[2]);
|
|
}
|
|
else if(oDTP.oData.bArrMatchFormat[4]) // "MM-yyyy"
|
|
{
|
|
iDate = 1;
|
|
iMonth = parseInt(sArrDate[0]) - 1;
|
|
iYear = parseInt(sArrDate[1]);
|
|
}
|
|
else if(oDTP.oData.bArrMatchFormat[5]) // "MMM yyyy"
|
|
{
|
|
iDate = 1;
|
|
iMonth = oDTP._getShortMonthIndex(sArrDate[0]);
|
|
iYear = parseInt(sArrDate[1]);
|
|
}
|
|
else if(oDTP.oData.bArrMatchFormat[6]) // "MMMM yyyy"
|
|
{
|
|
iDate = 1;
|
|
iMonth = oDTP._getFullMonthIndex(sArrDate[0]);
|
|
iYear = parseInt(sArrDate[1]);
|
|
}
|
|
else if(oDTP.oData.bArrMatchFormat[7]) // "yyyy MM"
|
|
{
|
|
iDate = 1;
|
|
iMonth = parseInt(sArrDate[1]) - 1;
|
|
iYear = parseInt(sArrDate[0]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
iDate = sDate.getDate();
|
|
iMonth = sDate.getMonth();
|
|
iYear = sDate.getFullYear();
|
|
}
|
|
}
|
|
|
|
dTempDate = new Date(iYear, iMonth, iDate, 0, 0, 0, 0);
|
|
return dTempDate;
|
|
},
|
|
|
|
_parseTime: function(sTime)
|
|
{
|
|
var oDTP = this;
|
|
|
|
var dTempDate = (oDTP.settings.defaultDate ? new Date(oDTP.settings.defaultDate) : new Date()),
|
|
iDate = dTempDate.getDate(),
|
|
iMonth = dTempDate.getMonth(),
|
|
iYear = dTempDate.getFullYear(),
|
|
iHour = dTempDate.getHours(),
|
|
iMinutes = dTempDate.getMinutes(),
|
|
iSeconds = dTempDate.getSeconds(),
|
|
sArrTime, sMeridiem, sArrTimeComp,
|
|
bShowSeconds = oDTP.oData.bArrMatchFormat[0] ||
|
|
oDTP.oData.bArrMatchFormat[1];
|
|
|
|
iSeconds = bShowSeconds ? oDTP._adjustSeconds(iSeconds) : 0;
|
|
|
|
if($.cf._isValid(sTime))
|
|
{
|
|
if(typeof sTime === "string")
|
|
{
|
|
if(oDTP.oData.bIs12Hour)
|
|
{
|
|
sArrTime = sTime.split(oDTP.settings.timeMeridiemSeparator);
|
|
sTime = sArrTime[0];
|
|
sMeridiem = sArrTime[1];
|
|
|
|
if(!($.cf._compare(sMeridiem, "AM") || $.cf._compare(sMeridiem, "PM")))
|
|
sMeridiem = "";
|
|
}
|
|
|
|
sArrTimeComp = sTime.split(oDTP.settings.timeSeparator);
|
|
iHour = parseInt(sArrTimeComp[0]);
|
|
iMinutes = parseInt(sArrTimeComp[1]);
|
|
|
|
if(bShowSeconds)
|
|
{
|
|
iSeconds = parseInt(sArrTimeComp[2]);
|
|
iSeconds = oDTP._adjustSeconds(iSeconds);
|
|
}
|
|
|
|
if(iHour === 12 && $.cf._compare(sMeridiem, "AM"))
|
|
iHour = 0;
|
|
else if(iHour < 12 && $.cf._compare(sMeridiem, "PM"))
|
|
iHour += 12;
|
|
}
|
|
else
|
|
{
|
|
iHour = sTime.getHours();
|
|
iMinutes = sTime.getMinutes();
|
|
|
|
if(bShowSeconds)
|
|
{
|
|
iSeconds = sTime.getSeconds();
|
|
iSeconds = oDTP._adjustSeconds(iSeconds);
|
|
}
|
|
}
|
|
}
|
|
iMinutes = oDTP._adjustMinutes(iMinutes);
|
|
|
|
dTempDate = new Date(iYear, iMonth, iDate, iHour, iMinutes, iSeconds, 0);
|
|
|
|
return dTempDate;
|
|
},
|
|
|
|
_parseDateTime: function(sDateTime)
|
|
{
|
|
var oDTP = this;
|
|
|
|
var dTempDate = (oDTP.settings.defaultDate ? new Date(oDTP.settings.defaultDate) : new Date()),
|
|
iDate = dTempDate.getDate(),
|
|
iMonth = dTempDate.getMonth(),
|
|
iYear = dTempDate.getFullYear(),
|
|
iHour = dTempDate.getHours(),
|
|
iMinutes = dTempDate.getMinutes(),
|
|
iSeconds = dTempDate.getSeconds(),
|
|
sMeridiem = "",
|
|
sArrDateTime, sArrDate, sTime, sArrTimeComp, sArrTime,
|
|
bShowSeconds = oDTP.oData.bArrMatchFormat[0] || // "dd-MM-yyyy HH:mm:ss"
|
|
oDTP.oData.bArrMatchFormat[1] || // ""dd-MM-yyyy hh:mm:ss AA"
|
|
oDTP.oData.bArrMatchFormat[2] || // "MM-dd-yyyy HH:mm:ss"
|
|
oDTP.oData.bArrMatchFormat[3] || // "MM-dd-yyyy hh:mm:ss AA"
|
|
oDTP.oData.bArrMatchFormat[4] || // "yyyy-MM-dd HH:mm:ss"
|
|
oDTP.oData.bArrMatchFormat[5] || // "yyyy-MM-dd hh:mm:ss AA"
|
|
oDTP.oData.bArrMatchFormat[6] || // "dd-MMM-yyyy HH:mm:ss"
|
|
oDTP.oData.bArrMatchFormat[7]; // "dd-MMM-yyyy hh:mm:ss AA"
|
|
|
|
iSeconds = bShowSeconds ? oDTP._adjustSeconds(iSeconds) : 0;
|
|
|
|
if($.cf._isValid(sDateTime))
|
|
{
|
|
if(typeof sDateTime === "string")
|
|
{
|
|
sArrDateTime = sDateTime.split(oDTP.settings.dateTimeSeparator);
|
|
sArrDate = sArrDateTime[0].split(oDTP.settings.dateSeparator);
|
|
|
|
if(oDTP.oData.bArrMatchFormat[0] || // "dd-MM-yyyy HH:mm:ss"
|
|
oDTP.oData.bArrMatchFormat[1] || // ""dd-MM-yyyy hh:mm:ss AA"
|
|
oDTP.oData.bArrMatchFormat[8] || // "dd-MM-yyyy HH:mm"
|
|
oDTP.oData.bArrMatchFormat[9]) // "dd-MM-yyyy hh:mm AA"
|
|
{
|
|
iDate = parseInt(sArrDate[0]);
|
|
iMonth = parseInt(sArrDate[1] - 1);
|
|
iYear = parseInt(sArrDate[2]);
|
|
}
|
|
else if(oDTP.oData.bArrMatchFormat[2] || // "MM-dd-yyyy HH:mm:ss"
|
|
oDTP.oData.bArrMatchFormat[3] || // "MM-dd-yyyy hh:mm:ss AA"
|
|
oDTP.oData.bArrMatchFormat[10] || // "MM-dd-yyyy HH:mm"
|
|
oDTP.oData.bArrMatchFormat[11]) // "MM-dd-yyyy hh:mm AA"
|
|
{
|
|
iMonth = parseInt(sArrDate[0] - 1);
|
|
iDate = parseInt(sArrDate[1]);
|
|
iYear = parseInt(sArrDate[2]);
|
|
}
|
|
else if(oDTP.oData.bArrMatchFormat[4] || // "yyyy-MM-dd HH:mm:ss"
|
|
oDTP.oData.bArrMatchFormat[5] || // "yyyy-MM-dd hh:mm:ss AA"
|
|
oDTP.oData.bArrMatchFormat[12] || // "yyyy-MM-dd HH:mm"
|
|
oDTP.oData.bArrMatchFormat[13]) // "yyyy-MM-dd hh:mm AA"
|
|
{
|
|
iYear = parseInt(sArrDate[0]);
|
|
iMonth = parseInt(sArrDate[1] - 1);
|
|
iDate = parseInt(sArrDate[2]);
|
|
}
|
|
else if(oDTP.oData.bArrMatchFormat[6] || // "dd-MMM-yyyy HH:mm:ss"
|
|
oDTP.oData.bArrMatchFormat[7] || // "dd-MMM-yyyy hh:mm:ss AA"
|
|
oDTP.oData.bArrMatchFormat[14] || // "dd-MMM-yyyy HH:mm:ss"
|
|
oDTP.oData.bArrMatchFormat[15]) // "dd-MMM-yyyy hh:mm:ss AA"
|
|
{
|
|
iDate = parseInt(sArrDate[0]);
|
|
iMonth = oDTP._getShortMonthIndex(sArrDate[1]);
|
|
iYear = parseInt(sArrDate[2]);
|
|
}
|
|
|
|
sTime = sArrDateTime[1];
|
|
if($.cf._isValid(sTime))
|
|
{
|
|
if(oDTP.oData.bIs12Hour)
|
|
{
|
|
if($.cf._compare(oDTP.settings.dateTimeSeparator, oDTP.settings.timeMeridiemSeparator) && (sArrDateTime.length === 3))
|
|
sMeridiem = sArrDateTime[2];
|
|
else
|
|
{
|
|
sArrTimeComp = sTime.split(oDTP.settings.timeMeridiemSeparator);
|
|
sTime = sArrTimeComp[0];
|
|
sMeridiem = sArrTimeComp[1];
|
|
}
|
|
|
|
if(!($.cf._compare(sMeridiem, "AM") || $.cf._compare(sMeridiem, "PM")))
|
|
sMeridiem = "";
|
|
}
|
|
|
|
sArrTime = sTime.split(oDTP.settings.timeSeparator);
|
|
|
|
iHour = parseInt(sArrTime[0]);
|
|
iMinutes = parseInt(sArrTime[1]);
|
|
if(bShowSeconds)
|
|
{
|
|
iSeconds = parseInt(sArrTime[2]);
|
|
}
|
|
|
|
if(iHour === 12 && $.cf._compare(sMeridiem, "AM"))
|
|
iHour = 0;
|
|
else if(iHour < 12 && $.cf._compare(sMeridiem, "PM"))
|
|
iHour += 12;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
iDate = sDateTime.getDate();
|
|
iMonth = sDateTime.getMonth();
|
|
iYear = sDateTime.getFullYear();
|
|
|
|
iHour = sDateTime.getHours();
|
|
iMinutes = sDateTime.getMinutes();
|
|
|
|
if(bShowSeconds)
|
|
{
|
|
iSeconds = sDateTime.getSeconds();
|
|
iSeconds = oDTP._adjustSeconds(iSeconds);
|
|
}
|
|
}
|
|
}
|
|
iMinutes = oDTP._adjustMinutes(iMinutes);
|
|
|
|
dTempDate = new Date(iYear, iMonth, iDate, iHour, iMinutes, iSeconds, 0);
|
|
return dTempDate;
|
|
},
|
|
|
|
_getShortMonthIndex: function(sMonthName)
|
|
{
|
|
var oDTP = this;
|
|
|
|
for(var iTempIndex = 0; iTempIndex < oDTP.settings.shortMonthNames.length; iTempIndex++)
|
|
{
|
|
if($.cf._compare(sMonthName, oDTP.settings.shortMonthNames[iTempIndex]))
|
|
return iTempIndex;
|
|
}
|
|
},
|
|
|
|
_getFullMonthIndex: function(sMonthName)
|
|
{
|
|
var oDTP = this;
|
|
|
|
for(var iTempIndex = 0; iTempIndex < oDTP.settings.fullMonthNames.length; iTempIndex++)
|
|
{
|
|
if($.cf._compare(sMonthName, oDTP.settings.fullMonthNames[iTempIndex]))
|
|
return iTempIndex;
|
|
}
|
|
},
|
|
|
|
// Public Method
|
|
getIs12Hour: function(sMode, sFormat)
|
|
{
|
|
var oDTP = this;
|
|
|
|
var bIs12Hour = false,
|
|
iArgsLength = Function.length;
|
|
|
|
oDTP._setMatchFormat(iArgsLength, sMode, sFormat);
|
|
|
|
if(oDTP.oData.bTimeMode)
|
|
{
|
|
bIs12Hour = oDTP.oData.bArrMatchFormat[0] ||
|
|
oDTP.oData.bArrMatchFormat[2];
|
|
}
|
|
else if(oDTP.oData.bDateTimeMode)
|
|
{
|
|
bIs12Hour = oDTP.oData.bArrMatchFormat[1] ||
|
|
oDTP.oData.bArrMatchFormat[3] ||
|
|
oDTP.oData.bArrMatchFormat[5] ||
|
|
oDTP.oData.bArrMatchFormat[7] ||
|
|
oDTP.oData.bArrMatchFormat[9] ||
|
|
oDTP.oData.bArrMatchFormat[11] ||
|
|
oDTP.oData.bArrMatchFormat[13] ||
|
|
oDTP.oData.bArrMatchFormat[15];
|
|
}
|
|
|
|
oDTP._setMatchFormat(iArgsLength);
|
|
|
|
return bIs12Hour;
|
|
},
|
|
|
|
//-----------------------------------------------------------------
|
|
|
|
_setVariablesForDate: function(dInput, bIncludeTime, bSetMeridiem)
|
|
{
|
|
var oDTP = this;
|
|
|
|
var dTemp, oDTV = {},
|
|
bValidInput = $.cf._isValid(dInput);
|
|
if(bValidInput)
|
|
{
|
|
dTemp = new Date(dInput);
|
|
if(!$.cf._isValid(bIncludeTime))
|
|
bIncludeTime = true;
|
|
if(!$.cf._isValid(bSetMeridiem))
|
|
bSetMeridiem = true;
|
|
}
|
|
else
|
|
{
|
|
if (Object.prototype.toString.call(oDTP.oData.dCurrentDate) === "[object Date]" && isFinite(oDTP.oData.dCurrentDate))
|
|
dTemp = new Date(oDTP.oData.dCurrentDate);
|
|
else
|
|
dTemp = new Date();
|
|
|
|
if(!$.cf._isValid(bIncludeTime))
|
|
bIncludeTime = (oDTP.oData.bTimeMode || oDTP.oData.bDateTimeMode);
|
|
if(!$.cf._isValid(bSetMeridiem))
|
|
bSetMeridiem = oDTP.oData.bIs12Hour;
|
|
}
|
|
|
|
oDTV.iCurrentDay = dTemp.getDate();
|
|
oDTV.iCurrentMonth = dTemp.getMonth();
|
|
oDTV.iCurrentYear = dTemp.getFullYear();
|
|
oDTV.iCurrentWeekday = dTemp.getDay();
|
|
|
|
if(bIncludeTime)
|
|
{
|
|
oDTV.iCurrentHour = dTemp.getHours();
|
|
oDTV.iCurrentMinutes = dTemp.getMinutes();
|
|
oDTV.iCurrentSeconds = dTemp.getSeconds();
|
|
|
|
if(bSetMeridiem)
|
|
{
|
|
oDTV.sCurrentMeridiem = oDTP._determineMeridiemFromHourAndMinutes(oDTV.iCurrentHour, oDTV.iCurrentMinutes);
|
|
}
|
|
}
|
|
|
|
if(bValidInput)
|
|
return oDTV;
|
|
else
|
|
oDTP.oData = $.extend(oDTP.oData, oDTV);
|
|
},
|
|
|
|
_getValuesFromInputBoxes: function()
|
|
{
|
|
var oDTP = this;
|
|
|
|
if(oDTP.oData.bDateMode || oDTP.oData.bDateTimeMode)
|
|
{
|
|
var sMonth, iMonth;
|
|
|
|
sMonth = $(oDTP.element).find(".month .dtpicker-compValue").val();
|
|
if(sMonth.length > 1)
|
|
sMonth = sMonth.charAt(0).toUpperCase() + sMonth.slice(1);
|
|
iMonth = oDTP.settings.shortMonthNames.indexOf(sMonth);
|
|
if(iMonth !== -1)
|
|
{
|
|
oDTP.oData.iCurrentMonth = parseInt(iMonth);
|
|
}
|
|
else
|
|
{
|
|
if(sMonth.match("^[+|-]?[0-9]+$"))
|
|
{
|
|
oDTP.oData.iCurrentMonth = parseInt(sMonth - 1);
|
|
}
|
|
}
|
|
|
|
oDTP.oData.iCurrentDay = parseInt($(oDTP.element).find(".day .dtpicker-compValue").val()) || oDTP.oData.iCurrentDay;
|
|
oDTP.oData.iCurrentYear = parseInt($(oDTP.element).find(".year .dtpicker-compValue").val()) || oDTP.oData.iCurrentYear;
|
|
}
|
|
|
|
if(oDTP.oData.bTimeMode || oDTP.oData.bDateTimeMode)
|
|
{
|
|
var iTempHour, iTempMinutes, iTempSeconds, sMeridiem;
|
|
|
|
iTempHour = parseInt($(oDTP.element).find(".hour .dtpicker-compValue").val());
|
|
iTempMinutes = oDTP._adjustMinutes(parseInt($(oDTP.element).find(".minutes .dtpicker-compValue").val()));
|
|
iTempSeconds = oDTP._adjustMinutes(parseInt($(oDTP.element).find(".seconds .dtpicker-compValue").val()));
|
|
|
|
oDTP.oData.iCurrentHour = isNaN(iTempHour) ? oDTP.oData.iCurrentHour : iTempHour;
|
|
oDTP.oData.iCurrentMinutes = isNaN(iTempMinutes) ? oDTP.oData.iCurrentMinutes : iTempMinutes;
|
|
oDTP.oData.iCurrentSeconds = isNaN(iTempSeconds) ? oDTP.oData.iCurrentSeconds : iTempSeconds;
|
|
|
|
if(oDTP.oData.iCurrentSeconds > 59)
|
|
{
|
|
oDTP.oData.iCurrentMinutes += oDTP.oData.iCurrentSeconds / 60;
|
|
oDTP.oData.iCurrentSeconds = oDTP.oData.iCurrentSeconds % 60;
|
|
}
|
|
if(oDTP.oData.iCurrentMinutes > 59)
|
|
{
|
|
oDTP.oData.iCurrentHour += oDTP.oData.iCurrentMinutes / 60;
|
|
oDTP.oData.iCurrentMinutes = oDTP.oData.iCurrentMinutes % 60;
|
|
}
|
|
|
|
if(oDTP.oData.bIs12Hour)
|
|
{
|
|
if(oDTP.oData.iCurrentHour > 12)
|
|
oDTP.oData.iCurrentHour = (oDTP.oData.iCurrentHour % 12);
|
|
}
|
|
else
|
|
{
|
|
if(oDTP.oData.iCurrentHour > 23)
|
|
oDTP.oData.iCurrentHour = (oDTP.oData.iCurrentHour % 23);
|
|
}
|
|
|
|
if(oDTP.oData.bIs12Hour)
|
|
{
|
|
sMeridiem = $(oDTP.element).find(".meridiem .dtpicker-compValue").val();
|
|
if($.cf._compare(sMeridiem, "AM") || $.cf._compare(sMeridiem, "PM"))
|
|
oDTP.oData.sCurrentMeridiem = sMeridiem;
|
|
|
|
if($.cf._compare(oDTP.oData.sCurrentMeridiem, "PM"))
|
|
{
|
|
if(oDTP.oData.iCurrentHour !== 12 && oDTP.oData.iCurrentHour < 13)
|
|
oDTP.oData.iCurrentHour += 12;
|
|
}
|
|
if($.cf._compare(oDTP.oData.sCurrentMeridiem, "AM") && oDTP.oData.iCurrentHour === 12)
|
|
oDTP.oData.iCurrentHour = 0;
|
|
}
|
|
}
|
|
},
|
|
|
|
_setCurrentDate: function()
|
|
{
|
|
var oDTP = this;
|
|
|
|
if(oDTP.oData.bTimeMode || oDTP.oData.bDateTimeMode)
|
|
{
|
|
if(oDTP.oData.iCurrentSeconds > 59)
|
|
{
|
|
oDTP.oData.iCurrentMinutes += oDTP.oData.iCurrentSeconds / 60;
|
|
oDTP.oData.iCurrentSeconds = oDTP.oData.iCurrentSeconds % 60;
|
|
}
|
|
else if(oDTP.oData.iCurrentSeconds < 0)
|
|
{
|
|
oDTP.oData.iCurrentMinutes -= oDTP.settings.minuteInterval;
|
|
oDTP.oData.iCurrentSeconds += 60;
|
|
}
|
|
oDTP.oData.iCurrentMinutes = oDTP._adjustMinutes(oDTP.oData.iCurrentMinutes);
|
|
oDTP.oData.iCurrentSeconds = oDTP._adjustSeconds(oDTP.oData.iCurrentSeconds);
|
|
}
|
|
|
|
var dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0),
|
|
bGTMaxDate = false, bLTMinDate = false,
|
|
sFormat, oDate, oFormattedDate, oFormattedTime,
|
|
sDate, sTime, sDateTime;
|
|
|
|
if(oDTP.oData.dMaxValue !== null)
|
|
bGTMaxDate = (dTempDate.getTime() > oDTP.oData.dMaxValue.getTime());
|
|
if(oDTP.oData.dMinValue !== null)
|
|
bLTMinDate = (dTempDate.getTime() < oDTP.oData.dMinValue.getTime());
|
|
|
|
if(bGTMaxDate || bLTMinDate)
|
|
{
|
|
var bCDGTMaxDate = false, bCDLTMinDate = false;
|
|
if(oDTP.oData.dMaxValue !== null)
|
|
bCDGTMaxDate = (oDTP.oData.dCurrentDate.getTime() > oDTP.oData.dMaxValue.getTime());
|
|
if(oDTP.oData.dMinValue !== null)
|
|
bCDLTMinDate = (oDTP.oData.dCurrentDate.getTime() < oDTP.oData.dMinValue.getTime());
|
|
|
|
if(!(bCDGTMaxDate || bCDLTMinDate))
|
|
dTempDate = new Date(oDTP.oData.dCurrentDate);
|
|
else
|
|
{
|
|
if(bCDGTMaxDate)
|
|
{
|
|
dTempDate = new Date(oDTP.oData.dMaxValue);
|
|
console.log("Info : Date/Time/DateTime you entered is later than Maximum value, so DateTimePicker is showing Maximum value in Input Field.");
|
|
}
|
|
if(bCDLTMinDate)
|
|
{
|
|
dTempDate = new Date(oDTP.oData.dMinValue);
|
|
console.log("Info : Date/Time/DateTime you entered is earlier than Minimum value, so DateTimePicker is showing Minimum value in Input Field.");
|
|
}
|
|
console.log("Please enter proper Date/Time/DateTime values.");
|
|
}
|
|
}
|
|
|
|
oDTP.oData.dCurrentDate = new Date(dTempDate);
|
|
oDTP._setVariablesForDate();
|
|
|
|
oDate = {}; sDate = ""; sTime = ""; sDateTime = "";
|
|
|
|
if(oDTP.oData.bDateMode || oDTP.oData.bDateTimeMode)
|
|
{
|
|
if(oDTP.oData.bDateMode && (oDTP.oData.bArrMatchFormat[4] || oDTP.oData.bArrMatchFormat[5] || oDTP.oData.bArrMatchFormat[6]))
|
|
oDTP.oData.iCurrentDay = 1;
|
|
|
|
oFormattedDate = oDTP._formatDate();
|
|
|
|
$(oDTP.element).find(".day .dtpicker-compValue").val(oFormattedDate.dd);
|
|
|
|
if(oDTP.oData.bDateMode)
|
|
{
|
|
if(oDTP.oData.bArrMatchFormat[4] || oDTP.oData.bArrMatchFormat[7]) // "MM-yyyy"
|
|
$(oDTP.element).find(".month .dtpicker-compValue").val(oFormattedDate.MM);
|
|
else if(oDTP.oData.bArrMatchFormat[6]) // "MMMM yyyy"
|
|
$(oDTP.element).find(".month .dtpicker-compValue").val(oFormattedDate.month);
|
|
else
|
|
$(oDTP.element).find(".month .dtpicker-compValue").val(oFormattedDate.monthShort);
|
|
}
|
|
else
|
|
$(oDTP.element).find(".month .dtpicker-compValue").val(oFormattedDate.monthShort);
|
|
|
|
$(oDTP.element).find(".year .dtpicker-compValue").val(oFormattedDate.yyyy);
|
|
|
|
if(oDTP.settings.formatHumanDate)
|
|
{
|
|
oDate = $.extend(oDate, oFormattedDate);
|
|
}
|
|
else
|
|
{
|
|
if(oDTP.oData.bDateMode && (oDTP.oData.bArrMatchFormat[4] || oDTP.oData.bArrMatchFormat[5] || oDTP.oData.bArrMatchFormat[6] || oDTP.oData.bArrMatchFormat[7]))
|
|
{
|
|
if(oDTP.oData.bArrMatchFormat[4])
|
|
sDate = oFormattedDate.MM + oDTP.settings.monthYearSeparator + oFormattedDate.yyyy;
|
|
else if(oDTP.oData.bArrMatchFormat[5])
|
|
sDate = oFormattedDate.monthShort + oDTP.settings.monthYearSeparator + oFormattedDate.yyyy;
|
|
else if(oDTP.oData.bArrMatchFormat[6])
|
|
sDate = oFormattedDate.month + oDTP.settings.monthYearSeparator + oFormattedDate.yyyy;
|
|
else if(oDTP.oData.bArrMatchFormat[7])
|
|
sDate = oFormattedDate.yyyy + oDTP.settings.monthYearSeparator + oFormattedDate.MM;
|
|
}
|
|
else
|
|
sDate = oFormattedDate.dayShort + ", " + oFormattedDate.month + " " + oFormattedDate.dd + ", " + oFormattedDate.yyyy;
|
|
}
|
|
}
|
|
if(oDTP.oData.bTimeMode || oDTP.oData.bDateTimeMode)
|
|
{
|
|
oFormattedTime = oDTP._formatTime();
|
|
|
|
if(oDTP.oData.bIs12Hour)
|
|
$(oDTP.element).find(".meridiem .dtpicker-compValue").val(oDTP.oData.sCurrentMeridiem);
|
|
$(oDTP.element).find(".hour .dtpicker-compValue").val(oFormattedTime.hour);
|
|
$(oDTP.element).find(".minutes .dtpicker-compValue").val(oFormattedTime.mm);
|
|
$(oDTP.element).find(".seconds .dtpicker-compValue").val(oFormattedTime.ss);
|
|
|
|
if(oDTP.settings.formatHumanDate)
|
|
{
|
|
oDate = $.extend(oDate, oFormattedTime);
|
|
}
|
|
else
|
|
{
|
|
var bShowSecondsTime = (oDTP.oData.bTimeMode && (
|
|
oDTP.oData.bArrMatchFormat[0] ||
|
|
oDTP.oData.bArrMatchFormat[1])),
|
|
|
|
bShowSecondsDateTime = (oDTP.oData.bDateTimeMode &&
|
|
(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(bShowSecondsTime || bShowSecondsDateTime)
|
|
sTime = oFormattedTime.hour + oDTP.settings.timeSeparator + oFormattedTime.mm + oDTP.settings.timeSeparator + oFormattedTime.ss;
|
|
else
|
|
sTime = oFormattedTime.hour + oDTP.settings.timeSeparator + oFormattedTime.mm;
|
|
|
|
if(oDTP.oData.bIs12Hour)
|
|
sTime += oDTP.settings.timeMeridiemSeparator + oDTP.oData.sCurrentMeridiem;
|
|
}
|
|
}
|
|
|
|
if(oDTP.settings.formatHumanDate)
|
|
{
|
|
if(oDTP.oData.bDateTimeMode)
|
|
sFormat = oDTP.oData.sDateFormat;
|
|
else if(oDTP.oData.bDateMode)
|
|
sFormat = oDTP.oData.sTimeFormat;
|
|
else if(oDTP.oData.bTimeMode)
|
|
sFormat = oDTP.oData.sDateTimeFormat;
|
|
|
|
sDateTime = oDTP.settings.formatHumanDate.call(oDTP, oDate, oDTP.settings.mode, sFormat);
|
|
}
|
|
else
|
|
{
|
|
if(oDTP.oData.bDateTimeMode)
|
|
sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
|
|
else if(oDTP.oData.bDateMode)
|
|
sDateTime = sDate;
|
|
else if(oDTP.oData.bTimeMode)
|
|
sDateTime = sTime;
|
|
}
|
|
|
|
$(oDTP.element).find(".dtpicker-value").html(sDateTime);
|
|
|
|
oDTP._setButtons();
|
|
},
|
|
|
|
_formatDate: function(oDTVP)
|
|
{
|
|
var oDTP = this;
|
|
var oDTV = {},
|
|
sDay, sYear,
|
|
iMonth, sMonth, sMonthShort, sMonthFull,
|
|
iDayOfTheWeek, sDayOfTheWeek, sDayOfTheWeekFull;
|
|
|
|
if($.cf._isValid(oDTVP))
|
|
oDTV = $.extend({}, oDTVP);
|
|
else
|
|
{
|
|
oDTV.iCurrentDay = oDTP.oData.iCurrentDay;
|
|
oDTV.iCurrentMonth = oDTP.oData.iCurrentMonth;
|
|
oDTV.iCurrentYear = oDTP.oData.iCurrentYear;
|
|
oDTV.iCurrentWeekday = oDTP.oData.iCurrentWeekday;
|
|
}
|
|
|
|
sDay = oDTV.iCurrentDay;
|
|
sDay = (sDay < 10) ? ("0" + sDay) : sDay;
|
|
iMonth = oDTV.iCurrentMonth;
|
|
sMonth = oDTV.iCurrentMonth + 1;
|
|
sMonth = (sMonth < 10) ? ("0" + sMonth) : sMonth;
|
|
sMonthShort = oDTP.settings.shortMonthNames[iMonth];
|
|
sMonthFull = oDTP.settings.fullMonthNames[iMonth];
|
|
sYear = oDTV.iCurrentYear;
|
|
iDayOfTheWeek = oDTV.iCurrentWeekday;
|
|
sDayOfTheWeek = oDTP.settings.shortDayNames[iDayOfTheWeek];
|
|
sDayOfTheWeekFull = oDTP.settings.fullDayNames[iDayOfTheWeek];
|
|
|
|
return {
|
|
"dd": sDay,
|
|
"MM": sMonth,
|
|
"monthShort": sMonthShort,
|
|
"month": sMonthFull,
|
|
"yyyy": sYear,
|
|
"dayShort": sDayOfTheWeek,
|
|
"day": sDayOfTheWeekFull
|
|
};
|
|
},
|
|
|
|
_formatTime: function(oDTVP)
|
|
{
|
|
var oDTP = this;
|
|
var oDTV = {},
|
|
iHour24, sHour24, iHour12, sHour12, sHour,
|
|
sMinutes, sSeconds;
|
|
|
|
if($.cf._isValid(oDTVP))
|
|
oDTV = $.extend({}, oDTVP);
|
|
else
|
|
{
|
|
oDTV.iCurrentHour = oDTP.oData.iCurrentHour;
|
|
oDTV.iCurrentMinutes = oDTP.oData.iCurrentMinutes;
|
|
oDTV.iCurrentSeconds = oDTP.oData.iCurrentSeconds;
|
|
oDTV.sCurrentMeridiem = oDTP.oData.sCurrentMeridiem;
|
|
}
|
|
|
|
iHour24 = oDTV.iCurrentHour;
|
|
sHour24 = (iHour24 < 10) ? ("0" + iHour24) : iHour24;
|
|
sHour = sHour24;
|
|
|
|
iHour12 = oDTV.iCurrentHour;
|
|
if(iHour12 > 12)
|
|
iHour12 -= 12;
|
|
if(sHour === "00")
|
|
iHour12 = 12;
|
|
sHour12 = (iHour12 < 10) ? ("0" + iHour12) : iHour12;
|
|
if(oDTP.oData.bIs12Hour)
|
|
sHour = sHour12;
|
|
|
|
sMinutes = oDTV.iCurrentMinutes;
|
|
sMinutes = (sMinutes < 10) ? ("0" + sMinutes) : sMinutes;
|
|
sSeconds = oDTV.iCurrentSeconds;
|
|
sSeconds = (sSeconds < 10) ? ("0" + sSeconds) : sSeconds;
|
|
|
|
return {
|
|
"H": iHour24,
|
|
"HH": sHour24,
|
|
"h": iHour12,
|
|
"hh": sHour12,
|
|
"hour": sHour,
|
|
"m": oDTV.iCurrentMinutes,
|
|
"mm": sMinutes,
|
|
"s": oDTV.iCurrentSeconds,
|
|
"ss": sSeconds,
|
|
"ME": oDTV.sCurrentMeridiem
|
|
};
|
|
},
|
|
|
|
_setButtons: function()
|
|
{
|
|
var oDTP = this;
|
|
$(oDTP.element).find(".dtpicker-compButton").removeClass("dtpicker-compButtonDisable").addClass("dtpicker-compButtonEnable");
|
|
|
|
var dTempDate;
|
|
if(oDTP.oData.dMaxValue !== null)
|
|
{
|
|
if(oDTP.oData.bTimeMode)
|
|
{
|
|
// Decrement Hour
|
|
if((oDTP.oData.iCurrentHour + 1) > oDTP.oData.dMaxValue.getHours() || ((oDTP.oData.iCurrentHour + 1) === oDTP.oData.dMaxValue.getHours() && oDTP.oData.iCurrentMinutes > oDTP.oData.dMaxValue.getMinutes()))
|
|
$(oDTP.element).find(".hour .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
|
|
// Decrement Minutes
|
|
if(oDTP.oData.iCurrentHour >= oDTP.oData.dMaxValue.getHours() && (oDTP.oData.iCurrentMinutes + 1) > oDTP.oData.dMaxValue.getMinutes())
|
|
$(oDTP.element).find(".minutes .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
}
|
|
else
|
|
{
|
|
// Increment Day
|
|
dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, (oDTP.oData.iCurrentDay + 1), oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
|
|
if(dTempDate.getTime() > oDTP.oData.dMaxValue.getTime())
|
|
$(oDTP.element).find(".day .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
|
|
// Increment Month
|
|
dTempDate = new Date(oDTP.oData.iCurrentYear, (oDTP.oData.iCurrentMonth + 1), oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
|
|
if(dTempDate.getTime() > oDTP.oData.dMaxValue.getTime())
|
|
$(oDTP.element).find(".month .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
|
|
// Increment Year
|
|
dTempDate = new Date((oDTP.oData.iCurrentYear + 1), oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
|
|
if(dTempDate.getTime() > oDTP.oData.dMaxValue.getTime())
|
|
$(oDTP.element).find(".year .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
|
|
// Increment Hour
|
|
dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, (oDTP.oData.iCurrentHour + 1), oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
|
|
if(dTempDate.getTime() > oDTP.oData.dMaxValue.getTime())
|
|
$(oDTP.element).find(".hour .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
|
|
// Increment Minutes
|
|
dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, (oDTP.oData.iCurrentMinutes + 1), oDTP.oData.iCurrentSeconds, 0);
|
|
if(dTempDate.getTime() > oDTP.oData.dMaxValue.getTime())
|
|
$(oDTP.element).find(".minutes .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
|
|
// Increment Seconds
|
|
dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, (oDTP.oData.iCurrentSeconds + 1), 0);
|
|
if(dTempDate.getTime() > oDTP.oData.dMaxValue.getTime())
|
|
$(oDTP.element).find(".seconds .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
}
|
|
}
|
|
|
|
if(oDTP.oData.dMinValue !== null)
|
|
{
|
|
if(oDTP.oData.bTimeMode)
|
|
{
|
|
// Decrement Hour
|
|
if((oDTP.oData.iCurrentHour - 1) < oDTP.oData.dMinValue.getHours() || ((oDTP.oData.iCurrentHour - 1) === oDTP.oData.dMinValue.getHours() && oDTP.oData.iCurrentMinutes < oDTP.oData.dMinValue.getMinutes()))
|
|
$(oDTP.element).find(".hour .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
|
|
// Decrement Minutes
|
|
if(oDTP.oData.iCurrentHour <= oDTP.oData.dMinValue.getHours() && (oDTP.oData.iCurrentMinutes - 1) < oDTP.oData.dMinValue.getMinutes())
|
|
$(oDTP.element).find(".minutes .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
}
|
|
else
|
|
{
|
|
// Decrement Day
|
|
dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, (oDTP.oData.iCurrentDay - 1), oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
|
|
if(dTempDate.getTime() < oDTP.oData.dMinValue.getTime())
|
|
$(oDTP.element).find(".day .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
|
|
// Decrement Month
|
|
dTempDate = new Date(oDTP.oData.iCurrentYear, (oDTP.oData.iCurrentMonth - 1), oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
|
|
if(dTempDate.getTime() < oDTP.oData.dMinValue.getTime())
|
|
$(oDTP.element).find(".month .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
|
|
// Decrement Year
|
|
dTempDate = new Date((oDTP.oData.iCurrentYear - 1), oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
|
|
if(dTempDate.getTime() < oDTP.oData.dMinValue.getTime())
|
|
$(oDTP.element).find(".year .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
|
|
// Decrement Hour
|
|
dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, (oDTP.oData.iCurrentHour - 1), oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
|
|
if(dTempDate.getTime() < oDTP.oData.dMinValue.getTime())
|
|
$(oDTP.element).find(".hour .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
|
|
// Decrement Minutes
|
|
dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, (oDTP.oData.iCurrentMinutes - 1), oDTP.oData.iCurrentSeconds, 0);
|
|
if(dTempDate.getTime() < oDTP.oData.dMinValue.getTime())
|
|
$(oDTP.element).find(".minutes .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
|
|
// Decrement Seconds
|
|
dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, (oDTP.oData.iCurrentSeconds - 1), 0);
|
|
if(dTempDate.getTime() < oDTP.oData.dMinValue.getTime())
|
|
$(oDTP.element).find(".seconds .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
}
|
|
}
|
|
|
|
if(oDTP.oData.bIs12Hour)
|
|
{
|
|
var iTempHour, iTempMinutes;
|
|
if(oDTP.oData.dMaxValue !== null || oDTP.oData.dMinValue !== null)
|
|
{
|
|
iTempHour = oDTP.oData.iCurrentHour;
|
|
if($.cf._compare(oDTP.oData.sCurrentMeridiem, "AM"))
|
|
iTempHour += 12;
|
|
else if($.cf._compare(oDTP.oData.sCurrentMeridiem, "PM"))
|
|
iTempHour -= 12;
|
|
|
|
dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, iTempHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
|
|
|
|
if(oDTP.oData.dMaxValue !== null)
|
|
{
|
|
if(oDTP.oData.bTimeMode)
|
|
{
|
|
iTempMinutes = oDTP.oData.iCurrentMinutes;
|
|
if(iTempHour > oDTP.oData.dMaxValue.getHours() || (iTempHour === oDTP.oData.dMaxValue.getHours() && iTempMinutes > oDTP.oData.dMaxValue.getMinutes()))
|
|
$(oDTP.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
}
|
|
else
|
|
{
|
|
if(dTempDate.getTime() > oDTP.oData.dMaxValue.getTime())
|
|
$(oDTP.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
}
|
|
}
|
|
|
|
if(oDTP.oData.dMinValue !== null)
|
|
{
|
|
if(oDTP.oData.bTimeMode)
|
|
{
|
|
iTempMinutes = oDTP.oData.iCurrentMinutes;
|
|
if(iTempHour < oDTP.oData.dMinValue.getHours() || (iTempHour === oDTP.oData.dMinValue.getHours() && iTempMinutes < oDTP.oData.dMinValue.getMinutes()))
|
|
$(oDTP.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
}
|
|
else
|
|
{
|
|
if(dTempDate.getTime() < oDTP.oData.dMinValue.getTime())
|
|
$(oDTP.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
// Public Method
|
|
setIsPopup: function(bIsPopup)
|
|
{
|
|
var oDTP = this;
|
|
|
|
if(!oDTP.settings.isInline)
|
|
{
|
|
oDTP.settings.isPopup = bIsPopup;
|
|
|
|
if($(oDTP.element).css("display") !== "none")
|
|
oDTP._hidePicker(0);
|
|
|
|
if(oDTP.settings.isPopup)
|
|
{
|
|
$(oDTP.element).addClass("dtpicker-mobile");
|
|
|
|
$(oDTP.element).css({position: "fixed", top: 0, left: 0, width: "100%", height: "100%"});
|
|
}
|
|
else
|
|
{
|
|
$(oDTP.element).removeClass("dtpicker-mobile");
|
|
|
|
if(oDTP.oData.oInputElement !== null)
|
|
{
|
|
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"});
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
_compareDates: function(dDate1, dDate2)
|
|
{
|
|
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 || (iHour === 12 && iMinutes >= 0))
|
|
{
|
|
return "PM";
|
|
}
|
|
else
|
|
{
|
|
return "AM";
|
|
}
|
|
},
|
|
|
|
// Public Method
|
|
setLanguage: function(sLanguage)
|
|
{
|
|
var oDTP = this;
|
|
|
|
oDTP.settings = $.extend({}, $.DateTimePicker.defaults, $.DateTimePicker.i18n[sLanguage], oDTP.options);
|
|
oDTP.settings.language = sLanguage;
|
|
|
|
oDTP._setDateFormatArray(); // Set DateFormatArray
|
|
oDTP._setTimeFormatArray(); // Set TimeFormatArray
|
|
oDTP._setDateTimeFormatArray(); // Set DateTimeFormatArray
|
|
|
|
return oDTP;
|
|
}
|
|
|
|
};
|
|
|
|
}));
|
|
|