{"version":3,"sources":["component.ts","validationComponent.ts","band-rotator.ts","content-rotator.ts","irep.ts","password-processor.ts","registrationVerify.ts","resource-group.ts","retailerSearch.ts","ssoconnect.ts","storeManualEntry.ts","storePosition.ts","contactus.js","Integration.js","layout.js","popup.js"],"names":["IREP","Component","id","_this","this","$component","$","uid","data","waypoint","Waypoint","element","handler","direction","trackComponentView","destroy","offset","prototype","delay","timeout","deferred","Deferred","setTimeout","resolve","promise","requestAnimationFrameShim","callback","window","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","call","mtTrackComponent","irep","trackPage","ValidationComponent","_super","options","each","validator","methods","key","value","arguments","length","trim","apply","__extends","bindKeypress","document","addEventListener","e","processKey","keyCode","target","hasClass","click","preventDefault","cbx","children","prop","validEmail","email","test","validPhoneNumberAsmo","phoneNumber","RegExp","validPhoneNumberLar","validPhoneNumberBrazil","bindValidation","forms","setErrors","undefined","validate","validationSettings_1","settings","highlight","errorClass","parents","addClass","unhighlight","removeClass","errorPlacement","error","attr","text","on","valid","_","find","defaultOptions","BandRotator","config","isRotating","timeoutId","extend","$bandRotator","$bandRotatorWrapper","$bandRotatorContents","fadeNextRotator","setupNextPrevClicks","Hammer","doPrevious","doNext","fromUser","mtRotateBanners","fadeOut","then","remove","prepend","show","fadePrevRotator","$prevRotator","hide","append","fadeIn","clearTimeout","off","one","rotateHeaders","ContentRotator","panes","currentPane","currentPosition","$headers","$contents","$footers","$circles","$leftArrow","$rightArrow","setupCirclePanes","setupNextPrevButtons","updatePanePosition","$footer","delegateTarget","parent","height","index","spacer","class","circlePane","pane","childrenCount","i","circle","$circlePanes","user","cultureCode","css","IREP_1","Initializer","hasLoaded","isLoading","queue","add","push","insertAtBeginning","unshift","execute","forEach","initializer","configureMoment","isMotech","moment","locale","showRelativeDates","ready","readyFirst","popupInitializer","jQuery","setupJqueryOptions","ajaxSetup","cache","oldSchoolCallApi","url","type","doneCallback","failCallback","xhr","ajax","dataType","apiUrlSecure","contentType","headers","PaxUID","currentUID","JSON","stringify","done","fail","newSchoolcallApi","secure","anonymous","callApi","getHtml","appUrlSecure","appUrl","site","postFile","processData","track","code","label","_gaq","fileName","logTimings","performance","timing","timings","location","pathname","querystring","search","hash","latency","responseStart","fetchStart","transfer","responseEnd","domInteractive","domLoading","domComplete","onLoad","loadEventEnd","loadEventStart","redirect","href","generateSiteLink","toLowerCase","item","that","momentDate","relativeDate","fromNow","getTimeStamp","now","Date","getTime","PasswordProcessor","Error","validatePassword","password","confirmPassword","isValid","success","message","PASSWORD_VALIDATION_MESSAGES","INVALID_PASSWORD","checkPasswordRequirements","checkPasswordAndConfirmMatch","SUCCESS","PASSWORD_CONFIRM_MISMATCH","requirementsReport","upper","lower","number","special","filter","changePassword","currentPassword","Username","OldPassword","NewPassword","passwordChanged","reject","INVALID_CURRENT_PASSWORD","IRegistrationVerifyOptions","RegistrationVerify","finishProfile","doItLater","bindEvents","configurePage","indexOf","unbindEvents","goToFinish","goToLogin","unbind","serialize","html","history","go","ResourceGroup","$header","expandGroup","$exam","event","startExam","toggle","img","getUrlParameterByName","name","replace","regex","results","exec","decodeURIComponent","scrollToId","param","r","scrollTop","top","updateQuizProgress","currentQuestion","displayLimit","self","completionPercentage","activityCode","d","quizSelector","quizBodyClass","returnUrl","mask","isMobile","apiRoot","apiUrl","appRoot","onRetake","quiz","Quiz","startQuiz","failText","passText","requiredPercentage","events","result","score","RetailerSearch","searchForm","searchBackdrop","searchModal","closeForm","searchText","searchResults","selectedValue","buttonSelect","buttonCantFind","countryNameDisplay","hiddenPromoterRetailerSearch","hiddenRetailerSearch","closeSearch","pauseSearchRetailers","setSelection","takeSelection","manualRetailer","showCountryDropdown","changePromoterCountry","changeCountry","stopPropagation","searchRetailers","processKey2","setMode","mode","StorePosition","PositionMode","RETAILER","MANUFACTURER","manualForm","storeManual","setCallback","closeCallback","openSearch","outerHeight","scrollPosition","setCountry","countryCode","countryName","val","setPromoterCountry","select2","showPromoterCountryDropdown","localName","open","qq","CountryCode","SearchText","IsDre","isDre","Limit","parseJSON","listItems","Data","Id","Name","SSOConnect","FB","init","appId","version","status","cookie","xfbml","gapi","load","auth2","client_id","cookie_policy","scope","fetch_basic_profile","is","loginGoogle","console","log","execDisconnect","loginFacebook","handleAppleSso","loginApple","AppleID","auth","signIn","detail","authorization","id_token","execAuth","state","initRegistrationFacebook","api","sessionStorage","ssoUserId","access_token","ssoAccessToken","fields","resp","first_name","last_name","initRegistrationGoogle","ssoEmail","firstname","lastname","GoogleAuth","getAuthInstance","profile","currentUser","get","getBasicProfile","getId","authResponse","getAuthResponse","getEmail","login","response","getLoginStatus","userID","accessToken","return_scopes","x","reload","userId","errorText","submitSso","StoreManualEntry","recommendedStoreList","buttonSearch","buttonBack","buttonFinish","form","storeComponent","promoterComponent","retailerControl","countrySearch","provinceList","provinceContainer","getForm","evt","close","attemptMatch","validateForm","backForm","storeId","snlCallback","rsnlCallback","handleRetailer","retailerName","storeChainId","storeName","storeNumber","address","city","province","postalCode","StoreChainId","showRetailer","updateProvinces","Provinces","closest","removeAttr","trigger","checkRetailer","executeCallbacks","PositionIds","lastStoreId","retailerSearch","promoterRetailerSearch","storePosition","storePositionFail","storeNotListedFail","positionOptions","managerSelect","otherInfo","promoterStore","promoterRetailerRadio","promoterStoreRadio","promoterRetailerRadioSelect","promoterStoreRadioSelect","retailerSelect","storeSelect","promoterRetailerSelect","searchRetailer","searchLocation","searchPromoterRetailer","searchRetailerBtn","searchLocationBtn","searchPromoterRetailerBtn","storeLocationLabel","promoterRetailerLabel","retailerLabel","initCallbacks","dataStatus","updateRetailers","initSelect2","changePosition","promoterRetailerRadioChoice","promoterStoreRadioChoice","promoterRetailerRadioShow","promoterStoreRadioShow","changePromoterLocation","clearError","employeeCodeCheck","changeLocationList","initializing","retailerOpenSearch","openStoreEntry","promoterRetailerOpenSearch","initSelection","storePositionTypeId","promoterAgency","promoterStoreId","RetailSales","ManagerMultiple","ManagerOneStore","RegionalManager","DepartmentManager","Manager","toString","setRetailer","setPromoterRetailer","initPromoterRetailerTexts","setStore","rsCallback","setStoreNotListed","prsCallback","snl","retailerId","setRetailerNotListed","stnl","prsnlCallback","setPromoterRetailerNotListed","getResults","getStorePositionId","retainRetailer","setStorePositionHint","setPositionTexts","MANAGER","PROMOTER","updatePromoterRetailers","dreLocaleId","setStorePositionTextPromoter","setStorePositionTextRetailer","selection","placeholder","attribute","ApiCmd","processGermanLogic","inArray","storeNotListed","IsStoreNotListed","currentLocationId","Validate","res","minimumInputLength","params","term","Attribute","processResults","map","contactus","submitButton","failureMessage","successMessage","successMessage2","txtMessage","missingMessage","txtFirstName","txtLastName","txtEmail","emailSupport","txtCountry","isAnonymous","objContactUs","FirstName","firstName","LastName","lastName","Email","StoreCode","storeCode","StoreChainName","storeChainName","UserType","userType","UserTypeId","userTypeId","GeoCode","geoCode","CultureCode","EmailSupport","Site","Language","Message","clearMessage","cc","position","isRTL","width","left","integration","getUrlVars","vars","m","lmsOptions","skipRegistrationSubmitAttempted","registerSubmitAttempted","mergeSubmitAttempted","slideDown","slideUp","termsAccepted","hasAccountInitialValue","retailer","getUrlParam","allowSkipRegistration","ok","submit","toggleClass","parameter","defaultvalue","urlparameter","hasAccount","formSelector","validateMergeForm","validateSkipForm","validateRegisterForm","checkUsernameExists","requiredTextAndDropdownFields","requiredRadioGroups","uniq","el","emailRegex","userName","isEmpty","match","username","exists","addErrorMessage","errorMsgEmailExists","errorMsgEmail","passwordsDontMatch","Password","validateComplexity","passwordComplexity","employeeCode","employeeIdRequired","field","$field","radioGroupName","$group","lastOption","termsCheckbox","when","usernameExists","fieldsValid","usernameAndPasswordRequired","showError","useSpan","after","containsChars","validChars","char","charAt","publicLayout","contactUsOpen","$languages","$aboutlink","contactUsToggle","getPopupHeight","animate","bottom","contactUsOpenStatus","Popup","$element","DEFAULTS","fn","popup","option","$this"],"mappings":"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","file":"public.js","sourcesContent":["/// \r\n/// \r\n/// \r\n\r\ndeclare var irep: IREP.IREP;\r\ndeclare var Waypoint: any;\r\ndeclare var mtTrackComponent: boolean;\r\n\r\ninterface Window {\r\n mozRequestAnimationFrame: any;\r\n webkitRequestAnimationFrame: number;\r\n}\r\n\r\nnamespace IREP {\r\n \"use strict\";\r\n\r\n export class Component {\r\n protected id: string;\r\n protected uid: string;\r\n protected $component: JQuery;\r\n\r\n private waypoint: any;\r\n\r\n constructor(id: string) {\r\n this.$component = $(id);\r\n this.uid = this.$component.data('controluid');\r\n\r\n if (this.uid != null) {\r\n this.waypoint = new Waypoint({\r\n element: this.$component[0],\r\n handler: (direction) => {\r\n if (direction === \"down\") {\r\n this.trackComponentView();\r\n this.waypoint.destroy();\r\n }\r\n },\r\n offset: 'bottom-in-view'\r\n });\r\n }\r\n }\r\n\r\n protected delay(timeout: number) {\r\n var deferred = $.Deferred();\r\n\r\n setTimeout(() => {\r\n deferred.resolve();\r\n }, timeout);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private requestAnimationFrameShim(callback) {\r\n window.setTimeout(callback, 1000 / 60);\r\n }\r\n\r\n protected requestAnimationFrame(callback) {\r\n const requestFn = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || this.requestAnimationFrameShim;\r\n\r\n requestFn.call(window, callback);\r\n }\r\n\r\n private trackComponentView() {\r\n if (mtTrackComponent){\r\n irep.trackPage('ComponentViewed', this.uid, '', '');\r\n }\r\n }\r\n }\r\n}\r\n","/// \r\n/// \r\n/// \r\n\r\nnamespace IREP {\r\n \"use strict\";\r\n\r\n //Inherit this object instead of Component to get validation in your form.\r\n export class ValidationComponent extends Component {\r\n\r\n constructor(options: any) {\r\n super(options);\r\n\r\n //Prevents entering only spaces in any required fields. \r\n $.each($.validator.methods, function (key, value) {\r\n $.validator.methods[key] = function () {\r\n if (arguments.length > 0) {\r\n arguments[0] = $.trim(arguments[0]);\r\n }\r\n\r\n return value.apply(this, arguments);\r\n };\r\n });\r\n }\r\n\r\n //Call this in your bindEvents function if you want to have standard keyboard command processing.\r\n //Right now I have two examples set up. Spacebar - handles toggling a checkbox, and handles a button click. \r\n public bindKeypress() {\r\n document.addEventListener('keypress', (e) => this.processKey(e));\r\n };\r\n\r\n public processKey(e: KeyboardEvent) {\r\n if (e.keyCode == 13 || e.keyCode == 32) { //Enter or Space\r\n if ($(e.target).hasClass('option') || $(e.target).hasClass('button') || $(e.target).hasClass('link')) {\r\n $(e.target).click();\r\n e.preventDefault();\r\n }\r\n if ($(e.target).hasClass('onoffswitch')) {\r\n var cbx = $(e.target).children('input[type=\"checkbox\"]');\r\n cbx.prop('checked', !cbx.prop('checked')); //Flip it.\r\n e.preventDefault();\r\n }\r\n }\r\n };\r\n\r\n public validEmail(email: string) {\r\n // :jbw: just saw this on 092618, there's no way to validate email other than a simple /.@./ -- cause you can have some ridiculous, yet valid addresses these days\r\n let emailRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return emailRegex.test(email);\r\n }\r\n\r\n public validPhoneNumberAsmo(phoneNumber: string) {\r\n let phoneRegext = new RegExp(\"^(\\\\+\\\\d{1,2}\\\\s)?\\\\(?\\\\d{3}\\\\)?[\\\\s.-]?\\\\d{3}[\\\\s.-]?\\\\d{4}$\");\r\n return phoneRegext.test(phoneNumber);\r\n }\r\n\r\n public validPhoneNumberLar(phoneNumber: string) {\r\n let phoneRegext = new RegExp(\"^\\\\+?\\\\(?\\\\d{1,3}\\\\)?(\\\\s|-)?\\\\d{1,5}(\\\\s|-)?\\\\d{4,9}\");\r\n return phoneRegext.test(phoneNumber);\r\n }\r\n\r\n public validPhoneNumberBrazil(phoneNumber: string) {\r\n //(##) ########\r\n let phoneRegext = new RegExp(\"\\\\(([0-9]{2}|0{1}((x|[0-9]){2}[0-9]{2}))\\\\)\\\\s*[0-9]{3,4}[- ]*[0-9]{4}\");\r\n return phoneRegext.test(phoneNumber);\r\n }\r\n\r\n //Forms - the form to configure validation for.\r\n //setErrors - set the .control-row title attribute with the error text. \r\n public bindValidation(forms: JQuery, setErrors: boolean) {\r\n if (forms.length > 0) {\r\n if (forms.data(\"validator\") === undefined) {\r\n forms.validate(); //Initialize if not already initialized (extras page needs this.)\r\n }\r\n let validationSettings = forms.data(\"validator\").settings;\r\n validationSettings.highlight = (element, errorClass) => $(element).parents(\".control-row\").addClass(\"has-error\");\r\n validationSettings.unhighlight = (element, errorClass) => $(element).parents(\".control-row\").removeClass(\"has-error\");\r\n validationSettings.errorPlacement = (error, element) => {\r\n if (setErrors) {\r\n $(element).parents(\".control-row\").attr(\"title\", error.text());\r\n }\r\n };\r\n\r\n $(\".mt-select2\").on(\"select2:close\", (e) => $(e.target).valid());\r\n _.each(forms.find(\".control-row .field-validation-error\"), (e) => validationSettings.highlight(e));\r\n };\r\n }\r\n }\r\n}","/// \r\n/// \r\n\r\ndeclare var irep: IREP.IREP;\r\ndeclare var mtRotateBanners: boolean;\r\n\r\nnamespace IREP {\r\n \"use strict\";\r\n\r\n export interface IBandRotatorOptions {\r\n timeout?: number;\r\n }\r\n\r\n var defaultOptions: IBandRotatorOptions = {\r\n timeout: 8000\r\n }\r\n\r\n export class BandRotator extends Component {\r\n private $bandRotator: JQuery;\r\n private $bandRotatorWrapper: JQuery;\r\n private $bandRotatorContents: JQuery;\r\n\r\n private isRotating = true;\r\n private timeoutId = 0;\r\n\r\n private options: IBandRotatorOptions;\r\n\r\n constructor(id: string, config: IBandRotatorOptions) {\r\n super(id);\r\n\r\n this.options = $.extend({}, defaultOptions, config);\r\n\r\n this.$bandRotator = $(id);\r\n\r\n this.$bandRotatorWrapper = this.$component.find('.band-rotator-wrapper');\r\n this.$bandRotatorContents = this.$component.find('.band-rotator-contents');\r\n\r\n this.timeoutId = setTimeout(() => { this.fadeNextRotator(false); }, this.options.timeout);\r\n\r\n this.setupNextPrevClicks();\r\n new Hammer(this.$bandRotatorContents[0]).on(\"swiperight\", () => { this.doPrevious(); });\r\n new Hammer(this.$bandRotatorContents[0]).on(\"swipeleft\", () => { this.doNext(); });\r\n }\r\n\r\n fadeNextRotator(fromUser: boolean): JQueryPromise {\r\n if (mtRotateBanners || fromUser) {\r\n return this.$component.find('.band-rotator-content:last-child').fadeOut().promise().then((element) => {\r\n $(element).remove();\r\n this.$bandRotatorContents.prepend(element);\r\n $(element).show();\r\n\r\n if (this.isRotating && mtRotateBanners) {\r\n this.timeoutId = setTimeout(() => this.fadeNextRotator(false), this.options.timeout);\r\n }\r\n });\r\n } else {\r\n var deferred = $.Deferred();\r\n deferred.resolve();\r\n return deferred.promise();\r\n }\r\n }\r\n\r\n fadePrevRotator(): JQueryPromise {\r\n var $prevRotator = this.$component.find('.band-rotator-content:first-child');\r\n $prevRotator.hide();\r\n $prevRotator.remove();\r\n this.$bandRotatorContents.append($prevRotator);\r\n\r\n if (this.isRotating && mtRotateBanners) {\r\n this.timeoutId = setTimeout(() => this.fadePrevRotator(), this.options.timeout);\r\n }\r\n\r\n return $prevRotator.fadeIn().promise();\r\n }\r\n\r\n private doPrevious() {\r\n this.isRotating = false;\r\n clearTimeout(this.timeoutId);\r\n this.fadePrevRotator().then(() => {\r\n this.setupNextPrevClicks();\r\n });\r\n return false;\r\n }\r\n\r\n private doNext() {\r\n this.isRotating = false;\r\n clearTimeout(this.timeoutId);\r\n this.fadeNextRotator(true).then(() => {\r\n this.setupNextPrevClicks();\r\n });\r\n return false;\r\n }\r\n\r\n private setupNextPrevClicks() {\r\n this.$component.find(\".band-rotator-left\").off().one('click', () => { return this.doPrevious(); });\r\n\r\n this.$component.find(\".band-rotator-right\").off().one('click', () => { return this.doNext(); });\r\n }\r\n }\r\n}","/// \r\n/// \r\n/// \r\n/// \r\n\r\ndeclare var irep: IREP.IREP;\r\n\r\nnamespace IREP {\r\n \"use strict\";\r\n export interface IContentRotatorOptions {\r\n rotateHeaders: boolean;\r\n }\r\n\r\n const defaultOptions: IContentRotatorOptions = {\r\n rotateHeaders: false\r\n };\r\n\r\n export class ContentRotator extends Component {\r\n private $headers: JQuery;\r\n private $contents: JQuery;\r\n private $footers: JQuery;\r\n private $circles: JQuery;\r\n private $circlePanes: JQuery;\r\n private $leftArrow: JQuery;\r\n private $rightArrow: JQuery;\r\n\r\n private panes = 0;\r\n private currentPane = 0;\r\n private currentPosition = 0;\r\n\r\n private options: IContentRotatorOptions;\r\n\r\n constructor(id: string, options: IContentRotatorOptions) {\r\n super(id);\r\n\r\n this.options = $.extend({}, defaultOptions, options);\r\n\r\n this.$headers = this.$component.find('.content-rotator--header');\r\n this.$contents = this.$component.find('.content-rotator--content');\r\n this.$footers = this.$contents.find('.content-rotator--content-footer');\r\n this.$circles = this.$component.find('.content-rotator--circles');\r\n\r\n this.$leftArrow = this.$component.find('.content-rotator--arrow-left');\r\n this.$rightArrow = this.$component.find('.content-rotator--arrow-right');\r\n\r\n this.panes = this.$contents.length;\r\n\r\n this.setupCirclePanes();\r\n\r\n this.setupNextPrevButtons();\r\n this.updatePanePosition();\r\n\r\n this.$footers.on('click', (e) => {\r\n var $footer = $(e.delegateTarget);\r\n if ($footer.data('height') !== 1) {\r\n $footer.addClass('mod-expanded');\r\n $footer.parent().find('.content-rotator--content-description').height('100%');\r\n $footer.data('height', 1);\r\n } else {\r\n $footer.removeClass('mod-expanded');\r\n $footer.parent().find('.content-rotator--content-description').height('');\r\n $footer.data('height', 0);\r\n }\r\n });\r\n }\r\n\r\n private setupCirclePanes() {\r\n if (this.panes > 1) {\r\n this.$contents.each((index, element) => {\r\n if (index !== 0) {\r\n const spacer = $('', { 'class': 'content-rotator--circle-spacer' });\r\n this.$circles.append(spacer);\r\n }\r\n var circlePane = $('', { 'class': 'content-rotator--circle-pane', data: { 'pane': index } });\r\n\r\n var childrenCount = $(element).children().length;\r\n for (let i = 0; i < childrenCount; i++) {\r\n const circle = $('', { 'class': 'content-rotator--circle' });\r\n circlePane.append(circle);\r\n }\r\n this.$circles.append(circlePane);\r\n });\r\n }\r\n this.$circlePanes = this.$circles.find('.content-rotator--circle-pane');\r\n this.$circlePanes.on('click', (e) => {\r\n this.currentPane = $(e.delegateTarget).data('pane');\r\n\r\n this.updatePanePosition();\r\n });\r\n }\r\n\r\n private setupNextPrevButtons() {\r\n this.$leftArrow.on('click', () => {\r\n this.currentPane -= 1;\r\n if (this.currentPane < 0) {\r\n this.currentPane = 0;\r\n }\r\n\r\n this.updatePanePosition();\r\n });\r\n\r\n this.$rightArrow.on('click', () => {\r\n this.currentPane += 1;\r\n if (this.currentPane >= this.panes) {\r\n this.currentPane -= 1;\r\n }\r\n\r\n this.updatePanePosition();\r\n });\r\n }\r\n\r\n private updatePanePosition() { \r\n if (this.currentPane === 0) {\r\n this.$leftArrow.hide();\r\n } else {\r\n this.$leftArrow.show();\r\n }\r\n\r\n if (this.currentPane >= this.panes - 1) {\r\n this.$rightArrow.hide();\r\n } else {\r\n this.$rightArrow.show();\r\n }\r\n\r\n this.$circles.find('.mod-highlight').removeClass('mod-highlight');\r\n if (this.$circlePanes.length > 0) {\r\n $(this.$circlePanes[this.currentPane]).addClass('mod-highlight');\r\n }\r\n\r\n this.currentPosition = -1 * this.currentPane * 1175;\r\n\r\n if (this.options.rotateHeaders) {\r\n if (irep.options.user.cultureCode !== \"ar-SA\") {\r\n this.$headers.css('left', this.currentPosition + 'px');\r\n }\r\n else {\r\n this.$headers.css('right', this.currentPosition + 'px');\r\n }\r\n \r\n }\r\n \r\n if (irep.options.user.cultureCode !== \"ar-SA\") {\r\n this.$contents.css('left', this.currentPosition + 'px');\r\n }\r\n else {\r\n this.$contents.css('right', this.currentPosition + 'px');\r\n }\r\n }\r\n }\r\n}\r\n","/// \r\n/// \r\n\r\ndeclare var _gaq: any;\r\ndeclare var popupInitializer: any;\r\n\r\nnamespace IREP {\r\n 'use strict';\r\n\r\n export interface IREPOptions {\r\n appUrl: string;\r\n appUrlSecure: string;\r\n apiUrl: string;\r\n apiUrlSecure: string;\r\n user: any;\r\n pJaxTimeout: number;\r\n isRTL: boolean;\r\n isMotech: boolean;\r\n fileName: string;\r\n }\r\n\r\n export interface ICallApiOptions {\r\n url: string;\r\n type: string;\r\n anonymous?: boolean;\r\n secure?: boolean;\r\n data: any;\r\n headers?: any;\r\n }\r\n\r\n export interface IGetHtmlOptions {\r\n url: string;\r\n type: string;\r\n anonymous?: boolean;\r\n secure?: boolean;\r\n data: any;\r\n headers?: any;\r\n }\r\n\r\n class Initializer {\r\n hasLoaded = false;\r\n isLoading = false;\r\n queue: Array<() => void>;\r\n\r\n constructor() {\r\n this.queue = [];\r\n }\r\n\r\n add(callback: () => any) {\r\n if (this.hasLoaded || this.isLoading) {\r\n callback();\r\n } else {\r\n this.queue.push(callback);\r\n }\r\n }\r\n\r\n insertAtBeginning(callback: () => any) {\r\n if (this.hasLoaded) {\r\n callback();\r\n } else {\r\n this.queue.unshift(callback);\r\n }\r\n }\r\n\r\n execute() {\r\n this.isLoading = true;\r\n this.queue.forEach((callback) => {\r\n callback();\r\n });\r\n\r\n this.queue = [];\r\n this.hasLoaded = true;\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n export class IREP {\r\n public options: IREPOptions;\r\n private initializer: Initializer;\r\n\r\n constructor(options: IREPOptions) {\r\n this.options = options;\r\n this.initializer = new Initializer();\r\n }\r\n\r\n private configureMoment() {\r\n var cultureCode = this.options.user.cultureCode;\r\n\r\n // culture code overrides to map irep culture code to moment locale\r\n switch (cultureCode) {\r\n case \"zh-CHS\":\r\n cultureCode = \"zh-cn\";\r\n break;\r\n\r\n }\r\n\r\n if (this.options.isMotech) {\r\n moment.locale(cultureCode);\r\n }\r\n this.showRelativeDates();\r\n }\r\n\r\n ready(callback: () => any) {\r\n this.initializer.add(callback);\r\n }\r\n\r\n readyFirst(callback: () => any) {\r\n this.initializer.insertAtBeginning(callback);\r\n }\r\n\r\n execute() {\r\n popupInitializer(jQuery);\r\n this.setupJqueryOptions();\r\n this.configureMoment();\r\n this.initializer.execute();\r\n }\r\n\r\n private setupJqueryOptions() {\r\n $.ajaxSetup({\r\n cache: false\r\n });\r\n }\r\n\r\n private oldSchoolCallApi(url: string, type: string, data: any, doneCallback?: () => any, failCallback?: () => any): JQueryXHR {\r\n var xhr = $.ajax({\r\n dataType: \"json\",\r\n url: this.options.apiUrlSecure + url,\r\n contentType: 'application/json',\r\n type: type,\r\n headers: { \"PaxUID\": this.options.user.currentUID },\r\n data: type === \"POST\" ? JSON.stringify(data) : data\r\n });\r\n if (typeof doneCallback === \"function\") {\r\n xhr.done(doneCallback);\r\n }\r\n if (typeof failCallback === \"function\") {\r\n xhr.fail(failCallback);\r\n }\r\n\r\n return xhr;\r\n }\r\n\r\n private newSchoolcallApi(options: ICallApiOptions): JQueryXHR {\r\n options = $.extend({}, { type: 'GET', secure: false, anonymous: false, data: {}, headers: {} }, options);\r\n var headers = $.extend({}, { \"PaxUID\": options.anonymous ? '' : this.options.user.currentUID }, options.headers);\r\n\r\n var xhr = $.ajax({\r\n dataType: \"json\",\r\n url: this.options.apiUrlSecure + options.url,\r\n contentType: 'application/json',\r\n type: options.type,\r\n headers: headers,\r\n data: options.type === \"POST\" ? JSON.stringify(options.data) : options.data\r\n });\r\n\r\n return xhr;\r\n }\r\n\r\n callApi(options: ICallApiOptions | string, type?: string, data?: any, doneCallback?: () => any, failCallback?: () => any): JQueryXHR {\r\n if (typeof (options) === 'string') {\r\n return this.oldSchoolCallApi(options, type, data, doneCallback, failCallback);\r\n } else {\r\n return this.newSchoolcallApi(options);\r\n }\r\n }\r\n\r\n getHtml(options: IGetHtmlOptions): JQueryXHR {\r\n options = $.extend({}, { type: 'GET', secure: false, anonymous: false, data: {}, headers: {} }, options);\r\n var headers = $.extend({}, { \"PaxUID\": options.anonymous ? '' : this.options.user.currentUID }, options.headers);\r\n\r\n var xhr = $.ajax({\r\n dataType: \"html\",\r\n url: (options.secure === true ? this.options.appUrlSecure : this.options.appUrl) + this.options.user.site + '/' + options.url,\r\n contentType: 'application/json',\r\n type: options.type,\r\n headers: headers,\r\n data: options.type === \"POST\" ? JSON.stringify(options.data) : options.data\r\n });\r\n\r\n return xhr;\r\n }\r\n\r\n postFile(options: any): JQueryXHR {\r\n options = $.extend({}, { secure: false, anonymous: false, data: {}, headers: {} }, options);\r\n var headers = $.extend({}, { \"PaxUID\": options.anonymous ? '' : this.options.user.currentUID }, options.headers);\r\n\r\n var xhr = $.ajax({\r\n type: 'post',\r\n url: this.options.appUrl + this.options.user.site + '/' + options.url,\r\n contentType: false,\r\n headers: headers,\r\n processData: false,\r\n data: options.data\r\n });\r\n\r\n return xhr;\r\n }\r\n\r\n track(code: string, type: string, label: string, value: string, data: string): JQueryXHR {\r\n try {\r\n _gaq.push(['_trackEvent', code, type, label, value]);\r\n } catch (e) {\r\n }\r\n return this.callApi({ type: \"POST\", url: 'tracker', data: { code: code, type: type, label: label, value: value, data: data } });\r\n }\r\n\r\n trackPage(type: string, label: string, value: string, data: string): JQueryXHR {\r\n return this.track('IREP51-' + this.options.user.site + '-Page-' + this.options.fileName, type, label, value, data);\r\n }\r\n\r\n logTimings(): void {\r\n try {\r\n if (!(window.performance && window.performance.timing)) {\r\n return;\r\n }\r\n\r\n const timings = {\r\n url: window.location.pathname,\r\n querystring: window.location.search,\r\n hash: window.location.hash,\r\n latency: window.performance.timing.responseStart - window.performance.timing.fetchStart,\r\n transfer: window.performance.timing.responseEnd - window.performance.timing.responseStart,\r\n domInteractive: window.performance.timing.domInteractive - window.performance.timing.domLoading,\r\n domComplete: window.performance.timing.domComplete - window.performance.timing.domInteractive,\r\n onLoad: window.performance.timing.loadEventEnd - window.performance.timing.loadEventStart\r\n }\r\n this.callApi({ type: 'POST', url: 'cerebro/ct', data: timings });\r\n } catch (e) { }\r\n }\r\n\r\n redirect(url: string) {\r\n window.location.href = url;\r\n }\r\n\r\n generateSiteLink(url: string): string {\r\n return this.options.appUrl + this.options.user.site.toLowerCase() + url;\r\n }\r\n\r\n showRelativeDates() {\r\n $.each($(\".moment\"), function (index, item) {\r\n var that = $(item);\r\n var momentDate = moment(that.data(\"date\"));\r\n var relativeDate = momentDate.fromNow();\r\n if (that.data(\"showActualDate\")) {\r\n that.text(that.attr(\"title\"));\r\n that.attr(\"title\", relativeDate);\r\n } else {\r\n that.text(relativeDate);\r\n }\r\n\r\n });\r\n };\r\n\r\n public getTimeStamp() {\r\n if (window.performance && window.performance.now) {\r\n return window.performance.now();\r\n } else {\r\n return new Date().getTime();\r\n }\r\n }\r\n }\r\n}\r\n","/// \r\n/// \r\n/// \r\n\r\ndeclare var irep: IREP.IREP;\r\n\r\nnamespace IREP {\r\n \"use strict\";\r\n\r\n export interface IPasswordValidation {\r\n success: boolean;\r\n message: string;\r\n }\r\n\r\n export class PasswordProcessor {\r\n constructor() {\r\n throw new Error('Static Class, cannot new this class');\r\n }\r\n\r\n // Local Ids for password validation messages\r\n public static PASSWORD_VALIDATION_MESSAGES = {\r\n SUCCESS: 'success',\r\n INVALID_CURRENT_PASSWORD: 'incorrect_password',\r\n INVALID_PASSWORD: 'invalid_password',\r\n PASSWORD_CONFIRM_MISMATCH: 'password_mismatch'\r\n }\r\n\r\n public static validatePassword(password: string, confirmPassword: string): IPasswordValidation {\r\n let isValid = {\r\n success: false,\r\n message: PasswordProcessor.PASSWORD_VALIDATION_MESSAGES.INVALID_PASSWORD\r\n };\r\n\r\n //Logic to test that at least three of these four need to be true\r\n if (this.checkPasswordRequirements(password)) {\r\n if (!PasswordProcessor.checkPasswordAndConfirmMatch(password, confirmPassword)) {\r\n isValid.success = false;\r\n isValid.message = PasswordProcessor.PASSWORD_VALIDATION_MESSAGES.PASSWORD_CONFIRM_MISMATCH;\r\n } else {\r\n isValid.success = true;\r\n isValid.message = PasswordProcessor.PASSWORD_VALIDATION_MESSAGES.SUCCESS\r\n }\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n public static requirementsReport(password: string) {\r\n let upper = new RegExp(\"[A-Z]\").test(password);\r\n let lower = new RegExp(\"[a-z]\").test(password);\r\n let number = new RegExp(\"[0-9]\").test(password);\r\n let special = new RegExp(\"[^A-Za-z0-9]\").test(password);\r\n\r\n if (password.length >= 6) $(\".reqLength\").removeClass(\"unchecked\"); else $(\".reqLength\").addClass(\"unchecked\");\r\n if (upper) $(\".reqCapital\").removeClass(\"unchecked\"); else $(\".reqCapital\").addClass(\"unchecked\");\r\n if (lower) $(\".reqLower\").removeClass(\"unchecked\"); else $(\".reqLower\").addClass(\"unchecked\");\r\n if (number) $(\".reqNumber\").removeClass(\"unchecked\"); else $(\".reqNumber\").addClass(\"unchecked\");\r\n if (special) $(\".reqSpecial\").removeClass(\"unchecked\"); else $(\".reqSpecial\").addClass(\"unchecked\");\r\n }\r\n\r\n public static checkPasswordRequirements(password: string): boolean {\r\n //Must be at least 6 characters long and match 3 of 4 categories: Capital Letter, lowercase letter, number, and special character \r\n let upper = new RegExp(\"[A-Z]\").test(password);\r\n let lower = new RegExp(\"[a-z]\").test(password);\r\n let number = new RegExp(\"[0-9]\").test(password);\r\n let special = new RegExp(\"[^A-Za-z0-9]\").test(password);\r\n\r\n //Logic to test that at least three of these four need to be true\r\n return ([upper, lower, number, special].filter(function (e) { return e == true }).length >= 3 && password.length >= 6);\r\n }\r\n\r\n\r\n public static changePassword(currentPassword: string, password: string, confirmPassword: string, email: string): JQueryDeferred {\r\n // Create a deferred object\r\n let deferred = $.Deferred();\r\n\r\n // Make sure the password is valid\r\n let isValid = PasswordProcessor.validatePassword(password, confirmPassword);\r\n if (isValid.success) {\r\n // Attempt to change the password.\r\n irep.callApi({\r\n url: '/account/changepassword',\r\n type: 'POST',\r\n data: {\r\n Username: email,\r\n OldPassword: currentPassword,\r\n NewPassword: password\r\n },\r\n secure: true\r\n })\r\n .done((data) => {\r\n // If password did change resolve with a happy message\r\n // Otherwise reject \r\n data.passwordChanged === 1 ? deferred.resolve({ success: true, message: PasswordProcessor.PASSWORD_VALIDATION_MESSAGES.SUCCESS })\r\n : deferred.reject({ success: false, message: PasswordProcessor.PASSWORD_VALIDATION_MESSAGES.INVALID_CURRENT_PASSWORD });\r\n })\r\n .fail((data) => {\r\n // Looking at the service, not sure why we would actually get in here. Probably a server error in which case this message\r\n // is the least of your worries.\r\n deferred.reject({ success: false, message: PasswordProcessor.PASSWORD_VALIDATION_MESSAGES.INVALID_PASSWORD });\r\n });\r\n } else {\r\n // Reject if the passwords don't match.\r\n deferred.reject(isValid);\r\n }\r\n\r\n return deferred;\r\n }\r\n\r\n public static checkPasswordAndConfirmMatch(password: string, confirmPassword: string): boolean {\r\n return (password.trim() === confirmPassword.trim());\r\n }\r\n }\r\n}","/// \r\n/// \r\n/// \r\n\r\ndeclare var irep: IREP.IREP;\r\n\r\nnamespace IREP {\r\n\r\n export class IRegistrationVerifyOptions {\r\n id: string;\r\n }\r\n\r\n export class RegistrationVerify extends Component {\r\n private finishProfile: JQuery;\r\n private doItLater: JQuery;\r\n\r\n constructor(options: IRegistrationVerifyOptions) {\r\n super(options.id);\r\n\r\n this.finishProfile = this.$component.find(\".finishButton\"); //The registration submit button\r\n this.doItLater = this.$component.find(\".skipLink\"); //The registration submit button\r\n\r\n this.bindEvents();\r\n this.configurePage();\r\n _gaq.push(['_trackEvent', 'registration', 'verify_load', '']);\r\n }\r\n\r\n private configurePage() {\r\n if (window.location.search.indexOf('mobile') > -1) {\r\n $(\"#registrationBar\").show();\r\n $(\".siteLogo\").hide();\r\n $(\".createAccountBanner\").css('margin-top', '40px');\r\n } else {\r\n $(\"#registrationBar\").hide();\r\n }\r\n }\r\n\r\n private bindEvents() {\r\n this.unbindEvents();\r\n\r\n this.finishProfile.on(\"click\", (e) => this.goToFinish(e));\r\n this.doItLater.on(\"click\", (e) => this.goToLogin(e));\r\n }\r\n\r\n private unbindEvents() {\r\n this.finishProfile.unbind('click');\r\n this.doItLater.unbind('click');\r\n }\r\n\r\n private goToFinish(e: JQueryEventObject) {\r\n _gaq.push(['_trackEvent', 'registration', 'verify_finish', '']);\r\n var qq = this;\r\n e.preventDefault();\r\n\r\n $.ajax({\r\n type: \"get\",\r\n dataType: \"html\",\r\n url: irep.options.appUrl + \"FinishProfile\",\r\n data: $(\"#formVerify\").serialize()\r\n }).done(function (data) {\r\n //Move on to the next step. \r\n $(\"#RegistrationContainer\").html(data);\r\n })\r\n }\r\n\r\n private goToLogin(e: JQueryEventObject) {\r\n e.preventDefault();\r\n if (window.location.search.indexOf('mobile') > -1) {\r\n window.history.go(-(window.history.length - 1)); return false; \r\n }\r\n else {\r\n window.location.href = \"/\";\r\n }\r\n }\r\n }\r\n}","/// \r\n/// \r\n/// \r\n/// \r\n\r\ndeclare var irep: IREP.IREP;\r\n\r\nnamespace IREP {\r\n \"use strict\";\r\n\r\n export interface IResourceGroupOptions {\r\n uid: string;\r\n }\r\n\r\n var defaultOptions: IResourceGroupOptions = {\r\n uid: ''\r\n }\r\n\r\n export class ResourceGroup extends Component {\r\n private $header: JQuery;\r\n private $exam: JQuery;\r\n private options: IResourceGroupOptions;\r\n private displayLimit: number;\r\n private currentQuestion: number;\r\n\r\n constructor(id: string, options: IResourceGroupOptions) {\r\n super(id);\r\n\r\n this.options = $.extend({}, defaultOptions, options);\r\n\r\n this.$header = this.$component.find('.js-learn-group-resource-module-content-header');\r\n\r\n this.$header.on('click', () => this.expandGroup(this.options.uid));\r\n\r\n if (this.$component.find('.learn-group-resource--view-all').length !== 0) {\r\n this.$header.css('cursor', 'pointer');\r\n }\r\n\r\n this.$header.find('.learn-group-resource--view-all').css('visibility', 'visible');\r\n\r\n this.$exam = this.$component.find('.resource-edgeproexam[data-code]');\r\n\r\n this.$exam.on('click', (event) => {\r\n if (!$(event.target).hasClass('resource-module-details-resource-completed')) {\r\n this.startExam(this.$exam.data(\"code\"))\r\n }\r\n });\r\n\r\n } \r\n\r\n private expandGroup(uid: string) {\r\n $(\".rg\" + uid).toggle();\r\n \r\n if (this.$header.find('.learn-group-resource--view-all').html() == '[+]') {\r\n this.$header.find('.learn-group-resource--view-all').html('[-]');\r\n } else {\r\n this.$header.find('.learn-group-resource--view-all').html('[+]');\r\n }\r\n\r\n $.each($(\".rg\" + uid + \" .resource-module .resource-module-image-header\"), function (i, e) {\r\n var img = $(e);\r\n if (img.attr(\"src\") == \"\") {\r\n img.attr(\"src\", img.data(\"src\"));\r\n }\r\n });\r\n }\r\n\r\n private getUrlParameterByName(name: string) {\r\n name = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\r\n var regex = new RegExp(\"[\\\\?&]\" + name + \"=([^]*)\"),\r\n results = regex.exec(location.search);\r\n return results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\r\n }\r\n\r\n private scrollToId(param: string) {\r\n var r = this.getUrlParameterByName(param);\r\n $(document).ready(function () {\r\n \r\n //var param = 'group';\r\n if (window.location.href.indexOf(param) > -1) { \r\n if (r != null && r != undefined && r != '') {\r\n $(\"html, body\").scrollTop($('#' + r).offset().top - 40);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private updateQuizProgress() {\r\n if (this.currentQuestion <= this.displayLimit) {\r\n $(\".quiz-body--progress\").html(this.currentQuestion + ' / ' + this.displayLimit);\r\n } else {\r\n $(\".quiz-body--progress\").hide();\r\n }\r\n \r\n }\r\n\r\n private startExam(code) {\r\n\r\n var self = this;\r\n var quizMask = 'quiz-mask';\r\n this.currentQuestion = 1;\r\n var completionPercentage = 100;\r\n\r\n if ($(\".resource-finalexam\").length > 0) {\r\n completionPercentage = 80;\r\n }\r\n\r\n\r\n $(window).scrollTop(0);\r\n\r\n irep.callApi({\r\n url: \"quiz\",\r\n type: \"GET\",\r\n data: {\r\n activityCode: code\r\n }\r\n }).done((d) => {\r\n var options = $.extend({}, d, {\r\n quizSelector: '#contentContainer, #footer, #header, #mobileAppContainer', quizBodyClass: \"\", returnUrl: \"javascript:window.location=window.location.href\", mask: quizMask, isMobile: false, \"apiRoot\": irep.options.apiUrl, \"appRoot\": irep.options.appUrl,\r\n onRetake: function () {\r\n $('#quiz-body').remove();\r\n self.startExam(code)\r\n return false;\r\n },\r\n })\r\n var quiz = new (irep).Quiz(options);\r\n\r\n quiz.startQuiz();\r\n\r\n let failText = \"You scored [@@CORRECT_ANSWERS @@] out of 100%. To successfully complete this quiz, you must score at least 100% out of 100%.\";\r\n let passText = \"Excellent! You scored [@@CORRECT_ANSWERS @@] out of 100% and have successfully completed this quiz.\";\r\n\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 174511, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n failText = d.text;\r\n });\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 174512, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n passText = d.text;\r\n });\r\n\r\n var requiredPercentage = 100;\r\n\r\n if (irep.options.user.site === \"DMR\") {\r\n requiredPercentage = 80;\r\n }\r\n\r\n $(quiz).on(\"irep.quiz.results\", function (events, result) {\r\n failText = failText.replace(\"[@@CORRECT_ANSWERS@@]\", result.score + \"%\");\r\n passText = passText.replace(\"[@@CORRECT_ANSWERS@@]\", result.score + \"%\");\r\n\r\n \r\n if (completionPercentage === requiredPercentage || (irep.options.user.site === \"DMR\" && completionPercentage >= requiredPercentage)) {\r\n if (irep.options.user.site === \"DMR\" && result.score >= requiredPercentage) {\r\n passText = passText.replace(\"100%\", result.score + \"%\");\r\n $(\"#quiz-body\").prepend(\"\" + passText + \"
\");\r\n $(\"#quiz-body\").addClass(\"removeRetakeQuizBtn\");\r\n }\r\n else if (result.score === requiredPercentage) {\r\n $(\"#quiz-body\").prepend(\"\" + passText + \"
\");\r\n $(\"#quiz-body\").addClass(\"removeRetakeQuizBtn\");\r\n } else {\r\n if (irep.options.user.site === \"DMR\") {\r\n failText = failText.replace(\"100%\", \"80%\");\r\n }\r\n $(\"#quiz-body\").prepend(\"\" + failText + \"
\");\r\n }\r\n }\r\n });\r\n\r\n if (completionPercentage === requiredPercentage || (irep.options.user.site === \"DMR\" && completionPercentage >= requiredPercentage)) {\r\n $(\"#quiz-body\").prepend('');\r\n } \r\n\r\n this.displayLimit = d.displayLimit;\r\n if (completionPercentage === requiredPercentage || (irep.options.user.site === \"DMR\" && completionPercentage >= requiredPercentage)) {\r\n\r\n this.updateQuizProgress();\r\n\r\n $(quiz).on(\"irep.quiz.answer\", (e, result) => {\r\n this.currentQuestion++;\r\n this.updateQuizProgress();\r\n });\r\n }\r\n });\r\n }\r\n }\r\n} ","/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\ndeclare var irep: IREP.IREP;\r\n\r\nnamespace IREP {\r\n\r\n export interface IRetailerSearchOptions {\r\n id: string;\r\n isDre: boolean; \r\n }\r\n \r\n export class RetailerSearch extends ValidationComponent {\r\n private options: IRetailerSearchOptions; \r\n private closeCallback: Function;\r\n private storeManual: StoreManualEntry; \r\n private scrollPosition: number;\r\n\r\n private searchForm: JQuery;\r\n private searchBackdrop: JQuery;\r\n private searchModal: JQuery;\r\n private searchText: JQuery;\r\n private closeForm: JQuery;\r\n private searchResults: JQuery;\r\n private selectedValue: JQuery;\r\n private buttonSelect: JQuery;\r\n private buttonCantFind: JQuery;\r\n private countryNameDisplay: JQuery;\r\n private hiddenPromoterRetailerSearch: JQuery;\r\n private hiddenRetailerSearch: JQuery;\r\n private searchResultItems: JQuery;\r\n\r\n private countryCode: string;\r\n\r\n constructor(options: IRetailerSearchOptions) {\r\n super(options.id);\r\n this.options = options; \r\n\r\n this.searchForm = this.$component.find(\"#StoreSearchForm\");\r\n this.searchBackdrop = this.$component.find(\"#SearchBackdrop\");\r\n this.searchModal = this.$component.find(\"#SearchModal\");\r\n this.closeForm = this.$component.find(\"#FormCloseButton\");\r\n this.searchText = this.$component.find(\"#searchText\");\r\n this.searchResults = this.$component.find(\"#searchResults\");\r\n this.selectedValue = this.$component.find(\"#selectedValue\");\r\n this.buttonSelect = this.$component.find(\"#buttonSelect\");\r\n this.buttonCantFind = this.$component.find(\"#buttonCantFind\");\r\n this.countryNameDisplay = this.$component.find(\".countrySelection\");\r\n this.hiddenPromoterRetailerSearch = this.$component.find(\"#StorePositionModel_PromoterRetailerCountrySearch\");\r\n this.hiddenRetailerSearch = this.$component.find(\"#StorePositionModel_RetailerCountrySearch\");\r\n\r\n this.bindEvents();\r\n }\r\n\r\n private bindEvents() {\r\n this.unbindEvents();\r\n\r\n this.searchBackdrop.on(\"click\", (e) => this.closeSearch());\r\n this.closeForm.on(\"click\", (e) => this.closeSearch());\r\n this.searchModal.on(\"click\", (e) => e.preventDefault());\r\n this.searchText.on(\"keyup\", (e) => this.pauseSearchRetailers());\r\n this.searchResults.on(\"click\", (e) => this.setSelection(e));\r\n this.searchResults.on(\"dblclick\", (e) => this.takeSelection());\r\n this.buttonSelect.on(\"click\", (e) => this.takeSelection());\r\n this.buttonCantFind.on(\"click\", (e) => this.manualRetailer());\r\n this.countryNameDisplay.on(\"click\", (e) => this.showCountryDropdown());\r\n this.hiddenPromoterRetailerSearch.on(\"change\", (e) => this.changePromoterCountry());\r\n this.hiddenRetailerSearch.on(\"change\", (e) => this.changeCountry());\r\n this.searchModal.on(\"click\", (e) => e.stopPropagation()); //Prevent clickthrough on modal causing searchBackdrop.click to fire.\r\n\r\n this.searchRetailers();\r\n document.addEventListener('keypress', (e) => this.processKey2(e)); \r\n }\r\n\r\n //Setting header texts for the search\r\n public setMode(mode: number) {\r\n if (mode == StorePosition.PositionMode.RETAILER) {\r\n $(\".retailerText\").removeClass(\"hidden\");\r\n $(\".manufacturerText\").addClass(\"hidden\");\r\n $(\".promoterText\").addClass(\"hidden\");\r\n } else if (mode == StorePosition.PositionMode.MANUFACTURER) {\r\n $(\".retailerText\").addClass(\"hidden\");\r\n $(\".manufacturerText\").removeClass(\"hidden\");\r\n $(\".promoterText\").addClass(\"hidden\");\r\n } else {\r\n $(\"#RetailerSearchContainer .retailerText\").removeClass(\"hidden\");\r\n $(\".manufacturerText\").addClass(\"hidden\");\r\n $(\"#PromoterRetailerSearchContainer .promoterText\").removeClass(\"hidden\");\r\n }\r\n }\r\n \r\n public processKey2(e: KeyboardEvent) {\r\n if (e.keyCode == 13 || e.keyCode == 32) { //Enter or Space\r\n if (this.searchResults.attr('id') == $(e.target).attr('id')) {\r\n //Take the option if you hit space or enter while it's targeted. \r\n this.takeSelection()\r\n e.preventDefault();\r\n }\r\n }\r\n };\r\n\r\n private unbindEvents() {\r\n this.searchBackdrop.unbind('click');\r\n this.closeForm.unbind('click');\r\n this.searchModal.unbind('click');\r\n this.searchText.unbind('change');\r\n }\r\n\r\n public manualForm(value: StoreManualEntry) {\r\n this.storeManual = value; \r\n }\r\n\r\n //Set the function to be called when the form is closed. Functions receives the selected retailer ID and Name. \r\n public setCallback(closeCallback: (id: number, name: string) => any) {\r\n this.closeCallback = closeCallback;\r\n }\r\n\r\n public openSearch() {\r\n _gaq.push(['_trackEvent', 'registration', 'retailerSearch_Open', '']);\r\n this.searchForm.removeClass('hidden'); //Open Window\r\n\r\n //Resize search window to match the available size of the window.\r\n $(\"#SearchModal\").height($(window).height() - 80);\r\n $(\"#searchResults\").height($(\"#SearchModal\").height() - $(\".searchFields\").outerHeight(true)); \r\n\r\n this.searchRetailers(); //Populate list of retailers \r\n\r\n //Before you open the modal, determine the current position on the screen. \r\n //You need to do position: fixed on mobile, but that resets the screen position to zero, so we need to save the position. \r\n //On desktop you're not able to scroll at all, so you're only scrolling to the current position. \r\n this.scrollPosition = $(\"body\").scrollTop();\r\n $(\"body\").addClass(\"modal-open\"); //Tell the form that the modal is open, to prevent scrolling.\r\n }\r\n\r\n private closeSearch() {\r\n this.searchForm.addClass('hidden');\r\n $(\"body\").removeClass(\"modal-open\"); //Allow scrolling again.\r\n $(\"body\").scrollTop(this.scrollPosition); //Scroll back to the original position. \r\n }\r\n\r\n public setCountry(countryCode: string, countryName: string) {\r\n this.countryCode = countryCode;\r\n this.countryNameDisplay.text(countryName);\r\n this.hiddenRetailerSearch.val(countryCode);\r\n }\r\n\r\n public setPromoterCountry(countryCode: string, countryName: string) {\r\n this.countryCode = countryCode;\r\n this.countryNameDisplay.text(countryName);\r\n this.hiddenPromoterRetailerSearch.val(countryCode);\r\n }\r\n\r\n\r\n private showCountryDropdown() {\r\n this.hiddenRetailerSearch.select2(\"open\");\r\n }\r\n\r\n private showPromoterCountryDropdown() {\r\n this.hiddenPromoterRetailerSearch.select2(\"open\");\r\n }\r\n\r\n\r\n private changeCountry() {\r\n this.setCountry(this.hiddenRetailerSearch.val(), this.hiddenRetailerSearch.select2('data')[0].text);\r\n this.searchRetailers();\r\n }\r\n\r\n private changePromoterCountry() {\r\n this.setCountry(this.hiddenPromoterRetailerSearch.val(), this.hiddenPromoterRetailerSearch.select2('data')[0].text);\r\n this.searchRetailers();\r\n }\r\n\r\n\r\n private setSelection(e: JQueryEventObject) {\r\n if (e.target.localName == \"li\") {\r\n $(\"li.selected\").removeClass('selected'); //Clear previous selections\r\n $(e.target).addClass('selected'); //Select current item. \r\n this.selectedValue.html($(e.target).html());\r\n this.searchResults.val($(e.target).attr('data-value'));\r\n this.buttonSelect.removeClass('hidden');\r\n }\r\n }\r\n\r\n private takeSelection() {\r\n if (this.searchResults.val() != null && this.searchResults.val() != \"\") {\r\n this.closeSearch();\r\n this.closeCallback(this.searchResults.val(), this.selectedValue.html());\r\n }\r\n }\r\n\r\n private manualRetailer() {\r\n this.closeSearch();\r\n this.storeManual.open(true); \r\n }\r\n\r\n private pauseSearchRetailers() {\r\n var qq = this;\r\n clearTimeout($(this).data('timeout'));\r\n $(this).data('timeout', setTimeout(function () {\r\n qq.searchRetailers(); \r\n }, 500));\r\n }\r\n\r\n private searchRetailers() {\r\n var qq = this;\r\n\r\n $.ajax({\r\n type: \"get\",\r\n dataType: \"html\",\r\n url: irep.options.appUrl + \"SearchRetailers\",\r\n data: { CountryCode: this.countryCode, SearchText: this.searchText.val(), IsDre: this.options.isDre, Limit: 100 }\r\n }).done(function (data) {\r\n var d = $.parseJSON(data);\r\n var listItems = \"\";\r\n\r\n for (var i = 0; i < d.Data.length; i++) {\r\n listItems += \"\" + d.Data[i].Name + \"\";\r\n }\r\n qq.searchResults.html(listItems);\r\n });\r\n }\r\n }\r\n\r\n}","/// \r\n/// \r\n/// \r\n/// \r\n\r\ndeclare var irep: IREP.IREP;\r\ndeclare var FB: facebook.FacebookStatic;\r\ndeclare var AppleID: { auth: { signIn: Function, init: Function } };\r\n\r\nnamespace IREP {\r\n \"use strict\";\r\n export class SSOConnect {\r\n\r\n constructor() {\r\n var that = this;\r\n\r\n if (typeof FB !== \"undefined\") {\r\n FB.init({\r\n appId: '517395052008939',\r\n version: 'v3.0',\r\n status: true,\r\n cookie: true,\r\n xfbml: true\r\n });\r\n }\r\n\r\n if (typeof gapi !== \"undefined\") {\r\n gapi.load('auth2', function () {\r\n gapi.auth2.init({\r\n //api_key: 'AIzaSyAtXlFKLc5ALnLyyvW_QGnLYpXR1tkpBk4',\r\n client_id: '55919913559-sibt0ukd261jcclvlnmbaakamcf910tj.apps.googleusercontent.com',\r\n cookie_policy: 'single_host_origin',\r\n scope: 'https://www.googleapis.com/auth/plus.login',\r\n fetch_basic_profile: true\r\n });\r\n });\r\n }\r\n\r\n $(\"#ConnectedToGoogle\").on('change', function () {\r\n if ($(\"#ConnectedToGoogle\").is(':checked')) {\r\n //connect account ; call google auth \r\n try {\r\n that.loginGoogle();\r\n }\r\n catch (error) {\r\n console.log(error);\r\n $(\"#ConnectedToGoogle\").prop('checked', false);\r\n }\r\n } else {\r\n //disconnect account ; \r\n that.execDisconnect(\"GM\");\r\n }\r\n\r\n });\r\n\r\n $(\"#ConnectedToFacebook\").on('change', function () {\r\n if ($(\"#ConnectedToFacebook\").is(':checked')) {\r\n //connect account ; call google auth \r\n try {\r\n that.loginFacebook();\r\n }\r\n catch (error) {\r\n console.log(error);\r\n $(\"#ConnectedToFacebook\").prop('checked', false);\r\n }\r\n } else {\r\n //disconnect account ; \r\n that.execDisconnect(\"FB\");\r\n }\r\n });\r\n\r\n this.handleAppleSso();\r\n $(\"#ConnectedToApple\").on('change', function () {\r\n if ($(\"#ConnectedToApple\").is(':checked')) {\r\n // Connect account\r\n try {\r\n that.loginApple();\r\n }\r\n catch (error) {\r\n $(\"#ConnectedToApple\").prop('checked', false);\r\n }\r\n } else {\r\n // Disconnect account ; \r\n that.execDisconnect(\"AP\");\r\n }\r\n });\r\n }\r\n\r\n private loginApple() {\r\n AppleID.auth.signIn();\r\n }\r\n\r\n private handleAppleSso() {\r\n // Listen for authorization success\r\n type AppleSsoSuccess = { detail: { authorization: { code: string, id_token: string, state: string }, user: { name: { firstName: string, lastName: string }, email: string } } } & Event\r\n document.addEventListener('AppleIDSignInOnSuccess', (data: AppleSsoSuccess) => {\r\n let auth = data.detail.authorization;\r\n $(\".ssoType\").val(\"AP\");\r\n $(\".ssoAccessToken\").val(auth.id_token);\r\n this.execAuth(auth.state);\r\n });\r\n document.addEventListener('AppleIDSignInOnFailure', (data: Event) => {\r\n $(\"#ConnectedToApple\").prop('checked', false)\r\n });\r\n }\r\n\r\n public initRegistrationFacebook() {\r\n if (typeof FB !== \"undefined\") {\r\n FB.api('/' + sessionStorage.ssoUserId, { access_token: sessionStorage.ssoAccessToken, fields: 'email,first_name,last_name' }, function (resp) {\r\n $(\"#StorePositionModel_Info_UserName\").val(resp.email);\r\n $(\"#StorePositionModel_Info_FirstName\").val(resp.first_name);\r\n $(\"#StorePositionModel_Info_LastName\").val(resp.last_name);\r\n });\r\n }\r\n }\r\n\r\n public initRegistrationGoogle() {\r\n $(\"#StorePositionModel_Info_UserName\").val(sessionStorage.ssoEmail);\r\n $(\"#StorePositionModel_Info_FirstName\").val(sessionStorage.firstname);\r\n $(\"#StorePositionModel_Info_LastName\").val(sessionStorage.lastname);\r\n\r\n }\r\n\r\n public loginGoogle() {\r\n\r\n if (typeof gapi !== \"undefined\") {\r\n var that = this;\r\n\r\n var GoogleAuth = gapi.auth2.getAuthInstance();\r\n\r\n GoogleAuth.signIn().then(function (r) {\r\n $(\".ssoType\").val(\"GM\");\r\n var profile = GoogleAuth.currentUser.get().getBasicProfile();\r\n $(\".ssoUserId\").val(profile.getId());\r\n\r\n var authResponse = GoogleAuth.currentUser.get().getAuthResponse();\r\n $(\".ssoAccessToken\").val(authResponse.access_token);\r\n $(\".ssoEmail\").val(profile.getEmail());\r\n\r\n that.execAuth();\r\n }).catch(function (r) {\r\n $(\"#ConnectedToGoogle\").prop('checked', false)\r\n });\r\n }\r\n }\r\n\r\n\r\n // example at https://developers.facebook.com/docs/facebook-login/web\r\n public loginFacebook() {\r\n if (typeof FB !== \"undefined\") {\r\n var that = this;\r\n FB.login(function (response) {\r\n // Check if user authorized the app\r\n if (response.authResponse) {\r\n // Check if user is connected to FB \r\n FB.getLoginStatus(function (response) {\r\n if (response.status === 'connected') {\r\n FB.api('/me', { fields: 'email' }, function (result) {\r\n $(\".ssoType\").val(\"FB\");\r\n $(\".ssoUserId\").val(response.authResponse.userID);\r\n $(\".ssoAccessToken\").val(response.authResponse.accessToken);\r\n $(\".ssoEmail\").val(result.email);\r\n that.execAuth();\r\n });\r\n }\r\n });\r\n }\r\n }, { scope: 'email, public_profile', return_scopes: true });\r\n }\r\n }\r\n\r\n protected execDisconnect(type: string) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: irep.options.appUrl + \"DisconnectSso\",\r\n data: {\r\n type: type\r\n }\r\n }).done((x) => {\r\n window.location.reload();\r\n });\r\n }\r\n\r\n /* This function differs from the v3 version */\r\n protected execAuth(state: string = undefined) {\r\n $(\"#fbConnectFail\").addClass(\"hidden\");\r\n $(\"#googleConnectFail\").addClass(\"hidden\");\r\n $(\"#appleConnectFail\").addClass(\"hidden\");\r\n\r\n var that = this;\r\n\r\n $.ajax({\r\n type: \"POST\",\r\n url: irep.options.appUrl + ($(\"#ssoType\").val() === \"AP\" ? \"CheckAppleSSO\" : \"CheckSSO\"),\r\n data: {\r\n type: $(\"#ssoType\").val(),\r\n userId: $(\"#ssoUserId\").val(),\r\n accessToken: $(\"#ssoAccessToken\").val(),\r\n email: $(\"#ssoEmail\").val(),\r\n state: state\r\n }\r\n }).done((x) => {\r\n if (x.valid == true || x.valid === undefined) {\r\n //Reset toggle & show error. \r\n if ($(\"#ssoType\").val() == \"FB\") {\r\n $(\"#fbConnectFail\").html(x.errorText);\r\n $(\"#fbConnectFail\").removeClass(\"hidden\");\r\n $(\"#ConnectedToFacebook\").prop('checked', false)\r\n } else if ($(\"#ssoType\").val() == \"GM\") {\r\n $(\"#googleConnectFail\").html(x.errorText);\r\n $(\"#googleConnectFail\").removeClass(\"hidden\");\r\n $(\"#ConnectedToGoogle\").prop('checked', false)\r\n } else if ($(\"#ssoType\").val() == \"AP\") {\r\n $(\"#appleConnectFail\").html(x.errorText);\r\n $(\"#appleConnectFail\").removeClass(\"hidden\");\r\n $(\"#ConnectedToApple\").prop('checked', false)\r\n }\r\n }\r\n else {\r\n if (x.userId) {\r\n $(\".ssoUserId\").val(x.userId);\r\n }\r\n if (x.email) {\r\n $(\".ssoEmail\").val(x.email);\r\n }\r\n that.submitSso();\r\n }\r\n });\r\n }\r\n\r\n protected submitSso() {\r\n var that = this;\r\n $.ajax({\r\n type: \"POST\",\r\n url: irep.options.appUrl + \"SsoUnify\",\r\n data: {\r\n type: $(\"#ssoType\").val(),\r\n userId: $(\"#ssoUserId\").val(),\r\n accessToken: $(\"#ssoAccessToken\").val(),\r\n email: $(\"#ssoEmail\").val()\r\n }\r\n }).done((x) => {\r\n if (x.valid != true) {\r\n //Reset toggle. We first check association before unifying. \r\n if ($(\"#ssoType\").val() == \"FB\") {\r\n $(\"#fbConnectFail\").html(x.errorText);\r\n $(\"#fbConnectFail\").removeClass(\"hidden\");\r\n $(\"#ConnectedToFacebook\").prop('checked', false)\r\n } else if ($(\"#ssoType\").val() == \"GM\") {\r\n $(\"#googleConnectFail\").html(x.errorText);\r\n $(\"#googleConnectFail\").removeClass(\"hidden\");\r\n $(\"#ConnectedToGoogle\").prop('checked', false)\r\n } else if ($(\"#ssoType\").val() == \"AP\") {\r\n $(\"#appleConnectFail\").html(x.errorText);\r\n $(\"#appleConnectFail\").removeClass(\"hidden\");\r\n $(\"#ConnectedToApple\").prop('checked', false)\r\n }\r\n } else {\r\n window.location.reload();\r\n }\r\n });\r\n }\r\n }\r\n}","/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\ndeclare var irep: IREP.IREP;\r\n\r\nnamespace IREP {\r\n\r\n export interface IStoreManualOptions {\r\n id: string;\r\n }\r\n\r\n export class StoreManualEntry extends ValidationComponent {\r\n private snlCallback: Function;\r\n private rsnlCallback: Function;\r\n private searchForm: JQuery;\r\n private searchBackdrop: JQuery;\r\n private closeForm: JQuery;\r\n private searchResults: JQuery;\r\n private buttonSearch: JQuery;\r\n private buttonSelect: JQuery;\r\n private buttonBack: JQuery;\r\n private buttonFinish: JQuery;\r\n private searchModal: JQuery;\r\n private form: JQuery;\r\n private storeComponent: JQuery;\r\n private promoterComponent: JQuery;\r\n private retailerControl: JQuery;\r\n private countrySearch: JQuery;\r\n private provinceList: JQuery;\r\n private provinceContainer: JQuery;\r\n private recommendedStoreList: JQuery;\r\n private scrollPosition: number;\r\n private showRetailer: boolean;\r\n\r\n constructor(options: IStoreManualOptions) {\r\n super(options.id);\r\n this.searchResults = this.$component.find(\"#searchResults2\");\r\n this.recommendedStoreList = this.$component.find(\".recommendedStoreList\");\r\n this.searchForm = this.$component.find(\"#StoreManualEntry\");\r\n this.searchBackdrop = this.$component.find(\"#SearchBackdrop\");\r\n this.closeForm = this.$component.find(\"#FormCloseButton\");\r\n this.buttonSearch = this.$component.find(\"#buttonSearch\");\r\n this.buttonSelect = this.$component.find(\"#buttonSelect\");\r\n this.buttonBack = this.$component.find(\"#buttonBack\");\r\n this.buttonFinish = this.$component.find(\"#buttonFinish\");\r\n this.searchModal = this.$component.find(\"#SearchModal\");\r\n this.form = this.$component.find(\"#formValidateStore\");\r\n this.storeComponent = this.$component.find(\".manualInfo\"); //This form does not perform a postback - it exists for validation purposes. \r\n this.promoterComponent = this.$component.find(\".promoterInfo\"); //This form does not perform a postback - it exists for validation purposes. \r\n this.retailerControl = this.$component.find(\".retailerControl\");\r\n this.countrySearch = this.$component.find(\"#StorePositionModel_StoreManualEntryModel_sInfo_Country\");\r\n this.provinceList = this.$component.find(\"#StorePositionModel_StoreManualEntryModel_sInfo_Province\");\r\n this.provinceContainer = this.$component.find(\".stateSelect\");\r\n\r\n this.bindEvents();\r\n }\r\n\r\n public getForm() {\r\n return this.form;\r\n }\r\n\r\n //Setting header texts for the search\r\n public setMode(mode: number) {\r\n if (mode == StorePosition.PositionMode.RETAILER) {\r\n $(\".retailerText\").removeClass(\"hidden\");\r\n $(\".manufacturerText\").addClass(\"hidden\");\r\n this.storeComponent.removeClass('hidden');\r\n this.promoterComponent.addClass('hidden');\r\n } else if (mode == StorePosition.PositionMode.MANUFACTURER) {\r\n $(\".retailerText\").addClass(\"hidden\");\r\n $(\".manufacturerText\").removeClass(\"hidden\");\r\n this.storeComponent.removeClass('hidden');\r\n this.promoterComponent.addClass('hidden');\r\n } else {\r\n $(\".retailerText\").addClass(\"hidden\");\r\n $(\".manufacturerText\").addClass(\"hidden\");\r\n this.storeComponent.addClass('hidden');\r\n this.promoterComponent.removeClass('hidden');\r\n }\r\n }\r\n\r\n private bindEvents() {\r\n this.unbindEvents();\r\n\r\n this.searchModal.on(\"click\", function (evt) { evt.stopPropagation(); }); //Prevent clickthrough on modal causing searchBackdrop.click to fire.\r\n this.searchBackdrop.on(\"click\", (e) => this.close());\r\n this.closeForm.on(\"click\", (e) => this.close());\r\n this.buttonSearch.on(\"click\", (e) => this.attemptMatch());\r\n this.buttonFinish.on(\"click\", (e) => this.validateForm(true));\r\n this.buttonSelect.on(\"click\", (e) => this.takeSelection());\r\n this.buttonBack.on(\"click\", (e) => this.backForm());\r\n this.countrySearch.on(\"change\", (e) => this.changeCountry(e));\r\n this.searchResults.on(\"click\", (e) => this.setSelection(e));\r\n this.searchResults.on(\"dblclick\", (e) => this.takeSelection());\r\n }\r\n\r\n private unbindEvents() {\r\n this.searchModal.unbind('click');\r\n this.searchBackdrop.unbind('click');\r\n this.closeForm.unbind('click');\r\n this.buttonSearch.unbind('click');\r\n this.buttonFinish.unbind('click');\r\n this.buttonSelect.unbind('click');\r\n this.buttonBack.unbind('click');\r\n this.countrySearch.unbind('change');\r\n this.searchResults.unbind('click');\r\n this.searchResults.unbind('dblclick');\r\n }\r\n\r\n private setSelection(e: JQueryEventObject) {\r\n if (e.target.localName == \"li\") {\r\n $(\"li.selected\").removeClass('selected'); //Clear previous selections\r\n $(e.target).addClass('selected'); //Select current item. \r\n }\r\n }\r\n\r\n private takeSelection() {\r\n var storeId = this.searchResults.children('.selected').attr('data-value');\r\n if (storeId != null && storeId != \"\") {\r\n this.close();\r\n if (this.retailerControl.hasClass('hidden')) {\r\n this.snlCallback(storeId);\r\n } else {\r\n this.rsnlCallback(this.searchResults.children('.selected').attr('data-storeChainId'), storeId);\r\n }\r\n }\r\n }\r\n\r\n private backForm() {\r\n this.recommendedStoreList.addClass('hidden');\r\n this.buttonSelect.addClass('hidden');\r\n this.buttonBack.addClass('hidden');\r\n this.buttonFinish.addClass('hidden');\r\n $(\".enteredStore\").addClass('hidden');\r\n $(\".addressField\").removeClass('hidden');\r\n $(\"#buttonSearch\").removeClass('hidden');\r\n\r\n this.handleRetailer();\r\n }\r\n\r\n private attemptMatch() {\r\n if (!this.validateForm(false)) {\r\n return false;\r\n }\r\n\r\n var retailerName = $(\"#StorePositionModel_Info_StoreChainId :selected\").text();\r\n if (!this.retailerControl.hasClass('hidden')) {\r\n retailerName = $(\"#StorePositionModel_StoreManualEntryModel_sInfo_RetailerName\").val();\r\n }\r\n\r\n var qq = this;\r\n $.ajax({\r\n type: \"get\",\r\n dataType: \"html\",\r\n url: irep.options.appUrl + \"FindPossibleMatches\",\r\n data: {\r\n retailerName: retailerName,\r\n site: 0,\r\n storeChainId: null,\r\n storeName: $(\"#StorePositionModel_StoreManualEntryModel_sInfo_StoreName\").val(),\r\n storeNumber: $(\"#StorePositionModel_StoreManualEntryModel_sInfo_StoreNumber\").val(),\r\n address: $(\"#StorePositionModel_StoreManualEntryModel_sInfo_Address\").val(),\r\n city: $(\"#StorePositionModel_StoreManualEntryModel_sInfo_City\").val(),\r\n province: $(\"#StorePositionModel_StoreManualEntryModel_sInfo_Province :selected\").text(),\r\n postalCode: $(\"#StorePositionModel_StoreManualEntryModel_sInfo_PostalCode\").val(),\r\n countryCode: this.countrySearch.val()\r\n }\r\n }).done(function (data) {\r\n var d = $.parseJSON(data);\r\n\r\n if (d == null || d.Data == null || d.Data.length == 0) {\r\n qq.validateForm(true);\r\n }\r\n else {\r\n var listItems = \"\";\r\n\r\n for (var i = 0; i < d.Data.length; i++) {\r\n listItems += \"\" + d.Data[i].Name + \"\";\r\n }\r\n qq.searchResults.html(listItems);\r\n\r\n qq.recommendedStoreList.removeClass('hidden');\r\n qq.buttonSelect.removeClass('hidden');\r\n qq.buttonBack.removeClass('hidden');\r\n qq.buttonFinish.removeClass('hidden');\r\n\r\n $(\"#retailerInput\").html(retailerName);\r\n $(\"#storeNameInput\").html($(\"#StorePositionModel_StoreManualEntryModel_sInfo_StoreName\").val());\r\n $(\"#storeNumberInput\").html($(\"#StorePositionModel_StoreManualEntryModel_sInfo_StoreNumber\").val());\r\n $(\"#addressInput\").html($(\"#StorePositionModel_StoreManualEntryModel_sInfo_Address\").val());\r\n $(\"#cityInput\").html($(\"#StorePositionModel_StoreManualEntryModel_sInfo_City\").val());\r\n $(\"#provinceInput\").html($(\"#StorePositionModel_StoreManualEntryModel_sInfo_Province :selected\").text());\r\n $(\"#postalCodeInput\").html($(\"#StorePositionModel_StoreManualEntryModel_sInfo_PostalCode\").val());\r\n\r\n $(\".enteredStore\").removeClass('hidden');\r\n $(\".addressField\").addClass('hidden');\r\n $(\"#buttonSearch\").addClass('hidden');\r\n }\r\n });\r\n }\r\n\r\n //Call this before opening the form. Set the callback functions for this form, so you can get the store and retailer not selected results if needed. \r\n public setCallback(snlCallback: (storeId: number) => any, rsnlCallback: (retailerId: number, storeId: number) => any) {\r\n this.snlCallback = snlCallback;\r\n this.rsnlCallback = rsnlCallback;\r\n }\r\n\r\n private handleRetailer() {\r\n if (this.showRetailer) {\r\n this.retailerControl.addClass('required');\r\n this.retailerControl.removeClass(\"hidden\");\r\n } else {\r\n this.retailerControl.removeClass('required');\r\n this.retailerControl.addClass(\"hidden\");\r\n this.retailerControl.val(''); \r\n }\r\n\r\n }\r\n\r\n //Call this top open this form for the user. \r\n public open(showRetailer: boolean) {\r\n this.backForm();\r\n _gaq.push(['_trackEvent', 'registration', 'storeManualEntry_Open', '']);\r\n this.searchForm.removeClass('hidden');\r\n this.showRetailer = showRetailer;\r\n this.handleRetailer();\r\n\r\n //Before you open the modal, determine the current position on the screen. \r\n //You need to do position: fixed on mobile, but that resets the screen position to zero, so we need to save the position. \r\n //On desktop you're not able to scroll at all, so you're only scrolling to the current position. \r\n this.scrollPosition = $(\"body\").scrollTop();\r\n $(\"body\").addClass(\"modal-open\"); //Tell the form that the modal is open, to prevent scrolling.\r\n }\r\n\r\n private close() {\r\n this.searchForm.addClass('hidden');\r\n $(\"body\").removeClass(\"modal-open\"); //Allow scrolling again.\r\n $(\"body\").scrollTop(this.scrollPosition); //Scroll back to the original position. \r\n }\r\n\r\n //Update the list of available provinces in the geo.\r\n public updateProvinces(countryCode: string) {\r\n if (countryCode == null) return; /* initialization bug */\r\n var qq = this;\r\n $.ajax({\r\n type: \"get\",\r\n dataType: \"html\",\r\n url: irep.options.appUrl + \"ProvinceList\",\r\n data: { countryCode: countryCode }\r\n }).done(function (data) {\r\n var d = $.parseJSON(data);\r\n if (d.Provinces.length == 0) {\r\n //If no provinces available, hide the province dropdown and remove the requirement.\r\n qq.provinceList.closest('.has-error').removeClass('has-error');\r\n qq.provinceList.removeAttr('required');\r\n qq.provinceContainer.addClass('hidden');\r\n } else {\r\n //We have provinces, make sure the province list is visible and that we are required. \r\n qq.provinceList.attr('required', 'required');\r\n qq.provinceContainer.removeClass('hidden');\r\n var listItems = \"\";\r\n for (var i = 0; i < d.Provinces.length; i++) {\r\n listItems += \"\";\r\n }\r\n qq.provinceList.html(listItems);\r\n }\r\n qq.provinceList.val(null).trigger('change'); //Remove any previously selected province.\r\n });\r\n }\r\n\r\n //When the country is changed on the parent form, set the country on this form, and trigger a change so the below 'ChangeCountry' function is called. \r\n public setCountry(countryCode: string, trigger: boolean) {\r\n if (trigger) {\r\n this.countrySearch.val(countryCode).trigger('change');\r\n }\r\n else {\r\n this.countrySearch.val(countryCode);\r\n }\r\n }\r\n\r\n //When the country is changed, update the province list. \r\n private changeCountry(e: JQueryEventObject) {\r\n this.updateProvinces(this.countrySearch.val());\r\n e.preventDefault();\r\n }\r\n\r\n public isValid(checkRetailer: boolean) {\r\n if (checkRetailer && $(\"#StorePositionModel_StoreManualEntryModel_sInfo_RetailerName\").val().trim() == \"\") return false; \r\n\r\n return ($(\"#StorePositionModel_StoreManualEntryModel_sInfo_StoreName\").val().trim() != \"\" && \r\n $(\"#StorePositionModel_StoreManualEntryModel_sInfo_Address\").val().trim() != \"\" && \r\n $(\"#StorePositionModel_StoreManualEntryModel_sInfo_City\").val().trim() != \"\" )\r\n }\r\n\r\n //Validate and close the form if valid. \r\n public validateForm(executeCallbacks: boolean) {\r\n this.bindValidation(this.form, false);\r\n if (this.form.valid()) {\r\n if (executeCallbacks) {\r\n //Perform callback to the storePosition control.\r\n if (!this.showRetailer) {\r\n this.snlCallback(0);\r\n } else {\r\n this.rsnlCallback(0, 0);\r\n }\r\n this.close();\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n }\r\n}","/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\ndeclare var irep: IREP.IREP;\r\n\r\nnamespace IREP {\r\n\r\n export interface IStorePositionOptions {\r\n id: string;\r\n countryCode: string;\r\n countryName: string;\r\n retailerSearch: RetailerSearch;\r\n promoterRetailerSearch: RetailerSearch;\r\n storeManual: StoreManualEntry;\r\n isDre: boolean;\r\n }\r\n\r\n enum PositionIds {\r\n RetailSales = 300,\r\n OnlineSales = 301,\r\n CallCenter = 302,\r\n Promoter = 303,\r\n Manager = 304,\r\n Other = 305,\r\n ManagerOneStore = 306,\r\n ManagerMultiple = 307,\r\n DepartmentManager = 308,\r\n RegionalManager = 309\r\n }\r\n\r\n export class StorePosition extends Component {\r\n\r\n // Local Ids for password validation messages\r\n public static PositionMode = {\r\n RETAILER: 1,\r\n MANUFACTURER: 2,\r\n PROMOTER: 3,\r\n MANAGER: 4\r\n }\r\n\r\n private options: IStorePositionOptions;\r\n private retailerSearch: RetailerSearch;\r\n private promoterRetailerSearch: RetailerSearch;\r\n private storeManual: StoreManualEntry;\r\n\r\n private countryCode: string;\r\n private dataStatus: string;\r\n\r\n private storePosition: JQuery;\r\n private storePositionFail: JQuery;\r\n private storeNotListedFail: JQuery;\r\n private positionOptions: JQuery;\r\n private managerSelect: JQuery;\r\n private otherInfo: JQuery;\r\n private promoterStore: JQuery;\r\n private promoterRetailerRadio: JQuery;\r\n private promoterStoreRadio: JQuery;\r\n private promoterRetailerRadioSelect: JQuery;\r\n private promoterStoreRadioSelect: JQuery;\r\n private retailerSelect: JQuery;\r\n private storeSelect: JQuery;\r\n private promoterRetailerSelect: JQuery;\r\n private searchRetailer: JQuery;\r\n private searchLocation: JQuery;\r\n private searchPromoterRetailer: JQuery;\r\n private searchRetailerBtn: JQuery;\r\n private searchLocationBtn: JQuery;\r\n private searchPromoterRetailerBtn: JQuery;\r\n private retailerLabel: JQuery;\r\n private storeLocationLabel: JQuery;\r\n private promoterRetailerLabel: JQuery;\r\n private cantFindStoreLocationLabel: JQuery;\r\n private initializing: boolean;\r\n\r\n private lastStoreId: number; \r\n\r\n constructor(options: IStorePositionOptions) {\r\n super(options.id);\r\n this.lastStoreId = irep.options.user.storeId;\r\n this.options = options;\r\n this.retailerSearch = options.retailerSearch;\r\n this.promoterRetailerSearch = options.promoterRetailerSearch;\r\n this.storeManual = options.storeManual;\r\n this.countryCode = options.countryCode;\r\n\r\n this.storePosition = this.$component.find(\".storePosition\");\r\n this.storePositionFail = this.$component.find(\"#storePositionFail\");\r\n this.storeNotListedFail = this.$component.find(\"#storeNotListedFail\");\r\n this.positionOptions = this.$component.find(\".positionOptions .option\");\r\n this.managerSelect = this.$component.find(\".managerSelect\");\r\n this.otherInfo = this.$component.find(\".otherInfo\");\r\n this.promoterStore = this.$component.find(\"#PromoterStore\");\r\n this.promoterRetailerRadio = this.$component.find(\"[name='StorePositionModel.PromoData.SpecificRetailer']\");\r\n this.promoterStoreRadio = this.$component.find(\"[name='StorePositionModel.PromoData.SpecificStore']\");\r\n this.promoterRetailerRadioSelect = this.$component.find(\".promoterRetailerRadioSelect\");\r\n this.promoterStoreRadioSelect = this.$component.find(\".promoterStoreRadioSelect\");\r\n this.retailerSelect = this.$component.find(\".retailerSelect\");\r\n this.storeSelect = this.$component.find(\".storeSelect\");\r\n this.promoterRetailerSelect = this.$component.find(\".promoterRetailerSelect\");\r\n this.searchRetailer = this.$component.find(\"#SearchRetailer\"); //The retailer select box \r\n this.searchLocation = this.$component.find(\"#SearchLocation\"); //The store select box\r\n this.searchPromoterRetailer = this.$component.find(\"#SearchPromoterRetailer\"); //The promoter retailer select box\r\n this.searchRetailerBtn = this.$component.find(\".searchRetailer\");\r\n this.searchLocationBtn = this.$component.find(\".searchLocation\");\r\n this.searchPromoterRetailerBtn = this.$component.find(\".searchPromoterRetailer\");\r\n\r\n this.storeLocationLabel = this.$component.find(\"#LocationLabel\");\r\n this.promoterRetailerLabel = this.$component.find(\"#PromoterRetailerLabel\");\r\n this.retailerLabel = this.$component.find(\"#RetailerLabel\");\r\n\r\n\r\n this.retailerSearch.setCountry(options.countryCode, options.countryName);\r\n this.promoterRetailerSearch.setPromoterCountry(options.countryCode, options.countryName);\r\n this.storeManual.setCountry(options.countryCode, false);\r\n\r\n this.initCallbacks();\r\n this.retailerSearch.manualForm(this.storeManual);\r\n this.promoterRetailerSearch.manualForm(this.storeManual);\r\n this.bindEvents();\r\n\r\n if (options.isDre) {\r\n this.dataStatus = \"DMR_ALL\";\r\n this.updateRetailers(true);\r\n }\r\n\r\n this.initSelect2();\r\n }\r\n\r\n //When the country changes on the main registration form, this is called to update the children forms to the store position control, and to update the list of retailers in the dropdown.\r\n public setCountry(value: string, name: string) {\r\n this.countryCode = value;\r\n this.retailerSearch.setCountry(value, name);\r\n this.promoterRetailerSearch.setPromoterCountry(value, name);\r\n this.storeManual.setCountry(value, true);\r\n this.updateRetailers(false);\r\n }\r\n\r\n private bindEvents() {\r\n this.unbindEvents();\r\n this.positionOptions.on(\"click\", (e) => this.changePosition($(e.delegateTarget), false));\r\n this.promoterRetailerRadioSelect.on(\"change\", (e) => this.promoterRetailerRadioChoice());\r\n this.promoterStoreRadioSelect.on(\"change\", (e) => this.promoterStoreRadioChoice());\r\n this.promoterRetailerSelect.on(\"change\", (e) => this.promoterRetailerRadioShow());\r\n this.retailerSelect.on(\"change\", (e) => this.promoterStoreRadioShow());\r\n this.searchPromoterRetailer.on(\"change\", (e) => { this.changePromoterLocation(); this.clearError(e); });\r\n this.searchRetailer.on(\"change\", (e) => { this.employeeCodeCheck(); this.changeLocationList(this.initializing); this.clearError(e); });\r\n this.searchLocation.on(\"change\", (e) => { this.lastStoreId = this.searchLocation.val(); this.clearError(e); });\r\n this.searchRetailerBtn.on(\"click\", (e) => this.retailerOpenSearch());\r\n this.searchLocationBtn.on(\"click\", (e) => this.openStoreEntry());\r\n this.searchPromoterRetailerBtn.on(\"click\", (e) => this.promoterRetailerOpenSearch());\r\n }\r\n\r\n private unbindEvents() {\r\n this.promoterRetailerRadioSelect.unbind(\"change\");\r\n this.promoterStoreRadioSelect.unbind(\"change\");\r\n this.positionOptions.unbind('click');\r\n this.searchRetailer.unbind('change');\r\n this.searchLocation.unbind('change');\r\n this.searchPromoterRetailer.unbind(\"change\")\r\n this.searchRetailerBtn.unbind('click');\r\n this.searchLocationBtn.unbind('click');\r\n this.searchPromoterRetailerBtn.unbind(\"click\")\r\n }\r\n\r\n\r\n public initSelection(storePositionTypeId: number, retailerName: string, storeChainId: number, promoterAgency: string, promoterStoreId: number, storeName: string, storeId: number) {\r\n var qq = this;\r\n let val = storePositionTypeId;\r\n if (PositionIds[storePositionTypeId] === undefined) {\r\n val = PositionIds.RetailSales;\r\n }\r\n else if ([PositionIds.ManagerMultiple, PositionIds.ManagerOneStore, PositionIds.RegionalManager, PositionIds.DepartmentManager].indexOf(PositionIds[PositionIds[val]]) != -1) { //Check for specific value already set in enum for one of the manager types.\r\n $(\"input:radio[name='StorePositionModel.listName'][value='\" + val + \"']\").click();\r\n val = PositionIds.Manager;\r\n }\r\n $.each(this.positionOptions, function (item, e) {\r\n if ($(e).attr(\"data-typeId\") == val.toString()) {\r\n qq.changePosition($(e), true);\r\n }\r\n }); \r\n\r\n qq.initializing = true;\r\n setTimeout(function () {\r\n qq.setRetailer(retailerName, storeChainId, true);\r\n qq.setPromoterRetailer(promoterAgency, promoterStoreId, true);\r\n qq.initPromoterRetailerTexts();\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 184274, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n //Add a store not listed record. \r\n qq.searchLocation.html(qq.searchLocation.html() + \"\");\r\n qq.setStore(storeName, storeId);\r\n });\r\n }, 500);\r\n\r\n this.searchLocationBtn.removeClass('hidden');\r\n }\r\n\r\n public initCallbacks() {\r\n var qq = this;\r\n\r\n //To be called when the retailer callback is selected. \r\n var rsCallback = (id: number, name: string): void => {\r\n //Create an option to add to the search retailer and set that as the selected value\r\n // Note: This can create duplicate records in the select list, but that shouldn't hurt anything. \r\n qq.setRetailer(name, id, true);\r\n if (this.promoterRetailerRadio.filter(\":checked\").val() == \"True\") qq.changeLocationList(false); else qq.setStoreNotListed();\r\n };\r\n\r\n var prsCallback = (id: number, name: string): void => {\r\n //Create an option to add to the search retailer and set that as the selected value\r\n // Note: This can create duplicate records in the select list, but that shouldn't hurt anything. \r\n qq.setPromoterRetailer(name, id, true);\r\n if (this.promoterRetailerRadio.filter(\":checked\").val() == \"False\") qq.changeLocationList(false); else qq.setStoreNotListed();\r\n };\r\n\r\n var snlCallback = (storeId: number): void => {\r\n //Callback to set \"Store Not Listed\" when you finish filling in the manual entry form\r\n if (storeId == 0) {\r\n qq.setStoreNotListed();\r\n } else {\r\n var snl = $(\"#SearchLocation option[value='\" + storeId + \"']\");\r\n if (snl.length > 0) {\r\n this.searchLocation.val(snl.attr(\"value\")).trigger('change');\r\n }\r\n }\r\n }\r\n\r\n var rsnlCallback = (retailerId: number, storeId: number): void => {\r\n //Callback to set \"Retailer Not Listed\" and \"Store Not Listed\" when you finish filling in the manual entry form\r\n if (retailerId == 0) {\r\n qq.setRetailerNotListed();\r\n qq.setStoreNotListed();\r\n }\r\n else {\r\n var stnl = $(\"#SearchRetailer option[value='\" + retailerId + \"']\");\r\n if (stnl.length > 0) {\r\n this.searchLocation.val(stnl.attr(\"value\"));\r\n }\r\n }\r\n\r\n if (storeId == 0) {\r\n qq.setStoreNotListed();\r\n } else {\r\n var snl = $(\"#SearchLocation option[value='\" + storeId + \"']\");\r\n if (snl.length > 0) {\r\n this.searchLocation.val(snl.attr(\"value\")).trigger('change');\r\n }\r\n }\r\n }\r\n\r\n var prsnlCallback = (retailerId: number, storeId: number): void => {\r\n //Callback to set \"Promoter Retailer Not Listed\" and \"Store Not Listed\" when you finish filling in the manual entry form\r\n if (retailerId == 0) {\r\n qq.setPromoterRetailerNotListed();\r\n }\r\n else {\r\n var stnl = $(\"#SearchPromoterRetailer option[value='\" + retailerId + \"']\");\r\n if (stnl.length > 0) {\r\n this.searchLocation.val(stnl.attr(\"value\"));\r\n }\r\n }\r\n\r\n if (storeId == 0) {\r\n qq.setStoreNotListed();\r\n } else {\r\n var snl = $(\"#SearchLocation option[value='\" + storeId + \"']\");\r\n if (snl.length > 0) {\r\n this.searchLocation.val(snl.attr(\"value\")).trigger('change');\r\n }\r\n }\r\n } \r\n\r\n this.storeManual.setCallback(snlCallback, this.promoterRetailerRadio.filter(\":checked\").val() == \"True\" ? prsnlCallback : rsnlCallback);\r\n this.retailerSearch.setCallback(rsCallback);\r\n this.promoterRetailerSearch.setCallback(prsCallback);\r\n }\r\n\r\n private setRetailerNotListed() {\r\n if (this.searchRetailer.val() != \"0\") { //Don't set it if it's already set. \r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 184275, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n this.setRetailer(d.text, 0, true);\r\n this.setStoreNotListed();\r\n });\r\n }\r\n }\r\n\r\n private setPromoterRetailerNotListed() {\r\n if (this.searchPromoterRetailer.val() != \"0\") { //Don't set it if it's already set. \r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 184275, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n this.setPromoterRetailer(d.text, 0, true);\r\n });\r\n }\r\n }\r\n\r\n private setStoreNotListed() {\r\n var snl = $(\"#SearchLocation option[data-storenotlisted='true']\");\r\n if (snl.length > 0) {\r\n this.searchLocation.val(snl.attr(\"value\")).trigger('change');\r\n }\r\n else {\r\n if (this.searchLocation.val() != \"0\") { //Don't set it if it's already set. \r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 184274, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n this.setStore(d.text, 0);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private setRetailer(name: string, id: number, trigger: boolean) { \r\n this.searchRetailer.html(this.searchRetailer.html() + \"\");\r\n this.searchRetailer.val(id.toString());\r\n if (trigger) {\r\n this.searchRetailer.trigger('change');\r\n //this.setStoreNotListed();\r\n //} else {\r\n // this.setStoreNotListed();\r\n } \r\n }\r\n\r\n private setPromoterRetailer(name: string, id: number, trigger: boolean) {\r\n //this.updatePromoterRetailers(false);\r\n this.searchPromoterRetailer.html(this.searchPromoterRetailer.html() + \"\");\r\n this.searchPromoterRetailer.val(id.toString());\r\n\r\n if (trigger) {\r\n this.searchPromoterRetailer.trigger('change');\r\n //this.setStoreNotListed();\r\n } else {\r\n this.setStoreNotListed();\r\n }\r\n }\r\n\r\n private setStore(name: string, id: number) {\r\n this.lastStoreId = id; \r\n if (id != 0) {\r\n this.searchLocation.html(this.searchLocation.html() + \"\");\r\n this.searchLocation.val(id.toString()).trigger('change');\r\n } else {\r\n this.searchLocation.val(\"0\").trigger('change');\r\n }\r\n }\r\n\r\n public getResults() {\r\n //Trim all form fields before serialize. \r\n this.storeManual.getForm().find(\"input\").each(function () {\r\n this.value = $(this).val().trim();\r\n })\r\n\r\n return this.storeManual.getForm().serialize() + \"&StorePositionModel.Info.StorePositionTypeId=\" + this.getStorePositionId();\r\n }\r\n\r\n private getStorePositionId() {\r\n return (this.options.isDre) ? 300 : (this.managerSelect.is(\":visible\")) ? $(\"input:radio[name='StorePositionModel.listName']:checked\").val() : $(\".positionOptions .option.selected\").attr('data-typeId');\r\n }\r\n\r\n private changePosition(e: JQuery, retainRetailer: boolean) {\r\n //Remove title attribute & hence tooltip that will say 'chain not listed / store not listed' from select2. \r\n $(\"#select2-StorePositionModel_Info_StoreChainId-container\").attr('title', '');\r\n $(\"#select2-StorePositionModel_Info_StoreId-container\").attr('title', '');\r\n\r\n //Remove the previously selected option\r\n if(e.attr('data-status') != undefined) this.positionOptions.removeClass('selected');\r\n\r\n //Select the button of the current option\r\n if (e.attr('data-status') != undefined) e.addClass('selected');\r\n\r\n //hide all the things... \r\n this.managerSelect.addClass('hidden');\r\n this.retailerSelect.removeClass('hidden');\r\n this.storeSelect.removeClass('hidden');\r\n this.promoterRetailerSelect.addClass('hidden');\r\n this.otherInfo.addClass('hidden');\r\n this.promoterRetailerRadioSelect.addClass('hidden');\r\n this.promoterStoreRadioSelect.addClass('hidden');\r\n this.dataStatus = e.attr('data-status');\r\n this.setStorePositionHint(e.attr('data-status'))\r\n switch (e.attr('data-status')) {\r\n case \"other\":\r\n $('.promoterRetailerRadioSelect input[type=\"radio\"]').prop('checked', false);\r\n $('.promoterStoreRadioSelect input[type=\"radio\"]').prop('checked', false);\r\n this.searchPromoterRetailer.val(\"0\").trigger('change');\r\n this.promoterStore.val(\"0\").trigger('change');\r\n this.otherInfo.removeClass('hidden');\r\n this.retailerSelect.addClass('hidden');\r\n this.storeSelect.addClass('hidden');\r\n $('.employeeCode').addClass('hidden')\r\n this.dataStatus = \"other\";\r\n this.setRetailerNotListed(); //Set retailer/store not listed, since Other does not have one associated.\r\n this.setStoreNotListed();\r\n\r\n break;\r\n case \"manager\":\r\n $('.promoterRetailerRadioSelect input[type=\"radio\"]').prop('checked', false);\r\n $('.promoterStoreRadioSelect input[type=\"radio\"]').prop('checked', false);\r\n this.searchPromoterRetailer.val(\"0\").trigger('change');\r\n this.promoterStore.val(\"0\").trigger('change');\r\n this.managerSelect.removeClass('hidden');\r\n $('.employeeCode').addClass('hidden')\r\n this.setPositionTexts(StorePosition.PositionMode.MANAGER);\r\n this.dataStatus = \"retail\";\r\n this.updateRetailers(retainRetailer);\r\n\r\n break;\r\n case \"promoter\":\r\n this.storeSelect.addClass('hidden');\r\n this.retailerSelect.addClass('hidden');\r\n this.promoterRetailerSelect.removeClass('hidden');\r\n $('.employeeCode').addClass('hidden')\r\n this.setPositionTexts(StorePosition.PositionMode.PROMOTER);\r\n this.dataStatus = \"promoter\";\r\n this.updatePromoterRetailers(retainRetailer);\r\n\r\n break;\r\n case \"manufacturer\":\r\n $('.promoterRetailerRadioSelect input[type=\"radio\"]').prop('checked', false);\r\n $('.promoterStoreRadioSelect input[type=\"radio\"]').prop('checked', false);\r\n $('.employeeCode').addClass('hidden')\r\n this.searchPromoterRetailer.val(\"0\").trigger('change');\r\n this.promoterStore.val(\"0\").trigger('change');\r\n this.setPositionTexts(StorePosition.PositionMode.MANUFACTURER);\r\n this.dataStatus = \"manufacturer\";\r\n this.updateRetailers(retainRetailer);\r\n\r\n break;\r\n default:\r\n $('.promoterRetailerRadioSelect input[type=\"radio\"]').prop('checked', false);\r\n $('.promoterStoreRadioSelect input[type=\"radio\"]').prop('checked', false);\r\n $('.employeeCode').addClass('hidden')\r\n this.searchPromoterRetailer.val(\"0\").trigger('change');\r\n this.promoterStore.val(\"0\").trigger('change');\r\n this.setPositionTexts(StorePosition.PositionMode.RETAILER);\r\n this.dataStatus = \"retail\";\r\n this.updateRetailers(retainRetailer);\r\n\r\n break;\r\n }\r\n }\r\n\r\n private dreLocaleId(id: number) {\r\n if (!this.options.isDre) { return id; }\r\n\r\n switch (id) {\r\n case 208741: //RETAILER NAME\r\n case 208743:\r\n case 208744: return 190330;\r\n\r\n case 184254: //Can't Find Retailer?\r\n case 184268:\r\n case 184273: return 190331;\r\n\r\n case 208746: //STORE LOCATION\r\n case 208745:\r\n case 208742: return 190332;\r\n\r\n case 184209: //Can't find store location?\r\n case 184223:\r\n case 184226: return 190333;\r\n\r\n default: return id;\r\n }\r\n }\r\n\r\n\r\n private promoterRetailerRadioShow() {\r\n if (this.searchPromoterRetailer.val() != null && this.searchPromoterRetailer.val() != \"\" && this.dataStatus == \"promoter\") {\r\n this.promoterRetailerRadioSelect.removeClass('hidden');\r\n if (this.promoterRetailerRadio.filter(\":checked\").val() == \"False\") {\r\n this.storeSelect.removeClass('hidden');\r\n }\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n\r\n private promoterRetailerRadioChoice() {\r\n var that = this; \r\n if (this.promoterRetailerRadio.filter(\":checked\").val() == \"True\") {\r\n this.changePromoterLocation();\r\n this.updateRetailers(false);\r\n this.storeSelect.addClass('hidden');\r\n this.retailerSelect.removeClass('hidden');\r\n\r\n }\r\n else if (this.promoterRetailerRadio.filter(\":checked\").val() == \"False\") {\r\n this.setRetailer((this.searchPromoterRetailer.select2('data'))[0].text, (this.searchPromoterRetailer.select2('data'))[0].id, false);\r\n $('.promoterStoreRadioSelect input[type=\"radio\"]').prop('checked', false);\r\n this.changeLocationList(false);\r\n this.promoterStoreRadioSelect.addClass('hidden');\r\n this.retailerSelect.addClass('hidden');\r\n this.storeSelect.removeClass('hidden');\r\n this.setStorePositionTextPromoter();\r\n }\r\n }\r\n\r\n private promoterStoreRadioShow() {\r\n if (this.searchRetailer.val() != null && this.searchRetailer.val() != \"\" && this.promoterRetailerRadio.filter(\":checked\").val() == \"True\") {\r\n this.retailerSelect.removeClass('hidden');\r\n this.promoterStoreRadioSelect.removeClass('hidden');\r\n if (this.promoterStoreRadio.filter(\":checked\").val() == \"True\") {\r\n this.storeSelect.removeClass('hidden');\r\n }\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n\r\n private initPromoterRetailerTexts() {\r\n if (this.promoterRetailerRadio.filter(\":checked\").val() == \"True\") {\r\n this.setStorePositionTextRetailer();\r\n }\r\n else if (this.promoterRetailerRadio.filter(\":checked\").val() == \"False\") {\r\n this.setStorePositionTextPromoter();\r\n }\r\n }\r\n\r\n private promoterStoreRadioChoice() {\r\n var that = this; \r\n\r\n if (this.promoterStoreRadio.filter(\":checked\").val() == \"True\") {\r\n this.setStorePositionTextRetailer();\r\n\r\n this.storeSelect.removeClass('hidden');\r\n this.changeLocationList(false);\r\n }\r\n else if (this.promoterStoreRadio.filter(\":checked\").val() == \"False\") {\r\n this.storeSelect.addClass('hidden');\r\n this.changeLocationList(false);\r\n return;\r\n }\r\n\r\n } \r\n\r\n\r\n private setStorePositionHint(type: string) {\r\n if (type != \"other\") $(\".hintText\").removeClass('hidden'); else $(\".hintText\").addClass('hidden');\r\n\r\n if (type != \"retail\") $(\".retailHint\").addClass('hidden'); else $(\".retailHint\").removeClass('hidden');\r\n if (type != \"online\") $(\".callCenterHint\").addClass('hidden'); else $(\".callCenterHint\").removeClass('hidden');\r\n if (type != \"manufacturer\") $(\".manufacturerHint\").addClass('hidden'); else $(\".manufacturerHint\").removeClass('hidden');\r\n if (type != \"promoter\") $(\".promoterHint\").addClass('hidden'); else $(\".promoterHint\").removeClass('hidden');\r\n if (type != \"manager\") $(\".managerHint\").addClass('hidden'); else $(\".managerHint\").removeClass('hidden');\r\n }\r\n\r\n private setPositionTexts(type: number) {\r\n var that = this;\r\n if (type == StorePosition.PositionMode.RETAILER || type == StorePosition.PositionMode.MANAGER) {\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 208741, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.retailerLabel.html(d.text);\r\n });\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 184252, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.searchRetailer.attr('data_placeholder', d.text);\r\n that.searchRetailer.data(\"select2\").selection.placeholder.text = d.text;\r\n });\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 184254, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.searchRetailerBtn.html(d.text);\r\n });\r\n this.storeManual.setMode(StorePosition.PositionMode.RETAILER);\r\n this.retailerSearch.setMode(StorePosition.PositionMode.RETAILER);\r\n }\r\n else if (type == StorePosition.PositionMode.MANUFACTURER) {\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 208743, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.retailerLabel.html(d.text);\r\n });\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 184251, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.searchRetailer.attr('data_placeholder', d.text);\r\n that.searchRetailer.data(\"select2\").selection.placeholder.text = d.text;\r\n });\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 184268, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.searchRetailerBtn.html(d.text);\r\n });\r\n this.storeManual.setMode(StorePosition.PositionMode.RETAILER);\r\n this.retailerSearch.setMode(StorePosition.PositionMode.MANUFACTURER);\r\n }\r\n else { //Promoter\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 217082, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.retailerLabel.html(d.text);\r\n });\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 184253, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.searchRetailer.attr('data_placeholder', d.text);\r\n that.searchRetailer.data(\"select2\").selection.placeholder.text = d.text;\r\n });\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 217087, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.searchRetailerBtn.html(d.text);\r\n });\r\n this.storeManual.setMode(StorePosition.PositionMode.PROMOTER);\r\n this.promoterRetailerSearch.setMode(StorePosition.PositionMode.PROMOTER);\r\n this.retailerSearch.setMode(StorePosition.PositionMode.PROMOTER);\r\n\r\n\r\n }\r\n\r\n //Do the store location update separately, because promises. \r\n if (type == StorePosition.PositionMode.MANAGER) {\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 208746, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.storeLocationLabel.html(d.text);\r\n });\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 184209, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.searchLocationBtn.html(d.text);\r\n });\r\n } else if (type == StorePosition.PositionMode.MANUFACTURER) {\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 208745, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.storeLocationLabel.html(d.text);\r\n });\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 184223, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.searchLocationBtn.html(d.text);\r\n });\r\n } else if (type == StorePosition.PositionMode.PROMOTER) {\r\n this.setStorePositionTextPromoter();\r\n } else {\r\n this.setStorePositionTextRetailer();\r\n }\r\n }\r\n\r\n private setStorePositionTextRetailer() {\r\n var that = this; \r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 208742, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.storeLocationLabel.html(d.text);\r\n });\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 184209, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.searchLocationBtn.html(d.text);\r\n });\r\n }\r\n\r\n private setStorePositionTextPromoter() {\r\n var that = this; \r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 208744, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.storeLocationLabel.html(d.text);\r\n });\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 231060, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n that.searchLocationBtn.html(d.text);\r\n });\r\n }\r\n\r\n private retailerOpenSearch() {\r\n var qq = this;\r\n\r\n this.retailerSearch.openSearch();\r\n }\r\n\r\n private promoterRetailerOpenSearch() {\r\n var qq = this;\r\n\r\n this.promoterRetailerSearch.openSearch();\r\n }\r\n\r\n\r\n\r\n private clearError(e: JQueryEventObject) {\r\n $(e.target).closest('.has-error').removeClass('has-error');\r\n }\r\n\r\n //Open the store form. \r\n private openStoreEntry() {\r\n this.storeManual.open(false);\r\n }\r\n\r\n private updatePromoterRetailers(retainRetailer: boolean) {\r\n var qq = this;\r\n\r\n $.ajax({\r\n type: \"get\",\r\n dataType: \"html\",\r\n url: irep.options.appUrl + 'RetailersByAttribute',\r\n data: { countryCode: this.countryCode, attribute: \"promoter\" }\r\n }).done(function (data) {\r\n var d = $.parseJSON(data);\r\n var listItems = \"\"; //blank option means we won't have a default selection taken.\r\n for (var i = 0; i < d.Data.length; i++) {\r\n listItems += \"\";\r\n }\r\n if (retainRetailer) {\r\n qq.searchPromoterRetailer.html(qq.searchPromoterRetailer.html() + listItems);\r\n qq.searchPromoterRetailerBtn.removeClass('hidden');\r\n }\r\n else {\r\n qq.searchPromoterRetailer.html(listItems);\r\n qq.searchPromoterRetailerBtn.removeClass('hidden');\r\n qq.searchPromoterRetailer.val(null).trigger('change');\r\n }\r\n });\r\n\r\n }\r\n\r\n //Get the list of available retailers, and then blank the current selected location. \r\n private updateRetailers(retainRetailer: boolean) {\r\n if (this.dataStatus == \"other\" || this.dataStatus == undefined) return;\r\n var ApiCmd = 'RetailersByAttribute';\r\n if (this.dataStatus == 'retail' || this.dataStatus == 'online' || this.promoterRetailerRadio.filter(\":checked\").val() != undefined) ApiCmd = 'PreferredRetailers';\r\n var qq = this;\r\n var currentRetailerId = this.searchRetailer.val();\r\n\r\n $.ajax({\r\n type: \"get\",\r\n dataType: \"html\",\r\n url: irep.options.appUrl + ApiCmd,\r\n data: { countryCode: this.countryCode, attribute: this.dataStatus }\r\n }).done(function (data) {\r\n var d = $.parseJSON(data);\r\n var listItems = \"\"; //blank option means we won't have a default selection taken.\r\n for (var i = 0; i < d.Data.length; i++) {\r\n listItems += \"\";\r\n }\r\n if (retainRetailer) {\r\n qq.searchRetailer.html(qq.searchRetailer.html() + listItems);\r\n }\r\n else {\r\n qq.searchRetailer.html(listItems);\r\n qq.searchRetailer.val(null).trigger('change'); //Remove selected store chain \r\n qq.searchLocation.val(null).trigger('change');\r\n\r\n }\r\n });\r\n }\r\n\r\n private processGermanLogic() {\r\n var that = this;\r\n /* When the country is germany, and the selected retailer is one of these 15, the age requirement text needs to say \"16 or older\", instead of \"18 or older\" */\r\n if ($.inArray(this.promoterRetailerRadio.filter(\":checked\").val() == \"True\" ? this.searchPromoterRetailer.val() : this.searchRetailer.val(), [\"204552\", \"28101\", \"28057\", \"151552\", \"31643\", \"884\", \"912\", \"104620\", \"1516\", \"1531\", \"287877\", \"170664\", \"211277\", \"31649\", \"284489\", \"2048\", \"1838\", \"289810\"]) != -1) {\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 190658, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n $(\"#AgeDisclaimer1 .control-label\").html(d.text);\r\n });\r\n } else {\r\n irep.callApi({ url: \"localization/text\", type: \"GET\", data: { id: 184237, cultureCode: irep.options.user.cultureCode } }).done((d) => {\r\n $(\"#AgeDisclaimer1 .control-label\").html(d.text);\r\n });\r\n }\r\n }\r\n\r\n private changePromoterLocation() {\r\n if (this.countryCode == \"DE\") { this.processGermanLogic(); }\r\n\r\n if (this.dataStatus != \"promoter\") return;\r\n var currentLocationId = this.searchLocation.val();\r\n\r\n var qq = this;\r\n\r\n if (this.promoterRetailerRadio.filter(\":checked\").val() == \"True\") {\r\n $.ajax({\r\n type: \"get\",\r\n dataType: \"html\",\r\n url: irep.options.appUrl + \"StoreList\",\r\n data: {\r\n storeChainId: this.searchPromoterRetailer.val(),\r\n countryCode: this.countryCode\r\n }\r\n }).done(function (data) {\r\n var d = $.parseJSON(data);\r\n var storeNotListed;\r\n\r\n for (var i = 0; i < d.Data.length; i++) {\r\n if (d.Data[i].IsStoreNotListed == true) {\r\n storeNotListed += \"\";\r\n break;\r\n }\r\n }\r\n qq.promoterStore.html(storeNotListed);\r\n\r\n });\r\n }\r\n else if (this.promoterRetailerRadio.filter(\":checked\").val() == \"False\") {\r\n qq.changeLocationList(true);\r\n }\r\n } \r\n\r\n //Get the list of stores for the retailer that was selected\r\n private changeLocationList(retainRetailer: boolean) {\r\n if (this.countryCode == \"DE\") { this.processGermanLogic(); }\r\n if (this.searchRetailer.val() == \"\" && this.dataStatus != \"promoter\") return;\r\n if (this.dataStatus == \"other\" || this.dataStatus == undefined) return;\r\n var currentLocationId = this.searchLocation.val();\r\n\r\n var qq = this;\r\n //this.searchLocation.val(null).trigger('change');\r\n if (this.dataStatus == \"promoter\") {\r\n if (this.promoterRetailerRadio.filter(\":checked\").val() == \"True\" && this.promoterStoreRadio.filter(\":checked\").val() == \"False\" && qq.searchRetailer.val() != \"\") {\r\n $.ajax({\r\n type: \"get\",\r\n dataType: \"html\",\r\n url: irep.options.appUrl + \"StoreList\",\r\n data: {\r\n storeChainId: this.searchRetailer.val(),\r\n countryCode: this.countryCode\r\n }\r\n }).done(function (data) {\r\n var d = $.parseJSON(data);\r\n var storeNotListed;\r\n\r\n for (var i = 0; i < d.Data.length; i++) {\r\n if (d.Data[i].IsStoreNotListed == true) {\r\n storeNotListed += \"\";\r\n break;\r\n }\r\n }\r\n qq.searchLocation.val(null).trigger('change');\r\n qq.searchLocation.html(storeNotListed);\r\n\r\n });\r\n }\r\n else if (this.promoterRetailerRadio.filter(\":checked\").val() == \"True\" && this.promoterStoreRadio.filter(\":checked\").val() == \"True\") {\r\n $.ajax({\r\n type: \"get\",\r\n dataType: \"html\",\r\n url: irep.options.appUrl + \"StoreList\",\r\n data: {\r\n storeChainId: this.searchRetailer.val(),\r\n countryCode: this.countryCode\r\n }\r\n }).done(function (data) {\r\n qq.searchLocationBtn.removeClass('hidden');\r\n var d = $.parseJSON(data);\r\n var listItems = \"\";\r\n\r\n for (var i = 0; i < d.Data.length; i++) {\r\n listItems += \"\";\r\n }\r\n qq.searchLocation.html(listItems);\r\n\r\n if (retainRetailer) {\r\n qq.searchLocation.val(currentLocationId).trigger('change');\r\n }\r\n else {\r\n qq.searchLocation.val(null).trigger('change');\r\n }\r\n qq.initializing = false;\r\n });\r\n }\r\n else if (this.promoterRetailerRadio.filter(\":checked\").val() == \"False\" && this.searchPromoterRetailer.val() != \"\" && this.searchPromoterRetailer.val() != null) {\r\n $.ajax({\r\n type: \"get\",\r\n dataType: \"html\",\r\n url: irep.options.appUrl + \"StoreList\",\r\n data: {\r\n storeChainId: this.searchPromoterRetailer.val(),\r\n countryCode: this.countryCode\r\n }\r\n }).done(function (data) {\r\n qq.searchLocationBtn.removeClass('hidden');\r\n var d = $.parseJSON(data);\r\n var listItems = \"\";\r\n\r\n for (var i = 0; i < d.Data.length; i++) {\r\n listItems += \"\";\r\n }\r\n qq.searchLocation.html(listItems);\r\n\r\n if (retainRetailer) {\r\n qq.searchLocation.val(currentLocationId).trigger('change');\r\n }\r\n else {\r\n qq.searchLocation.val(null).trigger('change');\r\n }\r\n qq.initializing = false;\r\n });\r\n }\r\n\r\n }\r\n else {\r\n $.ajax({\r\n type: \"get\",\r\n dataType: \"html\",\r\n url: irep.options.appUrl + \"StoreList\",\r\n data: {\r\n storeChainId: this.searchRetailer.val(),\r\n countryCode: this.countryCode\r\n }\r\n }).done(function (data) {\r\n qq.searchLocationBtn.removeClass('hidden');\r\n var d = $.parseJSON(data);\r\n var listItems = \"\";\r\n\r\n for (var i = 0; i < d.Data.length; i++) {\r\n listItems += \"\";\r\n }\r\n qq.searchLocation.html(listItems);\r\n\r\n if (retainRetailer) {\r\n qq.searchLocation.val(currentLocationId).trigger('change');\r\n }\r\n else {\r\n qq.searchLocation.val(null).trigger('change');\r\n }\r\n\r\n qq.initializing = false;\r\n });\r\n }\r\n }\r\n\r\n private employeeCodeCheck() {\r\n if ((this.searchRetailer.val() == \"39041\" || this.searchRetailer.val() == \"129859\") && this.dataStatus != 'promoter') {\r\n $('.employeeCode').removeClass('hidden');\r\n }\r\n else {\r\n $('.employeeCode').addClass('hidden');\r\n }\r\n }\r\n\r\n //Validate the form is OK to submit\r\n public Validate() {\r\n //Clear previous errors... \r\n this.retailerSelect.removeClass('has-error');\r\n this.storeSelect.removeClass('has-error');\r\n this.promoterRetailerSelect.removeClass('has-error');\r\n this.promoterRetailerRadioSelect.removeClass('has-error');\r\n this.promoterStoreRadioSelect.removeClass('has-error');\r\n this.managerSelect.removeClass('has-error');\r\n this.searchLocationBtn.removeClass('has-error');\r\n this.searchRetailerBtn.removeClass('has-error');\r\n this.searchPromoterRetailerBtn.removeClass('has-error');\r\n this.storePositionFail.addClass('hidden');\r\n this.storeNotListedFail.addClass('hidden');\r\n\r\n var res = true;\r\n\r\n if (this.positionOptions.length > 0 && this.positionOptions.hasClass('selected') == false) {\r\n this.storePosition.addClass('has-error');\r\n this.storePositionFail.removeClass('hidden');\r\n res = false;\r\n }\r\n\r\n if (this.retailerSelect.is(\":visible\") && (this.searchRetailer.val() == null || this.searchRetailer.val() == \"\")) {\r\n this.retailerSelect.addClass('has-error');\r\n res = false;\r\n }\r\n\r\n if (this.storeSelect.is(\":visible\") && (this.searchLocation.val() == null || this.searchLocation.val() == \"\")) {\r\n this.storeSelect.addClass('has-error');\r\n res = false;\r\n }\r\n\r\n if (this.dataStatus == \"promoter\" && this.promoterRetailerSelect.is(\":visible\")) {\r\n if (this.searchPromoterRetailer.val() == null || this.searchPromoterRetailer.val() == \"\") {\r\n this.promoterRetailerSelect.addClass('has-error');\r\n res = false;\r\n }\r\n\r\n if (this.searchPromoterRetailer.val() == \"0\" && !this.storeManual.isValid(true) && !this.otherInfo.is(\":visible\")) {\r\n this.searchPromoterRetailerBtn.addClass('has-error');\r\n res = false;\r\n }\r\n\r\n if (this.promoterRetailerRadioSelect.is(\":visible\") && this.promoterRetailerRadio.filter(\":checked\").val() == undefined) {\r\n this.promoterRetailerRadioSelect.addClass('has-error');\r\n res = false;\r\n }\r\n\r\n if (this.promoterStoreRadioSelect.is(\":visible\") && this.promoterStoreRadio.filter(\":checked\").val() == undefined) {\r\n this.promoterStoreRadioSelect.addClass('has-error');\r\n res = false;\r\n }\r\n }\r\n\r\n //Validate retailer not selected form.\r\n if ((this.searchLocation.val() == \"0\" || $(\"#SearchLocation :selected\").attr('data-storenotlisted') == \"true\") && this.dataStatus != \"promoter\" && !this.storeManual.isValid(false) && !this.otherInfo.is(\":visible\")) {\r\n this.searchLocationBtn.addClass('has-error');\r\n this.storeNotListedFail.removeClass('hidden');\r\n res = false;\r\n }\r\n\r\n\r\n //Validate retailer not selected form.\r\n if (this.searchRetailer.val() == \"0\" && !this.storeManual.isValid(true) && !this.otherInfo.is(\":visible\")) {\r\n this.searchRetailerBtn.addClass('has-error');\r\n res = false;\r\n }\r\n\r\n if (this.managerSelect.is(\":visible\") && $(\"input:radio[name='StorePositionModel.listName']:checked\").length == 0) {\r\n this.managerSelect.addClass('has-error');\r\n res = false;\r\n }\r\n\r\n\r\n return res;\r\n }\r\n\r\n private initSelect2() {\r\n var qq = this;\r\n //Has to be called after object initialization\r\n $(\".mtRetailerSearch.mt-select2\").select2({\r\n minimumInputLength: 0,\r\n ajax: {\r\n url: irep.options.appUrl + \"SearchRetailers\",\r\n dataType: 'json',\r\n data: function (params) {\r\n return { CountryCode: qq.countryCode, SearchText: (params as any).term, IsDre: qq.options.isDre, Limit: 100, Attribute: qq.dataStatus == \"promoter\" ? \"retail\" : qq.dataStatus }\r\n },\r\n processResults: function (data) {\r\n return {\r\n results: $.map(data.Data, function (item) {\r\n if (item.length) {\r\n }\r\n return {\r\n text: item.Name,\r\n id: item.Id\r\n }\r\n })\r\n };\r\n }\r\n }\r\n });\r\n $(\".mtPromoterRetailerSearch.mt-select2\").select2({\r\n minimumInputLength: 0,\r\n ajax: {\r\n url: irep.options.appUrl + \"SearchRetailers\",\r\n dataType: 'json',\r\n data: function (params) {\r\n return { CountryCode: qq.countryCode, SearchText: (params as any).term, IsDre: qq.options.isDre, Limit: 100, Attribute: qq.dataStatus }\r\n },\r\n processResults: function (data) {\r\n return {\r\n results: $.map(data.Data, function (item) {\r\n if (item.length) {\r\n }\r\n return {\r\n text: item.Name,\r\n id: item.Id\r\n }\r\n })\r\n };\r\n }\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n}","var irep = irep || {};\r\n\r\nirep.contactus = (function () {\r\n var submitButton, failureMessage, successMessage, successMessage2, txtMessage, missingMessage, txtFirstName, txtLastName, txtEmail, emailSupport, isAuthenticated;\r\n\r\n var init = function (options) {\r\n submitButton = options.submitButton;\r\n failureMessage = options.failureMessage;\r\n successMessage = options.successMessage;\r\n successMessage2 = options.successMessage2;\r\n txtMessage = options.txtMessage;\r\n emailSupport = options.emailSupport;\r\n missingMessage = options.missingMessage;\r\n txtFirstName = options.txtFirstName;\r\n txtLastName = options.txtLastName;\r\n txtEmail = options.txtEmail;\r\n txtCountry = options.txtCountry;\r\n isAnonymous = options.isAnonymous.toLowerCase();\r\n\r\n \r\n $(submitButton).click(function () {\r\n $('#divMessage').html('');\r\n if (validateForm()) {\r\n var objContactUs =\r\n {\r\n FirstName: irep.options.user.firstName,\r\n LastName: irep.options.user.lastName,\r\n Email: irep.options.user.email,\r\n StoreCode: irep.options.user.storeCode,\r\n StoreChainName: irep.options.user.storeChainName,\r\n UserType: irep.options.user.userType,\r\n UserTypeId: irep.options.user.userTypeId,\r\n GeoCode: irep.options.user.geoCode,\r\n CultureCode: irep.options.user.cultureCode,\r\n EmailSupport: emailSupport,\r\n CountryCode: irep.options.user.countryCode,\r\n StoreChainId: irep.options.user.storeChainId,\r\n Site: irep.options.user.site\r\n };\r\n\r\n //non-authenticated users\r\n if (irep.options.user.email === undefined) {\r\n objContactUs.FirstName = $(txtFirstName).val();\r\n objContactUs.LastName = $(txtLastName).val();\r\n objContactUs.Email = $(txtEmail).val();\r\n objContactUs.GeoCode = $.cookie(\"IREPRegion\");\r\n objContactUs.Language = $.cookie(\"IREPLanguage\");\r\n objContactUs.UserType = \"\";\r\n objContactUs.EmailSupport = \"\";\r\n objContactUs.CountryCode = $(txtCountry).val();\r\n objContactUs.Site = irep.options.user.site;\r\n }\r\n\r\n objContactUs.Message = $.trim($(txtMessage).val());\r\n clearMessage();\r\n if (objContactUs.Message !== \"\") {\r\n //block($(\".contact-us-wrapper\"));\r\n\r\n $.ajax({\r\n type: \"post\",\r\n dataType: \"html\",\r\n url: irep.options.appUrl + \"/\" + irep.options.user.site + \"/contactus\",\r\n //Serializes all parts of the form including the anti-forgery token. \r\n //Concatenate the sub-form. Kinda hack-ish. But it works. \r\n data: { cc: objContactUs, isAnonymous: isAnonymous } \r\n }).done(function (data) {\r\n if (successMessage2.indexOf(\"<sup>®</sup>\") > -1) {\r\n successMessage2 = successMessage2.replace(\"<sup>®</sup>\", \"®\");\r\n }\r\n $(\"#divMessage\").html('' + successMessage + '');\r\n $(txtMessage).val('');\r\n //$('#divMessage').css(\"color\", \"white\"); //reset in case of failure from multiple submits\r\n //hideForm();\r\n //($(\".contact-us-wrapper\")).unblock();\r\n }).fail(function (data, e) {\r\n $(\"#divMessage\").html('' + failureMessage + '');\r\n //($(\".contact-us-wrapper\")).unblock();\r\n });\r\n\r\n }\r\n }\r\n return false;\r\n });\r\n\r\n $('#links').find('.language').click(function () {\r\n var position = 0;\r\n\r\n if (irep.options.isRTL) {\r\n position = $(window).width() - $(this).position().left - $('#languages') + ($(this).width() / 2);\r\n $('#languages').css('marginRight', position);\r\n } else {\r\n position = $(this).position().left - ($('#languages').width() / 2);\r\n position += $(this).width() / 2;\r\n $('#languages').css('marginLeft', position);\r\n }\r\n\r\n //$('#languages').toggle();\r\n $('#aboutlinks').hide();\r\n return false;\r\n });\r\n\r\n $('#links').find('.about_link').click(function () {\r\n var position = 0;\r\n\r\n\r\n position = $(this).position().left - ($('#aboutlinks').width() / 2);\r\n position += $(this).width() / 2;\r\n $('#aboutlinks').css('marginLeft', position);\r\n\r\n\r\n $('#aboutlinks').toggle();\r\n $('#languages').hide();\r\n return false;\r\n });\r\n };\r\n\r\n var validateForm = function () {\r\n var isValid = true;\r\n $(\".contact-us-error\").hide();\r\n if (irep.options.user.email === undefined) {\r\n \r\n // validate first name (required)\r\n var firstName = $.trim($(txtFirstName).val());\r\n if (firstName === \"\") {\r\n $(txtFirstName + \"Required\").show();\r\n isValid = false;\r\n }\r\n\r\n // validate last name (required)\r\n var lastName = $.trim($(txtLastName).val());\r\n if (lastName === \"\") {\r\n $(txtLastName + \"Required\").show();\r\n isValid = false;\r\n }\r\n\r\n // validate email (required, regex)\r\n var email = $.trim($(txtEmail).val());\r\n if (email === \"\") {\r\n $(txtEmail + \"Required\").show();\r\n isValid = false;\r\n } else if (!(/\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*/.test(email))) {\r\n $(txtEmail + \"Format\").show();\r\n isValid = false;\r\n }\r\n }\r\n\r\n // validate message (required)\r\n var message = $.trim($(txtMessage).val());\r\n if (message === \"\") {\r\n $(txtMessage + \"Required\").show();\r\n isValid = false;\r\n }\r\n\r\n return isValid;\r\n };\r\n\r\n //var block = function (div) {\r\n // $.blockUI.defaults.css = {\r\n // backgroundColor: 'none'\r\n // };\r\n // $.blockUI.defaults.overlayCSS = {\r\n // backgroundColor: 'none'\r\n // };\r\n\r\n // var loaderGif = irep.options.appUrl + \"content/images/leaderboard/loader.gif\";\r\n // div.block({\r\n // message: '
',\r\n // bindEvents: false,\r\n // css: {\r\n // border: '0px none',\r\n // background: 'none'\r\n // //cursor: 'wait'\r\n // }\r\n // });\r\n //};\r\n\r\n var clearMessage = function () {\r\n $(\"#divMessage\").html('');\r\n };\r\n\r\n \r\n\r\n return {\r\n init: init,\r\n clearMessage: clearMessage,\r\n };\r\n})();","irep.integration = (function () {\r\n var lmsOptions, skipRegistrationSubmitAttempted = true; registerSubmitAttempted = false, mergeSubmitAttempted = false;\r\n\r\n var init = function (options) {\r\n lmsOptions = options;\r\n\r\n $('.skipRegistration').click(function () {\r\n $(this).addClass(\"selectedOption\");\r\n $(\".hasAccount\").removeClass(\"selectedOption\");\r\n $(\".noAccount\").removeClass(\"selectedOption\");\r\n $(\"input:radio[name='skipRegistration'][value='true']\").prop(\"checked\", true);\r\n $(\"#skipForm\").slideDown();\r\n $(\"#registerForm\").slideUp();\r\n $(\"#loginForm\").slideUp();\r\n\r\n $(\"#termsAccepted\").prop(\"checked\", false);\r\n $('.checkBox').removeClass('checked');\r\n });\r\n $(\".noAccount\").click(function () {\r\n $(this).addClass(\"selectedOption\");\r\n $(\".hasAccount\").removeClass(\"selectedOption\");\r\n $(\".skipRegistration\").removeClass(\"selectedOption\");\r\n $(\"input:radio[name='HasAccount'][value='false']\").prop(\"checked\", true);\r\n $(\"#registerForm\").slideDown();\r\n $(\"#loginForm\").slideUp();\r\n $(\"#skipForm\").slideUp();\r\n\r\n $(\"#termsAccepted\").prop(\"checked\", false);\r\n $('.checkBox').removeClass('checked');\r\n });\r\n\r\n $(\".hasAccount\").click(function () {\r\n $(this).addClass(\"selectedOption\");\r\n $(\".noAccount\").removeClass(\"selectedOption\");\r\n $(\".skipRegistration\").removeClass(\"selectedOption\");\r\n $(\"input:radio[name='HasAccount'][value='true']\").prop(\"checked\", true);\r\n $(\"#registerForm\").slideUp();\r\n $(\"#loginForm\").slideDown();\r\n $(\"#skipForm\").slideUp();\r\n\r\n $(\"#termsAccepted\").prop(\"checked\", false);\r\n $('.checkBox').removeClass('checked');\r\n });\r\n\r\n $(\".acceptTerms\").click(function () {\r\n var termsAccepted = $(\"#termsAccepted\");\r\n termsAccepted.prop(\"checked\", !termsAccepted.prop(\"checked\"));\r\n });\r\n\r\n var hasAccountInitialValue = $(\"input:radio[name='HasAccount']:checked\").val();\r\n if (hasAccountInitialValue !== null) {\r\n\r\n if (hasAccountInitialValue === \"true\") {\r\n mergeSubmitAttempted = true;\r\n skipRegistrationSubmitAttempted = false;\r\n } else if (hasAccountInitialValue === \"false\") {\r\n registerSubmitAttempted = true;\r\n skipRegistrationSubmitAttempted = false;\r\n }\r\n\r\n validateForm().then(function () {\r\n if (hasAccountInitialValue === \"true\") {\r\n $(\".hasAccount\").click();\r\n } else if (hasAccountInitialValue === \"false\" && !$('#skipForm').is(':visible')) {\r\n $(\".noAccount\").click();\r\n }\r\n else {\r\n var retailer = getUrlParam(\"uid\", \"\");\r\n\r\n if (retailer !== \"9720FDC9\" && lmsOptions.allowSkipRegistration !== \"False\" )\r\n {\r\n $('.skipRegistration').click();\r\n }\r\n else\r\n {\r\n $(\".noAccount\").click();\r\n }\r\n \r\n }\r\n });\r\n }\r\n\r\n $(\"form\")\r\n .on(\"change\", \"input,select\", validateForm)\r\n .on(\"click\", \".acceptTerms\", validateForm)\r\n .on(\"click\", \"button.continueBtn\", function () {\r\n var form = $(this).parents(\"form\");\r\n mergeSubmitAttempted = true;\r\n validateForm().then(function (ok) {\r\n if (ok === true) {\r\n form.submit();\r\n } else {\r\n // validation failed...\r\n }\r\n });\r\n return false;\r\n }); \r\n\r\n \r\n\r\n $(\".acceptTerms\").click(function () {\r\n $(\".checkBox\").toggleClass(\"checked\");\r\n registerSubmitAttempted = true;\r\n });\r\n };\r\n\r\n var getUrlParam = function(parameter, defaultvalue){\r\n var urlparameter = defaultvalue;\r\n if(window.location.href.indexOf(parameter) > -1){\r\n urlparameter = getUrlVars()[parameter];\r\n }\r\n return urlparameter;\r\n };\r\n\r\n function getUrlVars() {\r\n var vars = {};\r\n var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (m, key, value) {\r\n vars[key] = value;\r\n });\r\n return vars;\r\n };\r\n\r\n\r\n var validateForm = function () {\r\n var skipRegistration = $(\"input:radio[name='SkipRegistration']:checked\").val() === \"true\";\r\n var hasAccount = $(\"input:radio[name='HasAccount']:checked\").val() === \"true\";\r\n var formSelector = \"\";\r\n var isValid;\r\n\r\n $(\".errors\", formSelector).remove();\r\n \r\n if (hasAccount) {\r\n formSelector = \"#loginForm\";\r\n isValid = validateMergeForm(formSelector);\r\n }\r\n else if (!hasAccount && !$('#skipForm').is(':visible')){\r\n formSelector = \"#registerForm\";\r\n isValid = validateRegisterForm(formSelector);\r\n }\r\n else {\r\n formSelector = \"#skipForm\";\r\n isValid = validateSkipForm(formSelector);\r\n }\r\n\r\n return isValid.then(function (ok) {\r\n var submitButton = $(\"button.continueBtn\", formSelector);\r\n if (ok === true) {\r\n submitButton.removeAttr(\"disabled\");\r\n } else if (hasAccount === false) {\r\n submitButton.attr(\"disabled\", \"disabled\");\r\n }\r\n\r\n return ok;\r\n });\r\n };\r\n\r\n var validateRegisterForm = function (formSelector) {\r\n var isValid = true;\r\n var requiredTextAndDropdownFields = $(\"input[type='text'][required], input[type='hidden'][required], select[required]\", formSelector);\r\n var requiredRadioGroups = _.uniq($(\"input[type='radio'][required]\", formSelector).map(function (i, el) { return el.name; }));\r\n var emailRegex = /\\w+([-+.'\\w]+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*/gi;\r\n\r\n var userName = $(\"#UserName\", formSelector);\r\n var checkUsernameExists;\r\n\r\n if (!_.isEmpty(userName.val()) && userName.val().match(emailRegex) === null) {\r\n checkUsernameExists = {};\r\n isValid = false;\r\n addErrorMessage(userName, lmsOptions.errorMsgEmail, registerSubmitAttempted);\r\n }\r\n else if (_.isEmpty(userName.val())) {\r\n checkUsernameExists = {};\r\n } else {\r\n checkUsernameExists = irep.callApi({ url: \"participant/username/exists\", type: \"POST\", data: { username: userName.val() } })\r\n .then(function (data) {\r\n if (data.exists) {\r\n isValid = false;\r\n addErrorMessage(userName, lmsOptions.errorMsgEmailExists, true);\r\n }\r\n return data.exists === false;\r\n });\r\n }\r\n var password = $(\"#Password\"), confirmPassword = $(\"#ConfirmPassword\");\r\n if (password.val() !== confirmPassword.val()) {\r\n isValid = false;\r\n addErrorMessage(password, lmsOptions.passwordsDontMatch, registerSubmitAttempted);\r\n } else if (!irep.Password.validateComplexity(password.val())) {\r\n isValid = false;\r\n addErrorMessage(password, lmsOptions.passwordComplexity, registerSubmitAttempted);\r\n }\r\n\r\n var employeeCode = $(\"#EmployeeCode\");\r\n if (employeeCode.val().length === 0) {\r\n isValid = false;\r\n addErrorMessage(employeeCode, lmsOptions.employeeIdRequired, registerSubmitAttempted);\r\n }\r\n\r\n _.each(requiredTextAndDropdownFields, function (field) {\r\n var $field = $(field);\r\n \r\n if (_.isEmpty($field.val()) || $field.val() === \"-1\" || $field.val() === \"0\") {\r\n isValid = false;\r\n addErrorMessage($field, $field.data(\"valRequired\"), registerSubmitAttempted);\r\n }\r\n });\r\n\r\n _.each(requiredRadioGroups, function (radioGroupName) {\r\n var $group = $(\"input:radio[name='\" + radioGroupName + \"']\", formSelector);\r\n if ($group.filter(\":checked\").length !== 1) {\r\n isValid = false;\r\n var lastOption = $($group[$group.length - 1]);\r\n addErrorMessage(lastOption.parents(\"label\"), lastOption.data(\"valRequired\"), registerSubmitAttempted, true);\r\n }\r\n }); \r\n\r\n var termsCheckbox = $(\".acceptTerms\", formSelector);\r\n var termsAccepted = termsCheckbox.find(\".checkBox\").hasClass(\"checked\");\r\n if (!termsAccepted) {\r\n isValid = false;\r\n addErrorMessage(termsCheckbox, \"* \", registerSubmitAttempted, true);\r\n }\r\n\r\n return $.when(checkUsernameExists, isValid).then(function (usernameExists, fieldsValid) {\r\n return usernameExists && fieldsValid;\r\n });\r\n };\r\n\r\n var validateMergeForm = function (formSelector) {\r\n var username = $(\"#UserName\", formSelector).val();\r\n var password = $(\"#Password\", formSelector).val();\r\n var isValid = true;\r\n\r\n if (_.isEmpty(username) || _.isEmpty(password)) {\r\n addErrorMessage($(formSelector).find(\".fieldContainer\"), lmsOptions.usernameAndPasswordRequired, mergeSubmitAttempted);\r\n isValid = false;\r\n }\r\n\r\n return $.when(isValid);\r\n };\r\n\r\n\r\n var validateSkipForm = function (formSelector) {\r\n var isValid = true;\r\n var termsCheckbox = $(\".acceptTerms\", formSelector);\r\n var termsAccepted = termsCheckbox.find(\".checkBox\").hasClass(\"checked\");\r\n if (!termsAccepted) {\r\n isValid = false;\r\n addErrorMessage(termsCheckbox, \"* \", registerSubmitAttempted, true);\r\n }\r\n \r\n return $.when(isValid);\r\n };\r\n\r\n var addErrorMessage = function (field, message, showError, useSpan) {\r\n if (showError === true) {\r\n field.after($(\"<\" + (useSpan === true ? \"span\" : \"div\") + \">\", { \"class\": \"errors\" }).html(message));\r\n }\r\n };\r\n\r\n return {\r\n init: init\r\n };\r\n})();\r\n\r\nirep.Password = (function () {\r\n var upper = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\r\n var lower = upper.toLowerCase();\r\n var number = \"1234567890\";\r\n var special = \"|[!\\\"#$%&'()*+,-./:;=>?@[\\]^_`{|}~]\";\r\n\r\n var validateComplexity = function (password) {\r\n return !(password.length < 6 || !(containsChars(password, upper) || containsChars(password, lower)) || !containsChars(password, number) || !containsChars(password, special));\r\n };\r\n\r\n var containsChars = function (password, validChars) {\r\n for (var i = 0; i < password.length; i++) {\r\n var char = password.charAt(i);\r\n if (validChars.indexOf(char) > -1) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n return { validateComplexity: validateComplexity };\r\n})();","IREP.publicLayout = (function () {\r\n var contactUsOpen = false;\r\n\r\n var init = function () {\r\n var $languages = $('#languages');\r\n var $aboutlink = $('#aboutlinks');\r\n $('#links').find('.language').click(function () {\r\n var position = 0;\r\n\r\n if (irep.options.isRTL) {\r\n position = $(window).width() - $(this).position().left - $languages.width() + ($(this).width() / 2);\r\n $languages.css('marginRight', position);\r\n } else {\r\n position = $(this).position().left - ($languages.width() / 2);\r\n position += $(this).width() / 2;\r\n $languages.css('marginLeft', position);\r\n }\r\n\r\n $languages.toggle();\r\n $aboutlink.hide();\r\n return false;\r\n });\r\n\r\n $('.about_link').click(function () {\r\n var position = 0;\r\n\r\n\r\n //position = $(this).position().left - ($aboutlink.width() / 2);\r\n //position += $(this).width() / 2;\r\n //$aboutlink.css('marginLeft', position);\r\n\r\n $('.dropdown-about').toggle();\r\n\r\n //$aboutlink.toggle();\r\n $languages.hide();\r\n\r\n return false;\r\n });\r\n };\r\n\r\n var contactUsToggle = function () {\r\n $('#contactUs').css(\"display\", \"block\");\r\n $(\"#contactUs\").css(\"visibility\", \"visible\");\r\n var height = IREP.contactus.getPopupHeight();\r\n $(\"#contactUs\").animate({ bottom: (contactUsOpen ? '-=' + height : '+=' + height) }, 500);\r\n contactUsOpen = !contactUsOpen;\r\n IREP.contactus.clearMessage();//in case they come back to this to send multiple emails\r\n }\r\n\r\n var contactUsOpenStatus = function (status) {\r\n contactUsOpen = status;\r\n };\r\n\r\n return {\r\n init: init,\r\n contactUsToggle: contactUsToggle,\r\n contactUsOpenStatus: contactUsOpenStatus\r\n };\r\n})();","var popupInitializer = function ($) {\r\n var Popup = function (element, options) {\r\n this.options = options;\r\n this.$element = $(element);\r\n };\r\n\r\n Popup.prototype.show = function () {\r\n this.$element.addClass('show');\r\n };\r\n\r\n Popup.prototype.hide = function () {\r\n this.$element.removeClass('show');\r\n };\r\n\r\n\r\n Popup.DEFAULTS = {\r\n height: '250px'\r\n };\r\n\r\n $.fn.popup = function (option) {\r\n return this.each(function() {\r\n var $this = $(this);\r\n var data = $this.data('irep.modal');\r\n var options = $.extend({}, Popup.DEFAULTS, $this.data(), typeof option == 'object' && option)\r\n\r\n if (!data) {\r\n $this.data('irep.modal', data = new Popup(this, options));\r\n }\r\n\r\n if (typeof option == 'string') {\r\n data[option]();\r\n }\r\n });\r\n };\r\n};"]}