"use strict";function ResponsiveDatatablesHelper(n,t,i){this.tableElement=typeof n=="string"?$(n):n;this.api=this.tableElement.dataTable().api();this.columnIndexes=[];this.columnsShownIndexes=[];this.columnsHiddenIndexes=[];this.currentBreakpoint="";this.lastBreakpoint="";this.lastColumnsHiddenIndexes=[];var r=window.location.pathname.split("/").pop(),u=this.api.settings().context[0];this.tableId=u.sTableId;this.saveState=u.oInit.bStateSave;this.cookieName="DataTablesResponsiveHelper_"+this.tableId+(r?"_"+r:"");this.lastStateExists=!1;this.expandColumn=undefined;this.origBreakpointsDefs=undefined;this.breakpoints={};this.options={hideEmptyColumnsInRowDetail:!1,clickOn:"icon",showDetail:null,hideDetail:null};this.expandIconTemplate='<span class="responsiveExpander"><\/span>';this.rowTemplate='<tr class="row-detail"><td><ul><!--column item--><\/ul><\/td><\/tr>';this.rowLiTemplate='<li><span class="columnTitle"><!--column title--><\/span>: <span class="columnValue"><!--column value--><\/span><\/li>';this.disabled=!0;this.skipNextWindowsWidthChange=!1;this.init(t,i)}ResponsiveDatatablesHelper.prototype.init=function(n,t){this.origBreakpointsDefs=n;this.initBreakpoints();this.disable(!1);$.extend(this.options,t)};ResponsiveDatatablesHelper.prototype.initBreakpoints=function(){var t,u,f,s,e,i,h,c,l,n,o,r;if(this.saveState&&this.getState(),!this.lastStateExists){t=[];for(r in this.origBreakpointsDefs)t.push({name:r,upperLimit:this.origBreakpointsDefs[r],columnsToHide:[]});for(t.sort(function(n,t){return n.upperLimit-t.upperLimit}),u=0,n=0;n<t.length;n++)t[n].lowerLimit=u,u=t[n].upperLimit;for(t.push({name:"always",lowerLimit:u,upperLimit:Infinity,columnsToHide:[]}),this.breakpoints={},n=0,f=t.length;n<f;n++)this.breakpoints[t[n].name]=t[n];for(s=this.api.columns().header(),e=[],n=0,f=s.length;n<f;n++)this.api.column(n).visible()&&(this.columnIndexes.push(n),e.push(s[n]));for(i=0;i<e.length;i++)if(h=$(e[i]),h.attr("data-class")==="expand"&&(this.expandColumn=this.columnIndexes[i]),c=h.attr("data-hide"),c!==undefined)for(l=c.split(/,\s*/),n=0;n<l.length;n++)if(o=l[n],o==="always")for(r in this.breakpoints)this.breakpoints[r].name!=="default"&&this.breakpoints[r].columnsToHide.push(this.columnIndexes[i]);else this.breakpoints[o]!==undefined&&this.breakpoints[o].columnsToHide.push(this.columnIndexes[i])}};ResponsiveDatatablesHelper.prototype.setWindowsResizeHandler=function(n){if(n===undefined&&(n=!0),n){var t=this;$(window).bind("resize",function(){t.respond()})}else $(window).unbind("resize")};ResponsiveDatatablesHelper.prototype.respond=function(){var f,n,i,e,o;if(!this.disabled){var r=this,u=$(window).width(),t=[];for(f in this.breakpoints)n=this.breakpoints[f],(!n.lowerLimit||u>n.lowerLimit)&&(!n.upperLimit||u<=n.upperLimit)&&(this.currentBreakpoint=n.name,t=n.columnsToHide);i=!1;this.skipNextWindowsWidthChange||(this.lastBreakpoint.length===0&&t.length?i=!0:this.lastBreakpoint!=this.currentBreakpoint?i=!0:this.columnsHiddenIndexes.length!==t.length?i=!0:(e=this.difference(this.columnsHiddenIndexes,t).length,o=this.difference(t,this.columnsHiddenIndexes).length,i=e+o>0));i&&(this.skipNextWindowsWidthChange=!0,this.columnsHiddenIndexes=t,this.columnsShownIndexes=this.difference(this.columnIndexes,this.columnsHiddenIndexes),this.showHideColumns(),this.lastBreakpoint=this.currentBreakpoint,this.setState(),this.skipNextWindowsWidthChange=!1);this.columnsHiddenIndexes.length?(this.tableElement.addClass("has-columns-hidden"),$("tr.detail-show",this.tableElement).each(function(n,t){var i=$(t);i.next(".row-detail").length===0&&ResponsiveDatatablesHelper.prototype.showRowDetail(r,i)})):(this.tableElement.removeClass("has-columns-hidden"),$("tr.row-detail",this.tableElement).each(function(){ResponsiveDatatablesHelper.prototype.hideRowDetail(r,$(this).prev())}))}};ResponsiveDatatablesHelper.prototype.showHideColumns=function(){for(var i,n=0,t=this.columnsShownIndexes.length;n<t;n++)this.api.column(this.columnsShownIndexes[n]).visible(!0);for(n=0,t=this.columnsHiddenIndexes.length;n<t;n++)this.api.column(this.columnsHiddenIndexes[n]).visible(!1);i=this;$("tr.row-detail",this.tableElement).each(function(){ResponsiveDatatablesHelper.prototype.hideRowDetail(i,$(this).prev())});this.tableElement.hasClass("has-columns-hidden")&&$("tr.detail-show",this.tableElement).each(function(n,t){ResponsiveDatatablesHelper.prototype.showRowDetail(i,$(t))})};ResponsiveDatatablesHelper.prototype.createExpandIcon=function(n){var r,i,u,t,f;if(!this.disabled)for(r=$("td",n),i=0,u=r.length;i<u;i++)if(t=r[i],f=this.api.cell(t).index().column,t=$(t),f===this.expandColumn){if($("span.responsiveExpander",t).length==0){t.prepend(this.expandIconTemplate);switch(this.options.clickOn){case"cell":t.on("click",{responsiveDatatablesHelperInstance:this},this.showRowDetailEventHandler);break;case"row":$(n).on("click",{responsiveDatatablesHelperInstance:this},this.showRowDetailEventHandler);break;default:t.on("click","span.responsiveExpander",{responsiveDatatablesHelperInstance:this},this.showRowDetailEventHandler)}}break}};ResponsiveDatatablesHelper.prototype.showRowDetailEventHandler=function(n){var i=n.data.responsiveDatatablesHelperInstance,r,t;i.disabled||(r=$(this),r.closest("table").hasClass("has-columns-hidden"))&&(t=r.closest("tr"),t.hasClass("detail-show")?ResponsiveDatatablesHelper.prototype.hideRowDetail(i,t):ResponsiveDatatablesHelper.prototype.showRowDetail(i,t),t.toggleClass("detail-show"),n.stopPropagation())};ResponsiveDatatablesHelper.prototype.showRowDetail=function(n,t){for(var i,a,s,v,r,p,h,u,w,c=n.api,y=c.columns().header(),f=$(n.rowTemplate),b=$("ul",f),l=0;l<n.columnsHiddenIndexes.length;l++){var e=n.columnsHiddenIndexes[l],k=c.row(t).index(),o=c.cell(k,e).node();if(!n.options.hideEmptyColumnsInRowDetail||o.innerHTML.trim().length){for(i=$(n.rowLiTemplate),a=$(y[e]).attr("data-name"),$(".columnTitle",i).html(a!==undefined?a:y[e].innerHTML),s=$(o).contents(),v=s.clone(),r=0,p=s.length;r<p;r++)h=s[r],h.nodeType===Node.ELEMENT_NODE&&h.tagName==="SELECT"&&(v[r].selectedIndex=h.selectedIndex);$(".columnValue",i).append(v).data("originalTdSource",o);i.attr("data-column",e);u=$(o).attr("class");u!=="undefined"&&u!==!1&&u!==""&&i.addClass(u);b.append(i)}}w=n.columnIndexes.length-n.columnsHiddenIndexes.length;f.find("> td").attr("colspan",w);t.after(f);n.options.showDetail&&n.options.showDetail(f)};ResponsiveDatatablesHelper.prototype.hideRowDetail=function(n,t){var i=t.next(".row-detail");n.options.hideDetail&&n.options.hideDetail(i);i.find("li").each(function(){var n=$(this).find("span.columnValue"),t=n.contents(),i=n.data("originalTdSource");$(i).empty().append(t)});i.remove()};ResponsiveDatatablesHelper.prototype.disable=function(n){this.disabled=n===undefined||n;this.disabled?(this.setWindowsResizeHandler(!1),$("tbody tr.row-detail",this.tableElement).remove(),$("tbody tr",this.tableElement).removeClass("detail-show"),$("tbody tr span.responsiveExpander",this.tableElement).remove(),this.columnsHiddenIndexes=[],this.columnsShownIndexes=this.columnIndexes,this.showHideColumns(),this.tableElement.removeClass("has-columns-hidden"),this.tableElement.off("click","span.responsiveExpander",this.showRowDetailEventHandler)):this.setWindowsResizeHandler()};ResponsiveDatatablesHelper.prototype.getState=function(){if(typeof Storage){var n=JSON.parse(localStorage.getItem(this.cookieName));n&&(this.columnIndexes=n.columnIndexes,this.breakpoints=n.breakpoints,this.expandColumn=n.expandColumn,this.lastBreakpoint=n.lastBreakpoint,this.lastStateExists=!0)}};ResponsiveDatatablesHelper.prototype.setState=function(){var n,t,i;typeof Storage&&(n=this.difference(this.lastColumnsHiddenIndexes,this.columnsHiddenIndexes).length,t=this.difference(this.columnsHiddenIndexes,this.lastColumnsHiddenIndexes).length,n+t>0&&(i={columnIndexes:this.columnIndexes,columnsHiddenIndexes:this.columnsHiddenIndexes,breakpoints:this.breakpoints,expandColumn:this.expandColumn,lastBreakpoint:this.lastBreakpoint},localStorage.setItem(this.cookieName,JSON.stringify(i)),this.lastColumnsHiddenIndexes=this.columnsHiddenIndexes.slice(0)))};ResponsiveDatatablesHelper.prototype.difference=function(n,t){for(var r=[],u={},i=t.length-1;i>=0;i--)u[t[i]]=!0;for(i=n.length-1;i>=0;i--)u[n[i]]!==!0&&r.push(n[i]);return r};