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