From 1d8b1f6a9a39895b52fe31a75a7f86b39f4579bc Mon Sep 17 00:00:00 2001 From: medet97 Date: Thu, 30 Apr 2020 14:09:53 +0500 Subject: [PATCH] calendar fixes --- public/vendor/gijgo/gijgo.min.js | 3389 ++++++++++++++++- .../views/desktop/Pages/EventsPage.blade.php | 14 +- 2 files changed, 3395 insertions(+), 8 deletions(-) diff --git a/public/vendor/gijgo/gijgo.min.js b/public/vendor/gijgo/gijgo.min.js index b19909f1..8da978b6 100644 --- a/public/vendor/gijgo/gijgo.min.js +++ b/public/vendor/gijgo/gijgo.min.js @@ -1 +1,3388 @@ -var gj={};gj.widget=function(){var a=this;a.xhr=null,a.generateGUID=function(){function a(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()},a.mouseX=function(a){if(a){if(a.pageX)return a.pageX;if(a.clientX)return a.clientX+(document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft);if(a.touches&&a.touches.length)return a.touches[0].pageX;if(a.changedTouches&&a.changedTouches.length)return a.changedTouches[0].pageX;if(a.originalEvent&&a.originalEvent.touches&&a.originalEvent.touches.length)return a.originalEvent.touches[0].pageX;if(a.originalEvent&&a.originalEvent.changedTouches&&a.originalEvent.changedTouches.length)return a.originalEvent.touches[0].pageX}return null},a.mouseY=function(a){if(a){if(a.pageY)return a.pageY;if(a.clientY)return a.clientY+(document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop);if(a.touches&&a.touches.length)return a.touches[0].pageY;if(a.changedTouches&&a.changedTouches.length)return a.changedTouches[0].pageY;if(a.originalEvent&&a.originalEvent.touches&&a.originalEvent.touches.length)return a.originalEvent.touches[0].pageY;if(a.originalEvent&&a.originalEvent.changedTouches&&a.originalEvent.changedTouches.length)return a.originalEvent.touches[0].pageY}return null}},gj.widget.prototype.init=function(a,b){var c,d,e;this.attr("data-type",b),d=$.extend(!0,{},this.getHTMLConfig()||{}),$.extend(!0,d,a||{}),e=this.getConfig(d,b),this.attr("data-guid",e.guid),this.data(e);for(c in e)gj[b].events.hasOwnProperty(c)&&(this.on(c,e[c]),delete e[c]);for(plugin in gj[b].plugins)gj[b].plugins.hasOwnProperty(plugin)&&gj[b].plugins[plugin].configure(this,e,d);return this},gj.widget.prototype.getConfig=function(a,b){var c,d,e,f;c=$.extend(!0,{},gj[b].config.base),d=a.hasOwnProperty("uiLibrary")?a.uiLibrary:c.uiLibrary,gj[b].config[d]&&$.extend(!0,c,gj[b].config[d]),e=a.hasOwnProperty("iconsLibrary")?a.iconsLibrary:c.iconsLibrary,gj[b].config[e]&&$.extend(!0,c,gj[b].config[e]);for(f in gj[b].plugins)gj[b].plugins.hasOwnProperty(f)&&($.extend(!0,c,gj[b].plugins[f].config.base),gj[b].plugins[f].config[d]&&$.extend(!0,c,gj[b].plugins[f].config[d]),gj[b].plugins[f].config[e]&&$.extend(!0,c,gj[b].plugins[f].config[e]));return $.extend(!0,c,a),c.guid||(c.guid=this.generateGUID()),c},gj.widget.prototype.getHTMLConfig=function(){var a=this.data(),b=this[0].attributes;return b.width&&(a.width=b.width.value),b.height&&(a.height=b.height.value),b.value&&(a.value=b.value.value),b.align&&(a.align=b.align.value),a&&a.source&&(a.dataSource=a.source,delete a.source),a},gj.widget.prototype.createDoneHandler=function(){var a=this;return function(b){"string"==typeof b&&JSON&&(b=JSON.parse(b)),gj[a.data("type")].methods.render(a,b)}},gj.widget.prototype.createErrorHandler=function(){return function(a){a&&a.statusText&&"abort"!==a.statusText&&alert(a.statusText)}},gj.widget.prototype.reload=function(a){var b,c,d=this.data(),e=this.data("type");return void 0===d.dataSource&&gj[e].methods.useHtmlDataSource(this,d),$.extend(d.params,a),$.isArray(d.dataSource)?(c=gj[e].methods.filter(this),gj[e].methods.render(this,c)):"string"==typeof d.dataSource?(b={url:d.dataSource,data:d.params},this.xhr&&this.xhr.abort(),this.xhr=$.ajax(b).done(this.createDoneHandler()).fail(this.createErrorHandler())):"object"==typeof d.dataSource&&(d.dataSource.data||(d.dataSource.data={}),$.extend(d.dataSource.data,d.params),b=$.extend(!0,{},d.dataSource),"json"===b.dataType&&"object"==typeof b.data&&(b.data=JSON.stringify(b.data)),b.success||(b.success=this.createDoneHandler()),b.error||(b.error=this.createErrorHandler()),this.xhr&&this.xhr.abort(),this.xhr=$.ajax(b)),this},gj.documentManager={events:{},subscribeForEvent:function(a,b,c){if(gj.documentManager.events[a]&&0!==gj.documentManager.events[a].length){if(gj.documentManager.events[a][b])throw"Event "+a+' for widget with guid="'+b+'" is already attached.';gj.documentManager.events[a].push({widgetId:b,callback:c})}else gj.documentManager.events[a]=[{widgetId:b,callback:c}],$(document).on(a,gj.documentManager.executeCallbacks)},executeCallbacks:function(a){var b=gj.documentManager.events[a.type];if(b)for(var c=0;c-1)g=new Date(parseInt(a.substr(6),10));else if(a){for(f=b.split(/[\s,-\.\/\/\:]+/),e=a.split(/[\s]+/),e.length!=f.length&&(e=a.split(/[\s,-\.\/\/\:]+/)),d=0;d-1?j=parseInt(e[d],10):["m","mm"].indexOf(f[d])>-1?i=parseInt(e[d],10)-1:"mmm"===f[d]?i=gj.core.messages[c||"en-us"].monthShortNames.indexOf(e[d]):"mmmm"===f[d]?i=gj.core.messages[c||"en-us"].monthNames.indexOf(e[d]):["yy","yyyy"].indexOf(f[d])>-1?(h=parseInt(e[d],10),"yy"===f[d]&&(h+=2e3)):["h","hh","H","HH"].indexOf(f[d])>-1?k=parseInt(e[d],10):["M","MM"].indexOf(f[d])>-1&&(l=parseInt(e[d],10));g=new Date(h,i,j,k,l)}}else"number"==typeof a?g=new Date(a):a instanceof Date&&(g=a);return g},formatDate:function(a,b,c){var d,e,f="",g=b.split(/[\s,-\.\/\/\:]+/),h=b.split(/s+|M+|H+|h+|t+|T+|d+|m+|y+/);for(h=h.splice(1,h.length-2),i=0;i12?a.getHours()%12:a.getHours(),f+=e+d;break;case"hh":e=a.getHours()>12?a.getHours()%12:a.getHours(),f+=gj.core.pad(e)+d;break;case"tt":f+=(a.getHours()>=12?"pm":"am")+d;break;case"TT":f+=(a.getHours()>=12?"PM":"AM")+d;break;case"d":f+=a.getDate()+d;break;case"dd":f+=gj.core.pad(a.getDate())+d;break;case"ddd":f+=gj.core.messages[c||"en-us"].weekDaysShort[a.getDay()]+d;break;case"dddd":f+=gj.core.messages[c||"en-us"].weekDays[a.getDay()]+d;break;case"m":f+=a.getMonth()+1+d;break;case"mm":f+=gj.core.pad(a.getMonth()+1)+d;break;case"mmm":f+=gj.core.messages[c||"en-us"].monthShortNames[a.getMonth()]+d;break;case"mmmm":f+=gj.core.messages[c||"en-us"].monthNames[a.getMonth()]+d;break;case"yy":f+=a.getFullYear().toString().substr(2)+d;break;case"yyyy":f+=a.getFullYear()+d}return f},pad:function(a,b){for(a=String(a),b=b||2;a.length0?b:0),a.css("top",c>0?c:0)},isIE:function(){return!!navigator.userAgent.match(/Trident/g)||!!navigator.userAgent.match(/MSIE/g)},setChildPosition:function(a,b){var c=a.getBoundingClientRect(),d=gj.core.height(a,!0),e=gj.core.height(b,!0),f=gj.core.width(a,!0),g=gj.core.width(b,!0),h=window.scrollY||window.pageYOffset||0,i=window.scrollX||window.pageXOffset||0;c.top+d+e>window.innerHeight&&c.top>e?b.style.top=Math.round(c.top+h-e-3)+"px":b.style.top=Math.round(c.top+h+d+3)+"px",c.left+g>document.body.clientWidth?b.style.left=Math.round(c.left+i+f-g)+"px":b.style.left=Math.round(c.left+i)+"px"},height:function(a,b){var c,d=window.getComputedStyle(a);return"border-box"===d.boxSizing?(c=parseInt(d.height,10),gj.core.isIE()&&(c+=parseInt(d.paddingTop||0,10)+parseInt(d.paddingBottom||0,10),c+=parseInt(d.borderTopWidth||0,10)+parseInt(d.borderBottomWidth||0,10))):(c=parseInt(d.height,10),c+=parseInt(d.paddingTop||0,10)+parseInt(d.paddingBottom||0,10),c+=parseInt(d.borderTopWidth||0,10)+parseInt(d.borderBottomWidth||0,10)),b&&(c+=parseInt(d.marginTop||0,10)+parseInt(d.marginBottom||0,10)),c},width:function(a,b){var c,d=window.getComputedStyle(a);return"border-box"===d.boxSizing?c=parseInt(d.width,10):(c=parseInt(d.width,10),c+=parseInt(d.paddingLeft||0,10)+parseInt(d.paddingRight||0,10),c+=parseInt(d.borderLeftWidth||0,10)+parseInt(d.borderRightWidth||0,10)),b&&(c+=parseInt(d.marginLeft||0,10)+parseInt(d.marginRight||0,10)),c},addClasses:function(a,b){var c,d;if(b)for(d=b.split(" "),c=0;ca.clientHeight?a:gj.core.getScrollParent(a.parentNode)}},gj.picker={messages:{"en-us":{}}},gj.picker.methods={initialize:function(a,b,c){var d,e=c.createPicker(a,b),f=a.parent('div[role="wrapper"]');d="bootstrap"===b.uiLibrary?$(''+b.icons.rightIcon+""):"bootstrap4"===b.uiLibrary?$('"):$(b.icons.rightIcon),d.attr("role","right-icon"),0===f.length?(f=$('
').addClass(b.style.wrapper),a.wrap(f)):f.addClass(b.style.wrapper),f=a.parent('div[role="wrapper"]'),b.width&&f.css("width",b.width),a.val(b.value).addClass(b.style.input).attr("role","input"),b.fontSize&&a.css("font-size",b.fontSize),"bootstrap"===b.uiLibrary||"bootstrap4"===b.uiLibrary?"small"===b.size?(f.addClass("input-group-sm"),a.addClass("form-control-sm")):"large"===b.size&&(f.addClass("input-group-lg"),a.addClass("form-control-lg")):"small"===b.size?f.addClass("small"):"large"===b.size&&f.addClass("large"),d.on("click",function(b){e.is(":visible")?a.close():a.open()}),f.append(d),!0!==b.footer&&(a.on("blur",function(){a.timeout=setTimeout(function(){a.close()},500)}),e.mousedown(function(){return clearTimeout(a.timeout),a.focus(),!1}),e.on("click",function(){clearTimeout(a.timeout),a.focus()}))}},gj.picker.widget=function(a,b){var c=this,d=gj.picker.methods;return c.destroy=function(){return d.destroy(this)},a},gj.picker.widget.prototype=new gj.widget,gj.picker.widget.constructor=gj.picker.widget,gj.picker.widget.prototype.init=function(a,b,c){return gj.widget.prototype.init.call(this,a,b),this.attr("data-"+b,"true"),gj.picker.methods.initialize(this,this.data(),gj[b].methods),this},gj.picker.widget.prototype.open=function(a){var b=this.data(),c=$("body").find('[role="picker"][guid="'+this.attr("data-guid")+'"]');return c.show(),c.closest('div[role="modal"]').show(),b.modal?gj.core.center(c):(gj.core.setChildPosition(this[0],c[0]),this.focus()),clearTimeout(this.timeout),gj[a].events.open(this),this},gj.picker.widget.prototype.close=function(a){var b=$("body").find('[role="picker"][guid="'+this.attr("data-guid")+'"]');return b.hide(),b.closest('div[role="modal"]').hide(),gj[a].events.close(this),this},gj.picker.widget.prototype.destroy=function(a){var b=this.data(),c=this.parent(),d=$("body").find('[role="picker"][guid="'+this.attr("data-guid")+'"]');return b&&(this.off(),d.parent('[role="modal"]').length>0&&d.unwrap(),d.remove(),this.removeData(),this.removeAttr("data-type").removeAttr("data-guid").removeAttr("data-"+a),this.removeClass(),c.children('[role="right-icon"]').remove(),this.unwrap()),this},gj.dialog={plugins:{},messages:{}},gj.dialog.config={base:{autoOpen:!0,closeButtonInHeader:!0,closeOnEscape:!0,draggable:!0,height:"auto",locale:"en-us",maxHeight:void 0,maxWidth:void 0,minHeight:void 0,minWidth:void 0,modal:!1,resizable:!1,scrollable:!1,title:void 0,uiLibrary:void 0,width:300,style:{modal:"gj-modal",content:"gj-dialog-md",header:"gj-dialog-md-header gj-unselectable",headerTitle:"gj-dialog-md-title",headerCloseButton:"gj-dialog-md-close",body:"gj-dialog-md-body",footer:"gj-dialog-footer gj-dialog-md-footer"}},bootstrap:{style:{modal:"modal",content:"modal-content gj-dialog-bootstrap",header:"modal-header",headerTitle:"modal-title",headerCloseButton:"close",body:"modal-body",footer:"gj-dialog-footer modal-footer"}},bootstrap4:{style:{modal:"modal",content:"modal-content gj-dialog-bootstrap4",header:"modal-header",headerTitle:"modal-title",headerCloseButton:"close",body:"modal-body",footer:"gj-dialog-footer modal-footer"}}},gj.dialog.events={initialized:function(a){a.trigger("initialized")},opening:function(a){a.trigger("opening")},opened:function(a){a.trigger("opened")},closing:function(a){a.trigger("closing")},closed:function(a){a.trigger("closed")},drag:function(a){a.trigger("drag")},dragStart:function(a){a.trigger("dragStart")},dragStop:function(a){a.trigger("dragStop")},resize:function(a){a.trigger("resize")},resizeStart:function(a){a.trigger("resizeStart")},resizeStop:function(a){a.trigger("resizeStop")}},gj.dialog.methods={init:function(a){return gj.widget.prototype.init.call(this,a,"dialog"),gj.dialog.methods.localization(this),gj.dialog.methods.initialize(this),gj.dialog.events.initialized(this),this},localization:function(a){var b=a.data();void 0===b.title&&(b.title=gj.dialog.messages[b.locale].DefaultTitle)},getHTMLConfig:function(){var a=gj.widget.prototype.getHTMLConfig.call(this),b=this[0].attributes;return b.title&&(a.title=b.title.value),a},initialize:function(a){var b,c,d,e=a.data();a.addClass(e.style.content),gj.dialog.methods.setSize(a),e.closeOnEscape&&$(document).keyup(function(b){27===b.keyCode&&a.close()}),c=a.children('div[data-role="body"]'),0===c.length?(c=$('
').addClass(e.style.body),a.wrapInner(c)):c.addClass(e.style.body),b=gj.dialog.methods.renderHeader(a),d=a.children('div[data-role="footer"]').addClass(e.style.footer),a.find('[data-role="close"]').on("click",function(){a.close()}),gj.draggable&&(e.draggable&&gj.dialog.methods.draggable(a,b),e.resizable&&gj.dialog.methods.resizable(a)),e.scrollable&&e.height&&(a.addClass("gj-dialog-scrollable"),a.on("opened",function(){a.children('div[data-role="body"]').css("height",e.height-b.outerHeight()-(d.length?d.outerHeight():0))})),gj.core.center(a),e.modal&&a.wrapAll('
'),e.autoOpen&&a.open()},setSize:function(a){var b=a.data();b.width&&a.css("width",b.width),b.height&&a.css("height",b.height)},renderHeader:function(a){var b,c,d,e=a.data();return b=a.children('div[data-role="header"]'),0===b.length&&(b=$('
'),a.prepend(b)),b.addClass(e.style.header),c=b.find('[data-role="title"]'),0===c.length&&(c=$('

'+e.title+"

"),b.append(c)),c.addClass(e.style.headerTitle),d=b.find('[data-role="close"]'),0===d.length&&e.closeButtonInHeader?(d=$(''),d.addClass(e.style.headerCloseButton),b.append(d)):d.length>0&&!1===e.closeButtonInHeader?d.hide():d.addClass(e.style.headerCloseButton),b},draggable:function(a,b){a.appendTo("body"),b.addClass("gj-draggable"),a.draggable({handle:b,start:function(){a.addClass("gj-unselectable"),gj.dialog.events.dragStart(a)},stop:function(){a.removeClass("gj-unselectable"),gj.dialog.events.dragStop(a)}})},resizable:function(a){var b={drag:gj.dialog.methods.resize,start:function(){a.addClass("gj-unselectable"),gj.dialog.events.resizeStart(a)},stop:function(){this.removeAttribute("style"),a.removeClass("gj-unselectable"),gj.dialog.events.resizeStop(a)}};a.append($('
').draggable($.extend(!0,{horizontal:!1},b))),a.append($('
').draggable($.extend(!0,{vertical:!1},b))),a.append($('
').draggable($.extend(!0,{horizontal:!1},b))),a.append($('
').draggable($.extend(!0,{vertical:!1},b))),a.append($('
').draggable($.extend(!0,{},b))),a.append($('
').draggable($.extend(!0,{},b))),a.append($('
').draggable($.extend(!0,{},b))),a.append($('
').draggable($.extend(!0,{},b)))},resize:function(a,b){var c,d,e,f,g,h,i,j,k=!1;return c=$(this),d=c.parent(),e=gj.core.position(this),offset={top:b.top-e.top,left:b.left-e.left},f=d.data(),c.hasClass("gj-resizable-n")?(g=d.height()-offset.top,i=d.offset().top+offset.top):c.hasClass("gj-resizable-e")?h=d.width()+offset.left:c.hasClass("gj-resizable-s")?g=d.height()+offset.top:c.hasClass("gj-resizable-w")?(h=d.width()-offset.left,j=d.offset().left+offset.left):c.hasClass("gj-resizable-ne")?(g=d.height()-offset.top,i=d.offset().top+offset.top,h=d.width()+offset.left):c.hasClass("gj-resizable-nw")?(g=d.height()-offset.top,i=d.offset().top+offset.top,h=d.width()-offset.left,j=d.offset().left+offset.left):c.hasClass("gj-resizable-se")?(g=d.height()+offset.top,h=d.width()+offset.left):c.hasClass("gj-resizable-sw")&&(g=d.height()+offset.top,h=d.width()-offset.left,j=d.offset().left+offset.left),g&&(!f.minHeight||g>=f.minHeight)&&(!f.maxHeight||g<=f.maxHeight)&&(d.height(g),i&&d.css("top",i),k=!0),h&&(!f.minWidth||h>=f.minWidth)&&(!f.maxWidth||h<=f.maxWidth)&&(d.width(h),j&&d.css("left",j),k=!0),k&&gj.dialog.events.resize(d),k},open:function(a,b){var c;return gj.dialog.events.opening(a),a.css("display","block"),a.closest('div[data-role="modal"]').css("display","block"),c=a.children('div[data-role="footer"]'),c.length&&c.outerHeight()&&a.children('div[data-role="body"]').css("margin-bottom",c.outerHeight()),void 0!==b&&a.find('[data-role="title"]').html(b),gj.dialog.events.opened(a),a},close:function(a){return a.is(":visible")&&(gj.dialog.events.closing(a),a.css("display","none"),a.closest('div[data-role="modal"]').css("display","none"),gj.dialog.events.closed(a)),a},isOpen:function(a){return a.is(":visible")},content:function(a,b){var c=a.children('div[data-role="body"]');return void 0===b?c.html():c.html(b)},destroy:function(a,b){var c=a.data();return c&&(!1===b?a.remove():(a.close(),a.off(),a.removeData(),a.removeAttr("data-type"),a.removeClass(c.style.content),a.find('[data-role="header"]').removeClass(c.style.header),a.find('[data-role="title"]').removeClass(c.style.headerTitle),a.find('[data-role="close"]').remove(),a.find('[data-role="body"]').removeClass(c.style.body),a.find('[data-role="footer"]').removeClass(c.style.footer))),a}},gj.dialog.widget=function(a,b){var c=this,d=gj.dialog.methods;return c.open=function(a){return d.open(this,a)},c.close=function(){return d.close(this)},c.isOpen=function(){return d.isOpen(this)},c.content=function(a){return d.content(this,a)},c.destroy=function(a){return d.destroy(this,a)},$.extend(a,c),"dialog"!==a.attr("data-type")&&d.init.call(a,b),a},gj.dialog.widget.prototype=new gj.widget,gj.dialog.widget.constructor=gj.dialog.widget,gj.dialog.widget.prototype.getHTMLConfig=gj.dialog.methods.getHTMLConfig,function(a){a.fn.dialog=function(a){var b;if(this&&this.length){if("object"!=typeof a&&a){if(b=new gj.dialog.widget(this,null),b[a])return b[a].apply(this,Array.prototype.slice.call(arguments,1));throw"Method "+a+" does not exist."}return new gj.dialog.widget(this,a)}}}(jQuery),gj.dialog.messages["en-us"]={Close:"Close",DefaultTitle:"Dialog"},gj.draggable={plugins:{}},gj.draggable.config={base:{handle:void 0,vertical:!0,horizontal:!0,containment:void 0}},gj.draggable.methods={init:function(a){var b,c,d=this;return gj.widget.prototype.init.call(this,a,"draggable"),c=this.data(),d.attr("data-draggable","true"),b=gj.draggable.methods.getHandleElement(d),b.on("touchstart mousedown",function(a){var e=gj.core.position(d[0]);d[0].style.top=e.top+"px",d[0].style.left=e.left+"px",d[0].style.position="fixed",d.attr("draggable-dragging",!0),d.removeAttr("draggable-x").removeAttr("draggable-y"),gj.documentManager.subscribeForEvent("touchmove",d.data("guid"),gj.draggable.methods.createMoveHandler(d,b,c)),gj.documentManager.subscribeForEvent("mousemove",d.data("guid"),gj.draggable.methods.createMoveHandler(d,b,c))}),gj.documentManager.subscribeForEvent("mouseup",d.data("guid"),gj.draggable.methods.createUpHandler(d)),gj.documentManager.subscribeForEvent("touchend",d.data("guid"),gj.draggable.methods.createUpHandler(d)),gj.documentManager.subscribeForEvent("touchcancel",d.data("guid"),gj.draggable.methods.createUpHandler(d)),d},getHandleElement:function(a){var b=a.data("handle");return b&&b.length?b:a},createUpHandler:function(a){return function(b){"true"===a.attr("draggable-dragging")&&(a.attr("draggable-dragging",!1),gj.documentManager.unsubscribeForEvent("mousemove",a.data("guid")),gj.documentManager.unsubscribeForEvent("touchmove",a.data("guid")),gj.draggable.events.stop(a,{x:a.mouseX(b),y:a.mouseY(b)}))}},createMoveHandler:function(a,b,c){return function(b){var d,e,f,g,h,i;"true"===a.attr("draggable-dragging")&&(d=Math.round(a.mouseX(b)),e=Math.round(a.mouseY(b)),h=a.attr("draggable-x"),i=a.attr("draggable-y"),h&&i?(f=c.horizontal?d-parseInt(h,10):0,g=c.vertical?e-parseInt(i,10):0,gj.draggable.methods.move(a[0],c,f,g,d,e)):gj.draggable.events.start(a,d,e),a.attr("draggable-x",d),a.attr("draggable-y",e))}},move:function(a,b,c,d,e,f){var g,h,i,j=gj.core.position(a),k=j.top+d,l=j.left+c;b.containment&&(g=gj.core.position(b.containment),h=g.top+gj.core.height(b.containment)-gj.core.height(a),i=g.left+gj.core.width(b.containment)-gj.core.width(a),k>g.top&&k=f||g.bottom<=f)&&(k=j.top):k=k<=g.top?g.top+1:h-1,l>g.left&&l=e||g.right<=e)&&(l=j.left):l=l<=g.left?g.left+1:i-1),!1!==gj.draggable.events.drag($(a),l,k,e,f)&&(a.style.top=k+"px",a.style.left=l+"px")},destroy:function(a){return"true"===a.attr("data-draggable")&&(gj.documentManager.unsubscribeForEvent("mouseup",a.data("guid")),a.removeData(),a.removeAttr("data-guid").removeAttr("data-type").removeAttr("data-draggable"),a.removeAttr("draggable-x").removeAttr("draggable-y").removeAttr("draggable-dragging"),a[0].style.top="",a[0].style.left="",a[0].style.position="",a.off("drag").off("start").off("stop"),gj.draggable.methods.getHandleElement(a).off("mousedown")),a}},gj.draggable.events={drag:function(a,b,c,d,e){return a.triggerHandler("drag",[{left:b,top:c},{x:d,y:e}])},start:function(a,b,c){a.triggerHandler("start",[{x:b,y:c}])},stop:function(a,b){a.triggerHandler("stop",[b])}},gj.draggable.widget=function(a,b){var c=this,d=gj.draggable.methods;return a.destroy||(c.destroy=function(){return d.destroy(this)}),$.extend(a,c),"true"!==a.attr("data-draggable")&&d.init.call(a,b),a},gj.draggable.widget.prototype=new gj.widget,gj.draggable.widget.constructor=gj.draggable.widget,function(a){a.fn.draggable=function(a){var b;if(this&&this.length){if("object"!=typeof a&&a){if(b=new gj.draggable.widget(this,null),b[a])return b[a].apply(this,Array.prototype.slice.call(arguments,1));throw"Method "+a+" does not exist."}return new gj.draggable.widget(this,a)}}}(jQuery),gj.droppable={plugins:{}},gj.droppable.config={hoverClass:void 0},gj.droppable.methods={init:function(a){var b=this;return gj.widget.prototype.init.call(this,a,"droppable"),b.attr("data-droppable","true"),gj.documentManager.subscribeForEvent("mousedown",b.data("guid"),gj.droppable.methods.createMouseDownHandler(b)),gj.documentManager.subscribeForEvent("mousemove",b.data("guid"),gj.droppable.methods.createMouseMoveHandler(b)),gj.documentManager.subscribeForEvent("mouseup",b.data("guid"),gj.droppable.methods.createMouseUpHandler(b)),b},createMouseDownHandler:function(a){return function(b){a.isDragging=!0}},createMouseMoveHandler:function(a){return function(b){if(a.isDragging){var c=a.data("hoverClass"),d={x:a.mouseX(b),y:a.mouseY(b)},e=gj.droppable.methods.isOver(a,d);e!=a.isOver&&(e?(c&&a.addClass(c),gj.droppable.events.over(a,d)):(c&&a.removeClass(c),gj.droppable.events.out(a))),a.isOver=e}}},createMouseUpHandler:function(a){return function(b){var c={left:a.mouseX(b),top:a.mouseY(b)};a.isDragging=!1,gj.droppable.methods.isOver(a,c)&&gj.droppable.events.drop(a)}},isOver:function(a,b){var c=a.offset().top,d=a.offset().left;return b.x>d&&b.xc&&b.y',desc:''}},fontawesome:{icons:{asc:'',desc:''}},glyphicons:{icons:{asc:'',desc:''}}},gj.grid.events={beforeEmptyRowInsert:function(a,b){return a.triggerHandler("beforeEmptyRowInsert",[b])},dataBinding:function(a,b){return a.triggerHandler("dataBinding",[b])},dataBound:function(a,b,c){return a.triggerHandler("dataBound",[b,c])},rowDataBound:function(a,b,c,d){return a.triggerHandler("rowDataBound",[b,c,d])},cellDataBound:function(a,b,c,d,e){return a.triggerHandler("cellDataBound",[b,c,d,e])},rowSelect:function(a,b,c,d){return a.triggerHandler("rowSelect",[b,c,d])},rowUnselect:function(a,b,c,d){return a.triggerHandler("rowUnselect",[b,c,d])},rowRemoving:function(a,b,c,d){return a.triggerHandler("rowRemoving",[b,c,d])},destroying:function(a){return a.triggerHandler("destroying")},columnHide:function(a,b){return a.triggerHandler("columnHide",[b])},columnShow:function(a,b){return a.triggerHandler("columnShow",[b])},initialized:function(a){return a.triggerHandler("initialized")},dataFiltered:function(a,b){return a.triggerHandler("dataFiltered",[b])}},gj.grid.methods={init:function(a){return gj.widget.prototype.init.call(this,a,"grid"),gj.grid.methods.initialize(this),this.data("autoLoad")&&this.reload(),this},getConfig:function(a,b){var c=gj.widget.prototype.getConfig.call(this,a,b);return gj.grid.methods.setDefaultColumnConfig(c.columns,c.defaultColumnSettings),c},setDefaultColumnConfig:function(a,b){var c,d;if(a&&a.length)for(d=0;d tr > th").each(function(){var b=$(this),c=b.text(),d=gj.widget.prototype.getHTMLConfig.call(b);d.title=c,d.field||(d.field=c),d.events&&(d.events=gj.grid.methods.eventsParser(d.events)),a.columns.push(d)}),a},eventsParser:function(events){var result={},list,i,key,func,position;for(list=events.split(","),i=0;i0&&(key=$.trim(list[i].substr(0,position)),func=$.trim(list[i].substr(position+1,list[i].length)),result[key]=eval("window."+func));return result},initialize:function(a){var b=a.data(),c=a.parent('div[data-role="wrapper"]');gj.grid.methods.localization(b),0===c.length?(c=$('
').addClass(b.style.wrapper),a.wrap(c)):c.addClass(b.style.wrapper),b.width&&a.parent().css("width",b.width),b.minWidth&&a.css("min-width",b.minWidth),b.fontSize&&a.css("font-size",b.fontSize),"autogrow"===b.headerRowHeight&&a.addClass("autogrow-header-row"),"fixed"===b.bodyRowHeight&&a.addClass("fixed-body-rows"),a.addClass(b.style.table),"checkbox"===b.selectionMethod&&b.columns.splice(gj.grid.methods.getColumnPositionNotInRole(a),0,{title:"",width:b.defaultCheckBoxColumnWidth,align:"center",type:"checkbox",role:"selectRow",events:{click:function(b){gj.grid.methods.setSelected(a,b.data.id,$(this).closest("tr"))}},headerCssClass:"gj-grid-select-all",stopPropagation:!0}),0===a.children("tbody").length&&a.append($("")),gj.grid.methods.renderHeader(a),gj.grid.methods.appendEmptyRow(a," "),gj.grid.events.initialized(a)},localization:function(a){a.notFoundText||(a.notFoundText=gj.grid.messages[a.locale].NoRecordsFound)},renderHeader:function(a){var b,c,d,e,f,g,h,i,j;for(b=a.data(),c=b.columns,d=b.style.header,e=a.children("thead"),0===e.length&&(e=$(""),a.prepend(e)),f=$(''),i=0;i'),c[i].width?g.attr("width",c[i].width):"checkbox"===c[i].type&&g.attr("width",b.defaultIconColumnWidth),g.addClass(d.cell),c[i].headerCssClass&&g.addClass(c[i].headerCssClass),g.css("text-align",c[i].align||"left"),"checkbox"===b.selectionMethod&&"multiple"===b.selectionType&&"checkbox"===c[i].type&&"selectRow"===c[i].role?(j=g.find('input[data-role="selectAll"]'),0===j.length&&(j=$(''),g.append(j),j.checkbox({uiLibrary:b.uiLibrary})),j.off("click").on("click",function(){this.checked?a.selectAll():a.unSelectAll()})):(h=$('
').html(void 0===c[i].title?c[i].field:c[i].title),g.append(h),c[i].sortable&&(h.addClass(d.sortable),h.on("click",gj.grid.methods.createSortHandler(a,c[i])))),c[i].hidden&&g.hide(),f.append(g);e.empty().append(f)},createSortHandler:function(a,b){return function(){var c,d={};a.count()>0&&(c=a.data(),d[c.paramNames.sortBy]=b.field,b.direction="asc"===b.direction?"desc":"asc",d[c.paramNames.direction]=b.direction,a.reload(d))}},updateHeader:function(a){var b,c,d=a.data(),e=d.params[d.paramNames.sortBy],f=d.params[d.paramNames.direction];a.find('thead tr th [data-role="sorticon"]').remove(),e&&(position=gj.grid.methods.getColumnPosition(a.data("columns"),e),position>-1&&(c=a.find("thead tr th:eq("+position+') div[data-role="title"]'),b=$('
').append("desc"===f?d.icons.desc:d.icons.asc),c.after(b)))},useHtmlDataSource:function(a,b){var c,d,e,f,g=[],h=a.find('tbody tr[data-role != "empty"]');for(c=0;c').addClass(h.style.loadingCover).css({width:e,height:f,top:g}),d=$('
'+gj.grid.messages[h.locale].Loading+"
").addClass(h.style.loadingText),d.insertAfter(a),c.insertAfter(a),d.css({top:g+f/2-d.outerHeight(!1)/2,left:e/2-d.outerWidth(!1)/2}))},stopLoading:function(a){a.parent().find('div[data-role="loading-cover"]').remove(),a.parent().find('div[data-role="loading-text"]').remove()},appendEmptyRow:function(a,b){var c,d,e,f;c=a.data(),d=$(''),e=$("").css({width:"100%","text-align":"center"}),e.attr("colspan",gj.grid.methods.countVisibleColumns(a)),f=$("
").html(b||c.notFoundText),e.append(f),d.append(e),gj.grid.events.beforeEmptyRowInsert(a,d),a.append(d)},autoGenerateColumns:function(a,b){var c,d,e,f,g=a.data();if(g.columns=[],b.length>0){for(c=Object.getOwnPropertyNames(b[0]),f=0;f-1&&(e="date")),g.columns.push({field:c[f],type:e});gj.grid.methods.setDefaultColumnConfig(g.columns,g.defaultColumnSettings)}gj.grid.methods.renderHeader(a)},loadData:function(a){var b,c,d,e,f,g,h,i;for(b=a.data(),c=a.getAll(),gj.grid.events.dataBinding(a,c),e=c.length,gj.grid.methods.stopLoading(a),b.autoGenerateColumns&&gj.grid.methods.autoGenerateColumns(a,c),g=a.children("tbody"),"checkbox"===b.selectionMethod&&"multiple"===b.selectionType&&a.find('thead input[data-role="selectAll"]').prop("checked",!1),g.children("tr").not('[data-role="row"]').remove(),0===e&&(g.empty(),gj.grid.methods.appendEmptyRow(a)),h=g.children("tr"),f=h.length,d=0;d'),a.children("tbody").append(b)),e=gj.grid.methods.getId(c,h.primaryKey,d+1),b.attr("data-position",d+1),"checkbox"!==h.selectionMethod&&b.on("click",gj.grid.methods.createRowClickHandler(a,e)),g=0;g"),g=$('
'),c.align&&b.css("text-align",c.align),c.cssClass&&b.addClass(c.cssClass),b.append(g),f="create"),gj.grid.methods.renderDisplayElement(a,g,c,d,e,f),"update"===f&&(b.off(),g.off()),c.events)for(h in c.events)c.events.hasOwnProperty(h)&&b.on(h,{id:e,field:c.field,record:d},gj.grid.methods.createCellEventHandler(c,c.events[h]));return c.hidden&&b.hide(),gj.grid.events.cellDataBound(a,g,e,c,d),b},createCellEventHandler:function(a,b){return function(c){a.stopPropagation&&c.stopPropagation(),b.call(this,c)}},renderDisplayElement:function(a,b,c,d,e,f){var g,h;"checkbox"===c.type&&gj.checkbox?"create"===f?(h=$('').val(e).prop("checked",!!d[c.field]),c.role&&h.attr("data-role",c.role),b.append(h),h.checkbox({uiLibrary:a.data("uiLibrary")}),"selectRow"===c.role?h.on("click",function(){return!1}):h.prop("disabled",!0)):b.find('input[type="checkbox"]').val(e).prop("checked",!!d[c.field]):"icon"===c.type?"create"===f&&(b.append($("").addClass(c.icon).css({cursor:"pointer"})),"bootstrap"===a.data().uiLibrary&&b.children("span").addClass("glyphicon"),c.stopPropagation=!0):c.tmpl?(g=c.tmpl,c.tmpl.replace(/\{(.+?)\}/g,function(a,b){g=g.replace(a,gj.grid.methods.formatText(d[b],c))}),b.html(g)):c.renderer&&"function"==typeof c.renderer?(g=c.renderer(d[c.field],d,b.parent(),b,e,a))&&b.html(g):(d[c.field]=gj.grid.methods.formatText(d[c.field],c),!c.tooltip&&d[c.field]&&b.attr("title",d[c.field]),b.html(d[c.field])),c.tooltip&&"create"===f&&b.attr("title",c.tooltip)},formatText:function(a,b){return a=a&&["date","time","datetime"].indexOf(b.type)>-1?gj.core.formatDate(gj.core.parseDate(a,b.format),b.format):void 0===a||null===a?"":a.toString(),b.decimalDigits&&a&&(a=parseFloat(a).toFixed(b.decimalDigits)),a},setRecordsData:function(a,b){var c=[],d=0,e=a.data();return $.isArray(b)?(c=b,d=b.length):e&&e.mapping&&$.isArray(b[e.mapping.dataField])&&(c=b[e.mapping.dataField],(d=b[e.mapping.totalRecordsField])&&!isNaN(d)||(d=0)),a.data("records",c),a.data("totalRecords",d),c},createRowClickHandler:function(a,b){return function(){gj.grid.methods.setSelected(a,b,$(this))}},selectRow:function(a,b,c,d){var e;return c.addClass(b.style.content.rowSelected),c.attr("data-selected","true"),"checkbox"===b.selectionMethod&&(e=c.find('input[type="checkbox"][data-role="selectRow"]'),e.length&&!e.prop("checked")&&e.prop("checked",!0),"multiple"===b.selectionType&&a.getSelections().length===a.count(!1)&&a.find('thead input[data-role="selectAll"]').prop("checked",!0)),gj.grid.events.rowSelect(a,c,d,a.getById(d))},unselectRow:function(a,b,c,d){var e;if("true"===c.attr("data-selected"))return c.removeClass(b.style.content.rowSelected),"checkbox"===b.selectionMethod&&(e=c.find('td input[type="checkbox"][data-role="selectRow"]'),e.length&&e.prop("checked")&&e.prop("checked",!1),"multiple"===b.selectionType&&a.find('thead input[data-role="selectAll"]').prop("checked",!1)),c.removeAttr("data-selected"),gj.grid.events.rowUnselect(a,c,d,a.getById(d))},setSelected:function(a,b,c){var d=a.data();return c&&c.length||(c=gj.grid.methods.getRowById(a,b)),c&&("true"===c.attr("data-selected")?gj.grid.methods.unselectRow(a,d,c,b):("single"===d.selectionType&&c.siblings('[data-selected="true"]').each(function(){var b=$(this),c=gj.grid.methods.getId(b,d.primaryKey,b.data("position"));gj.grid.methods.unselectRow(a,d,b,c)}),gj.grid.methods.selectRow(a,d,c,b))),a},selectAll:function(a){var b=a.data();return a.find('tbody tr[data-role="row"]').each(function(){var c=$(this),d=c.data("position"),e=a.get(d),f=gj.grid.methods.getId(e,b.primaryKey,d);gj.grid.methods.selectRow(a,b,c,f)}),a.find('thead input[data-role="selectAll"]').prop("checked",!0),a},unSelectAll:function(a){var b=a.data();return a.find("tbody tr").each(function(){var c=$(this),d=c.data("position"),e=a.get(d),f=gj.grid.methods.getId(e,b.primaryKey,d);gj.grid.methods.unselectRow(a,b,c,f),c.find('input[type="checkbox"][data-role="selectRow"]').prop("checked",!1)}),a.find('thead input[data-role="selectAll"]').prop("checked",!1),a},getSelected:function(a){var b,c,d,e=null;return b=a.find('tbody>tr[data-selected="true"]'),b.length>0&&(d=$(b[0]).data("position"),c=a.get(d),e=gj.grid.methods.getId(c,a.data().primaryKey,d)),e},getSelectedRows:function(a){a.data();return a.find('tbody>tr[data-selected="true"]')},getSelections:function(a){var b,c,d=[],e=a.data(),f=gj.grid.methods.getSelectedRows(a);return 0-1&&(e=gj.grid.methods.getRowById(a,b),f=e.find("td:eq("+d+') div[data-role="display"]')),f},setCellContent:function(a,b,c,d){var e,f=gj.grid.methods.getCell(a,b,c);f&&(f.empty(),"object"==typeof d?f.append(d):(e=gj.grid.methods.getColumnInfo(a,c),gj.grid.methods.renderDisplayElement(a,f,e,a.getById(b),b,"update")))},clone:function(a){var b=[];return $.each(a,function(){b.push(this.clone())}),b},getAll:function(a){return a.data("records")},countVisibleColumns:function(a){var b,c,d;for(b=a.data().columns,c=0,d=0;d-1}));return gj.grid.events.dataFiltered(a,e),e},createDefaultSorter:function(a,b){return function(c,d){var e=(c[b]||"").toString(),f=(d[b]||"").toString();return"asc"===a?e.localeCompare(f):f.localeCompare(e)}},destroy:function(a,b,c){return a.data()&&(gj.grid.events.destroying(a),gj.grid.methods.stopLoading(a),a.xhr&&a.xhr.abort(),a.off(),!1===c&&a.parent('div[data-role="wrapper"]').length>0&&a.unwrap(),a.removeData(),!1===b?a.remove():a.removeClass().empty(),a.removeAttr("data-type")),a},showColumn:function(a,b){var c,d=a.data(),e=gj.grid.methods.getColumnPosition(d.columns,b);return e>-1&&(a.find("thead>tr").each(function(){$(this).children("th").eq(e).show()}),$.each(a.find("tbody>tr"),function(){$(this).children("td").eq(e).show()}),d.columns[e].hidden=!1,c=a.find('tbody > tr[data-role="empty"] > td'),c&&c.length&&c.attr("colspan",gj.grid.methods.countVisibleColumns(a)),gj.grid.events.columnShow(a,d.columns[e])),a},hideColumn:function(a,b){var c,d=a.data(),e=gj.grid.methods.getColumnPosition(d.columns,b);return e>-1&&(a.find("thead>tr").each(function(){$(this).children("th").eq(e).hide()}),$.each(a.find("tbody>tr"),function(){$(this).children("td").eq(e).hide()}),d.columns[e].hidden=!0,c=a.find('tbody > tr[data-role="empty"] > td'),c&&c.length&&c.attr("colspan",gj.grid.methods.countVisibleColumns(a)),gj.grid.events.columnHide(a,d.columns[e])),a},isLastRecordVisible:function(){return!0},addRow:function(a,b){var c=a.data();return c.totalRecords=a.data("totalRecords")+1,gj.grid.events.dataBinding(a,[b]),c.records.push(b),$.isArray(c.dataSource)&&c.dataSource.push(b),1===c.totalRecords&&a.children("tbody").empty(),gj.grid.methods.isLastRecordVisible(a)&&gj.grid.methods.renderRow(a,null,b,a.count()-1),gj.grid.events.dataBound(a,[b],c.totalRecords),a},updateRow:function(a,b,c){var d,e=gj.grid.methods.getRowById(a,b),f=a.data();return f.records[e.data("position")-1]=c,$.isArray(f.dataSource)&&(d=gj.grid.methods.getRecVPosById(a,b),f.dataSource[d]=c),gj.grid.methods.renderRow(a,e,c,e.index()),a},removeRow:function(a,b){var c,d=a.data(),e=gj.grid.methods.getRowById(a,b);return gj.grid.events.rowRemoving(a,e,b,a.getById(b)),$.isArray(d.dataSource)&&(c=gj.grid.methods.getRecVPosById(a,b),d.dataSource.splice(c,1)),a.reload(),a},count:function(a,b){return b?a.data().totalRecords:a.getAll().length},getColumnPositionByRole:function(a,b){var c,d,e=a.data("columns");for(c=0;c-1?1:0)):d.css("width",e.outerWidth()),b=0;b',collapseRow:''}},fontawesome:{icons:{expandRow:'',collapseRow:''}},glyphicons:{icons:{expandRow:'',collapseRow:''}}},private:{expandDetail:function(a,b,c){var d=b.closest("tr"),e=$(''),f=$(''),g=$('
'),h=a.data(),i=d.data("position"),j=a.get(i),k=gj.grid.plugins.expandCollapseRows;void 0===typeof c&&(c=gj.grid.methods.getId(j,h.primaryKey,j)),e.append(f.append(g.append(d.data("details")))),e.insertAfter(d),b.children('div[data-role="display"]').empty().append(h.icons.collapseRow),a.updateDetails(d),k.private.keepSelection(a,c),k.events.detailExpand(a,e.find("td>div"),c)},collapseDetail:function(a,b,c){var d=b.closest("tr"),e=d.next('tr[data-role="details"]'),f=a.data(),g=gj.grid.plugins.expandCollapseRows;void 0===typeof c&&(c=gj.grid.methods.getId(record,f.primaryKey,record)),e.remove(),b.children('div[data-role="display"]').empty().append(f.icons.expandRow),g.private.removeSelection(a,c),g.events.detailCollapse(a,e.find("td>div"),c)},keepSelection:function(a,b){var c=a.data();c.keepExpandedRows&&($.isArray(c.expandedRows)?-1==c.expandedRows.indexOf(b)&&c.expandedRows.push(b):c.expandedRows=[b])},removeSelection:function(a,b){var c=a.data();c.keepExpandedRows&&$.isArray(c.expandedRows)&&c.expandedRows.indexOf(b)>-1&&c.expandedRows.splice(c.expandedRows.indexOf(b),1)},updateDetailsColSpan:function(a){var b=a.find('tbody > tr[data-role="details"] > td');b&&b.length&&b.attr("colspan",gj.grid.methods.countVisibleColumns(a))}},public:{collapseAll:function(){var a,b=this,c=b.data();return void 0!==c.detailTemplate&&(a=gj.grid.methods.getColumnPositionByRole(b,"expander"),b.find('tbody tr[data-role="row"]').each(function(){gj.grid.plugins.expandCollapseRows.private.collapseDetail(b,$(this).find("td:eq("+a+")"))})),void 0!==c.grouping&&b.find('tbody tr[role="group"]').each(function(){gj.grid.plugins.grouping.private.collapseGroup(c,$(this).find("td:eq(0)"))}),b},expandAll:function(){var a,b=this,c=b.data();return void 0!==c.detailTemplate&&(a=gj.grid.methods.getColumnPositionByRole(b,"expander"),b.find('tbody tr[data-role="row"]').each(function(){gj.grid.plugins.expandCollapseRows.private.expandDetail(b,$(this).find("td:eq("+a+")"))})),void 0!==c.grouping&&b.find('tbody tr[role="group"]').each(function(){gj.grid.plugins.grouping.private.expandGroup(c,$(this).find("td:eq(0)"))}),b},updateDetails:function(a){var b=this,c=a.data("details"),d=c.html(),e=b.get(a.data("position"));return e&&d&&(c.html().replace(/\{(.+?)\}/g,function(a,c){var f=gj.grid.methods.getColumnInfo(b,c);d=d.replace(a,gj.grid.methods.formatText(e[c],f))}),c.html(d)),b}},events:{detailExpand:function(a,b,c){a.triggerHandler("detailExpand",[b,c])},detailCollapse:function(a,b,c){a.triggerHandler("detailCollapse",[b,c])}},configure:function(a){var b,c=a.data();$.extend(!0,a,gj.grid.plugins.expandCollapseRows.public),void 0!==c.detailTemplate&&(b={title:"",width:c.defaultIconColumnWidth,align:"center",stopPropagation:!0,cssClass:"gj-cursor-pointer gj-unselectable",tmpl:c.icons.expandRow,role:"expander",events:{click:function(b){var c=$(this),d=gj.grid.plugins.expandCollapseRows.private;"details"===c.closest("tr").next().attr("data-role")?d.collapseDetail(a,c,b.data.id):d.expandDetail(a,$(this),b.data.id)}}},c.columns=[b].concat(c.columns),a.on("rowDataBound",function(a,b,d,e){b.data("details",$(c.detailTemplate))}),a.on("columnShow",function(b,c){gj.grid.plugins.expandCollapseRows.private.updateDetailsColSpan(a)}),a.on("columnHide",function(b,c){gj.grid.plugins.expandCollapseRows.private.updateDetailsColSpan(a)}),a.on("rowRemoving",function(b,c,d,e){gj.grid.plugins.expandCollapseRows.private.collapseDetail(a,c.children("td").first(),d)}),a.on("dataBinding",function(){a.collapseAll()}),a.on("pageChanging",function(){a.collapseAll()}),a.on("dataBound",function(){var b,c,d,e,f=a.data();if(f.keepExpandedRows&&$.isArray(f.expandedRows))for(b=0;b '+gj.grid.messages[a.locale].Edit+"",a.inlineEditing.deleteButton='",a.inlineEditing.updateButton='",a.inlineEditing.cancelButton='"):(a.inlineEditing.editButton='",a.inlineEditing.deleteButton='",a.inlineEditing.updateButton='",a.inlineEditing.cancelButton='")},editMode:function(a,b,c,d){var e,f,g,h,i,j=a.data();if("edit"!==b.attr("data-mode"))if(c.editor){if(gj.grid.plugins.inlineEditing.private.updateOtherCells(a,c.mode),e=b.find('div[data-role="display"]').hide(),f=b.find('div[data-role="edit"]').show(),0===f.length&&(f=$('
'),b.append(f)),h=d[c.editField||c.field],g=f.find("input, select, textarea").first(),g.length)switch(c.type){case"checkbox":g.prop("checked",h);break;case"dropdown":g=g.dropdown("value",h);break;default:g.val(h)}else{if("function"==typeof c.editor)c.editor(f,h,d),g=f.find("input, select, textarea").first();else if(i="object"==typeof c.editor?c.editor:{},i.uiLibrary=j.uiLibrary,i.iconsLibrary=j.iconsLibrary,i.fontSize=a.css("font-size"),i.showOnFocus=!1,"checkbox"===c.type&&gj.checkbox)g=$('').prop("checked",h),f.append(g),g.checkbox(i);else if("date"===c.type&&gj.datepicker||"time"===c.type&&gj.timepicker||"datetime"===c.type&&gj.datetimepicker){switch(g=$(''),f.append(g),c.format&&(i.format=c.format),c.type){case"date":g=g.datepicker(i);break;case"time":g=g.timepicker(i);break;case"datetime":g=g.datetimepicker(i)}g.value&&g.value(e.html())}else"dropdown"===c.type&&gj.dropdown?(g=$(''),"materialdesign"===j.uiLibrary&&g.addClass("gj-textbox-md").css("font-size",a.css("font-size")),f.append(g));"command"!==j.inlineEditing.mode&&"editOnly"!==c.mode&&(g=f.find("input, select, textarea").first(),g.on("keyup",function(d){13!==d.keyCode&&27!==d.keyCode||gj.grid.plugins.inlineEditing.private.displayMode(a,b,c)}))}"INPUT"===g.prop("tagName").toUpperCase()&&"TEXT"===g.prop("type").toUpperCase()?gj.core.setCaretAtEnd(g[0]):g.focus(),b.attr("data-mode","edit")}else"managementColumn"===c.role&&(b.find('[role="edit"]').hide(),b.find('[role="delete"]').hide(),b.find('[role="update"]').show(),b.find('[role="cancel"]').show())},displayMode:function(a,b,c,d){var e,f,g,h,i,j,k;"editOnly"!==c.mode&&("edit"===b.attr("data-mode")&&(e=b.find('div[data-role="edit"]'),f=b.find('div[data-role="display"]'),g=e.find("input, select, textarea").first(),"SELECT"===g[0].tagName.toUpperCase()&&g[0].selectedIndex>-1?(h=g[0].options[g[0].selectedIndex].innerHTML,i=g[0].value):h="INPUT"===g[0].tagName.toUpperCase()&&"CHECKBOX"===g[0].type.toUpperCase()?g[0].checked:g.val(),k=b.parent().data("position"),j=a.get(k),!0!==d&&h!==j[c.field]&&(j[c.field]="date"===c.type?gj.core.parseDate(h,c.format):h,c.editField&&(j[c.editField]=i||h),"editOnly"!==c.mode&&(gj.grid.methods.renderDisplayElement(a,f,c,j,gj.grid.methods.getId(j,a.data("primaryKey"),k),"update"),0===b.find("span.gj-dirty").length&&b.prepend($(''))),gj.grid.plugins.inlineEditing.events.cellDataChanged(a,b,c,j,h),gj.grid.plugins.inlineEditing.private.updateChanges(a,c,j,h)),e.hide(),f.show(),b.attr("data-mode","display")),"managementColumn"===c.role&&(b.find('[role="update"]').hide(),b.find('[role="cancel"]').hide(),b.find('[role="edit"]').show(),b.find('[role="delete"]').show()))},updateOtherCells:function(a,b){var c=a.data();"command"!==c.inlineEditing.mode&&"editOnly"!==b&&a.find('div[data-role="edit"]:visible').parent("td").each(function(){var b=$(this),d=c.columns[b.index()];gj.grid.plugins.inlineEditing.private.displayMode(a,b,d)})},updateChanges:function(a,b,c,d){var e,f,g,h=a.data();h.guid||(h.guid=gj.grid.plugins.inlineEditing.private.generateGUID()),h.primaryKey&&(e=JSON.parse(sessionStorage.getItem("gj.grid."+h.guid)),e?f=e.filter(function(a){return a[h.primaryKey]===c[h.primaryKey]}):e=[],f&&1===f.length?f[0][b.field]=d:(g={},g[h.primaryKey]=c[h.primaryKey],h.primaryKey!==b.field&&(g[b.field]=d),e.push(g)),sessionStorage.setItem("gj.grid."+h.guid,JSON.stringify(e)))},generateGUID:function(){function a(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()}},gj.grid.plugins.inlineEditing.public={getChanges:function(){return JSON.parse(sessionStorage.getItem("gj.grid."+this.data().guid))},edit:function(a){var b,c=this.getById(a),d=gj.grid.methods.getRowById(this,a).children("td"),e=this.data("columns");for(b=0;b',previous:'',next:'',last:'',refresh:''}},materialicons:{icons:{first:'',previous:'',next:'',last:'',refresh:''}},fontawesome:{icons:{first:'',previous:'',next:'',last:'',refresh:''}}},private:{init:function(a){var b,c,d,e,f,g,h,i,j,k;if(d=a.data(),d.pager)for(d.params[d.paramNames.page]||(d.params[d.paramNames.page]=1),d.params[d.paramNames.limit]||(d.params[d.paramNames.limit]=d.pager.limit),gj.grid.plugins.pagination.private.localization(d),b=$(''),c=$(""),b.append(c),f=$('
').addClass(d.style.pager.panel).css({float:"left"}),g=$('
').addClass(d.style.pager.panel).css({float:"right"}),c.append(f).append(g),h=$("").append(b),a.append(h),gj.grid.plugins.pagination.private.updatePagerColSpan(a),i=gj.grid.methods.clone(d.pager.leftControls),$.each(i,function(){f.append(this)}),j=gj.grid.methods.clone(d.pager.rightControls),$.each(j,function(){g.append(this)}),e=a.find("tfoot [data-role]"),k=0;k'+(a.icons.first||b.First)+"").attr("title",b.FirstPageTooltip).attr("data-role","page-first"),$('").attr("title",b.PreviousPageTooltip).attr("data-role","page-previous"),$("
"+b.Page+"
"),$(''),$("
"+b.Of+"
"),$('
0
'),$('").attr("title",b.NextPageTooltip).attr("data-role","page-next"),$('").attr("title",b.LastPageTooltip).attr("data-role","page-last"),$('").attr("title",b.Refresh).attr("data-role","page-refresh"),$('')]),void 0===a.pager.rightControls&&(a.pager.rightControls=[$("
"+b.DisplayingRecords+"
"),$('
0
'),$("
-
"),$('
0
'),$("
"+b.Of+"
"),$('
0
')])},localizationBootstrap4:function(a){var b=gj.grid.messages[a.locale];void 0===a.pager.leftControls&&(a.pager.leftControls=[$('").attr("title",b.FirstPageTooltip).attr("data-role","page-first"),$('").attr("title",b.PreviousPageTooltip).attr("data-role","page-previous"),$("
"+b.Page+"
"),$('
'),$("
"+b.Of+"
"),$('
0
'),$('").attr("title",b.NextPageTooltip).attr("data-role","page-next"),$('").attr("title",b.LastPageTooltip).attr("data-role","page-last"),$('").attr("title",b.Refresh).attr("data-role","page-refresh"),$('')]),void 0===a.pager.rightControls&&(a.pager.rightControls=[$("
"+b.DisplayingRecords+" 
"),$('
0
'),$("
-
"),$('
0
'),$("
"+b.Of+"
"),$('
0
')])},localizationMaterialDesign:function(a){var b=gj.grid.messages[a.locale];void 0===a.pager.leftControls&&(a.pager.leftControls=[]),void 0===a.pager.rightControls&&(a.pager.rightControls=[$(''+b.RowsPerPage+""),$('
'),$(' '),$('0'),$('-'),$('0'),$(''+b.Of+""),$('0'),$(' '),$('").attr("title",b.PreviousPageTooltip).attr("data-role","page-previous").addClass(a.icons.first?"gj-button-md-icon":""),$(' '),$('").attr("title",b.NextPageTooltip).attr("data-role","page-next").addClass(a.icons.first?"gj-button-md-icon":"")])},initPagerControl:function(a,b){var c=b.data();switch(a.data("role")){case"page-size":c.pager.sizes&&0").attr("value",this.toString()).text(this.toString()))}),a.change(function(){var a=parseInt(this.value,10);c.params[c.paramNames.limit]=a,gj.grid.plugins.pagination.private.changePage(b,1),gj.grid.plugins.pagination.events.pageSizeChange(b,a)}),a.val(c.params[c.paramNames.limit]),gj.dropdown&&a.dropdown({uiLibrary:c.uiLibrary,iconsLibrary:c.iconsLibrary,fontSize:a.css("font-size"),style:{presenter:"btn btn-default btn-sm"}})):a.hide();break;case"page-refresh":a.on("click",function(){b.reload()})}},reloadPager:function(a,b){var c,d,e,f,g,h,i,j;if(h=a.data(),h.pager){for(c=0===b?0:parseInt(h.params[h.paramNames.page],10),d=parseInt(h.params[h.paramNames.limit],10),e=Math.ceil(b/d),f=0===c?0:d*(c-1)+1,g=f+d>b?b:f+d-1,i=a.find("TFOOT [data-role]"),j=0;je?b.hide():(b.show().off("click").text(d),d===c?b.addClass(f.activeButton):b.removeClass(f.activeButton).on("click",function(){gj.grid.plugins.pagination.private.changePage(a,d)}))},createChangePageHandler:function(a,b){return function(){var b=(a.data(),parseInt(this.value,10));gj.grid.plugins.pagination.private.changePage(a,b)}},changePage:function(a,b){var c=a.data();!1===gj.grid.plugins.pagination.events.pageChanging(a,b)||isNaN(b)||(a.find('TFOOT [data-role="page-number"]').val(b),c.params[c.paramNames.page]=b),a.reload()},updatePagerColSpan:function(a){var b=a.find('tfoot > tr[data-role="pager"] > th');b&&b.length&&b.attr("colspan",gj.grid.methods.countVisibleColumns(a))},isLastRecordVisible:function(a){var b=!0,c=a.data(),d=parseInt(c.params[c.paramNames.limit],10),e=parseInt(c.params[c.paramNames.page],10),f=a.count();return d&&e&&(b=(e-1)*d+f===c.totalRecords),b}},public:{getAll:function(a){var b,c,d,e=this.data();return $.isArray(e.dataSource)?a?e.dataSource:e.params[e.paramNames.limit]&&e.params[e.paramNames.page]?(b=parseInt(e.params[e.paramNames.limit],10),c=parseInt(e.params[e.paramNames.page],10),d=(c-1)*b,e.records.slice(d,d+b)):e.records:e.records}},events:{pageSizeChange:function(a,b){a.triggerHandler("pageSizeChange",[b])},pageChanging:function(a,b){a.triggerHandler("pageChanging",[b])}},configure:function(a,b,c){$.extend(!0,a,gj.grid.plugins.pagination.public);a.data();c.pager&&(gj.grid.methods.isLastRecordVisible=gj.grid.plugins.pagination.private.isLastRecordVisible,a.on("initialized",function(){gj.grid.plugins.pagination.private.init(a)}),a.on("dataBound",function(b,c,d){gj.grid.plugins.pagination.private.reloadPager(a,d)}),a.on("columnShow",function(){gj.grid.plugins.pagination.private.updatePagerColSpan(a)}),a.on("columnHide",function(){gj.grid.plugins.pagination.private.updatePagerColSpan(a)}))}},gj.grid.plugins.responsiveDesign={config:{base:{resizeCheckInterval:500,responsive:!1,showHiddenColumnsAsDetails:!1,defaultColumn:{priority:void 0,minWidth:250},style:{rowDetailItem:""}},bootstrap:{style:{rowDetailItem:"col-lg-4"}}},private:{orderColumns:function(a){var b=[];if(a.columns&&a.columns.length){for(i=0;ib.priority&&(c=1),c})}return b},updateDetails:function(a){var b,c,d,e,f,g,h,i,j;for(b=a.find('tbody > tr[data-role="row"]'),c=a.data(),d=0;d"+(i.title||i.field)+": {"+i.field+"}",h&&h.length?h.empty().html(j):(h=$('
').html(j),h.addClass(c.style.rowDetailItem),g&&g.length||(g=$('
')),g.append(h))):h&&h.length&&h.remove();a.updateDetails(f)}}},public:{oldWidth:void 0,resizeCheckIntervalId:void 0,makeResponsive:function(){var a,b,c=0,d=this.data(),e=gj.grid.plugins.responsiveDesign.private.orderColumns(d);for(a=0;atr>th:eq("+e[a].position+")"),b.is(":visible")&&e[a].minWidthtr>th:eq("+e[a].position+")"),!b.is(":visible")&&e[a].minWidth<=c&&(this.showColumn(e[a].field),c-=b.width());for(a=e.length-1;a>=0;a--)b=this.find("thead>tr>th:eq("+e[a].position+")"),b.is(":visible")&&e[a].priority&&e[a].minWidth>b.outerWidth()&&this.hideColumn(e[a].field);return this}},events:{resize:function(a,b,c){a.triggerHandler("resize",[b,c])}},configure:function(a,b,c){$.extend(!0,a,gj.grid.plugins.responsiveDesign.public),b.responsive&&(a.on("initialized",function(){a.makeResponsive(),a.oldWidth=a.width(),a.resizeCheckIntervalId=setInterval(function(){var b=a.width();b!==a.oldWidth&&gj.grid.plugins.responsiveDesign.events.resize(a,b,a.oldWidth),a.oldWidth=b},b.resizeCheckInterval)}),a.on("destroy",function(){a.resizeCheckIntervalId&&clearInterval(a.resizeCheckIntervalId)}),a.on("resize",function(){a.makeResponsive()})),b.showHiddenColumnsAsDetails&&gj.grid.plugins.expandCollapseRows&&(a.on("dataBound",function(){gj.grid.plugins.responsiveDesign.private.updateDetails(a)}),a.on("columnHide",function(){gj.grid.plugins.responsiveDesign.private.updateDetails(a)}),a.on("columnShow",function(){gj.grid.plugins.responsiveDesign.private.updateDetails(a)}),a.on("rowDataBound",function(){gj.grid.plugins.responsiveDesign.private.updateDetails(a)}))}},gj.grid.plugins.toolbar={config:{base:{toolbarTemplate:void 0,title:void 0,style:{toolbar:"gj-grid-md-toolbar"}},bootstrap:{style:{toolbar:"gj-grid-bootstrap-toolbar"}},bootstrap4:{style:{toolbar:"gj-grid-bootstrap-4-toolbar"}}},private:{init:function(a){var b,c,d;b=a.data(),c=a.prev('div[data-role="toolbar"]'),(void 0!==b.toolbarTemplate||void 0!==b.title||c.length>0)&&(0===c.length&&(c=$('
'),a.before(c)),c.addClass(b.style.toolbar),0===c.children().length&&b.toolbarTemplate&&c.append(b.toolbarTemplate),d=c.find('[data-role="title"]'),0===d.length&&(d=$('
'),c.prepend(d)),b.title&&d.text(b.title),b.minWidth&&c.css("min-width",b.minWidth))}},public:{title:function(a){var b=this.parent().find('div[data-role="toolbar"] [data-role="title"]');return void 0!==a?(b.text(a),this):b.text()}},configure:function(a){$.extend(!0,a,gj.grid.plugins.toolbar.public),a.on("initialized",function(){gj.grid.plugins.toolbar.private.init(a)}),a.on("destroying",function(){a.prev('[data-role="toolbar"]').remove()})}},gj.grid.plugins.resizableColumns={config:{base:{resizableColumns:!1}},private:{init:function(a,b){var c,d,e,f,g,h;if(c=a.find('thead tr[data-role="caption"] th'),c.length){for(e=0;e'),h=parseInt(d.css("padding-right"),10)+3,g=$('').css("margin-right","-"+h+"px"),g.draggable({start:function(){a.addClass("gj-unselectable"),a.addClass("gj-grid-resize-cursor")},stop:function(){a.removeClass("gj-unselectable"),a.removeClass("gj-grid-resize-cursor"),this.style.removeProperty("top"),this.style.removeProperty("left"),this.style.removeProperty("position")},drag:gj.grid.plugins.resizableColumns.private.createResizeHandle(a,d,b.columns[e])}),d.append(f.append(g));for(e=0;e]+>/g," ")+'",');for(e+=d.slice(0,d.length-1)+"\r\n",b=0;b-1?c.href=URL.createObjectURL(new Blob([this.getCSV(b)],{type:"text/csv;charset=utf-8;"})):c.href="data:text/csv;charset=utf-8,"+escape(this.getCSV(b)),c.click(),document.body.removeChild(c),this},isColumnApplicable:function(a){return!0!==a.hidden&&!a.role}},configure:function(a){$.extend(!0,a,gj.grid.plugins.export.public)}},gj.grid.plugins.columnReorder={config:{base:{columnReorder:!1,dragReady:!1,style:{targetRowIndicatorTop:"gj-grid-row-reorder-indicator-top",targetRowIndicatorBottom:"gj-grid-row-reorder-indicator-bottom"}}},private:{init:function(a){var b,c,d=a.find("thead tr th");for(b=0;b');for(b=0;b"),e.columns[b].filterable&&(d=$(''),"onchange"===e.headerFilter.type?d.on("input propertychange",function(b){gj.grid.plugins.headerFilter.private.reload(a,$(this))}):(d.on("keypress",function(b){13==b.which&&gj.grid.plugins.headerFilter.private.reload(a,$(this))}),d.on("blur",function(b){gj.grid.plugins.headerFilter.private.reload(a,$(this))})),c.append(d)),e.columns[b].hidden&&c.hide(),f.append(c);a.children("thead").append(f)},reload:function(a,b){var c={};c[b.data("field")]=b.val(),a.reload(c)}},public:{},events:{},configure:function(a,b,c){$.extend(!0,a,gj.grid.plugins.headerFilter.public);a.data();c.headerFilter&&a.on("initialized",function(){gj.grid.plugins.headerFilter.private.init(a)})}},gj.grid.plugins.grouping={config:{base:{paramNames:{groupBy:"groupBy",groupByDirection:"groupByDirection"},grouping:{groupBy:void 0,direction:"asc"},icons:{expandGroup:'',collapseGroup:''}},fontawesome:{icons:{expandGroup:'',collapseGroup:''}},glyphicons:{icons:{expandGroup:'',collapseGroup:''}}},private:{init:function(a){var b,c=a.data();b=void 0,a.on("rowDataBound",function(d,e,f,g){if(b!==g[c.grouping.groupBy]||1===e[0].rowIndex){var h=gj.grid.methods.countVisibleColumns(a)-1,i=$(''),j=$('');j.append('
'+c.icons.collapseGroup+"
"),j.on("click",gj.grid.plugins.grouping.private.createExpandCollapseHandler(c)),i.append(j),i.append('
'+c.grouping.groupBy+": "+g[c.grouping.groupBy]+"
"),i.insertBefore(e),b=g[c.grouping.groupBy]}e.show()}),c.params[c.paramNames.groupBy]=c.grouping.groupBy,c.params[c.paramNames.groupByDirection]=c.grouping.direction},grouping:function(a,b){var c=a.data();b.sort(gj.grid.methods.createDefaultSorter(c.grouping.direction,c.grouping.groupBy))},createExpandCollapseHandler:function(a){return function(b){var c=$(this),d=gj.grid.plugins.grouping.private;"row"===c.closest("tr").next(":visible").data("role")?d.collapseGroup(a,c):d.expandGroup(a,c)}},collapseGroup:function(a,b){var c=b.children('div[data-role="display"]');b.closest("tr").nextUntil('[role="group"]').hide(),c.empty().append(a.icons.expandGroup)},expandGroup:function(a,b){var c=b.children('div[data-role="display"]');b.closest("tr").nextUntil('[role="group"]').show(),c.empty().append(a.icons.collapseGroup)}},public:{},configure:function(a){var b,c=a.data();$.extend(!0,a,gj.grid.plugins.grouping.public),c.grouping&&c.grouping.groupBy&&(b={title:"",width:c.defaultIconColumnWidth,align:"center",stopPropagation:!0,cssClass:"gj-cursor-pointer gj-unselectable"},c.columns=[b].concat(c.columns),a.on("initialized",function(){gj.grid.plugins.grouping.private.init(a)}),a.on("dataFiltered",function(b,c){gj.grid.plugins.grouping.private.grouping(a,c)}))}},gj.grid.messages["en-us"]={First:"First",Previous:"Previous",Next:"Next",Last:"Last",Page:"Page",FirstPageTooltip:"First Page",PreviousPageTooltip:"Previous Page",NextPageTooltip:"Next Page",LastPageTooltip:"Last Page",Refresh:"Refresh",Of:"of",DisplayingRecords:"Displaying records",RowsPerPage:"Rows per page:",Edit:"Edit",Delete:"Delete",Update:"Update",Cancel:"Cancel",NoRecordsFound:"No records found.",Loading:"Loading..."},gj.tree={plugins:{}},gj.tree.config={base:{params:{},autoLoad:!0,selectionType:"single",cascadeSelection:!1,dataSource:void 0,primaryKey:void 0,textField:"text",childrenField:"children",hasChildrenField:"hasChildren",imageCssClassField:"imageCssClass",imageUrlField:"imageUrl",imageHtmlField:"imageHtml",disabledField:"disabled",width:void 0,border:!1,uiLibrary:"materialdesign",iconsLibrary:"materialicons",autoGenId:1,autoGenFieldName:"autoId_b5497cc5-7ef3-49f5-a7dc-4a932e1aee4a",indentation:24,style:{wrapper:"gj-unselectable",list:"gj-list gj-list-md",item:void 0,active:"gj-list-md-active",leafIcon:void 0,border:"gj-tree-md-border"},icons:{expand:'',collapse:''}},bootstrap:{style:{wrapper:"gj-unselectable gj-tree-bootstrap-3",list:"gj-list gj-list-bootstrap list-group",item:"list-group-item",active:"active",border:"gj-tree-bootstrap-border"},iconsLibrary:"glyphicons"},bootstrap4:{style:{wrapper:"gj-unselectable gj-tree-bootstrap-4",list:"gj-list gj-list-bootstrap",item:"list-group-item",active:"active",border:"gj-tree-bootstrap-border"},icons:{expand:'',collapse:''}},materialicons:{style:{expander:"gj-tree-material-icons-expander"}},fontawesome:{style:{expander:"gj-tree-font-awesome-expander"},icons:{expand:'',collapse:''}},glyphicons:{style:{expander:"gj-tree-glyphicons-expander"},icons:{expand:'',collapse:''}}},gj.tree.events={initialized:function(a){a.triggerHandler("initialized")},dataBinding:function(a){a.triggerHandler("dataBinding")},dataBound:function(a){a.triggerHandler("dataBound")},select:function(a,b,c){return a.triggerHandler("select",[b,c])},unselect:function(a,b,c){return a.triggerHandler("unselect",[b,c])},expand:function(a,b,c){return a.triggerHandler("expand",[b,c])},collapse:function(a,b,c){return a.triggerHandler("collapse",[b,c])},enable:function(a,b){return a.triggerHandler("enable",[b])},disable:function(a,b){return a.triggerHandler("disable",[b])},destroying:function(a){return a.triggerHandler("destroying")},nodeDataBound:function(a,b,c,d){return a.triggerHandler("nodeDataBound",[b,c,d])}},gj.tree.methods={init:function(a){return gj.widget.prototype.init.call(this,a,"tree"),gj.tree.methods.initialize.call(this),this.data("autoLoad")&&this.reload(),this},initialize:function(){var a=this.data(),b=$('
    ');this.empty().addClass(a.style.wrapper).append(b),a.width&&this.width(a.width),a.border&&this.addClass(a.style.border),gj.tree.events.initialized(this)},useHtmlDataSource:function(a,b){b.dataSource=[]},render:function(a,b){var c;return b&&("string"==typeof b&&JSON&&(b=JSON.parse(b)),c=a.data(),c.records=b,c.primaryKey||gj.tree.methods.genAutoId(c,c.records),gj.tree.methods.loadData(a)),a},filter:function(a){return a.data().dataSource},genAutoId:function(a,b){var c;for(c=0;c').addClass(k.style.item),$wrapper=$('
    '),$expander=$('').addClass(k.style.expander),$display=$(''+c[k.textField]+""),hasChildren=void 0!==c[k.hasChildrenField]&&"true"===c[k.hasChildrenField].toString().toLowerCase(),disabled=void 0!==c[k.disabledField]&&"true"===c[k.disabledField].toString().toLowerCase(),k.indentation&&$wrapper.append(''),disabled?gj.tree.methods.disableNode(a,g):($expander.on("click",gj.tree.methods.expanderClickHandler(a)),$display.on("click",gj.tree.methods.displayClickHandler(a))),$wrapper.append($expander),$wrapper.append($display),g.append($wrapper),e?b.find("li:eq("+(e-1)+")").before(g):b.append(g),k.imageCssClassField&&c[k.imageCssClassField]?(i=$(''),i.insertBefore($display)):k.imageUrlField&&c[k.imageUrlField]?(i=$(''),i.insertBefore($display),j=$(''),j.attr("width",i.width()).attr("height",i.height()),i.append(j)):k.imageHtmlField&&c[k.imageHtmlField]&&(i=$(''+c[k.imageHtmlField]+""),i.insertBefore($display)),c[k.childrenField]&&c[k.childrenField].length||hasChildren){if($expander.empty().append(k.icons.expand),h=$("
      ").addClass(k.style.list).addClass("gj-hidden"),g.append(h),c[k.childrenField]&&c[k.childrenField].length)for(f=0;f[data-role="wrapper"]>[data-role="expander"]'),g=a.data(),h=b.attr("data-id"),i=b.children("ul");if(!1!==gj.tree.events.expand(a,b,h)&&i&&i.length&&(i.show(),f.attr("data-mode","open"),f.empty().append(g.icons.collapse),c))for(d=b.find("ul>li"),e=0;e[data-role="wrapper"]>[data-role="expander"]'),g=a.data(),h=b.attr("data-id"),i=b.children("ul");if(!1!==gj.tree.events.collapse(a,b,h)&&i&&i.length&&(i.hide(),f.attr("data-mode","close"),f.empty().append(g.icons.expand),c))for(d=b.find("ul>li"),e=0;eli");for(b=0;bli");for(b=0;bli");for(b=0;bli"),d=0;dli");for(b=0;bli"),d=0;d[data-role="wrapper"]>[data-role="display"]').text()){e=d;break}if(d.has("ul")&&(e=gj.tree.methods.getNodeByText(d.children("ul"),b)))break}return e},addNode:function(a,b,c,d){var e,f,g=a.data();return c&&c.length?("li"===c[0].tagName.toLowerCase()&&(0===c.children("ul").length&&(c.find('[data-role="expander"]').empty().append(g.icons.collapse),c.append($("
        ").addClass(g.style.list))),c=c.children("ul")),f=a.getDataById(c.parent().data("id")),f[g.childrenField]||(f[g.childrenField]=[]),f[g.childrenField].push(b)):(c=a.children("ul"),a.data("records").push(b)),e=c.parentsUntil('[data-type="tree"]',"ul").length+1,g.primaryKey||gj.tree.methods.genAutoId(g,[b]),gj.tree.methods.appendNode(a,c,b,e,d),a},remove:function(a,b){return gj.tree.methods.removeDataById(a,b.attr("data-id"),a.data("records")),b.remove(),a},removeDataById:function(a,b,c){var d,e=a.data();for(d=0;d[data-role="wrapper"]>[data-role="display"]').html(c[d.textField]),gj.tree.events.nodeDataBound(a,e,b,c),a},getChildren:function(a,b,c){var d,e,f=[],c=void 0===c||c;for(e=c?b.find("ul li"):b.find(">ul>li"),d=0;dli");for(b=0;b[data-role="wrapper"]>[data-role="expander"]'),g=b.find('>[data-role="wrapper"]>[data-role="display"]'),c=void 0===c||c;if(b.removeClass("disabled"),f.on("click",gj.tree.methods.expanderClickHandler(a)),g.on("click",gj.tree.methods.displayClickHandler(a)),gj.tree.events.enable(a,b),c)for(e=b.find("ul>li"),d=0;dli");for(b=0;b[data-role="wrapper"]>[data-role="expander"]'),g=b.find('>[data-role="wrapper"]>[data-role="display"]'),c=void 0===c||c;if(b.addClass("disabled"),f.off("click"),g.off("click"),gj.tree.events.disable(a,b),c)for(e=b.find("ul>li"),d=0;d [data-role="wrapper"] > [data-role="checkbox"]').length&&(e=a.data(),f=b.find('> [data-role="wrapper"] > [data-role="expander"]'),g=$(''),h=$('').append(g),i=void 0!==d[e.disabledField]&&"true"===d[e.disabledField].toString().toLowerCase(),g=g.checkbox({uiLibrary:e.uiLibrary,iconsLibrary:e.iconsLibrary,change:function(c,e){gj.tree.plugins.checkboxes.events.checkboxChange(a,b,d,g.state())}}),i&&g.prop("disabled",!0),d[e.checkedField]&&g.state("checked"),g.on("click",function(a){var b=g.closest("li"),c=g.state();e.cascadeCheck&&(gj.tree.plugins.checkboxes.private.updateChildrenState(b,c),gj.tree.plugins.checkboxes.private.updateParentState(b,c))}),f.after(h))},updateParentState:function(a,b){var c,d,e,f,g,h;c=a.parent("ul").parent("li"),1===c.length&&(d=a.parent("ul").parent("li").find('> [data-role="wrapper"] > [data-role="checkbox"] input[type="checkbox"]'),e=a.siblings().find('> [data-role="wrapper"] > span[data-role="checkbox"] input[type="checkbox"]'),f="checked"===b,g="unchecked"===b,h="indeterminate",$.each(e,function(){var a=$(this).checkbox("state");f&&"checked"!==a&&(f=!1),g&&"unchecked"!==a&&(g=!1)}),f&&!g&&(h="checked"),!f&&g&&(h="unchecked"),d.checkbox("state",h),gj.tree.plugins.checkboxes.private.updateParentState(c,d.checkbox("state")))},updateChildrenState:function(a,b){var c=a.find('ul li [data-role="wrapper"] [data-role="checkbox"] input[type="checkbox"]');c.length>0&&$.each(c,function(){$(this).checkbox("state",b)})},update:function(a,b,c){var d=b.find('[data-role="checkbox"] input[type="checkbox"]').first();$(d).checkbox("state",c),a.data().cascadeCheck&&(gj.tree.plugins.checkboxes.private.updateChildrenState(b,c),gj.tree.plugins.checkboxes.private.updateParentState(b,c))}},public:{getCheckedNodes:function(){var a=[],b=this.find('li [data-role="checkbox"] input[type="checkbox"]');return $.each(b,function(){var b=$(this);"checked"===b.checkbox("state")&&a.push(b.closest("li").data("id"))}),a},checkAll:function(){var a=this.find('li [data-role="checkbox"] input[type="checkbox"]');return $.each(a,function(){$(this).checkbox("state","checked")}),this},uncheckAll:function(){var a=this.find('li [data-role="checkbox"] input[type="checkbox"]');return $.each(a,function(){$(this).checkbox("state","unchecked")}),this},check:function(a){return gj.tree.plugins.checkboxes.private.update(this,a,"checked"),this},uncheck:function(a){return gj.tree.plugins.checkboxes.private.update(this,a,"unchecked"),this}},events:{checkboxChange:function(a,b,c,d){return a.triggerHandler("checkboxChange",[b,c,d])}},configure:function(a){a.data("checkboxes")&&gj.checkbox&&($.extend(!0,a,gj.tree.plugins.checkboxes.public),a.on("nodeDataBound",function(b,c,d,e){gj.tree.plugins.checkboxes.private.nodeDataBound(a,c,d,e)}),a.on("dataBound",function(){gj.tree.plugins.checkboxes.private.dataBound(a)}),a.on("enable",function(a,b){b.find('>[data-role="wrapper"]>[data-role="checkbox"] input[type="checkbox"]').prop("disabled",!1)}),a.on("disable",function(a,b){b.find('>[data-role="wrapper"]>[data-role="checkbox"] input[type="checkbox"]').prop("disabled",!0)}))}},gj.tree.plugins.dragAndDrop={config:{base:{dragAndDrop:void 0,style:{dragEl:"gj-tree-drag-el gj-tree-md-drag-el",dropAsChildIcon:"gj-cursor-pointer gj-icon plus",dropAbove:"gj-tree-drop-above",dropBelow:"gj-tree-drop-below"}},bootstrap:{style:{dragEl:"gj-tree-drag-el gj-tree-bootstrap-drag-el",dropAsChildIcon:"glyphicon glyphicon-plus",dropAbove:"drop-above",dropBelow:"drop-below"}},bootstrap4:{style:{dragEl:"gj-tree-drag-el gj-tree-bootstrap-drag-el",dropAsChildIcon:"gj-cursor-pointer gj-icon plus",dropAbove:"drop-above",dropBelow:"drop-below"}}},private:{nodeDataBound:function(a,b){var c=b.children('[data-role="wrapper"]'),d=b.find('>[data-role="wrapper"]>[data-role="display"]');c.length&&d.length&&(d.on("mousedown",gj.tree.plugins.dragAndDrop.private.createNodeMouseDownHandler(a)),d.on("mousemove",gj.tree.plugins.dragAndDrop.private.createNodeMouseMoveHandler(a,b,d)),d.on("mouseup",gj.tree.plugins.dragAndDrop.private.createNodeMouseUpHandler(a)))},createNodeMouseDownHandler:function(a){return function(b){a.data("dragReady",!0)}},createNodeMouseUpHandler:function(a){return function(b){a.data("dragReady",!1)}},createNodeMouseMoveHandler:function(a,b,c){return function(d){if(a.data("dragReady")){var e,f,g,h,i=a.data();a.data("dragReady",!1),e=c.clone().wrap('
        ').closest("div").wrap('
      • ').closest("li").wrap('
          ').closest("ul"),$("body").append(e),e.attr("data-role","draggable-clone").addClass("gj-unselectable").addClass(i.style.dragEl),e.find('[data-role="wrapper"]').prepend(''),e.draggable({drag:gj.tree.plugins.dragAndDrop.private.createDragHandler(a,b,c),stop:gj.tree.plugins.dragAndDrop.private.createDragStopHandler(a,b,c)}),f=c.parent(),g=c.offset().top,g-=parseInt(f.css("border-top-width"))+parseInt(f.css("margin-top"))+parseInt(f.css("padding-top")),h=c.offset().left,h-=parseInt(f.css("border-left-width"))+parseInt(f.css("margin-left"))+parseInt(f.css("padding-left")),h-=e.find('[data-role="indicator"]').outerWidth(!0),e.css({position:"absolute",top:g,left:h,width:c.outerWidth(!0)}),"true"===c.attr("data-droppable")&&c.droppable("destroy"),gj.tree.plugins.dragAndDrop.private.getTargetDisplays(a,b,c).each(function(){var a=$(this);"true"===a.attr("data-droppable")&&a.droppable("destroy"),a.droppable()}),gj.tree.plugins.dragAndDrop.private.getTargetDisplays(a,b).each(function(){var a=$(this);"true"===a.attr("data-droppable")&&a.droppable("destroy"),a.droppable()}),e.trigger("mousedown")}}},getTargetDisplays:function(a,b,c){return a.find('[data-role="display"]').not(c).not(b.find('[data-role="display"]'))},getTargetWrappers:function(a,b){return a.find('[data-role="wrapper"]').not(b.find('[data-role="wrapper"]'))},createDragHandler:function(a,b,c){var d=gj.tree.plugins.dragAndDrop.private.getTargetDisplays(a,b,c),e=gj.tree.plugins.dragAndDrop.private.getTargetWrappers(a,b),f=a.data();return function(a,b,c){var g=$(this),h=!1;d.each(function(){var a,b=$(this);if(b.droppable("isOver",c))return a=g.find('[data-role="indicator"]'),f.style.dropAsChildIcon?a.addClass(f.style.dropAsChildIcon):a.text("+"),h=!0,!1;g.find('[data-role="indicator"]').removeClass(f.style.dropAsChildIcon).empty()}),e.each(function(){var a,b=$(this);!h&&b.droppable("isOver",c)?(a=b.position().top+b.outerHeight()/2,c.y").addClass(f.style.list),i.append(c)),!1!==gj.tree.plugins.dragAndDrop.events.nodeDrop(a,b.data("id"),i.data("id"),c.children("li").length+1)&&(c.append(b),h=a.getDataById(b.data("id")),gj.tree.methods.removeDataById(a,b.data("id"),f.records),k=a.getDataById(c.parent().data("id")),void 0===k[f.childrenField]&&(k[f.childrenField]=[]),k[f.childrenField].push(h),gj.tree.plugins.dragAndDrop.private.refresh(a,b,i,j)),l=!0,!1;d.droppable("destroy")}),l||e.each(function(){var c,d,e,k=$(this);if(k.droppable("isOver",g))return i=k.closest("li"),j=b.parent("ul").parent("li"),c=g.y [data-role="wrapper"] > [data-role="expander"]');d.hasChildren&&f.empty().append(e.icons.expand)},createDoneHandler:function(a,b){return function(c){var d,e,f,g=a.data();if("string"==typeof c&&JSON&&(c=JSON.parse(c)),c&&c.length){for(f=b.children("ul"),0===f.length&&(f=$("
            ").addClass(g.style.list),b.append(f)),d=0;d[data-role="wrapper"]>[data-role="expander"]'),e.attr("data-mode","open"),e.empty().append(g.icons.collapse),gj.tree.events.dataBound(a)}}},expand:function(a,b,c){var d,e=a.data(),f={},g=b.find(">ul>li");g&&g.length||"string"==typeof e.dataSource&&(f[e.paramNames.parentId]=c,d={url:e.dataSource,data:f},a.xhr&&a.xhr.abort(),a.xhr=$.ajax(d).done(gj.tree.plugins.lazyLoading.private.createDoneHandler(a,b)).fail(a.createErrorHandler()))}},public:{},events:{},configure:function(a,b,c){c.lazyLoading&&(a.on("nodeDataBound",function(b,c,d,e){gj.tree.plugins.lazyLoading.private.nodeDataBound(a,c,d,e)}),a.on("expand",function(b,c,d){gj.tree.plugins.lazyLoading.private.expand(a,c,d)}))}},gj.checkbox={plugins:{}},gj.checkbox.config={base:{uiLibrary:"materialdesign",iconsLibrary:"materialicons",style:{wrapperCssClass:"gj-checkbox-md",spanCssClass:void 0}},bootstrap:{style:{wrapperCssClass:"gj-checkbox-bootstrap"},iconsLibrary:"glyphicons"},bootstrap4:{style:{wrapperCssClass:"gj-checkbox-bootstrap gj-checkbox-bootstrap-4"},iconsLibrary:"materialicons"},materialicons:{style:{iconsCssClass:"gj-checkbox-material-icons",spanCssClass:"gj-icon"}},glyphicons:{style:{iconsCssClass:"gj-checkbox-glyphicons",spanCssClass:""}},fontawesome:{style:{iconsCssClass:"gj-checkbox-fontawesome",spanCssClass:"fa"}}},gj.checkbox.methods={init:function(a){var b=this;return gj.widget.prototype.init.call(this,a,"checkbox"),b.attr("data-checkbox","true"),gj.checkbox.methods.initialize(b),b},initialize:function(a){var b,c,d=a.data();d.style.wrapperCssClass&&(b=$(''),a.attr("id")&&b.attr("for",a.attr("id")),a.wrap(b),c=$(""),d.style.spanCssClass&&c.addClass(d.style.spanCssClass),a.parent().append(c))},state:function(a,b){return b?("checked"===b?(a.prop("indeterminate",!1),a.prop("checked",!0)):"unchecked"===b?(a.prop("indeterminate",!1),a.prop("checked",!1)):"indeterminate"===b&&(a.prop("checked",!0),a.prop("indeterminate",!0)),gj.checkbox.events.change(a,b),a):b=a.prop("indeterminate")?"indeterminate":a.prop("checked")?"checked":"unchecked"},toggle:function(a){return"checked"==a.state()?a.state("unchecked"):a.state("checked"),a},destroy:function(a){return"true"===a.attr("data-checkbox")&&(a.removeData(),a.removeAttr("data-guid"),a.removeAttr("data-checkbox"),a.off(),a.next("span").remove(),a.unwrap()),a}},gj.checkbox.events={change:function(a,b){return a.triggerHandler("change",[b])}},gj.checkbox.widget=function(a,b){var c=this,d=gj.checkbox.methods;return c.toggle=function(){return d.toggle(this)},c.state=function(a){return d.state(this,a)},c.destroy=function(){return d.destroy(this)},$.extend(a,c),"true"!==a.attr("data-checkbox")&&d.init.call(a,b),a},gj.checkbox.widget.prototype=new gj.widget,gj.checkbox.widget.constructor=gj.checkbox.widget,function(a){a.fn.checkbox=function(a){var b;if(this&&this.length){if("object"!=typeof a&&a){if(b=new gj.checkbox.widget(this,null),b[a])return b[a].apply(this,Array.prototype.slice.call(arguments,1));throw"Method "+a+" does not exist."}return new gj.checkbox.widget(this,a)}}}(jQuery),gj.editor={plugins:{},messages:{}},gj.editor.config={base:{height:300,width:void 0,uiLibrary:"materialdesign",iconsLibrary:"materialicons",locale:"en-us",buttons:void 0,style:{wrapper:"gj-editor gj-editor-md",buttonsGroup:"gj-button-md-group",button:"gj-button-md",buttonActive:"active"}},bootstrap:{style:{wrapper:"gj-editor gj-editor-bootstrap",buttonsGroup:"btn-group",button:"btn btn-default gj-cursor-pointer",buttonActive:"active"}},bootstrap4:{style:{wrapper:"gj-editor gj-editor-bootstrap",buttonsGroup:"btn-group",button:"btn btn-outline-secondary gj-cursor-pointer",buttonActive:"active"}},materialicons:{icons:{bold:'',italic:'',strikethrough:'',underline:'',listBulleted:'',listNumbered:'',indentDecrease:'',indentIncrease:'',alignLeft:'',alignCenter:'',alignRight:'',alignJustify:'',undo:'',redo:''}},fontawesome:{icons:{bold:'',italic:'',strikethrough:'',underline:'',listBulleted:'',listNumbered:'',indentDecrease:'',indentIncrease:'',alignLeft:'',alignCenter:'',alignRight:'',alignJustify:'',undo:'',redo:''}}},gj.editor.methods={init:function(a){return gj.widget.prototype.init.call(this,a,"editor"),this.attr("data-editor","true"),gj.editor.methods.initialize(this),this},initialize:function(a){var b,c,d,e,f,g=this,h=a.data();if(a.hide(),"wrapper"!==a[0].parentElement.attributes.role&&(d=document.createElement("div"),d.setAttribute("role","wrapper"),a[0].parentNode.insertBefore(d,a[0]),d.appendChild(a[0])),gj.editor.methods.localization(h),$(d).addClass(h.style.wrapper),h.width&&$(d).width(h.width),e=$(d).children('div[role="body"]'),0===e.length&&(e=$('
            '),$(d).append(e),a[0].innerText&&(e[0].innerHTML=a[0].innerText)),e.attr("contenteditable",!0),e.on("keydown",function(b){var c=event.keyCode||event.charCode;!1===gj.editor.events.changing(a)&&8!==c&&46!==c&&b.preventDefault()}),e.on("mouseup keyup mouseout cut paste",function(b){g.updateToolbar(a,f),gj.editor.events.changed(a),a.html(e.html())}),f=$(d).children('div[role="toolbar"]'),0===f.length){f=$('
            '),e.before(f);for(var i in h.buttons){b=$("
            ").addClass(h.style.buttonsGroup);for(var j in h.buttons[i])c=$(h.buttons[i][j]),c.on("click",function(){gj.editor.methods.executeCmd(a,e,f,$(this))}),b.append(c);f.append(b)}}e.height(h.height-gj.core.height(f[0],!0))},localization:function(a){var b=gj.editor.messages[a.locale];void 0===a.buttons&&(a.buttons=[['",'",'",'"],['",'",'",'"],['",'",'",'"],['",'"]])},updateToolbar:function(a,b){var c=a.data();$buttons=b.find("[role]").each(function(){var a=$(this),b=a.attr("role");b&&document.queryCommandEnabled(b)&&"true"===document.queryCommandValue(b)?a.addClass(c.style.buttonActive):a.removeClass(c.style.buttonActive)})},executeCmd:function(a,b,c,d){b.focus(),document.execCommand(d.attr("role"),!1),gj.editor.methods.updateToolbar(a,c)},content:function(a,b){var c=a.parent().children('div[role="body"]');return void 0===b?c.html():c.html(b)},destroy:function(a){var b;return"true"===a.attr("data-editor")&&(b=a.parent(),b.children('div[role="body"]').remove(),b.children('div[role="toolbar"]').remove(),a.unwrap(),a.removeData(),a.removeAttr("data-guid"),a.removeAttr("data-editor"),a.off(),a.show()),a}},gj.editor.events={changing:function(a){return a.triggerHandler("changing")},changed:function(a){return a.triggerHandler("changed")}},gj.editor.widget=function(a,b){var c=this,d=gj.editor.methods;return c.content=function(a){return d.content(this,a)},c.destroy=function(){return d.destroy(this)},$.extend(a,c),"true"!==a.attr("data-editor")&&d.init.call(a,b),a},gj.editor.widget.prototype=new gj.widget,gj.editor.widget.constructor=gj.editor.widget,function(a){a.fn.editor=function(a){var b;if(this&&this.length){if("object"!=typeof a&&a){if(b=new gj.editor.widget(this,null),b[a])return b[a].apply(this,Array.prototype.slice.call(arguments,1));throw"Method "+a+" does not exist."}return new gj.editor.widget(this,a)}}}(jQuery),gj.editor.messages["en-us"]={bold:"Bold",italic:"Italic",strikethrough:"Strikethrough",underline:"Underline",listBulleted:"List Bulleted",listNumbered:"List Numbered",indentDecrease:"Indent Decrease",indentIncrease:"Indent Increase",alignLeft:"Align Left",alignCenter:"Align Center",alignRight:"Align Right",alignJustify:"Align Justify",undo:"Undo",redo:"Redo"},gj.dropdown={plugins:{}},gj.dropdown.config={base:{dataSource:void 0,textField:"text",valueField:"value",selectedField:"selected",width:void 0,maxHeight:"auto",placeholder:void 0,fontSize:void 0,uiLibrary:"materialdesign",iconsLibrary:"materialicons",icons:{dropdown:'',dropup:''},style:{wrapper:"gj-dropdown gj-dropdown-md gj-unselectable",list:"gj-list gj-list-md gj-dropdown-list-md",active:"gj-list-md-active"}},bootstrap:{style:{wrapper:"gj-dropdown gj-dropdown-bootstrap gj-dropdown-bootstrap-3 gj-unselectable",presenter:"btn btn-default",list:"gj-list gj-list-bootstrap gj-dropdown-list-bootstrap list-group",item:"list-group-item",active:"active"},iconsLibrary:"glyphicons"},bootstrap4:{style:{wrapper:"gj-dropdown gj-dropdown-bootstrap gj-dropdown-bootstrap-4 gj-unselectable",presenter:"btn btn-outline-secondary",list:"gj-list gj-list-bootstrap gj-dropdown-list-bootstrap list-group",item:"list-group-item",active:"active"}},materialicons:{style:{expander:"gj-dropdown-expander-mi"}},fontawesome:{icons:{dropdown:'',dropup:''},style:{expander:"gj-dropdown-expander-fa"}},glyphicons:{icons:{dropdown:'',dropup:''},style:{expander:"gj-dropdown-expander-glyphicons"}}},gj.dropdown.methods={init:function(a){return gj.widget.prototype.init.call(this,a,"dropdown"),this.attr("data-dropdown","true"),gj.dropdown.methods.initialize(this),this},getHTMLConfig:function(){var a=gj.widget.prototype.getHTMLConfig.call(this),b=this[0].attributes;return b.placeholder&&(a.placeholder=b.placeholder.value),a},initialize:function(a){var b=a.data(),c=a.parent('div[role="wrapper"]'),d=$(''),e=$(''+b.icons.dropdown+"").addClass(b.style.expander),f=$('').addClass(b.style.presenter),g=$('
              ').attr("guid",a.attr("data-guid"));0===c.length?(c=$('
              ').addClass(b.style.wrapper),a.wrap(c)):c.addClass(b.style.wrapper),b.fontSize&&f.css("font-size",b.fontSize),f.on("click",function(b){g.is(":visible")?gj.dropdown.methods.close(a,g):gj.dropdown.methods.open(a,g)}),f.on("blur",function(b){setTimeout(function(){gj.dropdown.methods.close(a,g)},500)}),f.append(d).append(e),a.hide(),a.after(f),$("body").append(g),g.hide(),a.reload()},setListPosition:function(a,b,c){var d,e,f,g,h=a.getBoundingClientRect(),i=window.scrollY||window.pageYOffset||0;window.scrollX||window.pageXOffset;b.style.overflow="",b.style.overflowX="",b.style.height="",gj.core.setChildPosition(a,b),d=gj.core.height(b,!0),g=b.getBoundingClientRect(),e=gj.core.height(a,!0),"auto"===c.maxHeight?h.topwindow.innerHeight&&(f=window.innerHeight-h.top-e-3):h.top-d-3>0?b.style.top=Math.round(h.top+i-d-3)+"px":(b.style.top=i+"px",f=h.top-3):!isNaN(c.maxHeight)&&c.maxHeight
              '+g+"
              "),b.addClass(d.style.item),b.on("click",function(b){gj.dropdown.methods.select(a,e)}),f.append(b),a.append('"),h&&c.push(e)}),0===c.length)a.prepend(''),a[0].selectedIndex=0,d.placeholder&&(h[0].innerHTML=''+d.placeholder+"");else for(i=0;i'+c.placeholder+""),a[0].value=""),gj.dropdown.events.change(a),gj.dropdown.methods.close(a,d),a},getRecordByValue:function(a,b){var c,d=a.data(),e=void 0;for(c=0;c0&&(c.children('[role="presenter"]').remove(),c.children('[role="list"]').remove(),a.unwrap()),a.show()),a}},gj.dropdown.events={change:function(a){return a.triggerHandler("change")},dataBound:function(a){return a.triggerHandler("dataBound")}},gj.dropdown.widget=function(a,b){var c=this,d=gj.dropdown.methods;return c.value=function(a){return d.value(this,a)},c.enable=function(){return d.enable(this)},c.disable=function(){return d.disable(this)},c.destroy=function(){return d.destroy(this)},$.extend(a,c),"true"!==a.attr("data-dropdown")&&d.init.call(a,b),a},gj.dropdown.widget.prototype=new gj.widget,gj.dropdown.widget.constructor=gj.dropdown.widget,gj.dropdown.widget.prototype.getHTMLConfig=gj.dropdown.methods.getHTMLConfig,function(a){a.fn.dropdown=function(a){var b;if(this&&this.length){if("object"!=typeof a&&a){if(b=new gj.dropdown.widget(this,null),b[a])return b[a].apply(this,Array.prototype.slice.call(arguments,1));throw"Method "+a+" does not exist."}return new gj.dropdown.widget(this,a)}}}(jQuery),gj.datepicker={plugins:{}},gj.datepicker.config={base:{showOtherMonths:!1,selectOtherMonths:!0,width:void 0,minDate:void 0,maxDate:void 0,format:"mm/dd/yyyy",uiLibrary:"materialdesign",iconsLibrary:"materialicons",value:void 0,weekStartDay:0,disableDates:void 0,disableDaysOfWeek:void 0,calendarWeeks:!1,keyboardNavigation:!0,locale:"en-us",icons:{rightIcon:'event',previousMonth:'',nextMonth:''},fontSize:void 0,size:"default",modal:!1,header:!1,footer:!1,showOnFocus:!0,showRightIcon:!0,style:{modal:"gj-modal",wrapper:"gj-datepicker gj-datepicker-md gj-unselectable",input:"gj-textbox-md",calendar:"gj-picker gj-picker-md datepicker gj-unselectable",footer:"",button:"gj-button-md"}},bootstrap:{style:{wrapper:"gj-datepicker gj-datepicker-bootstrap gj-unselectable input-group",input:"form-control",calendar:"gj-picker gj-picker-bootstrap datepicker gj-unselectable",footer:"modal-footer",button:"btn btn-default"},iconsLibrary:"glyphicons",showOtherMonths:!0},bootstrap4:{style:{wrapper:"gj-datepicker gj-datepicker-bootstrap gj-unselectable input-group",input:"form-control",calendar:"gj-picker gj-picker-bootstrap datepicker gj-unselectable",footer:"modal-footer",button:"btn btn-default"},showOtherMonths:!0},fontawesome:{icons:{rightIcon:'',previousMonth:'',nextMonth:''}},glyphicons:{icons:{rightIcon:'',previousMonth:'',nextMonth:''}}},gj.datepicker.methods={init:function(a){return gj.widget.prototype.init.call(this,a,"datepicker"),this.attr("data-datepicker","true"),gj.datepicker.methods.initialize(this,this.data()),this},initialize:function(a,b){var c,d,e=a.parent('div[role="wrapper"]');0===e.length?(e=$('
              ').addClass(b.style.wrapper),a.wrap(e)):e.addClass(b.style.wrapper),e=a.parent('div[role="wrapper"]'),b.width&&e.css("width",b.width),a.val(b.value).addClass(b.style.input).attr("role","input"),b.fontSize&&a.css("font-size",b.fontSize),"bootstrap"===b.uiLibrary||"bootstrap4"===b.uiLibrary?"small"===b.size?(e.addClass("input-group-sm"),a.addClass("form-control-sm")):"large"===b.size&&(e.addClass("input-group-lg"),a.addClass("form-control-lg")):"small"===b.size?e.addClass("small"):"large"===b.size&&e.addClass("large"),b.showRightIcon&&(d="bootstrap"===b.uiLibrary?$(''+b.icons.rightIcon+""):"bootstrap4"===b.uiLibrary?$('"):$(b.icons.rightIcon),d.attr("role","right-icon"),d.on("click",function(c){$("body").find('[role="calendar"][guid="'+a.attr("data-guid")+'"]').is(":visible")?gj.datepicker.methods.close(a):gj.datepicker.methods.open(a,b)}),e.append(d)),b.showOnFocus&&a.on("focus",function(){gj.datepicker.methods.open(a,b)}),c=gj.datepicker.methods.createCalendar(a,b),!0!==b.footer&&(a.on("blur",function(){a.timeout=setTimeout(function(){gj.datepicker.methods.close(a)},500)}),c.mousedown(function(){return clearTimeout(a.timeout),document.activeElement!==a[0]&&a.focus(),!1}),c.on("click",function(){clearTimeout(a.timeout),document.activeElement!==a[0]&&a.focus()})),b.keyboardNavigation&&$(document).on("keydown",gj.datepicker.methods.createKeyDownHandler(a,c,b))},createCalendar:function(a,b){var c,d,e,f,g,h=$('
              ').addClass(b.style.calendar).attr("guid",a.attr("data-guid"));return b.fontSize&&h.css("font-size",b.fontSize),c=gj.core.parseDate(b.value,b.format,b.locale),!c||isNaN(c.getTime())?c=new Date:a.attr("day",c.getFullYear()+"-"+c.getMonth()+"-"+c.getDate()),h.attr("month",c.getMonth()),h.attr("year",c.getFullYear()),gj.datepicker.methods.renderHeader(a,h,b,c),d=$('
              '),h.append(d),b.footer&&(e=$('
              '),f=$('"),f.on("click",function(){a.close()}),e.append(f),g=$('"),g.on("click",function(){var c,d,e=h.attr("selectedDay");e?(d=e.split("-"),c=new Date(d[0],d[1],d[2],h.attr("hour")||0,h.attr("minute")||0),gj.datepicker.methods.change(a,h,b,c)):a.close()}),e.append(g),h.append(e)),h.hide(),$("body").append(h),b.modal&&(h.wrapAll('
              '),gj.core.center(h)),h},renderHeader:function(a,b,c,d){var e,f,g;c.header&&(e=$('
              '),g=$('
              ').on("click",function(){gj.datepicker.methods.renderDecade(a,b,c),g.addClass("selected"),f.removeClass("selected")}),g.html(gj.core.formatDate(d,"yyyy",c.locale)),e.append(g),f=$('
              ').on("click",function(){gj.datepicker.methods.renderMonth(a,b,c),f.addClass("selected"),g.removeClass("selected")}),f.html(gj.core.formatDate(d,"ddd, mmm dd",c.locale)),e.append(f),b.append(e))},updateHeader:function(a,b,c){a.find('[role="header"] [role="year"]').removeClass("selected").html(gj.core.formatDate(c,"yyyy",b.locale)),a.find('[role="header"] [role="date"]').addClass("selected").html(gj.core.formatDate(c,"ddd, mmm dd",b.locale)),a.find('[role="header"] [role="hour"]').removeClass("selected").html(gj.core.formatDate(c,"HH",b.locale)),a.find('[role="header"] [role="minute"]').removeClass("selected").html(gj.core.formatDate(c,"MM",b.locale))},createNavigation:function(a,b,c,d){var e,f,g=$("");for(f=$('
              '),f.append($("
              "+d.icons.previousMonth+"
              ").on("click",gj.datepicker.methods.prev(a,d))),f.append($('
              ').on("click",gj.datepicker.methods.changePeriod(a,d))),f.append($("
              "+d.icons.nextMonth+"
              ").on("click",gj.datepicker.methods.next(a,d))),b.append(f),e=$(''),d.calendarWeeks&&e.append("
               
              "),i=d.weekStartDay;i
              "+gj.core.messages[d.locale].weekDaysMin[i]+"
              ");for(i=0;i
              "+gj.core.messages[d.locale].weekDaysMin[i]+"
              ");g.append(e),c.append(g)},renderMonth:function(a,b,c){var d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s=b.children('[role="body"]'),t=$(""),u=$(""),v=gj.core.messages[c.locale].titleFormat;for(s.off().empty(),gj.datepicker.methods.createNavigation(a,s,t,c),g=parseInt(b.attr("month"),10),h=parseInt(b.attr("year"),10),b.attr("type","month"),v=v.replace("mmmm",gj.core.messages[c.locale].monthNames[g]).replace("yyyy",h),b.find('div[role="period"]').text(v),i=new Array(31,28,31,30,31,30,31,31,30,31,30,31),h%4==0&&1900!=h&&(i[1]=29),j=i[g],k=(new Date(h,g,1).getDay()+7-c.weekStartDay)%7,d=0,$row=$(""),n=gj.datepicker.methods.getPrevMonth(g,h),l=1;l<=k;l++)f=i[n.month]-k+l,r=new Date(n.year,n.month,f),c.calendarWeeks&&1===l&&$row.append('"),p=$('"),c.calendarWeeks&&$row.append('")),p=$('"),f=4*e;f<=4*e+3;f++)g=$("
              "+gj.core.messages[c.locale].monthShortNames[f]+"
              "),g.on("click",gj.datepicker.methods.selectMonth(a,b,c,f)),$cell=$("").append(g),$row.append($cell);i.append($row)}},renderDecade:function(a,b,c){var d,e,f,g,h,i=b.find('>[role="body"]>table'),j=i.children("tbody");for(i.children("thead").hide(),d=parseInt(b.attr("year"),10),e=d-d%10,b.attr("type","decade"),b.find('div[role="period"]').text(e+" - "+(e+9)),j.empty(),f=e-1;f<=e+10;f+=4){for($row=$(""),g=f;g<=f+3;g++)h=$("
              "+g+"
              "),h.on("click",gj.datepicker.methods.selectYear(a,b,c,g)),$cell=$("").append(h),$row.append($cell);j.append($row)}},renderCentury:function(a,b,c){var d,e,f,g,h,i=b.find('>[role="body"]>table'),j=i.children("tbody");for(i.children("thead").hide(),d=parseInt(b.attr("year"),10),e=d-d%100,b.attr("type","century"),b.find('div[role="period"]').text(e+" - "+(e+99)),j.empty(),f=e-10;f"),g=f;g<=f+30;g+=10)h=$("
              "+g+"
              "),h.on("click",gj.datepicker.methods.selectDecade(a,b,c,g)),$cell=$("
              ").append(h),$row.append($cell);j.append($row)}},getWeekNumber:function(a){var b=new Date(a.valueOf());b.setDate(b.getDate()+6),b=new Date(Date.UTC(b.getFullYear(),b.getMonth(),b.getDate())),b.setUTCDate(b.getUTCDate()+4-(b.getUTCDay()||7));var c=new Date(Date.UTC(b.getUTCFullYear(),0,1));return Math.ceil(((b-c)/864e5+1)/7)},getMinDate:function(a){var b;return a.minDate&&("string"==typeof a.minDate?b=gj.core.parseDate(a.minDate,a.format,a.locale):"function"==typeof a.minDate?"string"==typeof(b=a.minDate())&&(b=gj.core.parseDate(b,a.format,a.locale)):"function"==typeof a.minDate.getMonth&&(b=a.minDate)),b},getMaxDate:function(a){var b;return a.maxDate&&("string"==typeof a.maxDate?b=gj.core.parseDate(a.maxDate,a.format,a.locale):"function"==typeof a.maxDate?"string"==typeof(b=a.maxDate())&&(b=gj.core.parseDate(b,a.format,a.locale)):"function"==typeof a.maxDate.getMonth&&(b=a.maxDate)),b},isSelectable:function(a,b){var c,d=!0,e=gj.datepicker.methods.getMinDate(a),f=gj.datepicker.methods.getMaxDate(a);if(e&&bf&&(d=!1),d){if(a.disableDates)if($.isArray(a.disableDates))for(c=0;c-1&&(d=!1)}return d},getPrevMonth:function(a,b){return date=new Date(b,a,1),date.setMonth(date.getMonth()-1),{month:date.getMonth(),year:date.getFullYear()}},getNextMonth:function(a,b){return date=new Date(b,a,1),date.setMonth(date.getMonth()+1),{month:date.getMonth(),year:date.getFullYear()}},prev:function(a,b){return function(){var c,d,e,f,g,h=$("body").find('[role="calendar"][guid="'+a.attr("data-guid")+'"]');switch(e=parseInt(h.attr("year"),10),h.attr("type")){case"month":d=parseInt(h.attr("month"),10),c=gj.datepicker.methods.getPrevMonth(d,e),h.attr("month",c.month),h.attr("year",c.year),gj.datepicker.methods.renderMonth(a,h,b);break;case"year":h.attr("year",e-1),gj.datepicker.methods.renderYear(a,h,b);break;case"decade":f=e-e%10,h.attr("year",f-10),gj.datepicker.methods.renderDecade(a,h,b);break;case"century":g=e-e%100,h.attr("year",g-100),gj.datepicker.methods.renderCentury(a,h,b)}}},next:function(a,b){return function(){var c,d,e,f,g,h=$("body").find('[role="calendar"][guid="'+a.attr("data-guid")+'"]');switch(e=parseInt(h.attr("year"),10),h.attr("type")){case"month":d=parseInt(h.attr("month"),10),c=gj.datepicker.methods.getNextMonth(d,e),h.attr("month",c.month),h.attr("year",c.year),gj.datepicker.methods.renderMonth(a,h,b);break;case"year":h.attr("year",e+1),gj.datepicker.methods.renderYear(a,h,b);break;case"decade":f=e-e%10,h.attr("year",f+10),gj.datepicker.methods.renderDecade(a,h,b);break;case"century":g=e-e%100,h.attr("year",g+100),gj.datepicker.methods.renderCentury(a,h,b)}}},changePeriod:function(a,b){return function(c){var d=$("body").find('[role="calendar"][guid="'+a.attr("data-guid")+'"]');switch(d.attr("type")){case"month":gj.datepicker.methods.renderYear(a,d,b);break;case"year":gj.datepicker.methods.renderDecade(a,d,b);break;case"decade":gj.datepicker.methods.renderCentury(a,d,b)}}},dayClickHandler:function(a,b,c,d){return function(e){return e&&e.stopPropagation(),gj.datepicker.methods.selectDay(a,b,c,d),!0!==c.footer&&!1!==c.autoClose&&gj.datepicker.methods.change(a,b,c,d),a}},change:function(a,b,c,d){var e=(d.getDate(),d.getMonth()),f=d.getFullYear(),g=gj.core.formatDate(d,c.format,c.locale);b.attr("month",e),b.attr("year",f),a.val(g),gj.datepicker.events.change(a),"none"!==window.getComputedStyle(b[0]).display&&gj.datepicker.methods.close(a)},selectDay:function(a,b,c,d){var e=d.getDate(),f=d.getMonth(),g=d.getFullYear();b.attr("selectedDay",g+"-"+f+"-"+e),b.find("tbody td").removeClass("selected"),b.find('tbody td[day="'+e+'"][month="'+f+'"]').addClass("selected"),gj.datepicker.methods.updateHeader(b,c,d),gj.datepicker.events.select(a,"day")},selectMonth:function(a,b,c,d){return function(e){b.attr("month",d),gj.datepicker.methods.renderMonth(a,b,c),gj.datepicker.events.select(a,"month")}},selectYear:function(a,b,c,d){return function(e){b.attr("year",d),gj.datepicker.methods.renderYear(a,b,c),gj.datepicker.events.select(a,"year")}},selectDecade:function(a,b,c,d){return function(e){b.attr("year",d),gj.datepicker.methods.renderDecade(a,b,c),gj.datepicker.events.select(a,"decade")}},open:function(a,b){var c,d=$("body").find('[role="calendar"][guid="'+a.attr("data-guid")+'"]');switch(a.val()?a.value(a.val()):(c=new Date,d.attr("month",c.getMonth()),d.attr("year",c.getFullYear())),d.attr("type")){case"month":gj.datepicker.methods.renderMonth(a,d,b);break;case"year":gj.datepicker.methods.renderYear(a,d,b);break;case"decade":gj.datepicker.methods.renderDecade(a,d,b);break;case"century":gj.datepicker.methods.renderCentury(a,d,b)}d.show(),d.closest('div[role="modal"]').show(),b.modal?gj.core.center(d):(gj.core.setChildPosition(a[0],d[0]),document.activeElement!==a[0]&&a.focus()),clearTimeout(a.timeout),gj.datepicker.events.open(a)},close:function(a){var b=$("body").find('[role="calendar"][guid="'+a.attr("data-guid")+'"]');b.hide(),b.closest('div[role="modal"]').hide(),gj.datepicker.events.close(a)},createKeyDownHandler:function(a,b,c){return function(d){var e,f,g,h,i,j,d=d||window.event;"none"!==window.getComputedStyle(b[0]).display&&(j=gj.datepicker.methods.getActiveCell(b),"38"==d.keyCode?(h=j.index(),i=j.closest("tr").prev("tr").find("td:eq("+h+")"),i.is("[day]")||(gj.datepicker.methods.prev(a,c)(),i=b.find("tbody tr").last().find("td:eq("+h+")"),i.is(":empty")&&(i=b.find("tbody tr").last().prev().find("td:eq("+h+")"))),i.is("[day]")&&(i.addClass("focused"),j.removeClass("focused"))):"40"==d.keyCode?(h=j.index(),i=j.closest("tr").next("tr").find("td:eq("+h+")"),i.is("[day]")||(gj.datepicker.methods.next(a,c)(),i=b.find("tbody tr").first().find("td:eq("+h+")"),i.is("[day]")||(i=b.find("tbody tr:eq(1)").find("td:eq("+h+")"))),i.is("[day]")&&(i.addClass("focused"),j.removeClass("focused"))):"37"==d.keyCode?(i=j.prev("td[day]:not(.disabled)"),0===i.length&&(i=j.closest("tr").prev("tr").find("td[day]").last()),0===i.length&&(gj.datepicker.methods.prev(a,c)(),i=b.find("tbody tr").last().find("td[day]").last()),i.length>0&&(i.addClass("focused"),j.removeClass("focused"))):"39"==d.keyCode?(i=j.next("[day]:not(.disabled)"),0===i.length&&(i=j.closest("tr").next("tr").find("td[day]").first()),0===i.length&&(gj.datepicker.methods.next(a,c)(),i=b.find("tbody tr").first().find("td[day]").first()),i.length>0&&(i.addClass("focused"),j.removeClass("focused"))):"13"==d.keyCode?(g=parseInt(j.attr("day"),10),e=parseInt(j.attr("month"),10),f=parseInt(j.attr("year"),10),gj.datepicker.methods.dayClickHandler(a,b,c,new Date(f,e,g))()):"27"==d.keyCode&&a.close())}},getActiveCell:function(a){var b=a.find("td[day].focused");return 0===b.length&&(b=a.find("td[day].selected"),0===b.length&&(b=a.find("td[day].today"),0===b.length&&(b=a.find("td[day]:not(.disabled)").first()))),b},value:function(a,b){var c,d,e=a.data();return void 0===b?a.val():(d=gj.core.parseDate(b,e.format,e.locale),d&&d.getTime()?(c=$("body").find('[role="calendar"][guid="'+a.attr("data-guid")+'"]'),gj.datepicker.methods.dayClickHandler(a,c,e,d)()):a.val(""),a)},destroy:function(a){var b=a.data(),c=a.parent(),d=$("body").find('[role="calendar"][guid="'+a.attr("data-guid")+'"]');return b&&(a.off(),d.parent('[role="modal"]').length>0&&d.unwrap(),d.remove(),a.removeData(),a.removeAttr("data-type").removeAttr("data-guid").removeAttr("data-datepicker"),a.removeClass(),c.children('[role="right-icon"]').remove(),a.unwrap()),a}},gj.datepicker.events={change:function(a){return a.triggerHandler("change")},select:function(a,b){return a.triggerHandler("select",[b])},open:function(a){return a.triggerHandler("open")},close:function(a){return a.triggerHandler("close")}},gj.datepicker.widget=function(a,b){var c=this,d=gj.datepicker.methods;return c.value=function(a){return d.value(this,a)},c.destroy=function(){return d.destroy(this)},c.open=function(){return d.open(this,this.data())},c.close=function(){return d.close(this)},$.extend(a,c),"true"!==a.attr("data-datepicker")&&d.init.call(a,b),a},gj.datepicker.widget.prototype=new gj.widget,gj.datepicker.widget.constructor=gj.datepicker.widget,function(a){a.fn.datepicker=function(a){var b;if(this&&this.length){if("object"!=typeof a&&a){if(b=new gj.datepicker.widget(this,null),b[a])return b[a].apply(this,Array.prototype.slice.call(arguments,1));throw"Method "+a+" does not exist."}return new gj.datepicker.widget(this,a)}}}(jQuery),gj.timepicker={plugins:{}},gj.timepicker.config={base:{width:void 0,modal:!0,header:!0,footer:!0,format:"HH:MM",uiLibrary:"materialdesign",value:void 0,mode:"ampm",locale:"en-us",size:"default",icons:{rightIcon:''},style:{modal:"gj-modal",wrapper:"gj-timepicker gj-timepicker-md gj-unselectable",input:"gj-textbox-md",clock:"gj-picker gj-picker-md timepicker",footer:"",button:"gj-button-md"}},bootstrap:{style:{wrapper:"gj-timepicker gj-timepicker-bootstrap gj-unselectable input-group",input:"form-control",clock:"gj-picker gj-picker-bootstrap timepicker",footer:"modal-footer",button:"btn btn-default"},iconsLibrary:"glyphicons"},bootstrap4:{style:{wrapper:"gj-timepicker gj-timepicker-bootstrap gj-unselectable input-group",input:"form-control border",clock:"gj-picker gj-picker-bootstrap timepicker",footer:"modal-footer",button:"btn btn-default"}}},gj.timepicker.methods={init:function(a){return gj.picker.widget.prototype.init.call(this,a,"timepicker"),this},initialize:function(){},initMouse:function(a,b,c,d){a.off(),a.on("mousedown",gj.timepicker.methods.mouseDownHandler(b,c)),a.on("mousemove",gj.timepicker.methods.mouseMoveHandler(b,c,d)),a.on("mouseup",gj.timepicker.methods.mouseUpHandler(b,c,d))},createPicker:function(a){var b,c=a.data(),d=$('
              ').addClass(c.style.clock).attr("guid",a.attr("data-guid")),e=$('
              '),f=$('
              '),g=$('
              '),h=$('
              '),i=$('
              '),j=$('"),k=$('"),l=$('
              ');return b=gj.core.parseDate(c.value,c.format,c.locale),!b||isNaN(b.getTime())?b=new Date:a.attr("hours",b.getHours()),gj.timepicker.methods.initMouse(i,a,d,c),c.header&&(e.on("click",function(){gj.timepicker.methods.renderHours(a,d,c)}),f.on("click",function(){gj.timepicker.methods.renderMinutes(a,d,c)}),g.append(e).append(":").append(f),"ampm"===c.mode&&(h.append($(''+gj.core.messages[c.locale].am+"").on("click",function(){var b=gj.timepicker.methods.getHour(d);d.attr("mode","am"),$(this).addClass("selected"),$(this).parent().children('[role="pm"]').removeClass("selected"),b>=12&&d.attr("hour",b-12),c.modal||(clearTimeout(a.timeout),a.focus())})),h.append("
              "),h.append($(''+gj.core.messages[c.locale].pm+"").on("click",function(){var b=gj.timepicker.methods.getHour(d);d.attr("mode","pm"),$(this).addClass("selected"),$(this).parent().children('[role="am"]').removeClass("selected"),b<12&&d.attr("hour",b+12),c.modal||(clearTimeout(a.timeout),a.focus())})),g.append(h)),d.append(g)),d.append(i),c.footer&&(k.on("click",function(){a.close()}),l.append(k),j.on("click",gj.timepicker.methods.setTime(a,d)),l.append(j),d.append(l)),d.hide(),$("body").append(d),c.modal&&(d.wrapAll('
              '),gj.core.center(d)),d},getHour:function(a){return parseInt(a.attr("hour"),10)||0},getMinute:function(a){return parseInt(a.attr("minute"),10)||0},setTime:function(a,b){return function(){var c=gj.timepicker.methods.getHour(b),d=gj.timepicker.methods.getMinute(b),e=b.attr("mode"),f=new Date(0,0,0,12===c&&"am"===e?0:c,d),g=a.data(),h=gj.core.formatDate(f,g.format,g.locale);a.value(h),a.close()}},getPointerValue:function(a,b,c){var d,e,f=256,g=Math.atan2(f/2-a,f/2-b)/Math.PI*180;switch(g<0&&(g=360+g),c){case"ampm":return d=12-Math.round(12*g/360),0===d?12:d;case"24hr":return e=Math.sqrt(Math.pow(f/2-a,2)+Math.pow(f/2-b,2)),d=12-Math.round(12*g/360),0===d&&(d=12),e12)&&"24hr"===c.mode?f.css("width","calc(50% - 52px)"):f.css("width","calc(50% - 20px)"),"hours"==c.dialMode?f.css("transform","rotate("+(30*d-90).toString()+"deg)"):f.css("transform","rotate("+(6*e-90).toString()+"deg)"),f.show(),g="ampm"===c.mode&&d>12?d-12:0==d?12:d,i=b.find('[role="body"] span'),i.removeClass("selected"),i.filter(function(a){return"hours"==c.dialMode?parseInt($(this).text(),10)==g:parseInt($(this).text(),10)==e}).addClass("selected"),c.header&&(h=b.find('[role="header"]'),h.find('[role="hour"]').text(g),h.find('[role="minute"]').text(gj.core.pad(e)),"ampm"===c.mode&&(d>=12?(h.find('[role="pm"]').addClass("selected"),h.find('[role="am"]').removeClass("selected")):(h.find('[role="am"]').addClass("selected"),h.find('[role="pm"]').removeClass("selected"))))},mouseDownHandler:function(a,b){return function(b){a.mouseMove=!0}},mouseMoveHandler:function(a,b,c){return function(d){a.mouseMove&&gj.timepicker.methods.updateArrow(d,a,b,c)}},mouseUpHandler:function(a,b,c){return function(d){gj.timepicker.methods.updateArrow(d,a,b,c),a.mouseMove=!1,c.modal||(clearTimeout(a.timeout),a.focus()),"hours"==c.dialMode?setTimeout(function(){gj.timepicker.events.select(a,"hour"),gj.timepicker.methods.renderMinutes(a,b,c)},1e3):"minutes"==c.dialMode&&(!0!==c.footer&&!1!==c.autoClose&&gj.timepicker.methods.setTime(a,b)(),gj.timepicker.events.select(a,"minute"))}},renderHours:function(a,b,c){var d,e=b.find('[role="body"]');clearTimeout(a.timeout),e.empty(),d=$('
              '),d.append('
              '),d.append('1'),d.append('2'),d.append('3'),d.append('4'),d.append('5'),d.append('6'),d.append('7'),d.append('8'),d.append('9'),d.append('10'),d.append('11'),d.append('12'),"24hr"===c.mode&&(d.append('13'),d.append('14'),d.append('15'),d.append('16'),d.append('17'),d.append('18'),d.append('19'),d.append('20'),d.append('21'),d.append('22'),d.append('23'),d.append('00')),e.append(d),b.find('[role="header"] [role="hour"]').addClass("selected"),b.find('[role="header"] [role="minute"]').removeClass("selected"),c.dialMode="hours",gj.timepicker.methods.update(a,b,c)},renderMinutes:function(a,b,c){var d=b.find('[role="body"]');clearTimeout(a.timeout),d.empty(),$dial=$('
              '),$dial.append('
              '),$dial.append('5'),$dial.append('10'),$dial.append('15'),$dial.append('20'),$dial.append('25'),$dial.append('30'),$dial.append('35'),$dial.append('40'),$dial.append('45'),$dial.append('50'),$dial.append('55'),$dial.append('00'),d.append($dial),b.find('[role="header"] [role="hour"]').removeClass("selected"),b.find('[role="header"] [role="minute"]').addClass("selected"),c.dialMode="minutes",gj.timepicker.methods.update(a,b,c)},open:function(a){var b,c,d=a.data(),e=$("body").find('[role="picker"][guid="'+a.attr("data-guid")+'"]');return b=a.value()?gj.core.parseDate(a.value(),d.format,d.locale):new Date,c=b.getHours(),"ampm"===d.mode&&e.attr("mode",c>12?"pm":"am"),e.attr("hour",c),e.attr("minute",b.getMinutes()),gj.timepicker.methods.renderHours(a,e,d),gj.picker.widget.prototype.open.call(a,"timepicker"),a},value:function(a,b){a.data();return void 0===b?a.val():(a.val(b),gj.timepicker.events.change(a),a)}},gj.timepicker.events={change:function(a){return a.triggerHandler("change")},select:function(a,b){return a.triggerHandler("select",[b])},open:function(a){return a.triggerHandler("open")},close:function(a){return a.triggerHandler("close")}},gj.timepicker.widget=function(a,b){var c=this,d=gj.timepicker.methods;return c.mouseMove=!1,c.value=function(a){return d.value(this,a)},c.destroy=function(){return gj.picker.widget.prototype.destroy.call(this,"timepicker")},c.open=function(){return gj.timepicker.methods.open(this)},c.close=function(){return gj.picker.widget.prototype.close.call(this,"timepicker")},$.extend(a,c),"true"!==a.attr("data-timepicker")&&d.init.call(a,b),a},gj.timepicker.widget.prototype=new gj.picker.widget,gj.timepicker.widget.constructor=gj.timepicker.widget,function(a){a.fn.timepicker=function(a){var b;if(this&&this.length){if("object"!=typeof a&&a){if(b=new gj.timepicker.widget(this,null),b[a])return b[a].apply(this,Array.prototype.slice.call(arguments,1));throw"Method "+a+" does not exist."}return new gj.timepicker.widget(this,a)}}}(jQuery),gj.datetimepicker={plugins:{},messages:{"en-us":{}}},gj.datetimepicker.config={base:{datepicker:gj.datepicker.config.base,timepicker:gj.timepicker.config.base,uiLibrary:"materialdesign",value:void 0,format:"HH:MM mm/dd/yyyy",width:void 0,modal:!1,footer:!1,size:"default",locale:"en-us",icons:{},style:{calendar:"gj-picker gj-picker-md datetimepicker gj-unselectable"}},bootstrap:{style:{calendar:"gj-picker gj-picker-bootstrap datetimepicker gj-unselectable"},iconsLibrary:"glyphicons"},bootstrap4:{style:{calendar:"gj-picker gj-picker-bootstrap datetimepicker gj-unselectable"}}},gj.datetimepicker.methods={init:function(a){return gj.widget.prototype.init.call(this,a,"datetimepicker"),this.attr("data-datetimepicker","true"),gj.datetimepicker.methods.initialize(this),this},getConfig:function(a,b){var c=gj.widget.prototype.getConfig.call(this,a,b);return uiLibrary=a.hasOwnProperty("uiLibrary")?a.uiLibrary:c.uiLibrary,gj.datepicker.config[uiLibrary]&&$.extend(!0,c.datepicker,gj.datepicker.config[uiLibrary]),gj.timepicker.config[uiLibrary]&&$.extend(!0,c.timepicker,gj.timepicker.config[uiLibrary]),iconsLibrary=a.hasOwnProperty("iconsLibrary")?a.iconsLibrary:c.iconsLibrary,gj.datepicker.config[iconsLibrary]&&$.extend(!0,c.datepicker,gj.datepicker.config[iconsLibrary]),gj.timepicker.config[iconsLibrary]&&$.extend(!0,c.timepicker,gj.timepicker.config[iconsLibrary]),c},initialize:function(a){var b,c,d,e,f,g,h,i,j=a.data();j.datepicker.uiLibrary=j.uiLibrary,j.datepicker.iconsLibrary=j.iconsLibrary,j.datepicker.width=j.width,j.datepicker.format=j.format,j.datepicker.locale=j.locale,j.datepicker.modal=j.modal,j.datepicker.footer=j.footer,j.datepicker.style.calendar=j.style.calendar,j.datepicker.value=j.value,j.datepicker.size=j.size,j.datepicker.autoClose=!1,gj.datepicker.methods.initialize(a,j.datepicker),a.on("select",function(c,d){var e,f;"day"===d?gj.datetimepicker.methods.createShowHourHandler(a,b,j)():"minute"===d&&b.attr("selectedDay")&&!0!==j.footer&&(selectedDay=b.attr("selectedDay").split("-"),e=new Date(selectedDay[0],selectedDay[1],selectedDay[2],b.attr("hour")||0,b.attr("minute")||0),f=gj.core.formatDate(e,j.format,j.locale),a.val(f),gj.datetimepicker.events.change(a),gj.datetimepicker.methods.close(a))}),a.on("open",function(){var a=b.children('[role="header"]');a.find('[role="calendarMode"]').addClass("selected"),a.find('[role="clockMode"]').removeClass("selected")}),b=$("body").find('[role="calendar"][guid="'+a.attr("data-guid")+'"]'),f=j.value?gj.core.parseDate(j.value,j.format,j.locale):new Date,b.attr("hour",f.getHours()),b.attr("minute",f.getMinutes()),j.timepicker.uiLibrary=j.uiLibrary,j.timepicker.iconsLibrary=j.iconsLibrary,j.timepicker.format=j.format,j.timepicker.locale=j.locale,j.timepicker.header=!0,j.timepicker.footer=j.footer,j.timepicker.size=j.size,j.timepicker.mode="24hr",j.timepicker.autoClose=!1,c=$('
              '),d=$('
              '),d.on("click",gj.datetimepicker.methods.createShowDateHandler(a,b,j)),d.html(gj.core.formatDate(new Date,"ddd, mmm dd",j.locale)),c.append(d),g=$('
              '),h=$('event'),h.on("click",gj.datetimepicker.methods.createShowDateHandler(a,b,j)),g.append(h),e=$('
              '),e.append($('
              ').on("click",gj.datetimepicker.methods.createShowHourHandler(a,b,j)).html(gj.core.formatDate(new Date,"HH",j.locale))),e.append(":"),e.append($('
              ').on("click",gj.datetimepicker.methods.createShowMinuteHandler(a,b,j)).html(gj.core.formatDate(new Date,"MM",j.locale))),g.append(e),i=$('clock'),i.on("click",gj.datetimepicker.methods.createShowHourHandler(a,b,j)),g.append(i),c.append(g),b.prepend(c)},createShowDateHandler:function(a,b,c){return function(d){var e=b.children('[role="header"]');e.find('[role="calendarMode"]').addClass("selected"),e.find('[role="date"]').addClass("selected"),e.find('[role="clockMode"]').removeClass("selected"),e.find('[role="hour"]').removeClass("selected"),e.find('[role="minute"]').removeClass("selected"),gj.datepicker.methods.renderMonth(a,b,c.datepicker)}},createShowHourHandler:function(a,b,c){return function(){var d=b.children('[role="header"]');d.find('[role="calendarMode"]').removeClass("selected"),d.find('[role="date"]').removeClass("selected"),d.find('[role="clockMode"]').addClass("selected"),d.find('[role="hour"]').addClass("selected"),d.find('[role="minute"]').removeClass("selected"),gj.timepicker.methods.initMouse(b.children('[role="body"]'),a,b,c.timepicker),gj.timepicker.methods.renderHours(a,b,c.timepicker)}},createShowMinuteHandler:function(a,b,c){return function(){var d=b.children('[role="header"]');d.find('[role="calendarMode"]').removeClass("selected"),d.find('[role="date"]').removeClass("selected"),d.find('[role="clockMode"]').addClass("selected"),d.find('[role="hour"]').removeClass("selected"),d.find('[role="minute"]').addClass("selected"),gj.timepicker.methods.initMouse(b.children('[role="body"]'),a,b,c.timepicker),gj.timepicker.methods.renderMinutes(a,b,c.timepicker)}},close:function(a){var b=$("body").find('[role="calendar"][guid="'+a.attr("data-guid")+'"]');b.hide(),b.closest('div[role="modal"]').hide()},value:function(a,b){var c,d,e,f=a.data();return void 0===b?a.val():(d=gj.core.parseDate(b,f.format,f.locale),d?(c=$("body").find('[role="calendar"][guid="'+a.attr("data-guid")+'"]'),gj.datepicker.methods.dayClickHandler(a,c,f,d)(),e=d.getHours(),"ampm"===f.mode&&c.attr("mode",e>12?"pm":"am"),c.attr("hour",e),c.attr("minute",d.getMinutes()),a.val(b)):a.val(""),a)},destroy:function(a){var b=a.data(),c=a.parent(),d=$("body").find('[role="calendar"][guid="'+a.attr("data-guid")+'"]');return b&&(a.off(),d.parent('[role="modal"]').length>0&&d.unwrap(),d.remove(),a.removeData(),a.removeAttr("data-type").removeAttr("data-guid").removeAttr("data-datetimepicker"),a.removeClass(),c.children('[role="right-icon"]').remove(),a.unwrap()),a}},gj.datetimepicker.events={change:function(a){return a.triggerHandler("change")}},gj.datetimepicker.widget=function(a,b){var c=this,d=gj.datetimepicker.methods;return c.mouseMove=!1,c.value=function(a){return d.value(this,a)},c.open=function(){gj.datepicker.methods.open(this,this.data().datepicker)},c.close=function(){gj.datepicker.methods.close(this)},c.destroy=function(){return d.destroy(this)},$.extend(a,c),"true"!==a.attr("data-datetimepicker")&&d.init.call(a,b),a},gj.datetimepicker.widget.prototype=new gj.widget,gj.datetimepicker.widget.constructor=gj.datetimepicker.widget,gj.datetimepicker.widget.prototype.getConfig=gj.datetimepicker.methods.getConfig,function(a){a.fn.datetimepicker=function(a){var b;if(this&&this.length){if("object"!=typeof a&&a){if(b=new gj.datetimepicker.widget(this,null),b[a])return b[a].apply(this,Array.prototype.slice.call(arguments,1));throw"Method "+a+" does not exist."}return new gj.datetimepicker.widget(this,a)}}}(jQuery),gj.slider={plugins:{},messages:{"en-us":{}}},gj.slider.config={base:{min:0,max:100,width:void 0,uiLibrary:"materialdesign",value:void 0,icons:{},style:{wrapper:"gj-slider gj-slider-md",progress:void 0,track:void 0}},bootstrap:{style:{wrapper:"gj-slider gj-slider-bootstrap gj-slider-bootstrap-3",progress:"progress-bar",track:"progress"}},bootstrap4:{style:{wrapper:"gj-slider gj-slider-bootstrap gj-slider-bootstrap-4",progress:"progress-bar",track:"progress"}}},gj.slider.methods={init:function(a){return gj.widget.prototype.init.call(this,a,"slider"),this.attr("data-slider","true"),gj.slider.methods.initialize(this,this.data()),this},initialize:function(a,b){var c,d,e,f;a[0].style.display="none","wrapper"!==a[0].parentElement.attributes.role?(c=document.createElement("div"),c.setAttribute("role","wrapper"),a[0].parentNode.insertBefore(c,a[0]),c.appendChild(a[0])):c=a[0].parentElement,b.width&&(c.style.width=b.width+"px"),gj.core.addClasses(c,b.style.wrapper),d=a[0].querySelector('[role="track"]'),null==d&&(d=document.createElement("div"),d.setAttribute("role","track"),c.appendChild(d)),gj.core.addClasses(d,b.style.track),e=a[0].querySelector('[role="handle"]'),null==e&&(e=document.createElement("div"),e.setAttribute("role","handle"),c.appendChild(e)),f=a[0].querySelector('[role="progress"]'),null==f&&(f=document.createElement("div"),f.setAttribute("role","progress"),c.appendChild(f)),gj.core.addClasses(f,b.style.progress),b.value||(b.value=b.min),gj.slider.methods.value(a,b,b.value),gj.documentManager.subscribeForEvent("mouseup",a.data("guid"),gj.slider.methods.createMouseUpHandler(a,e,b)),e.addEventListener("mousedown",gj.slider.methods.createMouseDownHandler(e,b)),gj.documentManager.subscribeForEvent("mousemove",a.data("guid"),gj.slider.methods.createMouseMoveHandler(a,d,e,f,b)),e.addEventListener("click",function(a){a.stopPropagation()}),c.addEventListener("click",gj.slider.methods.createClickHandler(a,d,e,b))},createClickHandler:function(a,b,c,d){return function(e){var f,g,h,i,j;"true"!==c.getAttribute("drag")&&(f=gj.core.position(a[0].parentElement),g=(new gj.widget).mouseX(e)-f.left,h=gj.core.width(c)/2,i=gj.core.width(b)/(d.max-d.min),j=Math.round((g-h)/i)+d.min,gj.slider.methods.value(a,d,j))}},createMouseUpHandler:function(a,b,c){return function(c){"true"===b.getAttribute("drag")&&(b.setAttribute("drag","false"),gj.slider.events.change(a))}},createMouseDownHandler:function(a,b){return function(b){a.setAttribute("drag","true")}},createMouseMoveHandler:function(a,b,c,d,e){return function(d){var f,g,h,i,j,k,l;"true"===c.getAttribute("drag")&&(f=gj.core.position(a[0].parentElement),g=(new gj.widget).mouseX(d)-f.left,h=gj.core.width(b),i=gj.core.width(c)/2,j=h/(e.max-e.min),k=(e.value-e.min)*j,g>=i&&g<=h+i&&(g>k+j/2||gevent'},style:{modal:"gj-modal",wrapper:"gj-colorpicker gj-colorpicker-md gj-unselectable",input:"gj-textbox-md",picker:"gj-picker gj-picker-md colorpicker gj-unselectable",footer:"",button:"gj-button-md"}},bootstrap:{style:{}},bootstrap4:{style:{}}},gj.colorpicker.methods={init:function(a){return gj.picker.widget.prototype.init.call(this,a,"colorpicker"),gj.colorpicker.methods.initialize(this),this},initialize:function(a){},createPicker:function(a,b){var c=$('
              ').addClass(b.style.picker).attr("guid",a.attr("data-guid"));return c.html("test"),c.hide(),$("body").append(c),c},open:function(a){return a.val()&&a.value(a.val()),gj.picker.widget.prototype.open.call(a,"colorpicker")}},gj.colorpicker.events={change:function(a){return a.triggerHandler("change")},select:function(a){return a.triggerHandler("select")},open:function(a){return a.triggerHandler("open")},close:function(a){return a.triggerHandler("close")}},gj.colorpicker.widget=function(a,b){var c=this,d=gj.colorpicker.methods;return c.value=function(a){return d.value(this,a)},c.destroy=function(){return gj.picker.widget.prototype.destroy.call(this,"colorpicker")},c.open=function(){return d.open(this)},c.close=function(){return gj.picker.widget.prototype.close.call(this,"colorpicker")},$.extend(a,c),"true"!==a.attr("data-colorpicker")&&d.init.call(a,b),a},gj.colorpicker.widget.prototype=new gj.picker.widget,gj.colorpicker.widget.constructor=gj.colorpicker.widget,function(a){a.fn.colorpicker=function(a){var b;if(this&&this.length){if("object"!=typeof a&&a){if(b=new gj.colorpicker.widget(this,null),b[a])return b[a].apply(this,Array.prototype.slice.call(arguments,1));throw"Method "+a+" does not exist."}return new gj.colorpicker.widget(this,a)}}}(jQuery); \ No newline at end of file +var gj = {}; +gj.widget = function () { + var a = this; + a.xhr = null, a.generateGUID = function () { + function a() { + return Math.floor(65536 * (1 + Math.random())).toString(16).substring(1) + } + + return a() + a() + "-" + a() + "-" + a() + "-" + a() + "-" + a() + a() + a() + }, a.mouseX = function (a) { + if (a) { + if (a.pageX) return a.pageX; + if (a.clientX) return a.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); + if (a.touches && a.touches.length) return a.touches[0].pageX; + if (a.changedTouches && a.changedTouches.length) return a.changedTouches[0].pageX; + if (a.originalEvent && a.originalEvent.touches && a.originalEvent.touches.length) return a.originalEvent.touches[0].pageX; + if (a.originalEvent && a.originalEvent.changedTouches && a.originalEvent.changedTouches.length) return a.originalEvent.touches[0].pageX + } + return null + }, a.mouseY = function (a) { + if (a) { + if (a.pageY) return a.pageY; + if (a.clientY) return a.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); + if (a.touches && a.touches.length) return a.touches[0].pageY; + if (a.changedTouches && a.changedTouches.length) return a.changedTouches[0].pageY; + if (a.originalEvent && a.originalEvent.touches && a.originalEvent.touches.length) return a.originalEvent.touches[0].pageY; + if (a.originalEvent && a.originalEvent.changedTouches && a.originalEvent.changedTouches.length) return a.originalEvent.touches[0].pageY + } + return null + } +}, gj.widget.prototype.init = function (a, b) { + var c, d, e; + this.attr("data-type", b), d = $.extend(!0, {}, this.getHTMLConfig() || {}), $.extend(!0, d, a || {}), e = this.getConfig(d, b), this.attr("data-guid", e.guid), this.data(e); + for (c in e) gj[b].events.hasOwnProperty(c) && (this.on(c, e[c]), delete e[c]); + for (plugin in gj[b].plugins) gj[b].plugins.hasOwnProperty(plugin) && gj[b].plugins[plugin].configure(this, e, d); + return this +}, gj.widget.prototype.getConfig = function (a, b) { + var c, d, e, f; + c = $.extend(!0, {}, gj[b].config.base), d = a.hasOwnProperty("uiLibrary") ? a.uiLibrary : c.uiLibrary, gj[b].config[d] && $.extend(!0, c, gj[b].config[d]), e = a.hasOwnProperty("iconsLibrary") ? a.iconsLibrary : c.iconsLibrary, gj[b].config[e] && $.extend(!0, c, gj[b].config[e]); + for (f in gj[b].plugins) gj[b].plugins.hasOwnProperty(f) && ($.extend(!0, c, gj[b].plugins[f].config.base), gj[b].plugins[f].config[d] && $.extend(!0, c, gj[b].plugins[f].config[d]), gj[b].plugins[f].config[e] && $.extend(!0, c, gj[b].plugins[f].config[e])); + return $.extend(!0, c, a), c.guid || (c.guid = this.generateGUID()), c +}, gj.widget.prototype.getHTMLConfig = function () { + var a = this.data(), b = this[0].attributes; + return b.width && (a.width = b.width.value), b.height && (a.height = b.height.value), b.value && (a.value = b.value.value), b.align && (a.align = b.align.value), a && a.source && (a.dataSource = a.source, delete a.source), a +}, gj.widget.prototype.createDoneHandler = function () { + var a = this; + return function (b) { + "string" == typeof b && JSON && (b = JSON.parse(b)), gj[a.data("type")].methods.render(a, b) + } +}, gj.widget.prototype.createErrorHandler = function () { + return function (a) { + a && a.statusText && "abort" !== a.statusText && alert(a.statusText) + } +}, gj.widget.prototype.reload = function (a) { + var b, c, d = this.data(), e = this.data("type"); + return void 0 === d.dataSource && gj[e].methods.useHtmlDataSource(this, d), $.extend(d.params, a), $.isArray(d.dataSource) ? (c = gj[e].methods.filter(this), gj[e].methods.render(this, c)) : "string" == typeof d.dataSource ? (b = { + url: d.dataSource, + data: d.params + }, this.xhr && this.xhr.abort(), this.xhr = $.ajax(b).done(this.createDoneHandler()).fail(this.createErrorHandler())) : "object" == typeof d.dataSource && (d.dataSource.data || (d.dataSource.data = {}), $.extend(d.dataSource.data, d.params), b = $.extend(!0, {}, d.dataSource), "json" === b.dataType && "object" == typeof b.data && (b.data = JSON.stringify(b.data)), b.success || (b.success = this.createDoneHandler()), b.error || (b.error = this.createErrorHandler()), this.xhr && this.xhr.abort(), this.xhr = $.ajax(b)), this +}, gj.documentManager = { + events: {}, subscribeForEvent: function (a, b, c) { + if (gj.documentManager.events[a] && 0 !== gj.documentManager.events[a].length) { + if (gj.documentManager.events[a][b]) throw"Event " + a + ' for widget with guid="' + b + '" is already attached.'; + gj.documentManager.events[a].push({widgetId: b, callback: c}) + } else gj.documentManager.events[a] = [{ + widgetId: b, + callback: c + }], $(document).on(a, gj.documentManager.executeCallbacks) + }, executeCallbacks: function (a) { + var b = gj.documentManager.events[a.type]; + if (b) for (var c = 0; c < b.length; c++) b[c].callback(a) + }, unsubscribeForEvent: function (a, b) { + var c = !1, d = gj.documentManager.events[a]; + if (d) for (var e = 0; e < d.length; e++) d[e].widgetId === b && (d.splice(e, 1), c = !0, 0 === d.length && ($(document).off(a), delete gj.documentManager.events[a])); + if (!c) throw'The "' + a + '" for widget with guid="' + b + "\" can't be removed." + } +}, gj.core = { + messages: { + "en-us": { + monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + monthShortNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + weekDaysMin: ["S", "M", "T", "W", "T", "F", "S"], + weekDaysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + weekDays: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + am: "AM", + pm: "PM", + ok: "Ok", + cancel: "Cancel", + titleFormat: "mmmm yyyy" + } + }, parseDate: function (a, b, c) { + var d, e, f, g, h = 0, i = 0, j = 1, k = 0, l = 0; + if (a && "string" == typeof a) { + if (/^\d+$/.test(a)) g = new Date(a); else if (a.indexOf("/Date(") > -1) g = new Date(parseInt(a.substr(6), 10)); else if (a) { + for (f = b.split(/[\s,-\.\/\/\:]+/), e = a.split(/[\s]+/), e.length != f.length && (e = a.split(/[\s,-\.\/\/\:]+/)), d = 0; d < f.length; d++) ["d", "dd"].indexOf(f[d]) > -1 ? j = parseInt(e[d], 10) : ["m", "mm"].indexOf(f[d]) > -1 ? i = parseInt(e[d], 10) - 1 : "mmm" === f[d] ? i = gj.core.messages[c || "en-us"].monthShortNames.indexOf(e[d]) : "mmmm" === f[d] ? i = gj.core.messages[c || "en-us"].monthNames.indexOf(e[d]) : ["yy", "yyyy"].indexOf(f[d]) > -1 ? (h = parseInt(e[d], 10), "yy" === f[d] && (h += 2e3)) : ["h", "hh", "H", "HH"].indexOf(f[d]) > -1 ? k = parseInt(e[d], 10) : ["M", "MM"].indexOf(f[d]) > -1 && (l = parseInt(e[d], 10)); + g = new Date(h, i, j, k, l) + } + } else "number" == typeof a ? g = new Date(a) : a instanceof Date && (g = a); + return g + }, formatDate: function (a, b, c) { + var d, e, f = "", g = b.split(/[\s,-\.\/\/\:]+/), h = b.split(/s+|M+|H+|h+|t+|T+|d+|m+|y+/); + for (h = h.splice(1, h.length - 2), i = 0; i < g.length; i++) switch (d = h[i] || "", g[i]) { + case"s": + f += a.getSeconds() + d; + break; + case"ss": + f += gj.core.pad(a.getSeconds()) + d; + break; + case"M": + f += a.getMinutes() + d; + break; + case"MM": + f += gj.core.pad(a.getMinutes()) + d; + break; + case"H": + f += a.getHours() + d; + break; + case"HH": + f += gj.core.pad(a.getHours()) + d; + break; + case"h": + e = a.getHours() > 12 ? a.getHours() % 12 : a.getHours(), f += e + d; + break; + case"hh": + e = a.getHours() > 12 ? a.getHours() % 12 : a.getHours(), f += gj.core.pad(e) + d; + break; + case"tt": + f += (a.getHours() >= 12 ? "pm" : "am") + d; + break; + case"TT": + f += (a.getHours() >= 12 ? "PM" : "AM") + d; + break; + case"d": + f += a.getDate() + d; + break; + case"dd": + f += gj.core.pad(a.getDate()) + d; + break; + case"ddd": + f += gj.core.messages[c || "en-us"].weekDaysShort[a.getDay()] + d; + break; + case"dddd": + f += gj.core.messages[c || "en-us"].weekDays[a.getDay()] + d; + break; + case"m": + f += a.getMonth() + 1 + d; + break; + case"mm": + f += gj.core.pad(a.getMonth() + 1) + d; + break; + case"mmm": + f += gj.core.messages[c || "en-us"].monthShortNames[a.getMonth()] + d; + break; + case"mmmm": + f += gj.core.messages[c || "en-us"].monthNames[a.getMonth()] + d; + break; + case"yy": + f += a.getFullYear().toString().substr(2) + d; + break; + case"yyyy": + f += a.getFullYear() + d + } + return f + }, pad: function (a, b) { + for (a = String(a), b = b || 2; a.length < b;) a = "0" + a; + return a + }, center: function (a) { + var b = $(window).width() / 2 - a.width() / 2, c = $(window).height() / 2 - a.height() / 2; + a.css("position", "absolute"), a.css("left", b > 0 ? b : 0), a.css("top", c > 0 ? c : 0) + }, isIE: function () { + return !!navigator.userAgent.match(/Trident/g) || !!navigator.userAgent.match(/MSIE/g) + }, setChildPosition: function (a, b) { + var c = a.getBoundingClientRect(), d = gj.core.height(a, !0), e = gj.core.height(b, !0), + f = gj.core.width(a, !0), g = gj.core.width(b, !0), h = window.scrollY || window.pageYOffset || 0, + i = window.scrollX || window.pageXOffset || 0; + c.top + d + e > window.innerHeight && c.top > e ? b.style.top = Math.round(c.top + h - e - 3) + "px" : b.style.top = Math.round(c.top + h + d + 3) + "px", c.left + g > document.body.clientWidth ? b.style.left = Math.round(c.left + i + f - g) + "px" : b.style.left = Math.round(c.left + i) + "px" + }, height: function (a, b) { + var c, d = window.getComputedStyle(a); + return "border-box" === d.boxSizing ? (c = parseInt(d.height, 10), gj.core.isIE() && (c += parseInt(d.paddingTop || 0, 10) + parseInt(d.paddingBottom || 0, 10), c += parseInt(d.borderTopWidth || 0, 10) + parseInt(d.borderBottomWidth || 0, 10))) : (c = parseInt(d.height, 10), c += parseInt(d.paddingTop || 0, 10) + parseInt(d.paddingBottom || 0, 10), c += parseInt(d.borderTopWidth || 0, 10) + parseInt(d.borderBottomWidth || 0, 10)), b && (c += parseInt(d.marginTop || 0, 10) + parseInt(d.marginBottom || 0, 10)), c + }, width: function (a, b) { + var c, d = window.getComputedStyle(a); + return "border-box" === d.boxSizing ? c = parseInt(d.width, 10) : (c = parseInt(d.width, 10), c += parseInt(d.paddingLeft || 0, 10) + parseInt(d.paddingRight || 0, 10), c += parseInt(d.borderLeftWidth || 0, 10) + parseInt(d.borderRightWidth || 0, 10)), b && (c += parseInt(d.marginLeft || 0, 10) + parseInt(d.marginRight || 0, 10)), c + }, addClasses: function (a, b) { + var c, d; + if (b) for (d = b.split(" "), c = 0; c < d.length; c++) a.classList.add(d[c]) + }, position: function (a) { + for (var b, c, d = 0, e = 0, f = gj.core.height(a), g = gj.core.width(a); a;) "BODY" == a.tagName ? (b = a.scrollLeft || document.documentElement.scrollLeft, c = a.scrollTop || document.documentElement.scrollTop, d += a.offsetLeft - b, e += a.offsetTop - c) : (d += a.offsetLeft - a.scrollLeft, e += a.offsetTop - a.scrollTop), a = a.offsetParent; + return {top: e, left: d, bottom: e + f, right: d + g} + }, setCaretAtEnd: function (a) { + var b; + if (a) if (b = a.value.length, document.selection) { + a.focus(); + var c = document.selection.createRange(); + c.moveStart("character", -b), c.moveStart("character", b), c.moveEnd("character", 0), c.select() + } else (a.selectionStart || "0" == a.selectionStart) && (a.selectionStart = b, a.selectionEnd = b, a.focus()) + }, getScrollParent: function (a) { + return null == a ? null : a.scrollHeight > a.clientHeight ? a : gj.core.getScrollParent(a.parentNode) + } +}, gj.picker = {messages: {"en-us": {}}}, gj.picker.methods = { + initialize: function (a, b, c) { + var d, e = c.createPicker(a, b), f = a.parent('div[role="wrapper"]'); + d = "bootstrap" === b.uiLibrary ? $('' + b.icons.rightIcon + "") : "bootstrap4" === b.uiLibrary ? $('") : $(b.icons.rightIcon), d.attr("role", "right-icon"), 0 === f.length ? (f = $('
              ').addClass(b.style.wrapper), a.wrap(f)) : f.addClass(b.style.wrapper), f = a.parent('div[role="wrapper"]'), b.width && f.css("width", b.width), a.val(b.value).addClass(b.style.input).attr("role", "input"), b.fontSize && a.css("font-size", b.fontSize), "bootstrap" === b.uiLibrary || "bootstrap4" === b.uiLibrary ? "small" === b.size ? (f.addClass("input-group-sm"), a.addClass("form-control-sm")) : "large" === b.size && (f.addClass("input-group-lg"), a.addClass("form-control-lg")) : "small" === b.size ? f.addClass("small") : "large" === b.size && f.addClass("large"), d.on("click", function (b) { + e.is(":visible") ? a.close() : a.open() + }), f.append(d), !0 !== b.footer && (a.on("blur", function () { + a.timeout = setTimeout(function () { + a.close() + }, 500) + }), e.mousedown(function () { + return clearTimeout(a.timeout), a.focus(), !1 + }), e.on("click", function () { + clearTimeout(a.timeout), a.focus() + })) + } +}, gj.picker.widget = function (a, b) { + var c = this, d = gj.picker.methods; + return c.destroy = function () { + return d.destroy(this) + }, a +}, gj.picker.widget.prototype = new gj.widget, gj.picker.widget.constructor = gj.picker.widget, gj.picker.widget.prototype.init = function (a, b, c) { + return gj.widget.prototype.init.call(this, a, b), this.attr("data-" + b, "true"), gj.picker.methods.initialize(this, this.data(), gj[b].methods), this +}, gj.picker.widget.prototype.open = function (a) { + var b = this.data(), c = $("body").find('[role="picker"][guid="' + this.attr("data-guid") + '"]'); + return c.show(), c.closest('div[role="modal"]').show(), b.modal ? gj.core.center(c) : (gj.core.setChildPosition(this[0], c[0]), this.focus()), clearTimeout(this.timeout), gj[a].events.open(this), this +}, gj.picker.widget.prototype.close = function (a) { + var b = $("body").find('[role="picker"][guid="' + this.attr("data-guid") + '"]'); + return b.hide(), b.closest('div[role="modal"]').hide(), gj[a].events.close(this), this +}, gj.picker.widget.prototype.destroy = function (a) { + var b = this.data(), c = this.parent(), + d = $("body").find('[role="picker"][guid="' + this.attr("data-guid") + '"]'); + return b && (this.off(), d.parent('[role="modal"]').length > 0 && d.unwrap(), d.remove(), this.removeData(), this.removeAttr("data-type").removeAttr("data-guid").removeAttr("data-" + a), this.removeClass(), c.children('[role="right-icon"]').remove(), this.unwrap()), this +}, gj.dialog = {plugins: {}, messages: {}}, gj.dialog.config = { + base: { + autoOpen: !0, + closeButtonInHeader: !0, + closeOnEscape: !0, + draggable: !0, + height: "auto", + locale: "en-us", + maxHeight: void 0, + maxWidth: void 0, + minHeight: void 0, + minWidth: void 0, + modal: !1, + resizable: !1, + scrollable: !1, + title: void 0, + uiLibrary: void 0, + width: 300, + style: { + modal: "gj-modal", + content: "gj-dialog-md", + header: "gj-dialog-md-header gj-unselectable", + headerTitle: "gj-dialog-md-title", + headerCloseButton: "gj-dialog-md-close", + body: "gj-dialog-md-body", + footer: "gj-dialog-footer gj-dialog-md-footer" + } + }, + bootstrap: { + style: { + modal: "modal", + content: "modal-content gj-dialog-bootstrap", + header: "modal-header", + headerTitle: "modal-title", + headerCloseButton: "close", + body: "modal-body", + footer: "gj-dialog-footer modal-footer" + } + }, + bootstrap4: { + style: { + modal: "modal", + content: "modal-content gj-dialog-bootstrap4", + header: "modal-header", + headerTitle: "modal-title", + headerCloseButton: "close", + body: "modal-body", + footer: "gj-dialog-footer modal-footer" + } + } +}, gj.dialog.events = { + initialized: function (a) { + a.trigger("initialized") + }, opening: function (a) { + a.trigger("opening") + }, opened: function (a) { + a.trigger("opened") + }, closing: function (a) { + a.trigger("closing") + }, closed: function (a) { + a.trigger("closed") + }, drag: function (a) { + a.trigger("drag") + }, dragStart: function (a) { + a.trigger("dragStart") + }, dragStop: function (a) { + a.trigger("dragStop") + }, resize: function (a) { + a.trigger("resize") + }, resizeStart: function (a) { + a.trigger("resizeStart") + }, resizeStop: function (a) { + a.trigger("resizeStop") + } +}, gj.dialog.methods = { + init: function (a) { + return gj.widget.prototype.init.call(this, a, "dialog"), gj.dialog.methods.localization(this), gj.dialog.methods.initialize(this), gj.dialog.events.initialized(this), this + }, localization: function (a) { + var b = a.data(); + void 0 === b.title && (b.title = gj.dialog.messages[b.locale].DefaultTitle) + }, getHTMLConfig: function () { + var a = gj.widget.prototype.getHTMLConfig.call(this), b = this[0].attributes; + return b.title && (a.title = b.title.value), a + }, initialize: function (a) { + var b, c, d, e = a.data(); + a.addClass(e.style.content), gj.dialog.methods.setSize(a), e.closeOnEscape && $(document).keyup(function (b) { + 27 === b.keyCode && a.close() + }), c = a.children('div[data-role="body"]'), 0 === c.length ? (c = $('
              ').addClass(e.style.body), a.wrapInner(c)) : c.addClass(e.style.body), b = gj.dialog.methods.renderHeader(a), d = a.children('div[data-role="footer"]').addClass(e.style.footer), a.find('[data-role="close"]').on("click", function () { + a.close() + }), gj.draggable && (e.draggable && gj.dialog.methods.draggable(a, b), e.resizable && gj.dialog.methods.resizable(a)), e.scrollable && e.height && (a.addClass("gj-dialog-scrollable"), a.on("opened", function () { + a.children('div[data-role="body"]').css("height", e.height - b.outerHeight() - (d.length ? d.outerHeight() : 0)) + })), gj.core.center(a), e.modal && a.wrapAll('
              '), e.autoOpen && a.open() + }, setSize: function (a) { + var b = a.data(); + b.width && a.css("width", b.width), b.height && a.css("height", b.height) + }, renderHeader: function (a) { + var b, c, d, e = a.data(); + return b = a.children('div[data-role="header"]'), 0 === b.length && (b = $('
              '), a.prepend(b)), b.addClass(e.style.header), c = b.find('[data-role="title"]'), 0 === c.length && (c = $('

              ' + e.title + "

              "), b.append(c)), c.addClass(e.style.headerTitle), d = b.find('[data-role="close"]'), 0 === d.length && e.closeButtonInHeader ? (d = $(''), d.addClass(e.style.headerCloseButton), b.append(d)) : d.length > 0 && !1 === e.closeButtonInHeader ? d.hide() : d.addClass(e.style.headerCloseButton), b + }, draggable: function (a, b) { + a.appendTo("body"), b.addClass("gj-draggable"), a.draggable({ + handle: b, start: function () { + a.addClass("gj-unselectable"), gj.dialog.events.dragStart(a) + }, stop: function () { + a.removeClass("gj-unselectable"), gj.dialog.events.dragStop(a) + } + }) + }, resizable: function (a) { + var b = { + drag: gj.dialog.methods.resize, start: function () { + a.addClass("gj-unselectable"), gj.dialog.events.resizeStart(a) + }, stop: function () { + this.removeAttribute("style"), a.removeClass("gj-unselectable"), gj.dialog.events.resizeStop(a) + } + }; + a.append($('
              ').draggable($.extend(!0, {horizontal: !1}, b))), a.append($('
              ').draggable($.extend(!0, {vertical: !1}, b))), a.append($('
              ').draggable($.extend(!0, {horizontal: !1}, b))), a.append($('
              ').draggable($.extend(!0, {vertical: !1}, b))), a.append($('
              ').draggable($.extend(!0, {}, b))), a.append($('
              ').draggable($.extend(!0, {}, b))), a.append($('
              ').draggable($.extend(!0, {}, b))), a.append($('
              ').draggable($.extend(!0, {}, b))) + }, resize: function (a, b) { + var c, d, e, f, g, h, i, j, k = !1; + return c = $(this), d = c.parent(), e = gj.core.position(this), offset = { + top: b.top - e.top, + left: b.left - e.left + }, f = d.data(), c.hasClass("gj-resizable-n") ? (g = d.height() - offset.top, i = d.offset().top + offset.top) : c.hasClass("gj-resizable-e") ? h = d.width() + offset.left : c.hasClass("gj-resizable-s") ? g = d.height() + offset.top : c.hasClass("gj-resizable-w") ? (h = d.width() - offset.left, j = d.offset().left + offset.left) : c.hasClass("gj-resizable-ne") ? (g = d.height() - offset.top, i = d.offset().top + offset.top, h = d.width() + offset.left) : c.hasClass("gj-resizable-nw") ? (g = d.height() - offset.top, i = d.offset().top + offset.top, h = d.width() - offset.left, j = d.offset().left + offset.left) : c.hasClass("gj-resizable-se") ? (g = d.height() + offset.top, h = d.width() + offset.left) : c.hasClass("gj-resizable-sw") && (g = d.height() + offset.top, h = d.width() - offset.left, j = d.offset().left + offset.left), g && (!f.minHeight || g >= f.minHeight) && (!f.maxHeight || g <= f.maxHeight) && (d.height(g), i && d.css("top", i), k = !0), h && (!f.minWidth || h >= f.minWidth) && (!f.maxWidth || h <= f.maxWidth) && (d.width(h), j && d.css("left", j), k = !0), k && gj.dialog.events.resize(d), k + }, open: function (a, b) { + var c; + return gj.dialog.events.opening(a), a.css("display", "block"), a.closest('div[data-role="modal"]').css("display", "block"), c = a.children('div[data-role="footer"]'), c.length && c.outerHeight() && a.children('div[data-role="body"]').css("margin-bottom", c.outerHeight()), void 0 !== b && a.find('[data-role="title"]').html(b), gj.dialog.events.opened(a), a + }, close: function (a) { + return a.is(":visible") && (gj.dialog.events.closing(a), a.css("display", "none"), a.closest('div[data-role="modal"]').css("display", "none"), gj.dialog.events.closed(a)), a + }, isOpen: function (a) { + return a.is(":visible") + }, content: function (a, b) { + var c = a.children('div[data-role="body"]'); + return void 0 === b ? c.html() : c.html(b) + }, destroy: function (a, b) { + var c = a.data(); + return c && (!1 === b ? a.remove() : (a.close(), a.off(), a.removeData(), a.removeAttr("data-type"), a.removeClass(c.style.content), a.find('[data-role="header"]').removeClass(c.style.header), a.find('[data-role="title"]').removeClass(c.style.headerTitle), a.find('[data-role="close"]').remove(), a.find('[data-role="body"]').removeClass(c.style.body), a.find('[data-role="footer"]').removeClass(c.style.footer))), a + } +}, gj.dialog.widget = function (a, b) { + var c = this, d = gj.dialog.methods; + return c.open = function (a) { + return d.open(this, a) + }, c.close = function () { + return d.close(this) + }, c.isOpen = function () { + return d.isOpen(this) + }, c.content = function (a) { + return d.content(this, a) + }, c.destroy = function (a) { + return d.destroy(this, a) + }, $.extend(a, c), "dialog" !== a.attr("data-type") && d.init.call(a, b), a +}, gj.dialog.widget.prototype = new gj.widget, gj.dialog.widget.constructor = gj.dialog.widget, gj.dialog.widget.prototype.getHTMLConfig = gj.dialog.methods.getHTMLConfig, function (a) { + a.fn.dialog = function (a) { + var b; + if (this && this.length) { + if ("object" != typeof a && a) { + if (b = new gj.dialog.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); + throw"Method " + a + " does not exist." + } + return new gj.dialog.widget(this, a) + } + } +}(jQuery), gj.dialog.messages["en-us"] = { + Close: "Close", + DefaultTitle: "Dialog" +}, gj.draggable = {plugins: {}}, gj.draggable.config = { + base: { + handle: void 0, + vertical: !0, + horizontal: !0, + containment: void 0 + } +}, gj.draggable.methods = { + init: function (a) { + var b, c, d = this; + return gj.widget.prototype.init.call(this, a, "draggable"), c = this.data(), d.attr("data-draggable", "true"), b = gj.draggable.methods.getHandleElement(d), b.on("touchstart mousedown", function (a) { + var e = gj.core.position(d[0]); + d[0].style.top = e.top + "px", d[0].style.left = e.left + "px", d[0].style.position = "fixed", d.attr("draggable-dragging", !0), d.removeAttr("draggable-x").removeAttr("draggable-y"), gj.documentManager.subscribeForEvent("touchmove", d.data("guid"), gj.draggable.methods.createMoveHandler(d, b, c)), gj.documentManager.subscribeForEvent("mousemove", d.data("guid"), gj.draggable.methods.createMoveHandler(d, b, c)) + }), gj.documentManager.subscribeForEvent("mouseup", d.data("guid"), gj.draggable.methods.createUpHandler(d)), gj.documentManager.subscribeForEvent("touchend", d.data("guid"), gj.draggable.methods.createUpHandler(d)), gj.documentManager.subscribeForEvent("touchcancel", d.data("guid"), gj.draggable.methods.createUpHandler(d)), d + }, getHandleElement: function (a) { + var b = a.data("handle"); + return b && b.length ? b : a + }, createUpHandler: function (a) { + return function (b) { + "true" === a.attr("draggable-dragging") && (a.attr("draggable-dragging", !1), gj.documentManager.unsubscribeForEvent("mousemove", a.data("guid")), gj.documentManager.unsubscribeForEvent("touchmove", a.data("guid")), gj.draggable.events.stop(a, { + x: a.mouseX(b), + y: a.mouseY(b) + })) + } + }, createMoveHandler: function (a, b, c) { + return function (b) { + var d, e, f, g, h, i; + "true" === a.attr("draggable-dragging") && (d = Math.round(a.mouseX(b)), e = Math.round(a.mouseY(b)), h = a.attr("draggable-x"), i = a.attr("draggable-y"), h && i ? (f = c.horizontal ? d - parseInt(h, 10) : 0, g = c.vertical ? e - parseInt(i, 10) : 0, gj.draggable.methods.move(a[0], c, f, g, d, e)) : gj.draggable.events.start(a, d, e), a.attr("draggable-x", d), a.attr("draggable-y", e)) + } + }, move: function (a, b, c, d, e, f) { + var g, h, i, j = gj.core.position(a), k = j.top + d, l = j.left + c; + b.containment && (g = gj.core.position(b.containment), h = g.top + gj.core.height(b.containment) - gj.core.height(a), i = g.left + gj.core.width(b.containment) - gj.core.width(a), k > g.top && k < h ? (g.top >= f || g.bottom <= f) && (k = j.top) : k = k <= g.top ? g.top + 1 : h - 1, l > g.left && l < i ? (g.left >= e || g.right <= e) && (l = j.left) : l = l <= g.left ? g.left + 1 : i - 1), !1 !== gj.draggable.events.drag($(a), l, k, e, f) && (a.style.top = k + "px", a.style.left = l + "px") + }, destroy: function (a) { + return "true" === a.attr("data-draggable") && (gj.documentManager.unsubscribeForEvent("mouseup", a.data("guid")), a.removeData(), a.removeAttr("data-guid").removeAttr("data-type").removeAttr("data-draggable"), a.removeAttr("draggable-x").removeAttr("draggable-y").removeAttr("draggable-dragging"), a[0].style.top = "", a[0].style.left = "", a[0].style.position = "", a.off("drag").off("start").off("stop"), gj.draggable.methods.getHandleElement(a).off("mousedown")), a + } +}, gj.draggable.events = { + drag: function (a, b, c, d, e) { + return a.triggerHandler("drag", [{left: b, top: c}, {x: d, y: e}]) + }, start: function (a, b, c) { + a.triggerHandler("start", [{x: b, y: c}]) + }, stop: function (a, b) { + a.triggerHandler("stop", [b]) + } +}, gj.draggable.widget = function (a, b) { + var c = this, d = gj.draggable.methods; + return a.destroy || (c.destroy = function () { + return d.destroy(this) + }), $.extend(a, c), "true" !== a.attr("data-draggable") && d.init.call(a, b), a +}, gj.draggable.widget.prototype = new gj.widget, gj.draggable.widget.constructor = gj.draggable.widget, function (a) { + a.fn.draggable = function (a) { + var b; + if (this && this.length) { + if ("object" != typeof a && a) { + if (b = new gj.draggable.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); + throw"Method " + a + " does not exist." + } + return new gj.draggable.widget(this, a) + } + } +}(jQuery), gj.droppable = {plugins: {}}, gj.droppable.config = {hoverClass: void 0}, gj.droppable.methods = { + init: function (a) { + var b = this; + return gj.widget.prototype.init.call(this, a, "droppable"), b.attr("data-droppable", "true"), gj.documentManager.subscribeForEvent("mousedown", b.data("guid"), gj.droppable.methods.createMouseDownHandler(b)), gj.documentManager.subscribeForEvent("mousemove", b.data("guid"), gj.droppable.methods.createMouseMoveHandler(b)), gj.documentManager.subscribeForEvent("mouseup", b.data("guid"), gj.droppable.methods.createMouseUpHandler(b)), b + }, createMouseDownHandler: function (a) { + return function (b) { + a.isDragging = !0 + } + }, createMouseMoveHandler: function (a) { + return function (b) { + if (a.isDragging) { + var c = a.data("hoverClass"), d = {x: a.mouseX(b), y: a.mouseY(b)}, + e = gj.droppable.methods.isOver(a, d); + e != a.isOver && (e ? (c && a.addClass(c), gj.droppable.events.over(a, d)) : (c && a.removeClass(c), gj.droppable.events.out(a))), a.isOver = e + } + } + }, createMouseUpHandler: function (a) { + return function (b) { + var c = {left: a.mouseX(b), top: a.mouseY(b)}; + a.isDragging = !1, gj.droppable.methods.isOver(a, c) && gj.droppable.events.drop(a) + } + }, isOver: function (a, b) { + var c = a.offset().top, d = a.offset().left; + return b.x > d && b.x < d + a.outerWidth(!0) && b.y > c && b.y < c + a.outerHeight(!0) + }, destroy: function (a) { + return "true" === a.attr("data-droppable") && (gj.documentManager.unsubscribeForEvent("mousedown", a.data("guid")), gj.documentManager.unsubscribeForEvent("mousemove", a.data("guid")), gj.documentManager.unsubscribeForEvent("mouseup", a.data("guid")), a.removeData(), a.removeAttr("data-guid"), a.removeAttr("data-droppable"), a.off("drop").off("over").off("out")), a + } +}, gj.droppable.events = { + drop: function (a, b, c) { + a.trigger("drop", [{top: c, left: b}]) + }, over: function (a, b) { + a.trigger("over", [b]) + }, out: function (a) { + a.trigger("out") + } +}, gj.droppable.widget = function (a, b) { + var c = this, d = gj.droppable.methods; + return c.isOver = !1, c.isDragging = !1, c.destroy = function () { + return d.destroy(this) + }, c.isOver = function (a) { + return d.isOver(this, a) + }, $.extend(a, c), "true" !== a.attr("data-droppable") && d.init.call(a, b), a +}, gj.droppable.widget.prototype = new gj.widget, gj.droppable.widget.constructor = gj.droppable.widget, function (a) { + a.fn.droppable = function (a) { + var b; + if (this && this.length) { + if ("object" != typeof a && a) { + if (b = new gj.droppable.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); + throw"Method " + a + " does not exist." + } + return new gj.droppable.widget(this, a) + } + } +}(jQuery), gj.grid = {plugins: {}, messages: {}}, gj.grid.config = { + base: { + dataSource: void 0, + columns: [], + autoGenerateColumns: !1, + defaultColumnSettings: { + hidden: !1, + width: void 0, + sortable: !1, + type: "text", + title: void 0, + field: void 0, + align: void 0, + cssClass: void 0, + headerCssClass: void 0, + tooltip: void 0, + icon: void 0, + events: void 0, + format: "mm/dd/yyyy", + decimalDigits: void 0, + tmpl: void 0, + stopPropagation: !1, + renderer: void 0, + filter: void 0 + }, + mapping: {dataField: "records", totalRecordsField: "total"}, + params: {}, + paramNames: {sortBy: "sortBy", direction: "direction"}, + uiLibrary: "materialdesign", + iconsLibrary: "materialicons", + selectionType: "single", + selectionMethod: "basic", + autoLoad: !0, + notFoundText: void 0, + width: void 0, + minWidth: void 0, + headerRowHeight: "fixed", + bodyRowHeight: "autogrow", + fontSize: void 0, + primaryKey: void 0, + locale: "en-us", + defaultIconColumnWidth: 70, + defaultCheckBoxColumnWidth: 70, + style: { + wrapper: "gj-grid-wrapper", + table: "gj-grid gj-grid-md", + loadingCover: "gj-grid-loading-cover", + loadingText: "gj-grid-loading-text", + header: {cell: void 0, sortable: "gj-cursor-pointer gj-unselectable"}, + content: {rowSelected: "gj-grid-md-select"} + }, + icons: {asc: "▲", desc: "▼"} + }, + bootstrap: { + style: { + wrapper: "gj-grid-wrapper", + table: "gj-grid gj-grid-bootstrap gj-grid-bootstrap-3 table table-bordered table-hover", + content: {rowSelected: "active"} + }, iconsLibrary: "glyphicons", defaultIconColumnWidth: 34, defaultCheckBoxColumnWidth: 36 + }, + bootstrap4: { + style: { + wrapper: "gj-grid-wrapper", + table: "gj-grid gj-grid-bootstrap gj-grid-bootstrap-4 table table-bordered table-hover", + content: {rowSelected: "active"} + }, defaultIconColumnWidth: 42, defaultCheckBoxColumnWidth: 44 + }, + materialicons: {icons: {asc: '', desc: ''}}, + fontawesome: { + icons: { + asc: '', + desc: '' + } + }, + glyphicons: { + icons: { + asc: '', + desc: '' + } + } +}, gj.grid.events = { + beforeEmptyRowInsert: function (a, b) { + return a.triggerHandler("beforeEmptyRowInsert", [b]) + }, dataBinding: function (a, b) { + return a.triggerHandler("dataBinding", [b]) + }, dataBound: function (a, b, c) { + return a.triggerHandler("dataBound", [b, c]) + }, rowDataBound: function (a, b, c, d) { + return a.triggerHandler("rowDataBound", [b, c, d]) + }, cellDataBound: function (a, b, c, d, e) { + return a.triggerHandler("cellDataBound", [b, c, d, e]) + }, rowSelect: function (a, b, c, d) { + return a.triggerHandler("rowSelect", [b, c, d]) + }, rowUnselect: function (a, b, c, d) { + return a.triggerHandler("rowUnselect", [b, c, d]) + }, rowRemoving: function (a, b, c, d) { + return a.triggerHandler("rowRemoving", [b, c, d]) + }, destroying: function (a) { + return a.triggerHandler("destroying") + }, columnHide: function (a, b) { + return a.triggerHandler("columnHide", [b]) + }, columnShow: function (a, b) { + return a.triggerHandler("columnShow", [b]) + }, initialized: function (a) { + return a.triggerHandler("initialized") + }, dataFiltered: function (a, b) { + return a.triggerHandler("dataFiltered", [b]) + } +}, gj.grid.methods = { + init: function (a) { + return gj.widget.prototype.init.call(this, a, "grid"), gj.grid.methods.initialize(this), this.data("autoLoad") && this.reload(), this + }, getConfig: function (a, b) { + var c = gj.widget.prototype.getConfig.call(this, a, b); + return gj.grid.methods.setDefaultColumnConfig(c.columns, c.defaultColumnSettings), c + }, setDefaultColumnConfig: function (a, b) { + var c, d; + if (a && a.length) for (d = 0; d < a.length; d++) c = $.extend(!0, {}, b), $.extend(!0, c, a[d]), a[d] = c + }, getHTMLConfig: function () { + var a = gj.widget.prototype.getHTMLConfig.call(this); + return a.columns = [], this.find("thead > tr > th").each(function () { + var b = $(this), c = b.text(), d = gj.widget.prototype.getHTMLConfig.call(b); + d.title = c, d.field || (d.field = c), d.events && (d.events = gj.grid.methods.eventsParser(d.events)), a.columns.push(d) + }), a + }, eventsParser: function (events) { + var result = {}, list, i, key, func, position; + for (list = events.split(","), i = 0; i < list.length; i++) (position = list[i].indexOf(":")) > 0 && (key = $.trim(list[i].substr(0, position)), func = $.trim(list[i].substr(position + 1, list[i].length)), result[key] = eval("window." + func)); + return result + }, initialize: function (a) { + var b = a.data(), c = a.parent('div[data-role="wrapper"]'); + gj.grid.methods.localization(b), 0 === c.length ? (c = $('
              ').addClass(b.style.wrapper), a.wrap(c)) : c.addClass(b.style.wrapper), b.width && a.parent().css("width", b.width), b.minWidth && a.css("min-width", b.minWidth), b.fontSize && a.css("font-size", b.fontSize), "autogrow" === b.headerRowHeight && a.addClass("autogrow-header-row"), "fixed" === b.bodyRowHeight && a.addClass("fixed-body-rows"), a.addClass(b.style.table), "checkbox" === b.selectionMethod && b.columns.splice(gj.grid.methods.getColumnPositionNotInRole(a), 0, { + title: "", + width: b.defaultCheckBoxColumnWidth, + align: "center", + type: "checkbox", + role: "selectRow", + events: { + click: function (b) { + gj.grid.methods.setSelected(a, b.data.id, $(this).closest("tr")) + } + }, + headerCssClass: "gj-grid-select-all", + stopPropagation: !0 + }), 0 === a.children("tbody").length && a.append($("
              ")), gj.grid.methods.renderHeader(a), gj.grid.methods.appendEmptyRow(a, " "), gj.grid.events.initialized(a) + }, localization: function (a) { + a.notFoundText || (a.notFoundText = gj.grid.messages[a.locale].NoRecordsFound) + }, renderHeader: function (a) { + var b, c, d, e, f, g, h, i, j; + for (b = a.data(), c = b.columns, d = b.style.header, e = a.children("thead"), 0 === e.length && (e = $(""), a.prepend(e)), f = $(''), i = 0; i < c.length; i += 1) g = $(''), e = $("'), a.children("tbody").append(b)), e = gj.grid.methods.getId(c, h.primaryKey, d + 1), b.attr("data-position", d + 1), "checkbox" !== h.selectionMethod && b.on("click", gj.grid.methods.createRowClickHandler(a, e)), g = 0; g < h.columns.length; g++) "update" === i ? (f = b.find("td:eq(" + g + ")"), gj.grid.methods.renderCell(a, f, h.columns[g], c, e)) : (f = gj.grid.methods.renderCell(a, null, h.columns[g], c, e), b.append(f)); + gj.grid.events.rowDataBound(a, b, e, c) + }, renderCell: function (a, b, c, d, e, f) { + var g, h; + if (b && 0 !== b.length ? (g = b.find('div[data-role="display"]'), f = "update") : (b = $("'), + f = $(''), c = $("").append(b), a.append(h), gj.grid.plugins.pagination.private.updatePagerColSpan(a), i = gj.grid.methods.clone(d.pager.leftControls), $.each(i, function () { + f.append(this) + }), j = gj.grid.methods.clone(d.pager.rightControls), $.each(j, function () { + g.append(this) + }), e = a.find("tfoot [data-role]"), k = 0; k < e.length; k++) gj.grid.plugins.pagination.private.initPagerControl($(e[k]), a) + }, localization: function (a) { + "bootstrap" === a.uiLibrary ? gj.grid.plugins.pagination.private.localizationBootstrap(a) : "bootstrap4" === a.uiLibrary ? gj.grid.plugins.pagination.private.localizationBootstrap4(a) : gj.grid.plugins.pagination.private.localizationMaterialDesign(a) + }, localizationBootstrap: function (a) { + var b = gj.grid.messages[a.locale]; + void 0 === a.pager.leftControls && (a.pager.leftControls = [$('").attr("title", b.FirstPageTooltip).attr("data-role", "page-first"), $('").attr("title", b.PreviousPageTooltip).attr("data-role", "page-previous"), $("
              " + b.Page + "
              "), $(''), $("
              " + b.Of + "
              "), $('
              0
              '), $('").attr("title", b.NextPageTooltip).attr("data-role", "page-next"), $('").attr("title", b.LastPageTooltip).attr("data-role", "page-last"), $('").attr("title", b.Refresh).attr("data-role", "page-refresh"), $('')]), void 0 === a.pager.rightControls && (a.pager.rightControls = [$("
              " + b.DisplayingRecords + "
              "), $('
              0
              '), $("
              -
              "), $('
              0
              '), $("
              " + b.Of + "
              "), $('
              0
              ')]) + }, localizationBootstrap4: function (a) { + var b = gj.grid.messages[a.locale]; + void 0 === a.pager.leftControls && (a.pager.leftControls = [$('").attr("title", b.FirstPageTooltip).attr("data-role", "page-first"), $('").attr("title", b.PreviousPageTooltip).attr("data-role", "page-previous"), $("
              " + b.Page + "
              "), $('
              '), $("
              " + b.Of + "
              "), $('
              0
              '), $('").attr("title", b.NextPageTooltip).attr("data-role", "page-next"), $('").attr("title", b.LastPageTooltip).attr("data-role", "page-last"), $('").attr("title", b.Refresh).attr("data-role", "page-refresh"), $('')]), void 0 === a.pager.rightControls && (a.pager.rightControls = [$("
              " + b.DisplayingRecords + " 
              "), $('
              0
              '), $("
              -
              "), $('
              0
              '), $("
              " + b.Of + "
              "), $('
              0
              ')]) + }, localizationMaterialDesign: function (a) { + var b = gj.grid.messages[a.locale]; + void 0 === a.pager.leftControls && (a.pager.leftControls = []), void 0 === a.pager.rightControls && (a.pager.rightControls = [$('' + b.RowsPerPage + ""), $(''), $(' '), $('0'), $('-'), $('0'), $('' + b.Of + ""), $('0'), $(' '), $('").attr("title", b.PreviousPageTooltip).attr("data-role", "page-previous").addClass(a.icons.first ? "gj-button-md-icon" : ""), $(' '), $('").attr("title", b.NextPageTooltip).attr("data-role", "page-next").addClass(a.icons.first ? "gj-button-md-icon" : "")]) + }, initPagerControl: function (a, b) { + var c = b.data(); + switch (a.data("role")) { + case"page-size": + c.pager.sizes && 0 < c.pager.sizes.length ? (a.show(), $.each(c.pager.sizes, function () { + a.append($("
              '); + for (b = 0; b < e.columns.length; b++) c = $("'), + j = $('"), i.insertBefore(e), b = g[c.grouping.groupBy] + } + e.show() + }), c.params[c.paramNames.groupBy] = c.grouping.groupBy, c.params[c.paramNames.groupByDirection] = c.grouping.direction + }, grouping: function (a, b) { + var c = a.data(); + b.sort(gj.grid.methods.createDefaultSorter(c.grouping.direction, c.grouping.groupBy)) + }, createExpandCollapseHandler: function (a) { + return function (b) { + var c = $(this), d = gj.grid.plugins.grouping.private; + "row" === c.closest("tr").next(":visible").data("role") ? d.collapseGroup(a, c) : d.expandGroup(a, c) + } + }, collapseGroup: function (a, b) { + var c = b.children('div[data-role="display"]'); + b.closest("tr").nextUntil('[role="group"]').hide(), c.empty().append(a.icons.expandGroup) + }, expandGroup: function (a, b) { + var c = b.children('div[data-role="display"]'); + b.closest("tr").nextUntil('[role="group"]').show(), c.empty().append(a.icons.collapseGroup) + } + }, public: {}, configure: function (a) { + var b, c = a.data(); + $.extend(!0, a, gj.grid.plugins.grouping.public), c.grouping && c.grouping.groupBy && (b = { + title: "", + width: c.defaultIconColumnWidth, + align: "center", + stopPropagation: !0, + cssClass: "gj-cursor-pointer gj-unselectable" + }, c.columns = [b].concat(c.columns), a.on("initialized", function () { + gj.grid.plugins.grouping.private.init(a) + }), a.on("dataFiltered", function (b, c) { + gj.grid.plugins.grouping.private.grouping(a, c) + })) + } +}, gj.grid.messages["en-us"] = { + First: "First", + Previous: "Previous", + Next: "Next", + Last: "Last", + Page: "Page", + FirstPageTooltip: "First Page", + PreviousPageTooltip: "Previous Page", + NextPageTooltip: "Next Page", + LastPageTooltip: "Last Page", + Refresh: "Refresh", + Of: "of", + DisplayingRecords: "Displaying records", + RowsPerPage: "Rows per page:", + Edit: "Edit", + Delete: "Delete", + Update: "Update", + Cancel: "Cancel", + NoRecordsFound: "No records found.", + Loading: "Loading..." +}, gj.tree = {plugins: {}}, gj.tree.config = { + base: { + params: {}, + autoLoad: !0, + selectionType: "single", + cascadeSelection: !1, + dataSource: void 0, + primaryKey: void 0, + textField: "text", + childrenField: "children", + hasChildrenField: "hasChildren", + imageCssClassField: "imageCssClass", + imageUrlField: "imageUrl", + imageHtmlField: "imageHtml", + disabledField: "disabled", + width: void 0, + border: !1, + uiLibrary: "materialdesign", + iconsLibrary: "materialicons", + autoGenId: 1, + autoGenFieldName: "autoId_b5497cc5-7ef3-49f5-a7dc-4a932e1aee4a", + indentation: 24, + style: { + wrapper: "gj-unselectable", + list: "gj-list gj-list-md", + item: void 0, + active: "gj-list-md-active", + leafIcon: void 0, + border: "gj-tree-md-border" + }, + icons: {expand: '', collapse: ''} + }, + bootstrap: { + style: { + wrapper: "gj-unselectable gj-tree-bootstrap-3", + list: "gj-list gj-list-bootstrap list-group", + item: "list-group-item", + active: "active", + border: "gj-tree-bootstrap-border" + }, iconsLibrary: "glyphicons" + }, + bootstrap4: { + style: { + wrapper: "gj-unselectable gj-tree-bootstrap-4", + list: "gj-list gj-list-bootstrap", + item: "list-group-item", + active: "active", + border: "gj-tree-bootstrap-border" + }, icons: {expand: '', collapse: ''} + }, + materialicons: {style: {expander: "gj-tree-material-icons-expander"}}, + fontawesome: { + style: {expander: "gj-tree-font-awesome-expander"}, + icons: { + expand: '', + collapse: '' + } + }, + glyphicons: { + style: {expander: "gj-tree-glyphicons-expander"}, + icons: { + expand: '', + collapse: '' + } + } +}, gj.tree.events = { + initialized: function (a) { + a.triggerHandler("initialized") + }, dataBinding: function (a) { + a.triggerHandler("dataBinding") + }, dataBound: function (a) { + a.triggerHandler("dataBound") + }, select: function (a, b, c) { + return a.triggerHandler("select", [b, c]) + }, unselect: function (a, b, c) { + return a.triggerHandler("unselect", [b, c]) + }, expand: function (a, b, c) { + return a.triggerHandler("expand", [b, c]) + }, collapse: function (a, b, c) { + return a.triggerHandler("collapse", [b, c]) + }, enable: function (a, b) { + return a.triggerHandler("enable", [b]) + }, disable: function (a, b) { + return a.triggerHandler("disable", [b]) + }, destroying: function (a) { + return a.triggerHandler("destroying") + }, nodeDataBound: function (a, b, c, d) { + return a.triggerHandler("nodeDataBound", [b, c, d]) + } +}, gj.tree.methods = { + init: function (a) { + return gj.widget.prototype.init.call(this, a, "tree"), gj.tree.methods.initialize.call(this), this.data("autoLoad") && this.reload(), this + }, initialize: function () { + var a = this.data(), b = $('
                '); + this.empty().addClass(a.style.wrapper).append(b), a.width && this.width(a.width), a.border && this.addClass(a.style.border), gj.tree.events.initialized(this) + }, useHtmlDataSource: function (a, b) { + b.dataSource = [] + }, render: function (a, b) { + var c; + return b && ("string" == typeof b && JSON && (b = JSON.parse(b)), c = a.data(), c.records = b, c.primaryKey || gj.tree.methods.genAutoId(c, c.records), gj.tree.methods.loadData(a)), a + }, filter: function (a) { + return a.data().dataSource + }, genAutoId: function (a, b) { + var c; + for (c = 0; c < b.length; c++) b[c][a.autoGenFieldName] = a.autoGenId++, b[c][a.childrenField] && b[c][a.childrenField].length && gj.tree.methods.genAutoId(a, b[c][a.childrenField]) + }, loadData: function (a) { + var b, c = a.data("records"), d = a.children("ul"); + for (gj.tree.events.dataBinding(a), d.off().empty(), b = 0; b < c.length; b++) gj.tree.methods.appendNode(a, d, c[b], 1); + gj.tree.events.dataBound(a) + }, appendNode: function (a, b, c, d, e) { + var f, g, h, i, j, k = a.data(), l = k.primaryKey ? c[k.primaryKey] : c[k.autoGenFieldName]; + if (g = $('
              • ').addClass(k.style.item), $wrapper = $('
                '), $expander = $('').addClass(k.style.expander), $display = $('' + c[k.textField] + ""), hasChildren = void 0 !== c[k.hasChildrenField] && "true" === c[k.hasChildrenField].toString().toLowerCase(), disabled = void 0 !== c[k.disabledField] && "true" === c[k.disabledField].toString().toLowerCase(), k.indentation && $wrapper.append(''), disabled ? gj.tree.methods.disableNode(a, g) : ($expander.on("click", gj.tree.methods.expanderClickHandler(a)), $display.on("click", gj.tree.methods.displayClickHandler(a))), $wrapper.append($expander), $wrapper.append($display), g.append($wrapper), e ? b.find("li:eq(" + (e - 1) + ")").before(g) : b.append(g), k.imageCssClassField && c[k.imageCssClassField] ? (i = $(''), i.insertBefore($display)) : k.imageUrlField && c[k.imageUrlField] ? (i = $(''), i.insertBefore($display), j = $(''), j.attr("width", i.width()).attr("height", i.height()), i.append(j)) : k.imageHtmlField && c[k.imageHtmlField] && (i = $('' + c[k.imageHtmlField] + ""), i.insertBefore($display)), c[k.childrenField] && c[k.childrenField].length || hasChildren) { + if ($expander.empty().append(k.icons.expand), h = $("
                  ").addClass(k.style.list).addClass("gj-hidden"), g.append(h), c[k.childrenField] && c[k.childrenField].length) for (f = 0; f < c[k.childrenField].length; f++) gj.tree.methods.appendNode(a, h, c[k.childrenField][f], d + 1) + } else k.style.leafIcon ? $expander.addClass(k.style.leafIcon) : $expander.html(" "); + gj.tree.events.nodeDataBound(a, g, c.id, c) + }, expanderClickHandler: function (a) { + return function (b) { + var c = $(this), d = c.closest("li"); + "close" === c.attr("data-mode") ? a.expand(d) : a.collapse(d) + } + }, expand: function (a, b, c) { + var d, e, f = b.find('>[data-role="wrapper"]>[data-role="expander"]'), g = a.data(), h = b.attr("data-id"), + i = b.children("ul"); + if (!1 !== gj.tree.events.expand(a, b, h) && i && i.length && (i.show(), f.attr("data-mode", "open"), f.empty().append(g.icons.collapse), c)) for (d = b.find("ul>li"), e = 0; e < d.length; e++) gj.tree.methods.expand(a, $(d[e]), c); + return a + }, collapse: function (a, b, c) { + var d, e, f = b.find('>[data-role="wrapper"]>[data-role="expander"]'), g = a.data(), h = b.attr("data-id"), + i = b.children("ul"); + if (!1 !== gj.tree.events.collapse(a, b, h) && i && i.length && (i.hide(), f.attr("data-mode", "close"), f.empty().append(g.icons.expand), c)) for (d = b.find("ul>li"), e = 0; e < d.length; e++) gj.tree.methods.collapse(a, $(d[e]), c); + return a + }, expandAll: function (a) { + var b, c = a.find("ul>li"); + for (b = 0; b < c.length; b++) gj.tree.methods.expand(a, $(c[b]), !0); + return a + }, collapseAll: function (a) { + var b, c = a.find("ul>li"); + for (b = 0; b < c.length; b++) gj.tree.methods.collapse(a, $(c[b]), !0); + return a + }, displayClickHandler: function (a) { + return function (b) { + var c = $(this), d = c.closest("li"), e = a.data().cascadeSelection; + "true" === d.attr("data-selected") ? gj.tree.methods.unselect(a, d, e) : ("single" === a.data("selectionType") && gj.tree.methods.unselectAll(a), gj.tree.methods.select(a, d, e)) + } + }, selectAll: function (a) { + var b, c = a.find("ul>li"); + for (b = 0; b < c.length; b++) gj.tree.methods.select(a, $(c[b]), !0); + return a + }, select: function (a, b, c) { + var d, e, f = a.data(); + if ("true" !== b.attr("data-selected") && !1 !== gj.tree.events.select(a, b, b.attr("data-id")) && (b.addClass(f.style.active).attr("data-selected", "true"), c)) for (e = b.find("ul>li"), d = 0; d < e.length; d++) gj.tree.methods.select(a, $(e[d]), c) + }, unselectAll: function (a) { + var b, c = a.find("ul>li"); + for (b = 0; b < c.length; b++) gj.tree.methods.unselect(a, $(c[b]), !0); + return a + }, unselect: function (a, b, c) { + var d, e; + a.data(); + if ("true" === b.attr("data-selected") && !1 !== gj.tree.events.unselect(a, b, b.attr("data-id")) && (b.removeClass(a.data().style.active).removeAttr("data-selected"), c)) for (e = b.find("ul>li"), d = 0; d < e.length; d++) gj.tree.methods.unselect(a, $(e[d]), c) + }, getSelections: function (a) { + var b, c, d, e = [], f = a.children("li"); + if (f && f.length) for (b = 0; b < f.length; b++) c = $(f[b]), "true" === c.attr("data-selected") ? e.push(c.attr("data-id")) : c.has("ul") && (d = gj.tree.methods.getSelections(c.children("ul")), d.length && (e = e.concat(d))); + return e + }, getDataById: function (a, b, c) { + var d, e = a.data(), f = void 0; + for (d = 0; d < c.length; d++) { + if (e.primaryKey && c[d][e.primaryKey] == b) { + f = c[d]; + break + } + if (c[d][e.autoGenFieldName] == b) { + f = c[d]; + break + } + if (c[d][e.childrenField] && c[d][e.childrenField].length && (f = gj.tree.methods.getDataById(a, b, c[d][e.childrenField]))) break + } + return f + }, getDataByText: function (a, b, c) { + var d, e = void 0, f = a.data(); + for (d = 0; d < c.length; d++) { + if (b === c[d][f.textField]) { + e = c[d]; + break + } + if (c[d][f.childrenField] && c[d][f.childrenField].length && (e = gj.tree.methods.getDataByText(a, b, c[d][f.childrenField]))) break + } + return e + }, getNodeById: function (a, b) { + var c, d, e = void 0, f = a.children("li"); + if (f && f.length) for (c = 0; c < f.length; c++) { + if (d = $(f[c]), b == d.attr("data-id")) { + e = d; + break + } + if (d.has("ul") && (e = gj.tree.methods.getNodeById(d.children("ul"), b))) break + } + return e + }, getNodeByText: function (a, b) { + var c, d, e = void 0, f = a.children("li"); + if (f && f.length) for (c = 0; c < f.length; c++) { + if (d = $(f[c]), b === d.find('>[data-role="wrapper"]>[data-role="display"]').text()) { + e = d; + break + } + if (d.has("ul") && (e = gj.tree.methods.getNodeByText(d.children("ul"), b))) break + } + return e + }, addNode: function (a, b, c, d) { + var e, f, g = a.data(); + return c && c.length ? ("li" === c[0].tagName.toLowerCase() && (0 === c.children("ul").length && (c.find('[data-role="expander"]').empty().append(g.icons.collapse), c.append($("
                    ").addClass(g.style.list))), c = c.children("ul")), f = a.getDataById(c.parent().data("id")), f[g.childrenField] || (f[g.childrenField] = []), f[g.childrenField].push(b)) : (c = a.children("ul"), a.data("records").push(b)), e = c.parentsUntil('[data-type="tree"]', "ul").length + 1, g.primaryKey || gj.tree.methods.genAutoId(g, [b]), gj.tree.methods.appendNode(a, c, b, e, d), a + }, remove: function (a, b) { + return gj.tree.methods.removeDataById(a, b.attr("data-id"), a.data("records")), b.remove(), a + }, removeDataById: function (a, b, c) { + var d, e = a.data(); + for (d = 0; d < c.length; d++) { + if (e.primaryKey && c[d][e.primaryKey] == b) { + c.splice(d, 1); + break + } + if (c[d][e.autoGenFieldName] == b) { + c.splice(d, 1); + break + } + c[d][e.childrenField] && c[d][e.childrenField].length && gj.tree.methods.removeDataById(a, b, c[d][e.childrenField]) + } + }, update: function (a, b, c) { + var d = a.data(), e = a.getNodeById(b); + a.getDataById(b); + return c, e.find('>[data-role="wrapper"]>[data-role="display"]').html(c[d.textField]), gj.tree.events.nodeDataBound(a, e, b, c), a + }, getChildren: function (a, b, c) { + var d, e, f = [], c = void 0 === c || c; + for (e = c ? b.find("ul li") : b.find(">ul>li"), d = 0; d < e.length; d++) f.push($(e[d]).data("id")); + return f + }, enableAll: function (a) { + var b, c = a.find("ul>li"); + for (b = 0; b < c.length; b++) gj.tree.methods.enableNode(a, $(c[b]), !0); + return a + }, enableNode: function (a, b, c) { + var d, e, f = b.find('>[data-role="wrapper"]>[data-role="expander"]'), + g = b.find('>[data-role="wrapper"]>[data-role="display"]'), c = void 0 === c || c; + if (b.removeClass("disabled"), f.on("click", gj.tree.methods.expanderClickHandler(a)), g.on("click", gj.tree.methods.displayClickHandler(a)), gj.tree.events.enable(a, b), c) for (e = b.find("ul>li"), d = 0; d < e.length; d++) gj.tree.methods.enableNode(a, $(e[d]), c) + }, disableAll: function (a) { + var b, c = a.find("ul>li"); + for (b = 0; b < c.length; b++) gj.tree.methods.disableNode(a, $(c[b]), !0); + return a + }, disableNode: function (a, b, c) { + var d, e, f = b.find('>[data-role="wrapper"]>[data-role="expander"]'), + g = b.find('>[data-role="wrapper"]>[data-role="display"]'), c = void 0 === c || c; + if (b.addClass("disabled"), f.off("click"), g.off("click"), gj.tree.events.disable(a, b), c) for (e = b.find("ul>li"), d = 0; d < e.length; d++) gj.tree.methods.disableNode(a, $(e[d]), c) + }, destroy: function (a) { + return a.data() && (gj.tree.events.destroying(a), a.xhr && a.xhr.abort(), a.off(), a.removeData(), a.removeAttr("data-type"), a.removeClass().empty()), a + }, pathFinder: function (a, b, c, d) { + var e, f = !1; + for (e = 0; e < b.length; e++) { + if (b[e].id == c) { + f = !0; + break + } + if (gj.tree.methods.pathFinder(a, b[e][a.childrenField], c, d)) { + d.push(b[e].data[a.textField]), f = !0; + break + } + } + return f + } +}, gj.tree.widget = function (a, b) { + var c = this, d = gj.tree.methods; + return c.reload = function (a) { + return gj.widget.prototype.reload.call(this, a) + }, c.render = function (a) { + return d.render(this, a) + }, c.addNode = function (a, b, c) { + return d.addNode(this, a, b, c) + }, c.removeNode = function (a) { + return d.remove(this, a) + }, c.updateNode = function (a, b) { + return d.update(this, a, b) + }, c.destroy = function () { + return d.destroy(this) + }, c.expand = function (a, b) { + return d.expand(this, a, b) + }, c.collapse = function (a, b) { + return d.collapse(this, a, b) + }, c.expandAll = function () { + return d.expandAll(this) + }, c.collapseAll = function () { + return d.collapseAll(this) + }, c.getDataById = function (a) { + return d.getDataById(this, a, this.data("records")) + }, c.getDataByText = function (a) { + return d.getDataByText(this, a, this.data("records")) + }, c.getNodeById = function (a) { + return d.getNodeById(this.children("ul"), a) + }, c.getNodeByText = function (a) { + return d.getNodeByText(this.children("ul"), a) + }, c.getAll = function () { + return this.data("records") + }, c.select = function (a) { + return d.select(this, a) + }, c.unselect = function (a) { + return d.unselect(this, a) + }, c.selectAll = function () { + return d.selectAll(this) + }, c.unselectAll = function () { + return d.unselectAll(this) + }, c.getSelections = function () { + return d.getSelections(this.children("ul")) + }, c.getChildren = function (a, b) { + return d.getChildren(this, a, b) + }, c.parents = function (a) { + var b = [], c = this.data(); + return d.pathFinder(c, c.records, a, b), b.reverse() + }, c.enable = function (a, b) { + return d.enableNode(this, a, b) + }, c.enableAll = function () { + return d.enableAll(this) + }, c.disable = function (a, b) { + return d.disableNode(this, a, b) + }, c.disableAll = function () { + return d.disableAll(this) + }, $.extend(a, c), "tree" !== a.attr("data-type") && d.init.call(a, b), a +}, gj.tree.widget.prototype = new gj.widget, gj.tree.widget.constructor = gj.tree.widget, function (a) { + a.fn.tree = function (a) { + var b; + if (this && this.length) { + if ("object" != typeof a && a) { + if (b = new gj.tree.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); + throw"Method " + a + " does not exist." + } + return new gj.tree.widget(this, a) + } + } +}(jQuery), gj.tree.plugins.checkboxes = { + config: {base: {checkboxes: void 0, checkedField: "checked", cascadeCheck: !0}}, private: { + dataBound: function (a) { + var b; + a.data("cascadeCheck") && (b = a.find('li[data-role="node"]'), $.each(b, function () { + var a = $(this), b = a.find('[data-role="checkbox"] input[type="checkbox"]').checkbox("state"); + "checked" === b && (gj.tree.plugins.checkboxes.private.updateChildrenState(a, b), gj.tree.plugins.checkboxes.private.updateParentState(a, b)) + })) + }, nodeDataBound: function (a, b, c, d) { + var e, f, g, h, i; + 0 === b.find('> [data-role="wrapper"] > [data-role="checkbox"]').length && (e = a.data(), f = b.find('> [data-role="wrapper"] > [data-role="expander"]'), g = $(''), h = $('').append(g), i = void 0 !== d[e.disabledField] && "true" === d[e.disabledField].toString().toLowerCase(), g = g.checkbox({ + uiLibrary: e.uiLibrary, + iconsLibrary: e.iconsLibrary, + change: function (c, e) { + gj.tree.plugins.checkboxes.events.checkboxChange(a, b, d, g.state()) + } + }), i && g.prop("disabled", !0), d[e.checkedField] && g.state("checked"), g.on("click", function (a) { + var b = g.closest("li"), c = g.state(); + e.cascadeCheck && (gj.tree.plugins.checkboxes.private.updateChildrenState(b, c), gj.tree.plugins.checkboxes.private.updateParentState(b, c)) + }), f.after(h)) + }, updateParentState: function (a, b) { + var c, d, e, f, g, h; + c = a.parent("ul").parent("li"), 1 === c.length && (d = a.parent("ul").parent("li").find('> [data-role="wrapper"] > [data-role="checkbox"] input[type="checkbox"]'), e = a.siblings().find('> [data-role="wrapper"] > span[data-role="checkbox"] input[type="checkbox"]'), f = "checked" === b, g = "unchecked" === b, h = "indeterminate", $.each(e, function () { + var a = $(this).checkbox("state"); + f && "checked" !== a && (f = !1), g && "unchecked" !== a && (g = !1) + }), f && !g && (h = "checked"), !f && g && (h = "unchecked"), d.checkbox("state", h), gj.tree.plugins.checkboxes.private.updateParentState(c, d.checkbox("state"))) + }, updateChildrenState: function (a, b) { + var c = a.find('ul li [data-role="wrapper"] [data-role="checkbox"] input[type="checkbox"]'); + c.length > 0 && $.each(c, function () { + $(this).checkbox("state", b) + }) + }, update: function (a, b, c) { + var d = b.find('[data-role="checkbox"] input[type="checkbox"]').first(); + $(d).checkbox("state", c), a.data().cascadeCheck && (gj.tree.plugins.checkboxes.private.updateChildrenState(b, c), gj.tree.plugins.checkboxes.private.updateParentState(b, c)) + } + }, public: { + getCheckedNodes: function () { + var a = [], b = this.find('li [data-role="checkbox"] input[type="checkbox"]'); + return $.each(b, function () { + var b = $(this); + "checked" === b.checkbox("state") && a.push(b.closest("li").data("id")) + }), a + }, checkAll: function () { + var a = this.find('li [data-role="checkbox"] input[type="checkbox"]'); + return $.each(a, function () { + $(this).checkbox("state", "checked") + }), this + }, uncheckAll: function () { + var a = this.find('li [data-role="checkbox"] input[type="checkbox"]'); + return $.each(a, function () { + $(this).checkbox("state", "unchecked") + }), this + }, check: function (a) { + return gj.tree.plugins.checkboxes.private.update(this, a, "checked"), this + }, uncheck: function (a) { + return gj.tree.plugins.checkboxes.private.update(this, a, "unchecked"), this + } + }, events: { + checkboxChange: function (a, b, c, d) { + return a.triggerHandler("checkboxChange", [b, c, d]) + } + }, configure: function (a) { + a.data("checkboxes") && gj.checkbox && ($.extend(!0, a, gj.tree.plugins.checkboxes.public), a.on("nodeDataBound", function (b, c, d, e) { + gj.tree.plugins.checkboxes.private.nodeDataBound(a, c, d, e) + }), a.on("dataBound", function () { + gj.tree.plugins.checkboxes.private.dataBound(a) + }), a.on("enable", function (a, b) { + b.find('>[data-role="wrapper"]>[data-role="checkbox"] input[type="checkbox"]').prop("disabled", !1) + }), a.on("disable", function (a, b) { + b.find('>[data-role="wrapper"]>[data-role="checkbox"] input[type="checkbox"]').prop("disabled", !0) + })) + } +}, gj.tree.plugins.dragAndDrop = { + config: { + base: { + dragAndDrop: void 0, + style: { + dragEl: "gj-tree-drag-el gj-tree-md-drag-el", + dropAsChildIcon: "gj-cursor-pointer gj-icon plus", + dropAbove: "gj-tree-drop-above", + dropBelow: "gj-tree-drop-below" + } + }, + bootstrap: { + style: { + dragEl: "gj-tree-drag-el gj-tree-bootstrap-drag-el", + dropAsChildIcon: "glyphicon glyphicon-plus", + dropAbove: "drop-above", + dropBelow: "drop-below" + } + }, + bootstrap4: { + style: { + dragEl: "gj-tree-drag-el gj-tree-bootstrap-drag-el", + dropAsChildIcon: "gj-cursor-pointer gj-icon plus", + dropAbove: "drop-above", + dropBelow: "drop-below" + } + } + }, private: { + nodeDataBound: function (a, b) { + var c = b.children('[data-role="wrapper"]'), d = b.find('>[data-role="wrapper"]>[data-role="display"]'); + c.length && d.length && (d.on("mousedown", gj.tree.plugins.dragAndDrop.private.createNodeMouseDownHandler(a)), d.on("mousemove", gj.tree.plugins.dragAndDrop.private.createNodeMouseMoveHandler(a, b, d)), d.on("mouseup", gj.tree.plugins.dragAndDrop.private.createNodeMouseUpHandler(a))) + }, createNodeMouseDownHandler: function (a) { + return function (b) { + a.data("dragReady", !0) + } + }, createNodeMouseUpHandler: function (a) { + return function (b) { + a.data("dragReady", !1) + } + }, createNodeMouseMoveHandler: function (a, b, c) { + return function (d) { + if (a.data("dragReady")) { + var e, f, g, h, i = a.data(); + a.data("dragReady", !1), e = c.clone().wrap('
                    ').closest("div").wrap('
                  • ').closest("li").wrap('
                      ').closest("ul"), $("body").append(e), e.attr("data-role", "draggable-clone").addClass("gj-unselectable").addClass(i.style.dragEl), e.find('[data-role="wrapper"]').prepend(''), e.draggable({ + drag: gj.tree.plugins.dragAndDrop.private.createDragHandler(a, b, c), + stop: gj.tree.plugins.dragAndDrop.private.createDragStopHandler(a, b, c) + }), f = c.parent(), g = c.offset().top, g -= parseInt(f.css("border-top-width")) + parseInt(f.css("margin-top")) + parseInt(f.css("padding-top")), h = c.offset().left, h -= parseInt(f.css("border-left-width")) + parseInt(f.css("margin-left")) + parseInt(f.css("padding-left")), h -= e.find('[data-role="indicator"]').outerWidth(!0), e.css({ + position: "absolute", + top: g, + left: h, + width: c.outerWidth(!0) + }), "true" === c.attr("data-droppable") && c.droppable("destroy"), gj.tree.plugins.dragAndDrop.private.getTargetDisplays(a, b, c).each(function () { + var a = $(this); + "true" === a.attr("data-droppable") && a.droppable("destroy"), a.droppable() + }), gj.tree.plugins.dragAndDrop.private.getTargetDisplays(a, b).each(function () { + var a = $(this); + "true" === a.attr("data-droppable") && a.droppable("destroy"), a.droppable() + }), e.trigger("mousedown") + } + } + }, getTargetDisplays: function (a, b, c) { + return a.find('[data-role="display"]').not(c).not(b.find('[data-role="display"]')) + }, getTargetWrappers: function (a, b) { + return a.find('[data-role="wrapper"]').not(b.find('[data-role="wrapper"]')) + }, createDragHandler: function (a, b, c) { + var d = gj.tree.plugins.dragAndDrop.private.getTargetDisplays(a, b, c), + e = gj.tree.plugins.dragAndDrop.private.getTargetWrappers(a, b), f = a.data(); + return function (a, b, c) { + var g = $(this), h = !1; + d.each(function () { + var a, b = $(this); + if (b.droppable("isOver", c)) return a = g.find('[data-role="indicator"]'), f.style.dropAsChildIcon ? a.addClass(f.style.dropAsChildIcon) : a.text("+"), h = !0, !1; + g.find('[data-role="indicator"]').removeClass(f.style.dropAsChildIcon).empty() + }), e.each(function () { + var a, b = $(this); + !h && b.droppable("isOver", c) ? (a = b.position().top + b.outerHeight() / 2, c.y < a ? b.addClass(f.style.dropAbove).removeClass(f.style.dropBelow) : b.addClass(f.style.dropBelow).removeClass(f.style.dropAbove)) : b.removeClass(f.style.dropAbove).removeClass(f.style.dropBelow) + }) + } + }, createDragStopHandler: function (a, b, c) { + var d = gj.tree.plugins.dragAndDrop.private.getTargetDisplays(a, b, c), + e = gj.tree.plugins.dragAndDrop.private.getTargetWrappers(a, b), f = a.data(); + return function (c, g) { + var h, i, j, k, l = !1; + $(this).draggable("destroy").remove(), d.each(function () { + var c, d = $(this); + if (d.droppable("isOver", g)) return i = d.closest("li"), j = b.parent("ul").parent("li"), c = i.children("ul"), 0 === c.length && (c = $("
                        ").addClass(f.style.list), i.append(c)), !1 !== gj.tree.plugins.dragAndDrop.events.nodeDrop(a, b.data("id"), i.data("id"), c.children("li").length + 1) && (c.append(b), h = a.getDataById(b.data("id")), gj.tree.methods.removeDataById(a, b.data("id"), f.records), k = a.getDataById(c.parent().data("id")), void 0 === k[f.childrenField] && (k[f.childrenField] = []), k[f.childrenField].push(h), gj.tree.plugins.dragAndDrop.private.refresh(a, b, i, j)), l = !0, !1; + d.droppable("destroy") + }), l || e.each(function () { + var c, d, e, k = $(this); + if (k.droppable("isOver", g)) return i = k.closest("li"), j = b.parent("ul").parent("li"), c = g.y < k.position().top + k.outerHeight() / 2, e = b.data("id"), d = i.prevAll('li:not([data-id="' + e + '"])').length + (c ? 1 : 2), !1 !== gj.tree.plugins.dragAndDrop.events.nodeDrop(a, e, i.parent("ul").parent("li").data("id"), d) && (h = a.getDataById(b.data("id")), gj.tree.methods.removeDataById(a, b.data("id"), f.records), a.getDataById(i.parent().data("id"))[f.childrenField].splice(i.index() + (c ? 0 : 1), 0, h), c ? b.insertBefore(i) : b.insertAfter(i), gj.tree.plugins.dragAndDrop.private.refresh(a, b, i, j)), !1; + k.droppable("destroy") + }) + } + }, refresh: function (a, b, c, d) { + var e = a.data(); + gj.tree.plugins.dragAndDrop.private.refreshNode(a, c), gj.tree.plugins.dragAndDrop.private.refreshNode(a, d), gj.tree.plugins.dragAndDrop.private.refreshNode(a, b), b.find('li[data-role="node"]').each(function () { + gj.tree.plugins.dragAndDrop.private.refreshNode(a, $(this)) + }), c.children('[data-role="wrapper"]').removeClass(e.style.dropAbove).removeClass(e.style.dropBelow) + }, refreshNode: function (a, b) { + var c = b.children('[data-role="wrapper"]'), d = c.children('[data-role="expander"]'), + e = c.children('[data-role="spacer"]'), f = b.children("ul"), g = a.data(), + h = b.parentsUntil('[data-type="tree"]', "ul").length; + f.length && f.children().length ? f.is(":visible") ? d.empty().append(g.icons.collapse) : d.empty().append(g.icons.expand) : d.empty(), c.removeClass(g.style.dropAbove).removeClass(g.style.dropBelow), e.css("width", g.indentation * (h - 1)) + } + }, public: {}, events: { + nodeDrop: function (a, b, c, d) { + return a.triggerHandler("nodeDrop", [b, c, d]) + } + }, configure: function (a) { + $.extend(!0, a, gj.tree.plugins.dragAndDrop.public), a.data("dragAndDrop") && gj.draggable && gj.droppable && a.on("nodeDataBound", function (b, c) { + gj.tree.plugins.dragAndDrop.private.nodeDataBound(a, c) + }) + } +}, gj.tree.plugins.lazyLoading = { + config: {base: {paramNames: {parentId: "parentId"}, lazyLoading: !1}}, + private: { + nodeDataBound: function (a, b, c, d) { + var e = a.data(), f = b.find('> [data-role="wrapper"] > [data-role="expander"]'); + d.hasChildren && f.empty().append(e.icons.expand) + }, createDoneHandler: function (a, b) { + return function (c) { + var d, e, f, g = a.data(); + if ("string" == typeof c && JSON && (c = JSON.parse(c)), c && c.length) { + for (f = b.children("ul"), 0 === f.length && (f = $("
                          ").addClass(g.style.list), b.append(f)), d = 0; d < c.length; d++) a.addNode(c[d], f); + e = b.find('>[data-role="wrapper"]>[data-role="expander"]'), e.attr("data-mode", "open"), e.empty().append(g.icons.collapse), gj.tree.events.dataBound(a) + } + } + }, expand: function (a, b, c) { + var d, e = a.data(), f = {}, g = b.find(">ul>li"); + g && g.length || "string" == typeof e.dataSource && (f[e.paramNames.parentId] = c, d = { + url: e.dataSource, + data: f + }, a.xhr && a.xhr.abort(), a.xhr = $.ajax(d).done(gj.tree.plugins.lazyLoading.private.createDoneHandler(a, b)).fail(a.createErrorHandler())) + } + }, + public: {}, + events: {}, + configure: function (a, b, c) { + c.lazyLoading && (a.on("nodeDataBound", function (b, c, d, e) { + gj.tree.plugins.lazyLoading.private.nodeDataBound(a, c, d, e) + }), a.on("expand", function (b, c, d) { + gj.tree.plugins.lazyLoading.private.expand(a, c, d) + })) + } +}, gj.checkbox = {plugins: {}}, gj.checkbox.config = { + base: { + uiLibrary: "materialdesign", + iconsLibrary: "materialicons", + style: {wrapperCssClass: "gj-checkbox-md", spanCssClass: void 0} + }, + bootstrap: {style: {wrapperCssClass: "gj-checkbox-bootstrap"}, iconsLibrary: "glyphicons"}, + bootstrap4: { + style: {wrapperCssClass: "gj-checkbox-bootstrap gj-checkbox-bootstrap-4"}, + iconsLibrary: "materialicons" + }, + materialicons: {style: {iconsCssClass: "gj-checkbox-material-icons", spanCssClass: "gj-icon"}}, + glyphicons: {style: {iconsCssClass: "gj-checkbox-glyphicons", spanCssClass: ""}}, + fontawesome: {style: {iconsCssClass: "gj-checkbox-fontawesome", spanCssClass: "fa"}} +}, gj.checkbox.methods = { + init: function (a) { + var b = this; + return gj.widget.prototype.init.call(this, a, "checkbox"), b.attr("data-checkbox", "true"), gj.checkbox.methods.initialize(b), b + }, initialize: function (a) { + var b, c, d = a.data(); + d.style.wrapperCssClass && (b = $(''), a.attr("id") && b.attr("for", a.attr("id")), a.wrap(b), c = $(""), d.style.spanCssClass && c.addClass(d.style.spanCssClass), a.parent().append(c)) + }, state: function (a, b) { + return b ? ("checked" === b ? (a.prop("indeterminate", !1), a.prop("checked", !0)) : "unchecked" === b ? (a.prop("indeterminate", !1), a.prop("checked", !1)) : "indeterminate" === b && (a.prop("checked", !0), a.prop("indeterminate", !0)), gj.checkbox.events.change(a, b), a) : b = a.prop("indeterminate") ? "indeterminate" : a.prop("checked") ? "checked" : "unchecked" + }, toggle: function (a) { + return "checked" == a.state() ? a.state("unchecked") : a.state("checked"), a + }, destroy: function (a) { + return "true" === a.attr("data-checkbox") && (a.removeData(), a.removeAttr("data-guid"), a.removeAttr("data-checkbox"), a.off(), a.next("span").remove(), a.unwrap()), a + } +}, gj.checkbox.events = { + change: function (a, b) { + return a.triggerHandler("change", [b]) + } +}, gj.checkbox.widget = function (a, b) { + var c = this, d = gj.checkbox.methods; + return c.toggle = function () { + return d.toggle(this) + }, c.state = function (a) { + return d.state(this, a) + }, c.destroy = function () { + return d.destroy(this) + }, $.extend(a, c), "true" !== a.attr("data-checkbox") && d.init.call(a, b), a +}, gj.checkbox.widget.prototype = new gj.widget, gj.checkbox.widget.constructor = gj.checkbox.widget, function (a) { + a.fn.checkbox = function (a) { + var b; + if (this && this.length) { + if ("object" != typeof a && a) { + if (b = new gj.checkbox.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); + throw"Method " + a + " does not exist." + } + return new gj.checkbox.widget(this, a) + } + } +}(jQuery), gj.editor = {plugins: {}, messages: {}}, gj.editor.config = { + base: { + height: 300, + width: void 0, + uiLibrary: "materialdesign", + iconsLibrary: "materialicons", + locale: "en-us", + buttons: void 0, + style: { + wrapper: "gj-editor gj-editor-md", + buttonsGroup: "gj-button-md-group", + button: "gj-button-md", + buttonActive: "active" + } + }, + bootstrap: { + style: { + wrapper: "gj-editor gj-editor-bootstrap", + buttonsGroup: "btn-group", + button: "btn btn-default gj-cursor-pointer", + buttonActive: "active" + } + }, + bootstrap4: { + style: { + wrapper: "gj-editor gj-editor-bootstrap", + buttonsGroup: "btn-group", + button: "btn btn-outline-secondary gj-cursor-pointer", + buttonActive: "active" + } + }, + materialicons: { + icons: { + bold: '', + italic: '', + strikethrough: '', + underline: '', + listBulleted: '', + listNumbered: '', + indentDecrease: '', + indentIncrease: '', + alignLeft: '', + alignCenter: '', + alignRight: '', + alignJustify: '', + undo: '', + redo: '' + } + }, + fontawesome: { + icons: { + bold: '', + italic: '', + strikethrough: '', + underline: '', + listBulleted: '', + listNumbered: '', + indentDecrease: '', + indentIncrease: '', + alignLeft: '', + alignCenter: '', + alignRight: '', + alignJustify: '', + undo: '', + redo: '' + } + } +}, gj.editor.methods = { + init: function (a) { + return gj.widget.prototype.init.call(this, a, "editor"), this.attr("data-editor", "true"), gj.editor.methods.initialize(this), this + }, initialize: function (a) { + var b, c, d, e, f, g = this, h = a.data(); + if (a.hide(), "wrapper" !== a[0].parentElement.attributes.role && (d = document.createElement("div"), d.setAttribute("role", "wrapper"), a[0].parentNode.insertBefore(d, a[0]), d.appendChild(a[0])), gj.editor.methods.localization(h), $(d).addClass(h.style.wrapper), h.width && $(d).width(h.width), e = $(d).children('div[role="body"]'), 0 === e.length && (e = $('
                          '), $(d).append(e), a[0].innerText && (e[0].innerHTML = a[0].innerText)), e.attr("contenteditable", !0), e.on("keydown", function (b) { + var c = event.keyCode || event.charCode; + !1 === gj.editor.events.changing(a) && 8 !== c && 46 !== c && b.preventDefault() + }), e.on("mouseup keyup mouseout cut paste", function (b) { + g.updateToolbar(a, f), gj.editor.events.changed(a), a.html(e.html()) + }), f = $(d).children('div[role="toolbar"]'), 0 === f.length) { + f = $('
                          '), e.before(f); + for (var i in h.buttons) { + b = $("
                          ").addClass(h.style.buttonsGroup); + for (var j in h.buttons[i]) c = $(h.buttons[i][j]), c.on("click", function () { + gj.editor.methods.executeCmd(a, e, f, $(this)) + }), b.append(c); + f.append(b) + } + } + e.height(h.height - gj.core.height(f[0], !0)) + }, localization: function (a) { + var b = gj.editor.messages[a.locale]; + void 0 === a.buttons && (a.buttons = [['", '", '", '"], ['", '", '", '"], ['", '", '", '"], ['", '"]]) + }, updateToolbar: function (a, b) { + var c = a.data(); + $buttons = b.find("[role]").each(function () { + var a = $(this), b = a.attr("role"); + b && document.queryCommandEnabled(b) && "true" === document.queryCommandValue(b) ? a.addClass(c.style.buttonActive) : a.removeClass(c.style.buttonActive) + }) + }, executeCmd: function (a, b, c, d) { + b.focus(), document.execCommand(d.attr("role"), !1), gj.editor.methods.updateToolbar(a, c) + }, content: function (a, b) { + var c = a.parent().children('div[role="body"]'); + return void 0 === b ? c.html() : c.html(b) + }, destroy: function (a) { + var b; + return "true" === a.attr("data-editor") && (b = a.parent(), b.children('div[role="body"]').remove(), b.children('div[role="toolbar"]').remove(), a.unwrap(), a.removeData(), a.removeAttr("data-guid"), a.removeAttr("data-editor"), a.off(), a.show()), a + } +}, gj.editor.events = { + changing: function (a) { + return a.triggerHandler("changing") + }, changed: function (a) { + return a.triggerHandler("changed") + } +}, gj.editor.widget = function (a, b) { + var c = this, d = gj.editor.methods; + return c.content = function (a) { + return d.content(this, a) + }, c.destroy = function () { + return d.destroy(this) + }, $.extend(a, c), "true" !== a.attr("data-editor") && d.init.call(a, b), a +}, gj.editor.widget.prototype = new gj.widget, gj.editor.widget.constructor = gj.editor.widget, function (a) { + a.fn.editor = function (a) { + var b; + if (this && this.length) { + if ("object" != typeof a && a) { + if (b = new gj.editor.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); + throw"Method " + a + " does not exist." + } + return new gj.editor.widget(this, a) + } + } +}(jQuery), gj.editor.messages["en-us"] = { + bold: "Bold", + italic: "Italic", + strikethrough: "Strikethrough", + underline: "Underline", + listBulleted: "List Bulleted", + listNumbered: "List Numbered", + indentDecrease: "Indent Decrease", + indentIncrease: "Indent Increase", + alignLeft: "Align Left", + alignCenter: "Align Center", + alignRight: "Align Right", + alignJustify: "Align Justify", + undo: "Undo", + redo: "Redo" +},gj.dropdown = {plugins: {}},gj.dropdown.config = { + base: { + dataSource: void 0, + textField: "text", + valueField: "value", + selectedField: "selected", + width: void 0, + maxHeight: "auto", + placeholder: void 0, + fontSize: void 0, + uiLibrary: "materialdesign", + iconsLibrary: "materialicons", + icons: {dropdown: '', dropup: ''}, + style: { + wrapper: "gj-dropdown gj-dropdown-md gj-unselectable", + list: "gj-list gj-list-md gj-dropdown-list-md", + active: "gj-list-md-active" + } + }, + bootstrap: { + style: { + wrapper: "gj-dropdown gj-dropdown-bootstrap gj-dropdown-bootstrap-3 gj-unselectable", + presenter: "btn btn-default", + list: "gj-list gj-list-bootstrap gj-dropdown-list-bootstrap list-group", + item: "list-group-item", + active: "active" + }, iconsLibrary: "glyphicons" + }, + bootstrap4: { + style: { + wrapper: "gj-dropdown gj-dropdown-bootstrap gj-dropdown-bootstrap-4 gj-unselectable", + presenter: "btn btn-outline-secondary", + list: "gj-list gj-list-bootstrap gj-dropdown-list-bootstrap list-group", + item: "list-group-item", + active: "active" + } + }, + materialicons: {style: {expander: "gj-dropdown-expander-mi"}}, + fontawesome: { + icons: { + dropdown: '', + dropup: '' + }, style: {expander: "gj-dropdown-expander-fa"} + }, + glyphicons: { + icons: { + dropdown: '', + dropup: '' + }, style: {expander: "gj-dropdown-expander-glyphicons"} + } +},gj.dropdown.methods = { + init: function (a) { + return gj.widget.prototype.init.call(this, a, "dropdown"), this.attr("data-dropdown", "true"), gj.dropdown.methods.initialize(this), this + }, getHTMLConfig: function () { + var a = gj.widget.prototype.getHTMLConfig.call(this), b = this[0].attributes; + return b.placeholder && (a.placeholder = b.placeholder.value), a + }, initialize: function (a) { + var b = a.data(), c = a.parent('div[role="wrapper"]'), d = $(''), + e = $('' + b.icons.dropdown + "").addClass(b.style.expander), + f = $('').addClass(b.style.presenter), + g = $('
                            ').attr("guid", a.attr("data-guid")); + 0 === c.length ? (c = $('
                            ').addClass(b.style.wrapper), a.wrap(c)) : c.addClass(b.style.wrapper), b.fontSize && f.css("font-size", b.fontSize), f.on("click", function (b) { + g.is(":visible") ? gj.dropdown.methods.close(a, g) : gj.dropdown.methods.open(a, g) + }), f.on("blur", function (b) { + setTimeout(function () { + gj.dropdown.methods.close(a, g) + }, 500) + }), f.append(d).append(e), a.hide(), a.after(f), $("body").append(g), g.hide(), a.reload() + }, setListPosition: function (a, b, c) { + var d, e, f, g, h = a.getBoundingClientRect(), i = window.scrollY || window.pageYOffset || 0; + window.scrollX || window.pageXOffset; + b.style.overflow = "", b.style.overflowX = "", b.style.height = "", gj.core.setChildPosition(a, b), d = gj.core.height(b, !0), g = b.getBoundingClientRect(), e = gj.core.height(a, !0), "auto" === c.maxHeight ? h.top < g.top ? h.top + d + e > window.innerHeight && (f = window.innerHeight - h.top - e - 3) : h.top - d - 3 > 0 ? b.style.top = Math.round(h.top + i - d - 3) + "px" : (b.style.top = i + "px", f = h.top - 3) : !isNaN(c.maxHeight) && c.maxHeight < d && (f = c.maxHeight), f && (b.style.overflow = "scroll", b.style.overflowX = "hidden", b.style.height = f + "px") + }, useHtmlDataSource: function (a, b) { + var c, d, e = [], f = a.find("option"); + for (c = 0; c < f.length; c++) d = {}, d[b.valueField] = f[c].value, d[b.textField] = f[c].innerHTML, d[b.selectedField] = a[0].value === f[c].value, e.push(d); + b.dataSource = e + }, filter: function (a) { + var b, c, d = a.data(); + if (d.dataSource) { + if ("string" == typeof d.dataSource[0]) for (b = 0; b < d.dataSource.length; b++) c = {}, c[d.valueField] = d.dataSource[b], c[d.textField] = d.dataSource[b], d.dataSource[b] = c + } else d.dataSource = []; + return d.dataSource + }, render: function (a, b) { + var c = [], d = a.data(), e = a.parent(), + f = $("body").children('[role="list"][guid="' + a.attr("data-guid") + '"]'), + g = e.children('[role="presenter"]'), h = (g.children('[role="expander"]'), g.children('[role="display"]')); + if (a.data("records", b), a.empty(), f.empty(), b && b.length) if ($.each(b, function () { + var b, e = this[d.valueField], g = this[d.textField], + h = this[d.selectedField] && "true" === this[d.selectedField].toString().toLowerCase(); + b = $('
                          • ' + g + "
                          • "), b.addClass(d.style.item), b.on("click", function (b) { + gj.dropdown.methods.select(a, e) + }), f.append(b), a.append('"), h && c.push(e) + }), 0 === c.length) a.prepend(''), a[0].selectedIndex = 0, d.placeholder && (h[0].innerHTML = '' + d.placeholder + ""); else for (i = 0; i < c.length; i++) gj.dropdown.methods.select(a, c[i]); + return d.width && (e.css("width", d.width), g.css("width", d.width)), d.fontSize && f.children("li").css("font-size", d.fontSize), gj.dropdown.events.dataBound(a), a + }, open: function (a, b) { + var c = a.data(), d = a.parent().find('[role="expander"]'), e = a.parent().find('[role="presenter"]'), + f = gj.core.getScrollParent(a[0]); + b.css("width", gj.core.width(e[0])), b.show(), gj.dropdown.methods.setListPosition(e[0], b[0], c), d.html(c.icons.dropup), f && (c.parentScrollHandler = function () { + gj.dropdown.methods.setListPosition(e[0], b[0], c) + }, gj.dropdown.methods.addParentsScrollListener(f, c.parentScrollHandler)) + }, close: function (a, b) { + var c = a.data(), d = a.parent().find('[role="expander"]'), e = gj.core.getScrollParent(a[0]); + d.html(c.icons.dropdown), e && c.parentScrollHandler && gj.dropdown.methods.removeParentsScrollListener(e, c.parentScrollHandler), b.hide() + }, addParentsScrollListener: function (a, b) { + var c = gj.core.getScrollParent(a.parentNode); + a.addEventListener("scroll", b), c && gj.dropdown.methods.addParentsScrollListener(c, b) + }, removeParentsScrollListener: function (a, b) { + var c = gj.core.getScrollParent(a.parentNode); + a.removeEventListener("scroll", b), c && gj.dropdown.methods.removeParentsScrollListener(c, b) + }, select: function (a, b) { + var c = a.data(), d = $("body").children('[role="list"][guid="' + a.attr("data-guid") + '"]'), + e = d.children('li[value="' + b + '"]'), f = a.next('[role="presenter"]').find('[role="display"]'), + g = gj.dropdown.methods.getRecordByValue(a, b); + return d.children("li").removeClass(c.style.active), g ? (e.addClass(c.style.active), a[0].value = b, f[0].innerHTML = g[c.textField]) : (c.placeholder && (f[0].innerHTML = '' + c.placeholder + ""), a[0].value = ""), gj.dropdown.events.change(a), gj.dropdown.methods.close(a, d), a + }, getRecordByValue: function (a, b) { + var c, d = a.data(), e = void 0; + for (c = 0; c < d.records.length; c++) if (d.records[c][d.valueField] === b) { + e = d.records[c]; + break + } + return e + }, value: function (a, b) { + return void 0 === b ? a.val() : (gj.dropdown.methods.select(a, b), a) + }, destroy: function (a) { + var b = a.data(), c = a.parent('div[role="wrapper"]'); + return b && (a.xhr && a.xhr.abort(), a.off(), a.removeData(), a.removeAttr("data-type").removeAttr("data-guid").removeAttr("data-dropdown"), a.removeClass(), c.length > 0 && (c.children('[role="presenter"]').remove(), c.children('[role="list"]').remove(), a.unwrap()), a.show()), a + } +},gj.dropdown.events = { + change: function (a) { + return a.triggerHandler("change") + }, dataBound: function (a) { + return a.triggerHandler("dataBound") + } +},gj.dropdown.widget = function (a, b) { + var c = this, d = gj.dropdown.methods; + return c.value = function (a) { + return d.value(this, a) + }, c.enable = function () { + return d.enable(this) + }, c.disable = function () { + return d.disable(this) + }, c.destroy = function () { + return d.destroy(this) + }, $.extend(a, c), "true" !== a.attr("data-dropdown") && d.init.call(a, b), a +},gj.dropdown.widget.prototype = new gj.widget,gj.dropdown.widget.constructor = gj.dropdown.widget,gj.dropdown.widget.prototype.getHTMLConfig = gj.dropdown.methods.getHTMLConfig,function (a) { + a.fn.dropdown = function (a) { + var b; + if (this && this.length) { + if ("object" != typeof a && a) { + if (b = new gj.dropdown.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); + throw"Method " + a + " does not exist." + } + return new gj.dropdown.widget(this, a) + } + } +}(jQuery),gj.datepicker = {plugins: {}},gj.datepicker.config = { + base: { + showOtherMonths: !1, + selectOtherMonths: !0, + width: void 0, + minDate: void 0, + maxDate: void 0, + format: "mm/dd/yyyy", + uiLibrary: "materialdesign", + iconsLibrary: "materialicons", + value: void 0, + weekStartDay: 0, + disableDates: void 0, + disableDaysOfWeek: void 0, + calendarWeeks: !1, + keyboardNavigation: !0, + locale: "en-us", + icons: { + rightIcon: 'event', + previousMonth: '', + nextMonth: '' + }, + fontSize: void 0, + size: "default", + modal: !1, + header: !1, + footer: !1, + showOnFocus: !0, + showRightIcon: !0, + style: { + modal: "gj-modal", + wrapper: "gj-datepicker gj-datepicker-md gj-unselectable", + input: "gj-textbox-md", + calendar: "gj-picker gj-picker-md datepicker gj-unselectable", + footer: "", + button: "gj-button-md" + } + }, + bootstrap: { + style: { + wrapper: "gj-datepicker gj-datepicker-bootstrap gj-unselectable input-group", + input: "form-control", + calendar: "gj-picker gj-picker-bootstrap datepicker gj-unselectable", + footer: "modal-footer", + button: "btn btn-default" + }, iconsLibrary: "glyphicons", showOtherMonths: !0 + }, + bootstrap4: { + style: { + wrapper: "gj-datepicker gj-datepicker-bootstrap gj-unselectable input-group", + input: "form-control", + calendar: "gj-picker gj-picker-bootstrap datepicker gj-unselectable", + footer: "modal-footer", + button: "btn btn-default" + }, showOtherMonths: !0 + }, + fontawesome: { + icons: { + rightIcon: '', + previousMonth: '', + nextMonth: '' + } + }, + glyphicons: { + icons: { + rightIcon: '', + previousMonth: '', + nextMonth: '' + } + } +},gj.datepicker.methods = { + init: function (a) { + return gj.widget.prototype.init.call(this, a, "datepicker"), this.attr("data-datepicker", "true"), gj.datepicker.methods.initialize(this, this.data()), this + }, initialize: function (a, b) { + var c, d, e = a.parent('div[role="wrapper"]'); + 0 === e.length ? (e = $('
                            ').addClass(b.style.wrapper), a.wrap(e)) : e.addClass(b.style.wrapper), e = a.parent('div[role="wrapper"]'), b.width && e.css("width", b.width), a.val(b.value).addClass(b.style.input).attr("role", "input"), b.fontSize && a.css("font-size", b.fontSize), "bootstrap" === b.uiLibrary || "bootstrap4" === b.uiLibrary ? "small" === b.size ? (e.addClass("input-group-sm"), a.addClass("form-control-sm")) : "large" === b.size && (e.addClass("input-group-lg"), a.addClass("form-control-lg")) : "small" === b.size ? e.addClass("small") : "large" === b.size && e.addClass("large"), b.showRightIcon && (d = "bootstrap" === b.uiLibrary ? $('' + b.icons.rightIcon + "") : "bootstrap4" === b.uiLibrary ? $('") : $(b.icons.rightIcon), d.attr("role", "right-icon"), d.on("click", function (c) { + $("body").find('[role="calendar"][guid="' + a.attr("data-guid") + '"]').is(":visible") ? gj.datepicker.methods.close(a) : gj.datepicker.methods.open(a, b) + }), e.append(d)), b.showOnFocus && a.on("focus", function () { + gj.datepicker.methods.open(a, b) + }), c = gj.datepicker.methods.createCalendar(a, b), !0 !== b.footer && (a.on("blur", function () { + a.timeout = setTimeout(function () { + gj.datepicker.methods.close(a) + }, 500) + }), c.mousedown(function () { + return clearTimeout(a.timeout), document.activeElement !== a[0] && a.focus(), !1 + }), c.on("click", function () { + clearTimeout(a.timeout), document.activeElement !== a[0] && a.focus() + })), b.keyboardNavigation && $(document).on("keydown", gj.datepicker.methods.createKeyDownHandler(a, c, b)) + }, createCalendar: function (a, b) { + var c, d, e, f, g, + h = $('
                            ').addClass(b.style.calendar).attr("guid", a.attr("data-guid")); + return b.fontSize && h.css("font-size", b.fontSize), c = gj.core.parseDate(b.value, b.format, b.locale), !c || isNaN(c.getTime()) ? c = new Date : a.attr("day", c.getFullYear() + "-" + c.getMonth() + "-" + c.getDate()), h.attr("month", c.getMonth()), h.attr("year", c.getFullYear()), gj.datepicker.methods.renderHeader(a, h, b, c), d = $('
                            '), h.append(d), b.footer && (e = $('
                            '), f = $('"), f.on("click", function () { + a.close() + }), e.append(f), g = $('"), g.on("click", function () { + var c, d, e = h.attr("selectedDay"); + e ? (d = e.split("-"), c = new Date(d[0], d[1], d[2], h.attr("hour") || 0, h.attr("minute") || 0), gj.datepicker.methods.change(a, h, b, c)) : a.close() + }), e.append(g), h.append(e)), h.hide(), $("body").append(h), b.modal && (h.wrapAll('
                            '), gj.core.center(h)), h + }, renderHeader: function (a, b, c, d) { + var e, f, g; + c.header && (e = $('
                            '), g = $('
                            ').on("click", function () { + gj.datepicker.methods.renderDecade(a, b, c), g.addClass("selected"), f.removeClass("selected") + }), g.html(gj.core.formatDate(d, "yyyy", c.locale)), e.append(g), f = $('
                            ').on("click", function () { + gj.datepicker.methods.renderMonth(a, b, c), f.addClass("selected"), g.removeClass("selected") + }), f.html(gj.core.formatDate(d, "ddd, mmm dd", c.locale)), e.append(f), b.append(e)) + }, updateHeader: function (a, b, c) { + a.find('[role="header"] [role="year"]').removeClass("selected").html(gj.core.formatDate(c, "yyyy", b.locale)), a.find('[role="header"] [role="date"]').addClass("selected").html(gj.core.formatDate(c, "ddd, mmm dd", b.locale)), a.find('[role="header"] [role="hour"]').removeClass("selected").html(gj.core.formatDate(c, "HH", b.locale)), a.find('[role="header"] [role="minute"]').removeClass("selected").html(gj.core.formatDate(c, "MM", b.locale)) + }, createNavigation: function (a, b, c, d) { + var e, f, g = $("
                "); + for (f = $('
                '), f.append($("
                " + d.icons.previousMonth + "
                ").on("click", gj.datepicker.methods.prev(a, d))), f.append($('
                ').on("click", gj.datepicker.methods.changePeriod(a, d))), f.append($("
                " + d.icons.nextMonth + "
                ").on("click", gj.datepicker.methods.next(a, d))), b.append(f), e = $('
                '), d.calendarWeeks && e.append(""), i = d.weekStartDay; i < gj.core.messages[d.locale].weekDaysMin.length; i++) e.append(""); + for (i = 0; i < d.weekStartDay; i++) e.append(""); + g.append(e), c.append(g) + }, renderMonth: function (a, b, c) { + var d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s = b.children('[role="body"]'), t = $("
                '+gj.datepicker.methods.getWeekNumber(r)+"
                '),c.showOtherMonths&&(q=$("
                "+f+"
                "),p.append(q),c.selectOtherMonths&&gj.datepicker.methods.isSelectable(c,r)?(p.addClass("gj-cursor-pointer").attr("day",f).attr("month",n.month).attr("year",n.year),q.on("click",gj.datepicker.methods.dayClickHandler(a,b,c,r)),q.on("mousedown",function(a){a.stopPropagation()})):p.addClass("disabled")),$row.append(p),d++;for(l>1&&u.append($row),m=new Date,l=1;l<=j;l++)r=new Date(h,g,l),0==d&&($row=$("
                '+gj.datepicker.methods.getWeekNumber(r)+"
                '),h===m.getFullYear()&&g===m.getMonth()&&l===m.getDate()?p.addClass("today"):p.addClass("current-month"),q=$("
                "+l+"
                "),gj.datepicker.methods.isSelectable(c,r)?(p.addClass("gj-cursor-pointer"),q.on("click",gj.datepicker.methods.dayClickHandler(a,b,c,r)),q.on("mousedown",function(a){a.stopPropagation()})):p.addClass("disabled"),p.append(q),$row.append(p),7==++d&&(u.append($row),d=0);for(o=gj.datepicker.methods.getNextMonth(g,h),l=1;0!=d;l++)r=new Date(o.year,o.month,l),p=$('
                '),c.showOtherMonths&&(q=$("
                "+l+"
                "),c.selectOtherMonths&&gj.datepicker.methods.isSelectable(c,r)?(p.addClass("gj-cursor-pointer").attr("day",l).attr("month",o.month).attr("year",o.year),q.on("click",gj.datepicker.methods.dayClickHandler(a,b,c,r)),q.on("mousedown",function(a){a.stopPropagation()})):p.addClass("disabled"),p.append(q)),$row.append(p),7==++d&&(u.append($row),d=0);t.append(u),s.append(t),b.attr("selectedDay")&&(e=b.attr("selectedDay").split("-"),r=new Date(e[0],e[1],e[2],b.attr("hour")||0,b.attr("minute")||0),b.find('tbody td[day="'+e[2]+'"][month="'+e[1]+'"]').addClass("selected"),gj.datepicker.methods.updateHeader(b,c,r))},renderYear:function(a,b,c){var d,e,f,g,h=b.find('>[role="body"]>table'),i=h.children("tbody");for(h.children("thead").hide(),d=parseInt(b.attr("year"),10),b.attr("type","year"),b.find('div[role="period"]').text(d),i.empty(),e=0;e<3;e++){for($row=$("
                '), c[i].width ? g.attr("width", c[i].width) : "checkbox" === c[i].type && g.attr("width", b.defaultIconColumnWidth), g.addClass(d.cell), c[i].headerCssClass && g.addClass(c[i].headerCssClass), g.css("text-align", c[i].align || "left"), "checkbox" === b.selectionMethod && "multiple" === b.selectionType && "checkbox" === c[i].type && "selectRow" === c[i].role ? (j = g.find('input[data-role="selectAll"]'), 0 === j.length && (j = $(''), g.append(j), j.checkbox({uiLibrary: b.uiLibrary})), j.off("click").on("click", function () { + this.checked ? a.selectAll() : a.unSelectAll() + })) : (h = $('
                ').html(void 0 === c[i].title ? c[i].field : c[i].title), g.append(h), c[i].sortable && (h.addClass(d.sortable), h.on("click", gj.grid.methods.createSortHandler(a, c[i])))), c[i].hidden && g.hide(), f.append(g); + e.empty().append(f) + }, createSortHandler: function (a, b) { + return function () { + var c, d = {}; + a.count() > 0 && (c = a.data(), d[c.paramNames.sortBy] = b.field, b.direction = "asc" === b.direction ? "desc" : "asc", d[c.paramNames.direction] = b.direction, a.reload(d)) + } + }, updateHeader: function (a) { + var b, c, d = a.data(), e = d.params[d.paramNames.sortBy], f = d.params[d.paramNames.direction]; + a.find('thead tr th [data-role="sorticon"]').remove(), e && (position = gj.grid.methods.getColumnPosition(a.data("columns"), e), position > -1 && (c = a.find("thead tr th:eq(" + position + ') div[data-role="title"]'), b = $('
                ').append("desc" === f ? d.icons.desc : d.icons.asc), c.after(b))) + }, useHtmlDataSource: function (a, b) { + var c, d, e, f, g = [], h = a.find('tbody tr[data-role != "empty"]'); + for (c = 0; c < h.length; c++) { + for (e = $(h[c]).find("td"), f = {}, d = 0; d < e.length; d++) f[b.columns[d].field] = $(e[d]).html(); + g.push(f) + } + b.dataSource = g + }, startLoading: function (a) { + var b, c, d, e, f, g, h; + gj.grid.methods.stopLoading(a), h = a.data(), 0 !== a.outerHeight() && (b = a.children("tbody"), e = b.outerWidth(!1), f = b.outerHeight(!1), g = Math.abs(a.parent().offset().top - b.offset().top), c = $('
                ').addClass(h.style.loadingCover).css({ + width: e, + height: f, + top: g + }), d = $('
                ' + gj.grid.messages[h.locale].Loading + "
                ").addClass(h.style.loadingText), d.insertAfter(a), c.insertAfter(a), d.css({ + top: g + f / 2 - d.outerHeight(!1) / 2, + left: e / 2 - d.outerWidth(!1) / 2 + })) + }, stopLoading: function (a) { + a.parent().find('div[data-role="loading-cover"]').remove(), a.parent().find('div[data-role="loading-text"]').remove() + }, appendEmptyRow: function (a, b) { + var c, d, e, f; + c = a.data(), d = $('
                ").css({ + width: "100%", + "text-align": "center" + }), e.attr("colspan", gj.grid.methods.countVisibleColumns(a)), f = $("
                ").html(b || c.notFoundText), e.append(f), d.append(e), gj.grid.events.beforeEmptyRowInsert(a, d), a.append(d) + }, autoGenerateColumns: function (a, b) { + var c, d, e, f, g = a.data(); + if (g.columns = [], b.length > 0) { + for (c = Object.getOwnPropertyNames(b[0]), f = 0; f < c.length; f++) d = b[0][c[f]], e = "text", d && ("number" == typeof d ? e = "number" : d.indexOf("/Date(") > -1 && (e = "date")), g.columns.push({ + field: c[f], + type: e + }); + gj.grid.methods.setDefaultColumnConfig(g.columns, g.defaultColumnSettings) + } + gj.grid.methods.renderHeader(a) + }, loadData: function (a) { + var b, c, d, e, f, g, h, i; + for (b = a.data(), c = a.getAll(), gj.grid.events.dataBinding(a, c), e = c.length, gj.grid.methods.stopLoading(a), b.autoGenerateColumns && gj.grid.methods.autoGenerateColumns(a, c), g = a.children("tbody"), "checkbox" === b.selectionMethod && "multiple" === b.selectionType && a.find('thead input[data-role="selectAll"]').prop("checked", !1), g.children("tr").not('[data-role="row"]').remove(), 0 === e && (g.empty(), gj.grid.methods.appendEmptyRow(a)), h = g.children("tr"), f = h.length, d = 0; d < f; d++) { + if (!(d < e)) { + g.find('tr[data-role="row"]:gt(' + (d - 1) + ")").remove(); + break + } + i = h.eq(d), gj.grid.methods.renderRow(a, i, c[d], d) + } + for (d = f; d < e; d++) gj.grid.methods.renderRow(a, null, c[d], d); + gj.grid.events.dataBound(a, c, b.totalRecords) + }, getId: function (a, b, c) { + return b && a[b] ? a[b] : c + }, renderRow: function (a, b, c, d) { + var e, f, g, h, i; + for (h = a.data(), b && 0 !== b.length ? (i = "update", b.removeClass(h.style.content.rowSelected).removeAttr("data-selected").off("click")) : (i = "create", b = $('
                "), g = $('
                '), c.align && b.css("text-align", c.align), c.cssClass && b.addClass(c.cssClass), b.append(g), f = "create"), gj.grid.methods.renderDisplayElement(a, g, c, d, e, f), "update" === f && (b.off(), g.off()), c.events) for (h in c.events) c.events.hasOwnProperty(h) && b.on(h, { + id: e, + field: c.field, + record: d + }, gj.grid.methods.createCellEventHandler(c, c.events[h])); + return c.hidden && b.hide(), gj.grid.events.cellDataBound(a, g, e, c, d), b + }, createCellEventHandler: function (a, b) { + return function (c) { + a.stopPropagation && c.stopPropagation(), b.call(this, c) + } + }, renderDisplayElement: function (a, b, c, d, e, f) { + var g, h; + "checkbox" === c.type && gj.checkbox ? "create" === f ? (h = $('').val(e).prop("checked", !!d[c.field]), c.role && h.attr("data-role", c.role), b.append(h), h.checkbox({uiLibrary: a.data("uiLibrary")}), "selectRow" === c.role ? h.on("click", function () { + return !1 + }) : h.prop("disabled", !0)) : b.find('input[type="checkbox"]').val(e).prop("checked", !!d[c.field]) : "icon" === c.type ? "create" === f && (b.append($("").addClass(c.icon).css({cursor: "pointer"})), "bootstrap" === a.data().uiLibrary && b.children("span").addClass("glyphicon"), c.stopPropagation = !0) : c.tmpl ? (g = c.tmpl, c.tmpl.replace(/\{(.+?)\}/g, function (a, b) { + g = g.replace(a, gj.grid.methods.formatText(d[b], c)) + }), b.html(g)) : c.renderer && "function" == typeof c.renderer ? (g = c.renderer(d[c.field], d, b.parent(), b, e, a)) && b.html(g) : (d[c.field] = gj.grid.methods.formatText(d[c.field], c), !c.tooltip && d[c.field] && b.attr("title", d[c.field]), b.html(d[c.field])), c.tooltip && "create" === f && b.attr("title", c.tooltip) + }, formatText: function (a, b) { + return a = a && ["date", "time", "datetime"].indexOf(b.type) > -1 ? gj.core.formatDate(gj.core.parseDate(a, b.format), b.format) : void 0 === a || null === a ? "" : a.toString(), b.decimalDigits && a && (a = parseFloat(a).toFixed(b.decimalDigits)), a + }, setRecordsData: function (a, b) { + var c = [], d = 0, e = a.data(); + return $.isArray(b) ? (c = b, d = b.length) : e && e.mapping && $.isArray(b[e.mapping.dataField]) && (c = b[e.mapping.dataField], (d = b[e.mapping.totalRecordsField]) && !isNaN(d) || (d = 0)), a.data("records", c), a.data("totalRecords", d), c + }, createRowClickHandler: function (a, b) { + return function () { + gj.grid.methods.setSelected(a, b, $(this)) + } + }, selectRow: function (a, b, c, d) { + var e; + return c.addClass(b.style.content.rowSelected), c.attr("data-selected", "true"), "checkbox" === b.selectionMethod && (e = c.find('input[type="checkbox"][data-role="selectRow"]'), e.length && !e.prop("checked") && e.prop("checked", !0), "multiple" === b.selectionType && a.getSelections().length === a.count(!1) && a.find('thead input[data-role="selectAll"]').prop("checked", !0)), gj.grid.events.rowSelect(a, c, d, a.getById(d)) + }, unselectRow: function (a, b, c, d) { + var e; + if ("true" === c.attr("data-selected")) return c.removeClass(b.style.content.rowSelected), "checkbox" === b.selectionMethod && (e = c.find('td input[type="checkbox"][data-role="selectRow"]'), e.length && e.prop("checked") && e.prop("checked", !1), "multiple" === b.selectionType && a.find('thead input[data-role="selectAll"]').prop("checked", !1)), c.removeAttr("data-selected"), gj.grid.events.rowUnselect(a, c, d, a.getById(d)) + }, setSelected: function (a, b, c) { + var d = a.data(); + return c && c.length || (c = gj.grid.methods.getRowById(a, b)), c && ("true" === c.attr("data-selected") ? gj.grid.methods.unselectRow(a, d, c, b) : ("single" === d.selectionType && c.siblings('[data-selected="true"]').each(function () { + var b = $(this), c = gj.grid.methods.getId(b, d.primaryKey, b.data("position")); + gj.grid.methods.unselectRow(a, d, b, c) + }), gj.grid.methods.selectRow(a, d, c, b))), a + }, selectAll: function (a) { + var b = a.data(); + return a.find('tbody tr[data-role="row"]').each(function () { + var c = $(this), d = c.data("position"), e = a.get(d), f = gj.grid.methods.getId(e, b.primaryKey, d); + gj.grid.methods.selectRow(a, b, c, f) + }), a.find('thead input[data-role="selectAll"]').prop("checked", !0), a + }, unSelectAll: function (a) { + var b = a.data(); + return a.find("tbody tr").each(function () { + var c = $(this), d = c.data("position"), e = a.get(d), f = gj.grid.methods.getId(e, b.primaryKey, d); + gj.grid.methods.unselectRow(a, b, c, f), c.find('input[type="checkbox"][data-role="selectRow"]').prop("checked", !1) + }), a.find('thead input[data-role="selectAll"]').prop("checked", !1), a + }, getSelected: function (a) { + var b, c, d, e = null; + return b = a.find('tbody>tr[data-selected="true"]'), b.length > 0 && (d = $(b[0]).data("position"), c = a.get(d), e = gj.grid.methods.getId(c, a.data().primaryKey, d)), e + }, getSelectedRows: function (a) { + a.data(); + return a.find('tbody>tr[data-selected="true"]') + }, getSelections: function (a) { + var b, c, d = [], e = a.data(), f = gj.grid.methods.getSelectedRows(a); + return 0 < f.length && f.each(function () { + b = $(this).data("position"), c = a.get(b), d.push(gj.grid.methods.getId(c, e.primaryKey, b)) + }), d + }, getById: function (a, b) { + var c, d = null, e = a.data("primaryKey"), f = a.data("records"); + if (e) { + for (c = 0; c < f.length; c++) if (f[c][e] == b) { + d = f[c]; + break + } + } else d = a.get(b); + return d + }, getRecVPosById: function (a, b) { + var c, d = b, e = a.data(); + if (e.primaryKey) for (c = 0; c < e.dataSource.length; c++) if (e.dataSource[c][e.primaryKey] == b) { + d = c; + break + } + return d + }, getRowById: function (a, b) { + var c, d, e = a.getAll(!1), f = a.data("primaryKey"), g = void 0; + if (f) { + for (d = 0; d < e.length; d++) if (e[d][f] == b) { + c = d + 1; + break + } + } else c = b; + return c && (g = a.children("tbody").children('tr[data-position="' + c + '"]')), g + }, getByPosition: function (a, b) { + return a.getAll(!1)[b - 1] + }, getColumnPosition: function (a, b) { + var c, d = -1; + for (c = 0; c < a.length; c++) if (a[c].field === b) { + d = c; + break + } + return d + }, getColumnInfo: function (a, b) { + var c, d = {}, e = a.data(); + for (c = 0; c < e.columns.length; c += 1) if (e.columns[c].field === b) { + d = e.columns[c]; + break + } + return d + }, getCell: function (a, b, c) { + var d, e, f = null; + return d = gj.grid.methods.getColumnPosition(a.data("columns"), c), d > -1 && (e = gj.grid.methods.getRowById(a, b), f = e.find("td:eq(" + d + ') div[data-role="display"]')), f + }, setCellContent: function (a, b, c, d) { + var e, f = gj.grid.methods.getCell(a, b, c); + f && (f.empty(), "object" == typeof d ? f.append(d) : (e = gj.grid.methods.getColumnInfo(a, c), gj.grid.methods.renderDisplayElement(a, f, e, a.getById(b), b, "update"))) + }, clone: function (a) { + var b = []; + return $.each(a, function () { + b.push(this.clone()) + }), b + }, getAll: function (a) { + return a.data("records") + }, countVisibleColumns: function (a) { + var b, c, d; + for (b = a.data().columns, c = 0, d = 0; d < b.length; d++) !0 !== b[d].hidden && c++; + return c + }, clear: function (a, b) { + var c = a.data(); + return a.xhr && a.xhr.abort(), a.children("tbody").empty(), c.records = [], gj.grid.methods.stopLoading(a), gj.grid.methods.appendEmptyRow(a, b ? c.notFoundText : " "), gj.grid.events.dataBound(a, [], 0), a + }, render: function (a, b) { + return b && (gj.grid.methods.setRecordsData(a, b), gj.grid.methods.updateHeader(a), gj.grid.methods.loadData(a)), a + }, filter: function (a) { + var b, c, d = a.data(), e = d.dataSource.slice(); + d.params[d.paramNames.sortBy] && (c = gj.grid.methods.getColumnInfo(a, d.params[d.paramNames.sortBy]), e.sort(c.sortable.sorter ? c.sortable.sorter(c.direction, c) : gj.grid.methods.createDefaultSorter(c.direction, c.field))); + for (b in d.params) d.params[b] && !d.paramNames[b] && (c = gj.grid.methods.getColumnInfo(a, b), e = $.grep(e, function (a) { + var e = a[b] || "", f = d.params[b] || ""; + return c && "function" == typeof c.filter ? c.filter(e, f) : e.toUpperCase().indexOf(f.toUpperCase()) > -1 + })); + return gj.grid.events.dataFiltered(a, e), e + }, createDefaultSorter: function (a, b) { + return function (c, d) { + var e = (c[b] || "").toString(), f = (d[b] || "").toString(); + return "asc" === a ? e.localeCompare(f) : f.localeCompare(e) + } + }, destroy: function (a, b, c) { + return a.data() && (gj.grid.events.destroying(a), gj.grid.methods.stopLoading(a), a.xhr && a.xhr.abort(), a.off(), !1 === c && a.parent('div[data-role="wrapper"]').length > 0 && a.unwrap(), a.removeData(), !1 === b ? a.remove() : a.removeClass().empty(), a.removeAttr("data-type")), a + }, showColumn: function (a, b) { + var c, d = a.data(), e = gj.grid.methods.getColumnPosition(d.columns, b); + return e > -1 && (a.find("thead>tr").each(function () { + $(this).children("th").eq(e).show() + }), $.each(a.find("tbody>tr"), function () { + $(this).children("td").eq(e).show() + }), d.columns[e].hidden = !1, c = a.find('tbody > tr[data-role="empty"] > td'), c && c.length && c.attr("colspan", gj.grid.methods.countVisibleColumns(a)), gj.grid.events.columnShow(a, d.columns[e])), a + }, hideColumn: function (a, b) { + var c, d = a.data(), e = gj.grid.methods.getColumnPosition(d.columns, b); + return e > -1 && (a.find("thead>tr").each(function () { + $(this).children("th").eq(e).hide() + }), $.each(a.find("tbody>tr"), function () { + $(this).children("td").eq(e).hide() + }), d.columns[e].hidden = !0, c = a.find('tbody > tr[data-role="empty"] > td'), c && c.length && c.attr("colspan", gj.grid.methods.countVisibleColumns(a)), gj.grid.events.columnHide(a, d.columns[e])), a + }, isLastRecordVisible: function () { + return !0 + }, addRow: function (a, b) { + var c = a.data(); + return c.totalRecords = a.data("totalRecords") + 1, gj.grid.events.dataBinding(a, [b]), c.records.push(b), $.isArray(c.dataSource) && c.dataSource.push(b), 1 === c.totalRecords && a.children("tbody").empty(), gj.grid.methods.isLastRecordVisible(a) && gj.grid.methods.renderRow(a, null, b, a.count() - 1), gj.grid.events.dataBound(a, [b], c.totalRecords), a + }, updateRow: function (a, b, c) { + var d, e = gj.grid.methods.getRowById(a, b), f = a.data(); + return f.records[e.data("position") - 1] = c, $.isArray(f.dataSource) && (d = gj.grid.methods.getRecVPosById(a, b), f.dataSource[d] = c), gj.grid.methods.renderRow(a, e, c, e.index()), a + }, removeRow: function (a, b) { + var c, d = a.data(), e = gj.grid.methods.getRowById(a, b); + return gj.grid.events.rowRemoving(a, e, b, a.getById(b)), $.isArray(d.dataSource) && (c = gj.grid.methods.getRecVPosById(a, b), d.dataSource.splice(c, 1)), a.reload(), a + }, count: function (a, b) { + return b ? a.data().totalRecords : a.getAll().length + }, getColumnPositionByRole: function (a, b) { + var c, d, e = a.data("columns"); + for (c = 0; c < e.length; c++) if (e[c].role === b) { + d = c; + break + } + return d + }, getColumnPositionNotInRole: function (a) { + var b, c = 0, d = a.data("columns"); + for (b = 0; b < d.length; b++) if (!d[b].role) { + c = b; + break + } + return c + } +}, gj.grid.widget = function (a, b) { + var c = this, d = gj.grid.methods; + return c.reload = function (a) { + return d.startLoading(this), gj.widget.prototype.reload.call(this, a) + }, c.clear = function (a) { + return d.clear(this, a) + }, c.count = function (a) { + return d.count(this, a) + }, c.render = function (b) { + return d.render(a, b) + }, c.destroy = function (a, b) { + return d.destroy(this, a, b) + }, c.setSelected = function (a) { + return d.setSelected(this, a) + }, c.getSelected = function () { + return d.getSelected(this) + }, c.getSelections = function () { + return d.getSelections(this) + }, c.selectAll = function () { + return d.selectAll(this) + }, c.unSelectAll = function () { + return d.unSelectAll(this) + }, c.getById = function (a) { + return d.getById(this, a) + }, c.get = function (a) { + return d.getByPosition(this, a) + }, c.getAll = function (a) { + return d.getAll(this, a) + }, c.showColumn = function (a) { + return d.showColumn(this, a) + }, c.hideColumn = function (a) { + return d.hideColumn(this, a) + }, c.addRow = function (a) { + return d.addRow(this, a) + }, c.updateRow = function (a, b) { + return d.updateRow(this, a, b) + }, c.setCellContent = function (a, b, c) { + d.setCellContent(this, a, b, c) + }, c.removeRow = function (a) { + return d.removeRow(this, a) + }, $.extend(a, c), "grid" !== a.attr("data-type") && d.init.call(a, b), a +}, gj.grid.widget.prototype = new gj.widget, gj.grid.widget.constructor = gj.grid.widget, gj.grid.widget.prototype.getConfig = gj.grid.methods.getConfig, gj.grid.widget.prototype.getHTMLConfig = gj.grid.methods.getHTMLConfig, function (a) { + a.fn.grid = function (a) { + var b; + if (this && this.length) { + if ("object" != typeof a && a) { + if (b = new gj.grid.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); + throw"Method " + a + " does not exist." + } + return new gj.grid.widget(this, a) + } + } +}(jQuery), gj.grid.plugins.fixedHeader = { + config: {base: {fixedHeader: !1, height: 300}}, private: { + init: function (a) { + var b = a.data(), c = a.children("tbody"), d = a.children("thead"), + e = b.height - d.outerHeight() - (a.children("tfoot").outerHeight() || 0); + a.addClass("gj-grid-scrollable"), c.css("width", d.outerWidth()), c.height(e) + }, refresh: function (a) { + var b, c, d = (a.data(), a.children("tbody")), e = a.children("thead"), + f = a.find('tbody tr[data-role="row"] td'), g = a.find('thead tr[data-role="caption"] th'); + for (a.children("tbody").height() < gj.grid.plugins.fixedHeader.private.getRowsHeight(a) ? d.css("width", e.outerWidth() + gj.grid.plugins.fixedHeader.private.getScrollBarWidth() + (navigator.userAgent.toLowerCase().indexOf("firefox") > -1 ? 1 : 0)) : d.css("width", e.outerWidth()), b = 0; b < g.length; b++) c = $(g[b]).outerWidth(), 0 === b && gj.core.isIE() && (c -= 1), $(f[b]).attr("width", c) + }, getRowsHeight: function (a) { + var b = 0; + return a.find("tbody tr").each(function () { + b += $(this).height() + }), b + }, getScrollBarWidth: function () { + var a = document.createElement("p"); + a.style.width = "100%", a.style.height = "200px"; + var b = document.createElement("div"); + b.style.position = "absolute", b.style.top = "0px", b.style.left = "0px", b.style.visibility = "hidden", b.style.width = "200px", b.style.height = "150px", b.style.overflow = "hidden", b.appendChild(a), document.body.appendChild(b); + var c = a.offsetWidth; + b.style.overflow = "scroll"; + var d = a.offsetWidth; + return c == d && (d = b.clientWidth), document.body.removeChild(b), c - d + } + }, public: {}, events: {}, configure: function (a, b, c) { + $.extend(!0, a, gj.grid.plugins.fixedHeader.public); + a.data(); + c.fixedHeader && (a.on("initialized", function () { + gj.grid.plugins.fixedHeader.private.init(a) + }), a.on("dataBound", function () { + gj.grid.plugins.fixedHeader.private.refresh(a) + }), a.on("resize", function () { + gj.grid.plugins.fixedHeader.private.refresh(a) + })) + } +}, gj.grid.plugins.expandCollapseRows = { + config: { + base: { + detailTemplate: void 0, + keepExpandedRows: !0, + expandedRows: [], + icons: {expandRow: '', collapseRow: ''} + }, + fontawesome: { + icons: { + expandRow: '', + collapseRow: '' + } + }, + glyphicons: { + icons: { + expandRow: '', + collapseRow: '' + } + } + }, private: { + expandDetail: function (a, b, c) { + var d = b.closest("tr"), e = $('
                '), + g = $('
                '), h = a.data(), i = d.data("position"), j = a.get(i), + k = gj.grid.plugins.expandCollapseRows; + void 0 === typeof c && (c = gj.grid.methods.getId(j, h.primaryKey, j)), e.append(f.append(g.append(d.data("details")))), e.insertAfter(d), b.children('div[data-role="display"]').empty().append(h.icons.collapseRow), a.updateDetails(d), k.private.keepSelection(a, c), k.events.detailExpand(a, e.find("td>div"), c) + }, collapseDetail: function (a, b, c) { + var d = b.closest("tr"), e = d.next('tr[data-role="details"]'), f = a.data(), + g = gj.grid.plugins.expandCollapseRows; + void 0 === typeof c && (c = gj.grid.methods.getId(record, f.primaryKey, record)), e.remove(), b.children('div[data-role="display"]').empty().append(f.icons.expandRow), g.private.removeSelection(a, c), g.events.detailCollapse(a, e.find("td>div"), c) + }, keepSelection: function (a, b) { + var c = a.data(); + c.keepExpandedRows && ($.isArray(c.expandedRows) ? -1 == c.expandedRows.indexOf(b) && c.expandedRows.push(b) : c.expandedRows = [b]) + }, removeSelection: function (a, b) { + var c = a.data(); + c.keepExpandedRows && $.isArray(c.expandedRows) && c.expandedRows.indexOf(b) > -1 && c.expandedRows.splice(c.expandedRows.indexOf(b), 1) + }, updateDetailsColSpan: function (a) { + var b = a.find('tbody > tr[data-role="details"] > td'); + b && b.length && b.attr("colspan", gj.grid.methods.countVisibleColumns(a)) + } + }, public: { + collapseAll: function () { + var a, b = this, c = b.data(); + return void 0 !== c.detailTemplate && (a = gj.grid.methods.getColumnPositionByRole(b, "expander"), b.find('tbody tr[data-role="row"]').each(function () { + gj.grid.plugins.expandCollapseRows.private.collapseDetail(b, $(this).find("td:eq(" + a + ")")) + })), void 0 !== c.grouping && b.find('tbody tr[role="group"]').each(function () { + gj.grid.plugins.grouping.private.collapseGroup(c, $(this).find("td:eq(0)")) + }), b + }, expandAll: function () { + var a, b = this, c = b.data(); + return void 0 !== c.detailTemplate && (a = gj.grid.methods.getColumnPositionByRole(b, "expander"), b.find('tbody tr[data-role="row"]').each(function () { + gj.grid.plugins.expandCollapseRows.private.expandDetail(b, $(this).find("td:eq(" + a + ")")) + })), void 0 !== c.grouping && b.find('tbody tr[role="group"]').each(function () { + gj.grid.plugins.grouping.private.expandGroup(c, $(this).find("td:eq(0)")) + }), b + }, updateDetails: function (a) { + var b = this, c = a.data("details"), d = c.html(), e = b.get(a.data("position")); + return e && d && (c.html().replace(/\{(.+?)\}/g, function (a, c) { + var f = gj.grid.methods.getColumnInfo(b, c); + d = d.replace(a, gj.grid.methods.formatText(e[c], f)) + }), c.html(d)), b + } + }, events: { + detailExpand: function (a, b, c) { + a.triggerHandler("detailExpand", [b, c]) + }, detailCollapse: function (a, b, c) { + a.triggerHandler("detailCollapse", [b, c]) + } + }, configure: function (a) { + var b, c = a.data(); + $.extend(!0, a, gj.grid.plugins.expandCollapseRows.public), void 0 !== c.detailTemplate && (b = { + title: "", + width: c.defaultIconColumnWidth, + align: "center", + stopPropagation: !0, + cssClass: "gj-cursor-pointer gj-unselectable", + tmpl: c.icons.expandRow, + role: "expander", + events: { + click: function (b) { + var c = $(this), d = gj.grid.plugins.expandCollapseRows.private; + "details" === c.closest("tr").next().attr("data-role") ? d.collapseDetail(a, c, b.data.id) : d.expandDetail(a, $(this), b.data.id) + } + } + }, c.columns = [b].concat(c.columns), a.on("rowDataBound", function (a, b, d, e) { + b.data("details", $(c.detailTemplate)) + }), a.on("columnShow", function (b, c) { + gj.grid.plugins.expandCollapseRows.private.updateDetailsColSpan(a) + }), a.on("columnHide", function (b, c) { + gj.grid.plugins.expandCollapseRows.private.updateDetailsColSpan(a) + }), a.on("rowRemoving", function (b, c, d, e) { + gj.grid.plugins.expandCollapseRows.private.collapseDetail(a, c.children("td").first(), d) + }), a.on("dataBinding", function () { + a.collapseAll() + }), a.on("pageChanging", function () { + a.collapseAll() + }), a.on("dataBound", function () { + var b, c, d, e, f = a.data(); + if (f.keepExpandedRows && $.isArray(f.expandedRows)) for (b = 0; b < f.expandedRows.length; b++) (d = gj.grid.methods.getRowById(a, f.expandedRows[b])) && d.length && (e = gj.grid.methods.getColumnPositionByRole(a, "expander"), (c = d.children("td:eq(" + e + ")")) && c.length && gj.grid.plugins.expandCollapseRows.private.expandDetail(a, c)) + })) + } +}, gj.grid.plugins.inlineEditing = { + renderers: { + editManager: function (a, b, c, d, e, f) { + var g = f.data(), h = $(g.inlineEditing.editButton).attr("key", e), + i = $(g.inlineEditing.deleteButton).attr("key", e), + j = $(g.inlineEditing.updateButton).attr("key", e).hide(), + k = $(g.inlineEditing.cancelButton).attr("key", e).hide(); + h.on("click", function (a) { + f.edit($(this).attr("key")) + }), i.on("click", function (a) { + f.removeRow($(this).attr("key")) + }), j.on("click", function (a) { + f.update($(this).attr("key")) + }), k.on("click", function (a) { + f.cancel($(this).attr("key")) + }), d.empty().append(h).append(i).append(j).append(k) + } + } +}, gj.grid.plugins.inlineEditing.config = { + base: { + defaultColumnSettings: { + editor: void 0, + editField: void 0, + mode: "readEdit" + }, + inlineEditing: { + mode: "click", + managementColumn: !0, + managementColumnConfig: { + width: 300, + role: "managementColumn", + align: "center", + renderer: gj.grid.plugins.inlineEditing.renderers.editManager, + cssClass: "gj-grid-management-column" + } + } + }, + bootstrap: { + inlineEditing: { + managementColumnConfig: { + width: 200, + role: "managementColumn", + align: "center", + renderer: gj.grid.plugins.inlineEditing.renderers.editManager, + cssClass: "gj-grid-management-column" + } + } + }, + bootstrap4: { + inlineEditing: { + managementColumnConfig: { + width: 280, + role: "managementColumn", + align: "center", + renderer: gj.grid.plugins.inlineEditing.renderers.editManager, + cssClass: "gj-grid-management-column" + } + } + } +}, gj.grid.plugins.inlineEditing.private = { + localization: function (a) { + "bootstrap" === a.uiLibrary ? (a.inlineEditing.editButton = '", a.inlineEditing.deleteButton = '", a.inlineEditing.updateButton = '", a.inlineEditing.cancelButton = '") : (a.inlineEditing.editButton = '", a.inlineEditing.deleteButton = '", a.inlineEditing.updateButton = '", a.inlineEditing.cancelButton = '") + }, editMode: function (a, b, c, d) { + var e, f, g, h, i, j = a.data(); + if ("edit" !== b.attr("data-mode")) if (c.editor) { + if (gj.grid.plugins.inlineEditing.private.updateOtherCells(a, c.mode), e = b.find('div[data-role="display"]').hide(), f = b.find('div[data-role="edit"]').show(), 0 === f.length && (f = $('
                '), b.append(f)), h = d[c.editField || c.field], g = f.find("input, select, textarea").first(), g.length) switch (c.type) { + case"checkbox": + g.prop("checked", h); + break; + case"dropdown": + g = g.dropdown("value", h); + break; + default: + g.val(h) + } else { + if ("function" == typeof c.editor) c.editor(f, h, d), g = f.find("input, select, textarea").first(); else if (i = "object" == typeof c.editor ? c.editor : {}, i.uiLibrary = j.uiLibrary, i.iconsLibrary = j.iconsLibrary, i.fontSize = a.css("font-size"), i.showOnFocus = !1, "checkbox" === c.type && gj.checkbox) g = $('').prop("checked", h), f.append(g), g.checkbox(i); else if ("date" === c.type && gj.datepicker || "time" === c.type && gj.timepicker || "datetime" === c.type && gj.datetimepicker) { + switch (g = $(''), f.append(g), c.format && (i.format = c.format), c.type) { + case"date": + g = g.datepicker(i); + break; + case"time": + g = g.timepicker(i); + break; + case"datetime": + g = g.datetimepicker(i) + } + g.value && g.value(e.html()) + } else "dropdown" === c.type && gj.dropdown ? (g = $(''), "materialdesign" === j.uiLibrary && g.addClass("gj-textbox-md").css("font-size", a.css("font-size")), f.append(g)); + "command" !== j.inlineEditing.mode && "editOnly" !== c.mode && (g = f.find("input, select, textarea").first(), g.on("keyup", function (d) { + 13 !== d.keyCode && 27 !== d.keyCode || gj.grid.plugins.inlineEditing.private.displayMode(a, b, c) + })) + } + "INPUT" === g.prop("tagName").toUpperCase() && "TEXT" === g.prop("type").toUpperCase() ? gj.core.setCaretAtEnd(g[0]) : g.focus(), b.attr("data-mode", "edit") + } else "managementColumn" === c.role && (b.find('[role="edit"]').hide(), b.find('[role="delete"]').hide(), b.find('[role="update"]').show(), b.find('[role="cancel"]').show()) + }, displayMode: function (a, b, c, d) { + var e, f, g, h, i, j, k; + "editOnly" !== c.mode && ("edit" === b.attr("data-mode") && (e = b.find('div[data-role="edit"]'), f = b.find('div[data-role="display"]'), g = e.find("input, select, textarea").first(), "SELECT" === g[0].tagName.toUpperCase() && g[0].selectedIndex > -1 ? (h = g[0].options[g[0].selectedIndex].innerHTML, i = g[0].value) : h = "INPUT" === g[0].tagName.toUpperCase() && "CHECKBOX" === g[0].type.toUpperCase() ? g[0].checked : g.val(), k = b.parent().data("position"), j = a.get(k), !0 !== d && h !== j[c.field] && (j[c.field] = "date" === c.type ? gj.core.parseDate(h, c.format) : h, c.editField && (j[c.editField] = i || h), "editOnly" !== c.mode && (gj.grid.methods.renderDisplayElement(a, f, c, j, gj.grid.methods.getId(j, a.data("primaryKey"), k), "update"), 0 === b.find("span.gj-dirty").length && b.prepend($(''))), gj.grid.plugins.inlineEditing.events.cellDataChanged(a, b, c, j, h), gj.grid.plugins.inlineEditing.private.updateChanges(a, c, j, h)), e.hide(), f.show(), b.attr("data-mode", "display")), "managementColumn" === c.role && (b.find('[role="update"]').hide(), b.find('[role="cancel"]').hide(), b.find('[role="edit"]').show(), b.find('[role="delete"]').show())) + }, updateOtherCells: function (a, b) { + var c = a.data(); + "command" !== c.inlineEditing.mode && "editOnly" !== b && a.find('div[data-role="edit"]:visible').parent("td").each(function () { + var b = $(this), d = c.columns[b.index()]; + gj.grid.plugins.inlineEditing.private.displayMode(a, b, d) + }) + }, updateChanges: function (a, b, c, d) { + var e, f, g, h = a.data(); + h.guid || (h.guid = gj.grid.plugins.inlineEditing.private.generateGUID()), h.primaryKey && (e = JSON.parse(sessionStorage.getItem("gj.grid." + h.guid)), e ? f = e.filter(function (a) { + return a[h.primaryKey] === c[h.primaryKey] + }) : e = [], f && 1 === f.length ? f[0][b.field] = d : (g = {}, g[h.primaryKey] = c[h.primaryKey], h.primaryKey !== b.field && (g[b.field] = d), e.push(g)), sessionStorage.setItem("gj.grid." + h.guid, JSON.stringify(e))) + }, generateGUID: function () { + function a() { + return Math.floor(65536 * (1 + Math.random())).toString(16).substring(1) + } + + return a() + a() + "-" + a() + "-" + a() + "-" + a() + "-" + a() + a() + a() + } +}, gj.grid.plugins.inlineEditing.public = { + getChanges: function () { + return JSON.parse(sessionStorage.getItem("gj.grid." + this.data().guid)) + }, edit: function (a) { + var b, c = this.getById(a), d = gj.grid.methods.getRowById(this, a).children("td"), e = this.data("columns"); + for (b = 0; b < d.length; b++) gj.grid.plugins.inlineEditing.private.editMode(this, $(d[b]), e[b], c); + return this + }, update: function (a) { + var b, c = this.getById(a), d = gj.grid.methods.getRowById(this, a).children("td"), e = this.data("columns"); + for (b = 0; b < d.length; b++) gj.grid.plugins.inlineEditing.private.displayMode(this, $(d[b]), e[b], !1); + return gj.grid.plugins.inlineEditing.events.rowDataChanged(this, a, c), this + }, cancel: function (a) { + var b, c = (this.getById(a), gj.grid.methods.getRowById(this, a).children("td")), d = this.data("columns"); + for (b = 0; b < c.length; b++) gj.grid.plugins.inlineEditing.private.displayMode(this, $(c[b]), d[b], !0); + return this + } +}, gj.grid.plugins.inlineEditing.events = { + cellDataChanged: function (a, b, c, d, e, f) { + a.triggerHandler("cellDataChanged", [b, c, d, e, f]) + }, rowDataChanged: function (a, b, c) { + a.triggerHandler("rowDataChanged", [b, c]) + } +}, gj.grid.plugins.inlineEditing.configure = function (a, b, c) { + var d = a.data(); + $.extend(!0, a, gj.grid.plugins.inlineEditing.public), c.inlineEditing && (a.on("dataBound", function () { + a.find("span.gj-dirty").remove() + }), a.on("rowDataBound", function (b, c, d, e) { + a.cancel(d) + })), "command" === d.inlineEditing.mode ? (gj.grid.plugins.inlineEditing.private.localization(d), b.inlineEditing.managementColumn && d.columns.push(b.inlineEditing.managementColumnConfig)) : a.on("cellDataBound", function (b, c, e, f, g) { + f.editor && ("editOnly" === f.mode ? gj.grid.plugins.inlineEditing.private.editMode(a, c.parent(), f, g) : c.parent("td").on("dblclick" === d.inlineEditing.mode ? "dblclick" : "click", function () { + gj.grid.plugins.inlineEditing.private.editMode(a, c.parent(), f, g) + })) + }) +}, gj.grid.plugins.optimisticPersistence = { + config: {base: {optimisticPersistence: {localStorage: void 0, sessionStorage: void 0}}}, private: { + applyParams: function (a) { + var b, c = a.data(), d = {}; + b = JSON.parse(sessionStorage.getItem("gj.grid." + c.guid)), b && b.optimisticPersistence && $.extend(d, b.optimisticPersistence), b = JSON.parse(localStorage.getItem("gj.grid." + c.guid)), b && b.optimisticPersistence && $.extend(d, b.optimisticPersistence), $.extend(c.params, d) + }, saveParams: function (a) { + var b, c, d = a.data(), e = {optimisticPersistence: {}}; + if (d.optimisticPersistence.sessionStorage) { + for (b = 0; b < d.optimisticPersistence.sessionStorage.length; b++) c = d.optimisticPersistence.sessionStorage[b], e.optimisticPersistence[c] = d.params[c]; + e = $.extend(!0, JSON.parse(sessionStorage.getItem("gj.grid." + d.guid)), e), sessionStorage.setItem("gj.grid." + d.guid, JSON.stringify(e)) + } + if (d.optimisticPersistence.localStorage) { + for (e = {optimisticPersistence: {}}, b = 0; b < d.optimisticPersistence.localStorage.length; b++) c = d.optimisticPersistence.localStorage[b], e.optimisticPersistence[c] = d.params[c]; + e = $.extend(!0, JSON.parse(localStorage.getItem("gj.grid." + d.guid)), e), localStorage.setItem("gj.grid." + d.guid, JSON.stringify(e)) + } + } + }, configure: function (a, b, c) { + b.guid && (b.optimisticPersistence.localStorage || b.optimisticPersistence.sessionStorage) && (gj.grid.plugins.optimisticPersistence.private.applyParams(a), a.on("dataBound", function (b) { + gj.grid.plugins.optimisticPersistence.private.saveParams(a) + })) + } +}, gj.grid.plugins.pagination = { + config: { + base: { + style: {pager: {panel: "", stateDisabled: "", activeButton: ""}}, + paramNames: {page: "page", limit: "limit"}, + pager: {limit: 10, sizes: [5, 10, 20, 100], leftControls: void 0, rightControls: void 0} + }, + bootstrap: {style: {pager: {panel: "", stateDisabled: ""}}}, + bootstrap4: {style: {pager: {panel: "btn-toolbar", stateDisabled: ""}}}, + glyphicons: { + icons: { + first: '', + previous: '', + next: '', + last: '', + refresh: '' + } + }, + materialicons: { + icons: { + first: '', + previous: '', + next: '', + last: '', + refresh: '' + } + }, + fontawesome: { + icons: { + first: '', + previous: '', + next: '', + last: '', + refresh: '' + } + } + }, private: { + init: function (a) { + var b, c, d, e, f, g, h, i, j, k; + if (d = a.data(), d.pager) for (d.params[d.paramNames.page] || (d.params[d.paramNames.page] = 1), d.params[d.paramNames.limit] || (d.params[d.paramNames.limit] = d.pager.limit), gj.grid.plugins.pagination.private.localization(d), b = $('
                "), b.append(c), f = $('
                ').addClass(d.style.pager.panel).css({float: "left"}), g = $('
                ').addClass(d.style.pager.panel).css({float: "right"}), c.append(f).append(g), h = $("
                "), e.columns[b].filterable && (d = $(''), "onchange" === e.headerFilter.type ? d.on("input propertychange", function (b) { + gj.grid.plugins.headerFilter.private.reload(a, $(this)) + }) : (d.on("keypress", function (b) { + 13 == b.which && gj.grid.plugins.headerFilter.private.reload(a, $(this)) + }), d.on("blur", function (b) { + gj.grid.plugins.headerFilter.private.reload(a, $(this)) + })), c.append(d)), e.columns[b].hidden && c.hide(), f.append(c); + a.children("thead").append(f) + }, reload: function (a, b) { + var c = {}; + c[b.data("field")] = b.val(), a.reload(c) + } + }, public: {}, events: {}, configure: function (a, b, c) { + $.extend(!0, a, gj.grid.plugins.headerFilter.public); + a.data(); + c.headerFilter && a.on("initialized", function () { + gj.grid.plugins.headerFilter.private.init(a) + }) + } +}, gj.grid.plugins.grouping = { + config: { + base: { + paramNames: {groupBy: "groupBy", groupByDirection: "groupByDirection"}, + grouping: {groupBy: void 0, direction: "asc"}, + icons: {expandGroup: '', collapseGroup: ''} + }, + fontawesome: { + icons: { + expandGroup: '', + collapseGroup: '' + } + }, + glyphicons: { + icons: { + expandGroup: '', + collapseGroup: '' + } + } + }, private: { + init: function (a) { + var b, c = a.data(); + b = void 0, a.on("rowDataBound", function (d, e, f, g) { + if (b !== g[c.grouping.groupBy] || 1 === e[0].rowIndex) { + var h = gj.grid.methods.countVisibleColumns(a) - 1, i = $('
                '); + j.append('
                ' + c.icons.collapseGroup + "
                "), j.on("click", gj.grid.plugins.grouping.private.createExpandCollapseHandler(c)), i.append(j), i.append('
                ' + c.grouping.groupBy + ": " + g[c.grouping.groupBy] + "
                 
                " + gj.core.messages[d.locale].weekDaysMin[i] + "
                " + gj.core.messages[d.locale].weekDaysMin[i] + "
                "), + u = $(""), v = gj.core.messages[c.locale].titleFormat; + for (s.off().empty(), gj.datepicker.methods.createNavigation(a, s, t, c), g = parseInt(b.attr("month"), 10), h = parseInt(b.attr("year"), 10), b.attr("type", "month"), v = v.replace("mmmm", gj.core.messages[c.locale].monthNames[g]).replace("yyyy", h), b.find('div[role="period"]').text(v), i = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31), h % 4 == 0 && 1900 != h && (i[1] = 29), j = i[g], k = (new Date(h, g, 1).getDay() + 7 - c.weekStartDay) % 7, d = 0, $row = $(""), n = gj.datepicker.methods.getPrevMonth(g, h), l = 1; l <= k; l++) f = i[n.month] - k + l, r = new Date(n.year, n.month, f), c.calendarWeeks && 1 === l && $row.append('"), p = $('"), c.calendarWeeks && $row.append('")), p = $('"), f = 4 * e; f <= 4 * e + 3; f++) g = $("
                " + gj.core.messages[c.locale].monthShortNames[f] + "
                "), g.on("click", gj.datepicker.methods.selectMonth(a, b, c, f)), $cell = $("
                ").append(g), $row.append($cell); + i.append($row) + } + }, renderDecade: function (a, b, c) { + var d, e, f, g, h, i = b.find('>[role="body"]>table'), j = i.children("tbody"); + for (i.children("thead").hide(), d = parseInt(b.attr("year"), 10), e = d - d % 10, b.attr("type", "decade"), b.find('div[role="period"]').text(e + " - " + (e + 9)), j.empty(), f = e - 1; f <= e + 10; f += 4) { + for ($row = $(""), g = f; g <= f + 3; g++) h = $("
                " + g + "
                "), h.on("click", gj.datepicker.methods.selectYear(a, b, c, g)), $cell = $("
                ").append(h), $row.append($cell); + j.append($row) + } + }, renderCentury: function (a, b, c) { + var d, e, f, g, h, i = b.find('>[role="body"]>table'), j = i.children("tbody"); + for (i.children("thead").hide(), d = parseInt(b.attr("year"), 10), e = d - d % 100, b.attr("type", "century"), b.find('div[role="period"]').text(e + " - " + (e + 99)), j.empty(), f = e - 10; f < e + 100; f += 40) { + for ($row = $(""), g = f; g <= f + 30; g += 10) h = $("
                " + g + "
                "), h.on("click", gj.datepicker.methods.selectDecade(a, b, c, g)), $cell = $("
                ").append(h), $row.append($cell); + j.append($row) + } + }, getWeekNumber: function (a) { + var b = new Date(a.valueOf()); + b.setDate(b.getDate() + 6), b = new Date(Date.UTC(b.getFullYear(), b.getMonth(), b.getDate())), b.setUTCDate(b.getUTCDate() + 4 - (b.getUTCDay() || 7)); + var c = new Date(Date.UTC(b.getUTCFullYear(), 0, 1)); + return Math.ceil(((b - c) / 864e5 + 1) / 7) + }, getMinDate: function (a) { + var b; + return a.minDate && ("string" == typeof a.minDate ? b = gj.core.parseDate(a.minDate, a.format, a.locale) : "function" == typeof a.minDate ? "string" == typeof (b = a.minDate()) && (b = gj.core.parseDate(b, a.format, a.locale)) : "function" == typeof a.minDate.getMonth && (b = a.minDate)), b + }, getMaxDate: function (a) { + var b; + return a.maxDate && ("string" == typeof a.maxDate ? b = gj.core.parseDate(a.maxDate, a.format, a.locale) : "function" == typeof a.maxDate ? "string" == typeof (b = a.maxDate()) && (b = gj.core.parseDate(b, a.format, a.locale)) : "function" == typeof a.maxDate.getMonth && (b = a.maxDate)), b + }, isSelectable: function (a, b) { + var c, d = !0, e = gj.datepicker.methods.getMinDate(a), f = gj.datepicker.methods.getMaxDate(a); + if (e && b < e ? d = !1 : f && b > f && (d = !1), d) { + if (a.disableDates) if ($.isArray(a.disableDates)) for (c = 0; c < a.disableDates.length; c++) a.disableDates[c] instanceof Date && a.disableDates[c].getTime() === b.getTime() ? d = !1 : "string" == typeof a.disableDates[c] && gj.core.parseDate(a.disableDates[c], a.format, a.locale).getTime() === b.getTime() && (d = !1); else a.disableDates instanceof Function && (d = a.disableDates(b)); + $.isArray(a.disableDaysOfWeek) && a.disableDaysOfWeek.indexOf(b.getDay()) > -1 && (d = !1) + } + return d + }, getPrevMonth: function (a, b) { + return date = new Date(b, a, 1), date.setMonth(date.getMonth() - 1), { + month: date.getMonth(), + year: date.getFullYear() + } + }, getNextMonth: function (a, b) { + return date = new Date(b, a, 1), date.setMonth(date.getMonth() + 1), { + month: date.getMonth(), + year: date.getFullYear() + } + }, prev: function (a, b) { + return function () { + var c, d, e, f, g, h = $("body").find('[role="calendar"][guid="' + a.attr("data-guid") + '"]'); + switch (e = parseInt(h.attr("year"), 10), h.attr("type")) { + case"month": + d = parseInt(h.attr("month"), 10), c = gj.datepicker.methods.getPrevMonth(d, e), h.attr("month", c.month), h.attr("year", c.year), gj.datepicker.methods.renderMonth(a, h, b); + break; + case"year": + h.attr("year", e - 1), gj.datepicker.methods.renderYear(a, h, b); + break; + case"decade": + f = e - e % 10, h.attr("year", f - 10), gj.datepicker.methods.renderDecade(a, h, b); + break; + case"century": + g = e - e % 100, h.attr("year", g - 100), gj.datepicker.methods.renderCentury(a, h, b) + } + } + }, next: function (a, b) { + return function () { + var c, d, e, f, g, h = $("body").find('[role="calendar"][guid="' + a.attr("data-guid") + '"]'); + switch (e = parseInt(h.attr("year"), 10), h.attr("type")) { + case"month": + d = parseInt(h.attr("month"), 10), c = gj.datepicker.methods.getNextMonth(d, e), h.attr("month", c.month), h.attr("year", c.year), gj.datepicker.methods.renderMonth(a, h, b); + break; + case"year": + h.attr("year", e + 1), gj.datepicker.methods.renderYear(a, h, b); + break; + case"decade": + f = e - e % 10, h.attr("year", f + 10), gj.datepicker.methods.renderDecade(a, h, b); + break; + case"century": + g = e - e % 100, h.attr("year", g + 100), gj.datepicker.methods.renderCentury(a, h, b) + } + } + }, changePeriod: function (a, b) { + return function (c) { + var d = $("body").find('[role="calendar"][guid="' + a.attr("data-guid") + '"]'); + switch (d.attr("type")) { + case"month": + gj.datepicker.methods.renderYear(a, d, b); + break; + case"year": + gj.datepicker.methods.renderDecade(a, d, b); + break; + case"decade": + gj.datepicker.methods.renderCentury(a, d, b) + } + } + }, dayClickHandler: function (a, b, c, d) { + return function (e) { + return e && e.stopPropagation(), gj.datepicker.methods.selectDay(a, b, c, d), !0 !== c.footer && !1 !== c.autoClose && gj.datepicker.methods.change(a, b, c, d), a + } + }, change: function (a, b, c, d) { + var e = (d.getDate(), d.getMonth()), f = d.getFullYear(), g = gj.core.formatDate(d, c.format, c.locale); + b.attr("month", e), b.attr("year", f), a.val(g), gj.datepicker.events.change(a), "none" !== window.getComputedStyle(b[0]).display && gj.datepicker.methods.close(a) + }, selectDay: function (a, b, c, d) { + var e = d.getDate(), f = d.getMonth(), g = d.getFullYear(); gotoFunc(); + b.attr("selectedDay", g + "-" + f + "-" + e), b.find("tbody td").removeClass("selected"), b.find('tbody td[day="' + e + '"][month="' + f + '"]').addClass("selected"), gj.datepicker.methods.updateHeader(b, c, d), gj.datepicker.events.select(a, "day") + }, selectMonth: function (a, b, c, d) { + return function (e) { + b.attr("month", d), gj.datepicker.methods.renderMonth(a, b, c), gj.datepicker.events.select(a, "month") + } + }, selectYear: function (a, b, c, d) { + return function (e) { + b.attr("year", d), gj.datepicker.methods.renderYear(a, b, c), gj.datepicker.events.select(a, "year") + } + }, selectDecade: function (a, b, c, d) { + return function (e) { + b.attr("year", d), gj.datepicker.methods.renderDecade(a, b, c), gj.datepicker.events.select(a, "decade") + } + }, open: function (a, b) { + var c, d = $("body").find('[role="calendar"][guid="' + a.attr("data-guid") + '"]'); + switch (a.val() ? a.value(a.val()) : (c = new Date, d.attr("month", c.getMonth()), d.attr("year", c.getFullYear())), d.attr("type")) { + case"month": + gj.datepicker.methods.renderMonth(a, d, b); + break; + case"year": + gj.datepicker.methods.renderYear(a, d, b); + break; + case"decade": + gj.datepicker.methods.renderDecade(a, d, b); + break; + case"century": + gj.datepicker.methods.renderCentury(a, d, b) + } + d.show(), d.closest('div[role="modal"]').show(), b.modal ? gj.core.center(d) : (gj.core.setChildPosition(a[0], d[0]), document.activeElement !== a[0] && a.focus()), clearTimeout(a.timeout), gj.datepicker.events.open(a) + }, close: function (a) { + var b = $("body").find('[role="calendar"][guid="' + a.attr("data-guid") + '"]'); + b.hide(), b.closest('div[role="modal"]').hide(), gj.datepicker.events.close(a) + }, createKeyDownHandler: function (a, b, c) { + return function (d) { + var e, f, g, h, i, j, d = d || window.event; + "none" !== window.getComputedStyle(b[0]).display && (j = gj.datepicker.methods.getActiveCell(b), "38" == d.keyCode ? (h = j.index(), i = j.closest("tr").prev("tr").find("td:eq(" + h + ")"), i.is("[day]") || (gj.datepicker.methods.prev(a, c)(), i = b.find("tbody tr").last().find("td:eq(" + h + ")"), i.is(":empty") && (i = b.find("tbody tr").last().prev().find("td:eq(" + h + ")"))), i.is("[day]") && (i.addClass("focused"), j.removeClass("focused"))) : "40" == d.keyCode ? (h = j.index(), i = j.closest("tr").next("tr").find("td:eq(" + h + ")"), i.is("[day]") || (gj.datepicker.methods.next(a, c)(), i = b.find("tbody tr").first().find("td:eq(" + h + ")"), i.is("[day]") || (i = b.find("tbody tr:eq(1)").find("td:eq(" + h + ")"))), i.is("[day]") && (i.addClass("focused"), j.removeClass("focused"))) : "37" == d.keyCode ? (i = j.prev("td[day]:not(.disabled)"), 0 === i.length && (i = j.closest("tr").prev("tr").find("td[day]").last()), 0 === i.length && (gj.datepicker.methods.prev(a, c)(), i = b.find("tbody tr").last().find("td[day]").last()), i.length > 0 && (i.addClass("focused"), j.removeClass("focused"))) : "39" == d.keyCode ? (i = j.next("[day]:not(.disabled)"), 0 === i.length && (i = j.closest("tr").next("tr").find("td[day]").first()), 0 === i.length && (gj.datepicker.methods.next(a, c)(), i = b.find("tbody tr").first().find("td[day]").first()), i.length > 0 && (i.addClass("focused"), j.removeClass("focused"))) : "13" == d.keyCode ? (g = parseInt(j.attr("day"), 10), e = parseInt(j.attr("month"), 10), f = parseInt(j.attr("year"), 10), gj.datepicker.methods.dayClickHandler(a, b, c, new Date(f, e, g))()) : "27" == d.keyCode && a.close()) + } + }, getActiveCell: function (a) { + var b = a.find("td[day].focused"); + return 0 === b.length && (b = a.find("td[day].selected"), 0 === b.length && (b = a.find("td[day].today"), 0 === b.length && (b = a.find("td[day]:not(.disabled)").first()))), b + }, value: function (a, b) { + var c, d, e = a.data(); + return void 0 === b ? a.val() : (d = gj.core.parseDate(b, e.format, e.locale), d && d.getTime() ? (c = $("body").find('[role="calendar"][guid="' + a.attr("data-guid") + '"]'), gj.datepicker.methods.dayClickHandler(a, c, e, d)()) : a.val(""), a) + }, destroy: function (a) { + var b = a.data(), c = a.parent(), d = $("body").find('[role="calendar"][guid="' + a.attr("data-guid") + '"]'); + return b && (a.off(), d.parent('[role="modal"]').length > 0 && d.unwrap(), d.remove(), a.removeData(), a.removeAttr("data-type").removeAttr("data-guid").removeAttr("data-datepicker"), a.removeClass(), c.children('[role="right-icon"]').remove(), a.unwrap()), a + } +},gj.datepicker.events = { + change: function (a) { + return a.triggerHandler("change") + }, select: function (a, b) { + return a.triggerHandler("select", [b]) + }, open: function (a) { + return a.triggerHandler("open") + }, close: function (a) { + return a.triggerHandler("close") + } +},gj.datepicker.widget = function (a, b) { + var c = this, d = gj.datepicker.methods; + return c.value = function (a) { + return d.value(this, a) + }, c.destroy = function () { + return d.destroy(this) + }, c.open = function () { + return d.open(this, this.data()) + }, c.close = function () { + return d.close(this) + }, $.extend(a, c), "true" !== a.attr("data-datepicker") && d.init.call(a, b), a +},gj.datepicker.widget.prototype = new gj.widget,gj.datepicker.widget.constructor = gj.datepicker.widget,function (a) { + a.fn.datepicker = function (a) { + var b; + if (this && this.length) { + if ("object" != typeof a && a) { + if (b = new gj.datepicker.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); + throw"Method " + a + " does not exist." + } + return new gj.datepicker.widget(this, a) + } + } +}(jQuery),gj.timepicker = {plugins: {}},gj.timepicker.config = { + base: { + width: void 0, + modal: !0, + header: !0, + footer: !0, + format: "HH:MM", + uiLibrary: "materialdesign", + value: void 0, + mode: "ampm", + locale: "en-us", + size: "default", + icons: {rightIcon: ''}, + style: { + modal: "gj-modal", + wrapper: "gj-timepicker gj-timepicker-md gj-unselectable", + input: "gj-textbox-md", + clock: "gj-picker gj-picker-md timepicker", + footer: "", + button: "gj-button-md" + } + }, + bootstrap: { + style: { + wrapper: "gj-timepicker gj-timepicker-bootstrap gj-unselectable input-group", + input: "form-control", + clock: "gj-picker gj-picker-bootstrap timepicker", + footer: "modal-footer", + button: "btn btn-default" + }, iconsLibrary: "glyphicons" + }, + bootstrap4: { + style: { + wrapper: "gj-timepicker gj-timepicker-bootstrap gj-unselectable input-group", + input: "form-control border", + clock: "gj-picker gj-picker-bootstrap timepicker", + footer: "modal-footer", + button: "btn btn-default" + } + } +},gj.timepicker.methods = { + init: function (a) { + return gj.picker.widget.prototype.init.call(this, a, "timepicker"), this + }, initialize: function () { + }, initMouse: function (a, b, c, d) { + a.off(), a.on("mousedown", gj.timepicker.methods.mouseDownHandler(b, c)), a.on("mousemove", gj.timepicker.methods.mouseMoveHandler(b, c, d)), a.on("mouseup", gj.timepicker.methods.mouseUpHandler(b, c, d)) + }, createPicker: function (a) { + var b, c = a.data(), d = $('
                ').addClass(c.style.clock).attr("guid", a.attr("data-guid")), + e = $('
                '), f = $('
                '), g = $('
                '), + h = $('
                '), i = $('
                '), + j = $('"), + k = $('"), + l = $('
                '); + return b = gj.core.parseDate(c.value, c.format, c.locale), !b || isNaN(b.getTime()) ? b = new Date : a.attr("hours", b.getHours()), gj.timepicker.methods.initMouse(i, a, d, c), c.header && (e.on("click", function () { + gj.timepicker.methods.renderHours(a, d, c) + }), f.on("click", function () { + gj.timepicker.methods.renderMinutes(a, d, c) + }), g.append(e).append(":").append(f), "ampm" === c.mode && (h.append($('' + gj.core.messages[c.locale].am + "").on("click", function () { + var b = gj.timepicker.methods.getHour(d); + d.attr("mode", "am"), $(this).addClass("selected"), $(this).parent().children('[role="pm"]').removeClass("selected"), b >= 12 && d.attr("hour", b - 12), c.modal || (clearTimeout(a.timeout), a.focus()) + })), h.append("
                "), h.append($('' + gj.core.messages[c.locale].pm + "").on("click", function () { + var b = gj.timepicker.methods.getHour(d); + d.attr("mode", "pm"), $(this).addClass("selected"), $(this).parent().children('[role="am"]').removeClass("selected"), b < 12 && d.attr("hour", b + 12), c.modal || (clearTimeout(a.timeout), a.focus()) + })), g.append(h)), d.append(g)), d.append(i), c.footer && (k.on("click", function () { + a.close() + }), l.append(k), j.on("click", gj.timepicker.methods.setTime(a, d)), l.append(j), d.append(l)), d.hide(), $("body").append(d), c.modal && (d.wrapAll('
                '), gj.core.center(d)), d + }, getHour: function (a) { + return parseInt(a.attr("hour"), 10) || 0 + }, getMinute: function (a) { + return parseInt(a.attr("minute"), 10) || 0 + }, setTime: function (a, b) { + return function () { + var c = gj.timepicker.methods.getHour(b), d = gj.timepicker.methods.getMinute(b), e = b.attr("mode"), + f = new Date(0, 0, 0, 12 === c && "am" === e ? 0 : c, d), g = a.data(), + h = gj.core.formatDate(f, g.format, g.locale); + a.value(h), a.close() + } + }, getPointerValue: function (a, b, c) { + var d, e, f = 256, g = Math.atan2(f / 2 - a, f / 2 - b) / Math.PI * 180; + switch (g < 0 && (g = 360 + g), c) { + case"ampm": + return d = 12 - Math.round(12 * g / 360), 0 === d ? 12 : d; + case"24hr": + return e = Math.sqrt(Math.pow(f / 2 - a, 2) + Math.pow(f / 2 - b, 2)), d = 12 - Math.round(12 * g / 360), 0 === d && (d = 12), e < f / 2 - 32 && (d = 12 === d ? 0 : d + 12), d; + case"minutes": + return d = Math.round(60 - 60 * g / 360), 60 === d ? 0 : d + } + }, updateArrow: function (a, b, c, d) { + var e, f, g = b.mouseX(a), h = b.mouseY(a), i = window.scrollY || window.pageYOffset || 0, + j = window.scrollX || window.pageXOffset || 0; + e = a.target.getBoundingClientRect(), "hours" == d.dialMode ? (f = gj.timepicker.methods.getPointerValue(g - j - e.left, h - i - e.top, d.mode), c.attr("hour", "ampm" === d.mode && "pm" === c.attr("mode") && f < 12 ? f + 12 : f)) : "minutes" == d.dialMode && (f = gj.timepicker.methods.getPointerValue(g - j - e.left, h - i - e.top, "minutes"), c.attr("minute", f)), gj.timepicker.methods.update(b, c, d) + }, update: function (a, b, c) { + var d, e, f, g, h, i; + d = gj.timepicker.methods.getHour(b), e = gj.timepicker.methods.getMinute(b), f = b.find('[role="arrow"]'), "hours" == c.dialMode && (0 == d || d > 12) && "24hr" === c.mode ? f.css("width", "calc(50% - 52px)") : f.css("width", "calc(50% - 20px)"), "hours" == c.dialMode ? f.css("transform", "rotate(" + (30 * d - 90).toString() + "deg)") : f.css("transform", "rotate(" + (6 * e - 90).toString() + "deg)"), f.show(), g = "ampm" === c.mode && d > 12 ? d - 12 : 0 == d ? 12 : d, i = b.find('[role="body"] span'), i.removeClass("selected"), i.filter(function (a) { + return "hours" == c.dialMode ? parseInt($(this).text(), 10) == g : parseInt($(this).text(), 10) == e + }).addClass("selected"), c.header && (h = b.find('[role="header"]'), h.find('[role="hour"]').text(g), h.find('[role="minute"]').text(gj.core.pad(e)), "ampm" === c.mode && (d >= 12 ? (h.find('[role="pm"]').addClass("selected"), h.find('[role="am"]').removeClass("selected")) : (h.find('[role="am"]').addClass("selected"), h.find('[role="pm"]').removeClass("selected")))) + }, mouseDownHandler: function (a, b) { + return function (b) { + a.mouseMove = !0 + } + }, mouseMoveHandler: function (a, b, c) { + return function (d) { + a.mouseMove && gj.timepicker.methods.updateArrow(d, a, b, c) + } + }, mouseUpHandler: function (a, b, c) { + return function (d) { + gj.timepicker.methods.updateArrow(d, a, b, c), a.mouseMove = !1, c.modal || (clearTimeout(a.timeout), a.focus()), "hours" == c.dialMode ? setTimeout(function () { + gj.timepicker.events.select(a, "hour"), gj.timepicker.methods.renderMinutes(a, b, c) + }, 1e3) : "minutes" == c.dialMode && (!0 !== c.footer && !1 !== c.autoClose && gj.timepicker.methods.setTime(a, b)(), gj.timepicker.events.select(a, "minute")) + } + }, renderHours: function (a, b, c) { + var d, e = b.find('[role="body"]'); + clearTimeout(a.timeout), e.empty(), d = $('
                '), d.append('
                '), d.append('1'), d.append('2'), d.append('3'), d.append('4'), d.append('5'), d.append('6'), d.append('7'), d.append('8'), d.append('9'), d.append('10'), d.append('11'), d.append('12'), "24hr" === c.mode && (d.append('13'), d.append('14'), d.append('15'), d.append('16'), d.append('17'), d.append('18'), d.append('19'), d.append('20'), d.append('21'), d.append('22'), d.append('23'), d.append('00')), e.append(d), b.find('[role="header"] [role="hour"]').addClass("selected"), b.find('[role="header"] [role="minute"]').removeClass("selected"), c.dialMode = "hours", gj.timepicker.methods.update(a, b, c) + }, renderMinutes: function (a, b, c) { + var d = b.find('[role="body"]'); + clearTimeout(a.timeout), d.empty(), $dial = $('
                '), $dial.append('
                '), $dial.append('5'), $dial.append('10'), $dial.append('15'), $dial.append('20'), $dial.append('25'), $dial.append('30'), $dial.append('35'), $dial.append('40'), $dial.append('45'), $dial.append('50'), $dial.append('55'), $dial.append('00'), d.append($dial), b.find('[role="header"] [role="hour"]').removeClass("selected"), b.find('[role="header"] [role="minute"]').addClass("selected"), c.dialMode = "minutes", gj.timepicker.methods.update(a, b, c) + }, open: function (a) { + var b, c, d = a.data(), e = $("body").find('[role="picker"][guid="' + a.attr("data-guid") + '"]'); + return b = a.value() ? gj.core.parseDate(a.value(), d.format, d.locale) : new Date, c = b.getHours(), "ampm" === d.mode && e.attr("mode", c > 12 ? "pm" : "am"), e.attr("hour", c), e.attr("minute", b.getMinutes()), gj.timepicker.methods.renderHours(a, e, d), gj.picker.widget.prototype.open.call(a, "timepicker"), a + }, value: function (a, b) { + a.data(); + return void 0 === b ? a.val() : (a.val(b), gj.timepicker.events.change(a), a) + } +},gj.timepicker.events = { + change: function (a) { + return a.triggerHandler("change") + }, select: function (a, b) { + return a.triggerHandler("select", [b]) + }, open: function (a) { + return a.triggerHandler("open") + }, close: function (a) { + return a.triggerHandler("close") + } +},gj.timepicker.widget = function (a, b) { + var c = this, d = gj.timepicker.methods; + return c.mouseMove = !1, c.value = function (a) { + return d.value(this, a) + }, c.destroy = function () { + return gj.picker.widget.prototype.destroy.call(this, "timepicker") + }, c.open = function () { + return gj.timepicker.methods.open(this) + }, c.close = function () { + return gj.picker.widget.prototype.close.call(this, "timepicker") + }, $.extend(a, c), "true" !== a.attr("data-timepicker") && d.init.call(a, b), a +},gj.timepicker.widget.prototype = new gj.picker.widget,gj.timepicker.widget.constructor = gj.timepicker.widget,function (a) { + a.fn.timepicker = function (a) { + var b; + if (this && this.length) { + if ("object" != typeof a && a) { + if (b = new gj.timepicker.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); + throw"Method " + a + " does not exist." + } + return new gj.timepicker.widget(this, a) + } + } +}(jQuery),gj.datetimepicker = { + plugins: {}, + messages: {"en-us": {}} +},gj.datetimepicker.config = { + base: { + datepicker: gj.datepicker.config.base, + timepicker: gj.timepicker.config.base, + uiLibrary: "materialdesign", + value: void 0, + format: "HH:MM mm/dd/yyyy", + width: void 0, + modal: !1, + footer: !1, + size: "default", + locale: "en-us", + icons: {}, + style: {calendar: "gj-picker gj-picker-md datetimepicker gj-unselectable"} + }, + bootstrap: { + style: {calendar: "gj-picker gj-picker-bootstrap datetimepicker gj-unselectable"}, + iconsLibrary: "glyphicons" + }, + bootstrap4: {style: {calendar: "gj-picker gj-picker-bootstrap datetimepicker gj-unselectable"}} +},gj.datetimepicker.methods = { + init: function (a) { + return gj.widget.prototype.init.call(this, a, "datetimepicker"), this.attr("data-datetimepicker", "true"), gj.datetimepicker.methods.initialize(this), this + }, getConfig: function (a, b) { + var c = gj.widget.prototype.getConfig.call(this, a, b); + return uiLibrary = a.hasOwnProperty("uiLibrary") ? a.uiLibrary : c.uiLibrary, gj.datepicker.config[uiLibrary] && $.extend(!0, c.datepicker, gj.datepicker.config[uiLibrary]), gj.timepicker.config[uiLibrary] && $.extend(!0, c.timepicker, gj.timepicker.config[uiLibrary]), iconsLibrary = a.hasOwnProperty("iconsLibrary") ? a.iconsLibrary : c.iconsLibrary, gj.datepicker.config[iconsLibrary] && $.extend(!0, c.datepicker, gj.datepicker.config[iconsLibrary]), gj.timepicker.config[iconsLibrary] && $.extend(!0, c.timepicker, gj.timepicker.config[iconsLibrary]), c + }, initialize: function (a) { + var b, c, d, e, f, g, h, i, j = a.data(); + j.datepicker.uiLibrary = j.uiLibrary, j.datepicker.iconsLibrary = j.iconsLibrary, j.datepicker.width = j.width, j.datepicker.format = j.format, j.datepicker.locale = j.locale, j.datepicker.modal = j.modal, j.datepicker.footer = j.footer, j.datepicker.style.calendar = j.style.calendar, j.datepicker.value = j.value, j.datepicker.size = j.size, j.datepicker.autoClose = !1, gj.datepicker.methods.initialize(a, j.datepicker), a.on("select", function (c, d) { + var e, f; + "day" === d ? gj.datetimepicker.methods.createShowHourHandler(a, b, j)() : "minute" === d && b.attr("selectedDay") && !0 !== j.footer && (selectedDay = b.attr("selectedDay").split("-"), e = new Date(selectedDay[0], selectedDay[1], selectedDay[2], b.attr("hour") || 0, b.attr("minute") || 0), f = gj.core.formatDate(e, j.format, j.locale), a.val(f), gj.datetimepicker.events.change(a), gj.datetimepicker.methods.close(a)) + }), a.on("open", function () { + var a = b.children('[role="header"]'); + a.find('[role="calendarMode"]').addClass("selected"), a.find('[role="clockMode"]').removeClass("selected") + }), b = $("body").find('[role="calendar"][guid="' + a.attr("data-guid") + '"]'), f = j.value ? gj.core.parseDate(j.value, j.format, j.locale) : new Date, b.attr("hour", f.getHours()), b.attr("minute", f.getMinutes()), j.timepicker.uiLibrary = j.uiLibrary, j.timepicker.iconsLibrary = j.iconsLibrary, j.timepicker.format = j.format, j.timepicker.locale = j.locale, j.timepicker.header = !0, j.timepicker.footer = j.footer, j.timepicker.size = j.size, j.timepicker.mode = "24hr", j.timepicker.autoClose = !1, c = $('
                '), d = $('
                '), d.on("click", gj.datetimepicker.methods.createShowDateHandler(a, b, j)), d.html(gj.core.formatDate(new Date, "ddd, mmm dd", j.locale)), c.append(d), g = $('
                '), h = $('event'), h.on("click", gj.datetimepicker.methods.createShowDateHandler(a, b, j)), g.append(h), e = $('
                '), e.append($('
                ').on("click", gj.datetimepicker.methods.createShowHourHandler(a, b, j)).html(gj.core.formatDate(new Date, "HH", j.locale))), e.append(":"), e.append($('
                ').on("click", gj.datetimepicker.methods.createShowMinuteHandler(a, b, j)).html(gj.core.formatDate(new Date, "MM", j.locale))), g.append(e), i = $('clock'), i.on("click", gj.datetimepicker.methods.createShowHourHandler(a, b, j)), g.append(i), c.append(g), b.prepend(c) + }, createShowDateHandler: function (a, b, c) { + return function (d) { + var e = b.children('[role="header"]'); + e.find('[role="calendarMode"]').addClass("selected"), e.find('[role="date"]').addClass("selected"), e.find('[role="clockMode"]').removeClass("selected"), e.find('[role="hour"]').removeClass("selected"), e.find('[role="minute"]').removeClass("selected"), gj.datepicker.methods.renderMonth(a, b, c.datepicker) + } + }, createShowHourHandler: function (a, b, c) { + return function () { + var d = b.children('[role="header"]'); + d.find('[role="calendarMode"]').removeClass("selected"), d.find('[role="date"]').removeClass("selected"), d.find('[role="clockMode"]').addClass("selected"), d.find('[role="hour"]').addClass("selected"), d.find('[role="minute"]').removeClass("selected"), gj.timepicker.methods.initMouse(b.children('[role="body"]'), a, b, c.timepicker), gj.timepicker.methods.renderHours(a, b, c.timepicker) + } + }, createShowMinuteHandler: function (a, b, c) { + return function () { + var d = b.children('[role="header"]'); + d.find('[role="calendarMode"]').removeClass("selected"), d.find('[role="date"]').removeClass("selected"), d.find('[role="clockMode"]').addClass("selected"), d.find('[role="hour"]').removeClass("selected"), d.find('[role="minute"]').addClass("selected"), gj.timepicker.methods.initMouse(b.children('[role="body"]'), a, b, c.timepicker), gj.timepicker.methods.renderMinutes(a, b, c.timepicker) + } + }, close: function (a) { + var b = $("body").find('[role="calendar"][guid="' + a.attr("data-guid") + '"]'); + b.hide(), b.closest('div[role="modal"]').hide() + }, value: function (a, b) { + var c, d, e, f = a.data(); + return void 0 === b ? a.val() : (d = gj.core.parseDate(b, f.format, f.locale), d ? (c = $("body").find('[role="calendar"][guid="' + a.attr("data-guid") + '"]'), gj.datepicker.methods.dayClickHandler(a, c, f, d)(), e = d.getHours(), "ampm" === f.mode && c.attr("mode", e > 12 ? "pm" : "am"), c.attr("hour", e), c.attr("minute", d.getMinutes()), a.val(b)) : a.val(""), a) + }, destroy: function (a) { + var b = a.data(), c = a.parent(), d = $("body").find('[role="calendar"][guid="' + a.attr("data-guid") + '"]'); + return b && (a.off(), d.parent('[role="modal"]').length > 0 && d.unwrap(), d.remove(), a.removeData(), a.removeAttr("data-type").removeAttr("data-guid").removeAttr("data-datetimepicker"), a.removeClass(), c.children('[role="right-icon"]').remove(), a.unwrap()), a + } +},gj.datetimepicker.events = { + change: function (a) { + return a.triggerHandler("change") + } +},gj.datetimepicker.widget = function (a, b) { + var c = this, d = gj.datetimepicker.methods; + return c.mouseMove = !1, c.value = function (a) { + return d.value(this, a) + }, c.open = function () { + gj.datepicker.methods.open(this, this.data().datepicker) + }, c.close = function () { + gj.datepicker.methods.close(this) + }, c.destroy = function () { + return d.destroy(this) + }, $.extend(a, c), "true" !== a.attr("data-datetimepicker") && d.init.call(a, b), a +},gj.datetimepicker.widget.prototype = new gj.widget,gj.datetimepicker.widget.constructor = gj.datetimepicker.widget,gj.datetimepicker.widget.prototype.getConfig = gj.datetimepicker.methods.getConfig,function (a) { + a.fn.datetimepicker = function (a) { + var b; + if (this && this.length) { + if ("object" != typeof a && a) { + if (b = new gj.datetimepicker.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); + throw"Method " + a + " does not exist." + } + return new gj.datetimepicker.widget(this, a) + } + } +}(jQuery),gj.slider = {plugins: {}, messages: {"en-us": {}}},gj.slider.config = { + base: { + min: 0, + max: 100, + width: void 0, + uiLibrary: "materialdesign", + value: void 0, + icons: {}, + style: {wrapper: "gj-slider gj-slider-md", progress: void 0, track: void 0} + }, + bootstrap: { + style: { + wrapper: "gj-slider gj-slider-bootstrap gj-slider-bootstrap-3", + progress: "progress-bar", + track: "progress" + } + }, + bootstrap4: { + style: { + wrapper: "gj-slider gj-slider-bootstrap gj-slider-bootstrap-4", + progress: "progress-bar", + track: "progress" + } + } +},gj.slider.methods = { + init: function (a) { + return gj.widget.prototype.init.call(this, a, "slider"), this.attr("data-slider", "true"), gj.slider.methods.initialize(this, this.data()), this + }, initialize: function (a, b) { + var c, d, e, f; + a[0].style.display = "none", "wrapper" !== a[0].parentElement.attributes.role ? (c = document.createElement("div"), c.setAttribute("role", "wrapper"), a[0].parentNode.insertBefore(c, a[0]), c.appendChild(a[0])) : c = a[0].parentElement, b.width && (c.style.width = b.width + "px"), gj.core.addClasses(c, b.style.wrapper), d = a[0].querySelector('[role="track"]'), null == d && (d = document.createElement("div"), d.setAttribute("role", "track"), c.appendChild(d)), gj.core.addClasses(d, b.style.track), e = a[0].querySelector('[role="handle"]'), null == e && (e = document.createElement("div"), e.setAttribute("role", "handle"), c.appendChild(e)), f = a[0].querySelector('[role="progress"]'), null == f && (f = document.createElement("div"), f.setAttribute("role", "progress"), c.appendChild(f)), gj.core.addClasses(f, b.style.progress), b.value || (b.value = b.min), gj.slider.methods.value(a, b, b.value), gj.documentManager.subscribeForEvent("mouseup", a.data("guid"), gj.slider.methods.createMouseUpHandler(a, e, b)), e.addEventListener("mousedown", gj.slider.methods.createMouseDownHandler(e, b)), gj.documentManager.subscribeForEvent("mousemove", a.data("guid"), gj.slider.methods.createMouseMoveHandler(a, d, e, f, b)), e.addEventListener("click", function (a) { + a.stopPropagation() + }), c.addEventListener("click", gj.slider.methods.createClickHandler(a, d, e, b)) + }, createClickHandler: function (a, b, c, d) { + return function (e) { + var f, g, h, i, j; + "true" !== c.getAttribute("drag") && (f = gj.core.position(a[0].parentElement), g = (new gj.widget).mouseX(e) - f.left, h = gj.core.width(c) / 2, i = gj.core.width(b) / (d.max - d.min), j = Math.round((g - h) / i) + d.min, gj.slider.methods.value(a, d, j)) + } + }, createMouseUpHandler: function (a, b, c) { + return function (c) { + "true" === b.getAttribute("drag") && (b.setAttribute("drag", "false"), gj.slider.events.change(a)) + } + }, createMouseDownHandler: function (a, b) { + return function (b) { + a.setAttribute("drag", "true") + } + }, createMouseMoveHandler: function (a, b, c, d, e) { + return function (d) { + var f, g, h, i, j, k, l; + "true" === c.getAttribute("drag") && (f = gj.core.position(a[0].parentElement), g = (new gj.widget).mouseX(d) - f.left, h = gj.core.width(b), i = gj.core.width(c) / 2, j = h / (e.max - e.min), k = (e.value - e.min) * j, g >= i && g <= h + i && (g > k + j / 2 || g < k - j / 2) && (l = Math.round((g - i) / j) + e.min, gj.slider.methods.value(a, e, l))) + } + }, value: function (a, b, c) { + var d, e, f, g; + return void 0 === c ? a[0].value : (a[0].setAttribute("value", c), b.value = c, e = a.parent().children('[role="track"]')[0], d = gj.core.width(e) / (b.max - b.min), f = a.parent().children('[role="handle"]')[0], f.style.left = (c - b.min) * d + "px", g = a.parent().children('[role="progress"]')[0], g.style.width = (c - b.min) * d + "px", gj.slider.events.slide(a, c), a) + }, destroy: function (a) { + var b = a.data(), c = a.parent(); + return b && (c.children('[role="track"]').remove(), c.children('[role="handle"]').remove(), c.children('[role="progress"]').remove(), a.unwrap(), a.off(), a.removeData(), a.removeAttr("data-type").removeAttr("data-guid").removeAttr("data-slider"), a.removeClass(), a.show()), a + } +},gj.slider.events = { + change: function (a) { + return a.triggerHandler("change") + }, slide: function (a, b) { + return a.triggerHandler("slide", [b]) + } +},gj.slider.widget = function (a, b) { + var c = this, d = gj.slider.methods; + return c.value = function (a) { + return d.value(this, this.data(), a) + }, c.destroy = function () { + return d.destroy(this) + }, $.extend(a, c), "true" !== a.attr("data-slider") && d.init.call(a, b), a +},gj.slider.widget.prototype = new gj.widget,gj.slider.widget.constructor = gj.slider.widget,function (a) { + a.fn.slider = function (a) { + var b; + if (this && this.length) { + if ("object" != typeof a && a) { + if (b = new gj.slider.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); + throw"Method " + a + " does not exist." + } + return new gj.slider.widget(this, a) + } + } +}(jQuery),gj.colorpicker = { + plugins: {}, + messages: {"en-us": {}} +},gj.colorpicker.config = { + base: { + uiLibrary: "materialdesign", + value: void 0, + icons: {rightIcon: 'event'}, + style: { + modal: "gj-modal", + wrapper: "gj-colorpicker gj-colorpicker-md gj-unselectable", + input: "gj-textbox-md", + picker: "gj-picker gj-picker-md colorpicker gj-unselectable", + footer: "", + button: "gj-button-md" + } + }, bootstrap: {style: {}}, bootstrap4: {style: {}} +},gj.colorpicker.methods = { + init: function (a) { + return gj.picker.widget.prototype.init.call(this, a, "colorpicker"), gj.colorpicker.methods.initialize(this), this + }, initialize: function (a) { + }, createPicker: function (a, b) { + var c = $('
                ').addClass(b.style.picker).attr("guid", a.attr("data-guid")); + return c.html("test"), c.hide(), $("body").append(c), c + }, open: function (a) { + return a.val() && a.value(a.val()), gj.picker.widget.prototype.open.call(a, "colorpicker") + } +},gj.colorpicker.events = { + change: function (a) { + return a.triggerHandler("change") + }, select: function (a) { + return a.triggerHandler("select") + }, open: function (a) { + return a.triggerHandler("open") + }, close: function (a) { + return a.triggerHandler("close") + } +},gj.colorpicker.widget = function (a, b) { + var c = this, d = gj.colorpicker.methods; + return c.value = function (a) { + return d.value(this, a) + }, c.destroy = function () { + return gj.picker.widget.prototype.destroy.call(this, "colorpicker") + }, c.open = function () { + return d.open(this) + }, c.close = function () { + return gj.picker.widget.prototype.close.call(this, "colorpicker") + }, $.extend(a, c), "true" !== a.attr("data-colorpicker") && d.init.call(a, b), a +},gj.colorpicker.widget.prototype = new gj.picker.widget,gj.colorpicker.widget.constructor = gj.colorpicker.widget,function (a) { + a.fn.colorpicker = function (a) { + var b; + if (this && this.length) { + if ("object" != typeof a && a) { + if (b = new gj.colorpicker.widget(this, null), b[a]) return b[a].apply(this, Array.prototype.slice.call(arguments, 1)); + throw"Method " + a + " does not exist." + } + return new gj.colorpicker.widget(this, a) + } + } +}(jQuery); \ No newline at end of file diff --git a/resources/views/desktop/Pages/EventsPage.blade.php b/resources/views/desktop/Pages/EventsPage.blade.php index 964d6271..1f73930e 100644 --- a/resources/views/desktop/Pages/EventsPage.blade.php +++ b/resources/views/desktop/Pages/EventsPage.blade.php @@ -41,6 +41,13 @@ @endsection @section('after_scripts') + - @endsection \ No newline at end of file
                ' + gj.datepicker.methods.getWeekNumber(r) + "
                '), c.showOtherMonths && (q = $("
                " + f + "
                "), p.append(q), c.selectOtherMonths && gj.datepicker.methods.isSelectable(c, r) ? (p.addClass("gj-cursor-pointer").attr("day", f).attr("month", n.month).attr("year", n.year), q.on("click", gj.datepicker.methods.dayClickHandler(a, b, c, r)), q.on("mousedown", function (a) { + a.stopPropagation() + })) : p.addClass("disabled")), $row.append(p), d++; + for (l > 1 && u.append($row), m = new Date, l = 1; l <= j; l++) r = new Date(h, g, l), 0 == d && ($row = $("
                ' + gj.datepicker.methods.getWeekNumber(r) + "
                '), h === m.getFullYear() && g === m.getMonth() && l === m.getDate() ? p.addClass("today") : p.addClass("current-month"), q = $("
                " + l + "
                "), gj.datepicker.methods.isSelectable(c, r) ? (p.addClass("gj-cursor-pointer"), q.on("click", gj.datepicker.methods.dayClickHandler(a, b, c, r)), q.on("mousedown", function (a) { + a.stopPropagation() + })) : p.addClass("disabled"), p.append(q), $row.append(p), 7 == ++d && (u.append($row), d = 0); + for (o = gj.datepicker.methods.getNextMonth(g, h), l = 1; 0 != d; l++) r = new Date(o.year, o.month, l), p = $('
                '), c.showOtherMonths && (q = $("
                " + l + "
                "), c.selectOtherMonths && gj.datepicker.methods.isSelectable(c, r) ? (p.addClass("gj-cursor-pointer").attr("day", l).attr("month", o.month).attr("year", o.year), q.on("click", gj.datepicker.methods.dayClickHandler(a, b, c, r)), q.on("mousedown", function (a) { + a.stopPropagation() + })) : p.addClass("disabled"), p.append(q)), $row.append(p), 7 == ++d && (u.append($row), d = 0); + t.append(u), s.append(t), b.attr("selectedDay") && (e = b.attr("selectedDay").split("-"), r = new Date(e[0], e[1], e[2], b.attr("hour") || 0, b.attr("minute") || 0), b.find('tbody td[day="' + e[2] + '"][month="' + e[1] + '"]').addClass("selected"), gj.datepicker.methods.updateHeader(b, c, r)) + }, renderYear: function (a, b, c) { + var d, e, f, g, h = b.find('>[role="body"]>table'), i = h.children("tbody"); + for (h.children("thead").hide(), d = parseInt(b.attr("year"), 10), b.attr("type", "year"), b.find('div[role="period"]').text(d), i.empty(), e = 0; e < 3; e++) { + for ($row = $("