function showLogInRegistrationContainer(){layoutJS.showLogInRegistrationContainer()}(function(){"use strict";angular.module("appMain",["ng","ngRoute","ngTouch"]).config(["$httpProvider","$locationProvider",function(n){n.defaults.headers.get||(n.defaults.headers.get={});n.defaults.headers.get["Cache-Control"]="no-cache";n.defaults.headers.get.Pragma="no-cache"}])})(),function(){"use strict";angular.module("appMain").factory("mailCheckService",["$http",function(n){return{unreadMailCount:0,checkRequested:!1,checkMailCount:function(t){var i=this;(!i.checkRequested||t)&&(i.checkRequested=!0,n.get("/api/mailbox/get-unread-mail-count").success(function(n){i.unreadMailCount=n.unreadMailCount}).error(function(n){console.error(n.errorMessage)}))}}}])}(),function(){"use strict";angular.module("appMain").factory("mailSendService",["$rootScope","$http","$window","$timeout","pageService",function(n,t,i,r,u){return{mailMessageSuccess:!1,memberId:0,memberSubscriptionStatus:"Basic",mailMessageRecipients:[],mailMessageList:[],currentMailMessage:null,composeMessage:{subject:null,message:null},sendMessage:function(n){var i=this,r;i.mailMessageSuccess=!1;r={recipientMemberIds:[],subject:i.composeMessage.subject,message:i.composeMessage.message,senderMemberId:this.memberId};i.mailMessageRecipients.length>0?i.composeMessage.subject!==null&&i.composeMessage.message!==null&&i.composeMessage.subject!==""&&i.composeMessage.message!==""?(r.recipientMemberIds.push(i.mailMessageRecipients[0]),t.post("/api/mailbox/create-mailbox-message",r).success(function(){u.page().displayNotificationBar("Your message has been sent","success");i.mailMessageSuccess=!0}).error(function(n){alert("There was an error sending the message. This is a server error.");console.error("There was an error sending the message. This is a server error.",n)}).finally(function(){n(i.mailMessageSuccess)})):(n(i.mailMessageSuccess),u.page().displayNotificationBar("Please add a subject and a message","error")):(n(i.mailMessageSuccess),u.page().displayNotificationBar("Please add one or more recipients","error"));i.mailMessageRecipients=[]},setMessageContents:function(n,t){this.composeMessage.subject=n;this.composeMessage.message=t}}}])}(),function(){"use strict";angular.module("appMain").factory("pageService",["$rootScope","$window","$timeout",function(n,t,i){var e="Forces Reunited",r="FR.SharedData",u,f;return n.sharedData={setData:function(n){t.sessionStorage.setItem(r,JSON.stringify(n))},getData:function(){var n=t.sessionStorage.getItem(r);return n&&(n=n=="undefined"?[]:JSON.parse(n)),n||[]},clearData:function(){t.sessionStorage.setItem(r,[])}},n.page={scrollTop:0,isScrolledPastHeader:function(){return this.scrollTop>120},pageSize:{small:!1,medium:!1,large:!1},tabs:{activeTab:"1"},notificationBar:{display:!1,animate:!1,message:null,notificationType:"success",timeoutPromise:null},displayNotificationBar:function(n,t){var r=this.notificationBar;r.display=!1;r.animate=!1;r.notificationType=t;r.timeoutPromise!=null&&i.cancel(r.timeoutPromise);r.message=n;r.display=!0;t!="error"&&(r.timeoutPromise=i(function(){r.animate=!0;i(function(){r.display=!1;r.animate=!1},4e3)},5e3))}},u=angular.element(t),f=function(){var t=!1;matchMedia("only screen and (max-width: 40em)").matches?n.page.pageSize.small||(n.page.pageSize.small=!0,n.page.pageSize.medium=!1,n.page.pageSize.large=!1,t=!0):matchMedia("only screen and (min-width:40.063em) and (max-width:64em)").matches?n.page.pageSize.medium||(n.page.pageSize.small=!1,n.page.pageSize.medium=!0,n.page.pageSize.large=!1,t=!0):n.page.pageSize.large||(n.page.pageSize.small=!1,n.page.pageSize.medium=!1,n.page.pageSize.large=!0,t=!0);t&&(n.$$phase||n.$apply())},u.bind("load",function(){f()}),u.bind("resize",function(){f()}),{page:function(){return n.page},pageTitle:function(){return e},setPageTitle:function(n){e=n+" | Forces Reunited"},setData:n.sharedData.setData,getData:n.sharedData.getData,clearData:n.sharedData.clearData}}])}(),function(){"use strict";angular.module("appMain").factory("validationService",["$q","$timeout","$http",function(n,t,i){return{allValid:function(n){for(var i=!0,t=0;t<n.length;t++)if(n[t].invalid){i=!1;break}return i},anyValid:function(n){for(var i=!1,t=0;t<n.length;t++)if(!n[t].invalid){i=!0;break}return i},validateFirstName:function(t){var r=n.defer(),f=globalJs.appConfig.regexPatterns.name,u=f.test(t),i;return u=t?!0:!1,u?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"The first name contains invalid characters"},r.resolve(i)),r.promise},validateSurname:function(t){var r=n.defer(),f=globalJs.appConfig.regexPatterns.name,u=f.test(t),i;return u=t?!0:!1,u?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"The surname contains invalid characters"},r.resolve(i)),r.promise},validateNameIgnoreEmpty:function(t,i){var u=n.defer(),f=globalJs.appConfig.regexPatterns.name,e=f.test(t),r;return i&&t===""?(r={invalid:!1,validationMessage:null},u.resolve(r)):e?(r={invalid:!1,validationMessage:null},u.resolve(r)):(r={invalid:!0,validationMessage:"This contains invalid characters"},u.resolve(r)),u.promise},validatePassword:function(t){var r=n.defer(),u=globalJs.appConfig.regexPatterns.password,f=u.test(t),i;return f?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"Password must be 6 characters or more"},r.resolve(i)),r.promise},validateStringLength:function(t,i,r,u){var e=n.defer(),o=!t&&i===0||t&&typeof t=="string"&&t.length>=i&&t.length<=r,f;return o?(f={invalid:!1,validationMessage:null},e.resolve(f)):(f=t&&typeof t=="string"?t.length<i?{invalid:!0,validationMessage:"The "+u+" value is too short"}:{invalid:!0,validationMessage:"The "+u+" length exceeds the maximum allowed"}:{invalid:!0,validationMessage:"A value is required for "+u},e.resolve(f)),e.promise},validateShortString:function(n,t){return this.validateShortStringIgnoreEmpty(n,!1,t)},validateShortStringIgnoreEmpty:function(t,i,r){var f=n.defer(),e=globalJs.appConfig.regexPatterns.shortDescription,o=e.test(t),u;return i&&t===""?(u={invalid:!1,validationMessage:null},f.resolve(u)):o?(u={invalid:!1,validationMessage:null},f.resolve(u)):(u=r?{invalid:!0,validationMessage:r}:{invalid:!0,validationMessage:"This field requires an input"},f.resolve(u)),f.promise},validateLongString:function(t,i){var u=n.defer(),f=globalJs.appConfig.regexPatterns.longDescription,e=f.test(t),r;return e?(r={invalid:!1,validationMessage:null},u.resolve(r)):(r=i?{invalid:!0,validationMessage:i}:{invalid:!0,validationMessage:"This field requires an input"},u.resolve(r)),u.promise},validateIsNull:function(t,i){var u=n.defer(),r;return t!==null?(r={invalid:!1,validationMessage:null},u.resolve(r)):(r=i?{invalid:!0,validationMessage:i}:{invalid:!0,validationMessage:"This field requires an input"},u.resolve(r)),u.promise},validateNoEmailAddressInText:function(t,i){var u=n.defer(),f=globalJs.appConfig.regexPatterns.noEmail,e=f.test(t),r;return e?(r={invalid:!1,validationMessage:null},u.resolve(r)):(r=i?{invalid:!0,validationMessage:i}:{invalid:!0,validationMessage:"This field requires an input"},u.resolve(r)),u.promise},validateAtLeastOneOfTrue:function(t){var r=n.defer(),u=!1,i;return jQuery.each(t,function(n,t){t===!0&&(u=!0)}),u?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"Plese select an option"},r.resolve(i)),r.promise},validateComment:function(t){var r=n.defer(),u=globalJs.appConfig.regexPatterns.comment,f=u.test(t),i;return f?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"This field requires an input"},r.resolve(i)),r.promise},validateCardholderName:function(t){var r=n.defer(),u=globalJs.appConfig.regexPatterns.name,f=u.test(t),i;return f?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"The cardholder name contains invalid characters"},r.resolve(i)),r.promise},validateCardNumber:function(t){var r=n.defer(),f=globalJs.appConfig.regexPatterns.cardNumber,u,i;return t!==null&&(t=t.replace(/\s+/g,"")),u=f.test(t),u?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"The card number is invalid"},r.resolve(i)),r.promise},validateSecurityCode:function(t){var r=n.defer(),u=globalJs.appConfig.regexPatterns.securityCode,f=u.test(t),i;return f?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"Please enter a valid security code (CSV)"},r.resolve(i)),r.promise},validateCardYear:function(t){var r=n.defer(),u=globalJs.appConfig.regexPatterns.expiryYear,f=u.test(t),i;return f?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"Please enter a valid expiry date"},r.resolve(i)),r.promise},validateCardMonth:function(t){var r=n.defer(),u=globalJs.appConfig.regexPatterns.expiryMonth,f=u.test(t),i;return f?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"Please enter a valid expiry date"},r.resolve(i)),r.promise},validateSubscriptionPeriod:function(t){var r=n.defer(),u=globalJs.appConfig.regexPatterns.subscriptionPeriod,f=u.test(t),i;return f?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"Please enter a valid subscription period"},r.resolve(i)),r.promise},validateRadioButtonSelected:function(t){var r=n.defer(),u=globalJs.appConfig.regexPatterns.radioButtonValue,f=u.test(t),i;return f?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"Please select a value"},r.resolve(i)),r.promise},validateEmail:function(t){var r=n.defer(),u=globalJs.appConfig.regexPatterns.email,f=u.test(t),i;return f?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"The email address contains invalid characters"},r.resolve(i)),r.promise},validateUsername:function(r,u){var f=n.defer();return u!=null&&t.cancel(u),u=t(function(){var u=globalJs.appConfig.regexPatterns.username,e=u.test(r),n,t;e?(t={username:r},i.post("/api/members/validate-user-name",t).success(function(t){t.isValid?(n={invalid:!1,validationMessage:null},f.resolve(n)):(n={invalid:!0,validationMessage:"This username is unavailable"},f.resolve(n))}).error(function(n){f.reject(n);console.error("error obtaining username available value",n)})):(n={invalid:!0,validationMessage:"The username contains invalid characters"},f.resolve(n))},200),f.promise},validateFriendsNetworkName:function(t){var r=n.defer(),u=globalJs.appConfig.regexPatterns.friendsNetworkName,f=u.test(t)&&!globalJs.fn.string.isUndefinedNullOrWhiteSpace(t),i;return f?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"The network name contains invalid characters"},r.resolve(i)),r.promise},validateForumTag:function(t){var r=n.defer(),u=globalJs.appConfig.regexPatterns.forumTag,f=u.test(t),i;return f?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"The forum tag contains invalid characters"},r.resolve(i)),r.promise},validateServiceNumber:function(t){var r=n.defer(),u=globalJs.fn.string.isUndefinedNullOrWhiteSpace(t),f=globalJs.appConfig.regexPatterns.serviceNumber,e=u||f.test(t),i;return e?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"The service number contains invalid characters"},r.resolve(i)),r.promise},validateYear:function(t){var r=n.defer(),f=globalJs.appConfig.regexPatterns.year,e=f.test(t),i,u;return e?(u=parseInt(t),u>1900&&u<=(new Date).getFullYear()?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"Please enter a valid year"},r.resolve(i))):(i={invalid:!0,validationMessage:"Please enter a valid year (numeric only)"},r.resolve(i)),r.promise},validateForumThreadTitle:function(t){var r=n.defer(),u=!globalJs.fn.string.isUndefinedNullOrWhiteSpace(t),i;return u?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"A title is required"},r.resolve(i)),r.promise},validateForumPost:function(t,i){var u=n.defer(),o=globalJs.appConfig.regexPatterns.noEmail,f=!globalJs.fn.string.isUndefinedNullOrWhiteSpace(t)||i>0,e=o.test(t),r;return f&&e?(r={invalid:!1,validationMessage:null},u.resolve(r)):f?e||(r={invalid:!0,validationMessage:"Email addresses are not allowed in forum posts"},u.resolve(r)):(r={invalid:!0,validationMessage:"Either post text or images are required  to post"},u.resolve(r)),u.promise},validateGalleryYear:function(t){var r=n.defer(),e=globalJs.appConfig.regexPatterns.year,f=globalJs.fn.string.isUndefinedNullOrWhiteSpace(t),o=e.test(t)||f,i,u;return o?(u=parseInt(t),f||u>1900&&u<=(new Date).getFullYear()?(i={invalid:!1,validationMessage:null},r.resolve(i)):(i={invalid:!0,validationMessage:"Please enter a valid year"},r.resolve(i))):(i={invalid:!0,validationMessage:"Please enter a valid year (numeric only)"},r.resolve(i)),r.promise},validateDate:function(t,i,r,u){var o=n.defer(),f=!1,e;return i&&globalJs.fn.string.isUndefinedNullOrWhiteSpace(t)&&(f=!0),f||t&&t instanceof Date&&(r?t>=r&&(f=!0):f=!0,u?t<=r&&(f=!0):f=!0),f?(e={invalid:!1,validationMessage:null},o.resolve(e)):(e={invalid:!0,validationMessage:"A date is required"},o.resolve(e)),o.promise},validateUkPostCode:function(t,i,r){var e=n.defer(),o=globalJs.appConfig.regexPatterns.ukPostCode,u=!1,f;return i&&globalJs.fn.string.isUndefinedNullOrWhiteSpace(t)&&(u=!0),u||t&&(u=o.test(t)),u?(f={invalid:!1,validationMessage:null},e.resolve(f)):(angular.isString(r)===!1&&(r="A valid UK post code is required"),f={invalid:!0,validationMessage:r},e.resolve(f)),e.promise},validateServicePeriod:function(t,i){var u=n.defer(),r=!1,f=null,e,o;globalJs.fn.string.isUndefinedNullOrWhiteSpace(t)&&(t="1920");globalJs.fn.string.isUndefinedNullOrWhiteSpace(i)&&(e=(new Date).getFullYear(),i=e.toString());let s=parseInt(t),h=parseInt(i);return r||(h>s?r=!1:(r=!0,f="Start year must be before End Year")),o={invalid:r,validationMessage:f},u.resolve(o),u.promise}}}])}(),function(){"use strict";angular.module("appMain").factory("paymentRecordService",["$rootScope","$http","$timeout","$q","validationService",function(n,t,i,r,u){var f="";return{recordId:{value:0,set:function(n){this.value=n},get:function(){return this.value}},quantityOptions:{value:[1],set:function(n){angular.isArray(n)&&n.length>0&&(this.value=n)},get:function(){return this.value}},quantity:{value:1,set:function(n){this.value=n},get:function(){return this.value}},description:{value:"",set:function(n){this.value=n},get:function(){return this.value}},requiresAddress:{value:!1,set:function(n){this.value=n},get:function(){return this.value}},frTransactionType:{value:null,set:function(n){this.value=n},get:function(){return this.value}},itemPrice:{value:0,set:function(n){this.value=n},get:function(){return this.value}},toPay:{value:0,set:function(n){this.value=n},get:function(){return this.value}},redirectUri:function(){return f},setRedirectUri:function(n){f=n},sendRequest:function(n,i){var c=r.defer(),o=!1,s=!1,h="",l=!1,e=null;return r.all(i).then(function(i){var v=u.allValid(i),r,a;v?(o=!0,n.redirectUri=f,n.paymentType==="CC"?(r=t.post("/api/payment/do-card-payment",n).success(function(n){s=n.success;l=n.authorise;n.success===!0&&(h=n.targetUri);e=n.errorMessages}).error(function(n){e=n.errorMessages;console.error(n)}),r.then(function(){var n={isValid:o,isSuccessful:s,validationResults:[],authorise:l,returnUri:h,errorMessages:e};c.resolve(n)})):(o=!0,r=t.post("/api/payment/create-paypal-payment",n).success(function(n){s=n.success;n.success&&(h="/payment/paypal/do-payment");e=n.errorMessages}).error(function(n){alert("An error occurred on the server while processing your payment. Please contact support.");e=n.errorMessages;console.error(n)}),r.then(function(){var n={isValid:o,isSuccessful:s,validationResults:[],authorise:l,returnUri:h,errorMessages:e};c.resolve(n)}))):(a={isValid:o,isSuccessful:s,validationResults:i,authorise:l,returnUri:h,errorMessages:e},c.resolve(a))}),c.promise},showGateway:function(n,t,i,r,u){var f="/payment/gatewayframe?productType="+n+"&quantity="+t+"&price="+i+"&recordId="+r+"&addressId="+u;$("#delivery-address-box").hide();$("#gateway-container").show();$("#gateway-container").load(f)}}}])}(),function(){"use strict";angular.module("appMain").filter("fileExtension",function(){return function(n){return n=n===undefined||n===null?"":n,n.split(".").pop()}})}(),function(){"use strict";angular.module("appMain").filter("fileName",function(){return function(n){return n=n===undefined||n===null?"":n,n.split("/").pop()}})}(),function(){"use strict";angular.module("appMain").filter("htmlToPlainText",function(){return function(n){return String(n).replace(/<[^>]+>/gm,"")}})}(),function(){"use strict";angular.module("appMain").filter("lowerCase",function(){return function(n){return n=n===undefined||n===null?"":n,n.toString().toLowerCase()}})}(),function(){"use strict";angular.module("appMain").filter("postFormatter",function(){return function(n){return n!==null?String(n).replace(/<[br />]+>/gm,"\n"):""}})}(),function(){"use strict";angular.module("appMain").filter("serviceFromId",function(){return function(n){var r=globalJs.appOptions.servicesOptions,t=null,i;if(n){for(i=0;i<r.length;i++)if(r[i].id===n){t=r[i].name;break}t==null&&(t="Unknown Service")}else t="No service specified";return t}})}(),function(){"use strict";angular.module("appMain").filter("timeAgo",function(){return function(n){var i,o,s,h;typeof n!="undefined"&&n&&(globalJs.fn.string.endsWith(n,"z")||globalJs.fn.string.endsWith(n,"Z")||(n+="Z"));i=new Date(n);i=globalJs.fn.system.applyTimeZoneOffsetForReceive(i);var c=new Date,l=i-c<0,r=l?"ago":"from now",a=Math.abs(c-i),v=Math.floor(a/1e3),u=Math.floor(v/60),f=Math.floor(u/60),e=Math.floor(f/24),t;return e!==0?e<31?(o="day",e>1&&(o+="s"),t=e+" "+o+" "+r):t="Over a month "+r:f!==0?(s="hour",f>1&&(s+="s"),t=f+" "+s+" "+r):u!==0?(h="minute",u>1&&(h+="s"),t=u+" "+h+" "+r):t="Just now",t}})}(),function(){"use strict";angular.module("appMain").filter("titleCase",function(){return function(n){return n=n===undefined||n===null?"":n,n.toString().toLowerCase().replace(/\b([a-z])/g,function(n){return n.toUpperCase()})}})}(),function(){"use strict";angular.module("appMain").filter("unitTermFromServiceId",function(){return function(n){return n===1?"Regiments":n===2?"RAF Base / Squadron":n===3?"Ship / Establishment":n===4?"Base / Establishment":n===5?"Regiments":n===6?"Affiliation":n===7?"Ship / Establishment":n===8?"Department":n===9?"Affiliation":"Unit"}})}(),function(){"use strict";angular.module("appMain").filter("upperCase",function(){return function(n){return n=n===undefined||n===null?"":n,n.toString().toUpperCase()}})}(),function(){"use strict";angular.module("appMain").directive("bindInternal",[function(){return function(n,t,i){var r=i.bindInternalTo,u=i.bindInternalFromExpression,f=t.find(i.bindInternalScopeElementFindExpression),e=t.find(f).scope();e.$watch(u,function(t){n[r]=t})}}])}(),function(){"use strict";angular.module("appMain").directive("bindHtmlCompile",["$compile",function(n){return{restrict:"A",link:function(t,i,r){t.$watch(function(){return t.$eval(r.bindHtmlCompile)},function(r){i.html(r);n(i.contents())(t)})}}}])}(),function(){"use strict";angular.module("appMain").directive("cdnImage",["$compile","pageService",function(n,t){return{restrict:"A",template:'<img ng-class="{\'cursor-pointer\': (showLightBoxOnClick && !invalidImage === true) }" ng-src="{{imageUrl}}" ng-show="!invalidImage || showPlaceHolderOnInvalid == true" ng-click="handleCdnImgClick(null, null)" alt="" />',replace:!0,scope:{ngModel:"=",rootUrl:"@rootUrl",relSrc:"@relSrc",relLightboxSrc:"@relLightboxSrc",relSrcFilesList:"=relSrcFilesList",alt:"@alt",attemptResize:"@attemptResize",maxWidth:"@maxWidth",maxHeight:"@maxHeight",widthToHeightRatio:"@widthToHeightRatio",quality:"@quality",cacheMaxAgeSeconds:"@cacheMaxAgeSeconds",useColourVersion:"=",showThumbnail:"@showThumbnail",lightBoxMaxWidth:"@lightBoxMaxWidth",lightBoxMaxHeight:"@lightBoxMaxHeight",lightBoxWidthToHeightRatio:"@lightBoxWidthToHeightRatio",lightBoxQuality:"@lightBoxQuality",lightboxCacheMaxAgeSeconds:"@lightboxCacheMaxAgeSeconds"},link:function(i,r,u){var f,e,o;i.showLightBoxOnClick=u.showLightBoxOnClick==="true";i.showPlaceHolderOnInvalid=u.showPlaceHolderOnInvalid==="true";i.imageLoaded=!1;i.showFrImage=!1;i.invalidImage=!1;i.currentModalRelSrc=null;i.currentModalAltText=null;f=function(n,t,r,u,f,e,o){var h=null,s;return n!=null&&globalJs.fn.string.contains(n,".")&&(h=n.split(".").pop(),h=h!=null?h.toLowerCase():null),!globalJs.fn.string.isUndefinedNullOrWhiteSpace(h)&&(h==="jpg"||h==="jpeg"||h==="png"||h==="gif")||(n=i.useColourVersion!=null&&i.useColourVersion==!0?"/fr-website-assets/images/placeholders/icon-359-x-601.jpg":"/fr-website-assets/images/placeholders/gray-scale-icon-359-x-601.jpg",i.invalidImage=!0),s=i.rootUrl+n,o&&(t!=null||r!=null||u!=null)&&(t!=null&&(s+=s.indexOf("?")>-1?"&":"?",s+="max-width="+t),r!=null&&(s+=s.indexOf("?")>-1?"&":"?",s+="max-height="+r),u!=null&&(s+=s.indexOf("?")>-1?"&":"?",s+="width-to-height-ratio="+u),f!=null&&(s+=s.indexOf("?")>-1?"&":"?",s+="quality="+f),e!=null&&(s+=s.indexOf("?")>-1?"&":"?",s+="cache-max-age-seconds="+e)),s};i.handleCdnImgPrevious=function(){var n,t,r,u;if(i.lightBox.remove(),i.relSrcFilesList){for(n=-1,t=0;t<i.relSrcFilesList.length;t++)if(i.currentModalRelSrc===i.relSrcFilesList[t].filePath){n=t;break}n>0&&(r=i.relSrcFilesList[n-1].filePath,u=i.relSrcFilesList[n-1].description,i.handleCdnImgClick(r,u))}};i.showThumbnail=function(){return!1};i.handleCdnImgNext=function(){var n,t,r,u;if(i.lightBox.remove(),i.relSrcFilesList){for(n=-1,t=0;t<i.relSrcFilesList.length;t++)if(i.currentModalRelSrc===i.relSrcFilesList[t].filePath){n=t;break}n<i.relSrcFilesList.length-1&&(r=i.relSrcFilesList[n+1].filePath,u=i.relSrcFilesList[n+1].description,i.handleCdnImgClick(r,u))}};i.cdnImgHasPrevious=function(){var r=!1,t,n;if(i.relSrcFilesList){for(t=-1,n=0;n<i.relSrcFilesList.length;n++)if(i.currentModalRelSrc===i.relSrcFilesList[n].filePath){t=n;break}t>0&&(r=!0)}return r};i.cdnImgHasNext=function(){var r=!1,t,n;if(i.relSrcFilesList){for(t=-1,n=0;n<i.relSrcFilesList.length;n++)if(i.currentModalRelSrc===i.relSrcFilesList[n].filePath){t=n;break}t<i.relSrcFilesList.length-1&&(r=!0)}return r};i.handleCdnImgClick=function(u,e){if(!i.invalidImage&&(u?i.relLightboxSrc=u:u=i.relSrc,e||(e=i.alt),i.showLightBoxOnClick)){i.imageLoaded=!1;(!i.relLightboxSrc||globalJs.fn.string.endsWith(i.relLightboxSrc,"/"))&&(i.relLightboxSrc=u);var o=i.lightBoxMaxWidth==null?t.page().pageSize.small?400:900:i.lightBoxMaxWidth,s=i.lightBoxMaxHeight==null?t.page().pageSize.small?500:700:i.lightBoxMaxHeight,h=i.lightBoxQuality==null?90:i.lightBoxQuality;i.modalImageUrl=f(i.relLightboxSrc,o,s,i.lightBoxWidthToHeightRatio,h,i.lightboxCacheMaxAgeSeconds,i.attemptResize!="false");i.currentModalRelSrc=u;i.currentModalAltText=e;i.lightBox=angular.element('<div class="light-box light-box-on" ng-click="closeModal()"><span class="light-box-close">Close <i class="fi-x"><\/i><\/span><\/div>');i.lightBoxImage=angular.element('<img class="light-box-image" ng-show="imageLoaded" ng-src="{{modalImageUrl}}" />');i.lightBoxPreviousControl=angular.element('<div ng-show="cdnImgHasPrevious()" class="light-box-previous" ng-click="handleCdnImgPrevious()"><i class="fi-arrow-left"><\/i><\/div>');i.lightBoxNextControl=angular.element('<div ng-show="cdnImgHasNext()" class="light-box-next" ng-click="handleCdnImgNext()"><i class="fi-arrow-right"><\/i><\/div>');i.lightBoxImage.bind("load",function(){i.imageLoaded=!0;i.$apply()});i.lightBoxLoaderCaption=angular.element('<img id="image-loader" ng-show="!imageLoaded" src="https://dmffixln4zsgf.cloudfront.net/fr/s3/public-forcesreunited/fr-website-assets/images/ajax-loaders/ajax-loader.gif" alt="loading..." /><\/div><div class="light-box-caption" ng-show="currentModalAltText.length > 0">{{currentModalAltText}}<\/div>');i.lightBox.append(i.lightBoxImage);i.lightBox.append(i.lightBoxLoaderCaption);i.lightBox.append(i.lightBoxPreviousControl);i.lightBox.append(i.lightBoxNextControl);i.lightBox.insertAfter(r);n(i.lightBox)(i)}};i.closeModal=function(){i.lightBox.remove()};e=0;o=function(){e++;i.imageUrl=f(i.relSrc,i.maxWidth,i.maxHeight,i.widthToHeightRatio,i.quality,i.cacheMaxAgeSeconds,i.attemptResize!=="false")};i.$watch("relSrc + alt + maxWidth + maxHeight + widthToHeightRatio + cacheMaxAgeSeconds",function(){i.currentModalRelSrc=i.relSrc;i.currentModalAltText=i.alt;o()})}}}])}(),function(){"use strict";angular.module("appMain").directive("dateTimeSelector",[function(){return{restrict:"EA",template:'<div class="date-time-selector" ng-cloak>\t<div>\t\t<select ng-model="dateTimeParts.date" ng-options="date for date in dateTimeOptions.dateOptions">\t\t\t<option value="">DD<\/option>\t\t<\/select>\t\t<select ng-model="dateTimeParts.month" ng-options="month for month in dateTimeOptions.monthOptions">\t\t\t<option value="">MM<\/option>\t\t<\/select>\t\t<select ng-model="dateTimeParts.year" ng-options="year for year in dateTimeOptions.yearOptions" class="four-digit">\t\t\t<option value="">YYYY<\/option>\t\t<\/select>\t\t\t<\/div>\t<div ng-show="!(hideTimeSelector === \'true\')">\t\t<select ng-model="dateTimeParts.hour" ng-init="dateTimeParts.hour = dateTimeOptions.hourOptions[0]" ng-options="hour for hour in dateTimeOptions.hourOptions">\t\t<\/select>\t\t<select ng-model="dateTimeParts.minute"  ng-init="dateTimeParts.minute = dateTimeOptions.minuteOptions[0]" ng-options="minute for minute in dateTimeOptions.minuteOptions">\t\t<\/select>\t\t<span>&nbsp;hours GMT<\/span>\t<\/div>\t<span class="date-time-selector-text-display" ng-show="!(hideDateTextDisplay === \'true\') && (selectedDateTime != null)">{{selectedDateTime | date:\'fullDate\'}}<\/span>\t<span class="date-time-selector-text-display" ng-show="!(hideTimeSelector === \'true\') && (selectedDateTime != null)"> {{selectedDateTime | date:\'shortTime\'}}<\/span>\t<span class="date-time-selector-text-display" ng-show="!(hideDateTextDisplay === \'true\') && (selectedDateTime != null)"> | <\/span><\/span><span><a ng-click="reset()" ng-show="selectedDateTime != null">Reset<\/a><\/span>\t<span class="date-time-selector-text-display" ng-show="!(hideDateTextDisplay === \'true\') && (selectedDateTime == null)">Select a date<\/span><\/div>',replace:!0,scope:{selectedDateTime:"=selectedDateTime",hideTimeSelector:"@hideTimeSelector",hideDateTextDisplay:"@hideDateTextDisplay"},controller:["$scope",function(n){var u=new Date,r=u.getFullYear(),i,t;for(n.dateTimeParts={},n.hideTimeSelector==="true"&&(n.dateTimeParts.hour="00",n.dateTimeParts.minute="00"),i={yearOptions:[],monthOptions:[],dateOptions:[],hourOptions:[],minuteOptions:[]},t=r;t<r+3;t++)i.yearOptions.push(t.toString());for(t=0;t<12;t++)i.monthOptions.push(globalJs.fn.string.pad((t+1).toString(),2,"0"));for(t=0;t<31;t++)i.dateOptions.push(globalJs.fn.string.pad((t+1).toString(),2,"0"));for(t=0;t<24;t++)i.hourOptions.push(globalJs.fn.string.pad(t.toString(),2,"0"));for(t=0;t<60;t++)t%5==0&&i.minuteOptions.push(globalJs.fn.string.pad(t.toString(),2,"0"));n.dateTimeOptions=i;n.updateDateTimeParts=function(t){var i=t.getFullYear(),r=t.getMonth()+1,u=t.getDate(),f=t.getHours(),e=t.getMinutes();n.dateTimeParts.year=i.toString();n.dateTimeParts.month=globalJs.fn.string.pad(r.toString(),2,"0");n.dateTimeParts.date=globalJs.fn.string.pad(u.toString(),2,"0");n.hideTimeSelector==="true"?(n.dateTimeParts.hour="00",n.dateTimeParts.minute="00"):(n.dateTimeParts.hour=globalJs.fn.string.pad(f,2,"0"),n.dateTimeParts.minute=globalJs.fn.string.pad(e,2,"0"))};n.reset=function(){n.selectedDateTime=null;n.dateTimeParts.year=null;n.dateTimeParts.month=null;n.dateTimeParts.date=null;n.dateTimeParts.hour=null;n.dateTimeParts.minute=null};n.$watch("selectedDateTime",function(t,i){if(t&&t!==i)if(t instanceof Date)n.updateDateTimeParts(t);else{var r=globalJs.fn.string.toDateFromOrdinalFormatedString(t);n.updateDateTimeParts(r)}});n.$watch(function(){var t=null,i=isNaN(n.dateTimeParts.year)||n.dateTimeParts.year==null||isNaN(n.dateTimeParts.month)||n.dateTimeParts.month==null||isNaN(n.dateTimeParts.date)||n.dateTimeParts.date==null||isNaN(n.dateTimeParts.hour)||n.dateTimeParts.hour==null||isNaN(n.dateTimeParts.minute)||n.dateTimeParts.minute==null;return i||(t=n.dateTimeParts.year+"-"+globalJs.fn.string.pad(n.dateTimeParts.month,2,"0")+"-"+globalJs.fn.string.pad(n.dateTimeParts.date,2,"0")+" "+globalJs.fn.string.pad(n.dateTimeParts.hour,2,"0")+":"+globalJs.fn.string.pad(n.dateTimeParts.minute,2,"0")+":00"),t},function(t){var i,r;t?(i=globalJs.fn.string.toDateFromOrdinalFormatedString(t),i instanceof Date&&(r=i.getFullYear().toString(),isNaN(r)||(globalJs.fn.system.arrayContains(n.dateTimeOptions.yearOptions,r)||n.dateTimeOptions.yearOptions.unshift(r),n.selectedDateTime=i))):(n.selectedDateTime=null,n.hideTimeSelector==="true"&&(n.dateTimeParts.hour="00",n.dateTimeParts.minute="00"))})}],link:function(){}}}])}(),function(){"use strict";angular.module("appMain").directive("fineUploadS3",[function(){return{restrict:"A",replace:!1,scope:{ngModel:"=",id:"@id",templateId:"@templateId"},link:function(n,t,i){var o=i.endpoint,s=i.accessKey,h=i.acl,c=i.templateId,l=i.itemLimit,a=i.sizeLimit,v=angular.fromJson(i.additionalSizes),r=i.keyPrefix,y=i.enableDelete,p=i.enableView,w=i.autoUpload,u=i.onCompleteCallback,f=i.onAllCompleteCallback,e=i.onDeleteCallback,b=i.allowedExtensions.split(",");$(t).fineUploaderS3({request:{endpoint:o,accessKey:s},objectProperties:{acl:h,key:function(n){var i=$(t).fineUploader("getName",n);return i=i.replace(/[ _|\<\>\"\?\\/\[\]\%':]+/g,"-").toLowerCase(),r=typeof r=="undefined"?"":r,globalJs.fn.string.endsWith(r,"/")||(r+="/"),globalJs.fn.string.startsWith(r,"/")&&(r=r.substring(1)),r+globalJs.fn.system.guid()+"_"+i}},autoUpload:w==="true",template:c,signature:{endpoint:"/file-upload/s3/signature"},uploadSuccess:{endpoint:"/file-upload/s3/success"},iframeSupport:{localBlankPagePath:"/file-upload/s3/blank-page"},chunking:{enabled:!0},scaling:{sizes:v,hideScaled:!0},resume:{enabled:!0},deleteFile:{enabled:y==="true",method:"POST",endpoint:"/file-upload/s3/delete"},validation:{itemLimit:l,sizeLimit:a,allowedExtensions:b}}).on("progress",function(){}).on("complete",function(n,t,i,r){if(p==="true"){var e=$(this).fineUploaderS3("getItemByFileId",t),f=e.find(".view-btn");r.success&&(f.show(),f.attr("href",r.tempLink),f.removeClass("hide"))}typeof u!="undefined"&&u!=null&&window[u](n,t,i,r)}).on("allComplete",function(n,t,i,r){typeof f!="undefined"&&f!=null&&window[f](n,t,i,r)}).on("delete",function(n,t){typeof e!="undefined"&&e!=null&&window[e](n,t)})}}}])}(),function(){"use strict";angular.module("appMain").directive("focusElement",["$timeout","$parse",function(n,t){return{link:function(i,r,u){var f=t(u.focusElement);i.$watch(f,function(t){t===!0&&n(function(){var t=0,n=r[0],i;n!=null&&(n.focus(),n.createTextRange?(i=n.createTextRange(),i.move("character",t),i.select()):n.selectionStart?(n.focus(),n.setSelectionRange(t,t)):n.focus(),n.scrollTop=0)})});r.bind("blur",function(){i.$apply(f.assign(i,!1))})}}}])}(),function(){"use strict";angular.module("appMain").directive("forumPostEditorLoader",["$compile",function(n){var t='<img src="https://dmffixln4zsgf.cloudfront.net/fr/s3/public-forcesreunited/fr-website-assets/images/ajax-loaders/ajax-loader.gif" alt="loading..." />',i='<div class="forum-post-editor" ng-controller="forumPostEditorController" id="forumPostEditorController{{replyEditForumPostId}}" ng-init="forumPostEditor.init(replyEditForumPostId, isNewForumThread, recentCommentsContext, forumPostEditorMode, redirectToNewPost, hasAncestors, forumThreadId)">\t<div ng-show="isNewForumThread === \'true\'">\t\t<h1>Start a new forum thread<\/h1>\t\t<p class="info-box">Tip: Attach an image to make your post stand out<\/p>\t<\/div>\t<div class="reply-container">\t\t<div class="profile-picture">\t\t\t<img cdn-image\t\t\t\troot-url="{{cdnRootUrl}}"\t\t\t\trel-src="{{membersPhotoDirectory}}{{replyMemberId}}/{{replyMemberProfilePhoto}}"\t\t\t\tshow-light-box-on-click="false"\t\t\t\tshow-place-holder-on-invalid="true"\t\t\t\talt="{{memberForumName}}"\t\t\t\tmax-width="34"\t\t\t\twidth-to-height-ratio="1"\t\t\t\tquality="90" />\t\t<\/div>\t\t<div class="data"> \t       <div class="forum-post-member-action-required" ng-show="!memberAuthenticated()">\t\t\t\t<span>Please <a onclick="layoutJS.showLogInRegistrationContainer()">log in or create an account<\/a> to reply.<\/span>\t       <\/div>\t       <div class="forum-post-member-action-required" ng-show="memberAuthenticated() && !memberIsSubscribed() && !memberIsForumBanned()">\t\t\t\t<span>A subscription is required to post in the forum. Please <a onclick="layoutJS.showSubscriptionContainer(\'forum\')">upgrade<\/a> to continue.<\/span>\t       <\/div>\t       <div class="forum-post-forum-ban" ng-show="memberIsForumBanned()">\t\t\t\t<span>Sorry, you have been blocked from posting to the forum<\/span>\t       <\/div>\t       <div class="forum-post-editor-inputs" ng-show="!memberIsForumBanned()">\t\t\t\t<div class="forum-post-editor-text">\t\t\t\t\t<div ng-show="isReply()" class="info-box reply-box">\t\t\t\t\t\t<div>{{replyQuotePreview}}<\/div>\t\t\t\t\t<\/div>\t\t\t\t\t<input ng-show="isNewForumThread === \'true\'" type="text" ng-model="forumPostEditor.forumThreadTitle" placeholder="Thread title" ng-disabled="!memberIsSubscribed()" />\t\t\t\t\t<textarea ng-model="forumPostEditor.forumPostText" placeholder="Say something..." ng-disabled="!memberIsSubscribed()"><\/textarea>\t\t\t\t<\/div>\t\t\t\t<div class="validation-status-error" ng-class="{ \'display-block\': forumPostEditor.validationInfo.forumThreadTitle.invalid && forumPostEditor.postAttempted }">\t\t\t\t\t<span>{{forumPostEditor.validationInfo.forumThreadTitle.validationMessage}}<\/span>\t\t\t\t<\/div>\t\t\t\t<div class="validation-status-error" ng-class="{ \'display-block\': forumPostEditor.validationInfo.forumPost.invalid && forumPostEditor.postAttempted }">\t\t\t\t\t<span>{{forumPostEditor.validationInfo.forumPost.validationMessage}}<\/span>\t\t\t\t<\/div>\t       <\/div>\t\t   <div class="forum-post-editor-controls-container" ng-show="!memberIsForumBanned()">\t\t\t\t<div class="forum-post-editor-controls">\t\t\t\t\t<div class="image-attachment">\t\t\t\t\t<\/div>\t\t\t\t\t<div class="submit">\t\t\t\t\t\t<button type="button" ng-click="forumPostEditor.saveForumPost({{recentCommentsContext}});" ng-show="memberAuthenticated()" ng-disabled="!memberIsSubscribed() || forumPostEditor.postInProcess">{{buttonText()}}<\/button>\t\t\t\t\t\t<button type="button" class="standard-margin-right" ng-click="cancelEdit()" ng-show="memberAuthenticated() && isEditMode()" ng-disabled="!memberIsSubscribed() || forumPostEditor.postInProcess">Cancel<\/button>\t\t\t\t\t\t<button type="button" ng-show="!memberAuthenticated()" ng-disabled="true">Please log in to reply<\/button>\t\t\t\t\t<\/div>\t\t\t\t<\/div>\t\t\t\t\t<ul class="qq-upload-list-selector qq-upload-list">\t\t\t\t\t\t<li ng-repeat="image in forumPostEditor.existingAttachments">\t\t\t\t\t\t\t<img cdn-image\t\t\t\t\t\t\t\troot-url="{{forumCdnRootUrl}}"\t\t\t\t\t\t\t\trel-src="{{forumCdnDirectory}}{{image.split(\',\')[0] }}"\t\t\t\t\t\t\t\tshow-light-box-on-click="false"\t\t\t\t\t\t\t\tshow-place-holder-on-invalid="true"\t\t\t\t\t\t\t\talt=""\t\t\t\t\t\t\t\tmax-width="60" width-to-height-ratio="1" quality="90" />\t\t\t\t\t\t\t{{image.split(\',\')[0]}}\t\t\t\t\t\t\t<a class="cancel-btn qq-upload-cancel-selector" ng-click="forumPostEditor.RemoveImageFromPost(image)">Cancel<\/a>\t\t\t\t\t\t<\/li>\t\t\t\t\t<\/ul>\t\t\t\t<div\tfine-upload-s3                       ng-show="memberIsSubscribed()"\t\t\t\t\t\tid="forum-fine-uploader-{{replyEditForumPostId}}"\t\t\t\t\t\ttemplate-id="fine-uploader-template"\t\t\t\t\t\tendpoint="https://{{s3FrWebContentBucketName}}.s3.amazonaws.com"\t\t\t\t\t\taccess-key="{{s3FrWebContentAwsAccessId}}"\t\t\t\t\t\tacl="public-read"\t\t\t\t\t\tkey-prefix="{{forumAttachmentsDirectory}}"\t\t\t\t\t\titem-limit="50"\t\t\t\t\t\tsize-limit="10000000"\t\t\t\t\t\tadditional-sizes="{{forumAdditionalSizes}}"\t\t\t\t\t\tenable-delete="false"\t\t\t\t\t\tenable-view="false"\t\t\t\t\t\tauto-upload="false"\t\t\t\t\t\tallowed-extensions="jpeg,jpg,png,txt"\t\t\t\t\t\ton-all-complete-callback="uploadForumAttachmentsAllCompleteCallback"\t\t\t\t\t\ton-delete-callback="">\t\t\t\t<\/div>\t\t\t<\/div>\t\t<\/div> \t <\/div><\/div>';return{restrict:"EA",replace:!1,scope:{forumCdnRootUrl:"@forumCdnRootUrl",forumCdnDirectory:"@forumCdnDirectory",forumPostEditorContainer:"@forumPostEditorContainer",replyMemberId:"@replyMemberId",replyMemberIsFullMember:"@replyMemberIsFullMember",replyMemberForumBan:"@replyMemberForumBan",replyEditForumPostId:"@replyEditForumPostId",replyQuotePreview:"@replyQuotePreview",isNewForumThread:"@isNewForumThread",hasAncestors:"@hasAncestors",redirectToNewPost:"@redirectToNewPost",recentCommentsContext:"@recentCommentsContext",cdnRootUrl:"@cdnRootUrl",membersPhotoDirectory:"@membersPhotoDirectory",memberForumName:"@memberForumName",replyMemberProfilePhoto:"@replyMemberProfilePhoto",logInUrl:"@logInUrl",s3FrWebContentBucketName:"@s3FrWebContentBucketName",s3FrWebContentAwsAccessId:"@s3FrWebContentAwsAccessId",forumAttachmentsDirectory:"@forumAttachmentsDirectory",loadImmediately:"@loadImmediately",hideTriggerElement:"@hideTriggerElement",forumPostEditorMode:"@forumPostEditorMode",forumThreadId:"@forumThreadId"},link:function(r,u,f){var e=function(){var f,e;r.forumPostEditorMode==="edit"&&(f=r.forumPostEditorContainer.slice(17),$("#fpContainer"+f).hide());r.forumPostEditorContainerElement=angular.element("#"+r.forumPostEditorContainer);r.forumPostEditorContainerElement.html(t);r.memberAuthenticated=function(){return r.replyMemberId!=null&&r.replyMemberId>0};r.memberIsSubscribed=function(){return r.replyMemberIsFullMember==="true"};r.forumAdditionalSizes=[{name:"medium",maxSize:200},{name:"large",maxSize:700}];r.isReply=function(){return r.isNewForumThread!=="true"&&r.forumPostEditorMode!=="edit"&&r.replyEditForumPostId!=="null"&&typeof r.replyEditForumPostId!="undefined"&&r.hasAncestors==="true"&&r.replyQuotePreview.length>0};r.isEditMode=function(){return r.forumPostEditorMode==="edit"};r.cancelEdit=function(){var n=r.forumPostEditorContainer.slice(17);$("#fpContainer"+n).show();r.forumPostEditorContainerElement.html("")};r.buttonText=function(){if(r.forumPostEditorMode==="edit")return"Save";var n="Reply To Thread";return r.isNewForumThread==="true"?n="Post as "+r.memberForumName:r.replyEditForumPostId!=="null"&&typeof r.replyEditForumPostId!="undefined"&&(n="Reply"),n};r.memberIsForumBanned=function(){return r.replyMemberForumBan==="true"};e=0;setTimeout(function(){r.forumPostEditorContainerElement.html(i);n(r.forumPostEditorContainerElement)(r);r.$apply()},e);r.hideTriggerElement==="true"&&u.css("display","none")},o=globalJs.fn.routing.getQsParameterByName("replyId");r.forumPostEditorMode!=="edit"&&(globalJs.fn.string.isUndefinedNullOrWhiteSpace(o)||o===r.replyEditForumPostId&&e());u.click(function(){e()});f.$observe("loadImmediately",function(){r.loadImmediately==="true"&&e()})}}}])}(),function(){"use strict";angular.module("appMain").directive("fwrNameSearch",[function(){return{restrict:"E",replace:!0,template:'<iframe style="margin: 0; padding: 0;" width="728" height="90" src="https://www.forces-war-records.co.uk/adscript/namesearchform728x90/?av=forcesreunited" scrolling="no" frameborder="0"><\/iframe>'}}])}(),function(){"use strict";angular.module("appMain").directive("mailboxCount",[function(){return{restrict:"A",template:'<span ng-show="unreadMailCount"><span ng-show="showLeadingSpace === \'true\'">&nbsp;&nbsp;<\/span><span ng-show="showBrackets === \'true\'">(<\/span><span ng-show="showIcon === \'true\'"><i class="fi-comment"><\/i>&nbsp;<\/span><span>{{unreadMailCount}}<\/span><span ng-show="showBrackets === \'true\'">)<\/span><span ng-show="showTrailingSpace === \'true\'">&nbsp;<\/span><\/span>',replace:!0,scope:{showIcon:"@showIcon",showBrackets:"@showBrackets",showLeadingSpace:"@showLeadingSpace",showTrailingSpace:"@showTrailingSpace"},controller:["$scope","mailCheckService",function(n,t){n.unreadMailCount=null;t.checkMailCount(!1);n.$watch(function(){return t.unreadMailCount},function(t){n.unreadMailCount=t})}]}}])}(),function(){"use strict";angular.module("appMain").directive("memberLink",[function(){return{restrict:"A",template:'<a ng-href="/m/{{username}}">{{firstName | titleCase}} {{surname | titleCase}}<\/a>',replace:!0,scope:{ngModel:"=",username:"@username",firstName:"@firstName",surname:"@surname"}}}])}(),function(){"use strict";angular.module("appMain").directive("memberUnitSelector",["$http","$timeout",function(n,t){return{restrict:"EA",template:'<div class="item-selector position-relative">\t<div ng-show="!memberUnitSelection.control.showUnitFilterInput">\t\t<img ng-show="memberUnitSelection.control.memberUnitsLoading" src="https://dmffixln4zsgf.cloudfront.net/fr/s3/public-forcesreunited/fr-website-assets/images/ajax-loaders/ajax-loader.gif" alt="Please wait one moment" />\t\t<select id="reunion-unit"\t\t\t\tname="unit"\t\t\t\tng-model="selectedUnitId"\t\t\t\tng-options="unit.uid as unit.regiment for unit in memberUnitSelection.unitOptions"\t\t\t\tng-hide="memberUnitSelection.control.memberUnitsLoading">\t\t\t<option value="">None<\/option>\t\t<\/select>\t<\/div>\t<div ng-show="memberUnitSelection.control.showUnitFilterInput">\t\t<div class="select-filter-input select-item-filter-input" ng-click="memberUnitSelection.showUnitFilterSelectList()">\t\t\t<input id="{{id}}_filter_input" class="select-list-activator" type="text" placeholder="Filter units" ng-model="memberUnitSelection.control.unitFilter" ng-change="memberUnitSelection.showUnitFilterSelectList()" />\t\t\t<a class="item-selection-cancel" ng-click="memberUnitSelection.hideUnitFilterInput()">Cancel<\/a>\t\t<\/div>\t\t<ul class="select-filter-view select-view" ng-show="memberUnitSelection.control.showUnitFilterSelectList"\t    \tselect-list\t    \tselect-list-activator-class="select-list-activator"\t\t\tselect-list-options-array="memberUnitSelection.filteredUnits"\t    \tselect-list-selected-option="memberUnitSelection.selectedUnit"\t    \tselect-list-active="memberUnitSelection.control.showUnitFilterSelectList"\t    \tselect-list-item-action="memberUnitSelection.addUnitFromSelectList(memberUnitSelection.selectedUnit)">\t\t\t<li ng-repeat="filteredUnits in memberUnitSelection.filteredUnits"\t    \t\tng-class="{\'selected\': memberUnitSelection.selectedUnit === filteredUnits }"\t\t\t\tng-click="memberUnitSelection.addUnitFromSelectList(filteredUnits)">\t\t\t\t<span>{{ filteredUnits.regiment }}<\/span>\t\t\t<\/li>\t\t\t<li ng-show="memberUnitSelection.filteredUnits.length === 0 && memberUnitSelection.control.unitFilter === \'\'">\t\t\t\t<span>Start typing to see unit options.<\/span>\t\t\t<\/li>\t\t\t<li ng-show="memberUnitSelection.filteredUnits.length === 0 && memberUnitSelection.control.unitFilter !== \'\'">\t\t\t\t<span ng-show="!memberUnitSelection.control.filteredUnitsLoading">No units to display.<\/span>\t\t\t\t<span ng-show="memberUnitSelection.control.filteredUnitsLoading"><img src="https://dmffixln4zsgf.cloudfront.net/fr/s3/public-forcesreunited/fr-website-assets/images/ajax-loaders/ajax-loader.gif" alt="loading..." /><\/span>\t\t\t<\/li>\t\t<\/ul>\t<\/div><\/div>',replace:!0,scope:{id:"@id",selectedUnitServiceId:"=selectedUnitServiceId",selectedUnitId:"=selectedUnitId",selectedUnitName:"=selectedUnitName"},controller:["$scope",function(i){i.memberUnitSelection={unitOptions:[],filteredUnits:[],selectedUnit:null,internalSelectedUnitId:null,control:{memberUnitsLoading:!1,unitFilterTextTimeoutPromise:null,showSelectFromAllUnitsViewText:"Select a unit not listed in my profile",showUnitFilterInput:!1,showUnitFilterSelectList:!1,filteredUnitsLoading:!1},init:function(){var t=this;t.control.memberUnitsLoading=!0;n.get("/api/units/get-member-units",{params:{includeSecondaryMemberUnits:!0}}).success(function(n){for(var i=0;i<n.units.length;i++)t.unitOptions.unshift(n.units[i]);t.unitOptions.push({uid:-1,regiment:t.control.showSelectFromAllUnitsViewText});t.control.memberUnitsLoading=!1}).error(function(){t.unitOptions=[];t.unitOptions.push({uid:-1,regiment:t.control.showSelectFromAllUnitsViewText});t.control.memberUnitsLoading=!1})},addUnitFromSelectList:function(n){var t=this;n&&(t.control.unitFilter=n.regiment);t.hideUnitFilterSelectList();n&&(globalJs.fn.system.arrayContains(t.unitOptions,n)||t.unitOptions.unshift(n),t.hideUnitFilterInput(),t.internalSelectedUnitId=n.regiment,i.selectedUnitName=n.regiment,i.selectedUnitId=n.uid,i.selectedUnitServiceId=n.serviceId)},clearFilterOptions:function(){var n=this;n.filteredUnits=[]},showSelectFromAllUnitsView:function(){var r=this,n;r.control.showUnitFilterInput=!0;r.showUnitFilterSelectList();n=angular.element("#"+i.id+"_filter_input");t(function(){n&&n.focus()})},showUnitFilterSelectList:function(){this.control.showUnitFilterSelectList=!0},hideUnitFilterSelectList:function(){this.control.showUnitFilterSelectList=!1},hideUnitFilterInput:function(){var n=this;n.control.unitFilter="";n.control.showUnitFilterInput=!1;n.clearFilterOptions()}};i.memberUnitSelection.init()}],link:function(i){i.$watch("selectedUnitId",function(n){var r,u,t,f;if(n!=0)if(n==null)i.selectedUnitName=null,i.selectedUnitId=null,i.selectedUnitServiceId=null;else if(n===-1)i.selectedUnitName=null,i.selectedUnitId=null,i.selectedUnitServiceId=null,i.memberUnitSelection.showSelectFromAllUnitsView();else{for(r=i.memberUnitSelection.unitOptions,u=!1,t=0;t<r.length;t++)r[t].uid==n&&(i.selectedUnitName=r[t].regiment,i.selectedUnitId=r[t].uid,i.selectedUnitServiceId=r[t].serviceId,u=!0);u===!1&&i.selectedUnitName!==""&&i.selectedUnitName!==null&&(f={regiment:i.selectedUnitName,uid:i.selectedUnitId,serviceId:i.selectedUnitServiceId},i.memberUnitSelection.addUnitFromSelectList(f))}});i.$watch("memberUnitSelection.control.unitFilter",function(r){r!=null&&(i.memberUnitSelection.unitFilterTextTimeoutPromise!=null&&t.cancel(i.memberUnitSelection.unitFilterTextTimeoutPromise),i.memberUnitSelection.unitFilterTextTimeoutPromise=t(function(){globalJs.fn.string.isUndefinedNullOrWhiteSpace(r)?i.memberUnitSelection.filteredUnits=[]:(i.memberUnitSelection.control.filteredUnitsLoading=!0,n.get("/api/units/get-all-units-where-contains",{params:{containsStr:r,limit:10}}).success(function(n){i.memberUnitSelection.filteredUnits=n;i.memberUnitSelection.control.filteredUnitsLoading=!1}).error(function(n){i.memberUnitSelection.control.filteredUnitsLoading=!0;console.error("error",n)}))},500))})}}}])}(),function(){"use strict";angular.module("appMain").directive("memberUnitsEditor",["$http","pageService",function(n,t){return{restrict:"EA",templateUrl:"/Templates/AngularJs/memberUnitsEditor.html",replace:!0,scope:{id:"@id",memberId:"@memberId",memberServiceId:"@memberServiceId"},controller:["$scope",function(i){i.memberUnitsEditor={control:{showCreateEditMemberUnit:!1,upsertHeaderText:"Add a New Unit",upsertButtonText:"Add Unit"},memberId:0,memberMembersToUnits:[],rafSquadrons:[],serviceYearsOptions:globalJs.appOptions.getServiceYears(),serviceOptions:globalJs.appOptions.servicesOptions,editingMemberToUnitData:{membersToUnitsId:0,unitName:null,unitId:null,unitServiceId:null,serviceIdFilter:0,tradeName:null,tradeId:null,subUnit:null,startYear:null,endYear:null},validationInfo:{unitId:{invalid:!1,validationMessage:null},startYear:{invalid:!1,validationMessage:null},endYear:{invalid:!1,validationMessage:null}},init:function(n){var t=this;t.memberId=n;n>0&&(t.loadMemberMembersToUnits(n),t.loadRafSquadronOptions(n))},loadMemberMembersToUnits:function(t){var i=this;n.get("/api/members-to-units/get-member-members-to-units",{params:{memberId:t}}).success(function(n){i.memberMembersToUnits=n}).error(function(n){console.error("Error loading member member to units data",n)})},loadRafSquadronOptions:function(){var t=this;n.get("/api/members-to-units/get-raf-squadrons").success(function(n){t.rafSquadrons=n}).error(function(n){console.error("Error loading raf squadrons",n)})},createMemberUnit:function(){var n=i.memberUnitsEditor;n.resetEditingMemberUnitData();n.control.upsertHeaderText="Add a New Unit";n.control.upsertButtonText="Add Unit";n.control.showCreateEditMemberUnit=!0},editMemberUnit:function(n){var u=i.memberUnitsEditor,r,t;u.resetEditingMemberUnitData();u.control.upsertHeaderText="Update Unit";u.control.upsertButtonText="Update Unit";u.control.showCreateEditMemberUnit=!0;r=u.editingMemberToUnitData;t=u.memberMembersToUnits[n];r.membersToUnitsId=t.id;r.unitName=t.unitName;r.unitId=t.unitId;r.unitServiceId=t.serviceId;r.tradeId=t.tradeId;r.tradeName=t.tradeName;r.subUnit=t.subUnit;t.startYear&&(r.startYear=t.startYear.toString());t.endYear&&(r.endYear=t.endYear.toString())},upsertMemberUnit:function(){var r=i.memberUnitsEditor,u=i.memberUnitsEditor.editingMemberToUnitData,f={id:u.membersToUnitsId,unitId:u.unitId,serviceId:u.unitServiceId,unitOrder:0,startYear:u.startYear,endYear:u.endYear,subUnit:u.subUnit,tradeId:u.tradeId};r.validationInfo.unitId.invalid=!1;r.validationInfo.startYear.invalid=!1;r.validationInfo.endYear.invalid=!1;f.unitId&&f.startYear&&f.endYear?n.post("/api/members-to-units/upsert-member-member-to-unit",f).success(function(){t.page().displayNotificationBar("Unit saved to your units","success");r.loadMemberMembersToUnits(r.memberId);r.control.showCreateEditMemberUnit=!1;i.memberUnitsEditor.updateUnitHistory()}).error(function(n){console.error("Error upserting member unit data",n)}):(f.unitId||(r.validationInfo.unitId.invalid=!0),f.startYear||(r.validationInfo.startYear.invalid=!0),f.endYear||(r.validationInfo.endYear.invalid=!0))},updateUnitHistory:function(){var i=$("#divUnitHistory").data("url");n.get(i).success(function(n){$("#divUnitHistory").html(n)}).error(function(n){t.page().displayNotificationBar("There was a problem refreshing your unit history","error");memberProfileSettings.updating=!1;console.error("Error refreshing unit history",n)})},cancelCreateEditMemberUnit:function(){var n=i.memberUnitsEditor;n.resetEditingMemberUnitData();n.control.showCreateEditMemberUnit=!1},resetEditingMemberUnitData:function(){var n=i.memberUnitsEditor.editingMemberToUnitData;n.membersToUnitsId=0;n.unitName=null;n.unitId=null;n.unitServiceId=null;n.tradeId=null;n.tradeName=null;n.subUnit=null;n.startYear=null;n.endYear=null},deleteMemberUnit:function(r){var u=i.memberUnitsEditor,f=u.memberMembersToUnits[r],e;confirm("Are you sure you want to remove "+f.unitName+" from your units?")&&(e={membersToUnitsId:f.id},n.post("/api/members-to-units/delete-member-member-to-unit",e).success(function(){t.page().displayNotificationBar("Unit has been removed from your units","success");u.loadMemberMembersToUnits(u.memberId);i.memberUnitsEditor.updateUnitHistory()}).error(function(n){console.error("Error upserting member unit data",n)}))}};i.$watch("memberId",function(n){i.memberUnitsEditor.init(n)});i.$watch("memberServiceId",function(n){n&&(i.memberUnitsEditor.editingMemberToUnitData.serviceIdFilter=parseInt(n))})}],link:function(){}}}])}(),function(){"use strict";angular.module("appMain").directive("pager",[function(){return{restrict:"EA",template:'<ul ng-cloak ng-show="render" class="{{ulClass}}"><li ng-show="currentPage > 1"><a ng-click="loadPageN({page:previousPage});scrollWindowTop();"><i class="fi-arrow-left"><\/i> &nbsp; Back<\/a><\/li><li ng-show="currentPage > 1"><a ng-click="loadPageN({page:1});scrollWindowTop();">1<\/a><\/li><li ng-show="currentPage > 1"><span>...<\/span><\/li><li ng-repeat="page in pages" ng-class="{\'current-page\': page == currentPage}">\t<a ng-if="page != currentPage" ng-click="loadPageN({page:page});scrollWindowTop();">{{page}}<\/a>\t<span ng-if="page == currentPage">\t\t{{page}}\t<\/span><\/li><li ng-show="!isLastPage" class="medium-up-paging-link"><a ng-click="loadPageN({page:totalPages});scrollWindowTop();">End<\/a><\/li><li ng-show="!isLastPage"><a ng-click="loadPageN({page:nextPage});scrollWindowTop();">Next&nbsp;&nbsp;<i class="fi-arrow-right"><\/i><\/a><\/li><\/div><\/div>',replace:!0,scope:{ulClass:"@ulClass",loadPageN:"&",currentPage:"@currentPage",totalPages:"@totalPages",pageLinkCount:"@pageLinkCount"},link:function(n){var t=0;n.scrollWindowTop=function(){window.scrollTo(0,0)};n.$watch(function(){return parseInt(n.currentPage)+parseInt(n.totalPages)},function(){var i,r;for(t++,n.currentPage=parseInt(n.currentPage),n.totalPages=parseInt(n.totalPages),n.pageLinkCount=parseInt(n.pageLinkCount),n.isLastPage=n.currentPage==n.totalPages,n.previousPage=n.currentPage-1,n.nextPage=n.currentPage+1,n.render=!1,n.currentPage<1&&(n.currentPage=1),n.pages=[],i=n.currentPage-1;i<n.totalPages;i++)if(r=i+1,r>=n.currentPage&&r<n.currentPage+n.pageLinkCount&&n.pages.push(i+1),r>=n.currentPage+n.pageLinkCount)break;n.currentPage>0&&n.totalPages>0&&(n.render=!0)})}}}])}(),function(){"use strict";angular.module("appMain").directive("placeholder",["$timeout",function(n){return function(t,i){if($.support.placeholder=function(){var n=document.createElement("input");return"placeholder"in n}(),$.support.placeholder)return{};n(function(){var n=$(i),u=n.attr("placeholder"),r=n.attr("data-placeholder-polyfill-element"),t;typeof r!="undefined"&&r!==!1&&(t=$("#"+r),t.val(u),n.addClass("placeholder-polyfill-hide-input"),n.attr("autocomplete","off"),t.addClass("placeholder-polyfill-placeholder-active"),t.focus(function(){n.removeClass("placeholder-polyfill-hide-input");n.val("");n.focus();t.removeClass("placeholder-polyfill-placeholder-active");t.addClass("placeholder-polyfill-hide-input")}),n.blur(function(){$.trim(n.val()).length==0&&(t.addClass("placeholder-polyfill-placeholder-active"),t.removeClass("placeholder-polyfill-hide-input"),n.addClass("placeholder-polyfill-hide-input"))}))})}}])}(),function(){"use strict";angular.module("appMain").directive("redirectOnClick",["$window",function(n){return{restrict:"A",link:function(t,i,r){i.bind("click",function(){n.location.href=r.redirectOnClick})}}}])}(),function(){"use strict";angular.module("appMain").directive("scrollHook",[function(){return{restrict:"A",scope:{onScrollEnd:"&",scrollTopFlag:"=scrollTopFlag"},link:function(n,t){var i=t[0];i.onscroll=function(){n.onScrollEnd&&i.offsetHeight+i.scrollTop>=i.scrollHeight&&n.onScrollEnd&&n.onScrollEnd()};n.$watch("scrollTopFlag",function(n){n&&(t[0].scrollTop=0)})}}}])}(),function(){"use strict";angular.module("appMain").directive("selectList",["$document",function(n){return{restrict:"A",scope:{selectListActivatorClass:"@selectListActivatorClass",selectListOptionsArray:"=selectListOptionsArray",selectListSelectedOption:"=selectListSelectedOption",selectListActive:"=selectListActive",selectListItemAction:"&"},link:function(t,i){var r=-1;n.on("keydown keypress",function(n){var u,o,f,e;t.selectListActive===!0&&(u=i[0],o=u.children,n.which===37||n.which===38?(t.selectListOptionsArray!=null&&t.selectListOptionsArray.length>0&&(r==-1&&(r=1),r>0&&(r--,t.selectListSelectedOption=t.selectListOptionsArray[r],f=o[r],e=f.offsetTop,u.scrollTop=e,t.$apply())),n.preventDefault()):n.which===39||n.which===40?(t.selectListOptionsArray!=null&&t.selectListOptionsArray.length>0&&r<t.selectListOptionsArray.length-1&&(r++,t.selectListSelectedOption=t.selectListOptionsArray[r],f=o[r],e=f.offsetTop,u.scrollTop=e,t.$apply()),n.preventDefault()):n.which===9||n.which===13?(n.which===13&&(t.selectListActive=!1),t.selectListItemAction&&(t.selectListItemAction(),t.$apply(),n.preventDefault())):n.which===27&&(t.selectListActive=!1,t.$apply(),n.preventDefault()))});t.$watch("selectListActive",function(n){n&&i.parent().find(".select-filter-input > input")[0].focus()});n.on("click",function(n){if(t.selectListActive===!0){var r=n.target||n.srcElement,f=angular.element(i[0]).parent(),u=angular.element(r).attr("class");u&&(f[0].contains(r)||u.indexOf(t.selectListActivatorClass)!=-1)||(t.selectListActive=!1,t.$apply())}});t.$watch("selectListOptionsArray",function(){t.selectListSelectedOption=null;r=-1;i[0].scrollTop!=0&&(i[0].scrollTop=0)})}}}])}(),function(){"use strict";angular.module("appMain").directive("serviceYearsDisplay",[function(){return{restrict:"A",template:'<span class="service-years-display" ng-show="serviceYearsValid">{{serviceYearsDisplayText}}<\/span>',replace:!0,scope:{startYear:"@startYear",endYear:"@endYear",currentlyServing:"@currentlyServing",deceased:"@deceased"},link:function(n){n.serviceYearsDisplayText="";var r=n.currentlyServing==="true",u=n.deceased==="true",t=0,i=0;if(n.startYear)try{t=parseInt(n.startYear)}catch(f){}if(n.endYear)try{i=parseInt(n.endYear)}catch(f){}n.serviceYearsValid=!0;t&&i?(n.serviceYearsDisplayText=r&&!u?"Served from "+t+" - Present":"Served from "+t+" - "+i,i<t&&(n.serviceYearsValid=!1)):!t&&i?n.serviceYearsDisplayText=r?"Currently serving":"Served until "+i:t||i||(n.serviceYearsDisplayText="No service dates added");u&&(n.serviceYearsDisplayText&&(n.serviceYearsDisplayText+=" "),n.serviceYearsDisplayText+=" (Deceased)")}}}])}(),function(){"use strict";angular.module("appMain").directive("stopEventPropagation",[function(){return{restrict:"A",link:function(n,t){t.bind("click",function(n){n.stopPropagation()})}}}])}(),function(){"use strict";angular.module("appMain").directive("tagManager",[function(){return{restrict:"E",scope:{tags:"="},template:'<div class="tags"><a ng-repeat="(idx, tag) in tags" class="tag" ng-click="remove(idx)">{{tag}}<\/a><\/div><input type="text" placeholder="Add a tag..." ng-model="new_value"><\/input> <a class="btn" ng-click="add()">Add<\/a>',link:function(n,t){var i=angular.element(t.children()[1]);n.add=function(){n.tags.push(n.new_value);n.new_value=""};n.remove=function(t){n.tags.splice(t,1)};i.bind("keypress",function(t){t.keyCode==13&&n.$apply(n.add)})}}}])}(),function(){"use strict";angular.module("appMain").directive("tradeSelector",["$http","$timeout",function(n,t){return{restrict:"EA",template:'<div class="item-selector position-relative">\t<div class="selected-item-display-container" ng-show="!tradeSelector.control.showTradeFilterInput">\t\t<span>{{selectedTradeName}}<\/span><span><a ng-click="tradeSelector.showSelectFromAllTradesView()">Edit<\/a><\/span>\t<\/div>\t<div ng-show="tradeSelector.control.showTradeFilterInput">\t\t<div class="select-filter-input select-item-filter-input" ng-click="tradeSelector.showTradeFilterSelectList()">\t\t\t<input id="{{id}}_filter_input" class="select-list-activator" type="text" placeholder="Filter trades" ng-model="tradeSelector.control.tradeFilter" ng-change="tradeSelector.showTradeFilterSelectList()" />\t\t\t<a class="item-selection-cancel" ng-click="tradeSelector.hideTradeFilterInput()">Cancel<\/a>\t\t<\/div>\t\t<ul class="select-filter-view select-view" ng-show="tradeSelector.control.showTradeFilterSelectList"\t    \tselect-list\t    \tselect-list-activator-class="select-list-activator"\t\t\tselect-list-options-array="tradeSelector.filteredTrades"\t    \tselect-list-selected-option="tradeSelector.selectedTrade"\t    \tselect-list-active="tradeSelector.control.showTradeFilterSelectList"\t    \tselect-list-item-action="tradeSelector.addTradeFromSelectList(tradeSelector.selectedTrade)">\t\t\t<li ng-repeat="filteredTrades in tradeSelector.filteredTrades"\t    \t\tng-class="{\'selected\': tradeSelector.selectedTrade === filteredTrades }"\t\t\t\tng-click="tradeSelector.addTradeFromSelectList(filteredTrades)">\t\t\t\t<span>{{ filteredTrades.tradeName }}<\/span>\t\t\t<\/li>\t\t\t<li ng-show="tradeSelector.filteredTrades.length === 0 && !(tradeSelector.control.tradeFilter)">\t\t\t\t<span>Start typing to see trade options.<\/span>\t\t\t<\/li>\t\t\t<li ng-show="tradeSelector.filteredTrades.length === 0 && (tradeSelector.control.tradeFilter)">\t\t\t\t<span ng-show="!tradeSelector.control.filteredTradesLoading">No trades to display.<\/span>\t\t\t\t<span ng-show="tradeSelector.control.filteredTradesLoading"><img src="https://dmffixln4zsgf.cloudfront.net/fr/s3/public-forcesreunited/fr-website-assets/images/ajax-loaders/ajax-loader.gif" alt="loading..." /><\/span>\t\t\t<\/li>\t\t<\/ul>\t<\/div><\/div>',replace:!0,scope:{id:"@id",selectedTradeId:"=selectedTradeId",selectedTradeName:"=selectedTradeName"},controller:["$scope",function(n){n.tradeSelector={tradeOptions:[],filteredTrades:[],selectedTrade:null,internalSelectedTradeId:null,control:{tradeFilterTextTimeoutPromise:null,showSelectFromAllTradesViewText:"Select a trade not listed in my profile",showTradeFilterInput:!1,showTradeFilterSelectList:!1,filteredTradesLoading:!1},init:function(){},addTradeFromSelectList:function(t){var i=this;t&&(i.control.tradeFilter=t.tradeName);i.hideTradeFilterSelectList();t&&(globalJs.fn.system.arrayContains(i.tradeOptions,t)||i.tradeOptions.unshift(t),i.hideTradeFilterInput(),i.internalSelectedTradeId=t.tradeName,n.selectedTradeName=t.tradeName,n.selectedTradeId=t.id)},clearFilterOptions:function(){var n=this;n.filteredTrades=[]},showSelectFromAllTradesView:function(){var r=this,i;r.control.showTradeFilterInput=!0;r.showTradeFilterSelectList();i=angular.element("#"+n.id+"_filter_input");t(function(){i&&i.focus()})},showTradeFilterSelectList:function(){this.control.showTradeFilterSelectList=!0},hideTradeFilterSelectList:function(){this.control.showTradeFilterSelectList=!1},hideTradeFilterInput:function(){var n=this;n.control.tradeFilter="";n.control.showTradeFilterInput=!1;n.clearFilterOptions()}};n.tradeSelector.init();n.$watch("selectedTradeId",function(t){n.tradeSelector.control.showTradeFilterInput=!(t>0)})}],link:function(i){i.$watch("selectedTradeId",function(n){var r,t;if(n==null)i.selectedTradeName=null,i.selectedTradeId=null;else if(n===-1)i.selectedTradeName=null,i.selectedTradeId=null,i.tradeSelector.showSelectFromAllTradesView();else for(r=i.tradeSelector.tradeOptions,t=0;t<r.length;t++)r[t].id==n&&(i.selectedTradeName=r[t].tradeName,i.selectedTradeId=r[t].id)});i.$watch("tradeSelector.control.tradeFilter",function(r){r!=null&&(i.tradeSelector.tradeFilterTextTimeoutPromise!=null&&t.cancel(i.tradeSelector.tradeFilterTextTimeoutPromise),i.tradeSelector.tradeFilterTextTimeoutPromise=t(function(){globalJs.fn.string.isUndefinedNullOrWhiteSpace(r)?i.tradeSelector.filteredTrades=[]:(i.tradeSelector.control.filteredTradesLoading=!0,n.get("/api/members-to-units/get-all-trades-where-contains",{params:{containsStr:r,limit:10}}).success(function(n){i.tradeSelector.filteredTrades=n;i.tradeSelector.control.filteredTradesLoading=!1}).error(function(n){i.tradeSelector.control.filteredTradesLoading=!1;console.error("error",n)}))},500))})}}}])}(),function(){"use strict";angular.module("appMain").directive("unitSelector",["$http","$timeout",function(n,t){return{restrict:"EA",template:'<div class="item-selector position-relative">\t<div class="selected-item-display-container" ng-show="!unitSelector.control.showUnitFilterInput">\t\t<span>{{selectedUnitName}}<\/span><span><a ng-click="unitSelector.showSelectFromAllUnitsView()">Edit<\/a><\/span>\t<\/div>\t<div ng-show="unitSelector.control.showUnitFilterInput">\t\t<div class="select-filter-input select-item-filter-input" ng-click="unitSelector.showUnitFilterSelectList()">\t\t\t<input id="{{id}}_filter_input" class="select-list-activator" type="text" placeholder="Filter units" ng-model="unitSelector.control.unitFilterText" ng-change="unitSelector.showUnitFilterSelectList()" />\t\t\t<a class="item-selection-cancel" ng-click="unitSelector.hideUnitFilterInput()">Cancel<\/a>\t\t<\/div>\t\t<ul class="select-filter-view select-view" ng-show="unitSelector.control.showUnitFilterSelectList"\t    \tselect-list\t    \tselect-list-activator-class="select-list-activator"\t\t\tselect-list-options-array="unitSelector.filteredUnits"\t    \tselect-list-selected-option="unitSelector.selectedUnit"\t    \tselect-list-active="unitSelector.control.showUnitFilterSelectList"\t    \tselect-list-item-action="unitSelector.addUnitFromSelectList(unitSelector.selectedUnit)">\t\t\t<li ng-repeat="filteredUnits in unitSelector.filteredUnits"\t    \t\tng-class="{\'selected\': unitSelector.selectedUnit === filteredUnits }"\t\t\t\tng-click="unitSelector.addUnitFromSelectList(filteredUnits)">\t\t\t\t<span>{{ filteredUnits.regiment }}<\/span>\t\t\t<\/li>\t\t\t<li ng-show="unitSelector.filteredUnits.length === 0 && !(unitSelector.control.unitFilterText)">\t\t\t\t<span>Start typing to see unit options.<\/span>\t\t\t<\/li>\t\t\t<li ng-show="unitSelector.filteredUnits.length === 0 && (unitSelector.control.unitFilterText)">\t\t\t\t<span ng-show="!unitSelector.control.filteredUnitsLoading">No units to display.<\/span>\t\t\t\t<span ng-show="unitSelector.control.filteredUnitsLoading"><img src="https://dmffixln4zsgf.cloudfront.net/fr/s3/public-forcesreunited/fr-website-assets/images/ajax-loaders/ajax-loader.gif" alt="loading..." /><\/span>\t\t\t<\/li>\t\t<\/ul>\t<\/div><\/div>',replace:!0,scope:{id:"@id",serviceIdFilter:"=serviceIdFilter",selectedUnitServiceId:"=selectedUnitServiceId",selectedUnitId:"=selectedUnitId",selectedUnitName:"=selectedUnitName"},controller:["$scope",function(n){n.unitSelector={unitOptions:[],filteredUnits:[],selectedUnit:null,internalSelectedUnitId:null,control:{unitFilterTextTimeoutPromise:null,showSelectFromAllUnitsViewText:"Select a unit not listed in my profile",unitFilterText:null,showUnitFilterInput:!1,showUnitFilterSelectList:!1,filteredUnitsLoading:!1},addUnitFromSelectList:function(t){var i=this;t&&(i.control.unitFilterText=t.regiment);i.hideUnitFilterSelectList();t&&(globalJs.fn.system.arrayContains(i.unitOptions,t)||i.unitOptions.unshift(t),i.hideUnitFilterInput(),i.internalSelectedUnitId=t.regiment,n.selectedUnitName=t.regiment,n.selectedUnitId=t.uid,n.selectedUnitServiceId=t.serviceId)},clearFilterOptions:function(){var n=this;n.filteredUnits=[]},showSelectFromAllUnitsView:function(){var r=this,i;r.control.showUnitFilterInput=!0;r.showUnitFilterSelectList();i=angular.element("#"+n.id+"_filter_input");t(function(){i&&i.focus()})},showUnitFilterSelectList:function(){this.control.showUnitFilterSelectList=!0},hideUnitFilterSelectList:function(){this.control.showUnitFilterSelectList=!1},hideUnitFilterInput:function(){var n=this;n.control.unitFilterText="";n.control.showUnitFilterInput=!1;n.clearFilterOptions()}};n.$watch("selectedUnitId",function(t){n.unitSelector.control.showUnitFilterInput=!(t>0)})}],link:function(i){i.$watch("selectedUnitId",function(n){var r,t;if(n==null)i.selectedUnitName=null,i.selectedUnitId=null,i.selectedUnitServiceId=null;else if(n===-1)i.selectedUnitName=null,i.selectedUnitId=null,i.selectedUnitServiceId=null,i.unitSelector.showSelectFromAllUnitsView();else for(r=i.unitSelector.unitOptions,t=0;t<r.length;t++)if(r[t].uid==n){i.selectedUnitName=r[t].regiment;i.selectedUnitId=r[t].uid;i.selectedUnitServiceId=r[t].serviceId;break}});i.$watch("serviceIdFilter",function(n,t){t&&(i.unitSelector.control.unitFilterText=null,i.unitSelector.filteredUnits=[],i.selectedUnitId=null)});i.$watch("unitSelector.control.unitFilterText",function(r){r!=null&&(i.unitSelector.unitFilterTextTimeoutPromise!=null&&t.cancel(i.unitSelector.unitFilterTextTimeoutPromise),i.unitSelector.unitFilterTextTimeoutPromise=t(function(){if(globalJs.fn.string.isUndefinedNullOrWhiteSpace(r))i.unitSelector.filteredUnits=[];else{i.unitSelector.control.filteredUnitsLoading=!0;var t=0;i.serviceIdFilter&&(t=i.serviceIdFilter);n.get("/api/units/get-all-units-where-contains",{params:{containsStr:r,serviceIdFilter:t,limit:10}}).success(function(n){i.unitSelector.filteredUnits=n;i.unitSelector.control.filteredUnitsLoading=!1}).error(function(n){i.unitSelector.control.filteredUnitsLoading=!1;console.error("error",n)})}},500))})}}}])}(),function(){"use strict";angular.module("appMain").directive("addressSelector",["$http","$timeout","$q","validationService",function(n,t,i,r){function u(n){n.submitAddress&&(n.submitAddress.getData=function(){var t=i.defer(),r;return angular.isObject(n.selectedAddress)?(t.resolve({successful:!0,addAddress:!1,selectedAddress:n.selectedAddress}),t.promise):n.addressSelector.control.addAddress?(r=n.addressSelector.saveAddress(),r.then(function(i){t.resolve({successful:i,addAddress:!0,selectedAddress:n.selectedAddress})}),t.promise):(t.resolve({successful:!1,addAddress:!1,selectedAddress:n.selectedAddress}),t.promise)})}return{restrict:"EA",template:'<div ng-init="addressSelector.init()">\t<div ng-hide="addressSelector.control.initialLoading">\t\t<div class="row" ng-show="addressSelector.control.addAddress === false">\t\t\t<div class="columns small-12">\t\t\t\t<label for="name" class="left inline">Address<\/label>\t\t\t<\/div>\t\t\t<div class="columns small-12 medium-6 large-9">\t\t\t\t<select id="unit" ng-model="selectedAddress"\t\t\t\t\t\tng-options="u.name for u in addressSelector.availableAddresses">\t\t\t\t\t<option value="">Please Select Address<\/option>\t\t\t\t<\/select>\t\t\t<\/div>\t\t\t<div class="columns small-12 medium-6 large-3">\t\t\t\t<a ng-click="addressSelector.showNewAddress()" class="right button" ng-disabled="addressSelector.control.isLoading"><span>New Address<\/span><\/a>\t\t\t<\/div>\t\t<\/div>\t\t<form ng-submit="addressSelector.saveAddress()" class="row" ng-show="addressSelector.control.addAddress">\t\t\t<div class="columns small-12">\t\t\t\t<input type="hidden" name="name" id="name" ng-model="addressSelector.inputs.name">\t\t\t<\/div>\t\t\t<div class="columns small-12">\t\t\t\t<label for="addressLineOne" class="left inline">Address Line 1<\/label>\t\t\t<\/div>\t\t\t<div class="columns small-12">\t\t\t\t<input type="text" name="addressLineOne" id="addressLineOne" placeholder="address line 1" ng-model="addressSelector.inputs.addressLineOne">\t\t\t\t<span class="error" ng-show="addressSelector.validationInfo.addressLineOne.invalid">{{addressSelector.validationInfo.addressLineOne.validationMessage}}<\/span>\t\t\t<\/div>\t\t\t<div class="columns small-12">\t\t\t\t<label for="addressLineTwo" class="left inline">Address Line 2<\/label>\t\t\t<\/div>\t\t\t<div class="columns small-12">\t\t\t\t<input type="text" name="addressLineTwo" id="addressLineTwo" placeholder="address line 1" ng-model="addressSelector.inputs.addressLineTwo">\t\t\t<\/div>\t\t\t<div class="columns small-12">\t\t\t\t<label for="city" class="left inline">Town/City<\/label>\t\t\t<\/div>\t\t\t<div class="columns small-12">\t\t\t\t<input type="text" name="city" id="city" placeholder="city" ng-model="addressSelector.inputs.city">\t\t\t\t<span class="error" ng-show="addressSelector.validationInfo.city.invalid">{{addressSelector.validationInfo.city.validationMessage}}<\/span>\t\t\t<\/div>\t\t\t<div class="columns small-12">\t\t\t\t<label for="county" class="left inline">County<\/label>\t\t\t<\/div>\t\t\t<div class="columns small-12">\t\t\t\t<input type="text" name="county" id="county" placeholder="county" ng-model="addressSelector.inputs.county">\t\t\t\t<span class="error" ng-show="addressSelector.validationInfo.county.invalid">{{addressSelector.validationInfo.county.validationMessage}}<\/span>\t\t\t<\/div>\t\t\t<div class="columns small-12">\t\t\t\t<label for="postcode" class="left inline">Postcode<\/label>\t\t\t<\/div>\t\t\t<div class="columns small-12">\t\t\t\t<input type="text" name="postcode" id="postcode" placeholder="postcode" ng-model="addressSelector.inputs.postcode">\t\t\t\t<span class="error" ng-show="addressSelector.validationInfo.postcode.invalid">{{addressSelector.validationInfo.postcode.validationMessage}}<\/span>\t\t\t<\/div>\t\t\t<div class="columns small-12">\t\t\t\t<button class="small-down-expand" ng-hide="addressSelector.availableAddresses.length == 0" ng-click="addressSelector.cancelAddress()" ng-disabled="addressSelector.control.isLoading"><span>Cancel Address<\/span><\/button>\t\t\t<\/div>\t\t<\/form>\t<\/div><\/div>',replace:!0,scope:{selectedAddress:"=selectedAddress",submitAddress:"="},controller:["$scope",function(t){t.addressSelector={control:{initialLoading:!0,isLoading:!1,addAddress:!0},init:function(){var t=this;t.control.initialLoading=!0;n.get("/api/address/get-addresses").success(function(n){t.availableAddresses=n.addresses;t.control.addAddress=t.availableAddresses.length==0;t.control.initialLoading=!1}).error(function(n){console.error("error",n);t.control.initialLoading=!1})},inputs:{addressId:"",name:"",addressLineOne:"",addressLineTwo:"",city:"",county:"",postcode:""},availableAddresses:[],emptyValidationInfo:{name:{invalid:!1,validationMessage:""},addressLineOne:{invalid:!1,validationMessage:""},city:{invalid:!1,validationMessage:""},county:{invalid:!1,validationMessage:""},postcode:{invalid:!1,validationMessage:""}},validationInfo:{name:{invalid:!1,validationMessage:""},addressLineOne:{invalid:!1,validationMessage:""},city:{invalid:!1,validationMessage:""},county:{invalid:!1,validationMessage:""},postcode:{invalid:!1,validationMessage:""}},showNewAddress:function(){var n=this;n.control.addAddress=!0;n.resetValidation()},resetValidation:function(){var n=this;n.validationInfo.name.invalid=!1;n.validationInfo.addressLineOne.invalid=!1;n.validationInfo.city.invalid=!1;n.validationInfo.county.invalid=!1;n.validationInfo.postcode.invalid=!1},cancelAddress:function(){var n=this;n.control.addAddress=!1},saveAddress:function(){var f=i.defer(),u=this,e;return u.control.isLoading=!0,u.inputs.name=u.inputs.addressLineOne+", "+u.inputs.city+", "+u.inputs.county+", "+u.inputs.postcode,u.resetValidation(),e=[r.validateShortString(u.inputs.name,"Please enter address name"),r.validateShortString(u.inputs.addressLineOne,"Please enter address line"),r.validateShortString(u.inputs.city,"Please enter city"),r.validateShortString(u.inputs.county,"Please enter county"),r.validateUkPostCode(u.inputs.postcode,!1,"Please enter a valid postcode")],i.all(e).then(function(i){var e=r.allValid(i);e?(u.control.isLoading=!1,n.post("/api/address/add-address",u.inputs).success(function(n){u.availableAddresses.push(n.address);u.control.addAddress=!1;t.selectedAddress=n.address;u.control.isLoading=!1;f.resolve(!0)}).error(function(n){u.control.isLoading=!1;console.error("Error in memberProfileSettings.editProfilePhoto",n);f.resolve(!1)})):(u.validationInfo.name=i[0],u.validationInfo.addressLineOne=i[1],u.validationInfo.city=i[2],u.validationInfo.county=i[3],u.validationInfo.postcode=i[4],u.control.isLoading=!1,f.resolve(!1))}),f.promise}}}],link:u}}])}(),function(){"use strict";angular.module("appMain").directive("manageFriend",["$http","pageService","paymentRecordService",function(n,t,i){return{restrict:"EA",template:'<div class="add-friend-buttons">\t<button type="button" ng-hide="isHidden()" class="{{buttonClass}}" ng-click="memberId > 0 ? addFriend(friendMemberId, $event) : showPopup($event); $event.stopPropagation();"> {{addFriendText || "+ Add friend"}} <\/button>\t<span class="friends-status" ng-show="showAddFriend && isAlreadyFriend"><i class="fi-check green"><\/i> Friends<\/span> <textarea ng-hide="contactFieldHidden()" type="text" placeholder="Please type your message here..." rows="4" cols="40" ng-model="contactField"><\/textarea> <span ng-show="showSendMessageButton">\t  <a class="button {{buttonClass}}" ng-click="doContact(friendMemberId, $event)">Send {{friendMemberName}} a message <span class="caption">&raquo;<\/span><\/a>\t<\/span><\/div>',replace:!0,scope:{isAlreadyFriend:"@isAlreadyFriend",isFullMember:"@isFullMember",isDeceased:"@isDeceased",showAddFriend:"=",showContactField:"=",contactFieldVisible:"@contactFieldVisible",contactField:"&",buttonClass:"@buttonClass",memberId:"@memberId",showSendMessageButton:"@showSendMessageButton",friendMemberId:"@friendMemberId",friendMemberName:"@friendMemberName",showLogin:"&",addFriendSuccess:"&",addFriendError:"&",addFriendText:"@addFriendText"},link:function(r){var u=!1,f;r.contactFieldVisible=="true"&&(u="true");r.showContactField&&(r.contactField="",f=t.getData(),f!=null&&f.length>0&&(r.contactField=f),t.clearData(),r.contactField.length>0&&(u="true"));r.doContact=function(n,f){f.stopPropagation();r.showContactField!=!0||u?(t.setData(r.contactField),r.memberId==0?layoutJS.showLogInRegistrationContainer():r.isFullMember=="false"?(typeof r.friendMemberName!="undefined"?layoutJS.showSubscriptionContainer("Send "+r.friendMemberName+" A Message","Please subscribe below and send your message to "+r.friendMemberName+" now."):layoutJS.showSubscriptionContainer("msg"),i.setRedirectUri()):window.location.href="/mailbox?contactMemberId="+n):u=!0};r.isHidden=function(){var n=!1;return r.memberId===r.friendMemberId&&(n=!0),r.isAlreadyFriend=="true"&&(n=!0),r.isAlreadyFriend==!0&&(n=!0),r.isDeceased=="true"&&(n=!0),r.showAddFriend==!1&&(n=!0),n};r.contactFieldHidden=function(){var n=!0;return r.showContactField==!0&&u&&(n=!1),n};r.addFriend=function(i,u){var f={friendMemberIds:[i],friendNetworkId:null};n.post("/api/friends/add-member-to-friends",f).success(function(){r.isAlreadyFriend=!0;r.addFriendSuccess!=null&&r.addFriendSuccess()}).error(function(){t.page().displayNotificationBar("There was a problem adding a friends to the network","error")});u.stopPropagation()};r.removeFriend=function(i,u){var f={friendMemberId:i};n.post("/api/friends/remove-member-from-friends",f).success(function(){t.page().displayNotificationBar("Friend removed from network","success");r.isAlreadyFriend=!1}).error(function(){t.page().displayNotificationBar("There was a problem removing a friends to the network","error")});u.stopPropagation()};r.showPopup=function(n){layoutJS.showLogInRegistrationContainer();n.stopPropagation()}}}}])}(),function(){"use strict";angular.module("appMain").directive("bindEnter",[function(){return function(n,t,i){t.bind("keydown keypress",function(t){t.which===13&&(n.$apply(function(){n.$eval(i.bindEnter)}),t.preventDefault())})}}])}(),function(){"use strict";angular.module("appMain").controller("adminAssistedSearchController",["$scope","$http","pageService",function(n,t){n.adminAssistedSearch={control:{loading:!1,showListView:!0},queryOptions:{paidOnly:!0,incompleteOnly:!0,orderDescending:!0,limit:100},assistedSearchMemberSummaries:[],assistedSearchMemberSummary:null,adminGetAssistedSearchMemberSummaries:function(){var n=this,i={paidOnly:n.queryOptions.paidOnly,incompleteOnly:n.queryOptions.incompleteOnly,orderDescending:n.queryOptions.orderDescending,limit:n.queryOptions.limit};t.get("/api/assisted-search/admin-get-assisted-search-member-summaries",{params:i}).success(function(t){n.assistedSearchMemberSummaries=t}).error(function(n){console.error(n)})},displaySingleAssistedSearchSummary:function(n){var i=this,r={assistedSearchId:n};t.get("/api/assisted-search/admin-get-assisted-search-member-summary",{params:r}).success(function(n){i.assistedSearchMemberSummary=n;i.control.showListView=!1}).error(function(n){console.error(n)})},assistedSearchUpdateComplete:function(n,i){var r=this,u={assistedSearchId:n,isComplete:i};t.post("/api/assisted-search/admin-assisted-search-update-complete",u).success(function(){r.adminGetAssistedSearchMemberSummaries();r.control.showListView=!0}).error(function(n){console.error(n)})},showListView:function(){this.control.showListView=!0}};n.$watch("adminAssistedSearch.queryOptions.paidOnly + adminAssistedSearch.queryOptions.incompleteOnly",function(t){typeof t!="undefined"&&n.adminAssistedSearch.adminGetAssistedSearchMemberSummaries()})}])}(),function(){"use strict";angular.module("appMain").controller("assistedSearchController",["$scope","$http","$q","validationService","pageService","paymentRecordService",function(n,t,i,r,u,f){n.assistedSearch={control:{initComplete:!1,displayInitialForm:!0,loading:!1,isSubmitted:!1},serviceOptions:[],yearOptions:[],searchDetails:{isFrSearch:!0,firstname:"",surname:"",serviceNumber:"",service:"",unit:"",rank:"",yearSignedUp:"",yearLeft:"",furtherInfo:""},validationInfo:{firstname:{invalid:!1,validationMessage:""},surname:{invalid:!1,validationMessage:""}},submit:function(){var n=this,u;n.control.loading=!0;n.control.isSubmitted=!0;u=[r.validateShortString(n.searchDetails.surname,"Please enter a surname"),r.validateShortString(n.searchDetails.firstname,"Please enter a first name")];i.all(u).then(function(i){var u=r.allValid(i);u?(n.control.displayInitialForm=!1,n.control.loading=!1,t.post("/api/assisted-search/create-search",n.searchDetails).success(function(t){t.success===!0&&(f.recordId.set(t.id),f.frTransactionType.set("AssistedSearch"),f.toPay.set(t.toPay),f.showGateway("AssistedSearch",1,t.toPay,t.id,0));n.control.loading=!1}).error(function(t){n.control.loading=!1;console.error(t)})):(n.validationInfo.surname=i[0],n.validationInfo.firstname=i[1],n.control.loading=!1)})},init:function(){var n=this;n.control.initComplete=!0;n.control.displayInitialForm=!0}};n.assistedSearch.serviceOptions=globalJs.appOptions.servicesOptions;n.assistedSearch.yearOptions=globalJs.appOptions.getServiceYears();n.$watch("assistedSearch.searchDetails.surname",function(t){r.validateShortString(t).then(function(t){n.assistedSearchForm&&n.assistedSearch.control.isSubmitted&&(n.assistedSearchForm.surname.$pristine||(n.assistedSearch.validationInfo.surname.invalid=t.invalid,n.assistedSearch.validationInfo.surname.validationMessage=t.validationMessage))})});n.$watch("assistedSearch.searchDetails.firstname",function(t){r.validateShortString(t).then(function(t){n.assistedSearchForm&&n.assistedSearch.control.isSubmitted&&(n.assistedSearchForm.firstname.$pristine||(n.assistedSearch.validationInfo.firstname.invalid=t.invalid,n.assistedSearch.validationInfo.firstname.validationMessage=t.validationMessage))})})}])}(),function(){"use strict";angular.module("appMain").controller("campaignsController",["$scope","$http","$timeout",function(n,t,i){n.campaigns={control:{initComplete:!1,memberUnitsLoading:!1,mostSupportedLoading:!1,mostRecentLoading:!1,serviceOptions:[],showAllUnitsText:"Select a unit not listed in my profile",showSearchResults:!1,showCreateOption:!1,searchTermTimeoutPromise:!1,isLoggedIn:!1,userHasSearched:!1},searchDetails:{serviceId:null,unitName:null,unitId:null,unitServiceId:null,searchTerm:""},mostSupportedCampaigns:null,mostRecentCampaigns:null,searchedCampaigns:null,showAllUnits:function(){var n=this;n.searchDetails.unitName="";n.control.showUnitFilterOption=!0;n.showSelectUnitsView()},search:function(){var n=this;n.control.userHasSearched=!0;var i=n.searchDetails.unitId,r=n.searchDetails.serviceId,u={searchTerm:n.searchDetails.searchTerm,unitId:i!=null?i:0,serviceId:r!=null?r:0};t.post("/api/campaigns/search-campaign",u).success(function(t){t.success===!0?(n.searchedCampaigns=t.campaigns,n.control.showSearchResults=!0):(n.searchedCampaigns=[],n.control.showSearchResults=!1)}).error(function(n){console.error(n.errorMessage)})},init:function(n){var i=this;i.control.mostSupportedLoading=!0;i.control.mostRecentLoading=!0;i.control.memberUnitsLoading=!0;i.control.showCreateOption=!1;n>0?(i.control.isLoggedIn=!0,i.control.showCreateOption=!0):(i.control.isLoggedIn=!1,i.control.showCreateOption=!1);i.control.serviceOptions=globalJs.appOptions.servicesOptions;t.get("/api/campaigns/get-most-supported-data").success(function(n){n.success===!0&&(i.mostSupportedCampaigns=n.campaigns);i.control.mostSupportedLoading=!1}).error(function(n){console.error(n.errorMessage)});t.get("/api/campaigns/get-most-recent-data").success(function(n){n.success===!0&&(i.mostRecentCampaigns=n.campaigns);i.control.mostRecentLoading=!1}).error(function(n){console.error(n.errorMessage)});i.control.initComplete=!0}};n.$watch("campaigns.searchDetails.searchTerm",function(){n.campaignSearchForm&&(n.campaignSearchForm.searchTerm.$pristine||(n.campaigns.control.searchTermTimeoutPromise&&i.cancel(n.campaigns.control.searchTermTimeoutPromise),n.campaigns.control.searchTermTimeoutPromise=i(function(){n.campaigns.search()},150)))});n.$watch("campaigns.searchDetails.serviceId",function(){n.campaignSearchForm&&(n.campaignSearchForm.serviceId.$pristine||n.campaigns.search())});n.$watch("campaigns.searchDetails.unitId + campaigns.searchDetails.unitName",function(){var t=n.campaigns.searchDetails.unitId;(t&&t!=-1||n.campaigns.control.userHasSearched)&&n.campaigns.search()})}])}(),function(){"use strict";angular.module("appMain").controller("campaignItemController",["$scope","$sce","$http","pageService",function(n,t,i,r){n.campaignItem={control:{isLoading:!1,canSupport:!0,canLeave:!0,canEdit:!1},id:null,campaignSummary:null,campaignSupporters:null,recentForumPosts:{forumPosts:[],html:null},init:function(u,f){var e=this;e.control.isLoading=!0;e.id=u;i.get("/api/campaigns/get-campaign-data",{params:{id:e.id,full:f}}).success(function(i){i.success===!0&&globalJs.fn.angularJs.safeApply(n,function(){n.campaignItem.campaignSummary=i.campaignSummary;n.campaignItem.campaignSupporters=i.supporters;n.campaignItem.control.canLeave=i.canLeave;n.campaignItem.control.canSupport=i.canSupport;n.campaignItem.control.canEdit=i.canEdit;globalJs.fn.angularJs.safeApply(n,function(){r.setPageTitle(n.campaignItem.campaignSummary.campaignName)});n.campaignItem.campaignSummary.bodyText!=null&&(n.campaignItem.campaignSummary.bodyText=t.trustAsHtml(n.campaignItem.campaignSummary.bodyText))});e.control.isLoading=!1}).error(function(n){e.control.isLoading=!1;console.error(n)})},loadRecentForumPosts:function(){var t=this,r=n.campaignItem.campaignSummary.memberId,u=n.campaignItem.campaignSummary.campaignCommentsForumThreadId;i.get("/api/forum/get-recent-forum-posts-by-forum-thread-id",{params:{forumThreadId:u,ignoreOriginalPost:!0,memberId:r,limit:10,cacheSeconds:0}}).success(function(n){t.recentForumPosts.forumPosts=n.forumPosts;t.recentForumPosts.html=n.forumPostsHtml}).error(function(n){console.error(n)})},supportCampaign:function(){var n=this;n.control.isLoading=!0;i.get("/api/campaigns/support-campaign",{params:{id:n.id}}).success(function(t){t.success===!0?(n.control.canSupport=!1,n.control.canLeave=!0,n.campaignSupporters=t.supporters,n.campaignSummary.campaignMemberCount++,r.page().displayNotificationBar("You are now supporting this campaign","success")):r.page().displayNotificationBar(t.errorMessage,"error");n.control.isLoading=!1}).error(function(t){r.page().displayNotificationBar(t.errorMessage,"error");n.control.isLoading=!1;console.error(t)})},leaveCampaign:function(){var n=this;n.control.isLoading=!0;i.get("/api/campaigns/leave-campaign",{params:{id:n.id}}).success(function(t){t.success===!0?(n.control.canLeave=!1,n.control.canSupport=!0,n.campaignSummary.campaignMemberCount--,n.campaignSupporters=t.supporters,r.page().displayNotificationBar("You have now left this campaign","success")):r.page().displayNotificationBar(t.errorMessage,"error");n.control.isLoading=!1}).error(function(t){r.page().displayNotificationBar(t.errorMessage,"error");n.control.isLoading=!1;console.error(t)})},deleteCampaign:function(){var t=confirm("Are you sure to delete this campaign?"),n;if(t)n=this,n.control.isLoading=!0,i.get("/api/campaigns/delete-campaign",{params:{id:n.id}}).success(function(t){t.success===!0?window.location="/campaigns":r.page().displayNotificationBar(t.errorMessage,"error");n.control.isLoading=!1}).error(function(t){r.page().displayNotificationBar(t.errorMessage,"error");n.control.isLoading=!1;console.error(t)});else return!1}}}])}(),function(){"use strict";angular.module("appMain").controller("campaignCreateController",["$scope","$q","$http","$sce","validationService",function(n,t,i,r,u){window.uploadCampaignPhotoCallback=function(t,i,r,u){n.campaignCreate.uploadCampaignPhoto(t,i,r,u)};n.campaignCreate={control:{initLoadComplete:!1,loading:!1,isSubmitted:!1,memberUnitsLoading:!1,isPreview:!1,saving:!1,errorMessages:null,serviceOptions:[]},unitFilterTextTimeoutPromise:null,validationInfo:{name:{invalid:!1,validationMessage:null},slogan:{invalid:!1,validationMessage:null},bodyText:{invalid:!1,validationMessage:null},unit:{invalid:!1,validationMessage:null}},campaignDetails:{name:"",slogan:"",serviceId:null,unitId:null,unitName:null,unitServiceId:null,bodyText:"",htmlBodyText:"",picture:"",seoTitle:"",seoDescription:""},init:function(){var n=this;n.control.memberUnitsLoading=!0;n.control.loading=!1;n.control.isSubmitted=!1},submitForm:function(){var n=this,i;n.control.loading=!0;n.control.isSubmitted=!0;n.control.errorMessages=null;i=[u.validateShortString(n.campaignDetails.name,"Please enter campaign name"),u.validateShortString(n.campaignDetails.slogan,"Please enter campaign slogan"),u.validateLongString(n.campaignDetails.bodyText,"Please describe the campaign")];t.all(i).then(function(t){var f=u.allValid(t),i,r;f?(i=$("#gallery-fine-uploader"),r=i.fineUploader("getUploads",{status:qq.status.SUBMITTED}).length,r>0?i.fineUploader("uploadStoredFiles"):n.saveData()):(n.validationInfo.name=t[0],n.validationInfo.slogan=t[1],n.validationInfo.bodyText=t[2],n.validationInfo.unit=t[3],n.control.loading=!1)})},saveData:function(){var n=this,t={name:n.campaignDetails.name,slogan:n.campaignDetails.slogan,serviceId:n.campaignDetails.serviceId,unitId:n.campaignDetails.unitId,bodyText:n.campaignDetails.bodyText,picture:n.campaignDetails.picture,seoTitle:n.campaignDetails.seoTitle,seoDescription:n.campaignDetails.seoDescription};n.control.isPreview=!1;i.post("/api/campaigns/create-campaign",t).success(function(t){t.success===!0?window.location=t.returnUri:(n.errorMessages=t.errorMessages,console.error(t.errorMessages));n.control.loading=!1}).error(function(t){n.control.loading=!1;console.error(t)})},uploadCampaignPhoto:function(n,t,i,r){var u=this;u.campaignDetails.picture=globalJs.fn.string.fileNameFromPath(r.tempLink);u.saveData()}};n.campaignCreate.control.serviceOptions=globalJs.appOptions.servicesOptions;n.$watch("campaignCreate.campaignDetails.name",function(t){u.validateShortString(t).then(function(t){n.campaignCreateForm&&n.campaignCreate.control.isSubmitted&&(n.campaignCreateForm.name.$pristine||(n.campaignCreate.validationInfo.name.invalid=t.invalid,n.campaignCreate.validationInfo.name.validationMessage=t.validationMessage))})});n.$watch("campaignCreate.campaignDetails.slogan",function(t){u.validateShortString(t).then(function(t){n.campaignCreateForm&&n.campaignCreate.control.isSubmitted&&(n.campaignCreateForm.explanation.$pristine||(n.campaignCreate.validationInfo.slogan.invalid=t.invalid,n.campaignCreate.validationInfo.slogan.validationMessage=t.validationMessage))})});n.$watch("campaignCreate.campaignDetails.bodyText",function(t){u.validateShortString(t).then(function(t){n.campaignCreateForm&&n.campaignCreate.control.isSubmitted&&(n.campaignCreateForm.bodyText.$pristine||(n.campaignCreate.validationInfo.bodyText.invalid=t.invalid,n.campaignCreate.validationInfo.bodyText.validationMessage=t.validationMessage))})})}])}(),function(){"use strict";angular.module("appMain").controller("campaignEditController",["$scope","$q","$http","$sce","$timeout","validationService",function(n,t,i,r,u,f){window.uploadCampaignPhotoCallback=function(n,t,i,r){var f=document.querySelector('[ng-controller="campaignEditController"]'),u=angular.element(f).scope();u.campaignEdit.uploadCampaignPhoto(n,t,i,r);u.campaignEdit.control.showPhotoUploadModal=!1};n.campaignEdit={id:null,control:{initLoadComplete:!1,loading:!1,isSubmitted:!1,isPreview:!1,saving:!1,showPhotoUploadModal:!1,errorMessages:null,serviceOptions:[]},validationInfo:{campaignName:{invalid:!1,validationMessage:null},slogan:{invalid:!1,validationMessage:null},bodyText:{invalid:!1,validationMessage:null}},campaignDetails:{campaignName:"",slogan:"",serviceId:null,unitName:"",unitId:0,unitServiceId:0,bodyText:"",htmlBodyText:"",picture:""},init:function(t){var r=this;r.id=t;i.get("/api/campaigns/get-campaign-data",{params:{id:r.id,full:!0}}).success(function(t){t.success===!0&&globalJs.fn.angularJs.safeApply(n,function(){n.campaignEdit.campaignDetails=t.campaignSummary;n.campaignEdit.campaignDetails.bodyText!=null&&(n.campaignEdit.campaignDetails.bodyText=n.campaignEdit.campaignDetails.bodyText.replace(/(<br>)/gm,"\n"))});n.campaignEdit.control.initLoadComplete=!0}).error(function(n){console.error(n.errorMessage)});r.control.loading=!1;r.control.isSubmitted=!1},submitForm:function(){var n=this,i;n.control.loading=!0;n.control.isSubmitted=!0;n.control.errorMessages=null;i=[f.validateShortString(n.campaignDetails.campaignName,"Please enter a campaign name"),f.validateShortString(n.campaignDetails.slogan,"Please enter a slogan"),f.validateLongString(n.campaignDetails.bodyText,"Please describe the campaign")];t.all(i).then(function(t){var u=f.allValid(t),i,r;u?(i=$("#gallery-fine-uploader"),r=i.fineUploader("getUploads",{status:qq.status.SUBMITTED}).length,r>0?i.fineUploader("uploadStoredFiles"):n.saveData()):(n.validationInfo.campaignName=t[0],n.validationInfo.slogan=t[1],n.validationInfo.bodyText=t[2],n.validationInfo.unit=t[3],n.control.loading=!1)})},saveData:function(){var n=this,t={id:n.id,name:n.campaignDetails.campaignName,slogan:n.campaignDetails.slogan,serviceId:n.campaignDetails.serviceId,unitId:n.campaignDetails.unitId,bodyText:n.campaignDetails.bodyText,picture:n.campaignDetails.picture};n.control.isPreview=!1;i.post("/api/campaigns/edit-campaign",t).success(function(t){t.success===!0?window.location=t.returnUri:(n.errorMessages=t.errorMessages,console.error(t.errorMessages));n.control.loading=!1}).error(function(t){n.control.loading=!1;console.error(t)})},uploadCampaignPhoto:function(n,t,r,u){var f=this;i.get("/api/campaigns/edit-picture",{params:{id:f.id,s3Url:u.tempLink}}).success(function(n){f.campaignDetails.picture=n.fileName;f.saveData();f.control.loading=!1}).error(function(n){f.control.loading=!1;console.error(n)})}};n.campaignEdit.control.serviceOptions=globalJs.appOptions.servicesOptions;n.$watch("campaignEdit.campaignDetails.campaignName",function(t){f.validateShortString(t).then(function(t){n.campaignEditForm&&n.campaignEdit.control.isSubmitted&&(n.campaignEditForm.campaignName.$pristine||(n.campaignEdit.validationInfo.campaignName.invalid=t.invalid,n.campaignEdit.validationInfo.campaignName.validationMessage=t.validationMessage))})});n.$watch("campaignEdit.campaignDetails.slogan",function(t){f.validateShortString(t).then(function(t){n.campaignEditForm&&n.campaignEdit.control.isSubmitted&&(n.campaignEditForm.explanation.$pristine||(n.campaignEdit.validationInfo.slogan.invalid=t.invalid,n.campaignEdit.validationInfo.slogan.validationMessage=t.validationMessage))})});n.$watch("campaignEdit.campaignDetails.bodyText",function(t){f.validateShortString(t).then(function(t){n.campaignEditForm&&n.campaignEdit.control.isSubmitted&&(n.campaignEditForm.bodyText.$pristine||(n.campaignEdit.validationInfo.bodyText.invalid=t.invalid,n.campaignEdit.validationInfo.bodyText.validationMessage=t.validationMessage))})})}])}(),function(){"use strict";angular.module("appMain").controller("friendsManagerController",["$scope","$http","$location","$timeout","$q","validationService","pageService",function(n,t,i,r,u,f,e){n.friendsManager={control:{loadFriendCountsComplete:!1,initialLoadFriendListComplete:!1,loadFriendLoadListComplete:!1,initialLoadMembersWithMemberInFriendsListComplete:!1,createFriendsNetworkSubmitted:!1,loadNonFriendServedWithMembersComplete:!1,showHelpSearchingForFriends:!1,helpSearchingForFriendsMessageSending:!1,helpSearchingForFriendsMessageSent:!1,helpSearchingForFriendsMessageError:!1,helpSearchingForFriendsMessageNoContacts:!1},validationInfo:{friendsNetworkName:{invalid:!1,validationMessage:null},helpSearchingForFriends:{invalid:!1,validationMessage:null}},friendsInMemberListCount:0,membersWithMemberInFriendsCount:0,friendsNetworkCount:0,friendsNetworksWithCount:[],selectedFriendsNetworkId:null,selectedFriendsNetworkName:null,selectedAddToFriendsNetworkId:null,selectedAddToFriendsNetworkName:null,friendMemberList:[],membersWithMemberInFriendsList:[],selectedFriendMemberIds:[],nonFriendServedWithMembers:[],createFriendsNetworkName:null,searchingForFriendName:null,networkFilteredMode:function(){return this.selectedFriendsNetworkId!=null},selectionMode:function(){return this.selectedFriendMemberIds.length!=0},deselectAllFriends:function(){this.selectedFriendMemberIds=[]},memberIdIsInSelectedFriendMemberIds:function(n){return globalJs.fn.system.arrayContains(this.selectedFriendMemberIds,n)},getMemberNameByMemberId:function(n){for(var i=this,r=null,t=0;t<i.friendMemberList.length;t++)if(i.friendMemberList[t].id==n){r=i.friendMemberList[t].firstName+" "+i.friendMemberList[t].surname;break}return r},toggleInSelectedFriendMemberIds:function(n){if(globalJs.fn.system.arrayContains(this.selectedFriendMemberIds,n)){var t=this.selectedFriendMemberIds.indexOf(n);t>-1&&this.selectedFriendMemberIds.splice(t,1)}else this.selectedFriendMemberIds.push(n)},showFriendsListWithFriendsNetworkIdFilter:function(n){i.search("activeTab",1);i.search("selectedFriendsNetworkId",n)},loadFriendsCounts:function(){var n=this;t.get("/api/friends/get-friend-counts").success(function(t){n.friendsInMemberListCount=t.friendsInMemberListCount;n.membersWithMemberInFriendsCount=t.membersWithMemberInFriendsCount;n.friendsNetworkCount=t.friendsNetworkCount;n.control.loadFriendCountsComplete=!0}).error(function(n){console.error("error",n)})},loadFriendsNetworks:function(){var n=this;t.get("/api/friends/get-friend-networks-with-count").success(function(t){n.friendsNetworksWithCount=t.friendsNetworksWithCount}).error(function(n){console.error("error",n)})},loadFriendsList:function(n){var i=this;i.control.loadFriendLoadListComplete=!1;t.get("/api/friends/get-friends-list",{params:{friendsNetworkId:n}}).success(function(n){i.friendMemberList=n.friendMemberList;i.control.loadFriendLoadListComplete=!0;i.control.initialLoadFriendListComplete=!0}).error(function(n){console.error("error",n)})},loadMembersWithMemberInFriendsList:function(){var n=this;t.get("/api/friends/get-members-with-member-in-friends-list").success(function(t){n.membersWithMemberInFriendsList=t.membersWithMemberInFriendsList;n.control.initialLoadMembersWithMemberInFriendsListComplete=!0}).error(function(n){console.error("error",n)})},loadNonFriendServedWithMembers:function(){var n=this;n.control.loadNonFriendServedWithMembersComplete=!1;t.get("/api/friends/get-non-friend-served-with-members").success(function(t){n.nonFriendServedWithMembers=t.nonFriendServedWithMembers;n.control.loadNonFriendServedWithMembersComplete=!0}).error(function(n){console.error("error",n)})},createNewFriendsNetwork:function(){var n=this,i;n.control.createFriendsNetworkSubmitted=!0;i=[f.validateFriendsNetworkName(n.createFriendsNetworkName)];u.all(i).then(function(i){var u=f.allValid(i),r;u&&(r={friendsNetworkName:n.createFriendsNetworkName},t.post("/api/friends/create-new-friend-network",r).success(function(t){var i=t;n.friendsNetworksWithCount.push(i);n.createFriendsNetworkName=null;n.control.createFriendsNetworkSubmitted=!1;e.page().displayNotificationBar("Your new friend network was created","success")}).error(function(n){e.page().displayNotificationBar("There was a problem creating a new friend network","error");console.error("There was a problem creating a new friend network",n)}))})},addFriendMembersToFriendsNetwork:function(){var n=this,i;n.selectedAddToFriendsNetworkId==null?alert("Please select a network to add friends to"):n.selectedFriendsNetworkId==n.selectedAddToFriendsNetworkId?alert("Selected friends are already in this network"):(i={friendMemberIds:n.selectedFriendMemberIds,friendNetworkId:n.selectedAddToFriendsNetworkId},t.post("/api/friends/add-members-to-friends-network",i).success(function(){var t=n.selectedFriendMemberIds.length>1?"s":"";n.selectedFriendsNetworkId=n.selectedAddToFriendsNetworkId;e.page().displayNotificationBar("Friend"+t+" added to network","success")}).error(function(n){e.page().displayNotificationBar("There was a problem adding a friends to the network","error");console.error("There was a problem adding a friend to the network",n)}))},removeFriend:function(n,i){var r=this,f=r.getMemberNameByMemberId(n),u;confirm("Are you sure you want to remove "+f+" from your friends list?")&&(u={friendMemberId:n},t.post("/api/friends/remove-member-from-friends",u).success(function(){r.loadFriendsList(r.selectedFriendsNetworkId);e.page().displayNotificationBar("Friend removed","success")}).error(function(n){e.page().displayNotificationBar("There was a problem removing a friend","error");console.error("There was a problem removing a friend",n)}));i.stopPropagation()},removeFriendMemberFromFriendsNetwork:function(n,i){var r=this,u={friendMemberId:n,friendsNetworkId:r.selectedFriendsNetworkId};t.post("/api/friends/remove-member-from-friends-network",u).success(function(){r.loadFriendsList(r.selectedFriendsNetworkId);e.page().displayNotificationBar("Friend removed from network","success")}).error(function(n){e.page().displayNotificationBar("There was a problem removing a friend from the network","error");console.error("There was a problem removing friends from the network",n)});i.stopPropagation()},removeFriendsNetwork:function(n,i){if(confirm("Are you sure you want to remove the friends network?")){var r=this,u={friendsNetworkId:n};t.post("/api/friends/remove-friends-network",u).success(function(){r.loadFriendsNetworks();e.page().displayNotificationBar("The friend network has been removed","success")}).error(function(n){e.page().displayNotificationBar("There was a problem removing the friend network","error");console.error("There was a problem deleting the friend network",n)})}i.stopPropagation()},sendFriendSearchHelpRequestMessage:function(n){var i=this,r;i.control.helpSearchingForFriendsMessageSending=!0;i.control.helpSearchingForFriendsMessageSent=!1;i.control.helpSearchingForFriendsMessageError=!1;i.control.helpSearchingForFriendsMessageNoContacts=!1;i.validationInfo.helpSearchingForFriends.invalid=!1;i.searchingForFriendName&&i.searchingForFriendName.length>5?(r={searchingForFriendName:i.searchingForFriendName},t.post("/api/friends/send-friend-search-help-request-message",r).success(function(n){n.noMembersToContact?i.control.helpSearchingForFriendsMessageNoContacts=!0:n.allErrored?i.control.helpSearchingForFriendsMessageError=!0:i.control.helpSearchingForFriendsMessageSent=!0;i.control.helpSearchingForFriendsMessageSending=!1}).error(function(n){i.control.helpSearchingForFriendsMessageError=!0;i.control.helpSearchingForFriendsMessageSending=!1;console.error("Error in sendFriendSearchHelpRequestMessage",n)})):(i.control.helpSearchingForFriendsMessageSending=!1,i.validationInfo.helpSearchingForFriends.invalid=!0);n.stopPropagation()},redirectToMemberProfile:function(n,t){window.location="/m/"+n;t.stopPropagation()},sendMessageToMember:function(n,t){window.location.href="/mailbox?contactMemberId="+n;t.stopPropagation()},friendsForReunion:function(){return this.friendMemberList}};n.friendsManager.loadFriendsCounts();n.friendsManager.loadFriendsNetworks();n.friendsManager.loadMembersWithMemberInFriendsList();n.friendsManager.loadNonFriendServedWithMembers();n.$watch("friendsManager.selectedFriendsNetworkId",function(t){n.friendsManager.loadFriendsList(t);i.search("selectedFriendsNetworkId",t)});n.$on("$locationChangeStart",function(){var t=i.search().selectedFriendsNetworkId;n.friendsManager.selectedFriendsNetworkId=t?t:null});n.$watch("friendsManager.createFriendsNetworkName + friendsManager.control.createFriendsNetworkSubmitted",function(t){f.validateFriendsNetworkName(t).then(function(t){n.friendsManager.control.createFriendsNetworkSubmitted&&(n.friendsManager.validationInfo.friendsNetworkName.invalid=t.invalid,n.friendsManager.validationInfo.friendsNetworkName.validationMessage=t.validationMessage)})});n.$watch("friendsManager.selectedFriendsNetworkId",function(t){var r,i;if(t!=null)for(r=n.friendsManager.friendsNetworksWithCount,i=0;i<r.length;i++)r[i].networkId==t&&(n.friendsManager.selectedFriendsNetworkName=r[i].networkName);n.friendsManager.selectedFriendMemberIds=[]});n.$watch("friendsManager.selectedAddToFriendsNetworkId",function(t){var r,i;if(t!=null)for(r=n.friendsManager.friendsNetworksWithCount,i=0;i<r.length;i++)r[i].networkId==t&&(n.friendsManager.selectedAddToFriendsNetworkName=r[i].networkName)})}])}(),function(){"use strict";angular.module("appMain").controller("charitableDonationsContentController",["$scope","$sce","pageService",function(n,t){n.init=function(){var i,r;n.charitableDonationsContent={isLoading:!0,charitableDonationsContentData:null,redirectToFullArticle:function(){window.location.href="/charity-drive"}};try{i=new CmsApi;i.cmsBaseApiParameters.apiEndPoint="https://content.forcesreunited.co.uk/api/";i.cmsBaseApiParameters.subAccountKey="d2bikqprybipujg4upr3feymzb";i.cmsBaseApiParameters.categoryKey="charitable-donations";i.cmsBaseApiParameters.authorisationKey="qlayty6ezivbujc7xoejre5u7d";r="isActive.equals=true&orderByDescending=publicDate&limit=1&markdownToHtml=true&cache-max-age-seconds=60";i.get(r,function(i){globalJs.fn.angularJs.safeApply(n,function(){n.charitableDonationsContent.isLoading=!1;i.length>0?(n.charitableDonationsContent.charitableDonationsContentData=eval(i)[0],n.charitableDonationsContent.charitableDonationsContentData.content!=null&&(n.charitableDonationsContent.charitableDonationsContentData.content=t.trustAsHtml(n.charitableDonationsContent.charitableDonationsContentData.content))):console.info("empty array returned on news item fetch")})})}catch(u){console.log("error on news item fetch",data);n.charitableDonationsContent.isLoading=!1}}}])}(),function(){"use strict";angular.module("appMain").controller("frPaymentController",["$scope","$q","$http","$window","validationService","paymentRecordService","pageService",function(n,t,i,r,u,f,e){n.frPayment={paymentInfo:{recordId:0,recordTable:"",amount:0,paymentType:"CC",quantity:1,addressId:"",redirectUri:""},quantityOptions:[],orderSummary:{description:"",itemPrice:"",quantity:0},checkAddress:{},control:{loading:null,message:null,showAuthentication:!1,frameHeight:0,isSubmitted:!1,requiresAddress:!0,addressObj:null},validationInfo:{address:{invalid:!1,validationMessage:null}},errorMessages:null,returnUri:null,init:function(){var n=this},showError:function(){var n=this;n.control.showAuthentication=!1;n.control.frameHeight=0;n.errorMessages=["Payment failed - Unauthorised."]},updateQuantity:function(){var n=this;n.control.loading=!0;i.post("/api/badges/update-badge",{amount:n.orderSummary.quantity,orderId:f.recordId.get()}).success(function(t){t.success?f.toPay.set(t.toPay):(f.quantity.set(t.quantity),n.orderSummary.quantity=t.quantity,e.page().displayNotificationBar(t.errorMessage,"error"));n.control.loading=!1}).error(function(){n.control.loading=!1})},validateAddress:function(){var n=t.defer(),i=this,r;return i.control.requiresAddress&&i.checkAddress.getData?(r=i.checkAddress.getData(),r.then(function(t){t.successful===!1?(n.resolve(!1),t.addAddress===!1&&(n.resolve(!1),i.validationInfo.address={invalid:!0,validationMessage:"Please select an address"})):angular.isObject(t.selectedAddress)?(i.control.addressObj=t.selectedAddress,i.paymentInfo.addressId=t.selectedAddress.id,n.resolve(!0)):n.resolve(!1)})):n.resolve(!0),n.promise},submitForm:function(){var n=this,t;n.validationInfo.address.invalid=!1;t=n.validateAddress();t.then(function(t){t&&(n.errorMessages=null,n.control.isSubmitted=!0,n.control.loading=!0,n.paymentInfo.recordId=f.recordId.get(),n.paymentInfo.frTransactionType=f.frTransactionType.get(),n.paymentInfo.quantity=f.quantity.get(),$("#order-summary-quantity").attr("disabled",""),f.showGateway(n.paymentInfo.frTransactionType,n.paymentInfo.quantity,n.paymentInfo.amount,n.paymentInfo.recordId,n.paymentInfo.addressId))})}};n.$watch(function(){return f.toPay.get()},function(t){n.frPayment.paymentInfo.amount=t});n.$watch(function(){return f.description.get()},function(t){n.frPayment.orderSummary.description=t});n.$watch(function(){return f.quantity.get()},function(t){n.frPayment.orderSummary.quantity=t});n.$watch(function(){return f.itemPrice.get()},function(t){n.frPayment.orderSummary.itemPrice=t});n.$watch(function(){return f.quantityOptions.get()},function(t){n.frPayment.quantityOptions=t});n.$watch(function(){return f.requiresAddress.get()},function(t){n.frPayment.control.requiresAddress=t})}])}(),function(){"use strict";angular.module("appMain").controller("forumController",["$scope","$http","pageService",function(n,t,i){n.forum={control:{initComplete:!1,hotForumThreadsLoading:!1,recentPostsLoading:!1,memberParticipatedForumThreadsLoading:!1,memberSavedForumThreadsLoading:!1,searchQueryResultThreadsLoading:!1,hotForumThreadsFirstLoadComplete:!1,memberParticipatedFirstLoadComplete:!1,memberSavedForumFirstLoadComplete:!1,searchQueryResultFirstLoadComplete:!1},init:function(n,t){var i=this;i.memberId=n;i.control.initComplete=!0;i.loadRecentForumPosts(i.memberId,t,0);i.memberId>0},memberId:0,searchQueryText:null,hotForumThreads:{forumThreads:[],currentPage:0,totalPages:0},memberParticipatedForumThreads:{forumThreads:[],currentPage:0,totalPages:0},memberSavedForumThreads:{forumThreads:[],currentPage:0,totalPages:0},searchQueryResultThreads:{forumThreads:[],currentPage:0,totalPages:0},recentForumPosts:{forumPosts:[],html:null},loadHotForumThreads:function(i){n.forum.control.hotForumThreadsLoading=!0;var u=40,f=i*u-u,e=u,r=this;t.get("/api/forum/get-forum-threads-by-hot-rank",{params:{skip:f,limit:e,cacheSeconds:0}}).success(function(n){r.hotForumThreads.forumThreads=n.forumThreads;r.hotForumThreads.skip=n.skip;r.hotForumThreads.limit=n.limit;var t=n.foundRows;r.hotForumThreads.currentPage=Math.ceil(n.skip/n.limit)+1;r.hotForumThreads.totalPages=Math.ceil(t/n.limit);r.control.hotForumThreadsLoading=!1;r.control.hotForumThreadsFirstLoadComplete=!0}).error(function(n){console.error("error",n)})},loadMemberParticipatedThreads:function(i,r){n.forum.control.memberParticipatedForumThreadsLoading=!0;var f=10,e=r*f-f,o=f,u=this;t.get("/api/forum/get-forum-threads-by-member-participated",{params:{memberId:i,skip:e,limit:o}}).success(function(n){u.memberParticipatedForumThreads.forumThreads=n.forumThreads;u.memberParticipatedForumThreads.skip=n.skip;u.memberParticipatedForumThreads.limit=n.limit;var t=n.foundRows;u.memberParticipatedForumThreads.currentPage=Math.ceil(n.skip/n.limit)+1;u.memberParticipatedForumThreads.totalPages=Math.ceil(t/n.limit);u.control.memberParticipatedForumThreadsLoading=!1;u.control.memberParticipatedFirstLoadComplete=!0}).error(function(n){console.error("error",n)})},loadMemberSavedThreads:function(i,r){n.forum.control.memberSavedForumThreadsLoading=!0;var f=10,e=r*f-f,o=f,u=this;t.get("/api/forum/get-forum-threads-by-member-saved",{params:{memberId:i,skip:e,limit:o}}).success(function(n){u.memberSavedForumThreads.forumThreads=n.forumThreads;u.memberSavedForumThreads.skip=n.skip;u.memberSavedForumThreads.limit=n.limit;var t=n.foundRows;u.memberSavedForumThreads.currentPage=Math.ceil(n.skip/n.limit)+1;u.memberSavedForumThreads.totalPages=Math.ceil(t/n.limit);u.control.memberSavedForumThreadsLoading=!1;u.control.memberSavedForumFirstLoadComplete=!0}).error(function(n){console.error("error",n)})},loadSearchQueryResultThreads:function(i,r){var s;n.forum.control.searchQueryResultThreadsLoading=!0;var e=10,o=r*e-e,f=e,u=this;globalJs.fn.string.isUndefinedNullOrWhiteSpace(i)?(u.searchQueryResultThreads.forumThreads=[],u.searchQueryResultThreads.skip=o,u.searchQueryResultThreads.limit=f,s=0,u.searchQueryResultThreads.currentPage=Math.ceil(o/f)+1,u.searchQueryResultThreads.totalPages=Math.ceil(s/f),u.control.searchQueryResultThreadsLoading=!1,u.control.searchQueryResultFirstLoadComplete=!0):t.get("/api/forum/get-forum-threads-by-search-query",{params:{q:i,skip:o,limit:f}}).success(function(n){u.searchQueryResultThreads.forumThreads=n.forumThreads;u.searchQueryResultThreads.skip=n.skip;u.searchQueryResultThreads.limit=n.limit;var t=n.foundRows;u.searchQueryResultThreads.currentPage=Math.ceil(n.skip/n.limit)+1;u.searchQueryResultThreads.totalPages=Math.ceil(t/n.limit);u.control.searchQueryResultThreadsLoading=!1;u.control.searchQueryResultFirstLoadComplete=!0}).error(function(n){console.error("error",n)})},loadRecentForumPosts:function(i,r,u){var f=this;n.forum.control.recentPostsLoading=!0;t.get("/api/forum/get-recent-forum-posts",{params:{memberId:i,limit:r,skip:u,cacheSeconds:0,getHtml:!1}}).success(function(t){f.recentForumPosts.forumPosts=t.forumPosts;n.forum.control.recentPostsLoading=!1}).error(function(n){console.error("error",n)})}};n.$watch(function(){return i.page().tabs.activeTab},function(t){t=="1"?n.forum.loadHotForumThreads(1):t=="2"?n.forum.loadMemberParticipatedThreads(n.forum.memberId,1):t=="3"&&n.forum.loadMemberSavedThreads(n.forum.memberId,1)})}])}(),function(){"use strict";angular.module("appMain").controller("forumPostEditorController",["$scope","$http","$compile","$q","$window","pageService","validationService",function(n,t,i,r,u,f,e){window.uploadForumAttachmentsAllCompleteCallback=function(t,i,r){var u,f;u=n.forumPostEditor.replyEditForumPostId!=null?document.querySelector('[id="forumPostEditorController'+n.forumPostEditor.replyEditForumPostId+'"]'):document.querySelector('[id="forumPostEditorController"]');f=angular.element(u).scope();f.forumPostEditor.saveForumPostData(t,i,r)};n.forumPostEditor={control:{initComplete:!0},init:function(n,i,r,u,f,e,o){var s=this;s.replyEditForumPostId=n;s.isNewForumThread=i==="true";s.recentCommentsContext=r==="true";s.control.initComplete=!0;s.forumPostEditorMode=u;s.redirectToNewPost=f;s.hasAncestors=e;s.forumThreadId=o;s.forumPostEditorMode==="edit"&&t.get("/api/forum/get-forum-post",{params:{forumPostId:s.replyEditForumPostId}}).success(function(n){s.forumPostText=n.postText;s.existingAttachments=n.attachmentsArray}).error(function(n){console.log("error",n)})},validationInfo:{forumThreadTitle:{invalid:!1,validationMessage:null},forumPost:{invalid:!1,validationMessage:null}},replyEditForumPostId:null,isNewForumThread:!1,redirectToNewPost:!1,recentCommentsContext:!1,forumThreadTitle:null,forumThreadId:null,forumPostText:null,hasAncestors:!0,postAttempted:!1,postInProcess:!1,attachedFilesCount:0,existingAttachments:[],removedAttachments:[],saveForumPost:function(){var n=this,t,i;n.postAttempted=!0;n.postInProcess=!0;n.forumPostInvalid=!1;t=n.replyEditForumPostId!=null?$("#forum-fine-uploader-"+n.replyEditForumPostId):$("#forum-fine-uploader-");n.attachedFilesCount=t.fineUploader("getUploads",{status:qq.status.SUBMITTED}).length+n.existingAttachments.length;i=n.isNewForumThread?[e.validateForumThreadTitle(n.forumThreadTitle),e.validateForumPost(n.forumPostText,n.attachedFilesCount)]:[e.validateForumPost(n.forumPostText,n.attachedFilesCount)];r.all(i).then(function(i){var r=e.allValid(i);r?t.fineUploader("getUploads",{status:qq.status.SUBMITTED}).length>0?t.fineUploader("uploadStoredFiles"):n.saveForumPostData(null,null,null):n.postInProcess=!1})},RemoveImageFromPost:function(n){var t=this;t.existingAttachments=$.grep(t.existingAttachments,function(t){return t!=n});t.removedAttachments.push(n)},saveForumPostData:function(r,e){var o=this,l=o.existingAttachments,s=null,c,a,v,p,y,h;if(e!=null&&e.length>0)for(s=o.replyEditForumPostId!=null?$("#forum-fine-uploader-"+o.replyEditForumPostId):$("#forum-fine-uploader-"),c="",a=0,v=0;v<e.length;v++)p=s.fineUploader("getKey",v),y=p.replace("fr-forum-assets/threads/",""),a<2?(c+=y+",",a++):(c+=y,l.push(c),a=0,c="");o.isNewForumThread?(h={forumThreadTitle:o.forumThreadTitle,forumPostText:o.forumPostText,attachments:l},t.post("/api/forum/create-new-forum-thread-and-forum-post",h).success(function(n){window.location.replace(n.forumThreadAbsoluteUrl)}).error(function(n){f.page().displayNotificationBar("There was an error saving your forum post","error");console.error("Error saving forum post",n)})):o.forumPostEditorMode==="reply"?(h={immediateAncestorId:o.replyEditForumPostId,forumPostText:o.forumPostText,attachments:l,recentCommentsContext:o.recentCommentsContext,hasAncestors:o.hasAncestors,forumThreadId:o.forumThreadId},t.post("/api/forum/create-forum-post",h).success(function(t){try{s!=null&&(s.fineUploader("clearStoredFiles"),s.fineUploader("reset"))}catch(h){console.error("Error caught when trying to unload fineUploader")}var r=angular.element("#editorContainer"+o.replyEditForumPostId),e=angular.element("#subPosts"+o.replyEditForumPostId);n.forumPostElement=angular.element(t.forumPostRenderHtml);i(n.forumPostElement)(n);e.prepend(n.forumPostElement);r.html("");f.page().displayNotificationBar("Your post has been saved","success");o.redirectToNewPost==="true"&&(u.location.href=t.responseUrl)}).error(function(n){f.page().displayNotificationBar("There was an error saving your forum post","error");console.error("Error saving forum post",n)})):o.forumPostEditorMode==="edit"&&(h={forumPostId:o.replyEditForumPostId,forumPostText:o.forumPostText,attachments:l,removedAttachments:o.removedAttachments,recentCommentsContext:o.recentCommentsContext},t.post("/api/forum/edit-forum-post",h).success(function(){try{s!=null&&(s.fineUploader("clearStoredFiles"),s.fineUploader("reset"))}catch(u){console.error("Error caught when trying to unload fineUploader")}var r=angular.element("#modifierContainer"+o.replyEditForumPostId);r.html("");t.get("/api/forum/get-edited-forum-post-html",{params:{forumPostId:o.replyEditForumPostId}}).success(function(t){var r=angular.element("#post_"+o.replyEditForumPostId),u=angular.element("#fpAttachments"+o.replyEditForumPostId);r.html(t.postText);u.html(t.attachmentsDisplayHtml);i(r)(n);i(u)(n);$("#fpContainer"+o.replyEditForumPostId).show();f.page().displayNotificationBar("Your post has been updated","success")}).error(function(n){console.log("error",n)})}).error(function(n){f.page().displayNotificationBar("There was an error saving your forum post","error");console.error("Error saving forum post",n)}))}};n.$watch("forumPostEditor.forumThreadTitle",function(t){n.forumPostEditor&&n.forumPostEditor.isNewForumThread?e.validateForumThreadTitle(t).then(function(t){n.forumPostEditor.validationInfo.forumThreadTitle.invalid=t.invalid;n.forumPostEditor.validationInfo.forumThreadTitle.validationMessage=t.validationMessage}):(n.forumPostEditor.validationInfo.forumThreadTitle.invalid=!1,n.forumPostEditor.validationInfo.forumThreadTitle.validationMessage=null)});n.$watch("forumPostEditor.forumPostText + forumPostEditor.attachedFilesCount",function(){var t=n.forumPostEditor.forumPostText,i=n.forumPostEditor.attachedFilesCount;e.validateForumPost(t,i).then(function(t){n.forumPostEditor.validationInfo.forumPost.invalid=t.invalid;n.forumPostEditor.validationInfo.forumPost.validationMessage=t.validationMessage})})}])}(),function(){"use strict";angular.module("appMain").controller("forumPostController",["$scope","$http",function(n,t){n.forumPost={control:{},init:function(n,t,i,r,u,f,e){var o=this;o.forumPostId=n;o.memberId=t;o.memberIsForumModerator=i;o.upVotes=r;o.currentMemberVoteValue=u;o.forumPostMemberId=f;o.isDeleted=e;this.showDelete=this.memberId===this.forumPostMemberId||i;this.showEdit=this.memberId===this.forumPostMemberId||i},forumPostId:0,memberId:0,memberIsForumModerator:!1,upVotes:0,currentMemberVoteValue:0,showShareButtons:!1,forumPostMemberId:0,showDelete:!1,pendingDeletion:!1,isDeleted:!1,isReported:!1,showEdit:!1,editing:!1,getReplyText:function(){var n=angular.element("#reply-excerpt-"+this.forumPostId),i={forumPostId:this.forumPostId};t.get("/api/forum/get-ancestor-post-text",{params:i}).success(function(t){n.html(t.html)}).error(function(n){console.error(n)})},voteOnForumPost:function(n){var i=this,r={forumPostId:i.forumPostId,voteValue:n};t.post("/api/forum/vote-on-forum-post",r).success(function(n){i.upVotes=n.newForumPostUpVotes;i.currentMemberVoteValue=n.newCurrentMemberVoteValue}).error(function(n){console.error("Error saving forum post vote",n)})},report:function(){var n=this,i={forumPostId:n.forumPostId};t.post("/api/forum/report-forum-post",i).success(function(){n.isReported=!0}).error(function(n){console.error("Error reporting forum post vote",n)})},twitterShare:function(n){return window.open("https://twitter.com/intent/tweet?url="+encodeURIComponent(n)+"&text=FR Forums: ","","menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600"),!1},facebookShare:function(n){return window.open("https://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(n),"","menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600"),!1},showShares:function(){this.showShareButtons=!this.showShareButtons},"delete":function(){var n=this,i={forumPostId:n.forumPostId};t.post("/api/forum/delete-forum-post",i).success(function(){n.pendingDeletion=!0}).error(function(n){console.error("Error saving forum post vote",n)})}}}])}(),function(){"use strict";angular.module("appMain").controller("forumThreadController",["$scope","$http","$anchorScroll","$location","$timeout",function(n,t,i,r,u){n.forumThread={control:{},forumThreadId:0,memberId:0,upVotes:0,currentMemberVoteValue:0,showShareButtons:!1,isCurrentMemberSaved:!1,isLocked:!1,isLockedLastChangeBy:!1,isDeleted:!1,isDeletedLastChangeBy:!1,init:function(n,t,i,r,u,f,e){var o=this;o.forumThreadId=n;o.memberId=t;o.isCurrentMemberSaved=i;o.upVotes=r;o.currentMemberVoteValue=u;o.isLocked=f;o.isDeleted=e},voteOnForumThread:function(n){var i=this,r={forumThreadId:i.forumThreadId,voteValue:n};t.post("/api/forum/vote-on-forum-thread",r).success(function(n){i.upVotes=n.newForumThreadUpVotes;i.currentMemberVoteValue=n.newCurrentMemberVoteValue}).error(function(n){console.error("Error saving forum thread vote",n)})},saveForumThread:function(){var n=this,i={forumThreadId:n.forumThreadId};t.post("/api/forum/toggle-member-save-forum-thread",i).success(function(t){n.isCurrentMemberSaved=t.forumThreadSaved}).error(function(n){console.error("Error saving forum thread",n)})},saveIsLockedStatus:function(){var n=this,i={forumThreadId:n.forumThreadId,isLocked:n.isLocked};t.post("/api/forum/update_forum_thread_is_locked",i).success(function(){}).error(function(n){console.error("Error saving forum thread is locked status",n)})},saveIsDeletedStatus:function(){var n=this,i={forumThreadId:n.forumThreadId,isDeleted:n.isDeleted};t.post("/api/forum/update_forum_thread_is_deleted",i).success(function(){}).error(function(n){console.error("Error saving forum thread is deleted status",n)})},twitterShare:function(n){return window.open("https://twitter.com/intent/tweet?url="+encodeURIComponent(n)+"&text=Forces Reunited: ","","menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600"),!1},facebookShare:function(n){return window.open("https://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(n),"","menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600"),!1},showShares:function(){this.showShareButtons=!this.showShareButtons}};u(function(){i.yOffset=-100;i()})}])}(),function(){"use strict";angular.module("appMain").controller("galleryController",["$scope","$http","$timeout","$q","validationService","pageService","$location",function(n,t,i,r,u,f,e){n.gallery={galleryEntries:null,galleryEntriesFiles:null,currentPage:1,pageLength:12,totalPages:0,sortBy:1,serviceId:0,service:null,serviceOptions:[],pageLengths:[12,16,20,24],initialLoad:!1,filterLoading:!1,orderDescription:"",unitServiceId:0,unitName:"",unitId:0,serviceKey:"serviceid",pageLengthKey:"pagelength",sortByKey:"sortby",pageKey:"page",unitIdKey:"unitid",unitNameKey:"unitname",unitServiceIdKey:"unitserviceid",loadGalleryPhotos:function(n){this.currentPage=n;this.loadGalleryEntries()},init:function(){this.getValuesFromQueryString();this.initialLoad=!0;this.loadGalleryEntries()},getValuesFromQueryString:function(){var n,t;if(!angular.isUndefined(e.search()[this.serviceKey]))for(n=this.serviceOptions.length-1;n>-1;n--)this.serviceOptions[n].id==e.search()[this.serviceKey]&&(this.serviceId=e.search()[this.serviceKey],this.service=this.serviceOptions[n]);angular.isUndefined(e.search()[this.pageLengthKey])||(t=parseInt(e.search()[this.pageLengthKey]),this.pageLengths.indexOf(t)!=-1&&(this.pageLength=t));angular.isUndefined(e.search()[this.sortByKey])||(this.sortBy=e.search()[this.sortByKey]);angular.isUndefined(e.search()[this.pageKey])||(this.currentPage=e.search()[this.pageKey]);angular.isUndefined(e.search()[this.unitIdKey])||(this.unitId=e.search()[this.unitIdKey]);angular.isUndefined(e.search()[this.unitNameKey])||(this.unitName=e.search()[this.unitNameKey]);angular.isUndefined(e.search()[this.unitServiceIdKey])||(this.unitServiceId=e.search()[this.unitServiceIdKey])},filterForm:function(){this.currentPage=1;this.loadGalleryEntries()},loadGalleryEntries:function(){this.filterLoading=!0;var i=this.currentPage*this.pageLength-this.pageLength,r=this.pageLength;this.galleryEntries=[];this.serviceId=0;this.service!==null&&(this.serviceId=this.service.id);this.sortBy==1&&(this.orderDescription="Order by: Date (newest first)");this.sortBy==0&&(this.orderDescription="Order by: Date (oldest first)");this.unitId===null&&(this.unitId=0);this.unitName===null&&(this.unitName="");this.initialLoad!==!0&&(e.search(this.serviceKey,this.serviceId),e.search(this.pageLengthKey,this.pageLength),e.search(this.sortByKey,this.sortBy),e.search(this.pageKey,this.currentPage),e.search(this.unitIdKey,this.unitId),e.search(this.unitNameKey,this.unitName),e.search(this.unitServiceIdKey,this.unitServiceId));t.get("/api/gallery/get-all-gallery-photos",{params:{serviceId:this.serviceId,unitName:this.unitName,skip:i,limit:r,orderBy:this.sortBy}}).success(function(t){var i,r;for(n.gallery.galleryEntries=t.galleries,n.gallery.totalPhotos=t.total,n.gallery.totalPages=Math.ceil(t.total/n.gallery.pageLength),n.gallery.galleryEntriesFiles=[],i=0;i<n.gallery.galleryEntries.length;i++)r={filePath:"/fr-member-assets/gallery-photos/"+n.gallery.galleryEntries[i].memberId+"/"+n.gallery.galleryEntries[i].fileName,description:n.gallery.galleryEntries[i].description},n.gallery.galleryEntriesFiles.push(r);n.gallery.filterLoading=!1}).error(function(t){console.error("error",t);n.gallery.filterLoading=!1});this.initialLoad=!1}};n.gallery.serviceOptions=globalJs.appOptions.servicesOptions}])}(),function(){"use strict";angular.module("appMain").controller("userGalleryController",["$scope","$http","$timeout","$q","validationService","pageService",function(n,t,i,r,u,f){window.uploadGalleryPhotoCallback=function(t,i,r,u){n.userGallery.uploadGalleryPhoto(t,i,r,u)};n.userGallery={control:{showGalleryUploadArea:!1,galleryUploadMissingFile:!1,loadingGalleryEntries:!1,regimentsOptionsLoading:!1,servicesOptions:[],regimentsOptions:[]},validationInfo:{year:{invalid:!1,validationMessage:null},description:{invalid:!1,validationMessage:null}},galleryEntries:null,galleryEntriesFiles:null,currentGalleryEntry:{serviceId:null,regiment:null,galleryId:null,memberId:null,fileName:null,year:null,description:null},memberId:0,memberIsFullMember:!1,maximumGalleryImagesWithBasicMembership:0,init:function(n,t,i){this.memberId=n;this.memberIsFullMember=t;this.maximumGalleryImagesWithBasicMembership=i;this.loadGalleryEntries(n);this.control.servicesOptions=globalJs.appOptions.servicesOptions},loadGalleryEntries:function(i){this.control.loadingGalleryEntries=!0;t.get("/api/gallery/get-gallery-photos?memberId="+i).success(function(t){var r,u;for(n.userGallery.galleryEntries=t,n.userGallery.galleryEntriesFiles=[],r=0;r<n.userGallery.galleryEntries.length;r++)u={filePath:"/fr-member-assets/gallery-photos/"+i+"/"+n.userGallery.galleryEntries[r].fileName,description:n.userGallery.galleryEntries[r].description},n.userGallery.galleryEntriesFiles.push(u);n.userGallery.control.loadingGalleryEntries=!1}).error(function(n){console.error("error",n)})},galleryUploadLimitReached:function(){var n=this,t=!1;return!n.memberIsFullMember&&n.galleryEntries&&n.galleryEntries.length>=n.maximumGalleryImagesWithBasicMembership&&(t=!0),t},loadRegimentsOptions:function(n){var i=this;i.control.regimentsOptionsLoading=!0;n!==null?t.get("/api/units/get-units-by-service-id?serviceId="+n).success(function(n){i.control.regimentsOptions=n;i.control.regimentsOptionsLoading=!1}).error(function(n){i.control.regimentsOptionsLoading=!1;console.error("error",n)}):i.control.regimentsOptionsLoading=!1},saveGalleryPhotoInfo:function(){var t=[u.validateStringLength(n.userGallery.currentGalleryEntry.description,1,2e3,"image description"),u.validateGalleryYear(n.userGallery.currentGalleryEntry.year)];r.all(t).then(function(t){var f=u.allValid(t),i,r;f?(console.log("valid"),n.userGallery.control.galleryUploadMissingFile=!1,i=$("#gallery-fine-uploader"),r=i.fineUploader("getUploads",{status:qq.status.SUBMITTED}).length,r>0?i.fineUploader("uploadStoredFiles"):n.userGallery.control.galleryUploadMissingFile=!0):(n.userGallery.validationInfo.description=t[0],n.userGallery.validationInfo.description.validationMessage="Please describe the image",n.userGallery.validationInfo.year=t[1])})},uploadGalleryPhoto:function(n,i,r,u){var e=this,o;e.currentGalleryEntry.fileName=globalJs.fn.string.fileNameFromPath(u.tempLink);o={serviceId:e.currentGalleryEntry.serviceId,regiment:e.currentGalleryEntry.regiment,memberId:e.currentGalleryEntry.memberId,year:e.currentGalleryEntry.year,description:e.currentGalleryEntry.description,fileName:e.currentGalleryEntry.fileName};t.post("/api/gallery/upload-gallery-photo",o).success(function(n){e.galleryEntries.push(n);var t=$("#gallery-fine-uploader");t.fineUploader("clearStoredFiles");t.fineUploader("reset");f.page().displayNotificationBar("Gallery information has been updated","success")}).error(function(n){f.page().displayNotificationBar("There was an error uploading a gallery photo","error");console.error("Error uploading gallery photo",n)})},imageDelete:function(n){var i=this,r;confirm("Are you sure you wish to delete this photo?")&&(r={imageId:n},t.post("/api/gallery/remove-gallery-photo",r).success(function(){i.loadGalleryEntries(i.memberId);f.page().displayNotificationBar("Gallery information has been updated","success")}).error(function(n){f.page().displayNotificationBar("There was a problem removing a photo","error");console.error("There was a problem removing a photo",n)}))}};n.$watch("userGallery.currentGalleryEntry.serviceId",function(t){n.userGallery.loadRegimentsOptions(t)});n.$watch("userGallery.currentGalleryEntry.year",function(t){u.validateGalleryYear(t).then(function(t){n.galleryUploadForm&&(n.galleryUploadForm.galleryEntryYear.$pristine||(n.userGallery.validationInfo.year.invalid=t.invalid,n.userGallery.validationInfo.year.validationMessage=t.validationMessage))})});n.$watch("userGallery.currentGalleryEntry.description",function(t){u.validateStringLength(t,1,2e3,"Please describe the image").then(function(t){n.galleryUploadForm&&(n.galleryUploadForm.galleryEntryDescription.$pristine||(n.userGallery.validationInfo.description.invalid=t.invalid,n.userGallery.validationInfo.description.validationMessage="Please describe the image"))})})}])}(),function(){"use strict";angular.module("appMain").controller("helpFaqController",["$scope","$http","$timeout","$sce","$q","validationService","pageService",function(n,t,i,r,u,f,e){n.helpFaq={control:{initComplete:!1,isLoading:!1,isSubmitted:!1,id:0},helpFaqDetail:null,ratedDetails:{helpful:""},validationInfo:{helpful:{invalid:!1,validationMessage:""}},init:function(i){var u=this;u.control.id=i;u.control.isLoading=!0;t.get("/api/faq/get-faq-by-id",{params:{id:u.control.id}}).success(function(t){u.helpFaqDetail=t;n.helpFaq.helpFaqDetail.solution!=null&&(n.helpFaq.helpFaqDetail.solution=r.trustAsHtml(n.helpFaq.helpFaqDetail.solution));u.control.isLoading=!1;u.control.initComplete=!0})},rate:function(){var n=this,i;n.control.isLoading=!0;i=[f.validateRadioButtonSelected(n.ratedDetails.helpful)];u.all(i).then(function(i){var o=f.allValid(i),u,r;o?(u=n.ratedDetails.helpful==="yes",n.validationInfo.helpful=i[0],u?(r={id:n.control.id},t.post("/api/faq/set-faq-is-helpful",r).success(function(){e.page().displayNotificationBar("Your rating has been saved","success");n.control.isLoading=!1;n.control.isSubmitted=!0})):(r={id:n.control.id},t.post("/api/faq/set-faq-is-not-helpful",r).success(function(){e.page().displayNotificationBar("Your rating has been saved","success");n.control.isLoading=!1;n.control.isSubmitted=!0}))):(n.validationInfo.helpful=i[0],n.control.isLoading=!1)})}}}])}(),function(){"use strict";angular.module("appMain").controller("homeController",["$scope","$http","$sce","pageService",function(n,t,i){n.home={promotedCampaign:null};t.get("/api/campaigns/get-promoted-campaign").success(function(t){n.home.promotedCampaign=t;n.home.promotedCampaign!=null&&(n.home.promotedCampaign.slogan=i.trustAsHtml(n.home.promotedCampaign.slogan),n.home.promotedCampaign.bodyText=i.trustAsHtml(n.home.promotedCampaign.bodyText))}).error(function(){console.error("Error fetching promotedCampaign in home controller")})}])}(),function(){"use strict";angular.module("appMain").controller("joyRideCookieController",["$scope","$http",function(n,t){n.joyRideCookie={cookieIsSetIsChanged:!1,cookieIsSet:!1};n.$watch("joyRideCookie.cookieIsSet",function(i){if(typeof i!="undefined"&&(n.joyRideCookie.cookieIsSetIsChanged=n.joyRideCookie.cookieIsSetIsChanged||i===!0,n.joyRideCookie.cookieIsSetIsChanged)){var r={cookieIsSet:i};t.post("/api/misc/set-joy-ride-cookie",r).error(function(n){console.error(n)})}})}])}(),function(){"use strict";angular.module("appMain").controller("layoutController",["$scope","pageService","$location","$anchorScroll",function(n,t,i,r){var f,u,e;n.layout={logInRegistrationContainerIsVisible:!1,subscriptionContainerIsVisible:!1,logInContainerIsVisible:!0,registrationContainerIsVisible:!1,displayContent:!0,modalHeaderText:"Please subscribe below which will give you full unlimited access to the site.",modalButtonText:"Get Immediate Access",pageTitle:function(){return t.pageTitle()},showLogInRegistrationContainer:function(){this.logInRegistrationContainerIsVisible=!0;this.subscriptionContainerIsVisible=!1;this.displayContent=!1},hideLogInRegistrationContainer:function(){this.logInRegistrationContainerIsVisible=!1;this.displayContent=!0},showSubscriptionContainer:function(n,i){var r="Get Immediate Access",u;this.modalHeaderText="Please subscribe below which will give you full unlimited access to the site.";typeof n=="undefined"&&(n="");typeof i=="undefined"&&(i="");switch(n){case"forum":r="Post In The Forum";this.modalHeaderText="Please subscribe below to post in the forum.";break;case"msg":r="Send A Message";this.modalHeaderText="Please subscribe below and send your message now.";break;case"gallery":r="Upload More Images";this.modalHeaderText="Please subscribe below to upload more images.";break;case"":i!=""&&(this.modalHeaderText=i);break;default:r=n;i!=""&&(this.modalHeaderText=i)}this.modalButtonText=r;t.page().pageSize.small||(u=window.innerWidth-document.body.offsetWidth,$("body").css("margin-right",u));this.logInRegistrationContainerIsVisible=!1;this.subscriptionContainerIsVisible=!0;this.displayContent=!1},hideSubscriptionContainer:function(){this.subscriptionContainerIsVisible=!1;this.displayContent=!0},showLogInContainer:function(){this.logInContainerIsVisible=!0;this.registrationContainerIsVisible=!1},showRegistrationContainer:function(){this.registrationContainerIsVisible=!0;this.logInContainerIsVisible=!1},showContent:function(){this.displayContent=!0},hideContent:function(){this.displayContent=!1},scrollTo:function(n){i.hash(n);r()}};f=globalJs.fn.routing.getQsParameterByName("returnUri");u=window.location.toString().match(/account\/log-in/i);(f!=null||u)&&(n.layout.logInRegistrationContainerIsVisible=!0,n.layout.subscriptionContainerIsVisible=!1,n.layout.displayContent=!1);e=window.location.toString().match(/subscribe/i);!u&&e&&(n.layout.logInRegistrationContainerIsVisible=!1,n.layout.subscriptionContainerIsVisible=!0,n.layout.displayContent=!0)}])}(),function(){"use strict";angular.module("appMain").controller("mailboxController",["$scope","$http","$timeout","$q","$sce","$filter","validationService","pageService",function(n,t,i,r,u,f,e,o){n.mailbox={control:{initComplete:!1,mailboxMessageListLoading:!1,mailboxMessageLoading:!1,mailboxMessageSending:!1,showComposeView:!1,showComposeViewContext:"compose",showAddFriendView:!0,initialContactMemberIdExists:!1,initialContactMemberViewLoading:!1,showSelectMailboxMessageRecipientsView:!1,focusComposeMessageSubject:!1,focusComposeMessageBody:!1,displayPanel:"left",mailboxTab:"inbox",mailboxMessageNameFilterText:null,mailboxMessageNameFilterTimeoutPromise:null,mailboxMessageListSortOrder:"Date",mailboxMessageListLoadQty:20,messageListScrollTopFlag:!1},memberId:0,memberSubscriptionStatus:"Basic",memberContacts:[],memberContactsFiltered:[],memberContactFilterTextTimeoutPromise:null,memberContactFilterText:null,selectedMemberContact:null,mailboxMessageRecipients:[],mailboxMessageList:[],currentMailboxMessage:null,composeMessage:{subject:null,message:null},init:function(n,t,i){var u=this,e=i==null,f;u.control.initialContactMemberIdExists=i!=null;u.control.initialContactMemberViewLoading=i!=null;u.memberId=n;u.memberSubscriptionStatus=t;f=[u.loadMailboxMessageList(e,!0,null),u.loadMemberContacts()];r.all(f).then(function(){if(i!=null){u.showComposeView("compose",i);u.control.initialContactMemberViewLoading=!1;var n=o.getData();n==null||angular.equals(n,{})||(u.composeMessage.subject=n.title,u.composeMessage.message=n.message);o.clearData()}u.control.initComplete=!0})},addFriendSuccess:function(){var n=this;n.control.showAddFriendView=!1;o.page().displayNotificationBar("Friend added to network","success")},mailboxUserIsFullMember:function(){return this.memberSubscriptionStatus==="Full"},getDisplaySubject:function(){var n="(No subject)";return this.currentMailboxMessage==null||globalJs.fn.string.isUndefinedNullOrWhiteSpace(this.currentMailboxMessage.subject)||(n=this.currentMailboxMessage.subject),n},changeMailboxTab:function(n){this.control.mailboxTab=n;this.loadMailboxMessageList(!0,!0,null)},showComposeView:function(n,i){function o(n){var i=f("titleCase"),t="\r\n\r\nOn ";return t+=n.tdate&&n.tdate!=null?n.tdate.toString():"(unknown date)",t+=" ",t+=n.fullName&&n.fullName!=null?i(n.fullName):"a member",t+" wrote: \r\n\r\n"}var r=this,s,u,e;if(r.control.showAddFriendView=!1,r.showComposeViewContext=n,n=="compose")r.control.displayPanel="right",mailboxJS.showPanelRight(),r.composeMessage.subject=null,r.composeMessage.message=null,r.mailboxMessageRecipients=[],r.currentMailboxMessage=null,r.control.focusComposeMessageSubject=!0,i!=null&&i!=0&&t.get("/api/contacts/get-member-contact",{params:{contactMemberId:i}}).success(function(n){var t=n;r.addMailboxMessageRecipient(t)}).error(function(n){console.error("error",n)});else if(n=="reply"){for(r.markMailboxMessageRead(r.currentMailboxMessage.id),r.composeMessage.subject="Re: "+r.currentMailboxMessage.subject,r.mailboxMessageRecipients=[],e=o(r.currentMailboxMessage),r.composeMessage.message=e+r.currentMailboxMessage.message,r.control.focusComposeMessageBody=!0,s=r.memberId==r.currentMailboxMessage.senderId?r.currentMailboxMessage.receiverId:r.currentMailboxMessage.senderId,u=0;u<r.memberContacts.length;u++)if(r.memberContacts[u].memberId==s){r.addMailboxMessageRecipient(r.memberContacts[u]);break}}else n=="forward"&&(r.markMailboxMessageRead(r.currentMailboxMessage.id),r.composeMessage.subject="Fwd: "+r.currentMailboxMessage.subject,r.mailboxMessageRecipients=[],e=o(r.currentMailboxMessage),r.composeMessage.message=e+r.currentMailboxMessage.message,r.control.focusComposeMessageBody=!0);r.control.showComposeView=!0},markMailboxMessageRead:function(n){var i=this,r,u;if(i.currentMailboxMessage.id==n){for(r=0;r<i.mailboxMessageList.length;r++)if(i.mailboxMessageList[r].id==n){i.mailboxMessageList[r].isRead=!0;break}i.currentMailboxMessage.isRead=!0}u={mailboxMessageId:n};t.post("/api/mailbox/mark-mailbox-message-read",u).success(function(){}).error(function(){console.error("Message marked read failed")})},showMailboxMessageLoading:function(){return!this.control.mailboxMessageListLoading&&!this.control.mailboxMessageLoading&&!this.control.showComposeView&&!this.control.initialContactMemberIdExists&&this.currentMailboxMessage==null},showSelectMailboxMessageRecipientsView:function(){this.control.showSelectMailboxMessageRecipientsView=!0},hideSelectMailboxMessageRecipientsView:function(){this.control.showSelectMailboxMessageRecipientsView=!1},loadMemberContacts:function(){var n=r.defer(),i=this;return t.get("/api/contacts/get-member-contacts").success(function(t){i.memberContacts=t;i.memberContactsFiltered=t;n.resolve()}).error(function(t){n.reject();console.error("error",t)}),n.promise},loadMailboxMessageList:function(n,i){var f=r.defer(),u=this,e;return u.control.showAddFriendView=!1,u.control.mailboxMessageListLoading=!0,e=0,i?u.control.messageListScrollTopFlag=!0:e=u.mailboxMessageList.length,t.get("/api/mailbox/get-mailbox-message-list",{params:{mailbox:u.control.mailboxTab,memberId:u.memberId,mailboxMessageListSortOrder:u.control.mailboxMessageListSortOrder,memberNameFilterText:u.control.mailboxMessageNameFilterText,skip:e,limit:u.control.mailboxMessageListLoadQty}}).success(function(t){var e,r;for(u.currentMailboxMessage=null,i&&(u.mailboxMessageList=[]),e=0;e<t.length;e++)r=t[e],u.control.mailboxTab=="inbox"?r.receiverFlaggedImportant&&(r.flaggedImportant=!0):u.control.mailboxTab=="sent"&&r.senderFlaggedImportant&&(r.flaggedImportant=!0),u.mailboxMessageList.push(r);n&&u.mailboxMessageList.length>0&&u.loadMailboxMessage(u.mailboxMessageList[0].id,!1,!1,null);u.control.mailboxMessageListLoading=!1;u.control.messageListScrollTopFlag=!1;f.resolve()}).error(function(n){u.control.mailboxMessageListLoading=!1;u.control.messageListScrollTopFlag=!1;f.reject();console.error("error",n)}),f.promise},loadMailboxMessage:function(n,i,r){var f=this;f.control.showAddFriendView=!1;f.control.mailboxMessageLoading=!0;f.currentMailboxMessage=null;f.control.showComposeView=!1;t.get("/api/mailbox/get-mailbox-message",{params:{mailboxMessageId:n,markAsRead:i}}).success(function(t){var o,e;if(f.currentMailboxMessage=t,f.control.mailboxMessageLoading=!1,o=new Date(f.currentMailboxMessage.tdate),f.currentMailboxMessage.tdate=new Date(o-o.getTimezoneOffset()*-6e4),f.control.mailboxTab=="inbox"?f.currentMailboxMessage.receiverFlaggedImportant&&f.currentMailboxMessage.receiverId==f.memberId&&(f.currentMailboxMessage.flaggedImportant=!0):f.control.mailboxTab=="sent"&&f.currentMailboxMessage.senderFlaggedImportant&&f.currentMailboxMessage.senderId==f.memberId&&(f.currentMailboxMessage.flaggedImportant=!0),globalJs.fn.string.isUndefinedNullOrWhiteSpace(f.currentMailboxMessage.message)||(f.currentMailboxMessage.messageHtml=u.trustAsHtml(f.currentMailboxMessage.message.replace(/(?:\r\n|\r|\n)/g,"<br />"))),i)for(e=0;e<f.mailboxMessageList.length;e++)f.mailboxMessageList[e].id==n&&(f.mailboxMessageList[e].isRead=!0);r&&(f.control.displayPanel="right",mailboxJS.showPanelRight())}).error(function(n){alert("There was a problem retrieving requested message");console.error("There was a problem retrieving requested message",n)})},toggleMessageFlaggedImportant:function(n,i){for(var u,e,o,r=this,f=0;f<r.mailboxMessageList.length;f++)r.mailboxMessageList[f].id==n&&(u=r.mailboxMessageList[f],e=!u.flaggedImportant,u.flaggedImportant=e,r.currentMailboxMessage!=null&&r.currentMailboxMessage.id==u.id&&(r.currentMailboxMessage.flaggedImportant=e),o={mailboxMessageId:n,flaggedImportant:e},t.post("/api/mailbox/update-message-flagged-important",o).success(function(n){u.flaggedImportant=n.flaggedImportant;r.currentMailboxMessage!=null&&r.currentMailboxMessage.id==u.id&&(r.currentMailboxMessage.flaggedImportant=n.flaggedImportant)}).error(function(n){alert("There was a problem setting importance flag for this message");console.error("There was a problem setting importance flag for this message",n)}));i.stopPropagation()},addMailboxMessageRecipient:function(n){if(n){var t=this,i=!1;angular.forEach(t.mailboxMessageRecipients,function(t){t.memberId==n.memberId&&(i=!0)});i?alert("Recipient was not added as they are already in the recipients list"):t.mailboxMessageRecipients.push(n)}},addMailboxMessageRecipientClick:function(n,t){var i=this;i.selectedMemberContact=n;i.addMailboxMessageRecipient(n,t);i.control.showSelectMailboxMessageRecipientsView=!1},removeMailboxMessageRecipient:function(n){var i=this,t;if(i.mailboxUserIsFullMember())for(t=0;t<i.mailboxMessageRecipients.length;t++)i.mailboxMessageRecipients[t].memberId==n.memberId&&i.mailboxMessageRecipients.splice(t,1)},sendMailboxMessage:function(){var n=this,r,i,u;if(n.control.mailboxMessageSending=!0,r={recipientMemberIds:[],subject:n.composeMessage.subject,message:n.composeMessage.message,senderMemberId:this.memberId},n.mailboxMessageRecipients.length>0)if(n.composeMessage.subject!=null&&n.composeMessage.message!=null){for(i=0;i<n.mailboxMessageRecipients.length;i++)u=n.mailboxMessageRecipients[i].memberId,r.recipientMemberIds.push(u);t.post("/api/mailbox/create-mailbox-message",r).success(function(t){o.page().displayNotificationBar("Your message has been sent","success");n.loadMailboxMessage(t.mailboxMessageId,!1,!1,null);n.control.showComposeView=!1;n.control.mailboxMessageSending=!1;n.control.showAddFriendView=!t.isInFriendNetwork}).error(function(t){n.control.mailboxMessageSending=!1;alert("There was an error sending the message. This is a server error.");console.error("There was an error sending the message. This is a server error.",t)})}else n.control.mailboxMessageSending=!1,o.page().displayNotificationBar("Please add a subject and a message","error");else n.control.mailboxMessageSending=!1,o.page().displayNotificationBar("Please add one or more recipients","error")},deleteMailboxMessage:function(n){var i=this,r={mailbox:i.control.mailboxTab,mailboxMessageId:n};t.post("/api/mailbox/delete-mailbox-message",r).success(function(){for(var t=0;t<i.mailboxMessageList.length;t++)if(i.mailboxMessageList[t].id==n){i.mailboxMessageList.splice(t,1);break}i.loadMailboxMessageList(!0,!1,null);o.page().displayNotificationBar("Message deleted","success")}).error(function(n){alert("There was a problem deleting the mailbox message");console.error("There was a problem deleting the mailbox message",n)})},onMessageListScrollEnd:function(){this.loadMailboxMessageList(!1,!1,null)}};n.$watch("mailbox.control.mailboxMessageListSortOrder",function(){n.mailbox.control.initComplete&&n.mailbox.loadMailboxMessageList(!1,!0,null)});n.$watch("mailbox.control.mailboxMessageNameFilterText",function(t){n.mailbox.control.initComplete&&(globalJs.fn.string.isUndefinedNullOrWhiteSpace(t)&&(t=null),n.mailbox.control.mailboxMessageNameFilterTimeoutPromise!=null&&i.cancel(n.mailbox.control.mailboxMessageNameFilterTimeoutPromise),n.mailbox.control.mailboxMessageNameFilterTimeoutPromise=i(function(){n.mailbox.loadMailboxMessageList(!1,!0,t)},300))});n.$watch("mailbox.memberContactFilterText",function(t){t!=null&&(n.mailbox.memberContactFilterTextTimeoutPromise!=null&&i.cancel(n.mailbox.memberContactFilterTextTimeoutPromise),n.mailbox.memberContactFilterTextTimeoutPromise=i(function(){if(globalJs.fn.string.isUndefinedNullOrWhiteSpace(t))n.mailbox.memberContactsFiltered=n.mailbox.memberContacts;else{var i=[];angular.forEach(n.mailbox.memberContacts,function(n){(n.firstName+" "+n.surname).toLowerCase().indexOf(t.toLowerCase())!=-1&&i.push(n)});n.mailbox.selectedMemberContact=null;n.mailbox.memberContactsFiltered=i}},150))})}])}(),function(){"use strict";angular.module("appMain").controller("memberAccountSettingsController",["$scope","$http","$timeout","$q","validationService","pageService",function(n,t,i,r,u,f){n.memberAccountSettings={member:null,originalEmail:null,savedUsername:null,emailChanged:!1,changeEmailPassword:null,memberAccountSettingsLoadComplete:!1,errorMessage:null,successMessage:null,memberIsGooglePlusConnected:!1,googlePlusConnectedStatusLoaded:!1,updating:!1,hasFullSubscription:!1,expired:!1,validationInfo:{firstName:{invalid:!1,validationMessage:null},surname:{invalid:!1,validationMessage:null},username:{invalid:!1,validationMessage:null},email:{invalid:!1,validationMessage:null}},updateMemberAccountSettingsInfo:function(){var i=[u.validateFirstName(n.memberAccountSettings.member.firstName),u.validateSurname(n.memberAccountSettings.member.surname),u.validateUsername(n.memberAccountSettings.member.username),u.validateEmail(n.memberAccountSettings.member.email)];r.all(i).then(function(i){var o=u.allValid(i),r,e;o&&(r=n.memberAccountSettings,r.errorMessage=null,r.successMessage=null,r.updating=!0,e={firstName:r.member.firstName,surname:r.member.surname,username:r.member.username,email:r.member.email,changeEmailPassword:r.changeEmailPassword},t.post("/api/members/edit-member-account-settings",e).success(function(n){n.success===!0?(r.successMessage=n.successMessage,r.savedUsername=r.member.username,f.page().displayNotificationBar(r.successMessage,"success")):(r.errorMessage=n.errorMessage,f.page().displayNotificationBar(r.errorMessage,"error"),console.error(r.errorMessage));r.updating=!1}).error(function(n){r.updating=!1;f.page().displayNotificationBar("There was a problem updating your account settings","error");console.error("error",n)}))})},updateAutoRenewMembership:function(){var n=this,i={autoRenewMembership:n.member.autoRenewPayment};t.post("/api/members/update-member-auto-renew-membership",i).success(function(){f.page().displayNotificationBar("Your auto renew membership setting has been updated.","success")}).error(function(){alert("There has been a problem updating your auto renew membership setting. Please refresh the page and try again.")})},getMemberIsGooglePlusConnected:function(){var n=this;t.get("/oauth/member-is-google-plus-connected").success(function(t){n.memberIsGooglePlusConnected=t.memberIsGooglePlusConnected;n.googlePlusConnectedStatusLoaded=!0}).error(function(t){console.error("error",t);n.googlePlusConnectedStatusLoaded=!0})},disconnectedGoogleAccount:function(){window.location.replace("/OAuth/GooglePlusDisconnect")}};t.get("/api/members/get-member-account-settings").success(function(t){n.memberAccountSettings.member=t;n.memberAccountSettings.originalEmail=t.email;n.memberAccountSettings.savedUsername=t.username;n.memberAccountSettings.hasFullSubscription=t.hasFullSubscription;var i=new Date,r=new Date(n.memberAccountSettings.member.expDate);r<=i&&(n.memberAccountSettings.expired=!0);n.memberAccountSettings.memberAccountSettingsLoadComplete=!0}).error(function(t){n.memberAccountSettings.memberAccountSettingsLoadComplete=!0;console.error("error",t)});n.memberAccountSettings.getMemberIsGooglePlusConnected();n.$watch("memberAccountSettings.member.email",function(t){n.memberAccountSettings.emailChanged=t!=n.memberAccountSettings.originalEmail});n.$watch("memberAccountSettings.member.firstName",function(t){u.validateFirstName(t).then(function(t){n.memberAccountSettingsInfoForm&&(n.memberAccountSettingsInfoForm.firstName.$pristine||(n.memberAccountSettings.validationInfo.firstName.invalid=t.invalid,n.memberAccountSettings.validationInfo.firstName.validationMessage=t.validationMessage))})});n.$watch("memberAccountSettings.member.surname",function(t){u.validateSurname(t).then(function(t){n.memberAccountSettingsInfoForm&&(n.memberAccountSettingsInfoForm.surname.$pristine||(n.memberAccountSettings.validationInfo.surname.invalid=t.invalid,n.memberAccountSettings.validationInfo.surname.validationMessage=t.validationMessage))})});n.$watch("memberAccountSettings.member.username",function(t){u.validateUsername(t,null).then(function(t){n.memberAccountSettingsInfoForm&&(n.memberAccountSettingsInfoForm.username.$pristine||(n.memberAccountSettings.validationInfo.username.invalid=t.invalid,n.memberAccountSettings.validationInfo.username.validationMessage=t.validationMessage))})});n.$watch("memberAccountSettings.member.email",function(t){u.validateEmail(t).then(function(t){n.memberAccountSettingsInfoForm&&(n.memberAccountSettingsInfoForm.email.$pristine||(n.memberAccountSettings.validationInfo.email.invalid=t.invalid,n.memberAccountSettings.validationInfo.email.validationMessage=t.validationMessage))})})}])}(),function(){"use strict";angular.module("appMain").controller("memberChangePasswordController",["$scope","$http","pageService",function(n,t,i){n.memberChangePassword={oldPassword:null,newPassword:null,newPasswordConfirm:null,errorMessage:null,successMessage:null,updating:!1,validationInfo:{oldPassword:{invalid:!1,validationMessage:null},newPassword:{invalid:!1,validationMessage:null},newPasswordConfirm:{invalid:!1,validationMessage:null}},changeMemberPassword:function(){var n=this,r,u,f;n.validationInfo.oldPassword.invalid=!1;n.validationInfo.newPassword.invalid=!1;n.validationInfo.newPasswordConfirm.invalid=!1;r=globalJs.appConfig.regexPatterns.password;u=r.test(n.newPassword)&&n.newPassword===n.newPasswordConfirm&&n.oldPassword;this.errorMessage=null;this.successMessage=null;u?(n.updating=!0,f={oldPassword:n.oldPassword,newPassword:n.newPassword,newPasswordConfirm:n.newPasswordConfirm},t.post("/api/members/change-member-password",f).success(function(t){t.success===!0?(n.successMessage=t.successMessage,i.page().displayNotificationBar(n.successMessage,"success")):(n.errorMessage=t.errorMessage,i.page().displayNotificationBar(n.errorMessage,"error"));n.updating=!1;n.oldPassword=null;n.newPassword=null;n.newPasswordConfirm=null}).error(function(t){n.updating=!1;console.error("error",t)})):((!n.oldPassword||!n.oldPassword.length>0)&&(n.validationInfo.oldPassword.invalid=!0),r.test(n.newPassword)?n.newPassword===n.newPasswordConfirm||(n.validationInfo.newPasswordConfirm.invalid=!0):n.validationInfo.newPassword.invalid=!0)}}}])}(),function(){"use strict";angular.module("appMain").controller("memberEmailSettingsController",["$scope","$http","pageService",function(n,t,i){n.memberEmailSettings={test:"hello",initLoadComplete:!1,loading:!1,saving:!1,recieveEmails:{newsLetter:!1,specialOffers:!1,otherMarketing:!1,savedFriendsPage:!1,profileView:!1},resetControlVariables:function(){this.loading=!1;this.saving=!1},loadMemberEmailSettings:function(){var n=this;n.resetControlVariables();n.loading=!0;t.get("/api/members/get-member-email-settings").success(function(t){n.initLoadComplete=!0;n.recieveEmails=t;n.resetControlVariables()}).error(function(t){n.resetControlVariables();console.error("error",t)})},saveMemberEmailSettings:function(n,r){var u=this,f,e;u.resetControlVariables();u.loading=!0;f={propertyName:n,propertyValue:r,htmlClasses:$("html").attr("class")};e=f;t.post("/api/members/save-member-email-settings",e).success(function(){u.resetControlVariables();i.page().displayNotificationBar("Your email settings have been saved","success")}).error(function(n){u.resetControlVariables();i.page().displayNotificationBar("There was an error saving your email settings","error");console.error("Error saving member email settings",n)})}};n.memberEmailSettings.loadMemberEmailSettings()}])}(),function(){"use strict";angular.module("appMain").controller("memberLogInController",["$scope","$http","$location","$q","validationService",function(n,t){n.memberLogIn={init:function(n){window.location.hash!==""&&window.location.hash!==null&&(n+=window.location.hash);this.returnUri=n},emailUserName:null,password:null,rememberMe:!0,returnUri:null,errorMessages:[],loading:!1,validationInfo:{emailUserName:{invalid:!1,validationMessage:null},password:{invalid:!1,validationMessage:null}},submitForm:function(){var n=this,i;n.errorMessages=[];n.emailUserName&&n.password?(i={EmailUserName:n.emailUserName,Password:n.password,RememberMe:n.rememberMe,ReturnUri:n.returnUri},n.loading=!0,t.post("/account/do-log-in",i).success(function(t){t.success===!0?window.location!==t.returnUri&&t.returnUri&&0!==t.returnUri.length?window.location=t.returnUri:window.location.reload():(n.errorMessages=t.errorMessages,n.loading=!1)}).error(function(t){n.loading=!1;console.error(t)})):n.emailUserName||n.password?(n.emailUserName||n.errorMessages.push("Please enter your email / username"),n.password||n.errorMessages.push("Please enter your password")):n.errorMessages.push("Please enter your email / username and password")}}}])}(),function(){"use strict";angular.module("appMain").controller("memberLookingForMeController",["$scope","$http",function(n,t){n.memberLooking={control:{initComplete:!1,loading:!1},memberId:0,profiles:[],init:function(n){var i=this;i.control.loading=!0;i.memberId=n;t.get("/api/search/looking-for-me",{params:{memberId:i.memberId}}).success(function(n){i.profiles=n;i.control.loading=!1;i.control.initComplete=!0}).error(function(n){console.error(n.errorMessage);i.control.loading=!1;i.control.initComplete=!0})}}}])}(),function(){"use strict";angular.module("appMain").controller("memberProfileController",["$scope","$http","pageService","$filter",function(n,t,i,r){n.init=function(u){n.servedWithMembersDataLoading=!0;n.servedWithMembersDataLoaded=!1;n.memberProfileDataLoading=!0;n.memberProfile={memberId:0,memberProfileData:{member:null,membersToUnits:null,remembranceMains:null,galleries:null,galleryEntriesFiles:[],arranges:null,servedWithMembers:null,campaigns:null,friendMembers:null}};n.memberProfile.memberId=u;t.get("/api/members/get-public-member-info?memberId="+u).success(function(t){var e,o,f;for(n.memberProfile.memberProfileData.member=t.member,n.memberProfile.memberProfileData.membersToUnits=t.membersToUnits,n.memberProfile.memberProfileData.remembranceMains=t.remembranceMains,n.memberProfile.memberProfileData.galleries=t.galleries,n.memberProfile.memberProfileData.arranges=t.arranges,n.memberProfile.memberProfileData.campaigns=t.campaigns,n.memberProfile.memberProfileData.friendMembers=t.friendMembers,e=0;e<t.galleries.length;e++)o={filePath:"/fr-member-assets/gallery-photos/"+u+"/"+t.galleries[e].fileName,description:t.galleries[e].description},n.memberProfile.memberProfileData.galleryEntriesFiles.push(o);globalJs.fn.angularJs.safeApply(n,function(){i.setPageTitle(r("titleCase")(n.memberProfile.memberProfileData.member.firstName)+" "+r("titleCase")(n.memberProfile.memberProfileData.member.surname))});f=0;n.memberProfile.memberProfileData.member.surname.length>0&&(f+=10);n.memberProfile.memberProfileData.member.serviceNumber.length>0&&(f+=10);n.memberProfile.memberProfileData.member.profilePhoto.length>0&&(f+=10);n.memberProfile.memberProfileData.member.yearSignedUp.length>0&&(f+=10);n.memberProfile.memberProfileData.member.yearLeft.length>0&&(f+=10);n.memberProfile.memberProfileData.member.serviceId>0&&(f+=10);n.memberProfile.memberProfileData.member.rank!=null&&(f+=10);n.memberProfile.memberProfileData.membersToUnits.length>0&&(f+=10);n.memberProfile.memberProfileData.member.whereAreYouNow!=null&&(f+=10);n.memberProfile.memberProfileData.member.squadPhoto!=null&&(f+=10);n.memberProfile.percentComplete=f;n.memberProfileDataLoading=!1}).error(function(t){console.error("error fetching public member info",t);n.memberProfileDataLoading=!1})};n.$watch("tabs.activeTab",function(i){if(!n.servedWithMembersDataLoaded&&(i==="3"||i===3)){var r={memberId:n.memberProfile.memberId,skip:0,limit:10};t.get("/api/members/get-served-with-members-for-member",{params:r}).success(function(t){n.memberProfile.memberProfileData.servedWithMembers=t.servedWithMembers;n.servedWithMembersDataLoading=!1;n.servedWithMembersDataLoaded=!0}).error(function(t){console.error("error fetching served with member info",t);n.servedWithMembersDataLoading=!1})}})}])}(),function(){"use strict";angular.module("appMain").controller("memberProfileSettingsController",["$scope","$http","$timeout","$q","validationService","pageService",function(n,t,i,r,u,f){window.editMemberProfilePhotoCallback=function(n,t,i,r){var f=document.querySelector('[ng-controller="memberProfileSettingsController"]'),u=angular.element(f).scope();u.memberProfileSettings.editProfilePhoto(n,t,i,r);u.memberProfileSettings.control.showProfilePhotoUploadModal=!1};window.editMemberNewPhotoCallback=function(n,t,i,r){var f=document.querySelector('[ng-controller="memberProfileSettingsController"]'),u=angular.element(f).scope();u.memberProfileSettings.editNewPhoto(n,t,i,r);u.memberProfileSettings.control.showNewPhotoUploadModal=!1};window.editMemberOldPhotoCallback=function(n,t,i,r){var f=document.querySelector('[ng-controller="memberProfileSettingsController"]'),u=angular.element(f).scope();u.memberProfileSettings.editOldPhoto(n,t,i,r);u.memberProfileSettings.control.showOldPhotoUploadModal=!1};window.editMemberSquadPhotoCallback=function(n,t,i,r){var f=document.querySelector('[ng-controller="memberProfileSettingsController"]'),u=angular.element(f).scope();u.memberProfileSettings.editSquadPhoto(n,t,i,r);u.memberProfileSettings.control.showSquadPhotoUploadModal=!1};n.memberProfileSettings={member:null,memberProfileSettingsLoadComplete:!1,control:{memberProfileSettingsLoadComplete:!1,errorMessage:null,successMessage:null,showProfilePhotoUploadModal:!1,showNewPhotoUploadModal:!1,showOldPhotoUploadModal:!1,showSquadPhotoUploadModal:!1,updating:!1,serviceYearsOptions:[],servicesOptions:[]},validationInfo:{serviceNumber:{invalid:!1,validationMessage:null},nickname:{invalid:!1,validationMessage:null},rank:{invalid:!1,validationMessage:null},serviceHistory:{invalid:!1,validationMessage:null},forumTag:{invalid:!1,validationMessage:null},whereAreYouNow:{invalid:!1,validationMessage:null},servicePeriod:{invalid:!1,validationMessage:null}},updateServiceHistoryAndCurrentSection:function(){t.get("/api/members/get-member-profile-settings").success(function(n){$("#spanServiceNumber").html(n.serviceNumber);$("#spanYearSignedUp").html(n.yearSignedUp);n.yearLeft!==null||n.yearLeft!==""?$("#spanYearLeft").html(" - "+n.yearLeft):$("#spanYearLeft").html("");$("#spanRank").html(n.rank);$("#spanNickname").html(n.nickname);$("#spanWhereAreYouNow").html(n.whereAreYouNow)}).error(function(n){f.page().displayNotificationBar("There was a problem refreshing your service history","error");memberProfileSettings.updating=!1;console.error("Error refreshing service history",n)})},updatePhotosSection:function(){var n=$("#divPhotos").data("url");t.get(n).success(function(n){$("#divPhotos").html(n)}).error(function(n){f.page().displayNotificationBar("There was a problem refreshing your photos","error");memberProfileSettings.updating=!1;console.error("Error refreshing photos",n)})},updateMemberProfileSettings:function(i,e,o){var s=[u.validateServiceNumber(n.memberProfileSettings.member.serviceNumber),u.validateForumTag(n.memberProfileSettings.member.forumTag),u.validateNoEmailAddressInText(n.memberProfileSettings.member.serviceHistory,null),u.validateNoEmailAddressInText(n.memberProfileSettings.member.whereAreYouNow,null),u.validateServicePeriod(n.memberProfileSettings.member.yearSignedUp,n.memberProfileSettings.member.yearLeft)];r.all(s).then(function(r){var c=u.allValid(r),s,h;c&&(s=n.memberProfileSettings,s.errorMessage=null,s.successMessage=null,s.updating=!0,h={serviceNumber:s.member.serviceNumber,nickname:s.member.nickname,forumTag:s.member.forumTag,serviceId:s.member.serviceId,corps:s.member.corps,rank:s.member.rank,yearSignedUp:s.member.yearSignedUp,yearLeft:s.member.yearLeft,currentlyServing:s.member.currentlyServing,serviceHistory:s.member.serviceHistory,whereAreYouNow:s.member.whereAreYouNow},t.post("/api/members/edit-member-profile-settings",h).success(function(t){if(i){var r="/subscribe";o?r="/":e&&e.length>1&&(r=r+"?returnUrl="+e);window.location.href=r}else s.member=t,f.page().displayNotificationBar("Your profile settings have been saved","success"),s.updating=!1,n.memberProfileSettings.updateServiceHistoryAndCurrentSection()}).error(function(n){f.page().displayNotificationBar("There was a problem updating your profile settings","error");s.updating=!1;console.error("Error saving member profile settings",n)}))})},editProfilePhoto:function(n,i,r,u){var e=this,o={s3Url:u.tempLink,memberPhotoType:"ProfilePhoto"};t.post("/api/members/edit-member-photo",o).success(function(n){e.member.profilePhoto=n.fileName;f.page().displayNotificationBar("Your profile photo has been updated","success")}).error(function(n){f.page().displayNotificationBar("There was an error updating your profile photo","error");console.error("Error in memberProfileSettings.editProfilePhoto",n)})},editNewPhoto:function(i,r,u,e){var o=this,s={s3Url:e.tempLink,memberPhotoType:"NewPhoto"};t.post("/api/members/edit-member-photo",s).success(function(t){o.member.newPhoto=t.fileName;f.page().displayNotificationBar("Your recent photo has been updated","success");n.memberProfileSettings.updatePhotosSection()}).error(function(n){f.page().displayNotificationBar("There was an error updating your recent photo","error");console.error("Error in memberProfileSettings.editNewPhoto",n)})},editOldPhoto:function(i,r,u,e){var o=this,s={s3Url:e.tempLink,memberPhotoType:"OldPhoto"};t.post("/api/members/edit-member-photo",s).success(function(t){o.member.oldPhoto=t.fileName;f.page().displayNotificationBar("Your old photo has been updated","success");n.memberProfileSettings.updatePhotosSection()}).error(function(n){f.page().displayNotificationBar("There was an error updating your old photo","error");console.error("Error in memberProfileSettings.editOldPhoto",n)})},editSquadPhoto:function(i,r,u,e){var o=this,s={s3Url:e.tempLink,memberPhotoType:"SquadPhoto"};t.post("/api/members/edit-member-photo",s).success(function(t){o.member.squadPhoto=t.fileName;f.page().displayNotificationBar("Your squad photo has been updated","success");n.memberProfileSettings.updatePhotosSection()}).error(function(n){f.page().displayNotificationBar("There was an error updating your squad photo","error");console.error("Error in memberProfileSettings.editSquadPhoto",n)})},deletePhoto:function(i){var o=window.confirm("Are you sure you wish to delete this photo?"),u,r,e;if(o){u=this;r="";switch(i){case"profile":r="ProfilePhoto";break;case"new":r="NewPhoto";break;case"old":r="OldPhoto";break;case"squad":r="SquadPhoto"}e={memberPhotoType:r};t.post("/api/members/delete-member-photo",e).success(function(){switch(i){case"profile":u.member.profilePhoto=null;break;case"new":u.member.newPhoto=null;break;case"old":u.member.oldPhoto=null;break;case"squad":u.member.squadPhoto=null}f.page().displayNotificationBar("Your "+i+" photo has been removed","success");n.memberProfileSettings.updatePhotosSection()}).error(function(n){f.page().displayNotificationBar("There was an error updating your "+i+" photo","error");console.error("Error in memberProfileSettings.deletePhoto",n)})}}};n.memberProfileSettings.control.serviceYearsOptions=globalJs.appOptions.getServiceYears();n.memberProfileSettings.control.servicesOptions=globalJs.appOptions.servicesOptions;n.memberProfileSettings.control.corpsOptions=globalJs.appOptions.corpsOptions;t.get("/api/members/get-member-profile-settings").success(function(t){n.memberProfileSettings.member=t;n.memberProfileSettings.control.memberProfileSettingsLoadComplete=!0}).error(function(t){n.memberProfileSettings.memberProfileSettingsLoadComplete=!0;console.error("error",t)});n.$watch("memberProfileSettings.member.service",function(t){n.memberProfileSettings.member!=null&&t!="Army"&&(n.memberProfileSettings.member.corps=null)});n.$watch("memberProfileSettings.member.serviceNumber",function(t){u.validateServiceNumber(t).then(function(t){n.memberProfileSettingsForm&&(n.memberProfileSettingsForm.serviceNumber.$pristine||(n.memberProfileSettings.validationInfo.serviceNumber.invalid=t.invalid,n.memberProfileSettings.validationInfo.serviceNumber.validationMessage=t.validationMessage))})});n.$watch("memberProfileSettings.member.forumTag",function(t){u.validateForumTag(t).then(function(t){n.memberProfileSettingsForm&&(n.memberProfileSettingsForm.forumTag.$pristine||(n.memberProfileSettings.validationInfo.forumTag.invalid=t.invalid,n.memberProfileSettings.validationInfo.forumTag.validationMessage=t.validationMessage))})});n.$watch("memberProfileSettings.member.serviceHistory",function(t){u.validateNoEmailAddressInText(t,"Service history cannot contain an email address").then(function(t){n.memberProfileSettingsForm&&(n.memberProfileSettingsForm.serviceHistory.$pristine||(n.memberProfileSettings.validationInfo.serviceHistory.invalid=t.invalid,n.memberProfileSettings.validationInfo.serviceHistory.validationMessage=t.validationMessage))})});n.$watch("memberProfileSettings.member.whereAreYouNow",function(t){u.validateNoEmailAddressInText(t,"'Where are you now' cannot contain an email address").then(function(t){n.memberProfileSettingsForm&&(n.memberProfileSettingsForm.whereAreYouNow.$pristine||(n.memberProfileSettings.validationInfo.whereAreYouNow.invalid=t.invalid,n.memberProfileSettings.validationInfo.whereAreYouNow.validationMessage=t.validationMessage))})});n.$watch("memberProfileSettings.member.yearSignedUp",function(t){if(n.memberProfileSettingsForm){var i=null;n.memberProfileSettings.member&&(i=n.memberProfileSettings.member.yearLeft);u.validateServicePeriod(t,i).then(function(t){n.memberProfileSettings.validationInfo.servicePeriod.invalid=t.invalid;n.memberProfileSettings.validationInfo.servicePeriod.validationMessage=t.validationMessage})}});n.$watch("memberProfileSettings.member.yearLeft",function(t){if(n.memberProfileSettingsForm){var i=null;n.memberProfileSettings.member&&(i=n.memberProfileSettings.member.yearSignedUp);u.validateServicePeriod(i,t).then(function(t){n.memberProfileSettings.validationInfo.servicePeriod.invalid=t.invalid;n.memberProfileSettings.validationInfo.servicePeriod.validationMessage=t.validationMessage})}})}])}(),function(){"use strict";angular.module("appMain").controller("memberRegistrationController",["$scope","$http","$q","validationService",function(n,t,i,r){n.memberRegistration={firstName:null,surname:null,email:null,password:null,returnUri:null,errorMessages:null,loading:!1,submitAttempts:0,validationInfo:{firstName:{invalid:!1,validationMessage:null},surname:{invalid:!1,validationMessage:null},email:{invalid:!1,validationMessage:null},password:{invalid:!1,validationMessage:null}},submitForm:function(){var n=this,u;n.submitAttempts++;n.errorMessages=null;u=[r.validateFirstName(n.firstName),r.validateSurname(n.surname),r.validateEmail(n.email),r.validatePassword(n.password)];i.all(u).then(function(i){var f=r.allValid(i),u;f&&(u={FirstName:n.firstName,Surname:n.surname,Email:n.email,Password:n.password,ReturnUri:n.returnUri,HtmlClasses:$("html").attr("class"),SubmissionType:$("#login-registration-container").data("submission")},n.loading=!0,t.post("/account/do-register",u).success(function(t){t.success===!0?window.location!==t.returnUri&&t.returnUri&&0!==t.returnUri.length?window.location=t.returnUri:window.location.reload():n.errorMessages=t.errorMessages;n.loading=!1}).error(function(n){console.error(n)}))})}};n.$watch("memberRegistration.firstName + memberRegistration.submitAttempts",function(){r.validateFirstName(n.memberRegistration.firstName).then(function(t){n.memberRegistrationForm&&n.memberRegistration.submitAttempts>0&&(n.memberRegistration.validationInfo.firstName.invalid=t.invalid,n.memberRegistration.validationInfo.firstName.validationMessage=t.validationMessage)})});n.$watch("memberRegistration.surname + memberRegistration.submitAttempts",function(){r.validateSurname(n.memberRegistration.surname).then(function(t){n.memberRegistrationForm&&n.memberRegistration.submitAttempts>0&&(n.memberRegistration.validationInfo.surname.invalid=t.invalid,n.memberRegistration.validationInfo.surname.validationMessage=t.validationMessage)})});n.$watch("memberRegistration.email + memberRegistration.submitAttempts",function(){r.validateEmail(n.memberRegistration.email).then(function(t){n.memberRegistrationForm&&n.memberRegistration.submitAttempts>0&&(n.memberRegistration.validationInfo.email.invalid=t.invalid,n.memberRegistration.validationInfo.email.validationMessage=t.validationMessage)})});n.$watch("memberRegistration.password + memberRegistration.submitAttempts",function(){r.validatePassword(n.memberRegistration.password).then(function(t){n.memberRegistrationForm&&n.memberRegistration.submitAttempts>0&&(n.memberRegistration.validationInfo.password.invalid=t.invalid,n.memberRegistration.validationInfo.password.validationMessage=t.validationMessage)})})}])}(),function(){"use strict";angular.module("appMain").controller("memberSearchController",["$scope","$http","$location","$q","validationService","pageService",function(n,t,i,r,u,f){n.memberSearch={control:{initComplete:!1,loading:!1,submitted:!1,showAdvanced:!1,searchLoading:!1},memberId:null,serviceOptions:[],pagination:{all:{currentPage:0,totalPages:0},army:{currentPage:0,totalPages:0},navy:{currentPage:0,totalPages:0},raf:{currentPage:0,totalPages:0},marines:{currentPage:0,totalPages:0},ta:{currentPage:0,totalPages:0},other:{currentPage:0,totalPages:0}},validationInfo:{anyinput:{invalid:!1,validationMessage:null},firstname:{invalid:!1,validationMessage:null},surname:{invalid:!1,validationMessage:null},nickname:{invalid:!1,validationMessage:null},serviceNumber:{invalid:!1,validationMessage:null}},memberFriends:null,yearOptions:[],isAdvancedSearch:!1,pageSize:40,searchInputs:{firstname:"",surname:"",nickname:"",servicenumber:"",service:null,unitServiceId:null,unitName:"",unitId:null,photoOnly:!1,yearFrom:"",yearTo:""},searchDetails:{firstname:null,surname:null,nickname:null,serviceNumber:null,photoOnly:!1,yearFrom:null,yearTo:null,service:null,serviceTab:null,unitName:null,unitId:null,includeNull:!1,getTotals:!1,pageSize:40,pageSkip:0,searchType:1},summary:{totalCount:0,emptyCount:0,armyCount:0,civilianCount:0,forcesFamiliesCount:0,marineCount:0,merchantNavyCount:0,modCount:0,navyCount:0,rafCount:0,taCount:0,otherCount:0,allMembers:null,armyMembers:null,civilianMembers:null,marineMembers:null,navyMembers:null,rafMembers:null,taMembers:null,otherMembers:null},setOtherCount:function(){this.summary.otherCount=this.summary.civilianCount+this.summary.forcesFamiliesCount+this.summary.merchantNavyCount+this.summary.modCount+this.summary.emptyCount},setInitialPagination:function(){var n=this;n.pagination.all.contentLoaded=!1;n.pagination.all.currentPage=1;n.pagination.all.totalPages=Math.ceil(this.summary.totalCount/n.pageSize);n.pagination.army.contentLoaded=!1;n.pagination.army.currentPage=1;n.pagination.army.totalPages=Math.ceil(this.summary.armyCount/n.pageSize);n.pagination.navy.contentLoaded=!1;n.pagination.navy.currentPage=1;n.pagination.navy.totalPages=Math.ceil(this.summary.navyCount/n.pageSize);n.pagination.raf.contentLoaded=!1;n.pagination.raf.currentPage=1;n.pagination.raf.totalPages=Math.ceil(this.summary.rafCount/n.pageSize);n.pagination.marines.contentLoaded=!1;n.pagination.marines.currentPage=1;n.pagination.marines.totalPages=Math.ceil(this.summary.marineCount/n.pageSize);n.pagination.ta.contentLoaded=!1;n.pagination.ta.currentPage=1;n.pagination.ta.totalPages=Math.ceil(this.summary.taCount/n.pageSize);n.pagination.other.contentLoaded=!1;n.pagination.other.currentPage=1;n.pagination.other.totalPages=Math.ceil(this.summary.otherCount/n.pageSize)},init:function(n,r,u,f){var e=this,o,s;e.control.loading=!0;o=i.search();s=!1;e.memberId=n;e.searchInputs.yearFrom=r;e.searchInputs.yearTo=u;e.searchInputs.service=f;o.hasOwnProperty("firstname")&&(s=!0,e.searchInputs.firstname=o.firstname);o.hasOwnProperty("surname")&&(s=!0,e.searchInputs.surname=o.surname);o.hasOwnProperty("nickname")&&(s=!0,e.isAdvancedSearch=!0,e.searchInputs.nickname=o.nickname);o.hasOwnProperty("serviceNumber")&&(s=!0,e.isAdvancedSearch=!0,e.searchInputs.servicenumber=o.serviceNumber);o.hasOwnProperty("service")&&(s=!0,e.isAdvancedSearch=!0,e.searchInputs.service=parseInt(o.service));o.hasOwnProperty("unitName")&&(s=!0,e.isAdvancedSearch=!0,e.searchInputs.unitName=o.unitName);o.hasOwnProperty("unitId")&&(s=!0,e.isAdvancedSearch=!0,e.searchInputs.unitId=parseInt(o.unitId));o.hasOwnProperty("yearFrom")&&(s=!0,e.searchInputs.yearFrom=o.yearFrom);o.hasOwnProperty("yearTo")&&(s=!0,e.searchInputs.yearTo=o.yearTo);o.hasOwnProperty("serviceTab")&&(s=!0,e.searchDetails.serviceTab=o.serviceTab);o.hasOwnProperty("pageSkip")&&(s=!0,e.searchDetails.pageSkip=o.pageSkip,e.searchDetails.pageSkip<=0&&(e.searchDetails.pageSkip=0));n>0&&t.get("/api/friends/get-friends-list").success(function(n){e.memberFriends=n.friendMemberList}).error(function(){});e.control.initComplete=!0;e.control.loading=!1;s&&e.search(!1)},redirectToMemberProfile:function(n,t){window.location="/m/"+n;t.stopPropagation()},isFriend:function(n){var i=this,t=!1;return angular.forEach(i.memberFriends,function(i){i.id===n&&(t=!0)}),t},addToFriendsNetwork:function(n){var i={friendMemberIds:[n],friendNetworkId:null};t.post("/api/friends/add-member-to-friends",i).success(function(){f.page().displayNotificationBar("Friend added to network","success")}).error(function(){f.page().displayNotificationBar("There was a problem adding a friends to the network","error")})},selectTab:function(n,r){var u=this,f;switch(r){case null:f=!u.pagination.all.contentLoaded||u.pagination.all.currentPage!=n;break;case 1:f=!u.pagination.army.contentLoaded||u.pagination.army.currentPage!=n;break;case 2:f=!u.pagination.raf.contentLoaded||u.pagination.raf.currentPage!=n;break;case 3:f=!u.pagination.navy.contentLoaded||u.pagination.navy.currentPage!=n;break;case 4:f=!u.pagination.marines.contentLoaded||u.pagination.marines.currentPage!=n;break;case 5:f=!u.pagination.ta.contentLoaded||u.pagination.ta.currentPage!=n;break;default:f=!u.pagination.other.contentLoaded||u.pagination.other.currentPage!=n}f&&(u.control.searchLoading=!0,u.searchDetails.pageSkip=n*u.pageSize-u.pageSize,u.searchDetails.serviceTab=r,i.search("pageSkip",u.searchDetails.pageSkip),i.search("serviceTab",u.searchDetails.serviceTab),u.searchDetails.includeNull=r>5,u.searchDetails.getTotals=!1,f=!1,t.post("/api/search/members-and-units-search",u.searchDetails).success(function(n){switch(r){case null:u.summary.allMembers=n.allMembers;u.pagination.all.contentLoaded=!0;u.pagination.all.currentPage=Math.ceil(u.searchDetails.pageSkip/u.pageSize)+1;break;case 1:u.summary.armyMembers=n.allMembers;u.pagination.army.contentLoaded=!0;u.pagination.army.currentPage=Math.ceil(u.searchDetails.pageSkip/u.pageSize)+1;break;case 2:u.summary.rafMembers=n.allMembers;u.pagination.raf.contentLoaded=!0;u.pagination.raf.currentPage=Math.ceil(u.searchDetails.pageSkip/u.pageSize)+1;break;case 3:u.summary.navyMembers=n.allMembers;u.pagination.navy.contentLoaded=!0;u.pagination.navy.currentPage=Math.ceil(u.searchDetails.pageSkip/u.pageSize)+1;break;case 4:u.summary.marineMembers=n.allMembers;u.pagination.marines.contentLoaded=!0;u.pagination.marines.currentPage=Math.ceil(u.searchDetails.pageSkip/u.pageSize)+1;break;case 5:u.summary.taMembers=n.allMembers;u.pagination.ta.contentLoaded=!0;u.pagination.ta.currentPage=Math.ceil(u.searchDetails.pageSkip/u.pageSize)+1;break;default:u.summary.otherMembers=n.allMembers;u.pagination.other.contentLoaded=!0;u.pagination.other.currentPage=Math.ceil(u.searchDetails.pageSkip/u.pageSize)+1}u.control.searchLoading=!1}).error(function(){u.control.searchLoading=!1}))},search:function(n){var f=this,e;f.control.loading=!0;f.control.submitted=!0;e=f.isAdvancedSearch?[u.validateStringLength(f.searchInputs.firstname,1,250),u.validateStringLength(f.searchInputs.surname,1,250),u.validateStringLength(f.searchInputs.nickname,1,250),u.validateStringLength(f.searchInputs.servicenumber,1,250),u.validateIsNull(f.searchInputs.unitName),u.validateIsNull(f.searchInputs.service),u.validateStringLength(f.searchInputs.yearFrom,3,5),u.validateStringLength(f.searchInputs.yearTo,3,5)]:[u.validateStringLength(f.searchInputs.firstname,1,250),u.validateStringLength(f.searchInputs.surname,1,250),u.validateStringLength(f.searchInputs.yearFrom,3,5),u.validateStringLength(f.searchInputs.yearTo,3,5)];r.all(e).then(function(o){var s=u.anyValid(o);s?(f.validationInfo.anyinput.invalid=!1,e=[u.validateNameIgnoreEmpty(f.searchInputs.firstname,!0),u.validateNameIgnoreEmpty(f.searchInputs.surname,!0),u.validateNameIgnoreEmpty(f.searchInputs.nickname,!0),u.validateNameIgnoreEmpty(f.searchInputs.servicenumber,!0)],r.all(e).then(function(r){var e=u.allValid(r);e?(f.validationInfo.firstname.invalid=!1,f.validationInfo.surname.invalid=!1,f.validationInfo.nickname.invalid=!1,f.validationInfo.serviceNumber.invalid=!1,n&&(i.search("activeTab",1),f.searchDetails.serviceTab=null,f.searchDetails.pageSkip=0),f.control.searchCompleted=!0,f.searchDetails.firstname=f.searchInputs.firstname,i.search("firstname",f.searchDetails.firstname),f.searchDetails.surname=f.searchInputs.surname,i.search("surname",f.searchDetails.surname),f.searchDetails.yearFrom=f.searchInputs.yearFrom,i.search("yearFrom",f.searchDetails.yearFrom),f.searchDetails.yearTo=f.searchInputs.yearTo,i.search("yearTo",f.searchDetails.yearTo),f.isAdvancedSearch&&(f.searchDetails.nickname=f.searchInputs.nickname,i.search("nickname",f.searchDetails.nickname),f.searchDetails.serviceNumber=f.searchInputs.servicenumber,i.search("serviceNumber",f.searchDetails.serviceNumber),f.searchDetails.photoOnly=f.searchInputs.photoOnly,i.search("photoOnly",f.searchDetails.photoOnly),f.searchDetails.unitName=f.searchInputs.unitName,i.search("unitName",f.searchDetails.unitName),f.searchDetails.unitId=f.searchInputs.unitId,i.search("unitId",f.searchDetails.unitId),f.searchDetails.service=f.searchInputs.service,i.search("service",f.searchDetails.service)),f.searchDetails.getTotals=!0,f.searchDetails.includeNull=f.searchDetails.service>5,t.post("/api/search/members-and-units-search",f.searchDetails).success(function(n){f.summary=n;f.setOtherCount();f.setInitialPagination();f.searchDetails.searchType=n.searchType;var t=1;f.searchDetails.pageSkip>0&&(t=f.searchDetails.pageSkip/f.searchDetails.pageSize+1);switch(f.searchDetails.serviceTab){case"1":f.summary.armyMembers=n.allMembers;f.pagination.army.currentPage=t;break;case"2":f.summary.rafMembers=n.allMembers;f.pagination.raf.currentPage=t;break;case"3":f.summary.navyMembers=n.allMembers;f.pagination.navy.currentPage=t;break;case"4":f.summary.marineMembers=n.allMembers;f.pagination.marines.currentPage=t;break;case"5":f.summary.taMembers=n.allMembers;f.pagination.ta.currentPage=t;break;default:f.summary.otherMembers=n.allMembers;f.pagination.other.currentPage=t}f.control.loading=!1;f.control.showAdvanced=!1}).error(function(){f.control.loading=!1})):(f.validationInfo.firstname=r[0],f.validationInfo.surname=r[1],f.validationInfo.nickname=r[2],f.validationInfo.serviceNumber=r[3],f.control.loading=!1)})):(f.validationInfo.anyinput.invalid=!0,f.validationInfo.anyinput.validationMessage="Please enter a value in at least one input",f.control.loading=!1)})}};n.memberSearch.serviceOptions=globalJs.appOptions.servicesOptions;n.memberSearch.yearOptions=globalJs.appOptions.getServiceYears()}])}(),function(){"use strict";angular.module("appMain").controller("memberSearchPartialController",["$scope","$http","$location","$q","validationService",function(n,t,i,r,u){n.memberSearchPartial={control:{initComplete:!1,loading:!1},validationInfo:{surname:{invalid:!1,validationMessage:null}},searchDetails:{firstname:"",surname:""},search:function(){var n=this,t;n.control.loading=!0;n.control.submitted=!0;t=[u.validateShortString(n.searchDetails.surname,"Who would you like to search for?")];r.all(t).then(function(t){var i=u.allValid(t);i?window.location="/search#?firstname="+n.searchDetails.firstname+"&surname="+n.searchDetails.surname:(n.validationInfo.surname=t[0],n.control.loading=!1)})}}}])}(),function(){"use strict";angular.module("appMain").controller("membersServedWithController",["$scope","$http",function(n){n.init=function(t){n.membersServedWith={memberId:0,control:{membersServedWithLoading:!1},membersServedWithData:{servedWithMembers:null}};n.membersServedWith.memberId=t;n.membersServedWith.control.membersServedWithLoading=!0}}])}(),function(){"use strict";angular.module("appMain").controller("memberPaymentController",["$scope","$q","$http","$window","validationService","paymentRecordService","pageService",function(n,t,i,r,u,f,e){n.memberPayment={paymentInfo:{cardholderName:"",cardNumber:null,expiryMonth:null,expiryYear:null,securityCode:null,subscriptionPeriod:"365",paymentType:"CC",frTransactionType:"MembershipSubscription",usingExistingDetails:!1,lastSubmitAttemptInvalid:!1,discountCode:"",discountDate:"",redirectUri:""},control:{loading:null,message:null,expiryMonthOptions:[],expiryYearOptions:[],showAuthentication:!1,frameHeight:0,membershipPrices:[],normalPrices:[],membershipTotal:"",isSubmitted:!1,showCardFields:!0,expiryDate12Months:null,discountApplied:!1},validationInfo:{cardholderName:{invalid:!1,validationMessage:null},cardNumber:{invalid:!1,validationMessage:null},expiryMonth:{invalid:!1,validationMessage:null},expiryYear:{invalid:!1,validationMessage:null},securityCode:{invalid:!1,validationMessage:null},subscriptionPeriod:{invalid:!1,validationMessage:null},discountCode:{invalid:!1,validationMessage:"Please enter a valid discount code"}},errorMessages:null,returnUri:null,init:function(n,t,r){var f=new Date,u=this;u.control.expiryDate12Months=f.setFullYear(f.getFullYear()+1);u.paymentInfo.discountCode=n;u.paymentInfo.discountDate=t;r&&i.get("/api/membersubscription/get-prices",{params:{discountCode:n,discountDate:t}}).success(function(n){n.prices[0]!=null?(u.control.discountApplied=n.discountApplied,u.control.membershipPrices=n.prices,u.control.normalPrices=n.normalPrices,u.control.membershipTotal=n.prices[0]):(e.page().displayNotificationBar("Unable to load subscription prices. Please try again later","error"),console.error("error",n))}).error(function(n){console.error("error",n)})},showError:function(){var n=this;n.control.showAuthentication=!1;n.control.frameHeight=0;n.errorMessages=["Payment failed - Unauthorised."]},applyDiscount:function(){var t=this,r=t.paymentInfo.discountCode,u=!1;r!=""&&i.get("/api/membersubscription/get-prices",{params:{discountCode:r,discountDate:""}}).success(function(i){if(i.prices[0]!=null){if(i.discountApplied){t.control.discountApplied=!0;t.control.membershipPrices=i.prices;t.control.normalPrices=i.normalPrices;switch(t.paymentInfo.subscriptionPeriod){case"365":t.control.membershipTotal=n.memberPayment.control.membershipPrices[0];break;case"30":t.control.membershipTotal=n.memberPayment.control.membershipPrices[1]}u=!0}}else e.page().displayNotificationBar("Unable to load subscription prices. Please try again later","error"),console.error("error",i)}).error(function(n){console.error("error",n)});t.validationInfo.discountCode.invalid=!u},submitForm:function(){var n=this,t,e,o;n.errorMessages=null;n.control.isSubmitted=!0;n.control.loading=!0;n.paymentInfo.lastSubmitAttemptInvalid=!1;t={referer:"/Subscribe",page:"Upgrade"};i.post("/api/membersubscription/update-tried-upgrade",t);e=n.paymentInfo.paymentType==="CC"?[u.validateSubscriptionPeriod(n.paymentInfo.subscriptionPeriod),u.validateCardholderName(n.paymentInfo.cardholderName),u.validateCardNumber(n.paymentInfo.cardNumber),u.validateSecurityCode(n.paymentInfo.securityCode),u.validateCardYear(n.paymentInfo.expiryYear),u.validateCardMonth(n.paymentInfo.expiryMonth)]:[u.validateSubscriptionPeriod(n.paymentInfo.subscriptionPeriod)];o=f.sendRequest(n.paymentInfo,e);o.then(function(t){t.isValid?n.paymentInfo.paymentType==="CC"?t.isSuccessful===!0?t.authorise?(n.control.showAuthentication=!0,n.control.frameHeight=600,n.returnUri=t.returnUri):window.location=t.returnUri:n.errorMessages=t.errorMessages:t.isSuccessful===!0?r.location.href=t.returnUri:n.errorMessages=t.errorMessages:(n.paymentInfo.lastSubmitAttemptInvalid=!0,n.validationInfo.subscriptionPeriod=t.validationResults[0],n.paymentInfo.paymentType==="CC"&&(n.validationInfo.cardholderName=t.validationResults[1],n.validationInfo.cardNumber=t.validationResults[2],n.validationInfo.securityCode=t.validationResults[3],n.validationInfo.expiryYear=t.validationResults[4],n.validationInfo.expiryMonth=t.validationResults[5]));n.control.loading=!1})}};n.memberPayment.control.expiryYearOptions=globalJs.appOptions.getPaymentYears();n.memberPayment.control.expiryMonthOptions=globalJs.appOptions.paymentMonths;n.$watch("memberPayment.paymentInfo.subscriptionPeriod + memberPayment.paymentInfo.cardholderName + memberPayment.paymentInfo.cardNumber + memberPayment.paymentInfo.expiryMonth + memberPayment.paymentInfo.expiryYear + memberPayment.paymentInfo.securityCode",function(){n.memberPayment.paymentInfo.lastSubmitAttemptInvalid=!1});n.$watch("memberPayment.paymentInfo.cardholderName",function(t){u.validateCardholderName(t).then(function(t){n.memberPaymentForm&&n.memberPayment.control.isSubmitted&&(n.memberPaymentForm.cardholderName.$pristine||(n.memberPayment.validationInfo.cardholderName.invalid=t.invalid,n.memberPayment.validationInfo.cardholderName.validationMessage=t.validationMessage))})});n.$watch("memberPayment.paymentInfo.securityCode",function(t){u.validateSecurityCode(t).then(function(t){n.memberPaymentForm&&n.memberPayment.control.isSubmitted&&(n.memberPaymentForm.securityCode.$pristine||(n.memberPayment.validationInfo.securityCode.invalid=t.invalid,n.memberPayment.validationInfo.securityCode.validationMessage=t.validationMessage))})});n.$watch("memberPayment.paymentInfo.cardNumber",function(t){u.validateCardNumber(t).then(function(t){n.memberPaymentForm&&n.memberPayment.control.isSubmitted&&(n.memberPaymentForm.cardNumber.$pristine||(n.memberPayment.validationInfo.cardNumber.invalid=t.invalid,n.memberPayment.validationInfo.cardNumber.validationMessage=t.validationMessage))})});n.$watch("memberPayment.paymentInfo.expiryMonth",function(t){u.validateCardMonth(t).then(function(t){n.memberPaymentForm&&n.memberPayment.control.isSubmitted&&(n.memberPaymentForm.expiryMonth.$pristine||(n.memberPayment.validationInfo.expiryMonth.invalid=t.invalid,n.memberPayment.validationInfo.expiryMonth.validationMessage=t.validationMessage))})});n.$watch("memberPayment.paymentInfo.expiryYear",function(t){u.validateCardYear(t).then(function(t){n.memberPaymentForm&&n.memberPayment.control.isSubmitted&&(n.memberPaymentForm.expiryYear.$pristine||(n.memberPayment.validationInfo.expiryYear.invalid=t.invalid,n.memberPayment.validationInfo.expiryYear.validationMessage=t.validationMessage))})});n.$watch("memberPayment.paymentInfo.subscriptionPeriod",function(t){u.validateSubscriptionPeriod(t).then(function(t){n.memberPaymentForm&&n.memberPayment.control.isSubmitted&&(n.memberPayment.validationInfo.subscriptionPeriod.invalid=t.invalid,n.memberPayment.validationInfo.subscriptionPeriod.validationMessage=t.validationMessage)});switch(t){case"365":n.memberPayment.control.membershipTotal=n.memberPayment.control.membershipPrices[0];break;case"30":n.memberPayment.control.membershipTotal=n.memberPayment.control.membershipPrices[1]}});n.$watch("memberPayment.paymentInfo.paymentType",function(t){n.memberPayment.control.showCardFields=t==="CC"})}])}(),function(){"use strict";angular.module("appMain").controller("newsGridController",["$scope",function(n){var i,t,r;n.newsGrid={isLoading:!0,newsData:null,redirectToNewsItem:function(n,t){var i="/news/"+globalJs.fn.string.toSeoKey(t)+"/"+n;window.location.href=i},seoKeyName:function(n){return globalJs.fn.string.toSeoKey(n)}};i=20;try{try{t=new CmsApi;t.cmsBaseApiParameters.apiEndPoint="https://content.forcesreunited.co.uk/api/";t.cmsBaseApiParameters.subAccountKey="d2bikqprybipujg4upr3feymzb";t.cmsBaseApiParameters.categoryKey="news";t.cmsBaseApiParameters.authorisationKey="qlayty6ezivbujc7xoejre5u7d";r="category.equals=news&orderByDescending=createdDate&limit="+i+"&markdownToHtml=true&cache-max-age-seconds=60";t.get(r,function(t){globalJs.fn.angularJs.safeApply(n,function(){n.newsGrid.isLoading=!1;n.newsGrid.newsData=eval(t)})})}catch(u){console.error("error on news grid fetch",data);n.newsGrid.isLoading=!1}}catch(u){console.error(u)}}])}(),function(){"use strict";angular.module("appMain").controller("newsItemController",["$scope","$sce","pageService",function(n,t,i){n.init=function(r){var u,f;n.newsItem={contentKey:r,isLoading:!0,newsItemData:null};try{try{u=new CmsApi;u.cmsBaseApiParameters.apiEndPoint="https://content.forcesreunited.co.uk/api/";u.cmsBaseApiParameters.subAccountKey="d2bikqprybipujg4upr3feymzb";u.cmsBaseApiParameters.categoryKey="news";u.cmsBaseApiParameters.authorisationKey="qlayty6ezivbujc7xoejre5u7d";f="key.equals="+n.newsItem.contentKey+"&markdownToHtml=true&cache-max-age-seconds=60";u.get(f,function(r){globalJs.fn.angularJs.safeApply(n,function(){n.newsItem.isLoading=!1;r.length>0?(n.newsItem.newsItemData=eval(r)[0],n.newsItem.newsItemData.content!=null&&(n.newsItem.newsItemData.content=t.trustAsHtml(n.newsItem.newsItemData.content)),i.setPageTitle(n.newsItem.newsItemData.title)):console.info("empty array returned on news item fetch")})})}catch(e){console.error("error on news item fetch",data);n.newsItem.isLoading=!1}}catch(e){console.error(e)}}}])}(),function(){"use strict";angular.module("appMain").controller("onlineMembersController",["$scope","$http",function(n){n.onlineMembers={control:{initComplete:!1,loading:!1},memberId:null,members:null,memberFriends:null,init:function(n){var t=this;t.memberId=n;t.control.initComplete=!0;t.control.loading=!1},isFriend:function(n){var i=this,t=!1;return angular.forEach(i.memberFriends,function(i){i.id===n&&(t=!0)}),t},redirectToMemberProfile:function(n,t){window.location="/m/"+n;t.stopPropagation()},sendMessageToMember:function(n,t){window.location.href="/mailbox?contactMemberId="+n;t.stopPropagation()}}}])}(),function(){"use strict";angular.module("appMain").controller("reunionsController",["$scope","$http","$timeout","pageService",function(n,t,i,r){n.reunions={control:{initComplete:!1,filterTimeoutPromise:null},init:function(){var n=this;n.control.initComplete=!0},serviceReunionsFull:[],serviceReunions:[],currentTabServiceName:null,filterText:null,filterInputs:{army:"",navy:"",raf:"",marines:"",ta:"",other:""},loadReunions:function(n){var r,i;r=n==="army"?1:n==="navy"?3:n==="raf"?2:n==="marines"?4:n==="territorial-army"?5:n==="civilian"?6:1;i=this;t.get("/api/reunions/get-reunions-by-service",{params:{forcesServiceId:r}}).success(function(n){i.serviceReunionsFull=n.reunions;i.serviceReunions=n.reunions}).error(function(n){console.error("error",n)})}};n.$watch(function(){return r.page().tabs.activeTab},function(t){var i=1,u,r;switch(t){case"army":n.reunions.filterText=n.reunions.filterInputs.army;i=1;break;case"raf":n.reunions.filterText=n.reunions.filterInputs.raf;i=2;break;case"navy":n.reunions.filterText=n.reunions.filterInputs.navy;i=3;break;case"marines":n.reunions.filterText=n.reunions.filterInputs.marines;i=4;break;case"territorial-army":n.reunions.filterText=n.reunions.filterInputs.ta;i=5;break;case"civilian":n.reunions.filterText=n.reunions.filterInputs.other;i=6;break;default:n.reunions.filterText=n.reunions.filterInputs.army;i=1}for(n.reunions.loadReunions(t),u=globalJs.appOptions.servicesOptions,r=0;r<u.length;r++)u[r].id==i&&(n.reunions.currentTabServiceName=u[r].name)});n.$watch("reunions.filterText",function(t){var u=n.reunions.control.filterTimeoutPromise;u!=null&&i.cancel(u);switch(r.page().tabs.activeTab){case 1:n.reunions.filterInputs.army=n.reunions.filterText;break;case 2:n.reunions.filterInputs.navy=n.reunions.filterText;break;case 3:n.reunions.filterInputs.raf=n.reunions.filterText;break;case 4:n.reunions.filterInputs.marines=n.reunions.filterText;break;case 5:n.reunions.filterInputs.ta=n.reunions.filterText;break;case 6:n.reunions.filterInputs.other=n.reunions.filterText}u=i(function(){var i,r;if(globalJs.fn.string.isUndefinedNullOrWhiteSpace(t))n.reunions.serviceReunions=n.reunions.serviceReunionsFull;else for(n.reunions.serviceReunions=[],i=0;i<n.reunions.serviceReunionsFull.length;i++)r=globalJs.fn.string.containsCaseInsensitive(n.reunions.serviceReunionsFull[i].reunionName,t)||globalJs.fn.string.containsCaseInsensitive(n.reunions.serviceReunionsFull[i].regiment,t)||globalJs.fn.string.containsCaseInsensitive(n.reunions.serviceReunionsFull[i].address,t),r&&n.reunions.serviceReunions.push(n.reunions.serviceReunionsFull[i])},200)})}])}(),function(){"use strict";angular.module("appMain").controller("reunionEditController",["$scope","$q","$http","$sce","$timeout","validationService",function(n,t,i,r,u,f){n.reunionEdit={control:{isSubmitted:!1,reunionLoading:!1,savingReunion:!1},memberId:0,serviceOptions:[],reunionArrange:null,reunionMembers:[],isMemberAttending:!1,isMemberOwner:!1,validationInfo:{reunionName:{invalid:!1,validationMessage:null},rDate:{invalid:!1,validationMessage:null},address:{invalid:!1,validationMessage:null},rPostCode:{invalid:!1,validationMessage:null},notes:{invalid:!1,validationMessage:null}},init:function(n,t){var r=this;r.serviceOptions=globalJs.appOptions.servicesOptions;r.memberId=t;n>0&&(r.control.reunionLoading=!0,i.get("/api/reunions/get-reunion-by-id",{params:{reunionId:n}}).success(function(n){r.reunionArrange=n.reunionArrange;r.reunionMembers=n.reunionMembers;r.isMemberAttending=n.isMemberAttending;r.isMemberOwner=n.isMemberOwner;r.control.reunionLoading=!1}).error(function(n){r.control.reunionLoading=!1;console.error(n.errorMessage)}))},saveReunion:function(){var n=this,u,r,e;n.control.isSubmitted=!0;n.control.savingReunion=!0;u=new Date;r=new Date;r.setFullYear(r.getFullYear()+10);e=[f.validateStringLength(n.reunionArrange.reunionName,3,255,"reunion name"),f.validateDate(n.reunionArrange.rDate,!1,u,r),f.validateStringLength(n.reunionArrange.address,3,255,"reunion address"),f.validateUkPostCode(n.reunionArrange.rPostCode,!0),f.validateStringLength(n.reunionArrange.notes,0,2e3,"notes")];t.all(e).then(function(t){var e=f.allValid(t),r,u;e?(r=n.reunionArrange.rDate&&n.reunionArrange.rDate instanceof Date?globalJs.fn.system.applyTimeZoneOffsetForSend(n.reunionArrange.rDate):null,u={id:n.reunionArrange.id,memberId:n.memberId,reunionName:n.reunionArrange.reunionName,rDate:r,address:n.reunionArrange.address,rPostCode:n.reunionArrange.rPostCode,notes:n.reunionArrange.notes,serviceId:n.reunionArrange.serviceId,unitId:n.reunionArrange.unitId},i.post("/api/reunions/save-reunion",u).success(function(t){n.control.savingReunion=!1;var i=t.rootRelUrl;window.location=i}).error(function(t){n.control.savingReunion=!1;console.error(t)})):(n.control.savingReunion=!1,n.validationInfo.reunionName=t[0],n.validationInfo.rDate=t[1],n.validationInfo.address=t[2],n.validationInfo.rPostCode=t[3],n.validationInfo.notes=t[4])})}};n.$watch("reunionEdit.reunionArrange.reunionName",function(t){f.validateStringLength(t,3,255,"reunion name").then(function(t){n.reunionEditForm&&n.reunionEdit.control.isSubmitted&&(n.reunionEditForm.reunionName.$pristine||(n.reunionEdit.validationInfo.reunionName.invalid=t.invalid,n.reunionEdit.validationInfo.reunionName.validationMessage=t.validationMessage))})});n.$watch("reunionEdit.reunionArrange.rDate",function(t){var r=new Date,i=new Date;i.setFullYear(i.getFullYear()+10);f.validateDate(t,!1,r,i).then(function(t){n.reunionEditForm&&n.reunionEdit.control.isSubmitted&&(n.reunionEdit.validationInfo.rDate.invalid=t.invalid,n.reunionEdit.validationInfo.rDate.validationMessage=t.validationMessage)})});n.$watch("reunionEdit.reunionArrange.address",function(t){f.validateStringLength(t,3,255,"reunion address").then(function(t){n.reunionEditForm&&n.reunionEdit.control.isSubmitted&&(n.reunionEditForm.address.$pristine||(n.reunionEdit.validationInfo.address.invalid=t.invalid,n.reunionEdit.validationInfo.address.validationMessage=t.validationMessage))})});n.$watch("reunionEdit.reunionArrange.rPostCode",function(t){f.validateUkPostCode(t,!0).then(function(t){n.reunionEditForm&&n.reunionEdit.control.isSubmitted&&(n.reunionEditForm.rPostCode.$pristine||(n.reunionEdit.validationInfo.rPostCode.invalid=t.invalid,n.reunionEdit.validationInfo.rPostCode.validationMessage=t.validationMessage))})});n.$watch("reunionEdit.reunionArrange.notes",function(t){f.validateStringLength(t,3,9,"reunion notes").then(function(t){n.reunionEditForm&&n.reunionEdit.control.isSubmitted&&(n.reunionEditForm.notes.$pristine||(n.reunionEdit.validationInfo.notes.invalid=t.invalid,n.reunionEdit.validationInfo.notes.validationMessage=t.validationMessage))})})}])}(),function(){"use strict";angular.module("appMain").controller("reunionMemberReunionsController",["$scope","$http",function(n,t){n.reunionMemberReunions={control:{initComplete:!1},memberId:null,memberReunionArranges:{memberCreatedPastArranges:null,memberAttendingPastArranges:null,memberCreatedFutureArranges:null,memberAttendingFutureArranges:null},init:function(n){var i=this;i.memberId=n;i.control.initComplete=!0;t.get("/api/reunions/get-member-reunions").success(function(n){i.memberReunionArranges.memberCreatedPastArranges=n.memberCreatedPastArranges;i.memberReunionArranges.memberAttendingPastArranges=n.memberAttendingPastArranges;i.memberReunionArranges.memberCreatedFutureArranges=n.memberCreatedFutureArranges;i.memberReunionArranges.memberAttendingFutureArranges=n.memberAttendingFutureArranges}).error(function(n){console.error("error",n)})}}}])}(),function(){"use strict";angular.module("appMain").controller("reunionViewController",["$scope","$http","$sce","pageService",function(n,t,i,r){n.reunionView={control:{loadFriendListComplete:!1,loadAttendeesListComplete:!1,showAddFriends:!1},memberId:0,reunionId:0,reunionArrange:null,reunionUnit:null,reunionMembers:[],friendsList:[],attendeeList:[],friendListLength:0,attendeeListLength:0,isMemberAttending:!1,isMemberOwner:!1,validationInfo:{},recentForumPosts:{forumPosts:[],html:null},init:function(n){this.reunionId=n;this.loadAllFriends();this.loadAttendees()},init2:function(u,f,e,o){n.reunionView.serviceOptions=globalJs.appOptions.servicesOptions;var s=this;s.memberId=f;t.get("/api/reunions/get-reunion-by-id",{params:{reunionId:u}}).success(function(t){if(s.reunionArrange={id:u,reunionName:o,rPostCode:e,rPostCodeMapLinkUrl:null,rPostCodeMapEmbedUrl:null},s.reunionUnit=t.reunionUnit,s.isMemberAttending=t.isMemberAttending,s.isMemberOwner=t.isMemberOwner,globalJs.fn.angularJs.safeApply(n,function(){r.setPageTitle(s.reunionArrange.reunionName)}),s.reunionArrange.rPostCode){var f=s.reunionArrange.rPostCode.replace(/\s/,"+");s.reunionArrange.rPostCodeMapLinkUrl="https://maps.google.co.uk/maps?q="+f;s.reunionArrange.rPostCodeMapEmbedUrl="https://maps.google.co.uk/maps?output=embed&q="+f;s.reunionArrange.rPostCodeMapEmbedUrl=i.trustAsResourceUrl(s.reunionArrange.rPostCodeMapEmbedUrl)}}).error(function(n){console.error(n.errorMessage)})},joinReunion:function(){var n=this,i;if(n.control.joinReunionLoading=!0,n.memberId===0)throw"Member id not available to join reunion";i={reunionId:n.reunionArrange.id};t.post("/api/reunions/join-reunion",i).success(function(t){var i=t;n.reunionMembers.unshift(i);n.isMemberAttending=!0;n.control.joinReunionLoading=!1;r.page().displayNotificationBar("You have been added to the reunion attendees list","success")}).error(function(n){console.error(n)})},leaveReunion:function(){var n=this,i;if(n.control.leaveReunionLoading=!0,n.memberId===0)throw"Member id not available to leave reunion";i={reunionId:n.reunionArrange.id};t.post("/api/reunions/leave-reunion",i).success(function(){for(var t=0;t<n.reunionMembers.length;t++)if(n.reunionMembers[t].id==n.memberId){n.reunionMembers.splice(t,1);break}n.isMemberAttending=!1;n.control.leaveReunionLoading=!1;r.page().displayNotificationBar("You have been removed from the reunion attendees list","success")}).error(function(n){console.error(n)})},twitterShare:function(n){return window.open("https://twitter.com/intent/tweet?url="+encodeURIComponent(n)+"&text=New reunion organised: ","","menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600"),!1},facebookShare:function(n){return window.open("https://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(n),"","menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600"),!1},loadAllFriends:function(){t.get("/api/reunions/get-friends-list",{params:{reunionId:this.reunionId}}).success(function(t){n.reunionView.friendsList=t.friendMemberList;n.reunionView.friendListLength=t.friendMemberList.length;n.reunionView.control.loadFriendListComplete=!0}).error(function(t){n.reunionView.control.loadFriendListComplete=!0;console.error(t)})},loadAttendees:function(){t.get("/api/reunions/get-attendees",{params:{reunionId:this.reunionId}}).success(function(t){n.reunionView.attendeeList=t.attendees;n.reunionView.attendeeListLength=t.attendees.length;n.reunionView.control.loadAttendeesListComplete=!0}).error(function(t){n.reunionView.control.loadAttendeesListComplete=!0;console.error(t)})},toggleFriendToReunion:function(i){var r={reunionId:this.reunionId,friendId:i};t.post("/api/reunions/toggle-friend",r).success(function(t){t==="null"?(n.reunionView.friendListLength++,n.reunionView.attendeeListLength--,$("#attendee-item-"+i).hide(400,function(){$("#attendee-item-"+i).appendTo("#friends-list").show(400)})):(n.reunionView.friendListLength--,n.reunionView.attendeeListLength++,$("#attendee-item-"+i).hide(400,function(){$("#attendee-item-"+i).prependTo("#supporters-list").show(400)}))}).error(function(n){console.error(n)})},showHideAddFriends:function(){n.reunionView.control.showAddFriends=!n.reunionView.control.showAddFriends;n.reunionView.control.showAddFriends?$("#addFriendsButton").html("Hide Friends"):$("#addFriendsButton").html("Add Friends")}}}])}(),function(){"use strict";angular.module("appMain").controller("rollOfHonourController",["$scope","$http",function(n,t){n.rollOfHonour={control:{totalPages:0,currentPage:1,pageSize:30,loading:!1},members:null,init:function(){var n=this;n.refreshPageData(n.control.currentPage);n.control.loading=!0},refreshPageData:function(n){var i=this,r=n*i.control.pageSize-i.control.pageSize,u=i.control.pageSize;i.control.loading=!0;t.get("/api/roll-of-honour/get-members",{params:{limit:u,skip:r}}).success(function(t){i.members=t.members;i.control.currentPage=n;i.control.skip=t.skip;i.control.limit=t.limit;i.control.currentPage=Math.ceil(t.skip/t.limit)+1;i.control.totalPages=Math.ceil(t.foundRows/t.limit);i.control.loading=!1}).error(function(n){i.control.loading=!1;console.error(n)})}}}])}(),function(){"use strict";angular.module("appMain").controller("supportController",["$scope","$http","$timeout","$q","validationService",function(n,t,i,r,u){n.support={control:{initComplete:!1,categoriesLoading:!1,mostRecentLoading:!1,searchLoading:!1,showSupportRequests:!1,supportRequestsUpdatedByAdmin:[],supportRequestsUpdatedByMember:[],categoryOptions:[],searchResults:[],showSearchResults:!1,showCategorySearchResults:!1,showTermSearchResults:!1,timer:!1,isLoggedIn:!1},searchDetails:{term:"",category:""},selectCategory:function(n){var i=this;i.searchDetails.category=n;i.control.searchLoading=!0;t.get("/api/faq/get-faq-by-category",{params:{category:n}}).success(function(n){i.control.searchResults=n;i.control.categoriesLoading=!1;i.control.searchLoading=!1});i.control.showSearchResults=!0;i.control.showTermSearchResults=!1;i.control.showCategorySearchResults=!0},validationInfo:{term:{invalid:!1,validationMessage:""}},search:function(){var n=this,i,f;n.control.searchLoading=!0;i=[u.validateShortString(n.searchDetails.term,"Please enter your support query")];f={searchTerm:n.searchDetails.term};r.all(i).then(function(i){var r=u.allValid(i);n.validationInfo.term=i[0];r?(t.post("/api/faq/search-faq",f).success(function(t){n.control.searchResults=t;n.control.searchLoading=!1}),n.control.showSearchResults=!0,n.control.showTermSearchResults=!0,n.control.showCategorySearchResults=!1):n.control.searchLoading=!1})},hideResults:function(){var n=this;n.searchDetails.term="";n.searchDetails.category="";n.control.showSearchResults=!1;n.control.showTermSearchResults=!1;n.control.showCategorySearchResults=!1;n.control.searchResults=[]},init:function(){var n=this;n.control.categoriesLoading=!0;t.get("/api/support/get-support-request-data").success(function(t){n.control.supportRequestsUpdatedByMember=t.supportRequestsUpdatedByMember;n.control.supportRequestsUpdatedByAdmin=t.supportRequestsUpdatedByAdmin;n.control.showSupportRequests=t.isLoggedIn});t.get("/api/faq/get-faq-categories").success(function(t){n.control.categoryOptions=t;n.control.categoriesLoading=!1})}}}])}(),function(){"use strict";angular.module("appMain").controller("supportCreateController",["$scope","$http","$timeout","$q","validationService",function(n,t,i,r,u){n.supportCreate={control:{initComplete:!1,isLoading:!1,typeOptions:[],isSubmitted:!1},supportDetails:{type:"",email:"",serviceNumber:"",subject:"",comment:""},validationInfo:{type:{invalid:!1,validationMessage:""},email:{invalid:!1,validationMessage:""},subject:{invalid:!1,validationMessage:""}},submit:function(){var n=this,i;n.control.isLoading=!0;n.control.isSubmitted=!0;i=[u.validateShortString(n.supportDetails.type),u.validateEmail(n.supportDetails.email),u.validateShortString(n.supportDetails.subject,"Please add a support subject")];r.all(i).then(function(i){var f=u.allValid(i),r;f?(r={type:n.supportDetails.type,email:n.supportDetails.email,serviceNumber:n.supportDetails.serviceNumber,subject:n.supportDetails.subject,comment:n.supportDetails.comment},t.post("/api/support/create-support",r).success(function(t){window.location=t.returnUri;n.control.isLoading=!1}).error(function(t){n.control.isLoading=!1;console.error(t)})):(n.validationInfo.type=i[0],n.validationInfo.email=i[1],n.validationInfo.subject=i[2],n.control.isLoading=!1)})},init:function(n,t){var i=this;i.control.initComplete=!0;i.supportDetails.email=n;i.supportDetails.serviceNumber=t;i.control.typeOptions=globalJs.appOptions.supportRequestTypes}};n.$watch("supportCreate.supportDetails.type",function(t){u.validateShortString(t).then(function(t){n.supportCreateForm&&n.supportCreate.control.isSubmitted&&(n.supportCreateForm.type.$pristine||(n.supportCreate.validationInfo.type.invalid=t.invalid,n.supportCreate.validationInfo.type.validationMessage=t.validationMessage))})});n.$watch("supportCreate.supportDetails.email",function(t){u.validateEmail(t).then(function(t){n.supportCreateForm&&n.supportCreate.control.isSubmitted&&(n.supportCreateForm.email.$pristine||(n.supportCreate.validationInfo.email.invalid=t.invalid,n.supportCreate.validationInfo.email.validationMessage=t.validationMessage))})});n.$watch("supportCreate.supportDetails.subject",function(t){u.validateShortString(t).then(function(t){n.supportCreateForm&&n.supportCreate.control.isSubmitted&&(n.supportCreateForm.subject.$pristine||(n.supportCreate.validationInfo.subject.invalid=t.invalid,n.supportCreate.validationInfo.subject.validationMessage=t.validationMessage))})})}])}(),function(){"use strict";angular.module("appMain").controller("supportViewController",["$scope","$http","$timeout","$sce","$q","validationService",function(n,t,i,r,u,f){n.supportView={control:{initComplete:!1,isLoading:!1,isSubmitted:!1,id:0},supportDetails:{subject:"",history:r.trustAsHtml("")},addCommentDetails:{comment:""},validationInfo:{comment:{invalid:!1,validationMessage:""}},submit:function(){var n=this,i;n.control.isLoading=!0;n.control.isSubmitted=!0;i=[f.validateComment(n.addCommentDetails.comment)];u.all(i).then(function(i){var u=f.allValid(i),r;u?(r={id:n.control.id,comment:n.addCommentDetails.comment},t.post("/api/support/add-support-comment",r).success(function(t){window.location=t.returnUri;n.control.isLoading=!1}).error(function(t){n.control.isLoading=!1;console.error(t)})):(n.validationInfo.comment=i[0],n.control.isLoading=!1)})},init:function(n){var i=this;i.control.id=n;t.get("/api/support/get-support-question",{params:{id:i.control.id}}).success(function(n){i.supportDetails.subject=n.subject;i.control.isLoading=!1;i.control.initComplete=!0});t.get("/api/support/get-support-question-history",{params:{id:i.control.id}}).success(function(n){i.supportDetails.history=n.history;i.control.isLoading=!1;i.control.initComplete=!0;i.supportDetails.history!=null&&(i.supportDetails.history=r.trustAsHtml(i.supportDetails.history))})}};n.$watch("supportView.addCommentDetails.comment",function(t){f.validateComment(t).then(function(t){n.supportCommentForm&&n.supportView.control.isSubmitted&&(n.supportCommentForm.comment.$pristine||(n.supportView.validationInfo.comment.invalid=t.invalid,n.supportView.validationInfo.comment.validationMessage=t.validationMessage))})})}])}(),function(){"use strict";angular.module("appMain").controller("tabsController",["$scope","$location","pageService",function(n,t,i){n.tabs={activeTab:"1",activeTagParam:"activeTab",hasDefaultValue:!1,activePanel:"1",init:function(n,t){this.activeTagParam=n;t!=""&&(this.hasDefaultValue=!0,this.setActiveTab(t,!0))},setActivePanel:function(n){this.activePanel=n},setActiveTab:function(n,r){this.activeTab=n;r!==!0&&t.search(this.activeTagParam,n);i.page().tabs.activeTab=n},updateActiveTabFromRoute:function(){var i=t.search()[this.activeTagParam];i?n.tabs.setActiveTab(i):this.hasDefaultValue!==!0&&n.tabs.setActiveTab(1,!0)}};n.$on("$locationChangeStart",function(){n.tabs.updateActiveTabFromRoute()})}])}(),function(){"use strict";angular.module("appMain").controller("unitsController",["$scope","$http","$timeout",function(n,t){n.units={control:{totalPages:0,currentPage:1,pageSize:36,loading:!1},unitId:0,members:null,init:function(n){var t=this;t.unitId=n;t.loadPageData();t.refreshPageData(t.control.currentPage);t.control.loading=!0},loadPageData:function(){var n=this;t.get("/api/units/get-unit-members-info",{params:{unitId:n.unitId}}).success(function(t){n.control.totalPages=Math.ceil(t.foundRows/n.control.pageSize);n.control.loading=!1}).error(function(t){n.control.loading=!1;console.error(t)})},refreshPageData:function(n){var i=this,r=n*i.control.pageSize-i.control.pageSize,u=i.control.pageSize;i.control.loading=!0;t.get("/api/units/get-unit-members",{params:{unitId:i.unitId,limit:u,skip:r}}).success(function(t){i.members=t.members;i.control.currentPage=n;i.control.loading=!1}).error(function(n){i.control.loading=!1;console.error(n)})}}}])}(),function(){"use strict";angular.module("appMain").controller("whatsHappeningFeedController",["$scope","$http",function(n,t){n.feed={whatsHappeningFeed:null,whatsHappeningFeedLoading:!0};t.get("/api/feed/get-whats-happening-feed").success(function(t){n.feed.whatsHappeningFeed=t;n.feed.whatsHappeningFeedLoading=!1}).error(function(t){n.feed.whatsHappeningFeedLoading=!1;console.error(t)})}])}(),function(){"use strict";angular.module("appMain").controller("galleryImageController",["$scope","$http","$timeout","$q","validationService","pageService",function(n,t){n.galleryImage={memberId:0,galleryId:0,galleryEntry:null,galleryComments:null,init:function(n,t){this.memberId=n;this.galleryId=t;this.loadGalleryEntries(this.galleryId)},loadGalleryEntries:function(i){t.get("/api/gallery/get-gallery?galleryId="+i).success(function(t){n.galleryImage.galleryEntry=t.gallery;n.galleryImage.galleryComments=t.comments}).error(function(n){console.error("error",n)})}}}])}(),function(){"use strict";angular.module("appMain").controller("memberScrollController",["$scope","$http","$q","paymentRecordService","validationService",function(n,t,i,r,u){n.memberScroll={control:{initialLoad:!1,addressObj:null,isLoading:!1},validationInfo:{firstname:{invalid:!1,validationMessage:""},surname:{invalid:!1,validationMessage:""},address:{invalid:!1,validationMessage:""},postcode:{invalid:!1,validationMessage:""}},member:{id:"",rank:"",firstname:"",surname:"",serviceNumber:"",selectedUnit:""},scrollDetails:{serviceNumber:"",firstname:"",surname:"",rank:"",servicePeriod:"",unit:"",addressId:0,previousOrder:!1},scrollEdit:{serviceNumber:{visible:!1,input:""},firstname:{visible:!1,input:""},surname:{visible:!1,input:""},servicePeriod:{visible:!1,input:""},rank:{visible:!1,input:""},unit:{visible:!1,input:""}},currentMemberId:"",unitOptions:[],step:1,editOrder:function(){this.step=1},editScroll:function(n){var t=this;t.scrollEdit.serviceNumber.visible=n=="serviceNumber";t.scrollEdit.rank.visible=n=="rank";t.scrollEdit.firstname.visible=n=="firstname";t.scrollEdit.surname.visible=n=="surname";t.scrollEdit.unit.visible=n=="unit"},reset:function(){var n=this;n.scrollDetails.rank=n.member.rank;n.scrollDetails.firstname=n.member.firstname;n.scrollDetails.surname=n.member.surname;n.scrollDetails.serviceNumber=n.member.serviceNumber;n.scrollDetails.unitName="";n.scrollDetails.servicePeriod="";n.scrollDetails.previousOrder=!1},init:function(i,r){this.control.initialLoad=!0;this.member.id=i;this.currentMemberId=r;var u=t.get("/api/commemorative-scroll/get-unfinished-order").success(function(t){t.success&&(n.memberScroll.scrollDetails.previousOrder=!0,n.memberScroll.scrollDetails.rank=t.order.rank,n.memberScroll.scrollDetails.firstname=t.order.firstName,n.memberScroll.scrollDetails.surname=t.order.surname,n.memberScroll.scrollDetails.serviceNumber=t.order.serviceNumber,n.memberScroll.scrollDetails.unitName=t.order.unit,n.memberScroll.scrollDetails.servicePeriod=t.order.servicePeriod)}).error(function(){n.memberScroll.control.initialLoad=!1});u.then(function(){t.get("/api/members/get-public-member-info?memberId="+i).success(function(t){n.memberScroll.member.rank=t.member.rank;n.memberScroll.member.firstname=t.member.firstName;n.memberScroll.member.surname=t.member.surname;n.memberScroll.member.serviceNumber=t.member.serviceNumber;n.memberScroll.scrollDetails.previousOrder===!1&&(n.memberScroll.scrollDetails.rank=t.member.rank,n.memberScroll.scrollDetails.firstname=t.member.firstName,n.memberScroll.scrollDetails.surname=t.member.surname,n.memberScroll.scrollDetails.serviceNumber=t.member.serviceNumber);n.memberScroll.unitOptions=t.membersToUnits;n.memberScroll.control.initialLoad=!1}).error(function(){n.memberScroll.control.initialLoad=!1})})},isForCurrentMember:function(){return this.member.id==this.currentMemberId},showManualEdit:function(){this.step=2},showPayment:function(){this.control.isLoading=!0;var f=[u.validateShortString(this.scrollDetails.firstname,"Please enter a firstname"),u.validateShortString(this.scrollDetails.surname,"Please enter a surname")];i.all(f).then(function(i){var f=u.allValid(i);f?t.post("/api/commemorative-scroll/create-scroll",n.memberScroll.scrollDetails).success(function(t){r.recordId.set(t.id);r.frTransactionType.set(t.type);r.description.set("Commemorative Scroll");r.toPay.set(t.toPay);r.itemPrice.set(t.toPay);r.requiresAddress.set(!0);n.memberScroll.step=3;n.memberScroll.control.isLoading=!1;$("#delivery-address-box").show();$("#gateway-container").hide()}).error(function(t){console.error("Error in memberProfileSettings.editProfilePhoto",t);n.memberScroll.control.isLoading=!1}):(n.memberScroll.validationInfo.firstname=i[0],n.memberScroll.validationInfo.surname=i[1],n.memberScroll.control.isLoading=!1)})}};n.$watch("memberScroll.member.selectedUnit",function(t){t!==null&&typeof t.startYear!="undefined"&&typeof t.endYear!="undefined"?(n.memberScroll.scrollDetails.unit=t.unitName,n.memberScroll.scrollDetails.servicePeriod=t.startYear!=""&&t.endYear!=""?t.startYear+"-"+t.endYear:t.startYear+t.endYear):(n.memberScroll.scrollDetails.unit="",n.memberScroll.scrollDetails.servicePeriod="")});n.$watch("memberScroll.control.addressObj",function(t){angular.isObject(t)&&(n.memberScroll.validationInfo.address={invalid:!1,validationMessage:""})})}])}(),function(){"use strict";angular.module("appMain").controller("badgesController",["$scope","$http","$q","paymentRecordService","validationService",function(n,t,i,r){n.badges={control:{addressObj:null,isLoading:!1},inputs:{addressId:0,amount:1},validationInfo:{addressId:{invalid:!1,validationMessage:""}},toPay:"",badgeCost:"",numberOptions:[1,2,3,4,5],step:1,init:function(n){this.badgeCost=n},orderNow:function(){this.inputs.amount=1;this.showPayment()},editOrder:function(){this.step=1},showPayment:function(){this.control.isLoading=!1;t.post("/api/badges/create-badge",n.badges.inputs).success(function(t){r.recordId.set(t.id);r.frTransactionType.set(t.type);r.toPay.set(t.toPay);r.quantity.set(t.quantity);r.quantityOptions.set(n.badges.numberOptions);r.itemPrice.set(n.badges.badgeCost);r.description.set("Forces Reunited Badges");r.requiresAddress.set(!0);n.badges.step=2;n.badges.control.isLoading=!1;$("#delivery-address-box").show();$("#gateway-container").hide()}).error(function(t){console.error("Error in badges/create-badge",t);n.badges.control.isLoading=!1})}};n.$watch("badges.inputs.amount",function(t){n.badges.toPay=(t*n.badges.badgeCost).toFixed(2)});n.$watch("badges.control.addressObj",function(t){angular.isObject(t)&&(n.badges.validationInfo.addressId={invalid:!1,validationMessage:""})})}])}()