-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdirectives.min.js
3 lines (3 loc) · 63.2 KB
/
directives.min.js
1
2
3
angular.module("directives",[]),angular.module("directives").directive("knob",function(){return{restrict:"ACM",require:"ngModel",link:function(e,t,n,i){var a=$(t);a.knob(),a.knob(),a.trigger("configure",{change:function(t){i.$setViewValue(t),e.$apply()}}),n.$observe("ngModel",function(t){e.$watch(t,function(e){e&&a.val(i.$viewValue).trigger("change")})})}}}),angular.module("directives").directive("mmActionModal",["$compile",function(e){return{restrict:"E",transclude:!0,template:'<div class="modal fade " tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"><div class="modal-dialog modal-lg" style="max-height:100%" ><div class="modal-content" data-ng-class="{ \'panel-warning\':mode ==\'delete\'}"><div class="modal-header panel-heading"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h4 class="modal-title" id="myModalLabel">Mode is :{{mode}}</h4></div><div class="modal-body"><div class="createnode" ng-show="mode==\'create\'">Create</div><div class="editnode" ng-show="mode==\'edit\'">Edit</div><div class="detailnode" ng-show="mode==\'detail\'">Detail</div><div class="deletenode" ng-show="mode==\'delete\'">Delete</div></div><div class="modal-footer" > <button type="button" class="btn btn-default" data-dismiss="modal" ng-hide="mode==\'detail\'">Cancel</button> <button type="button" class="btn btn-primary" ng-click="modalCreateItem()" ng-show="mode==\'create\'">Create</button> <button type="button" class="btn btn-primary" ng-click="modalSaveItem()" ng-show="mode==\'edit\'">Save changes</button> <button type="button" class="btn btn-danger" ng-click="modalDeleteItem()" ng-show="mode==\'delete\'">Delete</button> </div></div>',link:function(t,n,i,a,l){var r=t.$new();r.selecteditem={};var s=n.find("div.createnode"),o=n.find("div.editnode"),d=n.find("div.detailnode"),c=n.find("div.deletenode");l(r,function(e){angular.forEach(e,function(e){if(angular.element(e).hasClass("create-template")){var t=e.innerHTML;s.append(t)}if(angular.element(e).hasClass("edit-template")){var n=e.innerHTML;o.append(n)}if(angular.element(e).hasClass("detail-template")){var i=e.innerHTML;d.append(i)}if(angular.element(e).hasClass("delete-template")){var a=e.innerHTML;c.append(a)}})});var u="",m="",p="",f="";i.$observe("saveClicked",function(e){u=e}),i.$observe("detailClicked",function(e){m=e}),i.$observe("createClicked",function(e){p=e}),i.$observe("deleteClicked",function(e){f=e}),i.$observe("selecteditem",function(e){t.$watch(e,function(e){r.selecteditem=e,r.item=r.selecteditem})}),i.$observe("calldetail",function(e){t.$watch(e,function(i){1==i&&(t[e]=!1,r.selecteditem&&(r.item=r.selecteditem,r.mode="detail",$(".modal",n).modal("show"),t[m]&&t[m](r.item)))})}),i.$observe("calledit",function(e){t.$watch(e,function(i){1==i&&(t[e]=!1,r.selecteditem&&(r.originalitem=r.selecteditem,r.item=angular.copy(r.selecteditem),r.mode="edit",$(".modal",n).modal("show")))})}),r.modalSaveItem=function(){angular.copy(r.item,r.originalitem),t[u]&&t[u](r.item),$(".modal",n).modal("hide")},i.$observe("callcreate",function(e){t.$watch(e,function(i){1==i&&(t[e]=!1,r.selecteditem&&(r.originalitem=r.selecteditem,r.item=angular.copy(r.selecteditem),r.mode="create",$(".modal",n).modal("show")))})}),r.modalCreateItem=function(){angular.copy(r.item,r.originalitem),t[p]&&t[p](r.item),$(".modal",n).modal("hide")},i.$observe("calldelete",function(e){t.$watch(e,function(i){1==i&&(t[e]=!1,r.selecteditem&&(r.item=r.selecteditem,r.mode="delete",r["delete"]=!0,$(".modal",n).modal("show")))})}),r.modalDeleteItem=function(){t[f]&&t[f](r.item),$(".modal",n).modal("hide")},e(n.contents())(r)}}}]),function(){angular.module("directives").directive("mmChart",["$http","$compile",function(){return{template:"<div class='chart'></div>",replace:!0,scope:{itemssource:"=",url:"@",type:"@",title:"@",seriesDefaults:"=",series:"=",config:"=",height:"=",width:"="},link:function(e,t){e.$watch("itemssource",function(t){if(t){var n=e.itemssource,i={data:n};a(i)}});var n=!0;$(t).mouseover(function(){if(n){var e=$(t).data("kendoChart");e.redraw()}n=!1}),e.$watch("url",function(t){if(t){var n={transport:{read:{url:e.url,dataType:"json"}}};a(n)}});var i=null,a=function(n){var a=e.title,l=e.type,r={type:l,labels:{visible:!0,format:"{0}",background:"transparent"}},s=e.series;s||(s=[{field:"value"}]);var o=e.valueAxis,d=e.categoryAxis;d||(d={field:"text"}),e.config&&e.config.seriesDefaults&&(r=e.config.seriesDefaults),e.config&&e.config.title&&(a=e.config.title),e.config&&e.config.series&&(s=e.config.series),e.config&&e.config.valueAxis&&(o=e.config.valueAxis),e.config&&e.config.categoryAxis&&(d=e.config.categoryAxis),e.config&&e.config.legend,elem=$(t),e.height&&(elem=elem.height(e.height)),e.width&&(elem=elem.width(e.width)),i=elem.kendoChart({dataSource:n,title:{text:a},legend:e.config.legend,seriesColors:e.config.seriesColors,seriesDefaults:r,series:s,valueAxis:o,chartArea:e.config.chartArea,categoryAxis:d,tooltip:e.config.tooltip})}}}}])}(),function(){angular.module("directives").directive("mmDatepicker",function(){return{restrict:"C",require:"ngModel",link:function(e,t,n,i){$(function(){$(t).datepicker({dateFormat:"yy/mm/dd",format:"dd/mm/yyyy",todayBtn:"linked",onSelect:function(t){i.$setViewValue(t),e.$apply()}}),n.$observe("ngModel",function(n){e.$watch(n,function(e,n){if(e)if(e.getMonth)n?(olddate=new Date(n),olddate.getMonth&&e.toUTCString()!=olddate.toUTCString()&&$(t).datepicker("setDate",i.$viewValue)):$(t).datepicker("setDate",i.$viewValue);else{var a=new Date(i.$viewValue);a.getMonth&&i.$setViewValue(a)}})})})}}})}(),function(){"use strict";angular.module("directives").directive("fileDropzone",function(){return{restrict:"A",scope:{files:"=",fileAdded:"&"},link:function(e,t,n){var i,a,l,r;return l=function(e){return null!=e&&e.preventDefault(),e.originalEvent.dataTransfer.dropEffect="copy",!1},r=n.fileDropzone,i=function(e){var t;return void 0===(t=n.maxFileSize)||""===t||e/1024/1024<n.maxFileSize?!0:(alert("File must be smaller than "+n.maxFileSize+" MB"),!1)},a=function(e){return void 0===r||""===r||r.indexOf(e)>-1?!0:(alert("Invalid file type. File must be one of following types "+r),!1)},$(t).attr("draggable","true"),$(t).bind("dragover",l),$(t).bind("dragenter",l),t.bind("drop",function(t){null!=t&&t.preventDefault();for(var n=0;n<t.originalEvent.dataTransfer.files.length;n++)!function(t){var n,l,r,s,o;r=new FileReader,r.onload=function(t){return i(s)&&a(o)?e.$apply(function(){var i={file:t.target.result,fileName:n.name,type:n.type,size:n.size};if(e.fileAdded()){var a=e.fileAdded();a(i)}e.files&&e.files.push&&e.files.push(i)}):void 0},n=t,l=n.name,o=n.type,s=n.size,r.readAsDataURL(n)}(t.originalEvent.dataTransfer.files[n]);return!1})}}})}.call(this),function(){angular.module("directives").directive("mmFileRead",function(){return{restrict:"C",require:"ngModel",link:function(e,t,n,i){t.bind("change",function(t){var n=new FileReader;n.onload=function(t){i.$setViewValue(t.target.result),e.$apply()},n.readAsDataURL(t.target.files[0])})}}})}(),function(){angular.module("directives").directive("mmFileUpload",function(){return{restrict:"C",scope:{progress:"=",uploadfiles:"=",iscompleted:"=",completed:"&"},link:function(e,t){function n(t){e.$apply(function(){e.progress=t.lengthComputable?Math.round(100*t.loaded/t.total):"unable to compute"})}function i(t){if(e.$apply(function(){e.iscompleted=!0}),e.completed()){var n=e.completed();n(t)}}function a(){alert("There was an error attempting to upload the file.")}function l(){e.$apply(function(){e.progressVisible=!1}),alert("The upload has been canceled by the user or the browser dropped the connection.")}t.append('<input type="button" value="Upload"/>'),t.bind("change",function(n){e.$apply(function(e){console.log("files:",t.files),e.files=[];for(var i=0;i<n.target.files.length;i++)e.files.push(n.target.files[i]);e.progressVisible=!1,e.uploadFile()})}),e.uploadFile=function(){var t=new FormData;for(var r in e.files)t.append("uploadedFile",e.files[r]);var s=new XMLHttpRequest;s.upload.addEventListener("progress",n,!1),s.addEventListener("load",i,!1),s.addEventListener("error",a,!1),s.addEventListener("abort",l,!1),s.open("POST","/Api/Upload"),e.progressVisible=!0,s.send(t)}}}}),angular.module("directives").directive("mmFileUploader",function(){return{template:'<div class="panel"><div class="panel-heading"><span class="panel-title">Uploads</span><div class="panel-heading-controls" style="width: 30%"><div ng-show="processing" class="progress progress-striped active" style="width: 100%"><div class="progress-bar progress-bar-danger" ng-style="percentageStyle"></div></div></div></div><div ng-show="errorMessage" class="alert alert-page alert-danger alert-dark"><button type="button" class="close" id="hideerroralert">×</button><strong>Error</strong> {{errorMessage}}</div><div ng-show="iscompletedinternal" class="alert alert-page alert-success alert-dark"><button type="button" class="close" id="hidecompletealert">×</button><strong>Success</strong> Files are successfully uploaded.</div><div class="panel-body"><div class="row"><input type="file" ng-model-instant id="files" name="files" class="form-control" progress="progress" />{{progress}}<table class="table"><tr ><th>Name</th><th>size</th><th>Type</th></tr></thead><tbody><tr data-ng-repeat="file in files"><td>{{file.name}}</td><td>{{file.size}}</td><td>{{file.type}}</td></tr></tbody></table><input type="button" id="btnupload" value="Upload" class="btn btn-primary" /></div></div></div>',restrict:"C",scope:{progress:"=",uploadfiles:"=",iscompleted:"=",filesuploaded:"&",uploadedfiles:"=",multiple:"@",uploadlocation:"@"},link:function(e,t){function n(t){e.$apply(function(){t.lengthComputable?(e.percentageStyle={width:Math.round(100*t.loaded/t.total)+"%"},e.progress&&(e.progress=Math.round(100*t.loaded/t.total))):e.progress="unable to compute"})}function i(t){if(e.processing=!1,404==t.target.status)e.$apply(function(){e.errorMessage="File is too big or format is not OK to upload (like exe files)"});else if(500==t.target.status)e.$apply(function(){e.errorMessage="Internal Server Error "});else if(200==t.target.status){var n,i=t.target.response;try{JSON.parse(i)&&(n=JSON.parse(i),"true"!=e.multiple&&n[0]&&(n=n[0]),n=n)}catch(a){n=t}e.$apply(function(){e.iscompleted&&(e.iscompleted=!0),e.uploadedfiles&&(e.uploadedfiles=n),e.iscompletedinternal=!0}),e.$apply(function(){if(e.filesuploaded()){var t=e.filesuploaded();t(n)}})}}function a(){e.processing=!1,e.errorMessage="There was an error attempting to upload the file."}function l(){e.processing=!1,e.$apply(function(){e.progressVisible=!1,e.errorMessage="The upload has been canceled by the user or the browser dropped the connection."})}e.processing=!1;var r="/Api/Upload";e.uploadlocation&&(r=e.uploadlocation),e.hidecompletealert=function(){e.$apply(function(){e.errorMessage=null})},e.hidecompletealert=function(){e.$apply(function(){})},e.iscompletedinternal=!1,e.percentageStyle={width:"0%"};var s=t.find("#files"),o=t.find("#btnupload"),d=t.find("#hidecompletealert"),c=t.find("#hideerroralert");d.bind("click",function(){e.$apply(function(e){e.iscompletedinternal=null})}),c.bind("click",function(){e.$apply(function(e){e.errorMessage=null})}),"true"==e.multiple&&s.attr("multiple","multiple"),s.bind("change",function(n){e.$apply(function(e){console.log("files:",t.files),e.files=[];for(var i=0;i<n.target.files.length;i++)e.files.push(n.target.files[i]);e.progressVisible=!1})}),o.bind("click",function(){e.processing=!0;var t=new FormData;for(var s in e.files)t.append("uploadedFile",e.files[s]);var o=new XMLHttpRequest;o.upload.addEventListener("progress",n,!1),o.addEventListener("load",i,!1),o.addEventListener("error",a,!1),o.addEventListener("abort",l,!1),o.open("POST",r),e.progressVisible=!0,o.send(t)})}}})}(),function(){angular.module("directives").directive("mmFullcalendar",["$http","$compile",function(){return{scope:{itemssource:"=",selectedday:"=",daySelected:"&",selectedevent:"=",eventSelected:"&",viewChanged:"&",fetchItems:"&",rerender:"="},link:function(e,t,n){e.$watch("rerender",function(){e.rerender&&1==e.rerender&&($(t).fullCalendar("render"),e.refreshrender=!1)}),e.$watch("itemssource",function(t){var i="start",a="end";n.startParam&&(i=n.startParam),n.endParam&&(a=n.endParam),t&&t.length&&t.length>0?d(e.itemssource,i,a):d(null,i,a)});var i={},a=!1,l=e.daySelected(),r=e.eventSelected(),s=e.viewChanged(),o=e.fetchItems(),d=function(d,c,u){if(a){if(events=function(e,t,n){if(o){var i=o(e,t);i&&n(i)}else n(d)},d&&d.length&&d.length>0)try{$(t).fullCalendar("refetchEvents")}catch(m){console.log(m)}}else a=!0,$(t).fullCalendar({disableDragging:!0,header:{left:"prev,next today",center:"title",right:"month,agendaWeek,agendaDay"},editable:!0,startParam:c,endParam:u,events:function(t,n,i){if(o){var a=o(t,n);a&&i(a)}else i(e.itemssource)},eventClick:function(t){void 0!=e.selectedevent?e.$apply(function(){e.selectedevent=t}):n.selectedevent&&(e.$apply(function(){e.selectedevent={},e.selectedevent=t}),e.$apply(function(){e.selectedevent={},e.selectedevent=t})),r&&r(t)},dayClick:function(t){void 0!=e.selectedday?e.$apply(function(){e.selectedday=t}):n.selectedday&&(e.selectedday={},e.$apply(function(){e.selectedday=t})),l&&l(t)},viewRender:function(e){i.visStart&&i.visEnd&&i.visStart.toString()==e.visStart.toString()&&i.visEnd.toString()==e.visEnd.toString()||(i.visStart=e.visStart,i.visEnd=e.visEnd,s&&s(e))}})}}}}])}(),angular.module("directives").value("htmlconfig",{}).directive("mmHtml",["$compile",function(){return{restrict:"ACM",link:function(e,t,n){var i=$(t);n.$observe("mmHtml",function(t){e.$watch(t,function(e){e&&(i.empty(),i.append(e))})})}}}]),function(){angular.module("directives").directive("mmHttpGet",["$http",function(e){return{restrict:"C",require:"ngModel",link:function(t,n,i,a){i.address&&e.get(i.address,{cache:!0}).then(function(e){a.$setViewValue(e.data)})}}}])}(),angular.module("directives").directive("maxlength",[function(){return{link:function(e,t,n){var i=angular.element('<div class="input-group"><span class="input-group-addon"></span></div>');t.after(i),i.prepend(t);var a=i.find("span.input-group-addon");e.$on("$destroy",function(){i.after(t),i.remove()});var l=$(t),r=l.is("textarea"),s=null,o=null;n.$observe("mmCounter",function(t){o=t,e.$watch(t,function(){})}),n.$observe("maxlength",function(t){e.$watch(t,function(t){t&&(s=t,u(t),e&&o&&(e[o]=s),a&&a.text&&a.text(s))})});var d=!0;n.$observe("ngModel",function(t){e.$watch(t,function(t){if(t){var n,i;i=r?l[0].value.replace(/\r?\n/g,"\n"):l.val(),n=i.length,n>s&&(l.val(i.substr(0,s)),n=s),console.log(s-n),e&&o&&null!=e[o]&&(e[o]=s-n),a&&a.text&&a.text(s-n),d&&!r&&(l.off("keyup focus",$.proxy(c,this)),d=!1)}})});var c=function(){var t,n;n=r?l[0].value.replace(/\r?\n/g,"\n"):l.val(),t=n.length,t>s&&(l.val(n.substr(0,s)),t=s),console.log(s-t),e&&o&&null!=e[o]&&e.$apply(function(){e[o]=s-t}),a&&a.text&&a.text(s-t)},u=function(e,t){null==t&&(t={}),l.on("keyup focus",$.proxy(c,this))}}}}]),angular.module("directives").directive("mmList",["$http","$compile","$parse",function(e,t,n){return{restrict:"EA",transclude:!0,template:"<div></div>",link:function(e,i,a,l,r){function s(e){if(13==e.keyCode&&($(".services").is(":visible")?selectOption():$(".services").show(),menuOpen=!menuOpen),38==e.keyCode){var t=$(".selected");$(".services li").removeClass("selected"),0==t.prev().length?t.siblings().last().addClass("selected"):t.prev().addClass("selected")}if(40==e.keyCode){var t=$(".active",i);$(".services li").removeClass("selected"),0==t.next().length?t.siblings().first().addClass("selected"):t.next().addClass("selected")}}var o=e.$new(),d=a.mmList,c=d.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!c)throw d;{var u=c[1];c[2],c[3],c[4]}if(c=u.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/),!c)throw u;var m=c[3]||c[1],p=null;r(o,function(e){angular.forEach(e,function(e){angular.element(e).hasClass("data-template")&&(p=e.outerHTML)})});var f=n(a.selecteditem),g=f.assign,v=g,h=function(){a.mmList&&(ngrepeatattr=a.mmList);var e=$(p);if(e.attr("ng-repeat",ngrepeatattr),e.attr("ng-click","itemclicked("+m+")"),e.attr("data-ng-class",'{"active":mmlistselecteditem =='+m+"}"),e.addClass("listitem"),e&&e[0]&&e[0].outerHTML){var n=e[0].outerHTML;i.append(n),t(i.contents())(o)}};h(),o.mmlistselecteditem={};var b=null,w=null;o.itemclicked=function(t){var n=o.mmlistselecteditem;o.mmlistselecteditem=t,v&&v(e,t),w&&w(t,n)},a.$observe("selecteditem",function(t){b=t,e.$watch(t,function(t){t?t!==o.mmlistselecteditem&&(o.mmlistselecteditem=t):v&&v(e,item)})}),a.$observe("itemselected",function(t){t&&e[t]&&angular.isFunction(e[t])&&(w=e[t])}),i.bind("keydown",s)},controller:["$scope","$element","$attrs",function(){}]}}]),angular.module("directives").directive("mmmTable",["$http","$compile",function(e,t){return{restrict:"A",transclude:!0,template:"<table class='table'><thead><tr class='headerholder'></tr></thead><tbody class='rowholder'></tbody></table> <div class='modalcontainer'></div>",link:function(e,n,a,l,r){function s(e){for(var t="",n=0;n<e.length;n++)title=e[n].replace("_"," ").split(/(?=[A-Z])/).join(" "),t+="<th><a class='pointer' ng-click='mmtableSortit(\""+e[n]+"\")' > "+title+" <span ng-show='mmtableSort == \""+e[n]+"\"' > <span ng-show='descending'> <i class='fa fa-caret-square-o-down'></i> </span> <span ng-hide='descending'> <i class='fa fa-caret-square-o-up'></i> </span> </span> </a> </th>";(T||L||P)&&(t+="<th>Actions</th>"),u.html(t)}function o(e,i){if(i||(i=window.location.hash),a.mmmTable&&(ngrepeatattr=a.mmmTable),""==S){rowtext="";for(var l=0;l<e.length;l++)rowtext+=0==l&&H?"<td><a ng-href="+i+"/{{"+w+"."+H+'}}> <span data-ng-bind="'+w+"."+e[l]+'"></span></a> </td>':'<td><span data-ng-bind="'+w+"."+e[l]+'"></span></td>';var r=$("<tr>"+rowtext+"</tr>")}else var r=$(S);if(T||L||P){var s="";s+="<td><div class='btn-group'><button type='button' class='btn btn-primary dropdown-toggle' data-toggle='dropdown'>Actions <span class='caret'></span></button><ul class='dropdown-menu' role='menu'>",L&&(s+="<li><a ng-click='mmtablebtnDetailItem("+w+")'>Detail</a></li>"),T&&(s+="<li><a ng-click='mmtablebtnSaveItem("+w+")'>Edit</a></li>"),P&&(s+="<li class='divider'></li> <li><a ng-click='mmtablebtnDeleteItem("+w+")'>Delete</a></li></ul></div></td>"),r.append(s),d()}if(r.attr("data-ng-repeat",ngrepeatattr),r.attr("ng-click","itemclicked("+w+")"),r.attr("data-ng-class",'{"active":mmlistselecteditem =='+w+"}"),r&&r[0]&&r[0].outerHTML){var o=r[0].outerHTML;c.html(o),t(n.contents())(p)}}function d(){var n=null,i=null,l=null;if(a.$observe("detailClicked",function(t){t&&e[t]&&angular.isFunction(e[t])&&(n=e[t])}),a.$observe("saveClicked",function(t){t&&e[t]&&angular.isFunction(e[t])&&(i=e[t])}),a.$observe("deleteClicked",function(t){t&&e[t]&&angular.isFunction(e[t])&&(l=e[t])}),T||L||P){var r="<mm-action-modal selecteditem='mmtableselecteditem' calldetail='mmtablecalldetail' detail-clicked='mmtabledetailClicked'calledit='mmtablecalledit' save-clicked='mmtableSaveClicked' calldelete='mmtablecalldelete' delete-clicked='mmtabledeleteClicked'>"+T+L+P+"</mm-action-modal>";m.html(r),t(m)(p)}p.mmtablebtnDetailItem=function(e){p.mmtableselecteditem=e,p.mmtablecalldetail=!0,n&&n(p.mmtableselecteditem)},p.mmtablebtnSaveItem=function(e){p.originalitem=e,p.mmtableselecteditem=angular.copy(e),p.mmtablecalledit=!0},p.mmtableSaveClicked=function(e){angular.copy(e,p.originalitem),i&&i(p.originalitem)},p.mmtablebtnDeleteItem=function(e){p.mmtableselecteditem=e,p.mmtablecalldelete=!0},p.mmtabledeleteClicked=function(e){l&&l(e)}}var c=n.find("tbody.rowholder"),u=n.find("tr.headerholder"),m=n.find("div.modalcontainer"),p=(n.find("table.table"),e.$new()),f="",g=a.mmmTable,v=g.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!v)throw g;{var h=v[1],b=v[2];v[3],v[4]}if(v=h.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/),!v)throw h;var w=v[3]||v[1],y="mmtableSort",k=!1,x=b.split("|");for(f=x[0].trim(),i=0;i<x.length;i++){var M=x[i].split(":");if(M&&M.length&&M.length>1){var C=M[0].trim();"orderBy"==C&&(k=!0,y=M[1].trim())}}k||(a.mmmTable=a.mmmTable+" | orderBy:mmtableSort:descending");var S="",T=null,L=null,P=null,I=null;r(p,function(e){angular.forEach(e,function(t){if(angular.element(t).hasClass("edit-template")&&(T="<div class='edit-template'>"+t.innerHTML+"</div>"),angular.element(t).hasClass("detail-template")&&(L="<div class='detail-template'>"+t.innerHTML+"</div>"),angular.element(t).hasClass("delete-template")&&(P="<div class='delete-template'>"+t.innerHTML+"</div>"),angular.element(t).hasClass("data-template")){{$("td",t).each(function(e,t){S+=t.outerHTML})}S="<tr>"+S+"</tr>"}{var n=angular.element(e,"thead");$("th",n).each(function(e,t){I+="<th>"+t.innerHTML+"</th>"})}})});var H=null;p.mmlistselecteditem={};var E=null,D=null;if(p.itemclicked=function(t){p.mmlistselecteditem=t,E&&(e[E]=t),D&&D(t)},a.$observe("selecteditem",function(t){E=t,e.$watch(t,function(t){t?t!==p.mmlistselecteditem&&(p.mmlistselecteditem=t):E&&(e[E]={})})}),a.$observe("itemselected",function(t){t&&e[t]&&angular.isFunction(e[t])&&(D=e[t])}),a.$observe("idfield",function(e){H=e}),a.columns){var V=!0;a.$observe("columns",function(t){e.$watch(t,function(e,t){e&&(e.toString()!=t.toString()||V)&&(V=!1,s(e,y),o(e))})})}else e.$watch(itemssourcePropertyName,function(e){if(e&&!t&&e&&e[0]){var t=[];for(prop in e[0])t.push(prop);s(t,y),o(t)}});p.mmtableSort="",p.descending=!1,p.mmtablecursor="auto",p.mmtableSortit=function(t){p.mmtableSort==t?p.descending=!p.descending:(p.descending=!1,y&&(e[y]=t,p.mmtableSort=t))},p.mmtableSelected=function(t){p.mmtablecursor="hand",p.mmtableIntSelectedItem!=t&&(p.mmtableIntSelectedItem=t),D&&D(t),E&&(e[E]=t)}},controller:["$scope","$element","$attrs",function(){}]}}]),function(){angular.module("directives").directive("mmMap",function(){return{restrict:"A",scope:{itemssource:"=",latitudefield:"@",longitudefield:"@",center:"=",isgeojson:"@",itemselected:"&",selecteditem:"=",rerender:"="},link:function(e,t,n){if(window.google){var i=(new window.google.maps.Geocoder,{zoom:2,center:new window.google.maps.LatLng(12.24,24.54),mapTypeId:"terrain"}),a=new window.google.maps.Map($(t)[0],i);try{a.clearOverlays()}catch(l){}var r=!0;"false"==n.draggable&&(r=!1),e.$watch("rerender",function(t){t&&1==t&&(window.google.maps.event.trigger(a,"resize"),a.setZoom(a.getZoom()),e.rerender=!1)});var s=function(e,t,n){var i=null;n.latitudefield?i=e[n.latitudefield]:e.Latitude;var a=null;n.longitudefield?a=e[n.longitudefield]:e.LatitudeLongitude;var l=new window.google.maps.LatLng(i,a),s=new window.google.maps.Marker({map:t,draggable:r,position:l,title:name});e._mapMarker=s,n.markersArray||(n.markersArray=[]),n.markersArray[e.ID]=e,window.google.maps.event.addListener(s,"position_changed",function(){n.latitudefield?e[n.latitudefield]=s.position.lat():e.Latitude=s.position.lat(),n.longitudefield?e[n.longitudefield]=s.position.lng():e.LatitudeLongitude=s.position.lng()}),(n.itemselected||n.selecteditem)&&window.google.maps.event.addListener(s,"click",function(){if(n.selecteditem&&(n.selecteditem=e),n.$apply(function(){n.selecteditem=e}),n.itemselected){var t=n.itemselected();t&&t(e)}})};e.$watch("itemssource",function(){if(e.itemssource){try{a.clearOverlays()}catch(t){}$.each(e.itemssource,function(t,n){s(n,a,e)})}})}},controller:function(){}}}),angular.module("directives").directive("mmMapCollection",function(){return{restrict:"E",scope:{},link:function(){},controller:function(){}}}),window.google&&window.google.maps&&(window.google.maps.Map.prototype.clearOverlays=function(){if(markersArray)for(var e in markersArray)markersArray[e]._mapMarker.setMap(null),markersArray[e]._mapMarker=null;markersArray=[]})}(),angular.module("directives").constant("mmMaskConfig",{}).directive("mmMask",["$http","$compile","mmMaskConfig",function(){return{restrict:"ACM",require:"ngModel",transclude:!0,link:function(e,t,n){var i=n.mmMask;$(t).mask(i)}}}]),angular.module("directives").value("mmRatingConfig",{stars_count:5,rating:0,class_active:"active",lower_limit:.35,onRatingChange:function(){}}).directive("mmRating",["mmRatingConfig","$timeout","$compile",function(e,t,n){return{restrict:"ACM",require:"ngModel",template:'<ul class="widget-rating"></ul>',link:function(t,a,l,r){var s,o,d=$(a),c=!1,u=a.find("ul.widget-rating");if(null==m)var m={};var m=angular.extend({},e,m);for(i=s=0,o=m.stars_count;o>=0?o>s:s>o;i=o>=0?++s:--s)u.append(n('<li><a class="pointer" title="" class="widget-rating-item"></a></li>')(t));var p=function(e){return m.rating=e,e=e-Math.floor(e)>m.lower_limit?Math.ceil(e):Math.floor(e),r.$setViewValue(e),u.find("li").removeClass(m.class_active).slice(0,e).addClass(m.class_active)};d.find("a").on("mouseenter",function(){return c?void 0:(d.find("li").removeClass(m.class_active),$(this).parents("li").addClass(m.class_active).prevAll("li").addClass(m.class_active))}).on("mouseleave",function(){return c?void 0:p(m.rating)}).on("click",function(){if(!c){var e=$(this).parents("li").prevAll("li").length+1;return m.onRatingChange.call(this,e),r.$setViewValue(e),t.$apply(),!1}}),p(m.rating),l.$observe("ngModel",function(e){t.$watch(e,function(e){e&&p(e)})}),l.$observe("disabled",function(e){t.$watch(e,function(e){e&&(c=!0,u.find("li a").removeClass("pointer").addClass("disabled"))})})}}}]),angular.module("directives").directive("mmScroll",["$http","$compile",function(){return{restrict:"CA",link:function(e,t,n){var i=300;n.$observe("mmScroll",function(e){e&&(i=e,$(t).css("height",function(){return i}))}),n.$observe("height",function(e){e&&(i=e,$(t).css("height",function(){return i}))}),$(t).css("height",function(){return i}),$(t).css("overflow-y","scroll"),$(t).css(" -webkit-overflow-scrolling","touch")}}}]),angular.module("directives").value("mmSelect2Config",{}).directive("mmSelect2",["mmSelect2Config","$timeout",function(e,t){var n={};return e&&angular.extend(n,e),{require:"ngModel",priority:1,compile:function(e,i){var a,l,r,s=e.is("select"),o=angular.isDefined(i.multiple);return e.is("select")&&(l=e.find("optgroup[ng-repeat], optgroup[data-ng-repeat], option[ng-repeat], option[data-ng-repeat]"),l.length&&(r=l.attr("ng-repeat")||l.attr("data-ng-repeat"),a=jQuery.trim(r.split("|")[0]).split(" ").pop())),function(e,l,r,d){var c=angular.extend({},n,e.$eval(r.mmSelect2)),u=function(e){var t;return c.simple_tags?(t=[],angular.forEach(e,function(e){t.push(e.id)})):t=e,t},m=function(e){var t=[];return e?(c.simple_tags?(t=[],angular.forEach(e,function(e){t.push({id:e,text:e})})):t=e,t):t};if(s?(delete c.multiple,delete c.initSelection):o&&(c.multiple=!0),d&&(e.$watch(i.ngModel,function(e,t){e&&e!==t&&d.$render()},!0),d.$render=function(){if(s)l.select2("val",d.$viewValue);else if(c.multiple){d.$isEmpty=function(e){return!e||0===e.length};var e=d.$viewValue;angular.isString(e)&&(e=e.split(",")),l.select2("data",m(e)),c.sortable&&l.select2("container").find("ul.select2-choices").sortable({containment:"parent",start:function(){l.select2("onSortStart")},update:function(){l.select2("onSortEnd"),l.trigger("change")}})}else angular.isObject(d.$viewValue)?l.select2("data",d.$viewValue):d.$viewValue?l.select2("val",d.$viewValue):l.select2("data",null)},a&&e.$watch(a,function(e,n){angular.equals(e,n)||t(function(){l.select2("val",d.$viewValue),d.$render(),e&&!n&&d.$setPristine&&d.$setPristine(!0)})}),d.$parsers.push(function(e){var t=l.prev();return t.toggleClass("ng-invalid",!d.$valid).toggleClass("ng-valid",d.$valid).toggleClass("ng-invalid-required",!d.$valid).toggleClass("ng-valid-required",d.$valid).toggleClass("ng-dirty",d.$dirty).toggleClass("ng-pristine",d.$pristine),e}),!s&&(l.bind("change",function(t){t.stopImmediatePropagation(),e.$$phase||e.$root.$$phase||e.$apply(function(){d.$setViewValue(u(l.select2("data")))})}),c.initSelection))){var p=c.initSelection;c.initSelection=function(e,t){p(e,function(e){var n=d.$pristine;d.$setViewValue(u(e)),t(e),n&&d.$setPristine(),l.prev().toggleClass("ng-pristine",d.$pristine)})}}l.bind("$destroy",function(){l.select2("destroy")}),r.$observe("disabled",function(e){l.select2("enable",!e)}),r.$observe("readonly",function(e){l.select2("readonly",!!e)}),r.ngMultiple&&e.$watch(r.ngMultiple,function(e){r.$set("multiple",!!e),l.select2(c)}),t(function(){if(l.select2(c),l.select2("data",d.$modelValue),d.$render(),!c.initSelection&&!s){var e=d.$pristine;d.$pristine=!1,d.$setViewValue(u(l.select2("data"))),e&&d.$setPristine(),l.prev().toggleClass("ng-pristine",d.$pristine)}})}}}}]),function(){angular.module("directives").directive("mmSelectionModal",["$http","$compile",function(e,t){return{restrict:"E",transclude:!0,template:"<div class='modalcontainer'><input class='btn btn-default' type='button' value='...' ng-click='buttonclicked()'/><div class='modal fade' id='myModal' tabindex='-1' role='dialog' aria-labelledby='myModalLabel' aria-hidden='true'><div class='modal-dialog modal-lg' style='max-height:100%' ><div class='modal-content'><div class='modal-header'><button type='button' class='close' data-dismiss='modal' aria-hidden='true'>×</button><h4 class='modal-title' id='myModalLabel'>{{title}}</h4></div><div class='modal-body'> <div class='filterhtml'></div> <div class='tablehtml'></div></div></div>",require:"ngModel",scope:{itemssource:"=",itemTemplate:"=",columns:"=",valuefield:"@",textfield:"@",selecteditem:"=ngModel",message:"=",title:"@"},link:function(e,n,i,a,l){var r=(e.itemssource,e.message,$(".filter-template",n).html());e.filter||(e.filter={}),e.$watch("filter.Name",function(e){}),l(e,function(e){angular.forEach(e,function(e){angular.element(e).hasClass("filter-template")&&(r="<div >"+e.innerHTML+"</div>")})});var s=function(){e.sort="",e.descending=!1,e.fieldnames=[],e.sortit=function(t){e.sort==t?e.descending=!e.descending:(e.descending=!1,e.sort=t)},e.linkclicked=function(t){if(null!=t[e.valuefield]&&(e.selecteditem=t[e.valuefield]),null!=t[e.textfield]){t[e.textfield]}$(".modal",n).modal("hide")};for(var t="",i=(window.location.hash,""),a=0;a<e.columns.length;a++)prop=e.columns[a],""==e.sort&&(e.sort=prop),title=prop.replace("_"," ").split(/(?=[A-Z])/).join(" "),t+='<td><a href="" ng-click="linkclicked(item)"> <span style="font-size:14px" data-ng-bind="item.'+prop+'"></span></a> </td>',i+="<th><a ng-click='sortit(\""+prop+"\")' > <h4>"+title+"<h4/> <span ng-show='sort == \""+prop+"\"' > <span ng-show='descending'> <i class='fa fa-caret-square-o-down'></i> </span> <span ng-hide='descending'> <i class='fa fa-caret-square-o-up'></i> </span> </span> </a> </th>";var l="<thead> <tr> "+i+"</tr> </thead>",r="<table class='table'>"+l+" <tbody> <tr data-ng-repeat='item in itemssource |orderBy:sort:descending | filter:filter '>",s=r+t+" </tr> </tbody> </table>";return s},o=angular.element(n[0].getElementsByClassName("filterhtml")[0]);o.append(r);var d=angular.element(n[0].getElementsByClassName("tablehtml")[0]);d.append(s()),t(d)(e),t(o)(e),e.buttonclicked=function(){$(".modal",n).modal("show")}},controller:function(){}}}])}(),function(){angular.module("directives").directive("mmSelectionModalAjax",["$http","$compile",function(e,t){return{restrict:"E",scope:{itemTemplate:"=",columns:"=",valuefield:"=",textfield:"=",selecteditem:"=",selectedText:"=",selectedId:"=",message:"=",url:"@"},link:function(e,n){e.itemssource,e.message;n.append('<div class="modalcontainer"></div>');var i=$(".filter-template",n).html(),a=angular.element(n[0].getElementsByClassName("modalcontainer")[0]),l=function(){for(var t="",n=(window.location.hash,0);n<e.columns;n++)prop=e.columns[n],""==e.sort&&(e.sort=prop),e.fieldnames.push({fieldname:prop,title:prop.replace("_"," ").split(/(?=[A-Z])/).join(" ")}),t+='<td><a href="" ng-click="linkclicked(item)"> <span style="font-size:14px" data-ng-bind="item.'+prop+'"></span></a> </td>';var i="<thead> <tr> <th ng-repeat='item in fieldnames'><a ng-click='sortit(item.fieldname)' > {{item.title}} <span ng-show='sort == item.fieldname' > <span ng-show='descending'> <i class='fa fa-caret-square-o-down'></i> </span> <span ng-hide='descending'> <i class='fa fa-caret-square-o-up'></i> </span> </span> </a> </th> </tr> </thead>",a="<table class='table'>"+i+" <tbody> <tr data-ng-repeat='item in itemssource |orderBy:sort:descending | filter:filter '>",l=a+t+" </tr> </tbody> </table>";
return l},r="<input class='btn btn-default' type='button' value='...' ng-click='buttonclicked()'/>",s="<div class='modal fade' id='myModal' tabindex='-1' role='dialog' aria-labelledby='myModalLabel' aria-hidden='true'><div class='modal-dialog' style='max-height:100%' ><div class='modal-content'><div class='modal-header'><button type='button' class='close' data-dismiss='modal' aria-hidden='true'>×</button><h4 class='modal-title' id='myModalLabel'>Modal title</h4></div><div class='modal-body'>";s+='<div ng-show="dataloading" class="progress progress-striped active"><div class="progress-bar" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 100%"></div></div>';var o="<div class='row'>"+i+"</div> <div class='row'><input ng-click='searchclicked()' value='Search' class='btn btn-default' type='button' /></div>",d="<div ng-bind-html-unsafe='template'> "+l()+"</div></div>",c="",u=r+s+o+d+c;a.append(u),t(a)(e)},controller:["$scope","$element","$attrs",function(t,n){t.searchclicked=function(){t.url&&t.filter&&(t.dataloading=!0,e.post(t.url,t.filter).success(function(e){t.itemssource=e,t.dataloading=!1}).error(function(){t.dataloading=!1}))},t.sort="",t.descending=!1,t.fieldnames=[],t.sortit=function(e){t.sort==e?t.descending=!t.descending:(t.descending=!1,t.sort=e)},t.linkclicked=function(e){if(null!=e[t.valuefield]&&(t.selecteditem=e[t.valuefield]),null!=e[t.textfield]){{e[t.textfield]}t.selectedText&&(t.selectedText=e[t.textfield])}$(".modal",n).modal("hide")},t.buttonclicked=function(){$(".modal",n).modal("show")}}]}}])}(),function(){angular.module("directives").directive("mmSortable",["$http","$compile",function(){return{restrict:"C",scope:{itemssource:"=",orderfield:"@",sorted:"&",handle:"@"},link:function(e,t){e.dragStart=function(e,t){t.item.data("start",t.item.index())},e.dragEnd=function(t,n){if(e.orderfield)$.map($(this).children(),function(t){{var n=angular.element(t).scope();n.item[e.orderfield]=$(t).index()+1}}),e.$apply(e.itemssource),sortedHandler=e.sorted(),sortedHandler&&sortedHandler(e.itemssource);else{var i=n.item.data("start"),a=n.item.index();e.itemssource.splice(a,0,e.itemssource.splice(i,1)[0]),sortedHandler=e.sorted(),sortedHandler&&sortedHandler(e.itemssource)}e.$apply()};var n="";e.handle&&(n=e.handle),$(t).sortable({handle:n,start:e.dragStart,update:e.dragEnd}),$(t).disableSelection()}}}])}(),angular.module("directives").constant("mmSwitcherConfig",{theme:null,on_state_content:"ON",off_state_content:"OFF"}).directive("mmSwitcher",["$http","$compile","mmSwitcherConfig",function(e,t,n){return{restrict:"ACM",require:"ngModel",transclude:!0,link:function(e,t,i){var a,l=$(t);i.options=null==i.options?{}:e.$eval(i.options)?e.$eval(i.options):i.options,i.theme&&(i.options.theme=i.theme?i.theme:e.$eval(i.theme));var r=$.extend({},n,i.options),s=null,o=null;l.is('input[type="checkbox"]')?(a=l.attr("data-class"),s=l,o=$('<div class="switcher"><div class="switcher-toggler"></div><div class="switcher-inner"><div class="switcher-state-on">'+r.on_state_content+'</div><div class="switcher-state-off">'+r.off_state_content+"</div></div></div>"),r.theme&&o.addClass("switcher-theme-"+r.theme),a&&o.addClass(a),o.insertAfter(s).prepend(s)):(o=l,s=$('input[type="checkbox"]',o)),s.prop("disabled")&&o.addClass("disabled"),s.is(":checked")&&o.addClass("checked"),s.on("click",function(e){return e.stopPropagation()}),o.on("touchend click",function(e){return function(t){return t.stopPropagation(),t.preventDefault(),d(e)}}(this));var d=function(){s.click()},c=function(){return s[0].checked=!0,o.addClass("checked")},u=function(){return s[0].checked=!1,o.removeClass("checked")};i.$observe("ngModel",function(t){e.$watch(t,function(e){e?c():u()})})}}}]),angular.module("directives").directive("mmTable",["$http","$compile",function(e,t){return{restrict:"EA",transclude:!0,template:"<table class='table'><thead><tr class='headerholder'></tr></thead><tbody class='rowholder'></tbody></table><div class='modalcontainer'></div>",link:function(e,n,i,a,l){var r=n.find("tbody.rowholder"),s=n.find("tr.headerholder"),o=function(){r.empty(),s.empty()},d=e.$new(),c="",u="",m=null,p=null,f=null,g=n.find("div.modalcontainer"),v=n.find("table.table");l(d,function(e){angular.forEach(e,function(e){if(angular.element(e).hasClass("edit-template")&&(m="<div class='edit-template'>"+e.innerHTML+"</div>"),angular.element(e).hasClass("detail-template")&&(p="<div class='detail-template'>"+e.innerHTML+"</div>"),angular.element(e).hasClass("delete-template")&&(f="<div class='delete-template'>"+e.innerHTML+"</div>"),angular.element(e).hasClass("data-template")){$("td",e).each(function(e,t){c+="<td>"+t.innerHTML+"</td>"})}});{var t=angular.element(e,"thead");$("th",t).each(function(e,t){u+="<th>"+t.innerHTML+"</th>"})}});var h=null,b=function(){var n="",i="",a="";i=e.linkpath?e.linkpath:window.location.hash;for(var l=0;l<h.length;l++)prop=h[l],""==e.mmtableSort&&(e.mmtableSort=prop),title=prop.replace("_"," ").split(/(?=[A-Z])/).join(" "),n+=0==l&&k?"<td><a ng-href="+i+"/{{"+S+"."+k+'}}> <span data-ng-bind="'+S+"."+prop+'"></span></a> </td>':'<td><span data-ng-bind="'+S+"."+prop+'"></span></td>',a+="<th><a class='pointer' ng-click='mmtableSortit(\""+prop+"\")' > "+title+" <span ng-show='mmtableSort == \""+prop+"\"' > <span ng-show='descending'> <i class='fa fa-caret-square-o-down'></i> </span> <span ng-hide='descending'> <i class='fa fa-caret-square-o-up'></i> </span> </span> </a> </th>";if(""!=c&&(n=c),s&&s.length>0&&((m||p||f)&&(a+="<th> Actions </th>"),s.append(""!=u?u:a)),r&&r.length>0){if((m||p||f)&&(n+="<td><div class='btn-group'><button type='button' class='btn btn-primary dropdown-toggle' data-toggle='dropdown'>Actions <span class='caret'></span></button><ul class='dropdown-menu' role='menu'>",p&&(n+="<li><a ng-click='mmtablebtnDetailItem("+S+")'>Detail</a></li>"),m&&(n+="<li><a ng-click='mmtablebtnSaveItem("+S+")'>Edit</a></li>"),f&&(n+="<li class='divider'></li> <li><a ng-click='mmtablebtnDeleteItem("+S+")'>Delete</a></li></ul></div></td>")),C)var o='<tr data-ng-class=\'{ "active":mmtableIntSelectedItem =='+S+"}' ng-click='mmtableSelected("+S+")' ng-attr-cursor='{{mmtablecursor}}' data-ng-repeat='"+C+"'>"+n+"</tr>";else var o='<tr data-ng-class=\'{ "active":mmtableIntSelectedItem =='+S+"}' ng-click='mmtableSelected("+S+")' ng-attr-cursor='{{mmtablecursor}}' data-ng-repeat='"+S+" in "+y+" |orderBy:mmtableSort:descending | filter : mmtableFilter' >"+n+"</tr>";r.append(o)}t(v)(d)},w=!0,y=null,k=null,x=null,M=null;i.$observe("itemselected",function(t){t&&e[t]&&angular.isFunction(e[t])&&(x=e[t])});var C=null,S="item",T=i.mmTable;if(T){var L=T.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!L)throw T;{var P=L[1],I=L[2];L[3],L[4]}if(L=P.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/),!L)throw P;S=L[3]||L[1],C=i.mmTable}I&&(y=I,e.$watch(y,function(e){if(e&&!h&&e&&e[0]){h=[];for(prop in e[0])h.push(prop);b()}})),i.$observe("itemssource",function(t){y=t,e.$watch(t,function(e){if(e&&!h&&e&&e[0]){h=[];for(prop in e[0])h.push(prop);b()}})}),i.$observe("selecteditem",function(t){M=t,e.$watch(t,function(t){t?t!==d.mmtableIntSelectedItem&&(d.mmtableIntSelectedItem=t):M&&(e[M]={})})}),i.$observe("tableClass",function(e){e&&$(v).addClass(e)}),i.$observe("filter",function(t){e.$watch(t,function(e){d.mmtableFilter=e})}),i.$observe("columns",function(t){e.$watch(t,function(e,t){e&&(e!=t||w)&&(w=!1,o(),h=e,b())})}),i.$observe("idfield",function(e){k=e}),d.mmtableSort="",d.descending=!1,d.mmtablecursor="auto",d.mmtableSortit=function(e){d.mmtableSort==e?d.descending=!d.descending:(d.descending=!1,d.mmtableSort=e)},d.mmtableSelected=function(t){d.mmtablecursor="hand",d.mmtableIntSelectedItem!=t&&(d.mmtableIntSelectedItem=t),x&&x(t),M&&(e[M]=t)};var H=null,E=null,D=null;if(i.$observe("detailClicked",function(t){t&&e[t]&&angular.isFunction(e[t])&&(H=e[t])}),i.$observe("saveClicked",function(t){t&&e[t]&&angular.isFunction(e[t])&&(E=e[t])}),i.$observe("deleteClicked",function(t){t&&e[t]&&angular.isFunction(e[t])&&(D=e[t])}),m||p||f){var V="<mm-action-modal selecteditem='mmtableselecteditem' calldetail='mmtablecalldetail' detail-clicked='mmtabledetailClicked'calledit='mmtablecalledit' save-clicked='mmtableSaveClicked' calldelete='mmtablecalldelete' delete-clicked='mmtabledeleteClicked'>"+m+p+f+"</mm-action-modal>";g.append(V),t(g)(d)}d.mmtablebtnDetailItem=function(e){d.mmtableselecteditem=e,d.mmtablecalldetail=!0,H&&H(d.mmtableselecteditem)},d.mmtablebtnSaveItem=function(e){d.originalitem=e,d.mmtableselecteditem=angular.copy(e),d.mmtablecalledit=!0},d.mmtableSaveClicked=function(e){angular.copy(e,d.originalitem),E&&E(d.originalitem)},d.mmtablebtnDeleteItem=function(e){d.mmtableselecteditem=e,d.mmtablecalldelete=!0},d.mmtabledeleteClicked=function(e){D&&D(e)}},controller:["$scope","$element","$attrs",function(){}]}}]),function(){angular.module("directives").directive("mmTableSorter",["$http","$compile",function(e,t){return{scope:{sort:"=",columns:"=",descending:"="},link:function(e,n){var i=e.columns,a=function(){e.sort="",e.descending=!1,e.fieldnames=[],e.sortit=function(t){e.sort==t?e.descending=!e.descending:(e.descending=!1,e.sort=t)};for(var a=0;a<i.length;a++)prop=i[a],""==e.sort&&(e.sort=prop),e.fieldnames.push({fieldname:prop,title:prop.replace("_"," ").split(/(?=[A-Z])/).join(" ")});var l="<thead class='tablecontainer'><tr> <th ng-repeat='item in fieldnames'><a ng-click='sortit(item.fieldname)' > {{item.title}} <span ng-show='sort == item.fieldname' > <span ng-show='descending'> <i class='fa fa-caret-square-o-down'></i> </span> <span ng-hide='descending'> <i class='fa fa-caret-square-o-up'></i> </span> </span> </a> </th> </tr></thead>";$(n).append(l);var r=angular.element(n[0].getElementsByClassName("tablecontainer")[0]);t(r)(e)};a()},controller:function(){}}}])}(),function(){angular.module("directives").directive("mmTimelineCol",["$compile",function(e){return{restrict:"E",replace:!0,template:'<ul class="timeline-2col"></ul>',transclude:!0,link:function(t,n,i,a,l){var r=null,s=function(){var i="";if(l(t,function(e){i="",angular.forEach(e,function(e){e.outerHTML&&(i+=e.outerHTML)})}),i){var a='<li class="mytemplate" ng-class-even="\'timeline-inverted\'" ng-repeat="item in '+r+'"><div class="timeline-badge primary"><i ng-class-even="\'glyphicon glyphicon-record invert\'" ng-class-odd="\'glyphicon glyphicon-record\'"></i></div><div>'+i+'</div> </li> <li class="clearfix" style="float: none;"></li>';n.append(e(a)(t))}};i.$observe("itemssource",function(e){r=e,s()})},controller:["$scope","$element","$attrs",function(){}]}}]),angular.module("directives").directive("mmTimeline",["$compile",function(e){return{restrict:"E",replace:!0,template:'<ul class="timeline-v2"></ul>',transclude:!0,link:function(t,n,i,a,l){var r=null,s=function(){var i="";if(l(t,function(e){i="",angular.forEach(e,function(e){e.outerHTML&&(i+=e.outerHTML)})}),i){var a='<li ng-repeat="item in '+r+'"> <i class="cbp_tmicon rounded-x hidden-xs"></i> <div>'+i+"</div></li>";n.append(e(a)(t))}};i.$observe("itemssource",function(e){r=e,s()})},controller:["$scope","$element","$attrs",function(){}]}}])}(),angular.module("directives").constant("timepickerConfig",{hourStep:1,minuteStep:1,showMeridian:!0,meridians:null,readonlyInput:!1,mousewheel:!0}).controller("TimepickerController",["$scope","$attrs","$parse","$log","$locale","timepickerConfig",function(e,t,n,i,a,l){function r(){var t=parseInt(e.hours,10),n=e.showMeridian?t>0&&13>t:t>=0&&24>t;return n?(e.showMeridian&&(12===t&&(t=0),e.meridian===g[1]&&(t+=12)),t):void 0}function s(){var t=parseInt(e.minutes,10);return t>=0&&60>t?t:void 0}function o(e){return angular.isDefined(e)&&e.toString().length<2?"0"+e:e}function d(e){c(),f.$setViewValue(new Date(p)),u(e)}function c(){f.$setValidity("time",!0),e.invalidHours=!1,e.invalidMinutes=!1}function u(t){var n=p.getHours(),i=p.getMinutes();e.showMeridian&&(n=0===n||12===n?12:n%12),e.hours="h"===t?n:o(n),e.minutes="m"===t?i:o(i),e.meridian=p.getHours()<12?g[0]:g[1]}function m(e){var t=new Date(p.getTime()+6e4*e);p.setHours(t.getHours(),t.getMinutes()),d()}var p=new Date,f={$setViewValue:angular.noop},g=angular.isDefined(t.meridians)?e.$parent.$eval(t.meridians):l.meridians||a.DATETIME_FORMATS.AMPMS;this.init=function(n,i){f=n,f.$render=this.render;var a=i.eq(0),r=i.eq(1),s=angular.isDefined(t.mousewheel)?e.$parent.$eval(t.mousewheel):l.mousewheel;s&&this.setupMousewheelEvents(a,r),e.readonlyInput=angular.isDefined(t.readonlyInput)?e.$parent.$eval(t.readonlyInput):l.readonlyInput,this.setupInputEvents(a,r)};var v=l.hourStep;t.hourStep&&e.$parent.$watch(n(t.hourStep),function(e){v=parseInt(e,10)});var h=l.minuteStep;t.minuteStep&&e.$parent.$watch(n(t.minuteStep),function(e){h=parseInt(e,10)}),e.showMeridian=l.showMeridian,t.showMeridian&&e.$parent.$watch(n(t.showMeridian),function(t){if(e.showMeridian=!!t,f.$error.time){var n=r(),i=s();angular.isDefined(n)&&angular.isDefined(i)&&(p.setHours(n),d())}else u()}),this.setupMousewheelEvents=function(t,n){var i=function(e){e.originalEvent&&(e=e.originalEvent);var t=e.wheelDelta?e.wheelDelta:-e.deltaY;return e.detail||t>0};t.bind("mousewheel wheel",function(t){e.$apply(i(t)?e.incrementHours():e.decrementHours()),t.preventDefault()}),n.bind("mousewheel wheel",function(t){e.$apply(i(t)?e.incrementMinutes():e.decrementMinutes()),t.preventDefault()})},this.setupInputEvents=function(t,n){if(e.readonlyInput)return e.updateHours=angular.noop,void(e.updateMinutes=angular.noop);var i=function(t,n){f.$setViewValue(null),f.$setValidity("time",!1),angular.isDefined(t)&&(e.invalidHours=t),angular.isDefined(n)&&(e.invalidMinutes=n)};e.updateHours=function(){var e=r();angular.isDefined(e)?(p.setHours(e),d("h")):i(!0)},t.bind("blur",function(){!e.invalidHours&&e.hours<10&&e.$apply(function(){e.hours=o(e.hours)})}),e.updateMinutes=function(){var e=s();angular.isDefined(e)?(p.setMinutes(e),d("m")):i(void 0,!0)},n.bind("blur",function(){!e.invalidMinutes&&e.minutes<10&&e.$apply(function(){e.minutes=o(e.minutes)})})},this.render=function(){var e=f.$modelValue?new Date(f.$modelValue):null;isNaN(e)?(f.$setValidity("time",!1),i.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')):(e&&(p=e),c(),u())},e.incrementHours=function(){m(60*v)},e.decrementHours=function(){m(60*-v)},e.incrementMinutes=function(){m(h)},e.decrementMinutes=function(){m(-h)},e.toggleMeridian=function(){m(720*(p.getHours()<12?1:-1))}}]).directive("timepicker",function(){return{restrict:"EA",require:["timepicker","?^ngModel"],controller:"TimepickerController",replace:!0,scope:{},template:"<table><tbody><tr class='text-center'><td><a ng-click='incrementHours()' class='btn btn-outline btn-link' style='border: 0px; border-image: none;'><span class='glyphicon glyphicon-chevron-up'></span></a></td><td> </td><td><a ng-click='incrementMinutes()' class='btn btn-outline btn-link btn-default' style='border: 0px; border-image: none;'><span class='glyphicon glyphicon-chevron-up'></span></a></td><td ng-show='showMeridian'></td></tr><tr><td style='width:50px;' class='form-group' ng-class=\"{'has-error': invalidHours}\"><input type='text' ng-model='hours' ng-change='updateHours()' class='form-control text-center' ng-mousewheel='incrementHours()' ng-readonly='readonlyInput' maxlength='2'></td><td>:</td><td style='width:50px;' class='form-group' ng-class=\"{'has-error': invalidMinutes}\"><input type='text' ng-model='minutes' ng-change='updateMinutes()' class='form-control text-center' ng-readonly='readonlyInput' maxlength='2'></td><td ng-show='showMeridian'><button type='button' class='btn btn-outline btn-default text-center' ng-click='toggleMeridian()'>{{meridian}}</button></td></tr><tr class='text-center'><td><a ng-click='decrementHours()' class='btn btn-outline btn-link' style='border: 0px; border-image: none;'><span class='glyphicon glyphicon-chevron-down'></span></a></td><td> </td><td><a ng-click='decrementMinutes()' class='btn btn-outline btn-link' style='border: 0px; border-image: none;'><span class='glyphicon glyphicon-chevron-down'></span></a></td><td ng-show='showMeridian'></td></tr></tbody></table>",link:function(e,t,n,i){var a=i[0],l=i[1];l&&a.init(l,t.find("input"))}}}),angular.module("directives").value("uiTinymceConfig",{}).directive("mmTinymce",["uiTinymceConfig",function(e){e=e||{};var t=0;return{priority:10,require:"?ngModel",link:function(n,i,a,l){var r,s,o;a.id||a.$set("id","uiTinymce"+t++),s={setup:function(e){e.on("init",function(){l.$render()}),e.on("ExecCommand",function(){e.save(),l.$setViewValue(i.val()),n.$$phase||n.$apply()}),e.on("KeyUp",function(){}),e.on("Change",function(){e.save(),l.$setViewValue(i.val()),n.$$phase||n.$apply()})},mode:"exact",elements:a.id},r=a.uiTinymce?n.$eval(a.uiTinymce):{},angular.extend(s,e,r),setTimeout(function(){s.plugins="advlist autolink link image lists charmap print preview code",tinymce.init(s)}),l.$render=function(){o||(o=tinymce.get(a.id)),o&&o.setContent(l.$viewValue||"")}}}}]),function(){angular.module("directives").directive("mmTreeview",["$compile",function(e){return{template:'<ul class="uiTree"></ul>',replace:!0,transclude:!0,restrict:"E",scope:{itemssource:"=",parentnodeid:"@",parentfield:"@",idfield:"@",textfield:"@",selectedtext:"=",nullvalue:"=",selectedId:"=",selecteditem:"=ngModel"},link:function(t,n,i,a,l){var r=(n[0],"");l(t,function(e){angular.forEach(e,function(e){angular.element(e).hasClass("data-template")&&(r="<div class='data-template''>"+e.innerHTML+"</div>")})}),n.append('<mm-treeview-node ng-repeat="node in tree">'+r+"</mm-treeview-node>"),e(n.contents())(t)},controller:["$scope","$element","$attrs",function(e,t,n){n.$observe("ngModel",function(t){t&&!e.selecteditem&&(e.selecteditem={})}),e.$on("nodeSelected",function(t,n){e.$broadcast("selectNode",n),e.selectedId&&(e.selectedId=n[e.idfield]),e.selectedtext&&(e.selectedtext=n[e.textfield]),e.selecteditem&&(e.selecteditem=n)});var i=function(t){var n=_.find(e.itemssource,function(n){return t==n[e.idfield]}),i=t,a=function(t){if(!t[e.parentfield])return i;i=t[e.parentfield]+","+i;var n=_.find(e.itemssource,function(n){return t[e.parentfield]==n[e.idfield]});n&&a(n)};return n&&a(n),i};e.$watch("itemssource",function(){a()}),e.$watch("nullvalue",function(e){e&&a()});var a=function(){if(e.itemssource&&e.itemssource.length&&e.itemssource.length>0){if(e.parentnodeid){var t=_.filter(e.itemssource,function(t){return t[e.parentfield]==e.parentnodeid});e.tree=t}else{if(e.nullvalue)var t=_.filter(e.itemssource,function(t){return t[e.parentfield]==e.nullvalue});else var t=_.filter(e.itemssource,function(t){return null==t[e.parentfield]});e.tree=t}if(e.expandTo||(e.selectedId||(e.selectedId={}),e.expandTo=i(e.selectedId)),e.expandTo&&e.expandTo.length){e.expansionNodes=angular.copy(e.expandTo);var n=e.expansionNodes.split(",");e.nextExpandTo=n.shift(),e.expansionNodes=n.join(",")}}}}]}}]).directive("mmTreeviewNode",["$compile","$timeout",function(e){return{restrict:"E",replace:!0,template:'<li><div style="clear: both;" class="node" data-node-id="{{ nodeId() }}"><a style="float: left;width:24px" class="icon" ng-click="toggleNode(nodeId())""></a><a style="float: left;" ng-hide="selectedId" ng-href="#/assets/{{ nodeId() }}">{{ node.name }}</a><span style="float: left" ng-show="selectedId" ng-class="css()" ng-click="setSelected(node)"><div style="float: left;" class="templateholder"></div>{{ node[textfield] }}</span></div></li>',transclude:!0,link:function(t,n,i,a,l){var r=null;l(t,function(i){angular.forEach(i,function(i){if(angular.element(i).hasClass("data-template")){var a=n.find("div.templateholder");r=i.innerHTML,n.append(e(a.append(i.innerHTML))(t))}})}),t.nodeId=function(e){var n=e||t.node;return n[t.idfield]},t.nodehaschildren=function(){var e=_.find(t.itemssource,function(e){return t.nodeId()==e[t.parentfield]});return e?!0:!1},t.toggleNode=function(e){var i=n.children(".uiTree:visible").length>0,a=n.children(".uiTree");if(i?t.$emit("nodeCollapsed",e):e&&t.$emit("nodeExpanded",e),i||0!==a.length)a.toggle(!i),n.find("a.icon i").toggleClass("fa fa-chevron-right"),n.find("a.icon i").toggleClass("fa fa-chevron-down");else if(t.tree){var l=t.node[t.idfield],r=_.find(t.itemssource,function(e){return e[t.parentfield]==l});r&&(t.appendChildren(),n.find("a.icon i").show(),n.find("a.icon img").remove(),t.toggleNode())}},t.appendChildren=function(){var i='<mm-treeview parentnodeid="'+t.node[t.idfield]+'" itemssource="itemssource" idfield="'+t.idfield+'"';return t.expansionNodes&&(i+=' expand-to="expansionNodes"'),t.selectedId&&(i+=' selected-id="selectedId"'),t.parentfield&&(i+=' parentfield="'+t.parentfield+'"'),t.textfield&&(i+=' textfield="'+t.textfield+'"'),i+=' style="display: none">',r&&(i+="<div class='data-template''>"+r+"</div>"),i+="</mm-treeview>",n.append(e(i)(t))},t.css=function(){return{nodeLabel:!0,selected:t.selectedId&&t.nodeId()===t.selectedId}},t.setSelected=function(e){t.$emit("nodeSelected",e)},t.$on("selectNode",function(e,n){t.selectedId=t.nodeId(n)}),t.nodehaschildren()&&n.find("a.icon").append('<i class="fa fa-chevron-right"></i>'),t.nextExpandTo&&t.nodeId()==parseInt(t.nextExpandTo,10)&&t.toggleNode(t.nodeId())}}}])}(),angular.module("directives").directive("mmValidator",[function(){return{restrict:"A",require:"^form",link:function(e,t,n,i){var a,l,r,s,o,d=null,c=null,u=!1;o=!0,l=t[0].querySelector("input[name]"),l||(l=t[0].querySelector("select[name]"));var m="";l.maxLength&&(m=l.maxLength);var p="";l.minlength&&(m=l.minlength);var f="";l.max&&(f=l.max);var g="";if(l.min&&(f=l.min),n.$observe("minlength",function(e){minlength=parseInt(e,10)}),s=angular.element(l),r=s.attr("name"),!r)throw"show-errors element has no child input elements with a 'name' attribute";s.bind("blur",function(){a=!0,v()}),s.bind("invalid",function(){v()}),t.toggleClass("has-none",!0);n.$observe("mmValidator",function(e){if(e)if(e.indexOf("{")>-1){var n=e.replace(/'/g,'"');d=JSON.parse(n),t.append('<p class="help-block"></p>'),c=t.find("p.help-block"),c=c[0]?c[0]:null}else u=!0,t.append('<p class="help-block">'+e+"</p>");else c||(t.append('<p class="help-block"></p>'),c=t.find("p.help-block"),c=c[0]?c[0]:null)});var v=function(){var e=i[r].$error;return u||(e.email?c.innerHTML=d&&d.email?d.email:"Please enter a valid e-mail address":e.max?c.innerHTML=d&&d.max?d.max:"Please enter less than "+f:e.maxlength?c.innerHTML=d&&d.maxlength?d.maxlength:"Please enter at maximum "+m+" characters.":e.min?c.innerHTML=d&&d.min?d.min:"Please enter more than "+g:e.minlength?c.innerHTML=d&&d.minlength?d.minlength:"Please enter at least "+p+" characters.":e.number?c.innerHTML=d&&d.number?d.number:"input must be a number":e.pattern?c.innerHTML=d&&d.pattern?d.pattern:"pattern isn't exceeded":e.required?c.innerHTML=d&&d.required?d.required:"input can not be empty":e.url?c.innerHTML=d&&d.url?d.url:"input must be a url":e.date?c.innerHTML=d&&d.date?d.date:"input must be a date":e.datetimelocal?c.innerHTML=d&&d.datetimelocal?d.datetimelocal:"input must be a datetimelocal":e.time?c.innerHTML=d&&d.time?d.time:"input must be a time":e.week?c.innerHTML=d&&d.week?d.week:"input must be a week":e.month&&(c.innerHTML=d&&d.month?d.month:"input must be a month")),h(i[r].$invalid)},h=function(e){return t.toggleClass("has-error",e),t.toggleClass("has-none",!e),o?t.toggleClass("has-success",!e):void 0}}}}]),angular.module("directives").directive("mmWizard",["$http","$compile",function(e,t){return{restrict:"C",transclude:!0,template:'<div class="wizard ui-wizard-example"><div class="wizard-wrapper"><ul class="wizard-steps" id="myTab" style="left: 0px;"></ul></div> <div class="wizard-content panel tab-content"><div style="display: none;" class="alert alert-danger alert-dark"> <button class="close" type="button" >×</button> <span class="alert-message">Change a few things up and try submitting again.</span> </div></div><div class="panel-footer"><button class="btn wizard-prev-step-btn">Prev</button><button class="btn btn-primary wizard-next-step-btn pull-right">Next</button> <button class="btn btn-primary wizard-finish-step-btn pull-right">Finish</button></div></div>',link:function(e,n,i,a,l){function r(){return(65536*(1+Math.random())|0).toString(16).substring(1)}var s=r(),o=n.find("ul.wizard-steps"),d=n.find("div.wizard-content"),c=n.find("button.wizard-prev-step-btn"),u=n.find("button.wizard-next-step-btn"),m=n.find("button.wizard-finish-step-btn"),p=n.find("div.panel-footer"),f=n.find("div.alert"),g=n.find("span.alert-message"),v=n.find("button.close"),h=[],b=0,w=0;$(d).on("keyup",function(e){13==e.which&&M()});var y=function(e){f[0].style.display="block",g[0].innerHTML=e},k=function(){f[0].style.display="none"},x=function(){var t=e["form"+s+(w+1)],n=!1;if(t.$valid){if(C){var i={};i.CurrentPage=w+1,i.targetedPage=w,i.formName="form"+s+(w+1),i.form=t,n=C(i)}}else{{t.$error}n=!0,y("Check validations")}return n},M=function(){b>w+1&&(x()||(w++,$("#myTab li:eq("+w+")",n).tab("show"),c[0].style.display="inline-block",w+1==b&&(u[0].style.display="none"),w+1==b&&(m[0].style.display="inline-block"),k()))};$(v).bind("click",function(){k()}),$(m).bind("click",function(){var t=!1,i=e["form"+s+(w+1)];if(i.$valid){var a={};a.CurrentPage=w+1,a.targetedPage=null,a.formName="form"+s+(w+1),a.form=i,S&&(t=S(a)),C&&(t=C(a)),t||(d[0].style.display="none",p[0].style.display="none",$("#myTab li:last",n)[0].style.backgroundColor="#4cb64c",$("#myTab li:last .wizard-step-caption",n)[0].style.color="white",$("#myTab li:last .wizard-step-description",n)[0].style.color="white",k())}else y("Check validations")}),$(c).bind("click",function(){u[0].style.display="inline-block",m[0].style.display="none",w>0&&(x()||(w--,$("#myTab li:eq("+w+")",n).tab("show"),k(),0==w&&(c[0].style.display="none")))}),$(u).bind("click",function(){M()});var C=null;i.$observe("stepChanged",function(t){t&&e[t]&&angular.isFunction(e[t])&&(C=e[t])});var S=null;i.$observe("finishClicked",function(t){t&&e[t]&&angular.isFunction(e[t])&&(S=e[t])});var T=function(e){var t={},n=$(e).find(".wizard-caption");n&&n[0]&&n[0].innerHTML&&(t.caption='<li class="active" style="width: 200px; min-width: 200px; max-width: 200px;" data-target="#wizard-example-step'+b+'" data-toggle="tab" ><span class="wizard-step-number">'+b+'</span><span class="wizard-step-caption">'+n[0].innerHTML+"</span> </li>",o.append(t.caption));var i=$(e).find(".wizard-content");i&&i[0]&&i[0].innerHTML&&(t.content=' <div id="wizard-example-step'+b+'" class="tab-pane"><form name="form'+s+b+'" class="form'+b+'">'+i[0].innerHTML+"</form></div>",d.append(t.content));var a=$(e).find("wizard-buttons");return a&&a[0]&&a[0].innerHTML&&(t.buttons=a[0].innerHTML),t};l(e,function(n){angular.forEach(n,function(e){angular.element(e).hasClass("wizard-step")&&(b++,h.push(T(e)))}),$("#myTab li:first").tab("show"),c[0].style.display="none",m[0].style.display="none",t(d)(e)})}}}]),angular.module("directives").controller("mmPagerSourceController",["$scope","$attrs","$parse","$filter",function(e,t,n,i){var a=this,l={$setViewValue:angular.noop},r=t.numPages?n(t.numPages).assign:angular.noop;this.init=function(i,r){l=i,this.config=r,l.$render=function(){a.render()},t.itemsPerPage?e.$parent.$watch(n(t.itemsPerPage),function(t){a.itemsPerPage=parseInt(t,10),e.totalPages=a.calculateTotalPages(),e.setResults(e.page,a.itemsPerPage,e.itemssource,e.filter,e.sort,e.descending)}):this.itemsPerPage=r.itemsPerPage},this.calculateTotalPages=function(){var t=this.itemsPerPage<1?1:Math.ceil(e.totalItems/this.itemsPerPage);return Math.max(t||0,1)},this.render=function(){e.page=parseInt(l.$viewValue,10)||1},e.selectPage=function(t){e.page!==t&&t>0&&t<=e.totalPages&&(l.$setViewValue(t),e.setResults(t,a.itemsPerPage,e.itemssource,e.filter,e.sort,e.descending),l.$render())},e.getText=function(t){return e[t+"Text"]||a.config[t+"Text"]},e.noPrevious=function(){return 1===e.page},e.noNext=function(){return e.page===e.totalPages},e.$watch("totalItems",function(){e.totalPages=a.calculateTotalPages()}),e.$watchCollection("filter",function(){e.totalPages=a.calculateTotalPages(),e.setResults(e.page,a.itemsPerPage,e.itemssource,e.filter,e.sort,e.descending)}),e.$watchCollection("sort",function(){e.totalPages=a.calculateTotalPages(),e.setResults(e.page,a.itemsPerPage,e.itemssource,e.filter,e.sort,e.descending)}),e.$watchCollection("descending",function(){e.totalPages=a.calculateTotalPages(),e.setResults(e.page,a.itemsPerPage,e.itemssource,e.filter,e.sort,e.descending)}),e.$watch("totalPages",function(t){r(e.$parent,t),e.page>t?e.selectPage(t):l.$render()}),e.$watch("itemssource",function(){e.itemssource&&a.itemsPerPage&&e.itemssource.length&&e.page&&e.setResults(e.page,a.itemsPerPage,e.itemssource,e.filter,e.sort,e.descending)}),e.setResults=function(t,n,l,r,s){if(t&&l&&l.length&&n){var o={};o=r?i("filter")(e.itemssource,e.filter):l,s&&(o=e.descending?i("orderBy")(o,e.sort,!0):i("orderBy")(o,e.sort)),e.totalItems=o.length;var d=(t-1)*n,c=t*n;e.totalPages=a.calculateTotalPages(),e.results=o.slice(d,c)}}}]).constant("pagerSourceConfig",{itemsPerPage:10,boundaryLinks:!0,directionLinks:!0,firstText:"<<",previousText:"<",nextText:">",lastText:">>",rotate:!1,maxSize:10}).directive("pagerSource",["$parse","pagerSourceConfig","$filter",function(e,t){return{restrict:"EA",scope:{firstText:"@",previousText:"@",nextText:"@",lastText:"@",itemssource:"=",filter:"=",sort:"=",descending:"=",results:"="},require:["pagerSource","?ngModel"],controller:"mmPagerSourceController",template:'<ul class="pagination"><li ng-if="boundaryLinks" ng-class="{disabled: noPrevious()}"><a href ng-click="selectPage(1)">{{getText("first")}}</a></li><li ng-if="directionLinks" ng-class="{disabled: noPrevious()}"><a href ng-click="selectPage(page - 1)">{{getText("previous")}}</a></li><li ng-repeat="page in pages track by $index" ng-class="{active: page.active}"><a href ng-click="selectPage(page.number)">{{page.text}}</a></li><li ng-if="directionLinks" ng-class="{disabled: noNext()}"><a href ng-click="selectPage(page + 1)">{{getText("next")}}</a></li><li ng-if="boundaryLinks" ng-class="{disabled: noNext()}"><a href ng-click="selectPage(totalPages)">{{getText("last")}}</a></li></ul>',replace:!0,link:function(n,i,a,l){function r(e,t,n){return{number:e,text:t,active:n}}function s(e,t){var n=[],i=1,a=t,l=angular.isDefined(c)&&t>c;l&&(u?(i=Math.max(e-Math.floor(c/2),1),a=i+c-1,a>t&&(a=t,i=a-c+1)):(i=(Math.ceil(e/c)-1)*c+1,a=Math.min(i+c-1,t)));for(var s=i;a>=s;s++){var o=r(s,s,s===e);n.push(o)}if(l&&!u){if(i>1){var d=r(i-1,"...",!1);n.unshift(d)}if(t>a){var m=r(a+1,"...",!1);n.push(m)}}return n}var o=l[0],d=l[1];if(d){var c=angular.isDefined(a.maxSize)?n.$parent.$eval(a.maxSize):t.maxSize,u=angular.isDefined(a.rotate)?n.$parent.$eval(a.rotate):t.rotate;n.boundaryLinks=angular.isDefined(a.boundaryLinks)?n.$parent.$eval(a.boundaryLinks):t.boundaryLinks,n.directionLinks=angular.isDefined(a.directionLinks)?n.$parent.$eval(a.directionLinks):t.directionLinks,o.init(d,t),a.maxSize&&n.$parent.$watch(e(a.maxSize),function(e){c=parseInt(e,10),o.render()});var m=o.render;o.render=function(){m(),n.page>0&&n.page<=n.totalPages&&(n.pages=s(n.page,n.totalPages))}}}}}]),angular.module("directives").directive("popover",[function(){return{link:function(e,t){$(t).popover({trigger:"focus"})}}}]),angular.module("directives").directive("themeSelector",function(){return{restrict:"A",link:function(e,t,n){var i=null;n.$observe("themeSelector",function(e){("theme-adminflare"==e||"theme-asphalt"==e||"theme-clean"==e||"theme-default"==e||"theme-dust"==e||"theme-fresh"==e||"theme-frost"==e||"theme-purple-hills"==e||"theme-silver"==e||"theme-white"==e)&&(i=e)});var a=$(t);a.bind("click",function(){if(i){var e=angular.element(document).find("body");$(e).removeClass("theme-adminflare theme-asphalt theme-clean theme-default theme-dust theme-fresh theme-frost theme-purple-hills theme-silver theme-white"),$(e).addClass(i)
}})}}}),angular.module("directives").directive("tooltip",["$http","$compile",function(){return{restrict:"AC",link:function(e,t){$(t).tooltip&&$(t).tooltip()}}}]);