Built motion from commit 943eae279.|1.0.24
[motion.git] / public / app / 7377769b.app.js
similarity index 94%
rename from public/app/13562abb.app.js
rename to public/app/7377769b.app.js
index 02aed1e..41dccbf 100644 (file)
@@ -22,12 +22,12 @@ name:"Kuching"},{value:"Asia/Kuwait",name:"Kuwait"},{value:"Asia/Macao",name:"Ma
 href:"/salesforce/view/{{row.entity.id}}/account",name:"profile"},{class:"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.check({id:a}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")}).catch(function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.list",{url:"/list",templateUrl:"app/salesforce/list/list.html",controller:"SalesforceListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("SalesforceAccount",["$resource",function(a){return a("/api/salesforce/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"},fields:{params:{controller:"fields"},isArray:!0},check:{params:{controller:"check"}}})}]).factory("SalesforceConfiguration",["$resource",function(a){return a("/api/salesforce/accounts/:accountId/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("SalesforceField",["$resource",function(a){return a("/api/salesforce/accounts/:accountId/configurations/:configurationId/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce",{url:"/salesforce",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view.configurations",{url:"/configurations",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("SalesforceViewConfigurationListCtrl",["$scope","$stateParams","$translate","gridOptions","SalesforceConfiguration","$uibModal",function(a,b,c,d,e,f){a.initView=function(){var c={exporterCsvFilename:"salesforce_configurations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{class:"blue-hoki",href:"/salesforce/view/{{row.entity.AccountId}}/configurations/view/{{row.entity.id}}",name:"profile"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(e,c,a,{accountId:b.id})},a.createItem=function(){f.open({animation:!0,templateUrl:"app/salesforce/view/configuration/list/create.modal.html",controller:"SalesforceCreateConfigurationCtrl"}).result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("SalesforceCreateConfigurationCtrl",["$scope","$translate","$uibModalInstance","SalesforceConfiguration","xAlert","$stateParams","channel",function(a,b,c,d,e,f,g){a.form={},a.item={},a.channels=g,a.item.channel="voice",a.item.type="Queue",a.save=function(){return d.save({accountId:f.id},a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view.configurations.list",{url:"/list",templateUrl:"app/salesforce/view/configuration/list/list.html",controller:"SalesforceViewConfigurationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("SalesforceViewConfigurationViewCtrl",["$scope","$filter","$stateParams","$translate","socket","variable","xAlert","SalesforceAccount","SalesforceConfiguration","SalesforceField","Variable",function(a,b,c,d,e,f,g,h,i,j,k){a.$on("$destroy",function(){e.unsyncUpdates("salesforce_field")}),a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:300,scrollInertia:0},a.fieldType=[{type:"string",title:"String"},{type:"variable",title:"Variable"},{type:"customVariable",title:"Custom Variable"}],a.descFieldType=[{type:"string",title:"String"},{type:"keyValue",title:"Key Value"}],a.groupVariableByGroup=function(a){switch(a.group){case"voice_queue":return"Voice: Queue";default:return"Other"}},a.initView=function(){a.configurationName="",a.subjectConfig=[],a.descriptionConfig=[],a.fieldConfig=[],a.variables=f},a.getConfiguration=function(){return i.get({accountId:c.id,id:c.configurationId}).$promise.then(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,e.socket.on("salesforce_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})}).catch(function(a){g.error(a)})},a.getCustomVariables=function(){return k.get().$promise.then(function(b){a.customVariables=b.rows}).catch(function(a){g.error(a)})},a.getFields=function(){return h.fields({id:c.id}).$promise.then(function(c){a.accountFields=_.sortByOrder(b("salesforce")(c),"name","asc"),console.log(a.accountFields)}).catch(function(a){g.error(a)})},a.addItem=function(b){var d={};switch(b){case"subject":case"description":d={type:"string",content:""};break;case"field":d={content:""}}return i.save({accountId:c.id,id:c.configurationId,controller:b},d).$promise.then(function(c){switch(b){case"subject":a.subjectConfig.push(c);break;case"description":a.descriptionConfig.push(c);break;case"field":a.fieldConfig.push(c)}}).catch(function(a){g.error(a)})},a.changeType=function(b){"variable"===b.type?(b.content="",b.variableName=""):"string"===b.type?(b.VariableId=null,b.variableName=""):"customVariable"===b.type&&(b.VariableId=null,b.content=""),a.updateField(b)},a.updateField=function(a){return j.update({accountId:c.id,configurationId:c.configurationId,id:a.id},a).$promise.then(function(){}).catch(function(a){g.error(a)})},a.removeItem=function(a){return j.delete({accountId:c.id,configurationId:c.configurationId,id:a.id}).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+"!","success")}).catch(function(a){g.error(a)})},a.changeDescType=function(b){"keyValue"===b.type?(b.content="","string"===b.keyType?(b.VariableId=null,b.variableName=""):"variable"===b.keyType?(b.keyContent="",b.VariableId=null):"customVariable"===b.keyType&&(b.keyContent="",b.variableName="")):"string"===b.type&&(b.VariableId=null,b.variableName="",b.key="",b.keyContent=""),a.updateField(b)},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"name",b);if(c)switch(c.type){case"picklist":return c.picklistValues;default:return}}},a.changeFieldType=function(b){b.content="",b.variableName="",b.nameField="",b.VariableId=null,a.updateField(b)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view.configurations.view",{url:"/view/:configurationId",templateUrl:"app/salesforce/view/configuration/view/view.html",controller:"SalesforceViewConfigurationViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("SalesforceViewCtrl",["$scope","$http","$stateParams","$translate","$location","WizardHandler","socket","xAlert","Modal","$filter","SalesforceAccount",function(a,b,c,d,e,f,g,h,i,j,k){a.initView=function(){return k.get({id:c.id}).$promise.then(function(b){a.account=b}).catch(function(a){h.error(a)})},a.updateItem=function(){return k.update({id:c.id},a.account).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE")+".","success")}).catch(function(a){h.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.view",{url:"/view/:id",templateUrl:"app/salesforce/view/view.html",controller:"SalesforceViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.salesforce.view.account",{url:"/account",templateUrl:"app/salesforce/view/view.account.html"})}]),angular.module("xCallyShuttleApp").controller("SalesforceWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler","SalesforceAccount",function(a,b,c,d,e,f,g){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={},a.item.serverUrl=c.protocol()+"://"+location.host},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/salesforce/list")}).catch(function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.salesforce.wizard",{url:"/wizard",templateUrl:"app/salesforce/wizard/wizard.html",controller:"SalesforceWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.customization",{url:"/customization",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("CustomizationGeneralViewCtrl",["$scope","gridOptions","$uibModal","FileUploader","$cookieStore","xAlert","$translate","Setting","$rootScope",function(a,b,c,d,e,f,g,h,i){a.radioSwitch={isActive:!!i.license.custom,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"};var j=a.uploader=new d({url:"api/settings/logo/main",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+e.get("token")}});j.filters.push({name:"imageFilter",fn:function(a){return-1!=="|jpg|png|jpeg|".indexOf("|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|")}}),j.onSuccessItem=function(a,b){i.settings.logo=b.logo,f.show(g.instant("MESSAGE_WELL_DONE"),"success")},j.onErrorItem=function(){f.show(g.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},j.onCompleteAll=function(){j.clearQueue()};var k=a.uploader2=new d({url:"api/settings/logo/login",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+e.get("token")}});k.filters.push({name:"imageFilter",fn:function(a){return-1!=="|jpg|png|jpeg|".indexOf("|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|")}}),k.onSuccessItem=function(a,b){f.show(g.instant("MESSAGE_WELL_DONE"),"success")},k.onErrorItem=function(){f.show(g.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},k.onCompleteAll=function(){k.clearQueue()},a.initView=function(){return h.get({id:1}).$promise.then(function(b){a.settings={defaultLogo:b.defaultLogo,defaultLoginLogo:b.defaultLoginLogo,footerWhiteLabel:b.footerWhiteLabel,defaultFooterWhiteLabel:b.defaultFooterWhiteLabel}}).catch(function(a){f.error(a)})},a.update=function(){return h.update({id:1},a.settings).$promise.then(function(b){_.merge(i.settings,a.settings),f.show(g.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.customization.view.general",{url:"/general",templateUrl:"app/setting/customization/view/general/general.html",controller:"CustomizationGeneralViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}})}]),angular.module("xCallyShuttleApp").controller("CustomizationMotionBarViewCtrl",["$scope","gridOptions","$uibModal","FileUploader","$cookieStore","xAlert","$translate","Setting","$rootScope","$location",function(a,b,c,d,e,f,g,h,i,j){!i.license.preferred&&j.path("/landing"),a.radioSwitch={isActive:!!i.license.preferred,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"};var k=a.uploader=new d({url:"api/settings/logo/motionbar",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+e.get("token")}});k.filters.push({name:"imageFilter",fn:function(a){return-1!=="|jpg|png|jpeg|".indexOf("|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|")}}),k.onSuccessItem=function(a,b){f.show(g.instant("MESSAGE_WELL_DONE"),"success")},k.onErrorItem=function(){f.show(g.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},k.onCompleteAll=function(){k.clearQueue()},a.initView=function(){return h.get({id:1}).$promise.then(function(b){a.settings={defaultMotionBarLogo:b.defaultMotionBarLogo}}).catch(function(a){f.error(a)})},a.update=function(){return h.update({id:1},a.settings).$promise.then(function(a){f.show(g.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.customization.view.motionbar",{url:"/motionbar",templateUrl:"app/setting/customization/view/motionbar/motionbar.html",controller:"CustomizationMotionBarViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}})}]),angular.module("xCallyShuttleApp").controller("CustomizationViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.customization.view",{url:"/view",templateUrl:"app/setting/customization/view/view.html",controller:"CustomizationViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.general",{url:"/general",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("GeneralMainViewCtrl",["$scope","xAlert","$translate","Setting",function(a,b,c,d){a.initView=function(){return d.get({id:1}).$promise.then(function(b){a.settings={agi_port:b.agi_port,min_internal:b.min_internal,min_mailbox:b.min_mailbox,securePassword:b.securePassword,mailRoutingCapacity:b.mailRoutingCapacity,chatRoutingCapacity:b.chatRoutingCapacity,logoutOnWindowClose:b.logoutOnWindowClose}}).catch(function(a){b.error(a)})},a.update=function(){return d.update({id:1},a.settings).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.general.view.main",{url:"/main",templateUrl:"app/setting/general/view/main/main.html",controller:"GeneralMainViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("GeneralViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.general.view",{url:"/view",templateUrl:"app/setting/general/view/view.html",controller:"GeneralViewCtrl"})}]),angular.module("xCallyShuttleApp").factory("License",["$resource",function(a){return a("/api/licenses/:id/:controller",{id:"@id"},{request:{method:"POST",params:{id:"request"}},update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.license",{url:"/license",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("LicenseUpdateCtrl",["$scope","$translate","$uibModalInstance","xAlert","licenseString","License",function(a,b,c,d,e,f){a.form={},a.item={license:e.value},a.update=function(){return f.update(a.item).$promise.then(function(a){d.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){d.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").controller("LicenseViewCtrl",["$scope","$rootScope","$translate","License","xAlert","$window","$uibModal",function(a,b,c,d,e,f,g){a.radioSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.initView=function(){return d.get(function(b){a.item=b.license,a.licenseString=b.licenseString})},a.submitRequest=function(){return d.request(a.item,function(){e.show(c.instant("MESSAGE_WELL_DONE"),"success")},function(a){switch(a.status){case 304:e.show(a.statusText,"info");break;default:e.error(a)}})},a.updateLicense=function(){g.open({animation:!0,templateUrl:"app/setting/license/view/update.modal.html",controller:"LicenseUpdateCtrl",resolve:{licenseString:{value:a.licenseString}}}).result.then(function(){f.location.reload()})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.license.view",{url:"/view",templateUrl:"app/setting/license/view/view.html",controller:"LicenseViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/pricing-tables.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("Externip",["$resource",function(a){return a("/api/network/externips/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Localnet",["$resource",function(a){return a("/api/network/localnets/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network",{url:"/network",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("ExternipCtrl",["$scope","$uibModal","gridOptions","Externip",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"network_externip.csv",columnDefs:[{name:"value"},{name:"action",buttons:[{class:"blue-hoki",onClick:"grid.appScope.createItem(row.entity)",name:"profile"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(d,b,a)},a.createItem=function(c){b.open({animation:!0,templateUrl:"app/setting/network/view/externip/externip.create.modal.html",controller:"ExternipCreateCtrl",resolve:{item:c}}).result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("ExternipCreateCtrl",["$scope","$translate","$uibModalInstance","$stateParams","Externip","xAlert","item",function(a,b,c,d,e,f,g){a.initModal=function(){a.form={},a.item=g||{},a.title=g?b.instant("APPLICATION_EDIT_EXTERNIP"):b.instant("APPLICATION_NEW_EXTERNIP")},a.save=function(){return g?e.update({id:a.item.id},a.item).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){f.error(a)}):e.save({},a.item).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network.view.externip",{url:"/externip",templateUrl:"app/setting/network/view/externip/externip.html",controller:"ExternipCtrl"})}]),angular.module("xCallyShuttleApp").controller("LocalnetCtrl",["$scope","gridOptions","Localnet","$uibModal",function(a,b,c,d){a.initView=function(){var d={exporterCsvFilename:"network_localnet.csv",columnDefs:[{name:"value"},{name:"action",buttons:[{class:"blue-hoki",onClick:"grid.appScope.createItem(row.entity)",name:"profile"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=b.gridOptions(c,d,a)},a.createItem=function(b){d.open({animation:!0,templateUrl:"app/setting/network/view/localnet/localnet.create.modal.html",controller:"LocalnetCreateCtrl",resolve:{item:b}}).result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("LocalnetCreateCtrl",["$scope","$translate","$uibModalInstance","$stateParams","Localnet","xAlert","item",function(a,b,c,d,e,f,g){a.initModal=function(){if(a.form={},a.item=g||{},a.title=g?b.instant("APPLICATION_EDIT_LOCALNET"):b.instant("APPLICATION_NEW_LOCALNET"),g&&g.value){var c=a.item.value.split("/");c.length>1&&(a.item.address=c[0],a.item.mask=c[1])}},a.save=function(){var d=a.item.address+"/"+a.item.mask;return g?e.update({id:a.item.id},{value:d}).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){f.error(a)}):e.save({},{value:d}).$promise.then(function(a){f.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network.view.localnet",{url:"/localnet",templateUrl:"app/setting/network/view/localnet/localnet.html",controller:"LocalnetCtrl"})}]),angular.module("xCallyShuttleApp").controller("StunaddrCtrl",["$scope","Setting","xAlert","$translate",function(a,b,c,d){a.initView=function(){return b.get({id:1}).$promise.then(function(b){a.item={stunaddr:b.stunaddr}}).catch(function(a){c.error(a)})},a.update=function(){return b.update({id:1},a.item).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network.view.stunaddr",{url:"/stunaddr",templateUrl:"app/setting/network/view/stunaddr/stunaddr.html",controller:"StunaddrCtrl"})}]),angular.module("xCallyShuttleApp").controller("NetworkViewCtrl",function(){}),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.network.view",{url:"/view",templateUrl:"app/setting/network/view/view.html",controller:"NetworkViewCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting",{url:"/setting",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:18}}})}]),angular.module("xCallyShuttleApp").factory("Setting",["$resource",function(a){return a("/api/settings/:id/:controller/:param",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Smtp",["$resource",function(a){return a("/api/mail/servers/out/:id/:controller/:controller2",{id:"@id"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.smtp",{url:"/smtp",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("SmtpViewCtrl",["$scope","$stateParams","$translate","socket","MailServerOut","Setting","MailAccount","xAlert","Modal",function(a,b,c,d,e,f,g,h,i){a.initView=function(){return a.smtpDisabled=!1,a.isActive=!0,a.size="small",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.CONST_TIMEOUT=3e4,a.item={account:{service:!0,MailServerOut:{ssl:!1}}},a.$on("$destroy",function(){d.socket.removeAllListeners("mail_server_out:state")}),d.socket.on("mail_server_out:state",function(b){a.item&&Number(b.id)===a.item.account.MailServerOut.id&&(a.item.account.MailServerOut.state=b.state,a.item.account.MailServerOut.source=JSON.parse(b.source))}),f.get({id:"smtp"}).$promise.then(function(b){a.item.account=b}).catch(function(b){switch(b.status){case 404:a.item.account.name=null,a.item.account.address=null,a.item.account.description="Custom account",a.item.account.MailServerOut={port:465,ssl:!0},h.show("Service SMTP server not configured.","info");break;default:h.error(b)}})},a.updateItem=function(){return a.item.account.id?(delete a.item.account.MailServerOut.state,delete a.item.account.MailServerOut.source,f.update({id:"smtp",controller:a.item.account.id},a.item.account).$promise.then(function(){h.show(c.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){h.error(a)})):f.save({id:"smtp"},{description:a.item.account.description,name:a.item.account.name,address:a.item.account.address,service:a.item.account.service,custom:!0,MailServerOut:a.item.account.MailServerOut}).$promise.then(function(b){a.item.account=b,h.show(c.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){h.error(a)})},a.test=function(){return e.get({id:a.item.account.MailServerOut.id,controller:"test"}).$promise.catch(function(a){console.error(a)})},a.delete=i.confirm.delete(function(){return f.delete({id:"smtp"}).$promise.then(function(){h.show(c.instant("MESSAGE_WELL_DONE")+"!","success"),a.item={account:{service:!0,name:null,address:null,description:"Custom account",MailServerOut:{port:465,ssl:!0}}}}).catch(function(a){h.error(a)})})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.smtp.view",{url:"/view",templateUrl:"app/setting/smtp/view/view.html",controller:"SmtpViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system",{url:"/system",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("SystemViewConsoleCtrl",["$scope","Setting","xAlert","usSpinnerService","$timeout","$translate","socket",function(a,b,c,d,e,f,g){function h(b){var c=_.findIndex(a.commandHistory.commands,function(a){return a===b});-1!==c&&a.commandHistory.commands.splice(c,1),a.commandHistory.commands.unshift(b)}a.output="<b>"+f.instant("APPLICATION_CONSOLE_WELCOME")+"</b><br/>",a.item={command:""},a.commandHistory={commands:[],index:-1},a.busy=!1,a.cmdFocus=function(){e(function(){angular.element("#command").trigger("focus")})},a.sendCmd=function(){if(a.commandHistory.index=-1,a.tmp=a.item.command,a.item.command="",a.output+="<b>motion*CLI> "+a.tmp+"</b><br>",a.tmp)return h(a.tmp.trim()),a.busy=!0,d.spin("console-spinner"),b.save({controller:"asterisk"},{command:a.tmp}).$promise.catch(function(a){c.error(a)})},g.socket.on("console:result",function(b){a.output+=b.content.replace(/(?:\r\n|\r|\n)/g,"<br />").replace("Response: Follows<br />Privilege: Command<br />","").replace(/ActionID: .[0-9]*<br \/>/,"").replace(/ActionID: .[0-9]*/,"")+"<br>",d.stop("console-spinner"),a.busy=!1,a.cmdFocus()}),g.socket.on("console:error",function(b){d.stop("console-spinner"),a.output+="command error:"+b.data.message+"<br>",a.busy=!1,a.cmdFocus()}),a.keyUp=function(b){switch(b.keyCode){case 40:a.commandHistory.commands[a.commandHistory.index-1]?a.item.command=a.commandHistory.commands[--a.commandHistory.index]:(a.item.command="",a.commandHistory.index=-1);break;case 38:a.commandHistory.commands[a.commandHistory.index+1]&&(a.item.command=a.commandHistory.commands[++a.commandHistory.index]);break;case 37:case 39:break;default:a.commandHistory.index=-1}},e(function(){angular.element("#command").trigger("focus"),d.stop("console-spinner")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view.console",{url:"/console",templateUrl:"app/setting/system/view/console/console.html",controller:"SystemViewConsoleCtrl"})}]),angular.module("xCallyShuttleApp").controller("SystemViewGeneralCtrl",["$scope","$stateParams","$translate","socket","Setting","xAlert","usSpinnerService",function(a,b,c,d,e,f,g){function h(b){a.system.memory={labels:_.keys(b.memory.details),values:_.values(_.map(b.memory.details,function(a){return Math.round(a/1024)})),Total:Math.round(b.memory.Total/1024)},g.stop("memory-spinner"),a.system.disks=[],_.forEach(b.disks,function(b){a.system.disks.push({mount:b.mount,size:Number((b.size/1048576).toFixed(2)),values:_.values(_.map(b.details,function(a){return Number((a/1048576).toFixed(2))})),labels:_.keys(b.details)})}),a.system.mount=a.system.disks[0],g.stop("disk-spinner"),a.system.cpu={motion:Math.round(b.cpu.motion),cores:[]},_.forEach(b.cpu.cores,function(b){delete b.nice,delete b.irq,a.system.cpu.cores.push({labels:_.keys(b),values:_.values(b),colours:["#803690","#DCDCDC","#00ADF9"]})}),g.stop("cpu-spinner"),a.loading=!1}a.system={mount:void 0},a.initView=function(){return g.spin("memory-spinner"),g.spin("disk-spinner"),g.spin("cpu-spinner"),a.loading=!0,e.get({controller:"system"}).$promise.then(function(a){h(a)}).catch(function(b){g.stop("memory-spinner"),g.stop("disk-spinner"),g.stop("cpu-spinner"),a.loading=!1,f.error(b)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view.general",{url:"/general",templateUrl:"app/setting/system/view/general/general.html",controller:"SystemViewGeneralCtrl"})}]),angular.module("xCallyShuttleApp").controller("SystemViewLogsCtrl",["$scope","$stateParams","$translate","socket","Setting","xAlert","usSpinnerService",function(a,b,c,d,e,f,g){a.logfiles=["access","motion-info","motion-error","dashboard-info","dashboard-error","agi-info","agi-error","ami-info","ami-error","api-info","api-error","chat-info","chat-error","mail-info","mail-error","fax-info","fax-error","sms-info","sms-error","openchannel-info","openchannel-error"],a.item={filename:"access"},a.getLog=function(){return a.log="",a.loading=!0,g.spin("logs-spinner"),e.get({controller:"logs",filename:a.item.filename}).$promise.then(function(b){a.log=b.log,a.loading=!1,g.stop("logs-spinner")}).catch(function(b){g.stop("logs-spinner"),a.loading=!1,f.error(b)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view.logs",{url:"/logs",templateUrl:"app/setting/system/view/logs/logs.html",controller:"SystemViewLogsCtrl"})}]),angular.module("xCallyShuttleApp").controller("SystemViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.system.view",{url:"/view",templateUrl:"app/setting/system/view/view.html",controller:"SystemViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("UpdateListCtrl",["$scope","gridOptions","$uibModal","$location","Update","xAlert","$log","$translate","$state",function(a,b,c,d,e,f,g,h,i){a.initCounter=function(){a.$on("timer-stopped",function(a,b){f.show(h.instant("MESSAGE_UPDATE_COMPLETED"),"success"),i.go("main.setting.updates.list")})},a.initView=function(){return e.get({controller:"current"}).$promise.then(function(b){a.currentVersion=b.currentVersion,a.latestVersion=b.latestVersion}).catch(function(a){console.log(a)})},a.pull=function(){c.open({animation:!0,templateUrl:"app/setting/update/list/list.pull.html",controller:"UpdateListPullCtrl"}).result.then(function(){return d.path("/setting/updates/landing"),e.pull().$promise.then(function(b){var c=!1;b&&(b.summary&&_.forOwn(b.summary,function(a){a&&(c=!0)}),(b.insertions&&!_.isEmpty(b.insertions)||b.deletions&&!_.isEmpty(b.deletions))&&(c=!0)),c?(a.$broadcast("timer-stop"),document.getElementsByTagName("timer")[0].stop()):(f.show(h.instant("MESSAGE_NO_UPDATES"),"success"),d.path("/setting/updates/list"))}).catch(function(a){console.log(a),f.error(a),d.path("/setting/updates/list")})},function(){g.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.updates.list",{url:"/list",templateUrl:"app/setting/update/list/list.html",controller:"UpdateListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"css",insertBefore:"#ng_load_plugins_before",files:["assets/css/pricing-table.css"]}])}]}}).state("main.setting.updates.landing",{url:"/landing",templateUrl:"app/setting/update/list/landing.html",controller:"UpdateListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"css",insertBefore:"#ng_load_plugins_before",files:["assets/css/error.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("UpdateListPullCtrl",["$scope","$uibModalInstance",function(a,b){a.modal={dismissable:!0,title:"Confirm Update",html:"Are you sure you want to update?",buttons:[{classes:"btn btn-success",text:"Update",click:function(){b.close()}},{classes:"btn default",text:"Cancel",
 click:function(){b.dismiss("cancel")}}]}}]),angular.module("xCallyShuttleApp").factory("Update",["$resource",function(a){return a("/api/updates/:id/:controller",{id:"@id"},{pull:{method:"GET",params:{id:"pull"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.setting.updates",{url:"/updates",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["hasUpdate"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("SquareOdbcListCtrl",["$scope","$uibModal","$translate","SquareOdbc","gridOptions","xAlert",function(a,b,c,d,e,f){a.initView=function(){var b={exporterCsvFilename:"odbc.csv",columnDefs:[{name:"name"},{name:"dsn",displayName:"APPLICATION_ODBC"},{name:"description"},{name:"action",width:250,buttons:[{class:"blue-hoki",href:"/square/odbc/view/{{row.entity.id}}/settings",name:"settings"},{class:"green-jungle",name:"check",onClick:"grid.appScope.checkConnection(row.entity.id)"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=e.gridOptions(d,b,a)},a.createItem=function(){b.open({animation:!0,templateUrl:"app/square/odbc/list/list.create.modal.html",controller:"SquareOdbcListCreateCtrl"}).result.then(function(){a.gridOptions.getPage()})},a.checkConnection=function(a){return d.get({id:a,controller:"check"}).$promise.then(function(){f.show(c.instant("MESSAGE_CONNECTION_VERIFIED"),"success")}).catch(function(){f.show(c.instant("MESSAGE_CONNECTION_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").controller("SquareOdbcListCreateCtrl",["$scope","$translate","$uibModalInstance","SquareOdbc","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.item.dsn||(a.item.dsn="DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion"),a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.odbc.list",{url:"/list",templateUrl:"app/square/odbc/list/list.html",controller:"SquareOdbcListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.odbc",{url:"/odbc",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").factory("SquareOdbc",["$resource",function(a){return a("/api/square/odbc/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SquareOdbcViewCtrl",["$scope","$translate","$stateParams","SquareOdbc","xAlert",function(a,b,c,d,e){a.odbc={},a.getOdbc=function(){return d.get({id:c.id}).$promise.then(function(b){a.odbc=b}).catch(function(a){e.error(a)})},a.updateOdbc=function(){var f=angular.copy(a.odbc);return d.update({id:c.id},f).$promise.then(function(){e.show(b.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.odbc.view",{url:"/view/:id",templateUrl:"app/square/odbc/view/view.html",controller:"SquareOdbcViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.square.odbc.view.settings",{url:"/settings",templateUrl:"app/square/odbc/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("SquareProjectListCtrl",["$scope","$uibModal","SquareProject","gridOptions","uiGridConstants",function(a,b,c,d,e){a.initView=function(){var b={exporterCsvFilename:"projects.csv",columnDefs:[{name:"name"},{name:"description"},{name:"createdAt",displayName:"APPLICATION_CREATED_AT",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.createdAt | date:'yyyy-MM-dd HH:mm:ss'}}</div>",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:e.filter.GREATER_THAN_OR_EQUAL,hasTime:!0},{name:"To",condition:e.filter.LESS_THAN_OR_EQUAL,hasTime:!0}]},{name:"updatedAt",displayName:"APPLICATION_UPDATED_AT",cellClass:"text-center ui-grid-vcenter",cellTemplate:"<div>{{row.entity.updatedAt | date:'yyyy-MM-dd HH:mm:ss'}}</div>",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:e.filter.GREATER_THAN_OR_EQUAL,hasTime:!0},{name:"To",condition:e.filter.LESS_THAN_OR_EQUAL,hasTime:!0}]},{name:"action",width:160,buttons:[{class:"blue-hoki",href:"/square/projects/view/{{row.entity.id}}",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){b.open({animation:!0,templateUrl:"app/square/project/list/list.create.modal.html",controller:"SquareProjectListCreateCtrl"}).result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("SquareProjectListCreateCtrl",["$scope","$translate","$uibModalInstance","$location","SquareProject","xAlert",function(a,b,c,d,e,f){a.form={},a.item={},a.save=function(){return e.save(a.item).$promise.then(function(a){c.close(a),d.path("/square/projects/view/"+a.id)}).catch(function(a){f.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.projects.list",{url:"/list",templateUrl:"app/square/project/list/list.html",controller:"SquareProjectListCtrl",authenticate:!0})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.projects",{url:"/projects",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").factory("SquareProject",["$resource",function(a){return a("/api/square/projects/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SquareProjectViewCtrl",["$scope","$stateParams","Auth","xAlert","SquareProject","socket","$translate","$log","$uibModal",function(a,b,c,d,e,f,g,h,i){a.squareProject={},a.$on("$destroy",function(){f.unsyncUpdates("square_project")}),a.getProject=function(){return e.get({id:b.id}).$promise.then(function(b){a.squareProject=b,angular.element(document).ready(function(){window.onerror=function(a,b,c){try{if(null!==a&&-1!==a.indexOf("Script error."));else{(new Image).src="assets/plugins/mxgraph/images/1x1.png?msg="+encodeURIComponent(a)+"&url="+encodeURIComponent(b)+"&lnum="+encodeURIComponent(c)}}catch(err){d.error(err)}},b.token=c.getToken();var a=new EditorUi(new Editor);a.openString(b.preproduction,b.name,b),a.editor.graphChangeListener=function(a,b){b.properties.rtChange||!1||(this.modified=!0)}}),f.socket.on("square_project:save",function(c){c.id===b.id&&(a.squareProject=_.merge(a.squareProject,c))})}).catch(function(a){d.error(a)})},a.editNotes=function(){i.open({animation:!0,templateUrl:"app/square/project/view/projectNotes.modal.html",controller:["$scope","$uibModalInstance","notes",function(a,b,c){a.notes=c,a.close=function(){b.close(a.notes)},a.cancel=function(){b.dismiss("cancel")}}],resolve:{notes:{value:a.squareProject.notes}}}).result.then(function(a){return e.update({id:b.id},{notes:a.value}).$promise.then(function(){d.show(g.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){d.error(a)})},function(){h.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.projects.view",{url:"/view/:id",templateUrl:"app/square/project/view/view.html",controller:"SquareProjectViewCtrl",authenticate:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",serie:!0,cache:!1,files:["assets/plugins/mxgraph/css/common.css","assets/plugins/mxgraph/css/explorer.css","assets/plugins/mxgraph/styles/grapheditor.css","assets/plugins/mxgraph/styles/custom.css","assets/plugins/square/js/custom.js","assets/plugins/mxgraph/js/mxClient.js","assets/plugins/square/js/Editor.js","assets/plugins/square/js/Graph.js","assets/plugins/square/js/EditorUi.js","assets/plugins/square/js/Actions.js","assets/plugins/square/js/Menus.js","assets/plugins/square/js/Sidebar.js","assets/plugins/square/js/Toolbar.js","assets/plugins/square/js/Dialogs.js"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.realtime",{url:"/realtime",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:14}}})}]),angular.module("xCallyShuttleApp").factory("ReportSquare",["$resource",function(a){return a("/api/report/square/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("ReportSquareDetail",["$resource",function(a){return a("/api/report/square/details/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").controller("SquareRealtimeViewGeneralCtrl",["$scope","$log","$uibModal","$translate","socket","xAlert","ReportSquare","usSpinnerService","$q","uiGridConstants",function(a,b,c,d,e,f,g,h,i,j){function k(b){return h.spin("spinner-grid"),g.get(m).$promise.then(function(b){a.gridOptions.totalItems=b.count,a.gridOptions.data=b.rows}).catch(function(a){f.error(a)}).finally(function(){b&&l(),h.stop("spinner-grid")})}function l(){e.socket.on("report_square:save",function(b){if(b.leaveAt){_.remove(a.gridOptions.data,{id:b.id})&&k()}else{if(!_.find(a.gridOptions.data,{id:b.id})&&a.gridOptions.data.length<m.limit){var c=_.clone(m);if(_.forEach(["offset","limit","controller","order"],function(a){delete c[a]}),_.isEmpty(c))a.gridOptions.data.push(b);else{var d=!0;_.forOwn(c,function(a,c){_.includes(b[c],a)||(d=!1)}),d&&a.gridOptions.data.push(b)}}}})}var m={controller:"realtime",offset:0,limit:25};a.moment=moment,a.init=function(){a.gridOptions={enableGridMenu:!0,headerCellFilter:"translate",enableHorizontalScrollbar:0,enableVerticalScrollbar:0,enableFiltering:!0,showGridFooter:!0,paginationPageSizes:[10,25,50,75],paginationPageSize:25,useExternalPagination:!0,useExternalSorting:!0,useExternalFiltering:!0,showTreeExpandNoChildren:!0,columnDefs:[{name:"uniqueid"},{name:"callerid"},{name:"extension"},{name:"project_name",displayName:"APPLICATION_PROJECT",headerCellFilter:"translate"},{name:"joinAt",displayName:"APPLICATION_ELAPSED_TIME",headerCellFilter:"translate",cellClass:"text-center ui-grid-vcenter",cellTemplate:'<div><css-timer start-time="row.entity.joinAt"></css-timer></div>',enableSorting:!1,enableColumnMenu:!1,enableFiltering:!1}],data:[],gridMenuTitleFilter:function(a){var b=i.defer();return b.resolve(d.instant(a)),b.promise},onRegisterApi:function(b){a.gridApi=b,a.gridApi.grid.registerDataChangeCallback(function(){n(a.gridApi.core.getVisibleRows(a.gridApi.grid).length)}),a.gridApi.core.on.sortChanged(a,function(a,b){0===b.length?m.order=null:m.order=b[0].name+" "+b[0].sort.direction.toUpperCase(),k()}),a.gridApi.pagination.on.paginationChanged(a,function(a,b){m.offset=(a-1)*b,m.limit=b,k()}),a.gridApi.core.on.filterChanged(a,function(){this.grid.columns.forEach(function(a){a.filters[0].term?m[a.name]=a.filters[0].term:delete m[a.name]}),k()})}},k(!0)};var n=function(a){var b=a?30*a+130:270;angular.element(document.getElementsByClassName("ui-grid")[0]).css("height",b+"px"),angular.element(document.getElementsByClassName("ui-grid-viewport")).css("height",30*a+"px")};a.$on("$destroy",function(){e.unsyncUpdates("report_square")})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.realtime.view.general",{url:"/general",templateUrl:"app/square/realtime/view/general/general.html",controller:"SquareRealtimeViewGeneralCtrl"})}]),angular.module("xCallyShuttleApp").controller("SquareRealtimeViewCtrl",["$scope",function(a){}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.realtime.view",{url:"/view",templateUrl:"app/square/realtime/view/view.html",controller:"SquareRealtimeViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}})}]),angular.module("xCallyShuttleApp").controller("SquareRecordingListCtrl",["$scope","SquareRecording","gridOptions","uiGridConstants",function(a,b,c,d){a.SquareRecording=b;a.initView=function(){var e={exporterCsvFilename:"recordings.csv",rowHeight:30,columnDefs:[{name:"uniqueid"},{name:"callerid",displayName:"APPLICATION_CALLERIDNUM"},{name:"filename"},{name:"extension"},{name:"projectName",displayName:"APPLICATION_PROJECT"},{name:"createdAt",displayName:"APPLICATION_DATE",cellFilter:"date:'yyyy-MM-dd HH:mm'",filterHeaderTemplate:'<div class="ui-grid-filter-container row"><div ng-repeat="colFilter in col.filters" class="col-md-6 col-md-offset-0 col-sm-5 col-sm-offset-0 col-xs-5 col-xs-offset-0"><div custom-grid-date-filter-header></div></div></div>',filters:[{name:"From",condition:d.filter.GREATER_THAN_OR_EQUAL,hasTime:!0},{name:"To",condition:d.filter.LESS_THAN_OR_EQUAL,hasTime:!0}],sort:{direction:d.DESC,priority:0}},{name:"audio",displayName:"",width:100,enableSorting:!1,enableFiltering:!1,cellClass:"ui-grid-vcenter",cellTemplate:"<div><audio-file-download data-ng-if=\"row.entity.savePath.split('.').pop() == 'wav'\" params=\"{id:row.entity.id,controller:'stream'}\" resource=\"grid.appScope.SquareRecording\"></audio-file-download><span data-ng-if=\"row.entity.value.split('.').pop() == 'gsm'\" title=\"{{'MESSAGE_GSM_PREVIEW_NOT_SUPPORTED' | translate}}\">{{'MESSAGE_GSM_PREVIEW_NOT_SUPPORTED' | translate}}</span></div>"},{name:"action",width:80,buttons:[{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.filename || row.entity.uniqueid, row.entity.id)"},{directive:"<motion-file-download params=\"{id:row.entity.id,controller:'stream'}\" resource=\"grid.appScope.SquareRecording\" mimetype=\"'audio/'+row.entity.value.split('.').pop()\" btnclass=\"btn btn-xs blue-hoki\" filename=\"(row.entity.filename || row.entity.uniqueid)+'.'+row.entity.savePath.split('.').pop()\"></motion-file-download>"}]}]};a.gridOptions=c.gridOptions(b,e,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.recordings.list",{url:"/list",templateUrl:"app/square/recording/list/list.html",controller:"SquareRecordingListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square.recordings",{url:"/recordings",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").factory("SquareRecording",["$resource",function(a){return a("/api/square/recordings/:id/:controller",{id:"@id"},{update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.square",{url:"/square",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:14}}})}]),angular.module("xCallyShuttleApp").factory("Agent",["$resource",function(a){return a("/api/agents/:id/:controller/:controller1/:controller2/:controller3",{id:"@id"},{changePassword:{method:"PUT",params:{controller:"password"}},update:{method:"PUT"},patch:{method:"PATCH"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents",{url:"/agents",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}}})}]),angular.module("xCallyShuttleApp").controller("AgentListCtrl",["$scope","$timeout","Agent","Auth","gridOptions",function(a,b,c,d,e){a.initView=function(){a.Auth=d;var b={exporterCsvFilename:"agents.csv",columnDefs:[{name:"fullname"},{name:"name",displayName:"APPLICATION_USERNAME"},{name:"internal"},{name:"email"},{name:"description"},{name:"action",width:100,buttons:[{class:"blue-hoki",href:"/staff/agents/view/{{row.entity.id}}/account",name:"profile"},{class:"green-meadow",href:"/staff/agents/view/{{row.entity.id}}/queues/voice",name:"queues"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"}]}]};a.gridOptions=e.gridOptions(c,b,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents.list",{url:"/list",templateUrl:"app/staff/agent/list/list.html",controller:"AgentListCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}}})}]),angular.module("xCallyShuttleApp").controller("AgentViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$cookieStore","Agent","FileUploader","Auth","MailQueue","User","VoiceQueue","ChatQueue","FaxQueue","SmsQueue","OpenChannelQueue","Setting",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){a.Auth=i,a.forms={},a.params={penalty:0},a.radioSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"};var r=function(b){return{select:function(c,d){return g.save(c,{values:d,penalty:a.params.penalty}).$promise.then(function(){b()}).catch(function(a){console.log(a)})},deselect:function(a){return g.delete(a).$promise.then(function(){b()}).catch(function(a){console.log(a)})}}};a.initVoiceQueues=function(){var b={},c={};return a.penalty=0,l.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{name:a.name}}),g.get({id:e.id,controller:"voice",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{name:a.name,penalty:a.UserHasVoiceQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"voice",e.id,r,a.initVoiceQueues)}).catch(function(a){console.error(a)})},a.initChatQueues=function(){var b={},c={};return a.penalty=0,m.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"chat",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name,penalty:a.UserHasChatQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"chat",e.id,r,a.initChatQueues)}).catch(function(a){console.error(a)})},a.initMailQueues=function(){var b={},c={};return a.penalty=0,j.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"mail",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name,penalty:a.UserHasMailQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"mail",e.id,r,a.initMailQueues)}).catch(function(a){console.error(a)})},a.initSmsQueues=function(){var b={},c={};return a.penalty=0,o.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"sms",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name,penalty:a.UserHasSmsQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"sms",e.id,r,a.initSmsQueues)}).catch(function(a){console.error(a)})},a.initFaxQueues=function(){var b={},c={};return a.penalty=0,n.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"fax",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name,penalty:a.UserHasFaxQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"fax",e.id,r,a.initFaxQueues)}).catch(function(a){console.error(a)})},a.initOpenchannelQueues=function(){var b={},c={};return a.penalty=0,p.get().$promise.then(function(a){return b.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name}}),g.get({id:e.id,controller:"openchannel",controller2:"queues"}).$promise}).then(function(a){c.queues=_.map(a.rows,function(a){return{id:a.id,name:a.name,penalty:a.UserHasOpenchannelQueue.penalty}})}).then(function(){ComponentsDropdowns.bindAgent(b,c,"openchannel",e.id,r,a.initOpenchannelQueues)}).catch(function(a){console.error(a)})},a.updatePassword=function(){var b={newPassword:a.agent.newPwd};return i.isAgent()?b.oldPassword=a.agent.currentPwd:b.id=e.id,k.changePassword(b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success"),a.agent.newPwd="",a.agent.reNewPwd="",a.agent.currentPwd="",a.forms.changePwd.$setPristine(),a.forms.changePwd.$setUntouched()}).catch(function(a){c.error(a)})};var s=a.uploader=new h({url:"api/users/"+e.id+"/avatar",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+f.get("token")}});s.filters.push({name:"imageFilter",fn:function(a){return-1!=="|jpg|png|jpeg|".indexOf("|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|")}}),s.onSuccessItem=function(b,e){a.agent.userpic=e.userpic,a.agent.id===i.getCurrentUser().id&&(i.getCurrentUser().userpic=e.userpic),c.show(d.instant("MESSAGE_WELL_DONE"),"success")},s.onErrorItem=function(){c.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},s.onCompleteAll=function(){s.clearQueue()},a.initView=function(){return g.get({id:e.id}).$promise.then(function(b){return a.agent=b,a.agent.transport=a.agent.transport?a.agent.transport.split(","):[],a.agent.allow=a.agent.allow?a.agent.allow.split(";"):[],a.agent.nat=a.agent.nat?a.agent.nat.split(","):[],q.get({id:1}).$promise}).then(function(b){a.setting=b}).catch(function(a){c.error(a)})},a.patchItem=function(){return g.update({id:e.id},{chatCapacity:a.agent.chatCapacity,mailCapacity:a.agent.mailCapacity,faxCapacity:a.agent.faxCapacity,smsCapacity:a.agent.smsCapacity,openchannelCapacity:a.agent.openchannelCapacity}).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){c.error(a)})},a.updateItem=function(){var b=angular.copy(a.agent);return delete b.password,delete b.md5secret,b.transport=b.transport.join(","),b.allow=b.allow.join(";"),b.nat=b.nat.join(","),g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents.view",{url:"/view/:id",templateUrl:"app/staff/agent/view/view.html",controller:"AgentViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]},data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.account",{url:"/account",templateUrl:"app/staff/agent/view/view.account.html",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:4}},resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}}).state("main.staff.agents.view.voice",{url:"/voice",templateUrl:"app/staff/agent/view/view.voice.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.chat",{url:"/chat",templateUrl:"app/staff/agent/view/view.chat.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.mail",{url:"/mail",templateUrl:"app/staff/agent/view/view.mail.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.fax",{url:"/fax",templateUrl:"app/staff/agent/view/view.fax.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.sms",{url:"/sms",templateUrl:"app/staff/agent/view/view.sms.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.openchannel",{url:"/openchannel",templateUrl:"app/staff/agent/view/view.openchannel.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.motionbar",{url:"/motionbar",templateUrl:"app/staff/agent/view/view.motionbar.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}}}).state("main.staff.agents.view.queues",{url:"/queues",templateUrl:"app/staff/agent/view/view.queues.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:4}},cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.staff.agents.view.queues.voice",{url:"/voice",templateUrl:"app/staff/agent/view/view.queues.voice.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:7}}}).state("main.staff.agents.view.queues.chat",{url:"/chat",templateUrl:"app/staff/agent/view/view.queues.chat.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:8}}}).state("main.staff.agents.view.queues.mail",{url:"/mail",templateUrl:"app/staff/agent/view/view.queues.mail.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:9}}}).state("main.staff.agents.view.queues.fax",{url:"/fax",templateUrl:"app/staff/agent/view/view.queues.fax.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:10}}}).state("main.staff.agents.view.queues.sms",{url:"/sms",templateUrl:"app/staff/agent/view/view.queues.sms.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:11}}}).state("main.staff.agents.view.queues.openchannel",{url:"/openchannel",templateUrl:"app/staff/agent/view/view.queues.openchannel.html",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:20}}})}]),angular.module("xCallyShuttleApp").controller("AgentWizardCtrl",["$scope","$rootScope","$location","$translate","$http","Agent","VoiceQueue","ChatQueue","MailQueue","SmsQueue","FaxQueue","OpenChannelQueue","Setting","xAlert","WizardHandler",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){a.maxAmount=1e3,a._data={voice:{queues:[]},chat:{queues:[]},mail:{queues:[]},sms:{queues:[]},fax:{queues:[]},openchannel:{queues:[]}},a._agent=angular.copy(a._data),a.forms={info:void 0,voice:void 0},a.item={role:"agent",allow:["alaw","ulaw","gsm"],transport:["udp"],context:"from-sip"},a.next=function(){o.wizard().next()},a.getAmount=function(){return m.get({controller:"internal",internal:a.item.minInternal}).$promise.then(function(b){a.item.minInternal=Number(b.value),a.maxAmount=b.range||1e3}).catch(function(a){n.error(a)})},a.exitValidation=function(a){return a},a.getFirstFreeInternal=function(){return m.get({controller:"internal"}).$promise.then(function(b){return a.internal=b,a.item.internal=b.value,a.item.minInternal=b.value,a.maxAmount=b.range||1e3,m.get({id:1}).$promise}).then(function(b){a.setting=b}).catch(function(a){n.error(a)})},a.createItem=function(){var b=angular.copy(a.item);return delete b.minInternal,b.transport&&(b.transport=b.transport.join(",")),a.item.allow&&(b.allow=b.allow.join(";")),b.channels=a._agent,f.save(b).$promise.then(function(a){c.path("/staff/agents/view/"+a.id+"/queues/voice")}).catch(function(a){console.log(a),n.error(a)})},a.createItems=function(){var b=angular.copy(a.item);return delete b.internal,b.transport&&(b.transport=b.transport.join(",")),b.allow&&(b.allow=b.allow.join(";")),f.save({id:"bulk"},b).$promise.then(function(){c.path("/staff/agents/list")}).catch(function(a){console.log(a),n.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.agents.wizard",{url:"/wizard",templateUrl:"app/staff/agent/wizard/wizard.html",controller:"AgentWizardCtrl",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}},resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.staff.agents.bulk",{url:"/bulk",templateUrl:"app/staff/agent/wizard/wizard-bulk.html",controller:"AgentWizardCtrl",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff",{url:"/staff",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("TeamCreateCtrl",["$scope","$uibModalInstance","Team","xAlert",function(a,b,c,d){a.form={},a.item={},a.ok=function(){return c.save(a.item).$promise.then(function(){b.close(a.item)}).catch(function(a){d.error(a)})},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("TeamListCtrl",["$scope","Team","gridOptions","$uibModal",function(a,b,c,d){a.initView=function(){var d={exporterCsvFilename:"teams.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:100,buttons:[{class:"{{row.entity.defaultEntry ? 'blue-hoki disabled' : 'blue-hoki'}}",href:"/staff/teams/view/{{row.entity.id}}/settings",name:"profile"},{class:"{{row.entity.defaultEntry ? 'green-turquoise disabled' : 'green-turquoise'}}",name:"agents",href:"/staff/teams/view/{{row.entity.id}}/agents"},{class:"{{row.entity.defaultEntry ? 'red-sunglo disabled' : 'red-sunglo'}}",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.createItem=function(){d.open({animation:!0,templateUrl:"app/staff/team/list/create.modal.html",controller:"TeamCreateCtrl"}).result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.teams.list",{url:"/list",templateUrl:"app/staff/team/list/list.html",controller:"TeamListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Team",["$resource",function(a){return a("/api/teams/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.teams",{url:"/teams",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin"],redirectTo:"landing"}}})}]),angular.module("xCallyShuttleApp").controller("TeamViewCtrl",["$scope","$http","$stateParams","$translate","Team","Agent","xAlert",function(a,b,c,d,e,f,g){var h=function(){return{select:function(b){return console.log("agents",b),e.save({id:a.team.id,controller:"agents"},{agents:b})},deselect:function(b){return e.delete({id:a.team.id,controller:"agents",agents:b})}}};a.initView=function(){return e.get({id:c.id}).$promise.then(function(b){a.team=b}).catch(function(a){g.error(a)})},a.initAgents=function(){return f.get().$promise.then(function(b){return a.agents=b.rows,e.get({id:c.id,controller:"agents"}).$promise}).then(function(b){ComponentsDropdowns.bindTeam(_.map(b.rows,"id"),_.map(a.agents,function(a){return{id:a.id,name:a.name,fullname:a.fullname,internal:a.internal}}),h)}).catch(function(a){g.error(a)})},a.updateItem=function(){var b=angular.copy(a.team);return e.update({id:c.id},b).$promise.then(function(){
 g.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.teams.view",{url:"/view/:id",templateUrl:"app/staff/team/view/view.html",controller:"TeamViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.staff.teams.view.agents",{url:"/agents",templateUrl:"app/staff/team/view/view.agents.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]}])}]}}).state("main.staff.teams.view.settings",{url:"/settings",templateUrl:"app/staff/team/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("TelephoneListCtrl",["$scope","Telephone","gridOptions",function(a,b,c){a.initView=function(){var d={exporterCsvFilename:"telephones.csv",columnDefs:[{name:"fullname"},{name:"name"},{name:"internal"},{name:"description"},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/staff/telephones/view/{{row.entity.id}}/account",name:"profile"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones.list",{url:"/list",templateUrl:"app/staff/telephone/list/list.html",controller:"TelephoneListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("Telephone",["$resource",function(a){return a("/api/telephones/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones",{url:"/telephones",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin"],redirectTo:"landing"}}})}]),angular.module("xCallyShuttleApp").controller("TelephoneViewCtrl",["$scope","$http","$stateParams","$translate","$cookieStore","Auth","xAlert","Telephone","Setting","User",function(a,b,c,d,e,f,g,h,i,j){a.initView=function(){return a.Auth=f,a.forms={},h.get({id:c.id}).$promise.then(function(b){return delete b.password,a.item=b,a.item.transport=a.item.transport?a.item.transport.split(","):[],a.item.allow=a.item.allow?a.item.allow.split(";"):[],i.get({id:1}).$promise}).then(function(b){a.setting=b}).catch(function(a){g.error(a)})},a.updateItem=function(){var b=angular.copy(a.item);return b.transport=b.transport.join(","),b.allow=b.allow.join(";"),h.update(b).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){g.error(a)})},a.updatePassword=function(){var b={newPassword:a.item.newPwd,id:c.id};return j.changePassword(b).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE"),"success"),a.item.newPwd="",a.item.reNewPwd="",a.forms.changePwd.$setPristine(),a.forms.changePwd.$setUntouched()}).catch(function(a){g.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones.view",{url:"/view/:id",templateUrl:"app/staff/telephone/view/view.html",controller:"TelephoneViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.staff.telephones.view.account",{url:"/account",templateUrl:"app/staff/telephone/view/view.account.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css","assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}}).state("main.staff.telephones.view.voice",{url:"/voice",templateUrl:"app/staff/telephone/view/view.voice.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("TelephoneWizardCtrl",["$scope","$http","$location","WizardHandler","xAlert","$translate","Telephone","Setting",function(a,b,c,d,e,f,g,h){a.forms={},a.item={allow:["alaw","ulaw","gsm"],transport:["udp"],context:"from-sip"},a.next=function(){d.wizard().next()},a.exitValidation=function(a){return a},a.getFirstFreeInternal=function(){return h.get({controller:"internal"}).$promise.then(function(b){return a.item.internal=b.value,h.get({id:1}).$promise}).then(function(b){a.setting=b}).catch(function(a){e.error(a)})},a.createItem=function(){var b=angular.copy(a.item);return b.transport&&(b.transport=b.transport.join(",")),a.item.allow&&(b.allow=b.allow.join(";")),g.save(b).$promise.then(function(){c.path("/staff/telephones/list")}).catch(function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.telephones.wizard",{url:"/wizard",templateUrl:"app/staff/telephone/wizard/wizard.html",controller:"TelephoneWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("UserListCtrl",["$scope","$timeout","User","Auth","gridOptions",function(a,b,c,d,e){function f(a){if(a){var b=_.words(a);return _.map(b,function(a){return a?a[0]:""}).join("").toUpperCase()}return!1}a.getUserAvatar=function(a,c,d){b(function(){angular.element("#userImg"+a).avatar({useGravatar:!1,initials:d?[]:f(c),fallbackImage:"api/users/avatar/"+d,size:80})})},a.isAdmin=function(a){return"admin"===a},a.initView=function(){var b={exporterCsvFilename:"users.csv",columnDefs:[{name:"fullname"},{name:"name",displayName:"APPLICATION_USERNAME"},{name:"internal"},{name:"email"},{name:"description"},{name:"action",width:100,buttons:[{class:"blue-hoki",href:"/staff/users/view/{{row.entity.id}}/account",name:"profile"},{class:"green-meadow",href:"/staff/users/view/{{row.entity.id}}/permit/voice",name:"permits",hide:"grid.appScope.isAdmin(row.entity.role)"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.fullname, row.entity.id)"}]}]};a.gridOptions=e.gridOptions(c,b,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users.list",{url:"/list",templateUrl:"app/staff/user/list/list.html",controller:"UserListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Module",["$resource",function(a){return a("/api/modules/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("User",["$resource",function(a){return a("/api/users/:id/:controller/:controller2/:controller3",{id:"@id"},{changePassword:{method:"PUT",params:{controller:"password"}},update:{method:"PUT"},me:{method:"GET",params:{id:"me"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users",{url:"/users",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("UserViewCtrl",["$scope","$stateParams","$cookieStore","$translate","FileUploader","User","Auth","xAlert","MailQueue","VoiceQueue","ChatQueue","FaxQueue","SmsQueue","OpenChannelQueue","Team","Module","Setting","$location",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r){function s(a,b){var c,d,e=b.length;for(c=0;c<e;c++){if(b[c].id===a)return b[c];if(b[c].SubModules&&b[c].SubModules.length&&(d=s(a,b[c].SubModules)))return d}}function t(b){var c=s(b.ModuleId,a.modules);if(!0===b.status)c.status=!0;else{_.filter(c.SubModules,{status:!0}).length||(c.status=!1)}c.ModuleId&&t(c)}function u(a,b){a.forEach(function(a){a.status=b,a.SubModules&&a.SubModules.length&&u(a.SubModules,b)})}function v(a,b){b.forEach(function(b){_.find(a,{id:b.id})?b.status=!0:b.status=!1,b.SubModules&&b.SubModules.length&&v(a,b.SubModules)})}function w(a,b){return a=_.union(a,_.map(_.filter(b,{status:!0}),"id")),b.forEach(function(b){b.SubModules&&b.SubModules.length&&(a=_.union(a,w(a,b.SubModules)))}),a}a.Auth=g,a._=_,a.forms={},a.moduleSwitch={onText:"On",offText:"Off",isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.checkUser=function(){var a=g.getCurrentUser();g.isAdmin()||Number(b.id)===a.id||r.path("main.dashboard.voice")},a.initVoiceQueues=function(){var a={},c={};return j.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"voice",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"voice",b.id,f)}).catch(function(a){console.error(a)})},a.initChatQueues=function(){var a={},c={};return k.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"chat",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"chat",b.id,f)}).catch(function(a){console.error(a)})},a.initMailQueues=function(){var a={},c={};return i.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"mail",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"mail",b.id,f)}).catch(function(a){console.error(a)})},a.initSmsQueues=function(){var a={},c={};return m.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"sms",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"sms",b.id,f)}).catch(function(a){console.error(a)})},a.initFaxQueues=function(){var a={},c={};return l.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"fax",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"fax",b.id,f)}).catch(function(a){console.error(a)})},a.initOpenchannelQueues=function(){var a={},c={};return n.get().$promise.then(function(c){return a.queues=_.map(c.rows,function(a){return{id:a.id,name:a.name}}),f.query({id:b.id,controller:"allowed",controller2:"openchannel",controller3:"queues"}).$promise}).then(function(a){c.queues=_.map(a,function(a){return{id:a.id,name:a.name}})}).then(function(){ComponentsDropdowns.bindPermit(a,c,"openchannel",b.id,f)}).catch(function(a){console.error(a)})},a.initView=function(){return f.get({id:b.id}).$promise.then(function(b){return a.user=b,a.user.transport=a.user.transport?a.user.transport.split(","):[],a.user.allow=a.user.allow?a.user.allow.split(";"):[],q.get({id:1}).$promise}).then(function(b){a.setting=b}).catch(function(a){h.error(a)})},a.updateItem=function(){var c=angular.copy(a.user);return delete c.password,delete c.md5secret,c.transport=c.transport.join(","),c.allow=c.allow.join(";"),f.update({id:b.id},c).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){h.error(a)})},a.updatePassword=function(){var c={newPassword:a.user.newPwd};return g.isAdmin()?c.id=b.id:c.oldPassword=a.user.currentPwd,f.changePassword(c).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success"),a.user.newPwd="",a.user.reNewPwd="",a.user.currentPwd="",a.forms.changePwd.$setPristine(),a.forms.changePwd.$setUntouched()}).catch(function(a){h.error(a)})};var x=a.uploader=new e({url:"api/users/"+b.id+"/avatar",queueLimit:1,withCredentials:!0,headers:{Authorization:"Bearer "+c.get("token")}});x.filters.push({name:"imageFilter",fn:function(a){return-1!=="|jpg|png|jpeg|".indexOf("|"+a.type.slice(a.type.lastIndexOf("/")+1)+"|")}}),a.getModules=function(){return a.associatedModules=[],p.get().$promise.then(function(c){return a.modules=_.filter(c.rows,function(a){return!a.ModuleId}),f.query({id:b.id,controller:"allowed",controller2:"modules"}).$promise}).then(function(b){v(b,a.modules)}).catch(function(a){h.error(a)})},a.updatePermissions=function(c){c.ModuleId&&t(c),c.SubModules&&c.SubModules.length&&u(c.SubModules,c.status);var e=w([],a.modules);return f.save({id:b.id,controller:"allowed",controller2:"modules"},{modules:e}).$promise.then(function(){h.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){h.error(a)})},x.onSuccessItem=function(b,c){a.user.userpic=c.userpic,a.user.id===g.getCurrentUser().id&&(g.getCurrentUser().userpic=c.userpic),h.show(d.instant("MESSAGE_WELL_DONE"),"success")},x.onErrorItem=function(){h.show(d.instant("MESSAGE_SOMETHING_WENT_WRONG"),"danger")},x.onCompleteAll=function(){x.clearQueue()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users.view",{url:"/view/:id",templateUrl:"app/staff/user/view/view.html",controller:"UserViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.staff.users.view.account",{url:"/account",templateUrl:"app/staff/user/view/view.account.html",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css","assets/scripts/jquery.sparkline.min.js","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js","assets/scripts/profile.js"]})}]}}).state("main.staff.users.view.voice",{url:"/voice",templateUrl:"app/staff/user/view/view.voice.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}}).state("main.staff.users.view.permit",{url:"/permit",templateUrl:"app/staff/user/view/view.permit.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}},cache:!1,serie:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/jquery-multi-select/css/multi-select.css","assets/plugins/jquery-multi-select/js/jquery.multi-select.js","assets/plugins/jquery-quicksearch/jquery.quicksearch.js","assets/scripts/components-dropdowns.js"]})}]}}).state("main.staff.users.view.permit.voice",{url:"/voice",templateUrl:"app/staff/user/view/view.permit.voice.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}}).state("main.staff.users.view.permit.chat",{url:"/chat",templateUrl:"app/staff/user/view/view.permit.chat.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.chat"}}}).state("main.staff.users.view.permit.mail",{url:"/mail",templateUrl:"app/staff/user/view/view.permit.mail.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.mail"}}}).state("main.staff.users.view.permit.fax",{url:"/fax",templateUrl:"app/staff/user/view/view.permit.fax.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.fax"}}}).state("main.staff.users.view.permit.sms",{url:"/sms",templateUrl:"app/staff/user/view/view.permit.sms.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.sms"}}}).state("main.staff.users.view.permit.openchannel",{url:"/openchannel",templateUrl:"app/staff/user/view/view.permit.openchannel.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.openchannel"}}}).state("main.staff.users.view.permit.modules",{url:"/modules",templateUrl:"app/staff/user/view/view.permit.modules.html",data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").controller("UserWizardCtrl",["$scope","$location","WizardHandler","xAlert","$translate","User","Setting","Auth",function(a,b,c,d,e,f,g,h){a.initWizard=function(){return a.Auht=h,a.forms={info:void 0,voice:void 0},a.item={role:"user",host:"dynamic",context:"from-sip"},g.get({controller:"internal"}).$promise.then(function(b){return a.item.internal=b.value,g.get({id:1}).$promise}).then(function(b){a.setting=b}).catch(function(a){d.error(a)})},a.next=function(){c.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return f.save(a.item).$promise.then(function(a){b.path("user"===a.role?"/staff/users/view/"+a.id+"/permit/voice":"/staff/users/view/"+a.id+"/account")}).catch(function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.staff.users.wizard",{url:"/wizard",templateUrl:"app/staff/user/wizard/wizard.html",controller:"UserWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmListCtrl",["$scope","SugarcrmAccount","gridOptions","xAlert","$translate",function(a,b,c,d,e){a.initView=function(){var d={exporterCsvFilename:"sugarcrm_account.csv",columnDefs:[{name:"name",displayName:"APPLICATION_NAME"},{name:"username"},{name:"remoteUri",displayName:"APPLICATION_URI"},{name:"action",width:250,buttons:[{class:"blue-hoki",href:"/sugarcrm/view/{{row.entity.id}}/account",name:"profile"},{class:"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.get({id:a,controller:"check"}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")}).catch(function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.list",{url:"/list",templateUrl:"app/sugarcrm/list/list.html",controller:"SugarcrmListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").factory("SugarcrmAccount",["$resource",function(a){return a("/api/sugarcrm/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"},fields:{params:{controller:"fields"},isArray:!0},moduleFields:{params:{controller:"fields"},isArray:!0},check:{params:{controller:"check"}},modules:{params:{controller:"modules"},isArray:!0}})}]).factory("SugarcrmConfiguration",["$resource",function(a){return a("/api/sugarcrm/accounts/:accountId/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("SugarcrmField",["$resource",function(a){return a("/api/sugarcrm/accounts/:accountId/configurations/:configurationId/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm",{url:"/sugarcrm",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin"],redirectTo:"main.dashboard.voice"}}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.view.configurations",{url:"/configurations",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("SugarcrmViewConfigurationListCtrl",["$scope","$stateParams","$translate","gridOptions","SugarcrmConfiguration","$uibModal",function(a,b,c,d,e,f){a.initView=function(){var c={exporterCsvFilename:"sugarcrm_configurations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{class:"blue-hoki",href:"/sugarcrm/view/{{row.entity.AccountId}}/configurations/view/{{row.entity.id}}",name:"profile"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(e,c,a,{accountId:b.id})},a.createItem=function(){f.open({animation:!0,templateUrl:"app/sugarcrm/view/configuration/list/create.modal.html",controller:"SugarcrmCreateConfigurationCtrl"}).result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("SugarcrmCreateConfigurationCtrl",["$scope","$translate","$uibModalInstance","SugarcrmConfiguration","xAlert","$stateParams","channel",function(a,b,c,d,e,f,g){a.form={},a.item={},a.channels=g,a.item.channel="voice",a.item.type="Queue",a.save=function(){return d.save({accountId:f.id},a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.view.configurations.list",{url:"/list",templateUrl:"app/sugarcrm/view/configuration/list/list.html",controller:"SugarcrmViewConfigurationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmViewConfigurationViewCtrl",["$scope","$filter","$stateParams","$translate","socket","variable","xAlert","SugarcrmAccount","SugarcrmConfiguration","SugarcrmField","Variable","usSpinnerService",function(a,b,c,d,e,f,g,h,i,j,k,l){a.$on("$destroy",function(){e.unsyncUpdates("sugarcrm_field")}),a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:300,scrollInertia:0},a.fieldType=[{type:"string",title:"String"},{type:"variable",title:"Variable"},{type:"customVariable",title:"Custom Variable"}],a.descFieldType=[{type:"string",title:"String"},{type:"keyValue",title:"Key Value"}],a.defaultMappingSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.groupVariableByGroup=function(a){switch(a.group){case"voice_queue":return"Voice: Queue";default:return"Other"}},a.initView=function(){a.configurationName="",a.subjectConfig=[],a.descriptionConfig=[],a.fieldConfig=[],a.variables=f,a.mapping={}},a.getConfiguration=function(){return i.get({accountId:c.id,id:c.configurationId}).$promise.then(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,a.mapping.defaultMapping=b.defaultMapping,a.mapping.mappingModule=b.mappingModule,a.mapping.mappingFields=b.mappingFields,a.getModuleFields(),e.socket.on("sugarcrm_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})}).catch(function(a){g.error(a)})},a.getCustomVariables=function(){return k.get().$promise.then(function(b){a.customVariables=b.rows}).catch(function(a){g.error(a)})},a.getFields=function(){return h.fields({id:c.id}).$promise.then(function(c){a.accountFields=_.sortByOrder(b("sugarcrm")(c),"name","asc"),_.forEach(c,function(a){a.options=_.toArray(a.options)})}).catch(function(a){g.error(a)})},a.getModules=function(){return h.modules({id:c.id}).$promise.then(function(b){a.accountModules=b}).catch(function(a){g.error(a)})},a.getModuleFields=function(){if(!a.mapping.defaultMapping&&a.mapping.mappingModule)return h.moduleFields({id:c.id,module:a.mapping.mappingModule}).$promise.then(function(b){a.moduleFields=b}).catch(function(a){g.error(a)}).finally(function(){l.stop("spinner-grid")})},a.addItem=function(b){var d={};switch(b){case"subject":case"description":d={type:"string",content:""};break;case"field":d={content:""}}return i.save({accountId:c.id,id:c.configurationId,controller:b},d).$promise.then(function(c){switch(b){case"subject":a.subjectConfig.push(c);break;case"description":a.descriptionConfig.push(c);break;case"field":a.fieldConfig.push(c)}}).catch(function(a){g.error(a)})},a.changeType=function(b){"variable"===b.type?(b.content="",b.variableName=""):"string"===b.type?(b.VariableId=null,b.variableName=""):"customVariable"===b.type&&(b.VariableId=null,b.content=""),a.updateField(b)},a.updateField=function(a){return j.update({accountId:c.id,configurationId:c.configurationId,id:a.id},a).$promise.then(function(){}).catch(function(a){g.error(a)})},a.removeItem=function(a){return j.delete({accountId:c.id,configurationId:c.configurationId,id:a.id}).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+"!","success")}).catch(function(a){g.error(a)})},a.changeFieldType=function(b){b.content="",b.variableName="",b.nameField="",b.VariableId=null,a.updateField(b)},a.changeDescType=function(b){"keyValue"===b.type?(b.content="","string"===b.keyType?(b.VariableId=null,b.variableName=""):"variable"===b.keyType?(b.keyContent="",b.VariableId=null):"customVariable"===b.keyType&&(b.keyContent="",b.variableName="")):"string"===b.type&&(b.VariableId=null,b.variableName="",b.key="",b.keyContent=""),a.updateField(b)},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"name",b);return c?c.options.length>0?c.options:null:void 0}},a.updateMapping=function(){return a.mapping.defaultMapping&&(a.mapping.mappingModule=null,a.mapping.mappingFields=[]),i.update({accountId:c.id,id:c.configurationId},a.mapping).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+".","success")}).catch(function(a){g.error(a)})},a.updateMappingModule=function(){l.spin("spinner-grid"),a.mapping.mappingFields=[],a.getModuleFields()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.view.configurations.view",{url:"/view/:configurationId",templateUrl:"app/sugarcrm/view/configuration/view/view.html",controller:"SugarcrmViewConfigurationViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmViewCtrl",["$scope","$http","$stateParams","$translate","$location","$filter","WizardHandler","socket","xAlert","Modal","SugarcrmAccount",function(a,b,c,d,e,f,g,h,i,j,k){a.initView=function(){return k.get({id:c.id}).$promise.then(function(b){a.account=b}).catch(function(a){i.error(a)})},a.updateItem=function(){return k.update({id:c.id},a.account).$promise.then(function(){i.show(d.instant("MESSAGE_WELL_DONE")+".","success")}).catch(function(a){i.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.view",{url:"/view/:id",templateUrl:"app/sugarcrm/view/view.html",controller:"SugarcrmViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.sugarcrm.view.account",{url:"/account",templateUrl:"app/sugarcrm/view/view.account.html"})}]),angular.module("xCallyShuttleApp").controller("SugarcrmkWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler","SugarcrmAccount",function(a,b,c,d,e,f,g){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={},a.item.serverUrl=c.protocol()+"://"+location.host},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/sugarcrm/list")}).catch(function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.sugarcrm.wizard",{url:"/wizard",templateUrl:"app/sugarcrm/wizard/wizard.html",controller:"SugarcrmkWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("CannedAnswer",["$resource",function(a){return a("/api/answers/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.answers",{url:"/answers",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:58}}})}]),angular.module("xCallyShuttleApp").controller("AnswerListCtrl",["$scope","$uibModal","CannedAnswer","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"answers.csv",columnDefs:[{name:"key",displayName:"APPLICATION_KEY"},{name:"value"},{name:"description"},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/answers/view/{{row.entity.id}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.key, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){b.open({animation:!0,templateUrl:"app/tools/answer/list/list.create.modal.html",controller:"AnswerListCreateCtrl"}).result.then(function(b){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("AnswerListCreateCtrl",["$scope","$translate","$uibModalInstance","CannedAnswer","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.answers.list",{url:"/list",templateUrl:"app/tools/answer/list/list.html",controller:"AnswerListCtrl"})}]),angular.module("xCallyShuttleApp").controller("AnswerViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location","CannedAnswer",function(a,b,c,d,e,f,g){a.getAnswer=function(){return g.get({id:e.id}).$promise.then(function(b){a.answer=b}).catch(function(a){c.error(a)})},a.updateAnswer=function(){var b=angular.copy(a.answer);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.answers.view",{url:"/view/:id",templateUrl:"app/tools/answer/view/view.html",controller:"AnswerViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.answers.view.settings",{url:"/settings",templateUrl:"app/tools/answer/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("Automation",["$resource",function(a){return a("/api/automations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations",{url:"/automations",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:51}}})}]),angular.module("xCallyShuttleApp").controller("AutomationListCtrl",["$scope","$http","$translate","xAlert","Automation","gridOptions",function(a,b,c,d,e,f){a.onText="On",a.offText="Off",a.isActive=!0,a.size="mini",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){var b={exporterCsvFilename:"Automations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"channel"},{name:"status",
-cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.status" type="checkbox" switch-active="{{ grid.appScope.isActive }}" switch-on-text="{{ grid.appScope.onText }}" switch-off-text="{{ grid.appScope.offText }}" switch-on-color="{{ grid.appScope.onColor }}" switch-off-color="{{ grid.appScope.offColor }}" switch-animate="{{ grid.appScope.animate }}" switch-size="{{ grid.appScope.size }}" switch-label="{{ grid.appScope.label }}" switch-icon="{{ grid.appScope.icon }}" switch-radio-off="{{ grid.appScope.radioOff }}" switch-label-width="{{ grid.appScope.labelWidth }}" switch-handle-width="{{ grid.appScope.handleWidth }}"></div>',width:100,enableFiltering:!1},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/automations/view/{{row.entity.id}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=f.gridOptions(e,b,a)},a.updateItem=function(a){return e.update({id:a.id},a).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.list",{url:"/list",templateUrl:"app/tools/automation/list/list.html",controller:"AutomationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("AutomationViewCtrl",["$scope","$stateParams","$http","$translate","xAlert","automations","Automation","$location",function(a,b,c,d,e,f,g,h){a.$automations=f,a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.forms={general:{}},a.addCondition=function(b){a.automation[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.automation[b].splice(c,1)},a.addAction=function(){a.automation.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.automation.Actions.splice(b,1)},a.initView=function(){return g.get({id:b.id}).$promise.then(function(b){a.automation=b}).catch(function(a){e.error(a),h.path("/tools/automations/list")})},a.updateAutomation=function(){return g.update({id:b.id},a.automation).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){console.error(a),e.error(a)})},a.exitValidation=function(b){return console.log(b&&(a.automation.All.length||a.automation.Any.length)&&a.automation.Actions.length),!(!b||!a.automation.All.length&&!a.automation.Any.length||!a.automation.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.view",{url:"/view/:id",templateUrl:"app/tools/automation/view/view.html",controller:"AutomationViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}}).state("main.tools.automations.view.settings",{url:"/settings",templateUrl:"app/tools/automation/view/view.settings.html"}).state("main.tools.automations.view.routes",{url:"/routes",templateUrl:"app/tools/automation/view/view.routes.html"}).state("main.tools.automations.view.application",{url:"/application",templateUrl:"app/tools/automation/view/view.application.html"})}]),angular.module("xCallyShuttleApp").controller("AutomationWizardCtrl",["$scope","$http","$location","xAlert","automations","WizardHandler","Automation",function(a,b,c,d,e,f,g){a.$automations=e,a.statusSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.tempData={voice:{},mail:{},chat:{},fax:{}},a.item={All:[],Any:[],Actions:[]},a.forms={general:void 0,settings:void 0},a.addCondition=function(b){a.item[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.item[b].splice(c,1)},a.addAction=function(){a.item.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.item.Actions.splice(b,1)},a.$watch("item.channel",function(b,c){c&&(a.tempData[c].All=_.clone(a.item.All,!0),a.tempData[c].Any=_.clone(a.item.Any,!0),a.tempData[c].Actions=_.clone(a.item.Actions,!0)),a.item.All=a.tempData[b].All?a.tempData[b].All:[],a.item.Any=a.tempData[b].Any?a.tempData[b].Any:[],a.item.Actions=a.tempData[b].Actions?a.tempData[b].Actions:[]},!0),a.item.channel="mail",a.createItem=function(){return g.save(a.item).$promise.then(function(){c.path("/tools/automations/list")}).catch(function(a){console.error(a),d.error(a)})},a.next=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.exitValidation=function(a){return a},a.exitSettingsValidation=function(b){return!(!b||!a.item.All.length&&!a.item.Any.length||!a.item.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.wizard",{url:"/wizard",templateUrl:"app/tools/automation/wizard/wizard.html",controller:"AutomationWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("Interval",["$resource",function(a){return a("/api/intervals/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("SubInterval",["$resource",function(a){return a("/api/intervals/:intervalId/subintervals/:id",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals",{url:"/intervals",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:53}}})}]),angular.module("xCallyShuttleApp").controller("IntervalListCtrl",["$scope","$uibModal","Interval","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"intervals.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/intervals/view/{{row.entity.id}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){b.open({animation:!0,templateUrl:"app/tools/interval/list/list.create.modal.html",controller:"IntervalListCreateCtrl"}).result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("IntervalListCreateCtrl",["$scope","$translate","$uibModalInstance","Interval","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.list",{url:"/list",templateUrl:"app/tools/interval/list/list.html",controller:"IntervalListCtrl"})}]),angular.module("xCallyShuttleApp").controller("IntervalViewSubintervalsListCtrl",["$scope","$stateParams","gridOptions","SubInterval","$translate","$uibModal",function(a,b,c,d,e,f){a.stateParams=b,a.initView=function(){var e={exporterCsvFilename:"tools_interval.csv",columnDefs:[{name:"name"},{name:"interval"},{name:"action",width:125,buttons:[{class:"blue-hoki",href:"/tools/intervals/view/{{row.entity.IntervalId}}/subintervals/view/{{row.entity.id}}",name:"profile"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(d,e,a,{intervalId:b.id})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view.subintervals.list",{url:"/list",templateUrl:"app/tools/interval/view/subinterval/list/list.html",controller:"IntervalViewSubintervalsListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view.subintervals",{url:"/subintervals",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("IntervalViewSubintervalsViewCtrl",["$scope","$stateParams","WizardHandler","SubInterval","xAlert","$location","$translate","Interval",function(a,b,c,d,e,f,g,h){function i(b){var c,d,e,f;c=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(d=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(d+="-"+b.wd_to)):d="*",b.md_from&&"always"!==b.md_from?(e=b.md_from,b.md_to&&"always"!==b.md_to&&(e+="-"+b.md_to)):e="*",b.m_from&&"always"!==b.m_from?(f=b.m_from,b.m_to&&"always"!==b.m_to&&(f+="-"+b.m_to)):f="*",a.subinterval&&(a.subinterval.interval=c+","+d+","+e+","+f)}a.isNewSubinterval=!1,a.switch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.initSubInterval=function(){if(b.subintervalId)return a.isNewSubinterval=!1,a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date)},d.get({id:b.subintervalId,intervalId:b.id}).$promise.then(function(b){a.subinterval=b;var c,d=a.subinterval?a.subinterval.interval.split(","):["*","*","*","*"];d.forEach(function(b,d){switch(d){case 0:"*"!==b?(c=b.split("-"),a.splittedInterval.t_from=moment(c[0],"HH:mm"),a.splittedInterval.t_to=moment(c[1],"HH:mm"),a.splittedInterval.alwaysTime=!1):(a.splittedInterval.t_from=moment(new Date),a.splittedInterval.t_to=moment(new Date),a.splittedInterval.alwaysTime=!0);break;case 1:"*"!==b?(c=b.split("-"),a.splittedInterval.wd_from=c[0],a.splittedInterval.wd_to=c[1]?c[1]:"always"):(a.splittedInterval.wd_from="always",a.splittedInterval.wd_to="always");break;case 2:"*"!==b?(c=b.split("-"),a.splittedInterval.md_from=c[0],a.splittedInterval.md_to=c[1]?c[1]:"always"):(a.splittedInterval.md_from="always",a.splittedInterval.md_to="always");break;case 3:"*"!==b?(c=b.split("-"),a.splittedInterval.m_from=c[0],a.splittedInterval.m_to=c[1]?c[1]:"always"):(a.splittedInterval.m_from="always",a.splittedInterval.m_to="always")}})}).catch(function(a){e.error(a),f.path("/tools/intervals/list")});a.isNewSubinterval=!0,a.subinterval={},a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0}},a.next=function(){c.wizard().next()},a.previous=function(){c.wizard().previous()},a.exitValidation=function(a){return a},a.$watch("splittedInterval",function(a){a&&i(a)},!0),a.addOrUpdateSubInterval=function(){if(!a.isNewSubinterval)return console.log(a.subinterval),h.update({id:b.subintervalId},a.subinterval).$promise.then(function(){e.show(g.instant("MESSAGE_WELL_DONE")+".","success")}).catch(function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view.subintervals.view",{url:"/view/:subintervalId",templateUrl:"app/tools/interval/view/subinterval/view/view.html",controller:"IntervalViewSubintervalsViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("IntervalViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","socket","$location","WizardHandler","Modal","interval","Interval",function(a,b,c,d,e,f,g,h,i,j,k){function l(b){var c,d,e,f;c=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(d=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(d+="-"+b.wd_to)):d="*",b.md_from&&"always"!==b.md_from?(e=b.md_from,b.md_to&&"always"!==b.md_to&&(e+="-"+b.md_to)):e="*",b.m_from&&"always"!==b.m_from?(f=b.m_from,b.m_to&&"always"!==b.m_to&&(f+="-"+b.m_to)):f="*",void 0!==a.selectedSubInterval?a.interval.SubIntervals[a.selectedSubInterval].interval=c+","+d+","+e+","+f:a.subinterval.interval=c+","+d+","+e+","+f}a.$translate=d,a.$interval=j.interval,a.selectedSubInterval=void 0,a.switch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.gridOptions={columnDefs:[{name:"name",displayName:"APPLICATION_NAME",headerCellFilter:"translate"},{name:"interval",displayName:"APPLICATION_INTERVAL",headerCellFilter:"translate"},{name:"action",displayName:"APPLICATION_ACTION",headerCellFilter:"translate",width:125,cellTemplate:'<a class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.openSubInterval(grid.appScope.gridOptions.data.indexOf(row.entity))">{{\'APPLICATION_SETTINGS\' | translate}}</a><a class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.deleteSubInterval(row.entity.name+\' interval\', grid.appScope.gridOptions.data.indexOf(row.entity))">{{\'APPLICATION_DELETE\' | translate}}</a>'}]},a.forms={subinterval:void 0,general:void 0},a.initSubInterval=function(b){b&&(a.selectedSubInterval=void 0),a.subinterval={},a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0}},a.next=function(){h.wizard().next()},a.previous=function(){h.wizard().previous()},a.exitValidation=function(a){return a},a.deselectAndRedirect=function(b){a.selectedSubInterval=void 0,g.path(b)},a.getInterval=function(){return k.get({id:e.id}).$promise.then(function(b){a.interval=b}).catch(function(a){c.error(a),g.path("/tools/intervals/list")})},a.openSubInterval=function(b){a.selectedSubInterval=b,g.path("/tools/intervals/view/"+e.id+"/subintervals/settings")},a.updateInterval=function(){var b={name:a.interval.name,description:a.interval.description};return k.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE")+".","success")}).catch(function(a){c.error(a)})},a.getSubInterval=function(){void 0===a.selectedSubInterval&&g.path("/tools/intervals/list"),a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date)};var b,c=a.interval.SubIntervals[a.selectedSubInterval]?a.interval.SubIntervals[a.selectedSubInterval].interval.split(","):["*","*","*","*"];c.forEach(function(c,d){switch(d){case 0:"*"!==c?(b=c.split("-"),a.splittedInterval.t_from=moment(b[0],"HH:mm"),a.splittedInterval.t_to=moment(b[1],"HH:mm"),a.splittedInterval.alwaysTime=!1):(a.splittedInterval.t_from=moment(new Date),a.splittedInterval.t_to=moment(new Date),a.splittedInterval.alwaysTime=!0);break;case 1:"*"!==c?(b=c.split("-"),a.splittedInterval.wd_from=b[0],a.splittedInterval.wd_to=b[1]?b[1]:"always"):(a.splittedInterval.wd_from="always",a.splittedInterval.wd_to="always");break;case 2:"*"!==c?(b=c.split("-"),a.splittedInterval.md_from=b[0],a.splittedInterval.md_to=b[1]?b[1]:"always"):(a.splittedInterval.md_from="always",a.splittedInterval.md_to="always");break;case 3:"*"!==c?(b=c.split("-"),a.splittedInterval.m_from=b[0],a.splittedInterval.m_to=b[1]?b[1]:"always"):(a.splittedInterval.m_from="always",a.splittedInterval.m_to="always")}})},a.$watch("splittedInterval",function(a){a&&l(a)},!0),a.addSubInterval=function(){a.interval.SubIntervals.push(a.subinterval),a.updateInterval("subintervals")},a.deleteSubInterval=i.confirm.delete(function(b){a.interval.SubIntervals.splice(b,1),a.updateInterval()})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view",{url:"/view/:id",templateUrl:"app/tools/interval/view/view.html",controller:"IntervalViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.intervals.view.settings",{url:"/settings",templateUrl:"app/tools/interval/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("PauseListCtrl",["$scope","$log","$uibModal","$translate","Pause","gridOptions",function(a,b,c,d,e,f){a.initView=function(){var b={exporterCsvFilename:"pauses.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/pauses/view/{{row.entity.id}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=f.gridOptions(e,b,a)},a.createItem=function(){c.open({animation:!0,templateUrl:"app/tools/pause/list/list.create.modal.html",controller:"PauseListCreateCtrl"}).result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("PauseListCreateCtrl",["$scope","$translate","$uibModalInstance","Pause","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.pauses.list",{url:"/list",templateUrl:"app/tools/pause/list/list.html",controller:"PauseListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Pause",["$resource",function(a){return a("/api/pauses/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.pauses",{url:"/pauses",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:57}}})}]),angular.module("xCallyShuttleApp").controller("PauseViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location","Pause",function(a,b,c,d,e,f,g){a.getPause=function(){return g.get({id:e.id}).$promise.then(function(b){a.pause=b}).catch(function(a){c.error(a)})},a.updatePause=function(){var b=angular.copy(a.pause);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.pauses.view",{url:"/view/:id",templateUrl:"app/tools/pause/view/view.html",controller:"PauseViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.pauses.view.settings",{url:"/settings",templateUrl:"app/tools/pause/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("SchedulerListCtrl",["$scope","Scheduler","gridOptions","xAlert","$translate","socket",function(a,b,c,d,e,f){a._=_,a.switches={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.scheduleTypes=[{name:"APPLICATION_REPORT_EXTRACTION",value:"report"},{name:"APPLICATION_HISTORY_MOVE",value:"history"},{name:"APPLICATION_DB_BACKUP",value:"backup"}],a.initView=function(){var d={exporterCsvFilename:"Schedules.csv",columnDefs:[{name:"name"},{name:"type",cellTemplate:'<div class="centered-uigrid-td">{{grid.appScope._.find(grid.appScope.scheduleTypes,{value:row.entity.type}).name | translate}}</div>'},{name:"description"},{name:"active",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.active" type="checkbox" switch-active="{{ grid.appScope.switches.isActive }}" switch-on-text="{{ \'APPLICATION_YES\' | translate }}" switch-off-text="{{ \'APPLICATION_NO\' | translate }}" switch-on-color="{{ grid.appScope.switches.onColor }}" switch-off-color="{{ grid.appScope.switches.offColor }}" switch-animate="{{ grid.appScope.switches.animate }}" switch-size="{{ grid.appScope.switches.size }}" switch-label="{{ grid.appScope.switches.label }}" switch-icon="{{ grid.appScope.switches.icon }}" switch-radio-off="{{ grid.appScope.switches.radioOff }}" switch-label-width="{{ grid.appScope.switches.labelWidth }}" switch-handle-width="{{ grid.appScope.switches.handleWidth }}"></div>',enableFiltering:!1,enableSorting:!1},{name:"sendMail",displayName:"APPLICATION_SEND_MAIL",cellTemplate:'<div data-ng-if="row.entity.type == \'report\'" class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.sendMail" type="checkbox" switch-active="{{ grid.appScope.switches.isActive }}" switch-on-text="{{ \'APPLICATION_YES\' | translate }}" switch-off-text="{{ \'APPLICATION_NO\' | translate }}" switch-on-color="{{ grid.appScope.switches.onColor }}" switch-off-color="{{ grid.appScope.switches.offColor }}" switch-animate="{{ grid.appScope.switches.animate }}" switch-size="{{ grid.appScope.switches.size }}" switch-label="{{ grid.appScope.switches.label }}" switch-icon="{{ grid.appScope.switches.icon }}" switch-radio-off="{{ grid.appScope.switches.radioOff }}" switch-label-width="{{ grid.appScope.switches.labelWidth }}" switch-handle-width="{{ grid.appScope.switches.handleWidth }}"></div>',enableFiltering:!1,enableSorting:!1},{name:"action",width:100,buttons:[{class:"blue-hoki",href:"/tools/scheduler/view/{{row.entity.id}}/settings",name:"settings"},{class:"green-turquoise",name:"run",onClick:"grid.appScope.runSchedule(row.entity.id)"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.updateItem=function(a){return b.update({id:a.id},a).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){console.error(a),d.error(a)})},a.runSchedule=function(a){return b.get({id:a,controller:"run"}).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler.list",{url:"/list",templateUrl:"app/tools/scheduler/list/list.html",controller:"SchedulerListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Scheduler",["$resource",function(a){return a("/api/scheduler/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler",{url:"/scheduler",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:61}}})}]),angular.module("xCallyShuttleApp").controller("SchedulerViewCtrl",["$scope","xAlert","$translate","$stateParams","socket","$location","ReportTree","Scheduler","DefaultReport","CustomReport","$timeout","MailServerOut",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(){switch(a.schedule.cronType=a.rangeExec.type,a.rangeExec.type){case"daily":a.schedule.cron="00 "+a.rangeExec.hour+" * * *";break;case"weekly":a.schedule.cron="00 "+a.rangeExec.hour+" * * "+a.rangeExec.weekDays.join(",");break;case"monthly":a.schedule.cron="00 "+a.rangeExec.hour+" "+a.rangeExec.monthDay+" * *"}}function n(b){var c;switch(b.cronType){case"daily":a.rangeExec.hour=Number(b.cron.split(" ")[1]),a.rangeExec.type=b.cronType;break;case"weekly":c=b.cron.split(" "),a.rangeExec.hour=Number(c[1]),c[4].split(",").forEach(function(b){a.rangeExec.weekDays.push(Number(b))}),a.rangeExec.type=b.cronType;break;case"monthly":c=b.cron.split(" "),a.rangeExec.hour=Number(c[1]),a.rangeExec.monthDay=Number(c[2]),a.rangeExec.type=b.cronType;break;case"currentDay":a.switchValues.today=!0}a.$watch("rangeExec",function(b){a.switchValues.today||m()},!0)}a.forms={},a.rangeExec={weekDays:[],monthDay:null,hour:0,type:null},a.initReports=function(){var c;return a.reports=[],a.tempTodayCron=null,g.query().$promise.then(function(b){return a.defaultTreeData=JSON.parse(b[0].tree),a.customTreeData=JSON.parse(b[1].tree),i.get().$promise}).then(function(b){return a.defRep=b.rows,a.defRep.length&&_.forEach(a.defRep,function(b){(c=_.find(a.defaultTreeData,{id:b.parent}))&&(b.parent="Motion Reports - "+c.text,b.type="default")}),j.get().$promise}).then(function(b){return a.cusRep=b.rows,a.cusRep.length&&_.forEach(a.cusRep,function(b){(c=_.find(a.customTreeData,{id:b.parent}))&&(b.parent="Custom Reports - "+c.text,b.type="custom")}),l.get().$promise}).then(function(b){a.mailServers=b.rows}).catch(function(a){b.error(a)})},a.initView=function(){return h.get({id:d.id}).$promise.then(function(b){a.schedule=b,n(b)}).then(function(){e.socket.on("schedule:update",function(b){a.schedule.id===b.id&&(a.schedule.active=b.active,a.schedule.sendMail=b.sendMail)})}).catch(function(a){console.error(a),f.path("/tools/scheduler/list")})},a.refreshSlider=function(){k(function(){a.$broadcast("rzSliderForceRender"),a.refreshSlider=null})},a.monthDays=function(){for(var a=[],b=1;b<=31;b++)a.push(b);return a}(),a.hours=function(){for(var a=[],b=0;b<=23;b++)a.push(b);return a}(),a.setReportTree=function(b){a.schedule.reportType=b.type},a.validitySlider={ceil:24,floor:0,showTicks:!0},a.switchValues={today:!1},a.switches={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.scheduleTypes=[{name:"APPLICATION_REPORT_EXTRACTION",value:"report"}],a.todayCron=[{name:"15 min",value:"*/15 * * * *"},{name:"30 min",value:"*/30 * * * *"},{name:"1 h",value:"0 * * * *"}],a.reportRanges=[{name:"APPLICATION_PREVIOUS_DAY",value:"yesterday"},{name:"APPLICATION_LAST_SEVEN_DAYS",value:"last7"},{name:"APPLICATION_LAST_THIRTY_DAYS",value:"last30"},{name:"APPLICATION_LAST_MONTH",value:"lastMonth"}],a.cronTypes=[{name:"APPLICATION_DAY",value:"daily"},{name:"APPLICATION_WEEK",value:"weekly"},{name:"APPLICATION_MONTH",value:"monthly"}],a.weekDays=[{name:"APPLICATION_MONDAY",value:1},{name:"APPLICATION_TUESDAY",value:2},{name:"APPLICATION_WEDNESDAY",value:3},{name:"APPLICATION_THURSDAY",value:4},{name:"APPLICATION_FRIDAY",value:5},{name:"APPLICATION_SATURDAY",value:6},{name:"APPLICATION_SUNDAY",value:0}],a.checkToday=function(){a.switchValues.today?(a.schedule.cron=angular.copy(a.tempTodayCron),a.schedule.cronType="currentDay"):(a.tempTodayCron=angular.copy(a.schedule.cron),a.schedule.cron=void 0,m())},a.updateSchedule=function(){return h.update({id:a.schedule.id},a.schedule).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){console.error(a),b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler.view",{url:"/view/:id",templateUrl:"app/tools/scheduler/view/view.html",controller:"SchedulerViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.scheduler.view.settings",{url:"/settings",templateUrl:"app/tools/scheduler/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("SchedulerWizardCtrl",["$scope","WizardHandler","$location","xAlert","Scheduler","ReportTree","$translate","DefaultReport","CustomReport","MailServerOut",function(a,b,c,d,e,f,g,h,i,j){function k(){switch(a.item.cronType=a.rangeExec.type,a.rangeExec.type){case"daily":a.item.cron="00 "+a.rangeExec.hour+" * * *";break;case"weekly":a.item.cron="00 "+a.rangeExec.hour+" * * "+a.rangeExec.weekDays.join(",");break;case"monthly":a.item.cron="00 "+a.rangeExec.hour+" "+a.rangeExec.monthDay+" * *"}}a.forms={},a.item={validityStart:8,validityEnd:16,type:"report",reportType:"default"},a.initReports=function(){a.reports=[];var b;return f.query().$promise.then(function(b){return a.defaultTreeData=JSON.parse(b[0].tree),a.customTreeData=JSON.parse(b[1].tree),h.get().$promise}).then(function(c){return a.defRep=c.rows,a.defRep.length&&_.forEach(a.defRep,function(c){(b=_.find(a.defaultTreeData,{id:c.parent}))&&(c.parent="Motion Reports - "+b.text,c.type="default")}),i.get().$promise}).then(function(c){return a.cusRep=c.rows,a.cusRep.length&&_.forEach(a.cusRep,function(c){(b=_.find(a.customTreeData,{id:c.parent}))&&(c.parent="Custom Reports - "+b.text,c.type="custom")}),j.get().$promise}).then(function(b){a.mailServers=b.rows}).catch(function(a){d.error(a)})},a.setReportTree=function(b){a.item.reportType=b.type},a.validitySlider={ceil:24,floor:0,showTicks:!0},a.switchValues={today:!1},a.switches={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.scheduleTypes=[{name:"APPLICATION_REPORT_EXTRACTION",value:"report"}],a.todayCron=[{name:"15 min",value:"*/15 * * * *"},{name:"30 min",value:"*/30 * * * *"},{name:"1 h",value:"0 * * * *"}],a.reportRanges=[{name:"APPLICATION_PREVIOUS_DAY",value:"yesterday"},{name:"APPLICATION_LAST_SEVEN_DAYS",value:"last7"},{name:"APPLICATION_LAST_THIRTY_DAYS",value:"last30"},{name:"APPLICATION_LAST_MONTH",value:"lastMonth"}],a.cronTypes=[{name:"APPLICATION_DAY",value:"daily"},{name:"APPLICATION_WEEK",value:"weekly"},{name:"APPLICATION_MONTH",value:"monthly"}],a.weekDays=[{name:"APPLICATION_MONDAY",value:1},{name:"APPLICATION_TUESDAY",value:2},{name:"APPLICATION_WEDNESDAY",value:3},{name:"APPLICATION_THURSDAY",value:4},{name:"APPLICATION_FRIDAY",value:5},{name:"APPLICATION_SATURDAY",value:6},{name:"APPLICATION_SUNDAY",value:0}],a.tempTodayCron=null,a.checkToday=function(){a.switchValues.today?(a.item.cron=angular.copy(a.tempTodayCron),a.item.cronType="currentDay"):(a.tempTodayCron=angular.copy(a.item.cron),a.item.cron=void 0,k())},a.monthDays=function(){for(var a=[],b=1;b<=31;b++)a.push(b);return a}(),a.hours=function(){for(var a=[],b=0;b<=23;b++)a.push(b);return a}(),a.rangeExec={weekDays:[],monthDay:null,hour:0,type:null},a.$watch("rangeExec",function(b){a.switchValues.today||k()},!0),a.next=function(){b.wizard().next()},a.previous=function(){b.wizard().previous()},a.exitValidation=function(a){return a},a.createItem=function(){return e.save(a.item).$promise.then(function(){c.path("/tools/scheduler/list")}).catch(function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler.wizard",{url:"/wizard",templateUrl:"app/tools/scheduler/wizard/wizard.html",controller:"SchedulerWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("SoundListCtrl",["$scope","$http","socket","Modal","$q","FileUploader","$translate","xAlert","$cookieStore","$sce","Sound",function(a,b,c,d,e,f,g,h,i,j,k){a.Sound=k,a.isCollapsed=!0,a.downloadButtonClass="btn btn-xs blue-hoki",a.delete=d.confirm.delete(function(a){b.delete("/api/sounds/"+a).success(function(a){}).error(function(a){console.log(a)})}),a.updateAudio=function(a,c){var d=e.defer();return b.put("/api/sounds/"+a,c).success(function(a){d.resolve()}).error(function(a){console.log(a.message),d.reject(a.message)}),d.promise},a.$on("$destroy",function(){c.unsyncUpdates("sound")}),a.initList=function(){b.get("/api/sounds").success(function(b){a.sounds=b.rows,b.rows.length||(a.isCollapsed=!1),c.syncUpdates("sound",a.sounds,function(){a.sounds.length||(a.isCollapsed=!1)})})};var l=a.uploader=new f({url:"/api/sounds",withCredentials:!0,headers:{Authorization:"Bearer "+i.get("token")}});l.filters.push({name:"customFilter",fn:function(a,b){return this.queue.length<10}}),l.onWhenAddingFileFailed=function(a,b,c){console.info("onWhenAddingFileFailed",a,b,c)},l.onAfterAddingFile=function(a){console.info("onAfterAddingFile",a)},l.onAfterAddingAll=function(a){console.info("onAfterAddingAll",a)},l.onBeforeUploadItem=function(a){console.info("onBeforeUploadItem",a)},l.onProgressItem=function(a,b){console.info("onProgressItem",a,b),a.isUploading=!0},l.onProgressAll=function(a){console.info("onProgressAll",a)},l.onSuccessItem=function(a,b,c,d){console.info("onSuccessItem",a,b,c,d),a.isUploading=!1},l.onErrorItem=function(a,b,c,d){console.info("onErrorItem",a,b,c,d),a.responseMessage=b,
-a.isUploading=!1},l.onCancelItem=function(a,b,c,d){console.info("onCancelItem",a,b,c,d),a.isUploading=!1},l.onCompleteItem=function(a,b,c,d){console.info("onCompleteItem",a,b,c,d),a.isUploading=!1},l.onCompleteAll=function(){console.info("onCompleteAll")}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.sounds.list",{url:"/list",templateUrl:"app/tools/sound/list/list.html",controller:"SoundListCtrl",authenticate:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js"]})}]}})}]),angular.module("xCallyShuttleApp").factory("Sound",["$resource",function(a){return a("/api/sounds/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.sounds",{url:"/sounds",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:60}}})}]),angular.module("xCallyShuttleApp").controller("TagListCtrl",["$scope","$uibModal","Tag","gridOptions","$rootScope",function(a,b,c,d,e){a.initView=function(){var b={exporterCsvFilename:"tag.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/tags/view/{{row.entity.id}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){b.open({animation:!0,templateUrl:"app/tools/tag/list/list.create.modal.html",controller:"TagListCreateCtrl"}).result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("TagListCreateCtrl",["$scope","$translate","$uibModalInstance","Tag","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.tags.list",{url:"/list",templateUrl:"app/tools/tag/list/list.html",controller:"TagListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Tag",["$resource",function(a){return a("/api/tags/:id/:controller/:tag",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.tags",{url:"/tags",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:55}}})}]),angular.module("xCallyShuttleApp").controller("TagViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location","Tag","gridOptions","List","Company","Contact","uiGridConstants","usSpinnerService",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(){m.stop("spinner-grid"),a.readyGrid=!0}a.getTag=function(){return g.get({id:e.id}).$promise.then(function(b){a.tag=b}).catch(function(a){c.error(a)})},a.updateTag=function(){var b=angular.copy(a.tag);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){c.error(a)})},a.initChat=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagChat.csv",columnDefs:[{name:"type"},{name:"status"},{name:"ChatWebsite.name",displayName:"APPLICATION_WEBSITE"},{name:"ChatVisitor.email",displayName:"APPLICATION_VISITOR"},{name:"action",width:40,buttons:[{class:"green",name:"chatRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'chatRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"chat",tag:a.tag.name},null,null,n())},a.initMail=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagMail.csv",columnDefs:[{name:"subject"},{name:"from"},{name:"account"},{name:"status"},{name:"action",width:40,buttons:[{class:"green",name:"mailRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'mailRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"mail",tag:a.tag.name},null,null,n())},a.initFax=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagFax.csv",columnDefs:[{name:"from"},{name:"account"},{name:"status"},{name:"action",width:40,buttons:[{class:"green",name:"faxRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'faxRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"fax",tag:a.tag.name},null,null,n())},a.initSms=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagSms.csv",columnDefs:[{name:"from"},{name:"status"},{name:"action",width:40,buttons:[{class:"green",name:"smsRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'smsRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"sms",tag:a.tag.name},null,null,n())},a.initContacts=function(){a.readyGrid=!1,m.spin("spinner-grid");var b;return i.get().$promise.then(function(b){return a.lists=[],b.rows.forEach(function(b,c){a.lists.push({value:b.id,label:b.name})}),j.get().$promise}).then(function(b){a.companies=[],b.rows.forEach(function(b,c){a.companies.push({value:b.id,label:b.name})})}).then(function(){b={enableRowSelection:!1,exporterCsvFilename:"tagContacts.csv",columnDefs:[{name:"firstName"},{name:"lastName"},{name:"phone"},{name:"email"},{name:"ListId",displayName:"APPLICATION_LIST",field:"List.name",filter:{type:l.filter.SELECT,selectOptions:a.lists}},{name:"CompanyId",displayName:"APPLICATION_COMPANY",field:"Company.name",filter:{type:l.filter.SELECT,term:e.companyId||null,selectOptions:a.companies}},{name:"action",width:40,buttons:[{class:"blue-hoki",name:"profile",onClick:"grid.appScope.openContactTab(row.entity)"}]}]},a.gridOptions=h.gridOptions(g,b,a,{controller:"contacts",tag:a.tag.name},null,null,n())}).catch(function(a){c.error(a)})},a.openRoom=function(b,c){var d=_.find(a.workspaces,{id:b,type:c});if(d)d.active=!0;else{var e;switch(c){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="fa fa-fax";break;case"smsRoom":e="glyphicon glyphicon-comment"}a.workspaces.push({id:b,type:c,class:e,active:!0})}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.tags.view",{url:"/view/:id",templateUrl:"app/tools/tag/view/view.html",controller:"TagViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.tags.view.settings",{url:"/settings",templateUrl:"app/tools/tag/view/view.settings.html"}).state("main.tools.tags.view.chat",{url:"/chat",templateUrl:"app/tools/tag/view/view.chat.html"}).state("main.tools.tags.view.mail",{url:"/mail",templateUrl:"app/tools/tag/view/view.mail.html"}).state("main.tools.tags.view.fax",{url:"/fax",templateUrl:"app/tools/tag/view/view.fax.html"}).state("main.tools.tags.view.sms",{url:"/sms",templateUrl:"app/tools/tag/view/view.sms.html"}).state("main.tools.tags.view.contacts",{url:"/contacts",templateUrl:"app/tools/tag/view/view.contacts.html"})}]),angular.module("xCallyShuttleApp").controller("TemplateListCtrl",["$scope","Template","gridOptions",function(a,b,c){a.initView=function(){var d={exporterCsvFilename:"templates.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/templates/view/{{row.entity.id}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates.list",{url:"/list",templateUrl:"app/tools/template/list/list.html",controller:"TemplateListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Template",["$resource",function(a){return a("/api/templates/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates",{url:"/templates",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:56}}})}]),angular.module("xCallyShuttleApp").controller("TemplateViewCtrl",["$scope","$rootScope","$http","$translate","$stateParams","xAlert","Template","templateVariable",function(a,b,c,d,e,f,g,h){a.initItem=function(){CKEDITOR.plugins.addExternal("richparams","/assets/plugins/ckeditor-richparams/"),a.options={language:b.language,allowedContent:!0,entities:!1,skin:"office2013",contentsCss:"/assets/css/global/richparams.css",extraPlugins:"richparams,autogrow",autoGrow_minHeight:450,richparams:h,disableNativeSpellChecker:!1,toolbar:[{name:"clipboard",items:["Cut","Copy","Paste","PasteText","PasteFromWord","-","Undo","Redo"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"insert",items:["Image","Table","HorizontalRule","SpecialChar"]},{name:"tools",items:["Maximize"]},{name:"document",items:["Source"]},"/",{name:"basicstyles",items:["Bold","Italic","Underline","Strike","Subscript","Superscript","-","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","Blockquote"]},{name:"styles",items:["Styles","Format"]},"/",{name:"motion",items:["voice","chat","mail","sms","openchannel","fax"]}]},a.form={},a.item={},a.item=g.get({id:e.id})},a.updateItem=function(){return g.update(a.item).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates.view",{url:"/view/:id",templateUrl:"app/tools/template/view/view.html",controller:"TemplateViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.templates.view.settings",{url:"/settings",templateUrl:"app/tools/template/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("TemplateWizardCtrl",["$scope","$rootScope","$location","$http","WizardHandler","xAlert","Template","templateVariable",function(a,b,c,d,e,f,g,h){a.initWizard=function(){CKEDITOR.plugins.addExternal("richparams","/assets/plugins/ckeditor-richparams/"),a.options={language:b.language,allowedContent:!0,entities:!1,skin:"office2013",contentsCss:"/assets/css/global/richparams.css",extraPlugins:"richparams,autogrow",autoGrow_minHeight:450,disableNativeSpellChecker:!1,richparams:h,toolbar:[{name:"clipboard",items:["Cut","Copy","Paste","PasteText","PasteFromWord","-","Undo","Redo"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"insert",items:["Image","Table","HorizontalRule","SpecialChar"]},{name:"tools",items:["Maximize"]},{name:"document",items:["Source"]},"/",{name:"basicstyles",items:["Bold","Italic","Underline","Strike","Subscript","Superscript","-","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","Blockquote"]},{name:"styles",items:["Styles","Format"]},"/",{name:"motion",items:["voice","chat","mail","sms","openchannel","fax"]}]},a.item={},a.form={}},a.exitValidation=function(a){return a},a.createItem=function(){return g.save({name:a.item.name,description:a.item.description,subject:a.item.subject||null,html:a.item.html||null,text:a.item.text||null}).$promise.then(function(){c.path("/tools/templates/list")}).catch(function(a){f.error(a)})}}]);angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates.wizard",{url:"/wizard",templateUrl:"app/tools/template/wizard/wizard.html",controller:"TemplateWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools",{url:"/tools",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("TriggerListCtrl",["$scope","$http","$translate","Modal","xAlert","Trigger","gridOptions",function(a,b,c,d,e,f,g){a.onText="On",a.offText="Off",a.isActive=!0,a.size="mini",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){var b={exporterCsvFilename:"Triggers.csv",columnDefs:[{name:"name"},{name:"description"},{name:"channel"},{name:"status",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.status" type="checkbox" switch-active="{{ grid.appScope.isActive }}" switch-on-text="{{ grid.appScope.onText }}" switch-off-text="{{ grid.appScope.offText }}" switch-on-color="{{ grid.appScope.onColor }}" switch-off-color="{{ grid.appScope.offColor }}" switch-animate="{{ grid.appScope.animate }}" switch-size="{{ grid.appScope.size }}" switch-label="{{ grid.appScope.label }}" switch-icon="{{ grid.appScope.icon }}" switch-radio-off="{{ grid.appScope.radioOff }}" switch-label-width="{{ grid.appScope.labelWidth }}" switch-handle-width="{{ grid.appScope.handleWidth }}"></div>',width:100,enableFiltering:!1},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/triggers/view/{{row.entity.id}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=g.gridOptions(f,b,a)},a.updateItem=function(a){return f.update({id:a.id},a).$promise.then(function(){e.show(c.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers.list",{url:"/list",templateUrl:"app/tools/trigger/list/list.html",controller:"TriggerListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Trigger",["$resource",function(a){return a("/api/triggers/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers",{url:"/triggers",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:50}}})}]),angular.module("xCallyShuttleApp").controller("TriggerViewCtrl",["$scope","$stateParams","$http","$translate","xAlert","triggers","Trigger","$location",function(a,b,c,d,e,f,g,h){a.$triggers=f,a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.forms={general:{}},a.addCondition=function(b){a.trigger[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.trigger[b].splice(c,1)},a.addAction=function(){a.trigger.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.trigger.Actions.splice(b,1)},a.initView=function(){return g.get({id:b.id}).$promise.then(function(b){a.trigger=b}).catch(function(a){e.error(a),h.path("/tools/triggers/list")})},a.updateTrigger=function(){return g.update({id:b.id},a.trigger).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){console.error(a),e.error(a)})},a.exitValidation=function(b){return!(!b||!a.trigger.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers.view",{url:"/view/:id",templateUrl:"app/tools/trigger/view/view.html",controller:"TriggerViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}}).state("main.tools.triggers.view.settings",{url:"/settings",templateUrl:"app/tools/trigger/view/view.settings.html"}).state("main.tools.triggers.view.routes",{url:"/routes",templateUrl:"app/tools/trigger/view/view.routes.html"}).state("main.tools.triggers.view.application",{url:"/application",templateUrl:"app/tools/trigger/view/view.application.html"})}]),angular.module("xCallyShuttleApp").controller("TriggerWizardCtrl",["$scope","$http","$location","xAlert","triggers","WizardHandler","Trigger",function(a,b,c,d,e,f,g){a.$triggers=e,a.statusSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.tempData={voice:{},mail:{},chat:{},fax:{}},a.item={All:[],Any:[],Actions:[]},a.forms={general:void 0,settings:void 0},a.addCondition=function(b){a.item[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.item[b].splice(c,1)},a.addAction=function(){a.item.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.item.Actions.splice(b,1)},a.$watch("item.channel",function(b,c){c&&(a.tempData[c].All=_.clone(a.item.All,!0),a.tempData[c].Any=_.clone(a.item.Any,!0),a.tempData[c].Actions=_.clone(a.item.Actions,!0)),a.item.All=a.tempData[b].All?a.tempData[b].All:[],a.item.Any=a.tempData[b].Any?a.tempData[b].Any:[],a.item.Actions=a.tempData[b].Actions?a.tempData[b].Actions:[]},!0),a.item.channel="voice",a.createItem=function(){return g.save(a.item).$promise.then(function(){c.path("/tools/triggers/list")}).catch(function(a){console.error(a),d.error(a)})},a.next=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.exitValidation=function(a){return a},a.exitSettingsValidation=function(b){return!(!b||!a.item.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers.wizard",{url:"/wizard",templateUrl:"app/tools/trigger/wizard/wizard.html",controller:"TriggerWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("TrunkListCtrl",["$scope","Trunk","gridOptions","xAlert","$translate","socket",function(a,b,c,d,e,f){function g(){f.socket.on("voice:trunks",function(b){var c=_.find(a.gridOptions.data,{name:b.name});c&&(c.status=b.status,c.peerstatus=b.peerstatus)})}a.isActive=!0,a.size="mini",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){var d={exporterCsvFilename:"Trunks.csv",columnDefs:[{name:"name"},{name:"active",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.active" type="checkbox" switch-active="{{ grid.appScope.isActive }}" switch-on-text="{{ \'APPLICATION_YES\' | translate }}" switch-off-text="{{ \'APPLICATION_NO\' | translate }}" switch-on-color="{{ grid.appScope.onColor }}" switch-off-color="{{ grid.appScope.offColor }}" switch-animate="{{ grid.appScope.animate }}" switch-size="{{ grid.appScope.size }}" switch-label="{{ grid.appScope.label }}" switch-icon="{{ grid.appScope.icon }}" switch-radio-off="{{ grid.appScope.radioOff }}" switch-label-width="{{ grid.appScope.labelWidth }}" switch-handle-width="{{ grid.appScope.handleWidth }}"></div>'},{name:"host"},{name:"description"},{name:"status",cellTemplate:'<div class="centered-uigrid-td" data-ng-if="row.entity.active && row.entity.registry && row.entity.status">{{row.entity.status}}</div>'},{name:"peerstatus",cellTemplate:'<div class="centered-uigrid-td" data-ng-if="row.entity.active && row.entity.peerstatus">{{row.entity.peerstatus}}</div>'},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/trunks/view/{{row.entity.name}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.name)"}]}]};a.gridOptions=c.gridOptions(b,d,a,null,null,null,g)},a.updateItem=function(a){return b.update({id:a.name},a).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks.list",{url:"/list",templateUrl:"app/tools/trunk/list/list.html",controller:"TrunkListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Trunk",["$resource",function(a){return a("/api/trunks/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks",{url:"/trunks",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:52}}})}]),angular.module("xCallyShuttleApp").controller("TrunkViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","socket","$location","Trunk","VoiceContext",function(a,b,c,d,e,f,g,h,i){a.activeSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.initView=function(){return h.get({id:e.id}).$promise.then(function(b){b.nat=b.nat?b.nat.split(","):[],b.allow=b.allow?b.allow.split(";"):[],b.insecure=b.insecure?b.insecure.split(","):[],b.transport=b.transport?b.transport.split(","):[],a.trunk=b}).then(function(){f.socket.on("voice:trunk",function(b){a.trunk.name===b.username&&(a.trunk.status=b.status,a.trunk.peerstatus=b.peerstatus)})}).catch(function(a){console.error(a),g.path("/tools/trunks/list")})},a.updateTrunk=function(){""===a.trunk.password&&delete a.trunk.password;var b=angular.copy(a.trunk);return b.nat=b.nat.join(","),b.allow=b.allow.join(";"),b.insecure=b.insecure.join(","),b.transport=b.transport.join(","),h.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")}).catch(function(a){c.error(a)})},a.getContexts=function(){return i.get().$promise.then(function(b){a.voiceContexts=b.rows}).catch(function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks.view",{url:"/view/:id",templateUrl:"app/tools/trunk/view/view.html",controller:"TrunkViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.trunks.view.settings",{url:"/settings",templateUrl:"app/tools/trunk/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("TrunkWizardCtrl",["$scope","WizardHandler","$location","xAlert","Trunk",function(a,b,c,d,e){a.initWizard=function(){a.forms={},a.item={context:"from-voip-provider"}},a.next=function(){b.wizard().next()},a.previous=function(){b.wizard().previous()},a.exitValidation=function(a){return a},a.createItem=function(){return a.item.fromuser=a.item.defaultuser,a.item.fromdomain=a.item.host,e.save(a.item).$promise.then(function(){c.path("/tools/trunks/list")}).catch(function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks.wizard",{url:"/wizard",templateUrl:"app/tools/trunk/wizard/wizard.html",controller:"TrunkWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("VariableListCtrl",["$scope","$uibModal","Variable","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"variables.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/variables/view/{{row.entity.id}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){b.open({animation:!0,templateUrl:"app/tools/variable/list/list.create.modal.html",controller:"VariableListCreateCtrl"}).result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("VariableListCreateCtrl",["$scope","$translate","$uibModalInstance","Variable","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.variables.list",{url:"/list",templateUrl:"app/tools/variable/list/list.html",controller:"VariableListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Variable",["$resource",function(a){return a("/api/variables/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.variables",{url:"/variables",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:54}}})}]),angular.module("xCallyShuttleApp").controller("VariableViewCtrl",["$scope","$translate","$stateParams","xAlert","Variable",function(a,b,c,d,e){a.getVariable=function(){return e.get({id:c.id}).$promise.then(function(b){a.variable=b}).catch(function(a){d.error(a)})},a.updateVariable=function(){return e.update({id:c.id},a.variable).$promise.then(function(){d.show(b.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.variables.view",{url:"/view/:id",templateUrl:"app/tools/variable/view/view.html",controller:"VariableViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.variables.view.settings",{url:"/settings",templateUrl:"app/tools/variable/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("YourdashboardListCloneModalCtrl",["$scope","$uibModalInstance","name",function(a,b,c){a.forms={dashboard:{}},a.item={name:c},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("YourdashboardListCreateModalCtrl",["$scope","$uibModalInstance",function(a,b){a.forms={dashboard:void 0},a.item={},a.ok=function(){a.item.model=JSON.stringify({title:a.item.name}),b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("YourdashboardListCtrl",["$scope","$http","$translate","xAlert","Modal","$uibModal","$log","YourDashboard","gridOptions",function(a,b,c,d,e,f,g,h,i){a.initView=function(){var b={exporterCsvFilename:"voice_contexts.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{class:"green",href:"/tools/yourdashboards/show/{{row.entity.id}}",name:"view"},{class:"blue-hoki",href:"/tools/yourdashboards/view/{{row.entity.id}}/settings",name:"settings"},{class:"{{row.entity.defaultEntry ? 'red-sunglo disabled' : 'red-sunglo'}}",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"},{class:"purple",name:"clone",onClick:"grid.appScope.clone(row.entity.id,row.entity.name)"}]}]};a.gridOptions=i.gridOptions(h,b,a)},a.create=function(){f.open({animation:!0,templateUrl:"app/tools/yourdashboard/list/create.modal.html",controller:"YourdashboardListCreateModalCtrl"}).result.then(function(b){return h.save(b).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),a.gridOptions.getPage()}).catch(function(a){console.error(a),d.error(a)})},function(){g.info("Modal dismissed at: "+new Date)})},a.clone=function(b,e){f.open({animation:!0,templateUrl:"app/tools/yourdashboard/list/clone.modal.html",controller:"YourdashboardListCloneModalCtrl",resolve:{name:function(){return e+"_copy"}}}).result.then(function(e){return h.save({id:b,controller:"clone"},e).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),a.gridOptions.getPage()}).catch(function(a){console.error(a),d.error(a)})},function(){g.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards.list",{url:"/list",templateUrl:"app/tools/yourdashboard/list/list.html",controller:"YourdashboardListCtrl",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:59}}})}]),angular.module("xCallyShuttleApp").controller("LeaveEditedDashboardModalCtrl",["$scope","$uibModalInstance",function(a,b){a.close=function(){b.close()},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("YourdashboardShowCtrl",["$scope","$rootScope","localStorageService","xAlert","$translate","Auth","$stateParams","$location","$uibModal","$log","YourDashboard","$interval",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(){return k.get({id:g.id,controller:"values"}).$promise.then(function(){}).catch(function(a){console.error("Error retrieving widgets values",a)})}function n(a){var b,c;if(!a)return 0;for(a=a.toString(),b=c=a.length;b--;){var d=a[b].charCodeAt();56320<=d&&d<=57343&&b--,127<d&&d<=2047?c++:2047<d&&d<=65535&&(c+=2)}return c}a.Auth=f,a.editMode=!1;var o;a.getDashboard=function(){return k.get({id:g.id}).$promise.then(function(b){!b[f.getRole()]&&h.path("/landing");var c={name:"dashboard",structure:"4-8",enableconfirmdelete:!0,maximizable:!0,collapsible:!0};b.model=JSON.parse(b.model||'{"title":"Dashboard"}'),b.editable=!(!f.isAdmin()||!b.editable),a.dashboard=_.merge(c,b),m(),o=l(function(){m()},1e3*parseInt(a.dashboard.timeout||5))}).catch(function(a){h.path("/tools/yourdashboards/list")})},a.$on("$locationChangeStart",function(b,c,d){if(a.editMode){b.preventDefault();i.open({animation:!0,templateUrl:"app/tools/yourdashboard/show/leaveEditedDashboard.modal.html",controller:"LeaveEditedDashboardModalCtrl"}).result.then(function(b){a.editMode=!1;var d=location.protocol+"//"+location.host;h.path(c.replace(d,""))},function(){j.info("Modal dismissed at: "+new Date)})}});var p=function(c,f,h){var i=angular.copy(a.dashboard);if(i.name=a.dashboard.model.title,i.model=JSON.stringify(i.model),n(i.model)<=64e3)return k.update({id:g.id},i).$promise.then(function(){d.show(e.instant("MESSAGE_DASHBOARD_SAVED")+"!","success"),a.editMode=!1}).catch(function(b){d.error(b),i.model=JSON.parse(i.model),i.name="dashboard",a.dashboard=i});d.show(e.instant("MESSAGE_DASHBOARD_TOO_BIG")+"!","warning"),b.$broadcast("adfToggleEditMode")};a.$on("adfDashboardChanged",p),a.$on("adfIsEditMode",function(){a.editMode=!0}),a.$on("$destroy",function(){l.cancel(o)})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards.show",{url:"/show/:id",templateUrl:"app/tools/yourdashboard/show/show.html",controller:"YourdashboardShowCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:2}}})}]),angular.module("xCallyShuttleApp").controller("YourdashboardViewCtrl",["$scope","$rootScope","xAlert","$translate","$stateParams","$location","YourDashboard",function(a,b,c,d,e,f,g){a.radioSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.getDashboard=function(){return g.get({id:e.id}).$promise.then(function(b){delete b.model,a.dashboard=b}).catch(function(){f.path("/tools/yourdashboards/list")})},a.updateDashboard=function(){var b=angular.copy(a.dashboard);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")}).catch(function(d){c.error(d),a.dashboard=b})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards.view",{url:"/view/:id",templateUrl:"app/tools/yourdashboard/view/view.html",controller:"YourdashboardViewCtrl",resolve:{
-deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]},data:{permissions:{only:["admin","user"],redirectTo:"landing",id:59}}}).state("main.tools.yourdashboards.view.settings",{url:"/settings",templateUrl:"app/tools/yourdashboard/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("YourDashboard",["$resource",function(a){return a("/api/dashboards/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards",{url:"/yourdashboards",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("ZendeskListCtrl",["$scope","ZendeskAccount","gridOptions","xAlert","$translate",function(a,b,c,d,e){a.initView=function(){var d={exporterCsvFilename:"zendesk_account.csv",columnDefs:[{name:"name",displayName:"APPLICATION_NAME"},{name:"username"},{name:"remoteUri",displayName:"APPLICATION_URI"},{name:"action",buttons:[{class:"blue-hoki",href:"/zendesk/view/{{row.entity.id}}/account",name:"profile"},{class:"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.check({id:a}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")}).catch(function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.list",{url:"/list",templateUrl:"app/zendesk/list/list.html",controller:"ZendeskListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view.configurations",{url:"/configurations",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("ZendeskViewConfigurationListCtrl",["$scope","$stateParams","$translate","gridOptions","ZendeskConfiguration","$uibModal",function(a,b,c,d,e,f){a.initView=function(){var c={exporterCsvFilename:"zendesk_configurations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{class:"blue-hoki",href:"/zendesk/view/{{row.entity.AccountId}}/configurations/view/{{row.entity.id}}",name:"profile"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(e,c,a,{accountId:b.id})},a.createItem=function(){f.open({animation:!0,templateUrl:"app/zendesk/view/configuration/list/create.modal.html",controller:"ZendeskCreateConfigurationCtrl"}).result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("ZendeskCreateConfigurationCtrl",["$scope","$translate","$uibModalInstance","ZendeskConfiguration","xAlert","$stateParams","channel",function(a,b,c,d,e,f,g){a.form={},a.item={},a.channels=g,a.item.channel="voice",a.item.type="Queue",a.save=function(){return d.save({accountId:f.id},a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view.configurations.list",{url:"/list",templateUrl:"app/zendesk/view/configuration/list/list.html",controller:"ZendeskViewConfigurationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ZendeskViewConfigurationViewCtrl",["$scope","$stateParams","$filter","$translate","socket","ZendeskConfiguration","xAlert","variable","Variable","ZendeskAccount","Tag","ZendeskField",function(a,b,c,d,e,f,g,h,i,j,k,l){a.$on("$destroy",function(){e.unsyncUpdates("zendesk_field")}),a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:300,scrollInertia:0},a.fieldType=[{type:"string",title:"String"},{type:"variable",title:"Variable"},{type:"customVariable",title:"Custom Variable"}],a.descFieldType=[{type:"string",title:"String"},{type:"keyValue",title:"Key Value"}],a.groupVariableByGroup=function(a){switch(a.group){case"voice_queue":return"Voice: Queue";case"voice_outbound":return"Voice: Outbound";default:return"Other"}},a.initView=function(){a.configurationName="",a.subjectConfig=[],a.descriptionConfig=[],a.fieldConfig=[],a.selectedTags={tags:[]},a.variables=h},a.getConfiguration=function(){return f.get({accountId:b.id,id:b.configurationId}).$promise.then(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,a.selectedTags={tags:_.map(b.Tags,function(a){return a.id})},e.socket.on("zendesk_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})}).catch(function(a){g.error(a)})},a.getCustomVariables=function(){return i.get().$promise.then(function(b){a.customVariables=b.rows}).catch(function(a){g.error(a)})},a.getFields=function(){return j.fields({id:b.id}).$promise.then(function(b){a.accountFields=c("zendesk")(b)}).catch(function(a){g.error(a)})},a.getTags=function(){return k.get().$promise.then(function(b){a.tags=b.rows}).catch(function(a){g.error(a)})},a.addItem=function(c){var d={};switch(c){case"subject":case"description":d={type:"string",content:""};break;case"field":d={content:""}}return f.save({accountId:b.id,id:b.configurationId,controller:c},d).$promise.then(function(b){switch(c){case"subject":a.subjectConfig.push(b);break;case"description":a.descriptionConfig.push(b);break;case"field":a.fieldConfig.push(b)}}).catch(function(a){g.error(a)})},a.changeType=function(b){"variable"===b.type?(b.content="",b.variableName=""):"string"===b.type?(b.VariableId=null,b.variableName=""):"customVariable"===b.type&&(b.VariableId=null,b.content=""),a.updateField(b)},a.updateField=function(a){return l.update({accountId:b.id,configurationId:b.configurationId,id:a.id},a).$promise.then(function(){}).catch(function(a){g.error(a)})},a.removeItem=function(a){return l.delete({accountId:b.id,configurationId:b.configurationId,id:a.id}).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+"!","success")}).catch(function(a){g.error(a)})},a.changeDescType=function(b){"keyValue"===b.type?(b.content="","string"===b.keyType?(b.VariableId=null,b.variableName=""):"variable"===b.keyType?(b.keyContent="",b.VariableId=null):"customVariable"===b.keyType&&(b.keyContent="",b.variableName="")):"string"===b.type&&(b.VariableId=null,b.variableName="",b.key="",b.keyContent=""),a.updateField(b)},a.changeFieldType=function(b){if(b.content="",b.variableName="",b.nameField="",b.VariableId=null,b.idField){var c=_.find(a.accountFields,"id",b.idField);c&&(c.system_field_options?(b.customField=!1,b.nameField=c.title.toLowerCase()):b.customField=!0)}a.updateField(b)},a.updateTags=function(){return f.update({accountId:b.id,id:b.configurationId,controller:"tags"},a.selectedTags.tags).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+".","success")}).catch(function(a){g.error(a)})},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"id",b);return c?c.system_field_options?c.system_field_options:null:void 0}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view.configurations.view",{url:"/view/:configurationId",templateUrl:"app/zendesk/view/configuration/view/view.html",controller:"ZendeskViewConfigurationViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("ZendeskViewCtrl",["$scope","$stateParams","$translate","xAlert","Modal","ZendeskAccount",function(a,b,c,d,e,f){a.initView=function(){return f.get({id:b.id}).$promise.then(function(b){a.account=b}).catch(function(a){d.error(a)})},a.updateItem=function(){return f.update({id:b.id},a.account).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE")+".","success")}).catch(function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view",{url:"/view/:id",templateUrl:"app/zendesk/view/view.html",controller:"ZendeskViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.zendesk.view.account",{url:"/account",templateUrl:"app/zendesk/view/view.account.html"})}]),angular.module("xCallyShuttleApp").controller("ZendeskWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler","ZendeskAccount",function(a,b,c,d,e,f,g){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={},a.item.authType="password",a.item.serverUrl=c.protocol()+"://"+location.host},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/zendesk/list")}).catch(function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.wizard",{url:"/wizard",templateUrl:"app/zendesk/wizard/wizard.html",controller:"ZendeskWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("ZendeskAccount",["$resource",function(a){return a("/api/zendesk/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"},fields:{params:{controller:"fields"},isArray:!0},check:{params:{controller:"check"}}})}]).factory("ZendeskConfiguration",["$resource",function(a){return a("/api/zendesk/accounts/:accountId/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("ZendeskField",["$resource",function(a){return a("/api/zendesk/accounts/:accountId/configurations/:configurationId/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk",{url:"/zendesk",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").factory("AuthResource",["$resource",function(a){return a("/auth/local/:controller/:controller2/:param",{param:"@param"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Auth",["$location","$rootScope","$http","User","$cookieStore","$q","localStorageService",function(a,b,c,d,e,f,g){var h={};return e.get("token")&&(h=d.me()),{login:function(a,i){var j=i||angular.noop,k=f.defer();return c.post("/auth/local",{name:a.name,password:a.password,remember:a.remember}).success(function(a){return e.put("role",a.role),e.put("token",a.token),e.put("userId",a.userId),g.set("loggedIn",!0),h=d.me({},function(){b.$broadcast("login")}),k.resolve(a),j()}).error(function(a){return this.logout(),k.reject(a),j(a)}.bind(this)),k.promise},recover:function(a,b){var d=b||angular.noop,e=f.defer();return c.post("/auth/local/recover",{email:a.email}).success(function(a){return e.resolve(a),d()}).error(function(a){return e.reject(a),d(a)}.bind(this)),e.promise},reset:function(a,b){var d=b||angular.noop,e=f.defer();return c.post("/auth/local/reset/"+a.token,{password:a.password}).success(function(a){return e.resolve(a),d()}).error(function(a){return e.reject(a),d(a)}.bind(this)),e.promise},loginWithToken:function(a,c,f){e.put("role",f),e.put("token",a),e.put("userId",c),h=d.me({},function(){b.$broadcast("login")})},logout:function(){e.remove("role"),e.remove("token"),e.remove("userId"),g.set("loggedIn"),h={},b.$broadcast("logout")},createUser:function(a,b){var c=b||angular.noop;return d.save(a,function(b){return e.put("token",b.token),h=d.me(),c(a)},function(a){return this.logout(),c(a)}.bind(this)).$promise},changePassword:function(a,b,c){var e=c||angular.noop;return d.changePassword({id:h.id},{oldPassword:a,newPassword:b},function(a){return e(null,a)},function(a){return e(a)}).$promise},getCurrentUser:function(){return h},isLoggedIn:function(){return h.hasOwnProperty("role")},isLoggedInAsync:function(a){h.hasOwnProperty("$promise")?h.$promise.then(function(){a(!0)}).catch(function(){a(!1)}):a(h.hasOwnProperty("role")?!0:!1)},isAdmin:function(){return"admin"===(e.get("role")||h.role)},isUser:function(){return"user"===(e.get("role")||h.role)},isAgent:function(){return"agent"===(e.get("role")||h.role)},getRole:function(){return h.role},getToken:function(){return e.get("token")}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderAccountEmail",["$compile","$timeout","MailAccount","xAlert","Template",function(a,b,c,d,e){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/accountEmail/actionBuilder.html",compile:function(f){function g(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var h,i;return h=f.contents().remove(),function(f,j){f.randomName=g(),b(function(){return c.get().$promise.then(function(a){return _.forEach(a.rows,function(a){a.id=String(a.id)}),f.accounts=a,e.get().$promise}).then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),f.templates=a.rows}).catch(function(a){d.error(a)})}),i||(i=a(h)),j.append(i(f,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderAccountSms",["$compile","$timeout","SmsAccount","xAlert",function(a,b,c,d){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/accountSms/actionBuilder.html",compile:function(e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=e.contents().remove(),function(e,i){e.randomName=f(),b(function(){return c.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),e.accounts=a}).catch(function(a){d.error(a)})}),h||(h=a(g)),i.append(h(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderAccountTemplate",["$compile","xAlert","$http","$timeout","Template","MailAccount",function(a,b,c,d,e,f){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/accountTemplate/actionBuilder.html",compile:function(c){function g(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var h,i;return h=c.contents().remove(),function(c,j){c.randomName=g(),d(function(){return e.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.templates=a}).then(function(){return f.get().$promise}).then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.accounts=a}).catch(function(a){b.error(a)})}),i||(i=a(h)),j.append(i(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderClose",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/close/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderCm",["$compile","xAlert","$http","$timeout","$translate","List",function(a,b,c,d,e,f){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/cm/actionBuilder.html",compile:function(c){var e,g;return e=c.contents().remove(),function(c,h){function i(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.randomName=i(),c.switch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},d(function(){return f.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.lists=a.rows}).catch(function(a){b.error(a)})}),g||(g=a(e)),h.append(g(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderEmail",["$compile","xAlert","$timeout","Template",function(a,b,c,d){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/email/actionBuilder.html",compile:function(e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=e.contents().remove(),function(e,i){e.randomName=f(),c(function(){return d.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),e.templates=a.rows}).catch(function(a){b.error(a)})}),h||(h=a(g)),i.append(h(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderForward",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/forward/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderHttp",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/http/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),b.methods=["GET","POST"],e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderIntegration",["$compile","xAlert","$http","$timeout","Integration","$translate","ZendeskAccount","DeskAccount","SalesforceAccount","FreshdeskAccount","SugarcrmAccount",function(a,b,c,d,e,f,g,h,i,j,k){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/integration/actionBuilder.html",compile:function(c){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var l,m;return l=c.contents().remove(),function(c,n){c.randomName=f(),d(function(){return e.get({active:1}).$promise.then(function(a){_.remove(a.rows,function(a){return"iframe"===a.state}),c.integrations=a.rows,c.element.data1&&o()}).catch(function(a){b.error(a)})});var o=function(){var a;switch(c.element.data1){case"zendesk":a=g;break;case"desk":a=h;break;case"salesforce":a=i;break;case"freshdesk":a=j;break;case"sugarcrm":a=k}if(a)return a.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.accounts=a.rows,c.element.data2&&p()}).catch(function(a){b.error(a)})},p=function(){var a=_.find(c.accounts,{id:c.element.data2}).Configurations;_.forEach(a,function(a){a.id=String(a.id)}),c.configurations=a};c.changeIntegration=function(){c.element.data2="",o()},c.changeAccount=function(){c.element.data3="",p()},m||(m=a(l)),n.append(m(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderJscripty",["$compile","xAlert","$http","$timeout","Template","$translate","JscriptyProject",function(a,b,c,d,e,f,g){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/jscripty/actionBuilder.html",compile:function(c){var e,f;return e=c.contents().remove(),function(c,h){function i(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.randomName=i(),d(function(){return g.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.projects=a.rows}).catch(function(a){b.error(a)})}),f||(f=a(e)),h.append(f(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderMotionBar",["$compile","xAlert","$http","$timeout","Template",function(a,b,c,d,e){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/motionbar/actionBuilder.html",compile:function(c){var f,g;return f=c.contents().remove(),function(c,h){function i(){return e.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.templates=a.rows}).catch(function(a){b.error(a)})}function j(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.randomName=j(),c.motionActions=[{name:"Popup",value:"0"},{name:"URL",value:"1"},{name:"Windows App",value:"2"}],c.changeMode=function(){c.element.data2="",c.element.data3="",i()},d(function(){return i()}),g||(g=a(f)),h.append(g(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderStatus",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/status/actionBuilder.html",compile:function(b){var c,d;return c=b.contents().remove(),function(b,e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}b.randomName=f(),b.states=[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_PENDING",value:"PENDING"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"}],d||(d=a(c)),e.append(d(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderTag",["$compile","xAlert","$http","$timeout","Tag",function(a,b,c,d,e){return{restrict:"E",scope:{myElement:"=element",form:"="},templateUrl:"components/directives/action/tag/actionBuilder.html",compile:function(c){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=c.contents().remove(),function(c,i){console.log("myElement",c.myElement),c.randomName=f(),c.data={tags:c.myElement.data1?c.myElement.data1.split(";"):[]},c.$watch("data.tags",function(a){c.myElement.data1=a.join(";")}),d(function(){return e.get().$promise.then(function(a){c.tags=a.rows}).catch(function(a){b.error(a)})}),h||(h=a(g)),i.append(h(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderTemplate",["$compile","xAlert","$timeout","Template",function(a,b,c,d){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/template/actionBuilder.html",compile:function(e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=e.contents().remove(),function(e,i){e.randomName=f(),c(function(){return d.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),e.templates=a.rows}).catch(function(a){b.error(a)})}),h||(h=a(g)),i.append(h(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderUrlForward",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/urlforward/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),b.types=[{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderWebPopup",["$compile","xAlert","$http","$timeout","Template",function(a,b,c,d,e){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/webPopup/actionBuilder.html",compile:function(c){var f,g;return f=c.contents().remove(),function(c,h){function i(){return e.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.templates=a.rows}).catch(function(a){b.error(a)})}function j(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.typeChange=function(){c.element.data1=null},c.randomName=j(),d(function(){i(),c.element.data2=c.element.data2||"motion"}),g||(g=a(f)),h.append(g(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("conditionBuilder",["$compile","$timeout","$translate","xAlert",function(a,b,c,d){return{restrict:"E",scope:{element:"=",serviceindex:"=",service:"=",form:"="},templateUrl:"components/directives/condition/conditionBuilder.html",compile:function(e){var f,g;return f=e.contents().remove(),function(e,h){function i(a){var b=_.find(e.service.services[e.serviceindex].conditions,{value:a});if(b)if(e.elementType=b.type,e.translateName=b.translate,b.arr)e.values=b.arr;else if(b.resource)return b.resource.get(b.params||{}).$promise.then(function(a){e.values=_.map(a.rows,function(a){return{name:a[b.resName||b.resValue],value:String(a[b.resValue])}})}).catch(function(a){d.show(c.instant(a.message),"danger")})}function j(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}e._=_,e.randomName=j(),b(function(){e.element.field&&i(e.element.field)}),e.checkCondition=function(a){e.element.value="",e.element.operator="",i(a)},g||(g=a(f)),h.append(g(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").factory("xNotificationLicense",["Notification","$rootScope","$location",function(a,b,c){return{show:function(d){var e=b.$new();return e.class="alert-warning",e.icon="fa fa-exclamation-triangle",e.more=function(){c.path("/setting/license/view")},new a({delay:d,templateUrl:"components/factories/xNotificationLicense/xNotificationLicense.html",scope:e})}}}]),angular.module("xCallyShuttleApp").filter("secToTime",[function(){return function(a){return new Date(1970,0,1).setSeconds(a)}}]),angular.module("xCallyShuttleApp").controller("FooterController",["$scope","Setting",function(a,b){a.year=moment().year(),a.$on("$includeContentLoaded",function(){Layout.initFooter()}),a.initFooter=function(){return b.get({controller:"info"}).$promise.then(function(b){a.info=b}).catch(function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").controller("HeaderController",["$scope","$rootScope","$location","$state","$http","$interval","$notification","Auth","xAlert","socket","xNotificationLicense","toastr","localStorageService","Agent","SmsReport","MailReport","OpenChannelReport","ChatReport","ChatRoom","xNotification","$timeout","$translate","$window","User","Pause","Action","FaxReport","List","MailAccount","ChatWebsite","FaxAccount","SmsAccount","OpenChannelAccount","ReportAgent","$uibModal","$log","ReportDial",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K){function L(a,b,c){return null===b&&(b=50),null===c&&(c="..."),a&&a.length>b?a.substring(0,b-c.length)+c:a}function M(b){var c,d="reason";switch(b){case"mail":c=p;break;case"chat":c=r;break;case"fax":c=A;break;case"sms":c=o;break;case"agent":c=H,d="lastevent";break;case"dial":c=K,d="dialstatus";break;case"openchannel":c=q;break;default:return}return c.get({limit:10,order:"updatedAt DESC"}).$promise.then(function(c){_.forEach(c.rows,function(a){if(a[d])switch(a[d].toLowerCase()){case"answer":case"connect":case"complete":a.status="taken";break;case"answered_elsewhere":a.status="taken_elsewhere";break;case"called":a.status="lost";break;case"busy":a.status="busy";break;case"rejected":a.status="rejected";break;case"cancel":case"abandoned":a.status="abandoned"}}),a.agentNotifications[b].rows=c.rows,j.socket.on("report_"+b+":save",function(c){c.status="none",a.agentNotifications[b].rows.unshift(c),"agent"!==b&&"dial"!==b&&(a.agentNotifications[b].timeout[c.id]=setTimeout(function(){clearTimeout(a.agentNotifications[b].timeout[c.id]),_.find(a.agentNotifications[b].rows,{id:c.id}).status="lost",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications[b].new++,delete a.agentNotifications[b].timeout[c.id]},1e3*c.timeslot))}),j.socket.on("report_"+b+":update",function(c){if("agent"===b){_.find(a.activeCalls,{id:c.id})&&(c.agentcomplete||c.agentringnoanswer||c.agentdump)?_.remove(a.activeCalls,{id:c.id}):!c.agentconnectAt||c.agentcomplete||c.agentringnoanswer||c.agentdump||a.activeCalls.push(c)}var e=_.find(a.agentNotifications[b].rows,{id:c.id});if(e&&("agent"!==b&&"dial"!==b&&a.agentNotifications[b].timeout[c.id]&&(clearTimeout(a.agentNotifications[b].timeout[c.id]),delete a.agentNotifications[b].timeout[c.id]),c[d])){switch(c[d].toLowerCase()){case"answer":case"connect":case"complete":c.status="taken";break;case"answered_elsewhere":c.status="taken_elsewhere",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications.chat.new++;break;case"busy":c.status="busy",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications[b].new++;break;case"rejected":c.status="rejected";break;case"cancel":case"abandoned":c.status="abandoned",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications[b].new++}_.merge(e,c)}})}).catch(function(a){i.error(a)})}function N(){return a.headerAgent=h.getCurrentUser(),a.readyTimer=1e3*moment().unix(),y.get().$promise.then(function(b){a.headerPauses=b.rows,j.syncUpdates("pause",a.headerPauses)}).then(function(){j.socket.on("agent:save",function(b){b=b.newValues||b,a.headerAgent.id===b.id&&(_.merge(a.headerAgent,b),b.voicePause&&b.mailPause&&b.chatPause&&b.faxPause&&b.smsPause&&b.openchannelPause||(a.readyTimer=1e3*moment().unix()))})}).finally(function(){h.getCurrentUser().loginInPause&&!m.get("loggedIn")&&a.headerPause("pause")}).catch(function(a){console.log("Error synchronizing agent status:",a)})}function O(){return H.get({id:"active",controller:"calls"}).$promise.then(function(b){a.activeCalls=b.rows}).catch(function(a){i.error(a)})}a.moment=moment,$(document).on("click",".tabbed-dropdown",function(a){a.stopPropagation()}),a.license.hasOwnProperty("expirationTime")&&(h.isAdmin()||h.isUser())&&!a.license.demo&&f(function(){"main.setting.license.view"!==d.current.name&&k.show(3e4)},3e4),a.openRoom=function(b,c){var d=_.find(a.workspaces,{id:b,type:c});if(d)d.active=!0;else{var e;switch(c){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="fa fa-fax";break;case"smsRoom":e="glyphicon glyphicon-comment";break;case"openchannelRoom":e="icon-globe"}a.workspaces.push({id:b,type:c,class:e,active:!0})}},a.toggleSidebar=function(){b.settings.layout.pageSidebarClosed=!b.settings.layout.pageSidebarClosed,m.set("sidebarClosed",b.settings.layout.pageSidebarClosed)},a.chooseContact=function(b){I.open({animation:!0,
-templateUrl:"app/main/chooseContact.modal.html",controller:"ChooseContactModalCtrl",resolve:{data:function(){return{eventChannel:"voice",calleridnum:b}}}}).result.then(function(c){c?a.openContactTab(c):a.newContact({calleridnum:b})},function(){J.info("Modal dismissed at: "+new Date)})},a.loadNotifications=function(b){if(!a.busyLoad[b].end){a.busyLoad[b].busy=!0;var c,d="reason";switch(b){case"mail":c=p;break;case"chat":c=r;break;case"fax":c=A;break;case"sms":c=o;break;case"agent":c=H,d="lastevent";break;case"dial":c=K,d="dialstatus";break;case"openchannel":c=q;break;default:return}return c.get({limit:10,offset:a.agentNotifications[b].rows.length,order:"updatedAt DESC"}).$promise.then(function(c){c.rows.length?(_.forEach(c.rows,function(a){if(a[d])switch(a[d].toLowerCase()){case"answer":case"connect":case"complete":a.status="taken";break;case"answered_elsewhere":a.status="taken_elsewhere";break;case"called":a.status="lost";break;case"busy":a.status="busy";break;case"rejected":a.status="rejected";break;case"abandoned":a.status="abandoned"}}),a.agentNotifications[b].rows=a.agentNotifications[b].rows.concat(c.rows)):a.busyLoad[b].end=!0,a.busyLoad[b].busy=!1}).catch(function(a){i.error(a)})}},a.headerPause=function(b,c,d){return z.save({name:b,agent:a.headerAgent.id,type:c||"DEFAULT PAUSE",data4:c||"DEFAULT PAUSE",channel:d||"all"}).$promise.then(function(){i.show(v.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){i.error(a)})},h.isAgent()&&(N(),a.agentNotifications={mail:{rows:[],new:0,timeout:{}},chat:{rows:[],new:0,timeout:{}},fax:{rows:[],new:0,timeout:{}},sms:{rows:[],new:0,timeout:{}},agent:{rows:[],new:0},dial:{rows:[],new:0},openchannel:{rows:[],new:0}},a.busyLoad={mail:{busy:!1,end:!1},chat:{busy:!1,end:!1},fax:{busy:!1,end:!1},sms:{busy:!1,end:!1},agent:{busy:!1,end:!1},dial:{busy:!1,end:!1},openchannel:{busy:!1,end:!1}},O(),M("agent"),M("dial"),a.license.mail&&M("mail"),a.license.chat&&M("chat"),a.license.fax&&M("fax"),a.license.messaging&&M("sms"),a.license.openchannel&&M("openchannel")),j.socket.on("user_has_chat_room:save",function(b){var c;return s.get({id:Number(b.ChatRoomId)}).$promise.then(function(b){c=b;var d=_.find(a.workspaces,{id:Number(c.id),type:"chatRoom"});d?d.name=a.getFullnames(c):a.workspaces.push({id:c.id,name:a.getFullnames(c),type:"chatRoom",class:"icon-bubble",unread:1})}).catch(function(a){console.error(a)})}),j.socket.on("chat_message:save",function(b){var c;if(b.UserId!==h.getCurrentUser().id){if(!_.find(a.workspaces,{id:Number(b.ChatRoomId),type:"chatRoom"}))return s.get({id:Number(b.ChatRoomId)}).$promise.then(function(b){c=b,a.workspaces.push({id:c.id,name:a.getFullnames(b),type:"chatRoom",class:"icon-bubble",unread:1})}).catch(function(a){console.error(a)})}});var P=function(){return w.Notification},Q=function(){b.settings.layout.onFocus=!0},R=function(){b.settings.layout.onFocus=!1};w.onfocus=Q,w.onblur=R,a.getFullnames=function(a){var b=_.without(_.map(a.Users,"fullname"),h.getCurrentUser().fullname);return a.ChatVisitor&&b.unshift(a.ChatVisitor.fullname),b.join(", ")},a.openContact=function(b,c,d){if(d&&"<unknown>"!==d){var e,f;switch(b){case"mail":e=C,f={email:d};break;case"chat":e=D,f={email:d};break;case"fax":e=E,f={fax:d};break;case"sms":e=F,f={mobile:d};break;default:return}return e.get({id:c}).$promise.then(function(a){return a.ListId?B.save({listId:a.ListId,controller:"contacts"},f).$promise:null}).then(function(b){if(b){var c=_.find(a.workspaces,{contactID:b.id});c?c.active=!0:a.workspaces.push({active:!0,class:"icon-user",contactID:b.id,name:b.email,type:"contact"})}else i.show(v.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")}).catch(function(a){console.error(a)})}},a.initHeader=function(){if("agent"===h.getCurrentUser().role&&(j.socket.on("report_chat:save",function(a){P&&!b.settings.layout.onFocus&&g("CHAT CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Incoming Chat Visitor!",delay:1e3*a.timeslot});var c="<b>"+v.instant("APPLICATION_FROM")+"</b>: "+a.visitorname+"<br><b>"+v.instant("APPLICATION_EMAIL")+"</b>: "+a.visitoremail;"queue"===a.application&&(c+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+a.queuename),t.show(v.instant("APPLICATION_NEW_CHAT_REQUEST"),c,"chat",1e3*a.timeslot,function(){return r.get({id:a.id,controller1:"accept",controller2:a.uniqueid}).$promise.then(function(){i.show("Chat properly assigned","success")}).catch(function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_CHAT_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return r.get({id:a.id,controller1:"reject"}).$promise.then(function(){i.show("Chat properly rejected","success")}).catch(function(a){i.error(a)})})}),j.socket.on("report_mail:save",function(c){if(!_.find(a.workspaces,{id:c.roomid,type:"mailRoom"})){var d="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+c.accountname+"<br> <b>"+v.instant("APPLICATION_FROM")+"</b>: "+c.from+"<br> <b>"+v.instant("APPLICATION_SUBJECT")+"</b>: "+(L(c.subject,30,"...")||"No subject");"queue"===c.application&&(d+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+c.queuename),t.show(v.instant("APPLICATION_NEW_MAIL_REQUEST"),d,"mail",1e3*c.timeslot,function(){return p.get({id:c.id,controller1:"accept",controller2:c.uniqueid}).$promise.then(function(){var b=_.find(a.workspaces,{id:c.roomid,type:"mailRoom"});b?b.active=!0:a.workspaces.push({id:c.roomid,name:c.subject||"No subject",type:"mailRoom",class:"icon-envelope",active:!0,unread:0})}).catch(function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_MAIL_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return p.get({id:c.id,controller1:"reject"}).$promise.catch(function(a){i.error(a)})}),P&&!b.settings.layout.onFocus?g("MAIL CHANNEL",{icon:"assets/images/media/channels/mail64.png",body:"NEW Incoming Mail Message!",delay:1e3*c.timeslot}):console.log("Notification API not supported in your browser")}}),j.socket.on("report_sms:save",function(b){var c="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+b.accountname+"<br> <b>"+v.instant("APPLICATION_FROM")+"</b>: "+b.from;"queue"===b.application&&(c+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+b.queuename),t.show(v.instant("APPLICATION_NEW_SMS_REQUEST"),c,"sms",1e3*b.timeslot,function(){return o.get({id:b.id,controller1:"accept",controller2:b.uniqueid}).$promise.then(function(){var c=_.find(a.workspaces,{id:b.roomid,type:"smsRoom"});c?c.active=!0:a.workspaces.push({id:b.roomid,name:b.from,type:"smsRoom",class:"glyphicon glyphicon-comment",active:!0})}).catch(function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_SMS_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return o.get({id:b.id,controller1:"reject"}).$promise.then(function(){i.show("SMS properly rejected","success")}).catch(function(a){i.error(a)})}),P?g("SMS CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Incoming SMS Message!",delay:1e3*b.timeslot}):console.log("Notification API not supported in your browser")}),j.socket.on("report_openchannel:save",function(b){var c="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+b.accountname+"<br> <b>"+v.instant("APPLICATION_FROM")+"</b>: "+b.from;"queue"===b.application&&(c+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+b.queuename),t.show(v.instant("APPLICATION_NEW_MESSAGE"),c,"openchannel",1e3*b.timeslot,function(){return q.get({id:b.id,controller1:"accept",controller2:b.uniqueid}).$promise.then(function(){var c=_.find(a.workspaces,{id:b.roomid,type:"openchannelRoom"});c?c.active=!0:a.workspaces.push({id:b.roomid,name:b.from,type:"openchannelRoom",class:"icon-globe",active:!0})}).catch(function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return q.get({id:b.id,controller1:"reject"}).$promise.then(function(){i.show("Message properly rejected","success")}).catch(function(a){i.error(a)})}),P?g("OPEN CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Incoming Message!",delay:1e3*b.timeslot}):console.log("Notification API not supported in your browser")}),j.socket.on("report_fax:save",function(c){if(!_.find(a.workspaces,{id:c.roomid,type:"faxRoom"})){var d="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+c.accountname+"<br>               <b>"+v.instant("APPLICATION_PHONE")+"</b>: "+c.from;"queue"===c.application&&(d+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+c.queuename),t.show(v.instant("APPLICATION_NEW_FAX_REQUEST"),d,"fax",1e3*c.timeslot,function(){return A.get({id:c.id,controller1:"accept",controller2:c.uniqueid}).$promise.then(function(){var b=_.find(a.workspaces,{id:c.roomid,type:"faxRoom"});b?b.active=!0:a.workspaces.push({id:c.roomid,name:c.from,type:"faxRoom",class:"fa fa-fax",active:!0,unread:0})}).catch(function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_FAX_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return A.get({id:c.id,controller1:"reject"}).$promise.catch(function(a){i.err(a)})}),P&&!b.settings.layout.onFocus?g("FAX CHANNEL",{icon:"assets/images/media/channels/telephone124.png",body:"NEW Incoming Fax Message!",delay:1e3*c.timeslot}):console.log("Notification API not supported in your browser")}}),h.getCurrentUser().loginInPause))return z.save({name:"pause",agent:h.getCurrentUser().id,type:"LOGININPAUSE",data4:"LOGININPAUSE",channel:"all"}).$promise.catch(function(a){i.error(a)})},a.logout=function(){return e.get("/auth/local/logout").success(function(){h.logout(),c.path("/login")}).error(function(a){i.error(a)})},a.isActive=function(a){return a===c.path()},a.$on("$destroy",function(){console.log("header $destroy"),j.unsyncUpdates("pause"),j.unsyncUpdates("agent"),j.unsyncUpdates("report_chat"),j.unsyncUpdates("report_mail"),j.unsyncUpdates("report_fax"),j.unsyncUpdates("report_sms"),j.unsyncUpdates("report_openchannel"),j.unsyncUpdates("user_has_chat_room"),j.unsyncUpdates("chat_message"),j.unsyncUpdates("report_integration:sugarcrm"),j.unsyncUpdates("report_integration:freshdesk")})}]),angular.module("xCallyShuttleApp").factory("Modal",["$rootScope","$uibModal",function(a,b){function c(c,d){var e=a.$new();return c=c||{},d=d||"modal-default",angular.extend(e,c),b.open({templateUrl:"components/modal/delete.html",windowClass:d,scope:e})}return{confirm:{delete:function(a){return a=a||angular.noop,function(){var b,d=Array.prototype.slice.call(arguments),e=d.shift();b=c({modal:{dismissable:!0,title:"Confirm Delete",html:"<p>Are you sure you want to delete"+(e?"<strong> "+e+"</strong>":" selected items")+"?</p>",buttons:[{classes:"btn red",text:"Delete",click:function(a){b.close(a)}},{classes:"btn default",text:"Cancel",click:function(a){b.dismiss(a)}}]}},"over-topbar center"),b.result.then(function(b){a.apply(b,d)})}}}}}]),angular.module("xCallyShuttleApp").service("application",function(){return{application:{applications:[{type:null,name:"APPLICATION_QUEUE",value:"Queue"},{type:null,name:"APPLICATION_PLAYBACK",value:"Playback"},{type:null,name:"Dial",value:"Dial"},{type:"internalDial",name:"APPLICATION_INTERNAL_DIAL",value:"Dial"},{type:"externalDial",name:"APPLICATION_EXTERNAL_DIAL",value:"Dial"},{type:"RingGroup",name:"Ring Group",value:"Dial"},{type:null,name:"Cally-Square Project",value:"AGI"},{type:null,name:"GoTo",value:"Goto"},{type:null,name:"Hangup",value:"Hangup"},{type:null,name:"Set",value:"Set"},{type:null,name:"APPLICATION_VOICEMAIL",value:"Voicemail"},{type:"videoOn",name:"APPLICATION_VIDEO_ON",value:"Set"},{type:"custom",name:"Custom",value:"custom"}],queueOptions:[{value:"C",name:"APPLICATION_QUEUE_OPTION_C"},{value:"c",name:"APPLICATION_QUEUE_OPTION_c"},{value:"d",name:"APPLICATION_QUEUE_OPTION_d"},{value:"F",name:"APPLICATION_QUEUE_OPTION_F"},{value:"h",name:"APPLICATION_QUEUE_OPTION_h"},{value:"H",name:"APPLICATION_QUEUE_OPTION_H"},{value:"n",name:"APPLICATION_QUEUE_OPTION_n"},{value:"i",name:"APPLICATION_QUEUE_OPTION_i"},{value:"I",name:"APPLICATION_QUEUE_OPTION_I"},{value:"r",name:"APPLICATION_QUEUE_OPTION_r"},{value:"R",name:"APPLICATION_QUEUE_OPTION_R"},{value:"t",name:"APPLICATION_QUEUE_OPTION_t"},{value:"T",name:"APPLICATION_QUEUE_OPTION_T"},{value:"w",name:"APPLICATION_QUEUE_OPTION_w"},{value:"W",name:"APPLICATION_QUEUE_OPTION_W"},{value:"k",name:"APPLICATION_QUEUE_OPTION_k"},{value:"K",name:"APPLICATION_QUEUE_OPTION_K"},{value:"x",name:"APPLICATION_QUEUE_OPTION_x"},{value:"X",name:"APPLICATION_QUEUE_OPTION_X"}],audioOptions:[{value:"skip",name:"APPLICATION_PLAYBACK_OPTION_SKIP"},{value:"noanswer",name:"APPLICATION_PLAYBACK_OPTION_NOANSWER"},{value:"j",name:"APPLICATION_PLAYBACK_OPTION_J"},{value:"say",name:"APPLICATION_PLAYBACK_OPTION_SAY"}],hangupCauses:[{value:"",name:"--"},{value:"1",name:"APPLICATION_HANGUP_CAUSE_1"},{value:"16",name:"APPLICATION_HANGUP_CAUSE_16"},{value:"17",name:"APPLICATION_HANGUP_CAUSE_17"},{value:"18",name:"APPLICATION_HANGUP_CAUSE_18"},{value:"21",name:"APPLICATION_HANGUP_CAUSE_21"},{value:"22",name:"APPLICATION_HANGUP_CAUSE_22"},{value:"27",name:"APPLICATION_HANGUP_CAUSE_27"},{value:"38",name:"APPLICATION_HANGUP_CAUSE_38"},{value:"41",name:"APPLICATION_HANGUP_CAUSE_41"}],intTypes:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"custom",name:"APPLICATION_CUSTOM"},{value:"list",name:"APPLICATION_FROM_LIST"}],checkUnderscore:function(a){return 0===a.indexOf("_")?a:"_"+a}}}}),angular.module("xCallyShuttleApp").service("automations",function(){return{services:{mail:{conditions:[{name:"APPLICATION_STATUS",value:"status",type:"select",arr:[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"},{name:"APPLICATION_STATUS_PENDING",value:"PENDING"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_HOURS_SINCE_CREATED",value:"createdAt",type:"input",operators:[{value:"greater_or_equal",name:"APPLICATION_GTE_TO"},{value:"less_or_equal",name:"APPLICATION_LTE_TO"},{value:"greater",name:"APPLICATION_GREATER_THAN"},{value:"less",name:"APPLICATION_LESS_THAN"}]}],actions:[{name:"APPLICATION_STATUS",value:"status"}]},chat:{conditions:[{name:"APPLICATION_STATUS",value:"status",type:"select",arr:[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"},{name:"APPLICATION_STATUS_PENDING",value:"PENDING"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_HOURS_SINCE_CREATED",value:"createdAt",type:"input",operators:[{value:"greater_or_equal",name:"APPLICATION_GTE_TO"},{value:"less_or_equal",name:"APPLICATION_LTE_TO"},{value:"greater",name:"APPLICATION_GREATER_THAN"},{value:"less",name:"APPLICATION_LESS_THAN"}]}],actions:[{name:"APPLICATION_STATUS",value:"status"}]},fax:{conditions:[{name:"APPLICATION_STATUS",value:"status",type:"select",arr:[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_HOURS_SINCE_CREATED",value:"createdAt",type:"input",operators:[{value:"greater_or_equal",name:"APPLICATION_GTE_TO"},{value:"less_or_equal",name:"APPLICATION_LTE_TO"},{value:"greater",name:"APPLICATION_GREATER_THAN"},{value:"less",name:"APPLICATION_LESS_THAN"}]}],actions:[{name:"APPLICATION_STATUS",value:"status"}]}},channels:["mail","fax","chat"]}}),angular.module("xCallyShuttleApp").service("channel",function(){return[{name:"Voice",value:"voice"}]}),angular.module("xCallyShuttleApp").service("desk_com",function(){return{fields:[{id:"priority",label:"Priority",custom:!1,data:{choices:[1,2,3,4,5,6,7,8,9,10]}},{id:"status",label:"Status",custom:!1,data:{choices:["new","open","pending","resolved","closed"]}},{id:"type",label:"Type",custom:!1,data:{choices:["chat","twitter","email","qna","facebook","phone"]}}]}}),angular.module("xCallyShuttleApp").service("interval",function(){return{interval:{months:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"jan",name:"APPLICATION_JANUARY"},{value:"feb",name:"APPLICATION_FEBRUARY"},{value:"mar",name:"APPLICATION_MARCH"},{value:"apr",name:"APPLICATION_APRIL"},{value:"may",name:"APPLICATION_MAY"},{value:"jun",name:"APPLICATION_JUNE"},{value:"jul",name:"APPLICATION_JULY"},{value:"aug",name:"APPLICATION_AUGUST"},{value:"sep",name:"APPLICATION_SEPTEMBER"},{value:"oct",name:"APPLICATION_OCTOBER"},{value:"nov",name:"APPLICATION_NOVEMBER"},{value:"dec",name:"APPLICATION_DECEMBER"}],monthsNumber:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"1",name:"APPLICATION_JANUARY"},{value:"2",name:"APPLICATION_FEBRUARY"},{value:"3",name:"APPLICATION_MARCH"},{value:"4",name:"APPLICATION_APRIL"},{value:"5",name:"APPLICATION_MAY"},{value:"6",name:"APPLICATION_JUNE"},{value:"7",name:"APPLICATION_JULY"},{value:"8",name:"APPLICATION_AUGUST"},{value:"9",name:"APPLICATION_SEPTEMBER"},{value:"10",name:"APPLICATION_OCTOBER"},{value:"11",name:"APPLICATION_NOVEMBER"},{value:"12",name:"APPLICATION_DECEMBER"}],daysOfWeek:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"mon",name:"APPLICATION_MONDAY"},{value:"tue",name:"APPLICATION_TUESDAY"},{value:"wed",name:"APPLICATION_WEDNESDAY"},{value:"thu",name:"APPLICATION_THURSDAY"},{value:"fri",name:"APPLICATION_FRIDAY"},{value:"sat",name:"APPLICATION_SATURDAY"},{value:"sun",name:"APPLICATION_SUNDAY"}],daysOfMonth:["always",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}}}),angular.module("xCallyShuttleApp").service("report",["ReportAgent","ReportCall","ReportMailSession","ReportMember","ReportQueue","ReportIntegration","ReportChatSession","ReportSmsSession","Contact","Recording","ReportSquare","ReportSquareDetail","User","ReportFaxSession","MailRoom","MailMessage","FaxRoom","FaxMessage","ChatRoom","ChatMessage","SmsRoom","SmsMessage","OpenChannelRoom","OpenChannelMessage","ReportOpenChannelSession","ReportMotionDialer","UserHasVoiceQueue",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A){return{tables:[{value:"users",resource:m,channel:"General"},{value:"cm_contacts",resource:i,channel:"General"},{value:"report_integration_history",resource:f,channel:"General"},{value:"report_agent_history",resource:a,channel:"Voice"},{value:"report_call_history",resource:b,channel:"Voice"},{value:"report_member_history",resource:d,channel:"Voice"},{value:"report_queue_history",resource:e,channel:"Voice"},{value:"voice_recordings",resource:j,channel:"Voice"},{value:"report_square_history",resource:k,channel:"Voice"},{value:"report_square_details_history",resource:l,channel:"Voice"},{value:"report_tdial",resource:z,channel:"Voice"},{value:"report_chat_session_history",resource:g,channel:"Chat"},{value:"chat_rooms",resource:s,channel:"Chat"},{value:"chat_messages",resource:t,channel:"Chat"},{value:"report_mail_session_history",resource:c,channel:"Mail"},{value:"mail_rooms",resource:o,channel:"Mail"},{value:"mail_messages",resource:p,channel:"Mail"},{value:"report_fax_session_history",resource:n,channel:"Fax"},{value:"fax_rooms",resource:q,channel:"Fax"},{value:"fax_messages",resource:r,channel:"Fax"},{value:"report_sms_session_history",resource:h,channel:"Sms"},{value:"sms_rooms",resource:u,channel:"Sms"},{value:"sms_messages",resource:v,channel:"Sms"},{value:"report_openchannel_session_history",resource:y,channel:"Open Channel"},{value:"openchannel_rooms",resource:w,channel:"Open Channel"},{value:"openchannel_messages",resource:x,channel:"Open Channel"},{value:"user_has_voice_queues",resource:A,channel:"Voice"}]}}]),angular.module("xCallyShuttleApp").service("strategies",function(){return["beepall","roundrobin"]}),angular.module("xCallyShuttleApp").service("triggers",["VoiceQueue","ChatQueue","MailQueue","FaxQueue","SmsQueue","OpenChannelQueue","Route",function(a,b,c,d,e,f,g){return{services:{voice:{conditions:[{name:"APPLICATION_QUEUE",value:"queue",type:"select",resource:a,resValue:"name",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_CALL_STATUS",value:"lastevent",type:"select",translate:!0,arr:[{name:"ringing",value:"called"},{name:"up",value:"connect"},{name:"hangup",value:"complete"},{name:"rejected",value:"rejected"},{name:"ringnoanswer",value:"agentringnoanswer"},{name:"abandoned",value:"abandoned"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_OUTBOUND_ROUTE",value:"routeId",type:"select",resource:g,resValue:"id",resName:"exten",params:{type:"outbound"},operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]}],actions:[{name:"APPLICATION_CONTACT_MANAGER",value:"contactManager"},{name:"APPLICATION_INTEGRATIONS",value:"integration",propertyField:"select"},{name:"APPLICATION_MOTION_BAR",value:"motionbar",propertyField:"select"},{name:"APPLICATION_JSCRIPTY",value:"jscripty",propertyField:"select"},{name:"APPLICATION_URL_FORWARD",value:"urlForward"},{name:"APPLICATION_WEB_POPUP",value:"webPopup"}]},mail:{conditions:[{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_CC",value:"cc",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_SUBJECT",value:"subject",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_BODY",value:"text",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_TEMPLATE",value:"template"},{name:"APPLICATION_EMAIL",value:"email"},{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_FORWARD",value:"forward"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},chat:{conditions:[{name:"APPLICATION_NAME",value:"fullname",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_EMAIL",value:"email",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},sms:{conditions:[{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_BODY",value:"body",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},fax:{conditions:[{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},openchannel:{conditions:[{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_BODY",value:"body",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]}},channels:["voice","mail","chat","sms","fax","openchannel"]}}]),angular.module("xCallyShuttleApp").service("variable",function(){return[{title:"Unique ID",name:"uniqueid",group:"voice_queue"},{title:"Caller Number",name:"calleridnum",group:"voice_queue"},{title:"Caller Name",name:"calleridname",group:"voice_queue"},{title:"Queue",name:"queue",group:"voice_queue"},{title:"Called Number",name:"destcalleridnum",group:"voice_queue"},{title:"Called Name",name:"destcalleridname",group:"voice_queue"},{title:"Hold Time",name:"holdtime",group:"voice_queue"},{title:"Talk Time",name:"talktime",group:"voice_queue"},{title:"Connected Time",name:"agentconnectAt",group:"voice_queue"},{title:"Called Time",name:"agentcalledAt",group:"voice_queue"},{title:"DNID",name:"destexten",group:"voice_queue"},{title:"Complete Time",name:"agentcompleteAt",group:"voice_queue"},{title:"No Answer Time",name:"agentringnoanswerAt",group:"voice_queue"},{title:"Recording URL",name:"recordingURL",group:"voice_queue"},{title:"Unique ID",name:"uniqueid",group:"voice_outbound"},{title:"Caller Number",name:"calleridnum",group:"voice_outbound"},{title:"Caller Name",name:"calleridname",group:"voice_outbound"},{title:"Called Number",name:"destcalleridnum",group:"voice_outbound"},{title:"Called Name",name:"destcalleridname",group:"voice_outbound"},{title:"Start Time",name:"starttime",group:"voice_outbound"},{title:"Answer Time",name:"answertime",group:"voice_outbound"},{title:"Complete Time",name:"endtime",group:"voice_outbound"},{title:"Recording URL",name:"recordingURL",group:"voice_outbound"},{title:"Member Name",name:"membername",group:"voice_outbound"}]}),angular.module("xCallyShuttleApp").controller("SidebarController",["$scope","$rootScope","$resource","$location","Auth","Dashboard","Integration","xAlert","$stateParams","socket","$uibModal","Setting",function(a,b,c,d,e,f,g,h,i,j,k,l){a.Auth=e,a.$on("$includeContentLoaded",function(){Metronic.init(),Layout.initSidebar()}),a.getSidebarDashboards=function(){return f.get().$promise.then(function(c){b.dashboards=c.rows,j.syncUpdates("dashboard",b.dashboards),a.$watch("dashboards",function(a){a&&b.initTours()},!0)}).catch(function(){h.show("Error loading your dashboards","danger")})},a.about=function(){k.open({animation:!0,size:"sm",templateUrl:"app/main/about.modal.html",controller:["$scope","$uibModalInstance",function(a,b){a.year=moment().year(),a.getInfo=function(){return l.get({controller:"info"}).$promise.then(function(b){a.info=b}).catch(function(a){console.error(a)})},a.close=function(){b.dismiss("cancel")}}]})},a.getSidebarIntegrations=function(){if(e.isAdmin()||e.isAgent()||b.userModules[19])return g.get().$promise.then(function(b){a.integrations=b.rows,j.syncUpdates("integration",a.integrations)}).catch(function(a){h.error(a)})},a.$on("sidebar $destroy",function(){console.log("destroy"),j.unsyncUpdates("dashboard"),j.unsyncUpdates("integration")})}]),angular.module("xCallyShuttleApp").factory("socket",["$rootScope","$window","socketFactory","Auth",function(a,b,c,d){var e=d.getCurrentUser(),f=io("",{query:"token="+d.getToken()+"&userId="+e.id+"&name="+e.name+"&role="+(e.role||"agent")+"&source=browser",path:"/socket.io-client",multiplex:!1}),g=c({ioSocket:f});return a.$on("logout",function(){g&&(g.disconnect(!0),b.location.reload())}),{socket:g,syncUpdates:function(a,b,c){c=c||angular.noop,g.on(a+":save",function(a){var d=_.find(b,{id:a.id}),e=b.indexOf(d),f="created";d?(_.merge(b[e],a),f="updated"):b.unshift(a),c(f,a,b)}),g.on(a+":remove",function(a){_.remove(b,{id:a.id}),c("deleted",a,b)})},unsyncUpdates:function(a){g.removeAllListeners(a+":save"),g.removeAllListeners(a+":update"),g.removeAllListeners(a+":remove")},syncUpdatesByAttributes:function(a,b,c,d){d=d||angular.noop,g.on(a+":save",function(a){var e=!0;if(_.forIn(b,function(b,c){return!(!a[c]||a[c]!==b)||(e=!1)}),e){var f=_.find(c,{id:a.id}),g=c.indexOf(f),h="created";f?(_.merge(c[g],a),h="updated"):c.unshift(a),d(h,a,c)}}),g.on(a+":remove",function(a){_.remove(c,{id:a.id}),d("deleted",a,c)})},syncMailMessageUpdates:function(a,b,c,d){d=d||angular.noop,g.on(a+":"+b+":save",function(a){var b=_.find(c,{id:a.id}),e=c.indexOf(b),f="created";b?(_.merge(c[e],a),f="updated"):c.unshift(a),d(f,a)}),g.on(a+":"+b+":remove",function(a){_.remove(c,{id:a.id}),d("deleted",a,c)})},unsyncMailMessageUpdates:function(a,b){g.removeAllListeners(a+":"+b+":save"),g.removeAllListeners(a+":"+b+":remove")},syncFaxMessageUpdates:function(a,b,c,d){d=d||angular.noop,g.on(a+":"+b+":save",function(a){var b=_.find(c,{id:a.id}),e=c.indexOf(b),f="created";b?(_.merge(c[e],a),f="updated"):c.unshift(a),d(f,a)}),g.on(a+":"+b+":remove",function(a){_.remove(c,{id:a.id}),d("deleted",a,c)})},unsyncFaxMessageUpdates:function(a,b){g.removeAllListeners(a+":"+b+":save"),g.removeAllListeners(a+":"+b+":remove")}}}]),function(a,b){angular.module("adf.widget.counter",["adf.provider"]).config(["dashboardProvider",function(a){a.widget("counter",{title:"Single Value",description:"Single Value for db results",templateUrl:"{widgetsPath}/counter/src/view.html",controller:"apiwidgetCounterViewCtrl",edit:{templateUrl:"{widgetsPath}/counter/src/edit.html",controller:"apiwidgetCounterEditCtrl"}})}]).service("apiServiceCounter",["Widget",function(a){return{get:function(b){return a.get({select:b.select,condition:encodeURIComponent(b.condition),table:b.report.replace("_history",""),controller:"counter"}).$promise.then(function(a){return a}).catch(function(a){console.log(a)})}}}]).controller("apiwidgetCounterEditCtrl",["$scope","report",function(a,b){a.config.reportTables=b.tables,a.config.colors=[{name:"Grey",value:"grey"},{name:"Grey 2",value:"grey-cascade"},{name:"Grey 3",value:"grey-silver"},{name:"Grey 4",value:"grey-steel"},{name:"Grey 5",value:"grey-carrara"},{name:"Grey 6",value:"grey-gallery"},{name:"Blue",value:"blue"},{name:"Blue 2",value:"blue-hoki"},{name:"Blue 3",value:"blue-steel"},{name:"Blue 4",value:"blue-madison"},{name:"Blue 5",value:"blue-chambray"},{name:"Blue 6",value:"blue-ebonyclay"},{name:"Red",value:"red"},{name:"Red 2",value:"red-pink"},{name:"Red 3",value:"red-sunglo"},{name:"Red 4",value:"red-intense"},{name:"Red 5",value:"red-thunderbird"},{name:"Red 6",value:"red-flamingo"},{
-name:"Green",value:"green"},{name:"Green 2",value:"green-meadow"},{name:"Green 3",value:"green-seagreen"},{name:"Green 4",value:"green-turquoise"},{name:"Green 5",value:"green-haze"},{name:"Green 6",value:"green-jungle"},{name:"Purple",value:"purple"},{name:"Purple 2",value:"purple-plum"},{name:"Purple 3",value:"purple-medium"},{name:"Purple 4",value:"purple-studio"},{name:"Purple 5",value:"purple-wisteria"},{name:"Purple 6",value:"purple-seance"},{name:"Yellow",value:"yellow"},{name:"Yellow 2",value:"yellow-gold"},{name:"Yellow 3",value:"yellow-casablanca"},{name:"Yellow 4",value:"yellow-crusta"},{name:"Yellow 5",value:"yellow-lemon"},{name:"Yellow 6",value:"yellow-saffron"}],a.config.icons=[{name:"Talk bubbles",value:"fa-comments"},{name:"Bar Chart",value:"fa-bar-chart"},{name:"Shopping Cart",value:"fa-shopping-cart"},{name:"Globe",value:"fa-globe"},{name:"Volume Control Phone",value:"fa-volume-control-phone"},{name:"Comments",value:"fa-comments-o"},{name:"Commenting",value:"fa-commenting-o"},{name:"Coffee",value:"fa-coffee"},{name:"Clock",value:"fa-clock-o"},{name:"Envelope",value:"fa-envelope-o"},{name:"Hourglass",value:"fa-hourglass-half"},{name:"Percent",value:"fa-percent"}],a.config.select=a.config.select?a.config.select:"COUNT(*)",a.config.color=a.config.color?a.config.color:"blue-madison",a.config.icon=a.config.icon?a.config.icon:"fa-comments",a.config.link=a.config.link?a.config.link:"#",a.config.linkText=a.config.linkText?a.config.linkText:"VIEW MORE"}]).controller("apiwidgetCounterViewCtrl",["$scope","$interval","apiServiceCounter","socket",function(a,b,c,d){var e=a.$parent.model.wid;d.socket.on("widget_update:"+e,function(b){b&&b.length>1||_.keys(b[0]).length>1?(a.tooManyResults=!0,a.result=null):(a.tooManyResults=!1,null!==_.values(b[0])[0]?a.result=_.values(b[0])[0].toString():a.result="--")}),a.$on("$destroy",function(){d.socket.removeAllListeners("widget_update:"+e)})}]),angular.module("adf.widget.counter").run(["$templateCache",function(a){a.put("{widgetsPath}/counter/src/edit.html","<form role=form><div class=form-group><label for=select>Select</label> <input type=text class=form-control id=condition ng-model=config.select placeholder=Select></div><div class=form-group><label class=control-label>From</label><ui-select data-ng-model=config.report name=report theme=bootstrap><ui-select-match placeholder=From>{{'APPLICATION_'+$select.selected.value.toUpperCase() | translate}}</ui-select-match><ui-select-choices group-by=\"'channel'\" repeat=\"table.value as table in config.reportTables | filter: $select.search\"><div ng-bind-html=\"'APPLICATION_'+table.value.toUpperCase() | translate | highlight: $select.search\"></div></ui-select-choices></ui-select></div><div class=form-group><label for=condition>Where</label> <input type=text class=form-control id=condition ng-model=config.condition placeholder=Where></div><div class=form-group><label class=control-label>{{'APPLICATION_WIDGET_COLOR' | translate}}</label><ui-select data-ng-model=config.color name=color theme=bootstrap><ui-select-match placeholder=\"{{ 'APPLICATION_WIDGET_COLOR' | translate }}\"><div data-ng-class=\"'bg-'+$select.selected.value\">&nbsp;</div></ui-select-match><ui-select-choices repeat=\"color.value as color in config.colors | filter: $select.search\"><div data-ng-class=\"'bg-'+color.value\">&nbsp;</div></ui-select-choices></ui-select></div><div class=form-group><label class=control-label>{{'APPLICATION_WIDGET_ICON' | translate}}</label><ui-select data-ng-model=config.icon name=icon theme=bootstrap><ui-select-match placeholder=\"{{ 'APPLICATION_WIDGET_ICON' | translate }}\"><i class=fa ng-class=$select.selected.value></i></ui-select-match><ui-select-choices repeat=\"icon.value as icon in config.icons | filter: $select.search\"><i class=fa ng-class=icon.value></i></ui-select-choices></ui-select></div><div class=form-group><label for=condition>{{'APPLICATION_WIDGET_DETAILS' | translate}}</label> <input type=text class=form-control id=details ng-model=config.details maxlength=30 placeholder=\"{{'APPLICATION_WIDGET_DETAILS' | translate}}\"></div><div class=form-group><label for=condition>{{'APPLICATION_WIDGET_LINK' | translate}}</label> <input type=text class=form-control id=link ng-model=config.link placeholder=http://yourlink></div><div class=form-group><label for=condition>{{'APPLICATION_WIDGET_LINK_TEXT' | translate}}</label> <input type=text class=form-control id=linkText ng-model=config.linkText maxlength=30 placeholder=\"{{'APPLICATION_WIDGET_LINK_TEXT' | translate}}\"></div></form>"),a.put("{widgetsPath}/counter/src/view.html",'<div class=dashboard-stat ng-class=config.color ng-if=result><div class=visual><i class=fa ng-class=config.icon></i></div><div class=details><div class=number>{{result}}</div><div class=desc>{{config.details}}</div></div><a class=more href={{config.link}}>{{config.linkText}} <i class="m-icon-swapright m-icon-white"></i></a></div><div class="alert alert-danger" role=alert ng-if=!config.report><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_WIDGET_SELECT_REPORT\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=tooManyResults><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_TOO_MANY_RESULTS\' | translate}}</div><div class="alert alert-danger" role=alert ng-if="!result && !tooManyResults"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_QUERY_NOT_VALID\' | translate}}</div>')}])}(window),function(a,b){angular.module("adf.widget.pie-chart",["adf.provider"]).config(["dashboardProvider",function(a){a.widget("pie-chart",{title:"Pie-Chart",description:"Display a pie-chart starting from DB values",templateUrl:"{widgetsPath}/pie-chart/src/view.html",controller:"apiWidgetPieChartViewCtrl",edit:{templateUrl:"{widgetsPath}/pie-chart/src/edit.html",controller:"apiWidgetPieChartEditCtrl"}})}]).service("apiServicePieChart",["Widget",function(a){return{get:function(b){return a.get({condition:encodeURIComponent(b.condition),table:b.report.replace("_history",""),fields:b.fields,controller:"piechart"}).$promise.then(function(a){return a}).catch(function(a){console.log(a)})}}}]).controller("apiWidgetPieChartEditCtrl",["$scope","report",function(a,b){function c(){return a.config.fields||(a.config.fields=[{column:"",alias:""}]),a.config.fields}a.config.reportTables=b.tables,a.config.fields=a.config.fields?a.config.fields:[{column:"",alias:""}],a.addField=function(){c().push({})},a.removeField=function(a){c().splice(a,1)}}]).controller("apiWidgetPieChartViewCtrl",["$scope","$interval","apiServicePieChart","socket",function(a,b,c,d){var e=a.$parent.model.wid;d.socket.on("widget_update:"+e,function(b){if(b&&1===b.length){a.labels=[],a.data=[];for(var c in b[0])a.labels.push(c),a.data.push(b[0][c])}else a.labels=[],a.data=[]}),a.$on("$destroy",function(){d.socket.removeAllListeners("widget_update:"+e)})}]),angular.module("adf.widget.pie-chart").run(["$templateCache",function(a){a.put("{widgetsPath}/pie-chart/src/edit.html",'<form role=form><div class=form-group><label class=control-label>{{\'APPLICATION_REPORT\' | translate}}</label><ui-select data-ng-model=config.report name=report theme=bootstrap><ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match><ui-select-choices group-by="\'channel\'" repeat="table.value as table in config.reportTables | filter: $select.search"><div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div></ui-select-choices></ui-select></div><div><label class=control-label>{{\'APPLICATION_FIELDS\' | translate}}</label></div><div class=padding-bottom ng-repeat="field in config.fields"><div class=form-group><div class=input-group><input type=text class=form-control ng-model=field.column> <span class=input-group-addon>as</span> <input type=text class=form-control ng-model=field.alias> <span class=input-group-btn ng-if="config.fields.length>1"><button class="btn btn-danger" type=button data-ng-click=removeField($index)><i class="fa fa-times"></i> {{\'APPLICATION_REMOVE\' | translate}}</button></span></div></div></div><button type=button class="btn btn-sm green mbottom20" ng-click=addField()><i class="fa fa-plus"></i> {{\'APPLICATION_ADD_FIELD\' | translate}}</button><div class=form-group><label for=condition>{{\'APPLICATION_CONDITION\' | translate}}</label> <input type=text class=form-control id=condition ng-model=config.condition placeholder="{{\'APPLICATION_CONDITION\' | translate}}"></div></form>'),a.put("{widgetsPath}/pie-chart/src/view.html",'<div ng-if=labels.length ng-style=config.style><canvas id=doughnut class="chart chart-doughnut" chart-data=data chart-labels=labels legend=true></canvas></div><div class="alert alert-danger" role=alert ng-if=!config.report><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_WIDGET_SELECT_REPORT\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!labels.length><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_VALID_CONDITION\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!labels.length><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_ONE_VALID_METRIC_AND_CHECK_OTHER\' | translate}}</div>')}])}(window),function(a,b){angular.module("adf.widget.table",["adf.provider"]).value("apiServiceUrlTable","/api/widgets/table").config(["dashboardProvider",function(a){a.widget("table",{title:"Table",description:"Show tabbed results from db",templateUrl:"{widgetsPath}/table/src/view.html",controller:"apiWidgetTableViewCtrl",edit:{templateUrl:"{widgetsPath}/table/src/edit.html",controller:"apiWidgetTableEditCtrl"}})}]).service("apiServiceTable",["$q","$http","apiServiceUrlTable",function(a,b,c){return{get:function(d){var e=a.defer();return b.get(c,{params:{condition:encodeURIComponent(d.condition),table:d.report,fields:d.fields}}).success(function(a){a?e.resolve(a):e.reject()}).error(function(a){console.log(a),e.reject()}),e.promise}}}]).controller("apiWidgetTableEditCtrl",["$scope",function(a){function b(){return a.config.fields||(a.config.fields=[{column:"",alias:""}]),a.config.fields}a.config.reportTables=[{name:"Agents",value:"agent"},{name:"Calls",value:"call"},{name:"Dials",value:"dial"},{name:"Members",value:"member"},{name:"Queues",value:"queue"}],a.config.timeout=a.config.timeout?a.config.timeout:1,a.config.height=a.config.height?a.config.height:350,a.config.fields=a.config.fields?a.config.fields:[{column:"",alias:""}],a.addField=function(){b().push({})},a.removeField=function(a){b().splice(a,1)}}]).controller("apiWidgetTableViewCtrl",["$scope","$interval","apiServiceTable",function(a,b,c){a.config.timeout=a.config.timeout?a.config.timeout:1,a.config.height=a.config.height?a.config.height:350,a.config.style={"max-height":a.config.height+"px",overflow:"scroll"},a.tableApiCall=function(){a.config.condition&&a.config.report&&a.config.fields.length&&""!==a.config.fields[0].column&&""!==a.config.fields[0].alias&&c.get(a.config).then(function(b){a.results=b})},a.tableApiCall();var d=b(function(){a.tableApiCall()},1e3*parseInt(a.config.timeout));a.$on("$destroy",function(){b.cancel(d)})}]),angular.module("adf.widget.table").run(["$templateCache",function(a){a.put("{widgetsPath}/table/src/edit.html",'<form role=form><div class=form-group><label class=control-label>{{\'APPLICATION_REPORT\' | translate}}</label><ui-select data-ng-model=config.report name=report theme=bootstrap><ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match><ui-select-choices repeat="report.value as report in config.reportTables | filter: $select.search"><div ng-bind-html="report.name | highlight: $select.search"></div></ui-select-choices></ui-select></div><div><label class=control-label>{{\'APPLICATION_METRICS\' | translate}}</label></div><div class=padding-bottom ng-repeat="field in config.fields"><div class=form-group><div class=input-group><input type=text class=form-control ng-model=field.column> <span class=input-group-addon>as</span> <input type=text class=form-control ng-model=field.alias> <span class=input-group-btn ng-if="config.fields.length>1"><button class="btn btn-danger" type=button data-ng-click=removeField($index)><i class="fa fa-times"></i> {{\'APPLICATION_REMOVE\' | translate}}</button></span></div></div></div><button type=button class="btn btn-sm green mbottom20" ng-click=addField()><i class="fa fa-plus"></i> {{\'APPLICATION_ADD_FIELD\' | translate}}</button><div class=form-group><label for=condition>{{\'APPLICATION_CONDITION\' | translate}}</label> <input type=text class=form-control id=condition ng-model=config.condition placeholder="{{\'APPLICATION_CONDITION\' | translate}}"></div><div class=form-group><label for=condition>{{\'APPLICATION_REFRESH_TIMEOUT\' | translate}}</label> <input type=number class=form-control id=timeout ng-model=config.timeout placeholder="{{\'APPLICATION_REFRESH_TIMEOUT\' | translate}}" min=1></div><div class=form-group><label for=condition>{{\'APPLICATION_WIDGET_MAX_HEIGHT\' | translate}}</label> <input type=number class=form-control id=height ng-model=config.height placeholder="{{\'APPLICATION_WIDGET_MAX_HEIGHT\' | translate}}" min=350></div></form>'),a.put("{widgetsPath}/table/src/view.html",'<div ng-if=results ng-style=config.style><table st-table=results class="table table-striped table-bordered table-hover"><div class=table-responsive><thead><tr><th colspan={{config.fields.length}}><div class=row><div class=col-md-6></div><div class=col-md-6><div class="input-group input-medium pull-right"><input st-search placeholder="{{ \'APPLICATION_SEARCH\' | translate }}" class=form-control type=search> <span class=input-group-addon><i class="fa fa-search"></i></span></div></div></div></th></tr><tr><th ng-repeat="field in config.fields">{{field.alias}}</th></tr></thead><tbody><tr data-ng-repeat="result in results" class=animate-repeat><td ng-repeat="field in config.fields">{{result[field.alias]}}</td></tr><tr data-ng-hide=results.length><td colspan={{config.fields.length}} style=text-align:center;><i>{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</i></td></tr></tbody><tfoot><tr><td colspan={{config.fields.length}} class=text-center><div st-pagination class=pagination st-items-by-page=10 st-displayed-pages=3></div></td></tr></tfoot></div></table></div><div class="alert alert-danger" role=alert ng-if=!config.report><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_WIDGET_SELECT_REPORT\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!results><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_VALID_CONDITION\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!results><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_ONE_VALID_FIELD_AND_CHECK_OTHER\' | translate}}</div>')}])}(window);var Metronic=function(){var a,b=!1,c=!1,d=!1,e=!1,f=[],g="assets/",h="img/",i="plugins/",j="css/",k={blue:"#89C4F4",red:"#F3565D",green:"#1bbc9b",purple:"#9b59b6",grey:"#95a5a6",yellow:"#F8CB00"},l=function(){"rtl"===$("body").css("direction")&&(b=!0),c=!!navigator.userAgent.match(/MSIE 8.0/),d=!!navigator.userAgent.match(/MSIE 9.0/),e=!!navigator.userAgent.match(/MSIE 10.0/),e&&$("html").addClass("ie10"),(e||d||c)&&$("html").addClass("ie")},m=function(){for(var a=0;a<f.length;a++){f[a].call()}},n=function(){var a;if(c){var b;$(window).resize(function(){b!=document.documentElement.clientHeight&&(a&&clearTimeout(a),a=setTimeout(function(){m()},50),b=document.documentElement.clientHeight)})}else $(window).resize(function(){a&&clearTimeout(a),a=setTimeout(function(){m()},50)})},o=function(){$("body").on("click",".portlet > .portlet-title > .tools > a.remove",function(a){a.preventDefault();var b=$(this).closest(".portlet");$("body").hasClass("page-portlet-fullscreen")&&$("body").removeClass("page-portlet-fullscreen"),b.find(".portlet-title .fullscreen").tooltip("destroy"),b.find(".portlet-title > .tools > .reload").tooltip("destroy"),b.find(".portlet-title > .tools > .remove").tooltip("destroy"),b.find(".portlet-title > .tools > .config").tooltip("destroy"),b.find(".portlet-title > .tools > .collapse, .portlet > .portlet-title > .tools > .expand").tooltip("destroy"),b.remove()}),$("body").on("click",".portlet > .portlet-title .fullscreen",function(a){a.preventDefault();var b=$(this).closest(".portlet");if(b.hasClass("portlet-fullscreen"))$(this).removeClass("on"),b.removeClass("portlet-fullscreen"),$("body").removeClass("page-portlet-fullscreen"),b.children(".portlet-body").css("height","auto");else{var c=Metronic.getViewPort().height-b.children(".portlet-title").outerHeight()-parseInt(b.children(".portlet-body").css("padding-top"))-parseInt(b.children(".portlet-body").css("padding-bottom"));$(this).addClass("on"),b.addClass("portlet-fullscreen"),$("body").addClass("page-portlet-fullscreen"),b.children(".portlet-body").css("height",c)}}),$("body").on("click",".portlet > .portlet-title > .tools > a.reload",function(a){a.preventDefault();var b=$(this).closest(".portlet").children(".portlet-body"),c=$(this).attr("data-url"),d=$(this).attr("data-error-display");c?(Metronic.blockUI({target:b,animate:!0,overlayColor:"none"}),$.ajax({type:"GET",cache:!1,url:c,dataType:"html",success:function(a){Metronic.unblockUI(b),b.html(a)},error:function(a,c,e){Metronic.unblockUI(b);var f="Error on reloading the content. Please check your connection and try again.";"toastr"==d&&toastr?toastr.error(f):"notific8"==d&&$.notific8?($.notific8("zindex",11500),$.notific8(f,{theme:"ruby",life:3e3})):alert(f)}})):(Metronic.blockUI({target:b,animate:!0,overlayColor:"none"}),window.setTimeout(function(){Metronic.unblockUI(b)},1e3))}),$('.portlet .portlet-title a.reload[data-load="true"]').click(),$("body").on("click",".portlet > .portlet-title > .tools > .collapse, .portlet .portlet-title > .tools > .expand",function(a){a.preventDefault()})},p=function(){if($().uniform){var a=$("input[type=checkbox]:not(.toggle, .make-switch, .icheck), input[type=radio]:not(.toggle, .star, .make-switch, .icheck)");a.size()>0&&a.each(function(){0===$(this).parents(".checker").size()&&$(this).show()})}},q=function(){$().iCheck&&$(".icheck").each(function(){var a=$(this).attr("data-checkbox")?$(this).attr("data-checkbox"):"icheckbox_minimal-grey",b=$(this).attr("data-radio")?$(this).attr("data-radio"):"iradio_minimal-grey";a.indexOf("_line")>-1||b.indexOf("_line")>-1?$(this).iCheck({checkboxClass:a,radioClass:b,insert:'<div class="icheck_line-icon"></div>'+$(this).attr("data-label")}):$(this).iCheck({checkboxClass:a,radioClass:b})})},r=function(){$().bootstrapSwitch&&$(".make-switch").bootstrapSwitch()},s=function(){$().confirmation&&$("[data-toggle=confirmation]").confirmation({container:"body",btnOkClass:"btn-xs btn-success",btnCancelClass:"btn-xs btn-danger"})},t=function(){$("body").on("shown.bs.collapse",".accordion.scrollable",function(a){Metronic.scrollTo($(a.target))})},u=function(){if(location.hash){var a=location.hash.substr(1);$('a[href="#'+a+'"]').parents(".tab-pane:hidden").each(function(){var a=$(this).attr("id");$('a[href="#'+a+'"]').click()}),$('a[href="#'+a+'"]').click()}},v=function(){$("body").on("hide.bs.modal",function(){$(".modal:visible").size()>1&&!1===$("html").hasClass("modal-open")?$("html").addClass("modal-open"):$(".modal:visible").size()<=1&&$("html").removeClass("modal-open")}),$("body").on("show.bs.modal",".modal",function(){$(this).hasClass("modal-scroll")&&$("body").addClass("modal-open-noscroll")}),$("body").on("hide.bs.modal",".modal",function(){$("body").removeClass("modal-open-noscroll")}),$("body").on("hidden.bs.modal",".modal:not(.modal-cached)",function(){$(this).removeData("bs.modal")})},w=function(){$(".tooltips").tooltip(),$(".portlet > .portlet-title .fullscreen").tooltip({container:"body",title:"Fullscreen"}),$(".portlet > .portlet-title > .tools > .reload").tooltip({container:"body",title:"Reload"}),$(".portlet > .portlet-title > .tools > .remove").tooltip({container:"body",title:"Remove"}),$(".portlet > .portlet-title > .tools > .config").tooltip({container:"body",title:"Settings"}),$(".portlet > .portlet-title > .tools > .collapse, .portlet > .portlet-title > .tools > .expand").tooltip({container:"body",title:"Collapse/Expand"})},x=function(){$("body").on("click",".dropdown-menu.hold-on-click",function(a){a.stopPropagation()})},y=function(){$("body").on("click",'[data-close="alert"]',function(a){$(this).parent(".alert").hide(),$(this).closest(".note").hide(),a.preventDefault()}),$("body").on("click",'[data-close="note"]',function(a){$(this).closest(".note").hide(),a.preventDefault()}),$("body").on("click",'[data-remove="note"]',function(a){$(this).closest(".note").remove(),a.preventDefault()})},z=function(){$('[data-hover="dropdown"]').not(".hover-initialized").each(function(){$(this).dropdownHover(),$(this).addClass("hover-initialized")})},A=function(){$(".popovers").popover(),$(document).on("click.bs.popover.data-api",function(b){a&&a.popover("hide")})},B=function(){Metronic.initSlimScroll(".scroller")},C=function(){jQuery.fancybox&&$(".fancybox-button").size()>0&&$(".fancybox-button").fancybox({groupAttr:"data-rel",prevEffect:"none",nextEffect:"none",closeBtn:!0,helpers:{title:{type:"inside"}}})},D=function(){(c||d)&&$("input[placeholder]:not(.placeholder-no-fix), textarea[placeholder]:not(.placeholder-no-fix)").each(function(){var a=$(this);""===a.val()&&""!==a.attr("placeholder")&&a.addClass("placeholder").val(a.attr("placeholder")),a.focus(function(){a.val()==a.attr("placeholder")&&a.val("")}),a.blur(function(){""!==a.val()&&a.val()!=a.attr("placeholder")||a.val(a.attr("placeholder"))})})},E=function(){$().select2&&$(".select2me").select2({placeholder:"Select"})};return{init:function(){l(),n(),p(),q(),r(),B(),C(),E(),o(),y(),x(),u(),w(),A(),t(),v(),s(),D()},initAjax:function(){p(),q(),r(),z(),B(),E(),C(),x(),w(),A(),t(),s()},initComponents:function(){this.initAjax()},setLastPopedPopover:function(b){a=b},addResizeHandler:function(a){f.push(a)},runResizeHandlers:function(){m()},scrollTo:function(a,b){var c=a&&a.size()>0?a.offset().top:0;a&&($("body").hasClass("page-header-fixed")&&(c-=$(".page-header").height()),c+=b||-1*a.height()),$("html,body").animate({scrollTop:c},"slow")},initSlimScroll:function(a){$(a).each(function(){if(!$(this).attr("data-initialized")){var a;a=$(this).attr("data-height")?$(this).attr("data-height"):$(this).css("height"),$(this).slimScroll({allowPageScroll:!0,size:"7px",color:$(this).attr("data-handle-color")?$(this).attr("data-handle-color"):"#bbb",wrapperClass:$(this).attr("data-wrapper-class")?$(this).attr("data-wrapper-class"):"slimScrollDiv",railColor:$(this).attr("data-rail-color")?$(this).attr("data-rail-color"):"#eaeaea",position:b?"left":"right",height:a,alwaysVisible:"1"==$(this).attr("data-always-visible"),railVisible:"1"==$(this).attr("data-rail-visible"),disableFadeOut:!0}),$(this).attr("data-initialized","1")}})},destroySlimScroll:function(a){$(a).each(function(){if("1"===$(this).attr("data-initialized")){$(this).removeAttr("data-initialized"),$(this).removeAttr("style");var a={};$(this).attr("data-handle-color")&&(a["data-handle-color"]=$(this).attr("data-handle-color")),$(this).attr("data-wrapper-class")&&(a["data-wrapper-class"]=$(this).attr("data-wrapper-class")),$(this).attr("data-rail-color")&&(a["data-rail-color"]=$(this).attr("data-rail-color")),$(this).attr("data-always-visible")&&(a["data-always-visible"]=$(this).attr("data-always-visible")),$(this).attr("data-rail-visible")&&(a["data-rail-visible"]=$(this).attr("data-rail-visible")),$(this).slimScroll({wrapperClass:$(this).attr("data-wrapper-class")?$(this).attr("data-wrapper-class"):"slimScrollDiv",destroy:!0});var b=$(this);$.each(a,function(a,c){b.attr(a,c)})}})},scrollTop:function(){Metronic.scrollTo()},blockUI:function(a){a=$.extend(!0,{},a);var b="";if(b=a.animate?'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><div class="block-spinner-bar"><div class="bounce1"></div><div class="bounce2"></div><div class="bounce3"></div></div></div>':a.iconOnly?'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><img src="'+this.getGlobalImgPath()+'loading-spinner-blue.gif" align=""></div>':a.textOnly?'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><span>&nbsp;&nbsp;'+(a.message?a.message:"LOADING...")+"</span></div>":'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><img src="'+this.getGlobalImgPath()+'loading-spinner-blue.gif" align=""><span>&nbsp;&nbsp;'+(a.message?a.message:"LOADING...")+"</span></div>",a.target){var c=$(a.target);c.height()<=$(window).height()&&(a.cenrerY=!0),c.block({message:b,baseZ:a.zIndex?a.zIndex:1e3,centerY:void 0!==a.cenrerY&&a.cenrerY,css:{top:"10%",border:"0",padding:"0",backgroundColor:"none"},overlayCSS:{backgroundColor:a.overlayColor?a.overlayColor:"#555",opacity:a.boxed?.05:.1,cursor:"wait"}})}else $.blockUI({message:b,baseZ:a.zIndex?a.zIndex:1e3,css:{border:"0",padding:"0",backgroundColor:"none"},overlayCSS:{backgroundColor:a.overlayColor?a.overlayColor:"#555",opacity:a.boxed?.05:.1,cursor:"wait"}})},unblockUI:function(a){a?$(a).unblock({onUnblock:function(){$(a).css("position",""),$(a).css("zoom","")}}):$.unblockUI()},startPageLoading:function(a){a&&a.animate?($(".page-spinner-bar").remove(),$("body").append('<div class="page-spinner-bar"><div class="bounce1"></div><div class="bounce2"></div><div class="bounce3"></div></div>')):($(".page-loading").remove(),$("body").append('<div class="page-loading"><img src="'+this.getGlobalImgPath()+'loading-spinner-blue.gif"/>&nbsp;&nbsp;<span>'+(a&&a.message?a.message:"Loading...")+"</span></div>"))},stopPageLoading:function(){$(".page-loading, .page-spinner-bar").remove()},alert:function(a){a=$.extend(!0,{container:"",place:"append",type:"success",message:"",close:!0,reset:!0,focus:!0,closeInSeconds:0,icon:""},a);var b=Metronic.getUniqueID("Metronic_alert"),c='<div id="'+b+'" class="Metronic-alerts alert alert-'+a.type+' fade in">'+(a.close?'<button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>':"")+(""!==a.icon?'<i class="fa-lg fa fa-'+a.icon+'"></i>  ':"")+a.message+"</div>";return a.reset&&$(".Metronic-alerts").remove(),a.container?"append"==a.place?$(a.container).append(c):$(a.container).prepend(c):$("body").hasClass("page-container-bg-solid")?$(".page-title").after(c):$(".page-bar").size()>0?$(".page-bar").after(c):$(".page-breadcrumb").after(c),a.focus&&Metronic.scrollTo($("#"+b)),a.closeInSeconds>0&&setTimeout(function(){$("#"+b).remove()},1e3*a.closeInSeconds),b},initUniform:function(a){a?$(a).each(function(){0===$(this).parents(".checker").size()&&($(this).show(),$(this).uniform())}):p()},updateUniform:function(a){$.uniform.update(a)},initFancybox:function(){C()},getActualVal:function(a){return a=$(a),a.val()===a.attr("placeholder")?"":a.val()},getURLParameter:function(a){var b,c,d=window.location.search.substring(1),e=d.split("&");for(b=0;b<e.length;b++)if(c=e[b].split("="),c[0]==a)return unescape(c[1]);return null},isTouchDevice:function(){try{return document.createEvent("TouchEvent"),!0}catch(a){return!1}},getViewPort:function(){var a=window,b="inner";return"innerWidth"in window||(b="client",a=document.documentElement||document.body),{width:a[b+"Width"],height:a[b+"Height"]}},getUniqueID:function(a){return"prefix_"+Math.floor(Math.random()*(new Date).getTime())},isIE8:function(){return c},isIE9:function(){return d},isRTL:function(){return b},isAngularJsApp:function(){return"undefined"!=typeof angular},getAssetsPath:function(){return g},setAssetsPath:function(a){g=a},setGlobalImgPath:function(a){h=a},getGlobalImgPath:function(){return g+h},setGlobalPluginsPath:function(a){i=a},getGlobalPluginsPath:function(){return g+i},getGlobalCssPath:function(){return g+j},getBrandColor:function(a){return k[a]?k[a]:""},getResponsiveBreakpoint:function(a){var b={xs:480,sm:768,md:900,lg:1200};return b[a]?b[a]:0}}}(),Layout=function(){var a=Metronic.getResponsiveBreakpoint("md"),b=function(){var b,c=$(".page-content"),d=$(".page-sidebar"),f=$("body");if(!0===f.hasClass("page-footer-fixed")&&!1===f.hasClass("page-sidebar-fixed")){var g=Metronic.getViewPort().height-$(".page-footer").outerHeight()-$(".page-header").outerHeight();c.height()<g&&c.attr("style","min-height:"+g+"px")}else{if(f.hasClass("page-sidebar-fixed"))b=e(),!1===f.hasClass("page-footer-fixed")&&(b-=$(".page-footer").outerHeight());else{var h=$(".page-header").outerHeight(),i=$(".page-footer").outerHeight();b=Metronic.getViewPort().width<a?Metronic.getViewPort().height-h-i:d.height()+20,b+h+i<=Metronic.getViewPort().height&&(b=Metronic.getViewPort().height-h-i)}c.attr("style","min-height:"+b+"px")}},c=function(b,c){var d=location.hash.toLowerCase(),e=$(".page-sidebar-menu");if("click"===b||"set"===b?c=$(c):"match"===b&&e.find("li > a").each(function(){var a=$(this).attr("href").toLowerCase();if(a.length>1&&d.substr(1,a.length-1)==a.substr(1))return void(c=$(this))}),c&&0!=c.size()&&"javascript:;"!==c.attr("href").toLowerCase()&&"#"!==c.attr("href").toLowerCase()){parseInt(e.data("slide-speed")),e.data("keep-expanded");e.find("li.active").removeClass("active"),e.find("li > a > .selected").remove(),!1===e.hasClass("page-sidebar-menu-hover-submenu")?e.find("li.open").each(function(){0===$(this).children(".sub-menu").size()&&($(this).removeClass("open"),$(this).find("> a > .arrow.open").removeClass("open"))}):e.find("li.open").removeClass("open"),c.parents("li").each(function(){$(this).addClass("active"),$(this).find("> a > span.arrow").addClass("open"),1===$(this).parent("ul.page-sidebar-menu").size()&&$(this).find("> a").append('<span class="selected"></span>'),1===$(this).children("ul.sub-menu").size()&&$(this).addClass("open")}),"click"===b&&Metronic.getViewPort().width<a&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click()}},d=function(){jQuery(".page-sidebar").on("click","li > a",function(c){var d=$(this).next().hasClass("sub-menu");if(!(Metronic.getViewPort().width>=a&&1===$(this).parents(".page-sidebar-menu-hover-submenu").size())){if(!1===d)return void(Metronic.getViewPort().width<a&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click());if(!$(this).next().hasClass("sub-menu always-open")){var e=$(this).parent().parent(),f=$(this),g=$(".page-sidebar-menu"),h=jQuery(this).next(),i=g.data("auto-scroll"),j=parseInt(g.data("slide-speed"));!0!==g.data("keep-expanded")&&(e.children("li.open").children("a").children(".arrow").removeClass("open"),e.children("li.open").children(".sub-menu:not(.always-open)").slideUp(j),e.children("li.open").removeClass("open"));var k=-200;h.is(":visible")?(jQuery(".arrow",jQuery(this)).removeClass("open"),jQuery(this).parent().removeClass("open"),h.slideUp(j,function(){!0===i&&!1===$("body").hasClass("page-sidebar-closed")&&($("body").hasClass("page-sidebar-fixed")?g.slimScroll({scrollTo:f.position().top}):Metronic.scrollTo(f,k)),b()
-})):d&&(jQuery(".arrow",jQuery(this)).addClass("open"),jQuery(this).parent().addClass("open"),h.slideDown(j,function(){!0===i&&!1===$("body").hasClass("page-sidebar-closed")&&($("body").hasClass("page-sidebar-fixed")?g.slimScroll({scrollTo:f.position().top}):Metronic.scrollTo(f,k)),b()})),c.preventDefault()}}}),jQuery(".page-sidebar").on("click"," li > a.ajaxify",function(b){b.preventDefault(),Metronic.scrollTop();var c=$(this).attr("href"),d=jQuery(".page-sidebar ul"),e=($(".page-content"),$(".page-content .page-content-body"));d.children("li.active").removeClass("active"),d.children("arrow.open").removeClass("open"),$(this).parents("li").each(function(){$(this).addClass("active"),$(this).children("a > span.arrow").addClass("open")}),$(this).parents("li").addClass("active"),Metronic.getViewPort().width<a&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click(),Metronic.startPageLoading();var f=$(this);$.ajax({type:"GET",cache:!1,url:c,dataType:"html",success:function(a){0===f.parents("li.open").size()&&$(".page-sidebar-menu > li.open > a").click(),Metronic.stopPageLoading(),e.html(a),Layout.fixContentHeight(),Metronic.initAjax()},error:function(a,b,c){Metronic.stopPageLoading(),e.html("<h4>Could not load the requested content.</h4>")}})}),jQuery(".page-content").on("click",".ajaxify",function(b){b.preventDefault(),Metronic.scrollTop();var c=$(this).attr("href"),d=($(".page-content"),$(".page-content .page-content-body"));Metronic.startPageLoading(),Metronic.getViewPort().width<a&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click(),$.ajax({type:"GET",cache:!1,url:c,dataType:"html",success:function(a){Metronic.stopPageLoading(),d.html(a),Layout.fixContentHeight(),Metronic.initAjax()},error:function(a,b,c){d.html("<h4>Could not load the requested content.</h4>"),Metronic.stopPageLoading()}})}),g(),$(".page-sidebar").on("click",".sidebar-search .remove",function(a){a.preventDefault(),$(".sidebar-search").removeClass("open")}),$(".page-sidebar .sidebar-search").on("keypress","input.form-control",function(a){if(13==a.which)return $(".sidebar-search").submit(),!1}),0!==$(".sidebar-search").size()&&($(".sidebar-search .input-group").on("click",function(a){a.stopPropagation()}),$("body").on("click",function(){$(".sidebar-search").hasClass("open")&&$(".sidebar-search").removeClass("open")}))},e=function(){var a=Metronic.getViewPort().height-$(".page-header").outerHeight();return $("body").hasClass("page-footer-fixed")&&(a-=$(".page-footer").outerHeight()),a},f=function(){var c=$(".page-sidebar-menu");if(Metronic.destroySlimScroll(c),0===$(".page-sidebar-fixed").size())return void b();Metronic.getViewPort().width>=a&&(c.attr("data-height",e()),Metronic.initSlimScroll(c),b())},g=function(){var a=$("body");a.hasClass("page-sidebar-fixed")&&$(".page-sidebar").on("mouseenter",function(){a.hasClass("page-sidebar-closed")&&$(this).find(".page-sidebar-menu").removeClass("page-sidebar-menu-closed")}).on("mouseleave",function(){a.hasClass("page-sidebar-closed")&&$(this).find(".page-sidebar-menu").addClass("page-sidebar-menu-closed")})},h=function(){$("body");$.cookie&&"1"===$.cookie("sidebar_closed")&&Metronic.getViewPort().width>=a?($("body").addClass("page-sidebar-closed"),$(".page-sidebar-menu").addClass("page-sidebar-menu-closed")):$.cookie&&$.cookie("sidebar_closed","0")},i=function(){$(".page-header").on("click",'.hor-menu a[data-toggle="tab"]',function(a){a.preventDefault();var b=$(".hor-menu .nav"),c=b.find("li.current");$("li.active",c).removeClass("active"),$(".selected",c).remove();var d=$(this).parents("li").last();d.addClass("current"),d.find("a:first").append('<span class="selected"></span>')}),$(".page-header").on("click",".search-form",function(a){$(this).addClass("open"),$(this).find(".form-control").focus(),$(".page-header .search-form .form-control").on("blur",function(a){$(this).closest(".search-form").removeClass("open"),$(this).unbind("blur")})}),$(".page-header").on("keypress",".hor-menu .search-form .form-control",function(a){if(13==a.which)return $(this).closest(".search-form").submit(),!1}),$(".page-header").on("mousedown",".search-form.open .submit",function(a){a.preventDefault(),a.stopPropagation(),$(this).closest(".search-form").submit()}),$('[data-hover="megamenu-dropdown"]').not(".hover-initialized").each(function(){$(this).dropdownHover(),$(this).addClass("hover-initialized")}),$(document).on("click",".mega-menu-dropdown .dropdown-menu",function(a){a.stopPropagation()})},j=function(){$("body").on("shown.bs.tab",'a[data-toggle="tab"]',function(){b()})},k=function(){var a=300,b=500;navigator.userAgent.match(/iPhone|iPad|iPod/i)?$(window).bind("touchend touchcancel touchleave",function(c){$(this).scrollTop()>a?$(".scroll-to-top").fadeIn(b):$(".scroll-to-top").fadeOut(b)}):$(window).scroll(function(){$(this).scrollTop()>a?$(".scroll-to-top").fadeIn(b):$(".scroll-to-top").fadeOut(b)}),$(".scroll-to-top").click(function(a){return a.preventDefault(),$("html, body").animate({scrollTop:0},b),!1})},l=function(){var b,c=$(".full-height-content");if(b=Metronic.getViewPort().height-$(".page-header").outerHeight(!0)-$(".page-footer").outerHeight(!0)-$(".page-title").outerHeight(!0)-$(".page-bar").outerHeight(!0),c.hasClass("portlet")){var d=c.find(".portlet-body");if(Metronic.getViewPort().width<a)return void Metronic.destroySlimScroll(d.find(".full-height-content-body"));b=b-c.find(".portlet-title").outerHeight(!0)-parseInt(c.find(".portlet-body").css("padding-top"))-parseInt(c.find(".portlet-body").css("padding-bottom"))-2,c.hasClass("full-height-content-scrollable")?(b-=35,d.find(".full-height-content-body").css("height",b),Metronic.initSlimScroll(d.find(".full-height-content-body"))):d.css("min-height",b)}else{if(Metronic.getViewPort().width<a)return void Metronic.destroySlimScroll(c.find(".full-height-content-body"));c.hasClass("full-height-content-scrollable")?(b-=35,c.find(".full-height-content-body").css("height",b),Metronic.initSlimScroll(c.find(".full-height-content-body"))):c.css("min-height",b)}};return{initHeader:function(){i()},setSidebarMenuActiveLink:function(a,b){c(a,b)},initSidebar:function(){f(),d(),h(),Metronic.isAngularJsApp()&&c("match"),Metronic.addResizeHandler(f)},initContent:function(){l(),j(),Metronic.addResizeHandler(b),Metronic.addResizeHandler(l)},initFooter:function(){k()},init:function(){this.initHeader(),this.initSidebar(),this.initContent(),this.initFooter()},fixContentHeight:function(){b()},initFixedSidebarHoverEffect:function(){g()},initFixedSidebar:function(){f()},getLayoutImgPath:function(){return Metronic.getAssetsPath()+"img/"},getLayoutCssPath:function(){return Metronic.getAssetsPath()+"css/"}}}();angular.module("xCallyShuttleApp").run(["$templateCache",function(a){a.put("app/adminreset/adminreset.html",'\x3c!-- BEGIN LOGO --\x3e\n<div class="logo" data-ng-init="getInfo()">\n\t<a href="index.html">\n\t\t<img ng-src="api/settings/logo/login" alt="logo" class="custom-login-logo" onError="this.onerror=null"/>\n\t</a>\n</div>\n\x3c!-- END LOGO --\x3e\n\x3c!-- BEGIN RESET --\x3e\n<div class="content">\n\t\x3c!-- BEGIN RESET FORM --\x3e\n\t<form name="resetForm" data-ng-submit="resetForm.$valid && updatePassword()" novalidate>\n\t\t<h3>{{\'APPLICATION_RESET_PASSWORD\' | translate}}</h3>\n\t\t<p>\n\t\t\t{{\'MESSAGE_FIRST_LOGIN_PASSWORD_RESET\' | translate}}\n\t\t</p>\n\t\t<div class="form-group" data-ng-class="{\'has-error\': resetForm.$submitted && resetForm.password.$invalid}">\n\t\t\t<label class="control-label">{{\'APPLICATION_NEW_PASSWORD\' | translate}}</label>\n\t\t\t<div class="input-icon">\n\t\t\t\t<i class="icon-key"></i>\n\t\t\t\t<input class="form-control form-control-solid placeholder-no-fix" type="password" placeholder="{{\'APPLICATION_NEW_PASSWORD\' | translate}}" name="password" ng-model="user.password"  data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n\t\t\t</div>\n\t\t\t<span class="help-block">\n\t\t\t\t{{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n\t\t\t</span>\n\t\t\t<span data-ng-show="resetForm.$submitted && resetForm.password.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n\t\t\t<span data-ng-show="(resetForm.password.$touched || resetForm.$submitted) && resetForm.password.$error.pattern" class="help-block help-block-error">\n\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n\t\t\t</span>\n\t\t</div>\n\t\t<div class="form-group" data-ng-class="{\'has-error\': resetForm.$submitted && resetForm.rePassword.$invalid}">\n\t\t\t<label class="control-label">{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}</label>\n\t\t\t<div class="input-icon">\n\t\t\t\t<i class="icon-key"></i>\n\t\t\t\t<input class="form-control form-control-solid placeholder-no-fix" type="password" placeholder="{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}" name="rePassword" ng-model="user.rePassword" nx-equal="user.password" required/>\n\t\t\t</div>\n\t\t\t<span data-ng-show="resetForm.$submitted && resetForm.rePassword.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n\t\t\t<span data-ng-show="(resetForm.password.$touched || resetForm.$submitted) && resetForm.$error.nxEqual" class="help-block help-block-error">\n\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n\t\t\t</span>\n\t\t</div>\n\t\t<div class="form-actions">\n\t\t\t<button type="submit" class="btn btn-success uppercase">{{\'APPLICATION_SUBMIT\' | translate}}</button>\n\t\t</div>\n\t</form>\n\t\x3c!-- END RESET FORM--\x3e\n\t\t<div class="login-options">\n\t\t\t<h4>{{\'APPLICATION_FOLLOW_US\' | translate}}</h4>\n\t\t\t<ul class="social-icons">\n\t\t\t\t<li>\n\t\t\t\t\t<a class="social-icon-color facebook" data-original-title="facebook" href="https://www.facebook.com/xenialab"></a>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<a class="social-icon-color twitter" data-original-title="Twitter" href="https://twitter.com/xenialab"></a>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<a class="social-icon-color googleplus" data-original-title="Goole Plus" href="#"></a>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<a class="social-icon-color linkedin" data-original-title="Linkedin" href="#"></a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n</div>\n<div class="copyright">\n\txCALLY Motion v. {{info.version}} | 2016 - {{year + 1}} &copy; Powered by Xenialab <ng-bind-html data-ng-if="license.custom && !settings.defaultFooterWhiteLabel && settings.footerWhiteLabel" ng-bind-html="\'| \'+settings.footerWhiteLabel"></ng-bind-html>\n</div>\n\x3c!-- END RESET --\x3e\n'),a.put("app/analytic/extracted/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="fa fa-file-pdf-o"></i>\n\t\t\t\t\t<a href="/analytics/extracted/list">{{ \'APPLICATION_EXTRACTED_REPORTS\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="fa fa-file-pdf-o font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_EXTRACTED_REPORTS\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> --\x3e\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/analytic/metric/list/create.modal.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_NEW_METRIC\' | translate }}</h3>\n</div>\n<div class="modal-body">\n  <form name="forms.metric" novalidate>\n\n    \x3c!-- START NAME --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$invalid}">\n      <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n      <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n      <span data-ng-show="(forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END NAME --\x3e\n\n    \x3c!-- START TABLE --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$invalid}">\n      <label class="control-label">{{\'APPLICATION_TABLE\' | translate}}<span class="required" aria-required="true">*</span></label>\n      <ui-select data-ng-model="item.table" name="table" theme="bootstrap" required>\n        <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match>\n        <ui-select-choices repeat="table.value as table in tables | filter: $select.search">\n          <div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div>\n        </ui-select-choices>\n      </ui-select>\n      <span data-ng-show="(forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END TABLE--\x3e\n\n    \x3c!-- START METRIC --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$invalid}">\n      <label class="control-label">{{\'APPLICATION_METRIC\' | translate}}<span class="required" aria-required="true">*</span></label>\n      <textarea type="text" name="metric" placeholder="{{\'APPLICATION_METRIC\' | translate}}" class="form-control" data-ng-model="item.metric" required/></textarea>\n      <span data-ng-show="(forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END METRIC --\x3e\n\n    \x3c!-- START DESCRIPTION --\x3e\n    <div class="form-group">\n      <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n      <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n    </div>\n    \x3c!-- END DESCRIPTION --\x3e\n\n  </form>\n</div>\n<div class="modal-footer">\n  <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.metric.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n  <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/analytic/metric/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-calculator"></i>\n\t\t\t\t\t<a href="/analytics/metrics/list">{{ \'APPLICATION_METRICS\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t\x3c!-- <div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-calculator font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_DEFAULT_METRICS\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t</div>\n\t\t\t</div> --\x3e\n\t\t\t\x3c!-- <div class="portlet-body"> --\x3e\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t\x3c!-- <div ui-grid="gridOptionsDefault" data-ng-if="gridOptionsDefault" name="gridOptionsDefault"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptionsDefault.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t\t\t</div> --\x3e\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t\x3c!-- </div> --\x3e\n\t\t\t<div class="portlet-title">\x3c!-- removed margin-top20 class from title when commented the default metrics section--\x3e\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-calculator font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_METRICS\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="btn-group">\n\t\t\t\t\t\t<button class="btn green-jungle " ng-click="create()">\n\t\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_METRIC\' | translate }}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> --\x3e\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions" data-ng-if="gridOptions" name="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/analytic/metric/list/view.modal.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_METRIC\' | translate }}</h3>\n</div>\n<div class="modal-body">\n  <form name="forms.metric" novalidate>\n\n    \x3c!-- START NAME --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$invalid}">\n      <label class="control-label">{{\'APPLICATION_NAME\' | translate}}</label>\n      <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required readonly/>\n      <span data-ng-show="(forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END NAME --\x3e\n\n    \x3c!-- START TABLE --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$invalid}">\n      <label class="control-label">{{\'APPLICATION_TABLE\' | translate}}</label>\n      <ui-select data-ng-model="item.table" name="table" theme="bootstrap" required data-ng-disabled="true">\n        <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match>\n        <ui-select-choices repeat="table.value as table in tables | filter: $select.search">\n          <div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div>\n        </ui-select-choices>\n      </ui-select>\n      <span data-ng-show="(forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END TABLE--\x3e\n\n    \x3c!-- START METRIC --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$invalid}">\n      <label class="control-label">{{\'APPLICATION_METRIC\' | translate}}</label>\n      <textarea type="text" name="metric" placeholder="{{\'APPLICATION_METRIC\' | translate}}" class="form-control" data-ng-model="item.metric" required readonly/></textarea>\n      <span data-ng-show="(forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END METRIC --\x3e\n\n    \x3c!-- START DESCRIPTION --\x3e\n    <div class="form-group">\n      <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n      <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description" readonly></textarea>\n    </div>\n    \x3c!-- END DESCRIPTION --\x3e\n\n  </form>\n</div>\n<div class="modal-footer">\n  <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/analytic/metric/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="getMetric()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-eye"></i>\n\t\t\t\t\t<a href="/analytics/metrics/list">{{ \'APPLICATION_METRICS\' | translate }}</a>\n\t\t\t\t\t<i data-ng-show="metric" class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li data-ng-show="metric">\n\t\t\t\t\t<a href="#">{{metric.name}}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE SIDEBAR --\x3e\n\t\t<div class="profile-sidebar">\n\t\t\t\x3c!-- PORTLET MAIN --\x3e\n\t\t\t<div class="portlet light profile-sidebar-portlet">\n\t\t\t\t\x3c!-- SIDEBAR USERPIC --\x3e\n\t\t\t\t<div class="profile-image">\n\t\t\t\t\t<img data-ng-src="assets/images/media/metric.png" class="img-responsive">\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USERPIC --\x3e\n\t\t\t\t\x3c!-- SIDEBAR USER TITLE --\x3e\n\t\t\t\t<div class="profile-usertitle">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{metric.name}}\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- <div class="profile-usertitle-job">\n\t\t\t\t\t\t{{user.role}}\n\t\t\t\t\t</div> --\x3e\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USER TITLE --\x3e\n\n\t\t\t\t\x3c!-- SIDEBAR MENU --\x3e\n\t\t\t\t<div class="profile-usermenu">\n\t\t\t\t\t<ul class="nav">\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.analytics.metrics.view.settings\')}">\n\t\t\t\t\t\t\t<a data-ng-href="/analytics/metrics/view/{{metric.id}}/settings">\n\t\t\t\t\t\t\t<i class="icon-settings"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_SETTINGS\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END MENU --\x3e\n\t\t\t</div>\n\t\t\t\x3c!-- END PORTLET MAIN --\x3e\n\t\t</div>\n\t\t\x3c!-- END BEGIN PROFILE SIDEBAR --\x3e\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/analytic/metric/view/view.settings.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_METRIC\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n\t\t\t\t</div>\n\t\t\t\t<ul class="nav nav-tabs">\n\t\t\t\t\t<li class="active">\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\n\t\t\t<div class="portlet-body">\n\t\t\t\t<div class="tab-content">\n\t\t\t\t\t\x3c!-- GENERAL TAB --\x3e\n\t\t\t\t\t<div class="tab-pane active" id="tab_1_1">\n\t\t\t\t\t\t<form name="forms.general" data-ng-submit="forms.general.$valid && updateMetric()" novalidate>\n\n\t\t\t\t\t\t\t\x3c!-- START NAME --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="metric.name" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.table.$touched || forms.general.$submitted) && forms.general.table.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_TABLE\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<ui-select data-ng-model="metric.table" name="table" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="table.value as table in tables | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.table.$touched || forms.general.$submitted) && forms.general.table.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END TABLE--\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START METRIC --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.metric.$touched || forms.general.$submitted) && forms.general.metric.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_METRIC\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<textarea type="text" name="metric" placeholder="{{\'APPLICATION_METRIC\' | translate}}" class="form-control" data-ng-model="metric.metric" required/></textarea>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.metric.$touched || forms.general.$submitted) && forms.general.metric.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END METRIC --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t\t\t<textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="metric.description"></textarea>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END ADVANCED TAB --\x3e\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/analytic/report/list/copy.modal.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_COPY_REPORT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n  <div class="portlet light bordered">\n    <div class="portlet-title">\n      <div class="caption font-green-sharp" style="padding-left:10px;">\n        <i class="icon-folder font-green-sharp"></i>\n        <span class="caption-subject">{{ \'APPLICATION_COPY_TO\' | translate }} </span>\n      </div>\n    </div>\n    <div class="portlet-body">\n      <div js-tree="customTreeConfig" ng-model="customTreeData" should-apply="ac()" tree="customTreeInstance" tree-events="ready:initCustomScopeTree;"></div>\n    </div>\n  </div>\n  <div class="has-error">\n    <span data-ng-show="showAlert" class="help-block help-block-error">\n    <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_SELECT_FOLDER\' | translate}}.\n  </span>\n  </div>\n</div>\n<div class="modal-footer">\n  <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n  <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),
+cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.status" type="checkbox" switch-active="{{ grid.appScope.isActive }}" switch-on-text="{{ grid.appScope.onText }}" switch-off-text="{{ grid.appScope.offText }}" switch-on-color="{{ grid.appScope.onColor }}" switch-off-color="{{ grid.appScope.offColor }}" switch-animate="{{ grid.appScope.animate }}" switch-size="{{ grid.appScope.size }}" switch-label="{{ grid.appScope.label }}" switch-icon="{{ grid.appScope.icon }}" switch-radio-off="{{ grid.appScope.radioOff }}" switch-label-width="{{ grid.appScope.labelWidth }}" switch-handle-width="{{ grid.appScope.handleWidth }}"></div>',width:100,enableFiltering:!1},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/automations/view/{{row.entity.id}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=f.gridOptions(e,b,a)},a.updateItem=function(a){return e.update({id:a.id},a).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.list",{url:"/list",templateUrl:"app/tools/automation/list/list.html",controller:"AutomationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("AutomationViewCtrl",["$scope","$stateParams","$http","$translate","xAlert","automations","Automation","$location",function(a,b,c,d,e,f,g,h){a.$automations=f,a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.forms={general:{}},a.addCondition=function(b){a.automation[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.automation[b].splice(c,1)},a.addAction=function(){a.automation.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.automation.Actions.splice(b,1)},a.initView=function(){return g.get({id:b.id}).$promise.then(function(b){a.automation=b}).catch(function(a){e.error(a),h.path("/tools/automations/list")})},a.updateAutomation=function(){return g.update({id:b.id},a.automation).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){console.error(a),e.error(a)})},a.exitValidation=function(b){return console.log(b&&(a.automation.All.length||a.automation.Any.length)&&a.automation.Actions.length),!(!b||!a.automation.All.length&&!a.automation.Any.length||!a.automation.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.view",{url:"/view/:id",templateUrl:"app/tools/automation/view/view.html",controller:"AutomationViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}}).state("main.tools.automations.view.settings",{url:"/settings",templateUrl:"app/tools/automation/view/view.settings.html"}).state("main.tools.automations.view.routes",{url:"/routes",templateUrl:"app/tools/automation/view/view.routes.html"}).state("main.tools.automations.view.application",{url:"/application",templateUrl:"app/tools/automation/view/view.application.html"})}]),angular.module("xCallyShuttleApp").controller("AutomationWizardCtrl",["$scope","$http","$location","xAlert","automations","WizardHandler","Automation",function(a,b,c,d,e,f,g){a.$automations=e,a.statusSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.tempData={voice:{},mail:{},chat:{},fax:{}},a.item={All:[],Any:[],Actions:[]},a.forms={general:void 0,settings:void 0},a.addCondition=function(b){a.item[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.item[b].splice(c,1)},a.addAction=function(){a.item.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.item.Actions.splice(b,1)},a.$watch("item.channel",function(b,c){c&&(a.tempData[c].All=_.clone(a.item.All,!0),a.tempData[c].Any=_.clone(a.item.Any,!0),a.tempData[c].Actions=_.clone(a.item.Actions,!0)),a.item.All=a.tempData[b].All?a.tempData[b].All:[],a.item.Any=a.tempData[b].Any?a.tempData[b].Any:[],a.item.Actions=a.tempData[b].Actions?a.tempData[b].Actions:[]},!0),a.item.channel="mail",a.createItem=function(){return g.save(a.item).$promise.then(function(){c.path("/tools/automations/list")}).catch(function(a){console.error(a),d.error(a)})},a.next=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.exitValidation=function(a){return a},a.exitSettingsValidation=function(b){return!(!b||!a.item.All.length&&!a.item.Any.length||!a.item.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.automations.wizard",{url:"/wizard",templateUrl:"app/tools/automation/wizard/wizard.html",controller:"AutomationWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("Interval",["$resource",function(a){return a("/api/intervals/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("SubInterval",["$resource",function(a){return a("/api/intervals/:intervalId/subintervals/:id",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals",{url:"/intervals",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:53}}})}]),angular.module("xCallyShuttleApp").controller("IntervalListCtrl",["$scope","$uibModal","Interval","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"intervals.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/intervals/view/{{row.entity.id}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){b.open({animation:!0,templateUrl:"app/tools/interval/list/list.create.modal.html",controller:"IntervalListCreateCtrl"}).result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("IntervalListCreateCtrl",["$scope","$translate","$uibModalInstance","Interval","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.list",{url:"/list",templateUrl:"app/tools/interval/list/list.html",controller:"IntervalListCtrl"})}]),angular.module("xCallyShuttleApp").controller("IntervalViewSubintervalsListCtrl",["$scope","$stateParams","gridOptions","SubInterval","$translate","$uibModal",function(a,b,c,d,e,f){a.stateParams=b,a.initView=function(){var e={exporterCsvFilename:"tools_interval.csv",columnDefs:[{name:"name"},{name:"interval"},{name:"action",width:125,buttons:[{class:"blue-hoki",href:"/tools/intervals/view/{{row.entity.IntervalId}}/subintervals/view/{{row.entity.id}}",name:"profile"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(d,e,a,{intervalId:b.id})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view.subintervals.list",{url:"/list",templateUrl:"app/tools/interval/view/subinterval/list/list.html",controller:"IntervalViewSubintervalsListCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view.subintervals",{url:"/subintervals",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("IntervalViewSubintervalsViewCtrl",["$scope","$stateParams","WizardHandler","SubInterval","xAlert","$location","$translate","Interval",function(a,b,c,d,e,f,g,h){function i(b){var c,d,e,f;c=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(d=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(d+="-"+b.wd_to)):d="*",b.md_from&&"always"!==b.md_from?(e=b.md_from,b.md_to&&"always"!==b.md_to&&(e+="-"+b.md_to)):e="*",b.m_from&&"always"!==b.m_from?(f=b.m_from,b.m_to&&"always"!==b.m_to&&(f+="-"+b.m_to)):f="*",a.subinterval&&(a.subinterval.interval=c+","+d+","+e+","+f)}a.isNewSubinterval=!1,a.switch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.initSubInterval=function(){if(b.subintervalId)return a.isNewSubinterval=!1,a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date)},d.get({id:b.subintervalId,intervalId:b.id}).$promise.then(function(b){a.subinterval=b;var c,d=a.subinterval?a.subinterval.interval.split(","):["*","*","*","*"];d.forEach(function(b,d){switch(d){case 0:"*"!==b?(c=b.split("-"),a.splittedInterval.t_from=moment(c[0],"HH:mm"),a.splittedInterval.t_to=moment(c[1],"HH:mm"),a.splittedInterval.alwaysTime=!1):(a.splittedInterval.t_from=moment(new Date),a.splittedInterval.t_to=moment(new Date),a.splittedInterval.alwaysTime=!0);break;case 1:"*"!==b?(c=b.split("-"),a.splittedInterval.wd_from=c[0],a.splittedInterval.wd_to=c[1]?c[1]:"always"):(a.splittedInterval.wd_from="always",a.splittedInterval.wd_to="always");break;case 2:"*"!==b?(c=b.split("-"),a.splittedInterval.md_from=c[0],a.splittedInterval.md_to=c[1]?c[1]:"always"):(a.splittedInterval.md_from="always",a.splittedInterval.md_to="always");break;case 3:"*"!==b?(c=b.split("-"),a.splittedInterval.m_from=c[0],a.splittedInterval.m_to=c[1]?c[1]:"always"):(a.splittedInterval.m_from="always",a.splittedInterval.m_to="always")}})}).catch(function(a){e.error(a),f.path("/tools/intervals/list")});a.isNewSubinterval=!0,a.subinterval={},a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0}},a.next=function(){c.wizard().next()},a.previous=function(){c.wizard().previous()},a.exitValidation=function(a){return a},a.$watch("splittedInterval",function(a){a&&i(a)},!0),a.addOrUpdateSubInterval=function(){return a.isNewSubinterval?d.save({intervalId:b.id},a.subinterval).$promise.then(function(){e.show(g.instant("MESSAGE_WELL_DONE")+".","success"),f.path("/tools/intervals/view/"+b.id+"/subintervals/list")}).catch(function(a){e.error(a)}):h.update({id:b.subintervalId},a.subinterval).$promise.then(function(){e.show(g.instant("MESSAGE_WELL_DONE")+".","success"),f.path("/tools/intervals/view/"+b.id+"/subintervals/list")}).catch(function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view.subintervals.view",{url:"/view/:subintervalId",templateUrl:"app/tools/interval/view/subinterval/view/view.html",controller:"IntervalViewSubintervalsViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("IntervalViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","socket","$location","WizardHandler","Modal","interval","Interval",function(a,b,c,d,e,f,g,h,i,j,k){function l(b){var c,d,e,f;c=b.t_from&&b.t_to&&!b.alwaysTime?moment(b.t_from).format("HH:mm")+"-"+moment(b.t_to).format("HH:mm"):"*",b.wd_from&&"always"!==b.wd_from?(d=b.wd_from,b.wd_to&&"always"!==b.wd_to&&(d+="-"+b.wd_to)):d="*",b.md_from&&"always"!==b.md_from?(e=b.md_from,b.md_to&&"always"!==b.md_to&&(e+="-"+b.md_to)):e="*",b.m_from&&"always"!==b.m_from?(f=b.m_from,b.m_to&&"always"!==b.m_to&&(f+="-"+b.m_to)):f="*",void 0!==a.selectedSubInterval?a.interval.SubIntervals[a.selectedSubInterval].interval=c+","+d+","+e+","+f:a.subinterval.interval=c+","+d+","+e+","+f}a.$translate=d,a.$interval=j.interval,a.selectedSubInterval=void 0,a.switch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.gridOptions={columnDefs:[{name:"name",displayName:"APPLICATION_NAME",headerCellFilter:"translate"},{name:"interval",displayName:"APPLICATION_INTERVAL",headerCellFilter:"translate"},{name:"action",displayName:"APPLICATION_ACTION",headerCellFilter:"translate",width:125,cellTemplate:'<a class="btn btn-xs blue-hoki" data-ng-click="grid.appScope.openSubInterval(grid.appScope.gridOptions.data.indexOf(row.entity))">{{\'APPLICATION_SETTINGS\' | translate}}</a><a class="btn btn-xs red-sunglo" data-ng-click="grid.appScope.deleteSubInterval(row.entity.name+\' interval\', grid.appScope.gridOptions.data.indexOf(row.entity))">{{\'APPLICATION_DELETE\' | translate}}</a>'}]},a.forms={subinterval:void 0,general:void 0},a.initSubInterval=function(b){b&&(a.selectedSubInterval=void 0),a.subinterval={},a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date),wd_from:"always",wd_to:"always",md_from:"always",md_to:"always",m_from:"always",m_to:"always",alwaysTime:!0}},a.next=function(){h.wizard().next()},a.previous=function(){h.wizard().previous()},a.exitValidation=function(a){return a},a.deselectAndRedirect=function(b){a.selectedSubInterval=void 0,g.path(b)},a.getInterval=function(){return k.get({id:e.id}).$promise.then(function(b){a.interval=b}).catch(function(a){c.error(a),g.path("/tools/intervals/list")})},a.openSubInterval=function(b){a.selectedSubInterval=b,g.path("/tools/intervals/view/"+e.id+"/subintervals/settings")},a.updateInterval=function(){var b={name:a.interval.name,description:a.interval.description};return k.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE")+".","success")}).catch(function(a){c.error(a)})},a.getSubInterval=function(){void 0===a.selectedSubInterval&&g.path("/tools/intervals/list"),a.splittedInterval={t_from:moment(new Date),t_to:moment(new Date)};var b,c=a.interval.SubIntervals[a.selectedSubInterval]?a.interval.SubIntervals[a.selectedSubInterval].interval.split(","):["*","*","*","*"];c.forEach(function(c,d){switch(d){case 0:"*"!==c?(b=c.split("-"),a.splittedInterval.t_from=moment(b[0],"HH:mm"),a.splittedInterval.t_to=moment(b[1],"HH:mm"),a.splittedInterval.alwaysTime=!1):(a.splittedInterval.t_from=moment(new Date),a.splittedInterval.t_to=moment(new Date),a.splittedInterval.alwaysTime=!0);break;case 1:"*"!==c?(b=c.split("-"),a.splittedInterval.wd_from=b[0],a.splittedInterval.wd_to=b[1]?b[1]:"always"):(a.splittedInterval.wd_from="always",a.splittedInterval.wd_to="always");break;case 2:"*"!==c?(b=c.split("-"),a.splittedInterval.md_from=b[0],a.splittedInterval.md_to=b[1]?b[1]:"always"):(a.splittedInterval.md_from="always",a.splittedInterval.md_to="always");break;case 3:"*"!==c?(b=c.split("-"),a.splittedInterval.m_from=b[0],a.splittedInterval.m_to=b[1]?b[1]:"always"):(a.splittedInterval.m_from="always",a.splittedInterval.m_to="always")}})},a.$watch("splittedInterval",function(a){a&&l(a)},!0),a.addSubInterval=function(){a.interval.SubIntervals.push(a.subinterval),a.updateInterval("subintervals")},a.deleteSubInterval=i.confirm.delete(function(b){a.interval.SubIntervals.splice(b,1),a.updateInterval()})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.intervals.view",{url:"/view/:id",templateUrl:"app/tools/interval/view/view.html",controller:"IntervalViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.intervals.view.settings",{url:"/settings",templateUrl:"app/tools/interval/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("PauseListCtrl",["$scope","$log","$uibModal","$translate","Pause","gridOptions",function(a,b,c,d,e,f){a.initView=function(){var b={exporterCsvFilename:"pauses.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/pauses/view/{{row.entity.id}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=f.gridOptions(e,b,a)},a.createItem=function(){c.open({animation:!0,templateUrl:"app/tools/pause/list/list.create.modal.html",controller:"PauseListCreateCtrl"}).result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("PauseListCreateCtrl",["$scope","$translate","$uibModalInstance","Pause","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.pauses.list",{url:"/list",templateUrl:"app/tools/pause/list/list.html",controller:"PauseListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Pause",["$resource",function(a){return a("/api/pauses/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.pauses",{url:"/pauses",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:57}}})}]),angular.module("xCallyShuttleApp").controller("PauseViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location","Pause",function(a,b,c,d,e,f,g){a.getPause=function(){return g.get({id:e.id}).$promise.then(function(b){a.pause=b}).catch(function(a){c.error(a)})},a.updatePause=function(){var b=angular.copy(a.pause);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.pauses.view",{url:"/view/:id",templateUrl:"app/tools/pause/view/view.html",controller:"PauseViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.pauses.view.settings",{url:"/settings",templateUrl:"app/tools/pause/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("SchedulerListCtrl",["$scope","Scheduler","gridOptions","xAlert","$translate","socket",function(a,b,c,d,e,f){a._=_,a.switches={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.scheduleTypes=[{name:"APPLICATION_REPORT_EXTRACTION",value:"report"},{name:"APPLICATION_HISTORY_MOVE",value:"history"},{name:"APPLICATION_DB_BACKUP",value:"backup"}],a.initView=function(){var d={exporterCsvFilename:"Schedules.csv",columnDefs:[{name:"name"},{name:"type",cellTemplate:'<div class="centered-uigrid-td">{{grid.appScope._.find(grid.appScope.scheduleTypes,{value:row.entity.type}).name | translate}}</div>'},{name:"description"},{name:"active",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.active" type="checkbox" switch-active="{{ grid.appScope.switches.isActive }}" switch-on-text="{{ \'APPLICATION_YES\' | translate }}" switch-off-text="{{ \'APPLICATION_NO\' | translate }}" switch-on-color="{{ grid.appScope.switches.onColor }}" switch-off-color="{{ grid.appScope.switches.offColor }}" switch-animate="{{ grid.appScope.switches.animate }}" switch-size="{{ grid.appScope.switches.size }}" switch-label="{{ grid.appScope.switches.label }}" switch-icon="{{ grid.appScope.switches.icon }}" switch-radio-off="{{ grid.appScope.switches.radioOff }}" switch-label-width="{{ grid.appScope.switches.labelWidth }}" switch-handle-width="{{ grid.appScope.switches.handleWidth }}"></div>',enableFiltering:!1,enableSorting:!1},{name:"sendMail",displayName:"APPLICATION_SEND_MAIL",cellTemplate:'<div data-ng-if="row.entity.type == \'report\'" class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.sendMail" type="checkbox" switch-active="{{ grid.appScope.switches.isActive }}" switch-on-text="{{ \'APPLICATION_YES\' | translate }}" switch-off-text="{{ \'APPLICATION_NO\' | translate }}" switch-on-color="{{ grid.appScope.switches.onColor }}" switch-off-color="{{ grid.appScope.switches.offColor }}" switch-animate="{{ grid.appScope.switches.animate }}" switch-size="{{ grid.appScope.switches.size }}" switch-label="{{ grid.appScope.switches.label }}" switch-icon="{{ grid.appScope.switches.icon }}" switch-radio-off="{{ grid.appScope.switches.radioOff }}" switch-label-width="{{ grid.appScope.switches.labelWidth }}" switch-handle-width="{{ grid.appScope.switches.handleWidth }}"></div>',enableFiltering:!1,enableSorting:!1},{name:"action",width:100,buttons:[{class:"blue-hoki",href:"/tools/scheduler/view/{{row.entity.id}}/settings",name:"settings"},{class:"green-turquoise",name:"run",onClick:"grid.appScope.runSchedule(row.entity.id)"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.updateItem=function(a){return b.update({id:a.id},a).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){console.error(a),d.error(a)})},a.runSchedule=function(a){return b.get({id:a,controller:"run"}).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler.list",{url:"/list",templateUrl:"app/tools/scheduler/list/list.html",controller:"SchedulerListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Scheduler",["$resource",function(a){return a("/api/scheduler/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler",{url:"/scheduler",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:61}}})}]),angular.module("xCallyShuttleApp").controller("SchedulerViewCtrl",["$scope","xAlert","$translate","$stateParams","socket","$location","ReportTree","Scheduler","DefaultReport","CustomReport","$timeout","MailServerOut",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(){switch(a.schedule.cronType=a.rangeExec.type,a.rangeExec.type){case"daily":a.schedule.cron="00 "+a.rangeExec.hour+" * * *";break;case"weekly":a.schedule.cron="00 "+a.rangeExec.hour+" * * "+a.rangeExec.weekDays.join(",");break;case"monthly":a.schedule.cron="00 "+a.rangeExec.hour+" "+a.rangeExec.monthDay+" * *"}}function n(b){var c;switch(b.cronType){case"daily":a.rangeExec.hour=Number(b.cron.split(" ")[1]),a.rangeExec.type=b.cronType;break;case"weekly":c=b.cron.split(" "),a.rangeExec.hour=Number(c[1]),c[4].split(",").forEach(function(b){a.rangeExec.weekDays.push(Number(b))}),a.rangeExec.type=b.cronType;break;case"monthly":c=b.cron.split(" "),a.rangeExec.hour=Number(c[1]),a.rangeExec.monthDay=Number(c[2]),a.rangeExec.type=b.cronType;break;case"currentDay":a.switchValues.today=!0}a.$watch("rangeExec",function(b){a.switchValues.today||m()},!0)}a.forms={},a.rangeExec={weekDays:[],monthDay:null,hour:0,type:null},a.initReports=function(){var c;return a.reports=[],a.tempTodayCron=null,g.query().$promise.then(function(b){return a.defaultTreeData=JSON.parse(b[0].tree),a.customTreeData=JSON.parse(b[1].tree),i.get().$promise}).then(function(b){return a.defRep=b.rows,a.defRep.length&&_.forEach(a.defRep,function(b){(c=_.find(a.defaultTreeData,{id:b.parent}))&&(b.parent="Motion Reports - "+c.text,b.type="default")}),j.get().$promise}).then(function(b){return a.cusRep=b.rows,a.cusRep.length&&_.forEach(a.cusRep,function(b){(c=_.find(a.customTreeData,{id:b.parent}))&&(b.parent="Custom Reports - "+c.text,b.type="custom")}),l.get().$promise}).then(function(b){a.mailServers=b.rows}).catch(function(a){b.error(a)})},a.initView=function(){return h.get({id:d.id}).$promise.then(function(b){a.schedule=b,n(b)}).then(function(){e.socket.on("schedule:update",function(b){a.schedule.id===b.id&&(a.schedule.active=b.active,a.schedule.sendMail=b.sendMail)})}).catch(function(a){console.error(a),f.path("/tools/scheduler/list")})},a.refreshSlider=function(){k(function(){a.$broadcast("rzSliderForceRender"),a.refreshSlider=null})},a.monthDays=function(){for(var a=[],b=1;b<=31;b++)a.push(b);return a}(),a.hours=function(){for(var a=[],b=0;b<=23;b++)a.push(b);return a}(),a.setReportTree=function(b){a.schedule.reportType=b.type},a.validitySlider={ceil:24,floor:0,showTicks:!0},a.switchValues={today:!1},a.switches={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.scheduleTypes=[{name:"APPLICATION_REPORT_EXTRACTION",value:"report"}],a.todayCron=[{name:"15 min",value:"*/15 * * * *"},{name:"30 min",value:"*/30 * * * *"},{name:"1 h",value:"0 * * * *"}],a.reportRanges=[{name:"APPLICATION_PREVIOUS_DAY",value:"yesterday"},{name:"APPLICATION_LAST_SEVEN_DAYS",value:"last7"},{name:"APPLICATION_LAST_THIRTY_DAYS",value:"last30"},{name:"APPLICATION_LAST_MONTH",value:"lastMonth"}],a.cronTypes=[{name:"APPLICATION_DAY",value:"daily"},{name:"APPLICATION_WEEK",value:"weekly"},{name:"APPLICATION_MONTH",value:"monthly"}],a.weekDays=[{name:"APPLICATION_MONDAY",value:1},{name:"APPLICATION_TUESDAY",value:2},{name:"APPLICATION_WEDNESDAY",value:3},{name:"APPLICATION_THURSDAY",value:4},{name:"APPLICATION_FRIDAY",value:5},{name:"APPLICATION_SATURDAY",value:6},{name:"APPLICATION_SUNDAY",value:0}],a.checkToday=function(){a.switchValues.today?(a.schedule.cron=angular.copy(a.tempTodayCron),a.schedule.cronType="currentDay"):(a.tempTodayCron=angular.copy(a.schedule.cron),a.schedule.cron=void 0,m())},a.updateSchedule=function(){return h.update({id:a.schedule.id},a.schedule).$promise.then(function(){b.show(c.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){console.error(a),b.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler.view",{url:"/view/:id",templateUrl:"app/tools/scheduler/view/view.html",controller:"SchedulerViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.scheduler.view.settings",{url:"/settings",templateUrl:"app/tools/scheduler/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("SchedulerWizardCtrl",["$scope","WizardHandler","$location","xAlert","Scheduler","ReportTree","$translate","DefaultReport","CustomReport","MailServerOut",function(a,b,c,d,e,f,g,h,i,j){function k(){switch(a.item.cronType=a.rangeExec.type,a.rangeExec.type){case"daily":a.item.cron="00 "+a.rangeExec.hour+" * * *";break;case"weekly":a.item.cron="00 "+a.rangeExec.hour+" * * "+a.rangeExec.weekDays.join(",");break;case"monthly":a.item.cron="00 "+a.rangeExec.hour+" "+a.rangeExec.monthDay+" * *"}}a.forms={},a.item={validityStart:8,validityEnd:16,type:"report",reportType:"default"},a.initReports=function(){a.reports=[];var b;return f.query().$promise.then(function(b){return a.defaultTreeData=JSON.parse(b[0].tree),a.customTreeData=JSON.parse(b[1].tree),h.get().$promise}).then(function(c){return a.defRep=c.rows,a.defRep.length&&_.forEach(a.defRep,function(c){(b=_.find(a.defaultTreeData,{id:c.parent}))&&(c.parent="Motion Reports - "+b.text,c.type="default")}),i.get().$promise}).then(function(c){return a.cusRep=c.rows,a.cusRep.length&&_.forEach(a.cusRep,function(c){(b=_.find(a.customTreeData,{id:c.parent}))&&(c.parent="Custom Reports - "+b.text,c.type="custom")}),j.get().$promise}).then(function(b){a.mailServers=b.rows}).catch(function(a){d.error(a)})},a.setReportTree=function(b){a.item.reportType=b.type},a.validitySlider={ceil:24,floor:0,showTicks:!0},a.switchValues={today:!1},a.switches={isActive:!0,size:"mini",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.scheduleTypes=[{name:"APPLICATION_REPORT_EXTRACTION",value:"report"}],a.todayCron=[{name:"15 min",value:"*/15 * * * *"},{name:"30 min",value:"*/30 * * * *"},{name:"1 h",value:"0 * * * *"}],a.reportRanges=[{name:"APPLICATION_PREVIOUS_DAY",value:"yesterday"},{name:"APPLICATION_LAST_SEVEN_DAYS",value:"last7"},{name:"APPLICATION_LAST_THIRTY_DAYS",value:"last30"},{name:"APPLICATION_LAST_MONTH",value:"lastMonth"}],a.cronTypes=[{name:"APPLICATION_DAY",value:"daily"},{name:"APPLICATION_WEEK",value:"weekly"},{name:"APPLICATION_MONTH",value:"monthly"}],a.weekDays=[{name:"APPLICATION_MONDAY",value:1},{name:"APPLICATION_TUESDAY",value:2},{name:"APPLICATION_WEDNESDAY",value:3},{name:"APPLICATION_THURSDAY",value:4},{name:"APPLICATION_FRIDAY",value:5},{name:"APPLICATION_SATURDAY",value:6},{name:"APPLICATION_SUNDAY",value:0}],a.tempTodayCron=null,a.checkToday=function(){a.switchValues.today?(a.item.cron=angular.copy(a.tempTodayCron),a.item.cronType="currentDay"):(a.tempTodayCron=angular.copy(a.item.cron),a.item.cron=void 0,k())},a.monthDays=function(){for(var a=[],b=1;b<=31;b++)a.push(b);return a}(),a.hours=function(){for(var a=[],b=0;b<=23;b++)a.push(b);return a}(),a.rangeExec={weekDays:[],monthDay:null,hour:0,type:null},a.$watch("rangeExec",function(b){a.switchValues.today||k()},!0),a.next=function(){b.wizard().next()},a.previous=function(){b.wizard().previous()},a.exitValidation=function(a){return a},a.createItem=function(){return e.save(a.item).$promise.then(function(){c.path("/tools/scheduler/list")}).catch(function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.scheduler.wizard",{url:"/wizard",templateUrl:"app/tools/scheduler/wizard/wizard.html",controller:"SchedulerWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("SoundListCtrl",["$scope","$http","socket","Modal","$q","FileUploader","$translate","xAlert","$cookieStore","$sce","Sound",function(a,b,c,d,e,f,g,h,i,j,k){a.Sound=k,a.isCollapsed=!0,a.downloadButtonClass="btn btn-xs blue-hoki",a.delete=d.confirm.delete(function(a){b.delete("/api/sounds/"+a).success(function(a){}).error(function(a){console.log(a)})}),a.updateAudio=function(a,c){var d=e.defer();return b.put("/api/sounds/"+a,c).success(function(a){d.resolve()}).error(function(a){console.log(a.message),d.reject(a.message)}),d.promise},a.$on("$destroy",function(){c.unsyncUpdates("sound")}),a.initList=function(){b.get("/api/sounds").success(function(b){a.sounds=b.rows,b.rows.length||(a.isCollapsed=!1),c.syncUpdates("sound",a.sounds,function(){a.sounds.length||(a.isCollapsed=!1)})})};var l=a.uploader=new f({url:"/api/sounds",withCredentials:!0,headers:{Authorization:"Bearer "+i.get("token")}});l.filters.push({name:"customFilter",fn:function(a,b){return this.queue.length<10}}),l.onWhenAddingFileFailed=function(a,b,c){console.info("onWhenAddingFileFailed",a,b,c)},l.onAfterAddingFile=function(a){console.info("onAfterAddingFile",a)},l.onAfterAddingAll=function(a){console.info("onAfterAddingAll",a)},l.onBeforeUploadItem=function(a){console.info("onBeforeUploadItem",a)},l.onProgressItem=function(a,b){console.info("onProgressItem",a,b),a.isUploading=!0},
+l.onProgressAll=function(a){console.info("onProgressAll",a)},l.onSuccessItem=function(a,b,c,d){console.info("onSuccessItem",a,b,c,d),a.isUploading=!1},l.onErrorItem=function(a,b,c,d){console.info("onErrorItem",a,b,c,d),a.responseMessage=b,a.isUploading=!1},l.onCancelItem=function(a,b,c,d){console.info("onCancelItem",a,b,c,d),a.isUploading=!1},l.onCompleteItem=function(a,b,c,d){console.info("onCompleteItem",a,b,c,d),a.isUploading=!1},l.onCompleteAll=function(){console.info("onCompleteAll")}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.sounds.list",{url:"/list",templateUrl:"app/tools/sound/list/list.html",controller:"SoundListCtrl",authenticate:!0,resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/plugins/bootstrap-fileinput/bootstrap-fileinput.js"]})}]}})}]),angular.module("xCallyShuttleApp").factory("Sound",["$resource",function(a){return a("/api/sounds/:id/:controller",{name:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.sounds",{url:"/sounds",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:60}}})}]),angular.module("xCallyShuttleApp").controller("TagListCtrl",["$scope","$uibModal","Tag","gridOptions","$rootScope",function(a,b,c,d,e){a.initView=function(){var b={exporterCsvFilename:"tag.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/tags/view/{{row.entity.id}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){b.open({animation:!0,templateUrl:"app/tools/tag/list/list.create.modal.html",controller:"TagListCreateCtrl"}).result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("TagListCreateCtrl",["$scope","$translate","$uibModalInstance","Tag","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.tags.list",{url:"/list",templateUrl:"app/tools/tag/list/list.html",controller:"TagListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Tag",["$resource",function(a){return a("/api/tags/:id/:controller/:tag",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.tags",{url:"/tags",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:55}}})}]),angular.module("xCallyShuttleApp").controller("TagViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","$location","Tag","gridOptions","List","Company","Contact","uiGridConstants","usSpinnerService",function(a,b,c,d,e,f,g,h,i,j,k,l,m){function n(){m.stop("spinner-grid"),a.readyGrid=!0}a.getTag=function(){return g.get({id:e.id}).$promise.then(function(b){a.tag=b}).catch(function(a){c.error(a)})},a.updateTag=function(){var b=angular.copy(a.tag);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){c.error(a)})},a.initChat=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagChat.csv",columnDefs:[{name:"type"},{name:"status"},{name:"ChatWebsite.name",displayName:"APPLICATION_WEBSITE"},{name:"ChatVisitor.email",displayName:"APPLICATION_VISITOR"},{name:"action",width:40,buttons:[{class:"green",name:"chatRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'chatRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"chat",tag:a.tag.name},null,null,n())},a.initMail=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagMail.csv",columnDefs:[{name:"subject"},{name:"from"},{name:"account"},{name:"status"},{name:"action",width:40,buttons:[{class:"green",name:"mailRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'mailRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"mail",tag:a.tag.name},null,null,n())},a.initFax=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagFax.csv",columnDefs:[{name:"from"},{name:"account"},{name:"status"},{name:"action",width:40,buttons:[{class:"green",name:"faxRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'faxRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"fax",tag:a.tag.name},null,null,n())},a.initSms=function(){m.spin("spinner-grid");var b={enableRowSelection:!1,exporterCsvFilename:"tagSms.csv",columnDefs:[{name:"from"},{name:"status"},{name:"action",width:40,buttons:[{class:"green",name:"smsRoom",onClick:"grid.appScope.openRoom(row.entity.id, 'smsRoom')"}]}]};a.gridOptions=h.gridOptions(g,b,a,{controller:"sms",tag:a.tag.name},null,null,n())},a.initContacts=function(){a.readyGrid=!1,m.spin("spinner-grid");var b;return i.get().$promise.then(function(b){return a.lists=[],b.rows.forEach(function(b,c){a.lists.push({value:b.id,label:b.name})}),j.get().$promise}).then(function(b){a.companies=[],b.rows.forEach(function(b,c){a.companies.push({value:b.id,label:b.name})})}).then(function(){b={enableRowSelection:!1,exporterCsvFilename:"tagContacts.csv",columnDefs:[{name:"firstName"},{name:"lastName"},{name:"phone"},{name:"email"},{name:"ListId",displayName:"APPLICATION_LIST",field:"List.name",filter:{type:l.filter.SELECT,selectOptions:a.lists}},{name:"CompanyId",displayName:"APPLICATION_COMPANY",field:"Company.name",filter:{type:l.filter.SELECT,term:e.companyId||null,selectOptions:a.companies}},{name:"action",width:40,buttons:[{class:"blue-hoki",name:"profile",onClick:"grid.appScope.openContactTab(row.entity)"}]}]},a.gridOptions=h.gridOptions(g,b,a,{controller:"contacts",tag:a.tag.name},null,null,n())}).catch(function(a){c.error(a)})},a.openRoom=function(b,c){var d=_.find(a.workspaces,{id:b,type:c});if(d)d.active=!0;else{var e;switch(c){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="fa fa-fax";break;case"smsRoom":e="glyphicon glyphicon-comment"}a.workspaces.push({id:b,type:c,class:e,active:!0})}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.tags.view",{url:"/view/:id",templateUrl:"app/tools/tag/view/view.html",controller:"TagViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.tags.view.settings",{url:"/settings",templateUrl:"app/tools/tag/view/view.settings.html"}).state("main.tools.tags.view.chat",{url:"/chat",templateUrl:"app/tools/tag/view/view.chat.html"}).state("main.tools.tags.view.mail",{url:"/mail",templateUrl:"app/tools/tag/view/view.mail.html"}).state("main.tools.tags.view.fax",{url:"/fax",templateUrl:"app/tools/tag/view/view.fax.html"}).state("main.tools.tags.view.sms",{url:"/sms",templateUrl:"app/tools/tag/view/view.sms.html"}).state("main.tools.tags.view.contacts",{url:"/contacts",templateUrl:"app/tools/tag/view/view.contacts.html"})}]),angular.module("xCallyShuttleApp").controller("TemplateListCtrl",["$scope","Template","gridOptions",function(a,b,c){a.initView=function(){var d={exporterCsvFilename:"templates.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/templates/view/{{row.entity.id}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates.list",{url:"/list",templateUrl:"app/tools/template/list/list.html",controller:"TemplateListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Template",["$resource",function(a){return a("/api/templates/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates",{url:"/templates",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:56}}})}]),angular.module("xCallyShuttleApp").controller("TemplateViewCtrl",["$scope","$rootScope","$http","$translate","$stateParams","xAlert","Template","templateVariable",function(a,b,c,d,e,f,g,h){a.initItem=function(){CKEDITOR.plugins.addExternal("richparams","/assets/plugins/ckeditor-richparams/"),a.options={language:b.language,allowedContent:!0,entities:!1,skin:"office2013",contentsCss:"/assets/css/global/richparams.css",extraPlugins:"richparams,autogrow",autoGrow_minHeight:450,richparams:h,disableNativeSpellChecker:!1,toolbar:[{name:"clipboard",items:["Cut","Copy","Paste","PasteText","PasteFromWord","-","Undo","Redo"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"insert",items:["Image","Table","HorizontalRule","SpecialChar"]},{name:"tools",items:["Maximize"]},{name:"document",items:["Source"]},"/",{name:"basicstyles",items:["Bold","Italic","Underline","Strike","Subscript","Superscript","-","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","Blockquote"]},{name:"styles",items:["Styles","Format"]},"/",{name:"motion",items:["voice","chat","mail","sms","openchannel","fax"]}]},a.form={},a.item={},a.item=g.get({id:e.id})},a.updateItem=function(){return g.update(a.item).$promise.then(function(){f.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){f.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates.view",{url:"/view/:id",templateUrl:"app/tools/template/view/view.html",controller:"TemplateViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.templates.view.settings",{url:"/settings",templateUrl:"app/tools/template/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("TemplateWizardCtrl",["$scope","$rootScope","$location","$http","WizardHandler","xAlert","Template","templateVariable",function(a,b,c,d,e,f,g,h){a.initWizard=function(){CKEDITOR.plugins.addExternal("richparams","/assets/plugins/ckeditor-richparams/"),a.options={language:b.language,allowedContent:!0,entities:!1,skin:"office2013",contentsCss:"/assets/css/global/richparams.css",extraPlugins:"richparams,autogrow",autoGrow_minHeight:450,disableNativeSpellChecker:!1,richparams:h,toolbar:[{name:"clipboard",items:["Cut","Copy","Paste","PasteText","PasteFromWord","-","Undo","Redo"]},{name:"links",items:["Link","Unlink","Anchor"]},{name:"insert",items:["Image","Table","HorizontalRule","SpecialChar"]},{name:"tools",items:["Maximize"]},{name:"document",items:["Source"]},"/",{name:"basicstyles",items:["Bold","Italic","Underline","Strike","Subscript","Superscript","-","RemoveFormat"]},{name:"paragraph",items:["NumberedList","BulletedList","-","Outdent","Indent","-","Blockquote"]},{name:"styles",items:["Styles","Format"]},"/",{name:"motion",items:["voice","chat","mail","sms","openchannel","fax"]}]},a.item={},a.form={}},a.exitValidation=function(a){return a},a.createItem=function(){return g.save({name:a.item.name,description:a.item.description,subject:a.item.subject||null,html:a.item.html||null,text:a.item.text||null}).$promise.then(function(){c.path("/tools/templates/list")}).catch(function(a){f.error(a)})}}]);angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.templates.wizard",{url:"/wizard",templateUrl:"app/tools/template/wizard/wizard.html",controller:"TemplateWizardCtrl"})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools",{url:"/tools",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:13}}})}]),angular.module("xCallyShuttleApp").controller("TriggerListCtrl",["$scope","$http","$translate","Modal","xAlert","Trigger","gridOptions",function(a,b,c,d,e,f,g){a.onText="On",a.offText="Off",a.isActive=!0,a.size="mini",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){var b={exporterCsvFilename:"Triggers.csv",columnDefs:[{name:"name"},{name:"description"},{name:"channel"},{name:"status",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.status" type="checkbox" switch-active="{{ grid.appScope.isActive }}" switch-on-text="{{ grid.appScope.onText }}" switch-off-text="{{ grid.appScope.offText }}" switch-on-color="{{ grid.appScope.onColor }}" switch-off-color="{{ grid.appScope.offColor }}" switch-animate="{{ grid.appScope.animate }}" switch-size="{{ grid.appScope.size }}" switch-label="{{ grid.appScope.label }}" switch-icon="{{ grid.appScope.icon }}" switch-radio-off="{{ grid.appScope.radioOff }}" switch-label-width="{{ grid.appScope.labelWidth }}" switch-handle-width="{{ grid.appScope.handleWidth }}"></div>',width:100,enableFiltering:!1},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/triggers/view/{{row.entity.id}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=g.gridOptions(f,b,a)},a.updateItem=function(a){return f.update({id:a.id},a).$promise.then(function(){e.show(c.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers.list",{url:"/list",templateUrl:"app/tools/trigger/list/list.html",controller:"TriggerListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Trigger",["$resource",function(a){return a("/api/triggers/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers",{url:"/triggers",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:50}}})}]),angular.module("xCallyShuttleApp").controller("TriggerViewCtrl",["$scope","$stateParams","$http","$translate","xAlert","triggers","Trigger","$location",function(a,b,c,d,e,f,g,h){a.$triggers=f,a.recordSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.forms={general:{}},a.addCondition=function(b){a.trigger[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.trigger[b].splice(c,1)},a.addAction=function(){a.trigger.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.trigger.Actions.splice(b,1)},a.initView=function(){return g.get({id:b.id}).$promise.then(function(b){a.trigger=b}).catch(function(a){e.error(a),h.path("/tools/triggers/list")})},a.updateTrigger=function(){return g.update({id:b.id},a.trigger).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){console.error(a),e.error(a)})},a.exitValidation=function(b){return!(!b||!a.trigger.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers.view",{url:"/view/:id",templateUrl:"app/tools/trigger/view/view.html",controller:"TriggerViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load({insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]})}]}}).state("main.tools.triggers.view.settings",{url:"/settings",templateUrl:"app/tools/trigger/view/view.settings.html"}).state("main.tools.triggers.view.routes",{url:"/routes",templateUrl:"app/tools/trigger/view/view.routes.html"}).state("main.tools.triggers.view.application",{url:"/application",templateUrl:"app/tools/trigger/view/view.application.html"})}]),angular.module("xCallyShuttleApp").controller("TriggerWizardCtrl",["$scope","$http","$location","xAlert","triggers","WizardHandler","Trigger",function(a,b,c,d,e,f,g){a.$triggers=e,a.statusSwitch={onText:"On",offText:"Off",isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.tempData={voice:{},mail:{},chat:{},fax:{}},a.item={All:[],Any:[],Actions:[]},a.forms={general:void 0,settings:void 0},a.addCondition=function(b){a.item[b].push({field:"",operator:"",value:""})},a.removeCondition=function(b,c){a.item[b].splice(c,1)},a.addAction=function(){a.item.Actions.push({action:"",data1:"",data2:"",data3:"",data4:"",data5:""})},a.resetActionData=function(a){a.data1="",a.data2="",a.data3="",a.data4="",a.data5=""},a.removeAction=function(b){a.item.Actions.splice(b,1)},a.$watch("item.channel",function(b,c){c&&(a.tempData[c].All=_.clone(a.item.All,!0),a.tempData[c].Any=_.clone(a.item.Any,!0),a.tempData[c].Actions=_.clone(a.item.Actions,!0)),a.item.All=a.tempData[b].All?a.tempData[b].All:[],a.item.Any=a.tempData[b].Any?a.tempData[b].Any:[],a.item.Actions=a.tempData[b].Actions?a.tempData[b].Actions:[]},!0),a.item.channel="voice",a.createItem=function(){return g.save(a.item).$promise.then(function(){c.path("/tools/triggers/list")}).catch(function(a){console.error(a),d.error(a)})},a.next=function(){f.wizard().next()},a.previous=function(){f.wizard().previous()},a.exitValidation=function(a){return a},a.exitSettingsValidation=function(b){return!(!b||!a.item.Actions.length)}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.triggers.wizard",{url:"/wizard",templateUrl:"app/tools/trigger/wizard/wizard.html",controller:"TriggerWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("TrunkListCtrl",["$scope","Trunk","gridOptions","xAlert","$translate","socket",function(a,b,c,d,e,f){function g(){f.socket.on("voice:trunks",function(b){var c=_.find(a.gridOptions.data,{name:b.name});c&&(c.status=b.status,c.peerstatus=b.peerstatus)})}a.isActive=!0,a.size="mini",a.animate=!0,a.radioOff=!0,a.handleWidth="auto",a.labelWidth="auto",a.inverse=!0,a.offColor="danger",a.onColor="success",a.initView=function(){var d={exporterCsvFilename:"Trunks.csv",columnDefs:[{name:"name"},{name:"active",cellTemplate:'<div class="centered-uigrid-td"><input data-ng-change="grid.appScope.updateItem(row.entity)", bs-switch ng-model="row.entity.active" type="checkbox" switch-active="{{ grid.appScope.isActive }}" switch-on-text="{{ \'APPLICATION_YES\' | translate }}" switch-off-text="{{ \'APPLICATION_NO\' | translate }}" switch-on-color="{{ grid.appScope.onColor }}" switch-off-color="{{ grid.appScope.offColor }}" switch-animate="{{ grid.appScope.animate }}" switch-size="{{ grid.appScope.size }}" switch-label="{{ grid.appScope.label }}" switch-icon="{{ grid.appScope.icon }}" switch-radio-off="{{ grid.appScope.radioOff }}" switch-label-width="{{ grid.appScope.labelWidth }}" switch-handle-width="{{ grid.appScope.handleWidth }}"></div>'},{name:"host"},{name:"description"},{name:"status",cellTemplate:'<div class="centered-uigrid-td" data-ng-if="row.entity.active && row.entity.registry && row.entity.status">{{row.entity.status}}</div>'},{name:"peerstatus",cellTemplate:'<div class="centered-uigrid-td" data-ng-if="row.entity.active && row.entity.peerstatus">{{row.entity.peerstatus}}</div>'},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/trunks/view/{{row.entity.name}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.name)"}]}]};a.gridOptions=c.gridOptions(b,d,a,null,null,null,g)},a.updateItem=function(a){return b.update({id:a.name},a).$promise.then(function(){d.show(e.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){console.error(a),d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks.list",{url:"/list",templateUrl:"app/tools/trunk/list/list.html",controller:"TrunkListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Trunk",["$resource",function(a){return a("/api/trunks/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks",{url:"/trunks",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:52}}})}]),angular.module("xCallyShuttleApp").controller("TrunkViewCtrl",["$scope","$http","xAlert","$translate","$stateParams","socket","$location","Trunk","VoiceContext",function(a,b,c,d,e,f,g,h,i){a.activeSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.initView=function(){return h.get({id:e.id}).$promise.then(function(b){b.nat=b.nat?b.nat.split(","):[],b.allow=b.allow?b.allow.split(";"):[],b.insecure=b.insecure?b.insecure.split(","):[],b.transport=b.transport?b.transport.split(","):[],a.trunk=b}).then(function(){f.socket.on("voice:trunk",function(b){a.trunk.name===b.username&&(a.trunk.status=b.status,a.trunk.peerstatus=b.peerstatus)})}).catch(function(a){console.error(a),g.path("/tools/trunks/list")})},a.updateTrunk=function(){""===a.trunk.password&&delete a.trunk.password;var b=angular.copy(a.trunk);return b.nat=b.nat.join(","),b.allow=b.allow.join(";"),b.insecure=b.insecure.join(","),b.transport=b.transport.join(","),h.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")}).catch(function(a){c.error(a)})},a.getContexts=function(){return i.get().$promise.then(function(b){a.voiceContexts=b.rows}).catch(function(a){c.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks.view",{url:"/view/:id",templateUrl:"app/tools/trunk/view/view.html",controller:"TrunkViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.trunks.view.settings",{url:"/settings",templateUrl:"app/tools/trunk/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("TrunkWizardCtrl",["$scope","WizardHandler","$location","xAlert","Trunk",function(a,b,c,d,e){a.initWizard=function(){a.forms={},a.item={context:"from-voip-provider"}},a.next=function(){b.wizard().next()},a.previous=function(){b.wizard().previous()},a.exitValidation=function(a){return a},a.createItem=function(){return a.item.fromuser=a.item.defaultuser,a.item.fromdomain=a.item.host,e.save(a.item).$promise.then(function(){c.path("/tools/trunks/list")}).catch(function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.trunks.wizard",{url:"/wizard",templateUrl:"app/tools/trunk/wizard/wizard.html",controller:"TrunkWizardCtrl"})}]),angular.module("xCallyShuttleApp").controller("VariableListCtrl",["$scope","$uibModal","Variable","gridOptions",function(a,b,c,d){a.initView=function(){var b={exporterCsvFilename:"variables.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:75,buttons:[{class:"blue-hoki",href:"/tools/variables/view/{{row.entity.id}}/settings",name:"settings"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(c,b,a)},a.createItem=function(){b.open({animation:!0,templateUrl:"app/tools/variable/list/list.create.modal.html",controller:"VariableListCreateCtrl"}).result.then(function(b){console.log(b),a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("VariableListCreateCtrl",["$scope","$translate","$uibModalInstance","Variable","xAlert",function(a,b,c,d,e){a.form={},a.item={},a.save=function(){return d.save(a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.variables.list",{url:"/list",templateUrl:"app/tools/variable/list/list.html",controller:"VariableListCtrl"})}]),angular.module("xCallyShuttleApp").factory("Variable",["$resource",function(a){return a("/api/variables/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.variables",{url:"/variables",template:"<div ui-view></div>",abstract:!0,data:{permissions:{only:["admin","user"],redirectTo:"landing",id:54}}})}]),angular.module("xCallyShuttleApp").controller("VariableViewCtrl",["$scope","$translate","$stateParams","xAlert","Variable",function(a,b,c,d,e){a.getVariable=function(){return e.get({id:c.id}).$promise.then(function(b){a.variable=b}).catch(function(a){d.error(a)})},a.updateVariable=function(){return e.update({id:c.id},a.variable).$promise.then(function(){d.show(b.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.variables.view",{url:"/view/:id",templateUrl:"app/tools/variable/view/view.html",controller:"VariableViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.tools.variables.view.settings",{url:"/settings",templateUrl:"app/tools/variable/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").controller("YourdashboardListCloneModalCtrl",["$scope","$uibModalInstance","name",function(a,b,c){a.forms={dashboard:{}},a.item={name:c},a.ok=function(){b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("YourdashboardListCreateModalCtrl",["$scope","$uibModalInstance",function(a,b){a.forms={dashboard:void 0},a.item={},a.ok=function(){a.item.model=JSON.stringify({title:a.item.name}),b.close(a.item)},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("YourdashboardListCtrl",["$scope","$http","$translate","xAlert","Modal","$uibModal","$log","YourDashboard","gridOptions",function(a,b,c,d,e,f,g,h,i){a.initView=function(){var b={exporterCsvFilename:"voice_contexts.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{class:"green",href:"/tools/yourdashboards/show/{{row.entity.id}}",name:"view"},{class:"blue-hoki",href:"/tools/yourdashboards/view/{{row.entity.id}}/settings",name:"settings"},{class:"{{row.entity.defaultEntry ? 'red-sunglo disabled' : 'red-sunglo'}}",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"},{class:"purple",name:"clone",onClick:"grid.appScope.clone(row.entity.id,row.entity.name)"}]}]};a.gridOptions=i.gridOptions(h,b,a)},a.create=function(){f.open({animation:!0,templateUrl:"app/tools/yourdashboard/list/create.modal.html",controller:"YourdashboardListCreateModalCtrl"}).result.then(function(b){return h.save(b).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),a.gridOptions.getPage()}).catch(function(a){console.error(a),d.error(a)})},function(){g.info("Modal dismissed at: "+new Date)})},a.clone=function(b,e){f.open({animation:!0,templateUrl:"app/tools/yourdashboard/list/clone.modal.html",controller:"YourdashboardListCloneModalCtrl",resolve:{name:function(){return e+"_copy"}}}).result.then(function(e){return h.save({id:b,controller:"clone"},e).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE"),"success"),a.gridOptions.getPage()}).catch(function(a){console.error(a),d.error(a)})},function(){g.info("Modal dismissed at: "+new Date)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards.list",{url:"/list",templateUrl:"app/tools/yourdashboard/list/list.html",controller:"YourdashboardListCtrl",data:{permissions:{only:["admin","user"],redirectTo:"landing",id:59}}})}]),angular.module("xCallyShuttleApp").controller("LeaveEditedDashboardModalCtrl",["$scope","$uibModalInstance",function(a,b){a.close=function(){b.close()},a.cancel=function(){b.dismiss("cancel")}}]),angular.module("xCallyShuttleApp").controller("YourdashboardShowCtrl",["$scope","$rootScope","localStorageService","xAlert","$translate","Auth","$stateParams","$location","$uibModal","$log","YourDashboard","$interval",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(){return k.get({id:g.id,controller:"values"}).$promise.then(function(){}).catch(function(a){console.error("Error retrieving widgets values",a)})}function n(a){var b,c;if(!a)return 0;for(a=a.toString(),b=c=a.length;b--;){var d=a[b].charCodeAt();56320<=d&&d<=57343&&b--,127<d&&d<=2047?c++:2047<d&&d<=65535&&(c+=2)}return c}a.Auth=f,a.editMode=!1;var o;a.getDashboard=function(){return k.get({id:g.id}).$promise.then(function(b){!b[f.getRole()]&&h.path("/landing");var c={name:"dashboard",structure:"4-8",enableconfirmdelete:!0,maximizable:!0,collapsible:!0};b.model=JSON.parse(b.model||'{"title":"Dashboard"}'),b.editable=!(!f.isAdmin()||!b.editable),a.dashboard=_.merge(c,b),m(),o=l(function(){m()},1e3*parseInt(a.dashboard.timeout||5))}).catch(function(a){h.path("/tools/yourdashboards/list")})},a.$on("$locationChangeStart",function(b,c,d){if(a.editMode){b.preventDefault();i.open({animation:!0,templateUrl:"app/tools/yourdashboard/show/leaveEditedDashboard.modal.html",controller:"LeaveEditedDashboardModalCtrl"}).result.then(function(b){a.editMode=!1;var d=location.protocol+"//"+location.host;h.path(c.replace(d,""))},function(){j.info("Modal dismissed at: "+new Date)})}});var p=function(c,f,h){var i=angular.copy(a.dashboard);if(i.name=a.dashboard.model.title,i.model=JSON.stringify(i.model),n(i.model)<=64e3)return k.update({id:g.id},i).$promise.then(function(){d.show(e.instant("MESSAGE_DASHBOARD_SAVED")+"!","success"),a.editMode=!1}).catch(function(b){d.error(b),i.model=JSON.parse(i.model),i.name="dashboard",a.dashboard=i});d.show(e.instant("MESSAGE_DASHBOARD_TOO_BIG")+"!","warning"),b.$broadcast("adfToggleEditMode")};a.$on("adfDashboardChanged",p),a.$on("adfIsEditMode",function(){a.editMode=!0}),a.$on("$destroy",function(){l.cancel(o)})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards.show",{url:"/show/:id",templateUrl:"app/tools/yourdashboard/show/show.html",controller:"YourdashboardShowCtrl",data:{permissions:{only:["admin","user","agent"],redirectTo:"landing",id:2}}})}]),angular.module("xCallyShuttleApp").controller("YourdashboardViewCtrl",["$scope","$rootScope","xAlert","$translate","$stateParams","$location","YourDashboard",function(a,b,c,d,e,f,g){a.radioSwitch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},a.getDashboard=function(){return g.get({id:e.id}).$promise.then(function(b){delete b.model,a.dashboard=b}).catch(function(){f.path("/tools/yourdashboards/list")})},a.updateDashboard=function(){var b=angular.copy(a.dashboard);return g.update({id:e.id},b).$promise.then(function(){c.show(d.instant("MESSAGE_WELL_DONE")+"!","success")}).catch(function(d){c.error(d),a.dashboard=b})}}]),
+angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards.view",{url:"/view/:id",templateUrl:"app/tools/yourdashboard/view/view.html",controller:"YourdashboardViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/plugins/bootstrap-fileinput/bootstrap-fileinput.css","assets/css/profile.css","assets/css/tasks.css"]}])}]},data:{permissions:{only:["admin","user"],redirectTo:"landing",id:59}}}).state("main.tools.yourdashboards.view.settings",{url:"/settings",templateUrl:"app/tools/yourdashboard/view/view.settings.html"})}]),angular.module("xCallyShuttleApp").factory("YourDashboard",["$resource",function(a){return a("/api/dashboards/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.tools.yourdashboards",{url:"/yourdashboards",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("ZendeskListCtrl",["$scope","ZendeskAccount","gridOptions","xAlert","$translate",function(a,b,c,d,e){a.initView=function(){var d={exporterCsvFilename:"zendesk_account.csv",columnDefs:[{name:"name",displayName:"APPLICATION_NAME"},{name:"username"},{name:"remoteUri",displayName:"APPLICATION_URI"},{name:"action",buttons:[{class:"blue-hoki",href:"/zendesk/view/{{row.entity.id}}/account",name:"profile"},{class:"green-jungle",name:"check",onClick:"grid.appScope.checkAccount(row.entity.id)"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=c.gridOptions(b,d,a)},a.checkAccount=function(a){return b.check({id:a}).$promise.then(function(){d.show(e.instant("MESSAGE_ACCOUNT_VERIFIED"),"success")}).catch(function(){d.show(e.instant("MESSAGE_ACCOUNT_INVALID"),"danger")})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.list",{url:"/list",templateUrl:"app/zendesk/list/list.html",controller:"ZendeskListCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{name:"smart-table",insertBefore:"#ng_load_plugins_before",files:["assets/css/smart_table.css"]}])}]}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view.configurations",{url:"/configurations",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").controller("ZendeskViewConfigurationListCtrl",["$scope","$stateParams","$translate","gridOptions","ZendeskConfiguration","$uibModal",function(a,b,c,d,e,f){a.initView=function(){var c={exporterCsvFilename:"zendesk_configurations.csv",columnDefs:[{name:"name"},{name:"description"},{name:"action",width:125,buttons:[{class:"blue-hoki",href:"/zendesk/view/{{row.entity.AccountId}}/configurations/view/{{row.entity.id}}",name:"profile"},{class:"red-sunglo",name:"delete",onClick:"grid.appScope.deleteItem(row.entity.name, row.entity.id)"}]}]};a.gridOptions=d.gridOptions(e,c,a,{accountId:b.id})},a.createItem=function(){f.open({animation:!0,templateUrl:"app/zendesk/view/configuration/list/create.modal.html",controller:"ZendeskCreateConfigurationCtrl"}).result.then(function(){a.gridOptions.getPage()})}}]),angular.module("xCallyShuttleApp").controller("ZendeskCreateConfigurationCtrl",["$scope","$translate","$uibModalInstance","ZendeskConfiguration","xAlert","$stateParams","channel",function(a,b,c,d,e,f,g){a.form={},a.item={},a.channels=g,a.item.channel="voice",a.item.type="Queue",a.save=function(){return d.save({accountId:f.id},a.item).$promise.then(function(a){e.show(b.instant("MESSAGE_WELL_DONE"),"success"),c.close(a)}).catch(function(a){e.error(a)})},a.cancel=function(){c.dismiss()}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view.configurations.list",{url:"/list",templateUrl:"app/zendesk/view/configuration/list/list.html",controller:"ZendeskViewConfigurationListCtrl"})}]),angular.module("xCallyShuttleApp").controller("ZendeskViewConfigurationViewCtrl",["$scope","$stateParams","$filter","$translate","socket","ZendeskConfiguration","xAlert","variable","Variable","ZendeskAccount","Tag","ZendeskField",function(a,b,c,d,e,f,g,h,i,j,k,l){a.$on("$destroy",function(){e.unsyncUpdates("zendesk_field")}),a.config={autoHideScrollbar:!1,theme:"dark",advanced:{updateOnContentResize:!0},setHeight:300,scrollInertia:0},a.fieldType=[{type:"string",title:"String"},{type:"variable",title:"Variable"},{type:"customVariable",title:"Custom Variable"}],a.descFieldType=[{type:"string",title:"String"},{type:"keyValue",title:"Key Value"}],a.groupVariableByGroup=function(a){switch(a.group){case"voice_queue":return"Voice: Queue";case"voice_outbound":return"Voice: Outbound";default:return"Other"}},a.initView=function(){a.configurationName="",a.subjectConfig=[],a.descriptionConfig=[],a.fieldConfig=[],a.selectedTags={tags:[]},a.variables=h},a.getConfiguration=function(){return f.get({accountId:b.id,id:b.configurationId}).$promise.then(function(b){a.configurationName=b.name,a.subjectConfig=b.Subject,a.descriptionConfig=b.Description,a.fieldConfig=b.Field,a.selectedTags={tags:_.map(b.Tags,function(a){return a.id})},e.socket.on("zendesk_field:remove",function(b){_.remove(a.subjectConfig,{id:b.id}),_.remove(a.descriptionConfig,{id:b.id}),_.remove(a.fieldConfig,{id:b.id})})}).catch(function(a){g.error(a)})},a.getCustomVariables=function(){return i.get().$promise.then(function(b){a.customVariables=b.rows}).catch(function(a){g.error(a)})},a.getFields=function(){return j.fields({id:b.id}).$promise.then(function(b){a.accountFields=c("zendesk")(b)}).catch(function(a){g.error(a)})},a.getTags=function(){return k.get().$promise.then(function(b){a.tags=b.rows}).catch(function(a){g.error(a)})},a.addItem=function(c){var d={};switch(c){case"subject":case"description":d={type:"string",content:""};break;case"field":d={content:""}}return f.save({accountId:b.id,id:b.configurationId,controller:c},d).$promise.then(function(b){switch(c){case"subject":a.subjectConfig.push(b);break;case"description":a.descriptionConfig.push(b);break;case"field":a.fieldConfig.push(b)}}).catch(function(a){g.error(a)})},a.changeType=function(b){"variable"===b.type?(b.content="",b.variableName=""):"string"===b.type?(b.VariableId=null,b.variableName=""):"customVariable"===b.type&&(b.VariableId=null,b.content=""),a.updateField(b)},a.updateField=function(a){return l.update({accountId:b.id,configurationId:b.configurationId,id:a.id},a).$promise.then(function(){}).catch(function(a){g.error(a)})},a.removeItem=function(a){return l.delete({accountId:b.id,configurationId:b.configurationId,id:a.id}).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+"!","success")}).catch(function(a){g.error(a)})},a.changeDescType=function(b){"keyValue"===b.type?(b.content="","string"===b.keyType?(b.VariableId=null,b.variableName=""):"variable"===b.keyType?(b.keyContent="",b.VariableId=null):"customVariable"===b.keyType&&(b.keyContent="",b.variableName="")):"string"===b.type&&(b.VariableId=null,b.variableName="",b.key="",b.keyContent=""),a.updateField(b)},a.changeFieldType=function(b){if(b.content="",b.variableName="",b.nameField="",b.VariableId=null,b.idField){var c=_.find(a.accountFields,"id",b.idField);c&&(c.system_field_options?(b.customField=!1,b.nameField=c.title.toLowerCase()):b.customField=!0)}a.updateField(b)},a.updateTags=function(){return f.update({accountId:b.id,id:b.configurationId,controller:"tags"},a.selectedTags.tags).$promise.then(function(){g.show(d.instant("MESSAGE_WELL_DONE")+".","success")}).catch(function(a){g.error(a)})},a.getSystemFieldOptions=function(b){if(b){var c=_.find(a.accountFields,"id",b);return c?c.system_field_options?c.system_field_options:null:void 0}}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view.configurations.view",{url:"/view/:configurationId",templateUrl:"app/zendesk/view/configuration/view/view.html",controller:"ZendeskViewConfigurationViewCtrl"})}]),angular.module("xCallyShuttleApp").controller("ZendeskViewCtrl",["$scope","$stateParams","$translate","xAlert","Modal","ZendeskAccount",function(a,b,c,d,e,f){a.initView=function(){return f.get({id:b.id}).$promise.then(function(b){a.account=b}).catch(function(a){d.error(a)})},a.updateItem=function(){return f.update({id:b.id},a.account).$promise.then(function(){d.show(c.instant("MESSAGE_WELL_DONE")+".","success")}).catch(function(a){d.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.view",{url:"/view/:id",templateUrl:"app/zendesk/view/view.html",controller:"ZendeskViewCtrl",resolve:{deps:["$ocLazyLoad",function(a){return a.load([{insertBefore:"#ng_load_plugins_before",files:["assets/css/profile.css","assets/css/tasks.css"]}])}]}}).state("main.zendesk.view.account",{url:"/account",templateUrl:"app/zendesk/view/view.account.html"})}]),angular.module("xCallyShuttleApp").controller("ZendeskWizardCtrl",["$scope","$http","$location","$translate","xAlert","WizardHandler","ZendeskAccount",function(a,b,c,d,e,f,g){a.translate=d,a.initWizard=function(){a.$translate=d,a.forms={},a.item={},a.item.authType="password",a.item.serverUrl=c.protocol()+"://"+location.host},a.next=function(){f.wizard().next()},a.exitValidation=function(a){return a},a.createItem=function(){return g.save(a.item).$promise.then(function(){e.show(d.instant("MESSAGE_WELL_DONE")+".","success"),c.path("/zendesk/list")}).catch(function(a){e.error(a)})}}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk.wizard",{url:"/wizard",templateUrl:"app/zendesk/wizard/wizard.html",controller:"ZendeskWizardCtrl"})}]),angular.module("xCallyShuttleApp").factory("ZendeskAccount",["$resource",function(a){return a("/api/zendesk/accounts/:id/:controller",{id:"@id"},{update:{method:"PUT"},fields:{params:{controller:"fields"},isArray:!0},check:{params:{controller:"check"}}})}]).factory("ZendeskConfiguration",["$resource",function(a){return a("/api/zendesk/accounts/:accountId/configurations/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]).factory("ZendeskField",["$resource",function(a){return a("/api/zendesk/accounts/:accountId/configurations/:configurationId/fields/:id/:controller",{id:"@id"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").config(["$stateProvider",function(a){a.state("main.zendesk",{url:"/zendesk",template:"<div ui-view></div>",abstract:!0})}]),angular.module("xCallyShuttleApp").factory("AuthResource",["$resource",function(a){return a("/auth/local/:controller/:controller2/:param",{param:"@param"},{update:{method:"PUT"}})}]),angular.module("xCallyShuttleApp").factory("Auth",["$location","$rootScope","$http","User","$cookieStore","$q","localStorageService",function(a,b,c,d,e,f,g){var h={};return e.get("token")&&(h=d.me()),{login:function(a,i){var j=i||angular.noop,k=f.defer();return c.post("/auth/local",{name:a.name,password:a.password,remember:a.remember}).success(function(a){return e.put("role",a.role),e.put("token",a.token),e.put("userId",a.userId),g.set("loggedIn",!0),h=d.me({},function(){b.$broadcast("login")}),k.resolve(a),j()}).error(function(a){return this.logout(),k.reject(a),j(a)}.bind(this)),k.promise},recover:function(a,b){var d=b||angular.noop,e=f.defer();return c.post("/auth/local/recover",{email:a.email}).success(function(a){return e.resolve(a),d()}).error(function(a){return e.reject(a),d(a)}.bind(this)),e.promise},reset:function(a,b){var d=b||angular.noop,e=f.defer();return c.post("/auth/local/reset/"+a.token,{password:a.password}).success(function(a){return e.resolve(a),d()}).error(function(a){return e.reject(a),d(a)}.bind(this)),e.promise},loginWithToken:function(a,c,f){e.put("role",f),e.put("token",a),e.put("userId",c),h=d.me({},function(){b.$broadcast("login")})},logout:function(){e.remove("role"),e.remove("token"),e.remove("userId"),g.set("loggedIn"),h={},b.$broadcast("logout")},createUser:function(a,b){var c=b||angular.noop;return d.save(a,function(b){return e.put("token",b.token),h=d.me(),c(a)},function(a){return this.logout(),c(a)}.bind(this)).$promise},changePassword:function(a,b,c){var e=c||angular.noop;return d.changePassword({id:h.id},{oldPassword:a,newPassword:b},function(a){return e(null,a)},function(a){return e(a)}).$promise},getCurrentUser:function(){return h},isLoggedIn:function(){return h.hasOwnProperty("role")},isLoggedInAsync:function(a){h.hasOwnProperty("$promise")?h.$promise.then(function(){a(!0)}).catch(function(){a(!1)}):a(h.hasOwnProperty("role")?!0:!1)},isAdmin:function(){return"admin"===(e.get("role")||h.role)},isUser:function(){return"user"===(e.get("role")||h.role)},isAgent:function(){return"agent"===(e.get("role")||h.role)},getRole:function(){return h.role},getToken:function(){return e.get("token")}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderAccountEmail",["$compile","$timeout","MailAccount","xAlert","Template",function(a,b,c,d,e){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/accountEmail/actionBuilder.html",compile:function(f){function g(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var h,i;return h=f.contents().remove(),function(f,j){f.randomName=g(),b(function(){return c.get().$promise.then(function(a){return _.forEach(a.rows,function(a){a.id=String(a.id)}),f.accounts=a,e.get().$promise}).then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),f.templates=a.rows}).catch(function(a){d.error(a)})}),i||(i=a(h)),j.append(i(f,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderAccountSms",["$compile","$timeout","SmsAccount","xAlert",function(a,b,c,d){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/accountSms/actionBuilder.html",compile:function(e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=e.contents().remove(),function(e,i){e.randomName=f(),b(function(){return c.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),e.accounts=a}).catch(function(a){d.error(a)})}),h||(h=a(g)),i.append(h(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderAccountTemplate",["$compile","xAlert","$http","$timeout","Template","MailAccount",function(a,b,c,d,e,f){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/accountTemplate/actionBuilder.html",compile:function(c){function g(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var h,i;return h=c.contents().remove(),function(c,j){c.randomName=g(),d(function(){return e.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.templates=a}).then(function(){return f.get().$promise}).then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.accounts=a}).catch(function(a){b.error(a)})}),i||(i=a(h)),j.append(i(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderClose",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/close/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderCm",["$compile","xAlert","$http","$timeout","$translate","List",function(a,b,c,d,e,f){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/cm/actionBuilder.html",compile:function(c){var e,g;return e=c.contents().remove(),function(c,h){function i(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.randomName=i(),c.switch={isActive:!0,size:"small",animate:!0,radioOff:!0,handleWidth:"auto",labelWidth:"auto",inverse:!0,offColor:"danger",onColor:"success"},d(function(){return f.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.lists=a.rows}).catch(function(a){b.error(a)})}),g||(g=a(e)),h.append(g(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderEmail",["$compile","xAlert","$timeout","Template",function(a,b,c,d){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/email/actionBuilder.html",compile:function(e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=e.contents().remove(),function(e,i){e.randomName=f(),c(function(){return d.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),e.templates=a.rows}).catch(function(a){b.error(a)})}),h||(h=a(g)),i.append(h(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderForward",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/forward/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderHttp",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/http/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),b.methods=["GET","POST"],e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderIntegration",["$compile","xAlert","$http","$timeout","Integration","$translate","ZendeskAccount","DeskAccount","SalesforceAccount","FreshdeskAccount","SugarcrmAccount",function(a,b,c,d,e,f,g,h,i,j,k){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/integration/actionBuilder.html",compile:function(c){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var l,m;return l=c.contents().remove(),function(c,n){c.randomName=f(),d(function(){return e.get({active:1}).$promise.then(function(a){_.remove(a.rows,function(a){return"iframe"===a.state}),c.integrations=a.rows,c.element.data1&&o()}).catch(function(a){b.error(a)})});var o=function(){var a;switch(c.element.data1){case"zendesk":a=g;break;case"desk":a=h;break;case"salesforce":a=i;break;case"freshdesk":a=j;break;case"sugarcrm":a=k}if(a)return a.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.accounts=a.rows,c.element.data2&&p()}).catch(function(a){b.error(a)})},p=function(){var a=_.find(c.accounts,{id:c.element.data2}).Configurations;_.forEach(a,function(a){a.id=String(a.id)}),c.configurations=a};c.changeIntegration=function(){c.element.data2="",o()},c.changeAccount=function(){c.element.data3="",p()},m||(m=a(l)),n.append(m(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderJscripty",["$compile","xAlert","$http","$timeout","Template","$translate","JscriptyProject",function(a,b,c,d,e,f,g){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/jscripty/actionBuilder.html",compile:function(c){var e,f;return e=c.contents().remove(),function(c,h){function i(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.randomName=i(),d(function(){return g.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.projects=a.rows}).catch(function(a){b.error(a)})}),f||(f=a(e)),h.append(f(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderMotionBar",["$compile","xAlert","$http","$timeout","Template",function(a,b,c,d,e){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/motionbar/actionBuilder.html",compile:function(c){var f,g;return f=c.contents().remove(),function(c,h){function i(){return e.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.templates=a.rows}).catch(function(a){b.error(a)})}function j(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.randomName=j(),c.motionActions=[{name:"Popup",value:"0"},{name:"URL",value:"1"},{name:"Windows App",value:"2"}],c.changeMode=function(){c.element.data2="",c.element.data3="",i()},d(function(){return i()}),g||(g=a(f)),h.append(g(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderStatus",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/status/actionBuilder.html",compile:function(b){var c,d;return c=b.contents().remove(),function(b,e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}b.randomName=f(),b.states=[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_PENDING",value:"PENDING"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"}],d||(d=a(c)),e.append(d(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderTag",["$compile","xAlert","$http","$timeout","Tag",function(a,b,c,d,e){return{restrict:"E",scope:{myElement:"=element",form:"="},templateUrl:"components/directives/action/tag/actionBuilder.html",compile:function(c){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=c.contents().remove(),function(c,i){console.log("myElement",c.myElement),c.randomName=f(),c.data={tags:c.myElement.data1?c.myElement.data1.split(";"):[]},c.$watch("data.tags",function(a){c.myElement.data1=a.join(";")}),d(function(){return e.get().$promise.then(function(a){c.tags=a.rows}).catch(function(a){b.error(a)})}),h||(h=a(g)),i.append(h(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderTemplate",["$compile","xAlert","$timeout","Template",function(a,b,c,d){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/template/actionBuilder.html",compile:function(e){function f(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var g,h;return g=e.contents().remove(),function(e,i){e.randomName=f(),c(function(){return d.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),e.templates=a.rows}).catch(function(a){b.error(a)})}),h||(h=a(g)),i.append(h(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderUrlForward",["$compile",function(a){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/urlforward/actionBuilder.html",compile:function(b){function c(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}var d,e;return d=b.contents().remove(),function(b,f){b.randomName=c(),b.types=[{name:"HTTP GET",value:"GET"},{name:"HTTP POST",value:"POST"}],e||(e=a(d)),f.append(e(b,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("actionBuilderWebPopup",["$compile","xAlert","$http","$timeout","Template",function(a,b,c,d,e){return{restrict:"E",scope:{element:"=",form:"="},templateUrl:"components/directives/action/webPopup/actionBuilder.html",compile:function(c){var f,g;return f=c.contents().remove(),function(c,h){function i(){return e.get().$promise.then(function(a){_.forEach(a.rows,function(a){a.id=String(a.id)}),c.templates=a.rows}).catch(function(a){b.error(a)})}function j(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}c.typeChange=function(){c.element.data1=null},c.randomName=j(),d(function(){i(),c.element.data2=c.element.data2||"motion"}),g||(g=a(f)),h.append(g(c,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").directive("conditionBuilder",["$compile","$timeout","$translate","xAlert",function(a,b,c,d){return{restrict:"E",scope:{element:"=",serviceindex:"=",service:"=",form:"="},templateUrl:"components/directives/condition/conditionBuilder.html",compile:function(e){var f,g;return f=e.contents().remove(),function(e,h){function i(a){var b=_.find(e.service.services[e.serviceindex].conditions,{value:a});if(b)if(e.elementType=b.type,e.translateName=b.translate,b.arr)e.values=b.arr;else if(b.resource)return b.resource.get(b.params||{}).$promise.then(function(a){e.values=_.map(a.rows,function(a){return{name:a[b.resName||b.resValue],value:String(a[b.resValue])}})}).catch(function(a){d.show(c.instant(a.message),"danger")})}function j(a,b){var c=[];for(a=a||5,b=b||"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";--a;)c.push(b.charAt(Math.floor(Math.random()*b.length)));return c.join("")}e._=_,e.randomName=j(),b(function(){e.element.field&&i(e.element.field)}),e.checkCondition=function(a){e.element.value="",e.element.operator="",i(a)},g||(g=a(f)),h.append(g(e,function(a){return a}))}}}}]),angular.module("xCallyShuttleApp").factory("xNotificationLicense",["Notification","$rootScope","$location",function(a,b,c){return{show:function(d){var e=b.$new();return e.class="alert-warning",e.icon="fa fa-exclamation-triangle",e.more=function(){c.path("/setting/license/view")},new a({delay:d,templateUrl:"components/factories/xNotificationLicense/xNotificationLicense.html",scope:e})}}}]),angular.module("xCallyShuttleApp").filter("secToTime",[function(){return function(a){return new Date(1970,0,1).setSeconds(a)}}]),angular.module("xCallyShuttleApp").controller("FooterController",["$scope","Setting",function(a,b){a.year=moment().year(),a.$on("$includeContentLoaded",function(){Layout.initFooter()}),a.initFooter=function(){return b.get({controller:"info"}).$promise.then(function(b){a.info=b}).catch(function(a){console.error(a)})}}]),angular.module("xCallyShuttleApp").controller("HeaderController",["$scope","$rootScope","$location","$state","$http","$interval","$notification","Auth","xAlert","socket","xNotificationLicense","toastr","localStorageService","Agent","SmsReport","MailReport","OpenChannelReport","ChatReport","ChatRoom","xNotification","$timeout","$translate","$window","User","Pause","Action","FaxReport","List","MailAccount","ChatWebsite","FaxAccount","SmsAccount","OpenChannelAccount","ReportAgent","$uibModal","$log","ReportDial",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K){function L(a,b,c){return null===b&&(b=50),null===c&&(c="..."),a&&a.length>b?a.substring(0,b-c.length)+c:a}function M(b){var c,d="reason";switch(b){case"mail":c=p;break;case"chat":c=r;break;case"fax":c=A;break;case"sms":c=o;break;case"agent":c=H,d="lastevent";break;case"dial":c=K,d="dialstatus";break;case"openchannel":c=q;break;default:return}return c.get({limit:10,order:"updatedAt DESC"}).$promise.then(function(c){_.forEach(c.rows,function(a){if(a[d])switch(a[d].toLowerCase()){case"answer":case"connect":case"complete":a.status="taken";break;case"answered_elsewhere":a.status="taken_elsewhere";break;case"called":a.status="lost";break;case"busy":a.status="busy";break;case"rejected":a.status="rejected";break;case"cancel":case"abandoned":a.status="abandoned"}}),a.agentNotifications[b].rows=c.rows,j.socket.on("report_"+b+":save",function(c){c.status="none",a.agentNotifications[b].rows.unshift(c),"agent"!==b&&"dial"!==b&&(a.agentNotifications[b].timeout[c.id]=setTimeout(function(){clearTimeout(a.agentNotifications[b].timeout[c.id]),_.find(a.agentNotifications[b].rows,{id:c.id}).status="lost",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications[b].new++,delete a.agentNotifications[b].timeout[c.id]},1e3*c.timeslot))}),j.socket.on("report_"+b+":update",function(c){if("agent"===b){_.find(a.activeCalls,{id:c.id})&&(c.agentcomplete||c.agentringnoanswer||c.agentdump)?_.remove(a.activeCalls,{id:c.id}):!c.agentconnectAt||c.agentcomplete||c.agentringnoanswer||c.agentdump||a.activeCalls.push(c)}var e=_.find(a.agentNotifications[b].rows,{id:c.id});if(e&&("agent"!==b&&"dial"!==b&&a.agentNotifications[b].timeout[c.id]&&(clearTimeout(a.agentNotifications[b].timeout[c.id]),delete a.agentNotifications[b].timeout[c.id]),c[d])){switch(c[d].toLowerCase()){case"answer":case"connect":case"complete":c.status="taken";break;case"answered_elsewhere":c.status="taken_elsewhere",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications.chat.new++;break;case"busy":c.status="busy",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications[b].new++;break;case"rejected":c.status="rejected";break;case"cancel":case"abandoned":c.status="abandoned",angular.element(document.getElementById("header_"+b+"_notification_bar")).hasClass("open")||a.agentNotifications[b].new++}_.merge(e,c)}})}).catch(function(a){i.error(a)})}function N(){return a.headerAgent=h.getCurrentUser(),a.readyTimer=1e3*moment().unix(),y.get().$promise.then(function(b){a.headerPauses=b.rows,j.syncUpdates("pause",a.headerPauses)}).then(function(){j.socket.on("agent:save",function(b){b=b.newValues||b,a.headerAgent.id===b.id&&(_.merge(a.headerAgent,b),b.voicePause&&b.mailPause&&b.chatPause&&b.faxPause&&b.smsPause&&b.openchannelPause||(a.readyTimer=1e3*moment().unix()))})}).finally(function(){h.getCurrentUser().loginInPause&&!m.get("loggedIn")&&a.headerPause("pause")}).catch(function(a){console.log("Error synchronizing agent status:",a)})}function O(){return H.get({id:"active",controller:"calls"}).$promise.then(function(b){a.activeCalls=b.rows}).catch(function(a){i.error(a)})}a.moment=moment,$(document).on("click",".tabbed-dropdown",function(a){a.stopPropagation()}),a.license.hasOwnProperty("expirationTime")&&(h.isAdmin()||h.isUser())&&!a.license.demo&&f(function(){"main.setting.license.view"!==d.current.name&&k.show(3e4)},3e4),a.openRoom=function(b,c){var d=_.find(a.workspaces,{id:b,type:c});if(d)d.active=!0;else{var e;switch(c){case"mailRoom":e="icon-envelope";break;case"chatRoom":e="fa fa-users";break;case"faxRoom":e="fa fa-fax";break;case"smsRoom":e="glyphicon glyphicon-comment";break;case"openchannelRoom":e="icon-globe"}a.workspaces.push({id:b,type:c,class:e,active:!0})}},a.toggleSidebar=function(){
+b.settings.layout.pageSidebarClosed=!b.settings.layout.pageSidebarClosed,m.set("sidebarClosed",b.settings.layout.pageSidebarClosed)},a.chooseContact=function(b){I.open({animation:!0,templateUrl:"app/main/chooseContact.modal.html",controller:"ChooseContactModalCtrl",resolve:{data:function(){return{eventChannel:"voice",calleridnum:b}}}}).result.then(function(c){c?a.openContactTab(c):a.newContact({calleridnum:b})},function(){J.info("Modal dismissed at: "+new Date)})},a.loadNotifications=function(b){if(!a.busyLoad[b].end){a.busyLoad[b].busy=!0;var c,d="reason";switch(b){case"mail":c=p;break;case"chat":c=r;break;case"fax":c=A;break;case"sms":c=o;break;case"agent":c=H,d="lastevent";break;case"dial":c=K,d="dialstatus";break;case"openchannel":c=q;break;default:return}return c.get({limit:10,offset:a.agentNotifications[b].rows.length,order:"updatedAt DESC"}).$promise.then(function(c){c.rows.length?(_.forEach(c.rows,function(a){if(a[d])switch(a[d].toLowerCase()){case"answer":case"connect":case"complete":a.status="taken";break;case"answered_elsewhere":a.status="taken_elsewhere";break;case"called":a.status="lost";break;case"busy":a.status="busy";break;case"rejected":a.status="rejected";break;case"abandoned":a.status="abandoned"}}),a.agentNotifications[b].rows=a.agentNotifications[b].rows.concat(c.rows)):a.busyLoad[b].end=!0,a.busyLoad[b].busy=!1}).catch(function(a){i.error(a)})}},a.headerPause=function(b,c,d){return z.save({name:b,agent:a.headerAgent.id,type:c||"DEFAULT PAUSE",data4:c||"DEFAULT PAUSE",channel:d||"all"}).$promise.then(function(){i.show(v.instant("MESSAGE_WELL_DONE"),"success")}).catch(function(a){i.error(a)})},h.isAgent()&&(N(),a.agentNotifications={mail:{rows:[],new:0,timeout:{}},chat:{rows:[],new:0,timeout:{}},fax:{rows:[],new:0,timeout:{}},sms:{rows:[],new:0,timeout:{}},agent:{rows:[],new:0},dial:{rows:[],new:0},openchannel:{rows:[],new:0}},a.busyLoad={mail:{busy:!1,end:!1},chat:{busy:!1,end:!1},fax:{busy:!1,end:!1},sms:{busy:!1,end:!1},agent:{busy:!1,end:!1},dial:{busy:!1,end:!1},openchannel:{busy:!1,end:!1}},O(),M("agent"),M("dial"),a.license.mail&&M("mail"),a.license.chat&&M("chat"),a.license.fax&&M("fax"),a.license.messaging&&M("sms"),a.license.openchannel&&M("openchannel")),j.socket.on("user_has_chat_room:save",function(b){var c;return s.get({id:Number(b.ChatRoomId)}).$promise.then(function(b){c=b;var d=_.find(a.workspaces,{id:Number(c.id),type:"chatRoom"});d?d.name=a.getFullnames(c):a.workspaces.push({id:c.id,name:a.getFullnames(c),type:"chatRoom",class:"icon-bubble",unread:1})}).catch(function(a){console.error(a)})}),j.socket.on("chat_message:save",function(b){var c;if(b.UserId!==h.getCurrentUser().id){if(!_.find(a.workspaces,{id:Number(b.ChatRoomId),type:"chatRoom"}))return s.get({id:Number(b.ChatRoomId)}).$promise.then(function(b){c=b,a.workspaces.push({id:c.id,name:a.getFullnames(b),type:"chatRoom",class:"icon-bubble",unread:1})}).catch(function(a){console.error(a)})}});var P=function(){return w.Notification},Q=function(){b.settings.layout.onFocus=!0},R=function(){b.settings.layout.onFocus=!1};w.onfocus=Q,w.onblur=R,a.getFullnames=function(a){var b=_.without(_.map(a.Users,"fullname"),h.getCurrentUser().fullname);return a.ChatVisitor&&b.unshift(a.ChatVisitor.fullname),b.join(", ")},a.openContact=function(b,c,d){if(d&&"<unknown>"!==d){var e,f;switch(b){case"mail":e=C,f={email:d};break;case"chat":e=D,f={email:d};break;case"fax":e=E,f={fax:d};break;case"sms":e=F,f={mobile:d};break;default:return}return e.get({id:c}).$promise.then(function(a){return a.ListId?B.save({listId:a.ListId,controller:"contacts"},f).$promise:null}).then(function(b){if(b){var c=_.find(a.workspaces,{contactID:b.id});c?c.active=!0:a.workspaces.push({active:!0,class:"icon-user",contactID:b.id,name:b.email,type:"contact"})}else i.show(v.instant("MESSAGE_NO_LIST_CONFIGURED"),"info")}).catch(function(a){console.error(a)})}},a.initHeader=function(){if("agent"===h.getCurrentUser().role&&(j.socket.on("report_chat:save",function(a){P&&!b.settings.layout.onFocus&&g("CHAT CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Incoming Chat Visitor!",delay:1e3*a.timeslot});var c="<b>"+v.instant("APPLICATION_FROM")+"</b>: "+a.visitorname+"<br><b>"+v.instant("APPLICATION_EMAIL")+"</b>: "+a.visitoremail;"queue"===a.application&&(c+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+a.queuename),t.show(v.instant("APPLICATION_NEW_CHAT_REQUEST"),c,"chat",1e3*a.timeslot,function(){return r.get({id:a.id,controller1:"accept",controller2:a.uniqueid}).$promise.then(function(){i.show("Chat properly assigned","success")}).catch(function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_CHAT_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return r.get({id:a.id,controller1:"reject"}).$promise.then(function(){i.show("Chat properly rejected","success")}).catch(function(a){i.error(a)})})}),j.socket.on("report_mail:save",function(c){if(!_.find(a.workspaces,{id:c.roomid,type:"mailRoom"})){var d="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+c.accountname+"<br> <b>"+v.instant("APPLICATION_FROM")+"</b>: "+c.from+"<br> <b>"+v.instant("APPLICATION_SUBJECT")+"</b>: "+(L(c.subject,30,"...")||"No subject");"queue"===c.application&&(d+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+c.queuename),t.show(v.instant("APPLICATION_NEW_MAIL_REQUEST"),d,"mail",1e3*c.timeslot,function(){return p.get({id:c.id,controller1:"accept",controller2:c.uniqueid}).$promise.then(function(){var b=_.find(a.workspaces,{id:c.roomid,type:"mailRoom"});b?b.active=!0:a.workspaces.push({id:c.roomid,name:c.subject||"No subject",type:"mailRoom",class:"icon-envelope",active:!0,unread:0})}).catch(function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_MAIL_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return p.get({id:c.id,controller1:"reject"}).$promise.catch(function(a){i.error(a)})}),P&&!b.settings.layout.onFocus?g("MAIL CHANNEL",{icon:"assets/images/media/channels/mail64.png",body:"NEW Incoming Mail Message!",delay:1e3*c.timeslot}):console.log("Notification API not supported in your browser")}}),j.socket.on("report_sms:save",function(b){var c="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+b.accountname+"<br> <b>"+v.instant("APPLICATION_FROM")+"</b>: "+b.from;"queue"===b.application&&(c+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+b.queuename),t.show(v.instant("APPLICATION_NEW_SMS_REQUEST"),c,"sms",1e3*b.timeslot,function(){return o.get({id:b.id,controller1:"accept",controller2:b.uniqueid}).$promise.then(function(){var c=_.find(a.workspaces,{id:b.roomid,type:"smsRoom"});c?c.active=!0:a.workspaces.push({id:b.roomid,name:b.from,type:"smsRoom",class:"glyphicon glyphicon-comment",active:!0})}).catch(function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_SMS_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return o.get({id:b.id,controller1:"reject"}).$promise.then(function(){i.show("SMS properly rejected","success")}).catch(function(a){i.error(a)})}),P?g("SMS CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Incoming SMS Message!",delay:1e3*b.timeslot}):console.log("Notification API not supported in your browser")}),j.socket.on("report_openchannel:save",function(b){var c="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+b.accountname+"<br> <b>"+v.instant("APPLICATION_FROM")+"</b>: "+b.from;"queue"===b.application&&(c+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+b.queuename),t.show(v.instant("APPLICATION_NEW_MESSAGE"),c,"openchannel",1e3*b.timeslot,function(){return q.get({id:b.id,controller1:"accept",controller2:b.uniqueid}).$promise.then(function(){var c=_.find(a.workspaces,{id:b.roomid,type:"openchannelRoom"});c?c.active=!0:a.workspaces.push({id:b.roomid,name:b.from,type:"openchannelRoom",class:"icon-globe",active:!0})}).catch(function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return q.get({id:b.id,controller1:"reject"}).$promise.then(function(){i.show("Message properly rejected","success")}).catch(function(a){i.error(a)})}),P?g("OPEN CHANNEL",{icon:"assets/images/media/channels/chat64.png",body:"NEW Incoming Message!",delay:1e3*b.timeslot}):console.log("Notification API not supported in your browser")}),j.socket.on("report_fax:save",function(c){if(!_.find(a.workspaces,{id:c.roomid,type:"faxRoom"})){var d="<b>"+v.instant("APPLICATION_ACCOUNT")+"</b>: "+c.accountname+"<br>               <b>"+v.instant("APPLICATION_PHONE")+"</b>: "+c.from;"queue"===c.application&&(d+="<br><b>"+v.instant("APPLICATION_QUEUE")+"</b>: "+c.queuename),t.show(v.instant("APPLICATION_NEW_FAX_REQUEST"),d,"fax",1e3*c.timeslot,function(){return A.get({id:c.id,controller1:"accept",controller2:c.uniqueid}).$promise.then(function(){var b=_.find(a.workspaces,{id:c.roomid,type:"faxRoom"});b?b.active=!0:a.workspaces.push({id:c.roomid,name:c.from,type:"faxRoom",class:"fa fa-fax",active:!0,unread:0})}).catch(function(a){switch(a.status){case 504:i.show(v.instant("MESSAGE_FAX_ALREADY_MANAGED"),"info");break;default:i.error(a)}})},function(){return A.get({id:c.id,controller1:"reject"}).$promise.catch(function(a){i.err(a)})}),P&&!b.settings.layout.onFocus?g("FAX CHANNEL",{icon:"assets/images/media/channels/telephone124.png",body:"NEW Incoming Fax Message!",delay:1e3*c.timeslot}):console.log("Notification API not supported in your browser")}}),h.getCurrentUser().loginInPause))return z.save({name:"pause",agent:h.getCurrentUser().id,type:"LOGININPAUSE",data4:"LOGININPAUSE",channel:"all"}).$promise.catch(function(a){i.error(a)})},a.logout=function(){return e.get("/auth/local/logout").success(function(){h.logout(),c.path("/login")}).error(function(a){i.error(a)})},a.isActive=function(a){return a===c.path()},a.$on("$destroy",function(){console.log("header $destroy"),j.unsyncUpdates("pause"),j.unsyncUpdates("agent"),j.unsyncUpdates("report_chat"),j.unsyncUpdates("report_mail"),j.unsyncUpdates("report_fax"),j.unsyncUpdates("report_sms"),j.unsyncUpdates("report_openchannel"),j.unsyncUpdates("user_has_chat_room"),j.unsyncUpdates("chat_message"),j.unsyncUpdates("report_integration:sugarcrm"),j.unsyncUpdates("report_integration:freshdesk")})}]),angular.module("xCallyShuttleApp").factory("Modal",["$rootScope","$uibModal",function(a,b){function c(c,d){var e=a.$new();return c=c||{},d=d||"modal-default",angular.extend(e,c),b.open({templateUrl:"components/modal/delete.html",windowClass:d,scope:e})}return{confirm:{delete:function(a){return a=a||angular.noop,function(){var b,d=Array.prototype.slice.call(arguments),e=d.shift();b=c({modal:{dismissable:!0,title:"Confirm Delete",html:"<p>Are you sure you want to delete"+(e?"<strong> "+e+"</strong>":" selected items")+"?</p>",buttons:[{classes:"btn red",text:"Delete",click:function(a){b.close(a)}},{classes:"btn default",text:"Cancel",click:function(a){b.dismiss(a)}}]}},"over-topbar center"),b.result.then(function(b){a.apply(b,d)})}}}}}]),angular.module("xCallyShuttleApp").service("application",function(){return{application:{applications:[{type:null,name:"APPLICATION_QUEUE",value:"Queue"},{type:null,name:"APPLICATION_PLAYBACK",value:"Playback"},{type:null,name:"Dial",value:"Dial"},{type:"internalDial",name:"APPLICATION_INTERNAL_DIAL",value:"Dial"},{type:"externalDial",name:"APPLICATION_EXTERNAL_DIAL",value:"Dial"},{type:"RingGroup",name:"Ring Group",value:"Dial"},{type:null,name:"Cally-Square Project",value:"AGI"},{type:null,name:"GoTo",value:"Goto"},{type:null,name:"Hangup",value:"Hangup"},{type:null,name:"Set",value:"Set"},{type:null,name:"APPLICATION_VOICEMAIL",value:"Voicemail"},{type:"videoOn",name:"APPLICATION_VIDEO_ON",value:"Set"},{type:"custom",name:"Custom",value:"custom"}],queueOptions:[{value:"C",name:"APPLICATION_QUEUE_OPTION_C"},{value:"c",name:"APPLICATION_QUEUE_OPTION_c"},{value:"d",name:"APPLICATION_QUEUE_OPTION_d"},{value:"F",name:"APPLICATION_QUEUE_OPTION_F"},{value:"h",name:"APPLICATION_QUEUE_OPTION_h"},{value:"H",name:"APPLICATION_QUEUE_OPTION_H"},{value:"n",name:"APPLICATION_QUEUE_OPTION_n"},{value:"i",name:"APPLICATION_QUEUE_OPTION_i"},{value:"I",name:"APPLICATION_QUEUE_OPTION_I"},{value:"r",name:"APPLICATION_QUEUE_OPTION_r"},{value:"R",name:"APPLICATION_QUEUE_OPTION_R"},{value:"t",name:"APPLICATION_QUEUE_OPTION_t"},{value:"T",name:"APPLICATION_QUEUE_OPTION_T"},{value:"w",name:"APPLICATION_QUEUE_OPTION_w"},{value:"W",name:"APPLICATION_QUEUE_OPTION_W"},{value:"k",name:"APPLICATION_QUEUE_OPTION_k"},{value:"K",name:"APPLICATION_QUEUE_OPTION_K"},{value:"x",name:"APPLICATION_QUEUE_OPTION_x"},{value:"X",name:"APPLICATION_QUEUE_OPTION_X"}],audioOptions:[{value:"skip",name:"APPLICATION_PLAYBACK_OPTION_SKIP"},{value:"noanswer",name:"APPLICATION_PLAYBACK_OPTION_NOANSWER"},{value:"j",name:"APPLICATION_PLAYBACK_OPTION_J"},{value:"say",name:"APPLICATION_PLAYBACK_OPTION_SAY"}],hangupCauses:[{value:"",name:"--"},{value:"1",name:"APPLICATION_HANGUP_CAUSE_1"},{value:"16",name:"APPLICATION_HANGUP_CAUSE_16"},{value:"17",name:"APPLICATION_HANGUP_CAUSE_17"},{value:"18",name:"APPLICATION_HANGUP_CAUSE_18"},{value:"21",name:"APPLICATION_HANGUP_CAUSE_21"},{value:"22",name:"APPLICATION_HANGUP_CAUSE_22"},{value:"27",name:"APPLICATION_HANGUP_CAUSE_27"},{value:"38",name:"APPLICATION_HANGUP_CAUSE_38"},{value:"41",name:"APPLICATION_HANGUP_CAUSE_41"}],intTypes:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"custom",name:"APPLICATION_CUSTOM"},{value:"list",name:"APPLICATION_FROM_LIST"}],checkUnderscore:function(a){return 0===a.indexOf("_")?a:"_"+a}}}}),angular.module("xCallyShuttleApp").service("automations",function(){return{services:{mail:{conditions:[{name:"APPLICATION_STATUS",value:"status",type:"select",arr:[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"},{name:"APPLICATION_STATUS_PENDING",value:"PENDING"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_HOURS_SINCE_CREATED",value:"createdAt",type:"input",operators:[{value:"greater_or_equal",name:"APPLICATION_GTE_TO"},{value:"less_or_equal",name:"APPLICATION_LTE_TO"},{value:"greater",name:"APPLICATION_GREATER_THAN"},{value:"less",name:"APPLICATION_LESS_THAN"}]}],actions:[{name:"APPLICATION_STATUS",value:"status"}]},chat:{conditions:[{name:"APPLICATION_STATUS",value:"status",type:"select",arr:[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"},{name:"APPLICATION_STATUS_PENDING",value:"PENDING"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_HOURS_SINCE_CREATED",value:"createdAt",type:"input",operators:[{value:"greater_or_equal",name:"APPLICATION_GTE_TO"},{value:"less_or_equal",name:"APPLICATION_LTE_TO"},{value:"greater",name:"APPLICATION_GREATER_THAN"},{value:"less",name:"APPLICATION_LESS_THAN"}]}],actions:[{name:"APPLICATION_STATUS",value:"status"}]},fax:{conditions:[{name:"APPLICATION_STATUS",value:"status",type:"select",arr:[{name:"APPLICATION_STATUS_NEW",value:"NEW"},{name:"APPLICATION_STATUS_OPEN",value:"OPEN"},{name:"APPLICATION_STATUS_CLOSED",value:"CLOSED"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_HOURS_SINCE_CREATED",value:"createdAt",type:"input",operators:[{value:"greater_or_equal",name:"APPLICATION_GTE_TO"},{value:"less_or_equal",name:"APPLICATION_LTE_TO"},{value:"greater",name:"APPLICATION_GREATER_THAN"},{value:"less",name:"APPLICATION_LESS_THAN"}]}],actions:[{name:"APPLICATION_STATUS",value:"status"}]}},channels:["mail","fax","chat"]}}),angular.module("xCallyShuttleApp").service("channel",function(){return[{name:"Voice",value:"voice"}]}),angular.module("xCallyShuttleApp").service("desk_com",function(){return{fields:[{id:"priority",label:"Priority",custom:!1,data:{choices:[1,2,3,4,5,6,7,8,9,10]}},{id:"status",label:"Status",custom:!1,data:{choices:["new","open","pending","resolved","closed"]}},{id:"type",label:"Type",custom:!1,data:{choices:["chat","twitter","email","qna","facebook","phone"]}}]}}),angular.module("xCallyShuttleApp").service("interval",function(){return{interval:{months:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"jan",name:"APPLICATION_JANUARY"},{value:"feb",name:"APPLICATION_FEBRUARY"},{value:"mar",name:"APPLICATION_MARCH"},{value:"apr",name:"APPLICATION_APRIL"},{value:"may",name:"APPLICATION_MAY"},{value:"jun",name:"APPLICATION_JUNE"},{value:"jul",name:"APPLICATION_JULY"},{value:"aug",name:"APPLICATION_AUGUST"},{value:"sep",name:"APPLICATION_SEPTEMBER"},{value:"oct",name:"APPLICATION_OCTOBER"},{value:"nov",name:"APPLICATION_NOVEMBER"},{value:"dec",name:"APPLICATION_DECEMBER"}],monthsNumber:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"1",name:"APPLICATION_JANUARY"},{value:"2",name:"APPLICATION_FEBRUARY"},{value:"3",name:"APPLICATION_MARCH"},{value:"4",name:"APPLICATION_APRIL"},{value:"5",name:"APPLICATION_MAY"},{value:"6",name:"APPLICATION_JUNE"},{value:"7",name:"APPLICATION_JULY"},{value:"8",name:"APPLICATION_AUGUST"},{value:"9",name:"APPLICATION_SEPTEMBER"},{value:"10",name:"APPLICATION_OCTOBER"},{value:"11",name:"APPLICATION_NOVEMBER"},{value:"12",name:"APPLICATION_DECEMBER"}],daysOfWeek:[{value:"always",name:"APPLICATION_ALWAYS"},{value:"mon",name:"APPLICATION_MONDAY"},{value:"tue",name:"APPLICATION_TUESDAY"},{value:"wed",name:"APPLICATION_WEDNESDAY"},{value:"thu",name:"APPLICATION_THURSDAY"},{value:"fri",name:"APPLICATION_FRIDAY"},{value:"sat",name:"APPLICATION_SATURDAY"},{value:"sun",name:"APPLICATION_SUNDAY"}],daysOfMonth:["always",1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}}}),angular.module("xCallyShuttleApp").service("report",["ReportAgent","ReportCall","ReportMailSession","ReportMember","ReportQueue","ReportIntegration","ReportChatSession","ReportSmsSession","Contact","Recording","ReportSquare","ReportSquareDetail","User","ReportFaxSession","MailRoom","MailMessage","FaxRoom","FaxMessage","ChatRoom","ChatMessage","SmsRoom","SmsMessage","OpenChannelRoom","OpenChannelMessage","ReportOpenChannelSession","ReportMotionDialer","UserHasVoiceQueue",function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A){return{tables:[{value:"users",resource:m,channel:"General"},{value:"cm_contacts",resource:i,channel:"General"},{value:"report_integration_history",resource:f,channel:"General"},{value:"report_agent_history",resource:a,channel:"Voice"},{value:"report_call_history",resource:b,channel:"Voice"},{value:"report_member_history",resource:d,channel:"Voice"},{value:"report_queue_history",resource:e,channel:"Voice"},{value:"voice_recordings",resource:j,channel:"Voice"},{value:"report_square_history",resource:k,channel:"Voice"},{value:"report_square_details_history",resource:l,channel:"Voice"},{value:"report_tdial",resource:z,channel:"Voice"},{value:"report_chat_session_history",resource:g,channel:"Chat"},{value:"chat_rooms",resource:s,channel:"Chat"},{value:"chat_messages",resource:t,channel:"Chat"},{value:"report_mail_session_history",resource:c,channel:"Mail"},{value:"mail_rooms",resource:o,channel:"Mail"},{value:"mail_messages",resource:p,channel:"Mail"},{value:"report_fax_session_history",resource:n,channel:"Fax"},{value:"fax_rooms",resource:q,channel:"Fax"},{value:"fax_messages",resource:r,channel:"Fax"},{value:"report_sms_session_history",resource:h,channel:"Sms"},{value:"sms_rooms",resource:u,channel:"Sms"},{value:"sms_messages",resource:v,channel:"Sms"},{value:"report_openchannel_session_history",resource:y,channel:"Open Channel"},{value:"openchannel_rooms",resource:w,channel:"Open Channel"},{value:"openchannel_messages",resource:x,channel:"Open Channel"},{value:"user_has_voice_queues",resource:A,channel:"Voice"}]}}]),angular.module("xCallyShuttleApp").service("strategies",function(){return["beepall","roundrobin"]}),angular.module("xCallyShuttleApp").service("triggers",["VoiceQueue","ChatQueue","MailQueue","FaxQueue","SmsQueue","OpenChannelQueue","Route",function(a,b,c,d,e,f,g){return{services:{voice:{conditions:[{name:"APPLICATION_QUEUE",value:"queue",type:"select",resource:a,resValue:"name",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_CALL_STATUS",value:"lastevent",type:"select",translate:!0,arr:[{name:"ringing",value:"called"},{name:"up",value:"connect"},{name:"hangup",value:"complete"},{name:"rejected",value:"rejected"},{name:"ringnoanswer",value:"agentringnoanswer"},{name:"abandoned",value:"abandoned"}],operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_OUTBOUND_ROUTE",value:"routeId",type:"select",resource:g,resValue:"id",resName:"exten",params:{type:"outbound"},operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]}],actions:[{name:"APPLICATION_CONTACT_MANAGER",value:"contactManager"},{name:"APPLICATION_INTEGRATIONS",value:"integration",propertyField:"select"},{name:"APPLICATION_MOTION_BAR",value:"motionbar",propertyField:"select"},{name:"APPLICATION_JSCRIPTY",value:"jscripty",propertyField:"select"},{name:"APPLICATION_URL_FORWARD",value:"urlForward"},{name:"APPLICATION_WEB_POPUP",value:"webPopup"}]},mail:{conditions:[{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_CC",value:"cc",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_SUBJECT",value:"subject",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_BODY",value:"text",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_TEMPLATE",value:"template"},{name:"APPLICATION_EMAIL",value:"email"},{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_FORWARD",value:"forward"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},chat:{conditions:[{name:"APPLICATION_NAME",value:"fullname",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"}]},{name:"APPLICATION_EMAIL",value:"email",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},sms:{conditions:[{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_BODY",value:"body",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},fax:{conditions:[{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]},openchannel:{conditions:[{name:"APPLICATION_FROM",value:"from",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_TO",value:"to",type:"input",operators:[{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]},{name:"APPLICATION_BODY",value:"body",type:"input",operators:[{value:"equals",name:"APPLICATION_EQUALS_TO"},{value:"not_equals",name:"APPLICATION_NOT_EQUALS_TO"},{value:"contains",name:"APPLICATION_CONTAINS"},{value:"not_contains",name:"APPLICATION_NOT_CONTAINS"}]}],actions:[{name:"APPLICATION_EMAIL_FROM_ACCOUNT",value:"accountEmail"},{name:"APPLICATION_SMS",value:"accountSms"},{name:"APPLICATION_TEMPLATE",value:"accountTemplate"},{name:"APPLICATION_TAG",value:"tag"},{name:"APPLICATION_URL_FORWARD",value:"http"},{name:"APPLICATION_CLOSE",value:"close"}]}},channels:["voice","mail","chat","sms","fax","openchannel"]}}]),angular.module("xCallyShuttleApp").service("variable",function(){return[{title:"Unique ID",name:"uniqueid",group:"voice_queue"},{title:"Caller Number",name:"calleridnum",group:"voice_queue"},{title:"Caller Name",name:"calleridname",group:"voice_queue"},{title:"Queue",name:"queue",group:"voice_queue"},{title:"Called Number",name:"destcalleridnum",group:"voice_queue"},{title:"Called Name",name:"destcalleridname",group:"voice_queue"},{title:"Hold Time",name:"holdtime",group:"voice_queue"},{title:"Talk Time",name:"talktime",group:"voice_queue"},{title:"Connected Time",name:"agentconnectAt",group:"voice_queue"},{title:"Called Time",name:"agentcalledAt",group:"voice_queue"},{title:"DNID",name:"destexten",group:"voice_queue"},{title:"Complete Time",name:"agentcompleteAt",group:"voice_queue"},{title:"No Answer Time",name:"agentringnoanswerAt",group:"voice_queue"},{title:"Recording URL",name:"recordingURL",group:"voice_queue"},{title:"Unique ID",name:"uniqueid",group:"voice_outbound"},{title:"Caller Number",name:"calleridnum",group:"voice_outbound"},{title:"Caller Name",name:"calleridname",group:"voice_outbound"},{title:"Called Number",name:"destcalleridnum",group:"voice_outbound"},{title:"Called Name",name:"destcalleridname",group:"voice_outbound"},{title:"Start Time",name:"starttime",group:"voice_outbound"},{title:"Answer Time",name:"answertime",group:"voice_outbound"},{title:"Complete Time",name:"endtime",group:"voice_outbound"},{title:"Recording URL",name:"recordingURL",group:"voice_outbound"},{title:"Member Name",name:"membername",group:"voice_outbound"}]}),angular.module("xCallyShuttleApp").controller("SidebarController",["$scope","$rootScope","$resource","$location","Auth","Dashboard","Integration","xAlert","$stateParams","socket","$uibModal","Setting",function(a,b,c,d,e,f,g,h,i,j,k,l){a.Auth=e,a.$on("$includeContentLoaded",function(){Metronic.init(),Layout.initSidebar()}),a.getSidebarDashboards=function(){return f.get().$promise.then(function(c){b.dashboards=c.rows,j.syncUpdates("dashboard",b.dashboards),a.$watch("dashboards",function(a){a&&b.initTours()},!0)}).catch(function(){h.show("Error loading your dashboards","danger")})},a.about=function(){k.open({animation:!0,size:"sm",templateUrl:"app/main/about.modal.html",controller:["$scope","$uibModalInstance",function(a,b){a.year=moment().year(),a.getInfo=function(){return l.get({controller:"info"}).$promise.then(function(b){a.info=b}).catch(function(a){console.error(a)})},a.close=function(){b.dismiss("cancel")}}]})},a.getSidebarIntegrations=function(){if(e.isAdmin()||e.isAgent()||b.userModules[19])return g.get().$promise.then(function(b){a.integrations=b.rows,j.syncUpdates("integration",a.integrations)}).catch(function(a){h.error(a)})},a.$on("sidebar $destroy",function(){console.log("destroy"),j.unsyncUpdates("dashboard"),j.unsyncUpdates("integration")})}]),angular.module("xCallyShuttleApp").factory("socket",["$rootScope","$window","socketFactory","Auth",function(a,b,c,d){var e=d.getCurrentUser(),f=io("",{query:"token="+d.getToken()+"&userId="+e.id+"&name="+e.name+"&role="+(e.role||"agent")+"&source=browser",path:"/socket.io-client",multiplex:!1}),g=c({ioSocket:f});return a.$on("logout",function(){g&&(g.disconnect(!0),b.location.reload())}),{socket:g,syncUpdates:function(a,b,c){c=c||angular.noop,g.on(a+":save",function(a){var d=_.find(b,{id:a.id}),e=b.indexOf(d),f="created";d?(_.merge(b[e],a),f="updated"):b.unshift(a),c(f,a,b)}),g.on(a+":remove",function(a){_.remove(b,{id:a.id}),c("deleted",a,b)})},unsyncUpdates:function(a){g.removeAllListeners(a+":save"),g.removeAllListeners(a+":update"),g.removeAllListeners(a+":remove")},syncUpdatesByAttributes:function(a,b,c,d){d=d||angular.noop,g.on(a+":save",function(a){var e=!0;if(_.forIn(b,function(b,c){return!(!a[c]||a[c]!==b)||(e=!1)}),e){var f=_.find(c,{id:a.id}),g=c.indexOf(f),h="created";f?(_.merge(c[g],a),h="updated"):c.unshift(a),d(h,a,c)}}),g.on(a+":remove",function(a){_.remove(c,{id:a.id}),d("deleted",a,c)})},syncMailMessageUpdates:function(a,b,c,d){d=d||angular.noop,g.on(a+":"+b+":save",function(a){var b=_.find(c,{id:a.id}),e=c.indexOf(b),f="created";b?(_.merge(c[e],a),f="updated"):c.unshift(a),d(f,a)}),g.on(a+":"+b+":remove",function(a){_.remove(c,{id:a.id}),d("deleted",a,c)})},unsyncMailMessageUpdates:function(a,b){g.removeAllListeners(a+":"+b+":save"),g.removeAllListeners(a+":"+b+":remove")},syncFaxMessageUpdates:function(a,b,c,d){d=d||angular.noop,g.on(a+":"+b+":save",function(a){var b=_.find(c,{id:a.id}),e=c.indexOf(b),f="created";b?(_.merge(c[e],a),f="updated"):c.unshift(a),d(f,a)}),g.on(a+":"+b+":remove",function(a){_.remove(c,{id:a.id}),d("deleted",a,c)})},unsyncFaxMessageUpdates:function(a,b){g.removeAllListeners(a+":"+b+":save"),g.removeAllListeners(a+":"+b+":remove")}}}]),function(a,b){angular.module("adf.widget.counter",["adf.provider"]).config(["dashboardProvider",function(a){a.widget("counter",{title:"Single Value",description:"Single Value for db results",templateUrl:"{widgetsPath}/counter/src/view.html",controller:"apiwidgetCounterViewCtrl",edit:{templateUrl:"{widgetsPath}/counter/src/edit.html",controller:"apiwidgetCounterEditCtrl"}})}]).service("apiServiceCounter",["Widget",function(a){return{get:function(b){return a.get({select:b.select,condition:encodeURIComponent(b.condition),table:b.report.replace("_history",""),controller:"counter"}).$promise.then(function(a){return a}).catch(function(a){console.log(a)})}}}]).controller("apiwidgetCounterEditCtrl",["$scope","report",function(a,b){a.config.reportTables=b.tables,a.config.colors=[{name:"Grey",value:"grey"},{name:"Grey 2",value:"grey-cascade"},{name:"Grey 3",value:"grey-silver"},{name:"Grey 4",value:"grey-steel"},{name:"Grey 5",value:"grey-carrara"},{name:"Grey 6",value:"grey-gallery"},{name:"Blue",value:"blue"},{name:"Blue 2",value:"blue-hoki"},{name:"Blue 3",value:"blue-steel"},{name:"Blue 4",value:"blue-madison"},{name:"Blue 5",value:"blue-chambray"},{name:"Blue 6",value:"blue-ebonyclay"},{name:"Red",value:"red"},{
+name:"Red 2",value:"red-pink"},{name:"Red 3",value:"red-sunglo"},{name:"Red 4",value:"red-intense"},{name:"Red 5",value:"red-thunderbird"},{name:"Red 6",value:"red-flamingo"},{name:"Green",value:"green"},{name:"Green 2",value:"green-meadow"},{name:"Green 3",value:"green-seagreen"},{name:"Green 4",value:"green-turquoise"},{name:"Green 5",value:"green-haze"},{name:"Green 6",value:"green-jungle"},{name:"Purple",value:"purple"},{name:"Purple 2",value:"purple-plum"},{name:"Purple 3",value:"purple-medium"},{name:"Purple 4",value:"purple-studio"},{name:"Purple 5",value:"purple-wisteria"},{name:"Purple 6",value:"purple-seance"},{name:"Yellow",value:"yellow"},{name:"Yellow 2",value:"yellow-gold"},{name:"Yellow 3",value:"yellow-casablanca"},{name:"Yellow 4",value:"yellow-crusta"},{name:"Yellow 5",value:"yellow-lemon"},{name:"Yellow 6",value:"yellow-saffron"}],a.config.icons=[{name:"Talk bubbles",value:"fa-comments"},{name:"Bar Chart",value:"fa-bar-chart"},{name:"Shopping Cart",value:"fa-shopping-cart"},{name:"Globe",value:"fa-globe"},{name:"Volume Control Phone",value:"fa-volume-control-phone"},{name:"Comments",value:"fa-comments-o"},{name:"Commenting",value:"fa-commenting-o"},{name:"Coffee",value:"fa-coffee"},{name:"Clock",value:"fa-clock-o"},{name:"Envelope",value:"fa-envelope-o"},{name:"Hourglass",value:"fa-hourglass-half"},{name:"Percent",value:"fa-percent"}],a.config.select=a.config.select?a.config.select:"COUNT(*)",a.config.color=a.config.color?a.config.color:"blue-madison",a.config.icon=a.config.icon?a.config.icon:"fa-comments",a.config.link=a.config.link?a.config.link:"#",a.config.linkText=a.config.linkText?a.config.linkText:"VIEW MORE"}]).controller("apiwidgetCounterViewCtrl",["$scope","$interval","apiServiceCounter","socket",function(a,b,c,d){var e=a.$parent.model.wid;d.socket.on("widget_update:"+e,function(b){b&&b.length>1||_.keys(b[0]).length>1?(a.tooManyResults=!0,a.result=null):(a.tooManyResults=!1,null!==_.values(b[0])[0]?a.result=_.values(b[0])[0].toString():a.result="--")}),a.$on("$destroy",function(){d.socket.removeAllListeners("widget_update:"+e)})}]),angular.module("adf.widget.counter").run(["$templateCache",function(a){a.put("{widgetsPath}/counter/src/edit.html","<form role=form><div class=form-group><label for=select>Select</label> <input type=text class=form-control id=condition ng-model=config.select placeholder=Select></div><div class=form-group><label class=control-label>From</label><ui-select data-ng-model=config.report name=report theme=bootstrap><ui-select-match placeholder=From>{{'APPLICATION_'+$select.selected.value.toUpperCase() | translate}}</ui-select-match><ui-select-choices group-by=\"'channel'\" repeat=\"table.value as table in config.reportTables | filter: $select.search\"><div ng-bind-html=\"'APPLICATION_'+table.value.toUpperCase() | translate | highlight: $select.search\"></div></ui-select-choices></ui-select></div><div class=form-group><label for=condition>Where</label> <input type=text class=form-control id=condition ng-model=config.condition placeholder=Where></div><div class=form-group><label class=control-label>{{'APPLICATION_WIDGET_COLOR' | translate}}</label><ui-select data-ng-model=config.color name=color theme=bootstrap><ui-select-match placeholder=\"{{ 'APPLICATION_WIDGET_COLOR' | translate }}\"><div data-ng-class=\"'bg-'+$select.selected.value\">&nbsp;</div></ui-select-match><ui-select-choices repeat=\"color.value as color in config.colors | filter: $select.search\"><div data-ng-class=\"'bg-'+color.value\">&nbsp;</div></ui-select-choices></ui-select></div><div class=form-group><label class=control-label>{{'APPLICATION_WIDGET_ICON' | translate}}</label><ui-select data-ng-model=config.icon name=icon theme=bootstrap><ui-select-match placeholder=\"{{ 'APPLICATION_WIDGET_ICON' | translate }}\"><i class=fa ng-class=$select.selected.value></i></ui-select-match><ui-select-choices repeat=\"icon.value as icon in config.icons | filter: $select.search\"><i class=fa ng-class=icon.value></i></ui-select-choices></ui-select></div><div class=form-group><label for=condition>{{'APPLICATION_WIDGET_DETAILS' | translate}}</label> <input type=text class=form-control id=details ng-model=config.details maxlength=30 placeholder=\"{{'APPLICATION_WIDGET_DETAILS' | translate}}\"></div><div class=form-group><label for=condition>{{'APPLICATION_WIDGET_LINK' | translate}}</label> <input type=text class=form-control id=link ng-model=config.link placeholder=http://yourlink></div><div class=form-group><label for=condition>{{'APPLICATION_WIDGET_LINK_TEXT' | translate}}</label> <input type=text class=form-control id=linkText ng-model=config.linkText maxlength=30 placeholder=\"{{'APPLICATION_WIDGET_LINK_TEXT' | translate}}\"></div></form>"),a.put("{widgetsPath}/counter/src/view.html",'<div class=dashboard-stat ng-class=config.color ng-if=result><div class=visual><i class=fa ng-class=config.icon></i></div><div class=details><div class=number>{{result}}</div><div class=desc>{{config.details}}</div></div><a class=more href={{config.link}}>{{config.linkText}} <i class="m-icon-swapright m-icon-white"></i></a></div><div class="alert alert-danger" role=alert ng-if=!config.report><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_WIDGET_SELECT_REPORT\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=tooManyResults><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_TOO_MANY_RESULTS\' | translate}}</div><div class="alert alert-danger" role=alert ng-if="!result && !tooManyResults"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_QUERY_NOT_VALID\' | translate}}</div>')}])}(window),function(a,b){angular.module("adf.widget.pie-chart",["adf.provider"]).config(["dashboardProvider",function(a){a.widget("pie-chart",{title:"Pie-Chart",description:"Display a pie-chart starting from DB values",templateUrl:"{widgetsPath}/pie-chart/src/view.html",controller:"apiWidgetPieChartViewCtrl",edit:{templateUrl:"{widgetsPath}/pie-chart/src/edit.html",controller:"apiWidgetPieChartEditCtrl"}})}]).service("apiServicePieChart",["Widget",function(a){return{get:function(b){return a.get({condition:encodeURIComponent(b.condition),table:b.report.replace("_history",""),fields:b.fields,controller:"piechart"}).$promise.then(function(a){return a}).catch(function(a){console.log(a)})}}}]).controller("apiWidgetPieChartEditCtrl",["$scope","report",function(a,b){function c(){return a.config.fields||(a.config.fields=[{column:"",alias:""}]),a.config.fields}a.config.reportTables=b.tables,a.config.fields=a.config.fields?a.config.fields:[{column:"",alias:""}],a.addField=function(){c().push({})},a.removeField=function(a){c().splice(a,1)}}]).controller("apiWidgetPieChartViewCtrl",["$scope","$interval","apiServicePieChart","socket",function(a,b,c,d){var e=a.$parent.model.wid;d.socket.on("widget_update:"+e,function(b){if(b&&1===b.length){a.labels=[],a.data=[];for(var c in b[0])a.labels.push(c),a.data.push(b[0][c])}else a.labels=[],a.data=[]}),a.$on("$destroy",function(){d.socket.removeAllListeners("widget_update:"+e)})}]),angular.module("adf.widget.pie-chart").run(["$templateCache",function(a){a.put("{widgetsPath}/pie-chart/src/edit.html",'<form role=form><div class=form-group><label class=control-label>{{\'APPLICATION_REPORT\' | translate}}</label><ui-select data-ng-model=config.report name=report theme=bootstrap><ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match><ui-select-choices group-by="\'channel\'" repeat="table.value as table in config.reportTables | filter: $select.search"><div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div></ui-select-choices></ui-select></div><div><label class=control-label>{{\'APPLICATION_FIELDS\' | translate}}</label></div><div class=padding-bottom ng-repeat="field in config.fields"><div class=form-group><div class=input-group><input type=text class=form-control ng-model=field.column> <span class=input-group-addon>as</span> <input type=text class=form-control ng-model=field.alias> <span class=input-group-btn ng-if="config.fields.length>1"><button class="btn btn-danger" type=button data-ng-click=removeField($index)><i class="fa fa-times"></i> {{\'APPLICATION_REMOVE\' | translate}}</button></span></div></div></div><button type=button class="btn btn-sm green mbottom20" ng-click=addField()><i class="fa fa-plus"></i> {{\'APPLICATION_ADD_FIELD\' | translate}}</button><div class=form-group><label for=condition>{{\'APPLICATION_CONDITION\' | translate}}</label> <input type=text class=form-control id=condition ng-model=config.condition placeholder="{{\'APPLICATION_CONDITION\' | translate}}"></div></form>'),a.put("{widgetsPath}/pie-chart/src/view.html",'<div ng-if=labels.length ng-style=config.style><canvas id=doughnut class="chart chart-doughnut" chart-data=data chart-labels=labels legend=true></canvas></div><div class="alert alert-danger" role=alert ng-if=!config.report><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_WIDGET_SELECT_REPORT\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!labels.length><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_VALID_CONDITION\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!labels.length><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_ONE_VALID_METRIC_AND_CHECK_OTHER\' | translate}}</div>')}])}(window),function(a,b){angular.module("adf.widget.table",["adf.provider"]).value("apiServiceUrlTable","/api/widgets/table").config(["dashboardProvider",function(a){a.widget("table",{title:"Table",description:"Show tabbed results from db",templateUrl:"{widgetsPath}/table/src/view.html",controller:"apiWidgetTableViewCtrl",edit:{templateUrl:"{widgetsPath}/table/src/edit.html",controller:"apiWidgetTableEditCtrl"}})}]).service("apiServiceTable",["$q","$http","apiServiceUrlTable",function(a,b,c){return{get:function(d){var e=a.defer();return b.get(c,{params:{condition:encodeURIComponent(d.condition),table:d.report,fields:d.fields}}).success(function(a){a?e.resolve(a):e.reject()}).error(function(a){console.log(a),e.reject()}),e.promise}}}]).controller("apiWidgetTableEditCtrl",["$scope",function(a){function b(){return a.config.fields||(a.config.fields=[{column:"",alias:""}]),a.config.fields}a.config.reportTables=[{name:"Agents",value:"agent"},{name:"Calls",value:"call"},{name:"Dials",value:"dial"},{name:"Members",value:"member"},{name:"Queues",value:"queue"}],a.config.timeout=a.config.timeout?a.config.timeout:1,a.config.height=a.config.height?a.config.height:350,a.config.fields=a.config.fields?a.config.fields:[{column:"",alias:""}],a.addField=function(){b().push({})},a.removeField=function(a){b().splice(a,1)}}]).controller("apiWidgetTableViewCtrl",["$scope","$interval","apiServiceTable",function(a,b,c){a.config.timeout=a.config.timeout?a.config.timeout:1,a.config.height=a.config.height?a.config.height:350,a.config.style={"max-height":a.config.height+"px",overflow:"scroll"},a.tableApiCall=function(){a.config.condition&&a.config.report&&a.config.fields.length&&""!==a.config.fields[0].column&&""!==a.config.fields[0].alias&&c.get(a.config).then(function(b){a.results=b})},a.tableApiCall();var d=b(function(){a.tableApiCall()},1e3*parseInt(a.config.timeout));a.$on("$destroy",function(){b.cancel(d)})}]),angular.module("adf.widget.table").run(["$templateCache",function(a){a.put("{widgetsPath}/table/src/edit.html",'<form role=form><div class=form-group><label class=control-label>{{\'APPLICATION_REPORT\' | translate}}</label><ui-select data-ng-model=config.report name=report theme=bootstrap><ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match><ui-select-choices repeat="report.value as report in config.reportTables | filter: $select.search"><div ng-bind-html="report.name | highlight: $select.search"></div></ui-select-choices></ui-select></div><div><label class=control-label>{{\'APPLICATION_METRICS\' | translate}}</label></div><div class=padding-bottom ng-repeat="field in config.fields"><div class=form-group><div class=input-group><input type=text class=form-control ng-model=field.column> <span class=input-group-addon>as</span> <input type=text class=form-control ng-model=field.alias> <span class=input-group-btn ng-if="config.fields.length>1"><button class="btn btn-danger" type=button data-ng-click=removeField($index)><i class="fa fa-times"></i> {{\'APPLICATION_REMOVE\' | translate}}</button></span></div></div></div><button type=button class="btn btn-sm green mbottom20" ng-click=addField()><i class="fa fa-plus"></i> {{\'APPLICATION_ADD_FIELD\' | translate}}</button><div class=form-group><label for=condition>{{\'APPLICATION_CONDITION\' | translate}}</label> <input type=text class=form-control id=condition ng-model=config.condition placeholder="{{\'APPLICATION_CONDITION\' | translate}}"></div><div class=form-group><label for=condition>{{\'APPLICATION_REFRESH_TIMEOUT\' | translate}}</label> <input type=number class=form-control id=timeout ng-model=config.timeout placeholder="{{\'APPLICATION_REFRESH_TIMEOUT\' | translate}}" min=1></div><div class=form-group><label for=condition>{{\'APPLICATION_WIDGET_MAX_HEIGHT\' | translate}}</label> <input type=number class=form-control id=height ng-model=config.height placeholder="{{\'APPLICATION_WIDGET_MAX_HEIGHT\' | translate}}" min=350></div></form>'),a.put("{widgetsPath}/table/src/view.html",'<div ng-if=results ng-style=config.style><table st-table=results class="table table-striped table-bordered table-hover"><div class=table-responsive><thead><tr><th colspan={{config.fields.length}}><div class=row><div class=col-md-6></div><div class=col-md-6><div class="input-group input-medium pull-right"><input st-search placeholder="{{ \'APPLICATION_SEARCH\' | translate }}" class=form-control type=search> <span class=input-group-addon><i class="fa fa-search"></i></span></div></div></div></th></tr><tr><th ng-repeat="field in config.fields">{{field.alias}}</th></tr></thead><tbody><tr data-ng-repeat="result in results" class=animate-repeat><td ng-repeat="field in config.fields">{{result[field.alias]}}</td></tr><tr data-ng-hide=results.length><td colspan={{config.fields.length}} style=text-align:center;><i>{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</i></td></tr></tbody><tfoot><tr><td colspan={{config.fields.length}} class=text-center><div st-pagination class=pagination st-items-by-page=10 st-displayed-pages=3></div></td></tr></tfoot></div></table></div><div class="alert alert-danger" role=alert ng-if=!config.report><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_WIDGET_SELECT_REPORT\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!results><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_VALID_CONDITION\' | translate}}</div><div class="alert alert-danger" role=alert ng-if=!results><span class="glyphicon glyphicon-exclamation-sign" aria-hidden=true></span> <span class=sr-only>{{\'APPLICATION_ERROR\' | translate}}:</span> {{\'MESSAGE_ENTER_ONE_VALID_FIELD_AND_CHECK_OTHER\' | translate}}</div>')}])}(window);var Metronic=function(){var a,b=!1,c=!1,d=!1,e=!1,f=[],g="assets/",h="img/",i="plugins/",j="css/",k={blue:"#89C4F4",red:"#F3565D",green:"#1bbc9b",purple:"#9b59b6",grey:"#95a5a6",yellow:"#F8CB00"},l=function(){"rtl"===$("body").css("direction")&&(b=!0),c=!!navigator.userAgent.match(/MSIE 8.0/),d=!!navigator.userAgent.match(/MSIE 9.0/),e=!!navigator.userAgent.match(/MSIE 10.0/),e&&$("html").addClass("ie10"),(e||d||c)&&$("html").addClass("ie")},m=function(){for(var a=0;a<f.length;a++){f[a].call()}},n=function(){var a;if(c){var b;$(window).resize(function(){b!=document.documentElement.clientHeight&&(a&&clearTimeout(a),a=setTimeout(function(){m()},50),b=document.documentElement.clientHeight)})}else $(window).resize(function(){a&&clearTimeout(a),a=setTimeout(function(){m()},50)})},o=function(){$("body").on("click",".portlet > .portlet-title > .tools > a.remove",function(a){a.preventDefault();var b=$(this).closest(".portlet");$("body").hasClass("page-portlet-fullscreen")&&$("body").removeClass("page-portlet-fullscreen"),b.find(".portlet-title .fullscreen").tooltip("destroy"),b.find(".portlet-title > .tools > .reload").tooltip("destroy"),b.find(".portlet-title > .tools > .remove").tooltip("destroy"),b.find(".portlet-title > .tools > .config").tooltip("destroy"),b.find(".portlet-title > .tools > .collapse, .portlet > .portlet-title > .tools > .expand").tooltip("destroy"),b.remove()}),$("body").on("click",".portlet > .portlet-title .fullscreen",function(a){a.preventDefault();var b=$(this).closest(".portlet");if(b.hasClass("portlet-fullscreen"))$(this).removeClass("on"),b.removeClass("portlet-fullscreen"),$("body").removeClass("page-portlet-fullscreen"),b.children(".portlet-body").css("height","auto");else{var c=Metronic.getViewPort().height-b.children(".portlet-title").outerHeight()-parseInt(b.children(".portlet-body").css("padding-top"))-parseInt(b.children(".portlet-body").css("padding-bottom"));$(this).addClass("on"),b.addClass("portlet-fullscreen"),$("body").addClass("page-portlet-fullscreen"),b.children(".portlet-body").css("height",c)}}),$("body").on("click",".portlet > .portlet-title > .tools > a.reload",function(a){a.preventDefault();var b=$(this).closest(".portlet").children(".portlet-body"),c=$(this).attr("data-url"),d=$(this).attr("data-error-display");c?(Metronic.blockUI({target:b,animate:!0,overlayColor:"none"}),$.ajax({type:"GET",cache:!1,url:c,dataType:"html",success:function(a){Metronic.unblockUI(b),b.html(a)},error:function(a,c,e){Metronic.unblockUI(b);var f="Error on reloading the content. Please check your connection and try again.";"toastr"==d&&toastr?toastr.error(f):"notific8"==d&&$.notific8?($.notific8("zindex",11500),$.notific8(f,{theme:"ruby",life:3e3})):alert(f)}})):(Metronic.blockUI({target:b,animate:!0,overlayColor:"none"}),window.setTimeout(function(){Metronic.unblockUI(b)},1e3))}),$('.portlet .portlet-title a.reload[data-load="true"]').click(),$("body").on("click",".portlet > .portlet-title > .tools > .collapse, .portlet .portlet-title > .tools > .expand",function(a){a.preventDefault()})},p=function(){if($().uniform){var a=$("input[type=checkbox]:not(.toggle, .make-switch, .icheck), input[type=radio]:not(.toggle, .star, .make-switch, .icheck)");a.size()>0&&a.each(function(){0===$(this).parents(".checker").size()&&$(this).show()})}},q=function(){$().iCheck&&$(".icheck").each(function(){var a=$(this).attr("data-checkbox")?$(this).attr("data-checkbox"):"icheckbox_minimal-grey",b=$(this).attr("data-radio")?$(this).attr("data-radio"):"iradio_minimal-grey";a.indexOf("_line")>-1||b.indexOf("_line")>-1?$(this).iCheck({checkboxClass:a,radioClass:b,insert:'<div class="icheck_line-icon"></div>'+$(this).attr("data-label")}):$(this).iCheck({checkboxClass:a,radioClass:b})})},r=function(){$().bootstrapSwitch&&$(".make-switch").bootstrapSwitch()},s=function(){$().confirmation&&$("[data-toggle=confirmation]").confirmation({container:"body",btnOkClass:"btn-xs btn-success",btnCancelClass:"btn-xs btn-danger"})},t=function(){$("body").on("shown.bs.collapse",".accordion.scrollable",function(a){Metronic.scrollTo($(a.target))})},u=function(){if(location.hash){var a=location.hash.substr(1);$('a[href="#'+a+'"]').parents(".tab-pane:hidden").each(function(){var a=$(this).attr("id");$('a[href="#'+a+'"]').click()}),$('a[href="#'+a+'"]').click()}},v=function(){$("body").on("hide.bs.modal",function(){$(".modal:visible").size()>1&&!1===$("html").hasClass("modal-open")?$("html").addClass("modal-open"):$(".modal:visible").size()<=1&&$("html").removeClass("modal-open")}),$("body").on("show.bs.modal",".modal",function(){$(this).hasClass("modal-scroll")&&$("body").addClass("modal-open-noscroll")}),$("body").on("hide.bs.modal",".modal",function(){$("body").removeClass("modal-open-noscroll")}),$("body").on("hidden.bs.modal",".modal:not(.modal-cached)",function(){$(this).removeData("bs.modal")})},w=function(){$(".tooltips").tooltip(),$(".portlet > .portlet-title .fullscreen").tooltip({container:"body",title:"Fullscreen"}),$(".portlet > .portlet-title > .tools > .reload").tooltip({container:"body",title:"Reload"}),$(".portlet > .portlet-title > .tools > .remove").tooltip({container:"body",title:"Remove"}),$(".portlet > .portlet-title > .tools > .config").tooltip({container:"body",title:"Settings"}),$(".portlet > .portlet-title > .tools > .collapse, .portlet > .portlet-title > .tools > .expand").tooltip({container:"body",title:"Collapse/Expand"})},x=function(){$("body").on("click",".dropdown-menu.hold-on-click",function(a){a.stopPropagation()})},y=function(){$("body").on("click",'[data-close="alert"]',function(a){$(this).parent(".alert").hide(),$(this).closest(".note").hide(),a.preventDefault()}),$("body").on("click",'[data-close="note"]',function(a){$(this).closest(".note").hide(),a.preventDefault()}),$("body").on("click",'[data-remove="note"]',function(a){$(this).closest(".note").remove(),a.preventDefault()})},z=function(){$('[data-hover="dropdown"]').not(".hover-initialized").each(function(){$(this).dropdownHover(),$(this).addClass("hover-initialized")})},A=function(){$(".popovers").popover(),$(document).on("click.bs.popover.data-api",function(b){a&&a.popover("hide")})},B=function(){Metronic.initSlimScroll(".scroller")},C=function(){jQuery.fancybox&&$(".fancybox-button").size()>0&&$(".fancybox-button").fancybox({groupAttr:"data-rel",prevEffect:"none",nextEffect:"none",closeBtn:!0,helpers:{title:{type:"inside"}}})},D=function(){(c||d)&&$("input[placeholder]:not(.placeholder-no-fix), textarea[placeholder]:not(.placeholder-no-fix)").each(function(){var a=$(this);""===a.val()&&""!==a.attr("placeholder")&&a.addClass("placeholder").val(a.attr("placeholder")),a.focus(function(){a.val()==a.attr("placeholder")&&a.val("")}),a.blur(function(){""!==a.val()&&a.val()!=a.attr("placeholder")||a.val(a.attr("placeholder"))})})},E=function(){$().select2&&$(".select2me").select2({placeholder:"Select"})};return{init:function(){l(),n(),p(),q(),r(),B(),C(),E(),o(),y(),x(),u(),w(),A(),t(),v(),s(),D()},initAjax:function(){p(),q(),r(),z(),B(),E(),C(),x(),w(),A(),t(),s()},initComponents:function(){this.initAjax()},setLastPopedPopover:function(b){a=b},addResizeHandler:function(a){f.push(a)},runResizeHandlers:function(){m()},scrollTo:function(a,b){var c=a&&a.size()>0?a.offset().top:0;a&&($("body").hasClass("page-header-fixed")&&(c-=$(".page-header").height()),c+=b||-1*a.height()),$("html,body").animate({scrollTop:c},"slow")},initSlimScroll:function(a){$(a).each(function(){if(!$(this).attr("data-initialized")){var a;a=$(this).attr("data-height")?$(this).attr("data-height"):$(this).css("height"),$(this).slimScroll({allowPageScroll:!0,size:"7px",color:$(this).attr("data-handle-color")?$(this).attr("data-handle-color"):"#bbb",wrapperClass:$(this).attr("data-wrapper-class")?$(this).attr("data-wrapper-class"):"slimScrollDiv",railColor:$(this).attr("data-rail-color")?$(this).attr("data-rail-color"):"#eaeaea",position:b?"left":"right",height:a,alwaysVisible:"1"==$(this).attr("data-always-visible"),railVisible:"1"==$(this).attr("data-rail-visible"),disableFadeOut:!0}),$(this).attr("data-initialized","1")}})},destroySlimScroll:function(a){$(a).each(function(){if("1"===$(this).attr("data-initialized")){$(this).removeAttr("data-initialized"),$(this).removeAttr("style");var a={};$(this).attr("data-handle-color")&&(a["data-handle-color"]=$(this).attr("data-handle-color")),$(this).attr("data-wrapper-class")&&(a["data-wrapper-class"]=$(this).attr("data-wrapper-class")),$(this).attr("data-rail-color")&&(a["data-rail-color"]=$(this).attr("data-rail-color")),$(this).attr("data-always-visible")&&(a["data-always-visible"]=$(this).attr("data-always-visible")),$(this).attr("data-rail-visible")&&(a["data-rail-visible"]=$(this).attr("data-rail-visible")),$(this).slimScroll({wrapperClass:$(this).attr("data-wrapper-class")?$(this).attr("data-wrapper-class"):"slimScrollDiv",destroy:!0});var b=$(this);$.each(a,function(a,c){b.attr(a,c)})}})},scrollTop:function(){Metronic.scrollTo()},blockUI:function(a){a=$.extend(!0,{},a);var b="";if(b=a.animate?'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><div class="block-spinner-bar"><div class="bounce1"></div><div class="bounce2"></div><div class="bounce3"></div></div></div>':a.iconOnly?'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><img src="'+this.getGlobalImgPath()+'loading-spinner-blue.gif" align=""></div>':a.textOnly?'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><span>&nbsp;&nbsp;'+(a.message?a.message:"LOADING...")+"</span></div>":'<div class="loading-message '+(a.boxed?"loading-message-boxed":"")+'"><img src="'+this.getGlobalImgPath()+'loading-spinner-blue.gif" align=""><span>&nbsp;&nbsp;'+(a.message?a.message:"LOADING...")+"</span></div>",a.target){var c=$(a.target);c.height()<=$(window).height()&&(a.cenrerY=!0),c.block({message:b,baseZ:a.zIndex?a.zIndex:1e3,centerY:void 0!==a.cenrerY&&a.cenrerY,css:{top:"10%",border:"0",padding:"0",backgroundColor:"none"},overlayCSS:{backgroundColor:a.overlayColor?a.overlayColor:"#555",opacity:a.boxed?.05:.1,cursor:"wait"}})}else $.blockUI({message:b,baseZ:a.zIndex?a.zIndex:1e3,css:{border:"0",padding:"0",backgroundColor:"none"},overlayCSS:{backgroundColor:a.overlayColor?a.overlayColor:"#555",opacity:a.boxed?.05:.1,cursor:"wait"}})},unblockUI:function(a){a?$(a).unblock({onUnblock:function(){$(a).css("position",""),$(a).css("zoom","")}}):$.unblockUI()},startPageLoading:function(a){a&&a.animate?($(".page-spinner-bar").remove(),$("body").append('<div class="page-spinner-bar"><div class="bounce1"></div><div class="bounce2"></div><div class="bounce3"></div></div>')):($(".page-loading").remove(),$("body").append('<div class="page-loading"><img src="'+this.getGlobalImgPath()+'loading-spinner-blue.gif"/>&nbsp;&nbsp;<span>'+(a&&a.message?a.message:"Loading...")+"</span></div>"))},stopPageLoading:function(){$(".page-loading, .page-spinner-bar").remove()},alert:function(a){a=$.extend(!0,{container:"",place:"append",type:"success",message:"",close:!0,reset:!0,focus:!0,closeInSeconds:0,icon:""},a);var b=Metronic.getUniqueID("Metronic_alert"),c='<div id="'+b+'" class="Metronic-alerts alert alert-'+a.type+' fade in">'+(a.close?'<button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>':"")+(""!==a.icon?'<i class="fa-lg fa fa-'+a.icon+'"></i>  ':"")+a.message+"</div>";return a.reset&&$(".Metronic-alerts").remove(),a.container?"append"==a.place?$(a.container).append(c):$(a.container).prepend(c):$("body").hasClass("page-container-bg-solid")?$(".page-title").after(c):$(".page-bar").size()>0?$(".page-bar").after(c):$(".page-breadcrumb").after(c),a.focus&&Metronic.scrollTo($("#"+b)),a.closeInSeconds>0&&setTimeout(function(){$("#"+b).remove()},1e3*a.closeInSeconds),b},initUniform:function(a){a?$(a).each(function(){0===$(this).parents(".checker").size()&&($(this).show(),$(this).uniform())}):p()},updateUniform:function(a){$.uniform.update(a)},initFancybox:function(){C()},getActualVal:function(a){return a=$(a),a.val()===a.attr("placeholder")?"":a.val()},getURLParameter:function(a){var b,c,d=window.location.search.substring(1),e=d.split("&");for(b=0;b<e.length;b++)if(c=e[b].split("="),c[0]==a)return unescape(c[1]);return null},isTouchDevice:function(){try{return document.createEvent("TouchEvent"),!0}catch(a){return!1}},getViewPort:function(){var a=window,b="inner";return"innerWidth"in window||(b="client",a=document.documentElement||document.body),{width:a[b+"Width"],height:a[b+"Height"]}},getUniqueID:function(a){return"prefix_"+Math.floor(Math.random()*(new Date).getTime())},isIE8:function(){return c},isIE9:function(){return d},isRTL:function(){return b},isAngularJsApp:function(){return"undefined"!=typeof angular},getAssetsPath:function(){return g},setAssetsPath:function(a){g=a},setGlobalImgPath:function(a){h=a},getGlobalImgPath:function(){return g+h},setGlobalPluginsPath:function(a){i=a},getGlobalPluginsPath:function(){return g+i},getGlobalCssPath:function(){return g+j},getBrandColor:function(a){return k[a]?k[a]:""},getResponsiveBreakpoint:function(a){var b={xs:480,sm:768,md:900,lg:1200};return b[a]?b[a]:0}}}(),Layout=function(){var a=Metronic.getResponsiveBreakpoint("md"),b=function(){var b,c=$(".page-content"),d=$(".page-sidebar"),f=$("body");if(!0===f.hasClass("page-footer-fixed")&&!1===f.hasClass("page-sidebar-fixed")){var g=Metronic.getViewPort().height-$(".page-footer").outerHeight()-$(".page-header").outerHeight();c.height()<g&&c.attr("style","min-height:"+g+"px")}else{if(f.hasClass("page-sidebar-fixed"))b=e(),!1===f.hasClass("page-footer-fixed")&&(b-=$(".page-footer").outerHeight());else{var h=$(".page-header").outerHeight(),i=$(".page-footer").outerHeight();b=Metronic.getViewPort().width<a?Metronic.getViewPort().height-h-i:d.height()+20,b+h+i<=Metronic.getViewPort().height&&(b=Metronic.getViewPort().height-h-i)}c.attr("style","min-height:"+b+"px")}},c=function(b,c){var d=location.hash.toLowerCase(),e=$(".page-sidebar-menu");if("click"===b||"set"===b?c=$(c):"match"===b&&e.find("li > a").each(function(){var a=$(this).attr("href").toLowerCase();if(a.length>1&&d.substr(1,a.length-1)==a.substr(1))return void(c=$(this))}),c&&0!=c.size()&&"javascript:;"!==c.attr("href").toLowerCase()&&"#"!==c.attr("href").toLowerCase()){parseInt(e.data("slide-speed")),e.data("keep-expanded");e.find("li.active").removeClass("active"),e.find("li > a > .selected").remove(),!1===e.hasClass("page-sidebar-menu-hover-submenu")?e.find("li.open").each(function(){0===$(this).children(".sub-menu").size()&&($(this).removeClass("open"),$(this).find("> a > .arrow.open").removeClass("open"))}):e.find("li.open").removeClass("open"),c.parents("li").each(function(){$(this).addClass("active"),$(this).find("> a > span.arrow").addClass("open"),1===$(this).parent("ul.page-sidebar-menu").size()&&$(this).find("> a").append('<span class="selected"></span>'),1===$(this).children("ul.sub-menu").size()&&$(this).addClass("open")}),"click"===b&&Metronic.getViewPort().width<a&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click()}},d=function(){jQuery(".page-sidebar").on("click","li > a",function(c){var d=$(this).next().hasClass("sub-menu");if(!(Metronic.getViewPort().width>=a&&1===$(this).parents(".page-sidebar-menu-hover-submenu").size())){if(!1===d)return void(Metronic.getViewPort().width<a&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click());if(!$(this).next().hasClass("sub-menu always-open")){var e=$(this).parent().parent(),f=$(this),g=$(".page-sidebar-menu"),h=jQuery(this).next(),i=g.data("auto-scroll"),j=parseInt(g.data("slide-speed"));!0!==g.data("keep-expanded")&&(e.children("li.open").children("a").children(".arrow").removeClass("open"),e.children("li.open").children(".sub-menu:not(.always-open)").slideUp(j),e.children("li.open").removeClass("open"));var k=-200;h.is(":visible")?(jQuery(".arrow",jQuery(this)).removeClass("open"),jQuery(this).parent().removeClass("open"),h.slideUp(j,function(){
+!0===i&&!1===$("body").hasClass("page-sidebar-closed")&&($("body").hasClass("page-sidebar-fixed")?g.slimScroll({scrollTo:f.position().top}):Metronic.scrollTo(f,k)),b()})):d&&(jQuery(".arrow",jQuery(this)).addClass("open"),jQuery(this).parent().addClass("open"),h.slideDown(j,function(){!0===i&&!1===$("body").hasClass("page-sidebar-closed")&&($("body").hasClass("page-sidebar-fixed")?g.slimScroll({scrollTo:f.position().top}):Metronic.scrollTo(f,k)),b()})),c.preventDefault()}}}),jQuery(".page-sidebar").on("click"," li > a.ajaxify",function(b){b.preventDefault(),Metronic.scrollTop();var c=$(this).attr("href"),d=jQuery(".page-sidebar ul"),e=($(".page-content"),$(".page-content .page-content-body"));d.children("li.active").removeClass("active"),d.children("arrow.open").removeClass("open"),$(this).parents("li").each(function(){$(this).addClass("active"),$(this).children("a > span.arrow").addClass("open")}),$(this).parents("li").addClass("active"),Metronic.getViewPort().width<a&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click(),Metronic.startPageLoading();var f=$(this);$.ajax({type:"GET",cache:!1,url:c,dataType:"html",success:function(a){0===f.parents("li.open").size()&&$(".page-sidebar-menu > li.open > a").click(),Metronic.stopPageLoading(),e.html(a),Layout.fixContentHeight(),Metronic.initAjax()},error:function(a,b,c){Metronic.stopPageLoading(),e.html("<h4>Could not load the requested content.</h4>")}})}),jQuery(".page-content").on("click",".ajaxify",function(b){b.preventDefault(),Metronic.scrollTop();var c=$(this).attr("href"),d=($(".page-content"),$(".page-content .page-content-body"));Metronic.startPageLoading(),Metronic.getViewPort().width<a&&$(".page-sidebar").hasClass("in")&&$(".page-header .responsive-toggler").click(),$.ajax({type:"GET",cache:!1,url:c,dataType:"html",success:function(a){Metronic.stopPageLoading(),d.html(a),Layout.fixContentHeight(),Metronic.initAjax()},error:function(a,b,c){d.html("<h4>Could not load the requested content.</h4>"),Metronic.stopPageLoading()}})}),g(),$(".page-sidebar").on("click",".sidebar-search .remove",function(a){a.preventDefault(),$(".sidebar-search").removeClass("open")}),$(".page-sidebar .sidebar-search").on("keypress","input.form-control",function(a){if(13==a.which)return $(".sidebar-search").submit(),!1}),0!==$(".sidebar-search").size()&&($(".sidebar-search .input-group").on("click",function(a){a.stopPropagation()}),$("body").on("click",function(){$(".sidebar-search").hasClass("open")&&$(".sidebar-search").removeClass("open")}))},e=function(){var a=Metronic.getViewPort().height-$(".page-header").outerHeight();return $("body").hasClass("page-footer-fixed")&&(a-=$(".page-footer").outerHeight()),a},f=function(){var c=$(".page-sidebar-menu");if(Metronic.destroySlimScroll(c),0===$(".page-sidebar-fixed").size())return void b();Metronic.getViewPort().width>=a&&(c.attr("data-height",e()),Metronic.initSlimScroll(c),b())},g=function(){var a=$("body");a.hasClass("page-sidebar-fixed")&&$(".page-sidebar").on("mouseenter",function(){a.hasClass("page-sidebar-closed")&&$(this).find(".page-sidebar-menu").removeClass("page-sidebar-menu-closed")}).on("mouseleave",function(){a.hasClass("page-sidebar-closed")&&$(this).find(".page-sidebar-menu").addClass("page-sidebar-menu-closed")})},h=function(){$("body");$.cookie&&"1"===$.cookie("sidebar_closed")&&Metronic.getViewPort().width>=a?($("body").addClass("page-sidebar-closed"),$(".page-sidebar-menu").addClass("page-sidebar-menu-closed")):$.cookie&&$.cookie("sidebar_closed","0")},i=function(){$(".page-header").on("click",'.hor-menu a[data-toggle="tab"]',function(a){a.preventDefault();var b=$(".hor-menu .nav"),c=b.find("li.current");$("li.active",c).removeClass("active"),$(".selected",c).remove();var d=$(this).parents("li").last();d.addClass("current"),d.find("a:first").append('<span class="selected"></span>')}),$(".page-header").on("click",".search-form",function(a){$(this).addClass("open"),$(this).find(".form-control").focus(),$(".page-header .search-form .form-control").on("blur",function(a){$(this).closest(".search-form").removeClass("open"),$(this).unbind("blur")})}),$(".page-header").on("keypress",".hor-menu .search-form .form-control",function(a){if(13==a.which)return $(this).closest(".search-form").submit(),!1}),$(".page-header").on("mousedown",".search-form.open .submit",function(a){a.preventDefault(),a.stopPropagation(),$(this).closest(".search-form").submit()}),$('[data-hover="megamenu-dropdown"]').not(".hover-initialized").each(function(){$(this).dropdownHover(),$(this).addClass("hover-initialized")}),$(document).on("click",".mega-menu-dropdown .dropdown-menu",function(a){a.stopPropagation()})},j=function(){$("body").on("shown.bs.tab",'a[data-toggle="tab"]',function(){b()})},k=function(){var a=300,b=500;navigator.userAgent.match(/iPhone|iPad|iPod/i)?$(window).bind("touchend touchcancel touchleave",function(c){$(this).scrollTop()>a?$(".scroll-to-top").fadeIn(b):$(".scroll-to-top").fadeOut(b)}):$(window).scroll(function(){$(this).scrollTop()>a?$(".scroll-to-top").fadeIn(b):$(".scroll-to-top").fadeOut(b)}),$(".scroll-to-top").click(function(a){return a.preventDefault(),$("html, body").animate({scrollTop:0},b),!1})},l=function(){var b,c=$(".full-height-content");if(b=Metronic.getViewPort().height-$(".page-header").outerHeight(!0)-$(".page-footer").outerHeight(!0)-$(".page-title").outerHeight(!0)-$(".page-bar").outerHeight(!0),c.hasClass("portlet")){var d=c.find(".portlet-body");if(Metronic.getViewPort().width<a)return void Metronic.destroySlimScroll(d.find(".full-height-content-body"));b=b-c.find(".portlet-title").outerHeight(!0)-parseInt(c.find(".portlet-body").css("padding-top"))-parseInt(c.find(".portlet-body").css("padding-bottom"))-2,c.hasClass("full-height-content-scrollable")?(b-=35,d.find(".full-height-content-body").css("height",b),Metronic.initSlimScroll(d.find(".full-height-content-body"))):d.css("min-height",b)}else{if(Metronic.getViewPort().width<a)return void Metronic.destroySlimScroll(c.find(".full-height-content-body"));c.hasClass("full-height-content-scrollable")?(b-=35,c.find(".full-height-content-body").css("height",b),Metronic.initSlimScroll(c.find(".full-height-content-body"))):c.css("min-height",b)}};return{initHeader:function(){i()},setSidebarMenuActiveLink:function(a,b){c(a,b)},initSidebar:function(){f(),d(),h(),Metronic.isAngularJsApp()&&c("match"),Metronic.addResizeHandler(f)},initContent:function(){l(),j(),Metronic.addResizeHandler(b),Metronic.addResizeHandler(l)},initFooter:function(){k()},init:function(){this.initHeader(),this.initSidebar(),this.initContent(),this.initFooter()},fixContentHeight:function(){b()},initFixedSidebarHoverEffect:function(){g()},initFixedSidebar:function(){f()},getLayoutImgPath:function(){return Metronic.getAssetsPath()+"img/"},getLayoutCssPath:function(){return Metronic.getAssetsPath()+"css/"}}}();angular.module("xCallyShuttleApp").run(["$templateCache",function(a){a.put("app/adminreset/adminreset.html",'\x3c!-- BEGIN LOGO --\x3e\n<div class="logo" data-ng-init="getInfo()">\n\t<a href="index.html">\n\t\t<img ng-src="api/settings/logo/login" alt="logo" class="custom-login-logo" onError="this.onerror=null"/>\n\t</a>\n</div>\n\x3c!-- END LOGO --\x3e\n\x3c!-- BEGIN RESET --\x3e\n<div class="content">\n\t\x3c!-- BEGIN RESET FORM --\x3e\n\t<form name="resetForm" data-ng-submit="resetForm.$valid && updatePassword()" novalidate>\n\t\t<h3>{{\'APPLICATION_RESET_PASSWORD\' | translate}}</h3>\n\t\t<p>\n\t\t\t{{\'MESSAGE_FIRST_LOGIN_PASSWORD_RESET\' | translate}}\n\t\t</p>\n\t\t<div class="form-group" data-ng-class="{\'has-error\': resetForm.$submitted && resetForm.password.$invalid}">\n\t\t\t<label class="control-label">{{\'APPLICATION_NEW_PASSWORD\' | translate}}</label>\n\t\t\t<div class="input-icon">\n\t\t\t\t<i class="icon-key"></i>\n\t\t\t\t<input class="form-control form-control-solid placeholder-no-fix" type="password" placeholder="{{\'APPLICATION_NEW_PASSWORD\' | translate}}" name="password" ng-model="user.password"  data-ng-pattern="setting.securePassword ? settings.patternPassword : settings.patternPasswordLight" required/>\n\t\t\t</div>\n\t\t\t<span class="help-block">\n\t\t\t\t{{setting.securePassword ? \'MESSAGE_PASSWORD_FORMAT\' : \'MESSAGE_PASSWORD_LIGHT_FORMAT\' | translate}}\n\t\t\t</span>\n\t\t\t<span data-ng-show="resetForm.$submitted && resetForm.password.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n\t\t\t<span data-ng-show="(resetForm.password.$touched || resetForm.$submitted) && resetForm.password.$error.pattern" class="help-block help-block-error">\n\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n\t\t\t</span>\n\t\t</div>\n\t\t<div class="form-group" data-ng-class="{\'has-error\': resetForm.$submitted && resetForm.rePassword.$invalid}">\n\t\t\t<label class="control-label">{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}</label>\n\t\t\t<div class="input-icon">\n\t\t\t\t<i class="icon-key"></i>\n\t\t\t\t<input class="form-control form-control-solid placeholder-no-fix" type="password" placeholder="{{\'APPLICATION_RE_TYPE_NEW_PASSWORD\' | translate}}" name="rePassword" ng-model="user.rePassword" nx-equal="user.password" required/>\n\t\t\t</div>\n\t\t\t<span data-ng-show="resetForm.$submitted && resetForm.rePassword.$invalid" class="help-block">{{\'MESSAGE_REQUIRED_FIELD\' | translate}}</span>\n\t\t\t<span data-ng-show="(resetForm.password.$touched || resetForm.$submitted) && resetForm.$error.nxEqual" class="help-block help-block-error">\n\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_PASSWORD\' | translate}}.\n\t\t\t</span>\n\t\t</div>\n\t\t<div class="form-actions">\n\t\t\t<button type="submit" class="btn btn-success uppercase">{{\'APPLICATION_SUBMIT\' | translate}}</button>\n\t\t</div>\n\t</form>\n\t\x3c!-- END RESET FORM--\x3e\n\t\t<div class="login-options">\n\t\t\t<h4>{{\'APPLICATION_FOLLOW_US\' | translate}}</h4>\n\t\t\t<ul class="social-icons">\n\t\t\t\t<li>\n\t\t\t\t\t<a class="social-icon-color facebook" data-original-title="facebook" href="https://www.facebook.com/xenialab"></a>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<a class="social-icon-color twitter" data-original-title="Twitter" href="https://twitter.com/xenialab"></a>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<a class="social-icon-color googleplus" data-original-title="Goole Plus" href="#"></a>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<a class="social-icon-color linkedin" data-original-title="Linkedin" href="#"></a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n</div>\n<div class="copyright">\n\txCALLY Motion v. {{info.version}} | 2016 - {{year + 1}} &copy; Powered by Xenialab <ng-bind-html data-ng-if="license.custom && !settings.defaultFooterWhiteLabel && settings.footerWhiteLabel" ng-bind-html="\'| \'+settings.footerWhiteLabel"></ng-bind-html>\n</div>\n\x3c!-- END RESET --\x3e\n'),a.put("app/analytic/extracted/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="fa fa-file-pdf-o"></i>\n\t\t\t\t\t<a href="/analytics/extracted/list">{{ \'APPLICATION_EXTRACTED_REPORTS\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="fa fa-file-pdf-o font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_EXTRACTED_REPORTS\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> --\x3e\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/analytic/metric/list/create.modal.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_NEW_METRIC\' | translate }}</h3>\n</div>\n<div class="modal-body">\n  <form name="forms.metric" novalidate>\n\n    \x3c!-- START NAME --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$invalid}">\n      <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n      <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n      <span data-ng-show="(forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END NAME --\x3e\n\n    \x3c!-- START TABLE --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$invalid}">\n      <label class="control-label">{{\'APPLICATION_TABLE\' | translate}}<span class="required" aria-required="true">*</span></label>\n      <ui-select data-ng-model="item.table" name="table" theme="bootstrap" required>\n        <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match>\n        <ui-select-choices repeat="table.value as table in tables | filter: $select.search">\n          <div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div>\n        </ui-select-choices>\n      </ui-select>\n      <span data-ng-show="(forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END TABLE--\x3e\n\n    \x3c!-- START METRIC --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$invalid}">\n      <label class="control-label">{{\'APPLICATION_METRIC\' | translate}}<span class="required" aria-required="true">*</span></label>\n      <textarea type="text" name="metric" placeholder="{{\'APPLICATION_METRIC\' | translate}}" class="form-control" data-ng-model="item.metric" required/></textarea>\n      <span data-ng-show="(forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END METRIC --\x3e\n\n    \x3c!-- START DESCRIPTION --\x3e\n    <div class="form-group">\n      <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n      <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n    </div>\n    \x3c!-- END DESCRIPTION --\x3e\n\n  </form>\n</div>\n<div class="modal-footer">\n  <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.metric.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n  <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/analytic/metric/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-calculator"></i>\n\t\t\t\t\t<a href="/analytics/metrics/list">{{ \'APPLICATION_METRICS\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t\x3c!-- <div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-calculator font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_DEFAULT_METRICS\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t</div>\n\t\t\t</div> --\x3e\n\t\t\t\x3c!-- <div class="portlet-body"> --\x3e\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t\x3c!-- <div ui-grid="gridOptionsDefault" data-ng-if="gridOptionsDefault" name="gridOptionsDefault"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptionsDefault.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t\t\t</div> --\x3e\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t\x3c!-- </div> --\x3e\n\t\t\t<div class="portlet-title">\x3c!-- removed margin-top20 class from title when commented the default metrics section--\x3e\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-calculator font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_METRICS\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="btn-group">\n\t\t\t\t\t\t<button class="btn green-jungle " ng-click="create()">\n\t\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_METRIC\' | translate }}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> --\x3e\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions" data-ng-if="gridOptions" name="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/analytic/metric/list/view.modal.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_METRIC\' | translate }}</h3>\n</div>\n<div class="modal-body">\n  <form name="forms.metric" novalidate>\n\n    \x3c!-- START NAME --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$invalid}">\n      <label class="control-label">{{\'APPLICATION_NAME\' | translate}}</label>\n      <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required readonly/>\n      <span data-ng-show="(forms.metric.name.$touched || forms.metric.$submitted) && forms.metric.name.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END NAME --\x3e\n\n    \x3c!-- START TABLE --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$invalid}">\n      <label class="control-label">{{\'APPLICATION_TABLE\' | translate}}</label>\n      <ui-select data-ng-model="item.table" name="table" theme="bootstrap" required data-ng-disabled="true">\n        <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match>\n        <ui-select-choices repeat="table.value as table in tables | filter: $select.search">\n          <div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div>\n        </ui-select-choices>\n      </ui-select>\n      <span data-ng-show="(forms.metric.table.$touched || forms.metric.$submitted) && forms.metric.table.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END TABLE--\x3e\n\n    \x3c!-- START METRIC --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$invalid}">\n      <label class="control-label">{{\'APPLICATION_METRIC\' | translate}}</label>\n      <textarea type="text" name="metric" placeholder="{{\'APPLICATION_METRIC\' | translate}}" class="form-control" data-ng-model="item.metric" required readonly/></textarea>\n      <span data-ng-show="(forms.metric.metric.$touched || forms.metric.$submitted) && forms.metric.metric.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END METRIC --\x3e\n\n    \x3c!-- START DESCRIPTION --\x3e\n    <div class="form-group">\n      <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n      <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description" readonly></textarea>\n    </div>\n    \x3c!-- END DESCRIPTION --\x3e\n\n  </form>\n</div>\n<div class="modal-footer">\n  <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/analytic/metric/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="getMetric()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-eye"></i>\n\t\t\t\t\t<a href="/analytics/metrics/list">{{ \'APPLICATION_METRICS\' | translate }}</a>\n\t\t\t\t\t<i data-ng-show="metric" class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li data-ng-show="metric">\n\t\t\t\t\t<a href="#">{{metric.name}}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE SIDEBAR --\x3e\n\t\t<div class="profile-sidebar">\n\t\t\t\x3c!-- PORTLET MAIN --\x3e\n\t\t\t<div class="portlet light profile-sidebar-portlet">\n\t\t\t\t\x3c!-- SIDEBAR USERPIC --\x3e\n\t\t\t\t<div class="profile-image">\n\t\t\t\t\t<img data-ng-src="assets/images/media/metric.png" class="img-responsive">\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USERPIC --\x3e\n\t\t\t\t\x3c!-- SIDEBAR USER TITLE --\x3e\n\t\t\t\t<div class="profile-usertitle">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{metric.name}}\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- <div class="profile-usertitle-job">\n\t\t\t\t\t\t{{user.role}}\n\t\t\t\t\t</div> --\x3e\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USER TITLE --\x3e\n\n\t\t\t\t\x3c!-- SIDEBAR MENU --\x3e\n\t\t\t\t<div class="profile-usermenu">\n\t\t\t\t\t<ul class="nav">\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.analytics.metrics.view.settings\')}">\n\t\t\t\t\t\t\t<a data-ng-href="/analytics/metrics/view/{{metric.id}}/settings">\n\t\t\t\t\t\t\t<i class="icon-settings"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_SETTINGS\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END MENU --\x3e\n\t\t\t</div>\n\t\t\t\x3c!-- END PORTLET MAIN --\x3e\n\t\t</div>\n\t\t\x3c!-- END BEGIN PROFILE SIDEBAR --\x3e\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/analytic/metric/view/view.settings.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_METRIC\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n\t\t\t\t</div>\n\t\t\t\t<ul class="nav nav-tabs">\n\t\t\t\t\t<li class="active">\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\n\t\t\t<div class="portlet-body">\n\t\t\t\t<div class="tab-content">\n\t\t\t\t\t\x3c!-- GENERAL TAB --\x3e\n\t\t\t\t\t<div class="tab-pane active" id="tab_1_1">\n\t\t\t\t\t\t<form name="forms.general" data-ng-submit="forms.general.$valid && updateMetric()" novalidate>\n\n\t\t\t\t\t\t\t\x3c!-- START NAME --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="metric.name" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.table.$touched || forms.general.$submitted) && forms.general.table.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_TABLE\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<ui-select data-ng-model="metric.table" name="table" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="table.value as table in tables | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.table.$touched || forms.general.$submitted) && forms.general.table.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END TABLE--\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START METRIC --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.metric.$touched || forms.general.$submitted) && forms.general.metric.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_METRIC\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<textarea type="text" name="metric" placeholder="{{\'APPLICATION_METRIC\' | translate}}" class="form-control" data-ng-model="metric.metric" required/></textarea>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.metric.$touched || forms.general.$submitted) && forms.general.metric.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END METRIC --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t\t\t<textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="metric.description"></textarea>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END ADVANCED TAB --\x3e\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/analytic/report/list/copy.modal.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_COPY_REPORT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n  <div class="portlet light bordered">\n    <div class="portlet-title">\n      <div class="caption font-green-sharp" style="padding-left:10px;">\n        <i class="icon-folder font-green-sharp"></i>\n        <span class="caption-subject">{{ \'APPLICATION_COPY_TO\' | translate }} </span>\n      </div>\n    </div>\n    <div class="portlet-body">\n      <div js-tree="customTreeConfig" ng-model="customTreeData" should-apply="ac()" tree="customTreeInstance" tree-events="ready:initCustomScopeTree;"></div>\n    </div>\n  </div>\n  <div class="has-error">\n    <span data-ng-show="showAlert" class="help-block help-block-error">\n    <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_SELECT_FOLDER\' | translate}}.\n  </span>\n  </div>\n</div>\n<div class="modal-footer">\n  <button class="btn btn-success" type="button" data-ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n  <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),
 a.put("app/analytic/report/list/create.modal.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_NEW_REPORT\' | translate }}</h3>\n</div>\n<div class="modal-body">\n  <form name="forms.report" novalidate>\n\n    \x3c!-- START NAME --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (forms.report.name.$touched || forms.report.$submitted) && forms.report.name.$invalid}">\n      <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n      <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n      <span data-ng-show="(forms.report.name.$touched || forms.report.$submitted) && forms.report.name.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END NAME --\x3e\n\n    \x3c!-- START DESCRIPTION --\x3e\n    <div class="form-group">\n      <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n      <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n    </div>\n    \x3c!-- END DESCRIPTION --\x3e\n\n    <div class="form-group" data-ng-class="{\'has-error\': (forms.report.name.$touched || forms.report.$submitted) && forms.report.name.$invalid}">\n      <label class="control-label">{{\'APPLICATION_PATH\' | translate}}<span class="required" aria-required="true"></span></label>\n      <input type="text" name="name" placeholder="{{\'APPLICATION_PATH\' | translate}}" class="form-control" data-ng-model="path" disabled/>\n      <span data-ng-show="(forms.report.name.$touched || forms.report.$submitted) && forms.report.name.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n\n  </form>\n</div>\n<div class="modal-footer">\n  <button class="btn btn-success" type="button" ng-click="ok()" ng-disabled="forms.report.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n  <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/analytic/report/list/deleteNode.modal.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_DELETE_FOLDER\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<p>\n  {{\'MESSAGE_DELETE_NODE\' | translate}} : <b>{{node}}</b>?\n</p>\n<p>\n  {{\'MESSAGE_ALL_REPORTS_WILL_BE_DELETED\' | translate}}\n</p>\n</div>\n<div class="modal-footer">\n  <button class="btn btn-danger" type="button" ng-click="ok()" ng-disabled="forms.report.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n  <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/analytic/report/list/extract.modal.html",'<div class="modal-header">\n  <button type="button" ng-click="cancel()" class="close">×</button>\n  <h4 class="modal-title">{{ \'APPLICATION_EXTRACT_REPORT\' | translate }}</h4>\n</div>\n<div class="modal-body" style="text-align:center;">\n  <form name="forms.report" class="form-inline mbottom20" novalidate>\n    <div class="form-group" data-ng-class="{\'hidden\':daily}">\n      <label class="control-label">{{\'APPLICATION_DATE_RANGE\' | translate}}</label>\n      <input type="daterange" name="dates" ranges="ranges" style="min-width:190px;" enabletimepicker="timepicker" placeholder="{{\'APPLICATION_DATE_RANGE\' | translate}}" class="form-control" data-ng-model="dates" max-date="{{maxdate}}" data-ng-required="!daily" data-ng-disabled="daily" data-ng-class="{\'disabled-invisible\':daily}" style="cursor:pointer;" readonly/>\n    </div>\n    <div class="form-group" data-ng-if="daily">\n      <label class="control-label">{{\'APPLICATION_FROM\' | translate}}</label>\n    </div>\n    <div class="form-group" data-ng-if="daily">\n      <uib-timepicker ng-model="dailyTime.start" ng-change="changed()" hour-step="1" minute-step="1" show-meridian="false"></uib-timepicker>\n    </div>\n    <div class="form-group" data-ng-if="daily">\n      <label class="control-label">{{\'APPLICATION_TO\' | translate}}</label>\n    </div>\n    <div class="form-group" data-ng-if="daily">\n      <uib-timepicker ng-model="dailyTime.end" ng-change="changed()" hour-step="1" minute-step="1" show-meridian="false"></uib-timepicker>\n    </div>\n      \x3c!-- START STATUS --\x3e\n      <div class="form-group">\n      <input\n      bs-switch\n      class="form-control"\n      ng-model="daily"\n      type="checkbox"\n      name="auth"\n      switch-active="{{ dailySwitch.isActive }}"\n      switch-on-text="{{ dailySwitch.onText }}"\n      switch-off-text="{{ dailySwitch.offText }}"\n      switch-on-color="{{ dailySwitch.onColor }}"\n      switch-off-color="{{ dailySwitch.offColor }}"\n      switch-animate="{{ dailySwitch.animate }}"\n      switch-size="{{ dailySwitch.size }}"\n      switch-label="{{ dailySwitch.label }}"\n      switch-icon="{{ dailySwitch.icon }}"\n      switch-radio-off="{{ dailySwitch.radioOff }}"\n      switch-label-width="{{ dailySwitch.labelWidth }}"\n      switch-handle-width="{{ dailySwitch.handleWidth }}">\n    </div>\n  </form>\n</div>\n<div class="modal-footer">\n  <button class="btn default green-jungle" type="button" data-ng-click="extract(\'csv\')"><i class="fa fa-file-excel-o"></i> {{ \'APPLICATION_SAVE_AS_CSV\' | translate }}</button>\n  <button class="btn default red-intense" type="button" data-ng-click="extract(\'pdf\')"><i class="fa fa-file-pdf-o"></i> {{ \'APPLICATION_SAVE_AS_PDF\' | translate }}</button>\n  <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/analytic/report/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="getTrees()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-book-open"></i>\n\t\t\t\t\t<a href="/analytics/reports/list">{{ \'APPLICATION_REPORTS\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\t\t<div class="col-fixed">\n\t\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t\t<div class="portlet light bordered">\n\t\t\t\t<div class="portlet-title">\n\t\t\t\t\t<div class="caption font-green-sharp" style="padding-left:10px;">\n\t\t\t\t\t\t<i class="icon-folder font-green-sharp"></i>\n\t\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_FOLDERS\' | translate }} </span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="inputs">\n\t\t\t\t\t\t<div class="portlet-input input-inline input-small">\n\t\t\t\t\t\t\t<div class="input-icon right">\n\t\t\t\t\t\t\t\t<i class="icon-magnifier"></i>\n\t\t\t\t\t\t\t\t<input type="text" data-ng-model="searchField" data-ng-change="searchTrees()" class="form-control input-circle" placeholder="search...">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t<div js-tree="defaultTreeConfig" ng-model="defaultTreeData" should-apply="ac()" tree="defaultTreeInstance" tree-events="ready:initDefaultScopeTree;select_node:selectDefaultNode;"></div>\n\t\t\t\t\t<div js-tree="customTreeConfig" ng-model="customTreeData" should-apply="ac()" tree="customTreeInstance" tree-events="ready:initCustomScopeTree;select_node:selectCustomNode;rename_node:updateCustomTree;delete_node:updateCustomTree;move_node:updateCustomTree;create_node:updateCustomTree;"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t\t</div>\n\t\t<div class="row tree-row">\n\t\t\t<div class="col-md-12">\n\t\t\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t\t\t<div class="portlet light bordered">\n\t\t\t\t\t<div class="portlet-title">\n\t\t\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t\t\t<i class="icon-book-open font-green-sharp"></i>\n\t\t\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_REPORTS\' | translate }}<span data-ng-if="selectedNode"> - {{selectedNode}}</span></span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div data-ng-if="!defaultTreeActive" class="actions">\n\t\t\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="btn-group">\n\t\t\t\t\t\t\t\t<span class="btn default btn-file">\n\t\t\t\t\t\t\t\t<span class="fileinput-new">\n\t\t\t\t\t\t\t\t<i class="icon-cloud-upload"></i> {{\'APPLICATION_IMPORT_FROM_JSON\' | translate}}</span>\n\t\t\t\t\t\t\t\t<input type="file" on-read-file="import($fileContent)"/>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="btn-group">\n\t\t\t\t\t\t\t\t<button class="btn green-jungle " ng-click="create()">\n\t\t\t\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_REPORT\' | translate }}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\t<div ng-slide-down="gridOptions" lazy-render duration="1">\n\t\t\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/analytic/report/list/preview.modal.html",'<div class="modal-header">\n  <button type="button" ng-click="cancel()" class="close">×</button>\n  <h4 class="modal-title">{{ \'APPLICATION_REPORT_PREVIEW\' | translate }}</h4>\n</div>\n<div class="modal-body" style="text-align:center;">\n  <form name="forms.report" class="form-inline mbottom20" novalidate>\n    <div class="form-group" data-ng-class="{\'hidden\':daily}">\n      <label class="control-label">{{\'APPLICATION_DATE_RANGE\' | translate}}<span class="required" aria-required="true"></span></label>\n      <input type="daterange" name="dates" ranges="ranges" style="min-width:190px;" enabletimepicker="timepicker" placeholder="{{\'APPLICATION_DATE_RANGE\' | translate}}" class="form-control" data-ng-model="dates" data-ng-change="getPage()" max-date="{{maxdate}}" data-ng-required="!daily" data-ng-disabled="daily" data-ng-class="{\'disabled-invisible\':daily}" style="cursor:pointer;" readonly/>\n    </div>\n    <div class="form-group" data-ng-if="daily">\n      <label class="control-label">{{\'APPLICATION_FROM\' | translate}}</label>\n    </div>\n    <div class="form-group" data-ng-if="daily">\n      <uib-timepicker ng-model="dailyTime.start" ng-change="changed()" hour-step="1" minute-step="1" show-meridian="false"></uib-timepicker>\n    </div>\n    <div class="form-group" data-ng-if="daily">\n      <label class="control-label">{{\'APPLICATION_TO\' | translate}}</label>\n    </div>\n    <div class="form-group" data-ng-if="daily">\n      <uib-timepicker ng-model="dailyTime.end" ng-change="changed()" hour-step="1" minute-step="1" show-meridian="false"></uib-timepicker>\n    </div>\n    <div class="form-group" data-ng-if="daily">\n      <button class="btn btn-small btn-sm btn-success" data-ng-click="getPage()">Apply</button>\n    </div>\n      <div class="form-group">\n      <input\n      bs-switch\n      class="form-control"\n      ng-model="daily"\n      type="checkbox"\n      name="auth"\n      data-ng-change="getPage()"\n      switch-active="{{ dailySwitch.isActive }}"\n      switch-on-text="{{ dailySwitch.onText }}"\n      switch-off-text="{{ dailySwitch.offText }}"\n      switch-on-color="{{ dailySwitch.onColor }}"\n      switch-off-color="{{ dailySwitch.offColor }}"\n      switch-animate="{{ dailySwitch.animate }}"\n      switch-size="{{ dailySwitch.size }}"\n      switch-label="{{ dailySwitch.label }}"\n      switch-icon="{{ dailySwitch.icon }}"\n      switch-radio-off="{{ dailySwitch.radioOff }}"\n      switch-label-width="{{ dailySwitch.labelWidth }}"\n      switch-handle-width="{{ dailySwitch.handleWidth }}">\n    </div>\n  </form>\n  <div ng-slide-down="showResult" lazy-render duration="1">\n    <div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter class="grid extract-grid">\n      <div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n    </div>\n  </div>\n</div>\n<div class="modal-footer">\n<button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/analytic/report/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="getReport()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-book-open"></i>\n\t\t\t\t\t<a href="/analytics/reports/list">{{ \'APPLICATION_REPORTS\' | translate }}</a>\n\t\t\t\t\t<i data-ng-show="report" class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li data-ng-show="report">\n\t\t\t\t\t<a href="#">{{report.name}}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/analytic/report/view/view.settings.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<div class="caption-subject font-blue-madison bold uppercase dot">{{ \'APPLICATION_REPORT\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} - {{report.name}} </div>\n\t\t\t\t</div>\n\t\t\t\t<ul class="nav nav-tabs">\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li class="active">\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_2" data-toggle="tab">{{ \'APPLICATION_BUILD\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_3" data-toggle="tab" data-ng-click="showResult = true">{{ \'APPLICATION_TEST_PREVIEW\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\n\t\t\t<div class="portlet-body">\n\n\t\t\t\t<div class="tab-content">\n\n\t\t\t\t\t\x3c!-- GENERAL TAB --\x3e\n\t\t\t\t\t<div class="tab-pane" id="tab_1_1">\n\t\t\t\t\t\t<form name="forms.general" data-ng-submit="forms.report.$valid && forms.general.$valid && updateReport()" novalidate>\n\n\t\t\t\t\t\t\t\x3c!-- START NAME --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="report.name" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t\t\t<textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="report.description"></textarea>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END GENERAL TAB --\x3e\n\n\t\t\t\t\t\x3c!-- BUILD TAB --\x3e\n\t\t\t\t\t<div class="tab-pane active" id="tab_1_2">\n\t\t\t\t\t\t<form name="forms.report" data-ng-submit="forms.report.$valid && forms.general.$valid && updateReport()" novalidate>\n\t\t\t\t\t\t\t\x3c!-- START TABLE INPUT --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.report.table.$touched || forms.report.$submitted) && forms.report.table.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_TABLE\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<ui-select data-ng-model="report.table" name="table" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{\'APPLICATION_\'+$select.selected.value.toUpperCase() | translate}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t<ui-select-choices group-by="\'channel\'" repeat="table.value as table in tables | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="\'APPLICATION_\'+table.value.toUpperCase() | translate | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.report.table.$touched || forms.report.$submitted) && forms.report.table.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END TABLE INPUT--\x3e\n\t\t\t\t\t\t\t<div data-ng-if="report.table" class="mbottom20 pbottom20 table-responsive">\n\t\t\t\t\t\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t\t\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_FIELDS\' | translate}} </span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t\t\t\t\t<table class="table table-striped table-bordered table-hover">\n\t\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t<th>{{ \'APPLICATION_FIELD\' | translate }} / {{ \'APPLICATION_METRIC\' | translate }}</th>\n\t\t\t\t\t\t\t\t\t\t\t<th style="min-width:167px;">{{ \'APPLICATION_ALIAS\' | translate }}</th>\n\t\t\t\t\t\t\t\t\t\t\t<th>{{ \'APPLICATION_FUNCTION\' | translate }}</th>\n\t\t\t\t\t\t\t\t\t\t\t<th>{{ \'APPLICATION_FORMAT\' | translate }}</th>\n\t\t\t\t\t\t\t\t\t\t\t<th>{{ \'APPLICATION_GROUP_BY\' | translate }}</th>\n\t\t\t\t\t\t\t\t\t\t\t<th>{{ \'APPLICATION_ORDER_BY\' | translate }}</th>\n\t\t\t\t\t\t\t\t\t\t\t<th></th>\n\t\t\t\t\t\t\t\t\t\t\t<th style="min-width:66px;"></th>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t\t\t<tbody ui-sortable="sortableOptions" data-ng-model="report.Fields">\n\t\t\t\t\t\t\t\t\t\t<tr data-ng-repeat="field in report.Fields">\n\t\t\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- START FIELD --\x3e\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': forms.report.$submitted && !field.field}">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- <label class="control-label">{{\'APPLICATION_FIELD\' | translate}}<span class="required" aria-required="true">*</span></label> --\x3e\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select data-ng-if="!field.custom" data-ng-model="field.field" dynamic-name="randomName()" theme="bootstrap" on-select="setMetricId($item,$index)" required>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}"><span ng-bind-html="$select.selected.name"></span></ui-select-match>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="tableField.value as tableField in tableFields | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="tableField.name | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input data-ng-if="field.custom" type="text" dynamic-name="randomName()" placeholder="{{\'APPLICATION_CUSTOM\' | translate}}" class="form-control" data-ng-model="field.field" required/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class="input-group-btn">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<button type="button" data-ng-click="toggleCustom(field)" class="btn btn-default">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class="icon-pencil" data-ng-class="{\'font-blue\':field.custom}"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span data-ng-show="forms.report.$submitted && !field.field" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- END FIELD--\x3e\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- START ALIAS --\x3e\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': forms.report.$submitted && !field.alias}">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- <label class="control-label">{{\'APPLICATION_ALIAS\' | translate}}<span class="required" aria-required="true">*</span></label> --\x3e\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input type="text" dynamic-name="randomName()" placeholder="{{\'APPLICATION_ALIAS\' | translate}}" class="form-control" data-ng-model="field.alias" data-ng-pattern="\'[A-Za-z0-9 <>=,%_\\\\+*!\\\\-\\\\[\\\\]]+\'" required/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span data-ng-show="forms.report.$submitted && !field.alias" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span data-ng-show="forms.report.$submitted && !field.alias" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- END ALIAS --\x3e\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- START FUNCTION --\x3e\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- <label class="control-label">{{\'APPLICATION_FIELD\' | translate}}<span class="required" aria-required="true">*</span></label> --\x3e\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="field.function" name="function" theme="bootstrap">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{\'APPLICATION_FUNCTION\' | translate}}" allow-clear>{{$select.selected.name}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="function.value as function in functions | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="function.name | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- END FUNCTION--\x3e\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- START FORMAT --\x3e\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- <label class="control-label">{{\'APPLICATION_FIELD\' | translate}}<span class="required" aria-required="true">*</span></label> --\x3e\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="field.format" name="format" theme="bootstrap">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{\'APPLICATION_FORMAT\' | translate}}" allow-clear>{{$select.selected.name}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="format.value as format in formatFunctions | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="format.name | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- END FORMAT--\x3e\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- START GROUP_BY --\x3e\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- <label class="control-label">{{\'APPLICATION_FIELD\' | translate}}<span class="required" aria-required="true">*</span></label> --\x3e\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="field.groupBy" name="groupBy" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{\'APPLICATION_GROUP_BY\' | translate}}">{{$select.selected.name | translate}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="groupBy.value as groupBy in groupByField | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{$translate.instant(groupBy.name)}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- END GROUP_BY--\x3e\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- START ORDER_BY --\x3e\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- <label class="control-label">{{\'APPLICATION_FIELD\' | translate}}<span class="required" aria-required="true">*</span></label> --\x3e\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="field.orderBy" name="orderBy" theme="bootstrap">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{\'APPLICATION_ORDER_BY\' | translate}}" allow-clear>{{$select.selected}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="orderBy in [\'ASC\',\'DESC\'] | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="orderBy | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- END TABLE INPUT--\x3e\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t<td class="report-field-remove">\n\t\t\t\t\t\t\t\t\t\t\t\t<button class="btn red" type="button" data-ng-click="removeField($index)"><i class="fa fa-times"></i></button>\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t<td class="report-field-handle">\n\t\t\t\t\t\t\t\t\t\t\t\t\x3c!-- <img data-ng-src="assets/images/move.png" class="img-responsive"> --\x3e\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t<tr data-ng-hide="report.Fields.length" class="unsortable">\n\t\t\t\t\t\t\t\t\t\t\t<td colspan="8" style="text-align:center;">\n\t\t\t\t\t\t\t\t\t\t\t\t<i>{{ \'MESSAGE_ADD_A_FIELD\' | translate }}</i>\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t<button type="button" class="btn btn-sm green padding-bottom" ng-click="addField()">\n\t\t\t\t\t\t\t\t\t<i class="fa fa-plus"></i> {{\'APPLICATION_ADD_FIELD\' | translate}}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div data-ng-if="report.Fields.length" class="mbottom20 pbottom20">\n\t\t\t\t\t\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t\t\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_CONDITIONS\' | translate}} </span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="alert alert-info">\n\t\t\t\t\t\t\t\t\t<strong>Output</strong>\n\t\t\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t\t\t<span ng-bind-html="output"></span>\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<report-builder group="report.conditions.group" fields="tableFields" forms="forms" firstCall=\'true\'></report-builder>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END BUILD TAB --\x3e\n\n\t\t\t\t\t\x3c!-- PREVIEW TAB --\x3e\n\t\t\t\t\t<div class="tab-pane" id="tab_1_3">\n\t\t\t\t\t\t<div ng-slide-down="showResult" lazy-render duration="0.5">\n\t\t\t\t\t\t\t<div ui-grid="gridOptions" data-ng-if="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-move-columns class="grid">\n\t\t\t\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END PREVIEW TAB --\x3e\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),
 a.put("app/channels/chat/offline/list/list.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t\t<div class="page-bar">\n\t\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="fa fa-spinner"></i>\n\t\t\t\t\t\t<a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n\t\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="icon-bubble"></i>\n\t\t\t\t\t\t<a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n\t\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="icon-login"></i>\n\t\t\t\t\t\t<a href="/channels/chat/offline/list">{{ \'APPLICATION_OFFLINE\' | translate }}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n</div>\n\n\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-question font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_OFFLINE_MESSAGES\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/channels/chat/offline/message/message.directive.html",'<div class="message">\n  <div class="row">\n    <div class="col-md-12">\n      <span class="bold">From: </span>\n      [<a href="" data-ng-click="openContact(message.email)">{{message.email}}</a>]\n    </div>\n  </div>\n  <br>\n  <span class="todo-tasklist-date">\n    <i class="icon-calendar"></i> {{message.createdAt | date:\'medium\'}} (<span am-time-ago="message.createdAt"></span>)\n  </span>\n  <hr>\n  <div class="body text-left message-body" data-ng-bind="message.text"></div>\n  <h5 data-ng-hide="message.text" class="media-heading"><i>{{\'MESSAGE_NO_AVAILABLE_TEXT\' | translate | lowercase}}</i></h5>\n</div>\n'),a.put("app/channels/chat/offline/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="initView();">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="fa fa-spinner"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-bubble"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-login"></i>\n\t\t\t\t\t<a href="/channels/chat/offline/list">Offline</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-user"></i>\n\t\t\t\t\t<a href="#">{{enquiry.username}}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption">\n\t\t\t\t\t<span data-ng-if="enquiry.ChatWebsite" class="caption-subject font-green-sharp bold uppercase">{{enquiry.ChatWebsite.name}}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-md-4">\n\t\t\t\t\t\t\x3c!-- Visitor Information --\x3e\n\t\t\t\t\t\t<div class="portlet">\n\t\t\t\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\t\t\t<v-accordion class="vAccordion--default">\n\t\t\t\t\t\t\t\t\t<v-pane expanded="true">\n\t\t\t\t\t\t\t\t\t\t<v-pane-header>\n\t\t\t\t\t\t\t\t\t\t\t<ng-letter-avatar data-ng-if="enquiry.ChatVisitor" height="40" width="40" data="{{enquiry.ChatVisitor.fullname}}" fontsize="25" avatarcustombgcolor="#B0B0B0" charCount="2" avatarcustomborder="border:2px solid #EA4C61" shape="round"></ng-letter-avatar>\n\t\t\t\t\t\t\t\t\t\t</v-pane-header>\n\t\t\t\t\t\t\t\t\t\t<v-pane-content>\n\t\t\t\t\t\t\t\t\t\t\t{{\'APPLICATION_NAME\' | translate}}:<p>{{enquiry.ChatVisitor.fullname}}</p>\n\t\t\t\t\t\t\t\t\t\t\t{{\'APPLICATION_EMAIL\' | translate}}:<p><a data-ng-click="openContact(enquiry.ChatVisitor.email)" href="">{{enquiry.ChatVisitor.email}}</a></p>\n\t\t\t\t\t\t\t\t\t\t\t<span data-ng-if="enquiry.ChatVisitor.labelOfflineData1">{{enquiry.ChatVisitor.labelOfflineData1}}: <p>{{enquiry.ChatVisitor.offlineData1}}</p></span>\n\t\t\t\t\t\t\t\t\t\t\t<span data-ng-if="enquiry.ChatVisitor.labelOfflineData2">{{enquiry.ChatVisitor.labelOfflineData2}}: <p>{{enquiry.ChatVisitor.offlineData2}}</p></span>\n\t\t\t\t\t\t\t\t\t\t\t<span data-ng-if="enquiry.ChatVisitor.labelOfflineData3">{{enquiry.ChatVisitor.labelOfflineData3}}: <p>{{enquiry.ChatVisitor.offlineData3}}</p></span>\n\t\t\t\t\t\t\t\t\t\t\t{{\'APPLICATION_REMOTE_ADDRESS\' | translate}}:<p>{{enquiry.ChatVisitor.remote_address}}</p>\n\t\t\t\t\t\t\t\t\t\t\t{{\'APPLICATION_BROWSER\' | translate}}:<p>{{enquiry.ChatVisitor.browser}}</p>\n\t\t\t\t\t\t\t\t\t\t\t{{\'APPLICATION_REFERER\' | translate}}:<p>{{enquiry.ChatVisitor.referer}} - {{enquiry.ChatWebsite.name}}</p>\n\t\t\t\t\t\t\t\t\t\t\t{{\'APPLICATION_OS\' | translate}}:<p>{{enquiry.ChatVisitor.os}}</p>\n\t\t\t\t\t\t\t\t\t\t</v-pane-content>\n\t\t\t\t\t\t\t\t\t</v-pane>\n\t\t\t\t\t\t\t\t</v-accordion>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-md-8">\n\t\t\t\t\t\t\x3c!-- Offline message --\x3e\n\t\t\t\t\t\t<div id="mail-box">\n\t\t\t\t\t\t\t<ul class="chats">\n\t\t\t\t\t\t\t\t<li class="in">\n\t\t\t\t\t\t\t\t\t<enquiry-message message="enquiry" list-id="enquiry.ChatWebsite.ListId"></enquiry-message>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t\t</div>\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/channels/chat/online/list/list.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t\t<div class="page-bar">\n\t\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="fa fa-spinner"></i>\n\t\t\t\t\t\t<a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n\t\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="icon-bubble"></i>\n\t\t\t\t\t\t<a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n\t\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="icon-login"></i>\n\t\t\t\t\t\t<a href="/channels/chat/online/list">{{ \'APPLICATION_ONLINE\' | translate }}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n</div>\n\n\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-question font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_VISITORS\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/channels/chat/online/view/view.detail.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_DETAIL\' | translate}}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body row" data-ng-init="initView()">\n\t\t\t\t<div class="col-md-6">\n\t\t\t\t\t<div class="news-blocks">\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t<a href="#" class="inactive-link">{{\'APPLICATION_MESSAGES\' | translate}}</a>\n\t\t\t\t\t\t\t\x3c!-- <a href="#" data-ng-click="export()" data-ng-show="chatRoom.ChatMessages.length" class="btn btn-sm blue pull-right"><i class="icon-cloud-download"></i> {{\'APPLICATION_EXPORT\' | translate}} CSV </a> --\x3e\n\t\t\t\t\t\t\t<a href="api/chat/rooms/{{chatRoom.id}}/export" target="_blank" data-ng-show="chatRoom.ChatMessages.length" class="btn btn-sm blue pull-right"><i class="icon-cloud-download"></i> {{\'APPLICATION_EXPORT\' | translate}} CSV </a>\n\t\t\t\t\t\t\t<hr>\n\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t<div class="news-block-tags">\n\t\t\t\t\t\t\t<em am-time-ago="chatRoom.ChatVisitor.ChatEnquiry.createdAt"></em>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<div ng-scrollbars ng-scrollbars-config="config">\n\t\t\t\t\t\t\t\t<ul class="chats">\n\t\t\t\t\t\t\t\t\t<li data-ng-class="{\'out\': message.User, \'in\':message.ChatVisitor}" data-ng-repeat="message in chatRoom.ChatMessages | orderBy:\'createdAt\'">\n\t\t\t\t\t\t\t\t\t\t<img class="avatar" data-ng-src="api/users/avatar/{{message.User.userpic || \'unknown_avatar\'}}">\n\t\t\t\t\t\t\t\t\t\t<div class="message">\n\t\t\t\t\t\t\t\t\t\t\t<span class="arrow">\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<a href="#" class="name">\n\t\t\t\t\t\t\t\t\t\t\t\t{{message.User ? message.User.fullname : message.ChatVisitor.fullname}}\n\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t<span class="datetime">\n\t\t\t\t\t\t\t\t\t\t\t\tat {{message.createdAt | date: \'medium\'}}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<span class="body">\n\t\t\t\t\t\t\t\t\t\t\t\t{{message.body}}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-md-6">\n\t\t\t\t\t\t<div class="news-blocks">\n\t\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t\t<a href="#" class="inactive-link">{{\'APPLICATION_VISITOR\' | translate}}</a>\n\t\t\t\t\t\t\t\t<hr>\n\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t<div class="margin-top-20 profile-desc-link">\n\t\t\t\t\t\t\t\t<i class="icon-user"></i>\n\t\t\t\t\t\t\t\t<a href="#" class="inactive-link">{{chatRoom.ChatVisitor.fullname}}</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="margin-top-20 profile-desc-link">\n\t\t\t\t\t\t\t\t<i class="icon-envelope"></i>\n\t\t\t\t\t\t\t\t<a href="#" class="inactive-link">{{chatRoom.ChatVisitor.email}}</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="margin-top-20 profile-desc-link">\n\t\t\t\t\t\t\t\t<i class="icon-globe"></i>\n\t\t\t\t\t\t\t\t<a href="#" class="inactive-link">{{chatRoom.ChatVisitor.remote_address}}</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="margin-top-20 profile-desc-link">\n\t\t\t\t\t\t\t\t<i class="icon-home"></i>\n\t\t\t\t\t\t\t\t<a href="#" class="inactive-link">{{chatRoom.ChatVisitor.referer}} - {{chatRoom.ChatVisitor.ChatWebsite.name}}</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="margin-top-20 profile-desc-link">\n\t\t\t\t\t\t\t\t<i class="icon-cursor"></i>\n\t\t\t\t\t\t\t\t<a href="#" class="inactive-link">{{chatRoom.ChatVisitor.browser}}</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="margin-top-20 profile-desc-link">\n\t\t\t\t\t\t\t\t<i class="icon-screen-desktop"></i>\n\t\t\t\t\t\t\t\t<a href="#" class="inactive-link">{{chatRoom.ChatVisitor.os}}</a>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n'),a.put("app/channels/chat/online/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="fa fa-spinner"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-bubble"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-login"></i>\n\t\t\t\t\t<a href="/channels/chat/online/list">Online</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE SIDEBAR --\x3e\n\t\t<div class="profile-sidebar">\n\t\t\t\x3c!-- PORTLET MAIN --\x3e\n\t\t\t<div class="portlet light profile-sidebar-portlet">\n\t\t\t\t\x3c!-- SIDEBAR USERPIC --\x3e\n\t\t\t\t<div class="profile-image">\n\t\t\t\t\t<img data-ng-src="assets/images/media/enquiry.png" class="img-responsive">\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USERPIC --\x3e\n\t\t\t\t\x3c!-- START USER TITLE --\x3e\n\t\t\t\t<div class="profile-usertitle">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{chatRoom.ChatVisitor.email}}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="profile-usertitle-job">\n\t\t\t\t\t\t{{chatRoom.ChatVisitor.fullname}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END USER TITLE --\x3e\n\t\t\t\t\x3c!-- SIDEBAR MENU --\x3e\n\t\t\t\t<div class="profile-usermenu">\n\t\t\t\t\t<ul class="nav">\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.channels.chat.online.view.detail\')}">\n\t\t\t\t\t\t\t<a data-ng-href="/channels/chat/online/view/{{chatRoom.id}}/detail">\n\t\t\t\t\t\t\t<i class="icon-tag"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_DETAIL\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END MENU --\x3e\n\t\t\t</div>\n\t\t\t\x3c!-- END PORTLET MAIN --\x3e\n\t\t</div>\n\t\t\x3c!-- END BEGIN PROFILE SIDEBAR --\x3e\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/channels/chat/preview/preview.html",'<style>\n.xc_header_logo\n{\n\tdisplay:block;\n  background-image:url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/motion_logo.png);\n\twidth:40px;\n\theight:40px;\n\tfloat:left;;\n\tmargin-left: 10px !important;\n  margin-top: 6px !important;\n}\n.xc_rating {\n  text-align: center;\n}\n.xc_rating_label > input{ /* HIDE RADIO */\n  display:none;\n}\n.xc_rating_label > input + img{ /* IMAGE STYLES */\n  cursor:pointer;\n  border:2px solid transparent;\n}\n.xc_rating_label > input:checked + img{ /* (CHECKED) IMAGE STYLES */\n  /*border:2px solid #f00;*/\n  background-color: #efefef;\n}\n\n.xc_label {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\n\n.xc_online_message,\n.xc_offline_message,\n.xc_rating_message\n{\n  text-align: center;\n}\n\n.xc_div_group {\n  margin: 10px 0 10px 0;\n}\n.xc_footer\n{\n  text-align: center;\n  padding-bottom: 5px;\n}\n\n.xc_powered\n{\n  color: grey;\n  font: 10px/16px "Lucida Grande","Lucida Sans Unicode",Arial,Verdana,sans-serif;\n  padding-bottom: 5px;\n}\n\n.xc_chat_container\n{\n  //width:379px;\n  //position:fixed;\n  //bottom:0;\n  //right:50px;\n  z-index:9999;\n  background-color:transparent;\n}\n\n.xc_chat_container *\n{\n  font-family:Arial,Helvetica,sans-serif;\n  font-size:13px;\n  margin:0;\n  padding:0;\n}\n\n.xc_chat_container p\n{\n  margin:5px 0;\n}\n\n.xc_signup_wrapper\n{\n  max-height:375px;\n}\n\n.xc_conversation_container\n{\n  max-height:375px;\n  list-style:none;\n  overflow:auto;\n  margin:0;\n  padding:20px 10px;\n}\n\n.xc_conversation_container a\n{\n  color:#036;\n}\n\n.xc_conversation_container a.xc_btn_style\n{\n  color:#fff;\n}\n\ndiv.xc_chat_head\n{\n  color:#fff;\n  background:{{chatWebsite.color}};\n  //border-radius: 20px 20px 0px 0px !important;\n  height:52px;\n  line-height:55px;\n  cursor:pointer;\n}\n\ndiv.xc_chat_head.rounded\n{\n  border-radius: 20px 20px 0px 0px !important;\n}\n\ndiv.xc_chat_head.squared\n{\n  //border-radius: 20px 20px 0px 0px !important;\n}\n\n.xc_chat_head-title\n{\n  margin:5px 0 0 15px;\n  color: #fff;\n}\n\n.xc_header_icon\n{\n  display:block;\n  background-image:url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/iconVisitorchat.png);\n  width:21px;\n  height:16px;\n  float:right;\n  margin:20px 20px 0 0;\n}\n\n.xc_header_icon span.xc_notification_badge span\n{\n  display:block;\n  height:16px;\n  width:15px;\n  text-align:center;\n  font-size:9px;\n  color:#555;\n  position:relative;\n  top:-20px;\n  left:4px;\n  margin:0;\n  padding:0;\n}\n\n.xc_sub-head-spacer\n{\n  padding:1px;\n}\n\n.xc_conversation\n{\n  display:none;\n  margin:0 12px 0 11px;\n}\n\n.xc_chat_toggle_container\n{\n  /*background:mediumslateblue center 52px;*/\n  background: white;\n  border-style: solid;\n  border-width: 1px;\n  border-color: {{chatWebsite.color}};\n  //display:none;\n}\n\n.xc_signup_wrapper,.xc_notifications_wrapper,.xc_enquiry_wrapper,.xc_rating_wrapper\n{\n  //display:none;\n  display:block;\n  overflow:auto;\n  line-height:1;\n  padding:25px;\n}\n\n.xc_exit_chat_container\n{\n  text-align:right;\n  width:95%;\n  margin:0 auto;\n  padding:5px 1px 0 0;\n}\n\n.xc_exit_chat_container span,.xc_exit_chat_container a\n{\n  font-size:80%;\n  color:#666;\n  text-decoration:none;\n}\n\n.xc_exit_chat_container a:hover\n{\n  color:#333;\n}\n\na.xc_btn_exit_chat_confirm:hover\n{\n  color:red;\n}\n\na.xc_btn_exit_chat_cancel:hover\n{\n  color:#0c0;\n}\n\nform.xc_form_reply\n{\n  position:relative;\n}\n\n.xc_form_reply\n{\n  /*background-color:#e3e3e3;*/\n  text-align:center;\n  /*border-top:1px solid #d3d3d3;*/\n}\n\n.xc_input_message\n{\n  height:100px;\n  margin:10px auto 5px;\n}\n\n.xc_input_enquiry_message,\n.xc_input_rating_message\n{\n  height:100px;\n}\n\n.xc_form_signup,.xc_form_enquiry,.xc_form_rating\n{\n  /*text-align:center;*/\n}\n\n.xc_chat_container textarea,.xc_chat_container input[type=text]\n{\n  width:95%;\n  min-width:95%;\n  max-width:95%;\n  -webkit-box-sizing:border-box;\n  -moz-box-sizing:border-box;\n  box-sizing:border-box;\n  background-color:#fff;\n  border:1px solid #ccc;\n  -webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);\n  -moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);\n  box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);\n  -webkit-transition:border linear .2s, box-shadow linear .2s;\n  -moz-transition:border linear .2s, box-shadow linear .2s;\n  -o-transition:border linear .2s, box-shadow linear .2s;\n  transition:border linear .2s, box-shadow linear .2s;\n  display:inline-block;\n  font-size:14px;\n  line-height:20px;\n  color:#555;\n  -webkit-border-radius:4px;\n  -moz-border-radius:4px;\n  border-radius:4px;\n  vertical-align:middle;\n  margin:3px 0;\n  padding:4px 6px;\n  resize: none;\n}\n\n.xc_chat_container textarea:focus,.xc_chat_container input[type=text]:focus\n{\n  outline: {{chatWebsite.color_focus}} auto 5px;\n}\n\n.xc_chat_container input[type=text]\n{\n  height: 30px;\n}\n\n.xc_message_sending textarea, .xc_enquiry_sending textarea\n{\n  background: #fff url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/loading.gif) 98% 5px no-repeat;\n}\n\n.xc_chatrow\n{\n  display:block;\n  border-top:1px dashed #e3e3e3;\n  margin:5px 0;\n  clear: both;\n}\n\n.xc_chatrow p\n{\n  color:#444;\n  word-wrap:break-word;\n}\n\n.xc_time\n{\n  float:right;\n  font-size:80%;\n  color:#ccc;\n  padding-left:12px;\n  margin:3px;\n}\n\n.xc_submission_pending\n{\n  background:transparent url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/bullet_clock.png) left center norepeat;\n}\n\n.xc_submission_confirmed\n{\n  background:transparent url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/bullet_tick.png) left center norepeat;\n}\n\n.xc_fullname\n{\n  font-weight:700;\n}\n\n.xc_fullname:after\n{\n  content:":";\n}\n\n.xc_avatar\n{\n  float: left;\n  margin: 0 5px 5px 0;\n  display: inline-block;\n  width: 40px;\n  height: 40px;\n  border-radius: 5px;\n  -moz-border-radius: 5px;\n  -webkit-border-radius: 5px;\n}\n\n.xc_smilie\n{\n  background-repeat:no-repeat;\n  display:inline-block;\n  width:18px;\n  height:18px;\n  text-indent:-9999px;\n  white-space:nowrap;\n}\n\n.xc_btn_load_more\n{\n  width:100%!important;\n}\n\n.xc_notifications_wrapper\n{\n  text-shadow:0 1px 0 rgba(255,255,255,0.5);\n}\n\n.xc_notification_success\n{\n  color:#468847;\n}\n\n.xc_notification_error\n{\n  color:#b94a48;\n}\n\n.xc_errorlist\n{\n  margin:0 0 0 25px;\n  padding:0;\n}\n\ni.xc_btn_notifications_close\n{\n  float:right;\n  font-weight:700;\n  font-size:20px;\n  color:#ccc;\n  cursor:pointer;\n  margin:-15px 0 0;\n  padding:0;\n}\n\n.xc_btn_style\n{\n  width:95%;\n  text-align:center;\n  line-height:1.2;\n  font-size:90%;\n  -moz-box-shadow:inset 0 1px 0 0 {{chatWebsite.color_button}};\n  -webkit-box-shadow:inset 0 1px 0 0 {{chatWebsite.color_button}};\n  box-shadow:inset 0 1px 0 0 {{chatWebsite.color_button}};\n  background:0;\n  background-color:{{chatWebsite.color_button}};\n  -moz-border-radius:4px;\n  -webkit-border-radius:4px;\n  border-radius:4px;\n  border:1px solid {{chatWebsite.color_button}};\n  display:inline-block;\n  color:#fff;\n  font-weight:700;\n  text-decoration:none;\n  text-shadow:1px 1px 0 #000c17;\n  margin:0 auto 5px;\n  padding:2px 0;\n}\n\n.xc_btn_style:hover\n{\n  background:0;\n  background-color:{{chatWebsite.color_button}};\n  color: #fff;\n  text-decoration: none;\n}\n\n.xc_btn_style:active\n{\n  position:relative;\n  top:1px;\n}\n\n.xc_composing_container\n{\n  display: none;\n  width: 95%;\n  margin: 0 auto;\n  background: transparent url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/bullet_pencil.png) 6px center no-repeat;\n  padding-left: 19px;\n  font-style: italic;\n}\n\n@media only screen and (max-height: 620px) {\n  .xc_conversation_container\n  {\n    max-height:300px!important;\n  }\n}\n\n@media only screen and (max-height: 545px) {\n  .xc_conversation_container\n  {\n    max-height:200px!important;\n  }\n}\n\n@media only screen and (max-height: 445px) {\n  .xc_conversation_container\n  {\n    max-height:150px!important;\n  }\n}\n\n@media only screen and (max-width: 480px) {\n  .xc_chat_container\n  {\n    width:95%!important;\n    right:auto!important;\n    -webkit-border-top-left-radius:15px;\n    -webkit-border-top-right-radius:15px;\n    -moz-border-radius-topleft:15px;\n    -moz-border-radius-topright:15px;\n    border-top-left-radius:15px;\n    border-top-right-radius:15px;\n    box-shadow:0 0 5px rgba(0,0,0,.5);\n    -webkit-box-shadow:0 0 5px rgba(0,0,0,.5);\n    -moz-box-shadow:0 0 5px rgba(0,0,0,.5);\n  }\n\n  div.xc_chat_head\n  {\n    background-color:#036;\n    background-image:none;\n    line-height:25px;\n    height:auto;\n    -webkit-border-top-left-radius:15px;\n    -webkit-border-top-right-radius:15px;\n    -moz-border-radius-topleft:15px;\n    -moz-border-radius-topright:15px;\n    border-top-left-radius:15px;\n    border-top-right-radius:15px;\n    padding:10px;\n  }\n\n  .xc_chat_toggle_container\n  {\n    background-color:#fff;\n    background-image:none;\n    border-color:#036;\n    border-style:solid;\n    border-width:0 1px;\n  }\n\n  .xc_header_icon\n  {\n    background-image:url({{chatWebsite.remote}}/api/xchatty/assets?resource=images/icon_visitorchat.png);\n    margin:0;\n  }\n\n  .xc_header_icon span.xc_notification_badge span\n  {\n    top:-5px;\n    left:5px;\n  }\n\n  .xc_notification_success\n  {\n    background-color:#dff0d8;\n    border:1px solid #d6e9c6;\n  }\n\n  .xc_conversation_container\n  {\n    max-height:375px;\n    border-color:#036;\n  }\n\n  .xc_notification_error\n  {\n    background-color:#f2dede;\n    border:1px solid #eed3d7;\n  }\n\n  .xc_sub-head-spacer\n  {\n    display:none;\n    padding:0;\n  }\n\n  .xc_chat_head-title,.xc_conversation\n  {\n    margin:0;\n  }\n}\n</style>\n<div class="xc_chat_container">\n  <div class="xc_chat_head {{chatWebsite.header_shape}}">\n    <i class="xc_header_icon">\n      <span class="xc_notification_badge">\n        <span class="xc_notification_badge_number"></span>\n      </span>\n    </i>\n    <i class="xc_header_logo" style="background-image:url(/api/xchatty/assets?resource=images/{{(chatWebsite.defaultLogo || !license.custom) ? \'motionLogo.png\' : (!chatWebsite.defaultLogo && chatWebsite.logo && license.custom) ? chatWebsite.logo+\'&uploaded\' : \'motionLogo.png\'}});background-size:contain;"></i>\n\t</a>\n    <span class="xc_chat_head-title">{{statePreview.state == \'online\' ? chatWebsite.header_online : chatWebsite.header_offline}}</span>\n  </div>\n  <div class="xc_chat_toggle_container">\n    <div class="xc_sub-head-spacer"></div>\n    \x3c!-- <div class="xc_notifications_wrapper">\n    <ul class="xc_errorlist"></ul>\n  </div> --\x3e\n  <div class="xc_enquiry_wrapper" data-ng-show=\'statePreview.state == "offline"\'>\n    <form class="xc_form_enquiry" accept-charset="UTF-8">\n      <p class="xc_offline_message" ng-bind-html=\'chatWebsite.offline_message\'></p>\n      <br>\n      <div ng-if="chatWebsite.enquiry_enable">\n        <div class="xc_div_group">\n          <label for="enquiryFullname" class="xc_label">{{chatWebsite.name_title}} *</label>\n          <input id="enquiryFullname" maxlength="45" data-label="Name" type="text" name="data[Enquiry][fullname]" placeholder="{{chatWebsite.username_placeholder}}" class="xc_input_enquiry_fullname" required/>\n        </div>\n        <br>\n        <div class="xc_div_group">\n          <label for="enquiryEmail" class="xc_label">{{chatWebsite.email_title}} *</label>\n          <input id="enquiryEmail" maxlength="85" type="text" data-label="Email Address" name="data[Enquiry][email]" placeholder="{{chatWebsite.email_placeholder}}" class="xc_input_enquiry_email" required/>\n        </div>\n        <br>\n        <div class="xc_div_group">\n          <label for="enquiryMessage" class="xc_label">{{chatWebsite.message_title}} *</label>\n          <textarea id="enquiryMessage" data-label="Message" maxlength="1500" placeholder="{{chatWebsite.enquiry_message_placeholder}}" name="data[Enquiry][message]" class="xc_input_enquiry_message" required></textarea>\n        </div>\n        <br>\n        <button type="submit" class="xc_btn_enquiry xc_btn_style">{{chatWebsite.enquiry_button}}</button>\n      </div>\n    </form>\n  </div>\n  <div class="xc_signup_wrapper" data-ng-show=\'statePreview.state == "online"\'>\n    <form class="xc_form_signup" accept-charset="UTF-8">\n      <p class="xc_online_message" ng-bind-html=\'chatWebsite.online_message\'></p>\n      <br>\n      <div class="xc_div_group">\n        <label for="dataFullname" class="xc_label">{{chatWebsite.name_title}} *</label>\n        <input maxlength="45" id="dataFullname" data-label="Fullname" type="text" name="data[Discussion][fullname]" placeholder="{{chatWebsite.username_placeholder}}" class="xc_input_fullname" required/>\n      </div>\n      <br>\n      <div class="xc_div_group">\n        <label for="dataEmail" class="xc_label">{{chatWebsite.email_title}} *</label>\n        <input maxlength="85" id="dataEmail" data-label="Email Address" type="text" name="data[Discussion][email]" placeholder="{{chatWebsite.email_placeholder}}" class="xc_input_email" required/>\n      </div>\n      <br>\n      <input type="hidden" class="xc_input_visitor_time" name="data[Discussion][visitor_time]" />\n      <button type="submit" class="xc_btn_signup xc_btn_style">{{chatWebsite.start_chat_button}}</button>\n    </form>\n  </div>\n  <div class="xc_rating_wrapper" data-ng-show=\'statePreview.state == "rating"\'>\n    <form class="xc_form_rating" accept-charset="UTF-8">\n      <p class="xc_rating_message">{{chatWebsite.rating_message}}</p>\n      <br>\n      <div class="xc_rating">\n        <label class="xc_rating_label" style="padding:30px;">\n          <input type="radio" name="data[Rating][rating]" value="good" />\n          <img src="{{chatWebsite.remote}}/api/xchatty/assets?resource=images/like.png" alt="Good" height="50"/>\n        </label>\n        <label class="xc_rating_label" style="padding:30px;">\n          <input type="radio" name="data[Rating][rating]" value="bad"/>\n          <img src="{{chatWebsite.remote}}/api/xchatty/assets?resource=images/dislike.png" alt="Good" height="50"/>\n        </label>\n      </div>\n      <div class="xc_div_group">\n        <label for="ratingMessage" class="xc_label">Message</label>\n        <textarea id="ratingMessage" data-label="Message" maxlength="1500" name="data[Rating][message]" class="xc_input_rating_message"></textarea>\n      </div>\n      <button type="submit" class="xc_button_rating xc_btn_style">{{chatWebsite.rating_send}}</button>\n      <button type="button" class="xc_button_skip_rating xc_btn_style">{{chatWebsite.rating_skip}}</button>\n    </form>\n  </div>\n  <div class="xc_footer">\n    <div data-ng-if="chatWebsite.defaultWhiteLabel || !license.custom" class="xc_powered"><a>Powered by xCALLY</a></div>\n\t\t<div data-ng-if="!chatWebsite.defaultWhiteLabel && license.custom" data-ng-bind-html="chatWebsite.whiteLabel"></div>\n  </div>\n</div>\n</div>\n'),
 a.put("app/channels/chat/queue/list/list.create.modal.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_NEW_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n  <form name="form" novalidate>\n\n    \x3c!-- START NAME --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n      <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n      <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required />\n      <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n      <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$invalid && form.name.$error.pattern" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END NAME --\x3e\n\n    \x3c!-- START STRATEGY --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (form.strategy.$touched || form.$submitted) && form.strategy.$invalid}">\n      <label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}<span class="required" aria-required="true">*</span></label>\n      <ui-select data-ng-model="item.strategy" name="strategy" theme="bootstrap" required>\n        <ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n        <ui-select-choices repeat="strategy in strategies | filter: $select.search">\n          <div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n        </ui-select-choices>\n      </ui-select>\n      <span data-ng-show="(form.strategy.$touched || form.$submitted) && form.strategy.$invalid && form.strategy.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END STRATEGY --\x3e\n\n    \x3c!-- START TIMEOUT --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (form.timeout.$touched || form.$submitted) && form.timeout.$invalid}">\n      <label class="control-label">{{\'APPLICATION_AGENT_TIMEOUT\' | translate}}<span class="required" aria-required="true">*</span></label>\n      <input type="number" name="timeout" placeholder="Timeout" class="form-control" data-ng-model="item.timeout" required min="1"/>\n      <span data-ng-show="(form.timeout.$touched || form.$submitted) && form.timeout.$invalid && form.timeout.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END TIMEOUT --\x3e\n\n    \x3c!-- START AGENTS--\x3e\n    <div class="form-body" data-ng-init="getTeams()">\n      <label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n      <div class="input-group input-small mbottom20">\n        <input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="item.penalty" readonly>\n        <div class="spinner-buttons input-group-btn btn-group-vertical">\n          <button type="button" class="btn spinner-up btn-xs blue" data-ng-click="item.penalty=item.penalty+1">\n            <i class="fa fa-angle-up"></i>\n          </button>\n          <button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!item.penalty" data-ng-click="item.penalty=item.penalty-1">\n            <i class="fa fa-angle-down"></i>\n          </button>\n        </div>\n      </div>\n      <div class="form-group last">\n        <div class="col-md-12" id="multi-select-team">\n        </div>\n      </div>\n    </div>\n    \x3c!-- END AGENTS--\x3e\n\n    \x3c!-- START DESCRIPTION --\x3e\n    <div class="form-group">\n      <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n      <input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n    </div>\n    \x3c!-- END DESCRIPTION --\x3e\n\n  </form>\n</div>\n<div class="modal-footer">\n  <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n  <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/queue/list/list.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t\t<div class="page-bar">\n\t\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="fa fa-spinner"></i>\n\t\t\t\t\t\t<a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n\t\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="icon-bubble"></i>\n\t\t\t\t\t\t<a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n\t\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="icon-docs"></i>\n\t\t\t\t\t\t<a href="#">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n</div>\n\n\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-docs font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_QUEUES\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<a class="btn green-jungle" href="#" data-ng-click="createItem()" data-ng-if="Auth.isAdmin()">\n\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_QUEUE\' | translate }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/channels/chat/queue/view/view.agents.html",'<div class="row" data-ng-init="getTeams()">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_AGENTS\' | translate}}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- BEGIN FORM--\x3e\n\t\t\t\t<form action="index.html" class="form-horizontal form-row-seperated">\n\t\t\t\t\t<div class="form-body">\n\t\t\t\t\t\t<label for="penalty">{{\'APPLICATION_PENALTY\' | translate}}</label>\n\t\t\t\t\t\t<div class="input-group input-small mbottom20">\n\t\t\t\t\t\t\t<input type="number" class="spinner-input form-control" maxlength="3" data-ng-model="queue.penalty" readonly>\n\t\t\t\t\t\t\t<div class="spinner-buttons input-group-btn btn-group-vertical">\n\t\t\t\t\t\t\t\t<button type="button" class="btn spinner-up btn-xs blue" data-ng-click="queue.penalty=queue.penalty+1">\n\t\t\t\t\t\t\t\t\t<i class="fa fa-angle-up"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button type="button" class="btn spinner-down btn-xs blue" data-ng-disabled="!queue.penalty" data-ng-click="queue.penalty=queue.penalty-1">\n\t\t\t\t\t\t\t\t\t<i class="fa fa-angle-down"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-group last">\n\t\t\t\t\t\t\t<div class="col-md-12" id="multi-select-team">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</form>\n\t\t\t\t\x3c!-- END FORM--\x3e\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/channels/chat/queue/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="getQueue()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-bubble"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-docs"></i>\n\t\t\t\t\t<a href="/channels/chat/queues/list">{{ \'APPLICATION_QUEUES\' | translate }}</a>\n\t\t\t\t\t<i data-ng-show="queue" class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li data-ng-show="queue">\n\t\t\t\t\t<a href="#">{{queue.name}}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE SIDEBAR --\x3e\n\t\t<div class="profile-sidebar">\n\t\t\t\x3c!-- PORTLET MAIN --\x3e\n\t\t\t<div class="portlet light profile-sidebar-portlet">\n\t\t\t\t\x3c!-- SIDEBAR USERPIC --\x3e\n\t\t\t\t<div class="profile-image">\n\t\t\t\t\t<img data-ng-src="assets/images/media/queue.png" class="img-responsive">\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USERPIC --\x3e\n\t\t\t\t\x3c!-- SIDEBAR USER TITLE --\x3e\n\t\t\t\t<div class="profile-usertitle">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{queue.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USER TITLE --\x3e\n\n\t\t\t\t\x3c!-- SIDEBAR MENU --\x3e\n\t\t\t\t<div class="profile-usermenu">\n\t\t\t\t\t<ul class="nav">\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.channels.chat.queues.view.settings\')}">\n\t\t\t\t\t\t\t<a data-ng-href="/channels/chat/queues/view/{{queue.id}}/settings">\n\t\t\t\t\t\t\t<i class="icon-settings"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_SETTINGS\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.channels.chat.queues.view.agents\')}" data-ng-show="Auth.getCurrentUser().role === \'admin\'">\n\t\t\t\t\t\t\t<a data-ng-href="/channels/chat/queues/view/{{queue.id}}/agents">\n\t\t\t\t\t\t\t<i class="icon-people"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_AGENTS\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END MENU --\x3e\n\t\t\t</div>\n\t\t\t\x3c!-- END PORTLET MAIN --\x3e\n\t\t</div>\n\t\t\x3c!-- END BEGIN PROFILE SIDEBAR --\x3e\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/channels/chat/queue/view/view.settings.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t<form name="forms.general" data-ng-submit="forms.general.$valid && updateChatQueue()" novalidate>\n\t\t\t\t\t\x3c!-- START NAME --\x3e\n\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t<input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="queue.name" data-ng-pattern="settings.patternName" required />\n\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.pattern" class="help-block help-block-error">\n\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\x3c!-- START STRATEGY --\x3e\n\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.strategy.$touched || forms.general.$submitted) && forms.general.strategy.$invalid}">\n\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_STRATEGY\' | translate}}</label>\n\t\t\t\t\t\t<ui-select data-ng-model="queue.strategy" name="strategy" theme="bootstrap">\n\t\t\t\t\t\t\t<ui-select-match placeholder="{{\'APPLICATION_SEARCH_FILTER\' | translate}}">{{$select.selected | uppercase}}</ui-select-match>\n\t\t\t\t\t\t\t<ui-select-choices repeat="strategy in strategies | filter: $select.search">\n\t\t\t\t\t\t\t\t<div ng-bind-html="strategy.toUpperCase() | highlight: $select.search"></div>\n\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END STRATEGY --\x3e\n\n\t\t\t\t\t\x3c!-- START TIMEOUT --\x3e\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_AGENT\' | translate}} {{\'APPLICATION_TIMEOUT\' | translate}}</label>\n\t\t\t\t\t\t<input type="number" name="timeout" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}}" class="form-control" min="1" data-ng-model="queue.timeout"/>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END TIMEOUT --\x3e\n\n\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t<input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="queue.description"/>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\n\t\t\t\t\t<input data-ng-if="Auth.isAdmin()" class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n\t\t\t\t</form>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/channels/chat/realtime/view/agent/agent.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="initAgents()">\n\t<div class="col-md-12">\n\t\t\x3c!-- START TABLE --\x3e\n\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns  class="ui-grid" ui-grid-tree-view ui-grid-expandable-row ui-grid-pagination ui-grid-auto-resize>\n\t\t\t<span us-spinner spinner-key="grid-spinner" spinner-start-active="true"></span>\n\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t</div>\n\t\t\x3c!-- END TABLE --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/channels/chat/realtime/view/agent/agent.modal.info.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_INTERFACE_INFO\' | translate }}</h3>\n</div>\n<div class="modal-body">\n<div data-ng-if="agent.ipaddr" class="well">\n  <div>{{agent.ipaddr}}:{{agent.port}}</div>\n  <div>{{agent.fullcontact}}</div>\n  <div>{{agent.useragent}}</div>\n  <div>{{agent.lastms}}</div>\n</div>\n<div data-ng-if="!agent.ipaddr" class="alert alert-danger" role="alert">\n  {{\'MESSAGE_NO_AVAILABLE_INFO\' | translate}}\n</div>\n</div>\n<div class="modal-footer">\n  <button class="btn default" type="button" ng-click="close()">{{ \'APPLICATION_CLOSE\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/realtime/view/agent/queue.modal.add.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_JOIN_QUEUE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n  <form name="form" novalidate>\n\n    <div class="form-group row">\n  <label class="col-md-2 control-label" style="margin-top: 7px;">{{\'APPLICATION_QUEUE\' | translate}}:</label>\n  <div class="col-md-10">\n    <ui-select multiple ng-model="item.queues" theme="bootstrap" required>\n      <ui-select-match placeholder="{{\'APPLICATION_QUEUE\' | translate}}">{{$item.name}}</ui-select-match>\n      <ui-select-choices repeat="queue.id as queue in queues | filter: $select.search">\n        <div ng-bind-html="queue.name | highlight: $select.search"></div>\n      </ui-select-choices>\n    </ui-select>\n  </div>\n</div>\n\n  </form>\n</div>\n<div class="modal-footer">\n  <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n  <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/realtime/view/application/application.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="initApplications()">\n\t<div class="col-md-12">\n\t\t\x3c!-- START TABLE --\x3e\n\t\t<div ui-grid="gridOptions" ui-grid-resize-columns class="ui-grid" ui-grid-auto-resize>\n\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t</div>\n\t\t\x3c!-- END TABLE --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/channels/chat/realtime/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="fa fa-spinner"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_CHANNELS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-bubble"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_CHAT\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-energy"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_REALTIME\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t<div>\n\t\t\t<nav class="navbar navbar-default" role="navigation">\n\t\t\t\t<div class="collapse navbar-collapse">\n\t\t\t\t\t<ul class="nav navbar-nav">\n\t\t\t\t\t\t<li data-ng-class="{\'active\': $state.is(\'main.channels.chat.realtime.view.agents\')}">\n\t\t\t\t\t\t\t<a href="/channels/chat/realtime/view/agents">\n\t\t\t\t\t\t\t\t{{\'APPLICATION_AGENTS\' | translate}}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li data-ng-class="{\'active\': $state.is(\'main.channels.chat.realtime.view.applications\')}">\n\t\t\t\t\t\t\t<a href="/channels/chat/realtime/view/applications">\n\t\t\t\t\t\t\t\t{{\'APPLICATION_APPLICATIONS\' | translate}}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<a href="#">\n\t\t\t\t\t\t\t\t<b>|{{\'APPLICATION_SHOW_TIMERS\' | translate}}  </b><input\n\t\t\t\t\t\t\t\tbs-switch\n\t\t\t\t\t\t\t\tclass="form-control"\n\t\t\t\t\t\t\t\tng-model="showTimers"\n\t\t\t\t\t\t\t\ttype="checkbox"\n\t\t\t\t\t\t\t\tname="showTimers"\n\t\t\t\t\t\t\t\tswitch-active="{{ timerSwitch.isActive }}"\n\t\t\t\t\t\t\t\tswitch-on-text="{{\'APPLICATION_YES\' | translate}}"\n\t\t\t\t\t\t\t\tswitch-off-text="{{\'APPLICATION_NO\' | translate}}"\n\t\t\t\t\t\t\t\tswitch-on-color="{{ timerSwitch.onColor }}"\n\t\t\t\t\t\t\t\tswitch-off-color="{{ timerSwitch.offColor }}"\n\t\t\t\t\t\t\t\tswitch-animate="{{ timerSwitch.animate }}"\n\t\t\t\t\t\t\t\tswitch-size="{{ timerSwitch.size }}"\n\t\t\t\t\t\t\t\tswitch-label="{{ timerSwitch.label }}"\n\t\t\t\t\t\t\t\tswitch-icon="{{ timerSwitch.icon }}"\n\t\t\t\t\t\t\t\tswitch-radio-off="{{ timerSwitch.radioOff }}"\n\t\t\t\t\t\t\t\tswitch-label-width="{{ timerSwitch.labelWidth }}"\n\t\t\t\t\t\t\t\tswitch-handle-width="{{ timerSwitch.handleWidth }}"><b>|</b>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</nav>\n\t\t</div>\n\n\t\t<div ui-view></div>\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/channels/chat/room/external/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n\t<div class="portlet light" data-ng-init="initView()">\n\t\t<div class="portlet-title">\n\t<div class="caption">\n\t\t<div class="btn-group btn-group-solid">\n\t\t\t<button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'OPEN\'" uib-uncheckable>OPEN</button>\n\t\t</div>\n\t\t<div class="btn-group btn-group-solid">\n\t\t\t<button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'CLOSED\'" uib-uncheckable>CLOSED</button>\n\t\t</div>\n\t</div>\n\t<div class="actions">\n\t\t<a href="#" class="btn btn-icon-only blue" data-ng-click="tagItems();" data-ng-show="id.length">\n\t\t\t<i class="fa fa-tags"></i>\n\t\t</a>\n\t\t<a href="#" class="btn btn-icon-only default" data-ng-click="getPage();">\n\t\t\t<i class="fa fa-refresh"></i>\n\t\t</a>\n\t</div>\n</div>\n<div class="portlet-title" data-ng-show="tags.length">\n\t\x3c!-- START TAGS --\x3e\n\t<div class="form-group">\n\t\t<div class="row">\n\t\t\t<div class="col-md-1">\n\t\t\t\t<a href="#" class="btn btn-icon-only">\n\t\t\t\t\t<i class="fa fa-tags" style="color: gray;"></i>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t\t<div class="col-md-11">\n\t\t\t\t<ui-select multiple data-ng-model="query.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n\t\t\t\t\t<ui-select-match placeholder="Search by tag...">{{$item}}</ui-select-match>\n\t\t\t\t\t<ui-select-choices repeat="tag in tags | filter:$select.search">\n\t\t\t\t\t\t{{tag}}\n\t\t\t\t\t</ui-select-choices>\n\t\t\t\t</ui-select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t\x3c!-- END TAGS --\x3e\n</div>\n<div class="portlet-body">\n\t\t\x3c!-- BEGIN UI-GRID SPINNER --\x3e\n\t\t<span us-spinner spinner-key="spinner-grid" spinner-start-active="true"></span>\n\t\t\x3c!-- END UI-GRID SPINNER --\x3e\n\n\t\t\x3c!-- START TABLE --\x3e\n\n\t\t<div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-selection ui-grid-pagination class="ui-grid">\n\t\t\t<div class="watermark" data-ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t</div>\n\t\t\x3c!-- END TABLE --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/channels/chat/room/group/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n\t<div class="portlet light" data-ng-init="initView()">\n\t\t<div class="portlet-title">\n\t<div class="caption">\n\t\t<div class="btn-group btn-group-solid">\n\t\t\t<button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'OPEN\'" uib-uncheckable>OPEN</button>\n\t\t</div>\n\t\t<div class="btn-group btn-group-solid">\n\t\t\t<button type="button" class="btn btn-sm default" data-ng-model="query.status" uib-btn-radio="\'CLOSED\'" uib-uncheckable>CLOSED</button>\n\t\t</div>\n\t</div>\n\t<div class="actions">\n\t\t<a href="#" class="btn btn-icon-only blue" data-ng-click="tagItems();" data-ng-show="id.length">\n\t\t\t<i class="fa fa-tags"></i>\n\t\t</a>\n\t\t<a href="#" class="btn btn-icon-only default" data-ng-click="getPage();">\n\t\t\t<i class="fa fa-refresh"></i>\n\t\t</a>\n\t</div>\n</div>\n<div class="portlet-title" data-ng-show="tags.length">\n\t\x3c!-- START TAGS --\x3e\n\t<div class="form-group">\n\t\t<div class="row">\n\t\t\t<div class="col-md-1">\n\t\t\t\t<a href="#" class="btn btn-icon-only">\n\t\t\t\t\t<i class="fa fa-tags" style="color: gray;"></i>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t\t<div class="col-md-11">\n\t\t\t\t<ui-select multiple data-ng-model="query.tags" theme="bootstrap" on-select="onChanged($item, $model)" on-remove="onChanged($item, $model)">\n\t\t\t\t\t<ui-select-match placeholder="Search by tag...">{{$item}}</ui-select-match>\n\t\t\t\t\t<ui-select-choices repeat="tag in tags | filter:$select.search">\n\t\t\t\t\t\t{{tag}}\n\t\t\t\t\t</ui-select-choices>\n\t\t\t\t</ui-select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t\x3c!-- END TAGS --\x3e\n</div>\n<div class="portlet-body">\n\t\t\x3c!-- BEGIN UI-GRID SPINNER --\x3e\n\t\t<span us-spinner spinner-key="spinner-grid" spinner-start-active="true"></span>\n\t\t\x3c!-- END UI-GRID SPINNER --\x3e\n\n\t\t\x3c!-- START TABLE --\x3e\n\t\t<div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-selection ui-grid-pagination class="ui-grid">\n\t\t\t<div class="watermark" data-ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t</div>\n\t\t\x3c!-- END TABLE --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/channels/chat/room/internal/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12" data-ng-init="initView()">\n\t\t\x3c!-- BEGIN UI-GRID SPINNER --\x3e\n\t\t<span us-spinner spinner-key="spinner-grid" spinner-start-active="true"></span>\n\t\t\x3c!-- END UI-GRID SPINNER --\x3e\n\n\t\t\x3c!-- START TABLE --\x3e\n\t\t<div ui-grid="gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination class="ui-grid">\n\t\t\t<div class="watermark" data-ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t</div>\n\t\t\x3c!-- END TABLE --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/channels/chat/room/room.add.html",'<div class="modal-header">\n  <button ng-if="modal.dismissable" type="button" data-ng-click="$dismiss()" class="close">&times;</button>\n  <h4 class="modal-title">{{\'APPLICATION_NEW_GROUP\' | translate}}</h4>\n</div>\n\n<div class="modal-body">\n  <div class="portlet box blue">\n\t\t<div class="portlet-title">\n\t\t\t<div class="caption">\n\t\t\t\t<i class="icon-people"></i>{{\'APPLICATION_AGENTS\' | translate}}\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="portlet-body">\n\t\t\t<ul>\n\t\t\t\t<li data-ng-repeat="item in items">\n\t\t\t\t\t {{item.fullname}}\n\t\t\t\t</li>\n        <li data-ng-repeat="item in selected.items">\n\t\t\t\t\t {{item.fullname}}\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\t</div>\n\n  <ui-select multiple name="items" ng-model="selected.items" theme="bootstrap">\n    <ui-select-match placeholder="{{\'APPLICATION_SELECTED_AGENTS\' | translate}}">{{$item.fullname}}</ui-select-match>\n    <ui-select-choices repeat="{id: agent.id, fullname: agent.fullname} as agent in agents.rows | filter: $select.search">\n      {{agent.fullname}}\n    </ui-select-choices>\n  </ui-select>\n</div>\n\n<div class="modal-footer">\n  <button class="btn btn-success" type="button" data-ng-click="ok()" data-ng-show="selected.items.length">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n  <button class="btn default" type="button" data-ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/channels/chat/room/room.close.html",'<div class="modal-header">\n  <button ng-if="modal.dismissable" type="button" ng-click="$dismiss()" class="close">&times;</button>\n  <h4 ng-if="modal.title" ng-bind="modal.title | translate" class="modal-title"></h4>\n</div>\n<div class="modal-body">\n  <p ng-if="modal.text && !closed" ng-bind="modal.text | translate"></p>\n  <form name="form" novalidate data-ng-init="initDisposition()">\n  <div class="form-group">\n    <ui-select data-ng-model="item.disposition" name="list" theme="bootstrap" data-ng-disabled="!dispositions.length" required>\n      <ui-select-match placeholder="{{\'APPLICATION_DISPOSITION\' | translate}}">{{$select.selected.name}}</ui-select-match>\n      <ui-select-choices repeat="disposition.name as disposition in dispositions | filter: $select.search">\n        <div ng-bind-html="disposition.name | highlight: $select.search"></div>\n      </ui-select-choices>\n    </ui-select>\n  </div>\n  <div class="note note-warning" data-ng-hide="dispositions.length">\n    <h4 class="block">Warning!</h4>\n    <p>\n      {{ \'MESSAGE_NO_DISPOSITIONS_AVAILABLE\' | translate }}\n    </p>\n  </div>\n</form>\n  \x3c!-- <div ng-if="modal.html" ng-bind-html="modal.html"></div> --\x3e\n</div>\n<div class="modal-footer">\n  <button class="btn btn-danger" type="button" ng-click="ok()">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n  <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n  \x3c!-- <button ng-repeat="button in modal.buttons" ng-class="button.classes" ng-click="button.click($event)" ng-bind="button.text" class="btn"></button> --\x3e\n</div>\n'),
@@ -108,8 +108,7 @@ a.put("app/staff/user/wizard/wizard.html",'<div class="col-md-12">\n  \x3c!-- BE
 a.put("app/sugarcrm/view/configuration/view/view.html",'<div class="row" data-ng-init="initView();getConfiguration();getCustomVariables();getFields();getModules();">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_CONFIGURATION\' | translate}}: {{configurationName}}</span>\n\t\t\t\t</div>\n\t\t\t\t<ul class="nav nav-tabs">\n\t\t\t\t\t<li class="active">\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_SUBJECT\' | translate}}</a>\n\t\t\t\t\t</li>\n          <li>\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_DESCRIPTION\' | translate}}</a>\n\t\t\t\t\t</li>\n          <li>\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_3" data-toggle="tab">{{\'APPLICATION_FIELDS\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_4" data-toggle="tab">{{\'APPLICATION_MAPPING\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t<div class="tab-content">\n\t\t\t\t\t\x3c!-- SUBJECT TAB --\x3e\n\t\t\t\t\t<div class="tab-pane ui-padding active" id="tab_1_1">\n            <div class="row">\n              <div class="col-md-11">\n                <span class="caption-subject">All following fields will be join by blank space:</span>\n              </div>\n              <div class="col-md-1 pull-rigth">\n                <button class="btn btn-icon-only green" data-ng-click="addItem(\'subject\')"><i class="fa fa-plus"></i></button>\n              </div>\n            </div>\n            <hr>\n\t\t\t\t\t\t\x3c!-- <div id="subject-item-list" ng-scrollbars ng-scrollbars-config="config"> --\x3e\n\t            <div class="row" data-ng-repeat="subjectItem in subjectConfig">\n\t              <div class="col-md-3">\n\t                <ui-select ng-model="subjectItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(subjectItem)">\n\t                  <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n\t                  <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n\t                    <div ng-bind-html="item.title | highlight: $select.search"></div>\n\t                  </ui-select-choices>\n\t                </ui-select>\n\t              </div>\n\t              <div class="col-md-8" data-ng-if="subjectItem.type==\'string\'">\n\t                <div class="form-group">\n\t                  <input type="text" class="form-control" data-ng-model="subjectItem.content" data-ng-change="updateField(subjectItem)">\n\t                </div>\n\t              </div>\n\t\t\t\t\t\t\t\t<div class="col-md-8" data-ng-if="subjectItem.type==\'variable\'">\n\t                <div class="form-group">\n\t                  <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.variableName" data-ng-change="updateField(subjectItem)">\n\t                    <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n\t                    <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n\t                      <div ng-bind-html="variable.title | highlight: $select.search"></div>\n\t                    </ui-select-choices>\n\t                  </ui-select>\n\t                </div>\n\t              </div>\n\t              <div class="col-md-8" data-ng-if="subjectItem.type==\'customVariable\'">\n\t                <div class="form-group">\n\t                  <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="subjectItem.VariableId" data-ng-change="updateField(subjectItem)">\n\t                    <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n\t                    <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n\t                      <div ng-bind-html="variable.name | highlight: $select.search"></div>\n\t                    </ui-select-choices>\n\t                  </ui-select>\n\t                </div>\n\t              </div>\n\t              <div class="col-md-1">\n\t                <div class="form-group">\n\t                  <button class="btn btn-icon-only red" data-ng-click="removeItem(subjectItem)"><i class="fa fa-times"></i></button>\n\t                </div>\n\t              </div>\n\t            </div>\n\t\t\t\t\t\t\x3c!-- </div> --\x3e\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END SUBJECT TAB --\x3e\n          \x3c!-- DESCRIPTION TAB --\x3e\n\t\t\t\t\t<div class="tab-pane ui-padding" id="tab_1_2">\n\t\t\t\t\t\t<div class="row">\n              <div class="col-md-11">\n                <span class="caption-subject">All following fields will be join by new line:</span>\n              </div>\n              <div class="col-md-1 pull-rigth">\n                <button class="btn btn-icon-only green" data-ng-click="addItem(\'description\')"><i class="fa fa-plus"></i></button>\n              </div>\n            </div>\n            <hr>\n\t\t\t\t\t\t\x3c!-- <div id="description-item-list" ng-scrollbars ng-scrollbars-config="config"> --\x3e\n\t\t\t\t\t\t\t<div class="row" data-ng-repeat="descriptionItem in descriptionConfig">\n\t              <div class="col-md-2">\n\t                <ui-select ng-model="descriptionItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n\t                  <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n\t                  <ui-select-choices repeat="item.type as item in descFieldType | filter: $select.search">\n\t                    <div ng-bind-html="item.title | highlight: $select.search"></div>\n\t                  </ui-select-choices>\n\t                </ui-select>\n\t              </div>\n\t              <div class="col-md-9" data-ng-if="descriptionItem.type==\'string\'">\n\t                <div class="form-group">\n\t                  <input type="text" class="form-control" data-ng-model="descriptionItem.content" data-ng-change="updateField(descriptionItem)">\n\t                </div>\n\t              </div>\n\t\t\t\t\t\t\t\t<div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" placeholder="Key" data-ng-model="descriptionItem.key" data-ng-change="updateField(descriptionItem)">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\'">\n\t\t\t\t\t\t\t\t\t<ui-select ng-model="descriptionItem.keyType" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeDescType(descriptionItem)">\n\t                  <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n\t                  <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n\t                    <div ng-bind-html="item.title | highlight: $select.search"></div>\n\t                  </ui-select-choices>\n\t                </ui-select>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'string\'">\n\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" placeholder="Value" data-ng-model="descriptionItem.keyContent" data-ng-change="updateField(descriptionItem)">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'variable\'">\n\t                <div class="form-group">\n\t                  <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.variableName" data-ng-change="updateField(descriptionItem)">\n\t                    <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n\t                    <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n\t                      <div ng-bind-html="variable.title | highlight: $select.search"></div>\n\t                    </ui-select-choices>\n\t                  </ui-select>\n\t                </div>\n\t              </div>\n\t              <div class="col-md-3" data-ng-if="descriptionItem.type==\'keyValue\' && descriptionItem.keyType==\'customVariable\'">\n\t                <div class="form-group">\n\t                  <ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="descriptionItem.VariableId" data-ng-change="updateField(descriptionItem)">\n\t                    <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n\t                    <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n\t                      <div ng-bind-html="variable.name | highlight: $select.search"></div>\n\t                    </ui-select-choices>\n\t                  </ui-select>\n\t                </div>\n\t              </div>\n\t              <div class="col-md-1">\n\t                <div class="form-group">\n\t                  <button class="btn btn-icon-only red" data-ng-click="removeItem(descriptionItem)"><i class="fa fa-times"></i></button>\n\t                </div>\n\t              </div>\n\t            </div>\n\t\t\t\t\t\t\x3c!-- </div> --\x3e\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END DESCRIPTION TAB --\x3e\n          \x3c!-- FIELDS TAB --\x3e\n\t\t\t\t\t<div class="tab-pane ui-padding" id="tab_1_3">\n\t\t\t\t\t\t<div class="row">\n              <div class="col-md-11">\n                <span class="caption-subject">Add how to fill the fields present in your account:</span>\n              </div>\n              <div class="col-md-1 pull-rigth">\n                <button class="btn btn-icon-only green" data-ng-click="addItem(\'field\')"><i class="fa fa-plus"></i></button>\n              </div>\n            </div>\n            <hr>\n\t\t\t\t\t\t\x3c!-- <div id="field-item-list" ng-scrollbars ng-scrollbars-config="config"> --\x3e\n\t            <div class="row" data-ng-repeat="fieldItem in fieldConfig">\n\t              <div class="col-md-3">\n\t                <ui-select ng-model="fieldItem.idField" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeFieldType(fieldItem)">\n\t                  <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.label}}</ui-select-match>\n\t                  <ui-select-choices repeat="item.name as item in accountFields | filter: $select.search">\n\t                    <div ng-bind-html="item.label | highlight: $select.search"></div>\n\t                  </ui-select-choices>\n\t                </ui-select>\n\t              </div>\n\t              <div class="col-md-8" data-ng-if="getSystemFieldOptions(fieldItem.idField)">\n\t                <div class="form-group">\n\t\t\t\t\t\t\t\t\t\t<ui-select ng-model="fieldItem.content" theme="bootstrap" ng-disabled="disabled" data-ng-change="updateField(fieldItem)">\n\t\t                  <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n\t\t                  <ui-select-choices repeat="item.value as item in getSystemFieldOptions(fieldItem.idField) | filter: $select.search">\n\t\t                    <div ng-bind-html="item.name | highlight: $select.search"></div>\n\t\t                  </ui-select-choices>\n\t\t                </ui-select>\n\t                </div>\n\t              </div>\n\t\t\t\t\t\t\t\t<div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField)">\n\t\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t\t<ui-select ng-model="fieldItem.type" theme="bootstrap" ng-disabled="disabled" data-ng-change="changeType(fieldItem)">\n\t\t                  <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n\t\t                  <ui-select-choices repeat="item.type as item in fieldType | filter: $select.search">\n\t\t                    <div ng-bind-html="item.title | highlight: $select.search | ucfirst"></div>\n\t\t                  </ui-select-choices>\n\t\t                </ui-select>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'string\'">\n\t                <div class="form-group">\n\t\t\t\t\t\t\t\t\t\t<input type="text" class="form-control" data-ng-model="fieldItem.content" data-ng-change="updateField(fieldItem)">\n\t                </div>\n\t              </div>\n\t\t\t\t\t\t\t\t<div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'variable\'">\n\t                <div class="form-group">\n\t\t\t\t\t\t\t\t\t\t<ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.variableName" data-ng-change="updateField(fieldItem)">\n\t                    <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.title}}</ui-select-match>\n\t                    <ui-select-choices group-by="groupVariableByGroup" repeat="variable.name as variable in variables | filter: $select.search">\n\t                      <div ng-bind-html="variable.title | highlight: $select.search"></div>\n\t                    </ui-select-choices>\n\t                  </ui-select>\n\t                </div>\n\t              </div>\n\t\t\t\t\t\t\t\t<div class="col-md-4" data-ng-if="!getSystemFieldOptions(fieldItem.idField) && fieldItem.type === \'customVariable\'">\n\t                <div class="form-group">\n\t\t\t\t\t\t\t\t\t\t<ui-select theme="bootstrap" ng-disabled="disabled" data-ng-model="fieldItem.VariableId" data-ng-change="updateField(fieldItem)">\n\t                    <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.name}}</ui-select-match>\n\t                    <ui-select-choices repeat="variable.id as variable in customVariables | filter: $select.search">\n\t                      <div ng-bind-html="variable.name | highlight: $select.search"></div>\n\t                    </ui-select-choices>\n\t                  </ui-select>\n\t                </div>\n\t              </div>\n\t              <div class="col-md-1">\n\t                <div class="form-group">\n\t                  <button class="btn btn-icon-only red" data-ng-click="removeItem(fieldItem)"><i class="fa fa-times"></i></button>\n\t                </div>\n\t              </div>\n\t            </div>\n\t\t\t\t\t\t\x3c!-- </div> --\x3e\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END FIELDS TAB --\x3e\n\t\t\t\t\t\x3c!-- TAG TAB --\x3e\n\t\t\t\t\t<div class="tab-pane ui-padding" id="tab_1_4">\n\n\t\t\t\t\t\t\x3c!-- BEGIN UI-GRID SPINNER --\x3e\n\t\t\t\t\t\t<span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n\t\t\t\t\t\t\x3c!-- END UI-GRID SPINNER --\x3e\n\n\t\t\t\t\t\t<div class="row">\n              <div class="col-md-12">\n                <span class="caption-subject">Select the mapping procedure that the current configuration will use:</span>\n              </div>\n            </div>\n            <hr>\n\t\t\t\t\t\t<form name="forms.mapping" data-ng-submit="updateMapping()" novalidate>\n\n\t\t\t\t\t\t\t\x3c!-- DEFAULT MAPPING --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DEFAULT_MAPPING\' | translate}}</label></br>\n\t\t\t\t\t      <input\n\t\t\t\t\t          bs-switch\n\t\t\t\t\t          class="form-control"\n\t\t\t\t\t          ng-model="mapping.defaultMapping"\n\t\t\t\t\t          type="checkbox",\n\t\t\t\t\t\t\t\t\t\tname="defaultMapping"\n\t\t\t\t\t          switch-active="{{ defaultMappingSwitch.isActive }}"\n\t\t\t\t\t          switch-on-text="{{ defaultMappingSwitch.onText }}"\n\t\t\t\t\t          switch-off-text="{{ defaultMappingSwitch.offText }}"\n\t\t\t\t\t          switch-on-color="{{ defaultMappingSwitch.onColor }}"\n\t\t\t\t\t          switch-off-color="{{ defaultMappingSwitch.offColor }}"\n\t\t\t\t\t          switch-animate="{{ defaultMappingSwitch.animate }}"\n\t\t\t\t\t          switch-size="{{ defaultMappingSwitch.size }}"\n\t\t\t\t\t          switch-label="{{ defaultMappingSwitch.label }}"\n\t\t\t\t\t          switch-icon="{{ defaultMappingSwitch.icon }}"\n\t\t\t\t\t          switch-radio-off="{{ defaultMappingSwitch.radioOff }}"\n\t\t\t\t\t          switch-label-width="{{ defaultMappingSwitch.labelWidth }}"\n\t\t\t\t\t          switch-handle-width="{{ defaultMappingSwitch.handleWidth }}">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DEFAULT MAPPING --\x3e\n\n\t\t\t\t\t\t\t<div class="row" data-ng-if="!mapping.defaultMapping">\n\t\t\t\t\t\t\t\t<div class="col-md-6">\n\t\t\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.mapping.mappingModule.$touched || forms.mapping.$submitted) && forms.mapping.mappingModule.$invalid}">\n\t\t\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_MAPPING_MODULE\' | translate}} <span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t\t\t<ui-select ng-model="mapping.mappingModule" theme="bootstrap" name="mappingModule" required ng-disabled="disabled" data-ng-change="updateMappingModule()">\n\t\t                  <ui-select-match placeholder="{{\'APPLICATION_SEARCH\' | translate}}">{{$select.selected.label}}</ui-select-match>\n\t\t                  <ui-select-choices repeat="item.key as item in accountModules | filter: $select.search">\n\t\t                    <div ng-bind-html="item.label | highlight: $select.search"></div>\n\t\t                  </ui-select-choices>\n\t\t                </ui-select>\n\t\t\t\t\t\t\t\t\t\t<span data-ng-show="(forms.mapping.mappingModule.$touched || forms.mapping.$submitted) && forms.mapping.mappingModule.$invalid && forms.mapping.mappingModule.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t      </span>\n\t                </div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class="row" data-ng-if="!mapping.defaultMapping">\n\t\t\t\t\t\t\t\t<div class="col-md-12">\n\t\t\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.mapping.mappingFields.$touched || forms.mapping.$submitted) && forms.mapping.mappingFields.$invalid}">\n\t\t\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_MAPPING_FIELDS\' | translate}} <span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t\t\t<ui-select multiple data-ng-model="mapping.mappingFields" theme="bootstrap" name="mappingFields" ng-disabled="disabled" required>\n\t\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_MAPPING_FIELDS\' | translate }}">{{$item.label}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="moduleField.name as moduleField in moduleFields | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t\t{{moduleField.label}}\n\t\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t\t<span data-ng-show="(forms.mapping.mappingFields.$touched || forms.mapping.$submitted) && forms.mapping.mappingFields.$invalid && forms.mapping.mappingFields.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t      </span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" data-ng-disabled="forms.mapping.$invalid"/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END TAG TAB --\x3e\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/sugarcrm/view/view.account.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_ACCOUNT\' | translate}}</span>\n\t\t\t\t</div>\n\t\t\t\t<ul class="nav nav-tabs">\n\t\t\t\t\t<li class="active">\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t<div class="tab-content">\n\t\t\t\t\t\x3c!-- GENERAL TAB --\x3e\n\t\t\t\t\t<div class="tab-pane active" id="tab_1_1">\n\t\t\t\t\t\t<form name="forms.formSetting" data-ng-submit="forms.formSetting.$valid && updateItem()" novalidate>\n              \x3c!-- START NAME --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="account.name" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END NAME --\x3e\n\t\t\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t\t\t<input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="account.description"/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\n              \x3c!-- START USERNAME --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="account.username" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END USERNAME --\x3e\n\n              \x3c!-- START REMOTE ADDRESS --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_REMOTE_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="url" name="remoteUri" placeholder="{{\'APPLICATION_REMOTE_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.remoteUri" required />\n\t\t\t\t\t\t\t\t<span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END USERNAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START PASSWORD --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="account.password" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="forms.formSetting.apiKey.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END PASSWORD --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START SERVER URL --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n\t\t\t\t\t\t\t\t<input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="account.serverUrl"/>\n\t\t\t\t\t\t\t\t<span class="help-block">\n\t\t\t\t\t\t\t\t\t{{\'DESCRIPTION_SERVER_URL\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span class="help-block help-block-info">\n\t\t\t\t\t\t\t\t\t{{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END SERVER URL --\x3e\n\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END GENERAL TAB --\x3e\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/sugarcrm/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="initView()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n          <i class="icon-handbag"></i>\n          <a href="/sugarcrm/list">{{ \'APPLICATION_SUGARCRM\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<a href="#">{{account.name}}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE SIDEBAR --\x3e\n\t\t<div class="profile-sidebar">\n\t\t\t\x3c!-- PORTLET MAIN --\x3e\n\t\t\t<div class="portlet light profile-sidebar-portlet">\n\t\t\t\t\x3c!-- SIDEBAR USERPIC --\x3e\n\t\t\t\t<div class="profile-image">\n\t\t\t\t\t<img src="assets/images/media/sugarcrm.png" class="img-responsive">\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USERPIC --\x3e\n\t\t\t\t\x3c!-- SIDEBAR USER TITLE --\x3e\n\t\t\t\t<div class="profile-usertitle">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{account.name}}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="profile-usertitle-job">\n\t\t\t\t\t\t{{account.remoteUri}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USER TITLE --\x3e\n\t\t\t\t\x3c!-- SIDEBAR MENU --\x3e\n\t\t\t\t<div class="profile-usermenu">\n\t\t\t\t\t<ul class="nav">\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.sugarcrm.view.account\')}">\n\t\t\t\t\t\t\t<a ng-href="/sugarcrm/view/{{account.id}}/account">\n\t\t\t\t\t\t\t<i class="icon-user"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_ACCOUNT\' | translate }} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li data-ng-class="{active: $state.includes(\'main.sugarcrm.view.configurations\') || $state.is(\'main.sugarcrm.view.configuration\')}">\n\t\t\t\t\t\t\t<a ng-href="/sugarcrm/view/{{account.id}}/configurations/list">\n\t\t\t\t\t\t\t<i class="icon-settings"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_CONFIGURATIONS\' | translate }} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END MENU --\x3e\n\t\t\t</div>\n\t\t\t\x3c!-- END PORTLET MAIN --\x3e\n\t\t</div>\n\t\t\x3c!-- END BEGIN PROFILE SIDEBAR --\x3e\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),
 a.put("app/sugarcrm/wizard/wizard.html",'\x3c!-- BEGIN PAGE HEADER--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t\t<div class="page-bar">\n\t\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="icon-handbag"></i>\n\t\t\t\t\t\t<a href="/sugarcrm/list">{{ \'APPLICATION_SUGARCRM\' | translate }}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n</div>\n\x3c!-- END PAGE HEADER--\x3e\n\n\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="initWizard()">\n\t<div class="col-md-12">\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-notebook font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_ACCOUNT\' | translate }} WIZARD</a> </span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t<wizard on-finish="createItem()">\n          <wz-step title="{{\'APPLICATION_ACCOUNT_INFO\' | translate}}" canexit="exitValidation(forms.formSetting.$valid)">\n\t\t\t\t\t\t<form name="forms.formSetting" novalidate>\n\n\t\t\t\t\t\t\t\x3c!-- START NAME --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.name.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_NAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="forms.formSetting.name.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t\t\t<input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\n              \x3c!-- START USERNAME --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.username.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_USERNAME\' | translate}} <span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="username" placeholder="{{\'APPLICATION_USERNAME\' | translate}}" class="form-control" data-ng-model="item.username" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="forms.formSetting.username.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END USERNAME --\x3e\n\n\n              \x3c!-- START REMOTE ADDRESS --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.remoteUri.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_REMOTE_ADDRESS\' | translate}} <span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="url" name="remoteUri" placeholder="{{\'APPLICATION_REMOTE_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.remoteUri" required ng-remote-validate="/api/sugarcrm/accounts/validate/remoteUri"/>\n\t\t\t\t\t\t\t\t<span data-ng-show="forms.formSetting.remoteUri.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n                <span data-ng-show="(forms.formSetting.remoteUri.$touched || forms.formSetting.$submitted) && forms.formSetting.remoteUri.$error.ngRemoteValidate" class="help-block help-block-error">\n\t\t\t\t          <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_EXIST_DOMAIN\' | translate}}.\n\t\t\t\t        </span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END USERNAME --\x3e\n\n              \x3c!-- START PASSWORD --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.password.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_PASSWORD\' | translate}} <span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="password" name="password" placeholder="{{\'APPLICATION_PASSWORD\' | translate}}" class="form-control" data-ng-model="item.password" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="forms.formSetting.apiKey.$invalid && forms.formSetting.$submitted" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END PASSWORD --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START SERVER URL --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': forms.formSetting.$submitted && forms.formSetting.serverUrl.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_MOTION_ADDRESS\' | translate}}</label>\n\t\t\t\t\t\t\t\t<input type="url" name="serverUrl" placeholder="{{\'APPLICATION_MOTION_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.serverUrl"/>\n\t\t\t\t\t\t\t\t<span class="help-block">\n\t\t\t\t\t\t\t\t\t{{\'DESCRIPTION_SERVER_URL\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span class="help-block help-block-info">\n\t\t\t\t\t\t\t\t\t{{\'MESSAGE_MOTION_ADDRESS_FORMAT\' | translate}}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END SERVER URL --\x3e\n\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" data-ng-click="next()"/>\n\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</wz-step>\n\n\t\t\t\t\t<wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n\t\t\t\t\t\t<p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n\t\t\t\t\t\t<input class="btn default" type="button" value="{{\'APPLICATION_BACK\' | translate}}" wz-previous/>\n\t\t\t\t\t\t<input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n\t\t\t\t\t</wz-step>\n\n\t\t\t\t</wizard>\n\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/answer/list/list.create.modal.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_NEW_CANNED_ANSWER\' | translate }}</h3>\n</div>\n<div class="modal-body">\n  <form name="form" novalidate>\n\n    \x3c!-- START NAME --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (form.key.$touched || form.$submitted) && form.key.$invalid}">\n      <label class="control-label">{{\'APPLICATION_KEY\' | translate}}<span class="required" aria-required="true">*</span></label>\n      <input type="text" name="key" placeholder="{{\'APPLICATION_KEY\' | translate}}" class="form-control" data-ng-model="item.key" required/>\n      <span data-ng-show="(form.key.$touched || form.$submitted) && form.key.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END NAME --\x3e\n\n    \x3c!-- START VALUE --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (form.value.$touched || form.$submitted) && form.value.$invalid}">\n      <label class="control-label">{{\'APPLICATION_VALUE\' | translate}}<span class="required" aria-required="true">*</span></label></label>\n      <textarea type="text" name="value" placeholder="{{\'APPLICATION_VALUE\' | translate}}" class="form-control" data-ng-model="item.value" required></textarea>\n      <span data-ng-show="(form.value.$touched || form.$submitted) && form.value.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END VALUE --\x3e\n\n    \x3c!-- START DESCRIPTION --\x3e\n    <div class="form-group">\n      <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n      <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n    </div>\n    \x3c!-- END DESCRIPTION --\x3e\n\n  </form>\n</div>\n<div class="modal-footer">\n  <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n  <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/answer/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-magic-wand"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_CANNED_ANSWERS\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-magic-wand font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_CANNED_ANSWERS\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<a class="btn green-jungle" href="#" data-toggle="dropdown" data-ng-click="createItem()">\n\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_CANNED_ANSWER\' | translate }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/answer/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="getAnswer()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-magic-wand"></i>\n\t\t\t\t\t<a href="/tools/answers/list">{{ \'APPLICATION_CANNED_ANSWER\' | translate }}</a>\n\t\t\t\t\t<i data-ng-show="answer" class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li data-ng-show="answer">\n\t\t\t\t\t<a href="#">{{answer.key}}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE SIDEBAR --\x3e\n\t\t<div class="profile-sidebar">\n\t\t\t\x3c!-- PORTLET MAIN --\x3e\n\t\t\t<div class="portlet light profile-sidebar-portlet">\n\t\t\t\t\x3c!-- SIDEBAR USERPIC --\x3e\n\t\t\t\t<div class="profile-image">\n\t\t\t\t\t<img data-ng-src="assets/images/media/answer.png" class="img-responsive">\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USERPIC --\x3e\n\t\t\t\t\x3c!-- SIDEBAR USER TITLE --\x3e\n\t\t\t\t<div class="profile-usertitle">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{answer.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USER TITLE --\x3e\n\n\t\t\t\t\x3c!-- SIDEBAR MENU --\x3e\n\t\t\t\t<div class="profile-usermenu">\n\t\t\t\t\t<ul class="nav">\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.answers.view.settings\')}">\n\t\t\t\t\t\t\t<a data-ng-href="/tools/answers/view/{{answer.id}}/settings">\n\t\t\t\t\t\t\t\t<i class="icon-settings"></i>\n\t\t\t\t\t\t\t\t{{ \'APPLICATION_SETTINGS\' | translate}}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END MENU --\x3e\n\t\t\t</div>\n\t\t\t\x3c!-- END PORTLET MAIN --\x3e\n\t\t</div>\n\t\t\x3c!-- END BEGIN PROFILE SIDEBAR --\x3e\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/answer/view/view.settings.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_CANNED_ANSWER\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n\t\t\t\t</div>\n\t\t\t\t<ul class="nav nav-tabs">\n\t\t\t\t\t<li class="active">\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\n\t\t\t<div class="portlet-body">\n\t\t\t\t<div class="tab-content">\n\t\t\t\t\t\x3c!-- GENERAL TAB --\x3e\n\t\t\t\t\t<div class="tab-pane active" id="tab_1_1">\n\t\t\t\t\t\t<form name="forms.general" data-ng-submit="forms.general.$valid && updateAnswer()" novalidate>\n\n\t\t\t\t\t\t\t\x3c!-- START KEY --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.key.$touched || forms.general.$submitted) && forms.general.key.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_KEY\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="key" placeholder="{{\'APPLICATION_KEY\' | translate}}" class="form-control" data-ng-model="answer.key" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.key.$touched || forms.general.$submitted) && forms.general.key.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END KEY --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START VALUE --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.value.$touched || forms.general.$submitted) && forms.general.value.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_VALUE\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<textarea type="text" name="value" placeholder="{{\'APPLICATION_VALUE\' | translate}}" class="form-control" data-ng-model="answer.value" required></textarea>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.value.$touched || forms.general.$submitted) && forms.general.value.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END VALUE --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t\t\t<textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="answer.description"></textarea>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END ADVANCED TAB --\x3e\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/tools/automation/list/list.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t\t<div class="page-bar">\n\t\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<i class="icon-bulb"></i>\n\t\t\t\t\t\t<a href="#">{{ \'APPLICATION_AUTOMATIONS\' | translate }}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n</div>\n\n\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-bulb font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_AUTOMATIONS\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="btn-group">\n\t\t\t\t\t\t<a class="btn green-jungle " href="/tools/automations/wizard">\n\t\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_AUTOMATION\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- <a class="btn btn-icon-only btn-default fullscreen" href="#"></a> --\x3e\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/automation/view/view.html",'\x3c!-- BEGIN PAGE HEADER--\x3e\n<div class="row" data-ng-init="initView()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-settings"></i>\n\t\t\t\t\t<a href="/tools/automations/list">{{ \'APPLICATION_AUTOMATIONS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right" data-ng-show="automation"></i>\n\t\t\t\t</li>\n\t\t\t\t<li data-ng-show="automation">\n\t\t\t\t\t<a href="#">{{ automation.description || automation.name }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\x3c!-- END PAGE HEADER--\x3e\n\n\x3c!-- BEGIN PAGE CONTENT--\x3e\n\t\t\x3c!-- BEGIN PROFILE SIDEBAR --\x3e\n\t\t<div class="profile-sidebar">\n\t\t\t\x3c!-- PORTLET MAIN --\x3e\n\t\t\t<div class="portlet light profile-sidebar-portlet">\n\t\t\t\t\x3c!-- SIDEBAR USERPIC --\x3e\n\t\t\t\t<div class="profile-image">\n\t\t\t\t\t<img data-ng-src="assets/images/media/automation.png" class="img-responsive">\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USERPIC --\x3e\n\n\t\t\t\t\x3c!-- SIDEBAR USER TITLE --\x3e\n\t\t\t\t<div class="profile-usertitle">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{ automation.name }}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="profile-usertitle-job">\n\t\t\t\t\t\t{{ automation.description }}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USER TITLE --\x3e\n\n\t\t\t\t\x3c!-- SIDEBAR MENU --\x3e\n\t\t\t\t<div class="profile-usermenu">\n\t\t\t\t\t<ul class="nav">\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.automations.view.settings\')}">\n\t\t\t\t\t\t\t<a href="/tools/automations/view/{{automation.id}}/settings">\n\t\t\t\t\t\t\t<i class="icon-bulb"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_SETTINGS\' | translate }} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END MENU --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END BEGIN PROFILE SIDEBAR --\x3e\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),
 a.put("app/tools/automation/view/view.settings.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SETTINGS\' | translate}}</span>\n\t\t\t\t</div>\n\t\t\t\t<ul class="nav nav-tabs">\n\t\t\t\t\t<li class="active">\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_1" data-toggle="tab">{{\'APPLICATION_GENERALS\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_2" data-toggle="tab">{{\'APPLICATION_CONDITIONS\' | translate}} & {{\'APPLICATION_ACTIONS\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t<form name="forms.general" data-ng-submit="exitValidation(forms.general.$valid) && updateAutomation()" novalidate>\n\t\t\t\t\t<div class="tab-content">\n\t\t\t\t\t\t\x3c!-- GENERAL TAB --\x3e\n\t\t\t\t\t\t<div class="tab-pane active" id="tab_1_1">\n\t\t\t\t\t\t\t\x3c!-- START NAME --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="automation.name" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START CHANNEL --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.channel.$touched || forms.general.$submitted) && forms.general.channel.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_CHANNEL\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="channel" placeholder="{{\'APPLICATION_CHANNEL\' | translate}}" class="form-control" data-ng-model="automation.channel" required readonly/>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.channel.$touched || forms.general.$submitted) && forms.general.channel.$invalid && forms.general.channel.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END CHANNEL --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START TIMEOUT --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': forms.general.timeout.$touched && forms.general.timeout.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_TIMEOUT\' | translate}} ({{\'APPLICATION_MINUTES\' | translate}})</label>\n\t\t\t\t\t\t\t\t<input type="number" name="timeout" min="10" placeholder="{{\'APPLICATION_TIMEOUT\' | translate}} (min 10 {{\'APPLICATION_MINUTES\' | translate}})" class="form-control" data-ng-model="automation.timeout" data-ng-init="item.timeout = 10" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="forms.general.timeout.$touched && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END TIMEOUT --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START STATUS --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_STATUS\' | translate}}</label>\n\t\t\t\t\t\t\t\t</br>\n\t\t\t\t\t\t\t\t<input bs-switch class="form-control" ng-model="automation.status" type="checkbox" name="status" switch-active="{{ recordSwitch.isActive }}" switch-on-text="{{ recordSwitch.onText }}" switch-off-text="{{ recordSwitch.offText }}" switch-on-color="{{ recordSwitch.onColor }}"\n\t\t\t\t\t\t\t\t\t\t\t\tswitch-off-color="{{ recordSwitch.offColor }}" switch-animate="{{ recordSwitch.animate }}" switch-size="{{ recordSwitch.size }}" switch-label="{{ recordSwitch.label }}" switch-icon="{{ recordSwitch.icon }}" switch-radio-off="{{ recordSwitch.radioOff }}"\n\t\t\t\t\t\t\t\t\t\t\t\tswitch-label-width="{{ recordSwitch.labelWidth }}" switch-handle-width="{{ recordSwitch.handleWidth }}">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END STATUS --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t\t\t<input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="automation.description" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- END GENERAL TAB --\x3e\n\t\t\t\t\t\t<div class="tab-pane" id="tab_1_2">\n\t\t\t\t\t\t\t\x3c!-- All --\x3e\n\t\t\t\t\t\t\t<div class="portlet light bordered">\n\t\t\t\t\t\t\t\t<div class="portlet-title">\n\t\t\t\t\t\t\t\t\t<div class="caption font-blue-hoki">\n\t\t\t\t\t\t\t\t\t\t<i class="icon-tag font-blue-hoki"></i>\n\t\t\t\t\t\t\t\t\t\t<span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ALL_CONDITIONS\' | translate"></span>:\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\t\t\t\t<div class="portlet light bordered" ng-repeat="all in automation.All">\n\t\t\t\t\t\t\t\t\t\t<div class="portlet-title">\n\t\t\t\t\t\t\t\t\t\t\t<div class="caption font-blue-hoki">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_ALL\' | translate }} #{{$index+1}}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<div class="actions">\n\t\t\t\t\t\t\t\t\t\t\t\t<a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'All\',$index)"><i class="fa fa-trash"></i></a>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\t\t\t\t\t\t<div class="padding-bottom row">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="col-md-12">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<condition-builder element="all" serviceindex="automation.channel" service="$automations" form="forms.general"></condition-builder>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t\t\t\t<div class="col-md-12">\n\t\t\t\t\t\t\t\t\t\t\t<button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'All\')">\n\t\t\t\t\t\t\t\t\t\t\t\t<i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\x3c!-- Any --\x3e\n\t\t\t\t\t\t\t<div class="portlet light bordered">\n\t\t\t\t\t\t\t\t<div class="portlet-title">\n\t\t\t\t\t\t\t\t\t<div class="caption font-blue-hoki">\n\t\t\t\t\t\t\t\t\t\t<i class="icon-tag font-blue-hoki"></i>\n\t\t\t\t\t\t\t\t\t\t<span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ANY_CONDITIONS\' | translate"></span>:\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\t\t\t\t<div class="portlet light bordered" ng-repeat="any in automation.Any">\n\t\t\t\t\t\t\t\t\t\t<div class="portlet-title">\n\t\t\t\t\t\t\t\t\t\t\t<div class="caption font-blue-hoki">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_ANY\' | translate }} #{{$index+1}}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<div class="actions">\n\t\t\t\t\t\t\t\t\t\t\t\t<a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'Any\',$index)"><i class="fa fa-trash"></i></a>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\t\t\t\t\t\t<div class="padding-bottom row">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="col-md-12">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<condition-builder element="any" serviceindex="automation.channel" service="$automations" form="forms.general"></condition-builder>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t\t\t\t<div class="col-md-12">\n\t\t\t\t\t\t\t\t\t\t\t<button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'Any\')">\n\t\t\t\t\t\t\t\t\t\t\t\t<i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\x3c!-- Actions --\x3e\n\t\t\t\t\t\t\t<div class="portlet light bordered">\n\t\t\t\t\t\t\t\t<div class="portlet-title">\n\t\t\t\t\t\t\t\t\t<div class="caption font-blue-hoki">\n\t\t\t\t\t\t\t\t\t\t<i class="icon-tag font-blue-hoki"></i>\n\t\t\t\t\t\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }}</span>:\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\t\t\t\t<div class="portlet light bordered" ng-repeat="action in automation.Actions">\n\t\t\t\t\t\t\t\t\t\t<div class="portlet-title">\n\t\t\t\t\t\t\t\t\t\t\t<div class="caption font-blue-hoki">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }} #{{$index+1}}</span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<div class="actions">\n\t\t\t\t\t\t\t\t\t\t\t\t<a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeAction($index)"><i class="fa fa-trash"></i></a>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\t\t\t\t\t\t<div class="padding-bottom row">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="col-md-12">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$invalid}">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="action.action" theme="bootstrap" data-ng-change="resetActionData(action)" name="action{{$index}}" required>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_ACTION\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="tAction.value as tAction in $automations.services[automation.channel].actions | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="tAction.name | translate | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class="help-block">\n\t\t\t\t\t\t\t\t\t\t\t\t{{ \'APPLICATION_ACTION\' | translate }}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div ng-switch="action.action">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<action-builder-status ng-switch-when="status" element="action" form="forms.settings"></action-builder-status>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t\t\t\t<div class="col-md-12">\n\t\t\t\t\t\t\t\t\t\t\t<button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addAction()">\n\t\t\t\t\t\t\t\t\t\t\t\t<i class="fa fa-plus"></i> {{\'APPLICATION_ADD_ACTION\' | translate}}\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="has-error" data-ng-show="forms.general.$submitted && !automation.All.length && !automation.Any.length">\n\t\t\t\t\t\t\t\t<span class="help-block help-block-error form-control">\n\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_CONDITION\' | translate}}.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="has-error" data-ng-show="forms.general.$submitted && !automation.Actions.length">\n\t\t\t\t\t\t\t\t<span class="help-block help-block-error form-control">\n\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_ACTION\' | translate}}.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</form>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/tools/automation/wizard/wizard.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t\x3c!-- BEGIN PAGE HEADER--\x3e\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-settings"></i>\n\t\t\t\t\t<a href="/tools/automations/list">{{ \'APPLICATION_AUTOMATIONS\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\t\t\x3c!-- END PAGE HEADER--\x3e\n\n\t\t\x3c!-- BEGIN  PORTLET--\x3e\n\t\t<div class="portlet light bordered">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-bulb font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_AUTOMATIONS\' | translate }} WIZARD</a> </span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t<wizard on-finish="createItem()">\n\t\t\t\t\t<wz-step title="{{\'APPLICATION_GENERAL\' | translate}}" canexit="exitValidation(forms.general.$valid)">\n\t\t\t\t\t\t<form name="forms.general" data-ng-submit="submit()" novalidate>\n\t\t\t\t\t\t\t\x3c!-- START NAME --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': forms.general.name.$touched && forms.general.name.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="forms.general.name.$touched && forms.general.name.$invalid && forms.general.name.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START STATUS --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_STATUS\' | translate}}</label></br>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t    bs-switch\n\t\t\t\t\t\t\t\t\t\tclass="form-control"\n\t\t\t\t\t\t\t\t    ng-model="item.status"\n\t\t\t\t\t\t\t\t    type="checkbox"\n\t\t\t\t\t\t\t\t\t\tname="status"\n\t\t\t\t\t\t\t\t\t\tdata-ng-init="item.status = 0"\n\t\t\t\t\t\t\t\t    switch-active="{{ statusSwitch.isActive }}"\n\t\t\t\t\t\t\t\t    switch-on-text="{{ statusSwitch.onText }}"\n\t\t\t\t\t\t\t\t    switch-off-text="{{ statusSwitch.offText }}"\n\t\t\t\t\t\t\t\t    switch-on-color="{{ statusSwitch.onColor }}"\n\t\t\t\t\t\t\t\t    switch-off-color="{{ statusSwitch.offColor }}"\n\t\t\t\t\t\t\t\t    switch-animate="{{ statusSwitch.animate }}"\n\t\t\t\t\t\t\t\t    switch-size="{{ statusSwitch.size }}"\n\t\t\t\t\t\t\t\t    switch-label="{{ statusSwitch.label }}"\n\t\t\t\t\t\t\t\t    switch-icon="{{ statusSwitch.icon }}"\n\t\t\t\t\t\t\t\t    switch-radio-off="{{ statusSwitch.radioOff }}"\n\t\t\t\t\t\t\t\t    switch-label-width="{{ statusSwitch.labelWidth }}"\n\t\t\t\t\t\t\t\t    switch-handle-width="{{ statusSwitch.handleWidth }}">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END STATUS --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t\t\t<input type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</wz-step>\n\t\t\t\t\t<wz-step title="{{\'APPLICATION_SETTINGS\' | translate}}" canexit="exitSettingsValidation(forms.settings.$valid)">\n\t\t\t\t\t\t<form name="forms.settings" novalidate>\n\t\t\t\t\t\t<div class="portlet light bordered">\n\t\t\t\t\t\t\t<div class="portlet-title">\n\t\t\t\t\t\t\t\t<div class="caption font-blue-hoki">\n\t\t\t\t\t\t\t\t\t<i class="icon-tag font-blue-hoki"></i>\n\t\t\t\t\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_CHANNEL\' | translate }}</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.settings.channel.$touched || forms.settings.$submitted) && forms.settings.channel.$invalid}">\n\t\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_CHANNEL\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="item.channel" name="channel" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_CHANNEL\' | translate }}">{{$select.selected | capitalize}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="channel in $automations.channels | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="channel | highlight: $select.search | capitalize"></div>\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t<span data-ng-show="(forms.settings.channel.$touched || forms.settings.$submitted) && forms.settings.channel.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\x3c!-- All --\x3e\n\t\t\t\t\t\t<div class="portlet light bordered">\n\t\t\t\t\t\t\t<div class="portlet-title">\n\t\t\t\t\t\t\t\t<div class="caption font-blue-hoki">\n\t\t\t\t\t\t\t\t\t<i class="icon-tag font-blue-hoki"></i>\n\t\t\t\t\t\t\t\t\t<span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ALL_CONDITIONS\' | translate"></span>:\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\t\t\t<div class="portlet light bordered" ng-repeat="all in item.All">\n\t\t\t\t\t\t\t\t\t<div class="portlet-title">\n\t\t\t\t\t\t\t\t\t\t<div class="caption font-blue-hoki">\n\t\t\t\t\t\t\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_ALL\' | translate }} #{{$index+1}}</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="actions">\n\t\t\t\t\t\t\t\t\t\t\t<a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'All\',$index)"><i class="fa fa-trash"></i></a>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\t\t\t\t\t<div class="padding-bottom row">\n\t\t\t\t\t\t\t\t\t\t\t<div class="col-md-12">\n\t\t\t\t\t\t\t\t\t\t\t\t<condition-builder element="all" serviceindex="item.channel" service="$automations" form="forms.general"></condition-builder>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t\t\t<div class="col-md-12">\n\t\t\t\t\t\t\t\t\t\t<button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'All\')">\n\t\t\t\t\t\t\t\t\t\t\t<i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\x3c!-- Any --\x3e\n\t\t\t\t\t\t<div class="portlet light bordered">\n\t\t\t\t\t\t\t<div class="portlet-title">\n\t\t\t\t\t\t\t\t<div class="caption font-blue-hoki">\n\t\t\t\t\t\t\t\t\t<i class="icon-tag font-blue-hoki"></i>\n\t\t\t\t\t\t\t\t\t<span class="caption-subject" ng-bind-html="\'APPLICATION_MEET_ANY_CONDITIONS\' | translate"></span>:\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\t\t\t<div class="portlet light bordered" ng-repeat="any in item.Any">\n\t\t\t\t\t\t\t\t\t<div class="portlet-title">\n\t\t\t\t\t\t\t\t\t\t<div class="caption font-blue-hoki">\n\t\t\t\t\t\t\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_ANY\' | translate }} #{{$index+1}}</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="actions">\n\t\t\t\t\t\t\t\t\t\t\t<a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeCondition(\'Any\',$index)"><i class="fa fa-trash"></i></a>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\t\t\t\t\t<div class="padding-bottom row">\n\t\t\t\t\t\t\t\t\t\t\t<div class="col-md-12">\n\t\t\t\t\t\t\t\t\t\t\t\t<condition-builder element="any" serviceindex="item.channel" service="$automations" form="forms.general"></condition-builder>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t\t\t<div class="col-md-12">\n\t\t\t\t\t\t\t\t\t\t<button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addCondition(\'Any\')">\n\t\t\t\t\t\t\t\t\t\t\t<i class="fa fa-plus"></i> {{\'APPLICATION_ADD_CONDITION\' | translate}}\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\x3c!-- Actions --\x3e\n\t\t\t\t\t\t<div class="portlet light bordered">\n\t\t\t\t\t\t\t<div class="portlet-title">\n\t\t\t\t\t\t\t\t<div class="caption font-blue-hoki">\n\t\t\t\t\t\t\t\t\t<i class="icon-tag font-blue-hoki"></i>\n\t\t\t\t\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }}</span>:\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\t\t\t<div class="portlet light bordered" ng-repeat="action in item.Actions">\n\t\t\t\t\t\t\t\t\t<div class="portlet-title">\n\t\t\t\t\t\t\t\t\t\t<div class="caption font-blue-hoki">\n\t\t\t\t\t\t\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_ACTIONS\' | translate }} #{{$index+1}}</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="actions">\n\t\t\t\t\t\t\t\t\t\t\t<a href="#" class="btn red-sunglo btn-icon-only" ng-click="removeAction($index)"><i class="fa fa-trash"></i></a>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\t\t\t\t\t<div class="padding-bottom row">\n\t\t\t\t\t\t\t\t\t\t\t<div class="col-md-12">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$invalid}">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="action.action" theme="bootstrap" data-ng-change="resetActionData(action)" name="action{{$index}}" required>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_ACTION\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="tAction.value as tAction in $automations.services[item.channel].actions | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="tAction.name | translate | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class="help-block">\n\t\t\t\t\t\t\t\t\t\t\t\t{{ \'APPLICATION_ACTION\' | translate }}\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general[\'action\'+$index].$touched || forms.general.$submitted) && forms.general[\'action\'+$index].$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div ng-switch="action.action">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<action-builder-status ng-switch-when="status" element="action" form="forms.settings"></action-builder-status>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t\t\t<div class="col-md-12">\n\t\t\t\t\t\t\t\t\t\t<button type="button" class="btn btn-sm green padding-bottom" data-ng-click="addAction()">\n\t\t\t\t\t\t\t\t\t\t\t<i class="fa fa-plus"></i> {{\'APPLICATION_ADD_ACTION\' | translate}}\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="has-error" data-ng-show="forms.settings.$submitted && !item.All.length && !item.Any.length">\n\t\t\t\t\t\t\t<span class="help-block help-block-error form-control">\n\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_CONDITION\' | translate}}.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="has-error" data-ng-show="forms.settings.$submitted && !item.Actions.length">\n\t\t\t\t\t\t\t<span class="help-block help-block-error form-control">\n\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INSERT_AT_LEAST_ONE_ACTION\' | translate}}.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_CONTINUE\' | translate}}" ng-click="next()"/>\n\t\t\t\t\t</form>\n\t\t\t\t\t</wz-step>\n\t\t\t\t\t<wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n\t\t\t\t\t\t<p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n\t\t\t\t\t\t<button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n\t\t\t\t\t\t<input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n\t\t\t\t\t</wz-step>\n\t\t\t\t</wizard>\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/interval/list/list.create.modal.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_NEW_INTERVAL\' | translate }}</h3>\n</div>\n<div class="modal-body">\n  <form name="form" novalidate>\n\n    \x3c!-- START NAME --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n      <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n      <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required/>\n      <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END NAME --\x3e\n\n    \x3c!-- START DESCRIPTION --\x3e\n    <div class="form-group">\n      <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n      <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n    </div>\n    \x3c!-- END DESCRIPTION --\x3e\n\n  </form>\n</div>\n<div class="modal-footer">\n  <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n  <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),
-a.put("app/tools/interval/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-clock"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_INTERVALS\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-docs font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_INTERVALS\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="btn-group">\n\t\t\t\t\t\t<button class="btn green-jungle " ng-click="createItem()">\n\t\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_INTERVAL\' | translate }}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/interval/view/subinterval/list/list.html",'<div ui-view class="profile-content">\n\t<div class="row">\n\t\t<div class="col-md-12">\n\t\t\t<div class="portlet light" data-ng-init="initView()">\n\t\t\t\t<div class="portlet-title  tabbable-line">\n\t\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SUBINTERVALS\' | translate}}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="actions">\n\t\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="btn-group">\n\t\t\t\t\t\t\t<a class="btn green-jungle" href="/tools/intervals/view/{{$scope.stateParams.id}}/subintervals/view/">\n\t\t\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_SUBINTERVAL\' | translate }}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/tools/interval/view/subinterval/view/view.html",'<div class="row" data-ng-init="initSubInterval()">\n\t<div class="col-md-12">\n\t\t\x3c!-- BEGIN  PORTLET--\x3e\n\t\t<div class="portlet light bordered">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-notebook font-green-sharp"></i>\n          <span class="caption-subject">{{ \'APPLICATION_SUBINTERVAL\' | translate }} WIZARD</a> </span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t<wizard on-finish="addOrUpdateSubInterval()">\n          <wz-step title="{{\'APPLICATION_SETTINGS\' | translate}}" canexit="exitValidation(forms.subinterval.name.$valid)">\n            <form name="forms.subinterval" novalidate>\n\n              \x3c!-- START NAME --\x3e\n              <div class="form-group" data-ng-class="{\'has-error\': (forms.subinterval.name.$touched || forms.subinterval.$submitted) && forms.subinterval.name.$invalid}">\n                <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n                <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="subinterval.name" required/>\n                <span data-ng-show="(forms.subinterval.name.$touched || forms.subinterval.$submitted) && forms.subinterval.name.$error.required" class="help-block help-block-error">\n                  <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n                </span>\n              </div>\n              \x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START TIME --\x3e\n              <div class="form-group">\n                <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n                <div class="input-group input-large">\n\t\t\t\t\t\t\t\t\t<fieldset class="pull-left" ng-disabled="splittedInterval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="splittedInterval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n                  <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n\t\t\t\t\t\t\t\t\t<fieldset ng-disabled="splittedInterval.alwaysTime"><uib-timepicker  name="t_to" data-ng-model="splittedInterval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n\t\t\t\t\t\t\t\t\t<label class="control-label pointer-cursor margin-top20"><input\n\t\t\t\t\t\t\t\t\tbs-switch\n\t\t\t\t\t\t\t\t\tclass="form-control"\n\t\t\t\t\t\t\t\t\tng-model="splittedInterval.alwaysTime"\n\t\t\t\t\t\t\t\t\ttype="checkbox"\n\t\t\t\t\t\t\t\t\tswitch-active="{{ switch.isActive }}"\n\t\t\t\t\t\t\t\t\tswitch-on-text="{{\'APPLICATION_YES\' | translate}}"\n\t\t\t\t\t\t\t\t\tswitch-off-text="{{\'APPLICATION_NO\' | translate}}"\n\t\t\t\t\t\t\t\t\tswitch-on-color="{{ switch.onColor }}"\n\t\t\t\t\t\t\t\t\tswitch-off-color="{{ switch.offColor }}"\n\t\t\t\t\t\t\t\t\tswitch-animate="{{ switch.animate }}"\n\t\t\t\t\t\t\t\t\tswitch-size="{{ switch.size }}"\n\t\t\t\t\t\t\t\t\tswitch-label="{{ switch.label }}"\n\t\t\t\t\t\t\t\t\tswitch-icon="{{ switch.icon }}"\n\t\t\t\t\t\t\t\t\tswitch-radio-off="{{ switch.radioOff }}"\n\t\t\t\t\t\t\t\t\tswitch-label-width="{{ switch.labelWidth }}"\n\t\t\t\t\t\t\t\t\tswitch-handle-width="{{ switch.handleWidth }}"> {{\'APPLICATION_ALWAYS\' | translate}}</label>\n                </div>\n              </div>\n              \x3c!-- END TIME --\x3e\n\n              \x3c!-- START WEEKDAY --\x3e\n              <div class="form-group">\n                <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n                <div class="input-group input-large">\n                  <ui-select data-ng-model="splittedInterval.wd_from" theme="bootstrap" name="wd_from">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n                      {{weekDay.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                  <span class="input-group-addon">to</span>\n                  <ui-select data-ng-model="splittedInterval.wd_to" theme="bootstrap" name="wd_to">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n                      {{weekDay.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                </div>\n              </div>\n              \x3c!-- END WEEKDAY --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START MONTHDAY --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n\t\t\t\t\t\t\t\t<div class="input-group input-large">\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="splittedInterval.md_from" theme="bootstrap" name="md_from">\n\t\t\t\t\t\t\t\t\t\t<ui-select-match>{{$select.selected===\'always\' ? ($select.selected | capitalize) : $select.selected}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="splittedInterval.md_to && splittedInterval.md_to!==\'always\' && monthDay>splittedInterval.md_to && monthDay!==\'always\'">\n\t\t\t\t\t\t\t\t\t\t\t{{monthDay===\'always\' ? (monthDay | capitalize) : monthDay}}\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t<span class="input-group-addon">to</span>\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="splittedInterval.md_to" theme="bootstrap" name="md_to">\n\t\t\t\t\t\t\t\t\t\t<ui-select-match>{{$select.selected===\'always\' ? ($select.selected | capitalize) : $select.selected}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="splittedInterval.md_from && splittedInterval.md_from!==\'always\' && monthDay<splittedInterval.md_from && monthDay!==\'always\'">\n\t\t\t\t\t\t\t\t\t\t\t{{monthDay===\'always\' ? (monthDay | capitalize) : monthDay}}\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END MONTHDAY --\x3e\n\n\n              \x3c!-- START MONTH --\x3e\n              <div class="form-group">\n                <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n                <div class="input-group input-large">\n                  <ui-select data-ng-model="splittedInterval.m_from" theme="bootstrap" name="m_from">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n                      {{month.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                  <span class="input-group-addon">to</span>\n                  <ui-select data-ng-model="splittedInterval.m_to" theme="bootstrap" name="m_to">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n                      {{month.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                </div>\n              </div>\n              \x3c!-- END MONTH --\x3e\n\n\n\n\t\t\t\t\t\t\t<button class="btn green-haze" type="submit" ng-click="next()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n            </form>\n          </wz-step>\n\n\n\t\t\t\t\t\t<wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n\t\t\t\t\t\t\t<p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n\t\t\t\t\t\t\t<button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n\t\t\t\t\t\t\t<input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n\t\t\t\t\t\t</wz-step>\n\t\t\t\t</wizard>\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/interval/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="getInterval()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-clock"></i>\n\t\t\t\t\t<a href="/tools/intervals/list">{{ \'APPLICATION_INTERVALS\' | translate }}</a>\n\t\t\t\t\t<i data-ng-show="interval" class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li data-ng-show="interval">\n\t\t\t\t\t<a href="#">{{interval.name}}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE SIDEBAR --\x3e\n\t\t<div class="profile-sidebar">\n\t\t\t\x3c!-- PORTLET MAIN --\x3e\n\t\t\t<div class="portlet light profile-sidebar-portlet">\n\t\t\t\t\x3c!-- SIDEBAR USERPIC --\x3e\n\t\t\t\t<div class="profile-image">\n\t\t\t\t\t<img data-ng-src="assets/images/media/interval.png" class="img-responsive">\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USERPIC --\x3e\n\t\t\t\t\x3c!-- SIDEBAR USER TITLE --\x3e\n\t\t\t\t<div class="profile-usertitle">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{interval.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USER TITLE --\x3e\n\n\t\t\t\t\x3c!-- SIDEBAR MENU --\x3e\n\t\t\t\t<div class="profile-usermenu">\n\t\t\t\t\t<ul class="nav">\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.intervals.view.settings\')}">\n\t\t\t\t\t\t\t<a ng-href="/tools/intervals/view/{{interval.id}}/settings">\n\t\t\t\t\t\t\t<i class="icon-settings"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_SETTINGS\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.intervals.view.subintervals.list\') || $state.is(\'main.tools.intervals.view.subintervals.view\')}">\n\t\t\t\t\t\t\t<a ng-href="/tools/intervals/view/{{interval.id}}/subintervals/list">\n\t\t\t\t\t\t\t<i class="icon-list"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_SUBINTERVALS\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END MENU --\x3e\n\t\t\t</div>\n\t\t\t\x3c!-- END PORTLET MAIN --\x3e\n\t\t</div>\n\t\t\x3c!-- END BEGIN PROFILE SIDEBAR --\x3e\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/interval/view/view.settings.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_INTERVAL\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n\t\t\t\t</div>\n\t\t\t\t<ul class="nav nav-tabs">\n\t\t\t\t\t<li class="active">\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\n\t\t\t<div class="portlet-body">\n\t\t\t\t<div class="tab-content">\n\t\t\t\t\t\x3c!-- GENERAL TAB --\x3e\n\t\t\t\t\t<div class="tab-pane active" id="tab_1_1">\n\t\t\t\t\t\t<form name="forms.general" data-ng-submit="forms.general.$valid && updateInterval()" novalidate>\n\n\t\t\t\t\t\t\t\x3c!-- START NAME --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="interval.name" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t\t\t<textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="interval.description"></textarea>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END ADVANCED TAB --\x3e\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/tools/interval/view/view.subinterval.html",'\n<div class="row" data-ng-init="initSubInterval(true)">\n\t<div class="col-md-12">\n\t\t\x3c!-- BEGIN  PORTLET--\x3e\n\t\t<div class="portlet light bordered">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-notebook font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_NEW_SUBINTERVAL\' | translate }} WIZARD</a> </span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t<wizard on-finish="addSubInterval()">\n          <wz-step title="{{\'APPLICATION_SETTINGS\' | translate}}" canexit="exitValidation(forms.subinterval.name.$valid)">\n            <form name="forms.subinterval" novalidate>\n\n              \x3c!-- START NAME --\x3e\n              <div class="form-group" data-ng-class="{\'has-error\': (forms.subinterval.name.$touched || forms.subinterval.$submitted) && forms.subinterval.name.$invalid}">\n                <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n                <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="subinterval.name" required/>\n                <span data-ng-show="(forms.subinterval.name.$touched || forms.subinterval.$submitted) && forms.subinterval.name.$error.required" class="help-block help-block-error">\n                  <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n                </span>\n              </div>\n              \x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START TIME --\x3e\n              <div class="form-group">\n                <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n                <div class="input-group input-large">\n\t\t\t\t\t\t\t\t\t<fieldset class="pull-left" ng-disabled="splittedInterval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="splittedInterval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n                  <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n\t\t\t\t\t\t\t\t\t<fieldset ng-disabled="splittedInterval.alwaysTime"><uib-timepicker  name="t_to" data-ng-model="splittedInterval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n\t\t\t\t\t\t\t\t\t<label class="control-label pointer-cursor margin-top20"><input\n\t\t\t\t\t\t\t\t\tbs-switch\n\t\t\t\t\t\t\t\t\tclass="form-control"\n\t\t\t\t\t\t\t\t\tng-model="splittedInterval.alwaysTime"\n\t\t\t\t\t\t\t\t\ttype="checkbox"\n\t\t\t\t\t\t\t\t\tswitch-active="{{ switch.isActive }}"\n\t\t\t\t\t\t\t\t\tswitch-on-text="{{\'APPLICATION_YES\' | translate}}"\n\t\t\t\t\t\t\t\t\tswitch-off-text="{{\'APPLICATION_NO\' | translate}}"\n\t\t\t\t\t\t\t\t\tswitch-on-color="{{ switch.onColor }}"\n\t\t\t\t\t\t\t\t\tswitch-off-color="{{ switch.offColor }}"\n\t\t\t\t\t\t\t\t\tswitch-animate="{{ switch.animate }}"\n\t\t\t\t\t\t\t\t\tswitch-size="{{ switch.size }}"\n\t\t\t\t\t\t\t\t\tswitch-label="{{ switch.label }}"\n\t\t\t\t\t\t\t\t\tswitch-icon="{{ switch.icon }}"\n\t\t\t\t\t\t\t\t\tswitch-radio-off="{{ switch.radioOff }}"\n\t\t\t\t\t\t\t\t\tswitch-label-width="{{ switch.labelWidth }}"\n\t\t\t\t\t\t\t\t\tswitch-handle-width="{{ switch.handleWidth }}"> {{\'APPLICATION_ALWAYS\' | translate}}</label>\n                </div>\n              </div>\n              \x3c!-- END TIME --\x3e\n\n              \x3c!-- START WEEKDAY --\x3e\n              <div class="form-group">\n                <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n                <div class="input-group input-large">\n                  <ui-select data-ng-model="splittedInterval.wd_from" theme="bootstrap" name="wd_from">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n                      {{weekDay.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                  <span class="input-group-addon">to</span>\n                  <ui-select data-ng-model="splittedInterval.wd_to" theme="bootstrap" name="wd_to">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n                      {{weekDay.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                </div>\n              </div>\n              \x3c!-- END WEEKDAY --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START MONTHDAY --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n\t\t\t\t\t\t\t\t<div class="input-group input-large">\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="splittedInterval.md_from" theme="bootstrap" name="md_from">\n\t\t\t\t\t\t\t\t\t\t<ui-select-match>{{$select.selected===\'always\' ? ($select.selected | capitalize) : $select.selected}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="splittedInterval.md_to && splittedInterval.md_to!==\'always\' && monthDay>splittedInterval.md_to && monthDay!==\'always\'">\n\t\t\t\t\t\t\t\t\t\t\t{{monthDay===\'always\' ? (monthDay | capitalize) : monthDay}}\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t<span class="input-group-addon">to</span>\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="splittedInterval.md_to" theme="bootstrap" name="md_to">\n\t\t\t\t\t\t\t\t\t\t<ui-select-match>{{$select.selected===\'always\' ? ($select.selected | capitalize) : $select.selected}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="splittedInterval.md_from && splittedInterval.md_from!==\'always\' && monthDay<splittedInterval.md_from && monthDay!==\'always\'">\n\t\t\t\t\t\t\t\t\t\t\t{{monthDay===\'always\' ? (monthDay | capitalize) : monthDay}}\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END MONTHDAY --\x3e\n\n\n              \x3c!-- START MONTH --\x3e\n              <div class="form-group">\n                <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n                <div class="input-group input-large">\n                  <ui-select data-ng-model="splittedInterval.m_from" theme="bootstrap" name="m_from">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n                      {{month.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                  <span class="input-group-addon">to</span>\n                  <ui-select data-ng-model="splittedInterval.m_to" theme="bootstrap" name="m_to">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n                      {{month.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                </div>\n              </div>\n              \x3c!-- END MONTH --\x3e\n\n\n\n\t\t\t\t\t\t\t<button class="btn green-haze" type="submit" ng-click="next()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n            </form>\n          </wz-step>\n\n\n\t\t\t\t\t\t<wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n\t\t\t\t\t\t\t<p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n\t\t\t\t\t\t\t<button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n\t\t\t\t\t\t\t<input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n\t\t\t\t\t\t</wz-step>\n\t\t\t\t</wizard>\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),
-a.put("app/tools/interval/view/view.subintervalSettings.html",'\n<div class="row" data-ng-init="initSubInterval();getSubInterval();">\n\t<div class="col-md-12">\n\t\t\x3c!-- BEGIN  PORTLET--\x3e\n\t\t<div class="portlet light bordered">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-notebook font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_SUBINTERVAL_SETTINGS\' | translate }} WIZARD</a> </span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t<wizard on-finish="updateInterval(\'subintervals\')">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{subinterval.name}}\n\t\t\t\t\t</div>\n          <wz-step title="{{\'APPLICATION_SETTINGS\' | translate}}" canexit="exitValidation(forms.subinterval.name.$valid)">\n            <form name="forms.subinterval" novalidate>\n\n              \x3c!-- START NAME --\x3e\n              <div class="form-group" data-ng-class="{\'has-error\': (forms.subinterval.name.$touched || forms.subinterval.$submitted) && forms.subinterval.name.$invalid}">\n                <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n                <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="interval.SubIntervals[selectedSubInterval].name" required/>\n                <span data-ng-show="(forms.subinterval.name.$touched || forms.subinterval.$submitted) && forms.subinterval.name.$error.required" class="help-block help-block-error">\n                  <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n                </span>\n              </div>\n              \x3c!-- END NAME --\x3e\n\n              \x3c!-- START TIME --\x3e\n              <div class="form-group">\n                <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n                <div class="input-group input-large">\n\t\t\t\t\t\t\t\t\t<fieldset class="pull-left" ng-disabled="splittedInterval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="splittedInterval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n                  <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n\t\t\t\t\t\t\t\t\t<fieldset ng-disabled="splittedInterval.alwaysTime"><uib-timepicker  name="t_to" data-ng-model="splittedInterval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n\t\t\t\t\t\t\t\t\t<label class="control-label pointer-cursor margin-top20"><input\n\t\t\t\t\t\t\t\t\tbs-switch\n\t\t\t\t\t\t\t\t\tclass="form-control"\n\t\t\t\t\t\t\t\t\tng-model="splittedInterval.alwaysTime"\n\t\t\t\t\t\t\t\t\ttype="checkbox"\n\t\t\t\t\t\t\t\t\tswitch-active="{{ switch.isActive }}"\n\t\t\t\t\t\t\t\t\tswitch-on-text="{{\'APPLICATION_YES\' | translate}}"\n\t\t\t\t\t\t\t\t\tswitch-off-text="{{\'APPLICATION_NO\' | translate}}"\n\t\t\t\t\t\t\t\t\tswitch-on-color="{{ switch.onColor }}"\n\t\t\t\t\t\t\t\t\tswitch-off-color="{{ switch.offColor }}"\n\t\t\t\t\t\t\t\t\tswitch-animate="{{ switch.animate }}"\n\t\t\t\t\t\t\t\t\tswitch-size="{{ switch.size }}"\n\t\t\t\t\t\t\t\t\tswitch-label="{{ switch.label }}"\n\t\t\t\t\t\t\t\t\tswitch-icon="{{ switch.icon }}"\n\t\t\t\t\t\t\t\t\tswitch-radio-off="{{ switch.radioOff }}"\n\t\t\t\t\t\t\t\t\tswitch-label-width="{{ switch.labelWidth }}"\n\t\t\t\t\t\t\t\t\tswitch-handle-width="{{ switch.handleWidth }}"> {{\'APPLICATION_ALWAYS\' | translate}}</label>\n                </div>\n              </div>\n              \x3c!-- END TIME --\x3e\n\n              \x3c!-- START WEEKDAY --\x3e\n              <div class="form-group">\n                <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n                <div class="input-group input-large">\n                  <ui-select data-ng-model="splittedInterval.wd_from" theme="bootstrap" name="wd_from">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n                      {{weekDay.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                  <span class="input-group-addon">to</span>\n                  <ui-select data-ng-model="splittedInterval.wd_to" theme="bootstrap" name="wd_to">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n                      {{weekDay.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                </div>\n              </div>\n              \x3c!-- END WEEKDAY --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START MONTHDAY --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n\t\t\t\t\t\t\t\t<div class="input-group input-large">\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="splittedInterval.md_from" theme="bootstrap" name="md_from">\n\t\t\t\t\t\t\t\t\t\t<ui-select-match>{{$select.selected===\'always\' ? ($select.selected | capitalize) : $select.selected}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="splittedInterval.md_to && splittedInterval.md_to!==\'always\' && monthDay>splittedInterval.md_to && monthDay!==\'always\'">\n\t\t\t\t\t\t\t\t\t\t\t{{monthDay===\'always\' ? (monthDay | capitalize) : monthDay}}\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t<span class="input-group-addon">to</span>\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="splittedInterval.md_to" theme="bootstrap" name="md_to">\n\t\t\t\t\t\t\t\t\t\t<ui-select-match>{{$select.selected===\'always\' ? ($select.selected | capitalize) : $select.selected}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="splittedInterval.md_from && splittedInterval.md_from!==\'always\' && monthDay<splittedInterval.md_from && monthDay!==\'always\'">\n\t\t\t\t\t\t\t\t\t\t\t{{monthDay===\'always\' ? (monthDay | capitalize) : monthDay}}\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END MONTHDAY --\x3e\n\n              \x3c!-- START MONTH --\x3e\n              <div class="form-group">\n                <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n                <div class="input-group input-large">\n                  <ui-select data-ng-model="splittedInterval.m_from" theme="bootstrap" name="m_from">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n                      {{month.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                  <span class="input-group-addon">to</span>\n                  <ui-select data-ng-model="splittedInterval.m_to" theme="bootstrap" name="m_to">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n                      {{month.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                </div>\n              </div>\n              \x3c!-- END MONTH --\x3e\n\n\n\n\t\t\t\t\t\t\t<button class="btn green-haze" type="submit" ng-click="next()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n            </form>\n          </wz-step>\n\n\n\t\t\t\t\t\t<wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n\t\t\t\t\t\t\t<p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n\t\t\t\t\t\t\t<button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n\t\t\t\t\t\t\t<input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n\t\t\t\t\t\t</wz-step>\n\t\t\t\t</wizard>\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/interval/view/view.subintervals.html",'<div ui-view class="profile-content">\n<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title  tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SUBINTERVALS\' | translate}}</span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group">\n\t\t\t\t\t\t<a class="btn green-jungle " href="/tools/intervals/view/{{interval.id}}/subinterval" data-toggle="dropdown">\n\t\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_SUBINTERVAL\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div data-ng-if="selectedSubInterval === undefined" ui-grid="gridOptions"  ui-grid-resize-columns class="grid" ui-grid-draggable-rows>\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n</div>\n'),a.put("app/tools/pause/list/list.create.modal.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_NEW_PAUSE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n  <form name="form" novalidate>\n\n    \x3c!-- START NAME --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n      <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n      <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="/^[^#]/" required/>\n      <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n      <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.pattern" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END NAME --\x3e\n\n    \x3c!-- START DESCRIPTION --\x3e\n    <div class="form-group">\n      <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n      <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n    </div>\n    \x3c!-- END DESCRIPTION --\x3e\n\n  </form>\n</div>\n<div class="modal-footer">\n  <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n  <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/pause/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="fa fa-pause"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_PAUSES\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="fa fa-pause font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_PAUSES\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<a class="btn green-jungle" href="#" data-toggle="dropdown" data-ng-click="createItem()">\n\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_PAUSE\' | translate }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/pause/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="getPause()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-control-pause"></i>\n\t\t\t\t\t<a href="/tools/pauses/list">{{ \'APPLICATION_PAUSES\' | translate }}</a>\n\t\t\t\t\t<i data-ng-show="pause" class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li data-ng-show="pause">\n\t\t\t\t\t<a href="#">{{pause.name}}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE SIDEBAR --\x3e\n\t\t<div class="profile-sidebar">\n\t\t\t\x3c!-- PORTLET MAIN --\x3e\n\t\t\t<div class="portlet light profile-sidebar-portlet">\n\t\t\t\t\x3c!-- SIDEBAR USERPIC --\x3e\n\t\t\t\t<div class="profile-image">\n\t\t\t\t\t<img data-ng-src="assets/images/media/pause.png" class="img-responsive">\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USERPIC --\x3e\n\t\t\t\t\x3c!-- SIDEBAR USER TITLE --\x3e\n\t\t\t\t<div class="profile-usertitle">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{pause.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USER TITLE --\x3e\n\n\t\t\t\t\x3c!-- SIDEBAR MENU --\x3e\n\t\t\t\t<div class="profile-usermenu">\n\t\t\t\t\t<ul class="nav">\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.pauses.view.settings\')}">\n\t\t\t\t\t\t\t<a data-ng-href="/tools/pauses/view/{{pause.id}}/settings">\n\t\t\t\t\t\t\t\t<i class="icon-settings"></i>\n\t\t\t\t\t\t\t\t{{ \'APPLICATION_SETTINGS\' | translate}}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END MENU --\x3e\n\t\t\t</div>\n\t\t\t\x3c!-- END PORTLET MAIN --\x3e\n\t\t</div>\n\t\t\x3c!-- END BEGIN PROFILE SIDEBAR --\x3e\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/pause/view/view.settings.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PAUSE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n\t\t\t\t</div>\n\t\t\t\t<ul class="nav nav-tabs">\n\t\t\t\t\t<li class="active">\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\n\t\t\t<div class="portlet-body">\n\t\t\t\t<div class="tab-content">\n\t\t\t\t\t\x3c!-- GENERAL TAB --\x3e\n\t\t\t\t\t<div class="tab-pane active" id="tab_1_1">\n\t\t\t\t\t\t<form name="forms.general" data-ng-submit="forms.general.$valid && updatePause()" novalidate>\n\n\t\t\t\t\t\t\t\x3c!-- START NAME --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="pause.name" data-ng-pattern="/^[^#]/" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t\t\t<textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="pause.description"></textarea>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END ADVANCED TAB --\x3e\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/tools/scheduler/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-calendar"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_SCHEDULER\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-link font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_SCHEDULES\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<a class="btn green-jungle" href="/tools/scheduler/wizard" data-toggle="dropdown">\n\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_SCHEDULE\' | translate }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/scheduler/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="initView()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-calendar"></i>\n\t\t\t\t\t<a href="/tools/scheduler/list">{{ \'APPLICATION_SCHEDULER\' | translate }}</a>\n\t\t\t\t\t<i data-ng-show="schedule" class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li data-ng-show="schedule">\n\t\t\t\t\t<a href="#">{{schedule.name}}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE SIDEBAR --\x3e\n\t\t<div class="profile-sidebar">\n\t\t\t\x3c!-- PORTLET MAIN --\x3e\n\t\t\t<div class="portlet light profile-sidebar-portlet">\n\t\t\t\t\x3c!-- SIDEBAR USERPIC --\x3e\n\t\t\t\t<div class="profile-image">\n\t\t\t\t\t<img data-ng-src="assets/images/media/scheduler.png" class="img-responsive">\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USERPIC --\x3e\n\t\t\t\t\x3c!-- SIDEBAR USER TITLE --\x3e\n\t\t\t\t<div class="profile-usertitle">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{schedule.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USER TITLE --\x3e\n\n\t\t\t\t\x3c!-- SIDEBAR MENU --\x3e\n\t\t\t\t<div class="profile-usermenu">\n\t\t\t\t\t<ul class="nav">\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.scheduler.view.settings\')}">\n\t\t\t\t\t\t\t<a data-ng-href="/tools/scheduler/view/{{schedule.id}}/settings"><i class="icon-settings"></i> {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END MENU --\x3e\n\t\t\t</div>\n\t\t\t\x3c!-- END PORTLET MAIN --\x3e\n\t\t</div>\n\t\t\x3c!-- END BEGIN PROFILE SIDEBAR --\x3e\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),
+a.put("app/tools/interval/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-clock"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_INTERVALS\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-docs font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_INTERVALS\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="btn-group">\n\t\t\t\t\t\t<button class="btn green-jungle " ng-click="createItem()">\n\t\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_INTERVAL\' | translate }}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/interval/view/subinterval/list/list.html",'<div ui-view class="profile-content">\n\t<div class="row">\n\t\t<div class="col-md-12">\n\t\t\t<div class="portlet light" data-ng-init="initView()">\n\t\t\t\t<div class="portlet-title  tabbable-line">\n\t\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{\'APPLICATION_SUBINTERVALS\' | translate}}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="actions">\n\t\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="btn-group">\n\t\t\t\t\t\t\t<a class="btn green-jungle" href="/tools/intervals/view/{{stateParams.id}}/subintervals/view/">\n\t\t\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_SUBINTERVAL\' | translate }}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="portlet-body">\n\t\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{\'MESSAGE_NO_RESULTS_AVAILABLE\' | translate}}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/tools/interval/view/subinterval/view/view.html",'<div class="row" data-ng-init="initSubInterval()">\n\t<div class="col-md-12">\n\t\t\x3c!-- BEGIN  PORTLET--\x3e\n\t\t<div class="portlet light bordered">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-notebook font-green-sharp"></i>\n          <span class="caption-subject">{{ \'APPLICATION_SUBINTERVAL\' | translate }} WIZARD</a> </span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t<wizard on-finish="addOrUpdateSubInterval()">\n          <wz-step title="{{\'APPLICATION_SETTINGS\' | translate}}" canexit="exitValidation(forms.subinterval.name.$valid)">\n            <form name="forms.subinterval" novalidate>\n\n              \x3c!-- START NAME --\x3e\n              <div class="form-group" data-ng-class="{\'has-error\': (forms.subinterval.name.$touched || forms.subinterval.$submitted) && forms.subinterval.name.$invalid}">\n                <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n                <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="subinterval.name" required/>\n                <span data-ng-show="(forms.subinterval.name.$touched || forms.subinterval.$submitted) && forms.subinterval.name.$error.required" class="help-block help-block-error">\n                  <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n                </span>\n              </div>\n              \x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START TIME --\x3e\n              <div class="form-group">\n                <label class="control-label">{{ \'APPLICATION_TIME\' | translate }}</label>\n                <div class="input-group input-large">\n\t\t\t\t\t\t\t\t\t<fieldset class="pull-left" ng-disabled="splittedInterval.alwaysTime"><uib-timepicker name="t_from" data-ng-model="splittedInterval.t_from" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n                  <div class="input-group-addon col-md-1 interval-to pull-left">to</div>\n\t\t\t\t\t\t\t\t\t<fieldset ng-disabled="splittedInterval.alwaysTime"><uib-timepicker  name="t_to" data-ng-model="splittedInterval.t_to" show-meridian="false" show-spinners="false"></uib-timepicker></fieldset>\n\t\t\t\t\t\t\t\t\t<label class="control-label pointer-cursor margin-top20"><input\n\t\t\t\t\t\t\t\t\tbs-switch\n\t\t\t\t\t\t\t\t\tclass="form-control"\n\t\t\t\t\t\t\t\t\tng-model="splittedInterval.alwaysTime"\n\t\t\t\t\t\t\t\t\ttype="checkbox"\n\t\t\t\t\t\t\t\t\tswitch-active="{{ switch.isActive }}"\n\t\t\t\t\t\t\t\t\tswitch-on-text="{{\'APPLICATION_YES\' | translate}}"\n\t\t\t\t\t\t\t\t\tswitch-off-text="{{\'APPLICATION_NO\' | translate}}"\n\t\t\t\t\t\t\t\t\tswitch-on-color="{{ switch.onColor }}"\n\t\t\t\t\t\t\t\t\tswitch-off-color="{{ switch.offColor }}"\n\t\t\t\t\t\t\t\t\tswitch-animate="{{ switch.animate }}"\n\t\t\t\t\t\t\t\t\tswitch-size="{{ switch.size }}"\n\t\t\t\t\t\t\t\t\tswitch-label="{{ switch.label }}"\n\t\t\t\t\t\t\t\t\tswitch-icon="{{ switch.icon }}"\n\t\t\t\t\t\t\t\t\tswitch-radio-off="{{ switch.radioOff }}"\n\t\t\t\t\t\t\t\t\tswitch-label-width="{{ switch.labelWidth }}"\n\t\t\t\t\t\t\t\t\tswitch-handle-width="{{ switch.handleWidth }}"> {{\'APPLICATION_ALWAYS\' | translate}}</label>\n                </div>\n              </div>\n              \x3c!-- END TIME --\x3e\n\n              \x3c!-- START WEEKDAY --\x3e\n              <div class="form-group">\n                <label class="control-label">{{ \'APPLICATION_WEEKDAY\' | translate }}</label>\n                <div class="input-group input-large">\n                  <ui-select data-ng-model="splittedInterval.wd_from" theme="bootstrap" name="wd_from">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n                      {{weekDay.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                  <span class="input-group-addon">to</span>\n                  <ui-select data-ng-model="splittedInterval.wd_to" theme="bootstrap" name="wd_to">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="weekDay.value as weekDay in $interval.daysOfWeek | filter: $select.search">\n                      {{weekDay.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                </div>\n              </div>\n              \x3c!-- END WEEKDAY --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START MONTHDAY --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}</label>\n\t\t\t\t\t\t\t\t<div class="input-group input-large">\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="splittedInterval.md_from" theme="bootstrap" name="md_from">\n\t\t\t\t\t\t\t\t\t\t<ui-select-match>{{$select.selected===\'always\' ? ($select.selected | capitalize) : $select.selected}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="splittedInterval.md_to && splittedInterval.md_to!==\'always\' && monthDay>splittedInterval.md_to && monthDay!==\'always\'">\n\t\t\t\t\t\t\t\t\t\t\t{{monthDay===\'always\' ? (monthDay | capitalize) : monthDay}}\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t<span class="input-group-addon">to</span>\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="splittedInterval.md_to" theme="bootstrap" name="md_to">\n\t\t\t\t\t\t\t\t\t\t<ui-select-match>{{$select.selected===\'always\' ? ($select.selected | capitalize) : $select.selected}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="monthDay in $interval.daysOfMonth | filter: $select.search" ui-disable-choice="splittedInterval.md_from && splittedInterval.md_from!==\'always\' && monthDay<splittedInterval.md_from && monthDay!==\'always\'">\n\t\t\t\t\t\t\t\t\t\t\t{{monthDay===\'always\' ? (monthDay | capitalize) : monthDay}}\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END MONTHDAY --\x3e\n\n\n              \x3c!-- START MONTH --\x3e\n              <div class="form-group">\n                <label class="control-label">{{ \'APPLICATION_MONTH\' | translate }}</label>\n                <div class="input-group input-large">\n                  <ui-select data-ng-model="splittedInterval.m_from" theme="bootstrap" name="m_from">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n                      {{month.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                  <span class="input-group-addon">to</span>\n                  <ui-select data-ng-model="splittedInterval.m_to" theme="bootstrap" name="m_to">\n                    <ui-select-match placeholder="">{{$select.selected.name | translate}}</ui-select-match>\n                    <ui-select-choices repeat="month.value as month in $interval.months | filter: $select.search">\n                      {{month.name | translate}}\n                    </ui-select-choices>\n                  </ui-select>\n                </div>\n              </div>\n              \x3c!-- END MONTH --\x3e\n\n\n\n\t\t\t\t\t\t\t<button class="btn green-haze" type="submit" ng-click="next()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n            </form>\n          </wz-step>\n\n\n\t\t\t\t\t\t<wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n\t\t\t\t\t\t\t<p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n\t\t\t\t\t\t\t<button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n\t\t\t\t\t\t\t<input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n\t\t\t\t\t\t</wz-step>\n\t\t\t\t</wizard>\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/interval/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="getInterval()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-clock"></i>\n\t\t\t\t\t<a href="/tools/intervals/list">{{ \'APPLICATION_INTERVALS\' | translate }}</a>\n\t\t\t\t\t<i data-ng-show="interval" class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li data-ng-show="interval">\n\t\t\t\t\t<a href="#">{{interval.name}}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE SIDEBAR --\x3e\n\t\t<div class="profile-sidebar">\n\t\t\t\x3c!-- PORTLET MAIN --\x3e\n\t\t\t<div class="portlet light profile-sidebar-portlet">\n\t\t\t\t\x3c!-- SIDEBAR USERPIC --\x3e\n\t\t\t\t<div class="profile-image">\n\t\t\t\t\t<img data-ng-src="assets/images/media/interval.png" class="img-responsive">\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USERPIC --\x3e\n\t\t\t\t\x3c!-- SIDEBAR USER TITLE --\x3e\n\t\t\t\t<div class="profile-usertitle">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{interval.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USER TITLE --\x3e\n\n\t\t\t\t\x3c!-- SIDEBAR MENU --\x3e\n\t\t\t\t<div class="profile-usermenu">\n\t\t\t\t\t<ul class="nav">\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.intervals.view.settings\')}">\n\t\t\t\t\t\t\t<a ng-href="/tools/intervals/view/{{interval.id}}/settings">\n\t\t\t\t\t\t\t<i class="icon-settings"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_SETTINGS\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.intervals.view.subintervals.list\') || $state.is(\'main.tools.intervals.view.subintervals.view\')}">\n\t\t\t\t\t\t\t<a ng-href="/tools/intervals/view/{{interval.id}}/subintervals/list">\n\t\t\t\t\t\t\t<i class="icon-list"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_SUBINTERVALS\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END MENU --\x3e\n\t\t\t</div>\n\t\t\t\x3c!-- END PORTLET MAIN --\x3e\n\t\t</div>\n\t\t\x3c!-- END BEGIN PROFILE SIDEBAR --\x3e\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/interval/view/view.settings.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_INTERVAL\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n\t\t\t\t</div>\n\t\t\t\t<ul class="nav nav-tabs">\n\t\t\t\t\t<li class="active">\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\n\t\t\t<div class="portlet-body">\n\t\t\t\t<div class="tab-content">\n\t\t\t\t\t\x3c!-- GENERAL TAB --\x3e\n\t\t\t\t\t<div class="tab-pane active" id="tab_1_1">\n\t\t\t\t\t\t<form name="forms.general" data-ng-submit="forms.general.$valid && updateInterval()" novalidate>\n\n\t\t\t\t\t\t\t\x3c!-- START NAME --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="interval.name" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t\t\t<textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="interval.description"></textarea>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END ADVANCED TAB --\x3e\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/tools/pause/list/list.create.modal.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_NEW_PAUSE\' | translate }}</h3>\n</div>\n<div class="modal-body">\n  <form name="form" novalidate>\n\n    \x3c!-- START NAME --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n      <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n      <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="/^[^#]/" required/>\n      <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n      <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.pattern" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END NAME --\x3e\n\n    \x3c!-- START DESCRIPTION --\x3e\n    <div class="form-group">\n      <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n      <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n    </div>\n    \x3c!-- END DESCRIPTION --\x3e\n\n  </form>\n</div>\n<div class="modal-footer">\n  <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n  <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/pause/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="fa fa-pause"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_PAUSES\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="fa fa-pause font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_PAUSES\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<a class="btn green-jungle" href="#" data-toggle="dropdown" data-ng-click="createItem()">\n\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_PAUSE\' | translate }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/pause/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="getPause()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-control-pause"></i>\n\t\t\t\t\t<a href="/tools/pauses/list">{{ \'APPLICATION_PAUSES\' | translate }}</a>\n\t\t\t\t\t<i data-ng-show="pause" class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li data-ng-show="pause">\n\t\t\t\t\t<a href="#">{{pause.name}}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE SIDEBAR --\x3e\n\t\t<div class="profile-sidebar">\n\t\t\t\x3c!-- PORTLET MAIN --\x3e\n\t\t\t<div class="portlet light profile-sidebar-portlet">\n\t\t\t\t\x3c!-- SIDEBAR USERPIC --\x3e\n\t\t\t\t<div class="profile-image">\n\t\t\t\t\t<img data-ng-src="assets/images/media/pause.png" class="img-responsive">\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USERPIC --\x3e\n\t\t\t\t\x3c!-- SIDEBAR USER TITLE --\x3e\n\t\t\t\t<div class="profile-usertitle">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{pause.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USER TITLE --\x3e\n\n\t\t\t\t\x3c!-- SIDEBAR MENU --\x3e\n\t\t\t\t<div class="profile-usermenu">\n\t\t\t\t\t<ul class="nav">\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.pauses.view.settings\')}">\n\t\t\t\t\t\t\t<a data-ng-href="/tools/pauses/view/{{pause.id}}/settings">\n\t\t\t\t\t\t\t\t<i class="icon-settings"></i>\n\t\t\t\t\t\t\t\t{{ \'APPLICATION_SETTINGS\' | translate}}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END MENU --\x3e\n\t\t\t</div>\n\t\t\t\x3c!-- END PORTLET MAIN --\x3e\n\t\t</div>\n\t\t\x3c!-- END BEGIN PROFILE SIDEBAR --\x3e\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/pause/view/view.settings.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_PAUSE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n\t\t\t\t</div>\n\t\t\t\t<ul class="nav nav-tabs">\n\t\t\t\t\t<li class="active">\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\n\t\t\t<div class="portlet-body">\n\t\t\t\t<div class="tab-content">\n\t\t\t\t\t\x3c!-- GENERAL TAB --\x3e\n\t\t\t\t\t<div class="tab-pane active" id="tab_1_1">\n\t\t\t\t\t\t<form name="forms.general" data-ng-submit="forms.general.$valid && updatePause()" novalidate>\n\n\t\t\t\t\t\t\t\x3c!-- START NAME --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="pause.name" data-ng-pattern="/^[^#]/" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_WRONG_FORMAT\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t\t\t<textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="pause.description"></textarea>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END ADVANCED TAB --\x3e\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/tools/scheduler/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-calendar"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_SCHEDULER\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-link font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_SCHEDULES\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<a class="btn green-jungle" href="/tools/scheduler/wizard" data-toggle="dropdown">\n\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_SCHEDULE\' | translate }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/scheduler/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="initView()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-calendar"></i>\n\t\t\t\t\t<a href="/tools/scheduler/list">{{ \'APPLICATION_SCHEDULER\' | translate }}</a>\n\t\t\t\t\t<i data-ng-show="schedule" class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li data-ng-show="schedule">\n\t\t\t\t\t<a href="#">{{schedule.name}}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE SIDEBAR --\x3e\n\t\t<div class="profile-sidebar">\n\t\t\t\x3c!-- PORTLET MAIN --\x3e\n\t\t\t<div class="portlet light profile-sidebar-portlet">\n\t\t\t\t\x3c!-- SIDEBAR USERPIC --\x3e\n\t\t\t\t<div class="profile-image">\n\t\t\t\t\t<img data-ng-src="assets/images/media/scheduler.png" class="img-responsive">\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USERPIC --\x3e\n\t\t\t\t\x3c!-- SIDEBAR USER TITLE --\x3e\n\t\t\t\t<div class="profile-usertitle">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{schedule.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USER TITLE --\x3e\n\n\t\t\t\t\x3c!-- SIDEBAR MENU --\x3e\n\t\t\t\t<div class="profile-usermenu">\n\t\t\t\t\t<ul class="nav">\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.scheduler.view.settings\')}">\n\t\t\t\t\t\t\t<a data-ng-href="/tools/scheduler/view/{{schedule.id}}/settings"><i class="icon-settings"></i> {{ \'APPLICATION_SETTINGS\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END MENU --\x3e\n\t\t\t</div>\n\t\t\t\x3c!-- END PORTLET MAIN --\x3e\n\t\t</div>\n\t\t\x3c!-- END BEGIN PROFILE SIDEBAR --\x3e\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),
 a.put("app/tools/scheduler/view/view.settings.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_SCHEDULE\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n\t\t\t\t</div>\n\t\t\t\t<ul class="nav nav-tabs">\n\t\t\t\t\t<li class="active">\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_2" data-toggle="tab" data-ng-click="refreshSlider()">{{ \'APPLICATION_CONFIGURATION\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\n\t\t\t<div class="portlet-body">\n\t\t\t\t<div class="tab-content">\n\t\t\t\t\t\x3c!-- GENERAL TAB --\x3e\n\t\t\t\t\t<div class="tab-pane active" id="tab_1_1">\n\t\t\t\t\t\t<form name="forms.general" data-ng-submit="forms.general.$valid && forms.config.$valid && updateSchedule()" novalidate>\n\n\t\t\t\t\t\t\t\x3c!-- START NAME --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted && forms.general.name.$invalid) || forms.general.name.$error.pattern}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="schedule.name" data-ng-pattern="settings.patternName" required/>\n\t\t\t\t\t\t\t\t<span data-ng-show="forms.general.$submitted && forms.general.name.$invalid" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START ACTIVE --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_ACTIVE\' | translate}}</label></br>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tbs-switch\n\t\t\t\t\t\t\t\tclass="form-control"\n\t\t\t\t\t\t\t\tng-model="schedule.active"\n\t\t\t\t\t\t\t\ttype="checkbox"\n\t\t\t\t\t\t\t\tname="status"\n\t\t\t\t\t\t\t\tswitch-active="{{ switches.isActive }}"\n\t\t\t\t\t\t\t\tswitch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n\t\t\t\t\t\t\t\tswitch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n\t\t\t\t\t\t\t\tswitch-on-color="{{ switches.onColor }}"\n\t\t\t\t\t\t\t\tswitch-off-color="{{ switches.offColor }}"\n\t\t\t\t\t\t\t\tswitch-animate="{{ switches.animate }}"\n\t\t\t\t\t\t\t\tswitch-size="{{ switches.size }}"\n\t\t\t\t\t\t\t\tswitch-label="{{ switches.label }}"\n\t\t\t\t\t\t\t\tswitch-icon="{{ switches.icon }}"\n\t\t\t\t\t\t\t\tswitch-radio-off="{{ switches.radioOff }}"\n\t\t\t\t\t\t\t\tswitch-label-width="{{ switches.labelWidth }}"\n\t\t\t\t\t\t\t\tswitch-handle-width="{{ switches.handleWidth }}">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END ACTIVE --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t\t\t<textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="schedule.description"></textarea>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END GENERAL TAB --\x3e\n\t\t\t\t\t\x3c!-- CONFIG TAB --\x3e\n\t\t\t\t\t<div class="tab-pane" id="tab_1_2">\n\t\t\t\t\t\t<form name="forms.config" data-ng-switch="schedule.reportType" data-ng-submit="forms.config.$valid && forms.general.$valid && updateSchedule()" data-ng-if="schedule.type===\'report\'" data-ng-init="initReports()" novalidate>\n\n\t\t\t\t\t\t\t<div class="row">\n\n\t\t\t\t\t\t\t\t\x3c!-- START TYPE --\x3e\n\t\t\t\t\t\t\t\t<div class="form-group col-md-2" data-ng-class="{\'has-error\': (forms.config.type.$touched || forms.config.$submitted) && forms.config.type.$invalid}">\n\t\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="schedule.reportType" name="type" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected | capitalize}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="report in [\'default\', \'custom\'] | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="report | capitalize | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t<span data-ng-show="(forms.config.type.$touched || forms.config.$submitted) && forms.config.type.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\x3c!-- END TYPE --\x3e\n\n\n\t\t\t\t\t\t\t\t\x3c!-- START REPORT --\x3e\n\t\t\t\t\t\t\t\t<div data-ng-switch-when="default" class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$invalid}">\n\t\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_REPORT\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="schedule.reportId" name="reportId" theme="bootstrap" on-select="setReportTree($item,$model)" required>\n\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices group-by="\'parent\'" repeat="report.id as report in defRep | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="report.name | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t<span data-ng-show="(forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\x3c!-- END REPORT --\x3e\n\n\t\t\t\t\t\t\t\t\x3c!-- START REPORT --\x3e\n\t\t\t\t\t\t\t\t<div data-ng-switch-when="custom" class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$invalid}">\n\t\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_REPORT\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="schedule.reportId" name="reportId" theme="bootstrap" on-select="setReportTree($item,$model)" required>\n\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices group-by="\'parent\'" repeat="report.id as report in cusRep | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="report.name | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t<span data-ng-show="(forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\x3c!-- END REPORT --\x3e\n\n\t\t\t\t\t\t\t\t\x3c!-- START REPORT --\x3e\n\t\t\t\t\t\t\t\t<div class="form-group col-md-2" data-ng-class="{\'has-error\': (forms.config.reportOutput.$touched || forms.config.$submitted) && forms.config.reportOutput.$invalid}">\n\t\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_OUTPUT\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="schedule.reportOutput" name="reportOutput" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_OUTPUT\' | translate }}">{{$select.selected}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="output in [\'CSV\',\'PDF\'] | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="output | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t<span data-ng-show="(forms.config.reportOutput.$touched || forms.config.$submitted) && forms.config.reportOutput.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\x3c!-- END REPORT --\x3e\n\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\x3c!-- START TODAY --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_RUN_ON\' | translate}}</label></br>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tbs-switch\n\t\t\t\t\t\t\t\tclass="form-control"\n\t\t\t\t\t\t\t\tdata-ng-model="switchValues.today"\n\t\t\t\t\t\t\t\ttype="checkbox"\n\t\t\t\t\t\t\t\tname="status"\n\t\t\t\t\t\t\t\tdata-ng-change="checkToday()"\n\t\t\t\t\t\t\t\tswitch-active="{{ switches.isActive }}"\n\t\t\t\t\t\t\t\tswitch-on-text="{{ \'APPLICATION_TODAY\' | translate }}"\n\t\t\t\t\t\t\t\tswitch-off-text="{{ \'APPLICATION_RANGE\' | translate }}"\n\t\t\t\t\t\t\t\tswitch-on-color="{{ switches.onColor }}"\n\t\t\t\t\t\t\t\tswitch-off-color="{{ switches.offColor }}"\n\t\t\t\t\t\t\t\tswitch-animate="{{ switches.animate }}"\n\t\t\t\t\t\t\t\tswitch-size="{{ switches.size }}"\n\t\t\t\t\t\t\t\tswitch-label="{{ switches.label }}"\n\t\t\t\t\t\t\t\tswitch-icon="{{ switches.icon }}"\n\t\t\t\t\t\t\t\tswitch-radio-off="{{ switches.radioOff }}"\n\t\t\t\t\t\t\t\tswitch-label-width="{{ switches.labelWidth }}"\n\t\t\t\t\t\t\t\tswitch-handle-width="{{ switches.handleWidth }}">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END TODAY --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START VALIDITY --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-if="switchValues.today">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_VALIDITY\' | translate}}</label>\n\t\t\t\t\t\t\t\t<rzslider rz-slider-model="schedule.validityStart" rz-slider-high="schedule.validityEnd" rz-slider-options="validitySlider"></rzslider>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END VALIDITY --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START RANGE --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-if="!switchValues.today" data-ng-class="{\'has-error\': (forms.config.range.$touched || forms.config.$submitted) && forms.config.range.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_REPORT_RANGE\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<ui-select data-ng-model="schedule.reportRange" name="range" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_RANGE\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="range.value as range in reportRanges | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="range.name | highlight: $select.search | translate"></div>\n\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.config.range.$touched || forms.config.$submitted) && forms.config.range.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END RANGE --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START TODAY CRON --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-if="switchValues.today" data-ng-class="{\'has-error\': (forms.config.cron.$touched || forms.config.$submitted) && forms.config.cron.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<ui-select data-ng-model="schedule.cron" name="cron" theme="bootstrap" data-ng-required="switchValues.today">\n\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="cron.value as cron in todayCron | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="cron.name | highlight: $select.search | translate"></div>\n\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.config.cron.$touched || forms.config.$submitted) && forms.config.cron.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END TODAY --\x3e\n\t\t\t\t\t\t\t<div class="row" data-ng-if="!switchValues.today">\n\t\t\t\t\t\t\t\t\x3c!-- START CRONTYPE EXEC --\x3e\n\t\t\t\t\t\t\t\t<div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.config.cronType.$touched || forms.config.$submitted) && forms.config.cronType.$invalid}">\n\t\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="rangeExec.type" name="cronType" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="type.value as type in cronTypes | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="type.name | highlight: $select.search | translate"></div>\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t<span data-ng-show="(forms.config.cronType.$touched || forms.config.$submitted) && forms.config.cronType.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\x3c!-- END CRONTYPE --\x3e\n\n\t\t\t\t\t\t\t\t\x3c!-- START WEEKDAY --\x3e\n\t\t\t\t\t\t\t\t<div class="form-group col-md-4" data-ng-if="schedule.cronType === \'weekly\'" data-ng-class="{\'has-error\': (forms.config.weekDay.$touched || forms.config.$submitted) && forms.config.weekDay.$invalid}">\n\t\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_WEEKDAYS\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t\t<ui-select multiple data-ng-model="rangeExec.weekDays" name="weekDay" theme="bootstrap" data-ng-required="schedule.cronType === \'weekly\'">\n\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_WEEKDAYS\' | translate }}">{{$item.name | translate}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="day.value as day in weekDays | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="day.name | highlight: $select.search | translate"></div>\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t<span data-ng-show="(forms.config.weekDay.$touched || forms.config.$submitted) && forms.config.weekDay.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\x3c!-- END WEEKDAY --\x3e\n\n\t\t\t\t\t\t\t\t\x3c!-- START MONTHDAY --\x3e\n\t\t\t\t\t\t\t\t<div class="form-group col-md-4" data-ng-if="schedule.cronType === \'monthly\'" data-ng-class="{\'has-error\': (forms.config.monthDay.$touched || forms.config.$submitted) && forms.config.monthDay.$invalid}">\n\t\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="rangeExec.monthDay" name="monthDay" theme="bootstrap" data-ng-required="schedule.cronType === \'monthly\'">\n\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_MONTHDAY\' | translate }}">{{$select.selected}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="day in monthDays | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="day | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t<span data-ng-show="(forms.config.monthDay.$touched || forms.config.$submitted) && forms.config.monthDay.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\x3c!-- END MONTHDAY --\x3e\n\n\t\t\t\t\t\t\t\t\x3c!-- START HOUR --\x3e\n\t\t\t\t\t\t\t\t<div class="form-group col-md-4" data-ng-if="schedule.cronType" data-ng-class="{\'has-error\': (forms.config.hour.$touched || forms.config.$submitted) && forms.config.hour.$invalid}">\n\t\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_HOUR\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t\t<ui-select data-ng-model="rangeExec.hour" name="hour" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_HOUR\' | translate }}">{{$select.selected}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="hour in hours | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="hour | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t\t<span data-ng-show="(forms.config.hour.$touched || forms.config.$submitted) && forms.config.hour.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\x3c!-- END HOUR --\x3e\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\x3c!-- START SEND MAIL --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_SEND_MAIL\' | translate}}</label></br>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tbs-switch\n\t\t\t\t\t\t\t\tclass="form-control"\n\t\t\t\t\t\t\t\tdata-ng-model="schedule.sendMail"\n\t\t\t\t\t\t\t\ttype="checkbox"\n\t\t\t\t\t\t\t\tname="status"\n\t\t\t\t\t\t\t\tswitch-active="{{ switches.isActive }}"\n\t\t\t\t\t\t\t\tswitch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n\t\t\t\t\t\t\t\tswitch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n\t\t\t\t\t\t\t\tswitch-on-color="{{ switches.onColor }}"\n\t\t\t\t\t\t\t\tswitch-off-color="{{ switches.offColor }}"\n\t\t\t\t\t\t\t\tswitch-animate="{{ switches.animate }}"\n\t\t\t\t\t\t\t\tswitch-size="{{ switches.size }}"\n\t\t\t\t\t\t\t\tswitch-label="{{ switches.label }}"\n\t\t\t\t\t\t\t\tswitch-icon="{{ switches.icon }}"\n\t\t\t\t\t\t\t\tswitch-radio-off="{{ switches.radioOff }}"\n\t\t\t\t\t\t\t\tswitch-label-width="{{ switches.labelWidth }}"\n\t\t\t\t\t\t\t\tswitch-handle-width="{{ switches.handleWidth }}">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END SEND MAIL --\x3e\n\t\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t\x3c!-- START ACCOUNT --\x3e\n\t\t\t\t\t\t\t<div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.config.MailServerOutId.$touched || forms.config.$submitted) && forms.config.MailServerOutId.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_ACCOUNT\' | translate }}<span class="required" data-ng-if="schedule.sendMail" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<ui-select data-ng-model="schedule.MailServerOutId" name="MailServerOutId" theme="bootstrap" data-ng-disabled="!schedule.sendMail" data-ng-required="schedule.sendMail">\n\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_ACCOUNT\' | translate }}">{{$select.selected.username}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="account.id as account in mailServers | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="account.username | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.config.MailServerOutId.$touched || forms.config.$submitted) && forms.config.MailServerOutId.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<div class="note note-warning" data-ng-hide="mailServers.length">\n\t\t\t\t\t\t\t\t\t<h4 class="block">Warning!</h4>\n\t\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t\t{{ \'MESSAGE_NO_ACCOUNTS_AVAILABLE\' | translate }}\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END ACCOUNT --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START EMAIL --\x3e\n\t\t\t\t\t\t\t<div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.config.$submitted && forms.config.email.$invalid) || forms.config.email.$error.pattern}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}<span data-ng-if="schedule.sendMail" class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}" class="form-control" data-ng-model="schedule.email" data-ng-disabled="!schedule.sendMail" data-ng-required="schedule.sendMail"/>\n\t\t\t\t\t\t\t\t<span data-ng-show="forms.config.$submitted && forms.config.email.$invalid" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END EMAIL --\x3e\n\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END CONFIG TAB --\x3e\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n\x3c!-- <pre>\n\t{{rangeExec | json}}\n</pre>\n<pre>\n\t{{schedule | json}}\n</pre> --\x3e\n'),
 a.put("app/tools/scheduler/wizard/wizard.html",'<div class="col-md-12">\n\t\x3c!-- BEGIN PAGE HEADER--\x3e\n\t<div class="page-bar">\n\t\t<ul class="page-breadcrumb">\n\t\t\t<li>\n\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<i class="icon-calendar"></i>\n\t\t\t\t<a href="/tools/scheduler/list">{{ \'APPLICATION_SCHEDULER\' | translate }}</a>\n\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t</li>\n\t\t\t<li>\n\t\t\t\t<i class="icon-options"></i>\n\t\t\t\t<a href="#">{{ \'APPLICATION_WIZARD\' | translate }}</a>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n\t\x3c!-- END PAGE HEADER--\x3e\n\n\t\x3c!-- BEGIN PORTLET--\x3e\n\t<div class="portlet light bordered">\n\t\t<div class="portlet-title">\n\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t<i class="icon-link font-green-sharp"></i>\n\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_SCHEDULE\' | translate }} WIZARD</a> </span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="portlet-body">\n\t\t\t<wizard on-finish="createItem()">\n\t\t\t\t<wz-step title="{{\'APPLICATION_GENERAL\' | translate}}" canexit="exitValidation(forms.general.$valid)">\n\t\t\t\t\t<form name="forms.general" novalidate>\n\n\t\t\t\t\t\t\x3c!-- START NAME --\x3e\n\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.$submitted && forms.general.name.$invalid) || forms.general.name.$error.pattern}">\n\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t<input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" data-ng-pattern="settings.patternName" required/>\n\t\t\t\t\t\t\t<span data-ng-show="forms.general.$submitted && forms.general.name.$invalid" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\x3c!-- START ACTIVE --\x3e\n\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_ACTIVE\' | translate}}</label></br>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tbs-switch\n\t\t\t\t\t\t\tclass="form-control"\n\t\t\t\t\t\t\tng-model="item.active"\n\t\t\t\t\t\t\ttype="checkbox"\n\t\t\t\t\t\t\tname="status"\n\t\t\t\t\t\t\tdata-ng-init="item.active = 0"\n\t\t\t\t\t\t\tswitch-active="{{ switches.isActive }}"\n\t\t\t\t\t\t\tswitch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n\t\t\t\t\t\t\tswitch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n\t\t\t\t\t\t\tswitch-on-color="{{ switches.onColor }}"\n\t\t\t\t\t\t\tswitch-off-color="{{ switches.offColor }}"\n\t\t\t\t\t\t\tswitch-animate="{{ switches.animate }}"\n\t\t\t\t\t\t\tswitch-size="{{ switches.size }}"\n\t\t\t\t\t\t\tswitch-label="{{ switches.label }}"\n\t\t\t\t\t\t\tswitch-icon="{{ switches.icon }}"\n\t\t\t\t\t\t\tswitch-radio-off="{{ switches.radioOff }}"\n\t\t\t\t\t\t\tswitch-label-width="{{ switches.labelWidth }}"\n\t\t\t\t\t\t\tswitch-handle-width="{{ switches.handleWidth }}">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- END ACTIVE --\x3e\n\n\t\t\t\t\t\t\x3c!-- START TYPE --\x3e\n\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.type.$touched || forms.general.$submitted) && forms.general.type.$invalid}">\n\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t<ui-select data-ng-model="item.type" name="type" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n\t\t\t\t\t\t\t\t<ui-select-choices repeat="type.value as type in scheduleTypes | filter: $select.search">\n\t\t\t\t\t\t\t\t\t<div ng-bind-html="type.name | highlight: $select.search | translate"></div>\n\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t<span data-ng-show="(forms.general.type.$touched || forms.general.$submitted) && forms.general.type.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- END TYPE --\x3e\n\n\t\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t\t<textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\n\t\t\t\t\t\t<button class="btn green-haze" type="submit" ng-click="next(true)">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n\t\t\t\t\t</form>\n\t\t\t\t</wz-step>\n\n\t\t\t\t<wz-step title="{{\'APPLICATION_CONFIGURATION\' | translate}}" canexit="exitValidation(forms.config.$valid)">\n\t\t\t\t\t<form name="forms.config" data-ng-switch="item.reportType" data-ng-if="item.type===\'report\'" data-ng-init="initReports()" novalidate>\n\t\t\t\t\t\t<div class="row">\n\n\t\t\t\t\t\t\t\x3c!-- START TYPE --\x3e\n\t\t\t\t\t\t\t<div class="form-group col-md-2" data-ng-class="{\'has-error\': (forms.config.type.$touched || forms.config.$submitted) && forms.config.type.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_TYPE\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<ui-select data-ng-model="item.reportType" name="type" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_TYPE\' | translate }}">{{$select.selected | capitalize}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t<ui-select-choices repeat="report in [\'default\', \'custom\'] | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="report | capitalize | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.config.type.$touched || forms.config.$submitted) && forms.config.type.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END TYPE --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START DEFAULT REPORT --\x3e\n\t\t\t\t\t\t\t<div data-ng-switch-when="default" class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_REPORT\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<ui-select data-ng-model="item.reportId" name="reportId" theme="bootstrap" on-select="setReportTree($item,$model)" required>\n\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t<ui-select-choices group-by="\'parent\'" repeat="report.id as report in defRep | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="report.name | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DEFAULT REPORT --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START CUSTOM REPORT --\x3e\n\t\t\t\t\t\t\t<div data-ng-switch-when="custom" class="form-group col-md-8" data-ng-class="{\'has-error\': (forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_REPORT\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<ui-select data-ng-model="item.reportId" name="reportId" theme="bootstrap" on-select="setReportTree($item,$model)" required>\n\t\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_REPORT\' | translate }}">{{$select.selected.name}}</ui-select-match>\n\t\t\t\t\t\t\t\t\t<ui-select-choices group-by="\'parent\'" repeat="report.id as report in cusRep | filter: $select.search">\n\t\t\t\t\t\t\t\t\t\t<div ng-bind-html="report.name | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.config.reportId.$touched || forms.config.$submitted) && forms.config.reportId.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END CUSTOM REPORT --\x3e\n\n\t\t\t\t\t\t\x3c!-- START OUTPUT --\x3e\n\t\t\t\t\t\t<div class="form-group col-md-2" data-ng-class="{\'has-error\': (forms.config.reportOutput.$touched || forms.config.$submitted) && forms.config.reportOutput.$invalid}">\n\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_OUTPUT\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t<ui-select data-ng-model="item.reportOutput" name="reportOutput" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_OUTPUT\' | translate }}">{{$select.selected}}</ui-select-match>\n\t\t\t\t\t\t\t\t<ui-select-choices repeat="output in [\'CSV\',\'PDF\'] | filter: $select.search">\n\t\t\t\t\t\t\t\t\t<div ng-bind-html="output | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t<span data-ng-show="(forms.config.reportOutput.$touched || forms.config.$submitted) && forms.config.reportOutput.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- END OUTPUT --\x3e\n\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\x3c!-- START TODAY --\x3e\n\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_RUN_ON\' | translate}}</label></br>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tbs-switch\n\t\t\t\t\t\t\tclass="form-control"\n\t\t\t\t\t\t\tdata-ng-model="switchValues.today"\n\t\t\t\t\t\t\ttype="checkbox"\n\t\t\t\t\t\t\tname="status"\n\t\t\t\t\t\t\tdata-ng-change="checkToday()"\n\t\t\t\t\t\t\tswitch-active="{{ switches.isActive }}"\n\t\t\t\t\t\t\tswitch-on-text="{{ \'APPLICATION_TODAY\' | translate }}"\n\t\t\t\t\t\t\tswitch-off-text="{{ \'APPLICATION_RANGE\' | translate }}"\n\t\t\t\t\t\t\tswitch-on-color="{{ switches.onColor }}"\n\t\t\t\t\t\t\tswitch-off-color="{{ switches.offColor }}"\n\t\t\t\t\t\t\tswitch-animate="{{ switches.animate }}"\n\t\t\t\t\t\t\tswitch-size="{{ switches.size }}"\n\t\t\t\t\t\t\tswitch-label="{{ switches.label }}"\n\t\t\t\t\t\t\tswitch-icon="{{ switches.icon }}"\n\t\t\t\t\t\t\tswitch-radio-off="{{ switches.radioOff }}"\n\t\t\t\t\t\t\tswitch-label-width="{{ switches.labelWidth }}"\n\t\t\t\t\t\t\tswitch-handle-width="{{ switches.handleWidth }}">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- END TODAY --\x3e\n\n\t\t\t\t\t\t\x3c!-- START VALIDITY --\x3e\n\t\t\t\t\t\t<div class="form-group" data-ng-if="switchValues.today">\n\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_VALIDITY\' | translate}}</label>\n\t\t\t\t\t\t\t<rzslider rz-slider-model="item.validityStart" rz-slider-high="item.validityEnd" rz-slider-options="validitySlider" data-ng-init="item.validityStart = 8;item.validityEnd = 16;"></rzslider>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- END VALIDITY --\x3e\n\n\t\t\t\t\t\t\x3c!-- START RANGE --\x3e\n\t\t\t\t\t\t<div class="form-group" data-ng-if="!switchValues.today" data-ng-class="{\'has-error\': (forms.config.range.$touched || forms.config.$submitted) && forms.config.range.$invalid}">\n\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_REPORT_RANGE\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t<ui-select data-ng-model="item.reportRange" name="range" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_RANGE\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n\t\t\t\t\t\t\t\t<ui-select-choices repeat="range.value as range in reportRanges | filter: $select.search">\n\t\t\t\t\t\t\t\t\t<div ng-bind-html="range.name | highlight: $select.search | translate"></div>\n\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t<span data-ng-show="(forms.config.range.$touched || forms.config.$submitted) && forms.config.range.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- END RANGE --\x3e\n\n\t\t\t\t\t\t\x3c!-- START TODAY CRON EXEC --\x3e\n\t\t\t\t\t\t<div class="form-group" data-ng-if="switchValues.today" data-ng-class="{\'has-error\': (forms.config.cron.$touched || forms.config.$submitted) && forms.config.cron.$invalid}">\n\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t<ui-select data-ng-model="item.cron" name="cron" theme="bootstrap" data-ng-required="switchValues.today">\n\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n\t\t\t\t\t\t\t\t<ui-select-choices repeat="cron.value as cron in todayCron | filter: $select.search">\n\t\t\t\t\t\t\t\t\t<div ng-bind-html="cron.name | highlight: $select.search | translate"></div>\n\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t<span data-ng-show="(forms.config.cron.$touched || forms.config.$submitted) && forms.config.cron.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- END TODAY CRON --\x3e\n\t\t\t\t\t\t<div class="row" data-ng-if="!switchValues.today">\n\t\t\t\t\t\t\x3c!-- START CRONTYPE EXEC --\x3e\n\t\t\t\t\t\t<div class="form-group col-md-4" data-ng-class="{\'has-error\': (forms.config.cronType.$touched || forms.config.$submitted) && forms.config.cronType.$invalid}">\n\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t<ui-select data-ng-model="rangeExec.type" name="cronType" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_EXECUTE_EVERY\' | translate }}">{{$select.selected.name | translate}}</ui-select-match>\n\t\t\t\t\t\t\t\t<ui-select-choices repeat="type.value as type in cronTypes | filter: $select.search">\n\t\t\t\t\t\t\t\t\t<div ng-bind-html="type.name | highlight: $select.search | translate"></div>\n\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t<span data-ng-show="(forms.config.cronType.$touched || forms.config.$submitted) && forms.config.cronType.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- END CRONTYPE --\x3e\n\n\t\t\t\t\t\t\x3c!-- START WEEKDAY --\x3e\n\t\t\t\t\t\t<div class="form-group col-md-4" data-ng-if="item.cronType === \'weekly\'" data-ng-class="{\'has-error\': (forms.config.weekDay.$touched || forms.config.$submitted) && forms.config.weekDay.$invalid}">\n\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_WEEKDAYS\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t<ui-select multiple data-ng-model="rangeExec.weekDays" name="weekDay" theme="bootstrap" data-ng-required="item.cronType === \'weekly\'">\n\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_WEEKDAYS\' | translate }}">{{$item.name | translate}}</ui-select-match>\n\t\t\t\t\t\t\t\t<ui-select-choices repeat="day.value as day in weekDays | filter: $select.search">\n\t\t\t\t\t\t\t\t\t<div ng-bind-html="day.name | highlight: $select.search | translate"></div>\n\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t<span data-ng-show="(forms.config.weekDay.$touched || forms.config.$submitted) && forms.config.weekDay.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- END WEEKDAY --\x3e\n\n\t\t\t\t\t\t\x3c!-- START MONTHDAY --\x3e\n\t\t\t\t\t\t<div class="form-group col-md-4" data-ng-if="item.cronType === \'monthly\'" data-ng-class="{\'has-error\': (forms.config.monthDay.$touched || forms.config.$submitted) && forms.config.monthDay.$invalid}">\n\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_MONTHDAY\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t<ui-select data-ng-model="rangeExec.monthDay" name="monthDay" theme="bootstrap" data-ng-required="item.cronType === \'monthly\'">\n\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_MONTHDAY\' | translate }}">{{$select.selected}}</ui-select-match>\n\t\t\t\t\t\t\t\t<ui-select-choices repeat="day in monthDays | filter: $select.search">\n\t\t\t\t\t\t\t\t\t<div ng-bind-html="day | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t<span data-ng-show="(forms.config.monthDay.$touched || forms.config.$submitted) && forms.config.monthDay.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- END MONTHDAY --\x3e\n\n\t\t\t\t\t\t\x3c!-- START HOUR --\x3e\n\t\t\t\t\t\t<div class="form-group col-md-4" data-ng-if="item.cronType" data-ng-class="{\'has-error\': (forms.config.hour.$touched || forms.config.$submitted) && forms.config.hour.$invalid}">\n\t\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_HOUR\' | translate }}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t<ui-select data-ng-model="rangeExec.hour" name="hour" theme="bootstrap" required>\n\t\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_HOUR\' | translate }}">{{$select.selected}}</ui-select-match>\n\t\t\t\t\t\t\t\t<ui-select-choices repeat="hour in hours | filter: $select.search">\n\t\t\t\t\t\t\t\t\t<div ng-bind-html="hour | highlight: $select.search"></div>\n\t\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t\t<span data-ng-show="(forms.config.hour.$touched || forms.config.$submitted) && forms.config.hour.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- END HOUR --\x3e\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\x3c!-- START SEND MAIL --\x3e\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_SEND_MAIL\' | translate}}</label></br>\n\t\t\t\t\t\t<input\n\t\t\t\t\t\tbs-switch\n\t\t\t\t\t\tclass="form-control"\n\t\t\t\t\t\tdata-ng-model="item.sendMail"\n\t\t\t\t\t\ttype="checkbox"\n\t\t\t\t\t\tname="status"\n\t\t\t\t\t\tdata-ng-init="item.sendMail = 0"\n\t\t\t\t\t\tswitch-active="{{ switches.isActive }}"\n\t\t\t\t\t\tswitch-on-text="{{ \'APPLICATION_YES\' | translate }}"\n\t\t\t\t\t\tswitch-off-text="{{ \'APPLICATION_NO\' | translate }}"\n\t\t\t\t\t\tswitch-on-color="{{ switches.onColor }}"\n\t\t\t\t\t\tswitch-off-color="{{ switches.offColor }}"\n\t\t\t\t\t\tswitch-animate="{{ switches.animate }}"\n\t\t\t\t\t\tswitch-size="{{ switches.size }}"\n\t\t\t\t\t\tswitch-label="{{ switches.label }}"\n\t\t\t\t\t\tswitch-icon="{{ switches.icon }}"\n\t\t\t\t\t\tswitch-radio-off="{{ switches.radioOff }}"\n\t\t\t\t\t\tswitch-label-width="{{ switches.labelWidth }}"\n\t\t\t\t\t\tswitch-handle-width="{{ switches.handleWidth }}">\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END SEND MAIL --\x3e\n\t\t\t\t\t<div class="row">\n\t\t\t\t\t\x3c!-- START ACCOUNT --\x3e\n\t\t\t\t\t<div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.config.MailServerOutId.$touched || forms.config.$submitted) && forms.config.MailServerOutId.$invalid}">\n\t\t\t\t\t\t<label class="control-label">{{ \'APPLICATION_ACCOUNT\' | translate }}<span class="required" data-ng-if="item.sendMail" aria-required="true">*</span></label>\n\t\t\t\t\t\t<ui-select data-ng-model="item.MailServerOutId" name="MailServerOutId" theme="bootstrap" data-ng-disabled="!item.sendMail" data-ng-required="item.sendMail">\n\t\t\t\t\t\t\t<ui-select-match placeholder="{{ \'APPLICATION_ACCOUNT\' | translate }}">{{$select.selected.username}}</ui-select-match>\n\t\t\t\t\t\t\t<ui-select-choices repeat="account.id as account in mailServers | filter: $select.search">\n\t\t\t\t\t\t\t\t<div ng-bind-html="account.username | highlight: $select.search"></div>\n\t\t\t\t\t\t\t</ui-select-choices>\n\t\t\t\t\t\t</ui-select>\n\t\t\t\t\t\t<span data-ng-show="(forms.config.MailServerOutId.$touched || forms.config.$submitted) && forms.config.MailServerOutId.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div class="note note-warning" data-ng-hide="mailServers.length">\n\t\t\t\t\t\t\t<h4 class="block">Warning!</h4>\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t{{ \'MESSAGE_NO_ACCOUNTS_AVAILABLE\' | translate }}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END ACCOUNT --\x3e\n\n\t\t\t\t\t\x3c!-- START EMAIL --\x3e\n\t\t\t\t\t<div class="form-group col-md-6" data-ng-class="{\'has-error\': (forms.config.$submitted && forms.config.email.$invalid) || forms.config.email.$error.pattern}">\n\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}<span data-ng-if="item.sendMail" class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t<input type="email" name="email" placeholder="{{\'APPLICATION_EMAIL_ADDRESS\' | translate}}" class="form-control" data-ng-model="item.email" required data-ng-disabled="!item.sendMail" data-ng-required="item.sendMail"/>\n\t\t\t\t\t\t<span data-ng-show="forms.config.$submitted && forms.config.email.$invalid" class="help-block help-block-error">\n\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END EMAIL --\x3e\n\t\t\t\t</div>\n\n\t\t\t\t\t\t<button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n\t\t\t\t\t\t<button class="btn green-haze" type="submit" ng-click="next()">{{\'APPLICATION_CONTINUE\' | translate}} <i class="fa fa-angle-right"></i></button>\n\t\t\t\t\t</form>\n\t\t\t\t</wz-step>\n\n\t\t\t\t<wz-step title="{{\'APPLICATION_CONFIRM\' | translate}}">\n\t\t\t\t\t<p>{{\'MESSAGE_CONFIGURATION_COMPLETED\' | translate}}</p>\n\t\t\t\t\t<button class="btn green-haze" type="button" ng-click="previous()"><i class="fa fa-angle-left"></i> {{\'APPLICATION_BACK\' | translate}}</button>\n\t\t\t\t\t<input type="submit" class="btn green-haze" wz-next value="{{\'APPLICATION_CONFIRM\' | translate}}"/>\n\t\t\t\t</wz-step>\n\t\t\t</wizard>\n\t\t</div>\n\t</div>\n\t\x3c!-- END PORTLET--\x3e\n</div>\n\x3c!-- <pre>\n\t{{rangeExec | json}}\n</pre>\n<pre>\n\t{{item | json}}\n</pre> --\x3e\n'),
 a.put("app/tools/sound/list/list.html",'<div class="page-bar">\n  <ul class="page-breadcrumb">\n    <li>\n      <i class="icon-rocket"></i>\n      <a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n      <i class="fa fa-angle-right"></i>\n    </li>\n    <li>\n      <i class="icon-music-tone-alt"></i>\n      <a href="#">{{ \'APPLICATION_SOUNDS\' | translate }}</a>\n    </li>\n  </ul>\n  <div class="page-toolbar">\n  </div>\n</div>\n\x3c!-- END PAGE HEADER--\x3e\n\x3c!-- BEGIN PAGE CONTENT--\x3e\n\x3c!-- Audio Portlets --\x3e\n<div class="headline">\n  <h3><i class="icon-music-tone-alt sounds-title-icon"></i> {{ \'APPLICATION_SOUNDS\' | translate }}</h3>\n</div>\n<div class="portlet light bg-inverse">\n  <div class="portlet-title collapsible" ng-click="isCollapsed = !isCollapsed">\n    <div class="caption">\n      <i class="icon-puzzle font-red-flamingo"></i>\n      <span class="caption-subject bold font-red-flamingo uppercase">\n      {{\'APPLICATION_FILE_UPLOAD\' | translate}} </span>\n    </div>\n    <div class="tools">\n      <a href="" ng-class="{\'collapse\': !isCollapsed, \'expand\' : isCollapsed}">\n      </a>\n    </div>\n  </div>\n  <div class="portlet-body" ng-slide-down="!isCollapsed">\n    <div class="row" nv-file-drop="" uploader="uploader" filters="queueLimit, customFilter">\n    \t<div class="col-md-4">\n    \t\t<div class="portlet light bordered">\n    \t\t\t<div class="portlet-title">\n    \t\t\t\t<div class="caption font-green-sharp">\n    \t\t\t\t\t<i class="icon-settings font-green-sharp"></i>\n    \t\t\t\t\t<span class="caption-subject bold uppercase">{{\'APPLICATION_SELECT_FILES\' | translate}}</span>\n    \t\t\t\t\t<span class="caption-helper hide"></span>\n    \t\t\t\t</div>\n    \t\t\t\t<div class="actions">\n    \t\t\t\t</div>\n    \t\t\t</div>\n    \t\t\t<div class="portlet-body">\n    \t\t\t\t<div ng-show="uploader.isHTML5">\n    \t\t\t\t\t<div class="file-drop-zone margin-bottom-20" nv-file-over="" uploader="uploader" over-class="file-drop-zone-over">\n    \t\t\t\t\t\tBase drop zone\n    \t\t\t\t\t</div>\n    \t\t\t\t</div>\n    \t\t\t\t<span class="btn default btn-file">\n    \t\t\t\t<span class="fileinput-new">\n    \t\t\t\t{{\'APPLICATION_FILE_UPLOAD\' | translate}}</span>\n    \t\t\t\t<input type="file" nv-file-select="" uploader="uploader" />\n    \t\t\t\t</span>\n    \t\t\t\t<span class="btn default btn-file">\n    \t\t\t\t<span class="fileinput-new">\n    \t\t\t\t{{\'APPLICATION_MULTI_FILE_UPLOAD\' | translate}}</span>\n    \t\t\t\t<input type="file" nv-file-select="" uploader="uploader" multiple  /><br/>\n          </span>\n          <p>\n            </br>\n            {{ \'MESSAGE_SUPPORTED_FORMATS\' | translate }} <b>wav, mp3, gsm, ogg</b>.\n          </p>\n          <p>\n            {{ \'MESSAGE_MAXIMUM_SOUND_UPLOAD_SIZE\' | translate }} <b>15 Mb</b>.\n          </p>\n    \t\t\t</div>\n    \t\t</div>\n    \t</div>\n    \t<div class="col-md-8">\n    \t\t<div class="portlet light bordered">\n    \t\t\t<div class="portlet-title">\n    \t\t\t\t<div class="caption font-green-sharp">\n    \t\t\t\t\t<i class="icon-settings font-green-sharp"></i>\n    \t\t\t\t\t<span class="caption-subject bold uppercase">{{\'APPLICATION_UPLOAD_QUEUE\' | translate}}</span>\n    \t\t\t\t\t<span class="caption-helper">{{\'APPLICATION_QUEUE_LENGTH\' | translate}}: {{ uploader.queue.length }}</span>\n    \t\t\t\t</div>\n    \t\t\t\t<div class="actions">\n    \t\t\t\t</div>\n    \t\t\t</div>\n    \t\t\t<div class="portlet-body">\n    \t\t\t\t<div class="table-scrollable table-scrollable-borderless">\n    \t\t\t\t\t<table class="table table-hover table-light">\n    \t\t\t\t\t\t<thead>\n    \t\t\t\t\t\t\t<tr class="uppercase">\n    \t\t\t\t\t\t\t\t<th width="50%">{{\'APPLICATION_NAME\' | translate}}</th>\n    \t\t\t\t\t\t\t\t<th ng-show="uploader.isHTML5">{{\'APPLICATION_SIZE\' | translate}}</th>\n    \t\t\t\t\t\t\t\t<th ng-show="uploader.isHTML5">{{\'APPLICATION_PROGRESS\' | translate}}</th>\n    \t\t\t\t\t\t\t\t<th>{{\'APPLICATION_STATUS\' | translate}}</th>\n    \t\t\t\t\t\t\t\t<th>{{\'APPLICATION_MESSAGE\' | translate}}</th>\n    \t\t\t\t\t\t\t\t<th>{{\'APPLICATION_ACTIONS\' | translate}}</th>\n    \t\t\t\t\t\t\t</tr>\n    \t\t\t\t\t\t</thead>\n    \t\t\t\t\t\t<tbody>\n    \t\t\t\t\t\t\t<tr ng-repeat="item in uploader.queue">\n    \t\t\t\t\t\t\t\t<td><strong>{{ item.file.name }}</strong></td>\n    \t\t\t\t\t\t\t\t<td ng-show="uploader.isHTML5" nowrap>{{ item.file.size/1024/1024|number:2 }} MB</td>\n    \t\t\t\t\t\t\t\t<td ng-show="uploader.isHTML5">\n    \t\t\t\t\t\t\t\t\t<div class="progress progress-sm" style="margin-bottom: 0;">\n    \t\t\t\t\t\t\t\t\t\t<div class="progress-bar progress-bar-info" role="progressbar" ng-style="{ \'width\': item.progress + \'%\' }"></div>\n    \t\t\t\t\t\t\t\t\t</div>\n    \t\t\t\t\t\t\t\t</td>\n    \t\t\t\t\t\t\t\t<td class="text-center">\n    \t\t\t\t\t\t\t\t\t<span ng-show="item.isSuccess" class="text-success"><i class="glyphicon glyphicon-ok"></i></span>\n    \t\t\t\t\t\t\t\t\t<span ng-show="item.isCancel" class="text-info"><i class="glyphicon glyphicon-ban-circle"></i></span>\n    \t\t\t\t\t\t\t\t\t<span ng-show="item.isError" class="text-danger"><i class="glyphicon glyphicon-remove"></i></span>\n    \t\t\t\t\t\t\t\t\t<span ng-show="item.isUploading" class="text-info"><i class="glyphicon glyphicon-upload"></i></span>\n    \t\t\t\t\t\t\t\t</td>\n    \t\t\t\t\t\t\t\t<td class="text-center">\n    \t\t\t\t\t\t\t\t\t<span ng-show="item.responseMessage" class="text-danger">{{item.responseMessage}}</span>\n    \t\t\t\t\t\t\t\t</td>\n    \t\t\t\t\t\t\t\t<td nowrap>\n    \t\t\t\t\t\t\t\t\t<button type="button" class="btn btn-success btn-xs" ng-click="item.upload()" ng-disabled="item.isReady || item.isUploading || item.isSuccess">\n    \t\t\t\t\t\t\t\t\t<span class="glyphicon glyphicon-upload"></span> {{\'APPLICATION_UPLOAD\' | translate}}\n    \t\t\t\t\t\t\t\t\t</button>\n    \t\t\t\t\t\t\t\t\t<button type="button" class="btn btn-warning btn-xs" ng-click="item.cancel()" ng-disabled="!item.isUploading">\n    \t\t\t\t\t\t\t\t\t<span class="glyphicon glyphicon-ban-circle"></span> {{\'APPLICATION_CANCEL\' | translate}}\n    \t\t\t\t\t\t\t\t\t</button>\n    \t\t\t\t\t\t\t\t\t<button type="button" class="btn btn-danger btn-xs" ng-click="item.remove()">\n    \t\t\t\t\t\t\t\t\t<span class="glyphicon glyphicon-trash"></span> {{\'APPLICATION_REMOVE\' | translate}}\n    \t\t\t\t\t\t\t\t\t</button>\n    \t\t\t\t\t\t\t\t</td>\n    \t\t\t\t\t\t\t</tr>\n    \t\t\t\t\t\t</tbody>\n    \t\t\t\t\t</table>\n    \t\t\t\t</div>\n    \t\t\t\t<div>\n    \t\t\t\t\t<p>{{\'APPLICATION_UPLOAD_QUEUE_PROGRESS\' | translate}}:</p>\n    \t\t\t\t\t<div class="progress progress-sm" style="">\n    \t\t\t\t\t\t<div class="progress-bar progress-bar-info" role="progressbar" ng-style="{ \'width\': uploader.progress + \'%\' }"></div>\n    \t\t\t\t\t</div>\n    \t\t\t\t</div>\n    \t\t\t\t<button type="button" class="btn btn-success btn-s" ng-click="uploader.uploadAll()" ng-disabled="!uploader.getNotUploadedItems().length">\n    \t\t\t\t<span class="glyphicon glyphicon-upload"></span> {{\'APPLICATION_UPLOAD_ALL\' | translate}}\n    \t\t\t\t</button>\n    \t\t\t\t<button type="button" class="btn btn-warning btn-s" ng-click="uploader.cancelAll()" ng-disabled="!uploader.isUploading">\n    \t\t\t\t<span class="glyphicon glyphicon-ban-circle"></span> {{\'APPLICATION_CANCEL_ALL\' | translate}}\n    \t\t\t\t</button>\n    \t\t\t\t<button type="button" class="btn btn-danger btn-s" ng-click="uploader.clearQueue()" ng-disabled="!uploader.queue.length">\n    \t\t\t\t<span class="glyphicon glyphicon-trash"></span> {{\'APPLICATION_REMOVE_ALL\' | translate}}\n    \t\t\t\t</button>\n    \t\t\t</div>\n    \t\t</div>\n    \t</div>\n    </div>\n  </div>\n</div>\n<div class="row thumbnails" data-ng-init="initList()">\n  <div class="row" ng-show="sounds.length == 0">\n    <div class="col-md-12 page-404">\n      <div class="details">\n        <h3>{{ \'MESSAGE_NO_SOUNDS\' | translate }}</h3>\n        <p>\n          <a href="/">\n          {{ \'MESSAGE_RETURN_HOME\' | translate }} </a>\n          {{ \'MESSAGE_OR_UPLOAD_SOUND_FILE\' | translate }}\n        </p>\n      </div>\n    </div>\n  </div>\n  <div class="audio-portlet-wrapper animate-repeat" ng-repeat="sound in sounds">\n    <div class="audio-portlet">\n      <div class="audio-portlet-title"><a href="#" editable-text="sound.display_name" onbeforesave="updateAudio(sound.id,{display_name : $data})">{{ sound.display_name || "Empty" }}</a></div>\n      <img src="../assets/images/note_placeholder.png" alt="" class="img-responsive"/>\n      <div class="file-info">\n        <div class="audio-tag-wrapper">\n          <audio-file-download params="{id:sound.id,controller:\'stream\'}" resource="Sound"></audio-file-download>\n        </div>\n        <p id="description_div">\n          <a href="#" editable-text="sound.description" onbeforesave="updateAudio(sound.id,{description : $data})">{{ sound.description || "Empty" }}</a>\n        </p>\n        <p class="float-right">\n            <button class="btn btn-xs green-meadow" uib-tooltip-template="\'audioInfoTemplate.html\'"><i class="icon-list"></i></button>\n            <motion-file-download  params="{id:sound.id,controller:\'download\'}" resource="Sound" mimetype="\'audio/\'+sound.original_format" tooltiptext="Download" filename="sound.display_name+\'.\'+sound.original_format" btnclass="{{downloadButtonClass}}" btncontent=\'{{downloadButtonContent}}\'></motion-file-download>\n            <button uib-tooltip="Delete" class="btn btn-xs red-sunglo" ng-click="delete(sound.display_name, sound.id)" tooltip="Delete"><i class="icon-close" ></i></button>\n        </p>\n      </div>\n    </div>\n  </div>\n  <script type="text/ng-template" id="audioInfoTemplate.html">\n    <div>\n      <ul class="list-unstyled">\n        <li><b>Format : </b>{{sound.original_format}}</li>\n        <li><b>Duration : </b>{{sound.original_duration | date: \'mm:ss\'}}</li>\n        <li><b>Channels : </b>{{sound.original_channelCount}}</li>\n        <li><b>Bitrate : </b>{{sound.original_bitRate/1024}} kbs</li>\n        <li><b>Sample Rate : </b>{{sound.original_sampleRate/1000}} KHz</li>\n      </ul>\n    </div>\n  <\/script>\n</div>\n\x3c!-- End Audio Portlets --\x3e\n'),a.put("app/tools/tag/list/list.create.modal.html",'<div class="modal-header">\n  <h3 class="modal-title">{{ \'APPLICATION_NEW_TAG\' | translate }}</h3>\n</div>\n<div class="modal-body">\n  <form name="form" novalidate>\n\n    \x3c!-- START NAME --\x3e\n    <div class="form-group" data-ng-class="{\'has-error\': (form.name.$touched || form.$submitted) && form.name.$invalid}">\n      <label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n      <input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="item.name" required data-ng-pattern="settings.patternName"/>\n      <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.required" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n      </span>\n      <span data-ng-show="(form.name.$touched || form.$submitted) && form.name.$error.pattern" class="help-block help-block-error">\n        <strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n      </span>\n    </div>\n    \x3c!-- END NAME --\x3e\n\n    \x3c!-- START DESCRIPTION --\x3e\n    <div class="form-group">\n      <label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n      <textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="item.description"></textarea>\n    </div>\n    \x3c!-- END DESCRIPTION --\x3e\n\n  </form>\n</div>\n<div class="modal-footer">\n  <button class="btn btn-success" type="button" ng-click="save()" ng-disabled="form.$invalid">{{ \'APPLICATION_CONFIRM\' | translate }}</button>\n  <button class="btn default" type="button" ng-click="cancel()">{{ \'APPLICATION_CANCEL\' | translate }}</button>\n</div>\n'),a.put("app/tools/tag/list/list.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-tag"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TAGS\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-docs font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_TAGS\' | translate }}</a> </span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="btn-group">\n\t\t\t\t\t\t<button class="btn green-jungle " ng-click="createItem()">\n\t\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_TAG\' | translate }}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/tag/view/view.chat.html",'<div class="row" >\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAGGED_CHAT\' | translate}}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="portlet-body" data-ng-if="tag" data-ng-init="initChat()">\n\t\t\t\t\x3c!-- BEGIN UI-GRID SPINNER --\x3e\n\t\t\t\t<span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n\t\t\t\t\x3c!-- END UI-GRID SPINNER --\x3e\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/tools/tag/view/view.contacts.html",'<div class="row" >\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAGGED_CONTACTS\' | translate}}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="portlet-body" data-ng-if="tag" data-ng-init="initContacts()">\n\t\t\t\t\x3c!-- BEGIN UI-GRID SPINNER --\x3e\n\t\t\t\t<span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n\t\t\t\t\x3c!-- END UI-GRID SPINNER --\x3e\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions" data-ng-if="readyGrid && gridOptions" ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/tools/tag/view/view.fax.html",'<div class="row" >\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAGGED_FAX\' | translate}}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="portlet-body" data-ng-if="tag" data-ng-init="initFax()">\n\t\t\t\t\x3c!-- BEGIN UI-GRID SPINNER --\x3e\n\t\t\t\t<span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n\t\t\t\t\x3c!-- END UI-GRID SPINNER --\x3e\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/tools/tag/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="getTag()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-tag"></i>\n\t\t\t\t\t<a href="/tools/tags/list">{{ \'APPLICATION_TAGS\' | translate }}</a>\n\t\t\t\t\t<i data-ng-show="tag" class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li data-ng-show="tag">\n\t\t\t\t\t<a href="#">{{tag.name}}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE SIDEBAR --\x3e\n\t\t<div class="profile-sidebar">\n\t\t\t\x3c!-- PORTLET MAIN --\x3e\n\t\t\t<div class="portlet light profile-sidebar-portlet">\n\t\t\t\t\x3c!-- SIDEBAR USERPIC --\x3e\n\t\t\t\t<div class="profile-image">\n\t\t\t\t\t<img data-ng-src="assets/images/media/tag.png" class="img-responsive">\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USERPIC --\x3e\n\t\t\t\t\x3c!-- SIDEBAR USER TITLE --\x3e\n\t\t\t\t<div class="profile-usertitle">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{tag.name}}\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- <div class="profile-usertitle-job">\n\t\t\t\t\t\t{{user.role}}\n\t\t\t\t\t</div> --\x3e\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USER TITLE --\x3e\n\n\t\t\t\t\x3c!-- SIDEBAR MENU --\x3e\n\t\t\t\t<div class="profile-usermenu">\n\t\t\t\t\t<ul class="nav">\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.tags.view.settings\')}">\n\t\t\t\t\t\t\t<a data-ng-href="/tools/tags/view/{{tag.id}}/settings">\n\t\t\t\t\t\t\t<i class="icon-settings"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_SETTINGS\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.tags.view.chat\')}">\n\t\t\t\t\t\t\t<a data-ng-href="{{license.chat ? \'/tools/tags/view/\'+tag.id+\'/chat\' : \'#\'}}" data-ng-class="{\'disabled-link\':!license.chat}">\n\t\t\t\t\t\t\t<i class="icon-bubble"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_CHAT\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.tags.view.mail\')}">\n\t\t\t\t\t\t\t<a data-ng-href="{{license.mail ? \'/tools/tags/view/\'+tag.id+\'/mail\' : \'#\'}}" data-ng-class="{\'disabled-link\':!license.mail}">\n\t\t\t\t\t\t\t<i class="icon-envelope"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_MAIL\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.tags.view.fax\')}">\n\t\t\t\t\t\t\t<a data-ng-href="{{license.fax ? \'/tools/tags/view/\'+tag.id+\'/fax\' : \'#\'}}" data-ng-class="{\'disabled-link\':!license.fax}">\n\t\t\t\t\t\t\t<i class="fa fa-fax"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_FAX\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.tags.view.sms\')}" >\n\t\t\t\t\t\t\t<a data-ng-href="{{license.messaging ? \'/tools/tags/view/\'+tag.id+\'/sms\' : \'#\'}}" data-ng-class="{\'disabled-link\':!license.messaging}">\n\t\t\t\t\t\t\t<i class="glyphicon glyphicon-comment"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_SMS\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.tags.view.contacts\')}">\n\t\t\t\t\t\t\t<a data-ng-href="{{license.cm ? \'/tools/tags/view/\'+tag.id+\'/contacts\' : \'#\'}}" data-ng-class="{\'disabled-link\':!license.cm}">\n\t\t\t\t\t\t\t<i class="fa fa-users"></i>\n\t\t\t\t\t\t\t{{ \'APPLICATION_CONTACTS\' | translate}} </a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END MENU --\x3e\n\t\t\t</div>\n\t\t\t\x3c!-- END PORTLET MAIN --\x3e\n\t\t</div>\n\t\t\x3c!-- END BEGIN PROFILE SIDEBAR --\x3e\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/tag/view/view.mail.html",'<div class="row" >\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAGGED_MAIL\' | translate}}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="portlet-body" data-ng-if="tag" data-ng-init="initMail()">\n\t\t\t\t\x3c!-- BEGIN UI-GRID SPINNER --\x3e\n\t\t\t\t<span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n\t\t\t\t\x3c!-- END UI-GRID SPINNER --\x3e\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/tools/tag/view/view.settings.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAG\' | translate}} {{ \'APPLICATION_SETTINGS\' | translate}} </span>\n\t\t\t\t</div>\n\t\t\t\t<ul class="nav nav-tabs">\n\t\t\t\t\t<li class="active">\n\t\t\t\t\t\t<a href="#" data-target="#tab_1_1" data-toggle="tab">{{ \'APPLICATION_GENERAL\' | translate}}</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- BEGIN UI-GRID SPINNER --\x3e\n\t\t\t\t<span us-spinner spinner-key="spinner-grid" spinner-start-active="false"></span>\n\t\t\t\t\x3c!-- END UI-GRID SPINNER --\x3e\n\t\t\t\t<div class="tab-content">\n\t\t\t\t\t\x3c!-- GENERAL TAB --\x3e\n\t\t\t\t\t<div class="tab-pane active" id="tab_1_1">\n\t\t\t\t\t\t<form name="forms.general" data-ng-submit="forms.general.$valid && updateTag()" novalidate>\n\n\t\t\t\t\t\t\t\x3c!-- START NAME --\x3e\n\t\t\t\t\t\t\t<div class="form-group" data-ng-class="{\'has-error\': (forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$invalid}">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_NAME\' | translate}}<span class="required" aria-required="true">*</span></label>\n\t\t\t\t\t\t\t\t<input type="text" name="name" placeholder="{{\'APPLICATION_NAME\' | translate}}" class="form-control" data-ng-model="tag.name" required data-ng-pattern="settings.patternName"/>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.required" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_REQUIRED_FIELD\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span data-ng-show="(forms.general.name.$touched || forms.general.$submitted) && forms.general.name.$error.pattern" class="help-block help-block-error">\n\t\t\t\t\t\t\t\t\t<strong>{{\'APPLICATION_WARNING\' | translate}}!</strong> {{\'MESSAGE_INVALID_PATTERN_NAME\' | translate}}.\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END NAME --\x3e\n\n\t\t\t\t\t\t\t\x3c!-- START DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="control-label">{{\'APPLICATION_DESCRIPTION\' | translate}}</label>\n\t\t\t\t\t\t\t\t<textarea type="text" name="description" placeholder="{{\'APPLICATION_DESCRIPTION\' | translate}}" class="form-control" data-ng-model="tag.description"></textarea>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!-- END DESCRIPTION --\x3e\n\t\t\t\t\t\t\t<input class="btn green-haze" type="submit" value="{{\'APPLICATION_UPDATE\' | translate}}"/>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- END ADVANCED TAB --\x3e\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/tools/tag/view/view.sms.html",'<div class="row" >\n\t<div class="col-md-12">\n\t\t<div class="portlet light">\n\t\t\t<div class="portlet-title tabbable-line">\n\t\t\t\t<div class="caption caption-md">\n\t\t\t\t\t<i class="icon-globe theme-font hide"></i>\n\t\t\t\t\t<span class="caption-subject font-blue-madison bold uppercase">{{ \'APPLICATION_TAGGED_SMS\' | translate}}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="portlet-body" data-ng-if="tag" data-ng-init="initSms()">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n'),a.put("app/tools/template/list/list.html",'<div class="row">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-docs"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TEMPLATES\' | translate }}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\t</div>\n</div>\n\n\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row">\n\t<div class="col-md-12">\n\t\t\x3c!-- BEGIN Portlet PORTLET--\x3e\n\t\t<div class="portlet light bordered" data-ng-init="initView()">\n\t\t\t<div class="portlet-title">\n\t\t\t\t<div class="caption font-green-sharp">\n\t\t\t\t\t<i class="icon-wrench font-green-sharp"></i>\n\t\t\t\t\t<span class="caption-subject">{{ \'APPLICATION_TEMPLATES\' | translate }}</span>\n\t\t\t\t</div>\n\t\t\t\t<div class="actions">\n\t\t\t\t\t<div class="btn-group" data-ng-show="id.length">\n\t\t\t\t\t\t<a class="btn red" href="#" data-ng-click="deleteItems()">\n\t\t\t\t\t\t\t<i class="icon-trash"></i> {{ \'APPLICATION_DELETE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="btn-group">\n\t\t\t\t\t\t<a class="btn green-jungle" href="/tools/templates/wizard">\n\t\t\t\t\t\t\t<i class="icon-plus"></i> {{ \'APPLICATION_NEW_TEMPLATE\' | translate }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="portlet-body">\n\t\t\t\t\x3c!-- START TABLE --\x3e\n\t\t\t\t<div ui-grid="gridOptions"  ui-grid-resize-columns ui-grid-auto-resize ui-grid-pagination ui-grid-selection ui-grid-exporter ui-grid-draggable-rows class="ui-grid">\n\t\t\t\t\t<div class="watermark" ng-show="!gridOptions.data.length">{{ \'MESSAGE_NO_RESULTS_AVAILABLE\' | translate }}</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END TABLE --\x3e\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!-- END Portlet PORTLET--\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),a.put("app/tools/template/view/view.html",'\x3c!-- BEGIN PAGE CONTENT--\x3e\n<div class="row" data-ng-init="initItem()">\n\t<div class="col-md-12">\n\t\t<div class="page-bar">\n\t\t\t<ul class="page-breadcrumb">\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-rocket"></i>\n\t\t\t\t\t<a href="/">{{ \'APPLICATION_DASHBOARD\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-wrench"></i>\n\t\t\t\t\t<a href="#">{{ \'APPLICATION_TOOLS\' | translate }}</a>\n\t\t\t\t\t<i class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t\t<i class="icon-docs"></i>\n\t\t\t\t\t<a href="/tools/templates/list">{{ \'APPLICATION_TEMPLATES\' | translate }}</a>\n\t\t\t\t\t<i data-ng-show="item" class="fa fa-angle-right"></i>\n\t\t\t\t</li>\n\t\t\t\t<li data-ng-show="item">\n\t\t\t\t\t<a href="#">{{item.name}}</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- BEGIN PROFILE SIDEBAR --\x3e\n\t\t<div class="profile-sidebar">\n\n\t\t\t\x3c!-- PORTLET MAIN --\x3e\n\t\t\t<div class="portlet light profile-sidebar-portlet">\n\t\t\t\t\x3c!-- SIDEBAR USERPIC --\x3e\n\t\t\t\t<div class="profile-image">\n\t\t\t\t\t<img data-ng-src="assets/images/media/template.png" class="img-responsive">\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USERPIC --\x3e\n\t\t\t\t\x3c!-- SIDEBAR USER TITLE --\x3e\n\t\t\t\t<div class="profile-usertitle">\n\t\t\t\t\t<div class="profile-usertitle-name">\n\t\t\t\t\t\t{{item.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END SIDEBAR USER TITLE --\x3e\n\n\t\t\t\t\x3c!-- SIDEBAR MENU --\x3e\n\t\t\t\t<div class="profile-usermenu">\n\t\t\t\t\t<ul class="nav">\n\t\t\t\t\t\t<li data-ng-class="{active: $state.is(\'main.tools.templates.view.settings\')}">\n\t\t\t\t\t\t\t<a data-ng-href="/tools/templates/view/{{item.id}}/settings">\n\t\t\t\t\t\t\t\t<i class="icon-settings"></i>\n\t\t\t\t\t\t\t\t{{ \'APPLICATION_SETTINGS\' | translate}}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t\x3c!-- END MENU --\x3e\n\t\t\t</div>\n\t\t\t\x3c!-- END PORTLET MAIN --\x3e\n\t\t</div>\n\t\t\x3c!-- END BEGIN PROFILE SIDEBAR --\x3e\n\t\t\x3c!-- BEGIN PROFILE CONTENT --\x3e\n\t\t<div ui-view class="profile-content">\n\t\t</div>\n\t\t\x3c!-- END PROFILE CONTENT --\x3e\n\t</div>\n</div>\n\x3c!-- END PAGE CONTENT--\x3e\n'),