function newsletterSubscribe(n){var t,i;if(n.preventDefault(),$(n.target).closest(".toast").find(".alert").hide(),t=$(n.target).closest(".toast").find('input[name="email"]').val(),t==""){$(n.target).closest(".toast").find(".alert .error-message").text("Please enter your work email address");$(n.target).closest(".toast").find(".alert").fadeIn();return}if(i=/^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/,!i.test(t)){$(n.target).closest(".toast").find(".alert .error-message").text("Please enter a valid email address");$(n.target).closest(".toast").find(".alert").fadeIn();return}$(n.target).closest(".toast").find(".toast-close-button").click();window.location.href="/user/subscribe/?email="+encodeURIComponent(t)+"&return="+encodeURIComponent(window.location.pathname)+encodeURIComponent(window.location.search)}function newsletterRemindLater(n){$(n.target).closest(".toast").fadeOut()}function cookiesOk(n){$(n.target).closest(".toast").fadeOut()}String.prototype.format||(String.prototype.format=function(){var n=arguments;return this.replace(/{(\d+)}/g,function(t,i){return typeof n[i]!="undefined"?n[i]:t})});String.prototype.hashCode||(String.prototype.hashCode=function(){var n=0;if(this.length==0)return n;for(i=0;i<this.length;i++)char=this.charCodeAt(i),n=(n<<5)-n+char,n=n&n;return n}),function(){"use strict";angular.module("app",["app.core","app.error","app.layout","app.elements","app.content","app.page","app.search","app.user"])}();String.prototype.startsWith||(String.prototype.startsWith=function(n,t){return t=t||0,this.indexOf(n,t)===t}),function(){"use strict";angular.module("blocks.auth",["angularModalService","ngStorage","ui.bootstrap.showErrors"])}(),function(){"use strict";function n(n,t,i,r,u,f){function a(){f.storage.profile==null&&e()}function v(){f.storage.session==null&&u.path("/user/login/").search({"return":u.search().return||window.location.pathname+window.location.search})}function y(n,t){f.storage.session=n;f.storage.profile={};f.storage.forms=[];h(t)}function o(){delete f.storage.session;f.storage.forms=[];e()}function p(){f.storage.session==null&&u.path("/user/register/").search({"return":u.search().return||window.location.pathname+window.location.search})}function c(r){t.postLogout(f.storage.session).then(function(){o();n.$broadcast("user:logout");f.eventTrack("Sign Out","User");i.successAlert("You're now signed out");r||u.path("/user/login/").search({"return":window.location.pathname+window.location.search})},function(t){o();n.$broadcast("user:logout");f.eventTrack("Sign Out","User");i.error("Error when trying to log out",t);i.successAlert("You're now signed out");r||u.path("/user/login/").search({"return":window.location.pathname+window.location.search})})}function w(){c(!0)}function b(){return s()?!0:(u.path("/user/login/").search({"return":u.search().return||window.location.pathname+window.location.search}),!1)}function s(){return f.storage.session!=null}function k(){return f.storage.session!=null?(u.url(u.search().return||"/"),!0):!1}function d(n){r.showModal({templateUrl:"/app/blocks/auth/barrierModal.html?v="+_ttvVersion,controller:"BarrierModal",inputs:{reason:n}}).then(function(n){n.element.modal()})}function e(){f.storage.profile={}}function h(n){s()&&typeof f.storage.profile.email!="undefined"&&f.storage.profile.email!==null&&f.storage.profile.email!==n&&o();f.storage.profile==null&&e();f.storage.profile.email=n;f.storage.profile.firstName==null&&(f.storage.profile.salutation=n)}function g(n){(f.storage.profile==null&&e(),typeof n!="undefined"&&n!==null)&&(typeof n.email!="undefined"&&n.email!==null&&h(n.email),typeof n.firstName!="undefined"&&n.firstName!==null&&(f.storage.profile.firstName=n.firstName,f.storage.profile.salutation=n.firstName),typeof n.lastName!="undefined"&&n.lastName!=null&&(f.storage.profile.lastName=n.lastName),typeof n.company!="undefined"&&n.company!=null&&(f.storage.profile.company=n.company),typeof n.companyType!="undefined"&&n.companyType!=null&&(f.storage.profile.companyType=n.companyType),typeof n.jobTitle!="undefined"&&n.jobTitle!=null&&(f.storage.profile.jobTitle=n.jobTitle),typeof n.country!="undefined"&&n.country!=null&&(f.storage.profile.country=n.country))}function nt(n){return s()&&n===f.storage.profile.email}var l={login:v,startSession:y,endSession:o,register:p,logout:c,logoutNoRedirect:w,authorise:b,authorised:s,bounce:k,barrier:d,clearProfile:e,updateProfileEmail:h,updateProfileFields:g,authorisedAsEmail:nt};return a(),l}angular.module("blocks.auth").factory("auth",n);n.$inject=["$rootScope","UserData","logger","ModalService","$location","common"]}(),function(){"use strict";function n(n,t,i,r,u,f,e,o){n.reason=e;n.auth=u;switch(e){case"filters":n.message="";break;case"export":n.message="To export Analysis charts to Excel please register"}o.eventTrack("Barrier","User",e);n.cancel=function(){t.modal("hide");i(null,500)};n.login=function(){t.modal("hide");u.login()};n.register=function(){t.modal("hide");u.register()}}angular.module("blocks.auth").controller("BarrierModal",n);n.$inject=["$scope","$element","close","UserData","auth","logger","reason","common"]}(),function(){"use strict";angular.module("blocks.exception",["blocks.logger"])}(),function(){"use strict";function i(){this.config={};this.$get=function(){return{config:this.config}}}function n(n){n.decorator("$exceptionHandler",t)}function t(n,t,i){var r=t.config.appErrorPrefix||"";return function(t,u){n(t,u);var f={exception:t,cause:u},e=r+t.message;i.error(e,f)}}angular.module("blocks.exception").provider("exceptionConfig",i).config(n);n.$inject=["$provide"];t.$inject=["$delegate","exceptionConfig","logger"]}(),function(){"use strict";function n(n){function t(t){return function(i){n.error(t,i)}}return{catcher:t}}angular.module("blocks.exception").factory("exception",n);n.$inject=["logger"]}(),function(){"use strict";angular.module("blocks.forms",[])}(),function(){"use strict";function n(n,t,i,r){function f(){}function e(n){return r(function(r){if(i.storage.session==null)return r(!1);if(i.storage.forms!=null&&Array.isArray(i.storage.forms)||(i.storage.forms=[]),i.storage.forms.includes(n))return r(!0);t.postFormSubmissionExists(n,i.storage.session).then(function(t){if(t)return i.storage.forms.push(n),r(!0)},function(){return r(!1)})})}function o(n){i.storage.forms!=null&&Array.isArray(i.storage.forms)||(i.storage.forms=[]);i.storage.forms.includes(n)||i.storage.forms.push(n)}var u={checkAlreadySubmitted:e,setAsSubmitted:o};return f(),u}angular.module("blocks.forms").factory("forms",n);n.$inject=["$rootScope","FormData","common","$q"]}(),function(){"use strict";angular.module("blocks.logger",[])}(),function(){"use strict";function n(n,t){function r(i,r,u,f,e){e&&t.error(i+'<br />Please try again or <a href="/pages/help/" target="_blank">contact us<\/a> if the problem persists.',u,{faClass:f||"fal fa-times-octagon"});i="[Error] "+i;r?n.error(i,r):n.error(i)}function e(n,t,i,u){r(n,t,i,u,!0)}function i(i,r,u,f,e,o,s){e&&(o?t.info(i,u,{timeOut:0,extendedTimeOut:0,faClass:f||"fal fa-info-circle",onHidden:s}):t.info(i,u,{faClass:f||"fal fa-info-circle",onHidden:s}));i="[Info] "+i;r?n.info(i,r):n.info(i)}function o(n,t,r,u){i(n,t,r,u,!0)}function s(n,t,r,u){i(n,t,r,u,!0,!0)}function u(i,r,u,f,e){e&&t.success(i,u,{faClass:f||"fal fa-check"});i="[Success] "+i;r?n.info(i,r):n.info(i)}function h(n,t,i,r){u(n,t,i,r,!0)}function f(i,r,u,f,e){e&&t.warning(i,u,{faClass:f||"fal fa-exclamation-triangle"});i="[Warning] "+i;r?n.warn(i,r):n.warn(i)}function c(n,t,i,r){f(n,t,i,r,!0)}function l(t,i){n.debug("[Debug] "+t,i)}function a(t,i){i?n.log(t,i):n.log(t)}return{showToasts:!0,error:r,errorAlert:e,info:i,infoAlert:o,infoAlertSticky:s,success:u,successAlert:h,warning:f,warningAlert:c,debug:l,log:a}}angular.module("blocks.logger").factory("logger",n);n.$inject=["$log","toastr"]}(),function(){"use strict";angular.module("blocks.router",["ngRoute","blocks.logger"])}(),function(){"use strict";function t(){this.config={};this.$get=function(){return{config:this.config}}}function n(n,t,i,r,u,f,e,o){function v(n){c.caseInsensitiveMatch=!0;n.forEach(function(n){n.config.resolve=angular.extend(n.config.resolve||{},u.config.resolveAlways);c.when(n.url,n.config)});c.otherwise({templateUrl:"/app/error/error.html?v="+_ttvVersion,title:"Error"})}function y(){t.$on("$routeChangeError",function(t,i,u,f){if(!s){h.errors++;s=!0;var e=i&&(i.title||i.name||i.loadedTemplateUrl)||"unknown target",o="Error routing to "+e+". "+(f.msg||"");r.error(o,[i]);n.path("/")}})}function p(){y();b();k()}function w(){var n,t,r;for(n in i.routes)i.routes.hasOwnProperty(n)&&(t=i.routes[n],r=!!t.title,r&&l.push(t));return l}function b(){t.$on("$routeChangeSuccess",function(){h.changes++;s=!1})}function k(){t.$on("$viewContentLoaded",function(){o(function(){window.scrollTo(0,0)})})}function d(n){t.title=g(n)}function g(n){return n?n+" | "+u.config.docTitle:u.config.docTitle}var s=!1,h={errors:0,changes:0},l=[],c=u.config.$routeProvider,a={configureRoutes:v,getRoutes:w,routeCounts:h,setDocTitle:d};return p(),a}angular.module("blocks.router").provider("routehelperConfig",t).factory("routehelper",n);n.$inject=["$location","$rootScope","$route","logger","routehelperConfig","$http","$q","$timeout"]}(),function(){"use strict";angular.module("blocks.time",[])}(),function(){"use strict";function n(n){function r(){}function u(i){if(t!==null)return t;if(i!==i){t=new Date(i);var r=t.getTime()-Date.now();moment.now=function(){return r+Date.now()};return}return n.getUtc().then(function(n){t=new Date(n);var i=t.getTime()-Date.now();return moment.now=function(){return i+Date.now()},n},function(){})}var i={syncUtc:u},t=null;return r(),i}angular.module("blocks.time").factory("time",n);n.$inject=["AppData"]}(),function(){"use strict";angular.module("app.content",[])}(),function(){"use strict";function n(n){n.configureRoutes(t())}function t(){return[{url:"/",config:{templateUrl:"/app/content/index.html?v="+_ttvVersion,title:"Home"}},{url:"/content/:tag/",config:{templateUrl:"/app/content/index.html?v="+_ttvVersion,title:"Content",reloadOnSearch:!1}},{url:"/content/:tag/layout-:layout/",config:{templateUrl:"/app/content/index.html?v="+_ttvVersion,title:"Content",reloadOnSearch:!1}},{url:"/content/:tag/:alias/",config:{templateUrl:"/app/content/detail.html?v="+_ttvVersion,title:"Content",reloadOnSearch:!1}}]}angular.module("app.content").run(n);n.$inject=["routehelper"]}(),function(){"use strict";function n(n,t){function i(i){function u(){r.authors=Enumerable.From(r.content.tags).Where(function(n){return n.type==="author"}).ToArray();r.content.stub?(r.url=r.content.stubUrl,r.fullurl=r.url.startsWith("http://")||r.url.startsWith("https://")?r.url:window.location.origin+r.url):(r.url="/content/{0}/{1}/".format(r.overridealias!=null?r.overridealias:r.content.primaryTag.alias,r.content.alias),r.fullurl=window.location.origin+r.url);r.loaded=!0}function f(){r.share=!r.share;n(function(){addthis.toolbox(".addthis_inline_share_toolbox_a67y");typeof addthis.layers.refresh=="function"&&addthis.layers.refresh()},500)}var r={};i.vm=r;r.content=i.content;r.overridealias=i.overridealias;r.options=i.options;r.share=!1;r.toggleShare=f;r.common=t;r.loaded=!1;u()}return{restrict:"E",scope:{content:"=content",overridealias:"=overridealias",options:"=options"},templateUrl:"/app/content/appContentCard.html?v="+_ttvVersion,link:{pre:i}}}angular.module("app.content").directive("appContentCard",n);n.$inject=["$timeout","common"]}(),function(){"use strict";function n(n){function t(t){function r(){i.authors=Enumerable.From(i.content.tags).Where(function(n){return n.type==="author"}).ToArray();i.video=Enumerable.From(i.content.chapters).Any(function(n){return n.type==="video"});i.video&&(i.videoDurationSeconds=Enumerable.From(i.content.chapters).FirstOrDefault(function(n){return n.type==="video"}).video.durationSeconds);i.url=i.content.stub?i.content.stubUrl:"/content/{0}/{1}/".format(i.overridealias!=null?i.overridealias:i.content.primaryTag.alias,i.content.alias);i.loaded=!0}var i={};t.vm=i;i.content=t.content;i.overridealias=t.overridealias;i.options=t.options;i.common=n;i.loaded=!1;r()}return{restrict:"E",scope:{content:"=content",overridealias:"=overridealias",options:"=options"},templateUrl:"/app/content/appContentCardCompact.html?v="+_ttvVersion,link:{pre:t}}}angular.module("app.content").directive("appContentCardCompact",n);n.$inject=["common"]}(),function(){"use strict";function n(n){function t(t){function r(){i.authors=Enumerable.From(i.content.tags).Where(function(n){return n.type==="author"}).ToArray();i.video=Enumerable.From(i.content.chapters).Any(function(n){return n.type==="video"});i.video&&(i.videoDurationSeconds=Enumerable.From(i.content.chapters).FirstOrDefault(function(n){return n.type==="video"}).video.durationSeconds);i.url=i.content.stub?i.content.stubUrl:"/content/{0}/{1}/".format(i.overridealias!=null?i.overridealias:i.content.primaryTag.alias,i.content.alias);i.loaded=!0}var i={};t.vm=i;i.content=t.content;i.overridealias=t.overridealias;i.options=t.options;i.common=n;i.loaded=!1;r()}return{restrict:"E",scope:{content:"=content",overridealias:"=overridealias",options:"=options"},templateUrl:"/app/content/appContentCardExtended.html?v="+_ttvVersion,link:{pre:t}}}angular.module("app.content").directive("appContentCardExtended",n);n.$inject=["common"]}(),function(){"use strict";function n(n,t,i,r,u,f,e,o,s){function h(i){function l(){e.authors=Enumerable.From(e.content.tags).Where(function(n){return n.type==="author"}).ToArray();e.tags=Enumerable.From(e.content.tags).Where(function(n){return n.type!="author"}).ToArray();e.tracker=Enumerable.From(e.content.tags).Any(function(n){return n.alias==="tracker"});h();y();i.$on("$destroy",function(){e.trackTimer&&s.cancel(e.trackTimer);e.trackBrowserActiveTimer&&s.cancel(e.trackBrowserActiveTimer)});e.loaded=!0}function h(){if(e.trackTimer&&s.cancel(e.trackTimer),e.trackBrowserActiveTimer&&s.cancel(e.trackBrowserActiveTimer),e.trackDurationBrowserActiveListener!==null&&e.trackDurationBrowserActiveListener(),n.storage.session==null)e.firstChapter=Enumerable.From(e.content.chapters).Where(function(n){return n.showGuest}).Take(1).Where(function(n){return n.type==="video"||n.type==="image"}).FirstOrDefault(),e.otherChapters=Enumerable.From(e.content.chapters).Where(function(n){return n!==e.firstChapter&&n.showGuest}).ToArray();else if(e.content.formAlias==null)e.firstChapter=Enumerable.From(e.content.chapters).Where(function(n){return n.showFormNotSubmitted||n.showFormSubmitted}).Take(1).Where(function(n){return n.type==="video"||n.type==="image"}).FirstOrDefault(),e.otherChapters=Enumerable.From(e.content.chapters).Where(function(n){return n!==e.firstChapter&&(n.showFormNotSubmitted||n.showFormSubmitted)}).ToArray(),c();else return e.firstChapter=Enumerable.From(e.content.chapters).Where(function(n){return n.showFormNotSubmitted}).Take(1).Where(function(n){return n.type==="video"||n.type==="image"}).FirstOrDefault(),e.otherChapters=Enumerable.From(e.content.chapters).Where(function(n){return n!==e.firstChapter&&n.showFormNotSubmitted}).ToArray(),o.checkAlreadySubmitted(e.content.formAlias).then(function(n){n?(e.firstChapter=Enumerable.From(e.content.chapters).Where(function(n){return n.showFormSubmitted}).Take(1).Where(function(n){return n.type==="video"||n.type==="image"}).FirstOrDefault(),e.otherChapters=Enumerable.From(e.content.chapters).Where(function(n){return n!==e.firstChapter&&n.showFormSubmitted}).ToArray(),c()):(e.firstChapter=Enumerable.From(e.content.chapters).Where(function(n){return n.showFormNotSubmitted}).Take(1).Where(function(n){return n.type==="video"||n.type==="image"}).FirstOrDefault(),e.otherChapters=Enumerable.From(e.content.chapters).Where(function(n){return n!==e.firstChapter&&n.showFormNotSubmitted}).ToArray(),c())},function(){e.firstChapter=Enumerable.From(e.content.chapters).Where(function(n){return n.showFormNotSubmitted}).Take(1).Where(function(n){return n.type==="video"||n.type==="image"}).FirstOrDefault();e.otherChapters=Enumerable.From(e.content.chapters).Where(function(n){return n!==e.firstChapter&&n.showFormNotSubmitted}).ToArray();n.logger.error("Error checking if form already submitted")})}function c(){e.content.trackViews&&e.auth.authorised()&&(t.postContentUserView({alias:e.content.alias,sessionId:n.storage.session}).then(function(n){return e.trackReference=n,e.content.trackDuration&&(e.trackDuration=!0,e.trackDurationInterval=e.content.trackDurationInterval||60,e.trackBrowserActiveSeconds=0,e.trackDurationCount=0,e.trackDurationBrowserActiveListener=i.$on("document:visibilitychange",function(n,t){e.browserHidden=t}),e.trackBrowserActiveTimer=s(function(){a()},1e3),e.trackTimer=s(function(){v()},e.trackDurationInterval*1e3)),n}),n.eventTrack("Tracked Content View","Content",f.url()))}function a(){e.browserHidden||e.trackBrowserActiveSeconds++}function v(){e.trackDurationCount>=360||(t.postContentUserViewDuration({alias:e.content.alias,sessionId:n.storage.session,referenceId:e.trackReference,activeSeconds:e.trackBrowserActiveSeconds}),e.trackDurationCount++)}function y(){i.$on("user:logout",function(){h()});i.$on("user:login",function(){h()});i.$on("form:submitted",function(){h()})}var e={};i.vm=e;e.loaded=!1;e.content=i.content;e.trustAsHtml=r.trustAsHtml;e.trackDurationBrowserActiveListener=null;e.common=n;e.auth=u;e.currentDateTime=moment.utc();e.moment=moment;e.trackTimer=null;e.trackBrowserActiveTimer=null;l()}return{restrict:"E",scope:{content:"=content"},templateUrl:"/app/content/appContentDetail.html?v="+_ttvVersion,link:{pre:h}}}angular.module("app.content").directive("appContentDetail",n);n.$inject=["common","ContentData","$timeout","$sce","auth","$location","$rootScope","forms","$interval"]}(),function(){"use strict";function n(n,t,i,r,u,f,e){function o(f){function l(){window.scrollTo(0,0);o.query={primaryTagAlias:o.tag,pageSize:o.pageSize};s(!0);v();e.onscroll=n.debounce(a,500);f.$on("$destroy",function(){e.onscroll=null})}function a(){var n=$(window).scrollTop()-60;$(".scroll-track").children("app-content-card").each(function(t){if($(this).offset().top>n)return o.scrollTrackId=t!=0||o.moreAbove?$(this).data("scroll-track-id"):null,!1});f.$apply(function(){r.search("i",o.scrollTrackId);r.replace()})}function c(i){var r=angular.copy(o.query);return i!=null&&(r.sortOrderLessThan=i),t.getContentIndexRequest(r).then(function(n){return(o.busy=!1,o.loaded=!0,o.moreBelow=n.content.length==o.pageSize,n.content.length==0)?n:(o.pages++,angular.forEach(n.content,function(n){n.rowId=o.pages+"_"+n.alias}),o.content=o.content.concat(Enumerable.From(n.content).Where(function(n){return n.alias!=o.excludeitem}).ToArray()),o.bottomSortOrder=n.content[n.content.length-1].sortOrder,n)},function(t){o.busy=!1;n.logger.error("Couldn't retrieve content list",t)})}function v(){f.$on("$routeUpdate",function(){s()})}function s(n){var t,f,e;r.path()!=h||o.busy||(t=r.search(),!n&&o.loaded&&angular.equals(t.t,o.search.t)&&angular.equals(t.from,o.search.from)&&angular.equals(t.to,o.search.to))||(!o.loaded&&t.i?(o.query.startAtAlias=t.i,o.moreAbove=!0):(o.moreAbove=!1,delete o.query.startAtAlias),o.query.tags=t.t&&t.t.length>0?angular.isArray(t.t)?t.t:[t.t]:[],t.from?(f=moment.utc(t.from,"YYYYMM").startOf("month"),o.query.from=f.format("YYYY-MM-DD")):(f=moment.utc("2015-06-01").startOf("month"),o.query.from=f.format("YYYY-MM-DD")),t.to?(e=moment.utc(t.to,"YYYYMM").endOf("month"),o.query.to=e.format("YYYY-MM-DD")):(e=moment.utc().endOf("month"),o.query.to=e.format("YYYY-MM-DD")),o.search=angular.copy(t),i.current.data.query=o.query,u.$broadcast("content.search"),o.content=[],o.busy=!0,o.pages=0,c())}function y(){r.search("i",null);s(!0)}function p(){!o.busy&&o.loaded&&o.moreBelow&&o.content.length!=0&&(o.busy=!0,c(o.bottomSortOrder))}var o={},h;f.vm=o;o.tag=f.tag;o.overridealias=f.overridealias;o.excludeitem=f.excludeitem;o.loaded=!1;o.busy=!1;o.query={};o.content=[];o.search={};o.moreAbove=!1;o.moreBelow=!1;o.pages=0;o.pageSize=25;o.backToTop=y;o.loadMoreItems=p;h=r.path();l()}return{restrict:"E",scope:{tag:"=tag",overridealias:"=overridealias",excludeitem:"=excludeitem"},templateUrl:"/app/content/appContentIndex.html?v="+_ttvVersion,link:{pre:o}}}angular.module("app.content").directive("appContentIndex",n);n.$inject=["common","ContentData","$route","$location","$rootScope","$document","$window"]}(),function(){"use strict";function n(){function n(n){function i(){t.url=t.content.stub?t.content.stubUrl:"/content/{0}/{1}/".format(t.overridealias!=null?t.overridealias:t.content.primaryTag.alias,t.content.alias);t.loaded=!0}var t={};n.vm=t;t.content=n.content;t.overridealias=n.overridealias;t.options=n.options;t.loaded=!1;i()}return{restrict:"E",scope:{content:"=content",overridealias:"=overridealias",options:"=options"},templateUrl:"/app/content/appContentInlineCompact.html?v="+_ttvVersion,link:{pre:n}}}angular.module("app.content").directive("appContentInlineCompact",n);n.$inject=[]}(),function(){"use strict";function n(n,t,i){function r(r){function e(){u.mode=="list"?(u.query==null?u.query={alias:u.alias,pageSize:u.excludeitem!=null?u.pageSize+1:u.pageSize}:u.query.pageSize=u.excludeitem!=null?u.query.pageSize+1:u.query.pageSize||10,o()):u.mode=="content"&&(u.query==null?u.query={tags:[u.alias],pageSize:u.excludeitem!=null?u.pageSize+1:u.pageSize}:u.query.pageSize=u.excludeitem!=null?u.query.pageSize+1:u.query.pageSize||10,u.busy=!0,f())}function o(){return i.getListIndexRequest(u.query).then(function(n){return u.content=n,u.loaded=!0,n},function(t){n.logger.error("Couldn't retrieve list",t)})}function f(i){var r=angular.copy(u.query);return i!=null&&(r.sortOrderLessThan=i,delete r.skip),t.getContentIndexRequest(r).then(function(n){if(u.busy=!1,u.loaded=!0,u.moreBelow=n.content.length==u.query.pageSize,n.content.length==0)return n;var t=u.excludeitem!=null?u.query.pageSize-1:u.query.pageSize;return u.content=u.content.concat(Enumerable.From(n.content).Where(function(n){return n.alias!=u.excludeitem}).Take(t).ToArray()),u.pages++,u.bottomSortOrder=n.content[n.content.length-1].sortOrder,n},function(t){n.logger.error("Couldn't retrieve content list",t)})}function s(){!u.busy&&u.loaded&&u.moreBelow&&u.content.length!=0&&(u.busy=!0,f(u.bottomSortOrder))}var u={};r.vm=u;u.mode=r.mode;u.layout=r.layout;u.options=r.options;u.alias=r.alias;u.query=r.query;u.pagination=r.pagination;u.pageSize=r.pageSize||10;u.overridealias=r.overridealias;u.excludeitem=r.excludeitem;u.busy=!1;u.loaded=!1;u.content=[];u.moreBelow=!1;u.pages=0;u.bottomSortOrder=null;u.loadMoreItems=s;e()}return{restrict:"E",scope:{mode:"@mode",layout:"@layout",options:"=options",query:"=query",alias:"=alias",pageSize:"@pageSize",pagination:"@pagination",overridealias:"=overridealias",excludeitem:"=excludeitem"},templateUrl:"/app/content/appContentList.html?v="+_ttvVersion,link:{pre:r}}}angular.module("app.content").directive("appContentList",n);n.$inject=["common","ContentData","ListData","$route","$location","$rootScope"]}(),function(){"use strict";function n(n,t,i,r,u){function f(f){function o(){}function s(){if((e.questionSent=!1,f.$broadcast("show-errors-check-validity"),f.questionForm.$valid)&&e.question.name&&e.question.body&&e.question.body.length<=1e3){var o={alias:f.alias,name:e.question.name,body:e.question.body,url:r.url()};return i.authorised()?o.sessionId=n.storage.session:o.email=e.question.email,n.eventTrack("Submit Question","Question",f.alias),t.postQuestion(o).then(function(t){return e.questionSent=!0,e.question.body="",f.$broadcast("show-errors-reset"),i.authorised()||t.sessionId===null||(i.startSession(t.sessionId,e.question.email),n.storage.session!==null&&(u.$broadcast("user:login"),n.eventTrack("Sign In","User","via Question Module",r.url()))),t},function(){n.logger.error("Sorry, there was a problem posting your question. Please try again.")})}}function h(){e.questionSent=!1}var e={};f.vm=e;e.questionSent=!1;e.question={};e.postQuestion=s;e.questionReset=h;e.common=n;e.auth=i;o()}return{restrict:"E",scope:{alias:"=alias"},templateUrl:"/app/content/appContentQuestion.html?v="+_ttvVersion,link:{pre:f}}}angular.module("app.content").directive("appContentQuestion",n);n.$inject=["common","QuestionData","auth","$location","$rootScope"]}(),function(){"use strict";function n(){function n(n){function i(){r()}function r(){n.$watch("data",function(n){t.data=n})}var t={};n.vm=t;t.layout=n.layout;t.options=n.options;t.data=n.data;t.overridealias=n.overridealias;i()}return{restrict:"E",scope:{layout:"=layout",options:"=options",data:"=data",overridealias:"=overridealias"},templateUrl:"/app/content/appContentRepeater.html?v="+_ttvVersion,link:{pre:n}}}angular.module("app.content").directive("appContentRepeater",n);n.$inject=["common","ContentData","ListData","$route","$location","$rootScope"]}(),function(){"use strict";function n(n,t){function i(i){function u(){f()}function f(){return t.getList().then(function(n){return r.tags=n,r.loaded=!0,n},function(t){n.logger.error("Couldn't retrieve tag list",t)})}var r={};i.vm=r;r.loaded=!1;r.tags=null;u()}return{restrict:"E",scope:{},templateUrl:"/app/content/appTagList.html?v="+_ttvVersion,link:{pre:i}}}angular.module("app.content").directive("appTagList",n);n.$inject=["common","TagData"]}(),function(){"use strict";function n(){function n(n){function i(){t.tags=Enumerable.From(t.data).Where(function(n){return n.type==t.sectionType}).OrderBy(function(n){return n.shortTitle.toLowerCase()}).ToArray();t.loaded=!0}var t={};n.vm=t;t.data=n.data;t.sectionType=n.sectionType;t.sectionTitle=n.sectionTitle;t.loaded=!1;i()}return{restrict:"E",scope:{data:"=data",sectionType:"@sectionType",sectionTitle:"@sectionTitle"},templateUrl:"/app/content/appTagListSection.html?v="+_ttvVersion,link:{pre:n}}}angular.module("app.content").directive("appTagListSection",n);n.$inject=["common","TagData"]}(),function(){"use strict";function n(n,t,i,r,u,f,e){function s(){h()}function h(){return e.getTagExists(i.tag).then(function(t){return n.current.data={tag:i.tag},o.include="/layout/tag/"+i.tag+"/detail/",o.loaded=!0,t},function(){u.logger.error("Tag not found")})}var o=this;o.include=null;o.loaded=!1;s()}angular.module("app.content").controller("ContentDetail",n);n.$inject=["$route","$location","$routeParams","$sce","common","config","TagData"]}(),function(){"use strict";function n(n,t,i,r,u,f,e,o,s,h){function l(){a()}function a(){return e.getContent(c.tagAlias,c.alias,c.preview).then(function(t){if(t.content.stub){if(t.content.sourceUrl!=null){h.location.href=t.content.sourceUrl;return}h.location.href="/";return}if(t.tag.redirectDetailUrl!=null){h.location.href=t.tag.redirectDetailUrl+c.alias+"/";return}return c.tag=t.tag,c.content=t.content,n.current.data={tag:i.tag,alias:i.alias},n.current.meta={title:c.content.title},c.tag.attributes=JSON.parse(c.tag.attributes),c.tag.attributes!=null&&c.tag.attributes.bg!=null&&(n.current.meta.bg=c.tag.attributes.bg),c.tag.attributes!=null&&c.tag.attributes.section!=null&&(n.current.meta.section=c.tag.attributes.section),o.$broadcast("route.meta.changed"),s.setDocTitle(c.content.title),u.pageTrack(),c.loaded=!0,t},function(n){u.logger.error("Couldn't retrieve content item",n)})}var c=this;c.loaded=!1;c.tag=null;c.content=null;c.tagAlias=i.tag;c.alias=i.alias;c.preview=t.search().preview;l()}angular.module("app.content").controller("ContentDetailLayout",n);n.$inject=["$route","$location","$routeParams","$sce","common","config","ContentData","$rootScope","routehelper","$window"]}(),function(){"use strict";function n(n,t,i,r,u,f,e){function s(){h()}function h(){return e.getTagExists(o.tag).then(function(t){return n.current.data={tag:o.tag},o.include=o.layout!=null?"/layout/"+o.layout+"/":"/layout/tag/"+o.tag+"/index/",o.loaded=!0,t},function(){u.logger.error("Tag not found:",o.tag)})}var o=this;o.include=null;o.loaded=!1;o.tag=i.tag||"home";o.layout=i.layout;s()}angular.module("app.content").controller("ContentIndex",n);n.$inject=["$route","$location","$routeParams","$sce","common","config","TagData"]}(),function(){"use strict";function n(n,t,i,r,u,f,e,o,s,h){function l(){a()}function a(){return e.getTag(c.alias).then(function(t){if(t.redirectIndexUrl!=null){h.location.href=t.redirectIndexUrl;return}return c.tag=t,n.current.data={tag:c.alias},n.current.meta={title:c.tag.title},c.tag.attributes=JSON.parse(c.tag.attributes),c.tag.attributes!=null&&c.tag.attributes.bg!=null&&(n.current.meta.bg=c.tag.attributes.bg),c.tag.attributes!=null&&c.tag.attributes.section!=null&&(n.current.meta.section=c.tag.attributes.section),s.$broadcast("route.meta.changed"),o.setDocTitle(c.tag.title),u.pageTrack(),c.loaded=!0,t},function(){t.path("/error/404/").replace()})}var c=this;c.loaded=!1;c.tag={};c.alias=i.tag||"home";c.tagAlias=c.alias;c.view=n.current.view||"default";l()}angular.module("app.content").controller("ContentIndexLayout",n);n.$inject=["$route","$location","$routeParams","$sce","common","config","TagData","routehelper","$rootScope","$window"]}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngRoute","ngResource","ngSanitize","blocks.auth","blocks.exception","blocks.forms","blocks.logger","blocks.router","blocks.time","angular-loading-bar","angularDfp","angulartics","angulartics.google.analytics","chart.js","infinite-scroll","validation.match"])}(),function(){"use strict";function n(n){function r(n,r){var u=i[n];return u?(new Date).getTime()-u>r?(delete t[n],delete i[n],null):t[n]:null}function u(n,r,u){t[n]=u;i[n]=(new Date).getTime();return}var t=n("app"),i={},t={};return{get:r,put:u}}angular.module("app.core").factory("cache",n);n.$inject=["$cacheFactory"]}(),function(){"use strict";function n(n){var t={};return{request:function(i){var r;return i.timeToLive&&(i.cache=!0,r=i.timeToLive,delete i.timeToLive,(new Date).getTime()-(t[i.url]||0)>r&&(n.get("$http").remove(i.url),t[i.url]=(new Date).getTime())),i}}}angular.module("app.core").factory("cacheInterceptor",n);n.$inject=["$cacheFactory"]}(),function(){"use strict";function n(n,t,i,r,u,f,e,o,s,h,c){function v(){$.get("/app/splash.txt?v="+_ttvVersion,function(n){var t=n.replace("yyyy",(new Date).getFullYear())+"\n";t+="\nVersion:     "+_ttvVersion;t+="\nTimestamp:   "+new Date;t+="\nUser Agent:  "+navigator.userAgent;u.log(t)});document.addEventListener("visibilitychange",function(){i.$broadcast("document:visibilitychange",document.hidden,document.visibilityState)})}function y(){r(function(){return i.$broadcast.apply(i,arguments)},200)}function p(n,t,i,u,f){f=+f||300;i||(i="filtered"+t[0].toUpperCase()+t.substr(1).toLowerCase(),u=t+"Filter");var e=function(){n[i]=n[t].filter(function(t){return n[u](t)})};return function(){var n;return function(t){n&&(r.cancel(n),n=null);t||!f?e():n=r(e,f)}}()}function w(n,t,i,u){i=i||1e3;l[n]&&(r.cancel(l[n]),l[n]=undefined);u?t():l[n]=r(t,i)}function b(n){return/^[-]?\d+$/.test(n)}function k(n,t){return n&&-1!==n.toLowerCase().indexOf(t.toLowerCase())}function d(n){return window.btoa(unescape(encodeURIComponent(n)))}function g(){e.pageTrack(n.url())}function nt(n,t,i,r){e.eventTrack(n,{category:t,label:i,value:r})}function tt(n,t,i){var r;return function(){var u=this,f=arguments,e=function(){r=null;i||n.apply(u,f)},o=i&&!r;clearTimeout(r);r=setTimeout(e,t);o&&n.apply(u,f)}}var l={},a={$broadcast:y,$q:t,$timeout:r,createSearchThrottle:p,debouncedThrottle:w,isNumber:b,logger:u,storage:f,textContains:k,toBase64:d,pageTrack:g,eventTrack:nt,$analytics:e,session:h,cache:c,debounce:tt,config:{assetsUrl:_ttvAssetsUrl}};return v(),a}angular.module("app.core").factory("common",n);n.$inject=["$location","$q","$rootScope","$timeout","logger","$localStorage","$analytics","$interval","$window","$sessionStorage","cache"]}(),function(){"use strict";function i(n,i,r,u,f,e,o,s,h,c){function l(){e.options.timeOut=1e4;e.options.extendedTimeOut=1e4;e.options.positionClass="toast-bottom-center";e.options.closeButton=!0;e.options.showMethod="slideDown";e.options.hideMethod="fadeOut";e.options.preventDuplicates=!0;e.options.tapToDismiss=!1;e.options.hideDuration=500}function a(){n.debugEnabled&&n.debugEnabled(!0)}function v(){u.config.appErrorPrefix=t.appErrorPrefix}function y(){var n=f;n.config.$routeProvider=i;n.config.docTitle="TelecomTV ";r.html5Mode(!0)}function p(){o.interceptors.push("cacheInterceptor")}function w(){s.latencyThreshold=500}function b(){h.firstPageview(!1);h.withAutoBase(!0);h.virtualPageviews(!1)}function k(){angular.module("infinite-scroll").value("THROTTLE_MILLISECONDS",250)}function d(){c.setOptions({colours:["#1B587C"],responsive:!0,maintainAspectRatio:!1,tooltips:{bodyFontFamily:"'Open Sans', 'Helvetica Neue', Arial, sans-serif",titleFontFamily:"'Open Sans', 'Helvetica Neue', Arial, sans-serif"}});c.setOptions("Bar",{barShowStroke:!1,barValueSpacing:2,barPercentage:1});c.setOptions("Line",{datasetFill:!1,datasetStrokeWidth:3,pointDotRadius:5,pointDotStrokeWidth:2});c.setOptions("Doughnut",{animationSteps:60,animationEasing:"easeOutQuart",percentageInnerCutout:45,maintainAspectRatio:!0,tooltipTemplate:"<%if (label){%><%=label%>: <%}%><%= value %> (<%= Math.round(circumference / 6.283 * 100) %>%)",segmentShowStroke:!0,segmentStrokeWidth:3})}l();a();v();y();p();w();b();k();d()}var n=angular.module("app.core"),t={appErrorPrefix:"[TTV Error] ",events:{controllerActivateSuccess:"controller.activateSuccess"},imageSettings:{imageBasePath:"/assets/"},keyCodes:{backspace:8,tab:9,enter:13,esc:27,space:32,pageup:33,pagedown:34,end:35,home:36,left:37,up:38,right:39,down:40,insert:45,del:46},version:_ttvVersion};n.constant("config",t);n.config(i);i.$inject=["$logProvider","$routeProvider","$locationProvider","exceptionConfigProvider","routehelperConfigProvider","toastr","$httpProvider","cfpLoadingBarProvider","$analyticsProvider","ChartJsProvider"]}(),function(){"use strict";angular.module("app.core").constant("moment",moment).constant("toastr",toastr).constant("Constant",{timeToLive:12e4,timeToLiveOneMinute:6e4,timeToLiveTenSeconds:1e4})}(),function(){"use strict";function n(n,t,i,r){function f(){return n.get(u+"/app/utc").then(function(n){return n.data}).catch(function(n){return r.reject(n)})}var u=_ttvApiUrl;return{getUtc:f}}angular.module("app.core").factory("AppData",n);n.$inject=["$http","exception","$location","$q","Constant"]}(),function(){"use strict";function n(n,t,i){function u(u){return n.get(r+"/content?query="+JSON.stringify(u),{cache:!0,timeToLive:i.timeToLive}).then(function(n){return n.data}).catch(function(n){return t.reject(n)})}function f(u,f,e){var o=r+"/content/"+u+"/"+f;return e&&(o=o+"?preview="+e),n.get(o,{cache:!0,timeToLive:i.timeToLive}).then(function(n){return n.data}).catch(function(n){return t.reject(n)})}function e(i){return n.post(r+"/content/view",i).then(function(n){return n.data}).catch(function(n){return t.reject(n)})}function o(i){return n.post(r+"/content/duration",i).then(function(n){return n.data}).catch(function(n){return t.reject(n)})}var r=_ttvApiUrl;return{getContentIndexRequest:u,getContent:f,postContentUserView:e,postContentUserViewDuration:o}}angular.module("app.core").factory("ContentData",n);n.$inject=["$http","$q","Constant"]}(),function(){"use strict";function n(n,t,i,r){function f(t){return n.get(u+"/form/"+t,{cache:!0,timeToLive:r.timeToLive}).then(function(n){return n.data}).catch(function(n){return i.reject(n)})}function e(t,r){return n.post(u+"/form/"+t+"/exists",{sessionId:r}).then(function(n){return n.data}).catch(function(n){return i.reject(n)})}function o(t,r){return n.post(u+"/form/"+t+"/existsemail",r).then(function(n){return n.data}).catch(function(n){return i.reject(n)})}function s(t,r){return n.post(u+"/form/"+t,r).then(function(n){return n.data}).catch(function(n){return i.reject(n)})}var u=_ttvApiUrl;return{getForm:f,postFormSubmissionExists:e,postFormSubmissionExistsByEmail:o,postFormSubmission:s}}angular.module("app.core").factory("FormData",n);n.$inject=["$http","exception","$q","Constant"]}(),function(){"use strict";function n(n,t,i,r,u,f){function o(t){return n.get(e+"/list?query="+JSON.stringify(t),{cache:!0,timeToLive:f.timeToLive}).then(function(n){return n.data}).catch(function(n){return r.reject(n)})}var e=_ttvApiUrl;return{getListIndexRequest:o}}angular.module("app.core").factory("ListData",n);n.$inject=["$http","exception","$location","$q","common","Constant"]}(),function(){"use strict";function n(n,t,i,r,u){function e(t){return t=t!==null?"/"+t:"",n.get(f+"/notification"+t,{cache:!0,timeToLive:u.timeToLiveOneMinute}).then(function(n){return n.data}).catch(function(n){return r.reject(n)})}var f=_ttvApiUrl;return{getNotification:e}}angular.module("app.core").factory("NotificationData",n);n.$inject=["$http","exception","$location","$q","Constant"]}(),function(){"use strict";function n(n,t,i,r,u){function e(t){return n.get(f+"/page/"+t,{cache:!0,timeToLive:u.timeToLive}).then(function(n){return n.data}).catch(function(n){return r.reject(n)})}var f=_ttvApiUrl;return{getPage:e}}angular.module("app.core").factory("PageData",n);n.$inject=["$http","exception","$location","$q","Constant"]}(),function(){"use strict";function n(n,t,i){function u(u){return n.get(r+"/poll/"+u,{cache:!0,timeToLive:i.timeToLiveTenSeconds}).then(function(n){return n.data}).catch(function(n){return t.reject(n)})}function f(i){return n.post(r+"/poll",i).then(function(n){return n.data}).catch(function(n){return t.reject(n)})}var r=_ttvApiUrl;return{getPoll:u,postPollVote:f}}angular.module("app.core").factory("PollData",n);n.$inject=["$http","$q","Constant"]}(),function(){"use strict";function n(n,t,i,r){function f(t){return n.post(u+"/questions",t).then(function(n){return n.data}).catch(function(n){return r.reject(n)})}var u=_ttvApiUrl;return{postQuestion:f}}angular.module("app.core").factory("QuestionData",n);n.$inject=["$http","exception","$location","$q"]}(),function(){"use strict";function n(n,t,i,r,u,f){function o(t){var i="/reports/summary|"+JSON.stringify(t).hashCode(),o=f.cache.get(i,u.timeToLive);return o!=null?r(function(n){n(o)}):n.post(e+"/reports/summary",t).then(function(n){return f.cache.put(i,u.timeToLive,n.data),n.data}).catch(function(n){return r.reject(n)})}function s(t){var i="/reports/analyse|"+JSON.stringify(t).hashCode(),o=f.cache.get(i,u.timeToLive);return o!=null?r(function(n){n(o)}):n.post(e+"/reports/analyse",t).then(function(n){return f.cache.put(i,u.timeToLive,n.data),n.data}).catch(function(n){return r.reject(n)})}function h(t){var i="/reports/analyse/excel|"+JSON.stringify(t).hashCode(),o=f.cache.get(i,u.timeToLive);return o!=null?r(function(n){n(o)}):n.post(e+"/reports/analyse/excel",t).then(function(n){return f.cache.put(i,u.timeToLive,n.data),n.data}).catch(function(n){return r.reject(n)})}var e=_ttvApiUrl;return{postReportSummary:o,postReportAnalyse:s,postReportAnalyseExcel:h}}angular.module("app.core").factory("ReportData",n);n.$inject=["$http","exception","$location","$q","Constant","common"]}(),function(){"use strict";function n(n,t,i,r,u){function f(t,i,f){return n.get("https://www.googleapis.com/customsearch/v1/siterestrict?key=AIzaSyDscbdZNPCe20vMTMoFOMpOsttRjv5Xzcc&cx=003589148450028900067:swglom-1wtk&q={0}&start={1}&sort={2}".format(t,i,f),{cache:!0,timeToLive:u.timeToLive}).then(function(n){return n.data}).catch(function(n){return r.reject(n)})}var e=_ttvApiUrl;return{getSearch:f}}angular.module("app.core").factory("SearchData",n);n.$inject=["$http","exception","$location","$q","Constant"]}(),function(){"use strict";function n(n,t,i,r,u){function e(t){return n.get(f+"/tag/"+t,{cache:!0,timeToLive:u.timeToLive}).then(function(n){return n.data}).catch(function(n){return r.reject(n)})}function o(t){return n.get(f+"/tag/"+t+"/exists",{cache:!0,timeToLive:u.timeToLive}).then(function(n){return n.data}).catch(function(n){return r.reject(n)})}function s(){return n.get(f+"/tag/list",{cache:!0,timeToLive:u.timeToLive}).then(function(n){return n.data}).catch(function(n){return r.reject(n)})}var f=_ttvApiUrl;return{getTag:e,getTagExists:o,getList:s}}angular.module("app.core").factory("TagData",n);n.$inject=["$http","exception","$location","$q","Constant"]}(),function(){"use strict";function n(n,t,i,r){function f(){return n.get(u+"/user/countries",{cache:!0,timeToLive:r.timeToLive}).then(function(n){return n.data}).catch(function(n){return i.reject(n)})}function e(){return n.get(u+"/user/companytypes",{cache:!0,timeToLive:r.timeToLive}).then(function(n){return n.data}).catch(function(n){return i.reject(n)})}function o(t,r){return n.post(u+"/user/login",{email:t,url:r}).then(function(n){return n.data}).catch(function(n){return i.reject(n)})}function s(t,r){return n.put(u+"/user/tokenlogin",{token:t,url:r}).then(function(n){return n.data}).catch(function(n){return i.reject(n)})}function h(t){return n.post(u+"/user/logout",{sessionId:t}).then(function(n){return n.data}).catch(function(n){return i.reject(n)})}function c(t){return n.post(u+"/user",t).then(function(n){return n.data}).catch(function(n){return i.reject(n)})}function l(t){return n.post(u+"/user/subscribe",t).then(function(n){return n.data}).catch(function(n){return i.reject(n)})}var u=_ttvApiUrl;return{getCountries:f,getCompanyTypes:e,postLogin:o,putTokenLogin:s,postLogout:h,postRegister:c,postSubscribe:l}}angular.module("app.core").factory("UserData",n);n.$inject=["$http","exception","$q","Constant"]}(),function(){"use strict";function n(n,t,i,r,u){function e(t){return n.get(f+"/video/"+t,{cache:!0,timeToLive:u.timeToLiveTenSeconds}).then(function(n){return n.data}).catch(function(n){return r.reject(n)})}var f=_ttvApiUrl;return{getVideo:e}}angular.module("app.core").factory("VideoData",n);n.$inject=["$http","exception","$location","$q","Constant"]}(),function(){"use strict";angular.module("app.elements",[])}(),function(){"use strict";function n(n){function t(t){function r(){(i.tag==""||i.tag==null)&&(i.tag="null");n()}var i={};t.vm=i;i.layout=t.layout;i.adUnit=t.adUnit;i.tag=t.tag;r()}return{restrict:"E",scope:{layout:"@layout",adUnit:"@adUnit",tag:"=tag"},templateUrl:"/app/elements/appAd.html?v="+_ttvVersion,link:{pre:t}}}angular.module("app.elements").directive("appAd",n);n.$inject=["dfp","common","$timeout","$rootScope"]}(),function(){"use strict";function n(){function n(n){var t={};n.vm=t;t.alias=n.alias}return{restrict:"E",scope:{alias:"@alias"},templateUrl:"/app/elements/appAddToCalendar.html?v="+_ttvVersion,link:{pre:n}}}angular.module("app.elements").directive("appAddToCalendar",n);n.$inject=[]}(),function(){"use strict";function n(n){function t(t){function r(){ga("send","event","Banner Impression",i.bannerReference,i.bannerPosition+" | "+i.imgSrc,{nonInteraction:!0})}function u(){n.eventTrack(i.bannerReference,"Banner Click",i.bannerPosition+" | "+i.linkHref)}var i={};t.vm=i;i.linkHref=t.linkHref;i.linkTarget=t.linkTarget;i.imgSrc=t.imgSrc;i.imgClass=t.imgClass;i.bannerPosition=t.bannerPosition;i.bannerReference=t.bannerReference;i.click=u;r()}return{restrict:"E",scope:{linkHref:"@linkHref",linkTarget:"@linkTarget",imgSrc:"@imgSrc",imgClass:"@imgClass",bannerPosition:"@bannerPosition",bannerReference:"@bannerReference"},templateUrl:"/app/elements/appBanner.html?v="+_ttvVersion,link:{pre:t}}}angular.module("app.elements").directive("appBanner",n);n.$inject=["common"]}(),function(){"use strict";function n(n,t,i,r,u,f,e){function o(o){function p(){g();w();c()}function w(){return t.getForm(s.alias).then(function(n){return s.form=n,s.form.fields!==null&&(s.form.fields=JSON.parse(s.form.fields).fields),s.form.config!==null&&(s.form.config=JSON.parse(s.form.config)),s.form.config.header!==undefined&&(s.header=s.form.config.header),s.form.config.headerConfirmation!==undefined&&(s.headerConfirmation=s.form.config.headerConfirmation),s.form.config.footer!==undefined&&(s.footer=s.form.config.footer),s.form.config.submitted!==undefined&&(s.submittedText=s.form.config.submitted),s.form.config.alreadySubmitted!==undefined&&(s.alreadySubmittedText=s.form.config.alreadySubmitted),l(),s.loaded=!0,n},function(){s.notFound=!0})}function c(){u.$broadcast("app-form-reset-validation-errors");o.$broadcast("show-errors-reset");s.signInView=!1;s.submitted=!1;s.alreadySubmitted=!1;l();v()}function l(){s.email=s.common.storage.profile.email;angular.forEach(s.form.fields,function(n){n.value=n.name==="firstName"?s.common.storage.profile.firstName:n.name==="lastName"?s.common.storage.profile.lastName:n.name==="company"?s.common.storage.profile.company:n.name==="companyType"?s.common.storage.profile.companyType:n.name==="jobTitle"?s.common.storage.profile.jobTitle:n.name==="country"?s.common.storage.profile.country:null;(typeof n.value=="undefined"||n.value==null)&&(n.value=n.type==="checkbox"?!1:"")})}function b(){i.logoutNoRedirect()}function k(){u.$broadcast("app-form-reset-validation-errors");o.$broadcast("show-errors-reset");s.signInView=!0}function a(){u.$broadcast("app-form-reset-validation-errors");o.$broadcast("show-errors-reset");s.signInView=!1}function v(){return e.checkAlreadySubmitted(s.alias).then(function(t){s.alreadySubmitted=t;s.alreadySubmitted&&n.eventTrack("Already Submitted","Form",s.alias,r.url())})}function y(){if(!s.submitted&&!s.busy){if(s.busy=!0,s.error=null,o.$broadcast("show-errors-check-validity"),!s.formSubmission.$valid){s.busy=!1;s.error="validation";return}var f={email:s.email,url:r.url()};return t.postFormSubmissionExistsByEmail(s.alias,f).then(function(t){return a(),t.sessionId!==null&&(i.startSession(t.sessionId,s.email),n.storage.session!==null&&(u.$broadcast("user:login"),t.alreadySubmitted?n.logger.successAlert(s.form.config.alertSignedInAlreadySubmitted||"Thanks - you're signed in and registered"):n.logger.successAlert(s.form.config.alertSignedInNotSubmitted||"Thanks - we've signed you in but you're not yet registered. Please complete the registration form"),n.eventTrack("Sign In","User","via Form Login",r.url()),s.success=!0)),s.alreadySubmitted=t.alreadySubmitted,s.alreadySubmitted&&(e.setAsSubmitted(s.alias),n.eventTrack("Already Submitted by Email","Form",s.alias,r.url())),s.busy=!1,h(),t},function(){n.logger.errorAlert("Sorry, there was a problem submitting your information. Please try again.");s.busy=!1;h()})}}function d(){var f,c;if(s.signInView)return y();if(!s.submitted&&!s.busy){if(s.busy=!0,s.error=null,u.$broadcast("app-form-show-validation-errors"),o.$broadcast("show-errors-check-validity"),s.valid=!0,f={},angular.forEach(s.form.fields,function(n){if(n.type==="checkbox"||n.type==="text"||n.type==="textarea"||n.type==="select"||n.type==="country"||n.type==="companyType"){n.valid||(s.valid=!1);var t={};t[n.name]=n.value;angular.extend(f,t)}}),!s.formSubmission.$valid||!s.valid){s.busy=!1;s.error="validation";return}return s.common.storage.session===null||i.authorisedAsEmail(s.email)||(i.endSession(),i.updateProfileEmail(s.email)),c={email:s.email,formData:f,url:r.url()},i.authorised()&&(c.sessionId=n.storage.session),t.postFormSubmission(s.alias,c).then(function(t){return t.sessionId!==null?(i.startSession(t.sessionId,s.email),e.setAsSubmitted(s.alias),i.updateProfileFields(f),n.storage.session!==null&&n.eventTrack("Sign In","User","via Form Submission",r.url()),n.logger.successAlert(s.form.config.alertSubmittedAndLoggedIn||"Thanks - you're now registered and signed in")):(n.logger.successAlert(s.form.config.alertSubmitted||"Thanks - you're now registered"),e.setAsSubmitted(s.alias),i.updateProfileFields(f)),s.submitted=!0,s.busy=!1,n.eventTrack("Submitted","Form",s.alias,r.url()),u.$broadcast("form:submitted"),s.success=!0,h(),t},function(){n.logger.errorAlert("Sorry, there was a problem submitting your information. Please try again.");s.busy=!1;h()})}}function g(){o.$on("user:logout",function(){c()});o.$on("user:login",function(){c()})}function h(){var t=$(document).scrollTop(),i=$("app-form"),n;typeof i!="undefined"&&((n=Math.max(0,$("app-form").offset().top-200),t<n)||$("html, body").animate({scrollTop:n},800))}var s={};o.vm=s;s.loaded=!1;s.busy=!1;s.notFound=!1;s.submitted=!1;s.alreadySubmitted=!1;s.signInView=!1;s.valid=!0;s.error=null;s.alias=o.alias;s.header="";s.headerConfirmation="";s.footer='<p><a href="/pages/privacy/" class="underline" target="_blank">Privacy policy<\/a><\/p>';s.submittedText="<p>Thank you for registering!<\/p>";s.alreadySubmittedText="<p>Thank you - you're already registered!<\/p>";s.form={};s.checkAlreadySubmitted=v;s.checkAlreadySubmittedByEmail=y;s.submit=d;s.trustAsHtml=f.trustAsHtml;s.logoutAndClearData=b;s.startSignIn=k;s.endSignIn=a;s.common=n;s.auth=i;p()}return{restrict:"E",scope:{alias:"@alias",layout:"@layout"},templateUrl:function(n,t){return t.layout||"/app/elements/appForm.html?v="+_ttvVersion},link:{pre:o}}}angular.module("app.elements").directive("appForm",n);n.$inject=["common","FormData","auth","$location","$rootScope","$sce","forms"]}(),function(){"use strict";function n(n,t){function i(i){function f(){i.$on("app-form-show-validation-errors",function(){u()});i.$on("app-form-reset-validation-errors",function(){e()});r.field.type==="checkbox"?r.field.valid=!0:r.field.type==="text"||r.field.type==="textarea"||r.field.type==="select"?r.field.valid=r.field.required?null:!0:r.field.type==="country"?(o(),r.field.valid=r.field.required?null:!0):r.field.type==="companyType"&&(s(),r.field.valid=r.field.required?null:!0)}function u(){(r.field.type==="text"||r.field.type==="textarea"||r.field.type==="select"||r.field.type==="country"||r.field.type==="companyType")&&r.field.required&&(r.field.valid=r.field.value!==undefined&&r.field.value!==null&&r.field.value.length>0?!0:!1);r.field.type==="checkbox"&&r.field.required&&r.field.value!==undefined&&r.field.value!==null&&(r.field.valid=r.field.value)}function e(){r.field.valid=!0}function o(){t.getCountries().then(function(n){r.countries=n})}function s(){t.getCompanyTypes().then(function(n){r.companyTypes=n})}var r={};i.vm=r;r.field=i.field;r.trustAsHtml=n.trustAsHtml;r.validate=u;r.countries=null;r.companyTypes=null;f()}return{restrict:"E",scope:{field:"=field"},templateUrl:"/app/elements/appFormField.html?v="+_ttvVersion,link:{pre:i}}}angular.module("app.elements").directive("appFormField",n);n.$inject=["$sce","UserData"]}(),function(){"use strict";function n(n,t,i,r){function u(u){function h(){f.voted=f.common.storage.pollsVoted!==null&&Array.isArray(f.common.storage.pollsVoted)&&f.common.storage.pollsVoted.includes(f.pollId);s();u.$on("$destroy",function(){e&&r.cancel(e)})}function s(){return t.getPoll(f.pollId).then(function(n){o++;f.poll=n;try{f.poll.config=JSON.parse(f.poll.config)}catch(t){f.poll.config={}}return f.poll.config===null&&(f.poll.config={}),f.canVote=!f.voted&&f.poll.votingActive,f.loaded=!0,e&&r.cancel(e),o<(f.poll.config.refreshLimit||120)&&(e=r(function(){s()},f.poll.config.refreshInterval||9e4)),n},function(){f.notFound=!0})}function c(r){if(!f.voted&&!f.busy){f.busy=!0;r==null&&(r=f.option);var u={pollId:f.pollId,pollOptionId:r};return i.authorised()&&(u.sessionId=n.storage.session),t.postPollVote(u).then(function(t){f.poll=t;try{f.poll.config=JSON.parse(f.poll.config)}catch(i){f.poll.config={}}return f.common.storage.pollsVoted!==null&&Array.isArray(f.common.storage.pollsVoted)?f.common.storage.pollsVoted.includes(f.pollId)||f.common.storage.pollsVoted.push(f.pollId):f.common.storage.pollsVoted=[f.pollId],f.canVote=!1,f.voted=!0,f.busy=!1,n.eventTrack("Vote","Poll",f.poll.name,$location.url()),t},function(t){if(t.status===409){n.logger.infoAlert("Sorry, this poll is now closed!");f.busy=!1;s();return}n.logger.errorAlert("Sorry, there was a problem submitting your vote. Please try again.");f.busy=!1})}}var f={},e,o;u.vm=f;f.notFound=!1;f.loaded=!1;f.pollId=u.pollId;f.poll={};f.option=null;f.voted=!1;f.canVote=!0;f.busy=!1;f.postVote=c;f.common=n;f.auth=i;e=null;o=0;h()}return{restrict:"E",scope:{pollId:"=pollId"},templateUrl:"/app/elements/appPoll.html?v="+_ttvVersion,link:{pre:u}}}angular.module("app.elements").directive("appPoll",n);n.$inject=["common","PollData","auth","$timeout"]}(),function(){"use strict";function n(n,t){function i(i){function u(){}var r={};i.vm=r;r.buttonClass=i.buttonClass||"btn btn-lg btn-primary";r.buttonText=i.buttonText||"Register Now";r.registeredClass=i.registeredClass||"lead";r.registeredText=i.registeredText||"Thanks, you're registered";r.auth=n;r.common=t;u()}return{restrict:"E",scope:{buttonClass:"@buttonClass",buttonText:"@buttonText",registeredClass:"@registeredClass",registeredText:"@registeredText"},templateUrl:"/app/elements/appRegister.html?v="+_ttvVersion,link:{pre:i}}}angular.module("app.elements").directive("appRegister",n);n.$inject=["auth","common","$route","$location"]}(),function(){"use strict";function n(n){function t(t){function r(){n(function(){addthis.toolbox(".addthis_inline_share_toolbox");typeof addthis.layers.refresh=="function"&&addthis.layers.refresh()},500)}var i={};t.vm=i;i.class=t.containerClass;i.style=t.containerStyle;r()}return{restrict:"E",scope:{containerClass:"@containerClass",containerStyle:"@containerStyle"},templateUrl:"/app/elements/appShareIcons.html?v="+_ttvVersion,link:{pre:t}}}angular.module("app.elements").directive("appShareIcons",n);n.$inject=["$timeout"]}(),function(){"use strict";function n(n,t,i,r,u){function f(f){function o(){}function s(){if(f.$broadcast("show-errors-check-validity"),f.subscribeForm.$valid){if(u.authorisedAsEmail(e.email)){e.success=!0;return}var o={email:e.email,url:r.url()};t.postSubscribe(o).then(function(t){u.startSession(t,e.email);n.storage.session!==null&&(n.storage.newsletterMessageClosed=new Date,i.$broadcast("user:login"),n.eventTrack("Subscribe","User","via Subscribe Module",r.url()),e.success=!0)},function(t){e.success=!1;n.logger.errorAlert("Sorry there was an error when trying to save your details.",t)})}else e.success=!1,e.error="validation"}var e={};f.vm=e;e.subscribe=s;e.success=null;o()}return{restrict:"E",scope:{},templateUrl:"/app/elements/appSubscribe.html?v="+_ttvVersion,link:{pre:f}}}angular.module("app.elements").directive("appSubscribe",n);n.$inject=["common","UserData","$rootScope","$location","auth"]}(),function(){"use strict";function n(n,t,i,r,u,f,e){function o(i){function l(){r.video.config!==null&&(r.video.config=JSON.parse(r.video.config));i.$on("$destroy",function(){u&&e.cancel(u);o&&f.cancel(o)});h();r.loaded=!0}function h(){c();a()}function a(){r.video.config!==null&&r.video.config.refresh===!0?s<(r.video.config.refreshLimit||120)&&(o=f(function(){v()},r.video.config.refreshInterval||9e4)):o&&f.cancel(o)}function c(){if(r.video.availableFrom==null||moment.utc()>moment(r.video.availableFrom))r.countdownActive=!1,u!==null&&(e.cancel(u),u=null);else{r.countdownActive=!0;var n=moment.utc(r.video.availableFrom)-moment.utc();r.countdownTimeDisplay=n>864e5?moment.utc(r.video.availableFrom).format("MMM D, YYYY"):n>36e5?moment.utc(n).format("[in] H:mm:ss"):moment.utc(n).format("[in] mm:ss");u==null&&(u=e(function(){c()},1e3))}}function v(){return t.getVideo(r.video.id).then(function(n){return s++,r.video=n,r.video.config!==null&&(r.video.config=JSON.parse(r.video.config)),h(),n},function(){})}var r={};i.vm=r;r.common=n;r.loaded=!1;r.busy=!1;r.video=JSON.parse(i.video);r.countdownActive=!1;r.countdownTimeDisplay="";var s=0,o=null,u=null;l()}return{restrict:"E",scope:{video:"@video"},templateUrl:function(n,t){return t.layout||"/app/elements/appVideo.html?v="+_ttvVersion},link:{pre:o}}}angular.module("app.elements").directive("appVideo",n);n.$inject=["common","VideoData","$location","$rootScope","$sce","$timeout","$interval"]}(),function(){"use strict";angular.module("app.error",[])}(),function(){"use strict";function n(n){n.configureRoutes(t())}function t(){return[{url:"/error/:code/",config:{templateUrl:"/app/error/error.html?v="+_ttvVersion,title:"Error"}}]}angular.module("app.error").run(n);n.$inject=["routehelper"]}(),function(){"use strict";function n(n,t,i,r,u,f){function o(){f.current.meta={title:"Error"};u.$broadcast("route.meta.changed")}var e=this;e.code=t.code;o()}angular.module("app.error").controller("Error",n);n.$inject=["$location","$routeParams","common","config","$rootScope","$route"]}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(n){return!n?"":n.charAt(0).toUpperCase()+n.substr(1).toLowerCase()}})}(),function(){"use strict";angular.module("app.core").filter("dateRelative",function(){return function(n){return moment.utc(n).fromNow()}});angular.module("app.core").filter("dateTime",function(){return function(n){return moment.utc(n).format("LLL")}});angular.module("app.core").filter("timeFromSeconds",function(){return function(n){return n>=3600?moment.utc(n*1e3).format("h:mm:ss"):moment.utc(n*1e3).format("m:ss")}})}(),function(){"use strict";function n(n){return function(t){return t.player==="youTube"?n.trustAsResourceUrl("https://www.youtube.com/embed/"+t.externalId+"?modestbranding=1&rel=0"):t.player==="vimeo"?n.trustAsResourceUrl("https://player.vimeo.com/video/"+t.externalId+"?byline=false&title=false&portrait=false&color=2d76bb"):""}}angular.module("app.core").filter("videoEmbedUrl",n);n.$inject=["$sce"]}(),function(){"use strict";angular.module("app.layout",[])}(),function(){"use strict";function n(n){function i(){}var t=this;t.common=n;t.year=(new Date).getFullYear();i()}angular.module("app.layout").controller("Footer",n);n.$inject=["common"]}(),function(){"use strict";function n(n,t,i,r,u,f,e,o,s,h,c){function nt(){var n,t;b();tt();n=$("#navbar-top-menu");n.on("click","a[href]",null,function(){n.collapse("hide");y(null)});t=$(".nav-panel");t.on("click","a",null,function(){y(null)});ut()}function b(){y(null);t.current==null||t.current.$$route==null?l.meta={title:"Error"}:(l.meta=t.current.meta,t.current.meta==null&&(l.meta={title:t.current.$$route.title}));o.bg=l.meta.bg?"url('{0}')".format(l.meta.bg.img):null;u.setDocTitle(l.meta.title)}function tt(){e.$on("route.meta.changed",function(){b()})}function it(){n.path("/search/").search({q:l.searchInput});l.navPanel=null;l.searchInput="";$("#navbar-top-menu").collapse("hide")}function y(n){l.navPanel=n;n==="search"&&document.getElementById("searchInputPanel").focus()}function rt(n){if(l.navPanel===n){l.navPanel=null;return}y(n)}function ut(){n.search()!==null&&n.search().notification&&(w=n.search().notification);k();e.$on("$locationChangeSuccess",function(){d()});e.$on("$destroy",function(){p&&c.cancel(p)})}function k(){return h.getNotification(w).then(function(n){l.notification=n;l.notificationOverlayBodyFixed!==n.overlayBody&&(l.notificationOverlayBodyFixed=n.overlayBody);l.notificationOverlayBodyClosedFixed!==n.overlayBodyClosed&&(l.notificationOverlayBodyClosedFixed=n.overlayBodyClosed);try{l.notification.config=JSON.parse(l.notification.config)}catch(t){l.notification=null}if(d(),l.overlayDismissHours=l.notification!=null&&l.notification.config!=null&&l.notification.config.overlay!=null&&l.notification.config.overlay.dismissHours!=null?l.notification.config.overlay.dismissHours:1,$("body").toggleClass("notification-nav-active",l.notification!==null&&l.notification.showNav),moment(l.storage.notificationOverlayDismissed)<moment().subtract(l.overlayDismissHours,"hours")&&delete l.storage.notificationOverlayDismissed,a++,a<=5)v=9e4;else if(a<=10)v=18e4;else if(a<=30)v=3e5;else if(a<=40)v=6e5;else return n;return p=c(function(){k()},v),n},function(){})}function d(){if(l.notification===null||!l.notification.showOverlay||l.notification.config.overlay.hideIfContains===undefined){l.notificationOverlayHidden=!1;return}for(var t=0;t<l.notification.config.overlay.hideIfContains.length;t++)if(n.path().indexOf(l.notification.config.overlay.hideIfContains[t])>=0)return l.notificationOverlayHidden=!0,!0;l.notificationOverlayHidden=!1;return}function g(){r.storage.notificationOverlayDismissed===undefined&&(r.storage.notificationOverlayDismissed=moment())}function ft(){l.notification!==null&&l.notification.showOverlay&&l.notification.config.overlay.dismissOnClick===!0&&g()}function et(){delete r.storage.notificationOverlayDismissed}var l=this;l.version=_ttvVersion;l.auth=f;l.storage=r.storage;l.location=n;l.trustAsHtml=s.trustAsHtml;l.routes=u.getRoutes();l.route=t;l.navPanel=null;l.meta=null;l.notification=null;l.notificationOverlayHidden=!1;var a=0,v=9e4,p=null,w=null;l.search=it;l.toggleNavPanel=rt;l.setNavPanel=y;l.notificationOverlayClose=g;l.notificationOverlayCloseOnClick=ft;l.notificationOverlayOpen=et;nt()}angular.module("app.layout").controller("Nav",n);n.$inject=["$location","$route","config","common","routehelper","auth","$scope","$rootScope","$sce","NotificationData","$timeout","time"]}(),function(){"use strict";function n(n,t,i,r,u,f,e,o,s){function c(){r.storage.cookieMessageClosed==null&&l();r.storage.newsletterMessageClosed!=null||f.authorised()||v()}function l(){e(function(){r.logger.info('<div class="row"><div class="col-12 col-sm-10"><p class="mb-1"><span class="mr-3">TelecomTV uses cookies and third-party tools to provide functionality, personalise your visit, monitor and improve our content, and show relevant adverts.<\/span> <a href="/pages/cookies/" class="mr-3">Cookie&nbsp;policy<\/a> <a href="/pages/manage-cookies/">How&nbsp;to&nbsp;manage&nbsp;cookies<\/a><\/p><\/div><div class="col-12 col-sm-2 text-sm-right"><a onclick="cookiesOk(event)" class="btn btn-primary mb-1 mr-3" style="text-decoration: none;">Ok<\/a><\/div><\/div>',null,"Cookies",null,!0,!0,a)},2e3)}function a(){r.storage.cookieMessageClosed=new Date;s.$apply()}function v(){e(function(){if(!f.authorised())r.logger.info('<div class="row"><div class="col-md-6"><p class="mb-2">Stay up to date with the latest industry developments: sign up to receive TelecomTV\'s top news and videos plus exclusive subscriber-only content direct to your inbox &ndash; including our daily news briefing and weekly wrap.<\/p><\/div><div class="col-md-6"><form role="form" name="subscribeForm" onsubmit="newsletterSubscribe(event)" novalidate><div class="form-group mb-2" show-errors><input type="email" class="form-control" name="email" placeholder="Work Email address..." /><\/div><button type="submit" class="btn btn-primary mb-1 mr-3">Subscribe<\/button><a onclick="newsletterRemindLater(event)" class="mr-3 underline">Remind&nbsp;me&nbsp;later<\/a><a href="/pages/privacy/" class="underline" target="_blank">Privacy&nbsp;policy<\/a><\/form><div class="alert alert-danger mt-2" style="display:none;"><p class="mb-0"><i class="fal fa-fw fa-exclamation-triangle mr-2"><\/i> <span class="error-message"><\/span><\/p><\/div><\/div><\/div>',null,"Email Newsletters","fal fa-envelope",!0,!0,y)},2e4)}function y(){r.storage.newsletterMessageClosed=new Date;s.$apply()}function p(){$("html, body").animate({scrollTop:0},1e3)}var h=this;h.version=_ttvVersion;h.auth=f;h.storage=r.storage;h.routes=u.getRoutes();h.route=t;h.backToTop=p;c()}angular.module("app.layout").controller("Shell",n);n.$inject=["$location","$route","config","common","routehelper","auth","$timeout","$window","$scope"]}(),function(){"use strict";angular.module("app.page",[])}(),function(){"use strict";function n(n){n.configureRoutes(t())}function t(){return[{url:"/pages/:alias/",config:{templateUrl:"/app/page/page.html?v="+_ttvVersion,title:"Page"}}]}angular.module("app.page").run(n);n.$inject=["routehelper"]}(),function(){"use strict";function n(n,t,i,r,u,f,e,o,s){function c(){l()}function l(){return e.getPage(i.alias).then(function(t){return t.body=r.trustAsHtml(t.body),h.page=t,h.loaded=!0,n.current.meta={title:h.page.title},s.$broadcast("route.meta.changed"),o.setDocTitle(h.page.title),u.pageTrack(),t},function(){t.path("/error/404/").replace()})}var h=this;h.loaded=!1;h.page={};c()}angular.module("app.page").controller("Page",n);n.$inject=["$route","$location","$routeParams","$sce","common","config","PageData","routehelper","$rootScope"]}(),function(){"use strict";angular.module("app.search",[])}(),function(){"use strict";function n(n){n.configureRoutes(t())}function t(){return[{url:"/search/",config:{templateUrl:"/app/search/search.html?v="+_ttvVersion,title:"Search"}}]}angular.module("app.search").run(n);n.$inject=["routehelper"]}(),function(){"use strict";function n(n,t,i,r,u,f,e,o,s){function l(){n.current.meta={title:"Search"};s.$broadcast("route.meta.changed");o.setDocTitle("Search");u.pageTrack();c()}function a(){h.sortDate=!h.sortDate;h.results=[];h.page=1;c()}function c(){if(h.query)return u.eventTrack("Query","Search",h.query),e.getSearch(h.query,(h.page-1)*10+1,h.sortDate?"date":"").then(function(n){return angular.forEach(n.items,function(n){n.htmlTitle=r.trustAsHtml(n.htmlTitle)}),h.results=h.results.concat(n.items),h.page++,n},function(n){u.logger.error("Failed to get search results",n)})}function v(){t.search({q:h.input})}function y(){h.page>=10||c()}var h=this;h.results=[];h.page=1;h.query=t.search().q;h.input=h.query;h.loadMore=y;h.newSearch=v;h.sortDate=!0;h.changeSort=a;l()}angular.module("app.search").controller("Search",n);n.$inject=["$route","$location","$routeParams","$sce","common","config","SearchData","routehelper","$rootScope"]}(),function(){"use strict";angular.module("app.user",[])}(),function(){"use strict";function n(n){n.configureRoutes(t())}function t(){return[{url:"/user/login/",config:{templateUrl:"/app/user/login.html?v="+_ttvVersion,title:"Sign In"}},{url:"/user/token/",config:{templateUrl:"/app/user/token.html?v="+_ttvVersion,title:"Sign In",reloadOnSearch:!1}},{url:"/user/register/",config:{templateUrl:"/app/user/register.html?v="+_ttvVersion,title:"Register"}},{url:"/user/subscribe/",config:{templateUrl:"/app/user/subscribe.html?v="+_ttvVersion,title:"Subscribe",reloadOnSearch:!1}},{url:"/user/logout/",config:{templateUrl:"/app/user/logout.html?v="+_ttvVersion,title:"Sign Out"}}]}angular.module("app.user").run(n);n.$inject=["routehelper"]}(),function(){"use strict";function n(n,t,i,r,u,f,e){function h(){f.bounce()||(e.current.meta={title:"Sign In"},t.$broadcast("route.meta.changed"),r.pageTrack())}var o=this,s=i.search().return||"/";s=s.replace(_ttvUrl,"");s.startsWith("/")||(s="/");o.storage=r.storage;o.register=f.register;o.email=null;o.password=null;o.error=null;h();o.login=function(){f.bounce()||(o.error=null,n.$broadcast("show-errors-check-validity"),f.endSession(),f.updateProfileEmail(o.email),n.loginForm.$valid&&u.postLogin(o.email,s).then(function(n){f.startSession(n,o.email);r.storage.session!=null&&(t.$broadcast("user:login"),r.eventTrack("Sign In","User",s),r.logger.successAlert("Welcome, "+r.storage.profile.salutation+" - you're now signed in to TelecomTV"));i.url(s)},function(n){n.status==400?o.error="login-failed":r.logger.errorAlert("Sorry there was an error when trying to log you in.",n)}))}}angular.module("app.user").controller("UserLogin",n);n.$inject=["$scope","$rootScope","$location","common","UserData","auth","$route"]}(),function(){"use strict";function n(n,t,i,r,u,f,e,o){function l(){e.current.meta={title:"Sign Out"};f.$broadcast("route.meta.changed");a()}function a(){if(r.storage.session==null)return r.logger.successAlert("You're now signed out"),h();u.postLogout(r.storage.session).then(function(){return o.endSession(),f.$broadcast("user:logout"),r.eventTrack("Sign Out","User"),r.logger.successAlert("You're now signed out"),h()},function(n){return o.endSession(),f.$broadcast("user:logout"),r.eventTrack("Sign Out","User"),r.logger.error("Error when trying to log out",n),r.logger.successAlert("You're now signed out"),h()})}function h(){i.url(c.returnUrl)}var c=this,s=i.search().return||"/";s=s.replace(_ttvUrl,"");s.startsWith("/")||(s="/");c.returnUrl=s;l()}angular.module("app.user").controller("UserLogout",n);n.$inject=["$scope","$routeParams","$location","common","UserData","$rootScope","$route","auth"]}(),function(){"use strict";function n(n,t,i,r,u,f,e){function s(){r.bounce()||(h(),c(),u.pageTrack(),e.current.meta={title:"Register"},t.$broadcast("route.meta.changed"))}function h(){return i.getCountries().then(function(n){return o.countries=n,n})}function c(){return i.getCompanyTypes().then(function(n){return o.companyTypes=n,n})}var o=this;o.email=null;o.password=null;o.passwordConfirm=null;o.firstName=null;o.lastName=null;o.company=null;o.companyType=null;o.newsletter=!1;o.terms=!1;o.error=null;o.init={};o.auth=r;o.search=f.search();s();o.register=function(){if(!r.bounce())if(n.$broadcast("show-errors-check-validity"),n.registrationForm.$valid){var e={email:o.email,firstName:o.firstName,lastName:o.lastName,company:o.company,companyType:o.companyType,jobTitle:o.jobTitle,country:o.country,url:f.url()};i.postRegister(e).then(function(n){r.startSession(n,o.email);u.storage.session!=null&&(r.updateProfileFields(e),t.$broadcast("user:login"),u.eventTrack("Register","User"),u.logger.successAlert("Welcome, "+u.storage.profile.salutation+" - you're now subscribed and signed in to TelecomTV"),f.url(f.search().return||"/"))},function(n){u.logger.errorAlert("Sorry there was an error when trying to register you.",n);$("html, body").animate({scrollTop:0},800)})}else o.error="validation",$("html, body").animate({scrollTop:0},800)}}angular.module("app.user").controller("UserRegister",n);n.$inject=["$scope","$rootScope","UserData","auth","common","$location","$route"]}(),function(){"use strict";function n(n,t,i,r,u,f,e){function s(){o.email=f.search().email;f.search("email",null);o.email!==null&&typeof o.email!="undefined"&&(o.initialSubmit=!0,o.subscribe());e.current.meta={title:"Subscribe"};t.$broadcast("route.meta.changed");u.pageTrack()}function h(){if(r.authorisedAsEmail(o.email)){u.storage.newsletterMessageClosed=new Date;u.logger.successAlert("Welcome, "+u.storage.profile.salutation+" - you're now subscribed to TelecomTV");f.url(f.search().return||"/");return}if(typeof n.subscribeForm!="undefined"&&(n.$broadcast("show-errors-check-validity"),!n.subscribeForm.$valid)){o.error="validation";$("html, body").animate({scrollTop:0},800);f.url(f.search().return||"/");o.initialSubmit=!1;return}var e={email:o.email,url:f.url()};i.postSubscribe(e).then(function(n){r.startSession(n,o.email);u.storage.session!=null&&(u.storage.newsletterMessageClosed=new Date,t.$broadcast("user:login"),u.eventTrack("Subscribe","User","via Popup",f.search().return||"/"),u.logger.successAlert("Welcome, "+u.storage.profile.salutation+" - you're now subscribed to TelecomTV"),f.url(f.search().return||"/"),o.initialSubmit=!1)},function(n){o.initialSubmit=!1;u.logger.errorAlert("Sorry there was an error when trying to subscribe you",n);$("html, body").animate({scrollTop:0},800)})}var o=this;o.initialSubmit=null;o.email=null;o.error=null;o.auth=r;o.search=f.search();o.subscribe=h;s()}angular.module("app.user").controller("UserSubscribe",n);n.$inject=["$scope","$rootScope","UserData","auth","common","$location","$route"]}(),function(){"use strict";function n(n,t,i,r,u,f,e,o){function l(){e.current.meta={title:"Sign In"};f.$broadcast("route.meta.changed");a()}function a(){if(r.storage.session!=null)return c();if(typeof s.token=="undefined"||s.token===null||s.token==="")return r.logger.error("Sorry, we couldn't sign in you to TelecomTV as the link wasn't valid"),c();u.putTokenLogin(s.token,h).then(function(n){return o.startSession(n,null),r.storage.session!=null?(f.$broadcast("user:login"),r.eventTrack("Token Sign In","User",h),r.logger.successAlert("Welcome back - you're now signed in to TelecomTV"),c()):void 0},function(){return r.logger.error("Sorry, we couldn't sign in you to TelecomTV - the link may have expired"),c()})}function c(){i.url(s.returnUrl)}var s=this,h=i.search().return||"/";h=h.replace(_ttvUrl,"");h.startsWith("/")||(h="/");s.returnUrl=h;s.token=i.search().token;i.search("token",null);l()}angular.module("app.user").controller("UserToken",n);n.$inject=["$scope","$routeParams","$location","common","UserData","$rootScope","$route","auth"]}()