!function(a){"function"==typeof define&&define.amd?define("picker",["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):"object"==typeof window?window.Picker=a(jQuery):this.Picker=a(jQuery)}(function(a){function b(g,h,j,l){function n(){return b._.node("div",b._.node("div",b._.node("div",b._.node("div",B.component.nodes(w.open),y.box),y.wrap),y.frame),y.holder,'tabindex="-1"')}function o(){z.data(h,B).addClass(y.input).val(z.data("value")?B.get("select",x.format):g.value).on("focus."+w.id+" click."+w.id,function(a){a.preventDefault(),B.open()}).on("mousedown",function(){w.handlingOpen=!0;var b=function(){setTimeout(function(){a(document).off("mouseup",b),w.handlingOpen=!1},0)};a(document).on("mouseup",b)}),x.editable||z.on("keydown."+w.id,u),f(g,{haspopup:!0,expanded:!1,readonly:!1,owns:g.id+"_root"})}function p(){f(B.$root[0],"hidden",!0)}function q(){B.$holder.on({keydown:u,"focus.toOpen":t,blur:function(){z.removeClass(y.target)},focusin:function(a){B.$root.removeClass(y.focused),a.stopPropagation()},"mousedown click":function(b){var c=e(b,g);c!=B.$holder[0]&&(b.stopPropagation(),"mousedown"!=b.type||a(c).is("input, select, textarea, button, option")||(b.preventDefault(),B.$holder.eq(0).focus()))}}).on("click","[data-pick], [data-nav], [data-clear], [data-close]",function(){var b=a(this),c=b.data(),d=b.hasClass(y.navDisabled)||b.hasClass(y.disabled),e=i();e=e&&(e.type||e.href?e:null),(d||e&&!a.contains(B.$root[0],e))&&B.$holder.eq(0).focus(),!d&&c.nav?B.set("highlight",B.component.item.highlight,{nav:c.nav}):!d&&"pick"in c?(B.set("select",c.pick),x.closeOnSelect&&B.close(!0)):c.clear?(B.clear(),x.closeOnClear&&B.close(!0)):c.close&&B.close(!0)})}function r(){var b;!0===x.hiddenName?(b=g.name,g.name=""):(b=["string"==typeof x.hiddenPrefix?x.hiddenPrefix:"","string"==typeof x.hiddenSuffix?x.hiddenSuffix:"_submit"],b=b[0]+g.name+b[1]),B._hidden=a('<input type=hidden name="'+b+'"'+(z.data("value")||g.value?' value="'+B.get("select",x.formatSubmit)+'"':"")+">")[0],z.on("change."+w.id,function(){B._hidden.value=g.value?B.get("select",x.formatSubmit):""})}function s(){v&&m?B.$holder.find("."+y.frame).one("transitionend",function(){B.$holder.eq(0).focus()}):setTimeout(function(){B.$holder.eq(0).focus()},0)}function t(a){a.stopPropagation(),z.addClass(y.target),B.$root.addClass(y.focused),B.open()}function u(a){var b=a.keyCode,c=/^(8|46)$/.test(b);if(27==b)return B.close(!0),!1;(32==b||c||!w.open&&B.component.key[b])&&(a.preventDefault(),a.stopPropagation(),c?B.clear().close():B.open())}if(!g)return b;var v=!1,w={id:g.id||"P"+Math.abs(~~(Math.random()*new Date)),handlingOpen:!1},x=j?a.extend(!0,{},j.defaults,l):l||{},y=a.extend({},b.klasses(),x.klass),z=a(g),A=function(){return this.start()},B=A.prototype={constructor:A,$node:z,start:function(){return w&&w.start?B:(w.methods={},w.start=!0,w.open=!1,w.type=g.type,g.autofocus=g==i(),g.readOnly=!x.editable,g.id=g.id||w.id,"text"!=g.type&&(g.type="text"),B.component=new j(B,x),B.$root=a('<div class="'+y.picker+'" id="'+g.id+'_root" />'),p(),B.$holder=a(n()).appendTo(B.$root),q(),x.formatSubmit&&r(),o(),x.containerHidden?a(x.containerHidden).append(B._hidden):z.after(B._hidden),x.container?a(x.container).append(B.$root):z.after(B.$root),B.on({start:B.component.onStart,render:B.component.onRender,stop:B.component.onStop,open:B.component.onOpen,close:B.component.onClose,set:B.component.onSet}).on({start:x.onStart,render:x.onRender,stop:x.onStop,open:x.onOpen,close:x.onClose,set:x.onSet}),v=c(B.$holder[0]),g.autofocus&&B.open(),B.trigger("start").trigger("render"))},render:function(b){return b?(B.$holder=a(n()),q(),B.$root.html(B.$holder)):B.$root.find("."+y.box).html(B.component.nodes(w.open)),B.trigger("render")},stop:function(){return w.start?(B.close(),B._hidden&&B._hidden.parentNode.removeChild(B._hidden),B.$root.remove(),z.removeClass(y.input).removeData(h),setTimeout(function(){z.off("."+w.id)},0),g.type=w.type,g.readOnly=!1,B.trigger("stop"),w.methods={},w.start=!1,B):B},open:function(c){return w.open?B:(z.addClass(y.active),f(g,"expanded",!0),setTimeout(function(){B.$root.addClass(y.opened),f(B.$root[0],"hidden",!1)},0),!1!==c&&(w.open=!0,v&&a("body").css("overflow","hidden").css("padding-right","+="+d()),s(),k.on("click."+w.id+" focusin."+w.id,function(a){if(!w.handlingOpen){var b=e(a,g);a.isSimulated||b==g||b==document||3==a.which||B.close(b===B.$holder[0])}}).on("keydown."+w.id,function(c){var d=c.keyCode,f=B.component.key[d],h=e(c,g);27==d?B.close(!0):h!=B.$holder[0]||!f&&13!=d?a.contains(B.$root[0],h)&&13==d&&(c.preventDefault(),h.click()):(c.preventDefault(),f?b._.trigger(B.component.key.go,B,[b._.trigger(f)]):B.$root.find("."+y.highlighted).hasClass(y.disabled)||(B.set("select",B.component.item.highlight),x.closeOnSelect&&B.close(!0)))})),B.trigger("open"))},close:function(b){return b&&(x.editable?g.focus():(B.$holder.off("focus.toOpen").focus(),setTimeout(function(){B.$holder.on("focus.toOpen",t)},0))),z.removeClass(y.active),f(g,"expanded",!1),setTimeout(function(){B.$root.removeClass(y.opened+" "+y.focused),f(B.$root[0],"hidden",!0)},0),w.open?(w.open=!1,v&&a("body").css("overflow","").css("padding-right","-="+d()),k.off("."+w.id),B.trigger("close")):B},clear:function(a){return B.set("clear",null,a)},set:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(d=g&&a.isPlainObject(c)?c:d||{},b){g||(h[b]=c);for(e in h)f=h[e],e in B.component.item&&(void 0===f&&(f=null),B.component.set(e,f,d)),"select"!=e&&"clear"!=e||!x.updateInput||z.val("clear"==e?"":B.get(e,x.format)).trigger("change");B.render()}return d.muted?B:B.trigger("set",h)},get:function(a,c){if(a=a||"value",null!=w[a])return w[a];if("valueSubmit"==a){if(B._hidden)return B._hidden.value;a="value"}if("value"==a)return g.value;if(a in B.component.item){if("string"==typeof c){var d=B.component.get(a);return d?b._.trigger(B.component.formats.toString,B.component,[c,d]):""}return B.component.get(a)}},on:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(b){g||(h[b]=c);for(e in h)f=h[e],d&&(e="_"+e),w.methods[e]=w.methods[e]||[],w.methods[e].push(f)}return B},off:function(){var a,b,c=arguments;for(a=0,namesCount=c.length;a<namesCount;a+=1)(b=c[a])in w.methods&&delete w.methods[b];return B},trigger:function(a,c){var d=function(a){var d=w.methods[a];d&&d.map(function(a){b._.trigger(a,B,[c])})};return d("_"+a),d(a),B}};return new A}function c(a){var b,c="position";return a.currentStyle?b=a.currentStyle[c]:window.getComputedStyle&&(b=getComputedStyle(a)[c]),"fixed"==b}function d(){if(l.height()<=j.height())return 0;var b=a('<div style="visibility:hidden;width:100px" />').appendTo("body"),c=b[0].offsetWidth;b.css("overflow","scroll");var d=a('<div style="width:100%" />').appendTo(b),e=d[0].offsetWidth;return b.remove(),c-e}function e(a,b){var c=[];return a.path&&(c=a.path),a.originalEvent&&a.originalEvent.path&&(c=a.originalEvent.path),c&&c.length>0?b&&c.indexOf(b)>=0?b:c[0]:a.target}function f(b,c,d){if(a.isPlainObject(c))for(var e in c)g(b,e,c[e]);else g(b,c,d)}function g(a,b,c){a.setAttribute(("role"==b?"":"aria-")+b,c)}function h(b,c){a.isPlainObject(b)||(b={attribute:c}),c="";for(var d in b){var e=("role"==d?"":"aria-")+d;c+=null==b[d]?"":e+'="'+b[d]+'"'}return c}function i(){try{return document.activeElement}catch(a){}}var j=a(window),k=a(document),l=a(document.documentElement),m=null!=document.documentElement.style.transition;return b.klasses=function(a){return a=a||"picker",{picker:a,opened:a+"--opened",focused:a+"--focused",input:a+"__input",active:a+"__input--active",target:a+"__input--target",holder:a+"__holder",frame:a+"__frame",wrap:a+"__wrap",box:a+"__box"}},b._={group:function(a){for(var c,d="",e=b._.trigger(a.min,a);e<=b._.trigger(a.max,a,[e]);e+=a.i)c=b._.trigger(a.item,a,[e]),d+=b._.node(a.node,c[0],c[1],c[2]);return d},node:function(b,c,d,e){return c?(c=a.isArray(c)?c.join(""):c,d=d?' class="'+d+'"':"",e=e?" "+e:"","<"+b+d+e+">"+c+"</"+b+">"):""},lead:function(a){return(a<10?"0":"")+a},trigger:function(a,b,c){return"function"==typeof a?a.apply(b,c||[]):a},digits:function(a){return/\d/.test(a[1])?2:1},isDate:function(a){return{}.toString.call(a).indexOf("Date")>-1&&this.isInteger(a.getDate())},isInteger:function(a){return{}.toString.call(a).indexOf("Number")>-1&&a%1==0},ariaAttr:h},b.extend=function(c,d){a.fn[c]=function(e,f){var g=this.data(c);return"picker"==e?g:g&&"string"==typeof e?b._.trigger(g[e],g,[f]):this.each(function(){a(this).data(c)||new b(this,c,d,e)})},a.fn[c].defaults=d.defaults},b});
!function(a){"function"==typeof define&&define.amd?define(["./picker","jquery"],a):"object"==typeof exports?module.exports=a(require("./picker.js"),require("jquery")):a(Picker,jQuery)}(function(a,b){function c(a,b){var c=this,d=a.$node[0],e=d.value,f=a.$node.data("value"),g=f||e,h=f?b.formatSubmit:b.format,i=function(){return d.currentStyle?"rtl"==d.currentStyle.direction:"rtl"==getComputedStyle(a.$root[0]).direction};c.settings=b,c.$node=a.$node,c.queue={min:"measure create",max:"measure create",now:"now create",select:"parse create validate",highlight:"parse navigate create validate",view:"parse create validate viewset",disable:"deactivate",enable:"activate"},c.item={},c.item.clear=null,c.item.disable=(b.disable||[]).slice(0),c.item.enable=-function(a){return!0===a[0]?a.shift():-1}(c.item.disable),c.set("min",b.min).set("max",b.max).set("now"),g?c.set("select",g,{format:h,defaultValue:!0}):c.set("select",null).set("highlight",c.item.now),c.key={40:7,38:-7,39:function(){return i()?-1:1},37:function(){return i()?1:-1},go:function(a){var b=c.item.highlight,d=new Date(b.year,b.month,b.date+a);c.set("highlight",d,{interval:a}),this.render()}},a.on("render",function(){a.$root.find("."+b.klass.selectMonth).on("change",function(){var c=this.value;c&&(a.set("highlight",[a.get("view").year,c,a.get("highlight").date]),a.$root.find("."+b.klass.selectMonth).trigger("focus"))}),a.$root.find("."+b.klass.selectYear).on("change",function(){var c=this.value;c&&(a.set("highlight",[c,a.get("view").month,a.get("highlight").date]),a.$root.find("."+b.klass.selectYear).trigger("focus"))})},1).on("open",function(){var d="";c.disabled(c.get("now"))&&(d=":not(."+b.klass.buttonToday+")"),a.$root.find("button"+d+", select").attr("disabled",!1)},1).on("close",function(){a.$root.find("button, select").attr("disabled",!0)},1)}var d=7,e=a._;c.prototype.set=function(a,b,c){var d=this,e=d.item;return null===b?("clear"==a&&(a="select"),e[a]=b,d):(e["enable"==a?"disable":"flip"==a?"enable":a]=d.queue[a].split(" ").map(function(e){return b=d[e](a,b,c)}).pop(),"select"==a?d.set("highlight",e.select,c):"highlight"==a?d.set("view",e.highlight,c):a.match(/^(flip|min|max|disable|enable)$/)&&(e.select&&d.disabled(e.select)&&d.set("select",e.select,c),e.highlight&&d.disabled(e.highlight)&&d.set("highlight",e.highlight,c)),d)},c.prototype.get=function(a){return this.item[a]},c.prototype.create=function(a,c,d){var f,g=this;return c=void 0===c?a:c,c==-1/0||c==1/0?f=c:b.isPlainObject(c)&&e.isInteger(c.pick)?c=c.obj:b.isArray(c)?(c=new Date(c[0],c[1],c[2]),c=e.isDate(c)?c:g.create().obj):c=e.isInteger(c)||e.isDate(c)?g.normalize(new Date(c),d):g.now(a,c,d),{year:f||c.getFullYear(),month:f||c.getMonth(),date:f||c.getDate(),day:f||c.getDay(),obj:f||c,pick:f||c.getTime()}},c.prototype.createRange=function(a,c){var d=this,f=function(a){return!0===a||b.isArray(a)||e.isDate(a)?d.create(a):a};return e.isInteger(a)||(a=f(a)),e.isInteger(c)||(c=f(c)),e.isInteger(a)&&b.isPlainObject(c)?a=[c.year,c.month,c.date+a]:e.isInteger(c)&&b.isPlainObject(a)&&(c=[a.year,a.month,a.date+c]),{from:f(a),to:f(c)}},c.prototype.withinRange=function(a,b){return a=this.createRange(a.from,a.to),b.pick>=a.from.pick&&b.pick<=a.to.pick},c.prototype.overlapRanges=function(a,b){var c=this;return a=c.createRange(a.from,a.to),b=c.createRange(b.from,b.to),c.withinRange(a,b.from)||c.withinRange(a,b.to)||c.withinRange(b,a.from)||c.withinRange(b,a.to)},c.prototype.now=function(a,b,c){return b=new Date,c&&c.rel&&b.setDate(b.getDate()+c.rel),this.normalize(b,c)},c.prototype.navigate=function(a,c,d){var e,f,g,h,i=b.isArray(c),j=b.isPlainObject(c),k=this.item.view;if(i||j){for(j?(f=c.year,g=c.month,h=c.date):(f=+c[0],g=+c[1],h=+c[2]),d&&d.nav&&k&&k.month!==g&&(f=k.year,g=k.month),e=new Date(f,g+(d&&d.nav?d.nav:0),1),f=e.getFullYear(),g=e.getMonth();new Date(f,g,h).getMonth()!==g;)h-=1;c=[f,g,h]}return c},c.prototype.normalize=function(a){return a.setHours(0,0,0,0),a},c.prototype.measure=function(a,b){var c=this;return e.isInteger(b)?b=c.now(a,b,{rel:b}):b?"string"==typeof b&&(b=c.parse(a,b)):b="min"==a?-1/0:1/0,b},c.prototype.viewset=function(a,b){return this.create([b.year,b.month,1])},c.prototype.validate=function(a,c,d){var f,g,h,i,j=this,k=c,l=d&&d.interval?d.interval:1,m=-1===j.item.enable,n=j.item.min,o=j.item.max,p=m&&j.item.disable.filter(function(a){if(b.isArray(a)){var d=j.create(a).pick;d<c.pick?f=!0:d>c.pick&&(g=!0)}return e.isInteger(a)}).length;if((!d||!d.nav&&!d.defaultValue)&&(!m&&j.disabled(c)||m&&j.disabled(c)&&(p||f||g)||!m&&(c.pick<=n.pick||c.pick>=o.pick)))for(m&&!p&&(!g&&l>0||!f&&l<0)&&(l*=-1);j.disabled(c)&&(Math.abs(l)>1&&(c.month<k.month||c.month>k.month)&&(c=k,l=l>0?1:-1),c.pick<=n.pick?(h=!0,l=1,c=j.create([n.year,n.month,n.date+(c.pick===n.pick?0:-1)])):c.pick>=o.pick&&(i=!0,l=-1,c=j.create([o.year,o.month,o.date+(c.pick===o.pick?0:1)])),!h||!i);)c=j.create([c.year,c.month,c.date+l]);return c},c.prototype.disabled=function(a){var c=this,d=c.item.disable.filter(function(d){return e.isInteger(d)?a.day===(c.settings.firstDay?d:d-1)%7:b.isArray(d)||e.isDate(d)?a.pick===c.create(d).pick:b.isPlainObject(d)?c.withinRange(d,a):void 0});return d=d.length&&!d.filter(function(a){return b.isArray(a)&&"inverted"==a[3]||b.isPlainObject(a)&&a.inverted}).length,-1===c.item.enable?!d:d||a.pick<c.item.min.pick||a.pick>c.item.max.pick},c.prototype.parse=function(a,b,c){var d=this,f={};return b&&"string"==typeof b?(c&&c.format||(c=c||{},c.format=d.settings.format),d.formats.toArray(c.format).map(function(a){var c=d.formats[a],g=c?e.trigger(c,d,[b,f]):a.replace(/^!/,"").length;c&&(f[a]=b.substr(0,g)),b=b.substr(g)}),[f.yyyy||f.yy,+(f.mm||f.m)-1,f.dd||f.d]):b},c.prototype.formats=function(){function a(a,b,c){var d=a.match(/[^\x00-\x7F]+|\w+/)[0];return c.mm||c.m||(c.m=b.indexOf(d)+1),d.length}function b(a){return a.match(/\w+/)[0].length}return{d:function(a,b){return a?e.digits(a):b.date},dd:function(a,b){return a?2:e.lead(b.date)},ddd:function(a,c){return a?b(a):this.settings.weekdaysShort[c.day]},dddd:function(a,c){return a?b(a):this.settings.weekdaysFull[c.day]},m:function(a,b){return a?e.digits(a):b.month+1},mm:function(a,b){return a?2:e.lead(b.month+1)},mmm:function(b,c){var d=this.settings.monthsShort;return b?a(b,d,c):d[c.month]},mmmm:function(b,c){var d=this.settings.monthsFull;return b?a(b,d,c):d[c.month]},yy:function(a,b){return a?2:(""+b.year).slice(2)},yyyy:function(a,b){return a?4:b.year},toArray:function(a){return a.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)},toString:function(a,b){var c=this;return c.formats.toArray(a).map(function(a){return e.trigger(c.formats[a],c,[0,b])||a.replace(/^!/,"")}).join("")}}}(),c.prototype.isDateExact=function(a,c){var d=this;return e.isInteger(a)&&e.isInteger(c)||"boolean"==typeof a&&"boolean"==typeof c?a===c:(e.isDate(a)||b.isArray(a))&&(e.isDate(c)||b.isArray(c))?d.create(a).pick===d.create(c).pick:!(!b.isPlainObject(a)||!b.isPlainObject(c))&&d.isDateExact(a.from,c.from)&&d.isDateExact(a.to,c.to)},c.prototype.isDateOverlap=function(a,c){var d=this,f=d.settings.firstDay?1:0;return e.isInteger(a)&&(e.isDate(c)||b.isArray(c))?(a=a%7+f)===d.create(c).day+1:e.isInteger(c)&&(e.isDate(a)||b.isArray(a))?(c=c%7+f)===d.create(a).day+1:!(!b.isPlainObject(a)||!b.isPlainObject(c))&&d.overlapRanges(a,c)},c.prototype.flipEnable=function(a){var b=this.item;b.enable=a||(-1==b.enable?1:-1)},c.prototype.deactivate=function(a,c){var d=this,f=d.item.disable.slice(0);return"flip"==c?d.flipEnable():!1===c?(d.flipEnable(1),f=[]):!0===c?(d.flipEnable(-1),f=[]):c.map(function(a){for(var c,g=0;g<f.length;g+=1)if(d.isDateExact(a,f[g])){c=!0;break}c||(e.isInteger(a)||e.isDate(a)||b.isArray(a)||b.isPlainObject(a)&&a.from&&a.to)&&f.push(a)}),f},c.prototype.activate=function(a,c){var d=this,f=d.item.disable,g=f.length;return"flip"==c?d.flipEnable():!0===c?(d.flipEnable(1),f=[]):!1===c?(d.flipEnable(-1),f=[]):c.map(function(a){var c,h,i,j;for(i=0;i<g;i+=1){if(h=f[i],d.isDateExact(h,a)){c=f[i]=null,j=!0;break}if(d.isDateOverlap(h,a)){b.isPlainObject(a)?(a.inverted=!0,c=a):b.isArray(a)?(c=a,c[3]||c.push("inverted")):e.isDate(a)&&(c=[a.getFullYear(),a.getMonth(),a.getDate(),"inverted"]);break}}if(c)for(i=0;i<g;i+=1)if(d.isDateExact(f[i],a)){f[i]=null;break}if(j)for(i=0;i<g;i+=1)if(d.isDateOverlap(f[i],a)){f[i]=null;break}c&&f.push(c)}),f.filter(function(a){return null!=a})},c.prototype.nodes=function(a){var b=this,c=b.settings,f=b.item,g=f.now,h=f.select,i=f.highlight,j=f.view,k=f.disable,l=f.min,m=f.max,n=function(a,b){return c.firstDay&&(a.push(a.shift()),b.push(b.shift())),e.node("thead",e.node("tr",e.group({min:0,max:d-1,i:1,node:"th",item:function(d){return[a[d],c.klass.weekdays,'scope=col title="'+b[d]+'"']}})))}((c.showWeekdaysFull?c.weekdaysFull:c.weekdaysShort).slice(0),c.weekdaysFull.slice(0)),o=function(a){return e.node("div"," ",c.klass["nav"+(a?"Next":"Prev")]+(a&&j.year>=m.year&&j.month>=m.month||!a&&j.year<=l.year&&j.month<=l.month?" "+c.klass.navDisabled:""),"data-nav="+(a||-1)+" "+e.ariaAttr({role:"button",controls:b.$node[0].id+"_table"})+' title="'+(a?c.labelMonthNext:c.labelMonthPrev)+'"')},p=function(){var d=c.showMonthsShort?c.monthsShort:c.monthsFull;return c.selectMonths?e.node("select",e.group({min:0,max:11,i:1,node:"option",item:function(a){return[d[a],0,"value="+a+(j.month==a?" selected":"")+(j.year==l.year&&a<l.month||j.year==m.year&&a>m.month?" disabled":"")]}}),c.klass.selectMonth,(a?"":"disabled")+" "+e.ariaAttr({controls:b.$node[0].id+"_table"})+' title="'+c.labelMonthSelect+'"'):e.node("div",d[j.month],c.klass.month)},q=function(){var d=j.year,f=!0===c.selectYears?5:~~(c.selectYears/2);if(f){var g=l.year,h=m.year,i=d-f,k=d+f;if(g>i&&(k+=g-i,i=g),h<k){var n=i-g,o=k-h;i-=n>o?o:n,k=h}return e.node("select",e.group({min:i,max:k,i:1,node:"option",item:function(a){return[a,0,"value="+a+(d==a?" selected":"")]}}),c.klass.selectYear,(a?"":"disabled")+" "+e.ariaAttr({controls:b.$node[0].id+"_table"})+' title="'+c.labelYearSelect+'"')}return e.node("div",d,c.klass.year)};return e.node("div",(c.selectYears?q()+p():p()+q())+o()+o(1),c.klass.header)+e.node("table",n+e.node("tbody",e.group({min:0,max:5,i:1,node:"tr",item:function(a){var f=c.firstDay&&0===b.create([j.year,j.month,1]).day?-7:0;return[e.group({min:d*a-j.day+f+1,max:function(){return this.min+d-1},i:1,node:"td",item:function(a){a=b.create([j.year,j.month,a+(c.firstDay?1:0)]);var d=h&&h.pick==a.pick,f=i&&i.pick==a.pick,n=k&&b.disabled(a)||a.pick<l.pick||a.pick>m.pick,o=e.trigger(b.formats.toString,b,[c.format,a]);return[e.node("div",a.date,function(b){return b.push(j.month==a.month?c.klass.infocus:c.klass.outfocus),g.pick==a.pick&&b.push(c.klass.now),d&&b.push(c.klass.selected),f&&b.push(c.klass.highlighted),n&&b.push(c.klass.disabled),b.join(" ")}([c.klass.day]),"data-pick="+a.pick+" "+e.ariaAttr({role:"gridcell",label:o,selected:!(!d||b.$node.val()!==o)||null,activedescendant:!!f||null,disabled:!!n||null})),"",e.ariaAttr({role:"presentation"})]}})]}})),c.klass.table,'id="'+b.$node[0].id+'_table" '+e.ariaAttr({role:"grid",controls:b.$node[0].id,readonly:!0}))+e.node("div",e.node("button",c.today,c.klass.buttonToday,"type=button data-pick="+g.pick+(a&&!b.disabled(g)?"":" disabled")+" "+e.ariaAttr({controls:b.$node[0].id}))+e.node("button",c.clear,c.klass.buttonClear,"type=button data-clear=1"+(a?"":" disabled")+" "+e.ariaAttr({controls:b.$node[0].id}))+e.node("button",c.close,c.klass.buttonClose,"type=button data-close=true "+(a?"":" disabled")+" "+e.ariaAttr({controls:b.$node[0].id})),c.klass.footer)},c.defaults=function(a){return{labelMonthNext:"Next month",labelMonthPrev:"Previous month",labelMonthSelect:"Select a month",labelYearSelect:"Select a year",monthsFull:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekdaysFull:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],today:"Today",clear:"Clear",close:"Close",closeOnSelect:!0,closeOnClear:!0,updateInput:!0,format:"d mmmm, yyyy",klass:{table:a+"table",header:a+"header",navPrev:a+"nav--prev",navNext:a+"nav--next",navDisabled:a+"nav--disabled",month:a+"month",year:a+"year",selectMonth:a+"select--month",selectYear:a+"select--year",weekdays:a+"weekday",day:a+"day",disabled:a+"day--disabled",selected:a+"day--selected",highlighted:a+"day--highlighted",now:a+"day--today",infocus:a+"day--infocus",outfocus:a+"day--outfocus",footer:a+"footer",buttonClear:a+"button--clear",buttonToday:a+"button--today",buttonClose:a+"button--close"}}}(a.klasses().picker+"__"),a.extend("pickadate",c)});
!function(a){"function"==typeof define&&define.amd?define(["./picker","jquery"],a):"object"==typeof exports?module.exports=a(require("./picker.js"),require("jquery")):a(Picker,jQuery)}(function(a,b){function c(a,b){var c=this,d=a.$node[0].value,e=a.$node.data("value"),f=e||d,g=e?b.formatSubmit:b.format;c.settings=b,c.$node=a.$node,c.queue={interval:"i",min:"measure create",max:"measure create",now:"now create",select:"parse create validate",highlight:"parse create validate",view:"parse create validate",disable:"deactivate",enable:"activate"},c.item={},c.item.clear=null,c.item.interval=b.interval||30,c.item.disable=(b.disable||[]).slice(0),c.item.enable=-function(a){return!0===a[0]?a.shift():-1}(c.item.disable),c.set("min",b.min).set("max",b.max).set("now"),f?c.set("select",f,{format:g}):c.set("select",null).set("highlight",c.item.now),c.key={40:1,38:-1,39:1,37:-1,go:function(a){c.set("highlight",c.item.highlight.pick+a*c.item.interval,{interval:a*c.item.interval}),this.render()}},a.on("render",function(){var c=a.$root.children(),d=c.find("."+b.klass.viewset),e=function(a){return["webkit","moz","ms","o",""].map(function(b){return(b?"-"+b+"-":"")+a})},f=function(a,b){e("transform").map(function(c){a.css(c,b)}),e("transition").map(function(c){a.css(c,b)})};d.length&&(f(c,"none"),c[0].scrollTop=~~d.position().top-2*d[0].clientHeight,f(c,""))},1).on("open",function(){a.$root.find("button").attr("disabled",!1)},1).on("close",function(){a.$root.find("button").attr("disabled",!0)},1)}var d=24,e=60,f=12,g=d*e,h=a._;c.prototype.set=function(a,b,c){var d=this,e=d.item;return null===b?("clear"==a&&(a="select"),e[a]=b,d):(e["enable"==a?"disable":"flip"==a?"enable":a]=d.queue[a].split(" ").map(function(e){return b=d[e](a,b,c)}).pop(),"select"==a?d.set("highlight",e.select,c):"highlight"==a?d.set("view",e.highlight,c):"interval"==a?d.set("min",e.min,c).set("max",e.max,c):a.match(/^(flip|min|max|disable|enable)$/)&&(e.select&&d.disabled(e.select)&&d.set("select",b,c),e.highlight&&d.disabled(e.highlight)&&d.set("highlight",b,c),"min"==a&&d.set("max",e.max,c)),d)},c.prototype.get=function(a){return this.item[a]},c.prototype.create=function(a,c,f){var i=this;return c=void 0===c?a:c,h.isDate(c)&&(c=[c.getHours(),c.getMinutes()]),b.isPlainObject(c)&&h.isInteger(c.pick)?c=c.pick:b.isArray(c)?c=+c[0]*e+ +c[1]:h.isInteger(c)||(c=i.now(a,c,f)),"max"==a&&c<i.item.min.pick&&(c+=g),"min"!=a&&"max"!=a&&(c-i.item.min.pick)%i.item.interval!=0&&(c+=i.item.interval),c=i.normalize(a,c,f),{hour:~~(d+c/e)%d,mins:(e+c%e)%e,time:(g+c)%g,pick:c%g}},c.prototype.createRange=function(a,c){var d=this,e=function(a){return!0===a||b.isArray(a)||h.isDate(a)?d.create(a):a};return h.isInteger(a)||(a=e(a)),h.isInteger(c)||(c=e(c)),h.isInteger(a)&&b.isPlainObject(c)?a=[c.hour,c.mins+a*d.settings.interval]:h.isInteger(c)&&b.isPlainObject(a)&&(c=[a.hour,a.mins+c*d.settings.interval]),{from:e(a),to:e(c)}},c.prototype.withinRange=function(a,b){return a=this.createRange(a.from,a.to),b.pick>=a.from.pick&&b.pick<=a.to.pick},c.prototype.overlapRanges=function(a,b){var c=this;return a=c.createRange(a.from,a.to),b=c.createRange(b.from,b.to),c.withinRange(a,b.from)||c.withinRange(a,b.to)||c.withinRange(b,a.from)||c.withinRange(b,a.to)},c.prototype.now=function(a,b){var c,d=this.item.interval,f=new Date,g=f.getHours()*e+f.getMinutes(),i=h.isInteger(b);return g-=g%d,c=b<0&&d*b+g<=-d,g+="min"==a&&c?0:d,i&&(g+=d*(c&&"max"!=a?b+1:b)),g},c.prototype.normalize=function(a,b){var c=this.item.interval,d=this.item.min&&this.item.min.pick||0;return b-="min"==a?0:(b-d)%c},c.prototype.measure=function(a,c,f){var g=this;return c||(c="min"==a?[0,0]:[d-1,e-1]),"string"==typeof c?c=g.parse(a,c):!0===c||h.isInteger(c)?c=g.now(a,c,f):b.isPlainObject(c)&&h.isInteger(c.pick)&&(c=g.normalize(a,c.pick,f)),c},c.prototype.validate=function(a,b,c){var d=this,e=c&&c.interval?c.interval:d.item.interval;return d.disabled(b)&&(b=d.shift(b,e)),b=d.scope(b),d.disabled(b)&&(b=d.shift(b,-1*e)),b},c.prototype.disabled=function(a){var c=this,d=c.item.disable.filter(function(d){return h.isInteger(d)?a.hour==d:b.isArray(d)||h.isDate(d)?a.pick==c.create(d).pick:b.isPlainObject(d)?c.withinRange(d,a):void 0});return d=d.length&&!d.filter(function(a){return b.isArray(a)&&"inverted"==a[2]||b.isPlainObject(a)&&a.inverted}).length,-1===c.item.enable?!d:d||a.pick<c.item.min.pick||a.pick>c.item.max.pick},c.prototype.shift=function(a,b){var c=this,d=c.item.min.pick,e=c.item.max.pick;for(b=b||c.item.interval;c.disabled(a)&&(a=c.create(a.pick+=b),!(a.pick<=d||a.pick>=e)););return a},c.prototype.scope=function(a){var b=this.item.min.pick,c=this.item.max.pick;return this.create(a.pick>c?c:a.pick<b?b:a)},c.prototype.parse=function(a,b,c){var d,f,g,i,j,k=this,l={};if(!b||"string"!=typeof b)return b;c&&c.format||(c=c||{},c.format=k.settings.format),k.formats.toArray(c.format).map(function(a){var c,d=k.formats[a],e=d?h.trigger(d,k,[b,l]):a.replace(/^!/,"").length;d&&(c=b.substr(0,e),l[a]=c.match(/^\d+$/)?+c:c),b=b.substr(e)});for(i in l)j=l[i],h.isInteger(j)?i.match(/^(h|hh)$/i)?(d=j,"h"!=i&&"hh"!=i||(d%=12)):"i"==i&&(f=j):i.match(/^a$/i)&&j.match(/^p/i)&&("h"in l||"hh"in l)&&(g=!0);return(g?d+12:d)*e+f},c.prototype.formats={h:function(a,b){return a?h.digits(a):b.hour%f||f},hh:function(a,b){return a?2:h.lead(b.hour%f||f)},H:function(a,b){return a?h.digits(a):""+b.hour%24},HH:function(a,b){return a?h.digits(a):h.lead(b.hour%24)},i:function(a,b){return a?2:h.lead(b.mins)},a:function(a,b){return a?4:g/2>b.time%g?"a.m.":"p.m."},A:function(a,b){return a?2:g/2>b.time%g?"AM":"PM"},toArray:function(a){return a.split(/(h{1,2}|H{1,2}|i|a|A|!.)/g)},toString:function(a,b){var c=this;return c.formats.toArray(a).map(function(a){return h.trigger(c.formats[a],c,[0,b])||a.replace(/^!/,"")}).join("")}},c.prototype.isTimeExact=function(a,c){var d=this;return h.isInteger(a)&&h.isInteger(c)||"boolean"==typeof a&&"boolean"==typeof c?a===c:(h.isDate(a)||b.isArray(a))&&(h.isDate(c)||b.isArray(c))?d.create(a).pick===d.create(c).pick:!(!b.isPlainObject(a)||!b.isPlainObject(c))&&(d.isTimeExact(a.from,c.from)&&d.isTimeExact(a.to,c.to))},c.prototype.isTimeOverlap=function(a,c){var d=this;return h.isInteger(a)&&(h.isDate(c)||b.isArray(c))?a===d.create(c).hour:h.isInteger(c)&&(h.isDate(a)||b.isArray(a))?c===d.create(a).hour:!(!b.isPlainObject(a)||!b.isPlainObject(c))&&d.overlapRanges(a,c)},c.prototype.flipEnable=function(a){var b=this.item;b.enable=a||(-1==b.enable?1:-1)},c.prototype.deactivate=function(a,c){var d=this,e=d.item.disable.slice(0);return"flip"==c?d.flipEnable():!1===c?(d.flipEnable(1),e=[]):!0===c?(d.flipEnable(-1),e=[]):c.map(function(a){for(var c,f=0;f<e.length;f+=1)if(d.isTimeExact(a,e[f])){c=!0;break}c||(h.isInteger(a)||h.isDate(a)||b.isArray(a)||b.isPlainObject(a)&&a.from&&a.to)&&e.push(a)}),e},c.prototype.activate=function(a,c){var d=this,e=d.item.disable,f=e.length;return"flip"==c?d.flipEnable():!0===c?(d.flipEnable(1),e=[]):!1===c?(d.flipEnable(-1),e=[]):c.map(function(a){var c,g,i,j;for(i=0;i<f;i+=1){if(g=e[i],d.isTimeExact(g,a)){c=e[i]=null,j=!0;break}if(d.isTimeOverlap(g,a)){b.isPlainObject(a)?(a.inverted=!0,c=a):b.isArray(a)?(c=a,c[2]||c.push("inverted")):h.isDate(a)&&(c=[a.getFullYear(),a.getMonth(),a.getDate(),"inverted"]);break}}if(c)for(i=0;i<f;i+=1)if(d.isTimeExact(e[i],a)){e[i]=null;break}if(j)for(i=0;i<f;i+=1)if(d.isTimeOverlap(e[i],a)){e[i]=null;break}c&&e.push(c)}),e.filter(function(a){return null!=a})},c.prototype.i=function(a,b){return h.isInteger(b)&&b>0?b:this.item.interval},c.prototype.nodes=function(a){var b=this,c=b.settings,d=b.item.select,e=b.item.highlight,f=b.item.view,g=b.item.disable;return h.node("ul",h.group({min:b.item.min.pick,max:b.item.max.pick,i:b.item.interval,node:"li",item:function(a){a=b.create(a);var i=a.pick,j=d&&d.pick==i,k=e&&e.pick==i,l=g&&b.disabled(a),m=h.trigger(b.formats.toString,b,[c.format,a]);return[h.trigger(b.formats.toString,b,[h.trigger(c.formatLabel,b,[a])||c.format,a]),function(a){return j&&a.push(c.klass.selected),k&&a.push(c.klass.highlighted),f&&f.pick==i&&a.push(c.klass.viewset),l&&a.push(c.klass.disabled),a.join(" ")}([c.klass.listItem]),"data-pick="+a.pick+" "+h.ariaAttr({role:"option",label:m,selected:!(!j||b.$node.val()!==m)||null,activedescendant:!!k||null,disabled:!!l||null})]}})+h.node("li",h.node("button",c.clear,c.klass.buttonClear,"type=button data-clear=1"+(a?"":" disabled")+" "+h.ariaAttr({controls:b.$node[0].id})),"",h.ariaAttr({role:"presentation"})),c.klass.list,h.ariaAttr({role:"listbox",controls:b.$node[0].id}))},c.defaults=function(a){return{clear:"Clear",format:"h:i A",interval:30,closeOnSelect:!0,closeOnClear:!0,updateInput:!0,klass:{picker:a+" "+a+"--time",holder:a+"__holder",list:a+"__list",listItem:a+"__list-item",disabled:a+"__list-item--disabled",selected:a+"__list-item--selected",highlighted:a+"__list-item--highlighted",viewset:a+"__list-item--viewset",now:a+"__list-item--now",buttonClear:a+"__button--clear"}}}(a.klasses().picker),a.extend("pickatime",c)});
[].map||(Array.prototype.map=function(a,b){for(var c=this,d=c.length,e=new Array(d),f=0;f<d;f++)f in c&&(e[f]=a.call(b,c[f],f,c));return e}),[].filter||(Array.prototype.filter=function(a){if(null==this)throw new TypeError;var b=Object(this),c=b.length>>>0;if("function"!=typeof a)throw new TypeError;for(var d=[],e=arguments[1],f=0;f<c;f++)if(f in b){var g=b[f];a.call(e,g,f,b)&&d.push(g)}return d}),[].indexOf||(Array.prototype.indexOf=function(a){if(null==this)throw new TypeError;var b=Object(this),c=b.length>>>0;if(0===c)return-1;var d=0;if(arguments.length>1&&(d=Number(arguments[1]),d!=d?d=0:0!==d&&d!=1/0&&d!=-1/0&&(d=(d>0||-1)*Math.floor(Math.abs(d)))),d>=c)return-1;for(var e=d>=0?d:Math.max(c-Math.abs(d),0);e<c;e++)if(e in b&&b[e]===a)return e;return-1});
var nativeSplit=String.prototype.split,compliantExecNpcg=void 0===/()??/.exec("")[1];String.prototype.split=function(a,b){var c=this;if("[object RegExp]"!==Object.prototype.toString.call(a))return nativeSplit.call(c,a,b);var d,e,f,g,h=[],i=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.extended?"x":"")+(a.sticky?"y":""),j=0;for(a=new RegExp(a.source,i+"g"),c+="",compliantExecNpcg||(d=new RegExp("^"+a.source+"$(?!\\s)",i)),b=void 0===b?-1>>>0:b>>>0;(e=a.exec(c))&&!((f=e.index+e[0].length)>j&&(h.push(c.slice(j,e.index)),!compliantExecNpcg&&e.length>1&&e[0].replace(d,function(){for(var a=1;a<arguments.length-2;a++)void 0===arguments[a]&&(e[a]=void 0)}),e.length>1&&e.index<c.length&&Array.prototype.push.apply(h,e.slice(1)),g=e[0].length,j=f,h.length>=b));)a.lastIndex===e.index&&a.lastIndex++;return j===c.length?!g&&a.test("")||h.push(""):h.push(c.slice(j)),h.length>b?h.slice(0,b):h};
jQuery.extend(jQuery.fn.pickadate.defaults,{monthsFull:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthsShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],weekdaysFull:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],weekdaysShort:["ne","po","út","st","čt","pá","so"],today:"dnes",clear:"vymazat",firstDay:1,format:"d. mmmm yyyy",formatSubmit:"yyyy/mm/dd",close:"zavřít"}),jQuery.extend(jQuery.fn.pickatime.defaults,{clear:"vymazat"});
var rtb_booking_form=rtb_booking_form||{};
jQuery(document).ready(function ($){
rtb_booking_form.init=function(){
if($('.rtb-booking-form .rtb-error').length){
$('html, body').animate({
scrollTop: $('.rtb-booking-form .rtb-error').first().offset().top + -40
}, 500);
}
$('.rtb-booking-form .add-message a').click(function(){
$(this).hide();
$(this).parent().siblings('.message').addClass('message-open')
.find('label').focus();
return false;
});
if($.trim($('.rtb-booking-form .message textarea').val())){
$('.rtb-booking-form .add-message a').trigger('click');
}
$('.rtb-booking-form form').submit(function(){
$(this).find('button[type="submit"]').prop('disabled', 'disabled');
return true;
});
$('.rtb-booking-form form button[type="submit"]').on('click', function(){
$('.rtb-booking-form form input[required]:checkbox').each(function(){
var checkbox_name=$(this).attr('name');
var checkbox_group=$('.rtb-booking-form form input[name="' + checkbox_name + '"]');
if(checkbox_group.is(':checked')){
checkbox_group.prop('required', false);
}});
});
if(typeof rtb_pickadate!=='undefined'){
rtb_pickadate.init_complete=false;
var $date_input=$('#rtb-date');
if($date_input.length){
var date_input=$date_input.pickadate({
format: rtb_pickadate.date_format,
formatSubmit: 'yyyy/mm/dd',
hiddenName: true,
min: !rtb_pickadate.allow_past,
container: 'body',
firstDay: rtb_pickadate.first_day,
today: rtb_pickadate.date_today_label,
clear: rtb_pickadate.date_clear_label,
close: rtb_pickadate.date_close_label,
onStart: function(){
if(rtb_pickadate.early_bookings!==''){
this.set('max', parseInt(rtb_pickadate.early_bookings, 10));
}
if($date_input.val()!==''){
var date=new Date($date_input.val());
if(Object.prototype.toString.call(date)==="[object Date]"){
this.set('select', date);
}}
else if(jQuery('.rtb-selected-date').length){
var date=new Date(jQuery('.rtb-selected-date').val());
if(Object.prototype.toString.call(date)==="[object Date]"){
this.set('select', date);
}}
}});
rtb_booking_form.datepicker=date_input.pickadate('picker');
}
var $time_input=$('#rtb-time');
if($time_input.length){
var time_input=$time_input.pickatime({
format: rtb_pickadate.time_format,
formatSubmit: 'h:i A',
hiddenName: true,
interval: parseInt(rtb_pickadate.time_interval, 10),
container: 'body',
clear: rtb_pickadate.time_clear_label,
onStart: function(){
if($time_input.val()!==''){
var today=new Date();
var today_date=today.getFullYear() + '/' +(today.getMonth() + 1) + '/' + today.getDate();
var time=new Date(today_date + ' ' + $time_input.val());
if(Object.prototype.toString.call(time)==="[object Date]"){
this.set('select', time);
}}
}});
rtb_booking_form.timepicker=time_input.pickatime('picker');
}
if(rtb_booking_form.datepicker===null||typeof rtb_booking_form.datepicker=='undefined'){
return;
}
rtb_booking_form.update_disabled_dates();
if(typeof rtb_pickadate.late_bookings==='string'){
if(rtb_pickadate.late_bookings=='same_day'){
rtb_booking_form.datepicker.set('min', 1);
}else if(rtb_pickadate.late_bookings!==''){
rtb_pickadate.late_bookings=parseInt(rtb_pickadate.late_bookings, 10);
if(rtb_pickadate.late_bookings % 1===0&&rtb_pickadate.late_bookings >=1440){
var min=Math.floor(rtb_pickadate.late_bookings / 1440);
rtb_booking_form.datepicker.set('min', min);
}}
}
if($date_input.val()===''&&!$('.rtb-booking-form .date .rtb-error').length){
if(rtb_pickadate.date_onload=='soonest'){
rtb_booking_form.datepicker.set('select', new Date());
}else if(rtb_pickadate.date_onload!=='empty'){
var dateToVerify=rtb_booking_form.datepicker.component.create(new Date());
var isDisabled=rtb_booking_form.datepicker.component.disabled(dateToVerify);
if(!isDisabled){
rtb_booking_form.datepicker.set('select', dateToVerify);
}}
}
if(rtb_booking_form.timepicker===null||typeof rtb_booking_form.timepicker=='undefined'){
return;
}
rtb_booking_form.update_timepicker_range();
rtb_booking_form.datepicker.on({
open: function (){
rtb_booking_form.before_change_value=rtb_booking_form.datepicker.get();
},
close: function(){
rtb_booking_form.after_change_value=rtb_booking_form.datepicker.get();
if(rtb_booking_form.before_change_value!=rtb_booking_form.after_change_value){
rtb_booking_form.timepicker.clear();
}
rtb_booking_form.update_timepicker_range();
rtb_booking_form.update_party_size_select();
rtb_booking_form.update_possible_tables();
}});
rtb_booking_form.timepicker.on({
close: function(){
rtb_booking_form.update_party_size_select();
rtb_booking_form.update_possible_tables();
}});
$('#rtb-party').on('change', function(){
rtb_booking_form.update_possible_tables();
});
$('#rtb-location').on('change', function(){
if(! rtb_pickadate.multiple_locations_enabled){ return; }
rtb_booking_form.timepicker.clear();
rtb_booking_form.datepicker.clear();
rtb_booking_form.update_base_data_for_selected_location();
rtb_booking_form.update_datepicker();
rtb_booking_form.update_timepicker_range();
rtb_booking_form.update_party_size_select();
rtb_booking_form.update_possible_tables();
});
if('rtb-bookings'!=(new URL(window.location.href)).searchParams.get('page')){ rtb_booking_form.update_possible_tables(); }}
};
rtb_booking_form.update_base_data_for_selected_location=function (){
const selected_location=jQuery('#rtb-location').length ? jQuery('#rtb-location').val():'';
if(''==selected_location){
return Object.assign(rtb_pickadate, rtb_location_data.global);
}
return Object.assign(rtb_pickadate, rtb_location_data[selected_location]);
}
rtb_booking_form.update_datepicker=function (){
rtb_booking_form.datepicker.set('enable', false);
rtb_booking_form.datepicker.set('disable', false);
rtb_booking_form.update_disabled_dates();
}
rtb_booking_form.update_disabled_dates=function(){
if(rtb_booking_form_js_localize.admin_ignore_schedule&&rtb_booking_form_js_localize.is_admin){
rtb_booking_form.datepicker.set('enable', true);
return;
}
if(rtb_pickadate.disable_dates.length){
var disable_dates=jQuery.extend(true, [], rtb_pickadate.disable_dates);
if(typeof rtb_booking_form.datepicker.component.settings.firstDay=='number'){
var weekday_num=0;
for(var disable_key in rtb_pickadate.disable_dates){
if(typeof rtb_pickadate.disable_dates[disable_key]=='number'){
weekday_num=rtb_pickadate.disable_dates[disable_key] - rtb_booking_form.datepicker.component.settings.firstDay;
if(weekday_num < 1){
weekday_num=7;
}
disable_dates[disable_key]=weekday_num;
}}
}
rtb_booking_form.datepicker.set('disable', disable_dates);
}}
rtb_booking_form.update_timepicker_range=function(){
rtb_booking_form.timepicker.set('enable', false);
rtb_booking_form.timepicker.set('disable', false);
if(rtb_booking_form_js_localize.admin_ignore_schedule&&rtb_booking_form_js_localize.is_admin){
rtb_booking_form.timepicker.set('enable', true);
return;
}
if(rtb_booking_form.datepicker.get()===''){
rtb_booking_form.timepicker.set('disable', true);
return;
}
var selected_date=new Date(rtb_booking_form.datepicker.get('select', 'yyyy/mm/dd')),
selected_date_year=selected_date.getFullYear(),
selected_date_month=selected_date.getMonth(),
selected_date_date=selected_date.getDate(),
current_date=new Date();
selected_date.setHours(0, 0, 0), selected_date.setMilliseconds(100);
var valid_times=[ rtb_booking_form.get_outer_time_range() ];
if(rtb_pickadate.enable_max_reservations||rtb_pickadate.multiple_locations_enabled){
selected_location=jQuery('#rtb-location').length ? jQuery('#rtb-location').val():'';
let hidden_location=jQuery('.rtb-booking-form-form input[name="rtb-location"]');
if(''==selected_location&&hidden_location.length){
selected_location=hidden_location.val();
}
selected_date_month=('0' + (selected_date_month + 1)).slice(-2);
selected_date_date=('0' + selected_date_date).slice(-2);
var params={};
params.action='rtb_get_available_time_slots';
params.nonce=rtb_booking_form_js_localize.nonce;
params.year=selected_date_year;
params.month=selected_date_month;
params.day=selected_date_date;
params.location=selected_location;
var data=jQuery.param(params);
jQuery.post(ajaxurl, data, function(response){
if(rtb_pickadate.init_complete){
clearPrevFieldError('date');
clearPrevFieldError('time');
}
if(! response){
clearPrevFieldError('date');
displayFieldError('date', rtb_booking_form_js_localize.error['smthng-wrng-cntct-us']);
rtb_booking_form.timepicker.set('disable', true);
return;
}
var additional_valid_times=jQuery.parseJSON(response);
let outer_range=valid_times[0];
if(additional_valid_times.length==1
&& additional_valid_times[0].from[0]==outer_range.from[0]
&& additional_valid_times[0].from[1]==outer_range.from[1]
&& additional_valid_times[0].to[0]==outer_range.to[0]
&& additional_valid_times[0].to[1]==outer_range.to[1]){
var all_valid_times=[ additional_valid_times[0] ];
}else{
var all_valid_times=valid_times.concat(additional_valid_times);
}
if(!Array.isArray(additional_valid_times)||1 > additional_valid_times.length){
clearPrevFieldError('time');
displayFieldError('time', rtb_booking_form_js_localize.error['no-slots-available']);
}
jQuery(all_valid_times).each(function(index, valid_time){
valid_time.to=rtb_booking_form.get_latest_viable_time(parseInt(valid_time.to[0]), parseInt(valid_time.to[1]));
});
rtb_booking_form.timepicker.set('disable', all_valid_times);
rtb_pickadate.init_complete=true;
})
.fail(function(args){
clearPrevFieldError('date');
displayFieldError('date', rtb_booking_form_js_localize.error['smthng-wrng-cntct-us']);
rtb_booking_form.timepicker.set('disable', true);
return;
});
}else{
if(typeof rtb_pickadate.schedule_closed!=='undefined'){
var excp_date=[];
var excp_start_date=[];
var excp_start_time=[];
var excp_end_date=[];
var excp_end_time=[];
for(var closed_key in rtb_pickadate.schedule_closed){
let rule=rtb_pickadate.schedule_closed[closed_key];
if(rule.hasOwnProperty('date_range')){
let start=''!=rule.date_range.start ? new Date(rule.date_range.start):new Date();
start.setHours(0, 0, 0), start.setMilliseconds(0);
start=start.getTime();
let end=''!=rule.date_range.end ? new Date(rule.date_range.end):9999999999999;
'number'!=typeof end&&end.setHours(23, 59, 58)&&end.setMilliseconds(0);
end='number'!=typeof end ? end.getTime():end;
if(start < selected_date.getTime()&&selected_date.getTime() < end){
excp_date=selected_date;
}else{
excp_date=new Date(selected_date.getTime());
excp_date.setDate(selected_date_year + 1);
}}else{
excp_date=new Date(rule.date);
}
if(excp_date.getFullYear()==selected_date_year &&
excp_date.getMonth()==selected_date_month &&
excp_date.getDate()==selected_date_date
){
if(typeof rtb_pickadate.schedule_closed[closed_key].time=='undefined'){
rtb_booking_form.timepicker.set('disable', [ true ]);
return;
}
if(typeof rtb_pickadate.schedule_closed[closed_key].time.start!=='undefined'){
excp_start_date=new Date('1 January 2000 ' + rtb_pickadate.schedule_closed[closed_key].time.start);
excp_start_time=[ excp_start_date.getHours(), excp_start_date.getMinutes() ];
}else{
excp_start_time=[ 0, 0 ];
}
if(typeof rtb_pickadate.schedule_closed[closed_key].time.end!=='undefined'){
excp_end_date=new Date('1 January 2000 ' + rtb_pickadate.schedule_closed[closed_key].time.end);
excp_end_time=[ excp_end_date.getHours(), excp_end_date.getMinutes() ];
}else{
excp_end_time=[ 24, 0 ];
}
excp_start_time=rtb_booking_form.get_earliest_time(excp_start_time, selected_date, current_date);
valid_times.push({ from: excp_start_time, to: excp_end_time, inverted: true });
}}
excp_date=excp_start_date=excp_start_time=excp_end_date=excp_end_time=null;
if(valid_times.length > 1){
rtb_booking_form.timepicker.set('disable', valid_times);
return;
}}
if(typeof rtb_pickadate.schedule_open!='undefined'){
var selected_date_weekday=selected_date.getDay();
var weekdays={
sunday: 0,
monday: 1,
tuesday: 2,
wednesday: 3,
thursday: 4,
friday: 5,
saturday: 6,
};
var rule_start_date=[];
var rule_start_time=[];
var rule_end_date=[];
var rule_end_time=[];
for(var open_key in rtb_pickadate.schedule_open){
if(typeof rtb_pickadate.schedule_open[open_key].weekdays!=='undefined'){
for(var weekdays_key in rtb_pickadate.schedule_open[open_key].weekdays){
if(weekdays[weekdays_key]==selected_date_weekday){
if(typeof rtb_pickadate.schedule_open[open_key].time=='undefined'){
rtb_booking_form.timepicker.set('disable', [ true ]);
return;
}
if(typeof rtb_pickadate.schedule_open[open_key].time.start!=='undefined'){
rule_start_date=new Date('1 January 2000 ' + rtb_pickadate.schedule_open[open_key].time.start);
rule_start_time=[ rule_start_date.getHours(), rule_start_date.getMinutes() ];
}else{
rule_start_time=[ 0, 0 ];
}
if(typeof rtb_pickadate.schedule_open[open_key].time.end!=='undefined'){
rule_end_date=new Date('1 January 2000 ' + rtb_pickadate.schedule_open[open_key].time.end);
rule_end_time=rtb_booking_form.get_latest_viable_time(rule_end_date.getHours(), rule_end_date.getMinutes());
}else{
rule_end_time=[ 24, 0 ];
}
rule_start_time=rtb_booking_form.get_earliest_time(rule_start_time, selected_date, current_date);
valid_times.push({ from: rule_start_time, to: rule_end_time, inverted: true });
}}
}}
rule_start_date=rule_start_time=rule_end_date=rule_end_time=null;
if(valid_times.length > 1){
rtb_booking_form.timepicker.set('disable', valid_times);
return;
}}
rtb_booking_form.timepicker.set('enable', true);
rtb_booking_form.timepicker.set('disable', false);
}
return;
};
rtb_booking_form.get_outer_time_range=function(){
var interval=rtb_booking_form.timepicker.get('interval');
var hour=0;
var minutes=0;
while(( hour +(minutes / 60) +(interval / 60)) < 24){
hour +=Math.floor(( minutes + interval) / 60);
minutes=(minutes + interval) % 60;
}
return { from: [0, 0], to: [ hour, minutes ] };};
rtb_booking_form.get_latest_viable_time=function(hour, minute){
var interval=rtb_booking_form.timepicker.get('interval');
var outer_time_range=this.get_outer_time_range();
if(interval > 60){
var last_hour=0;
var last_minute=0;
var last_time_minutes=0;
var end_time_minutes=60 * hour + minute;
while(( last_time_minutes + interval) <=end_time_minutes){
var remainder=interval + last_minute;
while(remainder >=60){
last_hour++;
remainder -=60;
}
last_minute=remainder;
last_time_minutes=60 * last_hour + last_minute;
}
var long_interval_viable_time=[ last_hour, last_minute ];
}
if(interval > 60){
return long_interval_viable_time;
}
else if(hour > outer_time_range.to[0]&&minute > outer_time_range.to[1]){
return [ outer_time_range.to[0], outer_time_range.to[1] ];
}else{
return [ hour, minute ];
}};
rtb_booking_form.get_earliest_time=function(start_time, selected_date, current_date){
if(selected_date.toDateString()!==current_date.toDateString()){
return start_time;
}
var start_minutes=(start_time[0] * 60) + start_time[1],
current_minutes=(current_date.getHours() * 60) + current_date.getMinutes(),
late_booking_minutes;
start_minutes=start_minutes > current_minutes ? start_minutes:current_minutes;
if(typeof rtb_pickadate.late_bookings==='number'&&rtb_pickadate.late_bookings % 1===0){
late_booking_minutes=current_minutes + rtb_pickadate.late_bookings;
if(late_booking_minutes > start_minutes){
start_minutes=late_booking_minutes;
}}
start_time=[ Math.floor(start_minutes / 60), start_minutes % 60 ];
return start_time;
};
rtb_booking_form.update_party_size_select=function(){
if(( rtb_pickadate.enable_max_reservations&&(rtb_pickadate.max_people||rtb_pickadate.multiple_locations_enabled)) ||
(rtb_pickadate.location_timeslot_party_rules)){
var partySelect=$('#rtb-party'),
selected_location=jQuery('#rtb-location').length ? jQuery('#rtb-location').val():'',
selected_date=new Date(rtb_booking_form.datepicker.get('select', 'yyyy/mm/dd')),
selected_date_year=selected_date.getFullYear(),
selected_date_month=selected_date.getMonth(),
selected_date_date=selected_date.getDate(),
selected_time=rtb_booking_form.timepicker.get('value');
if(! selected_time){ return; }
selected_date_month=('0' + (selected_date_month + 1)).slice(-2);
selected_date_date=('0' + selected_date_date).slice(-2);
partySelect.prop("selectedIndex", 0).change();
var params={};
params.action='rtb_get_available_party_size';
params.nonce=rtb_booking_form_js_localize.nonce;
params.year=selected_date_year;
params.month=selected_date_month;
params.day=selected_date_date;
params.time=selected_time;
params.location=selected_location;
var data=jQuery.param(params);
jQuery.post(ajaxurl, data, function(response){ console.log(response);
if(! response){
return;
}
response=jQuery.parseJSON(response);
var min_party_size=response.min_party_size;
var available_spots=response.available_spots;
partySelect.prop('disabled', false);
if(rtb_booking_form_js_localize.is_admin&&rtb_booking_form_js_localize.admin_ignore_maximums){
partySelect.find('> option').prop('disabled', false);
}else{
partySelect.find('> option').each(function(){
var that=$(this);
if(this.value > available_spots||this.value < min_party_size){
that.prop('disabled', true);
}else{
that.prop('disabled', false);
}});
}});
}}
rtb_booking_form.update_possible_tables=function(){
if(rtb_pickadate.enable_tables){
var table_select=$('#rtb-table'),
party=$('#rtb-party').val(),
selected_location=jQuery('#rtb-location').length ? jQuery('#rtb-location').val():'',
selected_date=new Date(rtb_booking_form.datepicker.get('select', 'yyyy/mm/dd')),
selected_date_year=selected_date.getFullYear(),
selected_date_month=selected_date.getMonth(),
selected_date_date=selected_date.getDate(),
selected_time=rtb_booking_form.timepicker.get('value');
let hidden_location=jQuery('.rtb-booking-form-form input[name="rtb-location"]');
if(''==selected_location&&hidden_location.length){
selected_location=hidden_location.val();
}
if(! selected_time||! party||party==0){ return; }
selected_date_month=('0' + (selected_date_month + 1)).slice(-2);
selected_date_date=('0' + selected_date_date).slice(-2);
table_select.prop('disabled', true);
table_select.prop("selectedIndex", 0).change();
var booking_id=$('.rtb-booking-form form input[name="ID"]').length ? $('.rtb-booking-form form input[name="ID"]').val():0;
var params={};
params.action='rtb_get_available_tables';
params.nonce=rtb_booking_form_js_localize.nonce;
params.year=selected_date_year;
params.month=selected_date_month;
params.day=selected_date_date;
params.time=selected_time;
params.party=party;
params.booking_id=booking_id
params.location_id=selected_location;
var data=jQuery.param(params);
jQuery.post(ajaxurl, data, function(response){
if(! response){ return; }
table_select.find('> option').remove();
table_select.prop('disabled', false);
response=jQuery.parseJSON(response);
var available_tables=response.available_tables;
if(1 > available_tables.length){
displayFieldError('table', rtb_booking_form_js_localize.error['no-table-available']);
}else{
clearPrevFieldError('table');
}
if(rtb_booking_form_js_localize.is_admin){
table_select.append('<option></option>');
}
jQuery.each(available_tables, function(index, element){
table_select.append('<option value="' + index + '">' + element + '</option>');
});
if(response.selected_table!=-1){
table_select.val(response.selected_table);
}
else if(''!=table_select.data('selected')){
table_select.val(table_select.data('selected'));
}});
}}
rtb_booking_form.init();
});
jQuery(document).ready(function(){
jQuery('.rtb-pattern-modify-booking .rtb-modification-form').removeClass('rtb-hidden');
jQuery('.rtb-pattern-modify-booking .rtb-booking-form-form').addClass('rtb-hidden');
jQuery('.rtb-pattern-modify-booking .rtb-modification-toggle').html(rtb_booking_form_js_localize.make);
jQuery('.rtb-modification-toggle').on('click', function(){
jQuery('.rtb-modification-form, .rtb-booking-form-form').toggleClass('rtb-hidden');
if(jQuery('.rtb-modification-form').hasClass('rtb-hidden')){
jQuery('.rtb-modification-toggle').html(rtb_booking_form_js_localize.want_to_modify);
}else{
jQuery('.rtb-modification-toggle').html(rtb_booking_form_js_localize.make);
}});
var modify_booking=function(ev){
var booking_email=jQuery('input[name="rtb_modification_email"]').val();
var booking_code=jQuery('input[name="rtb_modification_code"]').val();
var params={};
params.action='rtb_find_reservations';
params.nonce=rtb_booking_form_js_localize.nonce;
params.booking_email=booking_email;
params.booking_code=booking_code;
var data=jQuery.param(params);
jQuery.post(ajaxurl, data, function(response){
if(response.success){
var booking_html='';
var guest_txt='';
var pay_btn='';
jQuery(response.data.bookings).each(function(index, val){
pay_btn='';
guest_txt=val.party > 1 ? rtb_booking_form_js_localize.guests:rtb_booking_form_js_localize.guest;
if('payment_pending'==val.status||'payment_failed'==val.status){
pay_btn=`
<div class="rtb-deposit-booking" data-bookingid="${val.ID}" data-bookingemail="${val.email}" data-bookingcode="${val.code}">
${rtb_booking_form_js_localize.deposit}
</div>
`;
}
booking_html +='<div class="rtb-cancel-booking-div">';
if(val.datetime_u >(Date.now() / 1000) + rtb_booking_form_js_localize.cancellation_cutoff * 60){
booking_html +=`
<div class="rtb-cancel-booking" data-bookingid="${val.ID}" data-bookingemail="${val.email}" data-bookingcode="${val.code}">
${rtb_booking_form_js_localize.cancel}
</div>
`;
}
booking_html +=`
${pay_btn}
<div class="rtb-booking-information">${val.datetime} - ${val.party} ${guest_txt} (${val.status_lbl})</div>
</div>
`;
});
jQuery('.rtb-bookings-results').html(booking_html);
cancellationHandler();
delayedPaymentHandler();
}else{jQuery('.rtb-bookings-results').html(response.data.msg);}});
};
jQuery(document).on('click', '.rtb-find-reservation-button', modify_booking);
jQuery(document).on('keypress', '.rtb-modification-form input', function (ev){
if(13==ev.which){
ev.preventDefault();
modify_booking(ev);
}});
});
function cancellationHandler(){
jQuery('.rtb-cancel-booking:not(.cancelled)').off('click');
jQuery('.rtb-cancel-booking:not(.cancelled)').on('click', function(){
var btn=jQuery(this);
if(btn.hasClass('processing')){
return;
}
btn.addClass('processing');
var booking_id=btn.data('bookingid');
var booking_email=btn.data('bookingemail');
var booking_code=btn.data('bookingcode');
var params={};
params.action='rtb_cancel_reservations';
params.nonce=rtb_booking_form_js_localize.nonce;
params.booking_id=booking_id;
params.booking_email=booking_email;
params.booking_code=booking_code;
var data=jQuery.param(params);
jQuery.post(ajaxurl, data, function(response){
if(response.success){
if(response.data.hasOwnProperty('cancelled_redirect')){
window.location.href=response.data.cancelled_redirect;
}else{
btn.off('click');
btn.addClass('cancelled');
btn.text(rtb_booking_form_js_localize.cancelled);
}}else{
btn.parent().after(`<p class="alert error">${response.data.msg}</p>`);
}
btn.removeClass('processing');
});
});
}
function delayedPaymentHandler(){
jQuery('.rtb-deposit-booking').off('click');
jQuery('.rtb-deposit-booking').on('click', function(){
var btn=jQuery(this);
if(btn.hasClass('processing')){
return;
}
btn.addClass('processing');
var booking_id=btn.data('bookingid');
var booking_email=btn.data('bookingemail');
var data={
'booking_id': booking_id,
'booking_email': booking_email,
'payment': 'rtb-delayed-deposit'
};
let current_loc=window.location;
let params=new URLSearchParams();
Object.keys(data).map(function(param){ params.append(param, data[ param ]) });
window.location=current_loc.origin + current_loc.pathname + '?' + params.toString();
});
}
function displayFieldError(field, message){
const fieldSelector='.'+field;
var fieldElm=jQuery('form.rtb-booking-form-form '+fieldSelector);
if(fieldElm.length){
clearPrevFieldError(field);
fieldElm.prepend(`
<div class="rtb-error">${message}</div>
`);
}}
function clearPrevFieldError(field){
if(field_has_error(field)){
get_field_with_error(field).each((idx, x)=> x.remove());
}}
function field_has_error(field){
return get_field_with_error(field).length;
}
function get_field_with_error(field){
const fieldSelector='.'+field;
var errorElms=jQuery('form.rtb-booking-form-form ' + fieldSelector + ' .rtb-error');
return errorElms;
}
jQuery(document).ready(function ($){
jQuery('.rtb-view-bookings-form-date-selector').on('change', function(){
window.location.href=replaceUrlParam(window.location.href, 'date', jQuery(this).val());
});
jQuery('.rtb-view-bookings-form-location-selector').on('change', function(){
window.location.href=replaceUrlParam(window.location.href, 'booking_location', jQuery(this).val());
});
jQuery('.rtb-edit-view-booking').on('click', function(){
jQuery('.rtb-view-bookings-form-confirmation-div, .rtb-view-bookings-form-confirmation-background-div').removeClass('rtb-hidden');
jQuery('.rtb-view-bookings-form-confirmation-div').data('bookingid', jQuery(this).data('bookingid'));
jQuery(this).prop('checked', false);
});
jQuery('.rtb-view-bookings-form-confirmation-accept').on('click', function(){
var booking_id=jQuery('.rtb-view-bookings-form-confirmation-div').data('bookingid');
var params={};
params.action='rtb_set_reservation_arrived';
params.nonce=rtb_booking_form_js_localize.nonce;
params.booking={
'ID':	booking_id
};
var data=$.param(params);
jQuery.post(ajaxurl, data, function(response){
if(response.success){window.location.href=window.location.href}else{jQuery('.rtb-view-bookings-form-confirmation-div').html(response.data.msg);}});
});
jQuery('.rtb-view-bookings-form-confirmation-decline').on('click', function(){
jQuery('.rtb-view-bookings-form-confirmation-div, .rtb-view-bookings-form-confirmation-background-div').addClass('rtb-hidden');
});
jQuery('.rtb-view-bookings-form-confirmation-background-div').on('click', function(){
jQuery('.rtb-view-bookings-form-confirmation-div, .rtb-view-bookings-form-confirmation-background-div').addClass('rtb-hidden');
});
jQuery('#rtb-view-bookings-form-close').on('click', function(){
jQuery('.rtb-view-bookings-form-confirmation-div, .rtb-view-bookings-form-confirmation-background-div').addClass('rtb-hidden');
});
});
function replaceUrlParam(url, paramName, paramValue){
if(paramValue==null){
paramValue='';
}
var pattern=new RegExp('\\b('+paramName+'=).*?(&|#|$)');
if(url.search(pattern)>=0){
return url.replace(pattern,'$1' + paramValue + '$2');
}
url=url.replace(/[?#]$/,'');
return url + (url.indexOf('?')>0 ? '&':'?') + paramName + '=' + paramValue;
}
jQuery(document).ready(function(){
var tables_graphic_width=rtb_booking_form_js_localize.tables_graphic_width;
var booking_form_width=95 - rtb_booking_form_js_localize.tables_graphic_width;
if(tables_graphic_width!=''){
jQuery('.rtb-booking-form-with-tables-graphic.left .rtb-booking-form-form').css('width', booking_form_width+'%');
jQuery('.rtb-booking-form-with-tables-graphic.right .rtb-booking-form-form').css('width', booking_form_width+'%');
jQuery('.rtb-tables-graphic-container').css('width', tables_graphic_width+'%');
}});
var rtbLoadRecaptcha=function(){
grecaptcha.render('rtb_recaptcha', {
'sitekey':rtb_recaptcha.site_key
});
};