(function () {
"use strict";
$.CF = {
setPropertiesStyle: function(sProp, sArrProps)
{
var oTest = window.getComputedStyle(document.documentElement, '');
for(var iProp in sArrProps)
{
if(oTest[sArrProps[iProp]] !== undefined)
{
var sPrefix = "";
if(sArrProps[iProp].search("Webkit") !== -1)
sPrefix = "-webkit-";
else if(sArrProps[iProp].search("Moz") !== -1)
sPrefix = "-moz-";
else if(sArrProps[iProp].search("O") !== -1)
sPrefix = "-o-";
else if(sArrProps[iProp].search("ms") !== -1)
sPrefix = "-ms-";
return sPrefix + sProp;
}
}
},
testProperties: function(sProp, sArrProps, bReturnProp)
{
var oTest = window.getComputedStyle(document.documentElement, '');
for(var iProp in sArrProps)
{
if(oTest[sArrProps[iProp]] !== undefined)
{
if(bReturnProp)
{
return sArrProps[iProp];
}
else
return true;
}
}
if(bReturnProp)
return "";
else
return false;
},
compareDataType: function(oVariable, sDataType)
{
if(typeof oVariable === sDataType.toLocaleLowerCase())
return true;
return false;
},
compareStrings: function(sString1, sString2)
{
var to = this;
if(sString1 !== null && sString1 !== undefined && sString2 !== null && sString2 !== undefined)
{
if(typeof sString1 === "string" && typeof sString2 === "string")
{
if(sString1.toLocaleLowerCase() === sString2.toLocaleLowerCase())
return true;
}
return false;
}
else
{
if((sString1 === null && sString2 === null) || (sString1 === undefined && sString2 === undefined))
return true;
else
return false;
}
},
isValid: function(oValue)
{
if(oValue !== undefined && oValue !== null && oValue !== "")
return true;
else
return false;
}
};
$.AnyPicker = $.AnyPicker || {
name: "AnyPicker",
version: "2.0.3",
i18n:
{
},
defaults:
{
mode: "datetime",
parent: "body",
layout: "popup",
hAlign: "left",
vAlign: "bottom",
relativeTo: null,
inputElement: null,
inputChangeEvent: "onSet",
lang: "",
rtl: false,
animationDuration: 500,
setButton:
{
markup: "Set",
markupContentWindows: "set",
type: "Button"
},
clearButton:
{
markup: "Clear",
markupContentWindows: "clear",
type: "Button"
},
nowButton:
{
markup: "Now",
markupContentWindows: "now",
type: "Button"
},
cancelButton:
{
markup: "Cancel",
markupContentWindows: "cancel",
type: "Button"
},
headerTitle:
{
markup: "",
type: "Text",
contentBehaviour: "Static",
format: ""
},
viewSections:
{
header: ["headerTitle"],
contentTop: [],
contentMiddle: [],
contentBottom: [],
footer: ["cancelButton", "setButton"]
},
i18n:
{
headerTitle: "Select",
setButton: "Set",
clearButton: "Clear",
nowButton: "Now",
cancelButton: "Cancel",
dateSwitch: "Date",
timeSwitch: "Time"
},
theme: "Default",
onInit: null,
onBeforeShowPicker: null,
onShowPicker: null,
onBeforeHidePicker: null,
onHidePicker: null,
parseInput: null,
formatOutput: null,
setOutput: null,
onSetOutput: null,
buttonClicked: null
},
tempDefaults:
{
sOrientation: "portrait",
overlayClass: "",
overlaySelector: "",
iExt: 2,
dir: "ltr",
sElemTag: "",
oElemValid: {
bIsInput: false,
bIsListItem: false,
bIsSelect: false
},
sInputElemTag: "",
oInputElemValid: {
bIsInput: false,
bIsListItem: false,
bIsSelect: false
},
prevActive: null,
bFirst: true,
sDateTimeTab: "date",
iCompDragStart: 0,
headerTitleDefined: false,
bIsiPad: false,
bModified: {
set: false,
cancel: false,
clear: false,
now: false
},
tabKey: false
},
extra:
{
sArrModes: ["select", "datetime", "custom"],
sArrLayout: ["popup", "relative", "fixed", "inline"],
sArrHAlign: ["left", "center", "right"],
sArrVAlign: ["top", "middle", "bottom"],
sArrViewSections: ["header", "contentTop", "contentMiddle", "contentBottom", "footer"],
oArrInputChangeEvent: ["onChange", "onSet"],
sArrThemes: ["Default", "iOS", "Android", "Windows"],
bIsTouchDevice: "ontouchstart" in document.documentElement,
sClickHandler: ("ontouchstart" in document.documentElement ? "click" : "click"),
sClickHandlerButtons: ("ontouchstart" in document.documentElement ? "touchstart" : "click"),
bHasCSS3D : $.CF.testProperties("perspective", ["WebkitPerspective", "MozPerspective", "OPerspective", "msPerspective", "perspective", "perspectiveProperty"], false),
sCSSTransform: $.CF.testProperties("transform", ["WebkitTransform", "MozTransform", "OTransform", "msTransform", "transform"], true),
sCSSTransformStyle: $.CF.setPropertiesStyle("transform", ["WebkitTransform", "MozTransform", "OTransform", "msTransform", "transform"]),
sCSSTransition: $.CF.testProperties("transition", ["WebkitTransition", "MozTransition", "OTransition", "msTransition", "transition"], true),
bHasCSSAnimation: $.CF.testProperties("animation", ["WebkitAnimation", "MozAnimation", "OAnimation", "msAnimation", "animation"], false),
sMouseWheel: ('onwheel' in document || document.documentMode >= 9 ) ? ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
bHasIE10Pointer: window.navigator.msPointerEnabled && !window.navigator.pointerEnabled,
bHasPointer: window.navigator.pointerEnabled || window.navigator.msPointerEnabled,
bIsiPad: navigator.userAgent.match(/iPad/i) !== null
}
};
(function (factory)
{
if (typeof define === 'function' && define.amd)
{
define(['jquery'], factory);
}
else if (typeof exports === 'object')
{
module.exports = factory(require('jquery'));
}
else
{
factory(jQuery);
}
}
(function ($)
{
$.fn.AnyPicker = function(options)
{
var oAnyPicker = $(this).data();
var sArrDataKeys = Object.keys(oAnyPicker),
iKey, sKey;
if(options === null || options === undefined)
{
if(sArrDataKeys.length > 0)
{
for(iKey in sArrDataKeys)
{
sKey = sArrDataKeys[iKey];
if(sKey.search("plugin_AnyPicker_") !== -1)
{
return oAnyPicker[sKey];
}
}
}
else
1;
}
else if(typeof options === "string")
{
if(oAnyPicker !== null || oAnyPicker !== undefined)
{
if(sArrDataKeys.length > 0)
{
if(options === "destroy")
{
if(sArrDataKeys.length > 0)
{
for(iKey in sArrDataKeys)
{
sKey = sArrDataKeys[iKey];
if(sKey.search("plugin_AnyPicker_") !== -1)
{
oAnyPicker = oAnyPicker[sKey];
$(window).off("blur." + oAnyPicker.setting.timestamp);
var oInput = $(oAnyPicker.setting.inputElement);
$(oInput).off("focus." + oAnyPicker.setting.timestamp);
$(oInput).off("blur." + oAnyPicker.setting.timestamp);
$(".ap-overlay-" + sKey.replace("plugin_AnyPicker_", "")).remove();
$(this).removeData(sKey);
break;
}
}
}
else
1;
}
}
else
1;
}
}
else
{
return this.each(function()
{
var iTimeStamp = (new Date()).getTime();
if(!$.data(this, "plugin_AnyPicker_" + iTimeStamp))
{
options.timestamp = iTimeStamp;
oAnyPicker = new AnyPicker(this, options);
$.data(this, "plugin_AnyPicker_" + iTimeStamp, oAnyPicker);
oAnyPicker.init();
}
else
{
if(sArrDataKeys.length > 0)
{
for(iKey in sArrDataKeys)
{
sKey = sArrDataKeys[iKey];
if(sKey.search("plugin_AnyPicker_") !== -1)
{
return oAnyPicker[sKey];
}
}
}
else
1;
}
});
}
};
}));
function AnyPicker(element, options)
{
var apo = this;
apo.elem = element;
var sLang = (options.lang !== undefined || options.lang !== null) ? options.lang : $.CalenStyle.defaults.lang,
io18n = $.extend(true, {}, $.AnyPicker.defaults.i18n, $.AnyPicker.i18n[sLang], options.i18n),
oDefaults = $.extend(true, {}, $.AnyPicker.defaults);
io18n = {
i18n: io18n
};
oDefaults.i18n = {};
options.i18n = {};
apo.setting = $.extend({}, oDefaults, options, io18n);
apo.tmp = $.extend({}, $.AnyPicker.tempDefaults);
apo.tmp.overlayClass = "ap-overlay-" + apo.setting.timestamp;
apo.tmp.overlaySelector = "." + apo.tmp.overlayClass;
apo.tmp.sOrientation = apo._getDeviceOrientation();
if($.CF.isValid(options.headerTitle))
apo.tmp.headerTitleDefined = true;
if($.CF.compareStrings(apo.setting.theme, "Android"))
{
if(!$.CF.isValid(options.rowHeight))
apo.setting.rowHeight = 50;
if(!$.CF.isValid(options.visibleRows))
apo.setting.visibleRows = 3;
}
else if($.CF.compareStrings(apo.setting.theme, "iOS"))
{
if(!$.CF.isValid(options.rowHeight))
apo.setting.rowHeight = 36;
if(!$.CF.isValid(options.visibleRows))
apo.setting.visibleRows = 5;
if(!$.CF.isValid(options.viewSections))
{
if($.CF.compareStrings(apo.setting.layout, "fixed"))
{
apo.setting.viewSections = {
header: [],
contentTop: [],
contentMiddle: [],
contentBottom: [],
footer: ["cancelButton", "headerTitle", "setButton"]
};
}
else
{
apo.setting.viewSections = {
header: ["cancelButton", "headerTitle", "setButton"],
contentTop: [],
contentMiddle: [],
contentBottom: [],
footer: []
};
}
}
if($.AnyPicker.extra.bIsiPad)
apo.tmp.bIsiPad = true;
if(apo.tmp.bIsiPad && $.CF.compareStrings(apo.setting.layout, "popup"))
apo.setting.layout = "popover";
}
else if($.CF.compareStrings(apo.setting.theme, "Windows"))
{
apo.setting.layout = "popup";
apo.setting.visibleRows = 5;
apo.setting.rowHeight = 100;
if(!$.CF.isValid(options.viewSections))
{
apo.setting.viewSections = {
header: ["headerTitle"],
contentTop: [],
contentMiddle: [],
contentBottom: [],
footer: ["setButton", "cancelButton"]
};
}
if($.CF.isValid(options.setButton))
apo.tmp.bModified.set = true;
if($.CF.isValid(options.cancelButton))
apo.tmp.bModified.cancel = true;
if($.CF.isValid(options.nowButton))
apo.tmp.bModified.now = true;
if($.CF.isValid(options.clearButton))
apo.tmp.bModified.clear = true;
}
apo.tmp.iExt = Math.floor(apo.setting.visibleRows / 2);
apo.tmp.sDir = apo.setting.rtl ? "rtl" : "ltr";
$.AnyPicker.extra.dToday = apo._getCurrentDate();
if(apo.tmp.selectedDate === null)
apo.tmp.selectedDate = $.AnyPicker.extra.dToday;
if(apo.setting.maxYear === 0)
apo.setting.maxYear = $.AnyPicker.extra.dToday.getFullYear();
if($.CF.isValid(apo.setting.components) && apo.tmp.numOfComp === 0)
apo.tmp.numOfComp = apo.setting.components.length;
$.AnyPicker.extra.sStartEv = ($.AnyPicker.extra.bHasPointer ? ($.AnyPicker.extra.bHasIE10Pointer ? 'MSPointerDown' : 'pointerdown') : ($.AnyPicker.extra.bIsTouchDevice ? 'touchstart' : 'mousedown touchstart'));
$.AnyPicker.extra.sMoveEv = ($.AnyPicker.extra.bHasPointer ? ($.AnyPicker.extra.bHasIE10Pointer ? 'MSPointerMove' : 'pointermove') : ($.AnyPicker.extra.bIsTouchDevice ? 'touchmove' : 'mousemove touchmove'));
$.AnyPicker.extra.sEndEv = ($.AnyPicker.extra.bHasPointer ? ($.AnyPicker.extra.bHasIE10Pointer ? 'MSPointerUp' : 'pointerup') : ($.AnyPicker.extra.bIsTouchDevice ? 'touchend' : 'mouseup touchend'));
$.AnyPicker.extra.sLeaveEv = ($.AnyPicker.extra.bHasPointer ? ($.AnyPicker.extra.bHasIE10Pointer ? 'MSPointerLeave' : 'pointerleave') : ($.AnyPicker.extra.bIsTouchDevice ? null : 'mouseleave'));
$.AnyPicker.extra.sCancelEv = ($.AnyPicker.extra.bHasPointer ? ($.AnyPicker.extra.bHasIE10Pointer ? 'MSPointerCancel' : 'pointercancel') : null);
$.AnyPicker.extra.sOutEv = ($.AnyPicker.extra.bHasPointer ? ($.AnyPicker.extra.bHasIE10Pointer ? 'MSPointerOut' : 'pointerout') : null);
}
AnyPicker.prototype = {
init: function()
{
var apo = this;
if($.CF.isValid(apo.elem))
{
apo.tmp.sElemTag = $(apo.elem).prop("tagName").toLowerCase() ;
if(apo.tmp.sElemTag === "input")
apo.tmp.oElemValid.bIsInput = true;
else if(apo.tmp.sElemTag === "ul" || apo.tmp.sElemTag === "ol" || apo.tmp.sElemTag === "dl")
apo.tmp.oElemValid.bIsListItem = true;
else if(apo.tmp.sElemTag === "select")
apo.tmp.oElemValid.bIsSelect = true;
}
if($.CF.isValid(apo.setting.inputElement))
{
apo.tmp.sInputElemTag = $(apo.setting.inputElement).prop("tagName").toLowerCase();
if(apo.tmp.sInputElemTag === "input")
apo.tmp.oInputElemValid.bIsInput = true;
else if(apo.tmp.sInputElemTag === "ul" || apo.tmp.sInputElemTag === "ol" || apo.tmp.sInputElemTag === "dl")
apo.tmp.oInputElemValid.bIsListItem = true;
else if(apo.tmp.sInputElemTag === "select")
apo.tmp.oInputElemValid.bIsSelect = true;
}
else if($.CF.isValid(apo.elem))
{
apo.setting.inputElement = apo.elem;
apo.tmp.sInputElemTag = apo.tmp.sElemTag;
apo.tmp.oInputElemValid = apo.tmp.oElemValid;
}
if($.CF.compareStrings(apo.setting.mode, "select"))
{
apo.__setComponentsOfSelect();
}
else if($.CF.compareStrings(apo.setting.mode, "datetime"))
{
apo.__setComponentsOfDateTimePicker();
}
if(apo.tmp.sInputElemTag !== "" && !(apo.tmp.oInputElemValid.bIsListItem || apo.tmp.oInputElemValid.bIsSelect))
{
var $oInput = $(apo.setting.inputElement);
if(apo.tmp.oInputElemValid.bIsInput)
{
$oInput.off("focus." + apo.setting.timestamp);
$oInput.on("focus." + apo.setting.timestamp, {"apo": apo}, apo._inputElementClicked);
$oInput.on("blur." + apo.setting.timestamp, function(e)
{
if($.AnyPicker.tempDefaults.tabKey)
apo.showOrHidePicker();
apo.tmp.prevActive = null;
});
$oInput.on("keydown." + apo.setting.timestamp, function(e)
{
if((e.keyCode ? e.keyCode : e.which) === "9")
$.AnyPicker.tempDefaults.tabKey = true;
});
}
else
{
$oInput.off("click." + apo.setting.timestamp);
$oInput.on("click." + apo.setting.timestamp, {"apo": apo}, apo._inputElementClicked);
}
}
if($.CF.isValid(apo.setting.onInit))
apo.setting.onInit.call(apo);
},
_inputElementClicked: function(e)
{
e.stopPropagation();
e.preventDefault();
var apo = e.data.apo;
if(document.activeElement === apo.tmp.prevActive && document.activeElement === apo.setting.inputElement)
return;
apo.tmp.prevActive = document.activeElement;
if(apo.tmp.sInputElemTag !== "" && !(apo.tmp.oInputElemValid.bIsListItem || apo.tmp.oInputElemValid.bIsSelect))
{
var $oInput = $(apo.setting.inputElement), sElemValue;
if(apo.tmp.oInputElemValid.bIsInput)
sElemValue = $oInput.val();
else
{
var sDataVal = $oInput.attr("data-val");
if($.CF.isValid(sDataVal))
sElemValue = sDataVal;
else
sElemValue = $oInput.text();
}
if(!$.AnyPicker.tempDefaults.tabKey)
{
apo.showOrHidePicker(sElemValue);
}
else
{
$.AnyPicker.tempDefaults.tabKey = false;
setTimeout(function()
{
apo.showOrHidePicker(sElemValue);
}, 500);
}
}
else
1;
},
showOrHidePicker: function(sElemValue)
{
var apo = this;
var iTempIndex, sLabel, sValue,
sArrValues = [], oArrSelectedValues = [];
if(sElemValue !== undefined && sElemValue !== null)
{
if($.CF.isValid(apo.setting.parseInput))
{
if($.CF.compareStrings(apo.setting.mode, "datetime"))
{
apo.setting.selectedDate = apo.setting.parseInput.call(apo, sElemValue, apo.tmp.numOfComp);
}
else if($.CF.compareStrings(apo.setting.mode, "select"))
{
sArrValues = apo.setting.parseInput.call(apo, sElemValue, apo.tmp.numOfComp);
for(iTempIndex = 0; iTempIndex < sArrValues.length; iTempIndex++)
{
sLabel = sArrValues[iTempIndex];
sValue = apo.__getDataSourceValueFromLabel(sLabel, iTempIndex, true);
oArrSelectedValues.push(
{
component: iTempIndex,
val: sValue,
label: sLabel
});
}
apo.tmp.selectedValues.values = oArrSelectedValues;
}
}
else
{
if($.CF.compareStrings(apo.setting.mode, "datetime"))
{
apo.setting.selectedDate = sElemValue;
}
else if($.CF.compareStrings(apo.setting.mode, "select"))
{
1;
if(sElemValue !== "")
{
sArrValues = []; oArrSelectedValues = [];
if(apo.tmp.numOfComp > 1)
sArrValues = $(apo.elem).data('apo-selected');
else
sArrValues.push(sElemValue);
for(iTempIndex = 0; iTempIndex < sArrValues.length; iTempIndex++)
{
sLabel = sArrValues[iTempIndex];
sValue = apo.__getDataSourceValueFromLabel(sLabel, iTempIndex, true);
oArrSelectedValues.push(
{
component: iTempIndex,
val: sValue,
label: sLabel
});
}
}
else
{
for(iTempIndex = 0; iTempIndex < apo.tmp.numOfComp; iTempIndex++)
{
var oCompData = apo.setting.dataSource[iTempIndex].data;
sLabel = oCompData[0].label;
sValue = oCompData[0].val;
oArrSelectedValues.push(
{
component: iTempIndex,
val: sValue,
label: sLabel
});
}
}
apo.tmp.selectedValues.values = oArrSelectedValues;
}
}
}
1;
if($(apo.tmp.overlaySelector).length > 0)
apo._hidePicker();
else
{
if(!$.CF.isValid(apo.setting.onBeforeShowPicker))
apo._showPicker();
else
{
if(apo.setting.onBeforeShowPicker.call(apo))
apo._showPicker();
}
}
},
_showPicker: function()
{
var apo = this;
apo.tmp.sOrientation = apo._getDeviceOrientation();
var sTemp = "",
bAddSectionHeader = (($.CF.compareStrings(apo.setting.layout, "popup") || $.CF.compareStrings(apo.setting.layout, "popover")) && apo.setting.viewSections.header.length > 0),
bAddSectionFooter = (($.CF.compareStrings(apo.setting.layout, "popup") || $.CF.compareStrings(apo.setting.layout, "popover")) && apo.setting.viewSections.footer.length > 0),
bAddSectionFooterFixedTop = ($.CF.compareStrings(apo.setting.layout, "fixed") && $.CF.compareStrings(apo.setting.vAlign, "bottom") && apo.setting.viewSections.footer.length > 0),
bAddSectionFooterFixedBottom = ($.CF.compareStrings(apo.setting.layout, "fixed") && $.CF.compareStrings(apo.setting.vAlign, "top") && apo.setting.viewSections.footer.length > 0),
bIsDateTimeField = ($.CF.compareStrings(apo.setting.mode, "datetime") && apo.tmp.sDateTimeMode === "datetime"),
sLayout = "ap-layout-" + apo.setting.layout,
sTheme = "ap-theme-" + apo.setting.theme.toLowerCase(),
sDir = "ap-dir-" + apo.tmp.sDir;
if($.CF.compareStrings(apo.setting.layout, "popover"))
{
var iBodyScrollTop = $("body").scrollTop(),
iWinHeight = $(window).height(),
iMinTop = iBodyScrollTop,
iMaxTop = iBodyScrollTop + iWinHeight,
iPopupHeight = $.CF.compareStrings(apo.setting.rowsNavigation, "scroller") ? 300 : 350,
iTooltipTop = $(apo.setting.inputElement).offset().top - iPopupHeight,
bTooltipTop = (iTooltipTop < iMinTop) ? false : true,
iTooltipBottom = $(apo.setting.inputElement).offset().top + $(apo.setting.inputElement).height() + iPopupHeight,
bTooltipBottom = (iTooltipBottom > iMaxTop) ? false : true;
apo.tmp.sTooltip = bTooltipBottom ? "bottom" : bTooltipTop ? "top" : apo.setting.rtl ? "right" : "left";
}
sTemp += "
";
sTemp += "
";
sTemp += "
";
if($.CF.isValid(apo.tmp.sTooltip))
sTemp += "
";
if(bAddSectionHeader)
{
sTemp += "";
}
if(bAddSectionFooterFixedTop)
{
sTemp += "";
}
sTemp += "
";
if(apo.setting.viewSections.contentTop.length > 0)
sTemp += "
";
if(! apo.setting.viewSections.contentMiddle || apo.setting.viewSections.contentMiddle.length == 0) {
if(bIsDateTimeField && !$.CF.compareStrings(apo.setting.theme, "Windows"))
{
sTemp += "
";
if(apo.setting.rtl)
{
sTemp += "" + apo.setting.i18n.timeSwitch + "";
sTemp += "" + apo.setting.i18n.dateSwitch + "";
}
else
{
sTemp += "" + apo.setting.i18n.dateSwitch + "";
sTemp += "" + apo.setting.i18n.timeSwitch + "";
}
sTemp += "
";
apo.tmp.sDateTimeTab = "date";
}
sTemp += "
";
sTemp += "
";
sTemp += "
";
} else {
sTemp += "
";
sTemp += "
";
}
if(apo.setting.viewSections.contentBottom.length > 0)
sTemp += "
";
sTemp += "
";
if(bAddSectionFooter || bAddSectionFooterFixedBottom)
{
sTemp += "";
}
sTemp += "
";
sTemp += "
";
sTemp += "
";
$(apo.setting.parent).append(sTemp);
if(apo.setting.layout === "popover" || apo.setting.layout === "popup")
$("body").addClass("noscroll");
{
$(apo.tmp.overlaySelector).show();
}
apo._adjustPicker();
apo._addViewSectionComponents();
apo.__initComponents();
apo._adjustPicker();
apo.tmp.bIsManualDraggingAfterShow = false;
if($.CF.compareStrings(apo.setting.mode, "datetime") && apo.tmp.sDateTimeMode === "datetime")
apo._setDateTimeTabs(apo.tmp.sDateTimeTab);
if($.CF.isValid(apo.setting.onShowPicker))
apo.setting.onShowPicker.call(apo);
},
_hidePicker: function()
{
var apo = this;
if($(apo.tmp.overlaySelector).length > 0)
{
if($.CF.isValid(apo.setting.onBeforeHidePicker))
apo.setting.onBeforeHidePicker.call(apo);
{
$(apo.tmp.overlaySelector).hide();
}
$(apo.tmp.overlaySelector).remove();
if(apo.setting.layout === "popover" || apo.setting.layout === "popup")
$("body").removeClass("noscroll");
apo.tmp.prevActive = null;
if($.CF.isValid(apo.setting.onHidePicker))
apo.setting.onHidePicker.call(apo);
}
},
_adjustPicker: function(iNumOfComp)
{
var apo = this;
if($.CF.compareStrings(apo.setting.theme, "Windows"))
{
iNumOfComp = $.CF.isValid(iNumOfComp) ? parseInt(iNumOfComp) : apo.tmp.numOfComp;
var iAvailableHeight = $(window).height(),
iAvailableWidth = $(window).width(),
bIsPortrait = apo._getDeviceOrientation() === "portrait",
iPadding = 10, iMaxWidth;
if(bIsPortrait)
apo.setting.visibleRows = 5;
else
apo.setting.visibleRows = 3;
if(!apo.setting.componentsCoverFullWidth)
{
if(!bIsPortrait)
{
iRowWidth = Math.floor(iAvailableHeight / 3);
iMaxWidth = iRowWidth * iNumOfComp;
iMaxWidth = (iAvailableHeight > iMaxWidth) ? iMaxWidth : iAvailableHeight;
iPadding = (iAvailableWidth - iMaxWidth) / 2;
iAvailableWidth = iAvailableHeight;
}
else
{
iRowWidth = Math.floor(iAvailableWidth / 3);
iMaxWidth = iRowWidth * iNumOfComp;
iPadding = (iAvailableWidth - iMaxWidth) / 2;
}
$(apo.tmp.overlaySelector).find(".ap-content-middle").css({"padding-left": iPadding, "padding-right": iPadding});
}
iAvailableWidth -= 16;
var iRowHeight = Math.floor(iAvailableHeight / apo.setting.visibleRows),
iRowWidth = Math.floor(iAvailableWidth / 3);
if(!apo.setting.componentsCoverFullWidth)
apo.setting.rowHeight = iRowWidth;
else
{
iRowHeight = Math.floor(iAvailableHeight / apo.setting.visibleRows);
apo.setting.rowHeight = iRowHeight;
}
var iCalculatedHeight = apo.setting.rowHeight * apo.setting.visibleRows,
iContTop = (iAvailableHeight - iCalculatedHeight) / 2,
iContentTop, iContentBottom;
$(apo.tmp.overlaySelector).find(".ap-content").css({"top": iContTop});
iContTop += 2;
iContentTop = $(apo.tmp.overlaySelector).find(".ap-header").height() - iContTop;
$(apo.tmp.overlaySelector).find(".ap-content-top").css({"top": iContentTop});
iContTop -= 2;
iContentBottom = $(apo.tmp.overlaySelector).find(".ap-footer").height() + iContTop;
$(apo.tmp.overlaySelector).find(".ap-content-bottom").css({"bottom": iContentBottom});
apo.tmp.iExt = Math.floor(apo.setting.visibleRows / 2);
}
var $oRelativeTo = $((apo.setting.relativeTo === null) ? apo.setting.inputElement : apo.setting.relativeTo),
iTop = $oRelativeTo.offset().top,
iLeft = $oRelativeTo.offset().left,
iWidth = $oRelativeTo.outerWidth();
if($.CF.compareStrings(apo.setting.layout, "popover"))
{
var iBodyScrollTop = $("body").scrollTop(),
iWinWidth = $(window).outerWidth(),
iWinHeight = $(window).outerHeight(),
iMinTop = iBodyScrollTop,
iMaxTop = iBodyScrollTop + iWinHeight,
iInputTop = $(apo.setting.inputElement).offset().top - iBodyScrollTop,
iInputHeight = $(apo.setting.inputElement).outerHeight(),
iInputBottom = iInputTop + iInputHeight,
iInputLeft = $(apo.setting.inputElement).offset().left,
iInputWidth = $(apo.setting.inputElement).outerWidth(),
iInputRight = iInputLeft + iInputWidth,
iPopupWidth = $(apo.tmp.overlaySelector).find(".ap-cont").outerWidth(),
iPopupHeight = $(apo.tmp.overlaySelector).find(".ap-cont").outerHeight(),
iPopupTop, iPopupLeft, iPopupBottom,
iTooltipHeight = 10,
iTooltipWidth = 10;
if(apo.tmp.sTooltip === "top")
{
iPopupTop = iInputTop - iPopupHeight - iTooltipHeight;
iPopupBottom = (iPopupTop < 0) ? 5 : iPopupTop;
iPopupLeft = iInputLeft + 5;
}
else if(apo.tmp.sTooltip === "bottom")
{
iPopupTop = iInputBottom + iTooltipHeight;
iPopupLeft = iInputLeft + 5;
if(apo.tmp.sDir === "rtl")
iPopupLeft = iInputRight - iPopupWidth;
}
else if(apo.tmp.sTooltip === "left")
{
iPopupTop = iInputTop - ((iPopupHeight / 2) - (iInputHeight / 2));
iPopupTop = (iPopupTop < iMinTop) ? 5 : iPopupTop;
iPopupLeft = iInputLeft + iInputWidth + 5;
}
else if(apo.tmp.sTooltip === "right")
{
iPopupTop = iInputTop - ((iPopupHeight / 2) - (iInputHeight / 2));
iPopupTop = (iPopupTop < iMinTop) ? 5 : iPopupTop;
iPopupLeft = iInputLeft - (iPopupWidth + iTooltipWidth);
}
$(apo.tmp.overlaySelector).find(".ap-cont").css({"position": "absolute", "left": iPopupLeft, "top": iPopupTop});
}
else if($.CF.compareStrings(apo.setting.layout, "inline"))
{
$(apo.tmp.overlaySelector).find(".ap-cont").css({"position": "absolute", "width": iWidth, "left": iLeft, "top": iTop});
}
else if($.CF.compareStrings(apo.setting.layout, "relative"))
{
$oRelativeTo = $((apo.setting.relativeTo === null) ? apo.setting.inputElement : apo.setting.relativeTo);
var iDocLeft = 0,
iDocRight = $(document).outerWidth(),
iContWidth = $(".ap-cont").outerWidth(),
iRelElemWidth = iWidth;
iWidth = (iRelElemWidth > iContWidth) ? iContWidth : iRelElemWidth;
iTop = iTop + $oRelativeTo.outerHeight();
if($.CF.compareStrings(apo.setting.hAlign, "center"))
iLeft = (iRelElemWidth > iWidth) ? (iLeft + (iWidth/2)) : ((iRelElemWidth === iWidth) ? iLeft : (iLeft - (iWidth/2)));
else if($.CF.compareStrings(apo.setting.hAlign, "right"))
iLeft = iLeft - iWidth;
iLeft = (iLeft < iDocLeft) ? (iDocLeft + 5) : iLeft;
var iRight = iLeft + iWidth;
if(iRight > iDocRight)
{
if(iLeft > (iDocLeft + 5))
{
iLeft = iLeft - (iRight - (iDocRight + 5));
iLeft = (iLeft < iDocLeft) ? (iDocLeft + 5) : iLeft;
iRight = iLeft + iWidth;
iWidth = (iRight > iDocRight) ? (iDocRight - 10) : iWidth;
}
else
{
iWidth = iDocRight - 10;
}
}
$(apo.tmp.overlaySelector).find(".ap-cont").css({"position": "absolute", "min-width": iWidth, "left": iLeft, "top": iTop});
}
else if($.CF.compareStrings(apo.setting.layout, "fixed"))
{
if($.CF.compareStrings(apo.setting.vAlign, "top"))
$(apo.tmp.overlaySelector + " .ap-cont").css({"top": -1000});
else if($.CF.compareStrings(apo.setting.vAlign, "bottom"))
$(apo.tmp.overlaySelector + " .ap-cont").css({"bottom": -1000});
}
},
_addViewSectionComponents: function()
{
var apo = this;
var iTempIndex1, iTempIndex2,
bWindowsTheme = $.CF.compareStrings(apo.setting.theme, "Windows");
for(iTempIndex1 = 0; iTempIndex1 < $.AnyPicker.extra.sArrViewSections.length; iTempIndex1++)
{
var sViewSection = $.AnyPicker.extra.sArrViewSections[iTempIndex1];
var sArrComponents = apo.setting.viewSections[sViewSection];
if(sArrComponents && sArrComponents.length > 0)
{
for(iTempIndex2 = 0; iTempIndex2 < sArrComponents.length; iTempIndex2++)
{
var sComp = sArrComponents[iTempIndex2],
oComp = apo.setting[sComp] || null,
$oCompElem = $(oComp.markup);
if ($oCompElem.length == 0) {
1;
}
if(bWindowsTheme && $.CF.isValid(oComp.markupContentWindows))
$oCompElem.html(oComp.markupContentWindows);
if(oComp !== undefined && oComp !== null && oComp !== "")
{
if($.CF.compareStrings(sViewSection, "header"))
{
$(apo.tmp.overlaySelector).find(".ap-header").append($oCompElem);
if($.CF.compareStrings(oComp.type, "Button") && $.CF.compareDataType(oComp.action, "function"))
$oCompElem.on("click." + apo.setting.timestamp, {"apo": apo}, oComp.action);
}
else if($.CF.compareStrings(sViewSection, "contentTop"))
{
$(apo.tmp.overlaySelector).find(".ap-content-top").append($oCompElem);
if($.CF.compareStrings(oComp.type, "Button") && $.CF.compareDataType(oComp.action, "function"))
$oCompElem.on("click." + apo.setting.timestamp, {"apo": apo}, oComp.action);
}
else if($.CF.compareStrings(sViewSection, "contentMiddle"))
{
$(apo.tmp.overlaySelector).find(".ap-content-middle").append($oCompElem);
if($.CF.compareStrings(oComp.type, "Button") && $.CF.compareDataType(oComp.action, "function"))
$oCompElem.on("click." + apo.setting.timestamp, {"apo": apo}, oComp.action);
}
else if($.CF.compareStrings(sViewSection, "contentBottom"))
{
$(apo.tmp.overlaySelector).find(".ap-content-bottom").append($oCompElem);
if($.CF.compareStrings(oComp.type, "Button") && $.CF.compareDataType(oComp.action, "function"))
$oCompElem.on("click." + apo.setting.timestamp, {"apo": apo}, oComp.action);
}
else if($.CF.compareStrings(sViewSection, "footer"))
{
var $oeButtonCont = $(apo.tmp.overlaySelector).find(".ap-button-cont");
if($oeButtonCont.length > 0)
$oeButtonCont.append($oCompElem);
else
$(apo.tmp.overlaySelector).find(".ap-footer").append($oCompElem);
if($.CF.compareStrings(oComp.type, "Button") && $.CF.compareDataType(oComp.action, "function"))
$oCompElem.on("click." + apo.setting.timestamp, {"apo": apo}, oComp.action);
}
if($.CF.compareStrings(sComp, "headerTitle") && $.CF.compareStrings(oComp.contentBehaviour, "Static"))
$(apo.tmp.overlaySelector).find(".ap-header__title").text(apo.setting.i18n.headerTitle);
if($.CF.compareStrings(sComp, "setButton"))
{
if(!bWindowsTheme || (bWindowsTheme && apo.tmp.bModified.set))
$oCompElem.text(apo.setting.i18n.setButton);
else if(bWindowsTheme && !apo.tmp.bModified.set)
$oCompElem.find(".ap-button-text").text(apo.setting.i18n.setButton);
}
else if($.CF.compareStrings(sComp, "clearButton"))
{
if(!bWindowsTheme || (bWindowsTheme && apo.tmp.bModified.clear))
$oCompElem.text(apo.setting.i18n.clearButton);
else if(bWindowsTheme && !apo.tmp.bModified.clear)
$oCompElem.find(".ap-button-text").text(apo.setting.i18n.clearButton);
}
else if($.CF.compareStrings(sComp, "nowButton"))
{
if(!bWindowsTheme || (bWindowsTheme && apo.tmp.bModified.now))
$oCompElem.text(apo.setting.i18n.nowButton);
else if(bWindowsTheme && !apo.tmp.bModified.now)
$oCompElem.find(".ap-button-text").text(apo.setting.i18n.nowButton);
}
else if($.CF.compareStrings(sComp, "cancelButton"))
{
if(!bWindowsTheme || (bWindowsTheme && apo.tmp.bModified.cancel))
$oCompElem.text(apo.setting.i18n.cancelButton);
else if(bWindowsTheme && !apo.tmp.bModified.cancel)
$oCompElem.find(".ap-button-text").text(apo.setting.i18n.cancelButton);
}
if($.CF.compareStrings(oComp.type, "Button"))
{
if(!$.CF.compareDataType(oComp.action, "function"))
{
if($.CF.compareStrings(sComp, "setButton"))
$oCompElem.on("click." + apo.setting.timestamp, {"apo": apo}, apo._setButtonAction);
else if($.CF.compareStrings(sComp, "clearButton"))
$oCompElem.on("click." + apo.setting.timestamp, {"apo": apo}, apo._clearButtonAction);
else if($.CF.compareStrings(sComp, "nowButton"))
$oCompElem.on("click." + apo.setting.timestamp, {"apo": apo}, apo._nowButtonAction);
else if($.CF.compareStrings(sComp, "cancelButton"))
$oCompElem.on("click." + apo.setting.timestamp, {"apo": apo}, apo._cancelButtonAction);
}
}
}
}
}
}
if(bWindowsTheme)
{
$(".ap-button-icon, .ap-button-text").click(function(e)
{
$(this).closest(".ap-button").trigger("click");
});
}
$(apo.tmp.overlaySelector).find(".ap-button")
.on("mousedown touchstart", function(e)
{
$(this).addClass("ap-button-active");
})
.on("mouseup touchend", function(e)
{
$(this).removeClass("ap-button-active");
});
$(window).on("blur." + apo.setting.timestamp, function(e)
{
apo.tmp.prevActive = document.activeElement;
});
$(apo.tmp.overlaySelector).off("click." + apo.setting.timestamp);
setTimeout(function()
{
$(apo.tmp.overlaySelector).on("click." + apo.setting.timestamp, function(e)
{
if (! $(document.activeElement).is(':input')) {
var iDTDiff = Date.now() - apo.tmp.iCompDragStart;
if(!apo.setting.bIsTouched && iDTDiff > 1000)
apo._hidePicker();
}
});
}, 300);
$(apo.tmp.overlaySelector).find(".ap-cont, .ap-cont *").on("click." + apo.setting.timestamp, function(e)
{
e.stopPropagation();
});
$(apo.tmp.overlaySelector).find(".ap-content-switch-date").click(function(e)
{
e.stopPropagation();
apo._setDateTimeTabs("date");
});
$(apo.tmp.overlaySelector).find(".ap-content-switch-time").click(function(e)
{
e.stopPropagation();
apo._setDateTimeTabs("time");
});
$(window).resize(function()
{
apo._adjustOnOrientationChange();
});
},
_setDateTimeTabs: function(sSelectedTab)
{
var apo = this;
var sDisabledTab = (sSelectedTab === "date") ? "time" : "date";
apo.tmp.sDateTimeTab = sSelectedTab;
$(apo.tmp.overlaySelector).find(".ap-content-switch-tab").removeClass("ap-content-switch-selected");
$(apo.tmp.overlaySelector).find(".ap-content-switch-" + sSelectedTab).addClass("ap-content-switch-selected");
var $oeDisabledTabs = $(apo.tmp.overlaySelector).find("[data-type='" + sDisabledTab + "']"),
$oeSelectedTabs = $(apo.tmp.overlaySelector).find("[data-type='" + sSelectedTab + "']");
$oeDisabledTabs.css("display", "none");
$oeSelectedTabs.css("display", "table-cell");
if($.CF.compareStrings(apo.setting.theme, "Windows"))
apo._adjustPicker($oeSelectedTabs.length);
},
_setOutput: function(bSetValue = true)
{
var apo = this;
var sOutput = "";
if($.CF.isValid(apo.setting.formatOutput))
{
sOutput = apo.setting.formatOutput.call(apo, apo.tmp.selectedValues, apo.tmp.bIsManualDraggingAfterShow);
}
else
{
if($.CF.compareStrings(apo.setting.mode, "select"))
{
1;
var selected = [];
for(var iCompIndex = 0; iCompIndex < apo.tmp.numOfComp; iCompIndex++)
{
if(iCompIndex !== 0)
sOutput += " ";
if (String(apo.tmp.selectedValues.values[iCompIndex].val) != 'undefined')
sOutput += apo.tmp.selectedValues.values[iCompIndex].val;
else
sOutput += apo.tmp.selectedValues.values[iCompIndex].label;
selected.push(apo.tmp.selectedValues.values[iCompIndex].label);
}
$(apo.elem).data('apo-selected', selected.length > 1 ? selected : selected[0]);
}
else if($.CF.compareStrings(apo.setting.mode, "datetime"))
{
sOutput = apo.formatOutputDates(apo.tmp.selectedValues.date, apo.tmp.bIsManualDraggingAfterShow);
}
}
if (bSetValue) {
if(apo.tmp.oElemValid.bIsListItem || apo.tmp.oElemValid.bIsSelect)
{
var sChild, $oChildElem;
if(apo.tmp.oElemValid.bIsListItem)
sChild = "li";
else if(apo.tmp.oElemValid.bIsSelect)
sChild = "option";
$(apo.elem).find(sChild).each(function()
{
$oChildElem = $(this);
var sValue = $oChildElem.attr("value") || $oChildElem.data("value") || $oChildElem.text();
if(apo.tmp.selectedValues.values[0].val === sValue)
{
if(apo.tmp.oElemValid.bIsSelect)
$oChildElem.attr("selected", true);
else if(apo.tmp.oElemValid.bIsListItem)
$oChildElem.attr("data-selected", true);
}
else
{
if(apo.tmp.oElemValid.bIsSelect)
$oChildElem.attr("selected", false);
else if(apo.tmp.oElemValid.bIsListItem)
$oChildElem.attr("data-selected", false);
}
});
}
if($.CF.isValid(apo.setting.setOutput))
apo.setting.setOutput.call(apo, sOutput, apo.tmp.selectedValues, apo.tmp.bIsManualDraggingAfterShow);
else
{
if(apo.setting.mode != 'custom' && apo.setting.inputElement !== null)
{
var $oInput = $(apo.setting.inputElement);
if(apo.tmp.oInputElemValid.bIsInput)
{
$oInput.val(sOutput);
}
else
{
$oInput.text(sOutput);
}
}
if($.CF.isValid(apo.setting.onSetOutput))
apo.setting.onSetOutput.call(apo, sOutput, apo.tmp.selectedValues, apo.tmp.bIsManualDraggingAfterShow);
}
}
return sOutput;
},
_clearOutput: function()
{
var apo = this;
var $oInput = $(apo.setting.inputElement);
if(apo.tmp.oInputElemValid.bIsInput)
$oInput.val("");
else
$oInput.text("");
},
_setButtonAction: function(e)
{
var apo = e.data.apo;
apo._setOutput();
apo.showOrHidePicker();
if($.CF.isValid(apo.setting.buttonClicked))
apo.setting.buttonClicked.call(apo, "set");
},
_clearButtonAction: function(e)
{
var apo = e.data.apo;
apo.tmp.selectedDate = $.AnyPicker.extra.dToday;
if(apo.tmp.sInputElemTag !== "" && !(apo.tmp.oInputElemValid.bIsListItem || apo.tmp.oInputElemValid.bIsSelect))
{
var $oInput = $(apo.setting.inputElement);
if(apo.tmp.oInputElemValid.bIsInput)
$oInput.val("");
else
$oInput.text("");
}
apo.showOrHidePicker();
if($.CF.isValid(apo.setting.buttonClicked))
apo.setting.buttonClicked.call(apo, "clear");
},
_nowButtonAction: function(e)
{
var apo = e.data.apo;
if($.CF.compareStrings(apo.setting.mode, "datetime"))
{
apo.tmp.selectedDate = apo._getCurrentDate();
apo._setSelectedAndInvalidValuesForRows();
}
if($.CF.isValid(apo.setting.buttonClicked))
apo.setting.buttonClicked.call(apo, "now");
},
_cancelButtonAction: function(e)
{
var apo = e.data.apo;
apo.showOrHidePicker();
if($.CF.isValid(apo.setting.buttonClicked))
apo.setting.buttonClicked.call(apo, "cancel");
},
_getDeviceOrientation: function()
{
var $window = $(window);
if($window.width() > $window.height())
return "landscape";
else
return "portrait";
},
_adjustOnOrientationChange: function()
{
var apo = this;
var sCurrentOrientation = apo._getDeviceOrientation();
if(sCurrentOrientation !== apo.tmp.sOrientation)
{
apo.tmp.sOrientation = sCurrentOrientation;
apo._adjustPicker();
apo.reloadAllComponents();
}
}
};
$.AnyPicker = $.extend(true, $.AnyPicker, {
defaults:
{
components: null,
dataSource: null,
showComponentLabel: false,
componentsCoverFullWidth: false,
visibleRows: 3,
maxRows: 0,
rowHeight: 50,
rowsNavigation: "scroller",
rowView: null,
onChange: null
},
tempDefaults:
{
numOfComp: 0,
selectedValues: {},
bIsManualDraggingAfterShow: true,
bIsManualDragging: false,
bIsTouched: false,
iTS: 0,
iPos: 0,
iPosPrev: 0,
iPosStop: 0,
iOffset: 0,
iOffsetPrev: 0,
iVelocity: 0,
iAmplitude: 0,
oVelocityTicker: null,
oScrollTicker: null,
iMinTopPos: 0,
iMaxTopPos: 0,
oScrollingComp: null,
iScrollingComp: -1,
iTmConst: 100,
bEnd: false
},
extra:
{
sArrRowsNavigation: ["scroller+buttons", "scroller", "buttons"]
}
});
AnyPicker.prototype = $.extend(AnyPicker.prototype, {
__initComponents: function()
{
var apo = this;
if(!apo.tmp.bFirst)
{
if($.CF.compareStrings(apo.setting.mode, "select"))
apo.__setComponentsOfSelect();
else if($.CF.compareStrings(apo.setting.mode, "datetime"))
apo.__setComponentsOfDateTimePicker();
}
else
apo.tmp.bFirst = false;
var iNumOfComponents = apo.tmp.numOfComp;
if (! iNumOfComponents && apo.setting.components) {
iNumOfComponents = apo.setting.components.length;
}
if(iNumOfComponents > 0)
{
if(apo.setting.components.length > 0)
apo.reloadAllComponents();
else
1;
}
},
reloadAllComponents: function()
{
var apo = this;
var iTempIndex;
$(apo.setting.parent).find(".ap-component-section").html("");
for(iTempIndex = 0; iTempIndex < apo.tmp.numOfComp; iTempIndex++)
{
apo.reloadComponent(iTempIndex, false);
}
apo.adjustComponents();
apo.setSelectedAndInvalidValuesForRows(true, true);
},
reloadComponent: function(iComp, bSingleLoad, bInstant = false)
{
var apo = this;
var sTemp = "";
var iNumRows, iRowIndex,
oSData = apo.setting.dataSource[iComp].data,
bIsSelected = false, sClassSelectedRow,
sCompId = "ap-component-" + iComp,
$oeComp = $(apo.setting.parent).find("#" + sCompId),
oComp = apo.setting.components[iComp],
sType = $.CF.isValid(oComp.type) ? oComp.type : oComp.label,
sWidth = $.CF.isValid(oComp.width) ? ("width: " + oComp.width) : "",
sAlign = apo.setting.rtl ? ($.CF.compareStrings(oComp.textAlign, "left") ? "right" : $.CF.compareStrings(oComp.textAlign, "right") ? "left" : "") : oComp.textAlign,
sTextAlign = $.CF.isValid(sAlign) ? ("text-align: " + sAlign) : "";
if($oeComp.length === 0)
sTemp += "";
if(!$.CF.compareStrings(apo.setting.theme, "Windows"))
{
if(apo.setting.showComponentLabel)
sTemp += "
" + oComp.label + "
";
}
if($.CF.compareStrings(apo.setting.rowsNavigation, "scroller+buttons") || $.CF.compareStrings(apo.setting.rowsNavigation, "buttons"))
sTemp += "
";
sTemp += "
";
sTemp += "
";
for(iRowIndex = 0; iRowIndex < apo.tmp.iExt; iRowIndex++)
{
sTemp += "
";
}
var selected = $(apo.elem).data('apo-selected');
1;
for(iRowIndex = 0; iRowIndex < oSData.length; iRowIndex++)
{
if (selected && selected.length > 0) {
if (selected[iComp] && selected[iComp] == oSData[iRowIndex].label) {
1;
bIsSelected = true;
} else {
bIsSelected = false;
}
} else {
bIsSelected = ($.CF.isValid(oSData[iRowIndex].selected) ? oSData[iRowIndex].selected : false);
}
sClassSelectedRow = bIsSelected ? "ap-row-selected test" : "";
sTemp += "
";
if($.CF.compareStrings(apo.setting.theme, "Windows"))
{
sTemp += "
";
if(!$.CF.isValid(apo.setting.rowView))
sTemp += "
";
}
if($.CF.isValid(apo.setting.rowView))
sTemp += apo.setting.rowView.call(apo, iComp, iRowIndex, oSData[iRowIndex]);
else
sTemp += oSData[iRowIndex].label;
if($.CF.compareStrings(apo.setting.theme, "Windows") && !$.CF.isValid(apo.setting.rowView))
{
sTemp += "
";
sTemp += "
";
if(apo.setting.showComponentLabel)
sTemp += oComp.label;
sTemp += "
";
}
if($.CF.compareStrings(apo.setting.theme, "Windows"))
sTemp += "
";
sTemp += "
";
}
for(iRowIndex = 0; iRowIndex < apo.tmp.iExt; iRowIndex++)
{
sTemp += "
";
}
sTemp += "
";
sTemp += "
";
sTemp += "
";
sTemp += "
";
if($.CF.compareStrings(apo.setting.rowsNavigation, "scroller+buttons") || $.CF.compareStrings(apo.setting.rowsNavigation, "buttons"))
sTemp += "
";
if($oeComp.length === 0)
sTemp += "
";
if($oeComp.length > 0)
$oeComp.html(sTemp);
else
$(apo.setting.parent).find(".ap-component-section").append(sTemp);
apo._bindEventsToComponent(iComp);
if($oeComp.length > 0 || bSingleLoad)
apo.adjustComponents();
if(bSingleLoad)
apo.setSelectedAndInvalidValuesForRows(true, bInstant);
},
_bindEventsToComponent: function(iComp)
{
var apo = this;
var $oParent = $("#ap-component-" + iComp),
$oCompCont = $oParent.find(".ap-component-cont"),
oData =
{
component: iComp,
apo: apo
};
if($.CF.compareStrings(apo.setting.rowsNavigation, "scroller+buttons") || $.CF.compareStrings(apo.setting.rowsNavigation, "scroller"))
{
$oCompCont.on($.AnyPicker.extra.sStartEv + "." + apo.setting.timestamp, oData, apo._onStartDrag);
$oCompCont.on($.AnyPicker.extra.sMoveEv + "." + apo.setting.timestamp, oData, apo._onDrag);
if($.CF.isValid($.AnyPicker.extra.sEndEv))
$oCompCont.on($.AnyPicker.extra.sEndEv + "." + apo.setting.timestamp, oData, apo._onEndDrag);
if($.CF.isValid($.AnyPicker.extra.sOutEv))
$oCompCont.on($.AnyPicker.extra.sOutEv + "." + apo.setting.timestamp, oData, apo._onEndDrag);
if($.AnyPicker.extra.sMouseWheel.length > 0)
{
for(var iEventIndex = 0; iEventIndex < $.AnyPicker.extra.sMouseWheel.length; iEventIndex++)
$oCompCont.on($.AnyPicker.extra.sMouseWheel[iEventIndex] + "." + apo.setting.timestamp, oData, apo._onMouseWheelScroll);
}
}
if($.CF.compareStrings(apo.setting.rowsNavigation, "scroller+buttons") || $.CF.compareStrings(apo.setting.rowsNavigation, "buttons"))
{
$oParent.find(".ap-component-plus").on("click." + apo.setting.timestamp, oData, apo._onClickButtonMinus);
$oParent.find(".ap-component-minus").on("click." + apo.setting.timestamp, oData, apo._onClickButtonPlus);
}
$oCompCont.on("keydown." + apo.setting.timestamp, oData, apo._onKeyDown);
$oCompCont.on("keyup." + apo.setting.timestamp, oData, apo._onKeyUp);
},
adjustComponents: function()
{
var apo = this;
var $overlaySelector = $(apo.tmp.overlaySelector);
$overlaySelector.find(".ap-component-cont").css({"height": (apo.setting.rowHeight * apo.setting.visibleRows)});
$overlaySelector.find(".ap-row, .ap-component-selector").css({"height": apo.setting.rowHeight, "line-height": apo.setting.rowHeight + "px"});
$overlaySelector.find(".ap-row-bg").css({"height": apo.setting.rowHeight - 8});
if(!$.CF.compareStrings(apo.setting.theme, "Windows"))
{
var iContWidth = $(".ap-cont").width(),
iContHeight = $(".ap-cont").height(),
iWinWidth = $(window).width(),
iWinHeight = $(window).height(),
iWidth = iWinWidth,
iHeight = iWinHeight,
bWidthChanged = false, bHeightChanged = false;
if(iContWidth > iWinWidth)
{
bWidthChanged = true;
iWidth = iContWidth + 20;
}
if(iContHeight > iWinHeight)
{
bHeightChanged = true;
iHeight = iContHeight + 20;
}
if(bWidthChanged || bHeightChanged)
{
$overlaySelector.css({"position": "absolute", "height": iHeight, "width": iWidth});
if($.CF.compareStrings(apo.setting.layout, "fixed"))
$(".ap-cont").css({"position": "absolute"});
}
if($.CF.compareStrings(apo.setting.layout, "relative"))
{
var $oRelativeTo = $((apo.setting.relativeTo === null) ? apo.setting.inputElement : apo.setting.relativeTo),
$oAPCont = $overlaySelector.find(".ap-cont"),
iTop = $oRelativeTo.offset().top + $oAPCont.height();
if($.CF.compareStrings(apo.setting.vAlign, "top"))
$oAPCont.css({"top": iTop});
}
}
},
_onStartDrag: function(e)
{
var apo = e.data.apo;
if(!apo.tmp.bIsManualDragging)
{
apo.tmp.bIsManualDraggingAfterShow = true;
apo.tmp.bIsManualDragging = true;
}
apo.tmp.bIsTouched = true;
apo.tmp.bEnd = false;
apo.tmp.iPos = apo._getTouchPosition(e);
apo.tmp.bFromTouchStart = true;
apo._setScrollingData(e);
if($.CF.compareStrings(apo.setting.theme, "Windows"))
{
var $oComp = $(apo.tmp.overlaySelector).find("#ap-component-" + apo.tmp.iScrollingComp);
if(apo.tmp.bIsManualDragging)
{
$(apo.tmp.overlaySelector).find(".ap-component").removeClass("ap-component-modifying");
$oComp.addClass("ap-component-modifying");
}
}
if(e.type === "mousedown")
{
$(document).on("mousemove." + apo.setting.timestamp, e.data, apo._onDrag);
$(document).on("mouseup." + apo.setting.timestamp, e.data, apo._onEndDrag);
}
e.preventDefault();
e.stopPropagation();
return false;
},
_onDrag: function(e)
{
var apo = e.data.apo;
var iPosNew, iDSDelta, iTSDelta, iTSNDelta, iDSTS, iDir, iDSTSDiff,
iTSNew = Date.now();
apo._clearScrollTicker();
if(apo.tmp.bIsTouched && (!$.AnyPicker.extra.bHasPointer || $.AnyPicker.extra.bHasPointer && (apo.tmp.bFromTouchStart || (!apo.tmp.bFromTouchStart && (iTSNew - apo.tmp.iTS > 1000)))))
{
iPosNew = apo._getTouchPosition(e);
iTSNew = Date.now();
iDSDelta = (apo.tmp.iPos - iPosNew);
iDir = iDSDelta / Math.abs(iDSDelta);
if(iDSDelta > 2 || iDSDelta < -2)
{
if($.CF.compareStrings(apo.setting.theme, "Windows"))
{
var $oComp = $(apo.tmp.overlaySelector).find("#ap-component-" + apo.tmp.iScrollingComp),
$oAllRows = $oComp.find(".ap-row");
$oAllRows.attr("aria-selected", "false");
$oAllRows.removeClass("ap-row-selected");
}
apo.tmp.iPosPrev = apo.tmp.iPos;
apo.tmp.iPos = iPosNew;
iTSDelta = iTSNew - apo.tmp.iTS;
apo.tmp.iTS = iTSNew;
iDSTS = (iDSDelta / iTSDelta);
apo.tmp.iTotalDS += iDSDelta;
iDSTSDiff = apo.tmp.iPrevDSTS - iDSTS;
if($.AnyPicker.extra.bHasPointer)
{
if($.AnyPicker.extra.bIsTouchDevice)
{
if(iDSDelta > 10 || iDSDelta < -10)
{
if($.CF.compareStrings(apo.setting.theme, "iOS"))
iDSDelta = apo.setting.visibleRows * 4 * iDSTS;
else
{
if(Math.abs(apo.tmp.iTotalDS) > 100)
{
if(iDSTS > 0.05)
{
if($.CF.compareStrings(apo.setting.theme, "Windows"))
iDSDelta = iDSDelta * iTSDelta * 5;
else
iDSDelta = iDSDelta * iTSDelta * 2;
}
else
{
if(iDir === 1)
iDSDelta = (iDir * apo.setting.rowHeight/2);
else
iDSDelta = (iDir * apo.setting.rowHeight/1.2);
}
}
else if(iDSTS > 0.06 && Math.abs(iDSTSDiff) > 0.08)
{
if($.CF.compareStrings(apo.setting.theme, "Windows"))
iDSDelta = iDSDelta * iTSDelta * 5;
else
iDSDelta = iDSDelta * iTSDelta * 2;
}
else
{
if(iDSDelta > 50 || iDSDelta < -50)
{
if($.CF.compareStrings(apo.setting.theme, "Windows"))
iDSDelta = iDSDelta * iTSDelta * 5;
else
iDSDelta = iDSDelta * iTSDelta * 2;
}
}
}
}
else
{
if(Math.abs(iDSTS) > 0.06 && Math.abs(iDSTSDiff) > 0.08)
{
if($.CF.compareStrings(apo.setting.theme, "Windows"))
iDSDelta = iDSDelta * iTSDelta * 5;
else
iDSDelta = iDSDelta * iTSDelta * 2;
}
else
{
if(iDir === 1)
iDSDelta = (iDir * apo.setting.rowHeight/2);
else
iDSDelta = (iDir * apo.setting.rowHeight/1.2);
}
}
}
else
{
if(iDSDelta < 2 && iDSDelta > -2 && iDSDelta !== 0)
iDSDelta = (iDir * 5);
if(iDSDelta > 5 || iDSDelta < -5)
iDSDelta = (apo.setting.visibleRows / 10) * 320 * iDSTS;
else
iDSDelta = iDir * apo.setting.rowHeight;
}
}
else
{
if(iDSDelta > 10 || iDSDelta < -10)
iDSDelta = iDSDelta + apo.setting.visibleRows * 16 * iDSTS;
}
apo.tmp.iPrevDSTS = iDSTS;
apo._scrollToPosition("drag", (apo.tmp.iOffset + iDSDelta), false, "#ap-component-" + apo.tmp.iScrollingComp + " .ap-component-data");
apo.tmp.bFromTouchStart = false;
}
}
e.preventDefault();
e.stopPropagation();
return false;
},
_onEndDrag: function(e)
{
var apo = e.data.apo;
if(!apo.tmp.bEnd)
{
apo.tmp.bEnd = true;
apo.tmp.bIsTouched = false;
apo._scrollToPosition("drag", apo.tmp.iOffset, true, "#ap-component-" + apo.tmp.iScrollingComp + " .ap-component-data");
if(e.type === "mouseup")
{
$(document).off("mousemove." + apo.setting.timestamp, apo._onDrag);
$(document).off("mouseup." + apo.setting.timestamp, apo._onEndDrag);
}
}
e.preventDefault();
e.stopPropagation();
return false;
},
_onMouseWheelScroll: function(e)
{
var apo = e.data.apo;
var oData = e.data,
iDelta;
e = e || window.event;
if(oData.component !== apo.tmp.iScrollingComp)
apo._setScrollingData(e);
apo._clearScrollTicker();
iDelta = e.wheelDelta ? (e.wheelDelta / 3) : (e.originalEvent.wheelDelta ? (e.originalEvent.wheelDelta / 3) : (e.detail ? (-e.detail / 3) : 0));
apo._scrollToPosition("mouseWheel", (apo.tmp.iOffset - (iDelta)), true, "#ap-component-" + apo.tmp.iScrollingComp + " .ap-component-data");
e.preventDefault();
e.stopPropagation();
return false;
},
_onClickButtonPlus: function(e)
{
var apo = e.data.apo;
e.preventDefault();
e.stopPropagation();
apo._setScrollingData(e);
apo._clearScrollTicker();
apo._scrollToPosition("button", (apo.tmp.iOffset + apo.setting.rowHeight), true, "#ap-component-" + apo.tmp.iScrollingComp + " .ap-component-data");
},
_onClickButtonMinus: function(e)
{
var apo = e.data.apo;
e.preventDefault();
e.stopPropagation();
apo._setScrollingData(e);
apo._clearScrollTicker();
apo._scrollToPosition("button", (apo.tmp.iOffset - apo.setting.rowHeight), true, "#ap-component-" + apo.tmp.iScrollingComp + " .ap-component-data");
},
_onKeyDown: function(e)
{
var apo = e.data.apo;
e.preventDefault();
e.stopPropagation();
apo._setScrollingData(e);
apo._clearScrollTicker();
if(e.keyCode === 38)
{
apo._scrollToPosition("key", (apo.tmp.iOffset - apo.setting.rowHeight), true, "#ap-component-" + apo.tmp.iScrollingComp + " .ap-component-data");
}
else if(e.keyCode === 40)
{
apo._scrollToPosition("key", (apo.tmp.iOffset + apo.setting.rowHeight), true, "#ap-component-" + apo.tmp.iScrollingComp + " .ap-component-data");
}
},
_onKeyUp: function(e)
{
var apo = e.data.apo;
e.preventDefault();
e.stopPropagation();
apo._unsetScrollingData();
},
_getTouchPosition: function(e)
{
var apo = e.data.apo;
e = e.originalEvent || e;
return e.changedTouches ? e.changedTouches[0].pageY : e.pageY;
},
_setScrollingData: function(e)
{
var apo = e.data.apo;
apo.tmp.iScrollingComp = parseInt(e.data.component);
apo.tmp.oScrollingComp = $("#ap-component-"+e.data.component).find(".ap-component-data");
apo.tmp.iMinTopPos = 0;
apo.tmp.iMaxTopPos = ($(apo.tmp.oScrollingComp).find(".ap-row").length * apo.setting.rowHeight) - $(apo.tmp.oScrollingComp).parent().innerHeight();
apo.tmp.iTS = Date.now();
apo.tmp.iCompDragStart = apo.tmp.iTS;
apo.tmp.iOffsetStart = Math.abs($(apo.tmp.oScrollingComp).position().top);
apo.tmp.iOffset = apo.tmp.iOffsetStart;
apo.tmp.iOffsetPrev = apo.tmp.iOffsetStart;
apo.tmp.iTimeout = 0;
apo.tmp.iDir = 1;
apo.tmp.iTotalDS = 0;
apo.tmp.iPrevDSTS = 0;
apo._clearScrollTicker();
},
_unsetScrollingData: function()
{
var apo = this;
apo.tmp.bIsTouched = false;
apo.tmp.iPos = 0;
apo.tmp.iTS = 0;
apo.tmp.iOffset = 0;
apo.tmp.iTimeout = 0;
apo.tmp.iMinTopPos = 0;
apo.tmp.iMaxTopPos = 0;
apo.tmp.oScrollingComp = null;
apo.tmp.iScrollingComp = -1;
apo.tmp.iDir = 0;
apo._clearScrollTicker();
$(document).off("mousemove." + apo.setting.timestamp);
$(document).off("mouseup." + apo.setting.timestamp);
$(document).off("touchend." + apo.setting.timestamp);
},
_getScrollingData: function()
{
var apo = this;
var oScrollingData = {};
oScrollingData.iScrollingComp = apo.tmp.iScrollingComp;
oScrollingData.oScrollingComp = apo.tmp.oScrollingComp;
oScrollingData.iMinTopPos = apo.tmp.iMinTopPos;
oScrollingData.iMaxTopPos = apo.tmp.iMaxTopPos;
oScrollingData.iTS = apo.tmp.iTS;
oScrollingData.iCompDragStart = apo.tmp.iCompDragStart;
oScrollingData.iOffsetStart = apo.tmp.iOffsetStart;
oScrollingData.iOffset = apo.tmp.iOffset;
oScrollingData.iOffsetPrev = apo.tmp.iOffsetPrev;
oScrollingData.iTimeout = apo.tmp.iTimeout;
oScrollingData.iDir = apo.tmp.iDir;
return oScrollingData;
},
_clearScrollTicker: function()
{
var apo = this;
clearTimeout(apo.tmp.oScrollTicker);
apo.tmp.oScrollTicker = null;
},
_scrollToPosition: function(sSource, iOffsetNew, bStop, sComp)
{
var apo = this;
var iComp = apo.tmp.iScrollingComp,
iDir = (iOffsetNew < apo.tmp.iOffset) ? 1 : (iOffsetNew === apo.tmp.iOffset) ? apo.tmp.iDir : -1,
iPosMod = iOffsetNew % apo.setting.rowHeight,
iHalfRowHeight = apo.setting.rowHeight / 4,
iPrevOffset = apo.tmp.iOffset,
iTime = 0.1;
apo.tmp.iDir = iDir;
if(bStop)
iOffsetNew = (iPosMod !== 0) ? ((iPosMod < iHalfRowHeight) ? (iOffsetNew - iPosMod) : (iOffsetNew + (apo.setting.rowHeight - iPosMod))) : iOffsetNew;
var iMinPosBounce = apo.tmp.iMinTopPos - apo.setting.rowHeight,
iMaxPosBounce = apo.tmp.iMaxTopPos + apo.setting.rowHeight;
apo.tmp.iOffset = (iOffsetNew > apo.tmp.iMaxTopPos) ? iMaxPosBounce : (iOffsetNew < apo.tmp.iMinTopPos) ? iMinPosBounce : iOffsetNew;
if($.AnyPicker.extra.bHasCSS3D)
{
var iDiffOffset = Math.abs(iPrevOffset - apo.tmp.iOffset);
if(sSource === "drag")
{
if(iDiffOffset < (apo.setting.rowHeight * 6))
iTime = (iDiffOffset / (apo.setting.rowHeight * 10));
else
{
iTime = (iDiffOffset / (apo.setting.rowHeight * 10));
iTime = (iTime <= 0.2) ? 0.2 : iTime;
}
}
else
iTime = 0.1;
apo._performTransition(iComp, sComp, apo.tmp.iOffset, (apo.tmp.iTimeout/1000), apo.tmp.iMinTopPos, apo.tmp.iMaxTopPos, iDir, iMinPosBounce, iMaxPosBounce, sSource, bStop);
apo.tmp.iTimeout = (apo.tmp.iTimeout - (Date.now() - apo.tmp.iTS)) + (iTime * 1000);
}
else
apo._performTransition(iComp, sComp, apo.tmp.iOffset, iTime, apo.tmp.iMinTopPos, apo.tmp.iMaxTopPos, iDir, iMinPosBounce, iMaxPosBounce, sSource, bStop);
},
_performTransition: function(iComp, sComp, iOffset, iTime, iMinTopPos, iMaxTopPos, iDir, iMinPosBounce, iMaxPosBounce, sSource, bStop)
{
var apo = this;
var oElem = $(apo.tmp.overlaySelector).find(sComp).get(0),
iOffsetNew = apo._getOffset(oElem, true),
iDiffOffset = Math.abs(iOffsetNew - iOffset),
iExpTime = iDiffOffset / (apo.setting.rowHeight * 10);
iTime = (iTime > iExpTime) ? iExpTime : iTime;
iTime = (iTime < 0.1) ? 0.1 : iTime;
iTime = ($.AnyPicker.extra.bHasPointer && apo.tmp.bIsTouched && sSource === "auto") ? 0 : iTime;
if($.AnyPicker.extra.bHasCSS3D)
{
oElem.style[$.AnyPicker.extra.sCSSTransition] = $.AnyPicker.extra.sCSSTransformStyle + " " + iTime + "s ease-out";
oElem.style[$.AnyPicker.extra.sCSSTransform] = "translate3d(0px, "+ -iOffset +"px, 0px)";
}
else
$(oElem).animate({"top": -iOffset}, 100);
apo.tmp.iOffset = iOffset;
var oScrollingData = apo._getScrollingData();
apo._performTransitionAfter(oScrollingData, iMaxPosBounce, iMinPosBounce, sSource, iTime, bStop);
apo._clearScrollTicker();
},
_performTransitionAfter: function(oScrollingData, iMaxPosBounce, iMinPosBounce, sSource, iTime, bStop)
{
var apo = this;
setTimeout(function()
{
if(bStop && (sSource === "drag" || sSource === "mouseWheel"))
{
apo.tmp.oScrollTicker = 1;
apo._scrollToRow(oScrollingData.iDir, iMaxPosBounce, iMinPosBounce, oScrollingData.iMinTopPos, oScrollingData.iMaxTopPos, sSource);
}
var oElem = $(oScrollingData.oScrollingComp).get(0),
iOffset = (sSource === "auto") ? oScrollingData.iOffset : -apo._getOffset(oElem, false),
bLTMin = (iOffset < oScrollingData.iMinTopPos),
bGTMax = (iOffset > oScrollingData.iMaxTopPos),
iOffsetNew = Math.abs(iOffset);
if(bLTMin)
iOffset = oScrollingData.iMinTopPos;
else if(bGTMax)
iOffset = oScrollingData.iMaxTopPos;
if(bLTMin || bGTMax)
{
iTime = Math.abs(iOffsetNew - iOffset) / (apo.setting.rowHeight * 10);
if($.AnyPicker.extra.bHasCSS3D)
{
oElem.style[$.AnyPicker.extra.sCSSTransition] = $.AnyPicker.extra.sCSSTransformStyle + " " + iTime + "s ease-out";
oElem.style[$.AnyPicker.extra.sCSSTransform] = "translate3d(0px, "+ -Math.abs(iOffset) +"px, 0px)";
}
else
$(oElem).animate({"top": -Math.abs(iOffset)}, 100);
oScrollingData.iOffset = iOffset;
iOffsetNew = iOffset;
apo._skipDisabledRowAfter(oScrollingData, iOffsetNew, sSource, iTime, bStop);
}
else
{
if(bStop || (iOffsetNew === oScrollingData.iMinTopPos || iOffsetNew === oScrollingData.iMaxTopPos))
apo._skipDisabledRow(sSource, oScrollingData.iScrollingComp, iOffsetNew, oScrollingData.iDir);
}
}, (iTime * 1000));
},
_skipDisabledRowAfter: function(oScrollingData, iOffsetNew, sSource, iTime, bStop)
{
var apo = this;
setTimeout(function()
{
var iOffsetVal = (sSource === "auto") ? iOffsetNew : oScrollingData.iOffset;
if(bStop || (iOffsetVal === oScrollingData.iMinTopPos || iOffsetVal === oScrollingData.iMaxTopPos))
apo._skipDisabledRow(sSource, oScrollingData.iScrollingComp, iOffsetVal, oScrollingData.iDir);
}, (iTime * 1000));
},
_getOffset: function(oElem, bAbs)
{
var sMatrix = $(oElem).hasClass("ap-component-data") ? $(oElem).css("transform") : $(oElem).find(".ap-component-data").css("transform"),
iOffset = 0;
if($.CF.isValid(sMatrix))
{
if(sMatrix === "none")
iOffset = 0;
else
{
sMatrix = sMatrix.replace("matrix(", "");
sMatrix = sMatrix.replace(")", "");
var iArrMatrix = sMatrix.split(", ");
iOffset = (iArrMatrix.length > 6) ? parseInt(iArrMatrix[13]) : parseInt(iArrMatrix[5]);
}
}
if(bAbs)
return Math.abs(iOffset);
else
return iOffset;
},
_scrollToRow: function(iDir, iMaxPosBounce, iMinPosBounce, iMinTopPos, iMaxTopPos, sSource)
{
var apo = this;
var iPosMod, iOffset, iTime;
if(apo.tmp.oScrollTicker !== null)
{
var oElem = $(apo.tmp.oScrollingComp).get(0);
iOffset = apo._getOffset(oElem, false);
iPosMod = iOffset % apo.setting.rowHeight;
if(iPosMod !== 0 || (iPosMod === 0 && (iOffset > iMinTopPos || iOffset < -iMaxTopPos)))
{
iOffset = Math.abs(iOffset);
iOffset = (iDir === -1) ? (iOffset + (apo.setting.rowHeight - Math.abs(iPosMod))) : (iOffset + iPosMod);
iOffset = (iOffset > iMaxTopPos) ? iMaxTopPos : (iOffset < iMinTopPos) ? iMinTopPos : iOffset;
iTime = 0.4;
if($.AnyPicker.extra.bHasCSS3D)
{
oElem.style[$.AnyPicker.extra.sCSSTransition] = $.AnyPicker.extra.sCSSTransformStyle + " " + iTime + "s ease-out";
oElem.style[$.AnyPicker.extra.sCSSTransform] = "translate3d(0px, "+ -Math.abs(iOffset) +"px, 0px)";
}
else
$(oElem).animate({"top": -Math.abs(iOffset)}, 100);
apo.tmp.iOffset = iOffset;
}
}
},
__scrollToSelectedRow: function(bInstant = false)
{
var apo = this;
var iTempIndex;
var e = {}, iTimeout = 0;
if($.CF.compareStrings(apo.setting.mode, "datetime"))
apo.__setSelectedDateTimeInComponent();
for(iTempIndex = 0; iTempIndex < apo.tmp.numOfComp; iTempIndex++)
{
var oArrSelected = $(apo.tmp.overlaySelector).find("#ap-component-" + iTempIndex + " .ap-row-selected"),
oElemSelected = (oArrSelected.length > 0) ? oArrSelected[0] : null;
if(oElemSelected !== null)
{
var iPosTop = $(oElemSelected).position().top,
iExtraHeight = (apo.tmp.iExt * apo.setting.rowHeight);
iPosTop = (iPosTop === 0) ? iPosTop : (iPosTop - iExtraHeight);
if (bInstant) {
var oElem = $(apo.tmp.overlaySelector).find("#ap-component-" + iTempIndex + " .ap-component-data").get(0);
if($.AnyPicker.extra.bHasCSS3D)
{
oElem.style[$.AnyPicker.extra.sCSSTransition] = "";
oElem.style[$.AnyPicker.extra.sCSSTransform] = "translate3d(0px, "+ -iPosTop +"px, 0px)";
}
else
$(oElem).animate({"top": -iPosTop}, 100);
apo._skipDisabledRow("auto", iTempIndex, iPosTop);
apo._unsetScrollingData();
} else {
apo.callScrollToPosition(iTempIndex, apo, iPosTop, iTimeout);
}
iTimeout += 200;
}
}
},
callScrollToPosition: function(iComp, oAPO, iPosTop, iTimeout)
{
var apo = this;
var e = {};
e.data = { component: iComp, apo: oAPO };
apo._setScrollingData(e);
apo._scrollToPosition("auto", iPosTop, true, "#ap-component-" + iComp + " .ap-component-data");
},
setSelectedAndInvalidValuesForRows: function(bSetSelected, bInstant = false)
{
var apo = this;
if($.CF.compareStrings(apo.setting.mode, "select"))
apo.__disableInvalidRowsOfSelect();
else if($.CF.compareStrings(apo.setting.mode, "datetime"))
{
if(bSetSelected)
apo.__setSelectedDateTimeInComponent();
$(apo.tmp.overlaySelector).find(".ap-row").removeClass("ap-row-disabled ap-row-invalid ap-row-hidden");
apo.__disableInvalidRowsOfDateTimePicker();
apo.__setDaysOfMonthInDatePicker();
}
if(bSetSelected)
apo.__scrollToSelectedRow(bInstant);
},
__changeComponentValue: function(iComp, sNewValue)
{
1;
var apo = this;
var oComp = apo.setting.components[iComp],
oDataSource = apo.setting.dataSource[iComp].data,
iTempIndex, sElemId, $oElem;
for(iTempIndex = 0; iTempIndex < oDataSource.length; iTempIndex++)
{
sElemId = "#ap-row-" + iComp + "-" + iTempIndex;
$oElem = $(apo.tmp.overlaySelector).find(sElemId);
if(oDataSource[iTempIndex].val === sNewValue)
{
oDataSource[iTempIndex].selected = true;
$oElem.attr("aria-selected", "true");
$oElem.addClass("ap-row-selected");
}
else
{
oDataSource[iTempIndex].selected = false;
$oElem.attr("aria-selected", "false");
$oElem.removeClass("ap-row-selected");
}
}
},
_skipDisabledRow: function(sSource, iComp, iOffset, iDir)
{
var apo = this;
var sElemSel = "#ap-component-" + iComp + " .ap-component-data",
oElem = $(apo.tmp.overlaySelector).find(sElemSel).get(0),
iRow = Math.floor(iOffset / apo.setting.rowHeight),
sPartialId = "#ap-row-" + iComp + "-",
sRowId = sPartialId + iRow,
iTotalRows = $(oElem).find(".ap-row").length - (2 * apo.tmp.iExt),
bIsRowDisabled = $(oElem).find(sRowId).hasClass("ap-row-disabled"),
iEnabledRow = -1,
iDirPrev = 0, e = {},
bSkippedRow = false;
if($.CF.isValid(oElem) && bIsRowDisabled)
{
if(iDir === 1)
{
iEnabledRow = apo._findRows(iComp, iRow, iTotalRows, oElem, iDir);
if(iEnabledRow === -1)
{
iDir = -1;
iDirPrev = 1;
}
}
if(iDir === -1)
{
iEnabledRow = apo._findRows(iComp, iRow, iTotalRows, oElem, iDir);
if(iEnabledRow === -1 && iDirPrev === 0)
{
iDir = 1;
iEnabledRow = apo._findRows(iComp, iRow, iTotalRows, oElem, iDir);
}
}
var iNewOffset = (iEnabledRow !== -1) ? ($(oElem).find(sPartialId + iEnabledRow).position().top - (apo.tmp.iExt * apo.setting.rowHeight)) : -1;
if(iEnabledRow !== -1 && iOffset !== iNewOffset)
{
bSkippedRow = true;
e.data = { component: iComp, apo: apo };
apo._setScrollingData(e);
apo._scrollToPosition("auto", iNewOffset, true, sElemSel);
}
else
{
setTimeout(function()
{
apo._actionsOnComponentStop(sSource, iComp, iRow, iOffset, iDir);
}, 200);
}
}
else
{
setTimeout(function()
{
apo._actionsOnComponentStop(sSource, iComp, iRow, iOffset, iDir);
}, 200);
}
},
_actionsOnComponentStop: function(sSource, iComp, iRow, iOffset, iDir)
{
var apo = this;
var iTempIndex, bReloaded = false, sHeaderTitle = "";
apo.__setAriaSelectedForRowElement(iComp, iOffset, iDir);
apo._getSelectedValueInComponent(null);
var $oInput = $(apo.setting.inputElement);
var old_value = apo.tmp.oInputElemValid.bIsInput ? $oInput.val() : $oInput.text();
var new_value = apo._setOutput(false);
1;
if($.CF.compareStrings(apo.setting.inputChangeEvent, "onChange"))
apo._setOutput();
if(apo.tmp.sHeaderTitleType === "DynamicFunction")
{
sHeaderTitle = apo.setting.headerTitle.format.call(apo.tmp.selectedValues);
$(apo.tmp.overlaySelector).find(".ap-header__title").text(sHeaderTitle);
}
else if(apo.tmp.sHeaderTitleType === "DynamicString")
{
if($.CF.compareStrings(apo.setting.mode, "select"))
{
for(var iCompIndex = 0; iCompIndex < apo.tmp.numOfComp; iCompIndex++)
{
if(iCompIndex !== 0)
sHeaderTitle += " ";
sHeaderTitle += apo.tmp.selectedValues.values[iCompIndex].label;
}
}
else if($.CF.compareStrings(apo.setting.mode, "datetime"))
{
sHeaderTitle = apo.formatOutputDates(apo.tmp.selectedValues.date, apo.tmp.sArrHeaderTitleFormat);
}
var bSetHeaderTitle = true;
if(bSetHeaderTitle)
$(apo.tmp.overlaySelector).find(".ap-header__title").text(sHeaderTitle);
}
if(sSource !== "auto" && $.CF.isValid(apo.setting.onChange) && new_value !== old_value) {
1;
apo.setting.onChange.call(apo, iComp, iRow, apo.tmp.selectedValues, sSource);
}
if(!bReloaded)
apo.setSelectedAndInvalidValuesForRows(false);
},
_findRows: function(iComp, iRow, iTotalRows, oElem, iDir)
{
var apo = this;
var iTempIndex;
if(iDir === -1)
{
for(iTempIndex = (iRow + 1); iTempIndex < iTotalRows; iTempIndex++)
{
if(! $(oElem).find("#ap-row-" + iComp + "-" + iTempIndex).hasClass("ap-row-disabled"))
return iTempIndex;
}
}
else if(iDir === 1)
{
for(iTempIndex = (iRow - 1); iTempIndex > 0; iTempIndex--)
{
if(! $(oElem).find("#ap-row-" + iComp + "-" + iTempIndex).hasClass("ap-row-disabled"))
return iTempIndex;
}
}
return -1;
},
_validateSelectedValues: function()
{
var apo = this;
if($.CF.compareStrings(apo.setting.mode, "datetime"))
{
var dNewSelectedDate = apo.__getSelectedDate(false);
apo.__validateSelectedDate(dNewSelectedDate, false);
}
},
__setAriaSelectedForRowElement: function(iComp, iOffset, iDir)
{
1;
var apo = this;
var $oElemComp = $(apo.tmp.overlaySelector).find("#ap-component-" + iComp),
iElementIndex;
if(iOffset === 0)
iOffset = apo._getOffset($oElemComp, true);
if(iDir === 1)
iElementIndex = Math.floor(iOffset / apo.setting.rowHeight);
else if(iDir === -1)
iElementIndex = Math.ceil(iOffset / apo.setting.rowHeight);
var $oAllRows = $oElemComp.find(".ap-row"),
$oThisRow = $oElemComp.find("#ap-row-" + iComp + "-" + iElementIndex);
if ($oThisRow.length == 0) {
$oThisRow = $oElemComp.find(".ap-row-selected");
}
$oAllRows.attr("aria-selected", "false");
$oAllRows.removeClass("ap-row-selected");
$oThisRow.attr("aria-selected", "true");
$oThisRow.addClass("ap-row-selected");
},
_getSelectedValueInComponent: function(iComp)
{
var apo = this;
var iTempIndex,
$oSelectedElem, sSelectedValue, sSelectedDisplayValue,
oArrSelectedValues = [];
apo.tmp.selectedValues = {};
if($.CF.isValid(iComp))
{
$oSelectedElem = $(apo.tmp.overlaySelector).find("#ap-component-" + iComp + " .ap-row-selected");
oArrSelectedValues.push(
{
component: iComp,
val: $oSelectedElem.data("value"),
label: $oSelectedElem.data("label")
});
}
else
{
for(iTempIndex = 0; iTempIndex < apo.tmp.numOfComp; iTempIndex++)
{
$oSelectedElem = $(apo.tmp.overlaySelector).find("#ap-component-" + iTempIndex + " .ap-row-selected");
if ($oSelectedElem.length == 0) {
$oSelectedElem = $(apo.tmp.overlaySelector).find("#ap-component-" + iTempIndex + " .ap-row[data-label]").first()
}
oArrSelectedValues.push(
{
component: iTempIndex,
val: $oSelectedElem.data("value"),
label: $oSelectedElem.data("label")
});
}
}
apo.tmp.selectedValues.values = oArrSelectedValues;
if($.CF.compareStrings(apo.setting.mode, "datetime"))
{
apo.tmp.selectedValues.date = apo.__getSelectedDate(false);
apo.tmp.selectedDate = apo.tmp.selectedValues.date;
}
},
__getDataSourceValueFromLabel: function(sLabel, iInCompIndex, bSetSelected)
{
var apo = this;
var iCompIndex, iTempIndex,
oCompData, oData, sValue = "";
if($.CF.isValid(iInCompIndex))
{
1;1;
oCompData = apo.setting.dataSource[iInCompIndex] ? apo.setting.dataSource[iInCompIndex].data : [];
for(iTempIndex = 0; iTempIndex < oCompData.length; iTempIndex++)
{
oData = oCompData[iTempIndex];
if($.CF.compareStrings(oData.label, sLabel))
{
sValue = oData.val;
if(bSetSelected)
oData.selected = true;
}
else
{
if(bSetSelected)
oData.selected = false;
}
apo.setting.dataSource[iInCompIndex].data[iTempIndex] = oData;
}
}
else
{
for(iCompIndex = 0; iCompIndex < apo.tmp.numOfComp; iCompIndex++)
{
oCompData = apo.setting.dataSource[iCompIndex].data;
for(iTempIndex = 0; iTempIndex < oCompData.length; iTempIndex++)
{
oData = oCompData[iTempIndex];
if($.CF.compareStrings(oData.label, sLabel))
{
if(bSetSelected)
oData.selected = true;
sValue = oData.val;
}
else
{
if(bSetSelected)
oData.selected = false;
}
}
}
}
return sValue;
},
__getValuesOfComponent: function(sValueOf, iComp)
{
var apo = this;
var oValue = null, iCompIndex;
if(sValueOf === "component")
{
if(apo.setting.components[iComp].component === iComp)
oValue = apo.setting.components[iComp];
else
{
for(iCompIndex = 0; iCompIndex < apo.tmp.numOfComp; iCompIndex++)
{
if(apo.setting.components[iCompIndex].component === iComp)
oValue = apo.setting.components[iCompIndex];
}
}
}
else if(sValueOf === "datasource")
{
if(apo.setting.dataSource[iComp].component === iComp)
oValue = apo.setting.dataSource[iComp];
else
{
for(iCompIndex = 0; iCompIndex < apo.tmp.numOfComp; iCompIndex++)
{
if(apo.setting.dataSource[iCompIndex].component === iComp)
oValue = apo.setting.dataSource[iCompIndex];
}
}
}
return oValue;
}
});
AnyPicker.prototype = $.extend(AnyPicker.prototype, {
__setComponentsOfSelect: function()
{
var apo = this;
if(apo.setting.dataSource === null)
{
if(apo.tmp.oElemValid.bIsListItem || apo.tmp.oElemValid.bIsSelect)
{
var sChild, $oChildElem;
apo.setting.components = [];
var oComponent = {};
oComponent.component = 1;
oComponent.name = $(apo.elem).data("name");
oComponent.label = $(apo.elem).data("label");
apo.setting.components.push(oComponent);
var oArrData = [];
if(apo.tmp.oElemValid.bIsListItem)
sChild = "li";
else if(apo.tmp.oElemValid.bIsSelect)
sChild = "option";
$(apo.elem).find(sChild).each(function()
{
$oChildElem = $(this);
var oSelectData = {
val: $oChildElem.attr("value") || $oChildElem.data("value") || $oChildElem.text(),
label: $oChildElem.text(),
selected: function()
{
if($oChildElem.attr("selected") || $oChildElem.attr("data-selected") !== undefined && $oChildElem.attr("data-selected") === "true")
return true;
else
return false;
},
disabled: function()
{
if($oChildElem.attr("disabled") || $oChildElem.data("disabled") !== undefined && $oChildElem.data("disabled") === "true")
return true;
else
return false;
}
};
if(oSelectData.disabled)
{
oSelectData.selected = false;
}
else if(oSelectData.selected)
{
apo.tmp.selected = {
val: oSelectData.val,
displayVal: oSelectData.displayVal
};
}
oArrData.push(oSelectData);
});
apo.setting.dataSource = [];
var oData = {};
oData.component = 1;
oData.data = oArrData;
apo.setting.dataSource.push(oData);
apo.tmp.numOfComp = 1;
if($.CF.compareStrings(apo.setting.headerTitle.contentBehaviour, "Dynamic") && $.CF.isValid(apo.setting.headerTitle.format))
{
if(typeof apo.setting.headerTitle.format === "function")
apo.tmp.sHeaderTitleType = "DynamicFunction";
else if(typeof apo.setting.headerTitle.format === "string")
{
apo.tmp.sHeaderTitleType = "DynamicString";
}
}
}
else
1;
}
},
__disableInvalidRowsOfSelect: function()
{
var apo = this;
var iTempIndex1, bIsInvalidRow,
oData = apo.setting.dataSource[0].data;
for(iTempIndex1 = 0; iTempIndex1 < oData.length; iTempIndex1++)
{
bIsInvalidRow = $.CF.isValid(oData[iTempIndex1].disabled);
if(bIsInvalidRow && oData[iTempIndex1].disabled === true)
{
$(apo.elem).find("#ap-row-0-" + iTempIndex1).addClass("ap-row-disabled");
}
}
}
});
$.AnyPicker = $.extend(true, $.AnyPicker, {
defaults:
{
selectedDate: null,
i18n:
{
veryShortDays: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
fullDays: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
fullMonths: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
numbers: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"],
meridiem:
{
a: ["a", "p"],
aa: ["am", "pm"],
A: ["A", "P"],
AA: ["AM", "PM"]
},
componentLabels: {
date: "Date",
day: "Day",
month: "Month",
year: "Year",
hours: "Hours",
minutes: "Minutes",
seconds: "Seconds",
meridiem: "Meridiem"
}
},
inputDateTimeFormat: "",
dateTimeFormat: "dd-MM-yyyy hh:mm AA",
tzOffset: "",
maxValue: null,
minValue: null,
maxYear: 0,
disableValues: {},
intervals:
{
h: 1,
m: 1,
s: 1
},
roundOff: true
},
tempDefaults:
{
oMinMax: {},
oArrPDisable: {},
sDateTimeMode: "",
sArrDateTimeFormat: [],
sDateTimeRegex: "",
diffDateTimeFormats: false,
sArrInputDateTimeFormat: [],
sInputDateTimeRegex: "",
sHeaderTitleType: "Static",
sArrHeaderTitleFormat: [],
dPrevDate: null
},
extra:
{
dToday: new Date(),
dTomorrow: new Date((new Date()).setDate((new Date()).getDate() + 1)),
iMS:
{
m: 6E4,
h: 36E5,
d: 864E5,
w: 6048E5
},
sFormatRegex: /(\[[^\[]*\])|(\\)?(MMMM|MMM|MM?|DDDD|DDD|DD|D|dd?|yyyy|YYYY|yy|YY|y|Y|aa?|AA?|hh?|HH?|mm?|ss?|x|X|zz?|ZZ?|.)/g,
en:
{
veryShortDays: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
fullDays: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
fullMonths: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
numbers: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"],
meridiem:
{
a: ["a", "p"],
aa: ["am", "pm"],
A: ["A", "P"],
AA: ["PM", "PM"]
}
},
sArrDateComponents:
[
"d", "dd", "DD", "DDD", "DDDD",
"M", "MM", "MMM", "MMMM",
"y", "yy", "yyyy", "Y", "YY", "YYYY",
"h", "hh", "H", "HH",
"m", "mm",
"s", "ss",
"AA", "A", "aa", "a"
],
sArrDateTimeModes:
[
"date",
"time",
"datetime"
]
}
});
AnyPicker.prototype = $.extend(AnyPicker.prototype, {
_isSupportedFormat: function(sFormat)
{
var apo = this;
return (sFormat.search($.AnyPicker.extra.sFormatRegex, "") !== -1);
},
__setComponentsOfDateTimePicker: function()
{
var apo = this;
var iTempIndex, sFormat;
apo.setting.components = [];
apo.tmp.numOfComp = 0;
apo.setting.dataSource = [];
var bHasDateComponent = (apo.setting.dateTimeFormat.search(/D|d|M|y|Y/, "") !== -1),
bHasTimeComponent = (apo.setting.dateTimeFormat.search(/H|h|m|s|A|a/, "") !== -1);
apo.tmp.sDateTimeMode = (bHasDateComponent && bHasTimeComponent) ? "datetime" : (bHasDateComponent ? "date" : (bHasTimeComponent ? "time" : ""));
if($.CF.isValid(apo.setting.dateTimeFormat))
{
if($.CF.isValid(apo.setting.inputDateTimeFormat))
{
apo.tmp.diffDateTimeFormats = (apo.setting.dateTimeFormat !== apo.setting.inputDateTimeFormat);
}
else
{
apo.setting.inputDateTimeFormat = apo.setting.dateTimeFormat;
apo.tmp.diffDateTimeFormats = false;
}
}
else
{
1;
}
apo.tmp.sArrDateTimeFormat = apo._setDateTimeFormatComponentsArray(apo.setting.dateTimeFormat);
if(apo.tmp.diffDateTimeFormats)
apo.tmp.sArrInputDateTimeFormat = apo._setDateTimeFormatComponentsArray(apo.setting.inputDateTimeFormat);
apo.tmp.sDateTimeRegex = apo._createDateTimeRegex(apo.tmp.sArrDateTimeFormat);
if(apo.tmp.diffDateTimeFormats)
apo.tmp.sInputDateTimeRegex = apo._createDateTimeRegex(apo.tmp.sArrInputDateTimeFormat);
apo.setSelectedDate(apo.setting.selectedDate);
apo.parseDisableValues();
var bMMMMddYYYY = apo.setting.dateTimeFormat.match(/(MMMM).*(dd|d).*(yyyy|YYYY)/);
if(apo.tmp.sArrDateTimeFormat.length > 0)
{
for(iTempIndex = 0; iTempIndex < apo.tmp.sArrDateTimeFormat.length; iTempIndex++)
{
sFormat = apo.tmp.sArrDateTimeFormat[iTempIndex];
if(sFormat.search(/D|d|M|y|Y|H|h|m|s|A|a/, "g") !== -1)
{
apo._setComponentAndDataSourceForFormat(sFormat, {"MMMMddYYYY": bMMMMddYYYY});
}
}
}
if(!apo.tmp.headerTitleDefined && $.CF.compareStrings(apo.setting.mode, "datetime") && !$.CF.compareStrings(apo.setting.theme, "iOS"))
{
apo.setting.headerTitle.contentBehaviour = "Dynamic";
if(apo.tmp.sDateTimeMode === "datetime")
{
if(apo._formatContains(apo.tmp.sArrDateTimeFormat, ["d", "M", "y|Y", "h", "m"], "and") && apo._formatContains(apo.tmp.sArrDateTimeFormat, ["a", "A"], "or"))
apo.setting.headerTitle.format = "dd.MM.yyyy, hh:mm " + apo._getFormatForComponent("meridiem");
else if(apo._formatContains(apo.tmp.sArrDateTimeFormat, ["d", "M", "y|Y", "H", "m"], "and"))
apo.setting.headerTitle.format = "dd.MM.yyyy, HH:mm";
else
apo.setting.headerTitle.format = apo.setting.dateTimeFormat;
}
else if(apo.tmp.sDateTimeMode === "date")
{
if(apo._formatContains(apo.tmp.sArrDateTimeFormat, ["d", "M", "y|Y"], "and"))
apo.setting.headerTitle.format = "DDD, MMM dd yyyy";
else
apo.setting.headerTitle.format = apo.setting.dateTimeFormat;
}
else if(apo.tmp.sDateTimeMode === "time")
{
if(apo._formatContains(apo.tmp.sArrDateTimeFormat, ["h", "m"], "and") && apo._formatContains(apo.tmp.sArrDateTimeFormat, ["a", "A"], "or"))
apo.setting.headerTitle.format = "hh:mm " + apo._getFormatForComponent("meridiem");
else if(apo._formatContains(apo.tmp.sArrDateTimeFormat, ["H", "m"], "and"))
apo.setting.headerTitle.format = "HH:mm";
else
apo.setting.headerTitle.format = apo.setting.dateTimeFormat;
}
}
if($.CF.compareStrings(apo.setting.headerTitle.contentBehaviour, "Dynamic") && $.CF.isValid(apo.setting.headerTitle.format))
{
if(typeof apo.setting.headerTitle.format === "function")
apo.tmp.sHeaderTitleType = "DynamicFunction";
else if(typeof apo.setting.headerTitle.format === "string")
{
apo.tmp.sHeaderTitleType = "DynamicString";
apo.tmp.sArrHeaderTitleFormat = apo._matchRegex($.AnyPicker.extra.sFormatRegex, apo.setting.headerTitle.format);
}
}
},
setSelectedDate: function(oDate, updateInput = true)
{
var apo = this;
if($.CF.isValid(oDate))
{
if(typeof oDate === "string")
{
apo.tmp.selectedDate = apo._parseInputDateTime(oDate);
}
else if(Object.prototype.toString.call(oDate) === "[object Date]")
{
apo.setting.selectedDate = apo.formatOutputDates(oDate);
apo.tmp.selectedDate = new Date(oDate);
}
if(apo.setting.inputElement !== null && updateInput)
{
var $oInput = $(apo.setting.inputElement);
if(apo.tmp.oInputElemValid.bIsInput)
{
$oInput.val(apo.setting.selectedDate);
}
else
{
$oInput.text(apo.setting.selectedDate);
}
}
}
else
{
apo.tmp.selectedDate = new Date($.AnyPicker.extra.dTomorrow);
}
},
setMinimumDate: function(oDate)
{
var apo = this;
apo.setting.minValue = oDate;
apo.parseDisableValues();
},
setMaximumDate: function(oDate)
{
var apo = this;
apo.setting.maxValue = oDate;
apo.parseDisableValues();
},
_getFormatForComponent: function(sCompName)
{
var apo = this;
for(var iTempIndex = 0; iTempIndex < apo.tmp.numOfComp; iTempIndex++)
{
var oComp = apo.setting.components[iTempIndex];
if(oComp.name === sCompName)
return oComp.format;
}
},
_formatContains: function(sArrFormat, sArrComp, bLogic)
{
var apo = this;
var iTempIndex1, iTempIndex2,
bArrComp = [], bContains;
for(iTempIndex1 = 0; iTempIndex1 < sArrComp.length; iTempIndex1++)
{
var sComp = sArrComp[iTempIndex1],
bComp = false;
for(iTempIndex2 = 0; iTempIndex2 < sArrFormat.length; iTempIndex2++)
{
var sFormat = sArrFormat[iTempIndex2];
if($.CF.isValid(sFormat) && $.CF.isValid(sComp))
{
if(sFormat.search(new RegExp(sComp), "") !== -1)
{
bComp = true;
break;
}
}
}
bArrComp.push(bComp);
}
if(bLogic === "and")
{
bContains = true;
for(iTempIndex1 = 0; iTempIndex1 < bArrComp.length; iTempIndex1++)
{
if(bArrComp[iTempIndex1] !== true)
{
bContains = false;
break;
}
}
}
else if(bLogic === "or")
{
bContains = false;
for(iTempIndex1 = 0; iTempIndex1 < bArrComp.length; iTempIndex1++)
{
if(bArrComp[iTempIndex1] === true)
{
bContains = true;
break;
}
}
}
return bContains;
},
_setComponentAndDataSourceForFormat: function(sCompFormat, sArrSpecial)
{
var apo = this;
var oComp = {}, oData = {},
bIsSupportedFormat = apo._isSupportedFormat(sCompFormat);
if(bIsSupportedFormat)
{
if(sCompFormat === "d" || sCompFormat === "dd")
{
oComp.name = "date";
oComp.label = apo.setting.i18n.componentLabels.date;
oComp.type = "date";
if($.CF.compareStrings(apo.setting.theme, "iOS"))
{
if(sArrSpecial.MMMMddYYYY)
{
oComp.width = "24%";
oComp.textAlign = "right";
}
}
}
else if(sCompFormat === "DD" || sCompFormat === "DDD" || sCompFormat === "DDDD")
{
oComp.name = "day";
oComp.label = apo.setting.i18n.componentLabels.day;
oComp.type = "date";
}
else if(sCompFormat === "M" || sCompFormat === "MM" || sCompFormat === "MMM" || sCompFormat === "MMMM")
{
oComp.name = "month";
oComp.label = apo.setting.i18n.componentLabels.month;
oComp.type = "date";
if($.CF.compareStrings(apo.setting.theme, "iOS"))
{
if(sArrSpecial.MMMMddYYYY)
{
oComp.width = "46%";
oComp.textAlign = "left";
}
}
}
else if(sCompFormat === "y" || sCompFormat === "Y" || sCompFormat === "yyyy" || sCompFormat === "Y" || sCompFormat === "YYYY")
{
oComp.name = "year";
oComp.label = apo.setting.i18n.componentLabels.year;
oComp.type = "date";
if($.CF.compareStrings(apo.setting.theme, "iOS"))
{
if(sArrSpecial.MMMMddYYYY)
{
oComp.width = "30%";
oComp.textAlign = "right";
}
}
}
else if(sCompFormat === "H" || sCompFormat === "HH" || sCompFormat === "h" || sCompFormat === "hh")
{
oComp.name = "hours";
oComp.label = apo.setting.i18n.componentLabels.hours;
oComp.type = "time";
}
else if(sCompFormat === "m" || sCompFormat === "mm")
{
oComp.name = "minutes";
oComp.label = apo.setting.i18n.componentLabels.minutes;
oComp.type = "time";
}
else if(sCompFormat === "s" || sCompFormat === "ss")
{
oComp.name = "seconds";
oComp.label = apo.setting.i18n.componentLabels.seconds;
oComp.type = "time";
}
else if(sCompFormat === "aa" || sCompFormat === "a" || sCompFormat === "AA" || sCompFormat === "A")
{
oComp.name = "meridiem";
oComp.label = apo.setting.i18n.componentLabels.meridiem;
oComp.type = "time";
}
else
1;
oComp.format = sCompFormat;
oComp.component = apo.tmp.numOfComp;
apo.setting.components.push(oComp);
oData.component = oComp.component;
oData.data = apo.__setDataSourceArrayForComponent(oComp.name, sCompFormat);
apo.setting.dataSource.push(oData);
apo.tmp.numOfComp++;
}
},
__setDataSourceArrayForComponent: function(sCompName, sCompFormat)
{
var apo = this;
var iChars, iTempIndex,
iDaysOfMonth, iStartValue, iEndValue,
iTotalYears, iStepYears,
oArrData = [],
oSelectedDate = apo.getDateObject(apo.tmp.selectedDate),
oMin = null, oMax = null;
if($.CF.isValid(apo.tmp.oMinMax.min))
{
oMin = apo.getDateObject(apo.tmp.oMinMax.min);
}
if($.CF.isValid(apo.tmp.oMinMax.max))
{
oMax = apo.getDateObject(apo.tmp.oMinMax.max);
}
if(sCompName === "day")
{
if(sCompFormat === "DD")
{
for(iTempIndex = 0; iTempIndex < $.AnyPicker.extra.en.veryShortDays.length; iTempIndex++)
{
oArrData.push(
{
val: iTempIndex,
label: apo.setting.i18n.veryShortDays[iTempIndex]
});
}
}
else if(sCompFormat === "DDD")
{
for(iTempIndex = 0; iTempIndex < $.AnyPicker.extra.en.shortDays.length; iTempIndex++)
{
oArrData.push(
{
val: iTempIndex,
label: apo.setting.i18n.shortDays[iTempIndex]
});
}
}
else if(sCompFormat === "DDDD")
{
for(iTempIndex = 0; iTempIndex < $.AnyPicker.extra.en.fullDays.length; iTempIndex++)
{
oArrData.push(
{
val: iTempIndex,
label: apo.setting.i18n.fullDays[iTempIndex]
});
}
}
}
else if(sCompName === "date")
{
iDaysOfMonth = 31;
iStartValue = 1;
iEndValue = iDaysOfMonth;
if($.CF.isValid(oMin) && $.CF.isValid(oMax))
{
if((oMin.y === oMax.y) && (oMin.M === oMax.M))
{
iStartValue = oMin.d;
iEndValue = oMax.d;
}
}
for(iTempIndex = iStartValue; iTempIndex <= iEndValue; iTempIndex++)
{
if(sCompFormat === "d")
iChars = 0;
else if(sCompFormat === "dd")
iChars = 2;
oArrData.push(
{
val: iTempIndex,
label: apo.getNumberStringInFormat(iTempIndex, iChars, true)
});
}
}
else if(sCompName === "month")
{
iStartValue = 1;
iEndValue = 12;
if($.CF.isValid(oMin) && $.CF.isValid(oMax))
{
if(oMin.y === oMax.y)
{
iStartValue = oMin.M;
iEndValue = oMax.M;
if(sCompFormat === "M" || sCompFormat === "MM")
{
iStartValue++;
iEndValue++;
}
}
}
if(sCompFormat === "M" || sCompFormat === "MM")
{
if(sCompFormat === "M")
iChars = 0;
else if(sCompFormat === "MM")
iChars = 2;
for(iTempIndex = iStartValue; iTempIndex <= iEndValue; iTempIndex++)
{
oArrData.push(
{
val: (iTempIndex - 1),
label: apo.getNumberStringInFormat(iTempIndex, iChars, true)
});
}
}
else if(sCompFormat === "MMM")
{
for(iTempIndex = iStartValue; iTempIndex <= iEndValue; iTempIndex++)
{
oArrData.push(
{
val: (iTempIndex - 1),
label: apo.setting.i18n.shortMonths[iTempIndex - 1]
});
}
}
else if(sCompFormat === "MMMM")
{
for(iTempIndex = iStartValue; iTempIndex <= iEndValue; iTempIndex++)
{
oArrData.push(
{
val: (iTempIndex - 1),
label: apo.setting.i18n.fullMonths[iTempIndex - 1]
});
}
}
}
else if(sCompName === "year")
{
iTotalYears = (apo.setting.maxRows === 0) ? 50 : apo.setting.maxRows;
iStepYears = Math.floor(iTotalYears / 2);
if($.CF.isValid(oMin))
iStartValue = oMin.y;
else
iStartValue = (iTotalYears % 2 === 0) ? (oSelectedDate.y - iStepYears - 1) : (oSelectedDate.y - iStepYears);
if($.CF.isValid(oMax))
iEndValue = oMax.y;
else
iEndValue = (oSelectedDate.y + iStepYears);
for(iTempIndex = iStartValue; iTempIndex <= iEndValue; iTempIndex++)
{
oArrData.push(
{
val: iTempIndex,
label: apo.getNumberStringInFormat(iTempIndex, 0, true)
});
}
}
else if(sCompName === "hours")
{
var iArrHourValues = [],
iStartHour = 0;
if(!apo.setting.roundOff)
{
iStartHour = oSelectedDate.H;
while((iStartHour - apo.setting.intervals.h) >= 0)
iStartHour -= apo.setting.intervals.h;
}
if(sCompFormat === "h" || sCompFormat === "hh")
{
iArrHourValues = [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
iStartHour = iStartHour % 12;
iStartHour = (iStartHour === 0) ? 12 : iStartHour;
iStartValue = iArrHourValues.indexOf(iStartHour);
iEndValue = 11;
}
else if(sCompFormat === "H" || sCompFormat === "HH")
{
iStartValue = iStartHour;
iEndValue = 23;
}
if(sCompFormat === "h" || sCompFormat === "H")
iChars = 0;
else if(sCompFormat === "hh" || sCompFormat === "HH")
iChars = 2;
for(iTempIndex = iStartValue; iTempIndex <= iEndValue; iTempIndex = (iTempIndex + apo.setting.intervals.h))
{
if(sCompFormat === "h" || sCompFormat === "hh")
{
oArrData.push(
{
val: iArrHourValues[iTempIndex],
label: apo.getNumberStringInFormat(iArrHourValues[iTempIndex], iChars, true)
});
}
else if(sCompFormat === "H" || sCompFormat === "HH")
{
oArrData.push(
{
val: iTempIndex,
label: apo.getNumberStringInFormat(iTempIndex, iChars, true)
});
}
}
}
else if(sCompName === "minutes")
{
var iStartMinute = 0;
if(!apo.setting.roundOff)
{
iStartMinute = oSelectedDate.m;
while((iStartMinute - apo.setting.intervals.m) >= 0)
iStartMinute -= apo.setting.intervals.m;
}
if(sCompFormat === "m")
iChars = 0;
else if(sCompFormat === "mm")
iChars = 2;
for(iTempIndex = iStartMinute; iTempIndex < 60; iTempIndex = (iTempIndex + apo.setting.intervals.m))
{
oArrData.push(
{
val: iTempIndex,
label: apo.getNumberStringInFormat(iTempIndex, iChars, true)
});
}
}
else if(sCompName === "seconds")
{
var iStartSeconds = 0;
if(!apo.setting.roundOff)
{
iStartSeconds = oSelectedDate.s;
while((iStartSeconds - apo.setting.intervals.s) >= 0)
iStartSeconds -= apo.setting.intervals.s;
}
if(sCompFormat === "s")
iChars = 0;
else if(sCompFormat === "ss")
iChars = 2;
for(iTempIndex = iStartSeconds; iTempIndex < 60; iTempIndex = (iTempIndex + apo.setting.intervals.s))
{
oArrData.push(
{
val: iTempIndex,
label: apo.getNumberStringInFormat(iTempIndex, iChars, true)
});
}
}
else if(sCompName === "meridiem")
{
for(iTempIndex = 0; iTempIndex < 2; iTempIndex++)
{
oArrData.push(
{
val: iTempIndex,
label: apo.setting.i18n.meridiem[sCompFormat][iTempIndex]
});
}
}
return oArrData;
},
_setDateTimeFormatComponentsArray: function(sDateTimeFormat)
{
var apo = this;
var sArrDateTimeFormat = apo._matchRegex($.AnyPicker.extra.sFormatRegex, sDateTimeFormat);
var iTempIndex, sPrevFormat = "", sArrTempFormat = [];
for(iTempIndex = 0; iTempIndex < sArrDateTimeFormat.length; iTempIndex++)
{
var sTempFormat = sArrDateTimeFormat[iTempIndex];
if(sTempFormat.match(/[a-zA-Z0-9]/))
{
if(sPrevFormat !== "")
{
sArrTempFormat.push(sPrevFormat);
sPrevFormat = "";
}
sArrTempFormat.push(sTempFormat);
}
else
sPrevFormat += sTempFormat;
}
if(sPrevFormat !== "")
{
sArrTempFormat.push(sPrevFormat);
sPrevFormat = "";
}
return sArrTempFormat;
},
_createDateTimeRegex: function(sArrDateTimeFormat)
{
var apo = this;
var iTempIndex, sFormat,
sInRegex = "", sOutRegex = "",
sRegexStart = "(\\[[^\\[]*\\])|(\\\\)?",
sRegexEnd = "|.",
sDateTimeRegex;
sInRegex += sRegexStart;
for(iTempIndex = 0; iTempIndex < sArrDateTimeFormat.length; iTempIndex++)
{
sFormat = sArrDateTimeFormat[iTempIndex];
sInRegex = apo._getRegexComponentForFormat(sInRegex, sFormat);
}
sInRegex += sRegexEnd;
sDateTimeRegex = new RegExp(sInRegex, "g");
return sDateTimeRegex;
},
_getRegexComponentForFormat: function(sInRegex, sFormat)
{
var apo = this;
if(sFormat === "d" || sFormat === "dd")
{
sInRegex += "(\\d{1,2})";
}
else if(sFormat === "DD")
{
sInRegex += "(";
sInRegex += apo.setting.i18n.veryShortDays.join("|");
sInRegex += ")";
}
else if(sFormat === "DDD")
{
sInRegex += "(";
sInRegex += apo.setting.i18n.shortDays.join("|");
sInRegex += ")";
}
else if(sFormat === "DDDD")
{
sInRegex += "(";
sInRegex += apo.setting.i18n.fullDays.join("|");
sInRegex += ")";
}
else if(sFormat === "M" || sFormat === "MM")
{
sInRegex += "(\\d{1,2})";
}
else if(sFormat === "MMM")
{
sInRegex += "(";
sInRegex += apo.setting.i18n.shortMonths.join("|");
sInRegex += ")";
}
else if(sFormat === "MMMM")
{
sInRegex += "(";
sInRegex += apo.setting.i18n.fullMonths.join("|");
sInRegex += ")";
}
else if($.CF.compareStrings(sFormat, "y") || $.CF.compareStrings(sFormat, "yyyy"))
{
sInRegex += "(\\d{1,4})";
}
else if($.CF.compareStrings(sFormat, "yy"))
{
sInRegex += "(\\d{2})";
}
else if($.CF.compareStrings(sFormat, "h") || $.CF.compareStrings(sFormat, "hh"))
{
sInRegex += "(\\d{1,2})";
}
else if(sFormat === "m" || sFormat === "mm")
{
sInRegex += "(\\d{1,2})";
}
else if(sFormat === "s" || sFormat === "ss")
{
sInRegex += "(\\d{1,2})";
}
else if(sFormat === "a" || sFormat === "aa" || sFormat === "A" || sFormat === "AA")
{
sInRegex += "(";
if(sFormat === "a")
sInRegex += apo.setting.i18n.meridiem.a.join("|");
else if(sFormat === "aa")
sInRegex += apo.setting.i18n.meridiem.aa.join("|");
else if(sFormat === "A")
sInRegex += apo.setting.i18n.meridiem.A.join("|");
else if(sFormat === "AA")
sInRegex += apo.setting.i18n.meridiem.AA.join("|");
sInRegex += ")";
}
else if(sFormat === "/" || sFormat === "-" || sFormat === "." || sFormat === " " || sFormat === ":" || sFormat === ",")
{
sInRegex += "(/|-|.| |:|,)";
}
else
{
sInRegex += "(" + sFormat + ")";
}
return sInRegex;
},
_matchRegex: function(sRegex, sString)
{
var apo = this;
var sArrOut = [], sArrString = [];
while((sArrString = sRegex.exec(sString)) !== null)
{
for(var iTempIndex = 3; iTempIndex < sArrString.length; iTempIndex++)
{
sArrOut.push(sArrString[iTempIndex]);
}
if(sArrString.index === sRegex.lastIndex)
{
sRegex.lastIndex++;
}
}
return sArrOut;
},
_parseInputDateTime: function(sDate)
{
var apo = this;
var oThisDate = null, oDate = {},
iTempIndex, sFormat, sDTComp,
iArrDateTimeComps, sDateTimeRegex, iArrDateTimeFormatComps;
if(typeof sDate === "string")
{
iArrDateTimeFormatComps = apo.tmp.diffDateTimeFormats ? apo.tmp.sArrInputDateTimeFormat : apo.tmp.sArrDateTimeFormat;
sDateTimeRegex = apo.tmp.diffDateTimeFormats ? apo.tmp.sInputDateTimeRegex : apo.tmp.sDateTimeRegex;
iArrDateTimeComps = apo._matchRegex(sDateTimeRegex, sDate);
for(iTempIndex = 0; iTempIndex < iArrDateTimeFormatComps.length; iTempIndex++)
{
sFormat = iArrDateTimeFormatComps[iTempIndex];
sDTComp = iArrDateTimeComps[iTempIndex];
if(sFormat.search(/D|d|M|y|Y|H|h|m|s|A|a/, "") !== -1)
oDate = apo._setInputDateTimeValue(sFormat, sDTComp, oDate);
}
if($.CF.isValid(oDate.h))
{
if(($.CF.compareStrings(oDate.me, "AM") || $.CF.compareStrings(oDate.sm, "A")) && oDate.h === 12)
oDate.H = 0;
else if(($.CF.compareStrings(oDate.me, "PM") || $.CF.compareStrings(oDate.sm, "P")) && oDate.h < 12)
oDate.H = oDate.h + 12;
else
oDate.H = oDate.h;
}
oThisDate = apo.setDateInFormat({"iDate": oDate}, "");
}
else if(Object.prototype.toString.call(sDate) === "[object Date]")
{
oThisDate = new Date(sDate);
}
return oThisDate;
},
_setInputDateTimeValue: function(sDateTimeFormat, sDateTimeValue, oThisDate)
{
var apo = this;
if(apo._isSupportedFormat(sDateTimeFormat))
{
if(sDateTimeFormat === "d" || sDateTimeFormat === "dd")
{
oThisDate.d = parseInt(sDateTimeValue);
}
else if(sDateTimeFormat === "M" || sDateTimeFormat === "MM")
{
oThisDate.M = parseInt(sDateTimeValue) - 1;
}
else if(sDateTimeFormat === "MMM")
{
oThisDate.M = apo.setting.i18n.shortMonths.indexOf(sDateTimeValue);
}
else if(sDateTimeFormat === "MMMM")
{
oThisDate.M = apo.setting.i18n.fullMonths.indexOf(sDateTimeValue);
}
else if($.CF.compareStrings(sDateTimeFormat, "yy"))
{
oThisDate.y = parseInt(sDateTimeValue);
var iMaxPrefix = (apo.setting.maxYear / 100),
iMaxSuffix = (apo.setting.maxYear % 100);
if(oThisDate.y > iMaxSuffix)
oThisDate.y = ((iMaxPrefix - 1) * 100) + oThisDate.y;
else
oThisDate.y = (iMaxPrefix * 100) + oThisDate.y;
}
else if($.CF.compareStrings(sDateTimeFormat, "y") || $.CF.compareStrings(sDateTimeFormat, "yyyy"))
{
oThisDate.y = parseInt(sDateTimeValue);
}
else if(sDateTimeFormat === "H" || sDateTimeFormat === "HH")
{
oThisDate.H = parseInt(sDateTimeValue);
}
else if(sDateTimeFormat === "h" || sDateTimeFormat === "hh")
{
oThisDate.h = parseInt(sDateTimeValue);
}
else if(sDateTimeFormat === "m" || sDateTimeFormat === "mm")
{
oThisDate.m = parseInt(sDateTimeValue);
}
else if(sDateTimeFormat === "s" || sDateTimeFormat === "ss")
{
oThisDate.s = parseInt(sDateTimeValue);
}
else if(sDateTimeFormat === "a" || sDateTimeFormat === "A")
{
if($.CF.isValid(sDateTimeValue))
{
if(sDateTimeValue.search(/A/gi, "") !== -1)
oThisDate.me = "A";
else if(sDateTimeValue.search(/P/gi, "") !== -1)
oThisDate.me = "P";
}
}
else if(sDateTimeFormat === "aa" || sDateTimeFormat === "AA")
{
if($.CF.isValid(sDateTimeValue))
{
if(sDateTimeValue.search(/AM/gi, "") !== -1)
oThisDate.me = "AM";
else if(sDateTimeValue.search(/PM/gi, "") !== -1)
oThisDate.me = "PM";
}
}
}
return oThisDate;
},
formatOutputDates: function(dDate, oFormat)
{
var apo = this;
var sOutput = "", sFormat, iTempIndex,
sArrFormat, oDate;
if($.CF.isValid(oFormat))
{
if(typeof oFormat === "string")
sArrFormat = apo._setDateTimeFormatComponentsArray(oFormat);
else if(typeof oFormat === "object")
sArrFormat = oFormat;
else
sArrFormat = (apo.tmp.diffDateTimeFormats ? apo.tmp.sArrInputDateTimeFormat : apo.tmp.sArrDateTimeFormat);
}
else
sArrFormat = (apo.tmp.diffDateTimeFormats ? apo.tmp.sArrInputDateTimeFormat : apo.tmp.sArrDateTimeFormat);
oDate = apo.getDateObject(dDate);
for(iTempIndex = 0; iTempIndex < sArrFormat.length; iTempIndex++)
{
sFormat = sArrFormat[iTempIndex];
if(sFormat === "dd")
{
sOutput += apo.getNumberStringInFormat(oDate.d, 2, true);
}
else if(sFormat === "d")
{
sOutput += apo.getNumberStringInFormat(oDate.d, 0, true);
}
else if(sFormat === "DDDD")
{
sOutput += apo.setting.i18n.fullDays[oDate.D];
}
else if(sFormat === "DDD")
{
sOutput += apo.setting.i18n.shortDays[oDate.D];
}
else if(sFormat === "DD")
{
sOutput += apo.setting.i18n.veryShortDays[oDate.D];
}
else if(sFormat === "MMMM")
{
sOutput += apo.setting.i18n.fullMonths[oDate.M];
}
else if(sFormat === "MMM")
{
sOutput += apo.setting.i18n.shortMonths[oDate.M];
}
else if(sFormat === "MM")
{
sOutput += apo.getNumberStringInFormat((oDate.M + 1), 2, true);
}
else if(sFormat === "M")
{
sOutput += apo.getNumberStringInFormat((oDate.M + 1), 0, true);
}
else if($.CF.compareStrings(sFormat, "yyyy"))
{
sOutput += apo.getNumberStringInFormat(oDate.y, 4, true);
}
else if($.CF.compareStrings(sFormat, "yy"))
{
var iYear = ((Math.floor(oDate.y / 10) % 10) * 10) + (oDate.y % 10);
sOutput += apo.getNumberStringInFormat(iYear, 2, true);
}
else if($.CF.compareStrings(sFormat, "y"))
{
sOutput += apo.getNumberStringInFormat(oDate.y, 4, true);
}
else if(sFormat === "hh")
{
sOutput += apo.getNumberStringInFormat(oDate.h, 2, true);
}
else if(sFormat === "h")
{
sOutput += apo.getNumberStringInFormat(oDate.h, 0, true);
}
else if(sFormat === "HH")
{
sOutput += apo.getNumberStringInFormat(oDate.H, 2, true);
}
else if(sFormat === "H")
{
sOutput += apo.getNumberStringInFormat(oDate.H, 0, true);
}
else if(sFormat === "mm")
{
sOutput += apo.getNumberStringInFormat(oDate.m, 2, true);
}
else if(sFormat === "m")
{
sOutput += apo.getNumberStringInFormat(oDate.m, 0, true);
}
else if(sFormat === "ss")
{
sOutput += apo.getNumberStringInFormat(oDate.s, 2, true);
}
else if(sFormat === "s")
{
sOutput += apo.getNumberStringInFormat(oDate.s, 0, true);
}
else if(sFormat === "aa")
{
sOutput += oDate.me;
}
else if(sFormat === "a")
{
sOutput += oDate.sm;
}
else if(sFormat === "AA")
{
sOutput += oDate.me.toUpperCase();
}
else if(sFormat === "A")
{
sOutput += oDate.sm.toUpperCase();
}
else
{
sOutput += sFormat;
}
}
return sOutput;
},
parseDisableValues: function()
{
var apo = this;
apo.tmp.oMinMax =
{
min: null,
max: null
};
apo.tmp.oArrPDisable =
{
day: [],
date: [],
time: [],
datetime: []
};
var iTempIndex, iTempIndex1, iTempIndex2;
if($.CF.isValid(apo.setting.minValue))
{
var dMin = apo._parseInputDateTime(apo.setting.minValue);
if($.CF.isValid(dMin))
apo.tmp.oMinMax.min = dMin;
}
if($.CF.isValid(apo.setting.maxValue))
{
var dMax = apo._parseInputDateTime(apo.setting.maxValue);
if($.CF.isValid(dMax))
apo.tmp.oMinMax.max = dMax;
}
var bIsOutOfBounds = false;
if($.CF.isValid(apo.tmp.oMinMax.min) && $.CF.isValid(apo.tmp.oMinMax.max))
{
if(apo.tmp.sDateTimeMode === "date")
{
if(!(apo.compareDates(apo.tmp.selectedDate, apo.tmp.oMinMax.min) >= 1 && apo.compareDates(apo.tmp.selectedDate, apo.tmp.oMinMax.max) <= -1))
bIsOutOfBounds = true;
}
else if(apo.tmp.sDateTimeMode === "time")
{
if(!(apo.compareTimes(apo.tmp.selectedDate, apo.tmp.oMinMax.min) >= 1 && apo.compareTimes(apo.tmp.selectedDate, apo.tmp.oMinMax.max) <= -1))
bIsOutOfBounds = true;
}
else if(apo.tmp.sDateTimeMode === "datetime")
{
if(!(apo.compareDateTimes(apo.tmp.selectedDate, apo.tmp.oMinMax.min) >= 1 && apo.compareDateTimes(apo.tmp.selectedDate, apo.tmp.oMinMax.max) <= -1))
bIsOutOfBounds = true;
}
if(bIsOutOfBounds)
{
apo.setting.selectedDate = new Date(apo.tmp.oMinMax.min);
apo.tmp.selectedDate = new Date(apo.tmp.oMinMax.min);
}
}
else if($.CF.isValid(apo.tmp.oMinMax.min))
{
if(apo.tmp.sDateTimeMode === "date")
{
if(apo.compareDates(apo.tmp.selectedDate, apo.tmp.oMinMax.min) < -1)
bIsOutOfBounds = true;
}
else if(apo.tmp.sDateTimeMode === "time")
{
if(apo.compareTimes(apo.tmp.selectedDate, apo.tmp.oMinMax.min) < -1)
bIsOutOfBounds = true;
}
else if(apo.tmp.sDateTimeMode === "datetime")
{
if(apo.compareDateTimes(apo.tmp.selectedDate, apo.tmp.oMinMax.min) < -1)
bIsOutOfBounds = true;
}
if(bIsOutOfBounds)
{
apo.setting.selectedDate = new Date(apo.tmp.oMinMax.min);
apo.tmp.selectedDate = new Date(apo.tmp.oMinMax.min);
}
}
else if($.CF.isValid(apo.tmp.oMinMax.max))
{
if(apo.tmp.sDateTimeMode === "date")
{
if(apo.compareDates(apo.tmp.selectedDate, apo.tmp.oMinMax.max) > 1)
bIsOutOfBounds = true;
}
else if(apo.tmp.sDateTimeMode === "time")
{
if(apo.compareTimes(apo.tmp.selectedDate, apo.tmp.oMinMax.max) > 1)
bIsOutOfBounds = true;
}
else if(apo.tmp.sDateTimeMode === "datetime")
{
if(apo.compareDateTimes(apo.tmp.selectedDate, apo.tmp.oMinMax.max) > 1)
bIsOutOfBounds = true;
}
if(bIsOutOfBounds)
{
apo.setting.selectedDate = new Date(apo.tmp.oMinMax.max);
apo.tmp.selectedDate = new Date(apo.tmp.oMinMax.max);
}
}
if(apo.tmp.sDateTimeMode === "date")
apo.tmp.oArrPDisable.date.push(apo.tmp.oMinMax);
else if(apo.tmp.sDateTimeMode === "time")
apo.tmp.oArrPDisable.time.push({day: [], val: [apo.tmp.oMinMax]});
else if(apo.tmp.sDateTimeMode === "datetime")
apo.tmp.oArrPDisable.datetime.push(apo.tmp.oMinMax);
if($.CF.isValid(apo.setting.disableValues))
{
if($.CF.isValid(apo.setting.disableValues.day) && apo.setting.disableValues.day.length > 0)
{
for(iTempIndex = 0; iTempIndex < apo.setting.disableValues.day.length; iTempIndex++)
{
if(apo.setting.disableValues.day[iTempIndex] >= 0 && apo.setting.disableValues.day[iTempIndex] <= 6)
{
apo.tmp.oArrPDisable.day.push(apo.setting.disableValues.day[iTempIndex]);
}
}
}
if($.CF.isValid(apo.setting.disableValues.date) && apo.setting.disableValues.date.length > 0)
{
for(iTempIndex = 0; iTempIndex < apo.setting.disableValues.date.length; iTempIndex++)
{
var oDate = apo.setting.disableValues.date[iTempIndex],
oOutDate = null;
if($.CF.isValid(oDate.val))
{
var oDateVal = apo._parseInputDateTime(oDate.val);
if($.CF.isValid(oDateVal))
{
if(oOutDate === null)
oOutDate = {};
oOutDate.val = oDateVal;
}
}
if($.CF.isValid(oDate.start))
{
var oDateStart = apo._parseInputDateTime(oDate.start);
if($.CF.isValid(oDateStart))
{
if(oOutDate === null)
oOutDate = {};
oOutDate.start = oDateStart;
}
}
if($.CF.isValid(oDate.end))
{
var oDateEnd = apo._parseInputDateTime(oDate.end);
if($.CF.isValid(oDateEnd))
{
if(oOutDate === null)
oOutDate = {};
oOutDate.end = oDateEnd;
}
}
if($.CF.isValid(oOutDate))
apo.tmp.oArrPDisable.date.push(oOutDate);
}
}
if($.CF.isValid(apo.setting.disableValues.time) && apo.setting.disableValues.time.length > 0)
{
for(iTempIndex1 = 0; iTempIndex1 < apo.setting.disableValues.time.length; iTempIndex1++)
{
var oDayTime = apo.setting.disableValues.time[iTempIndex1],
bIsValidDay = $.CF.isValid(oDayTime.day) && (oDayTime.day.length > 0),
bIsValidVal = $.CF.isValid(oDayTime.val) && (oDayTime.val.length > 0);
if(bIsValidVal)
{
var oArrTimes = [];
for(iTempIndex2 = 0; iTempIndex2 < oDayTime.val.length; iTempIndex2++)
{
var oTime = oDayTime.val[iTempIndex2],
oOutTime = null;
if($.CF.isValid(oTime.val))
{
var oTimeVal = apo._parseInputDateTime(oTime.val);
if($.CF.isValid(oTimeVal))
{
if(oOutTime === null)
oOutTime = {};
oOutTime.val = oTime;
}
}
if($.CF.isValid(oTime.start))
{
var oTimeStart = apo._parseInputDateTime(oTime.start);
if($.CF.isValid(oTimeStart))
{
if(oOutTime === null)
oOutTime = {};
oOutTime.start = oTimeStart;
}
}
if($.CF.isValid(oTime.end))
{
var oTimeEnd = apo._parseInputDateTime(oTime.end);
if($.CF.isValid(oTimeEnd))
{
if(oOutTime === null)
oOutTime = {};
oOutTime.end = oTimeEnd;
}
}
if($.CF.isValid(oOutTime))
oArrTimes.push(oOutTime);
}
if(oArrTimes.length > 0)
{
apo.tmp.oArrPDisable.time.push(
{
day: (bIsValidDay ? oDayTime.day : []),
val: oArrTimes
});
}
}
}
}
if($.CF.isValid(apo.setting.disableValues.datetime) && apo.setting.disableValues.datetime.length > 0)
{
for(iTempIndex1 = 0; iTempIndex1 < apo.setting.disableValues.datetime.length; iTempIndex1++)
{
var oDateTime = apo.setting.disableValues.datetime[iTempIndex1],
oOutDateTime = null;
if($.CF.isValid(oDateTime.val))
{
var oDateTimeVal = apo._parseInputDateTime(oDateTime.val);
if($.CF.isValid(oDateTimeVal))
{
if(oOutDateTime === null)
oOutDateTime = {};
oOutDateTime.val = oDateTimeVal;
}
}
if($.CF.isValid(oDateTime.start))
{
var oDateTimeStart = apo._parseInputDateTime(oDateTime.start);
if($.CF.isValid(oDateTimeStart))
{
if(oOutDateTime === null)
oOutDateTime = {};
oOutDateTime.start = oDateTimeStart;
}
}
if($.CF.isValid(oDateTime.end))
{
var oDateTimeEnd = apo._parseInputDateTime(oDateTime.end);
if($.CF.isValid(oDateTimeEnd))
{
if(oOutDateTime === null)
oOutDateTime = {};
oOutDateTime.end = oDateTimeEnd;
}
}
if($.CF.isValid(oOutDateTime))
apo.tmp.oArrPDisable.datetime.push(oOutDateTime);
}
}
}
else
1;
},
__setSelectedDateTimeInComponent: function()
{
var apo = this;
var iTempIndex, oComp, sValue = "", iChars,
oSelectedDate = apo.getDateObject(apo.tmp.selectedDate);
for(iTempIndex = 0; iTempIndex < apo.tmp.numOfComp; iTempIndex++)
{
oComp = apo.setting.components[iTempIndex];
if(oComp.name === "date")
{
sValue = oSelectedDate.d;
}
else if(oComp.name === "day")
{
sValue = oSelectedDate.D;
}
else if(oComp.name === "month")
{
sValue = oSelectedDate.M;
}
else if(oComp.name === "year")
{
sValue = oSelectedDate.y;
}
else if(oComp.name === "hours")
{
if(oComp.format === "h" || oComp.format === "hh")
sValue = oSelectedDate.h;
else if(oComp.format === "H" || oComp.format === "HH")
sValue = oSelectedDate.H;
}
else if(oComp.name === "minutes")
{
sValue = oSelectedDate.m;
}
else if(oComp.name === "seconds")
{
sValue = oSelectedDate.s;
}
else if(oComp.name === "meridiem")
{
if(oSelectedDate.sm === "a")
sValue = 0;
else if(oSelectedDate.sm === "p")
sValue = 1;
}
apo.__changeComponentValue(iTempIndex, sValue);
}
},
__disableInvalidRowsOfDateTimePicker: function()
{
var apo = this;
var iTempIndex1, iTempIndex2, iTempIndex3, iTempIndex4,
oArrValues = [], sValue, oArrSelectedValues,
oComp, sCompName, sCompFormat, oData;
if(apo.tmp.numOfComp === 1)
{
oComp = apo.setting.components[0];
sCompName = oComp.name;
sCompFormat = oComp.format;
oData = apo.setting.dataSource[0].data;
if(sCompName === "day")
{
for(iTempIndex1 = 0; iTempIndex1 < oData.length; iTempIndex1++)
{
for(iTempIndex2 = 0; iTempIndex2 < apo.tmp.oArrPDisable.day.length; iTempIndex2++)
{
if(apo.tmp.oArrPDisable.day[iTempIndex2] === oData[iTempIndex2].val)
{
$(apo.elem).find("#ap-row-0-" + iTempIndex1).addClass("ap-row-disabled ap-row-invalid");
}
}
}
}
}
else
{
oArrSelectedValues = apo.__getSelectedDate(true)[1];
for(iTempIndex1 = 0; iTempIndex1 < apo.setting.dataSource.length; iTempIndex1++)
{
var oData1 = apo.setting.dataSource[iTempIndex1];
for(iTempIndex2 = 0; iTempIndex2 < oData1.data.length; iTempIndex2++)
{
var oDateToValidate = {
d: 1,
M: 0,
y: 0,
H: 0,
h: 0,
m: 0,
s: 0,
sm: 0
};
for(iTempIndex3 = 0; iTempIndex3 < apo.tmp.numOfComp; iTempIndex3++)
{
if(iTempIndex3 === iTempIndex1)
{
sValue = oData1.data[iTempIndex2].val;
oComp = apo.setting.components[iTempIndex3];
sCompName = oComp.name;
sCompFormat = oComp.format;
}
else
{
sValue = oArrSelectedValues[iTempIndex3];
oComp = apo.setting.components[iTempIndex3];
sCompName = oComp.name;
sCompFormat = oComp.format;
}
if(sCompName === "date")
{
oDateToValidate.d = parseInt(sValue);
}
else if(sCompName === "month")
{
oDateToValidate.M = parseInt(sValue);
}
else if(sCompName === "year")
{
oDateToValidate.y = parseInt(sValue);
}
else if(sCompName === "hours")
{
if(sCompFormat === "h" || sCompFormat === "hh")
{
oDateToValidate.h = parseInt(sValue);
oDateToValidate.H = -1;
}
else if(sCompFormat === "H" || sCompFormat === "HH")
{
oDateToValidate.H = parseInt(sValue);
}
}
else if(sCompName === "minutes")
{
oDateToValidate.m = parseInt(sValue);
}
else if(sCompName === "seconds")
{
oDateToValidate.s = parseInt(sValue);
}
else if(sCompName === "meridiem")
{
oDateToValidate.sm = parseInt(sValue);
}
}
if(oDateToValidate.H === -1)
{
oDateToValidate.H = (oDateToValidate.sm === 1) ? ((oDateToValidate.h === 12) ? 12 : (oDateToValidate.h + 12)) : ((oDateToValidate.h === 12) ? 0 : oDateToValidate.h);
}
var dNewSelectedDate = apo.setDateInFormat({"iDate": oDateToValidate}, "");
var bValidDate = apo.__validateSelectedDate(dNewSelectedDate, true, false);
if(!bValidDate)
{
$("#ap-component-" + iTempIndex1).find("#ap-row-" + iTempIndex1 + "-" + iTempIndex2).addClass("ap-row-disabled ap-row-invalid");
}
}
}
}
},
__getSelectedDate: function(bGetObject)
{
var apo = this;
var iTempIndex, oComp, oArrSelected, oElemSelected, iValue,
oNewSelectedDate = apo.getDateObject(apo.tmp.selectedDate),
dNewSelectedDate = {}, iMeridiem = 0, oArrSelectedValues = [];
for(iTempIndex = 0; iTempIndex < apo.tmp.numOfComp; iTempIndex++)
{
oComp = apo.setting.components[iTempIndex];
oArrSelected = $(apo.tmp.overlaySelector).find("#ap-component-" + iTempIndex + " .ap-row-selected");
oElemSelected = (oArrSelected.length > 0) ? oArrSelected[0] : null;
iValue = parseInt($(oElemSelected).data('value'));
oArrSelectedValues.push(iValue);
if(oComp.name === "date")
{
oNewSelectedDate.d = isNaN(iValue) ? oNewSelectedDate.d : iValue;
}
else if(oComp.name === "day")
{
oNewSelectedDate.D = isNaN(iValue) ? oNewSelectedDate.D : iValue;
}
else if(oComp.name === "month")
{
oNewSelectedDate.M = isNaN(iValue) ? oNewSelectedDate.M : iValue;
}
else if(oComp.name === "year")
{
oNewSelectedDate.y = isNaN(iValue) ? oNewSelectedDate.y : iValue;
}
else if(oComp.name === "hours")
{
if(oComp.format === "h" || oComp.format === "hh")
{
oNewSelectedDate.h = isNaN(iValue) ? oNewSelectedDate.h : iValue;
oNewSelectedDate.H = -1;
}
else
oNewSelectedDate.H = isNaN(iValue) ? oNewSelectedDate.H : iValue;
}
else if(oComp.name === "minutes")
{
oNewSelectedDate.m = isNaN(iValue) ? oNewSelectedDate.m : iValue;
}
else if(oComp.name === "seconds")
{
oNewSelectedDate.s = isNaN(iValue) ? oNewSelectedDate.s : iValue;
}
else if(oComp.name === "meridiem")
{
iMeridiem = isNaN(iValue) ? (oNewSelectedDate.sm === "a" ? 0 : 1) : iValue;
}
}
if(oNewSelectedDate.H === -1)
{
oNewSelectedDate.H = (iMeridiem === 1) ? ((oNewSelectedDate.h === 12) ? 12 : (oNewSelectedDate.h + 12)) : ((oNewSelectedDate.h === 12) ? 0 : oNewSelectedDate.h);
}
var iNoOfDays = apo._getNumberOfDaysOfMonth(oNewSelectedDate.M, oNewSelectedDate.y);
if(oNewSelectedDate.d > iNoOfDays)
oNewSelectedDate.d = iNoOfDays;
dNewSelectedDate = apo.setDateInFormat({"iDate": oNewSelectedDate}, "");
if(bGetObject)
return [dNewSelectedDate, oArrSelectedValues];
else
return dNewSelectedDate;
},
__validateSelectedDate: function(dNewSelectedDate, bReturnResult, bIsBefore)
{
var apo = this;
var oNewSelectedDate = apo.getDateObject(dNewSelectedDate);
if($.CF.isValid(apo.tmp.oArrPDisable))
{
var iTempIndex1, iTempIndex2,
bHasDateComponent = (apo.tmp.sDateTimeMode === "datetime" || apo.tmp.sDateTimeMode === "date"),
bHasTimeComponent = (apo.tmp.sDateTimeMode === "datetime" || apo.tmp.sDateTimeMode === "time"),
bInvalidSelected = false,
bResult = true,
bLTMin, bGTMax, bDirIsBefore, oDateRecord, oTimeRecord;
if(!bInvalidSelected && bHasDateComponent && apo.tmp.oArrPDisable.day.length > 0)
{
for(iTempIndex1 = 0; iTempIndex1 < apo.tmp.oArrPDisable.day.length; iTempIndex1++)
{
if(apo.tmp.oArrPDisable.day[iTempIndex1] === oNewSelectedDate.D)
{
if(apo.compareDates(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(bIsBefore, dNewSelectedDate, "day");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
}
else
{
}
if(!bInvalidSelected && bHasDateComponent && apo.tmp.oArrPDisable.date.length > 0)
{
for(iTempIndex1 = 0; iTempIndex1 < apo.tmp.oArrPDisable.date.length; iTempIndex1++)
{
oDateRecord = apo.tmp.oArrPDisable.date[iTempIndex1];
if($.CF.isValid(oDateRecord.val))
{
if(apo.compareDates(dNewSelectedDate, oDateRecord.val) === 0)
{
if(apo.compareDates(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(bIsBefore, dNewSelectedDate, "date");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oDateRecord.start) && $.CF.isValid(oDateRecord.end))
{
if(apo.compareDates(dNewSelectedDate, oDateRecord.start) >= 0 && apo.compareDates(dNewSelectedDate, oDateRecord.end) <= 0)
{
if(apo.compareDates(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(bIsBefore, oDateRecord.start, "date");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oDateRecord.start))
{
if(apo.compareDates(dNewSelectedDate, oDateRecord.start) >= 0)
{
if(apo.compareDates(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(true, oDateRecord.start, "date");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oDateRecord.end))
{
if(apo.compareDates(dNewSelectedDate, oDateRecord.end) <= 0)
{
if(apo.compareDates(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(false, oDateRecord.end, "date");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oDateRecord.min) && $.CF.isValid(oDateRecord.max))
{
bLTMin = apo.compareDates(dNewSelectedDate, oDateRecord.min) < 0;
bGTMax = apo.compareDates(dNewSelectedDate, oDateRecord.max) > 0;
bDirIsBefore = bLTMin ? true : bGTMax ? false : true;
if(bLTMin || bGTMax)
{
if(apo.compareDates(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(bDirIsBefore, oDateRecord.min, "date");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oDateRecord.min))
{
if(apo.compareDates(dNewSelectedDate, oDateRecord.min) < 0)
{
if(apo.compareDates(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(false, oDateRecord.min, "date");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oDateRecord.max))
{
if(apo.compareDates(dNewSelectedDate, oDateRecord.max) > 0)
{
if(apo.compareDates(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(true, oDateRecord.max, "date");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
}
}
else
{
}
if(!bInvalidSelected && bHasTimeComponent && apo.tmp.oArrPDisable.time.length > 0)
{
for(iTempIndex1 = 0; iTempIndex1 < apo.tmp.oArrPDisable.time.length; iTempIndex1++)
{
var oDayRecord = apo.tmp.oArrPDisable.time[iTempIndex1],
bIsValidDay = false;
if($.CF.isValid(oDayRecord.day) && oDayRecord.day.length > 0)
{
for(iTempIndex2 = 0; iTempIndex2 < oDayRecord.day.length; iTempIndex2++)
{
bIsValidDay = (oDayRecord.day[iTempIndex2] === oNewSelectedDate.D);
if(bIsValidDay)
break;
}
}
else
bIsValidDay = true;
if(bIsValidDay)
{
for(iTempIndex2 = 0; iTempIndex2 < oDayRecord.val.length; iTempIndex2++)
{
oTimeRecord = oDayRecord.val[iTempIndex2];
if($.CF.isValid(oTimeRecord.val))
{
if(apo.compareTimes(dNewSelectedDate, oTimeRecord.val) === 0)
{
if(apo.compareTimes(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(bIsBefore, dNewSelectedDate, "time");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oTimeRecord.start) && $.CF.isValid(oTimeRecord.end))
{
if(apo.compareTimes(dNewSelectedDate, oTimeRecord.start) >= 0 && apo.compareTimes(dNewSelectedDate, oTimeRecord.end) <= 0)
{
if(apo.compareTimes(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(bIsBefore, oTimeRecord.start, "time");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oTimeRecord.start))
{
if(apo.compareTimes(dNewSelectedDate, oTimeRecord.start) >= 0)
{
if(apo.compareTimes(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(true, oTimeRecord.start, "time");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oTimeRecord.end))
{
if(apo.compareTimes(dNewSelectedDate, oTimeRecord.end) <= 0)
{
if(apo.compareTimes(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(false, oTimeRecord.end, "time");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oTimeRecord.min) && $.CF.isValid(oTimeRecord.max))
{
bLTMin = apo.compareTimes(dNewSelectedDate, oTimeRecord.min) < 0;
bGTMax = apo.compareTimes(dNewSelectedDate, oTimeRecord.max) > 0;
bDirIsBefore = bLTMin ? true : bGTMax ? false : true;
if(bLTMin || bGTMax)
{
if(apo.compareTimes(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(bDirIsBefore, oTimeRecord.min, "time");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oTimeRecord.min))
{
if(apo.compareTimes(dNewSelectedDate, oTimeRecord.min) < 0)
{
if(apo.compareTimes(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(false, oTimeRecord.min, "time");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oTimeRecord.max))
{
if(apo.compareTimes(dNewSelectedDate, oTimeRecord.max) > 0)
{
if(apo.compareTimes(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(true, oTimeRecord.max, "time");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
}
}
}
}
else
{
}
if(!bInvalidSelected && bHasTimeComponent && apo.tmp.oArrPDisable.datetime.length > 0)
{
for(iTempIndex1 = 0; iTempIndex1 < apo.tmp.oArrPDisable.datetime.length; iTempIndex1++)
{
oDateRecord = apo.tmp.oArrPDisable.datetime[iTempIndex1];
if($.CF.isValid(oDateRecord.val))
{
if(apo.compareDateTimes(dNewSelectedDate, oDateRecord.val) === 0)
{
if(apo.compareDateTimes(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(bIsBefore, dNewSelectedDate, "datetime");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oDateRecord.start) && $.CF.isValid(oDateRecord.end))
{
if(apo.compareDateTimes(dNewSelectedDate, oDateRecord.start) >= 0 && apo.compareDateTimes(dNewSelectedDate, oDateRecord.end) <= 0)
{
if(apo.compareDateTimes(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(bIsBefore, oDateRecord.start, "datetime");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oDateRecord.start))
{
if(apo.compareDateTimes(dNewSelectedDate, oDateRecord.start) >= 0)
{
if(apo.compareDateTimes(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(true, oDateRecord.start, "datetime");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oDateRecord.end))
{
if(apo.compareDateTimes(dNewSelectedDate, oDateRecord.end) <= 0)
{
if(apo.compareDateTimes(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(false, oDateRecord.end, "datetime");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oDateRecord.min) && $.CF.isValid(oDateRecord.max))
{
bLTMin = apo.compareDateTimes(dNewSelectedDate, oDateRecord.min) < 0;
bGTMax = apo.compareDateTimes(dNewSelectedDate, oDateRecord.max) > 0;
bDirIsBefore = bLTMin ? true : bGTMax ? false : true;
if(bLTMin || bGTMax)
{
if(apo.compareDateTimes(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(bDirIsBefore, oDateRecord.min, "datetime");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oDateRecord.min))
{
if(apo.compareDateTimes(dNewSelectedDate, oDateRecord.min) < 0)
{
if(apo.compareDateTimes(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(false, oDateRecord.min, "datetime");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
else if($.CF.isValid(oDateRecord.max))
{
if(apo.compareDateTimes(dNewSelectedDate, oDateRecord.max) > 0)
{
if(apo.compareDateTimes(dNewSelectedDate, apo.tmp.selectedDate) === 0)
{
bInvalidSelected = true;
dNewSelectedDate = apo._findValidSelectedDate(true, oDateRecord.max, "datetime");
apo.tmp.selectedDate = new Date(dNewSelectedDate);
apo.__scrollToSelectedRow();
}
else
{
if(bReturnResult)
bResult = false;
else
apo.__scrollToSelectedRow();
}
break;
}
}
}
}
else
{
}
if(bReturnResult)
return bResult;
}
else
{
if(bReturnResult)
return true;
}
},
_findValidSelectedDate: function(bIsBefore, dDate, sType)
{
var apo = this;
if(sType === "day" || sType === "date")
{
if($.CF.isValid(apo.setting.minValue) && apo.compareDates(apo.setting.minValue, dDate) >= 0)
{
dDate = new Date(apo.setting.minValue);
bIsBefore = false;
}
if($.CF.isValid(apo.setting.maxValue) && apo.compareDates(apo.setting.maxValue, dDate) <= 0)
{
dDate = new Date(apo.setting.maxValue);
bIsBefore = true;
}
do
{
if(bIsBefore)
dDate = new Date(dDate.getTime() - $.AnyPicker.extra.iMS.d);
else
dDate = new Date(dDate.getTime() + $.AnyPicker.extra.iMS.d);
if(apo.__validateSelectedDate(dDate, true, false))
{
if((!$.CF.isValid(apo.setting.minValue) || ($.CF.isValid(apo.setting.minValue) && apo.compareDates(apo.setting.minValue, dDate) <= 0)) && (!$.CF.isValid(apo.setting.maxValue) || ($.CF.isValid(apo.setting.maxValue) && apo.compareDates(apo.setting.maxValue, dDate) >= 0)))
{
return dDate;
}
}
}while((!$.CF.isValid(apo.setting.minValue) || ($.CF.isValid(apo.setting.minValue) && apo.compareDates(apo.setting.minValue, dDate) <= 0)) && (!$.CF.isValid(apo.setting.maxValue) || ($.CF.isValid(apo.setting.maxValue) && apo.compareDates(apo.setting.maxValue, dDate) >= 0)));
}
else if(sType === "time")
{
if($.CF.isValid(apo.setting.minValue) && apo.compareTimes(apo.setting.minValue, dDate) >= 0)
{
dDate = new Date(apo.setting.minValue);
bIsBefore = false;
}
if($.CF.isValid(apo.setting.maxValue) && apo.compareTimes(apo.setting.maxValue, dDate) <= 0)
{
dDate = new Date(apo.setting.maxValue);
bIsBefore = true;
}
do
{
if(bIsBefore)
dDate = new Date(dDate.getTime() - ($.AnyPicker.extra.iMS.m * apo.setting.intervals.m));
else
dDate = new Date(dDate.getTime() + ($.AnyPicker.extra.iMS.m * apo.setting.intervals.m));
if(apo.__validateSelectedDate(dDate, true, false))
{
if((!$.CF.isValid(apo.setting.minValue) || ($.CF.isValid(apo.setting.minValue) && apo.compareTimes(apo.setting.minValue, dDate) <= 0)) && (!$.CF.isValid(apo.setting.maxValue) || ($.CF.isValid(apo.setting.maxValue) && apo.compareTimes(apo.setting.maxValue, dDate) >= 0)))
{
return dDate;
}
}
}while((!$.CF.isValid(apo.setting.minValue) || ($.CF.isValid(apo.setting.minValue) && apo.compareTimes(apo.setting.minValue, dDate) <= 0)) && (!$.CF.isValid(apo.setting.maxValue) || ($.CF.isValid(apo.setting.maxValue) && apo.compareTimes(apo.setting.maxValue, dDate) >= 0)));
}
else if(sType === "datetime")
{
if($.CF.isValid(apo.setting.minValue) && apo.compareDateTimes(apo.setting.minValue, dDate) >= 0)
{
dDate = new Date(apo.setting.minValue);
bIsBefore = false;
}
if($.CF.isValid(apo.setting.maxValue) && apo.compareDateTimes(apo.setting.maxValue, dDate) <= 0)
{
dDate = new Date(apo.setting.maxValue);
bIsBefore = true;
}
do
{
if(bIsBefore)
dDate = new Date(dDate.getTime() - ($.AnyPicker.extra.iMS.m * apo.setting.intervals.m));
else
dDate = new Date(dDate.getTime() + ($.AnyPicker.extra.iMS.m * apo.setting.intervals.m));
if(apo.__validateSelectedDate(dDate, true, false))
{
if((!$.CF.isValid(apo.setting.minValue) || ($.CF.isValid(apo.setting.minValue) && apo.compareDateTimes(apo.setting.minValue, dDate) <= 0)) && (!$.CF.isValid(apo.setting.maxValue) || ($.CF.isValid(apo.setting.maxValue) && apo.compareDateTimes(apo.setting.maxValue, dDate) >= 0)))
{
return dDate;
}
}
}while((!$.CF.isValid(apo.setting.minValue) || ($.CF.isValid(apo.setting.minValue) && apo.compareDateTimes(apo.setting.minValue, dDate) <= 0)) && (!$.CF.isValid(apo.setting.maxValue) || ($.CF.isValid(apo.setting.maxValue) && apo.compareDateTimes(apo.setting.maxValue, dDate) >= 0)));
}
if($.CF.isValid(apo.setting.minValue))
{
return apo.setting.minValue;
}
},
__setDaysOfMonthInDatePicker: function()
{
var apo = this;
var iTempIndex, oComp, iDateComp = null, sDateCompFormat = null;
for(iTempIndex = 0; iTempIndex < apo.tmp.numOfComp; iTempIndex++)
{
oComp = apo.setting.components[iTempIndex];
if(oComp.name === "date")
{
iDateComp = oComp.component;
sDateCompFormat = oComp.format;
}
}
if(iDateComp !== null)
{
var oSelectedDate = apo.getDateObject(apo.tmp.selectedDate),
iNoOfDays = apo._getNumberOfDaysOfMonth(oSelectedDate.M, oSelectedDate.y),
bHasAria = false;
for(iTempIndex = (iNoOfDays + 1); iTempIndex <= 31; iTempIndex++)
{
var $oHiddenElem = $("#ap-component-" + iDateComp).find("#ap-row-" + iDateComp + "-" + (iTempIndex - 1));
$oHiddenElem.addClass("ap-row-disabled ap-row-hidden");
if(!bHasAria)
bHasAria = ($oHiddenElem.attr("aria-selected") === "true") ? true : false;
}
if(bHasAria)
{
var dTemp = new Date(oSelectedDate.y, oSelectedDate.M, iNoOfDays, oSelectedDate.H, oSelectedDate.m, oSelectedDate.s, oSelectedDate.ms);
apo.__validateSelectedDate(dTemp, false, true);
apo.__scrollToSelectedRow();
}
}
},
setDateInFormat: function(oInput, sType)
{
var apo = this;
if(oInput.date === undefined && oInput.iDate === undefined)
oInput.date = apo._getCurrentDate();
if(oInput.iDate === undefined)
{
oInput.iDate = {
d: oInput.date.getDate(),
M: oInput.date.getMonth(),
y: oInput.date.getFullYear(),
H: oInput.date.getHours(),
m: oInput.date.getMinutes(),
s: oInput.date.getSeconds(),
ms: oInput.date.getMilliseconds()
};
}
else
{
oInput.iDate = {
d: (oInput.iDate.d !== undefined) ? oInput.iDate.d : 1,
M: (oInput.iDate.M !== undefined) ? oInput.iDate.M : $.AnyPicker.extra.dToday.getMonth(),
y: (oInput.iDate.y !== undefined) ? oInput.iDate.y : $.AnyPicker.extra.dToday.getFullYear(),
H: (oInput.iDate.H !== undefined) ? oInput.iDate.H : 0,
m: (oInput.iDate.m !== undefined) ? oInput.iDate.m : 0,
s: (oInput.iDate.s !== undefined) ? oInput.iDate.s : 0,
ms: (oInput.iDate.ms !== undefined) ? oInput.iDate.ms : 0
};
}
var dDate;
if(!$.CF.isValid(sType))
dDate = new Date(oInput.iDate.y, oInput.iDate.M, oInput.iDate.d, oInput.iDate.H, oInput.iDate.m, oInput.iDate.s, oInput.iDate.ms);
else if(sType === "START")
dDate = new Date(oInput.iDate.y, oInput.iDate.M, oInput.iDate.d, 0, 0, 0, 0);
else if(sType === "END")
dDate = new Date(oInput.iDate.y, oInput.iDate.M, oInput.iDate.d, 23, 59, 59, 999);
return dDate;
},
_getCurrentDate: function()
{
var apo = this;
var dToday = apo.getDateByAddingOutputTZOffset(apo.convertToUTC(new Date()), apo.setting.tzOffset);
return dToday;
},
convertToUTC: function(dIpDate, sIpTZOffset)
{
var apo = this;
return new Date(dIpDate.getTime() - ((sIpTZOffset === undefined || sIpTZOffset === "" || sIpTZOffset === null) ? -(dIpDate.getTimezoneOffset() * $.AnyPicker.extra.iMS.m) : apo._getTZOffsetInMS(sIpTZOffset)));
},
_getTZOffsetInMS: function(sTZOffset)
{
var apo = this;
var iOffsetMS = 0;
if(sTZOffset === undefined || sTZOffset === "" || sTZOffset === null)
iOffsetMS = -($.AnyPicker.extra.dToday.getTimezoneOffset() * $.AnyPicker.extra.iMS.m);
else
{
var sArrTZOffset = apo._matchRegex(/^([+|-]{1})([0-1]{0,1}[0-9]{1}):([0-6]{0,1}[0-9]{1})$/, sTZOffset);
iOffsetMS = parseInt(sArrTZOffset[2]) * $.AnyPicker.extra.iMS.h + parseInt(sArrTZOffset[3]) * $.AnyPicker.extra.iMS.m;
iOffsetMS = (sArrTZOffset[1]==="+") ? iOffsetMS : -iOffsetMS;
}
return iOffsetMS;
},
getDateByAddingOutputTZOffset: function(dIpDate, sOpTZOffset)
{
var apo = this;
return new Date(dIpDate.getTime() + apo._getTZOffsetInMS(sOpTZOffset));
},
normalizeDateTimeWithOffset: function(dIpDate, sIpTZOffset, sOpTZOffset)
{
var apo = this;
return apo.getDateByAddingOutputTZOffset(apo.convertToUTC(dIpDate, sIpTZOffset), sOpTZOffset);
},
_getNumberOfDaysOfMonth: function(iMonth, iYear)
{
var apo = this;
var iArrMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
iArrLeapYearMonthDays = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
if(iYear % 4 === 0)
return iArrLeapYearMonthDays[iMonth];
else
return iArrMonthDays[iMonth];
},
_normalizeDateTime: function(dInputDate, sFunction, sUnit)
{
var apo = this;
var dOutputDate,
iArrInput =
{
d: dInputDate.getDate(),
M: dInputDate.getMonth(),
y: dInputDate.getFullYear(),
H: dInputDate.getHours(),
m: dInputDate.getMinutes(),
s: dInputDate.getSeconds()
};
switch(sUnit)
{
case "s":
{
if(sFunction === "START")
dOutputDate = new Date(iArrInput.y, iArrInput.M, iArrInput.d, iArrInput.H, iArrInput.m, 0, 0);
else if(sFunction === "END")
dOutputDate = new Date(iArrInput.y, iArrInput.M, iArrInput.d, iArrInput.H, iArrInput.m, 59, 999);
}
break;
case "m":
{
if(sFunction === "START")
dOutputDate = new Date(iArrInput.y, iArrInput.M, iArrInput.d, iArrInput.H, 0, 0, 0);
else if(sFunction === "END")
dOutputDate = new Date(iArrInput.y, iArrInput.M, iArrInput.d, iArrInput.H, 59, 59, 999);
}
break;
case "h":
case "T":
{
if(sFunction === "START")
dOutputDate = new Date(iArrInput.y, iArrInput.M, iArrInput.d, 0, 0, 0, 0);
else if(sFunction === "END")
dOutputDate = new Date(iArrInput.y, iArrInput.M, iArrInput.d, 23, 59, 59, 999);
}
break;
case "d":
case "dE":
{
if(sFunction === "START")
dOutputDate = new Date(iArrInput.y, iArrInput.M, 1, 0, 0, 0, 0);
else if(sFunction === "END")
dOutputDate = new Date(iArrInput.y, iArrInput.M, apo._getNumberOfDaysOfMonth(iArrInput.M, iArrInput.y), 0, 0, 0, 0);
}
break;
case "M":
case "ME":
case "y":
case "yE":
{
if(sFunction === "START")
dOutputDate = new Date(iArrInput.y, 0, 1, 0, 0, 0, 0);
else if(sFunction === "END")
dOutputDate = new Date(iArrInput.y, 11, apo._getNumberOfDaysOfMonth(11, iArrInput.y), 0, 0, 0, 0);
}
break;
}
if(sUnit === "dE" || sUnit === "ME" || sUnit === "yE")
dOutputDate = apo._normalizeDateTime(dOutputDate, "END", "T");
return dOutputDate;
},
_getDifference: function(sUnit, dDate1, dDate2)
{
var apo = this;
var iUnitDiff, iMSDiff = dDate1.getTime() - dDate2.getTime();
if(sUnit === "ms")
iUnitDiff = iMSDiff;
else if(sUnit === "s")
iUnitDiff = (iMSDiff / $.AnyPicker.extra.iMS.s);
else if(sUnit === "m")
iUnitDiff = (iMSDiff / $.AnyPicker.extra.iMS.m);
else if(sUnit === "h")
iUnitDiff = (iMSDiff / $.AnyPicker.extra.iMS.h);
else if(sUnit === "d")
iUnitDiff = (iMSDiff / $.AnyPicker.extra.iMS.d);
else if(sUnit === "M")
iUnitDiff = (iMSDiff / $.AnyPicker.extra.iMS.m);
else if(sUnit === "y")
iUnitDiff = (iMSDiff / $.AnyPicker.extra.iMS.y);
return iUnitDiff;
},
compareDates: function(dDate1, dDate2)
{
var apo = this;
dDate1 = apo._normalizeDateTime(dDate1, "START", "T");
dDate2 = apo._normalizeDateTime(dDate2, "START", "T");
var iDateDiff = apo._getDifference("d", dDate1, dDate2);
return (iDateDiff === 0) ? iDateDiff: (iDateDiff/Math.abs(iDateDiff));
},
compareDateTimes: function(dDate1, dDate2)
{
var apo = this;
var iDateTimeDiff = apo._getDifference("m", dDate1, dDate2);
return (iDateTimeDiff === 0) ? iDateTimeDiff: (iDateTimeDiff/Math.abs(iDateTimeDiff));
},
compareTimes: function(dDate1, dDate2)
{
var apo = this;
var dDateTime1 = new Date($.AnyPicker.extra.dToday),
dDateTime2 = new Date($.AnyPicker.extra.dToday);
dDateTime1.setHours(dDate1.getHours());
dDateTime1.setMinutes(dDate1.getMinutes());
dDateTime1.setSeconds(dDate1.getSeconds());
dDateTime2.setHours(dDate2.getHours());
dDateTime2.setMinutes(dDate2.getMinutes());
dDateTime2.setSeconds(dDate2.getSeconds());
return apo.compareDateTimes(dDateTime1, dDateTime2);
},
getNumberStringInFormat: function(iNumber, iChars, bIsLocalized)
{
var apo = this;
var iTempIndex, sFormattedString = "", sNumber = iNumber.toString(), iNumberLength = sNumber.length;
if(iChars !== 0)
{
for(iTempIndex = 0; iTempIndex < (iChars - iNumberLength); iTempIndex++)
sFormattedString += (bIsLocalized ? apo.setting.i18n.numbers[0] : "0");
}
if(!bIsLocalized)
sFormattedString += sNumber;
else
{
for(iTempIndex = 0; iTempIndex < iNumberLength; iTempIndex++)
sFormattedString += apo.setting.i18n.numbers[parseInt(sNumber.charAt(iTempIndex))];
}
return sFormattedString;
},
getDateObject: function(dInput)
{
var apo = this;
var oInput = {
D: dInput.getDay(),
d: dInput.getDate(),
M: dInput.getMonth(),
y: dInput.getFullYear(),
H: dInput.getHours(),
m: dInput.getMinutes(),
s: dInput.getSeconds(),
ms: dInput.getMilliseconds()
};
oInput.h = (oInput.H > 12) ? (oInput.H - 12) : ((oInput.H === 0) ? 12 : oInput.H);
oInput.me = (oInput.H < 12) ? "am" : "pm";
oInput.sm = (oInput.H < 12) ? "a" : "p";
return oInput;
}
});
}());