JAVASCRIPT   16

DateTimePicker.js

Guest on 6th August 2021 06:38:07 PM

  1. /* -----------------------------------------------------------------------------
  2.  
  3.   jQuery DateTimePicker - Responsive flat design jQuery DateTime Picker plugin for Web & Mobile
  4.   Version 0.1.26
  5.   Copyright (c)2016 Curious Solutions LLP and Neha Kadam
  6.   http://curioussolutions.github.io/DateTimePicker
  7.   https://github.com/CuriousSolutions/DateTimePicker
  8.  
  9.  ----------------------------------------------------------------------------- */
  10.  
  11. $.DateTimePicker = $.DateTimePicker || {
  12.  
  13.         name: "DateTimePicker",
  14.  
  15.         i18n: {}, // Internationalization Objects
  16.  
  17.         defaults:  //Plugin Defaults
  18.         {
  19.                 mode: "date",
  20.                 defaultDate: null,
  21.        
  22.                 dateSeparator: "-",
  23.                 timeSeparator: ":",
  24.                 timeMeridiemSeparator: " ",
  25.                 dateTimeSeparator: " ",
  26.                 monthYearSeparator: " ",
  27.        
  28.                 dateTimeFormat: "yyyy-MM-dd HH:mm",
  29.                 dateFormat: "yyyy-MM-dd",
  30.                 timeFormat: "HH:mm",
  31.        
  32.                 maxDate: null,
  33.                 minDate:  null,
  34.        
  35.                 maxTime: null,
  36.                 minTime: null,
  37.        
  38.                 maxDateTime: null,
  39.                 minDateTime: null,
  40.        
  41.                 shortDayNames: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
  42.                 fullDayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
  43.                 shortMonthNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
  44.                 fullMonthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
  45.                 labels: null, /*{"year": "Year", "month": "Month", "day": "Day", "hour": "Hour", "minutes": "Minutes", "seconds": "Seconds", "meridiem": "Meridiem"}*/
  46.  
  47.                 minuteInterval: 1,
  48.                 roundOffMinutes: true,
  49.  
  50.                 secondsInterval: 1,
  51.                 roundOffSeconds: true,
  52.        
  53.                 titleContentDate: "",
  54.                 titleContentTime: "Set Time",
  55.                 titleContentDateTime: "Set Date & Time",
  56.        
  57.                 buttonsToDisplay: ["HeaderCloseButton", "SetButton", "ClearButton"],
  58.                 setButtonContent: "Set",
  59.                 clearButtonContent: "Clear",
  60.         incrementButtonContent: "+",
  61.         decrementButtonContent: "-",
  62.                 setValueInTextboxOnEveryClick: false,
  63.        
  64.                 animationDuration: 400,
  65.        
  66.                 isPopup: false,
  67.                 parentElement: "body",
  68.  
  69.                 language: "",
  70.        
  71.                 init: null, // init(oDateTimePicker)
  72.                 addEventHandlers: null,  // addEventHandlers(oDateTimePicker)
  73.                 beforeShow: null,  // beforeShow(oInputElement)
  74.                 afterShow: null,  // afterShow(oInputElement)
  75.                 beforeHide: null,  // beforeHide(oInputElement)
  76.                 afterHide: null,  // afterHide(oInputElement)
  77.                 buttonClicked: null,  // buttonClicked(sButtonType, oInputElement) where sButtonType = "SET"|"CLEAR"|"CANCEL"|"TAB"
  78.                 settingValueOfElement: null, // settingValueOfElement(sValue, dDateTime, oInputElement)
  79.                 formatHumanDate: null,  // formatHumanDate(oDateTime, sMode, sFormat)
  80.        
  81.                 parseDateTimeString: null, // parseDateTimeString(sDateTime, sMode, oInputField)
  82.                 formatDateTimeString: null, // formatDateTimeString(oDateTime, sMode, oInputField)
  83.         },
  84.  
  85.         dataObject: // Temporary Variables For Calculation Specific to DateTimePicker Instance
  86.         {
  87.        
  88.                 dCurrentDate: new Date(),
  89.                 iCurrentDay: 0,
  90.                 iCurrentMonth: 0,
  91.                 iCurrentYear: 0,
  92.                 iCurrentHour: 0,
  93.                 iCurrentMinutes: 0,
  94.                 iCurrentSeconds: 0,
  95.                 sCurrentMeridiem: "",
  96.                 iMaxNumberOfDays: 0,
  97.        
  98.                 sDateFormat: "",
  99.                 sTimeFormat: "",
  100.                 sDateTimeFormat: "",
  101.        
  102.                 dMinValue: null,
  103.                 dMaxValue: null,
  104.        
  105.                 sArrInputDateFormats: [],
  106.                 sArrInputTimeFormats: [],
  107.                 sArrInputDateTimeFormats: [],
  108.  
  109.                 bArrMatchFormat: [],
  110.                 bDateMode: false,
  111.                 bTimeMode: false,
  112.                 bDateTimeMode: false,
  113.        
  114.                 oInputElement: null,
  115.  
  116.                 iTabIndex: 0,
  117.                 bElemFocused: false,
  118.        
  119.                 bIs12Hour: false       
  120.         }
  121.  
  122. };
  123.  
  124. $.cf = {
  125.  
  126.         _isValid: function(sValue)
  127.         {
  128.                 return (sValue !== undefined && sValue !== null && sValue !== "");
  129.         },
  130.  
  131.         _compare: function(sString1, sString2)
  132.         {
  133.                 var bString1 = (sString1 !== undefined && sString1 !== null),
  134.                 bString2 = (sString2 !== undefined && sString2 !== null);
  135.                 if(bString1 && bString2)
  136.                 {
  137.                         if(sString1.toLowerCase() === sString2.toLowerCase())
  138.                                 return true;
  139.                         else
  140.                                 return false;
  141.                 }
  142.                 else
  143.                         return false;                  
  144.         }
  145.  
  146. };
  147.  
  148. (function (factory)
  149. {
  150.     if(typeof define === 'function' && define.amd)
  151.     {
  152.         // AMD. Register as an anonymous module.
  153.         define(['jquery'], factory);
  154.     }
  155.     else if(typeof exports === 'object')
  156.     {
  157.         // Node/CommonJS
  158.         module.exports = factory(require('jquery'));
  159.     }
  160.     else
  161.     {
  162.         // Browser globals
  163.         factory(jQuery);
  164.     }
  165. }(function ($)
  166. {
  167.         "use strict";
  168.  
  169.         function DateTimePicker(element, options)
  170.         {
  171.                 this.element = element;
  172.  
  173.                 var sLanguage = "";
  174.                 sLanguage = ($.cf._isValid(options) && $.cf._isValid(options.language)) ? options.language : $.DateTimePicker.defaults.language;
  175.                 this.settings = $.extend({}, $.DateTimePicker.defaults, $.DateTimePicker.i18n[sLanguage], options);
  176.                 this.options = options;
  177.  
  178.                 this.oData = $.extend({}, $.DateTimePicker.dataObject);
  179.                 this._defaults = $.DateTimePicker.defaults;
  180.                 this._name = $.DateTimePicker.name;
  181.  
  182.                 this.init();
  183.         }
  184.  
  185.         $.fn.DateTimePicker = function (options)
  186.         {
  187.                 var oDTP = $(this).data(),
  188.                 sArrDataKeys = oDTP ? Object.keys(oDTP) : [],
  189.                 iKey, sKey;
  190.                
  191.                 if(typeof options === "string")
  192.                 {                      
  193.                         if($.cf._isValid(oDTP))
  194.                         {
  195.                                 if(options === "destroy")
  196.                                 {
  197.                                         if(sArrDataKeys.length > 0)
  198.                                         {
  199.                                                 for(iKey in sArrDataKeys)
  200.                                                 {
  201.                                                         sKey = sArrDataKeys[iKey];
  202.                                                         if(sKey.search("plugin_DateTimePicker") !== -1)
  203.                                                         {
  204.                                                                 $(document).unbind("click.DateTimePicker");
  205.                                                                 $(document).unbind("keydown.DateTimePicker");
  206.                                                                 $(document).unbind("keyup.DateTimePicker");
  207.                                                        
  208.                                                                 $(this).children().remove();
  209.                                                                 $(this).removeData();
  210.                                                                 $(this).unbind();
  211.                                                                 $(this).removeClass("dtpicker-overlay dtpicker-mobile");
  212.  
  213.                                                                 oDTP = oDTP[sKey];
  214.                                                        
  215.                                                                 console.log("Destroyed DateTimePicker Object");
  216.                                                                 console.log(oDTP);
  217.                                                        
  218.                                                                 break;
  219.                                                         }
  220.                                                 }
  221.                                         }
  222.                                         else
  223.                                         {
  224.                                                 console.log("No DateTimePicker Object Defined For This Element");
  225.                                         }
  226.                                 }
  227.                                 else if(options === "object")
  228.                                 {
  229.                                         if(sArrDataKeys.length > 0)
  230.                                         {
  231.                                                 for(iKey in sArrDataKeys)
  232.                                                 {
  233.                                                         sKey = sArrDataKeys[iKey];
  234.                                                         if(sKey.search("plugin_DateTimePicker") !== -1)
  235.                                                         {
  236.                                                                 return oDTP[sKey];
  237.                                                         }
  238.                                                 }
  239.                                         }
  240.                                         else
  241.                                         {
  242.                                                 console.log("No DateTimePicker Object Defined For This Element");
  243.                                         }
  244.                                 }
  245.                         }
  246.                 }
  247.                 else
  248.                 {
  249.                         return this.each(function()
  250.                         {
  251.                                 $.removeData(this, "plugin_DateTimePicker");
  252.                                 if(!$.data(this, "plugin_DateTimePicker"))
  253.                                         $.data(this, "plugin_DateTimePicker", new DateTimePicker(this, options));
  254.                         });
  255.                 }
  256.         };
  257.  
  258.         DateTimePicker.prototype = {
  259.        
  260.                 // Public Method
  261.                 init: function ()
  262.                 {
  263.                         var oDTP = this;                                       
  264.                
  265.                         oDTP._setDateFormatArray(); // Set DateFormatArray
  266.                         oDTP._setTimeFormatArray(); // Set TimeFormatArray
  267.                         oDTP._setDateTimeFormatArray(); // Set DateTimeFormatArray
  268.                
  269.                         if(oDTP.settings.isPopup)
  270.                         {
  271.                                 oDTP._createPicker();
  272.                                 $(oDTP.element).addClass("dtpicker-mobile");
  273.                         }
  274.  
  275.                         if(oDTP.settings.init)
  276.                                 oDTP.settings.init.call(oDTP);
  277.  
  278.                         oDTP._addEventHandlersForInput();
  279.                 },
  280.        
  281.                 _setDateFormatArray: function()
  282.                 {
  283.                         var oDTP = this;
  284.                
  285.                         oDTP.oData.sArrInputDateFormats = [];          
  286.                         var sDate = "";
  287.                
  288.                         //  0 - "dd-MM-yyyy"
  289.                         sDate = "dd" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "yyyy";
  290.                         oDTP.oData.sArrInputDateFormats.push(sDate);
  291.                
  292.                         //  1 - "MM-dd-yyyy"
  293.                         sDate = "MM" + oDTP.settings.dateSeparator + "dd" + oDTP.settings.dateSeparator + "yyyy";
  294.                         oDTP.oData.sArrInputDateFormats.push(sDate);
  295.                
  296.                         //  2 - "yyyy-MM-dd"
  297.                         sDate = "yyyy" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "dd";
  298.                         oDTP.oData.sArrInputDateFormats.push(sDate);
  299.                
  300.                         //  3 - "dd-MMM-yyyy"
  301.                         sDate = "dd" + oDTP.settings.dateSeparator + "MMM" + oDTP.settings.dateSeparator + "yyyy";
  302.                         oDTP.oData.sArrInputDateFormats.push(sDate);
  303.  
  304.                         //  4 - "MM yyyy"
  305.                         sDate = "MM" + oDTP.settings.monthYearSeparator + "yyyy";
  306.                         oDTP.oData.sArrInputDateFormats.push(sDate);
  307.  
  308.                         //  5 - "MMM yyyy"
  309.                         sDate = "MMM" + oDTP.settings.monthYearSeparator + "yyyy";
  310.                         oDTP.oData.sArrInputDateFormats.push(sDate);
  311.  
  312.                         //  6 - "MMM yyyy"
  313.                         sDate = "MMMM" + oDTP.settings.monthYearSeparator + "yyyy";
  314.                         oDTP.oData.sArrInputDateFormats.push(sDate);
  315.                 },
  316.        
  317.                 _setTimeFormatArray: function()
  318.                 {
  319.                         var oDTP = this;
  320.                
  321.                         oDTP.oData.sArrInputTimeFormats = [];
  322.                         var sTime = "";
  323.  
  324.                         //  0 - "hh:mm:ss AA"
  325.                         sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss" + oDTP.settings.timeMeridiemSeparator + "AA";
  326.                         oDTP.oData.sArrInputTimeFormats.push(sTime);
  327.                
  328.                         //  1 - "HH:mm:ss"
  329.                         sTime = "HH" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss";
  330.                         oDTP.oData.sArrInputTimeFormats.push(sTime);
  331.                
  332.                         //  2 - "hh:mm AA"
  333.                         sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeMeridiemSeparator + "AA";
  334.                         oDTP.oData.sArrInputTimeFormats.push(sTime);
  335.                
  336.                         //  3 - "HH:mm"
  337.                         sTime = "HH" + oDTP.settings.timeSeparator + "mm";
  338.                         oDTP.oData.sArrInputTimeFormats.push(sTime);
  339.                 },
  340.        
  341.                 _setDateTimeFormatArray: function()
  342.                 {
  343.                         var oDTP = this;
  344.                
  345.                         oDTP.oData.sArrInputDateTimeFormats = [];
  346.                         var sDate = "", sTime = "", sDateTime = "";
  347.  
  348.                         //  0 - "dd-MM-yyyy HH:mm:ss"
  349.                         sDate = "dd" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "yyyy";
  350.                         sTime = "HH" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss";
  351.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  352.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  353.                
  354.                         //  1 - "dd-MM-yyyy hh:mm:ss AA"
  355.                         sDate = "dd" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "yyyy";
  356.                         sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss" + oDTP.settings.timeMeridiemSeparator + "AA";
  357.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  358.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  359.                
  360.                         //  2 - "MM-dd-yyyy HH:mm:ss"
  361.                         sDate = "MM" + oDTP.settings.dateSeparator + "dd" + oDTP.settings.dateSeparator + "yyyy";
  362.                         sTime = "HH" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss";
  363.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  364.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  365.                
  366.                         //  3 - "MM-dd-yyyy hh:mm:ss AA"
  367.                         sDate = "MM" + oDTP.settings.dateSeparator + "dd" + oDTP.settings.dateSeparator + "yyyy";
  368.                         sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss" + oDTP.settings.timeMeridiemSeparator + "AA";
  369.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  370.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  371.                
  372.                         //  4 - "yyyy-MM-dd HH:mm:ss"
  373.                         sDate = "yyyy" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "dd";
  374.                         sTime = "HH" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss";
  375.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  376.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  377.                
  378.                         //  5 - "yyyy-MM-dd hh:mm:ss AA"
  379.                         sDate = "yyyy" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "dd";
  380.                         sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss" + oDTP.settings.timeMeridiemSeparator + "AA";
  381.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  382.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  383.                        
  384.                         //  6 - "dd-MMM-yyyy hh:mm:ss"
  385.                         sDate = "dd" + oDTP.settings.dateSeparator + "MMM" + oDTP.settings.dateSeparator + "yyyy";
  386.                         sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss";
  387.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  388.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  389.                        
  390.                         //  7 - "dd-MMM-yyyy hh:mm:ss AA"
  391.                         sDate = "dd" + oDTP.settings.dateSeparator + "MMM" + oDTP.settings.dateSeparator + "yyyy";
  392.                         sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeSeparator + "ss" + oDTP.settings.timeMeridiemSeparator + "AA";
  393.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  394.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  395.  
  396.                         //--------------
  397.                
  398.                         //  8 - "dd-MM-yyyy HH:mm"
  399.                         sDate = "dd" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "yyyy";
  400.                         sTime = "HH" + oDTP.settings.timeSeparator + "mm";
  401.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  402.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  403.                
  404.                         //  9 - "dd-MM-yyyy hh:mm AA"
  405.                         sDate = "dd" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "yyyy";
  406.                         sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeMeridiemSeparator + "AA";
  407.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  408.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  409.                
  410.                         //  10 - "MM-dd-yyyy HH:mm"
  411.                         sDate = "MM" + oDTP.settings.dateSeparator + "dd" + oDTP.settings.dateSeparator + "yyyy";
  412.                         sTime = "HH" + oDTP.settings.timeSeparator + "mm";
  413.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  414.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  415.                
  416.                         //  11 - "MM-dd-yyyy hh:mm AA"
  417.                         sDate = "MM" + oDTP.settings.dateSeparator + "dd" + oDTP.settings.dateSeparator + "yyyy";
  418.                         sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeMeridiemSeparator + "AA";
  419.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  420.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  421.                
  422.                         //  12 - "yyyy-MM-dd HH:mm"
  423.                         sDate = "yyyy" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "dd";
  424.                         sTime = "HH" + oDTP.settings.timeSeparator + "mm";
  425.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  426.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  427.                
  428.                         //  13 - "yyyy-MM-dd hh:mm AA"
  429.                         sDate = "yyyy" + oDTP.settings.dateSeparator + "MM" + oDTP.settings.dateSeparator + "dd";
  430.                         sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeMeridiemSeparator + "AA";
  431.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  432.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  433.                        
  434.                         //  14 - "dd-MMM-yyyy hh:mm"
  435.                         sDate = "dd" + oDTP.settings.dateSeparator + "MMM" + oDTP.settings.dateSeparator + "yyyy";
  436.                         sTime = "hh" + oDTP.settings.timeSeparator + "mm";
  437.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  438.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  439.                        
  440.                         //  15 - "dd-MMM-yyyy hh:mm AA"
  441.                         sDate = "dd" + oDTP.settings.dateSeparator + "MMM" + oDTP.settings.dateSeparator + "yyyy";
  442.                         sTime = "hh" + oDTP.settings.timeSeparator + "mm" + oDTP.settings.timeMeridiemSeparator + "AA";
  443.                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  444.                         oDTP.oData.sArrInputDateTimeFormats.push(sDateTime);
  445.                 },
  446.  
  447.                 _matchFormat: function(sMode, sFormat)
  448.                 {
  449.                         var oDTP = this;
  450.  
  451.                         oDTP.oData.bArrMatchFormat = [];
  452.                         oDTP.oData.bDateMode = false;
  453.                         oDTP.oData.bTimeMode = false;
  454.                         oDTP.oData.bDateTimeMode = false;
  455.                         var oArrInput = [], iTempIndex;
  456.  
  457.                         sMode = $.cf._isValid(sMode) ? sMode : oDTP.settings.mode;
  458.                         if($.cf._compare(sMode, "date"))
  459.                         {
  460.                                 sFormat = $.cf._isValid(sFormat) ? sFormat : oDTP.oData.sDateFormat;
  461.                                 oDTP.oData.bDateMode = true;
  462.                                 oArrInput = oDTP.oData.sArrInputDateFormats;
  463.                         }
  464.                         else if($.cf._compare(sMode, "time"))
  465.                         {
  466.                                 sFormat = $.cf._isValid(sFormat) ? sFormat : oDTP.oData.sTimeFormat;
  467.                                 oDTP.oData.bTimeMode = true;
  468.                                 oArrInput = oDTP.oData.sArrInputTimeFormats;
  469.                         }
  470.                         else if($.cf._compare(sMode, "datetime"))
  471.                         {
  472.                                 sFormat = $.cf._isValid(sFormat) ? sFormat : oDTP.oData.sDateTimeFormat;
  473.                                 oDTP.oData.bDateTimeMode = true;
  474.                                 oArrInput = oDTP.oData.sArrInputDateTimeFormats;
  475.                         }
  476.  
  477.                         for(iTempIndex = 0; iTempIndex < oArrInput.length; iTempIndex++)
  478.                         {
  479.                                 oDTP.oData.bArrMatchFormat.push(
  480.                                         $.cf._compare(sFormat, oArrInput[iTempIndex])
  481.                                 );
  482.                         }
  483.                 },
  484.  
  485.                 _setMatchFormat: function(iArgsLength, sMode, sFormat)
  486.                 {
  487.                         var oDTP = this;
  488.  
  489.                         if(iArgsLength > 0)
  490.                                 oDTP._matchFormat(sMode, sFormat);
  491.                 },
  492.  
  493.                 _createPicker: function()
  494.                 {
  495.                         var oDTP = this;
  496.                
  497.                         $(oDTP.element).addClass("dtpicker-overlay");
  498.                         $(".dtpicker-overlay").click(function(e)
  499.                         {
  500.                                 oDTP._hidePicker("");
  501.                         });
  502.                
  503.                         var sTempStr = "";     
  504.                         sTempStr += "<div class='dtpicker-bg'>";
  505.                         sTempStr += "<div class='dtpicker-cont'>";
  506.                         sTempStr += "<div class='dtpicker-content'>";
  507.                         sTempStr += "<div class='dtpicker-subcontent'>";
  508.                         sTempStr += "</div>";
  509.                         sTempStr += "</div>";
  510.                         sTempStr += "</div>";
  511.                         sTempStr += "</div>";
  512.                         $(oDTP.element).html(sTempStr);
  513.                 },
  514.        
  515.                 _addEventHandlersForInput: function()
  516.                 {
  517.                         var oDTP = this;
  518.                
  519.                         oDTP.oData.oInputElement = null;
  520.  
  521.                         $(oDTP.settings.parentElement).find("input[type='date'], input[type='time'], input[type='datetime']").each(function()
  522.                         {
  523.                                 $(this).attr("data-field", $(this).attr("type"));
  524.                                 $(this).attr("type", "text");
  525.                         });    
  526.        
  527.                         var sel = "[data-field='date'], [data-field='time'], [data-field='datetime']";
  528.                         $(oDTP.settings.parentElement).off("focus", sel, oDTP._inputFieldFocus);
  529.                         $(oDTP.settings.parentElement).on ("focus", sel, {"obj": oDTP}, oDTP._inputFieldFocus);
  530.                
  531.                         $(oDTP.settings.parentElement).off("click", sel, oDTP._inputFieldClick);
  532.                         $(oDTP.settings.parentElement).on ("click", sel, {"obj": oDTP}, oDTP._inputFieldClick);
  533.  
  534.                         if(oDTP.settings.addEventHandlers) //this is not an event-handler really. Its just a function called
  535.                                 oDTP.settings.addEventHandlers.call(oDTP); // which could add EventHandlers
  536.                 },
  537.        
  538.                 _inputFieldFocus: function(e)
  539.                 {
  540.                         var oDTP = e.data.obj;
  541.                         oDTP.showDateTimePicker(this);
  542.                         oDTP.oData.bMouseDown = false;
  543.                 },
  544.  
  545.                 _inputFieldClick: function(e)
  546.                 {
  547.                 var oDTP = e.data.obj;
  548.                         if(!$.cf._compare($(this).prop("tagName"), "input"))
  549.                         {
  550.                                 oDTP.showDateTimePicker(this);
  551.                         }
  552.                         e.stopPropagation();
  553.                 },
  554.  
  555.                 // Public Method
  556.                 getDateObjectForInputField: function(oInputField)
  557.                 {
  558.                         var oDTP = this;
  559.  
  560.                         if($.cf._isValid(oInputField))
  561.                         {
  562.                                 var sDateTime = oDTP._getValueOfElement(oInputField),
  563.                                 sMode = $(oInputField).data("field"),
  564.                                 sFormat = "",
  565.                                 dInput;
  566.  
  567.                                 if(!$.cf._isValid(sMode))
  568.                                 sMode = oDTP.settings.mode;
  569.                         if(! oDTP.settings.formatDateTimeString)
  570.                         {
  571.                                 sFormat = $(oInputField).data("format");
  572.                                 if(!$.cf._isValid(sFormat))
  573.                                 {
  574.                                         if($.cf._compare(sMode, "date"))
  575.                                                 sFormat = oDTP.settings.dateFormat;
  576.                                         else if($.cf._compare(sMode, "time"))
  577.                                                 sFormat = oDTP.settings.timeFormat;
  578.                                         else if($.cf._compare(sMode, "datetime"))
  579.                                                 sFormat = oDTP.settings.dateTimeFormat;
  580.                                     }
  581.  
  582.                                     oDTP._matchFormat(sMode, sFormat);
  583.  
  584.                                 if($.cf._compare(sMode, "date"))
  585.                                         dInput = oDTP._parseDate(sDateTime);
  586.                                 else if($.cf._compare(sMode, "time"))
  587.                                         dInput = oDTP._parseTime(sDateTime);
  588.                                 else if($.cf._compare(sMode, "datetime"))
  589.                                         dInput = oDTP._parseDateTime(sDateTime);
  590.  
  591.                                 }
  592.                                 else
  593.                                 {
  594.                                         dInput = oDTP.settings.parseDateTimeString.call(oDTP, sDateTime, sMode, $(oInputField));
  595.                                 }
  596.  
  597.                         return dInput;
  598.                         }
  599.                 },
  600.  
  601.                 // Public Method
  602.                 setDateTimeStringInInputField: function(oInputField, dInput)
  603.                 {
  604.                         var oDTP = this;
  605.  
  606.                         dInput = dInput || oDTP.oData.dCurrentDate;
  607.                
  608.                         var oArrElements;
  609.                         if($.cf._isValid(oInputField))
  610.                         {
  611.                                 oArrElements = [];
  612.                                 if(typeof oInputField === "string")
  613.                                         oArrElements.push(oInputField);
  614.                                 else if(typeof oInputField === "object")
  615.                                         oArrElements = oInputField;
  616.                         }
  617.                         else
  618.                         {
  619.                                 if($.cf._isValid(oDTP.settings.parentElement))
  620.                                 {
  621.                                         oArrElements = $(oDTP.settings.parentElement).find("[data-field='date'], [data-field='time'], [data-field='datetime']");
  622.                                 }
  623.                                 else
  624.                                 {
  625.                                         oArrElements = $("[data-field='date'], [data-field='time'], [data-field='datetime']");
  626.                                 }
  627.                         }
  628.                
  629.                         oArrElements.each(function()
  630.                         {
  631.                                 var oElement = this,
  632.                                 sMode, sFormat, bIs12Hour, sOutput;
  633.                        
  634.                         sMode = $(oElement).data("field");
  635.                         if(!$.cf._isValid(sMode))
  636.                                 sMode = oDTP.settings.mode;
  637.                    
  638.                         sFormat = "Custom";
  639.                         bIs12Hour = false;
  640.                         if(! oDTP.settings.formatDateTimeString)
  641.                         {
  642.                                 sFormat = $(oElement).data("format");
  643.                                 if(!$.cf._isValid(sFormat))
  644.                                 {
  645.                                         if($.cf._compare(sMode, "date"))
  646.                                                 sFormat = oDTP.settings.dateFormat;
  647.                                         else if($.cf._compare(sMode, "time"))
  648.                                                 sFormat = oDTP.settings.timeFormat;
  649.                                         else if($.cf._compare(sMode, "datetime"))
  650.                                                 sFormat = oDTP.settings.dateTimeFormat;
  651.                                     }
  652.  
  653.                                     bIs12Hour = oDTP.getIs12Hour(sMode, sFormat);
  654.                                 }
  655.  
  656.                                 sOutput = oDTP._setOutput(sMode, sFormat, bIs12Hour, dInput, oElement);
  657.                                 oDTP._setValueOfElement(sOutput, $(oElement));
  658.                         });
  659.                 },
  660.  
  661.                 // Public Method
  662.                 getDateTimeStringInFormat: function(sMode, sFormat, dInput)
  663.                 {
  664.                         var oDTP = this;
  665.                         return oDTP._setOutput(sMode, sFormat, oDTP.getIs12Hour(sMode, sFormat), dInput);
  666.                 },
  667.        
  668.                 // Public Method
  669.                 showDateTimePicker: function(oElement)
  670.                 {
  671.                         var oDTP = this;
  672.                        
  673.                         if(oDTP.oData.oInputElement !== null)
  674.                                 oDTP._hidePicker(0, oElement);
  675.                         else
  676.                                 oDTP._showPicker(oElement);
  677.                 },
  678.        
  679.                 _setButtonAction: function(bFromTab)
  680.                 {
  681.                         var oDTP = this;
  682.                
  683.                         if(oDTP.oData.oInputElement !== null)
  684.                         {
  685.                                 oDTP._setValueOfElement(oDTP._setOutput());
  686.                                
  687.                                 if(bFromTab)
  688.                                 {
  689.                                         if(oDTP.settings.buttonClicked)
  690.                                                 oDTP.settings.buttonClicked.call(oDTP, "TAB", oDTP.oData.oInputElement);
  691.                                         oDTP._hidePicker(0);
  692.                                 }
  693.                                 else
  694.                                         oDTP._hidePicker("");                                  
  695.                         }
  696.                 },
  697.  
  698.                 _setOutput: function(sMode, sFormat, bIs12Hour, dCurrentDate, oElement)
  699.                 {
  700.                         var oDTP = this;
  701.                
  702.                         dCurrentDate = $.cf._isValid(dCurrentDate) ? dCurrentDate : oDTP.oData.dCurrentDate;
  703.                         bIs12Hour = bIs12Hour || oDTP.oData.bIs12Hour;
  704.                
  705.                         var oDTV = oDTP._setVariablesForDate(dCurrentDate, true, true);
  706.                
  707.                         var sOutput = "",
  708.                         oFDate = oDTP._formatDate(oDTV),
  709.                         oFTime = oDTP._formatTime(oDTV),
  710.                         oFDT = $.extend({}, oFDate, oFTime),
  711.                
  712.                         sDateStr = "", sTimeStr = "",
  713.                         iArgsLength = Function.length,
  714.                         bAddSeconds;
  715.  
  716.                         if(oDTP.settings.formatDateTimeString)
  717.                         {
  718.                                 sOutput = oDTP.settings.formatDateTimeString.call(oDTP, oFDT, sMode, oElement);
  719.                         }
  720.                         else
  721.                         {
  722.                                 // Set bDate, bTime, bDateTime & bArrMatchFormat based on arguments of this function
  723.                                 oDTP._setMatchFormat(iArgsLength, sMode, sFormat);
  724.  
  725.                                 if(oDTP.oData.bDateMode)
  726.                                 {
  727.                                         if(oDTP.oData.bArrMatchFormat[0])
  728.                                         {
  729.                                                 sOutput = oFDT.dd + oDTP.settings.dateSeparator + oFDT.MM + oDTP.settings.dateSeparator + oFDT.yyyy;
  730.                                         }
  731.                                         else if(oDTP.oData.bArrMatchFormat[1])
  732.                                         {
  733.                                                 sOutput = oFDT.MM + oDTP.settings.dateSeparator + oFDT.dd + oDTP.settings.dateSeparator + oFDT.yyyy;
  734.                                         }
  735.                                         else if(oDTP.oData.bArrMatchFormat[2])
  736.                                         {
  737.                                                 sOutput = oFDT.yyyy + oDTP.settings.dateSeparator + oFDT.MM + oDTP.settings.dateSeparator + oFDT.dd;
  738.                                         }
  739.                                         else if(oDTP.oData.bArrMatchFormat[3])
  740.                                         {
  741.                                                 sOutput = oFDT.dd + oDTP.settings.dateSeparator + oFDT.monthShort + oDTP.settings.dateSeparator + oFDT.yyyy;
  742.                                         }
  743.                                         else if(oDTP.oData.bArrMatchFormat[4])
  744.                                         {
  745.                                                 sOutput = oFDT.MM + oDTP.settings.monthYearSeparator + oFDT.yyyy;
  746.                                         }
  747.                                         else if(oDTP.oData.bArrMatchFormat[5])
  748.                                         {
  749.                                                 sOutput = oFDT.monthShort + oDTP.settings.monthYearSeparator + oFDT.yyyy;
  750.                                         }
  751.                                         else if(oDTP.oData.bArrMatchFormat[6])
  752.                                         {
  753.                                                 sOutput = oFDT.month + oDTP.settings.monthYearSeparator + oFDT.yyyy;
  754.                                         }
  755.                                 }
  756.                                 else if(oDTP.oData.bTimeMode)
  757.                                 {
  758.                                         if(oDTP.oData.bArrMatchFormat[0])
  759.                                         {
  760.                                                 sOutput = oFDT.hh + oDTP.settings.timeSeparator + oFDT.mm + oDTP.settings.timeSeparator + oFDT.ss + oDTP.settings.timeMeridiemSeparator + oFDT.ME;
  761.                                         }
  762.                                         else if(oDTP.oData.bArrMatchFormat[1])
  763.                                         {
  764.                                                 sOutput = oFDT.HH + oDTP.settings.timeSeparator + oFDT.mm + oDTP.settings.timeSeparator + oFDT.ss;
  765.                                         }
  766.                                         else if(oDTP.oData.bArrMatchFormat[2])
  767.                                         {
  768.                                                 sOutput = oFDT.hh + oDTP.settings.timeSeparator + oFDT.mm + oDTP.settings.timeMeridiemSeparator + oFDT.ME;
  769.                                         }
  770.                                         else if(oDTP.oData.bArrMatchFormat[3])
  771.                                         {
  772.                                                 sOutput = oFDT.HH + oDTP.settings.timeSeparator + oFDT.mm;
  773.                                         }
  774.                                 }
  775.                                 else if(oDTP.oData.bDateTimeMode)
  776.                                 {
  777.                                         // Date Part - "dd-MM-yyyy"
  778.                                         if(oDTP.oData.bArrMatchFormat[0] ||
  779.                                                 oDTP.oData.bArrMatchFormat[1] ||
  780.                                                 oDTP.oData.bArrMatchFormat[8] ||
  781.                                                 oDTP.oData.bArrMatchFormat[9])
  782.                                         {
  783.                                                 sDateStr = oFDT.dd + oDTP.settings.dateSeparator + oFDT.MM + oDTP.settings.dateSeparator + oFDT.yyyy;
  784.                                         }
  785.                                         // Date Part - "MM-dd-yyyy"
  786.                                         else if(oDTP.oData.bArrMatchFormat[2] ||
  787.                                                         oDTP.oData.bArrMatchFormat[3] ||
  788.                                                         oDTP.oData.bArrMatchFormat[10] ||
  789.                                                         oDTP.oData.bArrMatchFormat[11])
  790.                                         {
  791.                                                 sDateStr = oFDT.MM + oDTP.settings.dateSeparator + oFDT.dd + oDTP.settings.dateSeparator + oFDT.yyyy;
  792.                                         }
  793.                                         // Date Part - "yyyy-MM-dd"
  794.                                         else if(oDTP.oData.bArrMatchFormat[4] ||
  795.                                                         oDTP.oData.bArrMatchFormat[5] ||
  796.                                                         oDTP.oData.bArrMatchFormat[12] ||
  797.                                                         oDTP.oData.bArrMatchFormat[13])
  798.                                         {
  799.                                                 sDateStr = oFDT.yyyy + oDTP.settings.dateSeparator + oFDT.MM + oDTP.settings.dateSeparator + oFDT.dd;
  800.                                         }
  801.                                         // Date Part - "dd-MMM-yyyy"
  802.                                         else if(oDTP.oData.bArrMatchFormat[6] ||
  803.                                                         oDTP.oData.bArrMatchFormat[7] ||
  804.                                                         oDTP.oData.bArrMatchFormat[14] ||
  805.                                                         oDTP.oData.bArrMatchFormat[15])
  806.                                         {
  807.                                                 sDateStr = oFDT.dd + oDTP.settings.dateSeparator + oFDT.monthShort + oDTP.settings.dateSeparator + oFDT.yyyy;
  808.                                         }
  809.                                
  810.                                         bAddSeconds = oDTP.oData.bArrMatchFormat[0] ||
  811.                                                         oDTP.oData.bArrMatchFormat[1] ||
  812.                                                         oDTP.oData.bArrMatchFormat[2] ||
  813.                                                         oDTP.oData.bArrMatchFormat[3] ||
  814.                                                         oDTP.oData.bArrMatchFormat[4] ||
  815.                                                         oDTP.oData.bArrMatchFormat[5] ||
  816.                                                         oDTP.oData.bArrMatchFormat[6] ||
  817.                                                         oDTP.oData.bArrMatchFormat[7];
  818.                                         if(bIs12Hour)
  819.                                         {
  820.                                                 if(bAddSeconds)
  821.                                                 {
  822.                                                         sTimeStr = oFDT.hh + oDTP.settings.timeSeparator + oFDT.mm + oDTP.settings.timeSeparator + oFDT.ss + oDTP.settings.timeMeridiemSeparator + oFDT.ME;
  823.                                                 }
  824.                                                 else
  825.                                                 {
  826.                                                         sTimeStr = oFDT.hh + oDTP.settings.timeSeparator + oFDT.mm + oDTP.settings.timeMeridiemSeparator + oFDT.ME;
  827.                                                 }
  828.                                         }
  829.                                         else
  830.                                         {
  831.                                                 if(bAddSeconds)
  832.                                                 {
  833.                                                         sTimeStr = oFDT.HH + oDTP.settings.timeSeparator + oFDT.mm + oDTP.settings.timeSeparator + oFDT.ss;
  834.                                                 }
  835.                                                 else
  836.                                                 {
  837.                                                         sTimeStr = oFDT.HH + oDTP.settings.timeSeparator + oFDT.mm;
  838.                                                 }
  839.                                         }
  840.                                
  841.                                         if(sDateStr !== "" && sTimeStr !== "")
  842.                                                 sOutput = sDateStr + oDTP.settings.dateTimeSeparator + sTimeStr;
  843.                                 }
  844.                        
  845.                                 // Reset bDate, bTime, bDateTime & bArrMatchFormat to original values
  846.                                 oDTP._setMatchFormat(iArgsLength);
  847.                         }
  848.  
  849.                         return sOutput;
  850.                 },
  851.        
  852.                 _clearButtonAction: function()
  853.                 {
  854.                         var oDTP = this;
  855.                
  856.                         if(oDTP.oData.oInputElement !== null)
  857.                         {
  858.                                 oDTP._setValueOfElement("");
  859.                         }
  860.                         oDTP._hidePicker("");
  861.                 },
  862.        
  863.                 _setOutputOnIncrementOrDecrement: function()
  864.                 {
  865.                         var oDTP = this;
  866.                
  867.                         if($.cf._isValid(oDTP.oData.oInputElement) && oDTP.settings.setValueInTextboxOnEveryClick)
  868.                         {
  869.                                 oDTP._setValueOfElement(oDTP._setOutput());
  870.                         }
  871.                 },
  872.        
  873.                 _showPicker: function(oElement)
  874.                 {
  875.                         var oDTP = this;
  876.  
  877.                         if(oDTP.oData.oInputElement === null)
  878.                         {
  879.                                 oDTP.oData.oInputElement = oElement;
  880.                                 oDTP.oData.iTabIndex = parseInt($(oElement).attr("tabIndex"));
  881.                        
  882.                                 var sMode = $(oElement).data("field") || "",
  883.                                 sMinValue = $(oElement).data("min") || "",
  884.                                 sMaxValue = $(oElement).data("max") || "",
  885.                                 sFormat = $(oElement).data("format") || "",
  886.                                 sView = $(oElement).data("view") || "",
  887.                                 sStartEnd = $(oElement).data("startend") || "",
  888.                                 sStartEndElem = $(oElement).data("startendelem") || "",
  889.                                 sCurrent = oDTP._getValueOfElement(oElement) || "";
  890.                        
  891.                                 if(sView !== "")
  892.                                 {
  893.                                         if($.cf._compare(sView, "Popup"))
  894.                                                 oDTP.setIsPopup(true);
  895.                                         else
  896.                                                 oDTP.setIsPopup(false);
  897.                                 }
  898.                        
  899.                                 if(!oDTP.settings.isPopup)
  900.                                 {
  901.                                         oDTP._createPicker();
  902.                                
  903.                                         var iElemTop = $(oDTP.oData.oInputElement).offset().top + $(oDTP.oData.oInputElement).outerHeight(),
  904.                                         iElemLeft = $(oDTP.oData.oInputElement).offset().left,
  905.                                         iElemWidth =  $(oDTP.oData.oInputElement).outerWidth();
  906.                                
  907.                                         $(oDTP.element).css({position: "absolute", top: iElemTop, left: iElemLeft, width: iElemWidth, height: "auto"});
  908.                                 }
  909.  
  910.                                 if(oDTP.settings.beforeShow)
  911.                                         oDTP.settings.beforeShow.call(oDTP, oElement);
  912.                        
  913.                                 sMode = $.cf._isValid(sMode) ? sMode : oDTP.settings.mode;
  914.                                 oDTP.settings.mode = sMode;
  915.                                 if(!$.cf._isValid(sFormat))
  916.                                 {
  917.                                         if($.cf._compare(sMode, "date"))
  918.                                                 sFormat = oDTP.settings.dateFormat;
  919.                                         else if($.cf._compare(sMode, "time"))
  920.                                                 sFormat = oDTP.settings.timeFormat;
  921.                                         else if($.cf._compare(sMode, "datetime"))
  922.                                                 sFormat = oDTP.settings.dateTimeFormat;
  923.                                 }
  924.  
  925.                                 oDTP._matchFormat(sMode, sFormat);
  926.                        
  927.                                 oDTP.oData.dMinValue = null;
  928.                                 oDTP.oData.dMaxValue = null;
  929.                                 oDTP.oData.bIs12Hour = false;
  930.  
  931.                                 var sMin, sMax,
  932.                                 sTempDate, dTempDate,
  933.                                 sTempTime, dTempTime,
  934.                                 sTempDateTime, dTempDateTime;
  935.                        
  936.                                 if(oDTP.oData.bDateMode)
  937.                                 {
  938.                                         sMin = sMinValue || oDTP.settings.minDate;
  939.                                         sMax = sMaxValue || oDTP.settings.maxDate;
  940.                                
  941.                                         oDTP.oData.sDateFormat = sFormat;
  942.                                
  943.                                         if($.cf._isValid(sMin))
  944.                                                 oDTP.oData.dMinValue = oDTP._parseDate(sMin);
  945.                                         if($.cf._isValid(sMax))
  946.                                                 oDTP.oData.dMaxValue = oDTP._parseDate(sMax);
  947.                                
  948.                                         if(sStartEnd !== "" && ($.cf._compare(sStartEnd, "start") || $.cf._compare(sStartEnd, "end")) && sStartEndElem !== "")
  949.                                         {
  950.                                                 if($(sStartEndElem).length >= 1)
  951.                                                 {
  952.                                                         sTempDate = oDTP._getValueOfElement($(sStartEndElem));
  953.                                                         if(sTempDate !== "")
  954.                                                         {
  955.                                                                 if(oDTP.settings.parseDateTimeString)
  956.                                                                         dTempDate = oDTP.settings.parseDateTimeString.call(oDTP, sTempDate, sMode, $(sStartEndElem));
  957.                                                                 else
  958.                                                                         dTempDate = oDTP._parseDate(sTempDate);
  959.  
  960.                                                                 if($.cf._compare(sStartEnd, "start"))
  961.                                                                 {
  962.                                                                         if($.cf._isValid(sMax))
  963.                                                                         {
  964.                                                                                 if(oDTP._compareDates(dTempDate, oDTP.oData.dMaxValue) < 0)
  965.                                                                                         oDTP.oData.dMaxValue = new Date(dTempDate);
  966.                                                                         }
  967.                                                                         else
  968.                                                                                 oDTP.oData.dMaxValue = new Date(dTempDate);
  969.                                                                 }
  970.                                                                 else if($.cf._compare(sStartEnd, "end"))
  971.                                                                 {
  972.                                                                         if($.cf._isValid(sMin))
  973.                                                                         {
  974.                                                                                 if(oDTP._compareDates(dTempDate, oDTP.oData.dMinValue) > 0)
  975.                                                                                         oDTP.oData.dMinValue = new Date(dTempDate);
  976.                                                                         }
  977.                                                                         else
  978.                                                                                 oDTP.oData.dMinValue = new Date(dTempDate);
  979.                                                                 }
  980.                                                         }
  981.                                                 }
  982.                                         }
  983.                                
  984.                                         if(oDTP.settings.parseDateTimeString)
  985.                                                 oDTP.oData.dCurrentDate = oDTP.settings.parseDateTimeString.call(oDTP, sCurrent, sMode, $(oElement));
  986.                                         else
  987.                                                 oDTP.oData.dCurrentDate = oDTP._parseDate(sCurrent);
  988.  
  989.                                         oDTP.oData.dCurrentDate.setHours(0);
  990.                                         oDTP.oData.dCurrentDate.setMinutes(0);
  991.                                         oDTP.oData.dCurrentDate.setSeconds(0);
  992.                                 }
  993.                                 else if(oDTP.oData.bTimeMode)
  994.                                 {
  995.                                         sMin = sMinValue || oDTP.settings.minTime;
  996.                                         sMax = sMaxValue || oDTP.settings.maxTime;
  997.                                
  998.                                         oDTP.oData.sTimeFormat = sFormat;
  999.                                         oDTP.oData.bIs12Hour = oDTP.getIs12Hour();
  1000.                                
  1001.                                         if($.cf._isValid(sMin))
  1002.                                                 oDTP.oData.dMinValue = oDTP._parseTime(sMin);
  1003.                                         if($.cf._isValid(sMax))
  1004.                                                 oDTP.oData.dMaxValue = oDTP._parseTime(sMax);
  1005.  
  1006.                                         if(sStartEnd !== "" && ($.cf._compare(sStartEnd, "start") || $.cf._compare(sStartEnd, "end")) && sStartEndElem !== "")
  1007.                                         {
  1008.                                                 if($(sStartEndElem).length >= 1)
  1009.                                                 {
  1010.                                                         sTempTime = oDTP._getValueOfElement($(sStartEndElem));
  1011.                                                         if(sTempTime !== "")
  1012.                                                         {
  1013.                                                                 if(oDTP.settings.parseDateTimeString)
  1014.                                                                         dTempDate = oDTP.settings.parseDateTimeString.call(oDTP, sTempTime, sMode, $(sStartEndElem));
  1015.                                                                 else
  1016.                                                                         dTempTime = oDTP._parseTime(sTempTime);
  1017.                                                        
  1018.                                                                 if($.cf._compare(sStartEnd, "start"))
  1019.                                                                 {
  1020.                                                                         dTempTime.setMinutes(dTempTime.getMinutes() - 1);
  1021.                                                                         if($.cf._isValid(sMax))
  1022.                                                                         {
  1023.                                                                                 if(oDTP._compareTime(dTempTime, oDTP.oData.dMaxValue) === 2)
  1024.                                                                                         oDTP.oData.dMaxValue = new Date(dTempTime);
  1025.                                                                         }
  1026.                                                                         else
  1027.                                                                                 oDTP.oData.dMaxValue = new Date(dTempTime);
  1028.                                                                 }
  1029.                                                                 else if($.cf._compare(sStartEnd, "end"))
  1030.                                                                 {
  1031.                                                                         dTempTime.setMinutes(dTempTime.getMinutes() + 1);
  1032.                                                                         if($.cf._isValid(sMin))
  1033.                                                                         {
  1034.                                                                                 if(oDTP._compareTime(dTempTime, oDTP.oData.dMinValue) === 3)
  1035.                                                                                         oDTP.oData.dMinValue = new Date(dTempTime);
  1036.                                                                         }
  1037.                                                                         else
  1038.                                                                                 oDTP.oData.dMinValue = new Date(dTempTime);
  1039.                                                                 }
  1040.                                                         }
  1041.                                                 }
  1042.                                         }
  1043.                                
  1044.                                         if(oDTP.settings.parseDateTimeString)
  1045.                                                 oDTP.oData.dCurrentDate = oDTP.settings.parseDateTimeString.call(oDTP, sCurrent, sMode, $(oElement));
  1046.                                         else
  1047.                                                 oDTP.oData.dCurrentDate = oDTP._parseTime(sCurrent);
  1048.                                 }
  1049.                                 else if(oDTP.oData.bDateTimeMode)
  1050.                                 {
  1051.                                         sMin = sMinValue || oDTP.settings.minDateTime;
  1052.                                         sMax = sMaxValue || oDTP.settings.maxDateTime;
  1053.                                
  1054.                                         oDTP.oData.sDateTimeFormat = sFormat;
  1055.                                         oDTP.oData.bIs12Hour = oDTP.getIs12Hour();
  1056.                                
  1057.                                         if($.cf._isValid(sMin))
  1058.                                                 oDTP.oData.dMinValue = oDTP._parseDateTime(sMin);
  1059.                                         if($.cf._isValid(sMax))
  1060.                                                 oDTP.oData.dMaxValue = oDTP._parseDateTime(sMax);
  1061.                                
  1062.                                         if(sStartEnd !== "" && ($.cf._compare(sStartEnd, "start") || $.cf._compare(sStartEnd, "end")) && sStartEndElem !== "")
  1063.                                         {
  1064.                                                 if($(sStartEndElem).length >= 1)
  1065.                                                 {
  1066.                                                         sTempDateTime = oDTP._getValueOfElement($(sStartEndElem));
  1067.                                                         if(sTempDateTime !== "")
  1068.                                                         {
  1069.                                                                 if(oDTP.settings.parseDateTimeString)
  1070.                                                                         dTempDateTime = oDTP.settings.parseDateTimeString.call(oDTP, sTempDateTime, sMode, $(sStartEndElem));
  1071.                                                                 else
  1072.                                                                         dTempDateTime = oDTP._parseDateTime(sTempDateTime);
  1073.                                                                
  1074.                                                                 if($.cf._compare(sStartEnd, "start"))
  1075.                                                                 {
  1076.                                                                         if($.cf._isValid(sMax))
  1077.                                                                         {
  1078.                                                                                 if(oDTP._compareDateTime(dTempDateTime, oDTP.oData.dMaxValue) < 0)
  1079.                                                                                         oDTP.oData.dMaxValue = new Date(dTempDateTime);
  1080.                                                                         }
  1081.                                                                         else
  1082.                                                                                 oDTP.oData.dMaxValue = new Date(dTempDateTime);
  1083.                                                                 }
  1084.                                                                 else if($.cf._compare(sStartEnd, "end"))
  1085.                                                                 {
  1086.                                                                         if($.cf._isValid(sMin))
  1087.                                                                         {
  1088.                                                                                 if(oDTP._compareDateTime(dTempDateTime, oDTP.oData.dMinValue) > 0)
  1089.                                                                                         oDTP.oData.dMinValue = new Date(dTempDateTime);
  1090.                                                                         }
  1091.                                                                         else
  1092.                                                                                 oDTP.oData.dMinValue = new Date(dTempDateTime);
  1093.                                                                 }
  1094.                                                         }
  1095.                                                 }
  1096.                                         }
  1097.                                
  1098.                                         if(oDTP.settings.parseDateTimeString)
  1099.                                                 oDTP.oData.dCurrentDate = oDTP.settings.parseDateTimeString.call(oDTP, sCurrent, sMode, $(oElement));
  1100.                                         else
  1101.                                                 oDTP.oData.dCurrentDate = oDTP._parseDateTime(sCurrent);
  1102.                                 }
  1103.                        
  1104.                                 oDTP._setVariablesForDate();
  1105.                                 oDTP._modifyPicker();
  1106.                                 $(oDTP.element).fadeIn(oDTP.settings.animationDuration);
  1107.  
  1108.                                 if(oDTP.settings.afterShow)
  1109.                                 {
  1110.                                         setTimeout(function()
  1111.                                         {
  1112.                                                 oDTP.settings.afterShow.call(oDTP, oElement);
  1113.                                         }, oDTP.settings.animationDuration);   
  1114.                                 }
  1115.                         }
  1116.                 },
  1117.        
  1118.                 _hidePicker: function(iDuration, oElementToShow)
  1119.                 {
  1120.                         var oDTP = this;
  1121.                         var oElement = oDTP.oData.oInputElement;
  1122.  
  1123.                         if(oDTP.settings.beforeHide)
  1124.                                 oDTP.settings.beforeHide.call(oDTP, oElement);
  1125.  
  1126.                         if(!$.cf._isValid(iDuration))
  1127.                                 iDuration = oDTP.settings.animationDuration;
  1128.                
  1129.                         if($.cf._isValid(oDTP.oData.oInputElement))
  1130.                         {
  1131.                                 $(oDTP.oData.oInputElement).blur();
  1132.                                 oDTP.oData.oInputElement = null;
  1133.                         }
  1134.                
  1135.                         $(oDTP.element).fadeOut(iDuration);
  1136.                         if(iDuration === 0)
  1137.                         {
  1138.                                 $(oDTP.element).find('.dtpicker-subcontent').html("");
  1139.                         }
  1140.                         else
  1141.                         {
  1142.                                 setTimeout(function()
  1143.                                 {
  1144.                                         $(oDTP.element).find('.dtpicker-subcontent').html("");
  1145.                                 }, iDuration);
  1146.                         }
  1147.  
  1148.                         $(document).unbind("click.DateTimePicker");
  1149.                         $(document).unbind("keydown.DateTimePicker");
  1150.                         $(document).unbind("keyup.DateTimePicker");
  1151.  
  1152.                         if(oDTP.settings.afterHide)
  1153.                         {
  1154.                                 if(iDuration === 0)
  1155.                                 {
  1156.                                         oDTP.settings.afterHide.call(oDTP, oElement);
  1157.                                 }
  1158.                                 else
  1159.                                 {
  1160.                                         setTimeout(function()
  1161.                                         {
  1162.                                                 oDTP.settings.afterHide.call(oDTP, oElement);
  1163.                                         }, iDuration);
  1164.                                 }
  1165.                         }
  1166.  
  1167.                         if($.cf._isValid(oElementToShow))
  1168.                                 oDTP._showPicker(oElementToShow);
  1169.                 },
  1170.        
  1171.                 _modifyPicker: function()
  1172.                 {
  1173.                         var oDTP = this;
  1174.  
  1175.                         var sTitleContent, iNumberOfColumns;
  1176.                         var sArrFields = [];
  1177.                         if(oDTP.oData.bDateMode)
  1178.                         {
  1179.                                 sTitleContent = oDTP.settings.titleContentDate;
  1180.                                 iNumberOfColumns = 3;
  1181.                        
  1182.                                 if(oDTP.oData.bArrMatchFormat[0])  // "dd-MM-yyyy"
  1183.                                 {
  1184.                                         sArrFields = ["day", "month", "year"];
  1185.                                 }
  1186.                                 else if(oDTP.oData.bArrMatchFormat[1])  // "MM-dd-yyyy"
  1187.                                 {
  1188.                                         sArrFields = ["month", "day", "year"];
  1189.                                 }
  1190.                                 else if(oDTP.oData.bArrMatchFormat[2])  // "yyyy-MM-dd"
  1191.                                 {
  1192.                                         sArrFields = ["year", "month", "day"];
  1193.                                 }
  1194.                                 else if(oDTP.oData.bArrMatchFormat[3])  // "dd-MMM-yyyy"
  1195.                                 {
  1196.                                         sArrFields = ["day", "month", "year"];
  1197.                                 }
  1198.                                 else if(oDTP.oData.bArrMatchFormat[4])  // "MM-yyyy"
  1199.                                 {
  1200.                                         iNumberOfColumns = 2;
  1201.                                         sArrFields = ["month", "year"];
  1202.                                 }
  1203.                                 else if(oDTP.oData.bArrMatchFormat[5])  // "MMM yyyy"
  1204.                                 {
  1205.                                         iNumberOfColumns = 2;
  1206.                                         sArrFields = ["month", "year"];
  1207.                                 }
  1208.                                 else if(oDTP.oData.bArrMatchFormat[6])  // "MMMM yyyy"
  1209.                                 {
  1210.                                         iNumberOfColumns = 2;
  1211.                                         sArrFields = ["month", "year"];
  1212.                                 }
  1213.                         }
  1214.                         else if(oDTP.oData.bTimeMode)
  1215.                         {
  1216.                                 sTitleContent = oDTP.settings.titleContentTime;
  1217.                                 if(oDTP.oData.bArrMatchFormat[0]) // hh:mm:ss AA
  1218.                                 {
  1219.                                         iNumberOfColumns = 4;
  1220.                                         sArrFields = ["hour", "minutes", "seconds", "meridiem"];
  1221.                                 }
  1222.                                 else if(oDTP.oData.bArrMatchFormat[1]) // HH:mm:ss
  1223.                                 {
  1224.                                         iNumberOfColumns = 3;
  1225.                                         sArrFields = ["hour", "minutes", "seconds"];
  1226.                                 }
  1227.                                 else if(oDTP.oData.bArrMatchFormat[2]) // hh:mm AA
  1228.                                 {
  1229.                                         iNumberOfColumns = 3;
  1230.                                         sArrFields = ["hour", "minutes", "meridiem"];
  1231.                                 }
  1232.                                 else if(oDTP.oData.bArrMatchFormat[3]) // HH:mm
  1233.                                 {
  1234.                                         iNumberOfColumns = 2;
  1235.                                         sArrFields = ["hour", "minutes"];
  1236.                                 }
  1237.                         }
  1238.                         else if(oDTP.oData.bDateTimeMode)
  1239.                         {
  1240.                                 sTitleContent = oDTP.settings.titleContentDateTime;
  1241.                        
  1242.                                 if(oDTP.oData.bArrMatchFormat[0])
  1243.                                 {
  1244.                                         iNumberOfColumns = 6;
  1245.                                         sArrFields = ["day", "month", "year", "hour", "minutes", "seconds"];
  1246.                                 }
  1247.                                 else if(oDTP.oData.bArrMatchFormat[1])
  1248.                                 {
  1249.                                         iNumberOfColumns = 7;
  1250.                                         sArrFields = ["day", "month", "year", "hour", "minutes", "seconds", "meridiem"];
  1251.                                 }
  1252.                                 else if(oDTP.oData.bArrMatchFormat[2])
  1253.                                 {
  1254.                                         iNumberOfColumns = 6;
  1255.                                         sArrFields = ["month", "day", "year", "hour", "minutes", "seconds"];
  1256.                                 }
  1257.                                 else if(oDTP.oData.bArrMatchFormat[3])
  1258.                                 {
  1259.                                         iNumberOfColumns = 7;
  1260.                                         sArrFields = ["month", "day", "year", "hour", "minutes", "seconds", "meridiem"];
  1261.                                 }
  1262.                                 else if(oDTP.oData.bArrMatchFormat[4])
  1263.                                 {
  1264.                                         iNumberOfColumns = 6;
  1265.                                         sArrFields = ["year", "month", "day", "hour", "minutes", "seconds"];
  1266.                                 }
  1267.                                 else if(oDTP.oData.bArrMatchFormat[5])
  1268.                                 {
  1269.                                         iNumberOfColumns = 7;
  1270.                                         sArrFields = ["year", "month", "day", "hour", "minutes", "seconds", "meridiem"];
  1271.                                 }
  1272.                                 else if(oDTP.oData.bArrMatchFormat[6])
  1273.                                 {
  1274.                                         iNumberOfColumns = 6;
  1275.                                         sArrFields = ["day", "month", "year", "hour", "minutes", "seconds"];
  1276.                                 }
  1277.                                 else if(oDTP.oData.bArrMatchFormat[7])
  1278.                                 {
  1279.                                         iNumberOfColumns = 7;
  1280.                                         sArrFields = ["day", "month", "year", "hour", "minutes", "seconds", "meridiem"];
  1281.                                 }
  1282.                                 else if(oDTP.oData.bArrMatchFormat[8])
  1283.                                 {
  1284.                                         iNumberOfColumns = 5;
  1285.                                         sArrFields = ["day", "month", "year", "hour", "minutes"];
  1286.                                 }
  1287.                                 else if(oDTP.oData.bArrMatchFormat[9])
  1288.                                 {
  1289.                                         iNumberOfColumns = 6;
  1290.                                         sArrFields = ["day", "month", "year", "hour", "minutes", "meridiem"];
  1291.                                 }
  1292.                                 else if(oDTP.oData.bArrMatchFormat[10])
  1293.                                 {
  1294.                                         iNumberOfColumns = 5;
  1295.                                         sArrFields = ["month", "day", "year", "hour", "minutes"];
  1296.                                 }
  1297.                                 else if(oDTP.oData.bArrMatchFormat[11])
  1298.                                 {
  1299.                                         iNumberOfColumns = 6;
  1300.                                         sArrFields = ["month", "day", "year", "hour", "minutes", "meridiem"];
  1301.                                 }
  1302.                                 else if(oDTP.oData.bArrMatchFormat[12])
  1303.                                 {
  1304.                                         iNumberOfColumns = 5;
  1305.                                         sArrFields = ["year", "month", "day", "hour", "minutes"];
  1306.                                 }
  1307.                                 else if(oDTP.oData.bArrMatchFormat[13])
  1308.                                 {
  1309.                                         iNumberOfColumns = 6;
  1310.                                         sArrFields = ["year", "month", "day", "hour", "minutes", "meridiem"];
  1311.                                 }
  1312.                                 else if(oDTP.oData.bArrMatchFormat[14])
  1313.                                 {
  1314.                                         iNumberOfColumns = 5;
  1315.                                         sArrFields = ["day", "month", "year", "hour", "minutes"];
  1316.                                 }
  1317.                                 else if(oDTP.oData.bArrMatchFormat[15])
  1318.                                 {
  1319.                                         iNumberOfColumns = 6;
  1320.                                         sArrFields = ["day", "month", "year", "hour", "minutes", "meridiem"];
  1321.                                 }
  1322.                         }
  1323.                        
  1324.                
  1325.                         //--------------------------------------------------------------------
  1326.                         var sColumnClass = "dtpicker-comp" + iNumberOfColumns,
  1327.                         bDisplayHeaderCloseButton = false,
  1328.                         bDisplaySetButton = false,
  1329.                         bDisplayClearButton = false,
  1330.                         iTempIndex;
  1331.                        
  1332.                         for(iTempIndex = 0; iTempIndex < oDTP.settings.buttonsToDisplay.length; iTempIndex++)
  1333.                         {
  1334.                                 if($.cf._compare(oDTP.settings.buttonsToDisplay[iTempIndex], "HeaderCloseButton"))
  1335.                                         bDisplayHeaderCloseButton = true;
  1336.                                 else if($.cf._compare(oDTP.settings.buttonsToDisplay[iTempIndex], "SetButton"))
  1337.                                         bDisplaySetButton = true;
  1338.                                 else if($.cf._compare(oDTP.settings.buttonsToDisplay[iTempIndex], "ClearButton"))
  1339.                                         bDisplayClearButton = true;
  1340.                         }
  1341.                
  1342.                         var sHeader = "";
  1343.                         sHeader += "<div class='dtpicker-header'>";
  1344.                         sHeader += "<div class='dtpicker-title'>" + sTitleContent + "</div>";
  1345.                         if(bDisplayHeaderCloseButton)
  1346.                                 sHeader += "<a class='dtpicker-close'>&times;</a>";
  1347.                         sHeader += "<div class='dtpicker-value'></div>";
  1348.                         sHeader += "</div>";
  1349.                
  1350.                         //--------------------------------------------------------------------
  1351.                
  1352.                         var sDTPickerComp = "";
  1353.                         sDTPickerComp += "<div class='dtpicker-components'>";
  1354.  
  1355.                         for(iTempIndex = 0; iTempIndex < iNumberOfColumns; iTempIndex++)
  1356.                         {
  1357.                                 var sFieldName = sArrFields[iTempIndex];
  1358.  
  1359.                                 sDTPickerComp += "<div class='dtpicker-compOutline " + sColumnClass + "'>";
  1360.                                 sDTPickerComp += "<div class='dtpicker-comp " + sFieldName + "'>";
  1361.                                 sDTPickerComp += "<a class='dtpicker-compButton increment'>" + oDTP.settings.incrementButtonContent + "</a>";
  1362.                                 sDTPickerComp += "<input type='text' class='dtpicker-compValue'></input>";
  1363.                                 sDTPickerComp += "<a class='dtpicker-compButton decrement'>" + oDTP.settings.decrementButtonContent + "</a>";
  1364.                                 if(oDTP.settings.labels)
  1365.                                         sDTPickerComp += "<div class='dtpicker-label'>" + oDTP.settings.labels[sFieldName] + "</div>";
  1366.                                 sDTPickerComp += "</div>";
  1367.                                 sDTPickerComp += "</div>";
  1368.                         }
  1369.                
  1370.                         sDTPickerComp += "</div>";
  1371.                
  1372.                         //--------------------------------------------------------------------
  1373.                
  1374.                         var sButtonContClass = "";
  1375.                         if(bDisplaySetButton && bDisplayClearButton)
  1376.                                 sButtonContClass = " dtpicker-twoButtons";
  1377.                         else
  1378.                                 sButtonContClass = " dtpicker-singleButton";
  1379.                
  1380.                         var sDTPickerButtons = "";
  1381.                         sDTPickerButtons += "<div class='dtpicker-buttonCont" + sButtonContClass + "'>";
  1382.                         if(bDisplaySetButton)
  1383.                                 sDTPickerButtons += "<a class='dtpicker-button dtpicker-buttonSet'>" + oDTP.settings.setButtonContent + "</a>";
  1384.                         if(bDisplayClearButton)
  1385.                                 sDTPickerButtons += "<a class='dtpicker-button dtpicker-buttonClear'>" + oDTP.settings.clearButtonContent + "</a>";
  1386.                         sDTPickerButtons += "</div>";
  1387.                
  1388.                         //--------------------------------------------------------------------
  1389.                
  1390.                         var sTempStr = sHeader + sDTPickerComp + sDTPickerButtons;
  1391.                
  1392.                         $(oDTP.element).find('.dtpicker-subcontent').html(sTempStr);
  1393.                
  1394.                         oDTP._setCurrentDate();
  1395.                         oDTP._addEventHandlersForPicker();
  1396.                 },
  1397.        
  1398.                 _addEventHandlersForPicker: function()
  1399.                 {
  1400.                         var oDTP = this;
  1401.                
  1402.                         $(document).on("click.DateTimePicker", function(e)
  1403.                         {
  1404.                                 oDTP._hidePicker("");
  1405.                         });
  1406.                
  1407.                         $(document).on("keydown.DateTimePicker", function(e)
  1408.                         {
  1409.                                 if(! $('.dtpicker-compValue').is(':focus') && parseInt(e.keyCode ? e.keyCode : e.which) === 9)
  1410.                                 {
  1411.                                         oDTP._setButtonAction(true);
  1412.                                         $("[tabIndex=" + (oDTP.oData.iTabIndex + 1) + "]").focus();
  1413.                                         return false;
  1414.                                 }
  1415.                         });
  1416.  
  1417.                         $(document).on("keydown.DateTimePicker", function(e)
  1418.                         {
  1419.                                 if(! $('.dtpicker-compValue').is(':focus') && parseInt(e.keyCode ? e.keyCode : e.which) !== 9)
  1420.                                 {
  1421.                                         oDTP._hidePicker("");
  1422.                                 }
  1423.                         });
  1424.  
  1425.                         $(".dtpicker-cont *").click(function(e)
  1426.                         {
  1427.                                 e.stopPropagation();
  1428.                         });
  1429.                
  1430.                         $('.dtpicker-compValue').not('.month .dtpicker-compValue, .meridiem .dtpicker-compValue').keyup(function()
  1431.                         {
  1432.                                 this.value = this.value.replace(/[^0-9\.]/g,'');
  1433.                         });
  1434.  
  1435.                         $('.dtpicker-compValue').focus(function()
  1436.                         {
  1437.                                 oDTP.oData.bElemFocused = true;
  1438.                                 $(this).select();
  1439.                         });
  1440.                
  1441.                         $('.dtpicker-compValue').blur(function()
  1442.                         {
  1443.                                 oDTP._getValuesFromInputBoxes();
  1444.                                 oDTP._setCurrentDate();
  1445.                        
  1446.                                 oDTP.oData.bElemFocused = false;
  1447.                                 var $oParentElem = $(this).parent().parent();
  1448.                                 setTimeout(function()
  1449.                                 {
  1450.                                         if($oParentElem.is(':last-child') && !oDTP.oData.bElemFocused)
  1451.                                         {
  1452.                                                 oDTP._setButtonAction(false);
  1453.                                         }
  1454.                                 }, 50);                
  1455.                         });
  1456.                
  1457.                         $(".dtpicker-compValue").keyup(function(e)
  1458.                         {
  1459.                                 var $oTextField = $(this),
  1460.                        
  1461.                                 sTextBoxVal = $oTextField.val(),
  1462.                                 iLength = sTextBoxVal.length,
  1463.                                 sNewTextBoxVal;
  1464.                        
  1465.                                 if($oTextField.parent().hasClass("day") || $oTextField.parent().hasClass("hour") || $oTextField.parent().hasClass("minutes") || $oTextField.parent().hasClass("meridiem"))
  1466.                                 {
  1467.                                         if(iLength > 2)
  1468.                                         {
  1469.                                                 sNewTextBoxVal = sTextBoxVal.slice(0, 2);
  1470.                                                 $oTextField.val(sNewTextBoxVal);
  1471.                                         }
  1472.                                 }
  1473.                                 else if($oTextField.parent().hasClass("month"))
  1474.                                 {
  1475.                                         if(iLength > 3)
  1476.                                         {
  1477.                                                 sNewTextBoxVal = sTextBoxVal.slice(0, 3);
  1478.                                                 $oTextField.val(sNewTextBoxVal);
  1479.                                         }
  1480.                                 }
  1481.                                 else if($oTextField.parent().hasClass("year"))
  1482.                                 {
  1483.                                         if(iLength > 4)
  1484.                                         {
  1485.                                                 sNewTextBoxVal = sTextBoxVal.slice(0, 4);
  1486.                                                 $oTextField.val(sNewTextBoxVal);
  1487.                                         }
  1488.                                 }
  1489.                                
  1490.                                 if(parseInt(e.keyCode ? e.keyCode : e.which) === 9)
  1491.                                         $(this).select();
  1492.                         });
  1493.  
  1494.                         //-----------------------------------------------------------------------
  1495.                
  1496.                         $(oDTP.element).find('.dtpicker-close').click(function(e)
  1497.                         {
  1498.                                 if(oDTP.settings.buttonClicked)
  1499.                                         oDTP.settings.buttonClicked.call(oDTP, "CLOSE", oDTP.oData.oInputElement);
  1500.                                 oDTP._hidePicker("");
  1501.                         });
  1502.                
  1503.                         $(oDTP.element).find('.dtpicker-buttonSet').click(function(e)
  1504.                         {
  1505.                                 if(oDTP.settings.buttonClicked)
  1506.                                         oDTP.settings.buttonClicked.call(oDTP, "SET", oDTP.oData.oInputElement);
  1507.                                 oDTP._setButtonAction(false);
  1508.                         });
  1509.                
  1510.                         $(oDTP.element).find('.dtpicker-buttonClear').click(function(e)
  1511.                         {
  1512.                                 if(oDTP.settings.buttonClicked)
  1513.                                         oDTP.settings.buttonClicked.call(oDTP, "CLEAR", oDTP.oData.oInputElement);
  1514.                                 oDTP._clearButtonAction();
  1515.                         });
  1516.                
  1517.                         // ----------------------------------------------------------------------------
  1518.                
  1519.                         $(oDTP.element).find(".day .increment, .day .increment *").click(function(e)
  1520.                         {
  1521.                                 oDTP.oData.iCurrentDay++;
  1522.                                 oDTP._setCurrentDate();
  1523.                                 oDTP._setOutputOnIncrementOrDecrement();
  1524.                         });
  1525.                
  1526.                         $(oDTP.element).find(".day .decrement, .day .decrement *").click(function(e)
  1527.                         {
  1528.                                 oDTP.oData.iCurrentDay--;
  1529.                                 oDTP._setCurrentDate();
  1530.                                 oDTP._setOutputOnIncrementOrDecrement();
  1531.                         });
  1532.                
  1533.                         $(oDTP.element).find(".month .increment, .month .increment *").click(function(e)
  1534.                         {
  1535.                                 oDTP.oData.iCurrentMonth++;
  1536.                                 oDTP._setCurrentDate();
  1537.                                 oDTP._setOutputOnIncrementOrDecrement();
  1538.                         });
  1539.                
  1540.                         $(oDTP.element).find(".month .decrement, .month .decrement *").click(function(e)
  1541.                         {
  1542.                                 oDTP.oData.iCurrentMonth--;
  1543.                                 oDTP._setCurrentDate();
  1544.                                 oDTP._setOutputOnIncrementOrDecrement();
  1545.                         });
  1546.                
  1547.                         $(oDTP.element).find(".year .increment, .year .increment *").click(function(e)
  1548.                         {
  1549.                                 oDTP.oData.iCurrentYear++;
  1550.                                 oDTP._setCurrentDate();
  1551.                                 oDTP._setOutputOnIncrementOrDecrement();
  1552.                         });
  1553.                
  1554.                         $(oDTP.element).find(".year .decrement, .year .decrement *").click(function(e)
  1555.                         {
  1556.                                 oDTP.oData.iCurrentYear--;
  1557.                                 oDTP._setCurrentDate();
  1558.                                 oDTP._setOutputOnIncrementOrDecrement();
  1559.                         });
  1560.                
  1561.                         $(oDTP.element).find(".hour .increment, .hour .increment *").click(function(e)
  1562.                         {
  1563.                                 oDTP.oData.iCurrentHour++;
  1564.                                 oDTP._setCurrentDate();
  1565.                                 oDTP._setOutputOnIncrementOrDecrement();
  1566.                         });
  1567.                
  1568.                         $(oDTP.element).find(".hour .decrement, .hour .decrement *").click(function(e)
  1569.                         {
  1570.                                 oDTP.oData.iCurrentHour--;
  1571.                                 oDTP._setCurrentDate();
  1572.                                 oDTP._setOutputOnIncrementOrDecrement();
  1573.                         });
  1574.                
  1575.                         $(oDTP.element).find(".minutes .increment, .minutes .increment *").click(function(e)
  1576.                         {
  1577.                                 oDTP.oData.iCurrentMinutes += oDTP.settings.minuteInterval;
  1578.                                 oDTP._setCurrentDate();
  1579.                                 oDTP._setOutputOnIncrementOrDecrement();
  1580.                         });
  1581.                
  1582.                         $(oDTP.element).find(".minutes .decrement, .minutes .decrement *").click(function(e)
  1583.                         {
  1584.                                 oDTP.oData.iCurrentMinutes -= oDTP.settings.minuteInterval;
  1585.                                 oDTP._setCurrentDate();
  1586.                                 oDTP._setOutputOnIncrementOrDecrement();
  1587.                         });
  1588.  
  1589.                         $(oDTP.element).find(".seconds .increment, .seconds .increment *").click(function(e)
  1590.                         {
  1591.                                 oDTP.oData.iCurrentSeconds += oDTP.settings.secondsInterval;
  1592.                                 oDTP._setCurrentDate();
  1593.                                 oDTP._setOutputOnIncrementOrDecrement();
  1594.                         });
  1595.                
  1596.                         $(oDTP.element).find(".seconds .decrement, .seconds .decrement *").click(function(e)
  1597.                         {
  1598.                                 oDTP.oData.iCurrentSeconds -= oDTP.settings.secondsInterval;
  1599.                                 oDTP._setCurrentDate();
  1600.                                 oDTP._setOutputOnIncrementOrDecrement();
  1601.                         });
  1602.                
  1603.                         $(oDTP.element).find(".meridiem .dtpicker-compButton, .meridiem .dtpicker-compButton *").click(function(e)
  1604.                         {
  1605.                                 if($.cf._compare(oDTP.oData.sCurrentMeridiem, "AM"))
  1606.                                 {
  1607.                                         oDTP.oData.sCurrentMeridiem = "PM";
  1608.                                         oDTP.oData.iCurrentHour += 12;
  1609.                                 }
  1610.                                 else if($.cf._compare(oDTP.oData.sCurrentMeridiem, "PM"))
  1611.                                 {
  1612.                                         oDTP.oData.sCurrentMeridiem = "AM";
  1613.                                         oDTP.oData.iCurrentHour -= 12;
  1614.                                 }                              
  1615.                                 oDTP._setCurrentDate();
  1616.                                 oDTP._setOutputOnIncrementOrDecrement();
  1617.                         });
  1618.                 },
  1619.  
  1620.                 _adjustMinutes: function(iMinutes)
  1621.                 {
  1622.                         var oDTP = this;
  1623.                         if(oDTP.settings.roundOffMinutes && oDTP.settings.minuteInterval !== 1)
  1624.                         {
  1625.                                 iMinutes = (iMinutes % oDTP.settings.minuteInterval) ? (iMinutes - (iMinutes % oDTP.settings.minuteInterval) + oDTP.settings.minuteInterval) : iMinutes;
  1626.                         }
  1627.                         return iMinutes;
  1628.                 },
  1629.  
  1630.                 _adjustSeconds: function(iSeconds)
  1631.                 {
  1632.                         var oDTP = this;
  1633.                         if(oDTP.settings.roundOffSeconds && oDTP.settings.secondsInterval !== 1)
  1634.                         {
  1635.                                 iSeconds = (iSeconds % oDTP.settings.secondsInterval) ? (iSeconds - (iSeconds % oDTP.settings.secondsInterval) + oDTP.settings.secondsInterval) : iSeconds;
  1636.                         }
  1637.                         return iSeconds;
  1638.                 },
  1639.        
  1640.                 _getValueOfElement: function(oElem)
  1641.                 {
  1642.                         var oDTP = this;
  1643.                         var sElemValue = "";
  1644.                
  1645.                         if($.cf._compare($(oElem).prop("tagName"), "INPUT"))
  1646.                                 sElemValue = $(oElem).val();
  1647.                         else
  1648.                                 sElemValue = $(oElem).html();
  1649.                
  1650.                         return sElemValue;
  1651.                 },
  1652.        
  1653.                 _setValueOfElement: function(sElemValue, $oElem)
  1654.                 {
  1655.                         var oDTP = this;
  1656.                
  1657.                         if(!$.cf._isValid($oElem))
  1658.                                 $oElem = $(oDTP.oData.oInputElement);
  1659.                
  1660.                         if($.cf._compare($oElem.prop("tagName"), "INPUT"))
  1661.                                 $oElem.val(sElemValue);
  1662.                         else
  1663.                                 $oElem.html(sElemValue);
  1664.  
  1665.                         var dElemValue = oDTP.getDateObjectForInputField($oElem);
  1666.  
  1667.                         if(oDTP.settings.settingValueOfElement)
  1668.                                 oDTP.settings.settingValueOfElement.call(oDTP, sElemValue, dElemValue, $oElem);
  1669.                
  1670.                         $oElem.change();               
  1671.                
  1672.                         return sElemValue;
  1673.                 },
  1674.        
  1675.                 //-----------------------------------------------------------------
  1676.        
  1677.                 _parseDate: function(sDate)
  1678.                 {
  1679.                         var oDTP = this;
  1680.  
  1681.                         var dTempDate = (oDTP.settings.defaultDate ? new Date(oDTP.settings.defaultDate) : new Date()),
  1682.                         iDate = dTempDate.getDate(),
  1683.                         iMonth = dTempDate.getMonth(),
  1684.                         iYear = dTempDate.getFullYear();
  1685.                
  1686.                         if($.cf._isValid(sDate))
  1687.                         {
  1688.                                 var sArrDate;
  1689.                                 if(oDTP.oData.bArrMatchFormat[4] || oDTP.oData.bArrMatchFormat[5] || oDTP.oData.bArrMatchFormat[6])
  1690.                                         sArrDate = sDate.split(oDTP.settings.monthYearSeparator);
  1691.                                 else
  1692.                                         sArrDate = sDate.split(oDTP.settings.dateSeparator);
  1693.                        
  1694.                                 if(oDTP.oData.bArrMatchFormat[0])  // "dd-MM-yyyy"
  1695.                                 {
  1696.                                         iDate = parseInt(sArrDate[0]);
  1697.                                         iMonth = parseInt(sArrDate[1] - 1);
  1698.                                         iYear = parseInt(sArrDate[2]);
  1699.                                 }
  1700.                                 else if(oDTP.oData.bArrMatchFormat[1])  // "MM-dd-yyyy"
  1701.                                 {
  1702.                                         iMonth = parseInt(sArrDate[0] - 1);
  1703.                                         iDate = parseInt(sArrDate[1]);
  1704.                                         iYear = parseInt(sArrDate[2]);
  1705.                                 }
  1706.                                 else if(oDTP.oData.bArrMatchFormat[2])  // "yyyy-MM-dd"
  1707.                                 {
  1708.                                         iYear = parseInt(sArrDate[0]);
  1709.                                         iMonth = parseInt(sArrDate[1] - 1);
  1710.                                         iDate = parseInt(sArrDate[2]);
  1711.                                 }
  1712.                                 else if(oDTP.oData.bArrMatchFormat[3])  // "dd-MMM-yyyy"
  1713.                                 {
  1714.                                         iDate = parseInt(sArrDate[0]);
  1715.                                         iMonth = oDTP._getShortMonthIndex(sArrDate[1]);
  1716.                                         iYear = parseInt(sArrDate[2]);
  1717.                                 }
  1718.                                 else if(oDTP.oData.bArrMatchFormat[4])  // "MM-yyyy"
  1719.                                 {
  1720.                                         iDate = 1;
  1721.                                         iMonth = parseInt(sArrDate[0]) - 1;
  1722.                                         iYear = parseInt(sArrDate[1]);
  1723.                                 }
  1724.                                 else if(oDTP.oData.bArrMatchFormat[5])  // "MMM yyyy"
  1725.                                 {
  1726.                                         iDate = 1;
  1727.                                         iMonth = oDTP._getShortMonthIndex(sArrDate[0]);
  1728.                                         iYear = parseInt(sArrDate[1]);
  1729.                                 }
  1730.                                 else if(oDTP.oData.bArrMatchFormat[6])  // "MMMM yyyy"
  1731.                                 {
  1732.                                         iDate = 1;
  1733.                                         iMonth = oDTP._getFullMonthIndex(sArrDate[0]);
  1734.                                         iYear = parseInt(sArrDate[1]);
  1735.                                 }
  1736.                         }
  1737.  
  1738.                         dTempDate = new Date(iYear, iMonth, iDate, 0, 0, 0, 0);
  1739.                         return dTempDate;
  1740.                 },
  1741.        
  1742.                 _parseTime: function(sTime)
  1743.                 {
  1744.                         var oDTP = this;
  1745.                
  1746.                         var dTempDate = (oDTP.settings.defaultDate ? new Date(oDTP.settings.defaultDate) : new Date()),
  1747.                         iDate = dTempDate.getDate(),
  1748.                         iMonth = dTempDate.getMonth(),
  1749.                         iYear = dTempDate.getFullYear(),
  1750.                         iHour = dTempDate.getHours(),
  1751.                         iMinutes = dTempDate.getMinutes(),
  1752.                         iSeconds = dTempDate.getSeconds(),
  1753.                         sArrTime, sMeridiem, sArrTimeComp,
  1754.                         bShowSeconds = oDTP.oData.bArrMatchFormat[0] ||
  1755.                                                         oDTP.oData.bArrMatchFormat[1];
  1756.  
  1757.                         iSeconds = bShowSeconds ? oDTP._adjustSeconds(iSeconds) : 0;
  1758.                
  1759.                         if($.cf._isValid(sTime))
  1760.                         {
  1761.                                 if(oDTP.oData.bIs12Hour)
  1762.                                 {
  1763.                                         sArrTime = sTime.split(oDTP.settings.timeMeridiemSeparator);
  1764.                                         sTime = sArrTime[0];
  1765.                                         sMeridiem = sArrTime[1];
  1766.  
  1767.                                         if(!($.cf._compare(sMeridiem, "AM") || $.cf._compare(sMeridiem, "PM")))
  1768.                                                 sMeridiem = "";
  1769.                                 }
  1770.  
  1771.                                 sArrTimeComp = sTime.split(oDTP.settings.timeSeparator);
  1772.                                 iHour = parseInt(sArrTimeComp[0]);
  1773.                                 iMinutes = parseInt(sArrTimeComp[1]);
  1774.  
  1775.                                 if(bShowSeconds)
  1776.                                 {
  1777.                                         iSeconds = parseInt(sArrTimeComp[2]);
  1778.                                         iSeconds = oDTP._adjustSeconds(iSeconds);
  1779.                                 }
  1780.  
  1781.                                 if(iHour === 12 && $.cf._compare(sMeridiem, "AM"))
  1782.                                         iHour = 0;
  1783.                                 else if(iHour < 12 && $.cf._compare(sMeridiem, "PM"))
  1784.                                         iHour += 12;
  1785.                         }
  1786.                         iMinutes = oDTP._adjustMinutes(iMinutes);
  1787.                
  1788.                         dTempDate = new Date(iYear, iMonth, iDate, iHour, iMinutes, iSeconds, 0);
  1789.                
  1790.                         return dTempDate;
  1791.                 },
  1792.        
  1793.                 _parseDateTime: function(sDateTime)
  1794.                 {
  1795.                         var oDTP = this;
  1796.                
  1797.                         var dTempDate = (oDTP.settings.defaultDate ? new Date(oDTP.settings.defaultDate) : new Date()),
  1798.                         iDate = dTempDate.getDate(),
  1799.                         iMonth = dTempDate.getMonth(),
  1800.                         iYear = dTempDate.getFullYear(),
  1801.                         iHour = dTempDate.getHours(),
  1802.                         iMinutes = dTempDate.getMinutes(),
  1803.                         iSeconds = dTempDate.getSeconds(),
  1804.                         sMeridiem = "",
  1805.                         sArrDateTime, sArrDate, sTime, sArrTimeComp, sArrTime,
  1806.                         bShowSeconds = oDTP.oData.bArrMatchFormat[0] || // "dd-MM-yyyy HH:mm:ss"
  1807.                                                         oDTP.oData.bArrMatchFormat[1] || // ""dd-MM-yyyy hh:mm:ss AA"
  1808.                                                         oDTP.oData.bArrMatchFormat[2] || // "MM-dd-yyyy HH:mm:ss"
  1809.                                                         oDTP.oData.bArrMatchFormat[3] || // "MM-dd-yyyy hh:mm:ss AA"
  1810.                                                         oDTP.oData.bArrMatchFormat[4] || // "yyyy-MM-dd HH:mm:ss"
  1811.                                                         oDTP.oData.bArrMatchFormat[5] || // "yyyy-MM-dd hh:mm:ss AA"
  1812.                                                         oDTP.oData.bArrMatchFormat[6] || // "dd-MMM-yyyy HH:mm:ss"
  1813.                                                         oDTP.oData.bArrMatchFormat[7]; // "dd-MMM-yyyy hh:mm:ss AA"
  1814.  
  1815.                         iSeconds = bShowSeconds ? oDTP._adjustSeconds(iSeconds) : 0;
  1816.                
  1817.                         if($.cf._isValid(sDateTime))
  1818.                         {
  1819.                                 sArrDateTime = sDateTime.split(oDTP.settings.dateTimeSeparator);
  1820.                                 sArrDate = sArrDateTime[0].split(oDTP.settings.dateSeparator);
  1821.                        
  1822.                                 if(oDTP.oData.bArrMatchFormat[0] || // "dd-MM-yyyy HH:mm:ss"
  1823.                                         oDTP.oData.bArrMatchFormat[1] || // ""dd-MM-yyyy hh:mm:ss AA"
  1824.                                         oDTP.oData.bArrMatchFormat[8] || // "dd-MM-yyyy HH:mm"
  1825.                                         oDTP.oData.bArrMatchFormat[9]) // "dd-MM-yyyy hh:mm AA"
  1826.                                 {
  1827.                                         iDate = parseInt(sArrDate[0]);
  1828.                                         iMonth = parseInt(sArrDate[1] - 1);
  1829.                                         iYear = parseInt(sArrDate[2]);
  1830.                                 }
  1831.                                 else if(oDTP.oData.bArrMatchFormat[2] ||  // "MM-dd-yyyy HH:mm:ss"
  1832.                                         oDTP.oData.bArrMatchFormat[3] || // "MM-dd-yyyy hh:mm:ss AA"
  1833.                                         oDTP.oData.bArrMatchFormat[10] ||  // "MM-dd-yyyy HH:mm"
  1834.                                         oDTP.oData.bArrMatchFormat[11]) // "MM-dd-yyyy hh:mm AA"
  1835.                                 {
  1836.                                         iMonth = parseInt(sArrDate[0] - 1);
  1837.                                         iDate = parseInt(sArrDate[1]);
  1838.                                         iYear = parseInt(sArrDate[2]);
  1839.                                 }
  1840.                                 else if(oDTP.oData.bArrMatchFormat[4] ||  // "yyyy-MM-dd HH:mm:ss"
  1841.                                         oDTP.oData.bArrMatchFormat[5] || // "yyyy-MM-dd hh:mm:ss AA"
  1842.                                         oDTP.oData.bArrMatchFormat[12] ||  // "yyyy-MM-dd HH:mm"
  1843.                                         oDTP.oData.bArrMatchFormat[13]) // "yyyy-MM-dd hh:mm AA"
  1844.                                 {
  1845.                                         iYear = parseInt(sArrDate[0]);
  1846.                                         iMonth = parseInt(sArrDate[1] - 1);
  1847.                                         iDate = parseInt(sArrDate[2]);
  1848.                                 }
  1849.                                 else if(oDTP.oData.bArrMatchFormat[6] || // "dd-MMM-yyyy HH:mm:ss"
  1850.                                         oDTP.oData.bArrMatchFormat[7] || // "dd-MMM-yyyy hh:mm:ss AA"
  1851.                                         oDTP.oData.bArrMatchFormat[14] || // "dd-MMM-yyyy HH:mm:ss"
  1852.                                         oDTP.oData.bArrMatchFormat[15]) // "dd-MMM-yyyy hh:mm:ss AA"
  1853.                                 {
  1854.                                         iDate = parseInt(sArrDate[0]);
  1855.                                         iMonth = oDTP._getShortMonthIndex(sArrDate[1]);
  1856.                                         iYear = parseInt(sArrDate[2]);
  1857.                                 }
  1858.                        
  1859.                                 sTime = sArrDateTime[1];
  1860.                                 if($.cf._isValid(sTime))
  1861.                                 {
  1862.                                         if(oDTP.oData.bIs12Hour)
  1863.                                         {
  1864.                                                 if($.cf._compare(oDTP.settings.dateTimeSeparator, oDTP.settings.timeMeridiemSeparator) && (sArrDateTime.length === 3))
  1865.                                                         sMeridiem = sArrDateTime[2];
  1866.                                                 else
  1867.                                                 {
  1868.                                                         sArrTimeComp = sTime.split(oDTP.settings.timeMeridiemSeparator);
  1869.                                                         sTime = sArrTimeComp[0];
  1870.                                                         sMeridiem = sArrTimeComp[1];
  1871.                                                 }
  1872.                                        
  1873.                                                 if(!($.cf._compare(sMeridiem, "AM") || $.cf._compare(sMeridiem, "PM")))
  1874.                                                         sMeridiem = "";
  1875.                                         }
  1876.                                        
  1877.                                         sArrTime = sTime.split(oDTP.settings.timeSeparator);
  1878.  
  1879.                                         iHour = parseInt(sArrTime[0]);
  1880.                                         iMinutes = parseInt(sArrTime[1]);
  1881.                                         if(bShowSeconds)
  1882.                                         {
  1883.                                                 iSeconds = parseInt(sArrTime[2]);
  1884.                                         }
  1885.  
  1886.                                         if(iHour === 12 && $.cf._compare(sMeridiem, "AM"))
  1887.                                                 iHour = 0;
  1888.                                         else if(iHour < 12 && $.cf._compare(sMeridiem, "PM"))
  1889.                                                 iHour += 12;
  1890.                                 }
  1891.                         }
  1892.                         iMinutes = oDTP._adjustMinutes(iMinutes);
  1893.        
  1894.                         dTempDate = new Date(iYear, iMonth, iDate, iHour, iMinutes, iSeconds, 0);
  1895.                         return dTempDate;
  1896.                 },
  1897.        
  1898.                 _getShortMonthIndex: function(sMonthName)
  1899.                 {
  1900.                         var oDTP = this;
  1901.  
  1902.                         for(var iTempIndex = 0; iTempIndex < oDTP.settings.shortMonthNames.length; iTempIndex++)
  1903.                         {
  1904.                                 if($.cf._compare(sMonthName, oDTP.settings.shortMonthNames[iTempIndex]))
  1905.                                         return iTempIndex;
  1906.                         }
  1907.                 },
  1908.  
  1909.                 _getFullMonthIndex: function(sMonthName)
  1910.                 {
  1911.                         var oDTP = this;
  1912.  
  1913.                         for(var iTempIndex = 0; iTempIndex < oDTP.settings.fullMonthNames.length; iTempIndex++)
  1914.                         {
  1915.                                 if($.cf._compare(sMonthName, oDTP.settings.fullMonthNames[iTempIndex]))
  1916.                                         return iTempIndex;
  1917.                         }
  1918.                 },
  1919.  
  1920.                 // Public Method
  1921.                 getIs12Hour: function(sMode, sFormat)
  1922.                 {
  1923.                         var oDTP = this;
  1924.  
  1925.                         var bIs12Hour = false,
  1926.                         iArgsLength = Function.length;
  1927.  
  1928.                         oDTP._setMatchFormat(iArgsLength, sMode, sFormat);
  1929.  
  1930.                         if(oDTP.oData.bTimeMode)
  1931.                 {
  1932.                         bIs12Hour = oDTP.oData.bArrMatchFormat[0] ||
  1933.                                                 oDTP.oData.bArrMatchFormat[2];
  1934.                 }
  1935.                 else if(oDTP.oData.bDateTimeMode)
  1936.                 {
  1937.                         bIs12Hour = oDTP.oData.bArrMatchFormat[1] ||
  1938.                                                         oDTP.oData.bArrMatchFormat[3] ||
  1939.                                                         oDTP.oData.bArrMatchFormat[5] ||
  1940.                                                         oDTP.oData.bArrMatchFormat[7] ||
  1941.                                                         oDTP.oData.bArrMatchFormat[9] ||
  1942.                                                         oDTP.oData.bArrMatchFormat[11] ||
  1943.                                                         oDTP.oData.bArrMatchFormat[13] ||
  1944.                                                         oDTP.oData.bArrMatchFormat[15];
  1945.                         }
  1946.  
  1947.                         oDTP._setMatchFormat(iArgsLength);
  1948.  
  1949.                         return bIs12Hour;
  1950.                 },
  1951.        
  1952.                 //-----------------------------------------------------------------
  1953.        
  1954.                 _setVariablesForDate: function(dInput, bIncludeTime, bSetMeridiem)
  1955.                 {
  1956.                         var oDTP = this;
  1957.                
  1958.                         var dTemp, oDTV = {},
  1959.                         bValidInput = $.cf._isValid(dInput);
  1960.                         if(bValidInput)
  1961.                         {
  1962.                                 dTemp = new Date(dInput);
  1963.                                 if(!$.cf._isValid(bIncludeTime))
  1964.                                         bIncludeTime = true;
  1965.                                 if(!$.cf._isValid(bSetMeridiem))
  1966.                                         bSetMeridiem = true;
  1967.                         }
  1968.                         else
  1969.                         {
  1970.                                 if (Object.prototype.toString.call(oDTP.oData.dCurrentDate) === '[object Date]' && isFinite(oDTP.oData.dCurrentDate))
  1971.                                         dTemp = new Date(oDTP.oData.dCurrentDate);
  1972.                                 else
  1973.                                         dTemp = new Date();
  1974.                                        
  1975.                                 if(!$.cf._isValid(bIncludeTime))
  1976.                                         bIncludeTime = (oDTP.oData.bTimeMode || oDTP.oData.bDateTimeMode);
  1977.                                 if(!$.cf._isValid(bSetMeridiem))
  1978.                                         bSetMeridiem = oDTP.oData.bIs12Hour;
  1979.                         }
  1980.  
  1981.                         oDTV.iCurrentDay = dTemp.getDate();
  1982.                         oDTV.iCurrentMonth = dTemp.getMonth();
  1983.                         oDTV.iCurrentYear = dTemp.getFullYear();
  1984.                         oDTV.iCurrentWeekday = dTemp.getDay();
  1985.                
  1986.                         if(bIncludeTime)
  1987.                         {
  1988.                                 oDTV.iCurrentHour = dTemp.getHours();
  1989.                                 oDTV.iCurrentMinutes = dTemp.getMinutes();
  1990.                                 oDTV.iCurrentSeconds = dTemp.getSeconds();
  1991.                        
  1992.                                 if(bSetMeridiem)
  1993.                                 {
  1994.                                         oDTV.sCurrentMeridiem = oDTP._determineMeridiemFromHourAndMinutes(oDTV.iCurrentHour, oDTV.iCurrentMinutes);
  1995.                                 }
  1996.                         }
  1997.  
  1998.                         if(bValidInput)
  1999.                                 return oDTV;
  2000.                         else
  2001.                                 oDTP.oData = $.extend(oDTP.oData, oDTV);
  2002.                 },
  2003.        
  2004.                 _getValuesFromInputBoxes: function()
  2005.                 {
  2006.                         var oDTP = this;
  2007.                
  2008.                         if(oDTP.oData.bDateMode || oDTP.oData.bDateTimeMode)
  2009.                         {
  2010.                                 var sMonth, iMonth;
  2011.  
  2012.                                 sMonth = $(oDTP.element).find(".month .dtpicker-compValue").val();
  2013.                                 if(sMonth.length > 1)
  2014.                                         sMonth = sMonth.charAt(0).toUpperCase() + sMonth.slice(1);
  2015.                                 iMonth = oDTP.settings.shortMonthNames.indexOf(sMonth);
  2016.                                 if(iMonth !== -1)
  2017.                                 {
  2018.                                         oDTP.oData.iCurrentMonth = parseInt(iMonth);
  2019.                                 }
  2020.                                 else
  2021.                                 {
  2022.                                         if(sMonth.match("^[+|-]?[0-9]+$"))
  2023.                                         {
  2024.                                                 oDTP.oData.iCurrentMonth = parseInt(sMonth - 1);
  2025.                                         }
  2026.                                 }
  2027.                        
  2028.                                 oDTP.oData.iCurrentDay = parseInt($(oDTP.element).find(".day .dtpicker-compValue").val()) || oDTP.oData.iCurrentDay;                                   
  2029.                                 oDTP.oData.iCurrentYear = parseInt($(oDTP.element).find(".year .dtpicker-compValue").val()) || oDTP.oData.iCurrentYear;
  2030.                         }
  2031.                
  2032.                         if(oDTP.oData.bTimeMode || oDTP.oData.bDateTimeMode)
  2033.                         {
  2034.                                 var iTempHour, iTempMinutes, iTempSeconds, sMeridiem;
  2035.  
  2036.                                 iTempHour = parseInt($(oDTP.element).find(".hour .dtpicker-compValue").val());
  2037.                                 iTempMinutes = oDTP._adjustMinutes(parseInt($(oDTP.element).find(".minutes .dtpicker-compValue").val()));
  2038.                                 iTempSeconds = oDTP._adjustMinutes(parseInt($(oDTP.element).find(".seconds .dtpicker-compValue").val()));
  2039.  
  2040.                                 oDTP.oData.iCurrentHour = isNaN(iTempHour) ? oDTP.oData.iCurrentHour : iTempHour;
  2041.                                 oDTP.oData.iCurrentMinutes = isNaN(iTempMinutes) ? oDTP.oData.iCurrentMinutes : iTempMinutes;
  2042.                                 oDTP.oData.iCurrentSeconds = isNaN(iTempSeconds) ? oDTP.oData.iCurrentSeconds : iTempSeconds;
  2043.                        
  2044.                                 if(oDTP.oData.iCurrentSeconds > 59)
  2045.                                 {
  2046.                                         oDTP.oData.iCurrentMinutes += oDTP.oData.iCurrentSeconds / 60;
  2047.                                         oDTP.oData.iCurrentSeconds = oDTP.oData.iCurrentSeconds % 60;
  2048.                                 }
  2049.                                 if(oDTP.oData.iCurrentMinutes > 59)
  2050.                                 {
  2051.                                         oDTP.oData.iCurrentHour += oDTP.oData.iCurrentMinutes / 60;
  2052.                                         oDTP.oData.iCurrentMinutes = oDTP.oData.iCurrentMinutes % 60;
  2053.                                 }
  2054.  
  2055.                                 if(oDTP.oData.bIs12Hour)
  2056.                                 {
  2057.                                         if(oDTP.oData.iCurrentHour > 12)
  2058.                                                 oDTP.oData.iCurrentHour = (oDTP.oData.iCurrentHour % 12);
  2059.                                 }
  2060.                                 else
  2061.                                 {
  2062.                                         if(oDTP.oData.iCurrentHour > 23)
  2063.                                                 oDTP.oData.iCurrentHour = (oDTP.oData.iCurrentHour % 23);
  2064.                                 }
  2065.                        
  2066.                                 if(oDTP.oData.bIs12Hour)
  2067.                                 {
  2068.                                         sMeridiem = $(oDTP.element).find(".meridiem .dtpicker-compValue").val();
  2069.                                         if($.cf._compare(sMeridiem, "AM") || $.cf._compare(sMeridiem, "PM"))
  2070.                                                 oDTP.oData.sCurrentMeridiem = sMeridiem;
  2071.                                
  2072.                                         if($.cf._compare(oDTP.oData.sCurrentMeridiem, "PM"))
  2073.                                         {
  2074.                                                 if(oDTP.oData.iCurrentHour !== 12 && oDTP.oData.iCurrentHour < 13)
  2075.                                                         oDTP.oData.iCurrentHour += 12;
  2076.                                         }
  2077.                                         if($.cf._compare(oDTP.oData.sCurrentMeridiem, "AM") && oDTP.oData.iCurrentHour === 12)
  2078.                                                 oDTP.oData.iCurrentHour = 0;
  2079.                                 }
  2080.                         }
  2081.                 },
  2082.  
  2083.                 _setCurrentDate: function()
  2084.                 {
  2085.                         var oDTP = this;
  2086.                
  2087.                         if(oDTP.oData.bTimeMode || oDTP.oData.bDateTimeMode)
  2088.                         {
  2089.                                 if(oDTP.oData.iCurrentSeconds > 59)
  2090.                                 {
  2091.                                         oDTP.oData.iCurrentMinutes += oDTP.oData.iCurrentSeconds / 60;
  2092.                                         oDTP.oData.iCurrentSeconds = oDTP.oData.iCurrentSeconds % 60;
  2093.                                 }
  2094.                                 else if(oDTP.oData.iCurrentSeconds < 0)
  2095.                                 {
  2096.                                         oDTP.oData.iCurrentMinutes -= oDTP.settings.minuteInterval;
  2097.                                         oDTP.oData.iCurrentSeconds += 60;
  2098.                                 }
  2099.                                 oDTP.oData.iCurrentMinutes = oDTP._adjustMinutes(oDTP.oData.iCurrentMinutes);
  2100.                                 oDTP.oData.iCurrentSeconds = oDTP._adjustSeconds(oDTP.oData.iCurrentSeconds);
  2101.                         }
  2102.                
  2103.                         var dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0),
  2104.                         bGTMaxDate = false, bLTMinDate = false,
  2105.                         sFormat, oDate, oFormattedDate, oFormattedTime,
  2106.                         sDate, sTime, sDateTime;
  2107.                
  2108.                         if(oDTP.oData.dMaxValue !== null)
  2109.                                 bGTMaxDate = (dTempDate.getTime() > oDTP.oData.dMaxValue.getTime());
  2110.                         if(oDTP.oData.dMinValue !== null)
  2111.                                 bLTMinDate = (dTempDate.getTime() < oDTP.oData.dMinValue.getTime());
  2112.                
  2113.                         if(bGTMaxDate || bLTMinDate)
  2114.                         {
  2115.                                 var bCDGTMaxDate = false, bCDLTMinDate = false;
  2116.                                 if(oDTP.oData.dMaxValue !== null)
  2117.                                         bCDGTMaxDate = (oDTP.oData.dCurrentDate.getTime() > oDTP.oData.dMaxValue.getTime());
  2118.                                 if(oDTP.oData.dMinValue !== null)
  2119.                                         bCDLTMinDate = (oDTP.oData.dCurrentDate.getTime() < oDTP.oData.dMinValue.getTime());
  2120.                        
  2121.                                 if(!(bCDGTMaxDate || bCDLTMinDate))
  2122.                                         dTempDate = new Date(oDTP.oData.dCurrentDate);
  2123.                                 else
  2124.                                 {
  2125.                                         if(bCDGTMaxDate)
  2126.                                         {
  2127.                                                 dTempDate = new Date(oDTP.oData.dMaxValue);
  2128.                                                 console.log("Info : Date/Time/DateTime you entered is later than Maximum value, so DateTimePicker is showing Maximum value in Input Field.");
  2129.                                         }
  2130.                                         if(bCDLTMinDate)
  2131.                                         {
  2132.                                                 dTempDate = new Date(oDTP.oData.dMinValue);
  2133.                                                 console.log("Info : Date/Time/DateTime you entered is earlier than Minimum value, so DateTimePicker is showing Minimum value in Input Field.");
  2134.                                         }
  2135.                                         console.log("Please enter proper Date/Time/DateTime values.");
  2136.                                 }
  2137.                         }
  2138.                
  2139.                         oDTP.oData.dCurrentDate = new Date(dTempDate);
  2140.                         oDTP._setVariablesForDate();
  2141.                
  2142.                         oDate = {}; sDate = ""; sTime = ""; sDateTime = "";
  2143.  
  2144.                         if(oDTP.oData.bDateMode || oDTP.oData.bDateTimeMode)
  2145.                         {
  2146.                                 if(oDTP.oData.bDateMode && (oDTP.oData.bArrMatchFormat[4] || oDTP.oData.bArrMatchFormat[5] || oDTP.oData.bArrMatchFormat[6]))
  2147.                                         oDTP.oData.iCurrentDay = 1;
  2148.                        
  2149.                                 oFormattedDate = oDTP._formatDate();
  2150.  
  2151.                                 $(oDTP.element).find('.day .dtpicker-compValue').val(oFormattedDate.dd);
  2152.                        
  2153.                                 if(oDTP.oData.bDateMode)
  2154.                                 {
  2155.                                         if(oDTP.oData.bArrMatchFormat[4])  // "MM-yyyy"
  2156.                                                 $(oDTP.element).find('.month .dtpicker-compValue').val(oFormattedDate.MM);
  2157.                                         else if(oDTP.oData.bArrMatchFormat[6])  // "MMMM yyyy"
  2158.                                                 $(oDTP.element).find('.month .dtpicker-compValue').val(oFormattedDate.month);
  2159.                                         else
  2160.                                                 $(oDTP.element).find('.month .dtpicker-compValue').val(oFormattedDate.monthShort);
  2161.                                 }
  2162.                                 else
  2163.                                         $(oDTP.element).find('.month .dtpicker-compValue').val(oFormattedDate.monthShort);
  2164.                        
  2165.                                 $(oDTP.element).find('.year .dtpicker-compValue').val(oFormattedDate.yyyy);
  2166.                        
  2167.                                 if(oDTP.settings.formatHumanDate)
  2168.                                 {
  2169.                                         oDate = $.extend(oDate, oFormattedDate);
  2170.                                 }
  2171.                                 else
  2172.                                 {
  2173.                                         if(oDTP.oData.bDateMode && (oDTP.oData.bArrMatchFormat[4] || oDTP.oData.bArrMatchFormat[5] || oDTP.oData.bArrMatchFormat[6]))
  2174.                                         {
  2175.                                                 if(oDTP.oData.bArrMatchFormat[4])
  2176.                                                         sDate = oFormattedDate.MM + oDTP.settings.monthYearSeparator + oFormattedDate.yyyy;
  2177.                                                 else if(oDTP.oData.bArrMatchFormat[5])
  2178.                                                         sDate = oFormattedDate.monthShort + oDTP.settings.monthYearSeparator + oFormattedDate.yyyy;
  2179.                                                 else if(oDTP.oData.bArrMatchFormat[6])
  2180.                                                         sDate = oFormattedDate.month + oDTP.settings.monthYearSeparator + oFormattedDate.yyyy;
  2181.                                         }
  2182.                                         else
  2183.                                                 sDate = oFormattedDate.dayShort + ", " + oFormattedDate.month + " " + oFormattedDate.dd + ", " + oFormattedDate.yyyy;
  2184.                                 }
  2185.                         }
  2186.                         if(oDTP.oData.bTimeMode || oDTP.oData.bDateTimeMode)
  2187.                         {
  2188.                                 oFormattedTime = oDTP._formatTime();
  2189.                        
  2190.                                 if(oDTP.oData.bIs12Hour)
  2191.                                         $(oDTP.element).find('.meridiem .dtpicker-compValue').val(oDTP.oData.sCurrentMeridiem);
  2192.                                 $(oDTP.element).find('.hour .dtpicker-compValue').val(oFormattedTime.hour);
  2193.                                 $(oDTP.element).find('.minutes .dtpicker-compValue').val(oFormattedTime.mm);
  2194.                                 $(oDTP.element).find('.seconds .dtpicker-compValue').val(oFormattedTime.ss);
  2195.                        
  2196.                                 if(oDTP.settings.formatHumanDate)
  2197.                                 {
  2198.                                         oDate = $.extend(oDate, oFormattedTime);
  2199.                                 }
  2200.                                 else
  2201.                                 {
  2202.                                         var bShowSecondsTime = (oDTP.oData.bTimeMode && (
  2203.                                                 oDTP.oData.bArrMatchFormat[0] ||
  2204.                                                 oDTP.oData.bArrMatchFormat[1])),
  2205.  
  2206.                                         bShowSecondsDateTime = (oDTP.oData.bDateTimeMode &&
  2207.                                                         (oDTP.oData.bArrMatchFormat[0] ||
  2208.                                                         oDTP.oData.bArrMatchFormat[1] ||
  2209.                                                         oDTP.oData.bArrMatchFormat[2] ||
  2210.                                                         oDTP.oData.bArrMatchFormat[3] ||
  2211.                                                         oDTP.oData.bArrMatchFormat[4] ||
  2212.                                                         oDTP.oData.bArrMatchFormat[5] ||
  2213.                                                         oDTP.oData.bArrMatchFormat[6] ||
  2214.                                                         oDTP.oData.bArrMatchFormat[7]));
  2215.  
  2216.                                         if(bShowSecondsTime || bShowSecondsDateTime)
  2217.                                                 sTime = oFormattedTime.hour + oDTP.settings.timeSeparator + oFormattedTime.mm + oDTP.settings.timeSeparator + oFormattedTime.ss;
  2218.                                         else
  2219.                                                 sTime = oFormattedTime.hour + oDTP.settings.timeSeparator + oFormattedTime.mm;
  2220.  
  2221.                                         if(oDTP.oData.bIs12Hour)
  2222.                                                 sTime += oDTP.settings.timeMeridiemSeparator + oDTP.oData.sCurrentMeridiem;
  2223.                                 }
  2224.                         }
  2225.                
  2226.                         if(oDTP.settings.formatHumanDate)
  2227.                         {
  2228.                                 if(oDTP.oData.bDateTimeMode)
  2229.                                         sFormat = oDTP.oData.sDateFormat;
  2230.                                 else if(oDTP.oData.bDateMode)
  2231.                                         sFormat = oDTP.oData.sTimeFormat;
  2232.                                 else if(oDTP.oData.bTimeMode)
  2233.                                         sFormat = oDTP.oData.sDateTimeFormat;
  2234.  
  2235.                                 sDateTime = oDTP.settings.formatHumanDate.call(oDTP, oDate, oDTP.settings.mode, sFormat);
  2236.                         }
  2237.                         else           
  2238.                         {
  2239.                                 if(oDTP.oData.bDateTimeMode)
  2240.                                         sDateTime = sDate + oDTP.settings.dateTimeSeparator + sTime;
  2241.                                 else if(oDTP.oData.bDateMode)
  2242.                                         sDateTime = sDate;
  2243.                                 else if(oDTP.oData.bTimeMode)
  2244.                                         sDateTime = sTime;
  2245.                         }
  2246.  
  2247.                         $(oDTP.element).find('.dtpicker-value').html(sDateTime);
  2248.  
  2249.                         oDTP._setButtons();
  2250.                 },
  2251.  
  2252.                 _formatDate: function(oDTVP)
  2253.                 {
  2254.                         var oDTP = this;
  2255.                         var oDTV = {},
  2256.                         sDay, sYear,
  2257.                         iMonth, sMonth, sMonthShort, sMonthFull,
  2258.                         iDayOfTheWeek, sDayOfTheWeek, sDayOfTheWeekFull;
  2259.  
  2260.                         if($.cf._isValid(oDTVP))
  2261.                                 oDTV = $.extend({}, oDTVP);
  2262.                         else
  2263.                         {
  2264.                                 oDTV.iCurrentDay = oDTP.oData.iCurrentDay;
  2265.                                 oDTV.iCurrentMonth = oDTP.oData.iCurrentMonth;
  2266.                                 oDTV.iCurrentYear = oDTP.oData.iCurrentYear;
  2267.                                 oDTV.iCurrentWeekday = oDTP.oData.iCurrentWeekday;
  2268.                         }
  2269.  
  2270.                         sDay = oDTV.iCurrentDay;
  2271.                         sDay = (sDay < 10) ? ("0" + sDay) : sDay;
  2272.                         iMonth = oDTV.iCurrentMonth;
  2273.                         sMonth = oDTV.iCurrentMonth + 1;
  2274.                         sMonth = (sMonth < 10) ? ("0" + sMonth) : sMonth;
  2275.                         sMonthShort = oDTP.settings.shortMonthNames[iMonth];
  2276.                         sMonthFull = oDTP.settings.fullMonthNames[iMonth];
  2277.                         sYear = oDTV.iCurrentYear;
  2278.                         iDayOfTheWeek = oDTV.iCurrentWeekday;
  2279.                         sDayOfTheWeek = oDTP.settings.shortDayNames[iDayOfTheWeek];
  2280.                         sDayOfTheWeekFull = oDTP.settings.fullDayNames[iDayOfTheWeek];
  2281.                
  2282.                         return {
  2283.                                 "dd": sDay,
  2284.                                 "MM": sMonth,
  2285.                                 "monthShort": sMonthShort,
  2286.                                 "month": sMonthFull,
  2287.                                 "yyyy": sYear,
  2288.                                 "dayShort": sDayOfTheWeek,
  2289.                                 "day": sDayOfTheWeekFull
  2290.                         };
  2291.                 },
  2292.  
  2293.                 _formatTime: function(oDTVP)
  2294.                 {
  2295.                         var oDTP = this;
  2296.                         var oDTV = {},
  2297.                         iHour24, sHour24, iHour12, sHour12, sHour,
  2298.                         sMinutes, sSeconds;
  2299.  
  2300.                         if($.cf._isValid(oDTVP))
  2301.                                 oDTV = $.extend({}, oDTVP);
  2302.                         else
  2303.                         {
  2304.                                 oDTV.iCurrentHour = oDTP.oData.iCurrentHour;
  2305.                                 oDTV.iCurrentMinutes = oDTP.oData.iCurrentMinutes;
  2306.                                 oDTV.iCurrentSeconds = oDTP.oData.iCurrentSeconds;
  2307.                                 oDTV.sCurrentMeridiem = oDTP.oData.sCurrentMeridiem;
  2308.                         }
  2309.  
  2310.                         iHour24 = oDTV.iCurrentHour;
  2311.                         sHour24 = (iHour24 < 10) ? ("0" + iHour24) : iHour24;
  2312.                         sHour = sHour24;
  2313.  
  2314.                         iHour12 = oDTV.iCurrentHour;
  2315.                         if(iHour12 > 12)
  2316.                                 iHour12 -= 12;
  2317.                         if(sHour === "00")
  2318.                                 iHour12 = 12;
  2319.                         sHour12 = (iHour12 < 10) ? ("0" + iHour12) : iHour12;
  2320.                         if(oDTP.oData.bIs12Hour)
  2321.                                 sHour = sHour12;
  2322.                
  2323.                         sMinutes = oDTV.iCurrentMinutes;
  2324.                         sMinutes = (sMinutes < 10) ? ("0" + sMinutes) : sMinutes;
  2325.                         sSeconds = oDTV.iCurrentSeconds;
  2326.                         sSeconds = (sSeconds < 10) ? ("0" + sSeconds) : sSeconds;
  2327.                
  2328.                         return {
  2329.                                 "H": iHour24,
  2330.                                 "HH": sHour24,
  2331.                                 "h": iHour12,
  2332.                                 "hh": sHour12,
  2333.                                 "hour": sHour,
  2334.                                 "m": oDTV.iCurrentMinutes,
  2335.                                 "mm": sMinutes,
  2336.                                 "s": oDTV.iCurrentSeconds,
  2337.                                 "ss": sSeconds,
  2338.                                 "ME": oDTV.sCurrentMeridiem
  2339.                         };
  2340.                 },
  2341.        
  2342.                 _setButtons: function()
  2343.                 {
  2344.                         var oDTP = this;
  2345.                         $(oDTP.element).find('.dtpicker-compButton').removeClass("dtpicker-compButtonDisable").addClass('dtpicker-compButtonEnable');
  2346.                
  2347.                         var dTempDate;
  2348.                         if(oDTP.oData.dMaxValue !== null)
  2349.                         {
  2350.                                 if(oDTP.oData.bTimeMode)
  2351.                                 {
  2352.                                         // Decrement Hour
  2353.                                         if((oDTP.oData.iCurrentHour + 1) > oDTP.oData.dMaxValue.getHours() || ((oDTP.oData.iCurrentHour + 1) === oDTP.oData.dMaxValue.getHours() && oDTP.oData.iCurrentMinutes > oDTP.oData.dMaxValue.getMinutes()))
  2354.                                                 $(oDTP.element).find(".hour .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2355.                                
  2356.                                         // Decrement Minutes
  2357.                                         if(oDTP.oData.iCurrentHour >= oDTP.oData.dMaxValue.getHours() && (oDTP.oData.iCurrentMinutes + 1) > oDTP.oData.dMaxValue.getMinutes())
  2358.                                                 $(oDTP.element).find(".minutes .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2359.                                 }
  2360.                                 else
  2361.                                 {
  2362.                                         // Increment Day
  2363.                                         dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, (oDTP.oData.iCurrentDay + 1), oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
  2364.                                         if(dTempDate.getTime() > oDTP.oData.dMaxValue.getTime())
  2365.                                                 $(oDTP.element).find(".day .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2366.                                
  2367.                                         // Increment Month
  2368.                                         dTempDate = new Date(oDTP.oData.iCurrentYear, (oDTP.oData.iCurrentMonth + 1), oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
  2369.                                         if(dTempDate.getTime() > oDTP.oData.dMaxValue.getTime())
  2370.                                                 $(oDTP.element).find(".month .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2371.                                
  2372.                                         // Increment Year
  2373.                                         dTempDate = new Date((oDTP.oData.iCurrentYear + 1), oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
  2374.                                         if(dTempDate.getTime() > oDTP.oData.dMaxValue.getTime())
  2375.                                                 $(oDTP.element).find(".year .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2376.                                
  2377.                                         // Increment Hour
  2378.                                         dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, (oDTP.oData.iCurrentHour + 1), oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
  2379.                                         if(dTempDate.getTime() > oDTP.oData.dMaxValue.getTime())
  2380.                                                 $(oDTP.element).find(".hour .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2381.                                
  2382.                                         // Increment Minutes
  2383.                                         dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, (oDTP.oData.iCurrentMinutes + 1), oDTP.oData.iCurrentSeconds, 0);
  2384.                                         if(dTempDate.getTime() > oDTP.oData.dMaxValue.getTime())
  2385.                                                 $(oDTP.element).find(".minutes .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2386.  
  2387.                                         // Increment Seconds
  2388.                                         dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, (oDTP.oData.iCurrentSeconds + 1), 0);
  2389.                                         if(dTempDate.getTime() > oDTP.oData.dMaxValue.getTime())
  2390.                                                 $(oDTP.element).find(".seconds .increment").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2391.                                 }
  2392.                         }
  2393.                
  2394.                         if(oDTP.oData.dMinValue !== null)
  2395.                         {
  2396.                                 if(oDTP.oData.bTimeMode)
  2397.                                 {
  2398.                                         // Decrement Hour
  2399.                                         if((oDTP.oData.iCurrentHour - 1) < oDTP.oData.dMinValue.getHours() || ((oDTP.oData.iCurrentHour - 1) === oDTP.oData.dMinValue.getHours() && oDTP.oData.iCurrentMinutes < oDTP.oData.dMinValue.getMinutes()))
  2400.                                                 $(oDTP.element).find(".hour .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2401.                                
  2402.                                         // Decrement Minutes
  2403.                                         if(oDTP.oData.iCurrentHour <= oDTP.oData.dMinValue.getHours() && (oDTP.oData.iCurrentMinutes - 1) < oDTP.oData.dMinValue.getMinutes())
  2404.                                                 $(oDTP.element).find(".minutes .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2405.                                 }
  2406.                                 else
  2407.                                 {
  2408.                                         // Decrement Day
  2409.                                         dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, (oDTP.oData.iCurrentDay - 1), oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
  2410.                                         if(dTempDate.getTime() < oDTP.oData.dMinValue.getTime())
  2411.                                                 $(oDTP.element).find(".day .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2412.                                
  2413.                                         // Decrement Month
  2414.                                         dTempDate = new Date(oDTP.oData.iCurrentYear, (oDTP.oData.iCurrentMonth - 1), oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
  2415.                                         if(dTempDate.getTime() < oDTP.oData.dMinValue.getTime())
  2416.                                                 $(oDTP.element).find(".month .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2417.                                
  2418.                                         // Decrement Year
  2419.                                         dTempDate = new Date((oDTP.oData.iCurrentYear - 1), oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
  2420.                                         if(dTempDate.getTime() < oDTP.oData.dMinValue.getTime())
  2421.                                                 $(oDTP.element).find(".year .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2422.                                
  2423.                                         // Decrement Hour
  2424.                                         dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, (oDTP.oData.iCurrentHour - 1), oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
  2425.                                         if(dTempDate.getTime() < oDTP.oData.dMinValue.getTime())
  2426.                                                 $(oDTP.element).find(".hour .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2427.                                
  2428.                                         // Decrement Minutes
  2429.                                         dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, (oDTP.oData.iCurrentMinutes - 1), oDTP.oData.iCurrentSeconds, 0);
  2430.                                         if(dTempDate.getTime() < oDTP.oData.dMinValue.getTime())
  2431.                                                 $(oDTP.element).find(".minutes .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2432.  
  2433.                                         // Decrement Seconds
  2434.                                         dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, oDTP.oData.iCurrentHour, oDTP.oData.iCurrentMinutes, (oDTP.oData.iCurrentSeconds - 1), 0);
  2435.                                         if(dTempDate.getTime() < oDTP.oData.dMinValue.getTime())
  2436.                                                 $(oDTP.element).find(".seconds .decrement").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2437.                                 }
  2438.                         }
  2439.                        
  2440.                         if(oDTP.oData.bIs12Hour)
  2441.                         {
  2442.                                 var iTempHour, iTempMinutes;
  2443.                                 if(oDTP.oData.dMaxValue !== null || oDTP.oData.dMinValue !== null)
  2444.                                 {
  2445.                                         iTempHour = oDTP.oData.iCurrentHour;
  2446.                                         if($.cf._compare(oDTP.oData.sCurrentMeridiem, "AM"))
  2447.                                                 iTempHour += 12;
  2448.                                         else if($.cf._compare(oDTP.oData.sCurrentMeridiem, "PM"))
  2449.                                                 iTempHour -= 12;
  2450.                                
  2451.                                         dTempDate = new Date(oDTP.oData.iCurrentYear, oDTP.oData.iCurrentMonth, oDTP.oData.iCurrentDay, iTempHour, oDTP.oData.iCurrentMinutes, oDTP.oData.iCurrentSeconds, 0);
  2452.                                
  2453.                                         if(oDTP.oData.dMaxValue !== null)
  2454.                                         {
  2455.                                                 if(oDTP.oData.bTimeMode)
  2456.                                                 {
  2457.                                                         iTempMinutes = oDTP.oData.iCurrentMinutes;
  2458.                                                         if(iTempHour > oDTP.oData.dMaxValue.getHours() || (iTempHour === oDTP.oData.dMaxValue.getHours() && iTempMinutes > oDTP.oData.dMaxValue.getMinutes()))
  2459.                                                                 $(oDTP.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2460.                                                 }
  2461.                                                 else
  2462.                                                 {
  2463.                                                         if(dTempDate.getTime() > oDTP.oData.dMaxValue.getTime())
  2464.                                                                 $(oDTP.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2465.                                                 }
  2466.                                         }
  2467.                                
  2468.                                         if(oDTP.oData.dMinValue !== null)
  2469.                                         {
  2470.                                                 if(oDTP.oData.bTimeMode)
  2471.                                                 {
  2472.                                                         iTempMinutes = oDTP.oData.iCurrentMinutes;
  2473.                                                         if(iTempHour < oDTP.oData.dMinValue.getHours() || (iTempHour === oDTP.oData.dMinValue.getHours() && iTempMinutes < oDTP.oData.dMinValue.getMinutes()))
  2474.                                                                 $(oDTP.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2475.                                                 }
  2476.                                                 else
  2477.                                                 {
  2478.                                                         if(dTempDate.getTime() < oDTP.oData.dMinValue.getTime())
  2479.                                                                 $(oDTP.element).find(".meridiem .dtpicker-compButton").removeClass("dtpicker-compButtonEnable").addClass("dtpicker-compButtonDisable");
  2480.                                                 }
  2481.                                         }
  2482.                                 }
  2483.                         }
  2484.                 },
  2485.        
  2486.                 // Public Method
  2487.                 setIsPopup: function(bIsPopup)
  2488.                 {
  2489.                         var oDTP = this;
  2490.                         oDTP.settings.isPopup = bIsPopup;
  2491.                
  2492.                         if($(oDTP.element).css("display") !== "none")
  2493.                                 oDTP._hidePicker(0);
  2494.                
  2495.                         if(oDTP.settings.isPopup)
  2496.                         {
  2497.                                 $(oDTP.element).addClass("dtpicker-mobile");
  2498.                                
  2499.                                 $(oDTP.element).css({position: "fixed", top: 0, left: 0, width: "100%", height: "100%"});
  2500.                         }
  2501.                         else
  2502.                         {
  2503.                                 $(oDTP.element).removeClass("dtpicker-mobile");
  2504.                                
  2505.                                 if(oDTP.oData.oInputElement !== null)
  2506.                                 {
  2507.                                         var iElemTop = $(oDTP.oData.oInputElement).offset().top + $(oDTP.oData.oInputElement).outerHeight(),
  2508.                                         iElemLeft = $(oDTP.oData.oInputElement).offset().left,
  2509.                                         iElemWidth =  $(oDTP.oData.oInputElement).outerWidth();
  2510.                                
  2511.                                         $(oDTP.element).css({position: "absolute", top: iElemTop, left: iElemLeft, width: iElemWidth, height: "auto"});
  2512.                                 }
  2513.                         }
  2514.                 },
  2515.        
  2516.                 _compareDates: function(dDate1, dDate2)
  2517.                 {
  2518.                         dDate1 = new Date(dDate1.getDate(), dDate1.getMonth(), dDate1.getFullYear(), 0, 0, 0, 0);
  2519.                         dDate1 = new Date(dDate1.getDate(), dDate1.getMonth(), dDate1.getFullYear(), 0, 0, 0, 0);
  2520.                         var iDateDiff = (dDate1.getTime() - dDate2.getTime()) / 864E5;
  2521.                         return (iDateDiff === 0) ? iDateDiff: (iDateDiff/Math.abs(iDateDiff));
  2522.                 },
  2523.        
  2524.                 _compareTime: function(dTime1, dTime2)
  2525.                 {
  2526.                         var iTimeMatch = 0;
  2527.                         if((dTime1.getHours() === dTime2.getHours()) && (dTime1.getMinutes() === dTime2.getMinutes()))
  2528.                                 iTimeMatch = 1;         // 1 = Exact Match
  2529.                         else
  2530.                         {
  2531.                                 if(dTime1.getHours() < dTime2.getHours())
  2532.                                         iTimeMatch = 2;  // time1 < time2
  2533.                                 else if(dTime1.getHours() > dTime2.getHours())
  2534.                                         iTimeMatch = 3;         // time1 > time2
  2535.                                 else if(dTime1.getHours() === dTime2.getHours())
  2536.                                 {
  2537.                                         if(dTime1.getMinutes() < dTime2.getMinutes())
  2538.                                                 iTimeMatch = 2;  // time1 < time2
  2539.                                         else if(dTime1.getMinutes() > dTime2.getMinutes())
  2540.                                                 iTimeMatch = 3;         // time1 > time2
  2541.                                 }
  2542.                         }
  2543.                         return iTimeMatch;
  2544.                 },
  2545.        
  2546.                 _compareDateTime: function(dDate1, dDate2)
  2547.                 {
  2548.                         var iDateTimeDiff = (dDate1.getTime() - dDate2.getTime()) / 6E4;
  2549.                         return (iDateTimeDiff === 0) ? iDateTimeDiff: (iDateTimeDiff/Math.abs(iDateTimeDiff));
  2550.                 },
  2551.  
  2552.                 _determineMeridiemFromHourAndMinutes: function(iHour, iMinutes)
  2553.                 {
  2554.                         if(iHour > 12)
  2555.                         {
  2556.                                 return "PM";
  2557.                         }
  2558.                         else if(iHour === 12 && iMinutes >= 0)
  2559.                         {
  2560.                                 return "PM";
  2561.                         }
  2562.                         else
  2563.                         {
  2564.                                 return "AM";
  2565.                         }
  2566.                 },
  2567.  
  2568.                 // Public Method
  2569.                 setLanguage: function(sLanguage)
  2570.                 {
  2571.                         var oDTP = this;
  2572.  
  2573.                         oDTP.settings = $.extend({}, $.DateTimePicker.defaults, $.DateTimePicker.i18n[sLanguage], oDTP.options);
  2574.                
  2575.                         oDTP._setDateFormatArray(); // Set DateFormatArray
  2576.                         oDTP._setTimeFormatArray(); // Set TimeFormatArray
  2577.                         oDTP._setDateTimeFormatArray(); // Set DateTimeFormatArray
  2578.                
  2579.                         return oDTP;
  2580.                 }
  2581.  
  2582.         };
  2583.        
  2584. }));

Raw Paste


Login or Register to edit or fork this paste. It's free.