(function(){"use strict";var a;a=angular.module("ngAnalytics",[]),a.service("ngAnalyticsService",["$timeout",function(a){var b;this.ga=null,this.serviceAuthToken=null,this.setClientId=function(a){return b=a,a},this.getClientId=function(){return b},this.authorize=function(c){var d=this;a(function(){return d.serviceAuthToken?void d.ga.auth.authorize({serverAuth:{access_token:d.serviceAuthToken}}):d.ga.auth.authorize({container:c,clientid:b,userInfoLabel:d.authLabel})},0)},this.viewSelectors={},this.isReady=!1,this.authLabel=void 0,this.authorized=!1}]),a.directive("ngAnalyticsActiveUsers",["ngAnalyticsService","$timeout",function(a,b){return{scope:{label:"@?",defaultIds:"=?",activeUsersContainer:"@?",viewSelectorContainer:"@?",increaseClass:"@?",decreaseClass:"@?"},restrict:"E",templateUrl:"ngAnalytics-activeUsers/template.html",link:function(c){var d,e=a.authorized?!1:!0;a.authorized=!0;var f=c.$watch(function(){return a.isReady},function(g){if(g){!a.ga.auth.isAuthorized()&&e&&a.authorize(c.authContainer||"embed-api-auth-container"),c.activeUsersContainer=c.activeUsersContainer||"active-users-container";var h=new a.ga.ext.ActiveUsers({container:c.activeUsersContainer,pollingInterval:5,label:c.label});if(h.once("success",function(){var a;this.on("change",function(d){var e=angular.element(this.container.firstChild),f=d.delta>0?c.increaseClass||"is-increasing":d.delta<0?c.increaseClass||"is-decreasing":"";f&&(e.addClass(f),b.cancel(a),a=b(function(){e.removeClass(f)},3e3))})}),c.viewSelectorContainer)d=c.$watch(function(){return a.viewSelectors[c.viewSelectorContainer]},function(b){b&&(a.viewSelectors[c.viewSelectorContainer].on("change",function(a){h.set({ids:a}).execute()}),d())});else{var i=function(){c.defaultIds&&h.set(c.defaultIds).execute()};a.ga.auth.once("success",i),a.ga.auth.isAuthorized()&&i()}f()}})}}}]),a.directive("ngAnalyticsAuth",["ngAnalyticsService",function(a){return{scope:{label:"@",authContainer:"@",serviceAuthToken:"@",hideOnAuth:"@"},restrict:"E",templateUrl:"ngAnalytics-auth/template.html",link:function(b){a.authLabel=b.label,a.serviceAuthToken=b.serviceAuthToken,b.authContainer=b.authContainer||"embed-api-auth-container";var c=b.$watch(function(){return a.isReady},function(d){d&&(b.hideOnAuth&&"true"===b.hideOnAuth&&(a.ga.auth.on("success",function(){b.hide=!0}),b.$watch(function(){return a.ga.auth.isAuthorized()},function(a,c){a&&c!==a?b.hide=!0:a||c===a||(b.hide=!1)})),c())})}}}]),a.directive("ngAnalyticsChart",["ngAnalyticsService",function(a){return{scope:{viewSelectorContainer:"@",authContainer:"@",chart:"=",chartResponseFn:"="},restrict:"E",templateUrl:"ngAnalytics-chart/template.html",link:function(b){var c,d=a.authorized?!1:!0;a.authorized=!0;var e=b.$watch(function(){return a.isReady},function(f){if(f){var g;if(!a.ga.auth.isAuthorized()&&d&&a.authorize(b.authContainer||"embed-api-auth-container"),g=new a.ga.googleCharts.DataChart(b.chart),g.on("success",function(a){g.off("success"),b.chartResponseFn&&b.chartResponseFn(a,b.chart.chart)}),b.viewSelectorContainer)c=b.$watch(function(){return a.viewSelectors[b.viewSelectorContainer]},function(d){d&&(a.viewSelectors[b.viewSelectorContainer].on("change",function(a){var b={query:{ids:a}};g.set(b).execute()}),c())});else{var h=function(){g.execute()};a.ga.auth.once("success",h),a.ga.auth.isAuthorized()&&h()}e()}})}}}]),a.directive("ngAnalyticsReport",["$rootScope","$q","ngAnalyticsService",function(a,b,c){return{scope:{queries:"=",authContainer:"@",viewSelectorContainer:"@"},restrict:"E",link:function(d,e){function f(a){var d=b.defer(),e=new c.ga.report.Data(a);return e.once("success",function(a){d.resolve(a)}),e.once("error",function(a){d.reject(a)}),e.execute(),d.promise}var g=c.authorized?!1:!0;c.authorized=!0;var h=d.$watch(function(){return c.isReady},function(i){if(i){if(!c.ga.auth.isAuthorized()&&g&&c.authorize(d.authContainer||"embed-api-auth-container"),d.viewSelectorContainer)var j=d.$watch(function(){return c.viewSelectors[d.viewSelectorContainer]},function(g){g&&(c.viewSelectors[d.viewSelectorContainer].on("change",function(c){var g=[];angular.forEach(d.queries,function(a){a.query.ids=c,g.push(f(a))}),b.all(g).then(function(b){d.report=b,a.$broadcast("$gaReportSuccess",b,e)},function(b){d.error=b,a.$broadcast("$gaReportError",b,e)})}),j())});else{var k=function(){var c=[];angular.forEach(d.queries,function(a){c.push(f(a))}),b.all(c).then(function(b){d.report=b,a.$broadcast("$gaReportSuccess",b,e)},function(b){d.error=b,a.$broadcast("$gaReportError",b,e)})};c.ga.auth.once("success",k),c.ga.auth.isAuthorized()&&k()}h()}})}}}]),a.directive("ngAnalyticsView",["ngAnalyticsService",function(a){return{scope:{viewSelectorContainer:"@",authContainer:"@"},restrict:"E",templateUrl:"ngAnalytics-view/template.html",link:function(b){var c=a.authorized?!1:!0;a.authorized=!0,b.$watch(function(){return a.isReady},function(d){if(d){!a.ga.auth.isAuthorized()&&c&&a.authorize(b.authContainer||"embed-api-auth-container"),b.viewSelectorContainer=b.viewSelectorContainer||"view-selector-container";var e=new a.ga.ViewSelector({container:b.viewSelectorContainer});a.viewSelectors[b.viewSelectorContainer]=e;var f=function(){e.execute()};a.ga.auth.once("success",f),a.ga.auth.isAuthorized()&&f()}})}}}]),a.run(["$templateCache","$timeout","ngAnalyticsService",function(a,b,c){var d=document.createTextNode('(function(w,d,s,g,js,fs){ g=w.gapi||(w.gapi={});g.analytics={q:[],ready:function(f){this.q.push(f);}}; js=d.createElement(s);fs=d.getElementsByTagName(s)[0]; js.src="https://apis.google.com/js/platform.js"; fs.parentNode.insertBefore(js,fs);js.onload=function(){g.load("analytics");}; }(window,document,"script"));'),e=document.createElement("script");e.type="text/javascript",e.appendChild(d),document.body.appendChild(e),gapi.analytics.ready(function(){gapi.analytics.createComponent("ActiveUsers",{initialize:function(){this.activeUsers=0},execute:function(){this.polling_&&this.stop(),this.render_(),gapi.analytics.auth.isAuthorized()?this.getActiveUsers_():gapi.analytics.auth.once("success",this.getActiveUsers_.bind(this))},stop:function(){clearTimeout(this.timeout_),this.polling_=!1,this.emit("stop",{activeUsers:this.activeUsers})},render_:function(){var a=this.get();this.container="string"==typeof a.container?document.getElementById(a.container):a.container,this.container.innerHTML=a.template||this.template,this.container.querySelector("b").innerHTML=this.activeUsers,this.container.querySelector("span").innerHTML=a.label||"Active Users"},getActiveUsers_:function(){var a=this.get(),b=1e3*(a.pollingInterval||5);if(isNaN(b)||5e3>b)throw new Error("Frequency must be 5 seconds or more.");this.polling_=!0,gapi.client.analytics.data.realtime.get({ids:a.ids,metrics:"rt:activeUsers"}).execute(function(a){var c=a.totalResults?+a.rows[0][0]:0,d=this.activeUsers;this.emit("success",{activeUsers:this.activeUsers}),c!=d&&(this.activeUsers=c,this.onChange_(c-d)),(this.polling_=!0)&&(this.timeout_=setTimeout(this.getActiveUsers_.bind(this),b))}.bind(this))},onChange_:function(a){var b=this.container.querySelector("b");b&&(b.innerHTML=this.activeUsers),this.emit("change",{activeUsers:this.activeUsers,delta:a}),a>0?this.emit("increase",{activeUsers:this.activeUsers,delta:a}):this.emit("decrease",{activeUsers:this.activeUsers,delta:a})},template:'