function clubService(n,t,i){"use strict";function h(t,r){return n.post(f,new i({clubId:t,championship:r}))}function c(t){return n.post(e,t)}function l(t,i,r,u){return n.post(o,{clubId:t,gameMode:i,stageCount:r,locationId:u})}function a(t){return n.get(r+t+"/championship")}function v(t){return n.get(r+t+"/championship/past")}function y(t){return n.get(r+t+"/championship/current")}function p(t){return n.get(r+t+"/championship/future")}function w(t){return n.get(r+t+"/championship/summary")}function b(){return n.get(s)}function k(t){return n.get(r+t+"/championship/current/expiration")}function d(t,i,u,f,e){return n.get(r+t+"/championship/history?pageNumber="+i+"&pageSize="+u+"&sortColumn="+f+"&sortAscending="+e)}var u="/api/club/",f=t+u+"championship",e=t+u+"championship/generate",o=t+u+"championship/stage/generate",r=t+u,s=t+u+"myClubCount";return{createChampionship:h,generateChampionship:c,generateStage:l,getChampionships:a,getPastChampionship:v,getCurrentChampionship:y,getFutureChampionship:p,getChampionshipSummary:w,getMyClubCount:b,getCurrentChampionshipExpiration:k,getChampionshipHistory:d}}function cryptoService(){"use strict";function n(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(n){var t=Math.random()*16|0,i=n=="x"?t:t&3|8;return i.toString(16)})}return{generateModelId:n}}function EventService(n,t){"use strict";function u(t){return n.get(i+"/?altHandling="+t)}function f(){return n.get(r)}var i=t+"/api/event/summary",r=t+"/api/event/esports/summary";return{getEventTypes:u,getEsportsEvents:f}}function FormatService(n){"use strict";function i(){return n.proposedLanguage()||n.use()}function t(n){if(n.length===0)throw new Error("No value provided in args");var t=Array.prototype.slice.call(n);return t.shift(),t.length!==0&&typeof t[0]=="string"&&Array.isArray(t[0])||t.unshift(i()),t}function r(n){if(typeof n!="number")throw new Error("The provided value is not a number.");return Number.prototype.toLocaleString.apply(n,t(arguments))}function u(n){if(n instanceof Date)throw new Error("The provided value is not a date.");return Date.prototype.toLocaleDateString.apply(n,t(arguments))}function f(n){if(n instanceof Date)throw new Error("The provided value is not a date.");return Date.prototype.toLocaleTimeString.apply(n,t(arguments))}return{toLocaleString:r,toLocaleDateString:u,toLocaleTimeString:f,getLocale:i}}function handlingModeService(n,t){"use strict";function u(){return n.get(r)}function f(t,r){return n.put(i,{isAltHandling:t},{headers:{"X-Requested-With":"XMLHttpRequest",__RequestVerificationToken:r}})}var i=t+"/api/profile/set-handling",r=t+"/api/profile/get-handling";return{getHandlingMode:u,setHandlingMode:f}}function LeaderboardService(n,t){"use strict";function r(t,r,u,f,e,o){var s=i+"/event/"+t+"/stage/"+r+"/page/"+u;return n.get(s,{params:{pageSize:f,players:parseInt(e.players),controls:parseInt(e.controls),assists:parseInt(e.assists),platform:parseInt(e.platform),orderByTotal:e.orderBy,useAltHanding:o}})}var i=t+"/api/leaderboard";return{getLeaderboard:r}}function leagueService(n,t){"use strict";function ut(){return n.get(r)}function ft(t,i,r,u,f){return n.get(s,{params:{teamId:t,disciplineId:i,eventCount:r,stageCount:u,randomise:f,noCache:(new Date).getTime()}})}function et(t){return n.get(h,{params:{teamId:t}})}function ot(t){return n.get(l,{params:{teamId:t,noCache:(new Date).getTime()}})}function st(t,i,r,u,f){return n.get(o,{params:{name:t,language:i,status:r,ordering:u,page:f}})}function ht(t){return n.get(e,{params:{teamId:t,noCache:(new Date).getTime()}})}function ct(t,i){return n.get(f,{params:{teamId:t,page:i}})}function lt(){return n.get(u,{params:{noCache:(new Date).getTime()}})}function at(t){return n.get(i,{params:{teamId:t}})}function vt(t){return n.get(a,{params:{page:t}})}function yt(){return n.get(v)}function pt(t,i){return n.get(c,{params:{teamId:t,disciplineId:i,noCache:(new Date).getTime()}})}function wt(){return n.get(y)}function bt(){return n.get(p,{params:{noCache:(new Date).getTime()}})}function kt(t,r){return n.put(i,t,{headers:{"X-Requested-With":"XMLHttpRequest",__RequestVerificationToken:r}})}function dt(t,i,r){var u={teamId:t,playerId:i};return n.put(w,u,{headers:{"X-Requested-With":"XMLHttpRequest",__RequestVerificationToken:r}})}function gt(t,i,r){var u={teamId:t,playerId:i};return n.put(b,u,{headers:{"X-Requested-With":"XMLHttpRequest",__RequestVerificationToken:r}})}function ni(t,i,r){var u={teamId:t,playerId:i};return n.put(k,u,{headers:{"X-Requested-With":"XMLHttpRequest",__RequestVerificationToken:r}})}function ti(t,i,r){var u={teamId:t,playerId:i};return n.put(d,u,{headers:{"X-Requested-With":"XMLHttpRequest",__RequestVerificationToken:r}})}function ii(t,i,r){var u={teamId:t,playerId:i};return n.put(g,u,{headers:{"X-Requested-With":"XMLHttpRequest",__RequestVerificationToken:r}})}function ri(t){return n.get(nt,{params:{teamId:t}})}function ui(t,i){var r={teamId:t};return n.put(it,r,{headers:{"X-Requested-With":"XMLHttpRequest",__RequestVerificationToken:i}})}function fi(t,i){var r={teamId:t};return n.put(rt,r,{headers:{"X-Requested-With":"XMLHttpRequest",__RequestVerificationToken:i}})}function ei(t,i,r){var u={teamId:t,playerId:i};return n.put(tt,u,{headers:{"X-Requested-With":"XMLHttpRequest",__RequestVerificationToken:r}})}var r=t+"/clubs/club-cover-images.json",u=t+"/clubs/my-clubs.json",f=t+"/clubs/club-leaderboard.json",e=t+"/clubs/club-roster.json",o=t+"/clubs/club-search.json",i=t+"/clubs/club-championship.json",s=t+"/clubs/club-championship-generator.json",h=t+"/clubs/club-championship-copy.json",c=t+"/clubs/club-championship-event-stage-randomise.json",l=t+"/clubs/club-championship-data.json",a=t+"/clubs/friends-clubs.json",v=t+"/clubs/suggested-clubs.json",y=t+"/clubs/track-conditions.json",p=t+"/clubs/user-membership-requests.json",w=t+"/clubs/promote-club-membership",b=t+"/clubs/demote-club-membership",k=t+"/clubs/kick-from-club",d=t+"/clubs/accept-club-membership",g=t+"/clubs/reject-club-membership",nt=t+"/clubs/friends-not-in-club.json",tt=t+"/clubs/invite-player",it=t+"/clubs/accept-club",rt=t+"/clubs/reject-club";return{getLeagueCoverImages:ut,generateLeagueChampionship:ft,getCurrentLeagueChampionshipCopy:et,getLeagueChampionshipData:ot,getLeagues:st,getLeagueRoster:ht,getLeagueStandings:ct,getMyLeagues:lt,getPendingLeagueChampionship:at,getFriendsLeagues:vt,getSuggestedLeagues:yt,getRandomLeagueChampionshipStage:pt,getTrackConditions:wt,getUserMembershipRequests:bt,saveLeagueChampionship:kt,promotePlayer:dt,demotePlayer:gt,kickPlayer:ni,acceptLeagueMembership:ti,rejectLeagueMembership:ii,getFriendsNotInLeague:ri,acceptLeague:ui,rejectLeague:fi,invitePlayer:ei}}function OptionsService(n,t,i){"use strict";function f(n,t){this.options=n;this.callback=t}function u(n,t){this.values=n;this.isInitialised=t}var r=null,e=function(){function s(n){for(var f=function(){},u=null,u=t.isArray(n)?n:n.options,i=0;i<u.length;i++)f[u[i]]=r[u[i]].values;return f}function a(n){return t.every(n.options,function(n){return r[n].isInitialised})}function h(){for(var r,i,n=[],t=0;t<e.length;t++)a(e[t])&&n.push({index:t,cb:e[t]});for(r=n.length-1;r>=0;r--)e.splice(n[r].index,1);for(i=0;i<n.length;i++)n[i].cb.callback(s(n[i].cb))}function v(n){for(var t in n)n.hasOwnProperty(t)&&(r[t].values.length=0,[].push.apply(r[t].values,n[t]),r[t].isInitialised=!0);h()}function c(i){var e=t.chain(i).filter(function(n){return t.isString(n)}).value(),f=t.filter(e,function(n){return!r[n]});t.each(f,function(n){r[n]=new u([],!1)});f.length>0?n.post(l,f).success(v).error(function(){throw new Error("Failed to load options: "+JSON.stringify(e));}):h()}function y(t){return r[t]||(r[t]=new u([],!1)),n.get(i+t).success(function(n){r[t].values.length=0;[].push.apply(r[t].values,n);r[t].isInitialised=!0}).error(function(){throw new Error("Failed to load options from url: "+t);}),r[t].values}var l=i+"/api/options/",r={},e=[],o={};return o.getBatch=function(n,i){if(!t.isArray(n))throw new Error("The provided optionsArray is not an array.");if(n.length==0){var r=function(){};return t.isFunction(i)&&i(r),r}return t.isFunction(i)&&e.push(new f(n,i)),c(n),s(n)},o.get=function(n){if(!n)throw new Error("No options key provided.");return c([n]),r[n]},o.getUrl=function(n){if(!Url)throw new Error("No options url provided.");return y(n)},o};return r===null&&(r=Object.freeze(e())),r}function playerService(n,t){"use strict";function o(t){return n.get(i,{params:{playerId:t}})}function s(t,i,u){return n.get(r,{params:{playerId:t,eventType:i,versusId:u}})}function h(t,i,r,f,e){return n.get(u,{params:{playerId:t,trackId:i,vehicleClassId:r,conditions:f,versusId:e}})}function c(t){return n.get(e,{params:{id:t}})}function l(t){return n.get(f,{params:{playerId:t}})}var i=t+"/api/achievements",r=t+"/api/challenge-history",u=t+"/api/lap-times",f=t+"/api/player-stats",e=t+"/api/profile";return{getAchievements:o,getChallengeHistory:s,getLapTimes:h,getPlayerProfile:c,getPlayerStats:l}}function proTourService(n,t){"use strict";function u(){return n.get(i)}function f(){return n.get(r)}var i=t+"/api/pro-tour.json",r=t+"/api/pro-tour-player.json";return{getProTourCommunityData:u,getProTourPlayerData:f}}function retailerLinkService(n,t){"use strict";function u(){return n.get(i)}function f(){return n.get(r)}var i=t+"/buy/links/physical",r=t+"/buy/links/digital";return{getPhysicalLinks:u,getDigitalLinks:f}}function socialService(n,t){"use strict";function s(){return n.get(i)}function h(){return n.get(r)}function c(){return n.get(u)}function l(){return n.get(f)}function a(){return n.get(e)}function v(){return n.get(o)}var i=t+"/api/social/news",r=t+"/api/social/news/esports",u=t+"/api/social/forum",f=t+"/api/social/twitch",e=t+"/api/social/twitter",o=t+"/api/social/video";return{getNewsPosts:s,getESportsNewsPosts:h,getForumDiscussions:c,getTwitchChannel:l,getTwitterFeed:a,getVideoFeed:v}}function trackService(n,t,i,r){"use strict";function p(t){return n.get(a,{params:{trackId:t}})}function w(t){return n.get(l,{cache:y,params:{shortcode:t}})}function b(){return n.get(u,{params:{noCache:(new Date).getTime()}})}function k(){return n.get(f,{params:{noCache:(new Date).getTime()}})}function d(){return n.get(e)}function g(t,i){return n.get(o,{params:{page:t,countryId:i}})}function nt(){return n.get(s)}function tt(t,i){var r={track:t};return n.put(h,r,{headers:{"X-Requested-With":"XMLHttpRequest",__RequestVerificationToken:i}})}function it(t,i){var r={tracks:t};return n.put(c,r,{headers:{"X-Requested-With":"XMLHttpRequest",__RequestVerificationToken:i}})}function rt(t,i,r,u){return n.get(v+"?location="+t+"&length="+i+"&complexity="+r+"&count="+u)}var u=i+"/api/your-stage/favourites-status.json",f=i+"/api/your-stage/favourites.json",e=i+"/api/your-stage/featured-tracks.json",o=i+"/api/your-stage/new-and-noteworthy.json",s=i+"/api/your-stage/all-time-greats.json",ut=i+"/api/your-stage/career-stages.json",h=i+"/api/your-stage/add-favourite-track",c=i+"/api/your-stage/remove-favourite-tracks",l=i+"/api/your-stage/spline.json",a=i+"/api/your-stage/view-stage.json",v=r+"/api/track/generate",y=t("splineDataCache");return{getFavouriteTracksStatus:b,getFavouriteTracks:k,getFeaturedTracks:d,getNewAndNoteworthyTracks:g,getAllTimeGreatsTracks:nt,addFavouriteTrack:tt,removeFavouriteTracks:it,getTrackSplineData:w,getTrackDetails:p,generateTracks:rt}}function tripleCrownService(n,t){"use strict";function r(t,r){return n.get(i,{params:{su:t,nf:r||0}})}var i=t+"/api/triplecrown";return{getHallOfFame:r}}function validationService(n,t){"use strict";var r=function(){function u(n){return n?n:o}function f(n){r[n]||(r[n]={})}function e(n,t){Object.keys(r[n]).forEach(function(t){delete r[n][t]});Object.keys(t).forEach(function(i){r[n][i]=t[i]})}var i={},o="__DefaultContext__",r={};return i.apply=function(r,o){var s=u(o),h;f(s);e(s,r);h=i.getUpdateEventName(o);n.$emit(h,t(r))},i.clear=function(n){var t=u(n);f(t);e(t,[])},i.get=function(n){var i=u(n);return f(i),t(r[i])},i.getUpdateEventName=function(n){return n?"validation-update["+n+"]":"validation-update"},i},i=null;return i===null&&(i=Object.freeze(r())),i}function AboutController(n,t){"use strict";n.overviewTab=!0;n.showOverview=function(){n.overviewTab=!0};n.showHints=function(){n.overviewTab=!1};n.$watch("overviewTab",function(){n.overviewTab&&t(function(){$(window).trigger("resize")},100)})}function PeripheralsController(n){"use strict";n.platform="pc"}function ClubLeaderboardController(n,t,i,r,u,f,e){"use strict";function h(){f.getChampionshipSummary(o.clubId).success(function(n){r(function(){o.previousChampionship=n.previousChampionship;o.currentChampionship=n.currentChampionship;o.previousChampionship&&(angular.forEach(o.previousChampionship.events,function(n){n.dateRange=new e(n.dateRange)}),o.selectedTab="previous");o.currentChampionship&&(angular.forEach(o.currentChampionship.events,function(n){n.dateRange=new e(n.dateRange)}),o.selectedTab="current");o.loading=!1})}).error(function(){o.loading=!1});o.getChampionshipHistory()}var o=this,s;o.clubId=i.clubId;o.page=1;o.pageSize=100;o.sortColumn=1;o.sortAsc=!1;o.currentDate=moment().utc().local();o.loading=!0;o.loadingEntries=!0;o.selectedTab="history";o.paneConfig={showArrows:!1,hideFocus:!0,autoReinitialise:!0};s=window.location.href.split("/").pop();o.selectedEvent=s!=null?parseInt(s):0;o.selectedStage=0;o.getChampionshipHistory=function(){o.loadingEntries=!0;f.getChampionshipHistory(o.clubId,o.page,o.pageSize,o.sortColumn,o.sortAsc).success(function(n){r(function(){o.championshipHistory=n;o.loadingEntries=!1})}).error(function(){o.loadingEntries=!1})};o.isEventSelected=function(n){return o.selectedEvent===parseInt(n)};o.isStageSelected=function(n){return o.selectedStage===parseInt(n)};o.circuitRaces=function(n){var t=1;return n.stageDetails.rallyXLapCountHeat>0&&(t+=4),n.stageDetails.rallyXLapCountSemi>0&&(t+=1),t>1?t+" Races":t+" Race"};o.updateSortColumn=function(n){o.championshipHistory.entries.length=0;o.sortColumn==n?o.sortAsc=!o.sortAsc:o.sortColumn=n;o.getChampionshipHistory()};o.setPage=function(n){o.page=n;o.getChampionshipHistory()};h()}function CreateChampionshipController(n,t,i,r,u,f,e,o,s,h,c,l){"use strict";function v(){o.getBatch(["clubGameModeOptions","clubVehicleClassOptions","clubVehicleOptions","driveTrainOptions","locationAsCountryOptions","manufacturerOptions","manufacturerNationalityOptions","rallyXDifficultyOptions","rallyXLapOptions","timeOfDayOptions","vehicleBhpOptions","vehicleRestrictionOptions","weatherOptions","careerStageOptions","myStageOptions"],function(){a.generateChampionship=new f({clubId:a.clubId});a.hasFutureChampionship?s.getFutureChampionship(a.clubId).success(function(n){r(function(){a.championship=new e(n.future);a.loadingChampionship=!1})}).error(function(){console.log("Failed to load required data.")}):(a.championship=new e,a.loadingChampionship=!1)})}function y(n,t){var i,u,r,f;if(n.vid===t.vid)return{event:null,stage:null};for(i=0;i<n.events.length;i++){if(u=n.events[i],u.vid===t.vid)return{event:i,stage:null};for(r=0;r<u.stages.length;r++)if(f=u.stages[r],f.vid===t.vid)return{event:i,stage:r}}}function p(){return a.loadingChampionship=!0,a.editing=!1,h.clear(),s.generateChampionship(a.generateChampionship).success(function(n){r(function(){a.championship=new e(n);a.loadingChampionship=!1})}).error(function(){a.loadingChampionship=!1}),!1}function w(n){h.clear();s.createChampionship(i.clubId,a.championship).success(function(t){t.clubId&&t.clubName&&(c.location.href=n?l+"/clubs/promote-your-club/"+t.clubId:l+"/clubs/club/"+t.clubId+"/"+t.clubName)}).error(function(n,t){t===400?h.apply(n):console.log(n)})}function b(){c.location.href=l+"/clubs/club/"+a.clubId}function k(n){var t=n.target,i=angular.element(t).controller("ngModel");parseInt(t.value)>parseInt(t.max)?(t.value=t.max,i.$setViewValue(t.max)):parseInt(t.value)<parseInt(t.min)&&(t.value=t.min,i.$setViewValue(t.min))}function d(n){var i=y(a.championship,n);t.$emit("goToValidationError",i.event,i.stage)}var a=this;a.clubId=i.clubId;a.hasFutureChampionship=i.hasFutureChampionship==="True";a.championshipNumber=i.championshipNumber;a.editing=!1;a.championship;a.generateChampionship;a.loadingChampionship=!0;angular.extend(a,{onValidationErrorClicked:d,generate:p,save:w,cancel:b,validate:k});v()}function GetChampionshipController(n,t,i,r,u,f,e){"use strict";function h(){f.getBatch(["clubGameModeOptions","clubVehicleClassOptions","clubVehicleOptions","driveTrainOptions","locationAsCountryOptions","manufacturerOptions","manufacturerNationalityOptions","rallyXDifficultyOptions","rallyXLapOptions","timeOfDayOptions","vehicleBhpOptions","vehicleRestrictionOptions","weatherOptions","careerStageOptions","myStageOptions"],function(){c()})}function c(){o.loadingChampionship=!0;e.getChampionships(o.clubId).success(function(n){r(function(){o.championship[o.PAST]=n[o.PAST]?new u(n[o.PAST]):null;n[o.CURRENT]?(o.championship[o.CURRENT]=new u(n[o.CURRENT]),o.championship[o.FUTURE]=n[o.FUTURE]?new u(n[o.FUTURE]):null):(o.championship[o.CURRENT]=n[o.FUTURE]?new u(n[o.FUTURE]):null,o.championship[o.FUTURE]=null);s(o.CURRENT);o.loadingChampionship=!1})}).error(function(){o.loadingChampionship=!1})}function l(){if(o.loadingChampionship==!1&&o.championship[o.panel])return o.championship[o.panel].championshipNumber}function s(n){o.panel=n}var o=this;o.PAST="past";o.CURRENT="current";o.FUTURE="future";o.clubId=i.clubId;o.panel="current";o.championship={};o.loadingChampionship=!0;o.editingFuture=!1;angular.extend(o,{selectPanel:s,getChampionshipNumber:l});h()}function LanguageController(n,t,i,r){"use strict";function u(n,t){for(var i=0;i<n.length;i++)if(n[i].value===t)return n[i]}n.platformOptions=[{value:null,label:"PC"},{value:"/eula/playstation",label:"PlayStation 4"},{value:"/eula/xbox",label:"Xbox"}];n.selectedPlatform=n.platformOptions[0];n.$watch(function(){return n.selectedPlatform},function(n){n&&n.value&&(i.location.href=r+n.value)});n.languageOptions=[{value:"de",label:"Deutsch"},{value:"en",label:"English"},{value:"es",label:"Español"},{value:"fr",label:"Français"},{value:"it",label:"Italiano"},{value:"pl",label:"Polski"},{value:"jp",label:"日本語"},{value:"zh",label:"中文"}];n.selectedLanguage=u(n.languageOptions,t.defaultLanguage)||n.languageOptions[0];n.isActiveLanguage=function(t){return n.selectedLanguage.value==t}}function EsportsController(n,t,i,r,u,f){"use strict";function o(){u.getEsportsEvents().success(function(n){r(function(){e.events=n;e.selectedEventId=e.events.weeklyQualifiers[0].stages[0].ps4.eventId;e.getLeaderboard();e.loading=!1})}).error(function(){e.loading=!1})}function s(n,t,i){var r,u="/UI/compiled/images/esports/";if(t=="eRally"){switch(n){case"eAustralia":r="australia";break;case"eSpain":r="spain";break;case"eSweden":r="sweden";break;case"eUsa":r="usa";break;case"eWales":r="wales"}return u+i+"/rally_"+r+".jpg"}switch(n){case"eNorway":r="hell";break;case"eSweden":r="holjes";break;case"eFrance":r="loheac";break;case"eEngland":r="lydden";break;case"ePortugal":r="montalegre"}return u+i+"/rx_"+r+".jpg"}function h(){e.loadingEntries=!0;e.leaderboardEntries.length=0;f.getLeaderboard(e.selectedEventId,e.selectedStage,e.page,e.pageSize,e.filters,!1).success(function(n){e.leaderboard=n;e.leaderboardEntries=n.Entries;e.pageCount=n.PageCount}).error(function(){e.loading=!1}).finally(function(){e.loading=!1;e.loadingEntries=!1})}function c(n){e.selectedPlatform=n;e.page=1;e.getLeaderboard()}function l(n,t){var o,u,i;for(e.loading=!0,e.loadingEntries=!0,e.leaderboardEntries.length=0,o=0,u=e.pageSize,i=1;i<t;i++){if(n>o&&n<u){e.page=i;break}u+=e.pageSize}f.getLeaderboard(e.selectedEventId,e.selectedStage,e.page,e.pageSize,e.filters,!1).success(function(n){e.leaderboard=n;e.leaderboardEntries=n.Entries;e.pageCount=n.PageCount}).error(function(){e.loading=!1}).finally(function(){e.loading=!1;e.loadingEntries=!1});r(function(){$("html, body").animate({scrollTop:$("#player-entry").offset().top})})}function a(n){return e.selectedStage===parseInt(n+1)}function v(n){e.page=n;e.getLeaderboard()}var e=this;e.loading=!1;e.loadingEntries=!1;e.page=1;e.pageSize=10;e.sortColumn=1;e.sortAsc=!0;e.loading=!0;e.loadingEntries=!0;e.eventType="weeklyQualifiers";e.selectedEvent=0;e.selectedStage=1;e.selectedPlatform="ps4";e.leaderboardEntries=[];e.filters={players:0,assists:0,controls:0,platform:0,orderBy:!0};e.paneConfig={theme:"minimal-dark",advanced:{updateOnContentResize:!0},axis:"y",scrollInertia:500,alwaysShowScrollbar:2,autoHideScrollbar:!1};angular.extend(e,{getEventImage:s,getLeaderboard:h,updatePlatform:c,setPage:v,getPlayerPosition:l,isStageSelected:a});o()}function ProTourController(n,t,i,r,u,f,e){"use strict";function a(){n.loadingCommunityData=!0;f.getProTourCommunityData().success(function(t){o.communityData=t;n.loadingCommunityData=!1;r(function(){o.animateBars=!0},1e3)}).error(function(){n.loadingCommunityData=!1})}function v(){n.loadingPlayerData=!0;f.getProTourPlayerData().success(function(t){o.playerData=t;n.loadingPlayerData=!1;r(function(){o.animatePoints=!0},1e3)}).error(function(){n.loadingPlayerData=!1})}function y(){var n=0;return o.playerData.EventProgress!==null&&(n=50/s*(o.playerData.EventProgress.PointsPromotion+s)),n}function h(){a();v()}function p(){return 100-y()}function w(){var n=0;return o.playerData.EventPoints!==null&&(n=50/s*(o.playerData.EventProgress.PointsHold+s)),n}function b(){var n=0;return o.playerData.EventPoints!==null&&(n=50/s*(o.playerData.EventProgress.EventPoints+s)),n}function k(){var n=0;return o.playerData.EventPoints!==null&&o.playerData.EventProgress.EventPoints<0&&(n=50/s*-o.playerData.EventProgress.EventPoints),n}function d(){var n=0;return o.playerData.EventProgress!==null&&o.playerData.EventProgress.EventPoints>0&&(n=50/s*o.playerData.EventProgress.EventPoints),n}function g(){return o.playerData.EventProgress!==null&&o.playerData.EventProgress.PointsHold!==0?!0:!1}function nt(){return o.playerData.Player!==null&&o.playerData.Player.Division===1&&o.playerData.Player.Tier===1?!1:!0}function c(n,t){return o.playerData.Player!==null?n===o.playerData.Player.Division&&t===o.playerData.Player.Tier:!1}function l(n,t){var i=[];return o.playerData.Friends!==null&&(i=u(o.playerData.Friends,{Division:n,Tier:t})),i}function tt(n,t){var i=[],r,f,u;return o.playerData.Friends!==null&&(r=l(n,t),r.length&&(u=!0,angular.forEach(r,function(n,t){u&&(t==20?(i.push(n.PlayerName+"..."),u=!1):i.push(n.PlayerName))})),c(n,t)&&(f=[o.playerData.Player.PlayerName],i=f.concat(i))),i.join(", ")}function it(n,t){for(var r=0,i=0;i<t.length;i++)t[i].PlayerPercentage>r&&(r=t[i].PlayerPercentage);return Math.round(n/r*1e6)/1e4}function rt(n){return new Array(n)}var o=this,s=25;n.loadingCommunityData=!1;n.loadingPlayerData=!1;o.loading=!1;o.animateBars=!1;o.animatePoints=!1;o.communityData=null;o.playerData=null;e.$on("HANDLING_MODE_CHANGED",function(){o.animateBars=!1;o.animatePoints=!1;o.communityData=null;o.playerData=null;h()});n.$watch("loadingCommunityData",function(){o.loading=n.loadingCommunityData||n.loadingPlayerData});n.$watch("loadingPlayerData",function(){o.loading=n.loadingCommunityData||n.loadingPlayerData});angular.extend(o,{promotionWidth:p,relegationWidth:w,pointsPosition:b,negativePointsWidth:k,positivePointsWidth:d,relegationPossible:g,promotionPossible:nt,isPlayerTier:c,getFriendsForTier:l,playerNamesTooltip:tt,getTierPercentage:it,getLegendNumber:rt});h()}function BlogController(n,t,i){"use strict";n.data=[];n.loading=!1;n.renderHtml=function(n){return t.trustAsHtml(n)};n.get=function(){n.loading=!0;i.getBlogPosts().success(function(t){n.data=t;n.loading=!1}).error(function(){n.loading=!1})};n.get()}function ChallengeLeaderboardController(n,t,i,r){"use strict";n.eventId=t.eventId;n.stageId=t.stageId;n.startedTimer=!1;n.loading=!1;n.playerEntry=null;n.entries=[];n.page=1;n.$watch("stageId",function(){n.get();n.startedTimer||(n.startedTimer=!0,i(function(){n.get()},6e4))});n.get=function(){n.loading=!0;var t={eventId:n.eventId,stageId:n.stageId,leaderboard:!0,page:n.page,noCache:(new Date).getTime()};r.getLeaderboard(t).success(function(t){n.playerEntry=t.PlayerEntry!=null?t.PlayerEntry:null;n.entries=t.Entries;n.loading=!1}).error(function(){n.loading=!1})}}function ChallengeToggleController(n,t,i){"use strict";function r(){return angular.element("#"+n.sliderId+" .flexslider")}n.toggleState=!1;n.sliderId=t.sliderId;n.hoverState=!1;n.$watch("toggleState",function(){var t=r();try{n.toggleState?t.flexslider(1):t.flexslider(0)}catch(i){}});n.toggle=function(){n.toggleState=!n.toggleState};i(function(){n.hoverState||n.toggle()},1e4)}function ChallengeController(n,t,i,r){"use strict";function u(){n.loading=!0;i.getStageInformation(n.eventId,n.stageId).success(function(t){n.event=t.Event;n.stage=t.Stage;n.loading=!1}).error(function(){n.loading=!1})}function f(){n.loading=!0;var t={eventId:n.eventId,stageId:n.stageId,leaderboard:!0,onlyPlayer:!0,noCache:(new Date).getTime()};r.getLeaderboard(t).success(function(t){n.playerEntry=t.PlayerEntry!=null?t.PlayerEntry:null;n.loading=!1}).error(function(){n.loading=!1})}n.eventId=t.eventId;n.stageId=t.stageId;n.loading=!1;n.event=null;n.stage=null;n.playerEntry=null;n.hasDriveTrain=function(t){return n.event.Restriction.DriveTrain.length?n.event.Restriction.DriveTrain.indexOf(t.toUpperCase())!=-1:!1};n.hasPreviousStage=function(){return n.stageId>1?!0:!1};n.previousStage=function(){n.hasPreviousStage()&&n.stageId--};n.hasNextStage=function(){return n.stageId<n.event.TotalStages?!0:!1};n.nextStage=function(){n.hasNextStage()&&n.stageId++};n.$watchCollection("[eventId, stageId]",function(){u();f()})}function DirtTvController(n,t,i){"use strict";n.showTwitch=!1;n.toggleView=!1;n.twitch=[];n.videos=[];n.loading=!1;n.showToggle=function(){return n.twitch.StreamLive||!n.twitch.StreamLive&&n.showTwitch};n.toggleView=function(){n.showTwitch=!n.showTwitch;n.toggled=!0};n.getTwitch=function(t){t&&(n.loading=!0);i.getTwitchChannel().success(function(i){n.twitch.length!=0&&n.toggled||(n.showTwitch=i.StreamLive);n.twitch=i;t&&(n.loading=!1)}).error(function(){t&&(n.loading=!1)})};n.getVideo=function(){n.loading=!0;i.getVideoFeed().success(function(i){n.videos=i;t(function(){$("#tv_module .flexslider").flexslider({animation:"slide",pauseOnHover:!0,directionNav:!1,controlsContainer:"#tv_pages"});window.recalculateFills()},1e3);n.loading=!1}).error(function(){n.loading=!1})};n.getTwitch();n.getVideo();t(function(){n.loading||n.getTwitch(!1)},3e4)}function ForumController(n,t,i){"use strict";n.data=[];n.loading=!1;n.get=function(){n.loading=!0;i.getForumDiscussions().success(function(i){n.data=i;n.loading=!1;t.setTimeout(function(){t.reinitaliseForumScrollbar()},500)}).error(function(){n.loading=!1})};n.get()}function TrailerController(){"use strict";var n=this;window.player||(window.player=null);n.open=function(){var n=$("#video_modal");n.modal();window.player===null?window.player=new window.YT.Player("video_player",{height:"100%",width:"100%",videoId:window.videoId,playerVars:{autoplay:1,rel:0,modestbranding:1,wmode:"opaque"}}):window.player.loadVideoById(window.videoId);n.on("hide.bs.modal",function(){window.player!==null&&window.player.stopVideo()})}}function TwitterController(n,t,i,r){"use strict";n.data=[];n.loading=!1;n.renderHtml=function(n){return t.trustAsHtml(n)};n.get=function(){n.loading=!0;r.getTwitterFeed().success(function(t){n.data=t;n.loading=!1;i.setTimeout(function(){i.reinitaliseTwitterScrollbar()},500)}).error(function(){n.loading=!1})};n.get()}function EditLeagueController(n){"use strict";var t=this;t.crossPlatform=n.crossPlatform=="True";t.accessMode=n.accessMode;t.handlingStyle=n.handlingStyle;t.coverImageId=n.coverImageId;t.platform=n.platform}function FriendsLeaguesController(n){"use strict";function i(i){typeof i=="undefined"&&(i=1);t.loading=!0;n.getFriendsLeagues(i).success(function(n){t.page=n.Page;t.pages=n.Pages;t.results=n.Leagues;t.loading=!1;t.initialised=!0}).error(function(){t.loading=!1})}function r(n){n>0&&n<=t.pages&&(t.page=n,i(t.page))}var t=this;t.loading=!1;t.initialised=!1;t.results=[];t.page=1;t.pages=0;i(t.page);angular.extend(t,{setPage:r})}function LeagueChampionshipController(n,t,i,r,u,f){"use strict";function v(){e.loading=!0;u.getLeagueChampionshipData(e.leagueId).success(function(n){e.disciplineLookup=n.DisciplineLookup;e.trackLookup=n.TrackLookup;e.timeOfDayLookup=n.TimeOfDayLookup;e.weatherLookup=n.WeatherLookup;e.locationLookup=n.LocationLookup;e.vehicleLookup=n.VehicleLookup;e.manufacturerLookup=n.ManufacturerLookup;e.manufacturerCountryLookup=n.ManufacturerCountryLookup;e.vehicleClassLookup=n.VehicleClassLookup;e.drivetrainLookup=n.DrivetrainLookup;e.bhpLookup=n.BhpLookup;e.rallyXDifficultyLookup=n.RallyXDifficultyLookup;e.rallyXLapsLookup=n.RallyXLapsLookup;e.favouriteTracks=n.FavouriteTracks;e.maximumEventsPerChampionship=n.MaximumEventsPerChampionship;e.maximumStagesPerEvent=n.MaximumStagesPerEvent;e.eventTemplate=n.EventTemplate;e.stageTemplate=n.StageTemplate;e.currentSeasonEndTime=n.CurrentSeasonEndTime;e.defaultLeagueEventGapHours=n.DefaultLeagueEventGapHours;e.defaultLeagueEventLengthHours=n.DefaultLeagueEventLengthHours;e.loading=!1}).error(function(){e.loading=!1})}function y(){e.loading=!0;u.getPendingLeagueChampionship(e.leagueId).success(function(n){e.championshipData=n;e.loading=!1}).error(function(){e.loading=!1})}function p(){var n,t;return e.championshipData.hasOwnProperty("Events")&&(n=r("orderBy")(e.championshipData.Events,"EventStart"),n.length)?(t=moment.utc(n[0].EventStart*1e3),t.format(o)):""}function w(){var n,t;return e.championshipData.hasOwnProperty("Events")&&(n=r("orderBy")(e.championshipData.Events,"-EventEnd"),n.length)?(t=moment.utc(n[0].EventEnd*1e3),t.format(o)):""}function b(n){var t=e.championshipData.Events[n];e.editing=n;e.event=angular.copy(t)}function k(){e.editing!==!1&&(e.championshipData.Events[e.editing]=e.event,e.editing=!1);e.newEvent=!1}function d(){e.newEvent&&h(e.editing);e.editing!==!1&&(e.editing=!1);e.newEvent=!1}function g(){if(e.championshipData.hasOwnProperty("Events"))return e.championshipData.Events.length<e.maximumEventsPerChampionship}function nt(){if(e.canAddEvent()){var n=angular.copy(e.eventTemplate),t,i,r,u;t=moment.unix(e.currentSeasonEndTime);e.championshipData.Events.length&&(u=e.championshipData.Events[e.championshipData.Events.length-1],t=moment.unix(u.EventEnd));i=t.add(e.defaultLeagueEventGapHours,"hours");r=moment(i).add(e.defaultLeagueEventLengthHours,"hours");n.EventStart=i.unix();n.EventEnd=r.unix();e.championshipData.Events.push(n);e.setActiveEvent(e.championshipData.Events.length-1);e.newEvent=!0}}function s(){e.loading=!0;e.cancelEventEdit();u.getCurrentLeagueChampionshipCopy(e.leagueId).success(function(n){e.championshipData=n;e.loading=!1}).error(function(){e.loading=!1})}function tt(){if(e.championshipData.Events.length){var n=f.open({ariaLabelledBy:"modal-title-top",ariaDescribedBy:"modal-body-top",templateUrl:"overwriteChampionship.html",size:"md"});n.result.then(function(){s()})}else s()}function h(n){e.championshipData.Events.splice(n,1)}function it(n){var t=f.open({ariaLabelledBy:"modal-title-top",ariaDescribedBy:"modal-body-top",templateUrl:"deleteEvent.html",size:"md"});t.result.then(function(){h(n)})}function rt(){var n=f.open({backdrop:"static",ariaLabelledBy:"modal-title-top",ariaDescribedBy:"modal-body-top",templateUrl:"saveChampionship.html",size:"md"});u.saveLeagueChampionship(e.championshipData,a).success(function(){n.close();f.open({ariaLabelledBy:"modal-title-top",ariaDescribedBy:"modal-body-top",templateUrl:"saveChampionshipOk.html",size:"md"})}).error(function(){n.dismiss();f.open({ariaLabelledBy:"modal-title-top",ariaDescribedBy:"modal-body-top",templateUrl:"saveChampionshipError.html",size:"md"})})}function c(){e.loading=!0;e.cancelEventEdit();u.generateLeagueChampionship(e.leagueId,e.generateDisciplineId,e.generateEventCount,e.generateStageCount,e.generateRandomise).success(function(n){angular.forEach(n.Events,function(n){angular.forEach(n.Stages,function(n){n.LocationId==0&&(n.LocationId=null);n.TrackId==0&&(n.TrackId=null);n.TimeOfDayId==0&&(n.TimeOfDayId=null);n.WeatherId==0&&(n.WeatherId=null)})});e.championshipData=n;e.loading=!1}).error(function(){e.loading=!1})}function ut(n){if(n)if(e.championshipData.Events.length){var t=f.open({ariaLabelledBy:"modal-title-top",ariaDescribedBy:"modal-body-top",templateUrl:"overwriteChampionship.html",size:"md"});t.result.then(function(){c()})}else c()}function l(n){return parseInt(n,10)===2}function ft(n){return parseInt(n,10)===3}function et(n){return l(n)||ft(n)}function ot(n){var i=null,r=null,t=0;if(Array.isArray(n))for(t=0;t<n.length;t=t+1){if(r=n[t],i!==null&&i.EventEnd>=r.EventStart)return!0;i=r}return!1}function st(n){if(Array.isArray(n)&&n.length>0){var t=n[0];if(t.EventStart<=e.currentSeasonEndTime)return!0}return!1}function ht(){v();y()}var e=this,o="DD/MM/YYYY HH:mm",a=angular.element('input[name="__RequestVerificationToken"]').attr("value");e.leagueId=t.leagueId;e.generateDisciplineId=1;e.generateEventCount=4;e.generateStageCount=6;e.generateRandomise=!0;e.disciplineLookup=[];e.trackLookup=[];e.timeOfDayLookup=[];e.weatherLookup=[];e.locationLookup=[];e.vehicleLookup=[];e.manufacturerLookup=[];e.manufacturerCountryLookup=[];e.vehicleClassLookup=[];e.drivetrainLookup=[];e.bhpLookup=[];e.rallyXDifficultyLookup=[];e.rallyXLapsLookup=[];e.favouriteTracks=[];e.maximumEventsPerChampionship=0;e.maximumStagesPerEvent=0;e.eventTemplate={};e.stageTemplate={};e.currentSeasonEndTime=0;e.defaultLeagueEventLengthHours=0;e.defaultLeagueEventGapHours=0;e.championshipData={};e.championshipStartDate="";e.championshipEndDate="";e.eventCount=0;e.editing=!1;e.event={};e.newEvent=!1;e.loading=!1;n.$watch(function(){return e.generateDisciplineId},function(n){l(n)&&(e.generateStageCount=1)});n.$watch(function(){return e.championshipData.Events},function(n){n!==undefined&&(e.eventCount=n.length);e.championshipStartDate=p();e.championshipEndDate=w()},!0);angular.extend(e,{setActiveEvent:b,saveActiveEvent:k,cancelEventEdit:d,canAddEvent:g,addEvent:nt,copyCurrentChampionshipConfirm:tt,deleteEventConfirm:it,saveChampionship:rt,generateChampionshipConfirm:ut,isCircuitRace:et,eventsOverlap:ot,championshipsOverlap:st});ht()}function LeagueInformationController(n,t){"use strict";var i=this;i.panel="description";i.paneConfig={showArrows:!1,hideFocus:!0,autoReinitialise:!0,contentWidth:"0px"};angular.element(t).bind("resize",function(){n.$broadcast("reinit-pane","league_information")})}function LeagueInviteController(n,t,i,r){"use strict";function e(){u.loading=!0;r.getFriendsNotInLeague(f).success(function(n){u.friends=n.Friends;u.loading=!1}).error(function(){u.loading=!1})}function h(){return u.friends.length>0}function c(){return u.selectedFriend!=null}function l(t){u.loading=!0;r.invitePlayer(f,t.Id,s).success(function(){u.loading=!1;e();n.$broadcast("player_invited_league")}).error(function(){u.loading=!1})}function o(){e()}var u=this,f=parseInt(i.teamId),s=angular.element('input[name="__RequestVerificationToken"]').attr("value");u.loading=!1;u.friends=[];u.selectedFriend=null;o();angular.extend(u,{hasFriends:h,friendSelected:c,inviteFriend:l});t.$on("league_roster_modified",function(){o()})}function LeagueRosterController(n,t,i,r,u,f){"use strict";function c(){e.loading=!0;u.getLeagueRoster(o).success(function(t){e.members=t.Members;n.$broadcast("reinit-pane","league_roster_scroll");e.loading=!1}).error(function(){e.loading=!1})}function l(t){e.loading=!0;u.promotePlayer(o,t,s).success(function(){e.loading=!1;n.$broadcast("league_roster_modified")}).error(function(){e.loading=!1})}function a(n,i){t.playerName=i;var r=f.open({ariaLabelledBy:"modal-title-top",ariaDescribedBy:"modal-body-top",templateUrl:"promotePlayer.html",size:"md",scope:t});r.result.then(function(){l(n)})}function v(t){e.loading=!0;u.demotePlayer(o,t,s).success(function(){e.loading=!1;n.$broadcast("league_roster_modified")}).error(function(){e.loading=!1})}function y(n,i){t.playerName=i;var r=f.open({ariaLabelledBy:"modal-title-top",ariaDescribedBy:"modal-body-top",templateUrl:"demotePlayer.html",size:"md",scope:t});r.result.then(function(){v(n)})}function p(t){e.loading=!0;u.kickPlayer(o,t,s).success(function(){e.loading=!1;n.$broadcast("league_roster_modified")}).error(function(){e.loading=!1})}function w(n,i){t.playerName=i;var r=f.open({ariaLabelledBy:"modal-title-top",ariaDescribedBy:"modal-body-top",templateUrl:"kickPlayer.html",size:"md",scope:t});r.result.then(function(){p(n)})}function b(t){e.loading=!0;u.acceptLeagueMembership(o,t,s).success(function(){e.loading=!1;n.$broadcast("league_roster_modified")}).error(function(){e.loading=!1})}function k(n,i){t.playerName=i;var r=f.open({ariaLabelledBy:"modal-title-top",ariaDescribedBy:"modal-body-top",templateUrl:"acceptLeagueMembership.html",size:"md",scope:t});r.result.then(function(){b(n)})}function d(t){e.loading=!0;u.rejectLeagueMembership(o,t,s).success(function(){e.loading=!1;n.$broadcast("league_roster_modified")}).error(function(){e.loading=!1})}function g(n,i){t.playerName=i;var r=f.open({ariaLabelledBy:"modal-title-top",ariaDescribedBy:"modal-body-top",templateUrl:"rejectLeagueMembership.html",size:"md",scope:t});r.result.then(function(){d(n)})}function h(){c()}var e=this,o=parseInt(r.teamId,10),s=angular.element('input[name="__RequestVerificationToken"]').attr("value");e.loading=!1;e.members=[];e.nameSearch="";e.paneConfig={showArrows:!1,hideFocus:!0,autoReinitialise:!0,contentWidth:"0px"};h();angular.extend(e,{promotePlayerConfirm:a,demotePlayerConfirm:y,kickPlayerConfirm:w,acceptLeagueMembershipConfirm:k,rejectLeagueMembershipConfirm:g});angular.element(i).bind("resize",function(){t.$broadcast("reinit-pane","league_roster")});t.$on("league_roster_modified",function(){h()});t.$on("player_invited_league",function(){h()})}function LeagueSearchController(n,t,i){"use strict";function f(n){typeof n=="undefined"&&(n=1);r.loading=!0;u=r.name.length>=e;i.getLeagues(u?r.name:"",u?"":r.filters.language,u?"":r.filters.status,r.filters.order,n).success(function(n){r.page=n.Page;r.pages=n.Pages;r.results=n.Leagues;r.loading=!1;r.initialised=!0}).error(function(){r.loading=!1})}function o(n){n>0&&n<=r.pages&&(r.page=n,f(r.page))}function s(){return r.name.trim().length>=e}function h(){return r.name.trim()!==""?!0:!1}var r=this,e=3,u=!1;r.loading=!1;r.initialised=!1;r.name=t.name;r.filters={language:t.language,status:t.status,order:t.order};r.results=[];r.page=1;r.pages=0;n.$watch(function(){return r.name},function(n,t){n!==undefined&&n.length==0&&t!==undefined&&t.length>0&&u&&f()});n.$watchCollection(function(){return r.filters},function(){f()},!0);angular.extend(r,{setPage:o,canSearchByName:s,searchingByName:h,get:f})}function LeagueStandingsController(n,t){"use strict";function r(n){typeof n=="undefined"&&(n=1);i.loading=!0;i.entries.length=0;t.getLeagueStandings(u,n).success(function(n){i.page=n.Page;i.pages=n.Pages;i.entries=n.Entries;i.loading=!1}).error(function(){i.loading=!1})}function f(){r(i.page)}var i=this,u=n.teamId;i.loading=!1;i.entries=[];i.page=1;i.pages=0;angular.extend(i,{setPage:r});f()}function MyLeaguesController(n,t){"use strict";function u(){i.loading=!0;t.getMyLeagues().success(function(n){i.results=n.Leagues;i.initialised=!0;i.loading=!1}).error(function(){i.loading=!1})}function r(){u()}var i=this;i.initialised=!1;i.loading=!1;i.results=[];r();n.$on("league_memberships_modified",function(){r()})}function SuggestedLeaguesController(n){"use strict";function i(){t.loading=!0;n.getSuggestedLeagues().success(function(n){t.results=n.Leagues;t.loading=!1}).error(function(){t.loading=!1})}function r(){i()}var t=this;t.loading=!1;t.results=[];r()}function UserMembershipRequestsController(n,t,i,r,u){"use strict";function s(){f.loading=!0;r.getUserMembershipRequests().success(function(n){f.requests=n.Requests;f.loading=!1}).error(function(){f.loading=!1})}function h(t){f.loading=!0;r.acceptLeague(t,e).success(function(){f.loading=!1;n.$broadcast("league_memberships_modified")}).error(function(){f.loading=!1})}function c(n,i){t.teamName=i;var r=u.open({ariaLabelledBy:"modal-title-top",ariaDescribedBy:"modal-body-top",templateUrl:"acceptLeague.html",size:"md",scope:t});r.result.then(function(){h(n)})}function l(t){f.loading=!0;r.rejectLeague(t,e).success(function(){f.loading=!1;n.$broadcast("league_memberships_modified")}).error(function(){f.loading=!1})}function a(n,i){t.teamName=i;var r=u.open({ariaLabelledBy:"modal-title-top",ariaDescribedBy:"modal-body-top",templateUrl:"rejectLeague.html",size:"md",scope:t});r.result.then(function(){l(n)})}function o(){s()}var f=this,e=angular.element('input[name="__RequestVerificationToken"]').attr("value");f.loading=!1;f.requests=[];f.paneConfig={showArrows:!1,hideFocus:!0,autoReinitialise:!0,contentWidth:"0px"};angular.extend(f,{acceptLeagueConfirm:c,rejectLeagueConfirm:a});o();angular.element(i).bind("resize",function(){t.$broadcast("reinit-pane","pending_requests")});t.$on("league_memberships_modified",function(){o()})}function WhatAreLeaguesController(n){"use strict";function i(){t.expand=!t.expand}var t=this;t.expandable=n.expandable.toLowerCase()==="true";t.expand=!0;t.expandable&&(t.expand=!1);angular.extend(t,{toggleExpand:i})}function ESportsHubController(n,t,i){"use strict";function r(){n.loading=!0;i.getESportsNewsPosts().success(function(t){n.loading=!1;n.newsAll=t}).error(function(){n.failed=!0;n.loading=!1})}function u(){r()}n.isLoading=!0;n.failed=!1;n.newsAll=[];n.sce=t;u()}function HubController(n,t,i){"use strict";function r(t){var i,r,u;if(t)for(i=0;i<=t.length;i++)r=t.shift(),n.newsAll.push(r),u=i%2==0,u?n.newsLeft.push(r):n.newsRight.push(r)}function u(){n.loading=!0;i.getNewsPosts().success(function(t){n.loading=!1;r(t)}).error(function(){n.failed=!0;n.loading=!1})}function f(){u()}n.isLoading=!0;n.failed=!1;n.newsAll=[];n.newsLeft=[];n.newsRight=[];n.sce=t;n.canAdd=!0;f()}function AchievementsController(n,t,i,r,u){"use strict";function s(){f.loading=!0;u.getAchievements(f.id).success(function(n){e=n.Achievements;f.loading=!1}).error(function(){f.loading=!1})}function h(){return i(e,{IsUnlocked:!1})}function o(){return i(e,{IsUnlocked:!0})}function c(){var n=[];return f.display=="unlocked"?(n=o(),r(n,["-DateUnlocked"])):f.display=="locked"?(n=h(),r(n,["Name"])):(n=e,r(n,["-IsUnlocked","-DateUnlocked","Name"]))}function l(){var n=0,t;return e.length>0&&(t=o(),n=100/e.length*t.length),n+"%"}function a(){s()}var f=this,e=[];f.id=t.playerId;f.display="all";angular.extend(f,{completePercentage:l,getAchievements:c});a()}function ChallengeHistoryController(n,t,i,r,u){"use strict";function l(n,t){var i=null;return function(){var r=this,u=arguments;clearTimeout(i);i=setTimeout(function(){n.apply(r,u)},t)}}function a(){return Object.keys(f.data).length!==0}function v(){return e!==null&&parseInt(e,10)>0}function y(n){var t=.4;return n>66?t=1:n>33&&(t=.7),t}function p(t,i){var r=new google.visualization.DataTable,u={orientation:"horizontal",legend:"none",colors:["#72cecd","#82ce73"],areaOpacity:.5,height:360,chartArea:{left:"10%",top:"10%",width:"85%",height:"80%"},hAxis:{textStyle:{fontName:n.fontName}},vAxis:{gridlines:{count:4},textStyle:{fontName:n.fontName},ticks:[{v:0,f:t["PROFILE.BRONZE"].toUpperCase()},{v:34,f:t["PROFILE.SILVER"].toUpperCase()},{v:67,f:t["PROFILE.GOLD"].toUpperCase()},{v:100,f:""}]}},o=new google.visualization.BarChart(document.getElementById("challenge_history_chart")),e;i&&angular.extend(u,n.animation);f.versusProfileAvailable()?(e={tooltip:{trigger:"none"}},u=$.extend({},e,u),r.addColumn("string","Date"),r.addColumn("number",f.data.PlayerName+" percentile"),r.addColumn("number",f.data.VersusName+" percentile"),angular.forEach(f.data.Results,function(n,t){r.addRow([t,n.PlayerPercentile,n.VersusPercentile])})):(r.addColumn("string","Date"),r.addColumn("number",f.data.PlayerName),r.addColumn({type:"string",role:"tooltip"}),r.addColumn({type:"string",role:"style"}),angular.forEach(f.data.Results,function(n,i){var u=y(n.PlayerPercentile);r.addRow([i,n.PlayerPercentile,sprintf(t["PROFILE.YOU_FINISHED"],n.Participants,n.PlayerPosition).toUpperCase(),"opacity: "+u])}));o.draw(r,u)}function h(n){u(["PROFILE.BRONZE","PROFILE.SILVER","PROFILE.GOLD","PROFILE.YOU_FINISHED"]).then(function(t){p(t,n)})}function s(){f.loading=!0;r.getChallengeHistory(o,f.eventType,e).success(function(n){f.data=n;f.loading=!1}).error(function(){f.loading=!1})}var f=this,c=angular.element(t),o=0,e=0;f.eventType=1;f.data=[];f.loading=!1;n.$watch(function(){return o},function(){s()});n.$watch(function(){return f.eventType},function(){s()});n.$watch(function(){return e},function(){s()});n.$watch(function(){return f.data},function(){i(function(){h(!0)},100)});n.$on("playerChanged",function(n,t){o=t});n.$on("versusChanged",function(n,t){e=t});c.bind("resize",l(function(){h(!1)},250));angular.extend(f,{hasData:a,versusProfileAvailable:v})}function HandlingModeController(n,t,i){"use strict";function e(){t.getHandlingMode().success(function(n){u=n.isAltHandling;r.isAltHandling=n.isAltHandling})}function o(n){t.setHandlingMode(n,f).success(function(n){u=n.isAltHandling;i.$emit("HANDLING_MODE_CHANGED",{isAltHandling:n.isAltHandling})}).error(function(){r.isAltHandling=u})}var r=this,f=angular.element('input[name="__RequestVerificationToken"]').attr("value"),u=null;r.isAltHandling=null;n.$watch(function(){return r.isAltHandling},function(n){n!==u&&o(n)});e()}function PlayerStatisticsController(n,t,i,r,u){"use strict";function a(){return Math.floor(Math.random()*n.slots.length)}function v(){var t=Math.floor(Math.random()*n.stats.length);return n.stats[t]}function h(){for(;;){var n=v();if(f.indexOf(n.Id)==-1)return n}}function y(){var t,i;for(n.slots=[],t=0;t<l;t++)i=h(),n.slots.push(i),f.push(i.Id)}function p(){for(var u=!1,t;!u;)if(t=a(),t!=s){u=!0;var l=n.slots[t].Id,v=f.indexOf(l),e=h(),c="#fun_stats_slot_"+t,i=angular.element(c);i.animate({opacity:0},o,function(){n.slots.splice(t,1,e);f.splice(v,1,e.Id);s=t;i=angular.element(c);i.animate({opacity:0},0);r(function(){i.animate({opacity:1},o)},250)})}}function w(){i(function(){e||p()},c)}function b(){n.loading=!0;var i={playerId:n.id};t({url:u.playerStatsEndpoint(),method:"POST",data:i}).success(function(t){n.stats=t.PlayerStats;y();w();n.loading=!1}).error(function(){n.loading=!1})}var c=5e3,o=500,e=!1,l=6,s=-1,f=[];n.stats=[];n.slots=[];n.loading=!1;n.$watch("stats",function(){angular.forEach(n.stats,function(n){var t=new Image;t.src=n.Image})});n.mouseEnter=function(){e=!0};n.mouseLeave=function(){e=!1};b()}function PlayerController(n,t){"use strict";var i=this;i.fontName="Revolution Gothic W03 Regular";i.fontSizeSmall=14;i.fontSizeLarge=18;i.animation={animation:{startup:!0,duration:500}};i.id=parseInt(t.profileId,10);i.versusId=0;i.setVersusId=function(n){i.versusId=n};n.$watch(function(){return i.id},function(t){n.$broadcast("playerChanged",t)});n.$watch(function(){return i.versusId},function(t){n.$broadcast("versusChanged",t)})}function ProfileController(n,t,i){"use strict";function u(){return r.versusProfile!==null}function f(n){r.loading=!0;i.getPlayerProfile(n).success(function(n){r.loading=!1;r.profile=n}).error(function(){r.loading=!1;r.profile=null})}function e(n){r.loading=!0;i.getPlayerProfile(n).success(function(n){r.loading=!1;r.versusProfile=n}).error(function(){r.loading=!1;r.versusProfile=null})}function o(){var n=0;return r.profile!==null&&r.profile.TotalFinished>0&&(n=100/r.profile.TotalFinished*r.profile.RallyFinished),n+"%"}function s(){var n=0;return r.profile!==null&&r.profile.TotalFinished>0&&(n=100/r.profile.TotalFinished*r.profile.RallycrossFinished),n+"%"}function h(){var n=0;return r.profile!==null&&r.profile.TotalFinished>0&&(n=100/r.profile.TotalFinished*r.profile.LandrushFinished),n+"%"}var r=this,c=angular.element(t);r.id=0;r.versusId=0;r.profile=null;r.versusProfile=null;r.loading=!1;n.$watch(function(){return r.id},function(){r.id===0?r.profile=null:f(r.id)});n.$watch(function(){return r.versusId},function(){r.versusId===0?r.versusProfile=null:e(r.versusId)});n.$on("playerChanged",function(n,t){r.id=t});n.$on("versusChanged",function(n,t){r.versusId=t});angular.extend(r,{getRallyPercentage:o,getRallycrossPercentage:s,getLandrushPercentage:h,versusProfileAvailable:u})}function SocialShareController(){"use strict";function t(n,t,i,r){n.preventDefault();var t=t||"500",i=i||"400",u=r?"yes":"no",f=typeof n.target.attributes.title!="undefined"?n.target.attributes.title:"Social Share",e="width="+t+",height="+i+",resizable="+u,o=window.open(n.currentTarget.href,f,e).focus()}var n=this;angular.extend(n,{sharePopup:t})}function AllTimeGreatsController(n,t){"use strict";function r(){i.loading=!0;t.getAllTimeGreatsTracks().success(function(n){i.page=n.Page;i.pages=n.Pages;i.data=n.Tracks;i.loading=!1;i.initialised=!0}).error(function(){i.loading=!1})}function u(n){i.page=n}var i=this;i.loading=!1;i.initialised=!1;i.page=1;i.pages=0;i.data=null;angular.extend(i,{setPage:u});n.$watch(function(){return i.page},function(n){r(n)})}function FeaturedTracksController(n,t){"use strict";function r(){i.loading=!0;t.getFeaturedTracks().success(function(n){i.data=n.FeaturedTracks;i.loading=!1}).error(function(){i.loading=!1})}function u(){r()}var i=this;i.loading=!1;i.data=null;u()}function MyStagesController(n,t,i){"use strict";function u(){r.loading=!0;i.getFavouriteTracksStatus().success(function(n){r.slotsTotal=n.SlotsTotal;r.slotsUsed=n.SlotsUsed;r.loading=!1}).error(function(){r.loading=!1})}function f(){u()}var r=this;r.loading=!1;r.data=null;t.$on("added_favourite_track",function(){u()});t.$on("removed_favourite_track",function(){u()});f()}function NewAndNoteworthyController(n,t){"use strict";function r(n){i.loading=!0;t.getNewAndNoteworthyTracks(n,i.filters.locationId!==null?i.filters.locationId:0).success(function(n){i.page=n.Page;i.pages=n.Pages;i.locationLookup=n.Locations;i.data=n.Tracks;i.loading=!1;i.initialised=!0}).error(function(){i.loading=!1})}function u(n){i.page=n}var i=this;i.loading=!1;i.initialised=!1;i.page=1;i.pages=0;i.filters={locationId:null};i.data=null;i.locationLookup=[];angular.extend(i,{setPage:u});n.$watch(function(){return i.filters},function(){i.page=1;r(i.page)},!0);n.$watch(function(){return i.page},function(n){r(n)})}function ViewStageController(n,t,i,r){"use strict";function f(n){u.loading=!0;i.getTrackDetails(n).success(function(n){u.data=n;u.loading=!1}).error(function(){u.loading=!1})}function e(n){if(!u.loading){var i=u.data.Rating-n,t="";return i>0&&(t+=" full"),t}return}function o(n){if(n)return r.toLocaleString(n,{minimumFractionDigits:2,maximumFractionDigits:2})}function s(n,t,i,r){n.preventDefault();var t=t||"500",i=i||"400",u=r?"yes":"no",f=typeof n.target.attributes.title!="undefined"?n.target.attributes.title:"Social Share",e="width="+t+",height="+i+",resizable="+u,o=window.open(n.currentTarget.href,f,e).focus()}function h(){u.shareUrl=document.location.href;var n=document.location.href.substr(document.location.href.lastIndexOf("/")+1);f(n)}var u=this;u.loading=!1;u.splineLoaded=!1;u.data=null;u.loaded=function(){$(window).trigger("resize");u.splineLoaded=!0};angular.extend(u,{getStarClass:e,sharePopup:s,formatDistances:o});h()}function HallOfFameController(n,t,i,r,u,f){"use strict";function l(n){if(history.replaceState){var i=n?"?su="+n:"",t=window.location.protocol+"//"+window.location.host+window.location.pathname+i;window.history.replaceState({path:t},"",t)}}function a(n,t){return f.find(t,{Id:n})}function v(n){return n==="region-only"&&e?e.NationalityId:0}function s(t){var i=e||{},r=t!==undefined?t:i.Id,f=v(n.regionFilter);n.loading||(n.loading=!0,u.getHallOfFame(r,f).success(function(t){n.totalFiltered=t.TotalFiltered||0;n.winners=t.Winners||[];e=a(t.FocusUserId,n.winners);h=t.IsAuthenticated;c=t.IsAuthenticatedUserOnHallOfFame;o=t.AuthenticatedUserId;n.loading=!1}).error(function(){n.loading=!1}))}var e=null,h=!1,c=!1,o=null;n.loading=!1;n.totalFiltered=0;n.regionFilter="everyone";n.winners=[];n.isFocus=function(n){return e?n===e.Id:!1};n.isFilterDisabled=function(){return!e||n.loading};n.isFindMeDisabled=function(){return h==!0&&c==!1||n.loading};n.findMe=function(){h?c&&o&&(l(o),s(o)):i.location.href=r+"/find-me"};n.goToTop=function(){e=null;l(null);s(null)};n.$watch(function(){return n.regionFilter},function(){s()});s(t.su)}function cmConfirmClickController(n,t,i,r){var u=this;u.content=t;u.confirm=function(){n.close();i.triggerHandler("clickConfirmed");r.confirmedClick()};u.cancel=function(){n.dismiss()}}function cmConfirmClick(n){function t(t,i,r){function u(){var u=t.$eval(r.size)||"md",f=t.$eval(r.title)||"Default Title",e=t.$eval(r.message)||"Default Message";n.open(u,f,e,i,t)}i.on("click",u);t.$on("$destroy",function(){i.off("click",u)})}return{scope:{confirmedClick:"&"},link:t}}function cmModalFactory(n){var t=function(t,i,r,u,f){return n.open({controller:"cmConfirmClickController",controllerAs:"cm",templateUrl:"templates/cmModal.html",size:t,resolve:{items:function(){return{title:i,message:r}},elm:u,scope:f}})};return{open:t}}function cmCopyToClipboard(n){"use strict";function r(n){t.val(n);i.append(t);t[0].select();try{var r=document.execCommand("copy");if(!r)throw r;}catch(u){console.log("failed to copy",n)}t.remove()}var i=angular.element(n.document.body),t=angular.element("<textarea/>");return t.css({position:"fixed",opacity:"0"}),{restrict:"A",link:function(n,t,i){t.bind("click",function(){r(i.cmCopyToClipboard)})}}}function cmDisableAnimate(n){"use strict";return{restrict:"A",scope:!1,link:function(t,i){n.enabled(i,!1)}}}function cmDisposeAfter(){"use strict";return{restrict:"A",scope:{disposeAfter:"@cmDisposeAfter"},controller:cmDisposeAfterController}}function cmDisposeAfterController(n,t,i){"use strict";var r=1e3;i(function(){t.fadeOut(r);i(function(){t.remove()},r)},n.disposeAfter)}function cmEventFlag(){"use strict";return{restrict:"A",scope:{eventLocation:"=",eventTrack:"="},controller:cmEventFlagController}}function cmEventFlagController(n,t,i){"use strict";n.$watchCollection("[eventLocation,eventTrack]",function(){})}function cmEventImage(){"use strict";return{restrict:"A",scope:{eventLocation:"=",eventTime:"=",eventWeather:"="},link:function(n,t){var f,u,r,i;if(n.eventLocation!==undefined||n.eventTime!==undefined||n.eventWeather!==undefined){u=n.eventLocation;switch(n.eventTime){case 0:case 10:case 1:case 2:case 3:r="morning";break;case 5:case 6:case 4:r="midday";break;case 9:r="night";break;case 7:r="sunset";break;case 8:r="twilight"}switch(n.eventWeather){case"eCloudy":case"eCloudPartlyCloudy":case"eCloudPartlyCloudyDay":i="cloudy";break;case"eClear":case"eClearDay":i="clear";break;case"eFog":case"eFogPatches":case"eCloudOvercast":i="overcast";break;case"eFogMist":i="mist";break;case"eRainShowers":case"eRainMediumRain":case"eRainHeavyRain":case"eRainHeavyRainShowers":case"eRainLightRain":case"eRainLightRainShowers":case"eRainShowers":case"eRainShowersDay":i="rain";break;case"eSnowLightSnow":case"eSnowLightSnowShowers":case"eSnowMediumSnow":case"eSnowHeavySnow":case"eSnowHeavySnowShowers":i="snow"}f="/UI/compiled/images/location/clubs/"+u+"/"+u+"_route_0_"+r+"_"+i+"_preview.jpg";t.attr("src",f)}}}}function cmFocus(n){"use strict";return{restrict:"A",link:function(t,i,r){var u=n(r.cmFocus);t.$watch(u,function(n){n===!0&&(i[0].focus(),t.trigger=!1)})}}}function cmLeagueChampionshipEvent(n){"use strict";return{restrict:"E",scope:{leagueId:"=",eventIndex:"=",event:"=",maxStages:"=",stageTemplate:"=",disciplineLookup:"=",trackLookup:"=",timeOfDayLookup:"=",weatherLookup:"=",locationLookup:"=",vehicleLookup:"=",manufacturerLookup:"=",vehicleClassLookup:"=",manufacturerCountryLookup:"=",drivetrainLookup:"=",bhpLookup:"=",rallyXDifficultyLookup:"=",rallyXLapsLookup:"=",favouriteTracks:"=",onCompleted:"&",onCancel:"&"},controller:cmLeagueChampionshipEventController,templateUrl:n+"/clubs/snippets/club-championship-event",replace:!0}}function cmLeagueChampionshipEventController(n,t,i,r){"use strict";function p(n){var t=moment.utc(n,u+" Z"),i=t.toDate();return moment(i).format(u)}function w(n){var t=moment(n,u),i=t.toDate();return moment(i).add((new Date).getTimezoneOffset(),"minutes").unix()}function b(){return n.event.VehicleIds.length?s:n.event.ManufacturerIds.length?h:n.event.VehicleClassIds.length?c:n.event.MftrCountryIds.length?l:n.event.DrivetrainIds.length?a:n.event.MaxBhp!==0?v:null}function k(){n.event.VehicleIds=[];n.event.VehicleClassIds=[];n.event.MftrCountryIds=[];n.event.DrivetrainIds=[];n.event.ManufacturerIds=[];n.event.MaxBhp=0}function e(n){return typeof n=="string"||n instanceof String}function tt(t){var r=i(n.trackLookup,{Id:t},!0);if(r.length)return r[0].LocationId}function d(){return n.isCircuitRace()?"career":"trackgen"}var u="MM/DD/YYYY HH:mm",o=!1,f=0,s="VehicleIds",h="ManufacturerIds",c="VehicleClassIds",l="MftrCountryIds",a="DrivetrainIds",v="MaxBhp",g=moment.unix(n.event.EventStart).format(u),nt=moment.unix(n.event.EventEnd).format(u),y="career";n.vehicleRestrictionTypes=[{Name:"Vehicle",List:s},{Name:"Manufacturer",List:h},{Name:"Vehicle class",List:c},{Name:"Manufacturer country",List:l},{Name:"Drivetrain",List:a},{Name:"BHP",List:v}];n.stageTemplate.LocationId=null;n.stageTemplate.TrackId=null;n.stageTemplate.TimeOfDayId=null;n.stageTemplate.WeatherId=null;n.selectedRestrictionType=null;n.originalRestrictionType=null;n.localDateRange={};n.stageSettings=[];n.stageCount=0;n.trackType=y;n.loading=!1;n.setActiveStage=function(t){f=t;f in n.event.Stages&&(n.event.Stages[f].trackType||(n.event.Stages[f].trackType=d()))};n.isActiveStage=function(n){return n===f};n.getLocationName=function(t){var r=i(n.locationLookup,{Id:t},!0);if(r.length)return r[0].Name};n.getTrackName=function(t){var r=i(n.trackLookup,{Id:t},!0);if(r.length)return r[0].Name};n.getTracks=function(t){var r={DisciplineId:n.event.DisciplineId};return n.isCircuitRace()||angular.extend(r,{LocationId:t}),i(n.trackLookup,r,!0)};n.getTimeOfDayName=function(t,r){var u;if(t>0&&(u=i(n.timeOfDayLookup,{Id:r,LocationId:t},!0),u.length))return u[0].Name};n.getWeatherName=function(t,r){var u;if(t>0&&(u=i(n.weatherLookup,{Id:r,LocationId:t},!0),u.length))return u[0].Name};n.isRallycross=function(){return typeof n.event=="object"?parseInt(n.event.DisciplineId,10)===2:!1};n.isLandrush=function(){return typeof n.event=="object"?parseInt(n.event.DisciplineId,10)===3:!1};n.isCircuitRace=function(){return n.isRallycross()||n.isLandrush()};n.canAddStage=function(){return n.isCircuitRace()?n.event.Stages.length===0:n.event.Stages.length<n.maxStages};n.addStage=function(t){if(typeof t=="undefined"&&(t=!1),n.canAddStage()){var i=angular.copy(n.stageTemplate);n.event.Stages.push(i);t&&n.setActiveStage(n.event.Stages.length-1)}};n.deleteStage=function(t){n.isActiveStage(t)&&n.setActiveStage(0);n.event.Stages.splice(t,1)};n.randomiseStage=function(t){n.loading=!0;r.getRandomLeagueChampionshipStage(n.leagueId,n.event.DisciplineId).success(function(i){i.trackType=d();n.event.Stages[t]=i;n.loading=!1}).error(function(){n.loading=!1})};n.completed=function(t){t&&n.onCompleted()};n.cancel=function(){n.onCancel()};n.telemetryImagePos=function(n,t,i,r){var o=i-t,u=0,f=0,e=5;return u=Math.floor(100/o*(r-t)/(100/e)),u===e&&(u=u-1),f=-(u*n),f+"px"};n.setLocation=function(t){if(n.isCircuitRace()){var i=tt(n.event.Stages[t].TrackId);n.event.Stages[t].LocationId=i}};n.lapsValidHeat=function(t){return n.isCircuitRace()&&t.RallyXLapCountHeat>0&&t.RallyXLapCountSemi===0?!1:!0};n.lapsValidSemi=function(t){return n.isCircuitRace()&&t.RallyXLapCountSemi>0&&t.RallyXLapCountFinal===0?!1:!0};n.lapsValidFinal=function(t){return n.isCircuitRace()&&t.RallyXLapCountFinal===0?!1:!0};n.startsInPast=function(n){var t=e(n.startDate)?moment(n.startDate,u):n.startDate;return moment()>t?!1:!0};n.$watch(function(){return n.event.DisciplineId},function(){if(o){k();angular.forEach(n.event.Stages,function(t){t.LocationId=null;t.trackType=y;t.TrackId=null;t.WeatherId=null;n.isCircuitRace()?(t.ServiceArea=!1,t.VehicleTuning=!1,t.Checkpoint=!1):(t.RallyXDifficulty=0,t.RallyXLapCountHeat=0,t.RallyXLapCountSemi=0,t.RallyXLapCountFinal=0)});var t=angular.element("select.vehicle, select.manufacturer, select.vehicle_class, select.country, select.drivetrain");angular.forEach(t,function(n){angular.element(n).triggerHandler("chosen:updated")})}else o=!0});n.$watch("localDateRange",function(t){if(!e(t.startDate)&&!e(t.endDate)){var i=t.startDate.format(u),r=t.endDate.format(u);n.event.EventStart=w(i);n.event.EventEnd=w(r)}});n.$watch("selectedRestrictionType",function(t){t!==n.originalRestrictionType&&k()});n.$watch("event.Stages",function(t){n.stageCount=t.length},!0);n.$watch("stageCount",function(t){t>n.event.Stages.length&&n.addStage();t<n.event.Stages.length&&n.deleteStage(n.event.Stages.length-1)});n.setActiveStage(0);n.originalRestrictionType=b();n.selectedRestrictionType=b();n.localDateRange={startDate:p(g),endDate:p(nt)}}function cmPreventDefault(){"use strict";return{restrict:"A",link:function(n,t){t.bind("click",function(n){n.preventDefault()})}}}function cmValidated(n,t){"use strict";return{restrict:"A",link:function(i,r,u){var f;if(u.name&&(f=u.name.split("."),f.length==2)){var e=f[0],o=f[1],s=t.get(u.validatedContext);s.hasError(e,o)?r.closest(".form-group").addClass("has-error"):r.closest(".form-group").removeClass("has-error");n.$on(t.getUpdateEventName(u.validatedContext),function(n,t){t.hasError(e,o)?r.closest(".form-group").addClass("has-error"):r.closest(".form-group").removeClass("has-error")})}}}}var timerModule,app;angular.module("cmComponents",["ngAnimate"]);angular.module("cmDirectives",["cmServices"]);angular.module("cmServices",[]);angular.module("cmServices").service("clubService",clubService);clubService.$inject=["$http","endpointBaseUrlGlobal","CreateChampionshipModel"];angular.module("cmServices").service("cryptoService",cryptoService);angular.module("cmServices").service("eventService",EventService);EventService.$inject=["$http","endpointBaseUrlGlobal"];angular.module("cmServices").service("formatService",FormatService);FormatService.$inject=["$translate"];angular.module("cmServices").service("handlingModeService",handlingModeService);handlingModeService.$inject=["$http","endpointBaseUrl"];angular.module("cmServices").service("leaderboardService",LeaderboardService);LeaderboardService.$inject=["$http","endpointBaseUrlGlobal"];angular.module("cmServices").service("leagueService",leagueService);leagueService.$inject=["$http","endpointBaseUrl"];angular.module("cmServices").service("optionsService",OptionsService);OptionsService.$inject=["$http","_","endpointBaseUrlGlobal"];angular.module("cmServices").service("playerService",playerService);playerService.$inject=["$http","endpointBaseUrl"];angular.module("cmServices").service("proTourService",proTourService);proTourService.$inject=["$http","endpointBaseUrl"];angular.module("cmServices").service("retailerLinkService",retailerLinkService);retailerLinkService.$inject=["$http","endpointBaseUrl"];angular.module("cmServices").service("socialService",socialService);socialService.$inject=["$http","endpointBaseUrlGlobal"];angular.module("cmServices").service("trackService",trackService);trackService.$inject=["$http","$cacheFactory","endpointBaseUrl","endpointBaseUrlGlobal"];angular.module("cmServices").service("tripleCrownService",tripleCrownService);tripleCrownService.$inject=["$http","endpointBaseUrl"];angular.module("cmServices").service("validationService",validationService);validationService.$inject=["$rootScope","validationErrorsModel"];angular.module("aboutControllers",[]);angular.module("docsControllers",[]);angular.module("eventsControllers",["cmServices"]);angular.module("utilFilters",[]).filter("index",function(){return function(n,t){if(t||(t="index"),typeof n!="undefined"){for(var i=0;i<n.length;++i)n[i][t]=i;return n}}});angular.module("homeControllers",["cmServices"]);angular.module("leagueControllers",["cmServices"]);angular.module("newsControllers",[]);angular.module("profileControllers",["cmServices"]);angular.module("trackControllers",["cmServices"]);angular.module("tripleCrownControllers",[]);angular.module("aboutControllers").controller("AboutController",AboutController);AboutController.$inject=["$scope","$timeout"];angular.module("aboutControllers").controller("PeripheralsController",PeripheralsController);PeripheralsController.$inject=["$scope"];angular.module("leagueControllers").controller("ClubLeaderboardController",ClubLeaderboardController);ClubLeaderboardController.$inject=["$scope","$rootScope","$attrs","$timeout","optionsService","clubService","DateRangeModel"];angular.module("leagueControllers").controller("CreateChampionshipController",CreateChampionshipController);CreateChampionshipController.$inject=["$scope","$rootScope","$attrs","$timeout","$filter","GenerateChampionshipModel","ChampionshipModel","optionsService","clubService","validationService","$window","endpointBaseUrl"];angular.module("leagueControllers").controller("GetChampionshipController",GetChampionshipController);GetChampionshipController.$inject=["$scope","$rootScope","$attrs","$timeout","ChampionshipModel","optionsService","clubService"];angular.module("docsControllers").controller("LanguageController",LanguageController);LanguageController.$inject=["$scope","$attrs","$window","endpointBaseUrl"];angular.module("eventsControllers").controller("EsportsController",EsportsController);EsportsController.$inject=["$scope","$rootScope","$attrs","$timeout","eventService","leaderboardService"];angular.module("eventsControllers").controller("ProTourController",ProTourController);ProTourController.$inject=["$scope","$http","$interval","$timeout","filterFilter","proTourService","$rootScope"];angular.module("homeControllers").controller("BlogController",BlogController);BlogController.$inject=["$scope","$sce","socialService"];angular.module("homeControllers").controller("ChallengeLeaderboardController",ChallengeLeaderboardController);ChallengeLeaderboardController.$inject=["$scope","$attrs","$interval","leaderboardService"];angular.module("homeControllers").controller("ChallengeToggleController",ChallengeToggleController);ChallengeToggleController.$inject=["$scope","$attrs","$interval"];angular.module("homeControllers").controller("ChallengeController",ChallengeController);ChallengeController.$inject=["$scope","$attrs","eventService","leaderboardService"];angular.module("homeControllers").controller("DirtTvController",DirtTvController);DirtTvController.$inject=["$scope","$interval","socialService"];angular.module("homeControllers").controller("ForumController",ForumController);ForumController.$inject=["$scope","$window","socialService"];angular.module("homeControllers").controller("TrailerController",TrailerController);TrailerController.$inject=[];angular.module("homeControllers").controller("TwitterController",TwitterController);TwitterController.$inject=["$scope","$sce","$window","socialService"];angular.module("leagueControllers").controller("EditLeagueController",EditLeagueController);EditLeagueController.$inject=["$attrs"];angular.module("leagueControllers").controller("FriendsLeaguesController",FriendsLeaguesController);FriendsLeaguesController.$inject=["leagueService"];angular.module("leagueControllers").controller("LeagueChampionshipController",LeagueChampionshipController);LeagueChampionshipController.$inject=["$scope","$attrs","$timeout","$filter","leagueService","$uibModal"];angular.module("leagueControllers").controller("LeagueInformationController",LeagueInformationController);LeagueInformationController.$inject=["$scope","$window"];angular.module("leagueControllers").controller("LeagueInviteController",LeagueInviteController);LeagueInviteController.$inject=["$rootScope","$scope","$attrs","leagueService"];angular.module("leagueControllers").controller("LeagueRosterController",LeagueRosterController);LeagueRosterController.$inject=["$rootScope","$scope","$window","$attrs","leagueService","$uibModal"];angular.module("leagueControllers").controller("LeagueSearchController",LeagueSearchController);LeagueSearchController.$inject=["$scope","$attrs","leagueService"];angular.module("leagueControllers").controller("LeagueStandingsController",LeagueStandingsController);LeagueStandingsController.$inject=["$attrs","leagueService"];angular.module("leagueControllers").controller("MyLeaguesController",MyLeaguesController);MyLeaguesController.$inject=["$scope","leagueService"];angular.module("leagueControllers").controller("SuggestedLeaguesController",SuggestedLeaguesController);SuggestedLeaguesController.$inject=["leagueService"];angular.module("leagueControllers").controller("UserMembershipRequestsController",UserMembershipRequestsController);UserMembershipRequestsController.$inject=["$rootScope","$scope","$window","leagueService","$uibModal"];angular.module("leagueControllers").controller("WhatAreLeaguesController",WhatAreLeaguesController);WhatAreLeaguesController.$inject=["$attrs"];angular.module("newsControllers").controller("ESportsHubController",ESportsHubController);ESportsHubController.$inject=["$scope","$sce","socialService"];angular.module("newsControllers").controller("HubController",HubController);HubController.$inject=["$scope","$sce","socialService"];angular.module("profileControllers").controller("AchievementsController",AchievementsController);AchievementsController.$inject=["$scope","$attrs","filterFilter","orderByFilter","playerService"];angular.module("profileControllers").controller("ChallengeHistoryController",ChallengeHistoryController);ChallengeHistoryController.$inject=["$scope","$window","$timeout","playerService","$translate"];angular.module("profileControllers").controller("handlingModeController",HandlingModeController);HandlingModeController.$inject=["$scope","handlingModeService","$rootScope"];angular.module("profileControllers").controller("PlayerStatisticsController",PlayerStatisticsController);PlayerStatisticsController.$inject=["$scope","$http","$interval","$timeout","profileEndpointService"];angular.module("profileControllers").controller("PlayerController",PlayerController);PlayerController.$inject=["$scope","$attrs"];angular.module("profileControllers").controller("ProfileController",ProfileController);ProfileController.$inject=["$scope","$window","playerService"];angular.module("leagueControllers").controller("SocialShareController",SocialShareController);SocialShareController.$inject=["$scope","$rootScope","$attrs","$timeout","$filter","$window"];angular.module("trackControllers").controller("AllTimeGreatsController",AllTimeGreatsController);AllTimeGreatsController.$inject=["$scope","trackService"];angular.module("trackControllers").controller("FeaturedTracksController",FeaturedTracksController);FeaturedTracksController.$inject=["$scope","trackService"];angular.module("trackControllers").controller("MyStagesController",MyStagesController);MyStagesController.$inject=["$scope","$rootScope","trackService"];angular.module("trackControllers").controller("NewAndNoteworthyController",NewAndNoteworthyController);NewAndNoteworthyController.$inject=["$scope","trackService"];angular.module("trackControllers").controller("ViewStageController",ViewStageController);ViewStageController.$inject=["$scope","$rootScope","trackService","formatService"];angular.module("tripleCrownControllers").controller("HallOfFameController",HallOfFameController);HallOfFameController.$inject=["$scope","$attrs","$window","endpointBaseUrl","tripleCrownService","_"],function(){angular.module("ngJScrollPane",[]);angular.module("ngJScrollPane").directive("scrollPane",["$timeout",function(n){return{restrict:"A",transclude:!0,template:'<div class="scroll-pane"><div ng-transclude><\/div><\/div>',link:function(t,i,r){var e,u,f;return e={},r.scrollConfig&&(e=t.$eval(r.scrollConfig)),f="#"+r.id,r.scrollName&&(f="[scroll-name='"+r.scrollName+"']"),u=function(){return jQuery(f).jScrollPane(e),t.pane=jQuery(f).data("jsp")},r.scrollTimeout?n(u,t.$eval(r.scrollTimeout)):n(u,0),t.$watch(function(){return r.scrollAlwaysTop},function(n){n&&t.pane&&t.pane.scrollToY(0)}),t.$on("reinit-pane",function(i,f){f===r.id&&t.pane&&(console.log("Reinit pane "+f),n(function(){return t.pane.destroy(),u()}))})},replace:!0}}])}.call(this);angular.module("bindWith",[]).directive("bindWith",function(){return{restrict:"A",scope:!0,controller:function(n,t,i){var r=function(r){var u=this;u.propName=r;u.parsed=i(r);u.enumerable=!0;u.configurable=!0;u.get=function(){var i=n.$parent[t.koWith];return u.parsed(n.$parent,i)};u.set=function(i){var r=n.$parent[t.koWith];u.parsed.assign(r,i)}};n.$parent.$watch(t.koWith,function(){var i=n.$parent[t.koWith];(function(t){for(var i in t)t.hasOwnProperty(i)&&Object.defineProperty(n,i,new r(i))})(i)})}}});angular.module("cmDirectives").controller("cmConfirmClickController",cmConfirmClickController).directive("cmConfirmClick",cmConfirmClick).factory("$modal",cmModalFactory);cmConfirmClickController.$inject=["$uibModalInstance","items","elm","scope"];cmConfirmClick.$inject=["$modal"];cmModalFactory.$inject=["$uibModal"];angular.module("cmDirectives").directive("cmCopyToClipboard",cmCopyToClipboard);cmCopyToClipboard.$inject=["$window"];angular.module("cmDirectives").directive("cmDisableAnimate",cmDisableAnimate);cmDisableAnimate.$inject=["$animate"];angular.module("cmDirectives").directive("cmDisposeAfter",cmDisposeAfter);cmDisposeAfterController.$inject=["$scope","$element","$timeout"];angular.module("cmDirectives").directive("cmEventFlag",cmEventFlag);cmEventFlagController.$inject=["$scope","$element","eventService"];angular.module("cmDirectives").directive("cmEventImage",cmEventImage);angular.module("cmDirectives").directive("cmFocus",cmFocus);cmFocus.$inject=["$parse"];angular.module("cmDirectives").directive("cmLeagueChampionshipEvent",cmLeagueChampionshipEvent);cmLeagueChampionshipEvent.$inject=["endpointBaseUrl"];cmLeagueChampionshipEventController.$inject=["$scope","$window","filterFilter","leagueService"];angular.module("cmDirectives").directive("cmPreventDefault",cmPreventDefault);timerModule=angular.module("timer",[]).directive("timer",["$compile",function(n){return{restrict:"EA",replace:!1,scope:{interval:"=interval",startTimeAttr:"=startTime",endTimeAttr:"=endTime",countdownattr:"=countdown",finishCallback:"&finishCallback",autoStart:"&autoStart",language:"@?",fallback:"@?",maxTimeUnit:"=",seconds:"=?",minutes:"=?",hours:"=?",days:"=?",months:"=?",years:"=?",secondsS:"=?",minutesS:"=?",hoursS:"=?",daysS:"=?",monthsS:"=?",yearsS:"=?"},controller:["$scope","$element","$attrs","$timeout","I18nService","$interpolate","progressBarService",function(t,i,r,u,f,e,o){function s(){t.timeoutId&&clearTimeout(t.timeoutId)}function l(){var n={};r.startTime!==undefined&&(t.millis=moment().diff(moment(t.startTimeAttr)));n=c.getTimeUnits(t.millis);t.maxTimeUnit&&t.maxTimeUnit!=="day"?t.maxTimeUnit==="second"?(t.seconds=Math.floor(t.millis/1e3),t.minutes=0,t.hours=0,t.days=0,t.months=0,t.years=0):t.maxTimeUnit==="minute"?(t.seconds=Math.floor(t.millis/1e3%60),t.minutes=Math.floor(t.millis/6e4),t.hours=0,t.days=0,t.months=0,t.years=0):t.maxTimeUnit==="hour"?(t.seconds=Math.floor(t.millis/1e3%60),t.minutes=Math.floor(t.millis/6e4%60),t.hours=Math.floor(t.millis/36e5),t.days=0,t.months=0,t.years=0):t.maxTimeUnit==="month"?(t.seconds=Math.floor(t.millis/1e3%60),t.minutes=Math.floor(t.millis/6e4%60),t.hours=Math.floor(t.millis/36e5%24),t.days=Math.floor(t.millis/864e5%30),t.months=Math.floor(t.millis/2592e6),t.years=0):t.maxTimeUnit==="year"&&(t.seconds=Math.floor(t.millis/1e3%60),t.minutes=Math.floor(t.millis/6e4%60),t.hours=Math.floor(t.millis/36e5%24),t.days=Math.floor(t.millis/864e5%30),t.months=Math.floor(t.millis/2592e6%12),t.years=Math.floor(t.millis/31536e6)):(t.seconds=Math.floor(t.millis/1e3%60),t.minutes=Math.floor(t.millis/6e4%60),t.hours=Math.floor(t.millis/36e5%24),t.days=Math.floor(t.millis/864e5),t.months=0,t.years=0);t.secondsS=t.seconds===1?"":"s";t.minutesS=t.minutes===1?"":"s";t.hoursS=t.hours===1?"":"s";t.daysS=t.days===1?"":"s";t.monthsS=t.months===1?"":"s";t.yearsS=t.years===1?"":"s";t.secondUnit=n.seconds;t.minuteUnit=n.minutes;t.hourUnit=n.hours;t.dayUnit=n.days;t.monthUnit=n.months;t.yearUnit=n.years;t.sseconds=t.seconds<10?"0"+t.seconds:t.seconds;t.mminutes=t.minutes<10?"0"+t.minutes:t.minutes;t.hhours=t.hours<10?"0"+t.hours:t.hours;t.ddays=t.days<10?"0"+t.days:t.days;t.mmonths=t.months<10?"0"+t.months:t.months;t.yyears=t.years<10?"0"+t.years:t.years}var c,h;typeof String.prototype.trim!="function"&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")});t.autoStart=r.autoStart||r.autostart;t.language=t.language||"en";t.fallback=t.fallback||"en";t.$watch("language",function(n){n!==undefined&&c.init(n,t.fallback)});c=new f;c.init(t.language,t.fallback);t.displayProgressBar=0;t.displayProgressActive="active";i.html().trim().length===0?i.append(n("<span>"+e.startSymbol()+"millis"+e.endSymbol()+"<\/span>")(t)):i.append(n(i.contents())(t));t.startTime=null;t.endTime=null;t.timeoutId=null;t.countdown=angular.isNumber(t.countdownattr)&&parseInt(t.countdownattr,10)>=0?parseInt(t.countdownattr,10):undefined;t.isRunning=!1;t.$on("timer-start",function(){t.start()});t.$on("timer-resume",function(){t.resume()});t.$on("timer-stop",function(){t.stop()});t.$on("timer-clear",function(){t.clear()});t.$on("timer-reset",function(){t.reset()});t.$on("timer-set-countdown",function(n,i){t.countdown=i});t.$watch("startTimeAttr",function(n,i){n!==i&&t.isRunning&&t.start()});t.$watch("endTimeAttr",function(n,i){n!==i&&t.isRunning&&t.start()});t.start=function(){t.startTime=t.startTimeAttr?moment(t.startTimeAttr):moment();t.endTime=t.endTimeAttr?moment(t.endTimeAttr):null;angular.isNumber(t.countdown)||(t.countdown=angular.isNumber(t.countdownattr)&&parseInt(t.countdownattr,10)>0?parseInt(t.countdownattr,10):undefined);s();h();t.isRunning=!0;t.$emit("timer-started",{timeoutId:t.timeoutId,millis:t.millis,seconds:t.seconds,minutes:t.minutes,hours:t.hours,days:t.days})};t.resume=function(){s();t.countdownattr&&(t.countdown+=1);t.startTime=moment().diff(moment(t.stoppedTime).diff(moment(t.startTime)));h();t.isRunning=!0;t.$emit("timer-started",{timeoutId:t.timeoutId,millis:t.millis,seconds:t.seconds,minutes:t.minutes,hours:t.hours,days:t.days})};t.stop=t.pause=function(){var n=t.timeoutId;t.clear();t.$emit("timer-stopped",{timeoutId:n,millis:t.millis,seconds:t.seconds,minutes:t.minutes,hours:t.hours,days:t.days})};t.clear=function(){t.stoppedTime=moment();s();t.timeoutId=null;t.isRunning=!1};t.reset=function(){t.startTime=t.startTimeAttr?moment(t.startTimeAttr):moment();t.endTime=t.endTimeAttr?moment(t.endTimeAttr):null;t.countdown=angular.isNumber(t.countdownattr)&&parseInt(t.countdownattr,10)>0?parseInt(t.countdownattr,10):undefined;s();h();t.isRunning=!1;t.clear();t.$emit("timer-reseted",{timeoutId:t.timeoutId,millis:t.millis,seconds:t.seconds,minutes:t.minutes,hours:t.hours,days:t.days})};i.bind("$destroy",function(){s();t.isRunning=!1});t.countdownattr?(t.millis=t.countdownattr*1e3,t.addCDSeconds=function(n){t.countdown+=n;t.isRunning||t.start()},t.$on("timer-add-cd-seconds",function(n,i){t.addCDSeconds(i)}),t.$on("timer-set-countdown-seconds",function(n,i){t.isRunning||t.clear();t.countdown=i;t.millis=i*1e3;l()})):t.millis=0;l();h=function h(){var n=null,i;if(t.millis=moment().diff(t.startTime),i=t.millis%1e3,t.endTimeAttr&&(n=t.endTimeAttr,t.millis=moment(t.endTime).diff(moment()),i=t.interval-t.millis%1e3),t.countdownattr&&(n=t.countdownattr,t.millis=t.countdown*1e3),t.millis<0){t.stop();t.millis=0;l();t.finishCallback&&t.$eval(t.finishCallback);return}l();t.timeoutId=setTimeout(function(){h();t.$apply()},t.interval-i);t.$emit("timer-tick",{timeoutId:t.timeoutId,millis:t.millis,seconds:t.seconds,minutes:t.minutes,hours:t.hours,days:t.days});t.countdown>0?t.countdown--:t.countdown<=0&&(t.stop(),t.finishCallback&&t.$eval(t.finishCallback));n!==null&&(t.progressBar=o.calculateProgressBar(t.startTime,t.millis,t.endTime,t.countdownattr),t.progressBar===100&&(t.displayProgressActive=""))};(t.autoStart===undefined||t.autoStart===!0)&&t.start()}]}}]).directive("timerControls",function(){return{restrict:"EA",scope:!0,controller:["$scope",function(n){n.timerStatus="reset";n.$on("timer-started",function(){n.timerStatus="started"});n.$on("timer-stopped",function(){n.timerStatus="stopped"});n.$on("timer-reset",function(){n.timerStatus="reset"});n.timerStart=function(){n.$broadcast("timer-start")};n.timerStop=function(){n.$broadcast("timer-stop")};n.timerResume=function(){n.$broadcast("timer-resume")};n.timerToggle=function(){switch(n.timerStatus){case"started":n.timerStop();break;case"stopped":n.timerResume();break;case"reset":n.timerStart()}};n.timerAddCDSeconds=function(t){n.$broadcast("timer-add-cd-seconds",t)}}]}});app=angular.module("timer");app.factory("I18nService",function(){var n=function(){};return n.prototype.language="en",n.prototype.fallback="en",n.prototype.timeHumanizer={},n.prototype.init=function(n,t){var i=humanizeDuration.getSupportedLanguages();this.fallback=t!==undefined?t:"en";i.indexOf(t)===-1&&(this.fallback="en");this.language=n;i.indexOf(n)===-1&&(this.language=this.fallback);this.timeHumanizer=humanizeDuration.humanizer({language:this.language,halfUnit:!1})},n.prototype.getTimeUnits=function(n){var t=Math.round(n/1e3)*1e3,i={};return typeof this.timeHumanizer!="undefined"?i={millis:this.timeHumanizer(t,{units:["ms"]}),seconds:this.timeHumanizer(t,{units:["s"]}),minutes:this.timeHumanizer(t,{units:["m","s"]}),hours:this.timeHumanizer(t,{units:["h","m","s"]}),days:this.timeHumanizer(t,{units:["d","h","m","s"]}),months:this.timeHumanizer(t,{units:["mo","d","h","m","s"]}),years:this.timeHumanizer(t,{units:["y","mo","d","h","m","s"]})}:console.error('i18nService has not been initialized. You must call i18nService.init("en") for example'),i},n});app=angular.module("timer");app.factory("progressBarService",function(){var n=function(){};return n.prototype.calculateProgressBar=function(n,t,i,r){var u=0,f,e;return t=t/1e3,i!==null?(f=moment(i),e=f.diff(n,"seconds"),u=t*100/e):u=t*100/r,u=100-u,u=Math.round(u*10)/10,u>100&&(u=100),u},new n});angular.module("cmDirectives").directive("cmValidated",cmValidated);cmValidated.$inject=["$rootScope","validationService","validationErrorsModel"],function(){"use strict";function n(n){return n+"/snippets/blog-post-summary"}function t(n,t){var i=this;i.sce=n;i.isLargePost=function(){switch(i.newsItem.Type){case 1:case 3:return!0;default:return!1}};i.showVideo=function(){return i.newsItem.VideoUrl?i.newsItem.Type===3?!0:i.newsItem.ImageUrl?!1:!0:!1};i.showImage=function(){return i.newsItem.ImageUrl?i.newsItem.Type===3&&i.newsItem.VideoUrl?!1:!0:!1};i.hasImageOrVideo=function(){return i.newsItem.ImageUrl||i.newsItem.VideoUrl};i.getPostUrl=function(){return t+"/news/"+i.newsItem.Id};i.getAspectRatioClass=function(){return i.newsItem.VideoAspectRatio==16/9?"video-container-16x9":"video-container-4x3"}}angular.module("cmComponents").component("cmBlogPostSummary",{bindings:{newsItem:"<"},controller:t,templateUrl:n});n.$inject=["endpointBaseUrl"];t.$inject=["$sce","endpointBaseUrl"]}(),function(){"use strict";function n(n){return n+"/buy/snippets/buy-digital-selector"}function t(n){function i(){t.loading=!0;n.getDigitalLinks().success(function(n){t.digitalLinks=n.Links;t.loading=!1}).error(function(){t.loading=!1})}var t=this;t.digitalLinks=null;t.$onInit=function(){i()}}angular.module("cmComponents").component("cmBuyDigitalSelector",{bindings:{},controller:t,templateUrl:n});n.$inject=["endpointBaseUrl"];t.$inject=["retailerLinkService"]}(),function(){"use strict";function n(n){return n+"/buy/snippets/buy-physical-selector"}function t(n){function u(n,t){if(!n||!t)return null;for(var i=0;i<t.length;i++)if(n.NameKey===t[i].NameKey)return t[i]}function f(){t.loading=!0;n.getPhysicalLinks().success(function(n){t.physicalLinks=n.Links;t.country=u(n.DefaultCountry,t.physicalLinks);t.loading=!1}).error(function(){t.loading=!1})}function r(n,t,i){return i=i||0,n.substr(i,t.length)===t}function i(n){var i=4,t;return typeof n!="string"?i:(t=n.toLowerCase(),r(t,"playstation 4"))?1:r(t,"xbox one")?2:r(t,"pc")?3:i}var t=this;t.physicalLinks=null;t.getDefaultPackUrl=function(){var n=t.country?t.country.NameKey||"":"";switch(n){case"COUNTRY_UNITEDSTATES":return"/UI/compiled/images/buy/pack/pack_ps4_us.png";case"COUNTRY_AUSTRALIA":return"/UI/compiled/images/buy/pack/pack_ps4_au.png";case"COUNTRY_NEWZEALAND":case"COUNTRY_SWEDEN":case"COUNTRY_FINLAND":case"COUNTRY_DENMARK":case"COUNTRY_NORWAY":case"COUNTRY_UNITEDKINGDOM":case"COUNTRY_IRELAND":case"COUNTRY_AUSTRIA":case"COUNTRY_SWITZERLAND":case"COUNTRY_FRANCE":case"COUNTRY_ITALY":case"COUNTRY_BELGIUM":case"COUNTRY_NETHERLANDS":case"COUNTRY_SPAIN":return"/UI/compiled/images/buy/pack/pack_ps4_uk.png";case"COUNTRY_GERMANY":return"/UI/compiled/images/buy/pack/pack_ps4_de.png";case"COUNTRY_CHINA":return"/UI/compiled/images/buy/pack/pack_ps4_cn.png";default:return"/UI/compiled/images/buy/pack/pack_ps4_uk.png"}};t.platformComparator=function(n,t){var r=n.value,u=t.value;return i(r)===i(u)?0:i(r)<i(u)?-1:1};t.$onInit=function(){f()}}angular.module("cmComponents").component("cmBuyPhysicalSelector",{bindings:{},controller:t,templateUrl:n});n.$inject=["endpointBaseUrl"];t.$inject=["retailerLinkService"]}(),function(){"use strict";function n(n){return n+"/clubs/snippets/championship-summary/"}function t(n,t,i,r,u,f,e){var o=this;o.nextDate=null;o.currentDate=moment().utc();o.addEvent=function(){o.championship.events.push(new f);o.setActiveEvent(o.championship.events.length-1)};o.deleteEvent=function(n){o.championship.events.splice(n,1)};o.setActiveEvent=function(n){o.event=angular.copy(o.championship.events[n]);o.event.index=n+1;o.editing=n};o.nextEvent=function(){if(typeof o.championship!="undefined"&&o.championship.events.length>0){var i=angular.copy(o.championship.events),n=moment.utc(),t;angular.forEach(i,function(i,r){(i.dateRange.startDate>n&&i.dateRange.startDate<=t||t==null&&i.dateRange.startDate>n&&i.dateRange.endDate>n)&&(t=i.dateRange.startDate,o.nextDate=r)})}};o.getEventData=function(n){if(o.championship.events[n].location=e.find(o.championship.events[n].meta.locationAsCountryOptions,function(t){return t.value.locationId==o.championship.events[n].country}),o.championship.events[n].location==null){var t=e.find(o.championship.events[n].meta.careerStageOptions,function(t){return t.location==o.championship.events[n].country});o.championship.events[n].location={name:t.countryName,value:{locationId:t.location,countryType:t.countryType,locationName:t.locationName}}}o.championship.events[n].stages[0].weather=e.find(o.championship.events[n].meta.weatherOptions,function(t){return t.value==o.championship.events[n].stages[0].weatherId&&t.location==o.championship.events[n].country});o.championship.events[n].stages[0].timeOfDay=e.find(o.championship.events[n].meta.timeOfDayOptions,function(t){return t.value==o.championship.events[n].stages[0].timeOfDayId&&t.location==o.championship.events[n].country})};o.getWeatherIcon=function(n){var t,i;switch(o.championship.events[n].stages[0].timeOfDayId){case 0:case 10:case 1:case 2:case 3:case 5:case 6:case 4:i="Day";break;case 9:case 7:case 8:i="Night"}switch(o.championship.events[n].stages[0].weather.type){case"eClear":case"eCloudPartlyCloudy":case"eRainHeavyRainShowers":case"eRainLightRainShowers":case"eRainMediumRain":case"eRainShowers":case"eSnowHeavySnowShower":case"eSnowLightSnowShowers":case"eRainShowers":t=o.championship.events[n].stages[0].weather.type+i;break;default:t=o.championship.events[n].stages[0].weather.type}return t};o.playerRank=function(n){return n.slice(0,-2)};o.circuitRaces=function(n){var t=1;return o.championship.events[n].stages[0].rallyXLapCountHeat>0&&(t+=4),o.championship.events[n].stages[0].rallyXLapCountSemi>0&&(t+=1),t>1?t+" Races":t+" Race"};o.goToLeaderboard=function(n){o.championship&&o.leaderboardUrl&&window.location.replace(o.leaderboardUrl+"/"+n)};u.$on("saveEvent",function(){o.championship.events[o.editing]=angular.copy(o.event);o.nextEvent();o.editing=!1});u.$on("cancelEvent",function(){o.championship.events.splice(o.editing,1);o.editing=!1});u.$on("goToValidationError",function(n,t,i){t==null?o.editing=!1:(o.stageToShow=i,o.setActiveEvent(t))});o.$onInit=function(){o.stageToShow=null;o.loading=!1;o.nextEvent()}}angular.module("cmComponents").component("cmChampionshipSummary",{bindings:{clubId:"<",championship:"=",editing:"=",editable:"<",leaderboardUrl:"@"},controller:t,templateUrl:n});n.$inject=["endpointBaseUrl"];t.$inject=["$scope","$timeout","optionsService","$window","$rootScope","ChampionshipEventModel","_"]}(),function(){"use strict";function n(n,t){function f(){var n=new Date,c=new Date(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds()).getTime(),f=u-c,e=864e5,s=36e5,o=Math.floor(f/e),h=Math.floor((f-o*e)/s),l=Math.floor((f-o*e-h*s)/6e4);f<=0?(t.cancel(r),i.countdownString=i.endString):i.countdownString=sprintf(i.timeString,o,h,l)}var i=this,r=null,u=null;i.$onInit=function(){i.countdownString="";i.endDate!==null&&(u=new Date(i.endDate.replace(/-/g,"/")).getTime(),r=t(function(){f()},i.interval));f()}}angular.module("cmComponents").component("cmCountdown",{bindings:{endDate:"@",interval:"@",timeString:"@",endString:"@"},controller:n,template:'<span class="countdown" ng-bind="$ctrl.countdownString"><\/span>'});n.$inject=["$element","$interval"]}(),function(){"use strict";function n(n){function i(){if(t.isImperial!==undefined){var i=t.isImperial?"GENERAL.MILES_ABBREV":"GENERAL.KM";n([i]).then(function(n){t.unitString=n[i]})}}var t=this;t.unitString="";t.$onChanges=function(){i()}}angular.module("cmComponents").component("cmDistanceUnit",{bindings:{isImperial:"<"},controller:n,template:'<span ng-bind="$ctrl.unitString"><\/span>'});n.$inject=["$translate"]}(),function(){"use strict";function n(n){return n+"/snippets/e-sports-summary"}function t(n,t){var i=this;i.sce=n;i.isLargePost=function(){switch(i.newsItem.Type){case 1:case 3:return!0;default:return!1}};i.showVideo=function(){return i.newsItem.VideoUrl?i.newsItem.Type===3?!0:i.newsItem.ImageUrl?!1:!0:!1};i.showImage=function(){return i.newsItem.ImageUrl?i.newsItem.Type===3&&i.newsItem.VideoUrl?!1:!0:!1};i.hasImageOrVideo=function(){return i.newsItem.ImageUrl||i.newsItem.VideoUrl};i.getPostUrl=function(){return t+"/news/"+i.newsItem.Id}}angular.module("cmComponents").component("cmEsportsSummary",{bindings:{newsItem:"<"},controller:t,templateUrl:n});n.$inject=["endpointBaseUrl"];t.$inject=["$sce","endpointBaseUrl"]}(),function(){"use strict";function n(n){return n+"/clubs/snippets/edit-event"}function t(n,t,i,r,u,f,e,o,s,h){var c=this;c.loading;c.restrictions;c.stageEditing;c.splineLoading;c.stage;c.stageCount=0;c.startDate;c.updateGameMode=function(){c.event.gameMode==1&&(c.event.country=c.event.meta.locationAsCountryOptions[0].value.locationId);c.stageEditing=null;c.event.stages.length=0;c.addStage();c.event.gameMode==3&&(c.stage.rallyXLapCountSemi=c.rallyXLapOptions()[0].value)};c.filteredVehicleOptions=function(){switch(c.event.restrictions.meta.restrictionType){case"VEHICLE":return s(c.event.restrictions.meta.clubVehicleOptions,{supportedGameMode:c.event.gameMode},!0);case"MANUFACTURER":return s(c.event.restrictions.meta.manufacturerOptions,{supportedGameMode:c.event.gameMode},!0);case"VEHICLE_CLASS":return s(c.event.restrictions.meta.clubVehicleClassOptions,{supportedGameMode:c.event.gameMode},!0);case"MANUFACTURER_COUNTRY":return s(c.event.restrictions.meta.manufacturerNationalityOptions,{supportedGameMode:c.event.gameMode},!0);case"DRIVETRAIN":return s(c.event.restrictions.meta.driveTrainOptions,{supportedGameMode:c.event.gameMode},!0);case"BHP":return s(c.event.restrictions.meta.vehicleBhpOptions,{supportedGameMode:c.event.gameMode},!0);default:return null}};c.resetRestrictions=function(){c.event.restrictions.clear()};c.deleteStage=function(n){c.loading=!0;c.event.stages.splice(n,1);c.stageCount=c.event.stages.length;n==0?c.stageEditing=0:n==c.stageEditing&&(c.stageEditing-=1);t(function(){c.loading=!1})};c.addStage=function(n){c.loading=!0;c.event.stages.push(new e(n));c.setActiveStage(c.event.stages.length-1);t(function(){c.loading=!1},2e3)};c.isActiveStage=function(n){return c.stageEditing==n};c.setActiveStage=function(n){c.stageEditing!=null&&(c.event.stages[c.stageEditing]=angular.copy(c.stage));c.stage=angular.copy(c.event.stages[n]);c.event.gameMode==1?(c.stageCount=c.event.stages.length,c.stage.trackType=c.stage.trackType||"trackgen",c.stage.trackGen.count=c.stage.trackGen.count||30,c.stage.trackGen.index=c.stage.trackGen.index||0,c.stage.careerStage=c.stage.careerStage||c.careerStageOptions()[0],c.stage.myStage=c.stage.myStage||c.myStageOptions()[0],c.stage.trackGen.shortCode?c.getSplineData(c.stage.trackGen.shortCode):c.generateTracks(c.event.country,c.stage.trackGen.trackLength,c.stage.trackGen.trackComplexity,c.stage.trackGen.count)):(c.event.gameMode==2||c.event.gameMode==3)&&(c.stage.rallyCrossStage=c.stage.rallyCrossStage||c.rallyCrossStageOptions()[0],c.stage.rallyXDifficulty=c.stage.rallyXDifficulty||c.stage.meta.rallyXDifficultyOptions[0].value,c.stage.rallyXLapCountHeat=c.stage.rallyXLapCountHeat!==undefined?c.stage.rallyXLapCountHeat:0,c.stage.rallyXLapCountSemi=c.stage.rallyXLapCountSemi!==undefined?c.stage.rallyXLapCountSemi:6,c.stage.rallyXLapCountFinal=c.stage.rallyXLapCountFinal||6,c.event.country=c.stage.rallyCrossStage.location,c.stage.trackModelId=c.stage.rallyCrossStage.trackModel);c.stage.timeOfDay=c.stage.timeOfDay||c.timeOfDayOptions()[0];c.stage.timeOfDayId=c.stage.timeOfDayId||c.timeOfDayOptions()[0].value;c.stage.weather=c.stage.weather||c.weatherOptions()[0];c.stage.weatherId=c.stage.weatherId||c.weatherOptions()[0].value;c.event.location=_.find(c.event.meta.locationAsCountryOptions,function(n){return n.value.locationId==c.event.country});c.stageEditing=n};c.telemetryImagePos=function(n,t,i,r){var o=i-t,u=0,f=0,e=5;return u=Math.floor(100/o*(r-t)/(100/e)),u===e&&(u=u-1),f=-(u*n),f+"px"};c.generateTracks=function(n,t,i,r){c.stage.trackGen.index=0;o.generateTracks(n,t,i,r).success(function(n){c.stage.meta.splines=n;c.getSpline()})};c.getSpline=function(){if(c.stage.trackGen.index<30)c.stage.spline=c.stage.meta.splines[c.stage.trackGen.index],c.setTrackGen(c.stage.spline.shortCode,null),c.stage.trackGen.index+=1;else return c.generateTracks(c.event.country,c.stage.trackGen.trackLength,c.stage.trackGen.trackComplexity,c.stage.trackGen.count),!1};c.setTrackGen=function(n,t){c.getSplineData(n,t);c.stage.trackGen.shortCode=n;c.stage.trackModelId=t};c.getSplineData=function(n){c.splineLoading=!0;o.getTrackSplineData(n).success(function(n){c.stage.splineData=n;t(function(){c.splineLoading=!1},3e3)}).error(function(){c.splineLoading=!1})};c.getStageData=function(){c.loading=!0;angular.forEach(c.event.stages,function(n,t){c.event.gameMode==1?c.event.stages[t].trackGen.nameString?c.event.stages[t].splineData={NameString:c.event.stages[t].trackGen.nameString}:o.getTrackSplineData(c.event.stages[t].trackGen.shortCode).success(function(n){c.event.stages[t].splineData=n}).error(function(){console.log("error")}):(c.event.stages[t].rallyCrossStage=_.find(c.event.meta.careerStageOptions,function(n){return n.trackModel==c.event.stages[t].trackModelId}),c.event.country=c.event.stages[t].rallyCrossStage.location);c.event.stages[t].weather=_.find(c.event.meta.weatherOptions,function(n){return n.value==c.event.stages[t].weatherId&&n.location==c.event.country});c.event.stages[t].timeOfDay=_.find(c.event.meta.timeOfDayOptions,function(n){return n.value==c.event.stages[t].timeOfDayId&&n.location==c.event.country})});c.loading=!1};c.updateLocation=function(){c.stageEditing=null;c.event.stages.length=0;c.addStage()};c.filterByCircuit=function(){c.event.country=c.stage.rallyCrossStage.location;c.stage.trackModelId=c.stage.rallyCrossStage.trackModel;c.stage.timeOfDay=c.timeOfDayOptions()[0];c.stage.weather=c.weatherOptions()[0]};c.getCircuitSpline=function(){var n=c.stage.rallyCrossStage.location,t=c.stage.rallyCrossStage.trackModelSplineName;return"/UI/compiled/images/clubs/locations/"+n+"/"+t+".jpg"};c.setTrackType=function(n){c.stage.trackType=n;n=="trackgen"?c.generateTracks(c.event.country,c.stage.trackGen.trackLength,c.stage.trackGen.trackComplexity,c.stage.trackGen.count):n=="career"?c.setTrackGen(c.stage.careerStage.trackGen.shortCode,c.stage.careerStage.trackModel):n=="favourites"&&c.setTrackGen(c.stage.myStage.trackGen.shortCode,null)};c.timeOfDayOptions=function(){return s(c.stage.meta.timeOfDayOptions,{location:c.event.country},!0)};c.weatherOptions=function(){return s(c.stage.meta.weatherOptions,{location:c.event.country},!0)};c.setWeather=function(){c.stage.weatherId=c.stage.weather.value};c.setTimeofDay=function(){c.stage.timeOfDayId=c.stage.timeOfDay.value};c.careerStageOptions=function(){return s(c.stage.meta.careerStageOptions,{location:c.event.country,gameMode:c.event.gameMode},!0)};c.rallyCrossStageOptions=function(){return s(c.stage.meta.careerStageOptions,{gameMode:c.event.gameMode},!0)};c.rallyXLapOptions=function(n){return n=="semi"&&c.stage.rallyXLapCountHeat!=0||n=="final"?s(c.stage.meta.rallyXLapOptions,function(n){if(n.supportedGameMode==c.event.gameMode&&n.value!=0)return n},!0):s(c.stage.meta.rallyXLapOptions,{supportedGameMode:c.event.gameMode},!0)};c.myStageOptions=function(){return s(c.stage.meta.myStageOptions,{location:c.event.country},!0)};c.formatDistances=function(n){if(n)return h.toLocaleString(n,{minimumFractionDigits:2,maximumFractionDigits:2})};c.editStageCount=function(){c.stageCount>c.event.stages.length?(c.addStage(),c.getStageData()):c.stageCount<c.event.stages.length&&c.deleteStage(c.event.stages.length-1)};c.getInvalidDates=function(){r.getCurrentChampionshipExpiration(c.clubId).success(function(n){c.startDate=n==null?moment().local().subtract(15,"mins"):moment(n).local()})};c.randomiseStage=function(n){c.stageEditing=null;c.loading=!0;r.generateStage(c.clubId,c.event.gameMode,1,c.event.country).success(function(i){t(function(){c.event.stages[n]=new e(i[0]);c.getStageData();c.setActiveStage(n);c.loading=!1})})};c.randomiseStages=function(){c.stageEditing=null;c.loading=!0;r.generateStage(c.clubId,c.event.gameMode,c.event.stages.length,c.event.country).success(function(n){angular.forEach(n,function(n,t){c.event.stages[t]=new e(n)});c.getStageData();c.setActiveStage(0);c.loading=!1})};c.updateRallyXLaps=function(){c.stage.rallyXLapCountHeat!=null&&(c.stage.rallyXLapCountSemi==null||c.stage.rallyXLapCountSemi==0)&&(c.stage.rallyXLapCountSemi=2)};c.saveEvent=function(){c.stageEditing!==null&&(c.event.stages[c.stageEditing]=angular.copy(c.stage));f.$emit("saveEvent")};c.cancelEvent=function(){f.$emit("cancelEvent")};c.$onInit=function(){c.getInvalidDates();c.event.country=c.event.country||c.event.meta.locationAsCountryOptions[0].value.locationId;c.event.location={value:{countryType:c.event.countryFlag||c.event.meta.locationAsCountryOptions[0].value.countryType}};c.event.stages.length==0?c.addStage():(c.getStageData(),c.setActiveStage(c.stageToShow||0))}}angular.module("cmComponents").component("cmEditEvent",{bindings:{clubId:"<",event:"=",stageToShow:"<"},controller:t,templateUrl:n});n.$inject=["endpointBaseUrl"];t.$inject=["$scope","$timeout","optionsService","clubService","$window","$rootScope","ChampionshipStageModel","trackService","filterFilter","formatService","VehicleRestrictionModel"]}(),function(){"use strict";function n(n){function i(){if(t.isImperial!==undefined){var i=t.isImperial?"GENERAL.FEET_ABBREV":"GENERAL.METER_ABBREV";n([i]).then(function(n){t.unitString=n[i]})}}var t=this;t.unitString="";t.$onChanges=function(){i()}}angular.module("cmComponents").component("cmElevationUnit",{bindings:{isImperial:"<"},controller:n,template:'<span ng-bind="$ctrl.unitString"><\/span>'});n.$inject=["$translate"]}(),function(){"use strict";function n(n){return n+"/events/snippets/event-leaderboard"}function t(n,t,i,r,u,f){var e=this;e.loading=!1;e.loadingEntries=!1;e.sortType="TotalTime";e.page=1;e.pageCount=0;e.pageSize=100;e.showAdvancedFilters=!1;e.leaderboardEntries=[];e.eventTypes!==!1&&(e.eventType=e.eventTypes===undefined?e.eventTypes[e.selectedEventType].type:null);e.filters={players:0,assists:0,controls:0,platform:0,orderBy:!0};e.toggleAdvancedFilters=function(){e.showAdvancedFilters=!e.showAdvancedFilters};e.displayTimeRemaining=function(n){var t=moment().local(),i=moment(n).local();return i>t?!0:!1};e.formatDistances=function(n){if(n)return u.toLocaleString(n,{minimumFractionDigits:2,maximumFractionDigits:2})};e.getLeaderboard=function(){e.loading=!0;e.loadingEntries=!0;e.championship!==!1?(e.eventStages=e.championship.events[e.selectedEvent].stages[e.selectedStage],e.eventId=e.championship.events[e.selectedEvent].eventId,e.stageId=e.championship.events[e.selectedEvent].stages[e.selectedStage].id):(e.eventStages=e.eventTypes[e.selectedEventType].events[e.selectedEvent].stages[e.selectedStage],e.eventId=e.eventTypes[e.selectedEventType].events[e.selectedEvent].eventId,e.stageId=e.eventTypes[e.selectedEventType].events[e.selectedEvent].stages[e.selectedStage].id);e.leaderboardEntries.length=0;e.localisedDate=moment(e.eventStages.stageDetails.expiresUTC).local();e.page=1;f.getLeaderboard(e.eventId,e.stageId,e.page,e.pageSize,e.filters,e.championship.clubHandlingMode).success(function(t){n(function(){e.leaderboard=t;e.leaderboardEntries=t.Entries;e.pageCount=t.PageCount})}).error(function(){e.loading=!1}).finally(function(){e.loading=!1;e.loadingEntries=!1})};e.getPlayerPosition=function(t,i){var o,u,r;for(e.loading=!0,e.loadingEntries=!0,o=0,u=e.pageSize,r=1;r<i;r++){if(t>o&&t<u){e.page=r;break}u+=e.pageSize}f.getLeaderboard(e.eventId,e.stageId,e.page,e.pageSize,e.filters,e.championship.clubHandlingMode).success(function(n){e.leaderboard=n;e.leaderboardEntries=n.Entries;e.pageCount=n.PageCount}).error(function(){e.loading=!1}).finally(function(){e.loading=!1;e.loadingEntries=!1});n(function(){$("html, body").animate({scrollTop:$("#player-entry").offset().top})})};e.getLeaderboardEntries=function(){e.loadingEntries=!0;e.leaderboardEntries.length=0;f.getLeaderboard(e.eventId,e.stageId,e.page,e.pageSize,e.filters,e.championship.clubHandlingMode).success(function(n){e.leaderboardEntries=n.Entries;e.pageCount=n.PageCount}).error(function(){e.loadingEntries=!1}).finally(function(){e.loadingEntries=!1})};e.setPage=function(n){e.page=n;e.getLeaderboardEntries()};e.backToTop=function(){e.page=1;n(function(){e.getLeaderboard()})};e.getPlayerDiff=function(n){return n<0?n.toString().substring(1):n};e.getWeatherIcon=function(n,t){var i,r;switch(t){case 0:case 10:case 1:case 2:case 3:case 5:case 6:case 4:r="Day";break;case 9:case 7:case 8:r="Night"}switch(n){case"eClear":case"eCloudPartlyCloudy":case"eRainHeavyRainShowers":case"eRainLightRainShowers":case"eRainMediumRain":case"eRainShowers":case"eSnowHeavySnowShower":case"eSnowLightSnowShowers":case"eRainShowers":i=n+r;break;default:i=n}return i};e.setOrder=function(n){e.filters.orderBy=n;e.getLeaderboardEntries()};e.$onInit=function(){e.paneConfig={theme:"minimal-dark",advanced:{updateOnContentResize:!0},axis:"y",scrollInertia:500,alwaysShowScrollbar:2,autoHideScrollbar:!1}};e.$onChanges=function(){e.eventTypes!==!1&&(e.eventType=e.eventTypes[e.selectedEventType].type);n(function(){e.getLeaderboard()})};r.$on("HANDLING_MODE_CHANGED",function(){n(function(){e.getLeaderboard()})})}angular.module("cmComponents").component("cmEventLeaderboard",{bindings:{eventTypes:"<",championship:"<",selectedEventType:"<",selectedEvent:"<",selectedStage:"<",handlingMode:"<"},controller:t,templateUrl:n});n.$inject=["endpointBaseUrl"];t.$inject=["$timeout","eventService","$scope","$rootScope","formatService","leaderboardService"]}(),function(){"use strict";function n(n){return n+"/events/snippets/event-selection"}function t(n,t,i,r){function f(i){u.loading=!0;t.getEventTypes(i).success(function(t){u.eventTypes=t.eventTypes;u.loading=!1;n(function(){u.scrollTo(u.selectedEvent)},1e3)}).error(function(){u.loading=!1})}var u=this;u.isEventTypeSelected=function(n){return u.selectedEventType===parseInt(n)};u.isEventSelected=function(n){return u.selectedEvent===parseInt(n)};u.isStageSelected=function(n){return u.selectedStage===parseInt(n)};u.scrollTo=function(){n(function(){if($("#event-scroller-"+u.selectedEventType).length){var n=$("#event-scroller-"+u.selectedEventType),t=n.data("jsp");t.scrollToPercentX(100)}},1e3)};u.$onInit=function(){u.loading=!1;u.selectedEventType=0;u.selectedEvent=0;u.selectedStage=0;u.paneConfig={showArrows:!1,hideFocus:!0,autoReinitialise:!0};f();angular.element(i).bind("resize",function(){var n=$("#event-scroller-"+u.selectedEventType),t=n.data("jsp");t.scrollToPercentX(100)})};r.$on("HANDLING_MODE_CHANGED",function(t,i){n(function(){f(i.isAltHandling)})})}angular.module("cmComponents").component("cmEventSelection",{bindings:{eventType:"<"},controller:t,templateUrl:n});n.$inject=["endpointBaseUrl"];t.$inject=["$timeout","eventService","$window","$rootScope"]}(),function(){"use strict";function n(n){return n+"/your-stage/snippets/favourite-track"}function t(n,t,i){function u(){r.formattedDistance=r.favouriteTrack&&r.favouriteTrack.Track?t.toLocaleString(r.favouriteTrack.Track.Length,{minimumFractionDigits:2,maximumFractionDigits:2}):null}var r=this;r.stageUrl=n+"/your-stage/"+r.favouriteTrack.Track.TrackGenId;r.isCareerStage=function(){return r.favouriteTrack.Track.CareerStageId>0};r.mouseEnter=function(){r.hover=!0};r.mouseLeave=function(){r.hover=!1};r.isSelected=function(){return r.parent.isSelected(r.favouriteTrack)};r.toggleSelected=function(){r.isSelected()?r.parent.removeSelected(r.favouriteTrack):r.parent.addSelected(r.favouriteTrack)};r.$onInit=function(){r.hover=!1};i.$watch(function(){return r.favouriteTrack},function(){u()})}angular.module("cmComponents").component("cmFavouriteTrack",{require:{parent:"^^cmFavouriteTracks"},bindings:{favouriteTrack:"<"},controller:t,templateUrl:n,transclude:!0});n.$inject=["endpointBaseUrl"];t.$inject=["endpointBaseUrl","formatService","$scope"]}(),function(){"use strict";function n(n){return n+"/your-stage/snippets/favourite-tracks"}function t(n,t,i,r){function e(){i.getFavouriteTracksStatus().success(function(n){u.favouriteStatus=n}).error(function(){u.failedToLoad=!0})}function o(){i.getFavouriteTracks().success(function(n){u.favouriteTracks=n.Tracks;u.loading=!1;u.initialised=!0}).error(function(){u.loading=!1;u.failedToLoad=!0})}var u=this,f=angular.element('input[name="__RequestVerificationToken"]').attr("value");u.loading=!0;u.initialised=!1;u.failedToLoad=!1;u.favouriteStatus=null;u.favouriteTracks=[];u.selected=[];u.addSelected=function(n){u.selected.push(n)};u.removeSelected=function(n){var t=u.selected.indexOf(n);t!==-1&&u.selected.splice(t,1)};u.isSelected=function(n){var t=u.selected.indexOf(n);return t!==-1?!0:!1};u.confirmRemove=function(){var n=[];u.loading=!0;angular.forEach(u.selected,function(t){n.push(t.Track)});i.removeFavouriteTracks(n,f).success(function(){angular.forEach(u.selected,function(n){angular.forEach(u.favouriteTracks,function(t){if(t.Track===n.Track){var i=u.favouriteTracks.indexOf(t);i!==-1&&u.favouriteTracks.splice(i,1)}})});u.favouriteStatus.SlotsUsed=u.favouriteTracks.length;u.selected=[];t(["TRACK.REMOVED_TRACK_FAVOURITE"]).then(function(n){r.create(n["TRACK.REMOVED_TRACK_FAVOURITE"])});u.loading=!1}).error(function(){t(["TRACK.REMOVE_TRACK_FAVOURITE_ERROR"]).then(function(n){r.create({className:"danger",content:n["TRACK.REMOVE_TRACK_FAVOURITE_ERROR"]})});u.loading=!1})};u.cancelRemove=function(){u.selected=[]};u.$onInit=function(){u.loading=!0;e();o()}}angular.module("trackControllers").component("cmFavouriteTracks",{controller:t,templateUrl:n,transclude:!0});n.$inject=["endpointBaseUrl"];t.$inject=["$scope","$translate","trackService","ngToast"]}(),function(){"use strict";function n(n){return n+"/your-stage/snippets/featured-track"}function t(n,t,i){function e(){r.formattedDistance=r.featuredTrack&&r.featuredTrack.Track?t.toLocaleString(r.featuredTrack.Track.Length,{minimumFractionDigits:2,maximumFractionDigits:2}):null}var r=this,u,f;r.stageUrl=n+"/your-stage/"+r.featuredTrack.Track.TrackGenId;u=Math.floor(Math.random()*4+1);f=Math.floor(Math.random()*2+1);r.getGradient=function(){var n=f===1?"-reverse":"";return"gradient"+u+n};r.mouseEnter=function(){r.hover=!0};r.mouseLeave=function(){r.hover=!1};r.$onInit=function(){r.hover=!1};i.$watch(function(){return r.featuredTrack},function(){e()})}angular.module("cmComponents").component("cmFeaturedTrack",{bindings:{featuredTrack:"<"},controller:t,templateUrl:n,transclude:!0});n.$inject=["endpointBaseUrl"];t.$inject=["endpointBaseUrl","formatService","$scope"]}(),function(){"use strict";function n(n){return n+"/your-stage/snippets/image-zoom"}function t(){var n=this;n.mouseEnter=function(){n.zoom=!0};n.mouseLeave=function(){n.zoom=!1};n.zoomerStyle=function(){return"left:"+(n.zoomXPos-n.zoomWidth/2)+"px;top:"+(n.zoomYPos-n.zoomHeight/2)+"px;width: "+n.zoomWidth+"px;height: "+n.zoomHeight+"px;"};n.imageStyle=function(){return"bottom:"+(n.zoomYPos-n.zoomHeight/2)+"px;right:"+(n.zoomXPos-n.zoomWidth/2)+"px;-ms-transform:scale("+n.zoomLevel+");-webkit-transform:scale("+n.zoomLevel+");transform:scale("+n.zoomLevel+");"};n.moveZoom=function(t){n.zoomXPos=t.offsetX;n.zoomYPos=t.offsetY};n.$onInit=function(){n.zoom=!1;n.zoomXPos=0;n.zoomYPos=0}}angular.module("cmComponents").component("cmImageZoom",{bindings:{imageClass:"@",imageSrc:"@",imageWidth:"@",imageHeight:"@",zoomWidth:"@",zoomHeight:"@",zoomLevel:"@"},controller:t,templateUrl:n,transclude:!0});n.$inject=["endpointBaseUrl"]}(),function(){"use strict";function n(n){return n+"/clubs/snippets/club-cover-image-select"}function t(n,t,i){function u(){r.loading=!0;i.getLeagueCoverImages().success(function(n){r.leagueCoverImages=n;var i=t(n,{Id:r.coverImageId},!0);i.length&&(r.selectedCoverImage=i[0]);r.loading=!1}).error(function(){r.loading=!1})}var r=this;r.isActiveCoverImage=function(n){return n===r.selectedCoverImage};r.paneConfig={showArrows:!1,hideFocus:!0,autoReinitialise:!0,contentWidth:"0px"};n.$watch(function(){return r.selectedCoverImage},function(n){n!==null&&(r.coverImageId=n.Id)},!0);r.$onInit=function(){r.coverImageId=parseInt(r.coverImageId,10);r.selectedCoverImage=null;r.leagueCoverImages=null;r.loading=!1;u()}}angular.module("cmComponents").component("cmLeagueCoverImageSelect",{bindings:{coverImageId:"="},controller:t,templateUrl:n,transclude:!0});n.$inject=["endpointBaseUrl"];t.$inject=["$scope","filterFilter","leagueService"]}(),function(){"use strict";function n(n){return n+"/clubs/snippets/club-summary"}function t(){var n=this;n.paneConfig={showArrows:!1,hideFocus:!0,autoReinitialise:!0,contentWidth:"0px"};n.mouseEnter=function(){n.hover=!0};n.mouseLeave=function(){n.hover=!1};n.$onInit=function(){n.id=Math.floor(Math.random()*1e6+1);n.isTouch=!1;n.hover=!1;angular.element("html").hasClass("touch")&&(n.isTouch=!0)}}angular.module("cmComponents").component("cmLeagueSummary",{bindings:{league:"<",moderation:"<"},controller:t,templateUrl:n});n.$inject=["endpointBaseUrl"]}(),function(){"use strict";function n(n){return n+"/snippets/pagination"}function t(n){function r(){var n=0;for(t.minPage=Math.floor(t.page-i),t.maxPage=Math.floor(t.page+i),t.pageList=[],n=1;n<=t.pages;n=n+1)n>=t.minPage&&n<=t.maxPage&&t.pageList.push({Number:n})}var t=this,i=7;t.setPage=function(n){if(n>0&&n<=t.pages)t.onSetPage({page:n})};t.hasLowerPages=function(){return t.minPage>1};t.hasHigherPages=function(){return t.maxPage<t.pages};n.$watch(function(){return t.page},function(){r()});n.$watch(function(){return t.pages},function(){r()});t.$onInit=function(){t.minPage=0;t.maxPage=0;t.pageList=[]}}angular.module("cmComponents").component("cmPagination",{bindings:{page:"<",pages:"<",onSetPage:"&",anchor:"@"},controller:t,templateUrl:n,transclude:!0});n.$inject=["endpointBaseUrl"];t.$inject=["$scope"]}(),function(){"use strict";function n(n){return n+"/profile/snippets/player-statistics"}function t(n,t,i){function u(n){r.loading=!0;i.getPlayerStats(n).success(function(n){r.stats=n;r.loading=!1}).error(function(){r.loading=!1})}var r=this;r.paneConfig={showArrows:!1,hideFocus:!0,autoReinitialise:!0,contentWidth:"0px"};r.stats=[];r.loading=!1;r.$onInit=function(){n.$watch("playerId",function(){u(r.playerId)})}}angular.module("cmDirectives").component("cmPlayerStatistics",{bindings:{playerId:"="},controller:t,templateUrl:n,transclude:!0});n.$inject=["endpointBaseUrl"];t.$inject=["$scope","$attrs","playerService"]}(),function(){"use strict";function n(n){return n+"/snippets/quote-rotator"}function t(n){function i(i){t.loading=!0;i?n.get(i).success(function(n){t.quotes=n;t.loading=!1}).error(function(){t.loading=!1}):t.loading=!1}var t=this;t.quotes=[];this.$onInit=function(){i(t.source)}}angular.module("cmComponents").component("cmQuoteRotator",{bindings:{rid:"@",source:"@"},controller:t,templateUrl:n});n.$inject=["endpointBaseUrl"];t.$inject=["$http"]}(),function(){"use strict";function n(n){return n+"/your-stage/snippets/rated-track"}function t(n,t,i){function u(){r.formattedDistance=r.ratedTrack?t.toLocaleString(r.ratedTrack.Length,{minimumFractionDigits:2,maximumFractionDigits:2}):null}var r=this,f=angular.element('input[name="__RequestVerificationToken"]').attr("value");r.stageUrl=n+"/your-stage/"+r.ratedTrack.TrackGenId;r.showAddToFavourite=r.canFavourite=="true";r.getStarClass=function(n){var i=r.ratedTrack.Rating-n,t="";return i>0&&(t+=" full"),t};r.isCareerStage=function(){return r.ratedTrack.CareerStageId>0};r.mouseEnter=function(){r.hover=!0};r.mouseLeave=function(){r.hover=!1};r.$onInit=function(){r.hover=!1};i.$watch(function(){return r.ratedTrack},function(){u()})}angular.module("cmComponents").component("cmRatedTrack",{bindings:{ratedTrack:"<",canFavourite:"@"},controller:t,templateUrl:n,transclude:!0});n.$inject=["endpointBaseUrl"];t.$inject=["endpointBaseUrl","formatService","$scope"]}(),function(){"use strict";function n(n,t){var i=this;i.toggleState=function(){i.inProgress||(i.enabledState=!i.enabledState,i.inProgress=!0);t.$on("HANDLING_MODE_CHANGED",function(){n(function(){i.inProgress=!1})})}}angular.module("cmComponents").component("cmToggleSlider",{bindings:{enabledState:"=",enabledText:"@",disabledText:"@"},controller:n,template:'<span class="toggle_slider" ng-class="{enabled: $ctrl.enabledState, disabled: !$ctrl.enabledState, inprogress: $ctrl.inProgress }" ng-click="$ctrl.toggleState()"><span class="placeholder"><span class="enabled_text" ng-bind="$ctrl.enabledText"><\/span><span class="disabled_text" ng-bind="$ctrl.disabledText"><\/span><\/span><span class="enabled_text" ng-bind="$ctrl.enabledText"><\/span><span class="disabled_text" ng-bind="$ctrl.disabledText"><\/span><span class="handle"><\/span><\/span>',transclude:!0});n.$inject=["$timeout","$rootScope"]}(),function(){"use strict";function n(n){return n+"/your-stage/snippets/track-favourite-button"}function t(n,t,i,r,u){function o(){i(["TRACK.ADD_TRACK_FAVOURITE_ERROR"]).then(function(n){u.create({className:"danger",content:n["TRACK.ADD_TRACK_FAVOURITE_ERROR"]})})}function s(){i(["TRACK.REMOVE_TRACK_FAVOURITE_ERROR"]).then(function(n){u.create({className:"danger",content:n["TRACK.REMOVE_TRACK_FAVOURITE_ERROR"]})})}var f=this,e=angular.element('input[name="__RequestVerificationToken"]').attr("value");t.$on("added_favourite_track",function(n,t){t&&f.ratedTrack.TrackGenId===t&&(f.ratedTrack.Favourited=!0)});t.$on("removed_favourite_track",function(n,t){t&&f.ratedTrack.TrackGenId===t&&(f.ratedTrack.Favourited=!1)});f.addToFavourites=function(n){n.preventDefault();r.addFavouriteTrack(f.ratedTrack,e).success(function(n){n.IsSuccess?(t.$emit("added_favourite_track",f.ratedTrack.TrackGenId),i(["TRACK.ADDED_TRACK_FAVOURITE"]).then(function(n){u.create(n["TRACK.ADDED_TRACK_FAVOURITE"])})):n.HasFailedDueToMaxSlotsReached?i(["TRACK.ADD_TRACK_FAVOURITE_ERROR_NO_SLOTS"]).then(function(n){u.create({className:"danger",content:n["TRACK.ADD_TRACK_FAVOURITE_ERROR_NO_SLOTS"]})}):o()}).error(function(){o()})};f.removeFavourite=function(n){n.preventDefault();r.removeFavouriteTracks([f.ratedTrack],e).success(function(n){n.IsSuccess?(t.$emit("removed_favourite_track",f.ratedTrack.TrackGenId),i(["TRACK.REMOVED_TRACK_FAVOURITE"]).then(function(n){u.create(n["TRACK.REMOVED_TRACK_FAVOURITE"])})):s()}).error(function(){s()})};f.mouseEnter=function(){f.hover=!0};f.mouseLeave=function(){f.hover=!1};f.$onInit=function(){f.hover=!1}}angular.module("cmComponents").component("cmTrackFavouriteButton",{bindings:{ratedTrack:"="},controller:t,templateUrl:n,transclude:!0});n.$inject=["endpointBaseUrl"];t.$inject=["$scope","$rootScope","$translate","trackService","ngToast"]}(),function(){"use strict";angular.module("cmComponents").factory("sizeWatcher",["$interval",function(n){return self.monitor=n(function(){},500),function(t){var i=this;i.group=[function(){return t.offsetWidth},function(){return t.offsetHeight}];i.cancel=function(){n.cancel(i.monitor)}}}]).factory("textureBaseUrl",["endpointBaseUrlGlobal",function(n){return n+"/UI/compiled/images/track/spline/"}]).factory("trackLoader",["trackService",function(n){return function(t){return n.getTrackSplineData(t)}}]).factory("trackRenderer",["$document","$q","textureBaseUrl",function(n,t,i){var s=new THREE.TextureLoader,l=32,a=512,v=512,f=n[0].createElement("canvas"),r,u,h,c,p;f.setAttribute("width",a);f.setAttribute("height",v);r=null;try{r=new THREE.WebGLRenderer({antialias:!0,alpha:!0,canvas:f});r.setClearColor(new THREE.Color(0,0,0),0);r.autoClear=!1;r.setSize(a,v)}catch(g){}var e=function(n,t,i,r){var e=new THREE.PlaneGeometry(r.width,r.height),u=e.faceVertexUvs[0][0],f=e.faceVertexUvs[0][1];return u[0].setX(n.x),u[0].setY(t.y),u[1].setX(n.x),u[1].setY(n.y),u[2].setX(t.x),u[2].setY(t.y),f[0].setX(n.x),f[0].setY(n.y),f[1].setX(t.x),f[1].setY(n.y),f[2].setX(t.x),f[2].setY(t.y),e.translate(0,i*r.height,0),e.uvsNeedUpdate=!0,e},o=new THREE.Vector2(1,1),w=e(new THREE.Vector2(.6,0),new THREE.Vector2(.8,1),.25,o),b=e(new THREE.Vector2(.2,0),new THREE.Vector2(.4,1),0,o),k=e(new THREE.Vector2(.4,0),new THREE.Vector2(.6,1),.5,o),d=e(new THREE.Vector2(.8,0),new THREE.Vector2(1,1),.5,o),y=function(){var n=this;n.scene=new THREE.Scene;n.splitMaterial=new THREE.MeshBasicMaterial({color:16777215,transparent:!0});n.vignetteMaterial=new THREE.MeshBasicMaterial({color:16777215,transparent:!0});n.splitGroup=new THREE.Group;n.resourceWait=t.defer();n.scene.add(n.splitGroup);n.vignette=new THREE.Mesh(new THREE.PlaneGeometry(1,1),n.vignetteMaterial);n.vignette.position.setZ(-1);s.load(i+"vignette.png",function(t){n.vignetteMaterial.map=t;n.splitMaterial.map&&n.resourceWait.resolve(n)});n.scene.add(n.vignette);n.camera=new THREE.OrthographicCamera(-.5,.5,.5,-.5,-10,200);s.load(i+"spline_icons.png",function(t){n.splitMaterial.map=t;n.vignetteMaterial.map&&n.resourceWait.resolve(n)})};return Object.assign(y.prototype,{setAspectRatio:function(n){this.vignette.scale.setX(n);this.camera.left=-.5*n;this.camera.right=.5*n;this.camera.updateProjectionMatrix()},waitForResources:function(){return this.resourceWait.promise},setTransparent:function(n){this.vignette.visible=!n},setSplits:function(n,t,i){for(var f,e=this.splitGroup,r=e.children.length-1;r>=0;r--)e.remove(e.children[r]);for(r=0;r<n.length;r++){var o=n[r],u=null,s=o.gate.crossing.clone().project(t).unproject(this.camera);switch(o.type){case 1:u=b;break;case 2:u=k;break;case 3:u=w;break;case 10:u=d}u!=null&&(f=new THREE.Mesh(u,this.splitMaterial),f.position.copy(s),f.position.setZ(0),f.scale.setScalar(i),e.add(f))}}}),u=new y(!1),h=function(n){var r=this,t,u,f,c,i,e;r.gates=[];r.splits=[];var o=n.Gates,l=o.length,s=new THREE.Vector3(99999,99999,99999),h=new THREE.Vector3(-99999,-99999,-99999);for(i=0;i<l;i++)t=o[i],u={crossing:new THREE.Vector3(t.Crossing.X,t.Crossing.Y,t.Crossing.Z),left:new THREE.Vector3(t.Left.X,t.Left.Y,t.Left.Z),right:new THREE.Vector3(t.Right.X,t.Right.Y,t.Right.Z)},s.min(u.crossing),h.max(u.crossing),r.gates.push(u);for(r.bounds=new THREE.Box3(s,h),f=n.Routes[0].Splits,c=f.length,i=0;i<c;i++)e=f[i],r.splits.push({type:e.Type,gate:this.gates[e.GateId]})},Object.assign(h.prototype,{normalise:function(){for(var t,n=new THREE.Vector3(0,0-this.bounds.min.y,0),r=this.gates,i=r.length-1;i>=0;i--)t=r[i],t.crossing.add(n),t.left.add(n),t.right.add(n);this.bounds.translate(n)},scale:function(n,t,i){for(var u,r=new THREE.Vector3(n,t,i),e=this.gates,f=e.length-1;f>=0;f--)u=e[f],u.crossing.multiply(r),u.left.multiply(r),u.right.multiply(r);this.bounds.set(this.bounds.min.multiply(r),this.bounds.max.multiply(r))},buildGeometry:function(){for(var e,i=new THREE.Geometry,r=this.bounds.min.y,u=this.gates,h=u.length,a=1,n=0,t=i.vertices,c=i.faces,f=0;f<h;f++){e=u[f];n=t.length;var o=e.left.clone(),l=e.crossing.clone(),s=e.right.clone();o.add((new THREE.Vector3).subVectors(o,l).multiplyScalar(a));s.add((new THREE.Vector3).subVectors(s,l).multiplyScalar(a));t.push(o);t.push(l);t.push(s);t.push(o.clone().setY(r));t.push(s.clone().setY(r));f!=h-1&&c.push(new THREE.Face3(n+0,n+1,n+6,null,null,0),new THREE.Face3(n+1,n+2,n+6,null,null,0),new THREE.Face3(n+0,n+6,n+5,null,null,0),new THREE.Face3(n+2,n+7,n+6,null,null,0),new THREE.Face3(n+3,n+0,n+5,null,null,0),new THREE.Face3(n+3,n+5,n+8,null,null,0),new THREE.Face3(n+2,n+4,n+9,null,null,0),new THREE.Face3(n+2,n+9,n+7,null,null,0))}return t.push(u[0].crossing.clone().setY(r)),c.push(new THREE.Face3(3,1,0,null,null,0),new THREE.Face3(3,t.length-1,1,null,null,0),new THREE.Face3(4,2,1,null,null,0),new THREE.Face3(4,1,t.length-1,null,null,0)),t.push(u[h-1].crossing.clone().setY(r)),c.push(new THREE.Face3(n+3,n+0,n+1,null,null,0),new THREE.Face3(t.length-1,n+3,n+1,null,null,0),new THREE.Face3(n+1,n+2,n+4,null,null,0),new THREE.Face3(n+1,n+4,t.length-1,null,null,0)),i.verticesNeedUpdate=!0,i.elementsNeedUpdate=!0,i.computeFaceNormals(),i.computeBoundingSphere(),i.computeBoundingBox(),i}}),c=function(n){var i=this,f=n.boundingBox.getCenter(),t,r,u;n=n.clone();n.center();t=new THREE.OrthographicCamera(-1,1,1,-1,-2e4,2e4);r=45;t.position.copy(new THREE.Vector3(0,0,1).applyEuler(new THREE.Euler(THREE.Math.degToRad(-30),THREE.Math.degToRad(r),THREE.Math.degToRad(0),"YXZ")).multiplyScalar(1e3));t.lookAt(new THREE.Vector3(0,0,0));t.updateProjectionMatrix();t.updateMatrixWorld();n.applyMatrix((new THREE.Matrix4).multiplyMatrices(t.projectionMatrix,(new THREE.Matrix4).getInverse(t.matrixWorld)));n.computeBoundingBox();i.modelBoundsWorld=n.boundingBox;u=n.boundingBox.getCenter();i.lookingAt=f.add(u.unproject(t));t.position.add(i.lookingAt);t.updateMatrixWorld();i.camera=t},Object.assign(c.prototype,{fitView:function(n,t,i){var e=n/t,u=this.modelBoundsWorld.getSize(),s=u.x/u.y,r=new THREE.Vector2,o,f;s<e?r.set(u.y*e,u.y):r.set(u.x,u.x/e);o=r.y/t*i;r.addScalar(o*3.5);f=this.camera;f.left=r.x/-2;f.right=r.x/2;f.top=r.y/2;f.bottom=r.y/-2;this.size=r;f.updateProjectionMatrix()}}),p=function(n,r,u,f){var y=n.geometry.boundingBox.getCenter(),e,v,h,o,c,l,a;return console.log("Track model box:",n.geometry.boundingBox),e=new THREE.Scene,e.add(new THREE.AmbientLight(16777215,.3)),v=new THREE.PointLight(16777215),v.position.copy(y).add(new THREE.Vector3(5e3,1e4,0)),e.add(v),e.add(n),h=t.defer(),f?(o=new THREE.GridHelper(3e4,60,0,0),o.material.opacity=.75,o.material.transparent=!0,o.position.y=-1,e.add(o),c=new THREE.PlaneGeometry(u.x*2,u.y*2),c.faceVertexUvs[0]=[[new THREE.Vector2(-.5,1.5),new THREE.Vector2(-.5,-.5),new THREE.Vector2(1.5,1.5)],[new THREE.Vector2(-.5,-.5),new THREE.Vector2(1.5,-.5),new THREE.Vector2(1.5,1.5)]],c.uvsNeedUpdate=!0,l=new THREE.MeshBasicMaterial({color:16777215,side:THREE.FrontSide}),a=new THREE.Mesh(c,l),a.rotation.x=Math.PI/-2,a.position.y=-2,e.add(a),s.load(i+r+".jpg",function(n){n.wrapS=THREE.MirroredRepeatWrapping;n.wrapT=THREE.MirroredRepeatWrapping;n.offset.set(0,0);n.repeat.set(1,1);l.map=n;l.needsUpdate=!0;h.resolve(e)})):h.resolve(e),h.promise},function(i,e,o,s){var y,v,w,a;return(i=new h(i),i.normalise(),i.scale(1,2,1),y=new THREE.Mesh(i.buildGeometry(),new THREE.MultiMaterial([new THREE.MeshLambertMaterial({color:new THREE.Color(16777215)})])),v=t.defer(),r==null)?(v.reject("No WebGL support"),v.promise):(w=r.getSize(),a=new c(y.geometry),u.waitForResources().then(function(){p(y,e,o,!s).then(function(t){u.setTransparent(s);var e=n[0].createElement("canvas"),o={canvas:angular.element(e),render:function(n,o){var s,h,c;n!=0&&o!=0&&(s=n/o,a.fitView(n,o,l),u.setAspectRatio(s),u.setSplits(i.splits,a.camera,s/n*l),h=a.size.length()/1.5,c=a.lookingAt,r.setSize(n,o),r.clear(!0,!0,!0),r.render(t,a.camera),r.clear(!1,!0,!1),r.render(u.scene,u.camera),e.setAttribute("width",n),e.setAttribute("height",o),e.getContext("2d").drawImage(f,0,0,n,o))}};v.resolve(o)})}),v.promise)}}]).component("cmTrackSpline",{bindings:{shortcode:"<?",transparent:"<",trackData:"<?",onLoad:"&"},controller:["$scope","sizeWatcher","$element","trackLoader","trackRenderer",function(n,t,i,r,u){var f=this,e,o;f.currentResult=null;e=new t(i[0]);n.$watchGroup(e.group,function(n){f.currentResult&&f.currentResult.render(n[0],n[1])});f.$postLink=function(){i.css("display","inline-block")};f.$onChanges=function(){f.currentResult=null;var n=function(n){var t=i[0].offsetWidth,r=i[0].offsetHeight,e=o(n.LocationId),s=JSON.parse(n.Track);u(s,e,new THREE.Vector2(n.WorldBounds.Width,n.WorldBounds.Length),f.transparent).then(function(u){u.render(t,r);f.currentResult=u;u.canvas.css({width:"100%",height:"100%","image-rendering":"-webkit-optimize-contrast",display:"block"});var e=i.children();if(e.length>0&&e[0].remove(),i.append(u.canvas),f.onLoad)f.onLoad({shortcode:f.shortcode,element:i,data:n})})};f.shortcode!=null?r(f.shortcode).then(function(t){n(t.data)}):f.trackData!=null?n(f.trackData):console.error("Track component: specify either a shortcode or track-data attribute")};o=function(n){var t="";switch(n){case 14:t="sweden";break;case 3:t="uk";break;case 16:t="australia";break;case 26:t="usa";break;case 21:t="spain";break;default:console.log("Unrecognised location ID",n);return}return t}}]})}(),function(){"use strict";function n(n){return n+"/clubs/snippets/validation-summary"}function t(n,t,i){function u(n){var u=[],t,i,r;for(t in n.errors)if(n.errors.hasOwnProperty(t))for(i in n.errors[t])if(n.errors.hasOwnProperty(t))for(r=0;r<n.errors[t][i].length;r++)u.push({errorMessage:n.errors[t][i][r].message,fieldName:i,vid:t});return u}var r=this;r.validationErrors=u(t.get(r.validationContext));i.$on(t.getUpdateEventName(r.validationContext),function(n,t){r.validationErrors=u(t)});r.goToError=function(t){if(n.isFunction(r.onErrorClicked))r.onErrorClicked({error:t})}}angular.module("cmComponents").component("cmValidationSummary",{bindings:{validationContext:"@",onErrorClicked:"&"},controller:t,templateUrl:n});n.$inject=["endpointBaseUrl"];t.$inject=["_","validationService","$rootScope"]}();window.cmApp=angular.module("cmApp",["cmDirectives","cmComponents","utilFilters","aboutControllers","docsControllers","eventsControllers","trackControllers","homeControllers","leagueControllers","profileControllers","newsControllers","tripleCrownControllers","pascalprecht.translate","ngJScrollPane","ngAnimate","ngMessages","ngToast","ui.bootstrap","ui.validate","daterangepicker","sprintf","debounce","ngScrollbars","timer","localytics.directives"]);angular.module("cmApp");Array.prototype.indexOf||(Array.prototype.indexOf=function(n){var i=this.length>>>0,t=Number(arguments[1])||0;for(t=t<0?Math.ceil(t):Math.floor(t),t<0&&(t+=i);t<i;t++)if(t in this&&this[t]===n)return t;return-1});Object.keys||(Object.keys=function(n){var t=[];for(var i in n)n.hasOwnProperty(i)&&t.push(i);return t});typeof Object.assign!="function"&&(Object.assign=function(n){"use strict";var u,i,t,r;if(n==null)throw new TypeError("Cannot convert undefined or null to object");for(u=Object(n),i=1;i<arguments.length;i++)if(t=arguments[i],t!=null)for(r in t)Object.prototype.hasOwnProperty.call(t,r)&&(u[r]=t[r]);return u});window.cmApp.factory("DateRangeModel",["cryptoService",function(n){var t=function(t){var i=t||{};this.vid=i.vid||n.generateModelId();this.startDate=i.startDate!==undefined?moment(i.startDate).local():moment().utc().local().add(1,"hours").minutes(0).seconds(0).milliseconds(0);this.endDate=i.endDate!==undefined?moment(i.endDate).local():moment().utc().local().add(7,"days").minutes(0).seconds(0).milliseconds(0)};return t.prototype.getFieldValidationId=function(n){return this.vid+n},t.prototype.getName=function(n){return this.vid+"."+n},t}]);window.cmApp.factory("ChampionshipEventModel",["DateRangeModel","ChampionshipStageModel","VehicleRestrictionModel","PlayerResultModel","optionsService","_","cryptoService",function(n,t,i,r,u,f,e){var o=function(o){var s=o||{};this.vid=s.vid||e.generateModelId();this.dateRange=new n(s.dateRange);this.gameMode=s.gameMode||1;this.country=s.country;this.restrictions=new i(s.restrictions);this.playerResult=new r(s.playerResult);this.stages=f.map(s.stages||[],function(n){return new t(n)});this.meta=u.getBatch(["clubGameModeOptions","locationAsCountryOptions","vehicleRestrictionOptions","weatherOptions","timeOfDayOptions","careerStageOptions"])};return o.prototype.addStage=function(n){this.stages.push(new t(n))},o.prototype.getName=function(n){return this.vid+"."+n},o}]);window.cmApp.factory("ChampionshipStageModel",["TrackGenConfigDataModel","optionsService","cryptoService",function(n,t,i){var r=function(r){var u=r||{};this.vid=u.vid||i.generateModelId();this.weatherId=u.weatherId||0;this.timeOfDayId=u.timeOfDayId||0;this.hasServiceArea=!!u.hasServiceArea;this.allowVehicleTuning=!!u.allowVehicleTuning;this.trackGen=new n(u.trackGen);this.trackModelId=u.trackModelId;this.rallyXDifficulty=u.rallyXDifficulty;this.rallyXLapCountHeat=u.rallyXLapCountHeat||0;this.rallyXLapCountSemi=u.rallyXLapCountSemi||0;this.rallyXLapCountFinal=u.rallyXLapCountFinal;this.meta=t.getBatch(["weatherOptions","timeOfDayOptions","rallyXDifficultyOptions","careerStageOptions","myStageOptions","rallyXLapOptions"])};return r.prototype.getName=function(n){return this.vid+"."+n},r}]);window.cmApp.factory("ChampionshipModel",["ChampionshipEventModel","optionsService","_","cryptoService","$rootScope",function(n,t,i,r){var u=function(t){var u=t||{},f=this;f.vid=u.vid||r.generateModelId();f.championshipNumber=u.championshipNumber;f.allowAssists=u.allowAssists!==undefined?u.allowAssists:!0;f.allowExteriorCameras=u.allowExteriorCameras!==undefined?u.allowExteriorCameras:!0;f.allowEventRestart=!!u.allowEventRestart;f.allowStageRestart=!!u.allowStageRestart;f.hideStandings=!!u.hideStandings;f.events=i.map(u.events||[],function(t){return new n(t)})};return u.prototype.addEvent=function(t){this.events.push(new n(t))},u.prototype.getName=function(n){return this.vid+"."+n},u}]);window.cmApp.factory("CreateChampionshipModel",["ChampionshipModel","optionsService","_",function(n){return function(t){var i=t||{};this.clubId=i.clubId;this.championship=new n(i.championship)}}]);window.cmApp.factory("GenerateChampionshipModel",["optionsService","cryptoService",function(n,t){var i=function(i){var r=i||{};this.vid=r.vid||t.generateModelId();this.clubId=r.clubId;this.gameMode=r.gameMode||1;this.numOfEvents=r.numOfEvents||4;this.numOfStages=r.numOfStages||6;this.meta=n.getBatch(["clubGameModeOptions"])};return i.prototype.getFieldValidationId=function(n){return this.vid+n},i.prototype.getName=function(n){return this.vid+"."+n},i}]);window.cmApp.factory("PlayerResultModel",["cryptoService",function(n){return function(t){var i=t||{};this.vid=i.vid||n.generateModelId();this.rank=i.rank||null;this.points=i.points||null}}]);window.cmApp.factory("TrackGenConfigDataModel",["cryptoService",function(n){return TrackGenConfigDataModel=function(t){var i=t||{};this.vid=i.vid||n.generateModelId();this.nameString=i.nameString;this.shortCode=i.shortCode;this.trackComplexity=i.trackComplexity||1;this.trackLength=i.trackLength||1}}]);window.cmApp.factory("VehicleRestrictionModel",["optionsService","cryptoService",function(n,t){var i=function(i){var r=i||{};this.vid=r.vid||t.generateModelId();this.driveTrainIds=r.driveTrainIds||[];this.manufacturerIds=r.manufacturerIds||[];this.maxBHP=r.maxBHP||0;this.manufacturerNationalityIds=r.manufacturerNationalityIds||[];this.vehicleClassIds=r.vehicleClassIds||[];this.vehicleIds=r.vehicleIds||[];this.meta=n.getBatch(["clubVehicleClassOptions","clubVehicleOptions","driveTrainOptions","manufacturerOptions","manufacturerNationalityOptions","vehicleBhpOptions"]);this.meta.restrictionType=this.getRestrictionType()};return i.prototype.getFieldValidationId=function(n){return this.vid+n},i.prototype.getName=function(n){return this.vid+"."+n},i.prototype.getRestrictionType=function(){return this.driveTrainIds.length>0?"DRIVETRAIN":this.manufacturerIds.length>0?"MANUFACTURER":this.maxBHP.length>0?"BHP":this.manufacturerNationalityIds.length>0?"MANUFACTURER_COUNTRY":this.vehicleClassIds.length>0?"VEHICLE_CLASS":this.vehicleIds.length>0?"VEHICLE":undefined},i.prototype.clear=function(){this.driveTrainIds=[];this.manufacturerIds=[];this.maxBHP=0;this.manufacturerNationalityIds=[];this.vehicleClassIds=[];this.vehicleIds=[]},i}]);window.cmApp.factory("validationErrorsModel",["_",function(){"use strict";return function(n){var t={};return t.errors=n||{},t.getErrors=function(n,i){if(t.hasError(n,i))return t.errors[n][i.toLowerCase()]},t.hasError=function(n,i){return t.errors[n]&&t.errors[n][i.toLowerCase()]},t}}])