(function (global, factory){
typeof exports==='object'&&typeof module!=='undefined' ? factory(exports) :
typeof define==='function'&&define.amd ? define(['exports'], factory) :
(global=typeof globalThis!=='undefined' ? globalThis:global||self, factory(global.wpbc_Popper={}));
}(this, (function (exports){ 'use strict';
function getWindow(node){
if(node==null){
return window;
}
if(node.toString()!=='[object Window]'){
var ownerDocument=node.ownerDocument;
return ownerDocument ? ownerDocument.defaultView||window:window;
}
return node;
}
function isElement(node){
var OwnElement=getWindow(node).Element;
return node instanceof OwnElement||node instanceof Element;
}
function isHTMLElement(node){
var OwnElement=getWindow(node).HTMLElement;
return node instanceof OwnElement||node instanceof HTMLElement;
}
function isShadowRoot(node){
if(typeof ShadowRoot==='undefined'){
return false;
}
var OwnElement=getWindow(node).ShadowRoot;
return node instanceof OwnElement||node instanceof ShadowRoot;
}
var max=Math.max;
var min=Math.min;
var round=Math.round;
function getBoundingClientRect(element, includeScale){
if(includeScale===void 0){
includeScale=false;
}
var rect=element.getBoundingClientRect();
var scaleX=1;
var scaleY=1;
if(isHTMLElement(element)&&includeScale){
var offsetHeight=element.offsetHeight;
var offsetWidth=element.offsetWidth;
if(offsetWidth > 0){
scaleX=round(rect.width) / offsetWidth||1;
}
if(offsetHeight > 0){
scaleY=round(rect.height) / offsetHeight||1;
}}
return {
width: rect.width / scaleX,
height: rect.height / scaleY,
top: rect.top / scaleY,
right: rect.right / scaleX,
bottom: rect.bottom / scaleY,
left: rect.left / scaleX,
x: rect.left / scaleX,
y: rect.top / scaleY
};}
function getWindowScroll(node){
var win=getWindow(node);
var scrollLeft=win.pageXOffset;
var scrollTop=win.pageYOffset;
return {
scrollLeft: scrollLeft,
scrollTop: scrollTop
};}
function getHTMLElementScroll(element){
return {
scrollLeft: element.scrollLeft,
scrollTop: element.scrollTop
};}
function getNodeScroll(node){
if(node===getWindow(node)||!isHTMLElement(node)){
return getWindowScroll(node);
}else{
return getHTMLElementScroll(node);
}}
function getNodeName(element){
return element ? (element.nodeName||'').toLowerCase():null;
}
function getDocumentElement(element){
return ((isElement(element) ? element.ownerDocument :
element.document)||window.document).documentElement;
}
function getWindowScrollBarX(element){
return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
}
function getComputedStyle(element){
return getWindow(element).getComputedStyle(element);
}
function isScrollParent(element){
var _getComputedStyle=getComputedStyle(element),
overflow=_getComputedStyle.overflow,
overflowX=_getComputedStyle.overflowX,
overflowY=_getComputedStyle.overflowY;
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
}
function isElementScaled(element){
var rect=element.getBoundingClientRect();
var scaleX=round(rect.width) / element.offsetWidth||1;
var scaleY=round(rect.height) / element.offsetHeight||1;
return scaleX!==1||scaleY!==1;
}
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed){
if(isFixed===void 0){
isFixed=false;
}
var isOffsetParentAnElement=isHTMLElement(offsetParent);
var offsetParentIsScaled=isHTMLElement(offsetParent)&&isElementScaled(offsetParent);
var documentElement=getDocumentElement(offsetParent);
var rect=getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);
var scroll={
scrollLeft: 0,
scrollTop: 0
};
var offsets={
x: 0,
y: 0
};
if(isOffsetParentAnElement||!isOffsetParentAnElement&&!isFixed){
if(getNodeName(offsetParent)!=='body'||// https://github.com/popperjs/popper-core/issues/1078
isScrollParent(documentElement)){
scroll=getNodeScroll(offsetParent);
}
if(isHTMLElement(offsetParent)){
offsets=getBoundingClientRect(offsetParent, true);
offsets.x +=offsetParent.clientLeft;
offsets.y +=offsetParent.clientTop;
}else if(documentElement){
offsets.x=getWindowScrollBarX(documentElement);
}}
return {
x: rect.left + scroll.scrollLeft - offsets.x,
y: rect.top + scroll.scrollTop - offsets.y,
width: rect.width,
height: rect.height
};}
function getLayoutRect(element){
var clientRect=getBoundingClientRect(element);
var width=element.offsetWidth;
var height=element.offsetHeight;
if(Math.abs(clientRect.width - width) <=1){
width=clientRect.width;
}
if(Math.abs(clientRect.height - height) <=1){
height=clientRect.height;
}
return {
x: element.offsetLeft,
y: element.offsetTop,
width: width,
height: height
};}
function getParentNode(element){
if(getNodeName(element)==='html'){
return element;
}
return (
element.assignedSlot ||
element.parentNode||(
isShadowRoot(element) ? element.host:null) ||
getDocumentElement(element)
);
}
function getScrollParent(node){
if(['html', 'body', '#document'].indexOf(getNodeName(node)) >=0){
return node.ownerDocument.body;
}
if(isHTMLElement(node)&&isScrollParent(node)){
return node;
}
return getScrollParent(getParentNode(node));
}
function listScrollParents(element, list){
var _element$ownerDocumen;
if(list===void 0){
list=[];
}
var scrollParent=getScrollParent(element);
var isBody=scrollParent===((_element$ownerDocumen=element.ownerDocument)==null ? void 0:_element$ownerDocumen.body);
var win=getWindow(scrollParent);
var target=isBody ? [win].concat(win.visualViewport||[], isScrollParent(scrollParent) ? scrollParent:[]):scrollParent;
var updatedList=list.concat(target);
return isBody ? updatedList :
updatedList.concat(listScrollParents(getParentNode(target)));
}
function isTableElement(element){
return ['table', 'td', 'th'].indexOf(getNodeName(element)) >=0;
}
function getTrueOffsetParent(element){
if(!isHTMLElement(element)||// https://github.com/popperjs/popper-core/issues/837
getComputedStyle(element).position==='fixed'){
return null;
}
return element.offsetParent;
}
function getContainingBlock(element){
var isFirefox=navigator.userAgent.toLowerCase().indexOf('firefox')!==-1;
var isIE=navigator.userAgent.indexOf('Trident')!==-1;
if(isIE&&isHTMLElement(element)){
var elementCss=getComputedStyle(element);
if(elementCss.position==='fixed'){
return null;
}}
var currentNode=getParentNode(element);
while (isHTMLElement(currentNode)&&['html', 'body'].indexOf(getNodeName(currentNode)) < 0){
var css=getComputedStyle(currentNode);
if(css.transform!=='none'||css.perspective!=='none'||css.contain==='paint'||['transform', 'perspective'].indexOf(css.willChange)!==-1||isFirefox&&css.willChange==='filter'||isFirefox&&css.filter&&css.filter!=='none'){
return currentNode;
}else{
currentNode=currentNode.parentNode;
}}
return null;
}
function getOffsetParent(element){
var window=getWindow(element);
var offsetParent=getTrueOffsetParent(element);
while (offsetParent&&isTableElement(offsetParent)&&getComputedStyle(offsetParent).position==='static'){
offsetParent=getTrueOffsetParent(offsetParent);
}
if(offsetParent&&(getNodeName(offsetParent)==='html'||getNodeName(offsetParent)==='body'&&getComputedStyle(offsetParent).position==='static')){
return window;
}
return offsetParent||getContainingBlock(element)||window;
}
var top='top';
var bottom='bottom';
var right='right';
var left='left';
var auto='auto';
var basePlacements=[top, bottom, right, left];
var start='start';
var end='end';
var clippingParents='clippingParents';
var viewport='viewport';
var popper='popper';
var reference='reference';
var variationPlacements=basePlacements.reduce(function (acc, placement){
return acc.concat([placement + "-" + start, placement + "-" + end]);
}, []);
var placements=[].concat(basePlacements, [auto]).reduce(function (acc, placement){
return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
}, []);
var beforeRead='beforeRead';
var read='read';
var afterRead='afterRead';
var beforeMain='beforeMain';
var main='main';
var afterMain='afterMain';
var beforeWrite='beforeWrite';
var write='write';
var afterWrite='afterWrite';
var modifierPhases=[beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
function order(modifiers){
var map=new Map();
var visited=new Set();
var result=[];
modifiers.forEach(function (modifier){
map.set(modifier.name, modifier);
});
function sort(modifier){
visited.add(modifier.name);
var requires=[].concat(modifier.requires||[], modifier.requiresIfExists||[]);
requires.forEach(function (dep){
if(!visited.has(dep)){
var depModifier=map.get(dep);
if(depModifier){
sort(depModifier);
}}
});
result.push(modifier);
}
modifiers.forEach(function (modifier){
if(!visited.has(modifier.name)){
sort(modifier);
}});
return result;
}
function orderModifiers(modifiers){
var orderedModifiers=order(modifiers);
return modifierPhases.reduce(function (acc, phase){
return acc.concat(orderedModifiers.filter(function (modifier){
return modifier.phase===phase;
}));
}, []);
}
function debounce(fn){
var pending;
return function (){
if(!pending){
pending=new Promise(function (resolve){
Promise.resolve().then(function (){
pending=undefined;
resolve(fn());
});
});
}
return pending;
};}
function format(str){
for (var _len=arguments.length, args=new Array(_len > 1 ? _len - 1:0), _key=1; _key < _len; _key++){
args[_key - 1]=arguments[_key];
}
return [].concat(args).reduce(function (p, c){
return p.replace(/%s/, c);
}, str);
}
var INVALID_MODIFIER_ERROR='Popper: modifier "%s" provided an invalid %s property, expected %s but got %s';
var MISSING_DEPENDENCY_ERROR='Popper: modifier "%s" requires "%s", but "%s" modifier is not available';
var VALID_PROPERTIES=['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options'];
function validateModifiers(modifiers){
modifiers.forEach(function (modifier){
[].concat(Object.keys(modifier), VALID_PROPERTIES)
.filter(function (value, index, self){
return self.indexOf(value)===index;
}).forEach(function (key){
switch (key){
case 'name':
if(typeof modifier.name!=='string'){
console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\""));
}
break;
case 'enabled':
if(typeof modifier.enabled!=='boolean'){
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\""));
}
break;
case 'phase':
if(modifierPhases.indexOf(modifier.phase) < 0){
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\""));
}
break;
case 'fn':
if(typeof modifier.fn!=='function'){
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\""));
}
break;
case 'effect':
if(modifier.effect!=null&&typeof modifier.effect!=='function'){
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\""));
}
break;
case 'requires':
if(modifier.requires!=null&&!Array.isArray(modifier.requires)){
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\""));
}
break;
case 'requiresIfExists':
if(!Array.isArray(modifier.requiresIfExists)){
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\""));
}
break;
case 'options':
case 'data':
break;
default:
console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s){
return "\"" + s + "\"";
}).join(', ') + "; but \"" + key + "\" was provided.");
}
modifier.requires&&modifier.requires.forEach(function (requirement){
if(modifiers.find(function (mod){
return mod.name===requirement;
})==null){
console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));
}});
});
});
}
function uniqueBy(arr, fn){
var identifiers=new Set();
return arr.filter(function (item){
var identifier=fn(item);
if(!identifiers.has(identifier)){
identifiers.add(identifier);
return true;
}});
}
function getBasePlacement(placement){
return placement.split('-')[0];
}
function mergeByName(modifiers){
var merged=modifiers.reduce(function (merged, current){
var existing=merged[current.name];
merged[current.name]=existing ? Object.assign({}, existing, current, {
options: Object.assign({}, existing.options, current.options),
data: Object.assign({}, existing.data, current.data)
}):current;
return merged;
}, {});
return Object.keys(merged).map(function (key){
return merged[key];
});
}
function getViewportRect(element){
var win=getWindow(element);
var html=getDocumentElement(element);
var visualViewport=win.visualViewport;
var width=html.clientWidth;
var height=html.clientHeight;
var x=0;
var y=0;
if(visualViewport){
width=visualViewport.width;
height=visualViewport.height;
if(!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)){
x=visualViewport.offsetLeft;
y=visualViewport.offsetTop;
}}
return {
width: width,
height: height,
x: x + getWindowScrollBarX(element),
y: y
};}
function getDocumentRect(element){
var _element$ownerDocumen;
var html=getDocumentElement(element);
var winScroll=getWindowScroll(element);
var body=(_element$ownerDocumen=element.ownerDocument)==null ? void 0:_element$ownerDocumen.body;
var width=max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth:0, body ? body.clientWidth:0);
var height=max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight:0, body ? body.clientHeight:0);
var x=-winScroll.scrollLeft + getWindowScrollBarX(element);
var y=-winScroll.scrollTop;
if(getComputedStyle(body||html).direction==='rtl'){
x +=max(html.clientWidth, body ? body.clientWidth:0) - width;
}
return {
width: width,
height: height,
x: x,
y: y
};}
function contains(parent, child){
var rootNode=child.getRootNode&&child.getRootNode();
if(parent.contains(child)){
return true;
}
else if(rootNode&&isShadowRoot(rootNode)){
var next=child;
do {
if(next&&parent.isSameNode(next)){
return true;
}
next=next.parentNode||next.host;
} while (next);
}
return false;
}
function rectToClientRect(rect){
return Object.assign({}, rect, {
left: rect.x,
top: rect.y,
right: rect.x + rect.width,
bottom: rect.y + rect.height
});
}
function getInnerBoundingClientRect(element){
var rect=getBoundingClientRect(element);
rect.top=rect.top + element.clientTop;
rect.left=rect.left + element.clientLeft;
rect.bottom=rect.top + element.clientHeight;
rect.right=rect.left + element.clientWidth;
rect.width=element.clientWidth;
rect.height=element.clientHeight;
rect.x=rect.left;
rect.y=rect.top;
return rect;
}
function getClientRectFromMixedType(element, clippingParent){
return clippingParent===viewport ? rectToClientRect(getViewportRect(element)):isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent):rectToClientRect(getDocumentRect(getDocumentElement(element)));
}
function getClippingParents(element){
var clippingParents=listScrollParents(getParentNode(element));
var canEscapeClipping=['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >=0;
var clipperElement=canEscapeClipping&&isHTMLElement(element) ? getOffsetParent(element):element;
if(!isElement(clipperElement)){
return [];
} // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414
return clippingParents.filter(function (clippingParent){
return isElement(clippingParent)&&contains(clippingParent, clipperElement)&&getNodeName(clippingParent)!=='body';
});
}
function getClippingRect(element, boundary, rootBoundary){
var mainClippingParents=boundary==='clippingParents' ? getClippingParents(element):[].concat(boundary);
var clippingParents=[].concat(mainClippingParents, [rootBoundary]);
var firstClippingParent=clippingParents[0];
var clippingRect=clippingParents.reduce(function (accRect, clippingParent){
var rect=getClientRectFromMixedType(element, clippingParent);
accRect.top=max(rect.top, accRect.top);
accRect.right=min(rect.right, accRect.right);
accRect.bottom=min(rect.bottom, accRect.bottom);
accRect.left=max(rect.left, accRect.left);
return accRect;
}, getClientRectFromMixedType(element, firstClippingParent));
clippingRect.width=clippingRect.right - clippingRect.left;
clippingRect.height=clippingRect.bottom - clippingRect.top;
clippingRect.x=clippingRect.left;
clippingRect.y=clippingRect.top;
return clippingRect;
}
function getVariation(placement){
return placement.split('-')[1];
}
function getMainAxisFromPlacement(placement){
return ['top', 'bottom'].indexOf(placement) >=0 ? 'x':'y';
}
function computeOffsets(_ref){
var reference=_ref.reference,
element=_ref.element,
placement=_ref.placement;
var basePlacement=placement ? getBasePlacement(placement):null;
var variation=placement ? getVariation(placement):null;
var commonX=reference.x + reference.width / 2 - element.width / 2;
var commonY=reference.y + reference.height / 2 - element.height / 2;
var offsets;
switch (basePlacement){
case top:
offsets={
x: commonX,
y: reference.y - element.height
};
break;
case bottom:
offsets={
x: commonX,
y: reference.y + reference.height
};
break;
case right:
offsets={
x: reference.x + reference.width,
y: commonY
};
break;
case left:
offsets={
x: reference.x - element.width,
y: commonY
};
break;
default:
offsets={
x: reference.x,
y: reference.y
};}
var mainAxis=basePlacement ? getMainAxisFromPlacement(basePlacement):null;
if(mainAxis!=null){
var len=mainAxis==='y' ? 'height':'width';
switch (variation){
case start:
offsets[mainAxis]=offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);
break;
case end:
offsets[mainAxis]=offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);
break;
}}
return offsets;
}
function getFreshSideObject(){
return {
top: 0,
right: 0,
bottom: 0,
left: 0
};}
function mergePaddingObject(paddingObject){
return Object.assign({}, getFreshSideObject(), paddingObject);
}
function expandToHashMap(value, keys){
return keys.reduce(function (hashMap, key){
hashMap[key]=value;
return hashMap;
}, {});
}
function detectOverflow(state, options){
if(options===void 0){
options={};}
var _options=options,
_options$placement=_options.placement,
placement=_options$placement===void 0 ? state.placement:_options$placement,
_options$boundary=_options.boundary,
boundary=_options$boundary===void 0 ? clippingParents:_options$boundary,
_options$rootBoundary=_options.rootBoundary,
rootBoundary=_options$rootBoundary===void 0 ? viewport:_options$rootBoundary,
_options$elementConte=_options.elementContext,
elementContext=_options$elementConte===void 0 ? popper:_options$elementConte,
_options$altBoundary=_options.altBoundary,
altBoundary=_options$altBoundary===void 0 ? false:_options$altBoundary,
_options$padding=_options.padding,
padding=_options$padding===void 0 ? 0:_options$padding;
var paddingObject=mergePaddingObject(typeof padding!=='number' ? padding:expandToHashMap(padding, basePlacements));
var altContext=elementContext===popper ? reference:popper;
var popperRect=state.rects.popper;
var element=state.elements[altBoundary ? altContext:elementContext];
var clippingClientRect=getClippingRect(isElement(element) ? element:element.contextElement||getDocumentElement(state.elements.popper), boundary, rootBoundary);
var referenceClientRect=getBoundingClientRect(state.elements.reference);
var popperOffsets=computeOffsets({
reference: referenceClientRect,
element: popperRect,
strategy: 'absolute',
placement: placement
});
var popperClientRect=rectToClientRect(Object.assign({}, popperRect, popperOffsets));
var elementClientRect=elementContext===popper ? popperClientRect:referenceClientRect;
var overflowOffsets={
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
};
var offsetData=state.modifiersData.offset;
if(elementContext===popper&&offsetData){
var offset=offsetData[placement];
Object.keys(overflowOffsets).forEach(function (key){
var multiply=[right, bottom].indexOf(key) >=0 ? 1:-1;
var axis=[top, bottom].indexOf(key) >=0 ? 'y':'x';
overflowOffsets[key] +=offset[axis] * multiply;
});
}
return overflowOffsets;
}
var INVALID_ELEMENT_ERROR='Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';
var INFINITE_LOOP_ERROR='Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';
var DEFAULT_OPTIONS={
placement: 'bottom',
modifiers: [],
strategy: 'absolute'
};
function areValidElements(){
for (var _len=arguments.length, args=new Array(_len), _key=0; _key < _len; _key++){
args[_key]=arguments[_key];
}
return !args.some(function (element){
return !(element&&typeof element.getBoundingClientRect==='function');
});
}
function popperGenerator(generatorOptions){
if(generatorOptions===void 0){
generatorOptions={};}
var _generatorOptions=generatorOptions,
_generatorOptions$def=_generatorOptions.defaultModifiers,
defaultModifiers=_generatorOptions$def===void 0 ? []:_generatorOptions$def,
_generatorOptions$def2=_generatorOptions.defaultOptions,
defaultOptions=_generatorOptions$def2===void 0 ? DEFAULT_OPTIONS:_generatorOptions$def2;
return function createPopper(reference, popper, options){
if(options===void 0){
options=defaultOptions;
}
var state={
placement: 'bottom',
orderedModifiers: [],
options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
modifiersData: {},
elements: {
reference: reference,
popper: popper
},
attributes: {},
styles: {}};
var effectCleanupFns=[];
var isDestroyed=false;
var instance={
state: state,
setOptions: function setOptions(setOptionsAction){
var options=typeof setOptionsAction==='function' ? setOptionsAction(state.options):setOptionsAction;
cleanupModifierEffects();
state.options=Object.assign({}, defaultOptions, state.options, options);
state.scrollParents={
reference: isElement(reference) ? listScrollParents(reference):reference.contextElement ? listScrollParents(reference.contextElement):[],
popper: listScrollParents(popper)
};
var orderedModifiers=orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers)));
state.orderedModifiers=orderedModifiers.filter(function (m){
return m.enabled;
});
{
var modifiers=uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref){
var name=_ref.name;
return name;
});
validateModifiers(modifiers);
if(getBasePlacement(state.options.placement)===auto){
var flipModifier=state.orderedModifiers.find(function (_ref2){
var name=_ref2.name;
return name==='flip';
});
if(!flipModifier){
console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' '));
}}
var _getComputedStyle=getComputedStyle(popper),
marginTop=_getComputedStyle.marginTop,
marginRight=_getComputedStyle.marginRight,
marginBottom=_getComputedStyle.marginBottom,
marginLeft=_getComputedStyle.marginLeft;
if([marginTop, marginRight, marginBottom, marginLeft].some(function (margin){
return parseFloat(margin);
})){
console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));
}}
runModifierEffects();
return instance.update();
},
forceUpdate: function forceUpdate(){
if(isDestroyed){
return;
}
var _state$elements=state.elements,
reference=_state$elements.reference,
popper=_state$elements.popper;
if(!areValidElements(reference, popper)){
{
console.error(INVALID_ELEMENT_ERROR);
}
return;
}
state.rects={
reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy==='fixed'),
popper: getLayoutRect(popper)
};
state.reset=false;
state.placement=state.options.placement;
state.orderedModifiers.forEach(function (modifier){
return state.modifiersData[modifier.name]=Object.assign({}, modifier.data);
});
var __debug_loops__=0;
for (var index=0; index < state.orderedModifiers.length; index++){
{
__debug_loops__ +=1;
if(__debug_loops__ > 100){
console.error(INFINITE_LOOP_ERROR);
break;
}}
if(state.reset===true){
state.reset=false;
index=-1;
continue;
}
var _state$orderedModifie=state.orderedModifiers[index],
fn=_state$orderedModifie.fn,
_state$orderedModifie2=_state$orderedModifie.options,
_options=_state$orderedModifie2===void 0 ? {}:_state$orderedModifie2,
name=_state$orderedModifie.name;
if(typeof fn==='function'){
state=fn({
state: state,
options: _options,
name: name,
instance: instance
})||state;
}}
},
update: debounce(function (){
return new Promise(function (resolve){
instance.forceUpdate();
resolve(state);
});
}),
destroy: function destroy(){
cleanupModifierEffects();
isDestroyed=true;
}};
if(!areValidElements(reference, popper)){
{
console.error(INVALID_ELEMENT_ERROR);
}
return instance;
}
instance.setOptions(options).then(function (state){
if(!isDestroyed&&options.onFirstUpdate){
options.onFirstUpdate(state);
}});
function runModifierEffects(){
state.orderedModifiers.forEach(function (_ref3){
var name=_ref3.name,
_ref3$options=_ref3.options,
options=_ref3$options===void 0 ? {}:_ref3$options,
effect=_ref3.effect;
if(typeof effect==='function'){
var cleanupFn=effect({
state: state,
name: name,
instance: instance,
options: options
});
var noopFn=function noopFn(){};
effectCleanupFns.push(cleanupFn||noopFn);
}});
}
function cleanupModifierEffects(){
effectCleanupFns.forEach(function (fn){
return fn();
});
effectCleanupFns=[];
}
return instance;
};}
var passive={
passive: true
};
function effect$2(_ref){
var state=_ref.state,
instance=_ref.instance,
options=_ref.options;
var _options$scroll=options.scroll,
scroll=_options$scroll===void 0 ? true:_options$scroll,
_options$resize=options.resize,
resize=_options$resize===void 0 ? true:_options$resize;
var window=getWindow(state.elements.popper);
var scrollParents=[].concat(state.scrollParents.reference, state.scrollParents.popper);
if(scroll){
scrollParents.forEach(function (scrollParent){
scrollParent.addEventListener('scroll', instance.update, passive);
});
}
if(resize){
window.addEventListener('resize', instance.update, passive);
}
return function (){
if(scroll){
scrollParents.forEach(function (scrollParent){
scrollParent.removeEventListener('scroll', instance.update, passive);
});
}
if(resize){
window.removeEventListener('resize', instance.update, passive);
}};}
var eventListeners={
name: 'eventListeners',
enabled: true,
phase: 'write',
fn: function fn(){},
effect: effect$2,
data: {}};
function popperOffsets(_ref){
var state=_ref.state,
name=_ref.name;
state.modifiersData[name]=computeOffsets({
reference: state.rects.reference,
element: state.rects.popper,
strategy: 'absolute',
placement: state.placement
});
}
var popperOffsets$1={
name: 'popperOffsets',
enabled: true,
phase: 'read',
fn: popperOffsets,
data: {}};
var unsetSides={
top: 'auto',
right: 'auto',
bottom: 'auto',
left: 'auto'
};
function roundOffsetsByDPR(_ref){
var x=_ref.x,
y=_ref.y;
var win=window;
var dpr=win.devicePixelRatio||1;
return {
x: round(x * dpr) / dpr||0,
y: round(y * dpr) / dpr||0
};}
function mapToStyles(_ref2){
var _Object$assign2;
var popper=_ref2.popper,
popperRect=_ref2.popperRect,
placement=_ref2.placement,
variation=_ref2.variation,
offsets=_ref2.offsets,
position=_ref2.position,
gpuAcceleration=_ref2.gpuAcceleration,
adaptive=_ref2.adaptive,
roundOffsets=_ref2.roundOffsets,
isFixed=_ref2.isFixed;
var _offsets$x=offsets.x,
x=_offsets$x===void 0 ? 0:_offsets$x,
_offsets$y=offsets.y,
y=_offsets$y===void 0 ? 0:_offsets$y;
var _ref3=typeof roundOffsets==='function' ? roundOffsets({
x: x,
y: y
}):{
x: x,
y: y
};
x=_ref3.x;
y=_ref3.y;
var hasX=offsets.hasOwnProperty('x');
var hasY=offsets.hasOwnProperty('y');
var sideX=left;
var sideY=top;
var win=window;
if(adaptive){
var offsetParent=getOffsetParent(popper);
var heightProp='clientHeight';
var widthProp='clientWidth';
if(offsetParent===getWindow(popper)){
offsetParent=getDocumentElement(popper);
if(getComputedStyle(offsetParent).position!=='static'&&position==='absolute'){
heightProp='scrollHeight';
widthProp='scrollWidth';
}}
offsetParent=offsetParent;
if(placement===top||(placement===left||placement===right)&&variation===end){
sideY=bottom;
var offsetY=isFixed&&win.visualViewport ? win.visualViewport.height :
offsetParent[heightProp];
y -=offsetY - popperRect.height;
y *=gpuAcceleration ? 1:-1;
}
if(placement===left||(placement===top||placement===bottom)&&variation===end){
sideX=right;
var offsetX=isFixed&&win.visualViewport ? win.visualViewport.width :
offsetParent[widthProp];
x -=offsetX - popperRect.width;
x *=gpuAcceleration ? 1:-1;
}}
var commonStyles=Object.assign({
position: position
}, adaptive&&unsetSides);
var _ref4=roundOffsets===true ? roundOffsetsByDPR({
x: x,
y: y
}):{
x: x,
y: y
};
x=_ref4.x;
y=_ref4.y;
if(gpuAcceleration){
var _Object$assign;
return Object.assign({}, commonStyles, (_Object$assign={}, _Object$assign[sideY]=hasY ? '0':'', _Object$assign[sideX]=hasX ? '0':'', _Object$assign.transform=(win.devicePixelRatio||1) <=1 ? "translate(" + x + "px, " + y + "px)":"translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
}
return Object.assign({}, commonStyles, (_Object$assign2={}, _Object$assign2[sideY]=hasY ? y + "px":'', _Object$assign2[sideX]=hasX ? x + "px":'', _Object$assign2.transform='', _Object$assign2));
}
function computeStyles(_ref5){
var state=_ref5.state,
options=_ref5.options;
var _options$gpuAccelerat=options.gpuAcceleration,
gpuAcceleration=_options$gpuAccelerat===void 0 ? true:_options$gpuAccelerat,
_options$adaptive=options.adaptive,
adaptive=_options$adaptive===void 0 ? true:_options$adaptive,
_options$roundOffsets=options.roundOffsets,
roundOffsets=_options$roundOffsets===void 0 ? true:_options$roundOffsets;
{
var transitionProperty=getComputedStyle(state.elements.popper).transitionProperty||'';
if(adaptive&&['transform', 'top', 'right', 'bottom', 'left'].some(function (property){
return transitionProperty.indexOf(property) >=0;
})){
console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));
}}
var commonStyles={
placement: getBasePlacement(state.placement),
variation: getVariation(state.placement),
popper: state.elements.popper,
popperRect: state.rects.popper,
gpuAcceleration: gpuAcceleration,
isFixed: state.options.strategy==='fixed'
};
if(state.modifiersData.popperOffsets!=null){
state.styles.popper=Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
offsets: state.modifiersData.popperOffsets,
position: state.options.strategy,
adaptive: adaptive,
roundOffsets: roundOffsets
})));
}
if(state.modifiersData.arrow!=null){
state.styles.arrow=Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
offsets: state.modifiersData.arrow,
position: 'absolute',
adaptive: false,
roundOffsets: roundOffsets
})));
}
state.attributes.popper=Object.assign({}, state.attributes.popper, {
'data-popper-placement': state.placement
});
}
var computeStyles$1={
name: 'computeStyles',
enabled: true,
phase: 'beforeWrite',
fn: computeStyles,
data: {}};
function applyStyles(_ref){
var state=_ref.state;
Object.keys(state.elements).forEach(function (name){
var style=state.styles[name]||{};
var attributes=state.attributes[name]||{};
var element=state.elements[name];
if(!isHTMLElement(element)||!getNodeName(element)){
return;
}
Object.assign(element.style, style);
Object.keys(attributes).forEach(function (name){
var value=attributes[name];
if(value===false){
element.removeAttribute(name);
}else{
element.setAttribute(name, value===true ? '':value);
}});
});
}
function effect$1(_ref2){
var state=_ref2.state;
var initialStyles={
popper: {
position: state.options.strategy,
left: '0',
top: '0',
margin: '0'
},
arrow: {
position: 'absolute'
},
reference: {}};
Object.assign(state.elements.popper.style, initialStyles.popper);
state.styles=initialStyles;
if(state.elements.arrow){
Object.assign(state.elements.arrow.style, initialStyles.arrow);
}
return function (){
Object.keys(state.elements).forEach(function (name){
var element=state.elements[name];
var attributes=state.attributes[name]||{};
var styleProperties=Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name]:initialStyles[name]);
var style=styleProperties.reduce(function (style, property){
style[property]='';
return style;
}, {});
if(!isHTMLElement(element)||!getNodeName(element)){
return;
}
Object.assign(element.style, style);
Object.keys(attributes).forEach(function (attribute){
element.removeAttribute(attribute);
});
});
};}
var applyStyles$1={
name: 'applyStyles',
enabled: true,
phase: 'write',
fn: applyStyles,
effect: effect$1,
requires: ['computeStyles']
};
function distanceAndSkiddingToXY(placement, rects, offset){
var basePlacement=getBasePlacement(placement);
var invertDistance=[left, top].indexOf(basePlacement) >=0 ? -1:1;
var _ref=typeof offset==='function' ? offset(Object.assign({}, rects, {
placement: placement
})):offset,
skidding=_ref[0],
distance=_ref[1];
skidding=skidding||0;
distance=(distance||0) * invertDistance;
return [left, right].indexOf(basePlacement) >=0 ? {
x: distance,
y: skidding
}:{
x: skidding,
y: distance
};}
function offset(_ref2){
var state=_ref2.state,
options=_ref2.options,
name=_ref2.name;
var _options$offset=options.offset,
offset=_options$offset===void 0 ? [0, 0]:_options$offset;
var data=placements.reduce(function (acc, placement){
acc[placement]=distanceAndSkiddingToXY(placement, state.rects, offset);
return acc;
}, {});
var _data$state$placement=data[state.placement],
x=_data$state$placement.x,
y=_data$state$placement.y;
if(state.modifiersData.popperOffsets!=null){
state.modifiersData.popperOffsets.x +=x;
state.modifiersData.popperOffsets.y +=y;
}
state.modifiersData[name]=data;
}
var offset$1={
name: 'offset',
enabled: true,
phase: 'main',
requires: ['popperOffsets'],
fn: offset
};
var hash$1={
left: 'right',
right: 'left',
bottom: 'top',
top: 'bottom'
};
function getOppositePlacement(placement){
return placement.replace(/left|right|bottom|top/g, function (matched){
return hash$1[matched];
});
}
var hash={
start: 'end',
end: 'start'
};
function getOppositeVariationPlacement(placement){
return placement.replace(/start|end/g, function (matched){
return hash[matched];
});
}
function computeAutoPlacement(state, options){
if(options===void 0){
options={};}
var _options=options,
placement=_options.placement,
boundary=_options.boundary,
rootBoundary=_options.rootBoundary,
padding=_options.padding,
flipVariations=_options.flipVariations,
_options$allowedAutoP=_options.allowedAutoPlacements,
allowedAutoPlacements=_options$allowedAutoP===void 0 ? placements:_options$allowedAutoP;
var variation=getVariation(placement);
var placements$1=variation ? flipVariations ? variationPlacements:variationPlacements.filter(function (placement){
return getVariation(placement)===variation;
}):basePlacements;
var allowedPlacements=placements$1.filter(function (placement){
return allowedAutoPlacements.indexOf(placement) >=0;
});
if(allowedPlacements.length===0){
allowedPlacements=placements$1;
{
console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' '));
}}
var overflows=allowedPlacements.reduce(function (acc, placement){
acc[placement]=detectOverflow(state, {
placement: placement,
boundary: boundary,
rootBoundary: rootBoundary,
padding: padding
})[getBasePlacement(placement)];
return acc;
}, {});
return Object.keys(overflows).sort(function (a, b){
return overflows[a] - overflows[b];
});
}
function getExpandedFallbackPlacements(placement){
if(getBasePlacement(placement)===auto){
return [];
}
var oppositePlacement=getOppositePlacement(placement);
return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
}
function flip(_ref){
var state=_ref.state,
options=_ref.options,
name=_ref.name;
if(state.modifiersData[name]._skip){
return;
}
var _options$mainAxis=options.mainAxis,
checkMainAxis=_options$mainAxis===void 0 ? true:_options$mainAxis,
_options$altAxis=options.altAxis,
checkAltAxis=_options$altAxis===void 0 ? true:_options$altAxis,
specifiedFallbackPlacements=options.fallbackPlacements,
padding=options.padding,
boundary=options.boundary,
rootBoundary=options.rootBoundary,
altBoundary=options.altBoundary,
_options$flipVariatio=options.flipVariations,
flipVariations=_options$flipVariatio===void 0 ? true:_options$flipVariatio,
allowedAutoPlacements=options.allowedAutoPlacements;
var preferredPlacement=state.options.placement;
var basePlacement=getBasePlacement(preferredPlacement);
var isBasePlacement=basePlacement===preferredPlacement;
var fallbackPlacements=specifiedFallbackPlacements||(isBasePlacement||!flipVariations ? [getOppositePlacement(preferredPlacement)]:getExpandedFallbackPlacements(preferredPlacement));
var placements=[preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement){
return acc.concat(getBasePlacement(placement)===auto ? computeAutoPlacement(state, {
placement: placement,
boundary: boundary,
rootBoundary: rootBoundary,
padding: padding,
flipVariations: flipVariations,
allowedAutoPlacements: allowedAutoPlacements
}):placement);
}, []);
var referenceRect=state.rects.reference;
var popperRect=state.rects.popper;
var checksMap=new Map();
var makeFallbackChecks=true;
var firstFittingPlacement=placements[0];
for (var i=0; i < placements.length; i++){
var placement=placements[i];
var _basePlacement=getBasePlacement(placement);
var isStartVariation=getVariation(placement)===start;
var isVertical=[top, bottom].indexOf(_basePlacement) >=0;
var len=isVertical ? 'width':'height';
var overflow=detectOverflow(state, {
placement: placement,
boundary: boundary,
rootBoundary: rootBoundary,
altBoundary: altBoundary,
padding: padding
});
var mainVariationSide=isVertical ? isStartVariation ? right:left:isStartVariation ? bottom:top;
if(referenceRect[len] > popperRect[len]){
mainVariationSide=getOppositePlacement(mainVariationSide);
}
var altVariationSide=getOppositePlacement(mainVariationSide);
var checks=[];
if(checkMainAxis){
checks.push(overflow[_basePlacement] <=0);
}
if(checkAltAxis){
checks.push(overflow[mainVariationSide] <=0, overflow[altVariationSide] <=0);
}
if(checks.every(function (check){
return check;
})){
firstFittingPlacement=placement;
makeFallbackChecks=false;
break;
}
checksMap.set(placement, checks);
}
if(makeFallbackChecks){
var numberOfChecks=flipVariations ? 3:1;
var _loop=function _loop(_i){
var fittingPlacement=placements.find(function (placement){
var checks=checksMap.get(placement);
if(checks){
return checks.slice(0, _i).every(function (check){
return check;
});
}});
if(fittingPlacement){
firstFittingPlacement=fittingPlacement;
return "break";
}};
for (var _i=numberOfChecks; _i > 0; _i--){
var _ret=_loop(_i);
if(_ret==="break") break;
}}
if(state.placement!==firstFittingPlacement){
state.modifiersData[name]._skip=true;
state.placement=firstFittingPlacement;
state.reset=true;
}}
var flip$1={
name: 'flip',
enabled: true,
phase: 'main',
fn: flip,
requiresIfExists: ['offset'],
data: {
_skip: false
}};
function getAltAxis(axis){
return axis==='x' ? 'y':'x';
}
function within(min$1, value, max$1){
return max(min$1, min(value, max$1));
}
function withinMaxClamp(min, value, max){
var v=within(min, value, max);
return v > max ? max:v;
}
function preventOverflow(_ref){
var state=_ref.state,
options=_ref.options,
name=_ref.name;
var _options$mainAxis=options.mainAxis,
checkMainAxis=_options$mainAxis===void 0 ? true:_options$mainAxis,
_options$altAxis=options.altAxis,
checkAltAxis=_options$altAxis===void 0 ? false:_options$altAxis,
boundary=options.boundary,
rootBoundary=options.rootBoundary,
altBoundary=options.altBoundary,
padding=options.padding,
_options$tether=options.tether,
tether=_options$tether===void 0 ? true:_options$tether,
_options$tetherOffset=options.tetherOffset,
tetherOffset=_options$tetherOffset===void 0 ? 0:_options$tetherOffset;
var overflow=detectOverflow(state, {
boundary: boundary,
rootBoundary: rootBoundary,
padding: padding,
altBoundary: altBoundary
});
var basePlacement=getBasePlacement(state.placement);
var variation=getVariation(state.placement);
var isBasePlacement = !variation;
var mainAxis=getMainAxisFromPlacement(basePlacement);
var altAxis=getAltAxis(mainAxis);
var popperOffsets=state.modifiersData.popperOffsets;
var referenceRect=state.rects.reference;
var popperRect=state.rects.popper;
var tetherOffsetValue=typeof tetherOffset==='function' ? tetherOffset(Object.assign({}, state.rects, {
placement: state.placement
})):tetherOffset;
var normalizedTetherOffsetValue=typeof tetherOffsetValue==='number' ? {
mainAxis: tetherOffsetValue,
altAxis: tetherOffsetValue
}:Object.assign({
mainAxis: 0,
altAxis: 0
}, tetherOffsetValue);
var offsetModifierState=state.modifiersData.offset ? state.modifiersData.offset[state.placement]:null;
var data={
x: 0,
y: 0
};
if(!popperOffsets){
return;
}
if(checkMainAxis){
var _offsetModifierState$;
var mainSide=mainAxis==='y' ? top:left;
var altSide=mainAxis==='y' ? bottom:right;
var len=mainAxis==='y' ? 'height':'width';
var offset=popperOffsets[mainAxis];
var min$1=offset + overflow[mainSide];
var max$1=offset - overflow[altSide];
var additive=tether ? -popperRect[len] / 2:0;
var minLen=variation===start ? referenceRect[len]:popperRect[len];
var maxLen=variation===start ? -popperRect[len]:-referenceRect[len];
var arrowElement=state.elements.arrow;
var arrowRect=tether&&arrowElement ? getLayoutRect(arrowElement):{
width: 0,
height: 0
};
var arrowPaddingObject=state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding:getFreshSideObject();
var arrowPaddingMin=arrowPaddingObject[mainSide];
var arrowPaddingMax=arrowPaddingObject[altSide];
var arrowLen=within(0, referenceRect[len], arrowRect[len]);
var minOffset=isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis:minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
var maxOffset=isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis:maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
var arrowOffsetParent=state.elements.arrow&&getOffsetParent(state.elements.arrow);
var clientOffset=arrowOffsetParent ? mainAxis==='y' ? arrowOffsetParent.clientTop||0:arrowOffsetParent.clientLeft||0:0;
var offsetModifierValue=(_offsetModifierState$=offsetModifierState==null ? void 0:offsetModifierState[mainAxis])!=null ? _offsetModifierState$:0;
var tetherMin=offset + minOffset - offsetModifierValue - clientOffset;
var tetherMax=offset + maxOffset - offsetModifierValue;
var preventedOffset=within(tether ? min(min$1, tetherMin):min$1, offset, tether ? max(max$1, tetherMax):max$1);
popperOffsets[mainAxis]=preventedOffset;
data[mainAxis]=preventedOffset - offset;
}
if(checkAltAxis){
var _offsetModifierState$2;
var _mainSide=mainAxis==='x' ? top:left;
var _altSide=mainAxis==='x' ? bottom:right;
var _offset=popperOffsets[altAxis];
var _len=altAxis==='y' ? 'height':'width';
var _min=_offset + overflow[_mainSide];
var _max=_offset - overflow[_altSide];
var isOriginSide=[top, left].indexOf(basePlacement)!==-1;
var _offsetModifierValue=(_offsetModifierState$2=offsetModifierState==null ? void 0:offsetModifierState[altAxis])!=null ? _offsetModifierState$2:0;
var _tetherMin=isOriginSide ? _min:_offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
var _tetherMax=isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis:_max;
var _preventedOffset=tether&&isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax):within(tether ? _tetherMin:_min, _offset, tether ? _tetherMax:_max);
popperOffsets[altAxis]=_preventedOffset;
data[altAxis]=_preventedOffset - _offset;
}
state.modifiersData[name]=data;
}
var preventOverflow$1={
name: 'preventOverflow',
enabled: true,
phase: 'main',
fn: preventOverflow,
requiresIfExists: ['offset']
};
var toPaddingObject=function toPaddingObject(padding, state){
padding=typeof padding==='function' ? padding(Object.assign({}, state.rects, {
placement: state.placement
})):padding;
return mergePaddingObject(typeof padding!=='number' ? padding:expandToHashMap(padding, basePlacements));
};
function arrow(_ref){
var _state$modifiersData$;
var state=_ref.state,
name=_ref.name,
options=_ref.options;
var arrowElement=state.elements.arrow;
var popperOffsets=state.modifiersData.popperOffsets;
var basePlacement=getBasePlacement(state.placement);
var axis=getMainAxisFromPlacement(basePlacement);
var isVertical=[left, right].indexOf(basePlacement) >=0;
var len=isVertical ? 'height':'width';
if(!arrowElement||!popperOffsets){
return;
}
var paddingObject=toPaddingObject(options.padding, state);
var arrowRect=getLayoutRect(arrowElement);
var minProp=axis==='y' ? top:left;
var maxProp=axis==='y' ? bottom:right;
var endDiff=state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
var startDiff=popperOffsets[axis] - state.rects.reference[axis];
var arrowOffsetParent=getOffsetParent(arrowElement);
var clientSize=arrowOffsetParent ? axis==='y' ? arrowOffsetParent.clientHeight||0:arrowOffsetParent.clientWidth||0:0;
var centerToReference=endDiff / 2 - startDiff / 2;
var min=paddingObject[minProp];
var max=clientSize - arrowRect[len] - paddingObject[maxProp];
var center=clientSize / 2 - arrowRect[len] / 2 + centerToReference;
var offset=within(min, center, max);
var axisProp=axis;
state.modifiersData[name]=(_state$modifiersData$={}, _state$modifiersData$[axisProp]=offset, _state$modifiersData$.centerOffset=offset - center, _state$modifiersData$);
}
function effect(_ref2){
var state=_ref2.state,
options=_ref2.options;
var _options$element=options.element,
arrowElement=_options$element===void 0 ? '[data-popper-arrow]':_options$element;
if(arrowElement==null){
return;
}
if(typeof arrowElement==='string'){
arrowElement=state.elements.popper.querySelector(arrowElement);
if(!arrowElement){
return;
}}
{
if(!isHTMLElement(arrowElement)){
console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));
}}
if(!contains(state.elements.popper, arrowElement)){
{
console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' '));
}
return;
}
state.elements.arrow=arrowElement;
}
var arrow$1={
name: 'arrow',
enabled: true,
phase: 'main',
fn: arrow,
effect: effect,
requires: ['popperOffsets'],
requiresIfExists: ['preventOverflow']
};
function getSideOffsets(overflow, rect, preventedOffsets){
if(preventedOffsets===void 0){
preventedOffsets={
x: 0,
y: 0
};}
return {
top: overflow.top - rect.height - preventedOffsets.y,
right: overflow.right - rect.width + preventedOffsets.x,
bottom: overflow.bottom - rect.height + preventedOffsets.y,
left: overflow.left - rect.width - preventedOffsets.x
};}
function isAnySideFullyClipped(overflow){
return [top, right, bottom, left].some(function (side){
return overflow[side] >=0;
});
}
function hide(_ref){
var state=_ref.state,
name=_ref.name;
var referenceRect=state.rects.reference;
var popperRect=state.rects.popper;
var preventedOffsets=state.modifiersData.preventOverflow;
var referenceOverflow=detectOverflow(state, {
elementContext: 'reference'
});
var popperAltOverflow=detectOverflow(state, {
altBoundary: true
});
var referenceClippingOffsets=getSideOffsets(referenceOverflow, referenceRect);
var popperEscapeOffsets=getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
var isReferenceHidden=isAnySideFullyClipped(referenceClippingOffsets);
var hasPopperEscaped=isAnySideFullyClipped(popperEscapeOffsets);
state.modifiersData[name]={
referenceClippingOffsets: referenceClippingOffsets,
popperEscapeOffsets: popperEscapeOffsets,
isReferenceHidden: isReferenceHidden,
hasPopperEscaped: hasPopperEscaped
};
state.attributes.popper=Object.assign({}, state.attributes.popper, {
'data-popper-reference-hidden': isReferenceHidden,
'data-popper-escaped': hasPopperEscaped
});
}
var hide$1={
name: 'hide',
enabled: true,
phase: 'main',
requiresIfExists: ['preventOverflow'],
fn: hide
};
var defaultModifiers$1=[eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];
var createPopper$1=popperGenerator({
defaultModifiers: defaultModifiers$1
});
var defaultModifiers=[eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
var createPopper=popperGenerator({
defaultModifiers: defaultModifiers
});
exports.applyStyles=applyStyles$1;
exports.arrow=arrow$1;
exports.computeStyles=computeStyles$1;
exports.createPopper=createPopper;
exports.createPopperLite=createPopper$1;
exports.defaultModifiers=defaultModifiers;
exports.detectOverflow=detectOverflow;
exports.eventListeners=eventListeners;
exports.flip=flip$1;
exports.hide=hide$1;
exports.offset=offset$1;
exports.popperGenerator=popperGenerator;
exports.popperOffsets=popperOffsets$1;
exports.preventOverflow=preventOverflow$1;
Object.defineProperty(exports, '__esModule', { value: true });
})));
(function (global, factory){
typeof exports==='object'&&typeof module!=='undefined' ? module.exports=factory(require('@popperjs/core')) :
typeof define==='function'&&define.amd ? define(['@popperjs/core'], factory) :
(global=global||self, global.wpbc_tippy=factory(global.wpbc_Popper));
}(this, (function (core){ 'use strict';
var css=".tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:\"\";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}";
function injectCSS(css){
var style=document.createElement('style');
style.textContent=css;
style.setAttribute('data-tippy-stylesheet', '');
var head=document.head;
var firstStyleOrLinkTag=document.querySelector('head>style,head>link');
if(firstStyleOrLinkTag){
head.insertBefore(style, firstStyleOrLinkTag);
}else{
head.appendChild(style);
}}
var isBrowser=typeof window!=='undefined'&&typeof document!=='undefined';
var isIE11=isBrowser ?
!!window.msCrypto:false;
var ROUND_ARROW='<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>';
var BOX_CLASS="tippy-box";
var CONTENT_CLASS="tippy-content";
var BACKDROP_CLASS="tippy-backdrop";
var ARROW_CLASS="tippy-arrow";
var SVG_ARROW_CLASS="tippy-svg-arrow";
var TOUCH_OPTIONS={
passive: true,
capture: true
};
var TIPPY_DEFAULT_APPEND_TO=function TIPPY_DEFAULT_APPEND_TO(){
return document.body;
};
function hasOwnProperty(obj, key){
return {}.hasOwnProperty.call(obj, key);
}
function getValueAtIndexOrReturn(value, index, defaultValue){
if(Array.isArray(value)){
var v=value[index];
return v==null ? Array.isArray(defaultValue) ? defaultValue[index]:defaultValue:v;
}
return value;
}
function isType(value, type){
var str={}.toString.call(value);
return str.indexOf('[object')===0&&str.indexOf(type + "]") > -1;
}
function invokeWithArgsOrReturn(value, args){
return typeof value==='function' ? value.apply(void 0, args):value;
}
function debounce(fn, ms){
if(ms===0){
return fn;
}
var timeout;
return function (arg){
clearTimeout(timeout);
timeout=setTimeout(function (){
fn(arg);
}, ms);
};}
function removeProperties(obj, keys){
var clone=Object.assign({}, obj);
keys.forEach(function (key){
delete clone[key];
});
return clone;
}
function splitBySpaces(value){
return value.split(/\s+/).filter(Boolean);
}
function normalizeToArray(value){
return [].concat(value);
}
function pushIfUnique(arr, value){
if(arr.indexOf(value)===-1){
arr.push(value);
}}
function unique(arr){
return arr.filter(function (item, index){
return arr.indexOf(item)===index;
});
}
function getBasePlacement(placement){
return placement.split('-')[0];
}
function arrayFrom(value){
return [].slice.call(value);
}
function removeUndefinedProps(obj){
return Object.keys(obj).reduce(function (acc, key){
if(obj[key]!==undefined){
acc[key]=obj[key];
}
return acc;
}, {});
}
function div(){
return document.createElement('div');
}
function isElement(value){
return ['Element', 'Fragment'].some(function (type){
return isType(value, type);
});
}
function isNodeList(value){
return isType(value, 'NodeList');
}
function isMouseEvent(value){
return isType(value, 'MouseEvent');
}
function isReferenceElement(value){
return !!(value&&value._tippy&&value._tippy.reference===value);
}
function getArrayOfElements(value){
if(isElement(value)){
return [value];
}
if(isNodeList(value)){
return arrayFrom(value);
}
if(Array.isArray(value)){
return value;
}
return arrayFrom(document.querySelectorAll(value));
}
function setTransitionDuration(els, value){
els.forEach(function (el){
if(el){
el.style.transitionDuration=value + "ms";
}});
}
function setVisibilityState(els, state){
els.forEach(function (el){
if(el){
el.setAttribute('data-state', state);
}});
}
function getOwnerDocument(elementOrElements){
var _element$ownerDocumen;
var _normalizeToArray=normalizeToArray(elementOrElements),
element=_normalizeToArray[0];
return element!=null&&(_element$ownerDocumen=element.ownerDocument)!=null&&_element$ownerDocumen.body ? element.ownerDocument:document;
}
function isCursorOutsideInteractiveBorder(popperTreeData, event){
var clientX=event.clientX,
clientY=event.clientY;
return popperTreeData.every(function (_ref){
var popperRect=_ref.popperRect,
popperState=_ref.popperState,
props=_ref.props;
var interactiveBorder=props.interactiveBorder;
var basePlacement=getBasePlacement(popperState.placement);
var offsetData=popperState.modifiersData.offset;
if(!offsetData){
return true;
}
var topDistance=basePlacement==='bottom' ? offsetData.top.y:0;
var bottomDistance=basePlacement==='top' ? offsetData.bottom.y:0;
var leftDistance=basePlacement==='right' ? offsetData.left.x:0;
var rightDistance=basePlacement==='left' ? offsetData.right.x:0;
var exceedsTop=popperRect.top - clientY + topDistance > interactiveBorder;
var exceedsBottom=clientY - popperRect.bottom - bottomDistance > interactiveBorder;
var exceedsLeft=popperRect.left - clientX + leftDistance > interactiveBorder;
var exceedsRight=clientX - popperRect.right - rightDistance > interactiveBorder;
return exceedsTop||exceedsBottom||exceedsLeft||exceedsRight;
});
}
function updateTransitionEndListener(box, action, listener){
var method=action + "EventListener";
['transitionend', 'webkitTransitionEnd'].forEach(function (event){
box[method](event, listener);
});
}
function actualContains(parent, child){
var target=child;
while (target){
var _target$getRootNode;
if(parent.contains(target)){
return true;
}
target=target.getRootNode==null ? void 0:(_target$getRootNode=target.getRootNode())==null ? void 0:_target$getRootNode.host;
}
return false;
}
var currentInput={
isTouch: false
};
var lastMouseMoveTime=0;
function onDocumentTouchStart(){
if(currentInput.isTouch){
return;
}
currentInput.isTouch=true;
if(window.performance){
document.addEventListener('mousemove', onDocumentMouseMove);
}}
function onDocumentMouseMove(){
var now=performance.now();
if(now - lastMouseMoveTime < 20){
currentInput.isTouch=false;
document.removeEventListener('mousemove', onDocumentMouseMove);
}
lastMouseMoveTime=now;
}
function onWindowBlur(){
var activeElement=document.activeElement;
if(isReferenceElement(activeElement)){
var instance=activeElement._tippy;
if(activeElement.blur&&!instance.state.isVisible){
activeElement.blur();
}}
}
function bindGlobalEventListeners(){
document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);
window.addEventListener('blur', onWindowBlur);
}
function createMemoryLeakWarning(method){
var txt=method==='destroy' ? 'n already-':' ';
return [method + "() was called on a" + txt + "destroyed instance. This is a no-op but", 'indicates a potential memory leak.'].join(' ');
}
function clean(value){
var spacesAndTabs=/[ \t]{2,}/g;
var lineStartWithSpaces=/^[ \t]*/gm;
return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();
}
function getDevMessage(message){
return clean("\n  %ctippy.js\n\n  %c" + clean(message) + "\n\n  %c\uD83D\uDC77\u200D This is a development-only message. It will be removed in production.\n  ");
}
function getFormattedMessage(message){
return [getDevMessage(message),
'color: #00C584; font-size: 1.3em; font-weight: bold;',
'line-height: 1.5',
'color: #a6a095;'];
}
var visitedMessages;
{
resetVisitedMessages();
}
function resetVisitedMessages(){
visitedMessages=new Set();
}
function warnWhen(condition, message){
if(condition&&!visitedMessages.has(message)){
var _console;
visitedMessages.add(message);
(_console=console).warn.apply(_console, getFormattedMessage(message));
}}
function errorWhen(condition, message){
if(condition&&!visitedMessages.has(message)){
var _console2;
visitedMessages.add(message);
(_console2=console).error.apply(_console2, getFormattedMessage(message));
}}
function validateTargets(targets){
var didPassFalsyValue = !targets;
var didPassPlainObject=Object.prototype.toString.call(targets)==='[object Object]'&&!targets.addEventListener;
errorWhen(didPassFalsyValue, ['tippy() was passed', '`' + String(targets) + '`', 'as its targets (first) argument. Valid types are: String, Element,', 'Element[], or NodeList.'].join(' '));
errorWhen(didPassPlainObject, ['tippy() was passed a plain object which is not supported as an argument', 'for virtual positioning. Use props.getReferenceClientRect instead.'].join(' '));
}
var pluginProps={
animateFill: false,
followCursor: false,
inlinePositioning: false,
sticky: false
};
var renderProps={
allowHTML: false,
animation: 'fade',
arrow: true,
content: '',
inertia: false,
maxWidth: 350,
role: 'tooltip',
theme: '',
zIndex: 9999
};
var defaultProps=Object.assign({
appendTo: TIPPY_DEFAULT_APPEND_TO,
aria: {
content: 'auto',
expanded: 'auto'
},
delay: 0,
duration: [300, 250],
getReferenceClientRect: null,
hideOnClick: true,
ignoreAttributes: false,
interactive: false,
interactiveBorder: 2,
interactiveDebounce: 0,
moveTransition: '',
offset: [0, 10],
onAfterUpdate: function onAfterUpdate(){},
onBeforeUpdate: function onBeforeUpdate(){},
onCreate: function onCreate(){},
onDestroy: function onDestroy(){},
onHidden: function onHidden(){},
onHide: function onHide(){},
onMount: function onMount(){},
onShow: function onShow(){},
onShown: function onShown(){},
onTrigger: function onTrigger(){},
onUntrigger: function onUntrigger(){},
onClickOutside: function onClickOutside(){},
placement: 'top',
plugins: [],
popperOptions: {},
render: null,
showOnCreate: false,
touch: true,
trigger: 'mouseenter focus',
triggerTarget: null
}, pluginProps, renderProps);
var defaultKeys=Object.keys(defaultProps);
var setDefaultProps=function setDefaultProps(partialProps){
{
validateProps(partialProps, []);
}
var keys=Object.keys(partialProps);
keys.forEach(function (key){
defaultProps[key]=partialProps[key];
});
};
function getExtendedPassedProps(passedProps){
var plugins=passedProps.plugins||[];
var pluginProps=plugins.reduce(function (acc, plugin){
var name=plugin.name,
defaultValue=plugin.defaultValue;
if(name){
var _name;
acc[name]=passedProps[name]!==undefined ? passedProps[name]:(_name=defaultProps[name])!=null ? _name:defaultValue;
}
return acc;
}, {});
return Object.assign({}, passedProps, pluginProps);
}
function getDataAttributeProps(reference, plugins){
var propKeys=plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {
plugins: plugins
}))):defaultKeys;
var props=propKeys.reduce(function (acc, key){
var valueAsString=(reference.getAttribute("data-tippy-" + key)||'').trim();
if(!valueAsString){
return acc;
}
if(key==='content'){
acc[key]=valueAsString;
}else{
try {
acc[key]=JSON.parse(valueAsString);
} catch (e){
acc[key]=valueAsString;
}}
return acc;
}, {});
return props;
}
function evaluateProps(reference, props){
var out=Object.assign({}, props, {
content: invokeWithArgsOrReturn(props.content, [reference])
}, props.ignoreAttributes ? {}:getDataAttributeProps(reference, props.plugins));
out.aria=Object.assign({}, defaultProps.aria, out.aria);
out.aria={
expanded: out.aria.expanded==='auto' ? props.interactive:out.aria.expanded,
content: out.aria.content==='auto' ? props.interactive ? null:'describedby':out.aria.content
};
return out;
}
function validateProps(partialProps, plugins){
if(partialProps===void 0){
partialProps={};}
if(plugins===void 0){
plugins=[];
}
var keys=Object.keys(partialProps);
keys.forEach(function (prop){
var nonPluginProps=removeProperties(defaultProps, Object.keys(pluginProps));
var didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop);
if(didPassUnknownProp){
didPassUnknownProp=plugins.filter(function (plugin){
return plugin.name===prop;
}).length===0;
}
warnWhen(didPassUnknownProp, ["`" + prop + "`", "is not a valid prop. You may have spelled it incorrectly, or if it's", 'a plugin, forgot to pass it in an array as props.plugins.', '\n\n', 'All props: https://atomiks.github.io/tippyjs/v6/all-props/\n', 'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/'].join(' '));
});
}
var innerHTML=function innerHTML(){
return 'innerHTML';
};
function dangerouslySetInnerHTML(element, html){
element[innerHTML()]=html;
}
function createArrowElement(value){
var arrow=div();
if(value===true){
arrow.className=ARROW_CLASS;
}else{
arrow.className=SVG_ARROW_CLASS;
if(isElement(value)){
arrow.appendChild(value);
}else{
dangerouslySetInnerHTML(arrow, value);
}}
return arrow;
}
function setContent(content, props){
if(isElement(props.content)){
dangerouslySetInnerHTML(content, '');
content.appendChild(props.content);
}else if(typeof props.content!=='function'){
if(props.allowHTML){
dangerouslySetInnerHTML(content, props.content);
}else{
content.textContent=props.content;
}}
}
function getChildren(popper){
var box=popper.firstElementChild;
var boxChildren=arrayFrom(box.children);
return {
box: box,
content: boxChildren.find(function (node){
return node.classList.contains(CONTENT_CLASS);
}),
arrow: boxChildren.find(function (node){
return node.classList.contains(ARROW_CLASS)||node.classList.contains(SVG_ARROW_CLASS);
}),
backdrop: boxChildren.find(function (node){
return node.classList.contains(BACKDROP_CLASS);
})
};}
function render(instance){
var popper=div();
var box=div();
box.className=BOX_CLASS;
box.setAttribute('data-state', 'hidden');
box.setAttribute('tabindex', '-1');
var content=div();
content.className=CONTENT_CLASS;
content.setAttribute('data-state', 'hidden');
setContent(content, instance.props);
popper.appendChild(box);
box.appendChild(content);
onUpdate(instance.props, instance.props);
function onUpdate(prevProps, nextProps){
var _getChildren=getChildren(popper),
box=_getChildren.box,
content=_getChildren.content,
arrow=_getChildren.arrow;
if(nextProps.theme){
box.setAttribute('data-theme', nextProps.theme);
}else{
box.removeAttribute('data-theme');
}
if(typeof nextProps.animation==='string'){
box.setAttribute('data-animation', nextProps.animation);
}else{
box.removeAttribute('data-animation');
}
if(nextProps.inertia){
box.setAttribute('data-inertia', '');
}else{
box.removeAttribute('data-inertia');
}
box.style.maxWidth=typeof nextProps.maxWidth==='number' ? nextProps.maxWidth + "px":nextProps.maxWidth;
if(nextProps.role){
box.setAttribute('role', nextProps.role);
}else{
box.removeAttribute('role');
}
if(prevProps.content!==nextProps.content||prevProps.allowHTML!==nextProps.allowHTML){
setContent(content, instance.props);
}
if(nextProps.arrow){
if(!arrow){
box.appendChild(createArrowElement(nextProps.arrow));
}else if(prevProps.arrow!==nextProps.arrow){
box.removeChild(arrow);
box.appendChild(createArrowElement(nextProps.arrow));
}}else if(arrow){
box.removeChild(arrow);
}}
return {
popper: popper,
onUpdate: onUpdate
};}
render.$$tippy=true;
var idCounter=1;
var mouseMoveListeners=[];
var mountedInstances=[];
function createTippy(reference, passedProps){
var props=evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps))));
var showTimeout;
var hideTimeout;
var scheduleHideAnimationFrame;
var isVisibleFromClick=false;
var didHideDueToDocumentMouseDown=false;
var didTouchMove=false;
var ignoreOnFirstUpdate=false;
var lastTriggerEvent;
var currentTransitionEndListener;
var onFirstUpdate;
var listeners=[];
var debouncedOnMouseMove=debounce(onMouseMove, props.interactiveDebounce);
var currentTarget;
var id=idCounter++;
var popperInstance=null;
var plugins=unique(props.plugins);
var state={
isEnabled: true,
isVisible: false,
isDestroyed: false,
isMounted: false,
isShown: false
};
var instance={
id: id,
reference: reference,
popper: div(),
popperInstance: popperInstance,
props: props,
state: state,
plugins: plugins,
clearDelayTimeouts: clearDelayTimeouts,
setProps: setProps,
setContent: setContent,
show: show,
hide: hide,
hideWithInteractivity: hideWithInteractivity,
enable: enable,
disable: disable,
unmount: unmount,
destroy: destroy
};
if(!props.render){
{
errorWhen(true, 'render() function has not been supplied.');
}
return instance;
}
var _props$render=props.render(instance),
popper=_props$render.popper,
onUpdate=_props$render.onUpdate;
popper.setAttribute('data-tippy-root', '');
popper.id="tippy-" + instance.id;
instance.popper=popper;
reference._tippy=instance;
popper._tippy=instance;
var pluginsHooks=plugins.map(function (plugin){
return plugin.fn(instance);
});
var hasAriaExpanded=reference.hasAttribute('aria-expanded');
addListeners();
handleAriaExpandedAttribute();
handleStyles();
invokeHook('onCreate', [instance]);
if(props.showOnCreate){
scheduleShow();
}
popper.addEventListener('mouseenter', function (){
if(instance.props.interactive&&instance.state.isVisible){
instance.clearDelayTimeouts();
}});
popper.addEventListener('mouseleave', function (){
if(instance.props.interactive&&instance.props.trigger.indexOf('mouseenter') >=0){
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
}});
return instance;
function getNormalizedTouchSettings(){
var touch=instance.props.touch;
return Array.isArray(touch) ? touch:[touch, 0];
}
function getIsCustomTouchBehavior(){
return getNormalizedTouchSettings()[0]==='hold';
}
function getIsDefaultRenderFn(){
var _instance$props$rende;
return !!((_instance$props$rende=instance.props.render)!=null&&_instance$props$rende.$$tippy);
}
function getCurrentTarget(){
return currentTarget||reference;
}
function getDocument(){
var parent=getCurrentTarget().parentNode;
return parent ? getOwnerDocument(parent):document;
}
function getDefaultTemplateChildren(){
return getChildren(popper);
}
function getDelay(isShow){
if(instance.state.isMounted&&!instance.state.isVisible||currentInput.isTouch||lastTriggerEvent&&lastTriggerEvent.type==='focus'){
return 0;
}
return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0:1, defaultProps.delay);
}
function handleStyles(fromHide){
if(fromHide===void 0){
fromHide=false;
}
popper.style.pointerEvents=instance.props.interactive&&!fromHide ? '':'none';
popper.style.zIndex="" + instance.props.zIndex;
}
function invokeHook(hook, args, shouldInvokePropsHook){
if(shouldInvokePropsHook===void 0){
shouldInvokePropsHook=true;
}
pluginsHooks.forEach(function (pluginHooks){
if(pluginHooks[hook]){
pluginHooks[hook].apply(pluginHooks, args);
}});
if(shouldInvokePropsHook){
var _instance$props;
(_instance$props=instance.props)[hook].apply(_instance$props, args);
}}
function handleAriaContentAttribute(){
var aria=instance.props.aria;
if(!aria.content){
return;
}
var attr="aria-" + aria.content;
var id=popper.id;
var nodes=normalizeToArray(instance.props.triggerTarget||reference);
nodes.forEach(function (node){
var currentValue=node.getAttribute(attr);
if(instance.state.isVisible){
node.setAttribute(attr, currentValue ? currentValue + " " + id:id);
}else{
var nextValue=currentValue&&currentValue.replace(id, '').trim();
if(nextValue){
node.setAttribute(attr, nextValue);
}else{
node.removeAttribute(attr);
}}
});
}
function handleAriaExpandedAttribute(){
if(hasAriaExpanded||!instance.props.aria.expanded){
return;
}
var nodes=normalizeToArray(instance.props.triggerTarget||reference);
nodes.forEach(function (node){
if(instance.props.interactive){
node.setAttribute('aria-expanded', instance.state.isVisible&&node===getCurrentTarget() ? 'true':'false');
}else{
node.removeAttribute('aria-expanded');
}});
}
function cleanupInteractiveMouseListeners(){
getDocument().removeEventListener('mousemove', debouncedOnMouseMove);
mouseMoveListeners=mouseMoveListeners.filter(function (listener){
return listener!==debouncedOnMouseMove;
});
}
function onDocumentPress(event){
if(currentInput.isTouch){
if(didTouchMove||event.type==='mousedown'){
return;
}}
var actualTarget=event.composedPath&&event.composedPath()[0]||event.target;
if(instance.props.interactive&&actualContains(popper, actualTarget)){
return;
}
if(normalizeToArray(instance.props.triggerTarget||reference).some(function (el){
return actualContains(el, actualTarget);
})){
if(currentInput.isTouch){
return;
}
if(instance.state.isVisible&&instance.props.trigger.indexOf('click') >=0){
return;
}}else{
invokeHook('onClickOutside', [instance, event]);
}
if(instance.props.hideOnClick===true){
instance.clearDelayTimeouts();
instance.hide();
didHideDueToDocumentMouseDown=true;
setTimeout(function (){
didHideDueToDocumentMouseDown=false;
});
if(!instance.state.isMounted){
removeDocumentPress();
}}
}
function onTouchMove(){
didTouchMove=true;
}
function onTouchStart(){
didTouchMove=false;
}
function addDocumentPress(){
var doc=getDocument();
doc.addEventListener('mousedown', onDocumentPress, true);
doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);
}
function removeDocumentPress(){
var doc=getDocument();
doc.removeEventListener('mousedown', onDocumentPress, true);
doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);
}
function onTransitionedOut(duration, callback){
onTransitionEnd(duration, function (){
if(!instance.state.isVisible&&popper.parentNode&&popper.parentNode.contains(popper)){
callback();
}});
}
function onTransitionedIn(duration, callback){
onTransitionEnd(duration, callback);
}
function onTransitionEnd(duration, callback){
var box=getDefaultTemplateChildren().box;
function listener(event){
if(event.target===box){
updateTransitionEndListener(box, 'remove', listener);
callback();
}}
if(duration===0){
return callback();
}
updateTransitionEndListener(box, 'remove', currentTransitionEndListener);
updateTransitionEndListener(box, 'add', listener);
currentTransitionEndListener=listener;
}
function on(eventType, handler, options){
if(options===void 0){
options=false;
}
var nodes=normalizeToArray(instance.props.triggerTarget||reference);
nodes.forEach(function (node){
node.addEventListener(eventType, handler, options);
listeners.push({
node: node,
eventType: eventType,
handler: handler,
options: options
});
});
}
function addListeners(){
if(getIsCustomTouchBehavior()){
on('touchstart', onTrigger, {
passive: true
});
on('touchend', onMouseLeave, {
passive: true
});
}
splitBySpaces(instance.props.trigger).forEach(function (eventType){
if(eventType==='manual'){
return;
}
on(eventType, onTrigger);
switch (eventType){
case 'mouseenter':
on('mouseleave', onMouseLeave);
break;
case 'focus':
on(isIE11 ? 'focusout':'blur', onBlurOrFocusOut);
break;
case 'focusin':
on('focusout', onBlurOrFocusOut);
break;
}});
}
function removeListeners(){
listeners.forEach(function (_ref){
var node=_ref.node,
eventType=_ref.eventType,
handler=_ref.handler,
options=_ref.options;
node.removeEventListener(eventType, handler, options);
});
listeners=[];
}
function onTrigger(event){
var _lastTriggerEvent;
var shouldScheduleClickHide=false;
if(!instance.state.isEnabled||isEventListenerStopped(event)||didHideDueToDocumentMouseDown){
return;
}
var wasFocused=((_lastTriggerEvent=lastTriggerEvent)==null ? void 0:_lastTriggerEvent.type)==='focus';
lastTriggerEvent=event;
currentTarget=event.currentTarget;
handleAriaExpandedAttribute();
if(!instance.state.isVisible&&isMouseEvent(event)){
mouseMoveListeners.forEach(function (listener){
return listener(event);
});
}
if(event.type==='click'&&(instance.props.trigger.indexOf('mouseenter') < 0||isVisibleFromClick)&&instance.props.hideOnClick!==false&&instance.state.isVisible){
shouldScheduleClickHide=true;
}else{
scheduleShow(event);
}
if(event.type==='click'){
isVisibleFromClick = !shouldScheduleClickHide;
}
if(shouldScheduleClickHide&&!wasFocused){
scheduleHide(event);
}}
function onMouseMove(event){
var target=event.target;
var isCursorOverReferenceOrPopper=getCurrentTarget().contains(target)||popper.contains(target);
if(event.type==='mousemove'&&isCursorOverReferenceOrPopper){
return;
}
var popperTreeData=getNestedPopperTree().concat(popper).map(function (popper){
var _instance$popperInsta;
var instance=popper._tippy;
var state=(_instance$popperInsta=instance.popperInstance)==null ? void 0:_instance$popperInsta.state;
if(state){
return {
popperRect: popper.getBoundingClientRect(),
popperState: state,
props: props
};}
return null;
}).filter(Boolean);
if(isCursorOutsideInteractiveBorder(popperTreeData, event)){
cleanupInteractiveMouseListeners();
scheduleHide(event);
}}
function onMouseLeave(event){
var shouldBail=isEventListenerStopped(event)||instance.props.trigger.indexOf('click') >=0&&isVisibleFromClick;
if(shouldBail){
return;
}
if(instance.props.interactive){
instance.hideWithInteractivity(event);
return;
}
scheduleHide(event);
}
function onBlurOrFocusOut(event){
if(instance.props.trigger.indexOf('focusin') < 0&&event.target!==getCurrentTarget()){
return;
}
if(instance.props.interactive&&event.relatedTarget&&popper.contains(event.relatedTarget)){
return;
}
scheduleHide(event);
}
function isEventListenerStopped(event){
return currentInput.isTouch ? getIsCustomTouchBehavior()!==event.type.indexOf('touch') >=0:false;
}
function createPopperInstance(){
destroyPopperInstance();
var _instance$props2=instance.props,
popperOptions=_instance$props2.popperOptions,
placement=_instance$props2.placement,
offset=_instance$props2.offset,
getReferenceClientRect=_instance$props2.getReferenceClientRect,
moveTransition=_instance$props2.moveTransition;
var arrow=getIsDefaultRenderFn() ? getChildren(popper).arrow:null;
var computedReference=getReferenceClientRect ? {
getBoundingClientRect: getReferenceClientRect,
contextElement: getReferenceClientRect.contextElement||getCurrentTarget()
}:reference;
var tippyModifier={
name: '$$tippy',
enabled: true,
phase: 'beforeWrite',
requires: ['computeStyles'],
fn: function fn(_ref2){
var state=_ref2.state;
if(getIsDefaultRenderFn()){
var _getDefaultTemplateCh=getDefaultTemplateChildren(),
box=_getDefaultTemplateCh.box;
['placement', 'reference-hidden', 'escaped'].forEach(function (attr){
if(attr==='placement'){
box.setAttribute('data-placement', state.placement);
}else{
if(state.attributes.popper["data-popper-" + attr]){
box.setAttribute("data-" + attr, '');
}else{
box.removeAttribute("data-" + attr);
}}
});
state.attributes.popper={};}}
};
var modifiers=[{
name: 'offset',
options: {
offset: offset
}}, {
name: 'preventOverflow',
options: {
padding: {
top: 2,
bottom: 2,
left: 5,
right: 5
}}
}, {
name: 'flip',
options: {
padding: 5
}}, {
name: 'computeStyles',
options: {
adaptive: !moveTransition
}}, tippyModifier];
if(getIsDefaultRenderFn()&&arrow){
modifiers.push({
name: 'arrow',
options: {
element: arrow,
padding: 3
}});
}
modifiers.push.apply(modifiers, (popperOptions==null ? void 0:popperOptions.modifiers)||[]);
instance.popperInstance=core.createPopper(computedReference, popper, Object.assign({}, popperOptions, {
placement: placement,
onFirstUpdate: onFirstUpdate,
modifiers: modifiers
}));
}
function destroyPopperInstance(){
if(instance.popperInstance){
instance.popperInstance.destroy();
instance.popperInstance=null;
}}
function mount(){
var appendTo=instance.props.appendTo;
var parentNode;
var node=getCurrentTarget();
if(instance.props.interactive&&appendTo===TIPPY_DEFAULT_APPEND_TO||appendTo==='parent'){
parentNode=node.parentNode;
}else{
parentNode=invokeWithArgsOrReturn(appendTo, [node]);
}
if(!parentNode.contains(popper)){
parentNode.appendChild(popper);
}
instance.state.isMounted=true;
createPopperInstance();
{
warnWhen(instance.props.interactive&&appendTo===defaultProps.appendTo&&node.nextElementSibling!==popper, ['Interactive tippy element may not be accessible via keyboard', 'navigation because it is not directly after the reference element', 'in the DOM source order.', '\n\n', 'Using a wrapper <div> or <span> tag around the reference element', 'solves this by creating a new parentNode context.', '\n\n', 'Specifying `appendTo: document.body` silences this warning, but it', 'assumes you are using a focus management solution to handle', 'keyboard navigation.', '\n\n', 'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity'].join(' '));
}}
function getNestedPopperTree(){
return arrayFrom(popper.querySelectorAll('[data-tippy-root]'));
}
function scheduleShow(event){
instance.clearDelayTimeouts();
if(event){
invokeHook('onTrigger', [instance, event]);
}
addDocumentPress();
var delay=getDelay(true);
var _getNormalizedTouchSe=getNormalizedTouchSettings(),
touchValue=_getNormalizedTouchSe[0],
touchDelay=_getNormalizedTouchSe[1];
if(currentInput.isTouch&&touchValue==='hold'&&touchDelay){
delay=touchDelay;
}
if(delay){
showTimeout=setTimeout(function (){
instance.show();
}, delay);
}else{
instance.show();
}}
function scheduleHide(event){
instance.clearDelayTimeouts();
invokeHook('onUntrigger', [instance, event]);
if(!instance.state.isVisible){
removeDocumentPress();
return;
}
if(instance.props.trigger.indexOf('mouseenter') >=0&&instance.props.trigger.indexOf('click') >=0&&['mouseleave', 'mousemove'].indexOf(event.type) >=0&&isVisibleFromClick){
return;
}
var delay=getDelay(false);
if(delay){
hideTimeout=setTimeout(function (){
if(instance.state.isVisible){
instance.hide();
}}, delay);
}else{
scheduleHideAnimationFrame=requestAnimationFrame(function (){
instance.hide();
});
}}
function enable(){
instance.state.isEnabled=true;
}
function disable(){
instance.hide();
instance.state.isEnabled=false;
}
function clearDelayTimeouts(){
clearTimeout(showTimeout);
clearTimeout(hideTimeout);
cancelAnimationFrame(scheduleHideAnimationFrame);
}
function setProps(partialProps){
{
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));
}
if(instance.state.isDestroyed){
return;
}
invokeHook('onBeforeUpdate', [instance, partialProps]);
removeListeners();
var prevProps=instance.props;
var nextProps=evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {
ignoreAttributes: true
}));
instance.props=nextProps;
addListeners();
if(prevProps.interactiveDebounce!==nextProps.interactiveDebounce){
cleanupInteractiveMouseListeners();
debouncedOnMouseMove=debounce(onMouseMove, nextProps.interactiveDebounce);
}
if(prevProps.triggerTarget&&!nextProps.triggerTarget){
normalizeToArray(prevProps.triggerTarget).forEach(function (node){
node.removeAttribute('aria-expanded');
});
}else if(nextProps.triggerTarget){
reference.removeAttribute('aria-expanded');
}
handleAriaExpandedAttribute();
handleStyles();
if(onUpdate){
onUpdate(prevProps, nextProps);
}
if(instance.popperInstance){
createPopperInstance();
getNestedPopperTree().forEach(function (nestedPopper){
requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);
});
}
invokeHook('onAfterUpdate', [instance, partialProps]);
}
function setContent(content){
instance.setProps({
content: content
});
}
function show(){
{
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));
}
var isAlreadyVisible=instance.state.isVisible;
var isDestroyed=instance.state.isDestroyed;
var isDisabled = !instance.state.isEnabled;
var isTouchAndTouchDisabled=currentInput.isTouch&&!instance.props.touch;
var duration=getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);
if(isAlreadyVisible||isDestroyed||isDisabled||isTouchAndTouchDisabled){
return;
}
if(getCurrentTarget().hasAttribute('disabled')){
return;
}
invokeHook('onShow', [instance], false);
if(instance.props.onShow(instance)===false){
return;
}
instance.state.isVisible=true;
if(getIsDefaultRenderFn()){
popper.style.visibility='visible';
}
handleStyles();
addDocumentPress();
if(!instance.state.isMounted){
popper.style.transition='none';
}
if(getIsDefaultRenderFn()){
var _getDefaultTemplateCh2=getDefaultTemplateChildren(),
box=_getDefaultTemplateCh2.box,
content=_getDefaultTemplateCh2.content;
setTransitionDuration([box, content], 0);
}
onFirstUpdate=function onFirstUpdate(){
var _instance$popperInsta2;
if(!instance.state.isVisible||ignoreOnFirstUpdate){
return;
}
ignoreOnFirstUpdate=true;
void popper.offsetHeight;
popper.style.transition=instance.props.moveTransition;
if(getIsDefaultRenderFn()&&instance.props.animation){
var _getDefaultTemplateCh3=getDefaultTemplateChildren(),
_box=_getDefaultTemplateCh3.box,
_content=_getDefaultTemplateCh3.content;
setTransitionDuration([_box, _content], duration);
setVisibilityState([_box, _content], 'visible');
}
handleAriaContentAttribute();
handleAriaExpandedAttribute();
pushIfUnique(mountedInstances, instance);
(_instance$popperInsta2=instance.popperInstance)==null ? void 0:_instance$popperInsta2.forceUpdate();
invokeHook('onMount', [instance]);
if(instance.props.animation&&getIsDefaultRenderFn()){
onTransitionedIn(duration, function (){
instance.state.isShown=true;
invokeHook('onShown', [instance]);
});
}};
mount();
}
function hide(){
{
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));
}
var isAlreadyHidden = !instance.state.isVisible;
var isDestroyed=instance.state.isDestroyed;
var isDisabled = !instance.state.isEnabled;
var duration=getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);
if(isAlreadyHidden||isDestroyed||isDisabled){
return;
}
invokeHook('onHide', [instance], false);
if(instance.props.onHide(instance)===false){
return;
}
instance.state.isVisible=false;
instance.state.isShown=false;
ignoreOnFirstUpdate=false;
isVisibleFromClick=false;
if(getIsDefaultRenderFn()){
popper.style.visibility='hidden';
}
cleanupInteractiveMouseListeners();
removeDocumentPress();
handleStyles(true);
if(getIsDefaultRenderFn()){
var _getDefaultTemplateCh4=getDefaultTemplateChildren(),
box=_getDefaultTemplateCh4.box,
content=_getDefaultTemplateCh4.content;
if(instance.props.animation){
setTransitionDuration([box, content], duration);
setVisibilityState([box, content], 'hidden');
}}
handleAriaContentAttribute();
handleAriaExpandedAttribute();
if(instance.props.animation){
if(getIsDefaultRenderFn()){
onTransitionedOut(duration, instance.unmount);
}}else{
instance.unmount();
}}
function hideWithInteractivity(event){
{
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));
}
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);
debouncedOnMouseMove(event);
}
function unmount(){
{
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));
}
if(instance.state.isVisible){
instance.hide();
}
if(!instance.state.isMounted){
return;
}
destroyPopperInstance();
getNestedPopperTree().forEach(function (nestedPopper){
nestedPopper._tippy.unmount();
});
if(popper.parentNode){
popper.parentNode.removeChild(popper);
}
mountedInstances=mountedInstances.filter(function (i){
return i!==instance;
});
instance.state.isMounted=false;
invokeHook('onHidden', [instance]);
}
function destroy(){
{
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));
}
if(instance.state.isDestroyed){
return;
}
instance.clearDelayTimeouts();
instance.unmount();
removeListeners();
delete reference._tippy;
instance.state.isDestroyed=true;
invokeHook('onDestroy', [instance]);
}}
function tippy(targets, optionalProps){
if(optionalProps===void 0){
optionalProps={};}
var plugins=defaultProps.plugins.concat(optionalProps.plugins||[]);
{
validateTargets(targets);
validateProps(optionalProps, plugins);
}
bindGlobalEventListeners();
var passedProps=Object.assign({}, optionalProps, {
plugins: plugins
});
var elements=getArrayOfElements(targets);
{
var isSingleContentElement=isElement(passedProps.content);
var isMoreThanOneReferenceElement=elements.length > 1;
warnWhen(isSingleContentElement&&isMoreThanOneReferenceElement, ['tippy() was passed an Element as the `content` prop, but more than', 'one tippy instance was created by this invocation. This means the', 'content element will only be appended to the last tippy instance.', '\n\n', 'Instead, pass the .innerHTML of the element, or use a function that', 'returns a cloned version of the element instead.', '\n\n', '1) content: element.innerHTML\n', '2) content: ()=> element.cloneNode(true)'].join(' '));
}
var instances=elements.reduce(function (acc, reference){
var instance=reference&&createTippy(reference, passedProps);
if(instance){
acc.push(instance);
}
return acc;
}, []);
return isElement(targets) ? instances[0]:instances;
}
tippy.defaultProps=defaultProps;
tippy.setDefaultProps=setDefaultProps;
tippy.currentInput=currentInput;
var hideAll=function hideAll(_temp){
var _ref=_temp===void 0 ? {}:_temp,
excludedReferenceOrInstance=_ref.exclude,
duration=_ref.duration;
mountedInstances.forEach(function (instance){
var isExcluded=false;
if(excludedReferenceOrInstance){
isExcluded=isReferenceElement(excludedReferenceOrInstance) ? instance.reference===excludedReferenceOrInstance:instance.popper===excludedReferenceOrInstance.popper;
}
if(!isExcluded){
var originalDuration=instance.props.duration;
instance.setProps({
duration: duration
});
instance.hide();
if(!instance.state.isDestroyed){
instance.setProps({
duration: originalDuration
});
}}
});
};
var applyStylesModifier=Object.assign({}, core.applyStyles, {
effect: function effect(_ref){
var state=_ref.state;
var initialStyles={
popper: {
position: state.options.strategy,
left: '0',
top: '0',
margin: '0'
},
arrow: {
position: 'absolute'
},
reference: {}};
Object.assign(state.elements.popper.style, initialStyles.popper);
state.styles=initialStyles;
if(state.elements.arrow){
Object.assign(state.elements.arrow.style, initialStyles.arrow);
}}
});
var createSingleton=function createSingleton(tippyInstances, optionalProps){
var _optionalProps$popper;
if(optionalProps===void 0){
optionalProps={};}
{
errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));
}
var individualInstances=tippyInstances;
var references=[];
var triggerTargets=[];
var currentTarget;
var overrides=optionalProps.overrides;
var interceptSetPropsCleanups=[];
var shownOnCreate=false;
function setTriggerTargets(){
triggerTargets=individualInstances.map(function (instance){
return normalizeToArray(instance.props.triggerTarget||instance.reference);
}).reduce(function (acc, item){
return acc.concat(item);
}, []);
}
function setReferences(){
references=individualInstances.map(function (instance){
return instance.reference;
});
}
function enableInstances(isEnabled){
individualInstances.forEach(function (instance){
if(isEnabled){
instance.enable();
}else{
instance.disable();
}});
}
function interceptSetProps(singleton){
return individualInstances.map(function (instance){
var originalSetProps=instance.setProps;
instance.setProps=function (props){
originalSetProps(props);
if(instance.reference===currentTarget){
singleton.setProps(props);
}};
return function (){
instance.setProps=originalSetProps;
};});
}
function prepareInstance(singleton, target){
var index=triggerTargets.indexOf(target);
if(target===currentTarget){
return;
}
currentTarget=target;
var overrideProps=(overrides||[]).concat('content').reduce(function (acc, prop){
acc[prop]=individualInstances[index].props[prop];
return acc;
}, {});
singleton.setProps(Object.assign({}, overrideProps, {
getReferenceClientRect: typeof overrideProps.getReferenceClientRect==='function' ? overrideProps.getReferenceClientRect:function (){
var _references$index;
return (_references$index=references[index])==null ? void 0:_references$index.getBoundingClientRect();
}}));
}
enableInstances(false);
setReferences();
setTriggerTargets();
var plugin={
fn: function fn(){
return {
onDestroy: function onDestroy(){
enableInstances(true);
},
onHidden: function onHidden(){
currentTarget=null;
},
onClickOutside: function onClickOutside(instance){
if(instance.props.showOnCreate&&!shownOnCreate){
shownOnCreate=true;
currentTarget=null;
}},
onShow: function onShow(instance){
if(instance.props.showOnCreate&&!shownOnCreate){
shownOnCreate=true;
prepareInstance(instance, references[0]);
}},
onTrigger: function onTrigger(instance, event){
prepareInstance(instance, event.currentTarget);
}};}};
var singleton=tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {
plugins: [plugin].concat(optionalProps.plugins||[]),
triggerTarget: triggerTargets,
popperOptions: Object.assign({}, optionalProps.popperOptions, {
modifiers: [].concat(((_optionalProps$popper=optionalProps.popperOptions)==null ? void 0:_optionalProps$popper.modifiers)||[], [applyStylesModifier])
})
}));
var originalShow=singleton.show;
singleton.show=function (target){
originalShow();
if(!currentTarget&&target==null){
return prepareInstance(singleton, references[0]);
}
if(currentTarget&&target==null){
return;
}
if(typeof target==='number'){
return references[target]&&prepareInstance(singleton, references[target]);
}
if(individualInstances.indexOf(target) >=0){
var ref=target.reference;
return prepareInstance(singleton, ref);
}
if(references.indexOf(target) >=0){
return prepareInstance(singleton, target);
}};
singleton.showNext=function (){
var first=references[0];
if(!currentTarget){
return singleton.show(0);
}
var index=references.indexOf(currentTarget);
singleton.show(references[index + 1]||first);
};
singleton.showPrevious=function (){
var last=references[references.length - 1];
if(!currentTarget){
return singleton.show(last);
}
var index=references.indexOf(currentTarget);
var target=references[index - 1]||last;
singleton.show(target);
};
var originalSetProps=singleton.setProps;
singleton.setProps=function (props){
overrides=props.overrides||overrides;
originalSetProps(props);
};
singleton.setInstances=function (nextInstances){
enableInstances(true);
interceptSetPropsCleanups.forEach(function (fn){
return fn();
});
individualInstances=nextInstances;
enableInstances(false);
setReferences();
setTriggerTargets();
interceptSetPropsCleanups=interceptSetProps(singleton);
singleton.setProps({
triggerTarget: triggerTargets
});
};
interceptSetPropsCleanups=interceptSetProps(singleton);
return singleton;
};
var BUBBLING_EVENTS_MAP={
mouseover: 'mouseenter',
focusin: 'focus',
click: 'click'
};
function delegate(targets, props){
{
errorWhen(!(props&&props.target), ['You must specity a `target` prop indicating a CSS selector string matching', 'the target elements that should receive a tippy.'].join(' '));
}
var listeners=[];
var childTippyInstances=[];
var disabled=false;
var target=props.target;
var nativeProps=removeProperties(props, ['target']);
var parentProps=Object.assign({}, nativeProps, {
trigger: 'manual',
touch: false
});
var childProps=Object.assign({
touch: defaultProps.touch
}, nativeProps, {
showOnCreate: true
});
var returnValue=tippy(targets, parentProps);
var normalizedReturnValue=normalizeToArray(returnValue);
function onTrigger(event){
if(!event.target||disabled){
return;
}
var targetNode=event.target.closest(target);
if(!targetNode){
return;
}
var trigger=targetNode.getAttribute('data-tippy-trigger')||props.trigger||defaultProps.trigger;
if(targetNode._tippy){
return;
}
if(event.type==='touchstart'&&typeof childProps.touch==='boolean'){
return;
}
if(event.type!=='touchstart'&&trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0){
return;
}
var instance=tippy(targetNode, childProps);
if(instance){
childTippyInstances=childTippyInstances.concat(instance);
}}
function on(node, eventType, handler, options){
if(options===void 0){
options=false;
}
node.addEventListener(eventType, handler, options);
listeners.push({
node: node,
eventType: eventType,
handler: handler,
options: options
});
}
function addEventListeners(instance){
var reference=instance.reference;
on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);
on(reference, 'mouseover', onTrigger);
on(reference, 'focusin', onTrigger);
on(reference, 'click', onTrigger);
}
function removeEventListeners(){
listeners.forEach(function (_ref){
var node=_ref.node,
eventType=_ref.eventType,
handler=_ref.handler,
options=_ref.options;
node.removeEventListener(eventType, handler, options);
});
listeners=[];
}
function applyMutations(instance){
var originalDestroy=instance.destroy;
var originalEnable=instance.enable;
var originalDisable=instance.disable;
instance.destroy=function (shouldDestroyChildInstances){
if(shouldDestroyChildInstances===void 0){
shouldDestroyChildInstances=true;
}
if(shouldDestroyChildInstances){
childTippyInstances.forEach(function (instance){
instance.destroy();
});
}
childTippyInstances=[];
removeEventListeners();
originalDestroy();
};
instance.enable=function (){
originalEnable();
childTippyInstances.forEach(function (instance){
return instance.enable();
});
disabled=false;
};
instance.disable=function (){
originalDisable();
childTippyInstances.forEach(function (instance){
return instance.disable();
});
disabled=true;
};
addEventListeners(instance);
}
normalizedReturnValue.forEach(applyMutations);
return returnValue;
}
var animateFill={
name: 'animateFill',
defaultValue: false,
fn: function fn(instance){
var _instance$props$rende;
if(!((_instance$props$rende=instance.props.render)!=null&&_instance$props$rende.$$tippy)){
{
errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');
}
return {};}
var _getChildren=getChildren(instance.popper),
box=_getChildren.box,
content=_getChildren.content;
var backdrop=instance.props.animateFill ? createBackdropElement():null;
return {
onCreate: function onCreate(){
if(backdrop){
box.insertBefore(backdrop, box.firstElementChild);
box.setAttribute('data-animatefill', '');
box.style.overflow='hidden';
instance.setProps({
arrow: false,
animation: 'shift-away'
});
}},
onMount: function onMount(){
if(backdrop){
var transitionDuration=box.style.transitionDuration;
var duration=Number(transitionDuration.replace('ms', ''));
content.style.transitionDelay=Math.round(duration / 10) + "ms";
backdrop.style.transitionDuration=transitionDuration;
setVisibilityState([backdrop], 'visible');
}},
onShow: function onShow(){
if(backdrop){
backdrop.style.transitionDuration='0ms';
}},
onHide: function onHide(){
if(backdrop){
setVisibilityState([backdrop], 'hidden');
}}
};}};
function createBackdropElement(){
var backdrop=div();
backdrop.className=BACKDROP_CLASS;
setVisibilityState([backdrop], 'hidden');
return backdrop;
}
var mouseCoords={
clientX: 0,
clientY: 0
};
var activeInstances=[];
function storeMouseCoords(_ref){
var clientX=_ref.clientX,
clientY=_ref.clientY;
mouseCoords={
clientX: clientX,
clientY: clientY
};}
function addMouseCoordsListener(doc){
doc.addEventListener('mousemove', storeMouseCoords);
}
function removeMouseCoordsListener(doc){
doc.removeEventListener('mousemove', storeMouseCoords);
}
var followCursor={
name: 'followCursor',
defaultValue: false,
fn: function fn(instance){
var reference=instance.reference;
var doc=getOwnerDocument(instance.props.triggerTarget||reference);
var isInternalUpdate=false;
var wasFocusEvent=false;
var isUnmounted=true;
var prevProps=instance.props;
function getIsInitialBehavior(){
return instance.props.followCursor==='initial'&&instance.state.isVisible;
}
function addListener(){
doc.addEventListener('mousemove', onMouseMove);
}
function removeListener(){
doc.removeEventListener('mousemove', onMouseMove);
}
function unsetGetReferenceClientRect(){
isInternalUpdate=true;
instance.setProps({
getReferenceClientRect: null
});
isInternalUpdate=false;
}
function onMouseMove(event){
var isCursorOverReference=event.target ? reference.contains(event.target):true;
var followCursor=instance.props.followCursor;
var clientX=event.clientX,
clientY=event.clientY;
var rect=reference.getBoundingClientRect();
var relativeX=clientX - rect.left;
var relativeY=clientY - rect.top;
if(isCursorOverReference||!instance.props.interactive){
instance.setProps({
getReferenceClientRect: function getReferenceClientRect(){
var rect=reference.getBoundingClientRect();
var x=clientX;
var y=clientY;
if(followCursor==='initial'){
x=rect.left + relativeX;
y=rect.top + relativeY;
}
var top=followCursor==='horizontal' ? rect.top:y;
var right=followCursor==='vertical' ? rect.right:x;
var bottom=followCursor==='horizontal' ? rect.bottom:y;
var left=followCursor==='vertical' ? rect.left:x;
return {
width: right - left,
height: bottom - top,
top: top,
right: right,
bottom: bottom,
left: left
};}});
}}
function create(){
if(instance.props.followCursor){
activeInstances.push({
instance: instance,
doc: doc
});
addMouseCoordsListener(doc);
}}
function destroy(){
activeInstances=activeInstances.filter(function (data){
return data.instance!==instance;
});
if(activeInstances.filter(function (data){
return data.doc===doc;
}).length===0){
removeMouseCoordsListener(doc);
}}
return {
onCreate: create,
onDestroy: destroy,
onBeforeUpdate: function onBeforeUpdate(){
prevProps=instance.props;
},
onAfterUpdate: function onAfterUpdate(_, _ref2){
var followCursor=_ref2.followCursor;
if(isInternalUpdate){
return;
}
if(followCursor!==undefined&&prevProps.followCursor!==followCursor){
destroy();
if(followCursor){
create();
if(instance.state.isMounted&&!wasFocusEvent&&!getIsInitialBehavior()){
addListener();
}}else{
removeListener();
unsetGetReferenceClientRect();
}}
},
onMount: function onMount(){
if(instance.props.followCursor&&!wasFocusEvent){
if(isUnmounted){
onMouseMove(mouseCoords);
isUnmounted=false;
}
if(!getIsInitialBehavior()){
addListener();
}}
},
onTrigger: function onTrigger(_, event){
if(isMouseEvent(event)){
mouseCoords={
clientX: event.clientX,
clientY: event.clientY
};}
wasFocusEvent=event.type==='focus';
},
onHidden: function onHidden(){
if(instance.props.followCursor){
unsetGetReferenceClientRect();
removeListener();
isUnmounted=true;
}}
};}};
function getProps(props, modifier){
var _props$popperOptions;
return {
popperOptions: Object.assign({}, props.popperOptions, {
modifiers: [].concat((((_props$popperOptions=props.popperOptions)==null ? void 0:_props$popperOptions.modifiers)||[]).filter(function (_ref){
var name=_ref.name;
return name!==modifier.name;
}), [modifier])
})
};}
var inlinePositioning={
name: 'inlinePositioning',
defaultValue: false,
fn: function fn(instance){
var reference=instance.reference;
function isEnabled(){
return !!instance.props.inlinePositioning;
}
var placement;
var cursorRectIndex=-1;
var isInternalUpdate=false;
var triedPlacements=[];
var modifier={
name: 'tippyInlinePositioning',
enabled: true,
phase: 'afterWrite',
fn: function fn(_ref2){
var state=_ref2.state;
if(isEnabled()){
if(triedPlacements.indexOf(state.placement)!==-1){
triedPlacements=[];
}
if(placement!==state.placement&&triedPlacements.indexOf(state.placement)===-1){
triedPlacements.push(state.placement);
instance.setProps({
getReferenceClientRect: function getReferenceClientRect(){
return _getReferenceClientRect(state.placement);
}});
}
placement=state.placement;
}}
};
function _getReferenceClientRect(placement){
return getInlineBoundingClientRect(getBasePlacement(placement), reference.getBoundingClientRect(), arrayFrom(reference.getClientRects()), cursorRectIndex);
}
function setInternalProps(partialProps){
isInternalUpdate=true;
instance.setProps(partialProps);
isInternalUpdate=false;
}
function addModifier(){
if(!isInternalUpdate){
setInternalProps(getProps(instance.props, modifier));
}}
return {
onCreate: addModifier,
onAfterUpdate: addModifier,
onTrigger: function onTrigger(_, event){
if(isMouseEvent(event)){
var rects=arrayFrom(instance.reference.getClientRects());
var cursorRect=rects.find(function (rect){
return rect.left - 2 <=event.clientX&&rect.right + 2 >=event.clientX&&rect.top - 2 <=event.clientY&&rect.bottom + 2 >=event.clientY;
});
var index=rects.indexOf(cursorRect);
cursorRectIndex=index > -1 ? index:cursorRectIndex;
}},
onHidden: function onHidden(){
cursorRectIndex=-1;
}};}};
function getInlineBoundingClientRect(currentBasePlacement, boundingRect, clientRects, cursorRectIndex){
if(clientRects.length < 2||currentBasePlacement===null){
return boundingRect;
}
if(clientRects.length===2&&cursorRectIndex >=0&&clientRects[0].left > clientRects[1].right){
return clientRects[cursorRectIndex]||boundingRect;
}
switch (currentBasePlacement){
case 'top':
case 'bottom':
{
var firstRect=clientRects[0];
var lastRect=clientRects[clientRects.length - 1];
var isTop=currentBasePlacement==='top';
var top=firstRect.top;
var bottom=lastRect.bottom;
var left=isTop ? firstRect.left:lastRect.left;
var right=isTop ? firstRect.right:lastRect.right;
var width=right - left;
var height=bottom - top;
return {
top: top,
bottom: bottom,
left: left,
right: right,
width: width,
height: height
};}
case 'left':
case 'right':
{
var minLeft=Math.min.apply(Math, clientRects.map(function (rects){
return rects.left;
}));
var maxRight=Math.max.apply(Math, clientRects.map(function (rects){
return rects.right;
}));
var measureRects=clientRects.filter(function (rect){
return currentBasePlacement==='left' ? rect.left===minLeft:rect.right===maxRight;
});
var _top=measureRects[0].top;
var _bottom=measureRects[measureRects.length - 1].bottom;
var _left=minLeft;
var _right=maxRight;
var _width=_right - _left;
var _height=_bottom - _top;
return {
top: _top,
bottom: _bottom,
left: _left,
right: _right,
width: _width,
height: _height
};}
default:
{
return boundingRect;
}}
}
var sticky={
name: 'sticky',
defaultValue: false,
fn: function fn(instance){
var reference=instance.reference,
popper=instance.popper;
function getReference(){
return instance.popperInstance ? instance.popperInstance.state.elements.reference:reference;
}
function shouldCheck(value){
return instance.props.sticky===true||instance.props.sticky===value;
}
var prevRefRect=null;
var prevPopRect=null;
function updatePosition(){
var currentRefRect=shouldCheck('reference') ? getReference().getBoundingClientRect():null;
var currentPopRect=shouldCheck('popper') ? popper.getBoundingClientRect():null;
if(currentRefRect&&areRectsDifferent(prevRefRect, currentRefRect)||currentPopRect&&areRectsDifferent(prevPopRect, currentPopRect)){
if(instance.popperInstance){
instance.popperInstance.update();
}}
prevRefRect=currentRefRect;
prevPopRect=currentPopRect;
if(instance.state.isMounted){
requestAnimationFrame(updatePosition);
}}
return {
onMount: function onMount(){
if(instance.props.sticky){
updatePosition();
}}
};}};
function areRectsDifferent(rectA, rectB){
if(rectA&&rectB){
return rectA.top!==rectB.top||rectA.right!==rectB.right||rectA.bottom!==rectB.bottom||rectA.left!==rectB.left;
}
return true;
}
if(isBrowser){
injectCSS(css);
}
tippy.setDefaultProps({
plugins: [animateFill, followCursor, inlinePositioning, sticky],
render: render
});
tippy.createSingleton=createSingleton;
tippy.delegate=delegate;
tippy.hideAll=hideAll;
tippy.roundArrow=ROUND_ARROW;
return tippy;
})));
(function($){
var PROP_NAME='datepick';
if(!$.browser_is_supported_datepick){
var uaMatch=function(ua){
ua=ua.toLowerCase();
var match=/(chrome)[ \/]([\w.]+)/.exec(ua)||/(webkit)[ \/]([\w.]+)/.exec(ua)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua)||/(msie) ([\w.]+)/.exec(ua)||ua.indexOf('compatible') < 0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua)||[];
return match[2]||'0';
};
$.browser_is_supported_datepick={
mozilla: /mozilla/.test(navigator.userAgent.toLowerCase())&&!/webkit/.test(navigator.userAgent.toLowerCase()),
webkit: /webkit/.test(navigator.userAgent.toLowerCase()),
opera: /opera/.test(navigator.userAgent.toLowerCase()),
msie: /msie/.test(navigator.userAgent.toLowerCase()),
android: (navigator.userAgent.toLowerCase().indexOf('mozilla/5.0') > -1&&navigator.userAgent.toLowerCase().indexOf('android ') > -1&&navigator.userAgent.toLowerCase().indexOf('applewebkit') > -1),
version: uaMatch(navigator.userAgent)
};}
function Datepick(){
this._uuid=new Date().getTime();
this._curInst=null;
this._keyEvent=false;
this._disabledInputs=[];
this._datepickerShowing=false;
this._inDialog=false;
this.regional=[];
this.regional['']={
clearText: 'Clear',
clearStatus: 'Erase the current date',
closeText: 'Close',
closeStatus: 'Close without change',
prevText: '&#x3c;Prev',
prevStatus: 'Show the previous month',
prevBigText: '&#x3c;&#x3c;',
prevBigStatus: 'Show the previous year',
nextText: 'Next&#x3e;',
nextStatus: 'Show the next month',
nextBigText: '&#x3e;&#x3e;',
nextBigStatus: 'Show the next year',
currentText: 'Today',
currentStatus: 'Show the current month',
monthNames: ['January','February','March','April','May','June',
'July','August','September','October','November','December'],
monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
monthStatus: 'Show a different month',
yearStatus: 'Show a different year',
weekHeader: 'Wk',
weekStatus: 'Week of the year',
dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],
dayStatus: 'Set DD as first week day',
dateStatus: 'Select DD, M d',
dateFormat: 'mm/dd/yy',
firstDay: 0,
initStatus: 'Select a date',
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''
};
this._defaults={
wpbc_resource_id: 0, // ID of booking resource - customization	// FixIn: 9.4.4.13.
useThemeRoller: false,
showOn: 'focus', // 'focus' for popup on focus,
showAnim: 'show',
showOptions: {},
duration: 'normal',
buttonText: '...',
buttonImage: '',
buttonImageOnly: false,
alignment: 'bottom',
autoSize: false,
defaultDate: null,
showDefault: false,
appendText: '',
closeAtTop: true,
mandatory: false,
hideIfNoPrevNext: false,
navigationAsDateFormat: false,
showBigPrevNext: false,
stepMonths: 1,
stepBigMonths: 12,
gotoCurrent: false,
changeMonth: true,
changeYear: true,
yearRange: '-10:+10',
changeFirstDay: false,
showOtherMonths: false,
selectOtherMonths: false,
highlightWeek: false,
showWeeks: false,
calculateWeek: this.iso8601Week,
shortYearCutoff: '+10',
showStatus: false,
statusForDate: this.dateStatus,
minDate: null,
maxDate: null,
numberOfMonths: 1,
showCurrentAtPos: 0,
rangeSelect: false,
rangeSeparator: ' - ',
multiSelect: 0,
multiSeparator: ',',
beforeShow: null,
beforeShowDay: null,
onChangeMonthYear: null,
onHover: null,
onSelect: null,
onClose: null,
altField: '',
altFormat: '',
constrainInput: true
};
$.extend(this._defaults, this.regional['']);
this.dpDiv=$('<div style="display: none;"></div>');
}
$.extend(Datepick.prototype, {
version: '3.7.0',
markerClassName: 'hasDatepick',
_mainDivId: ['datepick-div', 'ui-datepicker-div'],
_mainDivClass: ['', 'ui-datepicker ' +
'ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'],
_inlineClass: ['datepick-inline', 'ui-datepicker-inline ui-datepicker ' +
'ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'],
_multiClass: ['datepick-multi', 'ui-datepicker-multi'],
_rtlClass: ['datepick-rtl', 'ui-datepicker-rtl'],
_appendClass: ['datepick-append', 'ui-datepicker-append'],
_triggerClass: ['datepick-trigger', 'ui-datepicker-trigger'],
_dialogClass: ['datepick-dialog', 'ui-datepicker-dialog'],
_promptClass: ['datepick-prompt', 'ui-datepicker-prompt'],
_disableClass: ['datepick-disabled', 'ui-datepicker-disabled'],
_controlClass: ['datepick-control', 'ui-datepicker-header ' +
'ui-widget-header ui-helper-clearfix ui-corner-all'],
_clearClass: ['datepick-clear', 'ui-datepicker-clear'],
_closeClass: ['datepick-close', 'ui-datepicker-close'],
_linksClass: ['datepick-links', 'ui-datepicker-header ' +
'ui-widget-header ui-helper-clearfix ui-corner-all'],
_prevClass: ['datepick-prev', 'ui-datepicker-prev'],
_nextClass: ['datepick-next', 'ui-datepicker-next'],
_currentClass: ['datepick-current', 'ui-datepicker-current'],
_oneMonthClass: ['datepick-one-month', 'ui-datepicker-group'],
_newRowClass: ['datepick-new-row', 'ui-datepicker-row-break'],
_monthYearClass: ['datepick-header', 'ui-datepicker-header ' +
'ui-widget-header ui-helper-clearfix ui-corner-all'],
_monthSelectClass: ['datepick-new-month', 'ui-datepicker-month'],
_monthClass: ['', 'ui-datepicker-month'],
_yearSelectClass: ['datepick-new-year', 'ui-datepicker-year'],
_yearClass: ['', 'ui-datepicker-year'],
_tableClass: ['datepick wpbc_calendar', 'ui-datepicker-calendar'], // Month table class		// FixIn: 9.7.3.7
_tableHeaderClass: ['datepick-title-row', ''],
_weekColClass: ['datepick-week-col', 'ui-datepicker-week-col'],
_weekRowClass: ['datepick-days-row', ''],
_weekendClass: ['datepick-week-end-cell', 'ui-datepicker-week-end'],
_dayClass: ['datepick-days-cell', ''],
_otherMonthClass: ['datepick-other-month', 'ui-datepicker-other-month'],
_todayClass: ['datepick-today', 'ui-state-highlight'],
_selectableClass: ['', 'ui-state-default'],
_unselectableClass: ['datepick-unselectable',
'ui-datepicker-unselectable ui-state-disabled'],
_selectedClass: ['datepick-current-day', 'ui-state-active'],
_dayOverClass: ['datepick-days-cell-over', 'ui-state-hover'],
_weekOverClass: ['datepick-week-over', 'ui-state-hover'],
_statusClass: ['datepick-status', 'ui-datepicker-status'],
_statusId: ['datepick-status-', 'ui-datepicker-status-'],
_coverClass: ['datepick-cover', 'ui-datepicker-cover'],
setDefaults: function(settings){
extendRemove(this._defaults, settings||{});
return this;
},
_attachDatepick: function(target, settings){
if(!target.id)
target.id='dp' + (++this._uuid);
var nodeName=target.nodeName.toLowerCase();
var inst=this._newInst($(target), (nodeName=='div'||nodeName=='span'));
var inlineSettings=($.fn.metadata ? $(target).metadata():{});
inst.settings=$.extend({}, settings||{}, inlineSettings||{});
if(inst.inline){
inst.dpDiv.addClass(this._inlineClass[
this._get(inst, 'useThemeRoller') ? 1:0]);
this._inlineDatepick(target, inst);
}
else
this._connectDatepick(target, inst);
},
_newInst: function(target, inline){
var id=target[0].id.replace(/([:\[\]\.\$])/g, '\\\\$1');
return {id: id, input: target,
cursorDate: this._daylightSavingAdjust(new Date()),
drawMonth: 0, drawYear: 0,
dates: [],
inline: inline,
dpDiv: (!inline ? this.dpDiv:$('<div></div>')),
siblings: $([])};},
_connectDatepick: function(target, inst){
var input=$(target);
if(input.hasClass(this.markerClassName))
return;
var appendText=this._get(inst, 'appendText');
var isRTL=this._get(inst, 'isRTL');
var useTR=this._get(inst, 'useThemeRoller') ? 1:0;
if(appendText){
var append=$('<span class="' + this._appendClass[useTR] + '">' + appendText + '</span>');
input[isRTL ? 'before':'after'](append);
inst.siblings=inst.siblings.add(append);
}
var showOn=this._get(inst, 'showOn');
if(showOn=='focus'||showOn=='both')
input.on('focus.wpbc_datepick', this._showDatepick);
if(showOn=='button'||showOn=='both'){
var buttonText=this._get(inst, 'buttonText');
var buttonImage=this._get(inst, 'buttonImage');
var trigger=$(this._get(inst, 'buttonImageOnly') ?
$('<img/>').addClass(this._triggerClass[useTR]).
attr({src: buttonImage, alt: buttonText, title: buttonText}) :
$('<button type="button"></button>').addClass(this._triggerClass[useTR]).
html(buttonImage=='' ? buttonText:$('<img/>').attr({src: buttonImage, alt: buttonText, title: buttonText})));
input[isRTL ? 'before':'after'](trigger);
inst.siblings=inst.siblings.add(trigger);
trigger.on('click', function (){
if($.datepick._datepickerShowing&&$.datepick._lastInput==target)
$.datepick._hideDatepick();
else
$.datepick._showDatepick(target);
return false;
});
}
input.addClass(this.markerClassName).on('keydown.wpbc_datepick', this._doKeyDown).on('keypress.wpbc_datepick', this._doKeyPress).on('keyup.wpbc_datepick', this._doKeyUp);	//FixIn: 10.0.0.45	// FixIn: 8.7.11.12.
if(this._get(inst, 'showDefault')&&!inst.input.val()){
inst.dates=[this._getDefaultDate(inst)];
this._showDate(inst);
}
this._autoSize(inst);
$.data(target, PROP_NAME, inst);
},
_autoSize: function(inst){
if(this._get(inst, 'autoSize')&&!inst.inline){
var date=new Date(2009, 12 - 1, 20);
var dateFormat=this._get(inst, 'dateFormat');
if(dateFormat.match(/[DM]/)){
var findMax=function(names){
var max=0;
var maxI=0;
for (var i=0; i < names.length; i++){
if(names[i].length > max){
max=names[i].length;
maxI=i;
}}
return maxI;
};
date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?
'monthNames':'monthNamesShort'))));
date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?
'dayNames':'dayNamesShort'))) + 20 - date.getDay());
}
inst.input.attr('size', this._formatDate(inst, date).length);
}},
_inlineDatepick: function(target, inst){
var divSpan=$(target);
if(divSpan.hasClass(this.markerClassName))
return;
divSpan.addClass(this.markerClassName);
$.data(target, PROP_NAME, inst);
inst.drawMonth=inst.cursorDate.getMonth();
inst.drawYear=inst.cursorDate.getFullYear();
$('body').append(inst.dpDiv);
this._updateDatepick(inst);
divSpan.append(inst.dpDiv);
this._updateAlternate(inst);
var resource_id=parseInt(divSpan.get(0).getAttribute('id').replace('calendar_booking', '') );
inst.settings.wpbc_resource_id=resource_id;
$('body').trigger('wpbc_datepick_inline_calendar_loaded'
, [
divSpan.get(0).getAttribute('id').replace('calendar_booking', '')
, divSpan
, inst
]
);
},
_dialogDatepick: function(input, date, onSelect, settings, pos){
var inst=this._dialogInst;
if(!inst){
var id='dp' + (++this._uuid);
this._dialogInput=$('<input type="text" id="' + id +
'" style="position: absolute; width: 1px; z-index: -1"/>');
this._dialogInput.on('keydown.wpbc_datepick', this._doKeyDown);
$('body').append(this._dialogInput);
inst=this._dialogInst=this._newInst(this._dialogInput, false);
inst.settings={};
$.data(this._dialogInput[0], PROP_NAME, inst);
}
extendRemove(inst.settings, settings||{});
date=(date&&date.constructor==Date ? this._formatDate(inst, date):date);
this._dialogInput.val(date);
this._pos=(pos ? (isArray(pos) ? pos:[pos.pageX, pos.pageY]):null);
if(!this._pos){
var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;
var scrollY=document.documentElement.scrollTop||document.body.scrollTop;
this._pos =
[(document.documentElement.clientWidth / 2) - 100 + scrollX,
(document.documentElement.clientHeight / 2) - 150 + scrollY];
}
this._dialogInput.css('left', (this._pos[0] + 20) + 'px').css('top', this._pos[1] + 'px');
inst.settings.onSelect=onSelect;
this._inDialog=true;
this.dpDiv.addClass(this._dialogClass[this._get(inst, 'useThemeRoller') ? 1:0]);
this._showDatepick(this._dialogInput[0]);
if($.blockUI)
$.blockUI(this.dpDiv);
$.data(this._dialogInput[0], PROP_NAME, inst);
},
_destroyDatepick: function(target){
var $target=$(target);
if(!$target.hasClass(this.markerClassName)){
return;
}
var inst=$.data(target, PROP_NAME);
$.removeData(target, PROP_NAME);
if(inst.inline)
$target.removeClass(this.markerClassName).empty();
else {
$(inst.siblings).remove();
$target.removeClass(this.markerClassName).off('focus.wpbc_datepick').off('keydown.wpbc_datepick').off('keypress.wpbc_datepick').off('keyup.wpbc_datepick');
}},
_enableDatepick: function(target){
var $target=$(target);
if(!$target.hasClass(this.markerClassName))
return;
var inst=$.data(target, PROP_NAME);
var useTR=this._get(inst, 'useThemeRoller') ? 1:0;
if(inst.inline)
$target.children('.' + this._disableClass[useTR]).remove().end().
find('select').attr('disabled', '');
else {
target.disabled=false;
inst.siblings.filter('button.' + this._triggerClass[useTR]).
each(function(){ this.disabled=false; }).end().
filter('img.' + this._triggerClass[useTR]).
css({opacity: '1.0', cursor: ''});
}
this._disabledInputs=$.map(this._disabledInputs,
function(value){ return (value==target ? null:value); });
},
_disableDatepick: function(target){
var $target=$(target);
if(!$target.hasClass(this.markerClassName))
return;
var inst=$.data(target, PROP_NAME);
var useTR=this._get(inst, 'useThemeRoller') ? 1:0;
if(inst.inline){
var inline=$target.children('.' + this._inlineClass[useTR]);
var offset=inline.offset();
var relOffset={left: 0, top: 0};
inline.parents().each(function(){
if($(this).css('position')=='relative'){
relOffset=$(this).offset();
return false;
}});
$target.prepend('<div class="' + this._disableClass[useTR] + '" style="' +
'width: ' + inline.width() + 'px; height: ' + inline.height() +
'px; left: ' + (offset.left - relOffset.left) +
'px; top: ' + (offset.top - relOffset.top) + 'px;"></div>').
find('select').attr('disabled', 'disabled');
}else{
target.disabled=true;
inst.siblings.filter('button.' + this._triggerClass[useTR]).
each(function(){ this.disabled=true; }).end().
filter('img.' + this._triggerClass[useTR]).
css({opacity: '0.5', cursor: 'default'});
}
this._disabledInputs=$.map(this._disabledInputs,
function(value){ return (value==target ? null:value); });
this._disabledInputs.push(target);
},
_isDisabledDatepick: function(target){
return (!target ? false:$.inArray(target, this._disabledInputs) > -1);
},
_getInst: function(target){
try {
return $.data(target, PROP_NAME);
}
catch (err){
throw 'Missing instance data for this datepicker';
}},
_optionDatepick: function(target, name, value){
var inst=this._getInst(target);
if(arguments.length==2&&typeof name=='string'){
return (name=='defaults' ? $.extend({}, $.datepick._defaults) :
(inst ? (name=='all' ? $.extend({}, inst.settings) :
this._get(inst, name)):null));
}
var settings=name||{};
if(typeof name=='string'){
settings={};
settings[name]=value;
}
if(inst){
if(this._curInst==inst){
this._hideDatepick(null);
}
var dates=this._getDateDatepick(target);
extendRemove(inst.settings, settings);
this._autoSize(inst);
extendRemove(inst, {dates: []});
var blank=(!dates||isArray(dates));
if(isArray(dates))
for (var i=0; i < dates.length; i++)
if(dates[i]){
blank=false;
break;
}
if(!blank)
this._setDateDatepick(target, dates);
if(inst.inline)
$(target).children('div').removeClass(this._inlineClass.join(' ')).
addClass(this._inlineClass[this._get(inst, 'useThemeRoller') ? 1:0]);
this._updateDatepick(inst);
}},
_changeDatepick: function(target, name, value){
this._optionDatepick(target, name, value);
},
_refreshDatepick: function(target){
var inst=this._getInst(target);
if(inst){
this._updateDatepick(inst);
}},
_setDateDatepick: function(target, date, endDate){
var inst=this._getInst(target);
if(inst){
this._setDate(inst, date, endDate);
this._updateDatepick(inst);
this._updateAlternate(inst);
}},
_getDateDatepick: function(target){
var inst=this._getInst(target);
if(inst&&!inst.inline)
this._setDateFromField(inst);
return (inst ? this._getDate(inst):null);
},
_doKeyDown: function(event){
var inst=$.datepick._getInst(event.target);
inst.keyEvent=true;
var handled=true;
var isRTL=$.datepick._get(inst, 'isRTL');
var useTR=$.datepick._get(inst, 'useThemeRoller') ? 1:0;
if($.datepick._datepickerShowing)
switch (event.keyCode){
case 9:  $.datepick._hideDatepick(null, '');
break;
case 13: var sel=$('td.' + $.datepick._dayOverClass[useTR], inst.dpDiv);
if(sel.length==0)
sel=$('td.' + $.datepick._selectedClass[useTR] + ':first', inst.dpDiv);
if(sel[0])
$.datepick._selectDay(sel[0], event.target, inst.cursorDate.getTime());
else
$.datepick._hideDatepick(null, $.datepick._get(inst, 'duration'));
break;
case 27: $.datepick._hideDatepick(null, $.datepick._get(inst, 'duration'));
break;
case 33: $.datepick._adjustDate(event.target, (event.ctrlKey ?
-$.datepick._get(inst, 'stepBigMonths') :
-$.datepick._get(inst, 'stepMonths')), 'M');
break;
case 34: $.datepick._adjustDate(event.target, (event.ctrlKey ?
+$.datepick._get(inst, 'stepBigMonths') :
+$.datepick._get(inst, 'stepMonths')), 'M');
break;
case 35: if(event.ctrlKey||event.metaKey)
$.datepick._clearDate(event.target);
handled=event.ctrlKey||event.metaKey;
break;
case 36: if(event.ctrlKey||event.metaKey)
$.datepick._gotoToday(event.target);
handled=event.ctrlKey||event.metaKey;
break;
case 37: if(event.ctrlKey||event.metaKey)
$.datepick._adjustDate(event.target, (isRTL ? +1:-1), 'D');
handled=event.ctrlKey||event.metaKey;
if(event.originalEvent.altKey)
$.datepick._adjustDate(event.target,
(event.ctrlKey ? -$.datepick._get(inst, 'stepBigMonths') :
-$.datepick._get(inst, 'stepMonths')), 'M');
break;
case 38: if(event.ctrlKey||event.metaKey)
$.datepick._adjustDate(event.target, -7, 'D');
handled=event.ctrlKey||event.metaKey;
break;
case 39: if(event.ctrlKey||event.metaKey)
$.datepick._adjustDate(event.target, (isRTL ? -1:+1), 'D');
handled=event.ctrlKey||event.metaKey;
if(event.originalEvent.altKey)
$.datepick._adjustDate(event.target,
(event.ctrlKey ? +$.datepick._get(inst, 'stepBigMonths') :
+$.datepick._get(inst, 'stepMonths')), 'M');
break;
case 40: if(event.ctrlKey||event.metaKey)
$.datepick._adjustDate(event.target, +7, 'D');
handled=event.ctrlKey||event.metaKey;
break;
default: handled=false;
}
else if(event.keyCode==36&&event.ctrlKey)
$.datepick._showDatepick(this);
else
handled=false;
if(handled){
event.preventDefault();
event.stopPropagation();
}
inst.ctrlKey=(event.keyCode < 48);
return !handled;
},
_doKeyPress: function(event){
var inst=$.datepick._getInst(event.target);
if($.datepick._get(inst, 'constrainInput')){
var chars=$.datepick._possibleChars(inst);
var chr=String.fromCharCode(event.keyCode||event.charCode);
return inst.ctrlKey||(chr < ' '||!chars||chars.indexOf(chr) > -1);
}},
_doKeyUp: function(event){
var inst=$.datepick._getInst(event.target);
if(inst.input.val()!=inst.lastVal){
try {
var separator=($.datepick._get(inst, 'rangeSelect') ?
$.datepick._get(inst, 'rangeSeparator') :
($.datepick._get(inst, 'multiSelect') ?
$.datepick._get(inst, 'multiSeparator'):''));
var dates=(inst.input ? inst.input.val():'');
dates=(separator ? dates.split(separator):[dates]);
var ok=true;
for (var i=0; i < dates.length; i++){
if(!$.datepick.parseDate($.datepick._get(inst, 'dateFormat'),
dates[i], $.datepick._getFormatConfig(inst))){
ok=false;
break;
}}
if(ok){
$.datepick._setDateFromField(inst);
$.datepick._updateAlternate(inst);
$.datepick._updateDatepick(inst);
}}
catch (event){
}}
return true;
},
_possibleChars: function (inst){
var dateFormat=$.datepick._get(inst, 'dateFormat');
var chars=($.datepick._get(inst, 'rangeSelect') ?
$.datepick._get(inst, 'rangeSeparator') :
($.datepick._get(inst, 'multiSelect') ?
$.datepick._get(inst, 'multiSeparator'):''));
var literal=false;
for (var iFormat=0; iFormat < dateFormat.length; iFormat++)
if(literal)
if(dateFormat.charAt(iFormat)=="'"&&!lookAhead("'"))
literal=false;
else
chars +=dateFormat.charAt(iFormat);
else
switch (dateFormat.charAt(iFormat)){
case 'd': case 'm': case 'y': case '@':
chars +='0123456789';
break;
case 'D': case 'M':
return null;
case "'":
if(lookAhead("'"))
chars +="'";
else
literal=true;
break;
default:
chars +=dateFormat.charAt(iFormat);
}
return chars;
},
_doMouseOver: function(td, id, timestamp){
var inst=$.datepick._getInst($('#' + id)[0]);
var useTR=$.datepick._get(inst, 'useThemeRoller') ? 1:0;
if($(td).find('a').length)
$(td).parents('tbody').find('td').
removeClass($.datepick._dayOverClass[useTR]).end().end().
addClass($.datepick._dayOverClass[useTR]);
if($.datepick._get(inst, 'highlightWeek'))
$(td).parent().parent().find('tr').
removeClass($.datepick._weekOverClass[useTR]).end().end().
addClass($.datepick._weekOverClass[useTR]);
if($(td).text()){
var date=new Date(timestamp);
if($.datepick._get(inst, 'showStatus')){
var status=($.datepick._get(inst, 'statusForDate').apply((inst.input ? inst.input[0]:null), [date, inst]) ||
$.datepick._get(inst, 'initStatus'));
$('#' + $.datepick._statusId[useTR] + id).html(status);
}
if($.datepick._get(inst, 'onHover'))
$.datepick._doHover(td, '#' + id, date.getFullYear(), date.getMonth());
}},
_doMouseOut: function(td, id){
var inst=$.datepick._getInst($('#' + id)[0]);
var useTR=$.datepick._get(inst, 'useThemeRoller') ? 1:0;
$(td).removeClass($.datepick._dayOverClass[useTR]).
removeClass($.datepick._weekOverClass[useTR]);
if($.datepick._get(inst, 'showStatus'))
$('#' + $.datepick._statusId[useTR] + id).html($.datepick._get(inst, 'initStatus'));
if($.datepick._get(inst, 'onHover'))
$.datepick._doHover(td, '#' + id);
},
_doHover: function(td, id, year, month){
var inst=this._getInst($(id)[0]);
var useTR=$.datepick._get(inst, 'useThemeRoller') ? 1:0;
var onHover=this._get(inst, 'onHover');
var temp_daylight_day=($(td).find('a').length) ? new Date(year, month, $(td).find('a').text()):null;
temp_daylight_day=(( null===temp_daylight_day)&&($(td).find('span').length) ) ? new Date(year, month, $(td).find('span').text()):temp_daylight_day;
var date=(year ?
this._daylightSavingAdjust(temp_daylight_day):null);
onHover.apply((inst.input ? inst.input[0]:null),
[(date ? this._formatDate(inst, date):''), date, inst]);
},
_showDatepick: function(input){
input=input.target||input;
if($.datepick._isDisabledDatepick(input)||$.datepick._lastInput==input)
return;
var inst=$.datepick._getInst(input);
var beforeShow=$.datepick._get(inst, 'beforeShow');
var useTR=$.datepick._get(inst, 'useThemeRoller') ? 1:0;
extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input, inst]):{}));
$.datepick._hideDatepick(null, '');
$.datepick._lastInput=input;
$.datepick._setDateFromField(inst);
if($.datepick._inDialog)
input.value='';
if(!$.datepick._pos){
$.datepick._pos=$.datepick._findPos(input);
$.datepick._pos[1] +=input.offsetHeight;
}
var isFixed=false;
$(input).parents().each(function(){
isFixed |=$(this).css('position')=='fixed';
return !isFixed;
});
if(isFixed&&$.browser_is_supported_datepick.opera){
$.datepick._pos[0] -=document.documentElement.scrollLeft;
$.datepick._pos[1] -=document.documentElement.scrollTop;
}
var offset={left: $.datepick._pos[0], top: $.datepick._pos[1]};
$.datepick._pos=null;
inst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'});
$.datepick._updateDatepick(inst);
inst.dpDiv.width($.datepick._getNumberOfMonths(inst)[1] *
$('.' + $.datepick._oneMonthClass[useTR], inst.dpDiv).width());
offset=$.datepick._checkOffset(inst, offset, isFixed);
inst.dpDiv.css({position: ($.datepick._inDialog&&$.blockUI ?
'static':(isFixed ? 'fixed':'absolute')), display: 'none',
left: offset.left + 'px', top: offset.top + 'px'});
if(!inst.inline){
var showAnim=$.datepick._get(inst, 'showAnim')||'show';
var duration=$.datepick._get(inst, 'duration');
var postProcess=function(){
$.datepick._datepickerShowing=true;
var borders=$.datepick._getBorders(inst.dpDiv);
inst.dpDiv.find('iframe.' + $.datepick._coverClass[useTR]).
css({left: -borders[0], top: -borders[1],
width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()});
};
if($.effects&&$.effects[showAnim])
inst.dpDiv.show(showAnim, $.datepick._get(inst, 'showOptions'), duration, postProcess);
else
inst.dpDiv[showAnim](duration, postProcess);
if(duration=='')
postProcess();
if(inst.input[0].type!='hidden')
$(inst.input).trigger('focus');
$.datepick._curInst=inst;
}},
_updateDatepick: function(inst){
var borders=this._getBorders(inst.dpDiv);
var useTR=this._get(inst, 'useThemeRoller') ? 1:0;
inst.dpDiv.empty().append(this._generateHTML(inst)).
find('iframe.' + this._coverClass[useTR]).
css({left: -borders[0], top: -borders[1],
width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()});
var numMonths=this._getNumberOfMonths(inst);
if(!inst.inline)
inst.dpDiv.attr('id', this._mainDivId[useTR]);
if(!inst.inline) inst.dpDiv.attr('class', 'datepick-inline');
inst.dpDiv.removeClass(this._mainDivClass[1 - useTR]).
addClass(this._mainDivClass[useTR]).
removeClass(this._multiClass.join(' ')).
addClass(numMonths[0]!=1||numMonths[1]!=1 ? this._multiClass[useTR]:'').
removeClass(this._rtlClass.join(' ')).
addClass(this._get(inst, 'isRTL') ? this._rtlClass[useTR]:'');
if(inst.input&&inst.input[0].type!='hidden'&&inst==$.datepick._curInst)
$(inst.input).trigger('focus');
var resource_id=this._get(inst, 'wpbc_resource_id');
if(resource_id > 0){
$('body').trigger('wpbc_datepick_inline_calendar_refresh'
, [
resource_id
, inst
]
);
}},
_getBorders: function(elem){
var convert=function(value){
var extra=($.browser_is_supported_datepick.msie ? 1:0);
return {thin: 1 + extra, medium: 3 + extra, thick: 5 + extra}[value]||value;
};
return [parseFloat(convert(elem.css('border-left-width'))),
parseFloat(convert(elem.css('border-top-width')))];
},
_checkOffset: function(inst, offset, isFixed){
var alignment=this._get(inst, 'alignment');
var isRTL=this._get(inst, 'isRTL');
var pos=inst.input ? this._findPos(inst.input[0]):null;
var browserWidth=document.documentElement.clientWidth;
var browserHeight=document.documentElement.clientHeight;
if(browserWidth==0)
return offset;
var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;
var scrollY=document.documentElement.scrollTop||document.body.scrollTop;
var above=pos[1] - (this._inDialog ? 0:inst.dpDiv.outerHeight()) -
(isFixed&&$.browser_is_supported_datepick.opera ? document.documentElement.scrollTop:0);
var below=offset.top;
var alignL=offset.left;
var alignR=pos[0] + (inst.input ? inst.input.outerWidth():0) - inst.dpDiv.outerWidth() -
(isFixed&&$.browser_is_supported_datepick.opera ? document.documentElement.scrollLeft:0);
var tooWide=(offset.left + inst.dpDiv.outerWidth() - scrollX) > browserWidth;
var tooHigh=(offset.top + inst.dpDiv.outerHeight() - scrollY) > browserHeight;
if(alignment=='topLeft'){
offset={left: alignL, top: above};}
else if(alignment=='topRight'){
offset={left: alignR, top: above};}
else if(alignment=='bottomLeft'){
offset={left: alignL, top: below};}
else if(alignment=='bottomRight'){
offset={left: alignR, top: below};}
else if(alignment=='top'){
offset={left: (isRTL||tooWide ? alignR:alignL), top: above};}else{
offset={left: (isRTL||tooWide ? alignR:alignL),
top: (tooHigh ? above:below)};}
offset.left=Math.max((isFixed ? 0:scrollX), offset.left - (isFixed ? scrollX:0));
offset.top=Math.max((isFixed ? 0:scrollY), offset.top - (isFixed ? scrollY:0));
return offset;
},
_findPos: function(elem){
while (elem&&(elem.type=='hidden'||elem.nodeType!=1)){
elem=elem.nextSibling;
}
var position=$(elem).offset();
return [position.left, position.top];
},
_hideDatepick: function(input, duration){
var inst=this._curInst;
if(!inst||(input&&inst!=$.data(input, PROP_NAME)))
return false;
var rangeSelect=this._get(inst, 'rangeSelect');
if(rangeSelect&&inst.stayOpen)
this._updateInput('#' + inst.id);
inst.stayOpen=false;
if(this._datepickerShowing){
duration=(duration!=null ? duration:this._get(inst, 'duration'));
var showAnim=this._get(inst, 'showAnim');
var postProcess=function(){
$.datepick._tidyDialog(inst);
};
if(duration!=''&&$.effects&&$.effects[showAnim])
inst.dpDiv.hide(showAnim, $.datepick._get(inst, 'showOptions'),
duration, postProcess);
else
inst.dpDiv[(duration=='' ? 'hide':(showAnim=='slideDown' ? 'slideUp' :
(showAnim=='fadeIn' ? 'fadeOut':'hide')))](duration, postProcess);
if(duration=='')
this._tidyDialog(inst);
var onClose=this._get(inst, 'onClose');
if(onClose)
onClose.apply((inst.input ? inst.input[0]:null),
[(inst.input ? inst.input.val():''), this._getDate(inst), inst]);
this._datepickerShowing=false;
this._lastInput=null;
inst.settings.prompt=null;
if(this._inDialog){
this._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' });
this.dpDiv.removeClass(this._dialogClass[this._get(inst, 'useThemeRoller') ? 1:0]);
if($.blockUI){
$.unblockUI();
$('body').append(this.dpDiv);
}}
this._inDialog=false;
}
this._curInst=null;
return false;
},
_tidyDialog: function(inst){
var useTR=this._get(inst, 'useThemeRoller') ? 1:0;
inst.dpDiv.removeClass(this._dialogClass[useTR]).off('.datepick');
$('.' + this._promptClass[useTR], inst.dpDiv).remove();
},
_checkExternalClick: function(event){
if(!$.datepick._curInst)
return;
var $target=$(event.target);
var useTR=$.datepick._get($.datepick._curInst, 'useThemeRoller') ? 1:0;
if(!$target.parents().addBack().is('#' + $.datepick._mainDivId[useTR]) &&
!$target.hasClass($.datepick.markerClassName) &&
!$target.parents().addBack().hasClass($.datepick._triggerClass[useTR]) &&
$.datepick._datepickerShowing&&!($.datepick._inDialog&&$.blockUI))
$.datepick._hideDatepick(null, '');
},
_adjustDate: function(id, offset, period){
var inst=this._getInst($(id)[0]);
this._adjustInstDate(inst, offset +
(period=='M' ? this._get(inst, 'showCurrentAtPos'):0),
period);
this._updateDatepick(inst);
return false;
},
_gotoToday: function(id){
var target=$(id);
var inst=this._getInst(target[0]);
if(this._get(inst, 'gotoCurrent')&&inst.dates[0])
inst.cursorDate=new Date(inst.dates[0].getTime());
else
inst.cursorDate=this._daylightSavingAdjust(new Date());
inst.drawMonth=inst.cursorDate.getMonth();
inst.drawYear=inst.cursorDate.getFullYear();
this._notifyChange(inst);
this._adjustDate(target);
return false;
},
_selectMonthYear: function(id, select, period){
var target=$(id);
var inst=this._getInst(target[0]);
inst.selectingMonthYear=false;
var value=parseInt(select.options[select.selectedIndex].value, 10);
inst['selected' + (period=='M' ? 'Month':'Year')] =
inst['draw' + (period=='M' ? 'Month':'Year')]=value;
inst.cursorDate.setDate(Math.min(inst.cursorDate.getDate(),
$.datepick._getDaysInMonth(inst.drawYear, inst.drawMonth)));
inst.cursorDate['set' + (period=='M' ? 'Month':'FullYear')](value);
this._notifyChange(inst);
this._adjustDate(target);
},
_clickMonthYear: function(id){
var inst=this._getInst($(id)[0]);
if(inst.input&&inst.selectingMonthYear&&!$.browser_is_supported_datepick.msie)
$(inst.input).trigger('focus');
inst.selectingMonthYear = !inst.selectingMonthYear;
},
_changeFirstDay: function(id, day){
var inst=this._getInst($(id)[0]);
inst.settings.firstDay=day;
this._updateDatepick(inst);
return false;
},
_selectDay: function(td, id, timestamp){
var inst=this._getInst($(id)[0]);
var useTR=this._get(inst, 'useThemeRoller') ? 1:0;
if($(td).hasClass(this._unselectableClass[useTR]))
return false;
var rangeSelect=this._get(inst, 'rangeSelect');
var multiSelect=this._get(inst, 'multiSelect');
if(rangeSelect)
inst.stayOpen = !inst.stayOpen;
else if(multiSelect)
inst.stayOpen=true;
if(inst.stayOpen){
$('.datepick td', inst.dpDiv).removeClass(this._selectedClass[useTR]);
$(td).addClass(this._selectedClass[useTR]);
}
inst.cursorDate=this._daylightSavingAdjust(new Date(timestamp));
var date=new Date(inst.cursorDate.getTime());
if(rangeSelect&&!inst.stayOpen)
inst.dates[1]=date;
else if(multiSelect){
var pos=-1;
for (var i=0; i < inst.dates.length; i++)
if(inst.dates[i]&&date.getTime()==inst.dates[i].getTime()){
pos=i;
break;
}
if(pos > -1)
inst.dates.splice(pos, 1);
else if(inst.dates.length < multiSelect){
if(inst.dates[0])
inst.dates.push(date);
else
inst.dates=[date];
inst.stayOpen=(inst.dates.length!=multiSelect);
}}
else
inst.dates=[date];
this._updateInput(id);
if(inst.stayOpen)
this._updateDatepick(inst);
else if((rangeSelect||multiSelect)&&inst.inline)
this._updateDatepick(inst);
return false;
},
_clearDate: function(id){
var target=$(id);
var inst=this._getInst(target[0]);
if(this._get(inst, 'mandatory'))
return false;
inst.stayOpen=false;
inst.dates=(this._get(inst, 'showDefault') ?
[this._getDefaultDate(inst)]:[]);
this._updateInput(target);
return false;
},
_updateInput: function(id){
var inst=this._getInst($(id)[0]);
var dateStr=this._showDate(inst);
this._updateAlternate(inst);
var onSelect=this._get(inst, 'onSelect');
if(onSelect)
onSelect.apply((inst.input ? inst.input[0]:null),
[dateStr, this._getDate(inst), inst]);
else if(inst.input)
inst.input.trigger('change');
if(inst.inline)
this._updateDatepick(inst);
else if(!inst.stayOpen){
this._hideDatepick(null, this._get(inst, 'duration'));
this._lastInput=inst.input[0];
if(typeof(inst.input[0])!='object')
$(inst.input).trigger('focus');		//FixIn: 8.7.11.12	// Restore focus
this._lastInput=null;
}
return false;
},
_showDate: function(inst){
var dateStr='';
if(inst.input){
dateStr=(inst.dates.length==0 ? '':this._formatDate(inst, inst.dates[0]));
if(dateStr){
if(this._get(inst, 'rangeSelect'))
dateStr +=this._get(inst, 'rangeSeparator') +
this._formatDate(inst, inst.dates[1]||inst.dates[0]);
else if(this._get(inst, 'multiSelect'))
for (var i=1; i < inst.dates.length; i++)
dateStr +=this._get(inst, 'multiSeparator') +
this._formatDate(inst, inst.dates[i]);
}
inst.input.val(dateStr);
}
return dateStr;
},
_updateAlternate: function(inst){
var altField=this._get(inst, 'altField');
if(altField){
var altFormat=this._get(inst, 'altFormat')||this._get(inst, 'dateFormat');
var settings=this._getFormatConfig(inst);
var dateStr=this.formatDate(altFormat, inst.dates[0], settings);
if(dateStr&&this._get(inst, 'rangeSelect'))
dateStr +=this._get(inst, 'rangeSeparator') + this.formatDate(altFormat, inst.dates[1]||inst.dates[0], settings);
else if(this._get(inst, 'multiSelect'))
for (var i=1; i < inst.dates.length; i++)
dateStr +=this._get(inst, 'multiSeparator') +
this.formatDate(altFormat, inst.dates[i], settings);
$(altField).val(dateStr);
}},
noWeekends: function(date){
return [(date.getDay()||7) < 6, ''];
},
iso8601Week: function(date){
var checkDate=new Date(date.getTime());
checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay()||7));
var time=checkDate.getTime();
checkDate.setMonth(0);
checkDate.setDate(1);
return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;
},
dateStatus: function(date, inst){
return $.datepick.formatDate($.datepick._get(inst, 'dateStatus'),
date, $.datepick._getFormatConfig(inst));
},
parseDate: function (format, value, settings){
if(format==null||value==null)
throw 'Invalid arguments';
value=(typeof value=='object' ? value.toString():value + '');
if(value=='')
return null;
settings=settings||{};
var shortYearCutoff=settings.shortYearCutoff||this._defaults.shortYearCutoff;
shortYearCutoff=(typeof shortYearCutoff!='string' ? shortYearCutoff :
new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
var dayNamesShort=settings.dayNamesShort||this._defaults.dayNamesShort;
var dayNames=settings.dayNames||this._defaults.dayNames;
var monthNamesShort=settings.monthNamesShort||this._defaults.monthNamesShort;
var monthNames=settings.monthNames||this._defaults.monthNames;
var year=-1;
var month=-1;
var day=-1;
var doy=-1;
var literal=false;
var lookAhead=function(match){
var matches=(iFormat + 1 < format.length&&format.charAt(iFormat + 1)==match);
if(matches)
iFormat++;
return matches;
};
var getNumber=function(match){
lookAhead(match);
var size=(match=='@' ? 14:(match=='!' ? 20 :
(match=='y' ? 4:(match=='o' ? 3:2))));
var digits=new RegExp('^\\d{1,' + size + '}');
var num=value.substring(iValue).match(digits);
if(!num)
throw 'Missing number at position ' + iValue;
iValue +=num[0].length;
return parseInt(num[0], 10);
};
var getName=function(match, shortNames, longNames){
var names=(lookAhead(match) ? longNames:shortNames);
for (var i=0; i < names.length; i++){
if(value.substr(iValue, names[i].length)==names[i]){
iValue +=names[i].length;
return i + 1;
}}
throw 'Unknown name at position ' + iValue;
};
var checkLiteral=function(){
if(value.charAt(iValue)!=format.charAt(iFormat))
throw 'Unexpected literal at position ' + iValue;
iValue++;
};
var iValue=0;
for (var iFormat=0; iFormat < format.length; iFormat++){
if(literal)
if(format.charAt(iFormat)=="'"&&!lookAhead("'"))
literal=false;
else
checkLiteral();
else
switch (format.charAt(iFormat)){
case 'd':
day=getNumber('d');
break;
case 'D':
getName('D', dayNamesShort, dayNames);
break;
case 'o':
doy=getNumber('o');
break;
case 'w':
getNumber('w');
break;
case 'm':
month=getNumber('m');
break;
case 'M':
month=getName('M', monthNamesShort, monthNames);
break;
case 'y':
year=getNumber('y');
break;
case '@':
var date=new Date(getNumber('@'));
year=date.getFullYear();
month=date.getMonth() + 1;
day=date.getDate();
break;
case '!':
var date=new Date((getNumber('!') - this._ticksTo1970) / 10000);
year=date.getFullYear();
month=date.getMonth() + 1;
day=date.getDate();
break;
case "'":
if(lookAhead("'"))
checkLiteral();
else
literal=true;
break;
default:
checkLiteral();
}}
if(iValue < value.length)
throw 'Additional text found at end';
if(year==-1)
year=new Date().getFullYear();
else if(year < 100)
year +=(shortYearCutoff==-1 ? 1900:new Date().getFullYear() -
new Date().getFullYear() % 100 - (year <=shortYearCutoff ? 0:100));
if(doy > -1){
month=1;
day=doy;
do {
var dim=this._getDaysInMonth(year, month - 1);
if(day <=dim)
break;
month++;
day -=dim;
} while (true);
}
var date=this._daylightSavingAdjust(new Date(year, month - 1, day));
if(date.getFullYear()!=year||date.getMonth() + 1!=month||date.getDate()!=day)
throw 'Invalid date';
return date;
},
ATOM: 'yy-mm-dd',
COOKIE: 'D, dd M yy',
ISO_8601: 'yy-mm-dd',
RFC_822: 'D, d M y',
RFC_850: 'DD, dd-M-y',
RFC_1036: 'D, d M y',
RFC_1123: 'D, d M yy',
RFC_2822: 'D, d M yy',
RSS: 'D, d M y',
TICKS: '!',
TIMESTAMP: '@',
W3C: 'yy-mm-dd',
_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +
Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),
formatDate: function (format, date, settings){
if(!date)
return '';
settings=settings||{};
var dayNamesShort=settings.dayNamesShort||this._defaults.dayNamesShort;
var dayNames=settings.dayNames||this._defaults.dayNames;
var monthNamesShort=settings.monthNamesShort||this._defaults.monthNamesShort;
var monthNames=settings.monthNames||this._defaults.monthNames;
var calculateWeek=settings.calculateWeek||this._defaults.calculateWeek;
var lookAhead=function(match){
var matches=(iFormat + 1 < format.length&&format.charAt(iFormat + 1)==match);
if(matches)
iFormat++;
return matches;
};
var formatNumber=function(match, value, len){
var num='' + value;
if(lookAhead(match))
while (num.length < len)
num='0' + num;
return num;
};
var formatName=function(match, value, shortNames, longNames){
return (lookAhead(match) ? longNames[value]:shortNames[value]);
};
var output='';
var literal=false;
if(date)
for (var iFormat=0; iFormat < format.length; iFormat++){
if(literal)
if(format.charAt(iFormat)=="'"&&!lookAhead("'"))
literal=false;
else
output +=format.charAt(iFormat);
else
switch (format.charAt(iFormat)){
case 'd':
output +=formatNumber('d', date.getDate(), 2);
break;
case 'D':
output +=formatName('D', date.getDay(), dayNamesShort, dayNames);
break;
case 'o':
output +=formatNumber('o',
(date.getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000, 3);
break;
case 'w':
output +=formatNumber('w', calculateWeek(date), 2);
break;
case 'm':
output +=formatNumber('m', date.getMonth() + 1, 2);
break;
case 'M':
output +=formatName('M', date.getMonth(), monthNamesShort, monthNames);
break;
case 'y':
output +=(lookAhead('y') ? date.getFullYear() :
(date.getFullYear() % 100 < 10 ? '0':'') + date.getFullYear() % 100);
break;
case '@':
output +=date.getTime();
break;
case '!':
output +=date.getTime() * 10000 + this._ticksTo1970;
break;
case "'":
if(lookAhead("'"))
output +="'";
else
literal=true;
break;
default:
output +=format.charAt(iFormat);
}}
return output;
},
_get: function(inst, name){
return inst.settings[name]!==undefined ?
inst.settings[name]:this._defaults[name];
},
_setDateFromField: function(inst){
var dateFormat=this._get(inst, 'dateFormat');
var rangeSelect=this._get(inst, 'rangeSelect');
var multiSelect=this._get(inst, 'multiSelect');
inst.lastVal=(inst.input ? inst.input.val():'');
var dates=inst.lastVal;
dates=(rangeSelect ? dates.split(this._get(inst, 'rangeSeparator')) :
(multiSelect ? dates.split(this._get(inst, 'multiSeparator')):[dates]));
inst.dates=[];
var settings=this._getFormatConfig(inst);
for (var i=0; i < dates.length; i++)
try {
inst.dates[i]=this.parseDate(dateFormat, dates[i], settings);
}
catch (event){
inst.dates[i]=null;
}
for (var i=inst.dates.length - 1; i >=0; i--)
if(!inst.dates[i])
inst.dates.splice(i, 1);
if(rangeSelect&&inst.dates.length < 2)
inst.dates[1]=inst.dates[0];
if(multiSelect&&inst.dates.length > multiSelect)
inst.dates.splice(multiSelect, inst.dates.length);
inst.cursorDate=new Date((inst.dates[0]||this._getDefaultDate(inst)).getTime());
inst.drawMonth=inst.cursorDate.getMonth();
inst.drawYear=inst.cursorDate.getFullYear();
this._adjustInstDate(inst);
},
_getDefaultDate: function(inst){
return this._restrictMinMax(inst,
this._determineDate(inst, this._get(inst, 'defaultDate'), new Date()));
},
_determineDate: function(inst, date, defaultDate){
var offsetNumeric=function(offset){
var date=new Date();
date.setDate(date.getDate() + offset);
return date;
};
var offsetString=function(offset){
try {
return $.datepick.parseDate($.datepick._get(inst, 'dateFormat'),
offset, $.datepick._getFormatConfig(inst));
}
catch (e){
}
var date=(offset.toLowerCase().match(/^c/) ?
$.datepick._getDate(inst):null)||new Date();
var year=date.getFullYear();
var month=date.getMonth();
var day=date.getDate();
var pattern=/([+-]?[0-9]+)\s*(d|w|m|y)?/g;
var matches=pattern.exec(offset.toLowerCase());
while (matches){
switch (matches[2]||'d'){
case 'd':
day +=parseInt(matches[1], 10); break;
case 'w':
day +=parseInt(matches[1], 10) * 7; break;
case 'm':
month +=parseInt(matches[1], 10);
day=Math.min(day, $.datepick._getDaysInMonth(year, month));
break;
case 'y':
year +=parseInt(matches[1], 10);
day=Math.min(day, $.datepick._getDaysInMonth(year, month));
break;
}
matches=pattern.exec(offset.toLowerCase());
}
return new Date(year, month, day);
};
date=(date==null ? defaultDate:(typeof date=='string' ? offsetString(date) :
(typeof date=='number' ? (isNaN(date)||date==Infinity||date==-Infinity ?
defaultDate:offsetNumeric(date)):date)));
date=(date&&(date.toString()=='Invalid Date' ||
date.toString()=='NaN') ? defaultDate:date);
if(date){
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
date.setMilliseconds(0);
}
return this._daylightSavingAdjust(date);
},
_daylightSavingAdjust: function(date){
if(!date) return null;
date.setHours(date.getHours() > 12 ? date.getHours() + 2:0);
return date;
},
_setDate: function(inst, date, endDate){
date=(!date ? []:(isArray(date) ? date:[date]));
if(endDate)
date.push(endDate);
var clear=(date.length==0);
var origMonth=inst.cursorDate.getMonth();
var origYear=inst.cursorDate.getFullYear();
inst.dates=[this._restrictMinMax(inst, this._determineDate(inst, date[0], new Date()))];
inst.cursorDate=new Date(inst.dates[0].getTime());
inst.drawMonth=inst.cursorDate.getMonth();
inst.drawYear=inst.cursorDate.getFullYear();
if(this._get(inst, 'rangeSelect'))
inst.dates[1]=(date.length < 1 ? inst.dates[0] :
this._restrictMinMax(inst, this._determineDate(inst, date[1], null)));
else if(this._get(inst, 'multiSelect'))
for (var i=1; i < date.length; i++)
inst.dates[i]=this._restrictMinMax(inst, this._determineDate(inst, date[i], null));
if(origMonth!=inst.cursorDate.getMonth()||origYear!=inst.cursorDate.getFullYear())
this._notifyChange(inst);
this._adjustInstDate(inst);
this._showDate(inst);
},
_getDate: function(inst){
var startDate=(inst.input&&inst.input.val()=='' ? null:inst.dates[0]);
if(this._get(inst, 'rangeSelect'))
return (startDate ? [inst.dates[0], inst.dates[1]||inst.dates[0]]:[null, null]);
else if(this._get(inst, 'multiSelect'))
return inst.dates.slice(0, inst.dates.length);
else
return startDate;
},
_generateHTML: function(inst){
var today=new Date();
today=this._daylightSavingAdjust(new Date(today.getFullYear(), today.getMonth(), today.getDate()));
var showStatus=this._get(inst, 'showStatus');
var initStatus=this._get(inst, 'initStatus')||'&#xa0;';
var isRTL=this._get(inst, 'isRTL');
var useTR=this._get(inst, 'useThemeRoller') ? 1:0;
var clear=(this._get(inst, 'mandatory') ? '' :
'<div class="' + this._clearClass[useTR] + '"><a href="javascript:void(0)" ' +
'onclick="jQuery.datepick._clearDate(\'#' + inst.id + '\');"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'clearStatus'), initStatus) +
'>' + this._get(inst, 'clearText') + '</a></div>');
var controls='<div class="' + this._controlClass[useTR] + '">' + (isRTL ? '':clear) +
'<div class="' + this._closeClass[useTR] + '"><a href="javascript:void(0)" ' +
'onclick="jQuery.datepick._hideDatepick();"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'closeStatus'), initStatus) +
'>' + this._get(inst, 'closeText') + '</a></div>' + (isRTL ? clear:'')  + '</div>';
var prompt=this._get(inst, 'prompt');
var closeAtTop=this._get(inst, 'closeAtTop');
var hideIfNoPrevNext=this._get(inst, 'hideIfNoPrevNext');
var navigationAsDateFormat=this._get(inst, 'navigationAsDateFormat');
var showBigPrevNext=this._get(inst, 'showBigPrevNext');
var numMonths=this._getNumberOfMonths(inst);
var showCurrentAtPos=this._get(inst, 'showCurrentAtPos');
var stepMonths=this._get(inst, 'stepMonths');
var stepBigMonths=this._get(inst, 'stepBigMonths');
var isMultiMonth=(numMonths[0]!=1||numMonths[1]!=1);
var minDate=this._getMinMaxDate(inst, 'min', true);
var maxDate=this._getMinMaxDate(inst, 'max');
var drawMonth=inst.drawMonth - showCurrentAtPos;
var drawYear=inst.drawYear;
if(drawMonth < 0){
drawMonth +=12;
drawYear--;
}
if(maxDate){
var maxDraw=this._daylightSavingAdjust(new Date(maxDate.getFullYear(),
maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));
maxDraw=(minDate&&maxDraw < minDate ? minDate:maxDraw);
while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw){
drawMonth--;
if(drawMonth < 0){
drawMonth=11;
drawYear--;
}}
}
inst.drawMonth=drawMonth;
inst.drawYear=drawYear;
var prevText=this._get(inst, 'prevText');
prevText=(!navigationAsDateFormat ? prevText:this.formatDate(prevText,
this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),
this._getFormatConfig(inst)));
var prevBigText=(showBigPrevNext ? this._get(inst, 'prevBigText'):'');
prevBigText=(!navigationAsDateFormat ? prevBigText:this.formatDate(prevBigText,
this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepBigMonths, 1)),
this._getFormatConfig(inst)));
var prev='<div class="' + this._prevClass[useTR] + '">' +
(this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?
(showBigPrevNext ? '<a href="javascript:void(0)" onclick="jQuery.datepick._adjustDate(\'#' +
inst.id + '\', -' + stepBigMonths + ', \'M\');"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'prevBigStatus'), initStatus) +
'>' + prevBigText + '</a>':'') +
'<a href="javascript:void(0)" onclick="jQuery.datepick._adjustDate(\'#' +
inst.id + '\', -' + stepMonths + ', \'M\');"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'prevStatus'), initStatus) +
'>' + prevText + '</a>' :
(hideIfNoPrevNext ? '&#xa0;':(showBigPrevNext ? '<label>' + prevBigText + '</label>':'') +
'<label>' + prevText + '</label>')) + '</div>';
var nextText=this._get(inst, 'nextText');
nextText=(!navigationAsDateFormat ? nextText:this.formatDate(nextText,
this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),
this._getFormatConfig(inst)));
var nextBigText=(showBigPrevNext ? this._get(inst, 'nextBigText'):'');
nextBigText=(!navigationAsDateFormat ? nextBigText:this.formatDate(nextBigText,
this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepBigMonths, 1)),
this._getFormatConfig(inst)));
var next='<div class="' + this._nextClass[useTR] + '">' +
(this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?
'<a href="javascript:void(0)" onclick="jQuery.datepick._adjustDate(\'#' +
inst.id + '\', +' + stepMonths + ', \'M\');"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'nextStatus'), initStatus) +
'>' + nextText + '</a>' +
(showBigPrevNext ? '<a href="javascript:void(0)" onclick="jQuery.datepick._adjustDate(\'#' +
inst.id + '\', +' + stepBigMonths + ', \'M\');"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'nextBigStatus'), initStatus) +
'>' + nextBigText + '</a>':'') :
(hideIfNoPrevNext ? '&#xa0;':'<label>' + nextText + '</label>' +
(showBigPrevNext ? '<label>' + nextBigText + '</label>':''))) + '</div>';
var currentText=this._get(inst, 'currentText');
var gotoDate=(this._get(inst, 'gotoCurrent')&&inst.dates[0] ? inst.dates[0]:today);
currentText=(!navigationAsDateFormat ? currentText :
this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));
var html=(closeAtTop&&!inst.inline ? controls:'');
html +='<div class="calendar-links">' + (isRTL ? next:prev)   ;
html +=(isRTL ? prev:next) + '</div>' ;
var firstDay=parseInt(this._get(inst, 'firstDay'), 10);
firstDay=(isNaN(firstDay) ? 0:firstDay);
var changeFirstDay=this._get(inst, 'changeFirstDay');
var dayNames=this._get(inst, 'dayNames');
var dayNamesShort=this._get(inst, 'dayNamesShort');
var dayNamesMin=this._get(inst, 'dayNamesMin');
var monthNames=this._get(inst, 'monthNames');
var beforeShowDay=this._get(inst, 'beforeShowDay');
var showOtherMonths=this._get(inst, 'showOtherMonths');
var selectOtherMonths=this._get(inst, 'selectOtherMonths');
var showWeeks=this._get(inst, 'showWeeks');
var calculateWeek=this._get(inst, 'calculateWeek')||this.iso8601Week;
var weekStatus=this._get(inst, 'weekStatus');
var status=(showStatus ? this._get(inst, 'dayStatus')||initStatus:'');
var dateStatus=this._get(inst, 'statusForDate')||this.dateStatus;
var defaultDate=this._getDefaultDate(inst);
for (var row=0; row < numMonths[0]; row++){
for (var col=0; col < numMonths[1]; col++){
var cursorDate=this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.cursorDate.getDate()));
html +='<div class="' + this._oneMonthClass[useTR] +
(col==0&&!useTR ? ' ' + this._newRowClass[useTR]:'') + '">' +
this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
cursorDate, row > 0||col > 0, useTR, showStatus, initStatus, monthNames) +
'<table class="' + this._tableClass[useTR] + '" cellpadding="0" cellspacing="0"><thead>' +
'<tr class="' + this._tableHeaderClass[useTR] + '">' + (showWeeks ? '<th' +
this._addStatus(useTR, showStatus, inst.id, weekStatus, initStatus) + '>' +
this._get(inst, 'weekHeader') + '</th>':'');
for (var dow=0; dow < 7; dow++){
var day=(dow + firstDay) % 7;
var dayStatus=(!showStatus||!changeFirstDay ? '' :
status.replace(/DD/, dayNames[day]).replace(/D/, dayNamesShort[day]));
html +='<th' + ((dow + firstDay + 6) % 7 < 5 ? '' :
' class="' + this._weekendClass[useTR] + '"') + '>' +
(!changeFirstDay ? '<span' +
this._addStatus(useTR, showStatus, inst.id, dayNames[day], initStatus) :
'<a href="javascript:void(0)" onclick="jQuery.datepick._changeFirstDay(\'#' +
inst.id + '\', ' + day + ');"' +
this._addStatus(useTR, showStatus, inst.id, dayStatus, initStatus)) +
' title="' + dayNames[day] + '">' +
dayNamesMin[day] + (changeFirstDay ? '</a>':'</span>') + '</th>';
}
html +='</tr></thead><tbody>';
var daysInMonth=this._getDaysInMonth(drawYear, drawMonth);
if(drawYear==inst.cursorDate.getFullYear()&&drawMonth==inst.cursorDate.getMonth())
inst.cursorDate.setDate(Math.min(inst.cursorDate.getDate(), daysInMonth));
var leadDays=(this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
var numRows=(isMultiMonth ? 6:Math.ceil((leadDays + daysInMonth) / 7));
var printDate=this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));
for (var dRow=0; dRow < numRows; dRow++){
html +='<tr class="' + this._weekRowClass[useTR] + '">' +
(showWeeks ? '<td class="' + this._weekColClass[useTR] + '"' +
this._addStatus(useTR, showStatus, inst.id, weekStatus, initStatus) + '>' +
calculateWeek(printDate) + '</td>':'');
for (var dow=0; dow < 7; dow++){
var daySettings=(beforeShowDay ?
beforeShowDay.apply((inst.input ? inst.input[0]:null), [printDate]):[true, '']);
var otherMonth=(printDate.getMonth()!=drawMonth);
var unselectable=(otherMonth&&!selectOtherMonths)||!daySettings[0] ||
(minDate&&printDate < minDate)||(maxDate&&printDate > maxDate);
var selected=(this._get(inst, 'rangeSelect')&&inst.dates[0] &&
printDate.getTime() >=inst.dates[0].getTime() &&
printDate.getTime() <=(inst.dates[1]||inst.dates[0]).getTime());
for (var i=0; i < inst.dates.length; i++)
selected=selected||(inst.dates[i] &&
printDate.getTime()==inst.dates[i].getTime());
var empty=otherMonth&&!showOtherMonths;
html +='<td data-content="" class="' + this._dayClass[useTR] +
((dow + firstDay + 6) % 7 >=5 ? ' ' + this._weekendClass[useTR]:'') +
(otherMonth ? ' ' + this._otherMonthClass[useTR]:'') +
((printDate.getTime()==cursorDate.getTime() &&
drawMonth==inst.cursorDate.getMonth()&&inst.keyEvent) ||
(defaultDate.getTime()==printDate.getTime() &&
defaultDate.getTime()==cursorDate.getTime()) ?
' ' :'') + // Highlight selected day		// FixIn: 9.2.1.7.
(unselectable ? ' ' + this._unselectableClass[useTR] :
' ' + this._selectableClass[useTR]) +
(empty ? '':' ' + daySettings[1] +
(selected ? ' ' + this._selectedClass[useTR]:'') +
(printDate.getTime()==today.getTime() ? ' ' + this._todayClass[useTR]:'')) + '"' +
(!empty&&daySettings[2] ? ' title="' + daySettings[2] + '"':'') +
(false ? '':' onmouseover="' + 'jQuery.datepick._doMouseOver(this,\'' +
inst.id + '\',' + printDate.getTime() + ')"' +
' onmouseout="jQuery.datepick._doMouseOut(this,\'' + inst.id + '\')"' +
' onclick="jQuery.datepick._selectDay(this,\'#' +
inst.id + '\',' + printDate.getTime() + ')"') + '>';
html +='<div class="wpbc-cell-box">' +
'<div class="wpbc-diagonal-el">' +
'<div class="wpbc-co-out">' +
'<svg height="100%" width="100%" viewBox="0 0 100 100" preserveAspectRatio="none">' +
'<polygon points="0,0 0,99 99,0"></polygon>' +
'<polygon points="0,0 0,100 49,100 49,0"></polygon>' +
'</svg>' +
'</div>' +
'<div class="wpbc-co-in">' +
'<svg height="100%" width="100%" viewBox="0 0 98 98" preserveAspectRatio="none">' +
'<polygon points="0,99 99,99 99,0"></polygon>' +
'<polygon points="50,98 98,98 98,0 50,0"></polygon>' +
'</svg>' +
'</div>' +
'</div>' +
'<div class="date-cell-content">' +
'<div class="date-content-top">' +
(unselectable ? '':((typeof (wpbc_show_date_info_top)=='function') ? wpbc_show_date_info_top(inst.id, printDate.getTime()):'')) +
'</div>' +
(empty ? '&#xa0;':// Not showing other months // FixIn: 6.0.1.2.
(unselectable ? '<span>' + printDate.getDate()+ '</span>':'<a href="javascript:void(0)" >' + printDate.getDate() + '</a>')) +
'<div class="date-content-bottom">'+
(unselectable ? '':((typeof (wpbc_show_date_info_bottom)=='function') ? wpbc_show_date_info_bottom(inst.id, printDate.getTime()):'')) +
'</div>' +
'</div>' +
'</div>';
html +='</td>';
printDate.setDate(printDate.getDate() + 1);
printDate=this._daylightSavingAdjust(printDate);
}
html +='</tr>';
}
drawMonth++;
if(drawMonth > 11){
drawMonth=0;
drawYear++;
}
html +='</tbody></table></div>';
}
if(useTR)
html +='<div class="' + this._newRowClass[useTR] + '"></div>';
}
html +=(showStatus ? '<div style="clear: both;"></div><div id="' + this._statusId[useTR] +
inst.id +'" class="' + this._statusClass[useTR] + '">' + initStatus + '</div>':'') +
(!closeAtTop&&!inst.inline ? controls:'') +
'<div style="clear: both;"></div>' +
($.browser_is_supported_datepick.msie&&parseInt($.browser_is_supported_datepick.version, 10) < 7&&!inst.inline ?
'<iframe src="javascript:false;" class="' + this._coverClass[useTR] + '"></iframe>':'');
inst.keyEvent=false;
return html;
},
_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,
cursorDate, secondary, useTR, showStatus, initStatus, monthNames){
var minDraw=this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1));
minDate=(minDate&&minDraw < minDate ? minDraw:minDate);
var changeMonth=this._get(inst, 'changeMonth');
var changeYear=this._get(inst, 'changeYear');
var showMonthAfterYear=this._get(inst, 'showMonthAfterYear');
var html='<div class="' + this._monthYearClass[useTR] + '">';
var monthHtml='';
if(secondary||!changeMonth)
monthHtml +='<span class="' + this._monthClass[useTR] + '">' +
monthNames[drawMonth] + '</span>';
else {
var inMinYear=(minDate&&minDate.getFullYear()==drawYear);
var inMaxYear=(maxDate&&maxDate.getFullYear()==drawYear);
monthHtml +='<select class="' + this._monthSelectClass[useTR] + '" ' +
'onchange="jQuery.datepick._selectMonthYear(\'#' + inst.id + '\', this, \'M\');" ' +
'onclick="jQuery.datepick._clickMonthYear(\'#' + inst.id + '\');"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'monthStatus'),
initStatus) + '>';
for (var month=0; month < 12; month++){
if((!inMinYear||month >=minDate.getMonth()) &&
(!inMaxYear||month <=maxDate.getMonth()))
monthHtml +='<option value="' + month + '"' +
(month==drawMonth ? ' selected="selected"':'') +
'>' + monthNames[month] + '</option>';
}
monthHtml +='</select>';
}
if(!showMonthAfterYear)
html +=monthHtml + (secondary||!changeMonth||!changeYear ? '&#xa0;':'');
if(secondary||!changeYear)
html +='<span class="' + this._yearClass[useTR] + '">' + drawYear + '</span>';
else {
var years=this._get(inst, 'yearRange').split(':');
var year=0;
var endYear=0;
if(years.length!=2){
year=drawYear - 10;
endYear=drawYear + 10;
}else if(years[0].charAt(0)=='+'||years[0].charAt(0)=='-'){
year=drawYear + parseInt(years[0], 10);
endYear=drawYear + parseInt(years[1], 10);
}else{
year=parseInt(years[0], 10);
endYear=parseInt(years[1], 10);
}
year=(minDate ? Math.max(year, minDate.getFullYear()):year);
endYear=(maxDate ? Math.min(endYear, maxDate.getFullYear()):endYear);
html +='<select class="' + this._yearSelectClass[useTR] + '" ' +
'onchange="jQuery.datepick._selectMonthYear(\'#' + inst.id + '\', this, \'Y\');" ' +
'onclick="jQuery.datepick._clickMonthYear(\'#' + inst.id + '\');"' +
this._addStatus(useTR, showStatus, inst.id, this._get(inst, 'yearStatus'),
initStatus) + '>';
for (; year <=endYear; year++){
html +='<option value="' + year + '"' +
(year==drawYear ? ' selected="selected"':'') +
'>' + year + '</option>';
}
html +='</select>';
}
html +=this._get(inst, 'yearSuffix');
if(showMonthAfterYear)
html +=(secondary||!changeMonth||!changeYear ? '&#xa0;':'') + monthHtml;
html +='</div>';
return html;
},
_addStatus: function(useTR, showStatus, id, text, initStatus){
return (showStatus ? ' onmouseover="jQuery(\'#' + this._statusId[useTR] + id +
'\').html(\'' + (text||initStatus) + '\');" ' +
'onmouseout="jQuery(\'#' + this._statusId[useTR] + id +
'\').html(\'' + initStatus + '\');"':'');
},
_adjustInstDate: function(inst, offset, period){
var yearMonth=inst.drawYear + '/' + inst.drawMonth;
var year=inst.drawYear + (period=='Y' ? offset:0);
var month=inst.drawMonth + (period=='M' ? offset:0);
var day=Math.min(inst.cursorDate.getDate(), this._getDaysInMonth(year, month)) +
(period=='D' ? offset:0);
inst.cursorDate=this._restrictMinMax(inst,
this._daylightSavingAdjust(new Date(year, month, day)));
inst.drawMonth=inst.cursorDate.getMonth();
inst.drawYear=inst.cursorDate.getFullYear();
if(yearMonth!=inst.drawYear + '/' + inst.drawMonth)
this._notifyChange(inst);
},
_restrictMinMax: function(inst, date){
var minDate=this._getMinMaxDate(inst, 'min', true);
var maxDate=this._getMinMaxDate(inst, 'max');
date=(minDate&&date < minDate ? new Date(minDate.getTime()):date);
date=(maxDate&&date > maxDate ? new Date(maxDate.getTime()):date);
return date;
},
_notifyChange: function(inst){
var onChange=this._get(inst, 'onChangeMonthYear');
if(onChange)
onChange.apply((inst.input ? inst.input[0]:null),
[inst.cursorDate.getFullYear(), inst.cursorDate.getMonth() + 1,
this._daylightSavingAdjust(new Date(
inst.cursorDate.getFullYear(), inst.cursorDate.getMonth(), 1)), inst]);
},
_getNumberOfMonths: function(inst){
var numMonths=this._get(inst, 'numberOfMonths');
return (numMonths==null ? [1, 1] :
(typeof numMonths=='number' ? [1, numMonths]:numMonths));
},
_getMinMaxDate: function(inst, minMax, checkRange){
var date=this._determineDate(inst, this._get(inst, minMax + 'Date'), null);
var rangeMin=this._getRangeMin(inst);
return (checkRange&&rangeMin&&(!date||rangeMin > date) ? rangeMin:date);
},
_getRangeMin: function(inst){
return (this._get(inst, 'rangeSelect')&&inst.dates[0] &&
!inst.dates[1] ? inst.dates[0]:null);
},
_getDaysInMonth: function(year, month){
return 32 - new Date(year, month, 32).getDate();
},
_getFirstDayOfMonth: function(year, month){
return new Date(year, month, 1).getDay();
},
_canAdjustMonth: function(inst, offset, curYear, curMonth){
var numMonths=this._getNumberOfMonths(inst);
var date=this._daylightSavingAdjust(new Date(curYear,
curMonth + (offset < 0 ? offset:numMonths[0] * numMonths[1]), 1));
if(offset < 0)
date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));
return this._isInRange(inst, date);
},
_isInRange: function(inst, date){
var minDate=this._getRangeMin(inst)||this._getMinMaxDate(inst, 'min');
var maxDate=this._getMinMaxDate(inst, 'max');
return ((!minDate||date >=minDate)&&(!maxDate||date <=maxDate));
},
_getFormatConfig: function(inst){
return {shortYearCutoff: this._get(inst, 'shortYearCutoff'),
dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'),
monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')};},
_formatDate: function(inst, year, month, day){
if(!year)
inst.dates[0]=new Date(inst.cursorDate.getTime());
var date=(year ? (typeof year=='object' ? year :
this._daylightSavingAdjust(new Date(year, month, day))):inst.dates[0]);
return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst));
}});
function extendRemove(target, props){
$.extend(target, props);
for (var name in props)
if(props[name]==null||props[name]==undefined)
target[name]=props[name];
return target;
};
function isArray(a){
return (a&&a.constructor==Array);
};
$.fn.datepick=function(options){
var otherArgs=Array.prototype.slice.call(arguments, 1);
if(typeof options=='string'&&(options=='isDisabled' ||
options=='getDate'||options=='settings'))
return $.datepick['_' + options + 'Datepick'].
apply($.datepick, [this[0]].concat(otherArgs));
if(options=='option'&&arguments.length==2&&typeof arguments[1]=='string')
return $.datepick['_' + options + 'Datepick'].
apply($.datepick, [this[0]].concat(otherArgs));
return this.each(function(){
typeof options=='string' ?
$.datepick['_' + options + 'Datepick'].
apply($.datepick, [this].concat(otherArgs)) :
$.datepick._attachDatepick(this, options);
});
};
$.datepick=new Datepick();
$(function(){
$(document).on('mousedown', $.datepick._checkExternalClick).find('body').append($.datepick.dpDiv);
});
})(jQuery);
(function($){
$.datepick.regional['fr']={
clearText: 'Effacer', clearStatus: 'Effacer la date sélectionnée',
closeText: 'Fermer', closeStatus: 'Fermer sans modifier',
prevText: '&#x3c;Préc', prevStatus: 'Voir le mois précédent',
prevBigText: '&#x3c;&#x3c;', prevBigStatus: '',
nextText: 'Suiv&#x3e;', nextStatus: 'Voir le mois suivant',
nextBigText: '&#x3e;&#x3e;', nextBigStatus: '',
currentText: 'Courant', currentStatus: 'Voir le mois courant',
monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',
'Jul','Aoû','Sep','Oct','Nov','Déc'],
monthStatus: 'Voir un autre mois', yearStatus: 'Voir une autre année',
weekHeader: 'Sm', weekStatus: '',
dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
dayStatus: 'Utiliser DD comme premier jour de la semaine', dateStatus: '\'Choisir\' le DD d MM',
dateFormat: 'dd/mm/yy', firstDay: 1,
initStatus: 'Choisir la date', isRTL: false,
showMonthAfterYear: false, yearSuffix: ''};
$.datepick.setDefaults($.datepick.regional['fr']);
})(jQuery);
function mybooking_submit(submit_form , bk_type, wpdev_active_locale){
var target_elm=jQuery(".booking_form_div").trigger("booking_form_submit_click", [bk_type, submit_form, wpdev_active_locale]);
if((jQuery(target_elm).find('input[name="booking_form_show_summary"]').length > 0)
&&('pause_submit'===jQuery(target_elm).find('input[name="booking_form_show_summary"]').val())
){
return false;
}
var is_error=wpbc_check_errors_in_booking_form(bk_type);
if(is_error){ return false; }
if(document.getElementById('date_booking' + bk_type).value==''){
var arr_of_selected_additional_calendars=wpbc_get_arr_of_selected_additional_calendars(bk_type);
if(arr_of_selected_additional_calendars.length==0){
wpbc_front_end__show_message__error_under_element('#booking_form_div' + bk_type + ' .bk_calendar_frame', _wpbc.get_message('message_check_no_selected_dates'), 3000);
return;
}}
var count=submit_form.elements.length;
var formdata='';
var inp_value;
var element;
var el_type;
if(typeof(wpbc_is_this_time_selection_not_available)=='function'){
if(document.getElementById('date_booking' + bk_type).value==''){
if(document.getElementById('additional_calendars' + bk_type)!=null){
var id_additional_str=document.getElementById('additional_calendars' + bk_type).value;
var id_additional_arr=id_additional_str.split(',');
var is_times_dates_ok=false;
for(var ia=0;ia<id_additional_arr.length;ia++){
if((document.getElementById('date_booking' + id_additional_arr[ia]).value!='')
&&(! wpbc_is_this_time_selection_not_available(id_additional_arr[ia], submit_form.elements) )
){
is_times_dates_ok=true;
}}
if(! is_times_dates_ok) return;
}}else{
if(wpbc_is_this_time_selection_not_available(bk_type, submit_form.elements) )
return;
}}
for(var i=0; i < count; i++){
element=submit_form.elements[i];
if(jQuery(element).closest('.booking_form_garbage').length){
continue;       // Skip elements from garbage                                           // FixIn: 7.1.2.14.
}
if((element.type!=='button')
&&(element.type!=='hidden')
&&(element.name!==('date_booking' + bk_type) )
){           // Skip buttons and hidden element - type                                     // FixIn: 7.2.1.12.
if(element.type=='checkbox'){
if(element.value==''){
inp_value=element.checked;
}else{
if(element.checked) inp_value=element.value;
else inp_value='';
}}else if(element.type=='radio'){
if(element.checked){
inp_value=element.value;
}else{
if((element.className.indexOf('wpdev-validates-as-required')!==-1)
&&(jQuery(element).is(':visible') )                                            //FixIn: 7.2.1.12.2 // Its prevent of saving hints,  and some other hidden element
&&(! jQuery(':radio[name="'+element.name+'"]', submit_form).is(":checked")) ){
wpbc_front_end__show_message__warning(element, _wpbc.get_message('message_check_required_for_radio_box') );
return;
}
continue;
}}else{
inp_value=element.value;
}
var inp_title_value='';
var input_element_type=('input'===jQuery(element)[0].tagName.toString().toLowerCase())
? jQuery(jQuery(element)[0]).prop("type").toLowerCase()
: jQuery(element)[0].tagName.toLowerCase();
switch(input_element_type){
case 'text':
inp_title_value=inp_value;
break;
case 'email':
inp_title_value=inp_value;
break;
case 'select':
inp_title_value=jQuery(element).find("option:selected").text();
break;
case 'radio':
if(jQuery(element).is(':checked') ){
var label_element=jQuery(element).parents('.wpdev-list-item').find('.wpdev-list-item-label');
if(label_element.length){
inp_title_value=label_element.html();
}}
break;
case 'checkbox':
if(jQuery(element).is(':checked') ){
var label_element=jQuery(element).parents('.wpdev-list-item').find('.wpdev-list-item-label');
if(label_element.length){
inp_title_value=label_element.html();
}}
break;
default:
inp_title_value=inp_value;
}
if((element.type=='selectbox-multiple')||(element.type=='select-multiple')){
inp_value=jQuery('[name="'+element.name+'"]').val() ;
if((inp_value==null)||(inp_value.toString()==''))
inp_value='';
}
if(jQuery(element).is(':visible') ){
if(typeof (wpbc__is_less_than_required__of_max_available_slots__bl)=='function'){
if(wpbc__is_less_than_required__of_max_available_slots__bl(bk_type, element) ){
return;
}}
/*if(element.name==('phone'+bk_type)){
var reg=/^\d{10}$/;
var message_verif_phone="Please enter correctly phone number";
if(inp_value!='')
if(reg.test(inp_value)==false){wpbc_front_end__show_message__warning(element , message_verif_phone);return;}}*/
if(element.className.indexOf('wpdev-validates-as-required')!==-1){
if((element.type=='checkbox')&&(element.checked===false)){
if(! jQuery(':checkbox[name="'+element.name+'"]', submit_form).is(":checked")){
wpbc_front_end__show_message__warning(element , _wpbc.get_message('message_check_required_for_check_box') );
return;
}}
if(element.type=='radio'){
if(! jQuery(':radio[name="'+element.name+'"]', submit_form).is(":checked")){
wpbc_front_end__show_message__warning(element , _wpbc.get_message('message_check_required_for_radio_box') );
return;
}}
if((element.type!='checkbox')&&(element.type!='radio')&&(''===wpbc_trim(inp_value) )){       //FixIn: 8.8.1.3   //FixIn:7.0.1.39       // FixIn: 8.7.11.12.
wpbc_front_end__show_message__warning(element , _wpbc.get_message('message_check_required') );
return;
}}
if(element.className.indexOf('wpdev-validates-as-email')!==-1){
inp_value=inp_value.replace(/^\s+|\s+$/gm,'');                // Trim  white space //FixIn: 5.4.5
var reg=/^([A-Za-z0-9_\-\.\+])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,})$/;
if(inp_value!='')
if(reg.test(inp_value)==false){
wpbc_front_end__show_message__warning(element , _wpbc.get_message('message_check_email') );
return;
}}
if(( element.className.indexOf('wpdev-validates-as-email')!==-1)&&(element.className.indexOf('same_as_')!==-1) ){
var primary_email_name=element.className.match(/same_as_([^\s])+/gi);
if(primary_email_name!=null){
primary_email_name=primary_email_name[0].substr(8);
if(jQuery('[name="' + primary_email_name + bk_type + '"]').length > 0){
if(jQuery('[name="' + primary_email_name + bk_type + '"]').val()!==inp_value){
wpbc_front_end__show_message__warning(element , _wpbc.get_message('message_check_same_email') );
return;
}}
}
continue;
}}
if(element.name!==('captcha_input' + bk_type)){
if(formdata!=='') formdata +='~';
el_type=element.type;
if(element.className.indexOf('wpdev-validates-as-email')!==-1)  el_type='email';
if(element.className.indexOf('wpdev-validates-as-coupon')!==-1) el_type='coupon';
inp_value=inp_value + '';
inp_value=inp_value.replace(new RegExp("\\^",'g'), '&#94;');
inp_value=inp_value.replace(new RegExp("~",'g'), '&#126;');
inp_value=inp_value.replace(/"/g, '&#34;');
inp_value=inp_value.replace(/'/g, '&#39;');
if('select-one'==el_type){
el_type='selectbox-one';
}
if('select-multiple'==el_type){
el_type='selectbox-multiple';
}
formdata +=el_type + '^' + element.name + '^' + inp_value ;
var clean_field_name=element.name;
clean_field_name=clean_field_name.replaceAll(/\[\]/gi, '');
clean_field_name=clean_field_name.substr(0, (clean_field_name.length - bk_type.toString().length));
formdata +='~' + el_type + '^' + clean_field_name + '_val' + bk_type + '^' + inp_title_value;
}}
}
var captcha=document.getElementById('wpdev_captcha_challenge_' + bk_type);
if(captcha!=null)  form_submit_send(bk_type, formdata, captcha.value, document.getElementById('captcha_input' + bk_type).value ,wpdev_active_locale);
else                  form_submit_send(bk_type, formdata, '',            '' ,                                                      wpdev_active_locale);
return;
}
function form_submit_send(bk_type, formdata, captcha_chalange, user_captcha ,wpdev_active_locale){
var my_booking_form='';
if(document.getElementById('booking_form_type' + bk_type)!=undefined){
my_booking_form=document.getElementById('booking_form_type' + bk_type).value;
}
var my_booking_hash='';
if(_wpbc.get_other_param('this_page_booking_hash')!=''){
my_booking_hash=_wpbc.get_other_param('this_page_booking_hash');
}
var is_send_emeils=1;
if(jQuery('#is_send_email_for_pending').length){
is_send_emeils=jQuery('#is_send_email_for_pending').is(':checked');
if(false===is_send_emeils){ is_send_emeils=0; }else{ is_send_emeils=1; }}
if(document.getElementById('date_booking' + bk_type).value!=''){
send_ajax_submit(bk_type, formdata, captcha_chalange, user_captcha, is_send_emeils, my_booking_hash, my_booking_form, wpdev_active_locale);
}else{
jQuery('#booking_form_div' + bk_type).hide();
jQuery('#submiting' + bk_type).hide();
}
var formdata_additional_arr;
var formdata_additional;
var my_form_field;
var id_additional;
var id_additional_str;
var id_additional_arr;
if(document.getElementById('additional_calendars' + bk_type)!=null){
id_additional_str=document.getElementById('additional_calendars' + bk_type).value;
id_additional_arr=id_additional_str.split(',');
for(var ia=0; ia < id_additional_arr.length; ia++){
id_additional_arr[ia]=parseInt(id_additional_arr[ia]);
}
if(! jQuery('#booking_form_div' + bk_type).is(':visible') ){
wpbc_booking_form__spin_loader__show(bk_type);
}
for(var ia=0; ia < id_additional_arr.length; ia++){
if(id_additional_arr[ia] <=0){
continue;
}
formdata_additional_arr=formdata;
formdata_additional='';
id_additional=id_additional_arr[ia];
formdata_additional_arr=formdata_additional_arr.split('~');
for (var j=0;j<formdata_additional_arr.length;j++){
my_form_field=formdata_additional_arr[j].split('^');
if(formdata_additional!=='') formdata_additional +='~';
if(my_form_field[1].substr((my_form_field[1].length -2),2)=='[]')
my_form_field[1]=my_form_field[1].substr(0, (my_form_field[1].length - (''+bk_type).length) - 2) + id_additional + '[]';
else
my_form_field[1]=my_form_field[1].substr(0, (my_form_field[1].length - (''+bk_type).length) ) + id_additional ;
formdata_additional +=my_form_field[0] + '^' + my_form_field[1] + '^' + my_form_field[2];
}
if(jQuery('#gateway_payment_forms' + bk_type).length > 0){
jQuery('#gateway_payment_forms' + bk_type).after('<div id="gateway_payment_forms'+id_additional+'"></div>');
jQuery('#gateway_payment_forms' + bk_type).after('<div id="ajax_respond_insert'+id_additional+'" style="display:none;"></div>');
}
send_ajax_submit(id_additional ,formdata_additional,captcha_chalange,user_captcha,is_send_emeils,my_booking_hash,my_booking_form ,wpdev_active_locale);
}}
}
function send_ajax_submit(resource_id, formdata, captcha_chalange, user_captcha, is_send_emeils, my_booking_hash, my_booking_form, wpdev_active_locale){
wpbc_booking_form__on_submit__ui_elements_disable(resource_id)
var is_exit=wpbc_ajx_booking__create( {
'resource_id':resource_id,
'dates_ddmmyy_csv':document.getElementById('date_booking' + resource_id).value,
'formdata':formdata,
'booking_hash':my_booking_hash,
'custom_form':my_booking_form,
'aggregate_resource_id_arr':(( null!==_wpbc.booking__get_param_value(resource_id, 'aggregate_resource_id_arr'))
? _wpbc.booking__get_param_value(resource_id, 'aggregate_resource_id_arr').join(','):''),
'captcha_chalange':captcha_chalange,
'captcha_user_input':user_captcha,
'is_emails_send':is_send_emeils,
'active_locale':wpdev_active_locale
});
if(true===is_exit){
return;
}}
jQuery(document).ready(function (){
jQuery('div.inside_hint').on('click',
function (){
jQuery(this).css('visibility', 'hidden').siblings('.has-inside-hint').trigger('focus');
}
);
jQuery('input.has-inside-hint').on('blur',
function (){
if(''===this.value){
jQuery(this).siblings('.inside_hint').css('visibility', '');
}}
).on('focus',
function (){
jQuery(this).siblings('.inside_hint').css('visibility', 'hidden');
}
);
jQuery('.booking_form_div input[type=button]').prop("disabled", false);
}
);
function wpbc_check_errors_in_booking_form(bk_type){
var is_error_in_field=false;
var my_form=jQuery('#booking_form' + bk_type);
if(my_form.length){
var fields_with_errors_arr=[];
my_form.find(':input').each(function(index, el){
var skip_elements=[ 'hidden', 'button' ];
if(-1==skip_elements.indexOf(jQuery(el).attr('type') )){
if(( 'date_booking' + bk_type)==jQuery(el).attr('name') ){
if((( jQuery('#calendar_booking' + bk_type).is(':visible') )&&(''==jQuery(el).val()) )
&&(wpbc_get_arr_of_selected_additional_calendars(bk_type).length==0)
){
var notice_message_id=wpbc_front_end__show_message__error_under_element('#booking_form_div' + bk_type + ' .bk_calendar_frame', _wpbc.get_message('message_check_no_selected_dates') , 3000);
is_error_in_field=true;
}}
if(jQuery(el).is(':visible') ){
if(jQuery(el).hasClass('wpdev-validates-as-required') ){
if('checkbox'==jQuery(el).attr('type') ){
if((! jQuery(el).is(':checked'))
&&(! jQuery(':checkbox[name="' + el.name + '"]', my_form).is(":checked") )
){
var checkbox_parent_element;
if(jQuery(el).parents('.wpdev-form-control-wrap').length > 0){
checkbox_parent_element=jQuery(el).parents('.wpdev-form-control-wrap');
}else if(jQuery(el).parents('.controls').length > 0){
checkbox_parent_element=jQuery(el).parents('.controls');
}else{
checkbox_parent_element=jQuery(el);
}
var notice_message_id=wpbc_front_end__show_message__warning(checkbox_parent_element, _wpbc.get_message('message_check_required_for_check_box') );
fields_with_errors_arr.push(el);
is_error_in_field=true;
}}else if('radio'==jQuery(el).attr('type') ){
if(!jQuery(':radio[name="' + jQuery(el).attr('name') + '"]', my_form).is(':checked') ){
var notice_message_id=wpbc_front_end__show_message__warning(jQuery(el).parents('.wpdev-form-control-wrap'), _wpbc.get_message('message_check_required_for_radio_box') );
fields_with_errors_arr.push(el);
is_error_in_field=true;
}}else{
var inp_value=jQuery(el).val();
if(''===wpbc_trim(inp_value) ){                                                       //FixIn: 8.8.1.3        // FixIn: 8.7.11.12.
var notice_message_id=wpbc_front_end__show_message__warning(el, _wpbc.get_message('message_check_required') );
fields_with_errors_arr.push(el);
is_error_in_field=true;
}}
}
if(jQuery(el).hasClass('wpdev-validates-as-email') ){
var inp_value=jQuery(el).val();
inp_value=inp_value.replace(/^\s+|\s+$/gm, '');                // Trim  white space //FixIn: 5.4.5
var reg=/^([A-Za-z0-9_\-\.\+])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,})$/;
if((inp_value!='')&&(reg.test(inp_value)==false)){
var notice_message_id=wpbc_front_end__show_message__warning(el, _wpbc.get_message('message_check_email') );
fields_with_errors_arr.push(el);
is_error_in_field=true;
}}
var classList=jQuery(el).attr('class');
if(classList){
classList=classList.split(/\s+/);
jQuery.each(classList, function(cl_index, cl_item){
if('validate_as_date'===cl_item){
var regex=new RegExp('^[0-3]?\\d{1}[\\/\\.\\-]+[0-3]?\\d{1}[\\/\\.\\-]+[0-2]+\\d{3}$');
var message_verif_phone='This field must be valid date like this ' + '09/25/2018';
var inp_value=jQuery(el).val();
if(( inp_value!='')&&(regex.test(inp_value)==false) ){
wpbc_front_end__show_message__warning(el, message_verif_phone);
fields_with_errors_arr.push(el);
is_error_in_field=true;
}}
if('validate_as_digit'===cl_item){
var regex=new RegExp('^[0-9]+\\.?[0-9]*$');
var message_verif_phone='This field must contain only digits';
var inp_value=jQuery(el).val();
if(( inp_value!='')&&(regex.test(inp_value)==false) ){
wpbc_front_end__show_message__warning(el, message_verif_phone);
fields_with_errors_arr.push(el);
is_error_in_field=true;
}}
var is_validate_digit=cl_item.substring(0, 15);
if('validate_digit_'===is_validate_digit){
var digits_to_check=parseInt(cl_item.substring(15) );
if(!isNaN(digits_to_check) ){
var regex=new RegExp('^\\d{' + digits_to_check + '}$');
var message_verif_phone='This field must contain ' + digits_to_check + ' digits';
var inp_value=jQuery(el).val();
if(( inp_value!='')&&(regex.test(inp_value)==false) ){
wpbc_front_end__show_message__warning(el, message_verif_phone);
fields_with_errors_arr.push(el);
is_error_in_field=true;
}}
}});
}}
}});
if(fields_with_errors_arr.length > 0){
jQuery(fields_with_errors_arr[ 0 ]).trigger('focus');
}}
return is_error_in_field;
}
function wpbc_wizard_step(el, step_num, step_from){
var br_id=jQuery(el).closest('form').find('input[name^="bk_type"]').val();
if((undefined==step_from)||(step_num > step_from)){
if(1!=step_num){
var is_error=wpbc_check_errors_in_booking_form(br_id);
if(is_error){
return false;
}}
}
if(wpbc_is_some_elements_visible(br_id, [ 'rangetime', 'durationtime', 'starttime', 'endtime' ]) ){
if(wpbc_is_this_time_selection_not_available(br_id, document.getElementById('booking_form' + br_id) )){
return false;
}}
if(br_id!=undefined){
jQuery("#booking_form" + br_id + " .wpbc_wizard_step").css({ "display": "none" }).removeClass('wpbc_wizard_step_hidden');
jQuery("#booking_form" + br_id + " .wpbc_wizard_step" + step_num).css({ "display": "block" });
return jQuery("#booking_form" + br_id + " .wpbc_wizard_step" + step_num);
}}
function wpbc_hook__init_booking_form_wizard_buttons(){
jQuery('.wpbc_wizard_step_button').attr({
href: 'javascript:void(0)',
}
);
jQuery('.wpbc_wizard_step_button').on('click',
function (event){
var found_steps_arr=jQuery(this).attr('class').match(/wpbc\_wizard\_step\_([\d]+)([\s'"]+|$)/);
if((null!==found_steps_arr)&&(found_steps_arr.length > 2)){
var step=parseInt(found_steps_arr[1]);
if(step > 0){
var jq_step_element;
var this_formsteps_arr=jQuery(this).parents('.wpbc_wizard_step').attr('class').match(/wpbc\_wizard\_step([\d]+)([\s'"]+|$)/);
if((null!==this_formsteps_arr)&&(this_formsteps_arr.length > 2)){
var step_from=parseInt(this_formsteps_arr[1]);
jq_step_element=wpbc_wizard_step(this, step, step_from);
}else{
jq_step_element=wpbc_wizard_step(this, step);
}
if(false!==jq_step_element){
wpbc_do_scroll(jq_step_element);
}}
}}
);
}
jQuery(document).ready(function (){
wpbc_hook__init_booking_form_wizard_buttons();
});
function wpbc_is_some_elements_visible(bk_type, elements_names){
var is_some_elements_visible=false;
var my_form=jQuery('#booking_form' + bk_type);
if(my_form.length){
my_form.find(':input').each(function(index, el){
var skip_elements=['hidden', 'button'];
if(-1==skip_elements.indexOf(jQuery(el).attr('type') )){
for(var ei=0; ei <(elements_names.length - 1) ; ei++){
if((elements_names[ ei ] + bk_type)==jQuery(el).attr('name') ){
if(jQuery(el).is(':visible') ){
is_some_elements_visible=true;
}}
}}
});
}
return is_some_elements_visible;
}
function get_first_day_of_selection(dates){
if(dates.indexOf(',')!=-1){
var dates_array=dates.split(/,\s*/);
var length=dates_array.length;
var element=null;
var new_dates_array=[];
for(var i=0; i < length; i++){
element=dates_array[ i ].split(/\./);
new_dates_array[ new_dates_array.length ]=element[ 2 ] + '.' + element[ 1 ] + '.' + element[ 0 ];
}
new_dates_array.sort();
element=new_dates_array[ 0 ].split(/\./);
return element[ 2 ] + '.' + element[ 1 ] + '.' + element[ 0 ];
}
if(dates.indexOf(' - ')!=-1){
var start_end_date=dates.split(" - ");
return start_end_date[ 0 ];
}
return dates;
}
function get_last_day_of_selection(dates){
if(dates.indexOf(',')!=-1){
var dates_array=dates.split(/,\s*/);
var length=dates_array.length;
var element=null;
var new_dates_array=[];
for (var i=0; i < length; i++){
element=dates_array[i].split(/\./);
new_dates_array[new_dates_array.length]=element[2]+'.' + element[1]+'.' + element[0];
}
new_dates_array.sort();
element=new_dates_array[(new_dates_array.length-1)].split(/\./);
return element[2]+'.' + element[1]+'.' + element[0];
}
if(dates.indexOf(' - ')!=-1){
var start_end_date=dates.split(" - ");
return start_end_date[(start_end_date.length-1)];
}
return dates;
}
function wpbc_get_arr_of_selected_additional_calendars(bk_type){
var selected_additionl_calendars=[];
if(document.getElementById('additional_calendars' + bk_type)!=null){
var id_additional_str=document.getElementById('additional_calendars' + bk_type).value;
var id_additional_arr=id_additional_str.split(',');
var is_all_additional_days_unselected=true;
for(var ia=0; ia < id_additional_arr.length; ia++){
if(document.getElementById('date_booking' + id_additional_arr[ ia ]).value!=''){
selected_additionl_calendars.push(id_additional_arr[ ia ]);
}}
}
return selected_additionl_calendars;
};