{"version":3,"sources":["omni.module.ts","core.module.ts","core.config.ts","core.service.ProfileService.ts","booker.module.ts","booker.common.js","booker.component.Book.ts","booker.component.Explore.ts","booker.component.Find.ts","booker.component.Navigation.ts","booker.component.OmniBooker.ts","booker.component.RateConfirmModal.ts","booker.component.RoomDetails.ts","booker.component.SignInModal.ts","booker.component.SpecialRates.ts","booker.component.TravelDate.ts","booker.config.ts","booker.filters.ts","booker.service.BookingApiService.ts","booker.service.BookingService.ts","resortmap.module.ts","controllers/MainController.ts","controllers/ResortController.ts","controllers/RoomController.ts","utils/config.ts","utils/floorCanvasDirective.ts","utils/floorSelectDirective.ts","utils/mapCanvasDirective.ts","utils/naFilter.ts","utils/partialSlideshowDirective.ts","utils/popoverDirective.ts","utils/roomLayoutDirective.ts","utils/services.ts","utils/sidebarHeightDirective.ts","utils/slideshowDirective.ts","utils/youtubeDirective.ts"],"names":[],"mappings":"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","file":"omni-ng.js","sourcesContent":["module Omni {\r\n /* Add all global module registrations here for dependency injection,\r\n include external libraries first (such as ngAnimate) and internal libraries second (such as omni.booker)\r\n */\r\n let app = angular.module(\"omni\", [\r\n \"ngResource\",\r\n \"ngSanitize\",\r\n \"ngAnimate\",\r\n \"ngTouch\",\r\n \"angular-cache\",\r\n \"ngAria\",\r\n \"duScroll\",\r\n \"ui.bootstrap\",\r\n \"ui.router\",\r\n \"omni.core\",\r\n \"omni.booker\",\r\n \"omni.resortmap\"\r\n ]);\r\n}\r\n","module Omni.Core {\r\n export let ngModule = angular.module(\"omni.core\", []);\r\n\r\n class CacheFactoryProvider {\r\n static $inject = [\"CacheFactoryProvider\"];\r\n\r\n constructor(cacheFactoryProvider) {\r\n angular.extend(cacheFactoryProvider.defaults, { maxAge: 15 * 60 * 1000 });\r\n }\r\n }\r\n\r\n class LogProviderConfig {\r\n static $inject = [\"$logProvider\", \"appConfig\"];\r\n\r\n constructor($logProvider: ng.ILogProvider, appConfig: Core.Constants.IAppConfig) {\r\n $logProvider.debugEnabled(appConfig.DebugMode);\r\n }\r\n }\r\n\r\n class QProviderConfig {\r\n static $inject = [\"$qProvider\"];\r\n\r\n constructor($qProvider: ng.IQProvider) {\r\n // This may suppress errors with promises not having error (catch) handlers.\r\n $qProvider.errorOnUnhandledRejections(false);\r\n }\r\n }\r\n\r\n class CompileProviderConfig {\r\n static $inject = [\"$compileProvider\", \"appConfig\"];\r\n\r\n constructor($compileProvider: ng.ICompileProvider, appConfig: Core.Constants.IAppConfig) {\r\n // See https://docs.angularjs.org/guide/production for references\r\n $compileProvider.debugInfoEnabled(appConfig.DebugMode);\r\n // Disables comment directives ('M'), this speeds up compilation\r\n $compileProvider.commentDirectivesEnabled(false);\r\n // Due to resort map legacy code, we cannot disable css class directives ('C'), see https://docs.angularjs.org/guide/directive for references\r\n $compileProvider.cssClassDirectivesEnabled(true);\r\n }\r\n }\r\n\r\n function momentFactory($window: any) {\r\n return $window.moment;\r\n }\r\n momentFactory.$inject = [\"$window\"];\r\n\r\n ngModule.config(QProviderConfig);\r\n ngModule.config(CacheFactoryProvider);\r\n ngModule.config(LogProviderConfig);\r\n ngModule.config(CompileProviderConfig);\r\n ngModule.factory(\"moment\", momentFactory);\r\n}\r\n","module Omni.Core.Constants {\r\n\r\n export interface IAppConfig {\r\n DebugMode: boolean;\r\n }\r\n\r\n class AppConfig {\r\n DebugMode: boolean;\r\n\r\n constructor() {\r\n this.DebugMode = false;\r\n }\r\n }\r\n\r\n function appConfig(): AppConfig {\r\n const config = new AppConfig();\r\n\r\n // Usage: Place an \r\n const debugConfig = angular.element(document.querySelectorAll(\"input[name='ngDebug']\"));\r\n if (debugConfig && debugConfig.length > 0) {\r\n config.DebugMode = debugConfig ? debugConfig.val() === \"True\" : false;\r\n }\r\n\r\n return config;\r\n }\r\n\r\n ngModule.constant(\"appConfig\", appConfig());\r\n}","module Omni.Core {\r\n export interface IProfileService {\r\n GetProfile();\r\n }\r\n\r\n class ProfileService implements IProfileService {\r\n static $inject = [\r\n \"$http\",\r\n \"$log\"\r\n ];\r\n constructor(\r\n private readonly $http: ng.IHttpService,\r\n private readonly $log: ng.ILogService\r\n ) {\r\n }\r\n\r\n GetProfile() {\r\n const cfg = {\r\n jsonpCallbackParam: \"callback\"\r\n };\r\n\r\n return this.$http.jsonp(\"/profile/profile/myaccount\", cfg)\r\n .then((response: any) => {\r\n return response.data.Data;\r\n }).catch((exception) => {\r\n this.$log.debug(exception);\r\n });\r\n }\r\n }\r\n\r\n ngModule.service(\"omni.core.profileservice\", ProfileService);\r\n}\r\n","module Omni.Booker {\r\n export let NgModule = angular.module(\"omni.booker\", []); \r\n}",null,"module Omni.Booker {\r\n NgModule.component(\"omniBookerBookHeader\", {\r\n bindings: {\r\n propertyDetail: \"=\" // Input\r\n },\r\n templateUrl: \"omni-booker-book-header.html\",\r\n controller: class OmniBookerHeaderController {\r\n // Bindings\r\n private propertyDetail;\r\n public opaqueBackground: boolean;\r\n\r\n static $inject = [\r\n \"$log\",\r\n \"bookerConfig\",\r\n \"omni.bookingservice\"\r\n ];\r\n constructor(\r\n private readonly $log: ng.ILogService,\r\n private readonly bookerConfig: Constants.IBookerConfiguration,\r\n private readonly bookingService: IBookingService\r\n ) {\r\n this.opaqueBackground = this.bookerConfig.IsBookerOpaque;\r\n }\r\n\r\n CloseBooker() {\r\n this.bookingService.CloseBooker();\r\n }\r\n } \r\n });\r\n}\r\n","module Omni.Booker {\r\n NgModule.component(\"omniBookerExplore\", {\r\n bindings: {\r\n propertyDetail: \"<\"\r\n },\r\n controller: class OmniBookerExploreController {\r\n private exploreData; // Data from API for explore data\r\n private showPropertyLink: boolean;\r\n private showSpinner: boolean = false;\r\n private showExploreList: boolean = false;\r\n\r\n // Bindings\r\n private propertyDetail: PropertyDetail;// This is set from the bindings attribute of this component, it's set externally\r\n \r\n static $inject = [\r\n \"omni.bookingapiservice\",\r\n \"$window\",\r\n \"omni.bookingservice\",\r\n \"bookerConfig\"\r\n ];\r\n constructor(\r\n private readonly bookingApiService: IBookingApiService,\r\n private readonly $window: ng.IWindowService,\r\n private readonly bookingService: IBookingService,\r\n private readonly bookerConfig: Constants.IBookerConfiguration\r\n ) {\r\n this.showPropertyLink = this.bookerConfig.IsBrandPage();\r\n }\r\n \r\n $onChanges() {\r\n if (this.propertyDetail) {\r\n this.getExploreData();\r\n }\r\n }\r\n\r\n private exploreProperty(propertyUrl) {\r\n this.$window.location.href = propertyUrl;\r\n }\r\n\r\n private getExploreData() {\r\n this.showExploreList = false;\r\n this.showSpinner = true;\r\n this.exploreData = undefined;\r\n if (this.propertyDetail.HotelId && this.propertyDetail.HotelId.length > 0) {\r\n this.bookingApiService.GetExploreData(this.propertyDetail.HotelId)\r\n .then((data) => {\r\n this.exploreData = data;\r\n this.showExploreList = this.exploreData.length > 1;\r\n })\r\n .finally(() => {\r\n this.showSpinner = false;\r\n });\r\n }\r\n }\r\n },\r\n templateUrl: \"omni-booker-explore.html\"\r\n });\r\n}\r\n","module Omni.Booker {\r\n NgModule.component(\"omniBookerFindHeader\", {\r\n bindings: {\r\n propertyDetail: \"=\"\r\n },\r\n templateUrl: \"omni-booker-find-header.html\",\r\n controller: class OmniBookerHeaderController {\r\n searchInput: string; // Search input (for autocomplete)\r\n searchResults: any[]; // Search results (for autocomplete)\r\n selectedProperty: BookingDataResult; // Selected result (autocomplete)\r\n selectedCategory: string; // Selected category (autocomplete)\r\n propertyData; // Property data (for autocomplete)\r\n showResults: boolean;\r\n showSelectionMessage: boolean;\r\n showWhereGoingLabel: boolean;\r\n opaqueBackground: boolean;\r\n\r\n // Bindings\r\n private propertyDetail: PropertyDetail; // This is set from the bindings attribute of this component, it's set externally\r\n\r\n private findDataPromise: ng.IPromise; // AJAX promise for booking search data (autocomplete)\r\n\r\n static $inject = [\r\n \"omni.bookingapiservice\",\r\n \"omPropertyFilterFilter\",\r\n \"bookerConfig\",\r\n \"$scope\",\r\n \"$rootScope\",\r\n \"$timeout\"\r\n ];\r\n constructor(\r\n private readonly omniBookingService: IBookingApiService,\r\n private readonly omPropertyFilter,\r\n private readonly bookerConfig: Constants.IBookerConfiguration,\r\n private readonly $scope,\r\n private readonly $rootScope,\r\n private readonly $timeout: ng.ITimeoutService\r\n ) {\r\n this.opaqueBackground = this.bookerConfig.IsBookerOpaque;\r\n this.$scope.$on(\"bookerStateUpdate\", () => { this.onBookerStateUpdate(); });\r\n }\r\n\r\n public $onInit() {\r\n this.searchInput = \"\";\r\n this.updateWhereGoingDisplay();\r\n\r\n // Get the booking data\r\n this.getLocalBookingData();\r\n }\r\n\r\n public clearFind() {\r\n if (this.selectedProperty) {\r\n this.selectedProperty.selected = false;\r\n this.selectedProperty = undefined;\r\n }\r\n\r\n this.selectedCategory = undefined;\r\n this.searchInput = \"\";\r\n\r\n this.propertyDetail.HotelId = \"\";\r\n this.propertyDetail.PropertyName = \"\";\r\n\r\n this.showResults = false;\r\n this.searchResults = [];\r\n this.focusSearchInput();\r\n this.updateWhereGoingDisplay();\r\n }\r\n\r\n public clearSelected() {\r\n if (this.selectedProperty) {\r\n this.selectedProperty.selected = false;\r\n this.selectedProperty = undefined;\r\n }\r\n\r\n this.selectedCategory = undefined;\r\n\r\n this.propertyDetail.HotelId = \"\";\r\n this.propertyDetail.PropertyName = \"\";\r\n this.propertyDetail.IsComingSoon = false;\r\n this.propertyDetail.ComingSoonText = \"\";\r\n this.propertyDetail.HotelLink = \"\";\r\n this.propertyDetail.RedeemFreeNights = false;\r\n this.propertyDetail.IsVillas = false;\r\n\r\n this.updateWhereGoingDisplay();\r\n }\r\n\r\n private focusResult(item: BookingDataResult, itemIndex: number) {\r\n var nthChildVal = itemIndex + 1;\r\n var targetResult: any = document.querySelectorAll(\".result-category-list[data-category-name='\" + item.category + \"'] li:nth-child(\"+ nthChildVal +\") a\")[0];\r\n\r\n targetResult.focus();\r\n }\r\n\r\n private resultFocused(item: BookingDataResult) {\r\n //console.log(\"focusedItem\", item);\r\n if (this.selectedProperty) {\r\n this.selectedProperty.selected = false;\r\n }\r\n\r\n this.selectedCategory = item.category;\r\n this.selectedProperty = item;\r\n this.selectedProperty.selected = true;\r\n }\r\n\r\n public selectResult(item: BookingDataResult) {\r\n if (item.IsGha) {\r\n this.clearFind();\r\n return;\r\n }\r\n\r\n if (this.selectedProperty) {\r\n this.selectedProperty.selected = false;\r\n }\r\n\r\n this.selectedCategory = item.category;\r\n this.selectedProperty = item;\r\n this.selectedProperty.selected = true;\r\n\r\n this.propertyDetail.HotelId = this.selectedProperty.ItemIdGuid;\r\n this.propertyDetail.PropertyName = this.selectedProperty.ResultLabel;\r\n this.propertyDetail.IsComingSoon = this.selectedProperty.IsComingSoonProperty;\r\n this.propertyDetail.ComingSoonText = this.selectedProperty.ComingSoonText;\r\n this.propertyDetail.HotelLink = this.selectedProperty.HotelLink;\r\n this.propertyDetail.RedeemFreeNights = this.selectedProperty.RedeemFreeNights;\r\n this.propertyDetail.IsVillas = this.selectedProperty.IsVillas;\r\n this.searchInput = this.propertyDetail.PropertyName;\r\n this.showResults = false;\r\n this.searchResults = [];\r\n }\r\n\r\n public focusNextResult() {\r\n if (!this.getSelectedCategory()) {\r\n this.selectedCategory = this.getFirstCategory().name;\r\n }\r\n\r\n var category = this.getSelectedCategory();\r\n\r\n var idx = category.results.indexOf(this.selectedProperty);\r\n if (category.results.length - 1 > idx) {\r\n this.focusResult(category.results[idx + 1], idx + 1);\r\n } else {\r\n // Last in category, choose next category\r\n this.focusNextCategory();\r\n }\r\n }\r\n\r\n public focusPreviousResult() {\r\n if (!this.getSelectedCategory()) {\r\n this.selectedCategory = this.getFirstCategory();\r\n }\r\n\r\n var category = this.getSelectedCategory();\r\n\r\n var idx = category.results.indexOf(this.selectedProperty);\r\n if (idx > 0) {\r\n this.focusResult(category.results[idx - 1], idx - 1);\r\n } else {\r\n // first in category, choose previous category\r\n this.focusPreviousCategory();\r\n }\r\n }\r\n\r\n public focusNextCategory() {\r\n if (!this.getSelectedCategory()) {\r\n // if no category is selected, choose the first\r\n this.selectedCategory = this.getFirstCategory().name;\r\n } else {\r\n var nextCategory = undefined;\r\n for (var i = 0, ct = this.searchResults.length; i < ct; i++) {\r\n if (this.searchResults[i].name === this.selectedCategory) {\r\n if (i == ct - 1) {\r\n // This is the last category, we cannot go further\r\n return;\r\n } else {\r\n nextCategory = this.searchResults[i + 1];\r\n }\r\n }\r\n }\r\n this.selectedCategory = nextCategory.name;\r\n }\r\n\r\n // always select a new property\r\n this.focusResult(this.getSelectedCategory().results[0], 0);\r\n }\r\n\r\n public focusPreviousCategory() {\r\n if (!this.getSelectedCategory()) {\r\n // if no category is selected, choose the first\r\n this.selectedCategory = this.getFirstCategory().name;\r\n } else {\r\n var previousCategory = undefined;\r\n for (var i = 0, ct = this.searchResults.length; i < ct; i++) {\r\n if (this.searchResults[i].name === this.selectedCategory) {\r\n if (i == 0) {\r\n // This is the first category, we cannot go further\r\n return;\r\n } else {\r\n previousCategory = this.searchResults[i - 1];\r\n }\r\n }\r\n }\r\n this.selectedCategory = previousCategory.name;\r\n }\r\n\r\n // always select a new property\r\n var numResults = this.getSelectedCategory().results.length;\r\n this.focusResult(this.getSelectedCategory().results[numResults - 1], numResults - 1);\r\n }\r\n\r\n public keyupInSearch($event: KeyboardEvent) {\r\n if ($event.key.indexOf(\"Up\") >= 0) {\r\n this.focusSearchResults();\r\n $event.preventDefault();\r\n } else if ($event.key.indexOf(\"Down\") >= 0) {\r\n this.focusSearchResults();\r\n $event.preventDefault();\r\n } else if ($event.key.indexOf(\"Escape\") >= 0) {\r\n this.clearFind();\r\n }\r\n }\r\n\r\n public keyupInResults($event: KeyboardEvent) {\r\n if ($event.key.indexOf(\"Up\") >= 0) {\r\n this.focusPreviousResult();\r\n $event.preventDefault();\r\n } else if ($event.key.indexOf(\"Down\") >= 0) {\r\n this.focusNextResult();\r\n $event.preventDefault();\r\n } else if ($event.key.indexOf(\"Enter\") >= 0) {\r\n var selected = this.getSelectedResult();\r\n if (selected == undefined) {\r\n this.showSelectionMessage = true;\r\n } else {\r\n this.showSelectionMessage = false;\r\n this.selectResult(selected);\r\n }\r\n } else if ($event.key.indexOf(\"Escape\") >= 0) {\r\n this.clearFind();\r\n }\r\n }\r\n\r\n public keydown($event: KeyboardEvent) {\r\n if ($event.key.indexOf(\"Up\") >= 0 || $event.key.indexOf(\"Down\") >= 0) {\r\n $event.preventDefault();\r\n $event.view.event.preventDefault();\r\n }\r\n }\r\n\r\n public filterAutocompleteData() {\r\n // We must always re-evaluate whether or not we display the where going label.\r\n this.updateWhereGoingDisplay();\r\n if (this.selectedProperty) {\r\n // If the user has already made a selection and is changing their input, we need to reset the selection\r\n this.selectedProperty.selected = false;\r\n this.selectedProperty = undefined;\r\n }\r\n\r\n if (this.searchInput.length < 3) {\r\n this.searchResults = [];\r\n this.showResults = false;\r\n\r\n return;\r\n }\r\n\r\n this.getLocalBookingData().then(() => {\r\n this.showResults = true;\r\n // cleanup previous selected properties and wipe out selections \r\n if (this.selectedProperty) {\r\n this.selectedProperty.selected = false;\r\n }\r\n\r\n this.selectedCategory = undefined;\r\n this.selectedProperty = undefined;\r\n\r\n this.searchResults = this.omPropertyFilter(this.propertyData, this.searchInput);\r\n\r\n // Gather all categories from search results and build into a new object\r\n var categoriesUnique = this.searchResults.reduce((categories, currentItem) => {\r\n var foundCategory = undefined;\r\n for (var i = 0, ct = categories.length; i < ct; i++) {\r\n if (categories[i].name === currentItem.category) {\r\n foundCategory = categories[i];\r\n }\r\n }\r\n\r\n // Add to categories with special handling for City items.\r\n if (foundCategory) {\r\n if (currentItem.category === \"City\") {\r\n if (currentItem.label.toLowerCase().indexOf(this.searchInput.toLowerCase()) >= 0) {\r\n if (currentItem.ResultLabel.toLowerCase().indexOf(this.searchInput.toLowerCase()) >= 0) {\r\n foundCategory.results.push(currentItem);\r\n }\r\n }\r\n } else {\r\n foundCategory.results.push(currentItem);\r\n }\r\n\r\n } else {\r\n if (currentItem.category === \"City\") {\r\n if (currentItem.label.toLowerCase().indexOf(this.searchInput.toLowerCase()) >= 0) {\r\n if (currentItem.ResultLabel.toLowerCase().indexOf(this.searchInput.toLowerCase()) >= 0) {\r\n categories.push({ name: currentItem.category, results: [currentItem] });\r\n }\r\n }\r\n } else {\r\n categories.push({ name: currentItem.category, results: [currentItem] });\r\n }\r\n\r\n }\r\n\r\n return categories;\r\n }, []);\r\n \r\n // Reorder results to put Omni ahead of GHA in each category\r\n categoriesUnique.forEach((category) => {\r\n category.results.sort((a, b) => {\r\n if (a.IsGha && !b.IsGha) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n });\r\n\r\n this.searchResults = categoriesUnique;\r\n });\r\n }\r\n\r\n public getLocalBookingData = () => {\r\n // If we're fetching the data don't try to fetch it again\r\n if (this.findDataPromise) {\r\n return this.findDataPromise;\r\n }\r\n\r\n this.findDataPromise = this.omniBookingService.GetFindData(this.bookerConfig.IncludeGha);\r\n this.findDataPromise.then((data) => {\r\n this.propertyData = data;\r\n });\r\n\r\n return this.findDataPromise;\r\n }\r\n\r\n private getSelectedResult(): BookingDataResult {\r\n var result: BookingDataResult = undefined;\r\n if (this.getSelectedCategory()) {\r\n var category = this.getSelectedCategory();\r\n for (var i = 0, ct = category.results.length; i < ct; i++) {\r\n if (category.results[i].selected) {\r\n result = category.results[i];\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private getSelectedCategory() {\r\n var selectedCategory = undefined;\r\n\r\n for (var i = 0, ct = this.searchResults.length; i < ct; i++) {\r\n if (this.searchResults[i].name === this.selectedCategory) {\r\n selectedCategory = this.searchResults[i];\r\n }\r\n }\r\n\r\n return selectedCategory;\r\n }\r\n\r\n private getFirstCategory() {\r\n var firstCategory = undefined;\r\n\r\n if (this.searchResults && this.searchResults.length > 0) {\r\n firstCategory = this.searchResults[0];\r\n }\r\n\r\n return firstCategory;\r\n }\r\n\r\n private updateWhereGoingDisplay() {\r\n // Evaluates the search input and shows or hides \"where are you going\" label accordingly\r\n if (this.searchInput.length === 0) {\r\n this.showWhereGoingLabel = true;\r\n } else {\r\n this.showWhereGoingLabel = false;\r\n }\r\n\r\n }\r\n\r\n private onBookerStateUpdate() {\r\n this.focusSearchInput();\r\n }\r\n\r\n private focusSearchInput() {\r\n this.$timeout(\r\n () => {\r\n angular.element(\"#where-going\").focus();\r\n }, 500);\r\n }\r\n\r\n private focusSearchResults() {\r\n this.$timeout(\r\n () => {\r\n var firstResult: any = document.querySelectorAll(\".result-category-list:first-of-type li:first-of-type a\")[0];\r\n firstResult.focus();\r\n }, 75);\r\n }\r\n }\r\n });\r\n}\r\n","module Omni.Booker {\r\n var templateUrlFn = function ($templateCache) {\r\n var navigationTemplate = $templateCache.get(\"omni-booker-navigation.html\");\r\n if (navigationTemplate) {\r\n return \"omni-booker-navigation.html\";\r\n }\r\n\r\n return \"omni/assets/booker/booker.defaultnav.html\";\r\n }\r\n templateUrlFn.$inject = [\"$templateCache\"];\r\n\r\n NgModule.component(\"omniBookerNavigation\", {\r\n controller: class OmniBookerNavController {\r\n static scrollDuration = 0;\r\n ShowBooker: boolean;\r\n Expanded: boolean;\r\n BrandPage: boolean;\r\n\r\n static $inject = [\r\n \"$rootScope\",\r\n \"$scope\",\r\n \"$document\",\r\n \"$window\",\r\n \"omni.bookingservice\"\r\n ];\r\n constructor(\r\n private readonly $rootScope,\r\n private readonly $scope,\r\n private readonly $document,\r\n private readonly $window,\r\n private readonly bookingService: IBookingService\r\n ) {\r\n this.onBookerStateUpdate();\r\n this.$scope.$on(\"bookerStateUpdate\", () => { this.onBookerStateUpdate(); });\r\n }\r\n\r\n ToggleNavigation() {\r\n if (this.isBookerVisible()) {\r\n this.bookingService.ToggleBooker();\r\n } else {\r\n this.bookingService.OpenBooker();\r\n }\r\n }\r\n\r\n private isBookerVisible(): boolean {\r\n const h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\r\n\r\n if (this.$document.scrollTop() < h / 2) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private scrollToTop() {\r\n const left = 0, top = 0, duration = OmniBookerNavController.scrollDuration;\r\n // Scroll to the exact position\r\n this.$document.duScrollTo(left, top, duration);\r\n }\r\n\r\n private onBookerStateUpdate() {\r\n const bookerState = this.bookingService.GetBookerState();\r\n this.ShowBooker = bookerState.IsEnabled;\r\n this.Expanded = bookerState.IsExpanded;\r\n this.BrandPage = bookerState.IsBrandPage;\r\n\r\n if (this.Expanded) {\r\n this.scrollToTop();\r\n }\r\n }\r\n },\r\n templateUrl: templateUrlFn\r\n });\r\n}","module Omni.Booker {\r\n export class PropertyDetail {\r\n public HotelId: string;\r\n public PropertyName: string;\r\n public IsComingSoon: boolean;\r\n public ComingSoonText: string;\r\n public HotelLink: string;\r\n public RedeemFreeNights: boolean;\r\n public IsVillas: boolean;\r\n constructor() {\r\n\r\n }\r\n }\r\n\r\n export class TravelDates {\r\n public ArrivalDate: string;\r\n public DepartureDate: string;\r\n\r\n constructor() {\r\n\r\n }\r\n }\r\n \r\n export class RoomDetail {\r\n public RoomCount: number;\r\n public Rooms: Room[];\r\n public Accessible: boolean;\r\n public BedRoomCount: BedroomOption;\r\n public VillasView: ViewOption;\r\n\r\n constructor() {\r\n this.RoomCount = 0;\r\n this.Rooms = [];\r\n this.BedRoomCount = null;\r\n this.VillasView = null;\r\n }\r\n }\r\n export class Room {\r\n private static OccupancyAlertNumber: number = 5;\r\n public AdultCount: number;\r\n public ChildCount: number;\r\n public ChildAges: number[];\r\n \r\n\r\n constructor() {\r\n this.AdultCount = 0;\r\n this.ChildCount = 0;\r\n this.ChildAges = []; \r\n }\r\n\r\n public ShowOccupancyAlert = () => {\r\n if (this.AdultCount + this.ChildCount >= Room.OccupancyAlertNumber) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n } \r\n\r\n export class RateCodes {\r\n public RateCode: string;\r\n public IsRedeemingFreeNights: boolean;\r\n public PromoCode: string;\r\n public GroupCode: string;\r\n public TravelAgentNumber: string;\r\n\r\n constructor() {\r\n\r\n }\r\n }\r\n\r\n NgModule.component(\"omniBooker\", {\r\n bindings: {\r\n currentPropertyData: \"@\"\r\n },\r\n controller: class OmniBookerController {\r\n private currentPropertyData; // Data set from attribute, do not modify this\r\n\r\n // public selectedBookingProperty;\r\n public findEnabled: boolean;\r\n\r\n //For Calendars \r\n public isArrivalOpen: boolean;\r\n public isDepartOpen: boolean;\r\n\r\n // Data properties for component bindings\r\n public PropertyDetailData: PropertyDetail;\r\n public TravelDatesData: TravelDates;\r\n public RoomDetailData: RoomDetail;\r\n public RateCodesData: RateCodes;\r\n\r\n static $inject = [\"$window\", \"$document\", \"moment\", \"omni.bookingapiservice\", \"omni.bookingservice\", \"$log\", \"$scope\", \"$timeout\"];\r\n constructor(\r\n private $window: ng.IWindowService,\r\n private $document: ng.IDocumentService,\r\n private moment,\r\n private BookingApiService: IBookingApiService,\r\n private BookingService: IBookingService,\r\n private $log: ng.ILogService,\r\n private $scope: ng.IScope,\r\n private readonly $timeout: ng.ITimeoutService\r\n ) {\r\n this.addMarginOnAlert();\r\n $window.addEventListener(\"resize\", () => {\r\n this.addMarginOnAlert();\r\n }); \r\n \r\n $document.bind(\"keydown\", (e: any) => {\r\n //Keycode for ESC\r\n if (e.keyCode === 27)\r\n {\r\n this.closeBookerEvent();\r\n this.$scope.$apply();\r\n }\r\n else if (e.keyCode === 9){\r\n this.tabBookerEvent(e);\r\n this.$scope.$apply();\r\n }\r\n }); \r\n }\r\n\r\n // ReSharper disable once InconsistentNaming - This is angular's component API\r\n public $onInit() {\r\n this.PropertyDetailData = this.BookingService.GetPropertyDetail();\r\n this.TravelDatesData = this.BookingService.GetTravelDates();\r\n this.RoomDetailData = this.BookingService.GetRoomDetails();\r\n this.RateCodesData = this.BookingService.GetRateCodes();\r\n\r\n this.isArrivalOpen = false;\r\n this.isDepartOpen = false;\r\n \r\n // Sync up data upon initialization of component\r\n this.BookingService.PutTravelDates(this.TravelDatesData);\r\n this.BookingService.PutRateCodes(this.RateCodesData);\r\n\r\n var parsedViewModel = JSON.parse(this.currentPropertyData);\r\n\r\n if (parsedViewModel) {\r\n this.findEnabled = false;\r\n this.PropertyDetailData.HotelId = parsedViewModel.PropertyId;\r\n this.PropertyDetailData.PropertyName = parsedViewModel.PropertyName;\r\n this.PropertyDetailData.IsComingSoon = parsedViewModel.IsComingSoon;\r\n this.PropertyDetailData.ComingSoonText = parsedViewModel.ComingSoonText;\r\n this.PropertyDetailData.HotelLink = parsedViewModel.HotelLink;\r\n this.PropertyDetailData.RedeemFreeNights = parsedViewModel.RedeemFreeNights;\r\n this.PropertyDetailData.IsVillas = parsedViewModel.IsVillasProperty;\r\n\r\n this.focusArrivalDate();\r\n } else {\r\n this.findEnabled = true;\r\n }\r\n\r\n this.$scope.$watch(() => { return this.findEnabled },\r\n (newVal) => {\r\n this.$log.debug(\"FindEnabled flipped\");\r\n if (newVal === false) {\r\n this.focusArrivalDate();\r\n }\r\n });\r\n\r\n this.$log.debug(\"widget-data=\", parsedViewModel);\r\n this.$log.debug(\"propertyData=\", this.PropertyDetailData);\r\n this.$log.debug(\"travelData=\", this.TravelDatesData);\r\n this.$log.debug(\"roomData=\", this.RoomDetailData);\r\n this.$log.debug(\"rateData=\", this.RateCodesData);\r\n }\r\n\r\n NavigateToHotel() {\r\n this.$window.location.href = this.PropertyDetailData.HotelLink;\r\n }\r\n\r\n SubmitBooking() {\r\n this.BookingApiService.GetBookingLink(this.PropertyDetailData, this.TravelDatesData, this.RoomDetailData, this.RateCodesData)\r\n .then((link: string) => {\r\n this.$log.debug(\"setting booking url\", link);\r\n this.$window.location.href = link;\r\n });\r\n \r\n }\r\n CollapseCalendar(mode) {\r\n if (mode === \"SetArrival\")\r\n {\r\n this.isDepartOpen = false;\r\n }\r\n if (mode === \"SetDeparture\")\r\n {\r\n this.isArrivalOpen = false;\r\n }\r\n }\r\n\r\n private focusArrivalDate() {\r\n this.$timeout(\r\n () => {\r\n var targetResult: any = document.querySelectorAll(\".calendar-arrival .om-bk-date-range\")[0];\r\n if (targetResult) {\r\n targetResult.focus();\r\n }\r\n }, 200);\r\n }\r\n\r\n private focusDepartureDate() {\r\n this.$timeout(\r\n () => {\r\n var targetResult: any = document.querySelectorAll(\".calendar-departure .om-bk-date-range\")[0];\r\n if (targetResult) {\r\n targetResult.focus();\r\n }\r\n }, 200);\r\n }\r\n\r\n private addMarginOnAlert() {\r\n if (angular.element(\".security-alert\").is(\":visible\")) {\r\n var marginToApply = \"0px\";\r\n\r\n if (screen.width > 991) {\r\n marginToApply = \"40px\";\r\n }\r\n else if (screen.width <= 991 && screen.width >= 768) {\r\n marginToApply = \"35px\";\r\n }\r\n else if (screen.width <= 767 && screen.width >= 550) {\r\n marginToApply = \"30px\";\r\n }\r\n else if (screen.width < 550) {\r\n marginToApply = \"25px\";\r\n }\r\n\r\n angular.element(\"omni-booker\").css(\"margin-top\", marginToApply);\r\n }\r\n }\r\n\r\n private closeBookerEvent()\r\n {\r\n this.BookingService.CloseBooker();\r\n }\r\n\r\n private tabBookerEvent(event: KeyboardEvent)\r\n {\r\n this.BookingService.TabBooker(event);\r\n }\r\n },\r\n templateUrl: 'omni-booker.html'\r\n });\r\n} ","module Omni.Booker {\r\n NgModule.component(\"rateConfirmModal\", {\r\n templateUrl: 'rate-confirm-modal.html',\r\n bindings: {\r\n message: \"@\",\r\n close: \"&\",\r\n dismiss: \"&\"\r\n },\r\n controller: function () {\r\n var $ctrl = this;\r\n\r\n $ctrl.$onInit = function () {\r\n };\r\n\r\n $ctrl.ok = function () {\r\n $ctrl.close({ $value: 'confirm' });\r\n };\r\n\r\n $ctrl.cancel = function () {\r\n $ctrl.dismiss({ $value: 'cancel' });\r\n };\r\n }\r\n });\r\n}","module Omni.Booker { \r\n export class BedroomOption {\r\n Count: number;\r\n Label: string;\r\n }\r\n export class ViewOption {\r\n Value: string;\r\n Label: string;\r\n }\r\n\r\n NgModule.component(\"omniBookerRoomDetails\", {\r\n templateUrl: 'omni-booker-room-details.html',\r\n bindings: {\r\n roomDetails: \"=\",\r\n propertyDetail: \"=\" // Two-way\r\n },\r\n controller: class OmniBookerRoomDetailsController {\r\n public roomDetails: RoomDetail; // binding\r\n public propertyDetail: PropertyDetail; // binding\r\n\r\n public RoomCountOptions = [1, 2, 3];\r\n public AdultCountOptions = [1, 2, 3, 4]; \r\n public ChildCountOptions = [0, 1, 2, 3, 4];\r\n public ChildAgeOptions = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17];\r\n\r\n //Properties for Villas\r\n public AdultVillasCountOptions = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\r\n public BedroomCountOptions: BedroomOption[] = [];\r\n public VillasViewOptions: ViewOption[] = [];\r\n\r\n public static $inject = [\"$log\"];\r\n constructor(private $log: ng.ILogService) {\r\n let bedroomCountString = 'bedroom (per Villa)';\r\n this.BedroomCountOptions.push({ Count: 1, Label: `1 ${bedroomCountString}` });\r\n this.BedroomCountOptions.push({ Count: 2, Label: `2 ${bedroomCountString}` });\r\n this.BedroomCountOptions.push({ Count: 3, Label: `3 ${bedroomCountString}` });\r\n this.BedroomCountOptions.push({ Count: 4, Label: `4+ ${bedroomCountString}` });\r\n\r\n this.VillasViewOptions.push({ Value: \"ocean\", Label: \"Ocean View\" });\r\n this.VillasViewOptions.push({ Value: \"nature\", Label: \"Nature View\" });\r\n }\r\n\r\n private createDefaultRoom(): Room {\r\n var room = new Room();\r\n room.AdultCount = 2;\r\n room.ChildCount = 0;\r\n return room;\r\n }\r\n\r\n public onRoomCountChanged() {\r\n var currentRoomCount = this.roomDetails.Rooms.length;\r\n var roomCount = this.roomDetails.RoomCount;\r\n \r\n if (currentRoomCount === roomCount) {\r\n // Nothing to do here\r\n return;\r\n }\r\n\r\n var delta = Math.abs(currentRoomCount - roomCount);\r\n var adding = currentRoomCount < roomCount;\r\n\r\n if (adding) {\r\n // Need to add extra rooms\r\n for (var i = 0; i < delta; i++) {\r\n var newRoom = this.createDefaultRoom(); \r\n this.roomDetails.Rooms.push(newRoom);\r\n }\r\n } else {\r\n // Need to remove extra rooms\r\n this.roomDetails.Rooms.splice(currentRoomCount - delta, delta);\r\n }\r\n \r\n this.$log.debug(\"change hit\", this.roomDetails);\r\n \r\n }\r\n\r\n public onChildCountChanged(room: Room) {\r\n var currentChildrenCount = room.ChildAges.length;\r\n var childCount = room.ChildCount;\r\n\r\n if (currentChildrenCount === childCount) {\r\n // Nothing to do here\r\n return;\r\n }\r\n\r\n var delta = Math.abs(currentChildrenCount - childCount);\r\n var adding = currentChildrenCount < childCount;\r\n\r\n if (adding) {\r\n // Need to add extra age\r\n for (var i = 0; i < delta; i++) {\r\n room.ChildAges.push(undefined);\r\n }\r\n } else {\r\n // Need to remove extra age\r\n room.ChildAges.splice(currentChildrenCount - delta, delta);\r\n \r\n }\r\n\r\n this.$log.debug(\"change hit\", this.roomDetails);\r\n }\r\n }\r\n \r\n });\r\n} ","module Omni.Booker {\r\n NgModule.component(\"signInModal\", {\r\n templateUrl: \"sign-in-modal\",\r\n bindings: {\r\n message: \"@\",\r\n close: \"&\",\r\n dismiss: \"&\"\r\n },\r\n controller: class SignInModalController {\r\n private close; // Referential\r\n private dismiss; // Referential\r\n static $inject =[];\r\n constructor() {\r\n\r\n }\r\n\r\n public $onInit() {\r\n //TODO: Grab data from service, parse whatever needs to be parsed here and bind data to controller (and hidden fields)\r\n //var startDate = new Date(Date.parse($j(\"form#find-and-book-form #hdnStartDate\").val()));\r\n //var startDateString = (startDate.getMonth() + 1) + \"/\" + startDate.getDate() + \"/\" + startDate.getFullYear();\r\n //var endDate = new Date(Date.parse($j(\"form#find-and-book-form #hdnEndDate\").val()));\r\n //var endDateString = (endDate.getMonth() + 1) + \"/\" + endDate.getDate() + \"/\" + endDate.getFullYear();\r\n \r\n }\r\n\r\n //public submit = ($event) => {\r\n // angular.element(\"[name='navFormSI']\").submit();\r\n // //$http.post('http://posttestserver.com/post.php?dir=jsfiddle', JSON.stringify(data)).success(function () {/*success callback*/ });\r\n //}\r\n\r\n public ok = () => {\r\n this.close({ $value: 'confirm' });\r\n }\r\n\r\n public cancel = () => {\r\n this.dismiss({ $value: 'cancel' });\r\n }\r\n }\r\n });\r\n}","module Omni.Booker {\r\n NgModule.component(\"omniBookerSpecialRates\", {\r\n bindings: {\r\n propertyDetail: \"=\",\r\n rateInformation: \"=\"\r\n },\r\n controller: class SpecialRatesController {\r\n private expandRates: boolean; \r\n private rateInformation: RateCodes;\r\n private propertyDetail: PropertyDetail;\r\n private isUserSignedIn: boolean;\r\n private userFreeNights: number;\r\n private displayExpedia: boolean;\r\n\r\n private modalInstanceDeferred; // Makes sure we only have one instance of a modal open at a time.\r\n private signInModalInstanceDeferred; // Make sure we only have one instance of sign in modal open at a time.\r\n private profileDeferred;\r\n\r\n static $inject = [\"$log\", \"$uibModal\", \"$q\", \"omni.core.profileservice\", \"omni.bookingservice\", \"bookerConfig\"];\r\n constructor(\r\n private $log: ng.ILogService,\r\n private $uibModal,\r\n private $q: ng.IQService,\r\n private profileService: Core.IProfileService,\r\n private bookingService: Booker.IBookingService,\r\n private readonly bookerConfig: Constants.IBookerConfiguration) {\r\n this.expandRates = false;\r\n this.displayExpedia = this.bookerConfig.ShowExpediaLink;\r\n }\r\n \r\n public $onInit() {\r\n this.$log.debug(\"rateInfo=\", this.rateInformation);\r\n \r\n }\r\n\r\n public rateCodeInterpreter = (value) => {\r\n if (value) {\r\n var old = this.rateInformation.RateCode;\r\n this.rateInformation.RateCode = value;\r\n \r\n this.openComponentModal().then((response) => {\r\n \r\n if (response === \"ok\") {\r\n this.rateInformation.GroupCode = \"\";\r\n this.rateInformation.PromoCode = \"\";\r\n this.rateInformation.RateCode = value;\r\n } else {\r\n this.rateInformation.RateCode = old;\r\n }\r\n }).finally(() => {\r\n this.syncToService();\r\n });\r\n \r\n } else {\r\n return this.rateInformation.RateCode;\r\n }\r\n }\r\n\r\n public groupCodeInterpreter = (value) => {\r\n if (typeof value != \"undefined\") {\r\n // If group is already selected, we can continue to receive input\r\n if (this.rateInformation.RateCode === \"group_code\") {\r\n this.rateInformation.GroupCode = value;\r\n this.syncToService();\r\n return this.rateInformation.GroupCode;\r\n }\r\n\r\n var old = this.rateInformation.GroupCode;\r\n\r\n this.openComponentModal().then((response) => {\r\n if (response === \"ok\") {\r\n this.rateInformation.RateCode = \"group_code\";\r\n this.rateInformation.PromoCode = \"\";\r\n this.rateInformation.GroupCode = value;\r\n } else {\r\n this.rateInformation.GroupCode = old;\r\n }\r\n }).finally(() => {\r\n this.syncToService();\r\n });\r\n } else {\r\n return this.rateInformation.GroupCode;\r\n }\r\n }\r\n\r\n public promoCodeInterpreter = (value) => {\r\n if (typeof value != \"undefined\") {\r\n // If promo is already selected, we can continue to receive input\r\n if (this.rateInformation.RateCode === \"promotional_code\") {\r\n this.rateInformation.PromoCode = value;\r\n this.syncToService();\r\n return this.rateInformation.PromoCode;\r\n }\r\n\r\n var old = this.rateInformation.PromoCode;\r\n this.openComponentModal().then((response) => {\r\n if (response === \"ok\") {\r\n this.rateInformation.RateCode = \"promotional_code\";\r\n this.rateInformation.GroupCode = \"\";\r\n this.rateInformation.PromoCode = value;\r\n } else {\r\n this.rateInformation.PromoCode = old;\r\n }\r\n }).finally(() => {\r\n this.syncToService();\r\n });\r\n } else {\r\n return this.rateInformation.PromoCode;\r\n }\r\n }\r\n\r\n public freeNightsInterpreter = (value) => {\r\n if (typeof(value) !== \"undefined\") {\r\n // Capture old value, set new value immediately\r\n var old = this.rateInformation.IsRedeemingFreeNights;\r\n this.rateInformation.IsRedeemingFreeNights = value;\r\n\r\n // Request user profile, ensure user is signed in\r\n this.getUserProfile().then(() => {\r\n if (this.isUserSignedIn) {\r\n // already signed in\r\n this.syncToService();\r\n } else {\r\n this.openSignInModal().then((response) => {\r\n if (response === \"ok\") {\r\n // user will be signed in (and redirected) to SSL site, we will never receive the sign in action here\r\n } else {\r\n // user cancelled, reset redeeming nights value\r\n this.rateInformation.IsRedeemingFreeNights = old;\r\n this.syncToService();\r\n }\r\n });\r\n }\r\n });\r\n } else {\r\n return this.rateInformation.IsRedeemingFreeNights;\r\n }\r\n }\r\n\r\n private openComponentModal = () => {\r\n if (this.modalInstanceDeferred) {\r\n return this.modalInstanceDeferred;\r\n }\r\n\r\n var deferred = this.$q.defer();\r\n var promoDefined = false, groupDefined = false;\r\n \r\n if (angular.isDefined(this.rateInformation.PromoCode) && this.rateInformation.PromoCode.length > 0) {\r\n promoDefined = true;\r\n \r\n }\r\n \r\n if (angular.isDefined(this.rateInformation.GroupCode) && this.rateInformation.GroupCode.length > 0) {\r\n groupDefined = true;\r\n }\r\n \r\n if (!promoDefined && !groupDefined) {\r\n deferred.resolve(\"ok\");\r\n return deferred.promise;\r\n }\r\n \r\n var modalInstance = this.$uibModal.open({\r\n animation: true,\r\n component: 'rateConfirmModal',\r\n resolve: {\r\n\r\n }\r\n });\r\n\r\n modalInstance.result.then((selectedItem) => {\r\n this.$log.debug('modal-component ok\\'ed at: ' + new Date());\r\n deferred.resolve(\"ok\");\r\n }, () => {\r\n this.$log.debug('modal-component dismissed at: ' + new Date());\r\n deferred.resolve(\"cancel\");\r\n }).finally(() => { \r\n this.modalInstanceDeferred = undefined; \r\n });\r\n\r\n this.modalInstanceDeferred = deferred.promise;\r\n return this.modalInstanceDeferred;\r\n };\r\n\r\n private openSignInModal = () => {\r\n if (this.signInModalInstanceDeferred) {\r\n return this.signInModalInstanceDeferred;\r\n }\r\n\r\n var deferred = this.$q.defer();\r\n\r\n var modalInstance = this.$uibModal.open({\r\n animation: true,\r\n component: 'signInModal',\r\n ariaLabelledBy: 'sign-in-modal-title',\r\n resolve: {\r\n\r\n }\r\n });\r\n\r\n modalInstance.result.then((selectedItem) => {\r\n this.$log.debug('signin-component ok\\'ed at: ' + new Date());\r\n deferred.resolve(\"ok\");\r\n }, () => {\r\n this.$log.debug('signin-component dismissed at: ' + new Date());\r\n deferred.resolve(\"cancel\");\r\n }).finally(() => {\r\n this.signInModalInstanceDeferred = undefined;\r\n });\r\n\r\n this.signInModalInstanceDeferred = deferred.promise;\r\n return this.signInModalInstanceDeferred;\r\n }\r\n\r\n private getUserProfile = () => {\r\n if (this.profileDeferred) {\r\n return this.profileDeferred;\r\n }\r\n\r\n this.profileDeferred = this.profileService.GetProfile();\r\n this.profileDeferred.then((profileRes) => {\r\n this.isUserSignedIn = profileRes.IsUserLoggedIn === \"true\";\r\n this.userFreeNights = parseInt(profileRes.FreeNights, 10);\r\n });\r\n\r\n return this.profileDeferred;\r\n }\r\n\r\n private syncToService() {\r\n this.bookingService.PutRateCodes(this.rateInformation);\r\n }\r\n\r\n public onPromoCodeClick() {\r\n document.getElementById(\"promoCode\").focus(); \r\n }\r\n\r\n public onGroupCodeClick() {\r\n document.getElementById(\"groupCode\").focus();\r\n }\r\n\r\n },\r\n templateUrl: \"omni-booker-special-rates.html\"\r\n }); \r\n} \r\n","module Omni.Booker {\r\n\r\n enum TravelDatesState {\r\n SetArrival,\r\n SetDeparture\r\n }\r\n \r\n NgModule.component(\"omniBookerTravelDate\", {\r\n bindings: {\r\n controlId: \"@\",\r\n travelDates: \"=\", \r\n calendarClass: \"@\", \r\n calendarMode: \"@\",\r\n calchange: \"&\",\r\n label: \"@\",\r\n isOpened: \"=\" \r\n },\r\n controller: class OmniBookerTravelDateController {\r\n // For formatting, see https://momentjs.com/docs/#/displaying/format/ \r\n static ShortDateFormat: string = \"MM/DD/YYYY\"; \r\n \r\n // Bindings\r\n public controlId: string;\r\n public travelDates: TravelDates;\r\n public calendarMode: string;\r\n public state: TravelDatesState;\r\n public weeks;\r\n public month;\r\n public day;\r\n public selected;\r\n public isOpened;\r\n public calchange: any; \r\n \r\n\r\n static $inject = [\"$window\", \"$log\", \"moment\", \"omni.bookingservice\"];\r\n constructor(private $window: ng.IWindowService, private $log: ng.ILogService,\r\n private moment, private bookingService: Booker.IBookingService) {\r\n this.isOpened = false;\r\n }\r\n\r\n public $onInit() {\r\n const typedStateString = this.calendarMode as keyof typeof TravelDatesState;\r\n this.state = TravelDatesState[typedStateString];\r\n\r\n if (this.state == TravelDatesState.SetArrival) {\r\n this.travelDates.ArrivalDate = this.getDefaultStartDate();\r\n }\r\n if (this.state == TravelDatesState.SetDeparture) {\r\n this.travelDates.DepartureDate = this.getDefaultEndDate();\r\n }\r\n }\r\n \r\n public toggleCalendar() {\r\n this.isOpened = !this.isOpened;\r\n if (this.isOpened) {\r\n this.syncCalendar();\r\n }\r\n this.calchange({ mode: this.calendarMode });\r\n }\r\n\r\n private getDefaultStartDate() {\r\n if (this.travelDates.ArrivalDate) {\r\n return this.travelDates.ArrivalDate;\r\n } else {\r\n return this.moment.utc(this.bookingService.GetCurrentDate());\r\n }\r\n }\r\n\r\n private getDefaultEndDate() {\r\n if (this.travelDates.DepartureDate) {\r\n return this.travelDates.DepartureDate;\r\n } else {\r\n return this.moment.utc(this.bookingService.GetCurrentDate()).add('days', 1);\r\n }\r\n }\r\n\r\n private syncCalendar() {\r\n this.selected = this._removeTime(this.moment.utc());\r\n this.$log.debug(\"syncing calendar=\", this.state);\r\n\r\n if (this.state === TravelDatesState.SetDeparture && this.travelDates.DepartureDate) {\r\n this.selected = this._removeTime(this.moment.utc(this.travelDates.DepartureDate));\r\n } else if (this.state === TravelDatesState.SetArrival && this.travelDates.ArrivalDate) {\r\n this.selected = this._removeTime(this.moment.utc(this.travelDates.ArrivalDate));\r\n }\r\n\r\n this.month = this.selected.clone();\r\n\r\n const start = this.selected.clone();\r\n start.date(1);\r\n this._removeTime(start.day(0));\r\n\r\n this._buildMonth(start, this.month);\r\n }\r\n\r\n public isSelected(date) {\r\n // Used for styling the selected dates in calendar\r\n const arrival = this.moment.utc(this.travelDates.ArrivalDate);\r\n const departure = this.moment.utc(this.travelDates.DepartureDate);\r\n\r\n if (this.state === TravelDatesState.SetArrival && this.moment.utc(date).isSame(arrival)) {\r\n return true;\r\n }\r\n if (this.state === TravelDatesState.SetDeparture && this.moment.utc(date).isSame(departure)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public select(day) {\r\n this.selected = day.date;\r\n this.$log.debug(\"selected=\", this.selected);\r\n \r\n const today = this.moment.utc().startOf(\"day\");\r\n if (this.selected.isBefore(today)) {\r\n this.$log.debug(\"cannot set date in past\");\r\n return;\r\n }\r\n\r\n if (this.state === TravelDatesState.SetArrival) {\r\n this.travelDates.ArrivalDate = this.selected;\r\n if (this.travelDates.DepartureDate && (this.selected.isAfter(this.travelDates.DepartureDate)\r\n || this.selected.isSame(this.travelDates.DepartureDate))) {\r\n this.travelDates.DepartureDate = this.moment.utc(this.travelDates.ArrivalDate).add('days', 1);\r\n this.syncToService();\r\n }\r\n if (day.isCurrentMonth === false) {\r\n if (day.date.isAfter(this.month)) {\r\n this.nextMonth();\r\n }\r\n }\r\n }\r\n\r\n if (this.state === TravelDatesState.SetDeparture) {\r\n const arrival = this.moment.utc(this.travelDates.ArrivalDate);\r\n if (arrival.isAfter(this.selected)) {\r\n this.$log.debug(\"cannot set departure earlier than arrival\");\r\n return;\r\n } else if (this.selected.isSame(arrival)) {\r\n this.$log.debug(\"cannot set same dates\");\r\n return;\r\n } else {\r\n this.travelDates.DepartureDate = this.selected;\r\n this.syncToService();\r\n }\r\n }\r\n\r\n this.toggleCalendar();\r\n }\r\n\r\n public previousMonth() { \r\n const prevMonth = this.month.clone().subtract(\"1\", \"months\");\r\n const lastDay = prevMonth.endOf(\"month\");\r\n\r\n // Disable previous month if its completely in the past\r\n if (this.moment.utc(lastDay).isBefore()) {\r\n return;\r\n }\r\n\r\n // Select the previous month\r\n const previous = this.month.clone();\r\n this._removeTime(previous.month(previous.month() - 1).date(1));\r\n this.month.month(this.month.month() - 1);\r\n this._buildMonth(previous, this.month);\r\n }\r\n\r\n public nextMonth(keycode?: number) { \r\n if (keycode && keycode === 9) {\r\n this.$window.document.getElementById(\"prevMonth\" + this.state).focus();\r\n }\r\n if (keycode && keycode === 13 || !keycode) {\r\n const next = this.month.clone();\r\n this._removeTime(next.month(next.month() + 1).date(1));\r\n this.month.month(this.month.month() + 1);\r\n this._buildMonth(next, this.month);\r\n }\r\n }\r\n\r\n private setTravelDateLabelFormat(date) {\r\n return this.moment.utc(date).format(OmniBookerTravelDateController.ShortDateFormat);\r\n }\r\n\r\n private syncToService() {\r\n this.bookingService.PutTravelDates(this.travelDates);\r\n }\r\n\r\n private _removeTime(date) {\r\n return date.day(0).hour(0).minute(0).second(0).millisecond(0);\r\n }\r\n\r\n private _buildMonth(start, month) {\r\n this.weeks = [];\r\n let done = false, date = start.clone(), monthIndex = date.month(), count = 0;\r\n while (!done) {\r\n this.weeks.push({ days: this._buildWeek(date.clone(), month) });\r\n date.add(1, \"w\");\r\n done = count++ > 2 && monthIndex !== date.month();\r\n monthIndex = date.month();\r\n }\r\n }\r\n\r\n private _buildWeek(date, month) {\r\n const days = [];\r\n for (let i = 0; i < 7; i++) {\r\n days.push({\r\n name: date.format(\"dd\").substring(0, 1),\r\n arialabel: date.format(\"MMMM Do YYYY\"),\r\n number: date.date(),\r\n isCurrentMonth: date.month() === month.month(),\r\n isToday: date.isSame(this.moment.utc(this.bookingService.GetCurrentDate()), \"day\"),\r\n isPast: this.isIllegalSelectionDate(date),\r\n date: date\r\n });\r\n date = date.clone();\r\n date.add(1, \"d\");\r\n }\r\n return days;\r\n }\r\n\r\n private isIllegalSelectionDate(date) {\r\n if (date.isBefore(this.moment.utc(this.bookingService.GetCurrentDate()), \"day\")) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n },\r\n templateUrl: 'omni-booker-travel-date.html'\r\n });\r\n}","module Omni.Booker.Constants {\r\n export interface IBookerConfiguration {\r\n ShowBookingWidget: boolean;\r\n IsBookerOpaque: boolean;\r\n IsBookerAlwaysOpen: boolean;\r\n IsBookerExpanded: boolean;\r\n PageType: string;\r\n CurrentDate: Date;\r\n IsBrandPage(): boolean;\r\n IsResortPage(): boolean;\r\n IsHotelPage(): boolean;\r\n ShowExpediaLink: boolean;\r\n IncludeGha: boolean;\r\n }\r\n\r\n class BookerConfiguration implements IBookerConfiguration {\r\n ShowBookingWidget: boolean;\r\n IsBookerOpaque: boolean;\r\n IsBookerAlwaysOpen: boolean;\r\n IsBookerExpanded: boolean;\r\n PageType: string;\r\n CurrentDate: Date;\r\n ShowExpediaLink: boolean;\r\n IncludeGha: boolean;\r\n\r\n constructor() {\r\n this.ShowBookingWidget = false;\r\n this.IsBookerAlwaysOpen = false;\r\n this.IsBookerOpaque = false;\r\n this.IsBookerExpanded = false;\r\n this.PageType = \"\";\r\n this.CurrentDate = new Date();\r\n this.ShowExpediaLink = false;\r\n this.IncludeGha = false;\r\n }\r\n\r\n public IsBrandPage() {\r\n if (this.PageType === \"Brand\") {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public IsResortPage() {\r\n if (this.PageType === \"Resort\") {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public IsHotelPage() {\r\n if (this.PageType === \"Hotel\") {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n }\r\n\r\n function bookerConfig(): BookerConfiguration {\r\n var config = new BookerConfiguration();\r\n\r\n var showBookingWidget = angular.element(\"[name='om-booking-showbookingwidget']\");\r\n config.ShowBookingWidget = showBookingWidget ? showBookingWidget.val() === \"True\" : false;\r\n\r\n var isBookerOpaque = angular.element(\"[name='om-booking-isbookeropaque']\");\r\n config.IsBookerOpaque = isBookerOpaque ? isBookerOpaque.val() === \"True\" : false;\r\n\r\n var isBookerAlwaysOpen = angular.element(\"[name='om-booking-isbookeralwaysopen']\");\r\n config.IsBookerAlwaysOpen = isBookerAlwaysOpen ? isBookerAlwaysOpen.val() === \"True\" : false;\r\n\r\n var isBookerExpanded = angular.element(\"[name='om-booking-isbookerexpanded']\");\r\n config.IsBookerExpanded = isBookerExpanded ? isBookerExpanded.val() === \"True\" : false;\r\n\r\n var pageType = angular.element(\"[name='om-booking-pagetype']\");\r\n config.PageType = pageType ? pageType.val() : \"\";\r\n\r\n var showExpediaLink = angular.element(\"[name='om-booking-showexpedialink']\");\r\n config.ShowExpediaLink = showExpediaLink ? showExpediaLink.val() === \"True\" : false;\r\n\r\n var includeGha = angular.element(\"[name='om-booking-includegha']\");\r\n config.IncludeGha = includeGha ? includeGha.val() === \"True\" : false;\r\n\r\n var currentDate = angular.element(\"[name='om-booking-currentdate']\");\r\n var date;\r\n if (currentDate) {\r\n date = new Date(parseInt(currentDate.val()));\r\n } else {\r\n date = new Date();\r\n }\r\n config.CurrentDate = this.moment.utc(date).toDate();\r\n return config;\r\n }\r\n\r\n NgModule.constant(\"bookerConfig\", bookerConfig());\r\n\r\n export interface IDateConfiguration {\r\n MonthsLong: string[];\r\n MonthsShort: string[];\r\n WeekdaysLong: string[];\r\n WeekdaysShort: string[];\r\n }\r\n\r\n class DateConfiguration {\r\n MonthsLong: string[];\r\n MonthsShort: string[];\r\n WeekdaysLong: string[];\r\n WeekdaysShort: string[];\r\n\r\n constructor() {\r\n this.MonthsLong = [];\r\n this.MonthsShort = [];\r\n this.WeekdaysLong = [];\r\n this.WeekdaysShort = [];\r\n }\r\n }\r\n\r\n function dateConfig(): DateConfiguration {\r\n const config = new DateConfiguration();\r\n\r\n const momentConfig = angular.element(\"input[name='dateConfig']\");\r\n if (momentConfig && momentConfig.length > 0) {\r\n const parsedViewModel = JSON.parse(momentConfig.val());\r\n config.MonthsLong = parsedViewModel.LongMonthList.split(\",\");\r\n config.MonthsShort = parsedViewModel.ShortMonthList.split(\",\");\r\n config.WeekdaysLong = parsedViewModel.LongWeekdayList.split(\",\");\r\n config.WeekdaysShort = parsedViewModel.ShortWeekdayList.split(\",\");\r\n }\r\n\r\n return config;\r\n }\r\n\r\n NgModule.constant(\"dateConfig\", dateConfig());\r\n}\r\n","module Omni.Booker {\r\n\r\n function changeCategoryTitle() {\r\n return function (category) {\r\n if (category === \"City\") {\r\n category = \"City / State\";\r\n }\r\n return category;\r\n }\r\n }\r\n changeCategoryTitle.$inject = [];\r\n NgModule.filter(\"changeCategoryTitle\", changeCategoryTitle);\r\n\r\n function searchHighlight($sce) {\r\n return function (text, phrase, category, city, state, isGha) {\r\n if (phrase) {\r\n text = text.replace(new RegExp('(' + phrase + ')', 'gi'),\r\n '$1');\r\n if (category === \"Hotel\") {\r\n var cityHighlighted = city.replace(new RegExp('(' + phrase + ')', 'gi'), '$1');\r\n\t\t\t\t\tif (isGha) {\r\n\t\t\t\t\t\ttext = text.concat('');\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttext = text.concat('' + cityHighlighted + ', ' + state + '');\r\n \r\n\t if (isGha) {\r\n text = text.concat(' (DISCOVERY Partner)');\r\n }\r\n }\r\n\r\n }\r\n return $sce.trustAsHtml(text)\r\n }\r\n }\r\n searchHighlight.$inject = [\"$sce\"];\r\n NgModule.filter(\"searchHighlight\", searchHighlight);\r\n\r\n function propertyLabelFilter() {\r\n return (input, search) => {\r\n input = input || [];\r\n var filtered = [];\r\n\r\n for (var i = 0, ct = input.length; i < ct; i++) {\r\n var item = input[i];\r\n if (item.label.search(new RegExp(search, 'i')) >= 0) {\r\n filtered.push(item);\r\n }\r\n\r\n }\r\n\r\n return filtered;\r\n }\r\n }\r\n propertyLabelFilter.$inject = [];\r\n NgModule.filter(\"omPropertyFilter\", propertyLabelFilter);\r\n}","module Omni.Booker {\r\n\texport class GlobalBookerDetails {\r\n\t\tCountry: string;\r\n\t\tCity: string;\r\n\t\tBrand: string;\r\n\t\tHotel: string;\r\n\r\n\t\tconstructor() {\r\n\t\t\tthis.Country = \"-1\";\r\n\t\t\tthis.City = \"-1\";\r\n\t\t\tthis.Brand = \"-1\";\r\n\t\t\tthis.Hotel = \"-1\";\r\n\t\t}\r\n\t}\r\n\r\n class BookingDetail {\r\n BookingStartDate: string;\r\n BookingEndDate: string;\r\n RoomQuantity: string;\r\n Room1AdultQuantity: string;\r\n Room1ChildQuantity: string;\r\n Room1ChildAge1: string;\r\n Room1ChildAge2: string;\r\n Room1ChildAge3: string;\r\n Room1ChildAge4: string;\r\n Room2AdultQuantity: string;\r\n Room2ChildQuantity: string;\r\n Room2ChildAge1: string;\r\n Room2ChildAge2: string;\r\n Room2ChildAge3: string;\r\n Room2ChildAge4: string;\r\n Room3AdultQuantity: string;\r\n Room3ChildQuantity: string;\r\n Room3ChildAge1: string;\r\n Room3ChildAge2: string;\r\n Room3ChildAge3: string;\r\n Room3ChildAge4: string;\r\n AccountCode: string;\r\n GroupCode: string;\r\n AdaAccessible: string;\r\n HotelId: string;\r\n Rates: string;\r\n TravelAgentNumber: string;\r\n IsRedeemingFreeNights: boolean;\r\n VillasBedRoomQuantity: string;\r\n VillasView: string;\r\n\r\n constructor() {\r\n this.BookingStartDate = \"\";\r\n this.BookingEndDate = \"\";\r\n this.RoomQuantity = \"\";\r\n this.Room1AdultQuantity = \"\";\r\n this.Room1ChildQuantity = \"\";\r\n this.Room1ChildAge1 = \"\";\r\n this.Room1ChildAge2 = \"\";\r\n this.Room1ChildAge3 = \"\";\r\n this.Room1ChildAge4 = \"\";\r\n this.Room2AdultQuantity = \"\";\r\n this.Room2ChildQuantity = \"\";\r\n this.Room2ChildAge1 = \"\";\r\n this.Room2ChildAge2 = \"\";\r\n this.Room2ChildAge3 = \"\";\r\n this.Room2ChildAge4 = \"\";\r\n this.Room3AdultQuantity = \"\";\r\n this.Room3ChildQuantity = \"\";\r\n this.Room3ChildAge1 = \"\";\r\n this.Room3ChildAge2 = \"\";\r\n this.Room3ChildAge3 = \"\";\r\n this.Room3ChildAge4 = \"\";\r\n this.AccountCode = \"\";\r\n this.GroupCode = \"\";\r\n this.AdaAccessible = \"\";\r\n this.HotelId = \"\";\r\n this.Rates = \"\";\r\n this.TravelAgentNumber = \"\";\r\n this.IsRedeemingFreeNights = false;\r\n this.VillasBedRoomQuantity = \"\";\r\n this.VillasView = \"\";\r\n }\r\n }\r\n\r\n class BookingDetailGha {\r\n StartDate: string;\r\n EndDate: string;\r\n Country: string;\r\n City: string;\r\n HotelBrand: string;\r\n Hotel: string;\r\n\r\n constructor() {\r\n this.StartDate = \"\";\r\n this.EndDate = \"\";\r\n this.Country = \"\";\r\n this.City = \"\";\r\n this.HotelBrand = \"\";\r\n this.Hotel = \"\";\r\n }\r\n }\r\n\r\n export interface IBookingApiService {\r\n GetFindData(includeGha: boolean): ng.IPromise;\r\n GetBookingLink(propertyDetail: PropertyDetail, travelDates: TravelDates, roomDetails: RoomDetail, rateCodes: RateCodes): ng.IPromise;\r\n GetGhaLink(searchDetail: GlobalBookerDetails, travelDates: TravelDates): ng.IPromise;\r\n GetGlobalData(country: string, city: string, brand: string, hotel: string): ng.IPromise;\r\n GetExploreData(guid: string): ng.IPromise;\r\n }\r\n\r\n class BookingApiService implements IBookingApiService {\r\n static $inject = [\r\n \"$http\",\r\n \"$log\",\r\n \"$q\",\r\n \"moment\"\r\n ];\r\n\r\n constructor(\r\n private readonly $http: ng.IHttpService,\r\n private readonly $log: ng.ILogService,\r\n private readonly $q: ng.IQService,\r\n private readonly moment\r\n ) {\r\n }\r\n\r\n GetBookingLink(propertyDetail: PropertyDetail,\r\n travelDates: TravelDates,\r\n roomDetails: RoomDetail,\r\n rateCodes: RateCodes): ng.IHttpPromise {\r\n var model = this.generateBookingDetailModel(propertyDetail, travelDates, roomDetails, rateCodes);\r\n return this.$http.post(\"/find/bookings/checkratesandavailability\", model).then((response) => {\r\n this.$log.debug(\"resolved checkrates=\", response);\r\n return response.data;\r\n }).catch((response) => {\r\n this.$log.debug(\"failed checkrates=\", response);\r\n });\r\n }\r\n\r\n GetGhaLink(searchDetail: GlobalBookerDetails, travelDates: TravelDates) {\r\n var model = this.generateGhaBookingDetailModel(searchDetail, travelDates);\r\n return this.$http.post(\"/find/bookings/checkgharatesandavailablity\", model).then((response) => {\r\n this.$log.debug(\"resolved checkrates=\", response);\r\n return response.data;\r\n }).catch((response) => {\r\n this.$log.debug(\"failed checkrates=\", response);\r\n });\r\n }\r\n\r\n GetFindData(includeGha: boolean = false): ng.IHttpPromise {\r\n return this.$http.get(\"/find/findandbook/autocomplete\", { cache: true, params: { includeGha: includeGha } }).then((response: any) => {\r\n this.$log.debug(\"resolved autocomplete=\", response);\r\n var mapped = response.data.map(function(currentValue) {\r\n var newOne = new BookingDataResult();\r\n newOne.category = currentValue.category;\r\n newOne.City = currentValue.City;\r\n newOne.label = currentValue.label;\r\n newOne.State = currentValue.State;\r\n newOne.ItemIdGuid = currentValue.ItemIdGuid;\r\n newOne.ResultLabel = currentValue.ResultLabel;\r\n newOne.SubCategory = currentValue.SubCategory;\r\n newOne.IsComingSoonProperty = currentValue.IsComingSoonProperty;\r\n newOne.ComingSoonText = currentValue.ComingSoonText;\r\n newOne.HotelLink = currentValue.HotelLink;\r\n newOne.RedeemFreeNights = currentValue.RedeemFreeNights;\r\n newOne.HotelCode = currentValue.HotelCode;\r\n newOne.IsVillas = currentValue.IsVillasProperty;\r\n newOne.IsGha = currentValue.IsGha;\r\n return newOne;\r\n });\r\n\r\n return mapped;\r\n }).catch((response) => {\r\n this.$log.debug(\"failed autocomplete=\", response);\r\n return [];\r\n });\r\n }\r\n\r\n GetGlobalData(country: string, city: string, brand: string, hotel: string): ng.IHttpPromise {\r\n var formatted = `${country}/${city}/${brand}/${hotel}`;\r\n\r\n return this.$http.get(\"/find/bookings/getgharesponsedata/\" + formatted).then((response) => {\r\n this.$log.debug(\"resolved GHA=\", response);\r\n return response.data;\r\n }).catch((response) => {\r\n this.$log.debug(\"failed GHA=\", response);\r\n return response;\r\n });\r\n }\r\n\r\n GetExploreData(guid: string): ng.IHttpPromise {\r\n return this.$http.get(\"/find/findandbook/getexploreoptions/\" + guid, { cache: true })\r\n .then((response: any) => {\r\n this.$log.debug(\"resolved exploreOptions=\", response);\r\n return response.data;\r\n }).catch((response) => {\r\n this.$log.debug(\"failed exploreOptions=\", response);\r\n return [];\r\n });\r\n }\r\n\r\n private generateBookingDetailModel(propertyDetail: PropertyDetail,\r\n travelDates: TravelDates,\r\n roomDetails: RoomDetail,\r\n rateCodes: RateCodes): BookingDetail {\r\n var bookingDetailModel = new BookingDetail();\r\n bookingDetailModel.HotelId = propertyDetail.HotelId;\r\n\r\n // Travel dates\r\n if (travelDates.ArrivalDate) {\r\n // format to ISO 8601, this needs to be understood by .NET\r\n const formattedStart = this.moment.utc(travelDates.ArrivalDate).hour(0).minute(0).second(0).millisecond(0).format('MM-DD-YYYY');\r\n bookingDetailModel.BookingStartDate = formattedStart;\r\n\r\n if (travelDates.DepartureDate) {\r\n // format to ISO 8601, this needs to be understood by .NET\r\n const formattedEnd = this.moment.utc(travelDates.DepartureDate).hour(0).minute(0).second(0).millisecond(0).format('MM-DD-YYYY');\r\n bookingDetailModel.BookingEndDate = formattedEnd;\r\n }\r\n } else {\r\n // If we've cleared dates and have no start or end date, select the start date to today and nothing for end date.\r\n // format to ISO 8601, this needs to be understood by .NET\r\n const formattedStart = this.moment.utc().hour(0).minute(0).second(0).millisecond(0).format('MM-DD-YYYY');\r\n bookingDetailModel.BookingStartDate = formattedStart;\r\n bookingDetailModel.BookingEndDate = \"\";\r\n }\r\n // Rate codes\r\n bookingDetailModel.TravelAgentNumber = rateCodes.TravelAgentNumber;\r\n bookingDetailModel.AccountCode = rateCodes.PromoCode;\r\n bookingDetailModel.IsRedeemingFreeNights = rateCodes.IsRedeemingFreeNights;\r\n bookingDetailModel.GroupCode = rateCodes.GroupCode;\r\n bookingDetailModel.Rates = rateCodes.RateCode;\r\n\r\n // Room details\r\n bookingDetailModel.RoomQuantity = roomDetails.RoomCount.toString(10);\r\n bookingDetailModel.AdaAccessible = roomDetails.Accessible ? \"true\" : \"false\";\r\n //Villas Features\r\n if (propertyDetail.IsVillas) {\r\n bookingDetailModel.VillasBedRoomQuantity = roomDetails.BedRoomCount.Count.toString(10);\r\n bookingDetailModel.VillasView = roomDetails.VillasView.Value;\r\n }\r\n for (var i = 0; i < roomDetails.Rooms.length; i++) {\r\n var currentRoom = roomDetails.Rooms[i];\r\n switch (i) {\r\n case 0:\r\n bookingDetailModel.Room1AdultQuantity = currentRoom.AdultCount.toString(10);\r\n bookingDetailModel.Room1ChildQuantity = currentRoom.ChildCount.toString(10);\r\n var childrenRm1 = mapChildren(currentRoom);\r\n bookingDetailModel.Room1ChildAge1 = childrenRm1[0];\r\n bookingDetailModel.Room1ChildAge2 = childrenRm1[1];\r\n bookingDetailModel.Room1ChildAge3 = childrenRm1[2];\r\n bookingDetailModel.Room1ChildAge4 = childrenRm1[3];\r\n break;\r\n case 1:\r\n bookingDetailModel.Room2AdultQuantity = currentRoom.AdultCount.toString(10);\r\n bookingDetailModel.Room2ChildQuantity = currentRoom.ChildCount.toString(10);\r\n var childrenRm2 = mapChildren(currentRoom);\r\n bookingDetailModel.Room2ChildAge1 = childrenRm2[0];\r\n bookingDetailModel.Room2ChildAge2 = childrenRm2[1];\r\n bookingDetailModel.Room2ChildAge3 = childrenRm2[2];\r\n bookingDetailModel.Room2ChildAge4 = childrenRm2[3];\r\n break;\r\n case 2:\r\n bookingDetailModel.Room3AdultQuantity = currentRoom.AdultCount.toString(10);\r\n bookingDetailModel.Room3ChildQuantity = currentRoom.ChildCount.toString(10);\r\n var childrenRm3 = mapChildren(currentRoom);\r\n bookingDetailModel.Room3ChildAge1 = childrenRm3[0];\r\n bookingDetailModel.Room3ChildAge2 = childrenRm3[1];\r\n bookingDetailModel.Room3ChildAge3 = childrenRm3[2];\r\n bookingDetailModel.Room3ChildAge4 = childrenRm3[3];\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function mapChildren(room: Room): string[] {\r\n var childrenMapped = [];\r\n\r\n for (var i = 0; i < 4; i++) {\r\n var childAge = room.ChildAges[i] ? room.ChildAges[i].toString(10) : \"\";\r\n childrenMapped.push(childAge);\r\n }\r\n\r\n return childrenMapped;\r\n }\r\n\r\n return bookingDetailModel;\r\n }\r\n\r\n private generateGhaBookingDetailModel(searchDetail: GlobalBookerDetails, travelDates: TravelDates):\r\n BookingDetailGha {\r\n const bookingDetail = new BookingDetailGha();\r\n\r\n bookingDetail.Country = searchDetail.Country;\r\n bookingDetail.City = searchDetail.City;\r\n bookingDetail.HotelBrand = searchDetail.Brand;\r\n bookingDetail.Hotel = searchDetail.Hotel;\r\n\r\n // format to ISO 8601, this needs to be understood by .NET\r\n const formattedStart = this.moment.utc(travelDates.ArrivalDate).hour(0).minute(0).second(0).millisecond(0).format('MM-DD-YYYY');\r\n const formattedEnd = this.moment.utc(travelDates.DepartureDate).hour(0).minute(0).second(0).millisecond(0).format('MM-DD-YYYY');\r\n\r\n bookingDetail.StartDate = formattedStart;\r\n bookingDetail.EndDate = formattedEnd;\r\n\r\n return bookingDetail;\r\n }\r\n }\r\n\r\n NgModule.service(\"omni.bookingapiservice\", BookingApiService);\r\n}\r\n","module Omni.Booker {\r\n \r\n export class BookingDataResult {\r\n City: string;\r\n ItemIdGuid: string;\r\n ResultLabel: string;\r\n State: string;\r\n SubCategory: any;\r\n category: string;\r\n label: string;\r\n selected: boolean;\r\n IsComingSoonProperty: boolean;\r\n ComingSoonText: string;\r\n HotelLink: string;\r\n RedeemFreeNights: boolean;\r\n HotelCode: string;\r\n Region_City: string;\r\n IsVillas: boolean;\r\n IsGha: boolean;\r\n\r\n constructor() {\r\n this.City = \"\";\r\n this.ItemIdGuid = \"\";\r\n this.ResultLabel = \"\";\r\n this.State = \"\";\r\n this.SubCategory = \"\";\r\n this.category = \"\";\r\n this.label = \"\";\r\n this.selected = false;\r\n this.IsComingSoonProperty = false;\r\n this.ComingSoonText = \"\";\r\n this.HotelLink = \"\";\r\n this.RedeemFreeNights = true;\r\n this.HotelCode = \"\";\r\n this.Region_City = \"\";\r\n this.IsVillas = false;\r\n this.IsGha = false;\r\n }\r\n }\r\n\r\n export class ExplorePropertyNavigation {\r\n public Text: string;\r\n public Target;\r\n public NavigateUrl: string;\r\n public SubItems: ExplorePropertyNavigation[];\r\n }\r\n\r\n export class ExplorePropertyResult {\r\n public ComingSoonText: string;\r\n public HotelCode: string;\r\n public HotelImage: {\r\n ImageUrl: string;\r\n ThumbnailImageUrl: string;\r\n MediumImageUrl: string,\r\n AltText: string;\r\n };\r\n public HotelName: string;\r\n public Id: string;\r\n public IsComingSoonProperty: boolean;\r\n public PropertyNavigation: {\r\n TopLevel: ExplorePropertyNavigation[],\r\n ReservationUrl: string,\r\n PropertyUrl: string;\r\n };\r\n public PropertyAddress: string;\r\n public PropertyCity: string;\r\n public PropertyCountry: string;\r\n public PropertyState: string;\r\n public PropertyZipcode: string;\r\n public PropertyTelephone: string;\r\n public PropertyLink: string;\r\n\r\n }\r\n\r\n \r\n\r\n export class BookerState {\r\n IsExpanded: boolean;\r\n IsEnabled: boolean;\r\n IsBrandPage: boolean;\r\n IsPropertyPage: boolean;\r\n IsResortPage: boolean;\r\n\r\n constructor(copy?: BookerState) {\r\n this.IsExpanded = copy ? copy.IsExpanded : false;\r\n this.IsEnabled = copy ? copy.IsEnabled : false;\r\n this.IsBrandPage = copy ? copy.IsBrandPage : false;\r\n this.IsPropertyPage = copy ? copy.IsPropertyPage : false;\r\n this.IsResortPage = copy ? copy.IsResortPage : false;\r\n }\r\n }\r\n\r\n\r\n \r\n export interface IBookingService {\r\n GetPropertyDetail(): PropertyDetail;\r\n GetTravelDates(): TravelDates;\r\n PutTravelDates(travelDates: TravelDates);\r\n GetRoomDetails(): RoomDetail;\r\n GetRateCodes(): RateCodes;\r\n PutRateCodes(rateCodes: RateCodes);\r\n GetGlobalDetail(): GlobalBookerDetails;\r\n OpenBooker();\r\n CloseBooker();\r\n ToggleBooker();\r\n TabBooker(event: KeyboardEvent);\r\n GetBookerState(): BookerState;\r\n GetCurrentDate() : Date;\r\n CheckBookerFocus() : boolean;\r\n }\r\n\r\n class BookingService implements IBookingService {\r\n private bookingCache: any;\r\n private bookerState: BookerState;\r\n\r\n static $inject = [\r\n \"$rootScope\",\r\n \"$log\",\r\n \"CacheFactory\",\r\n \"moment\",\r\n \"bookerConfig\",\r\n \"dateConfig\",\r\n \"$timeout\"\r\n ];\r\n constructor(\r\n private readonly $rootScope: ng.IRootScopeService,\r\n private readonly $log: ng.ILogService,\r\n private readonly cacheFactory: any,\r\n private readonly moment: any,\r\n private readonly bookerConfig: Constants.IBookerConfiguration,\r\n private readonly dateConfig: Constants.IDateConfiguration,\r\n private readonly $timeout: ng.ITimeoutService\r\n ) {\r\n this.initBookerDateConfig();\r\n this.initBookerState();\r\n this.initPageState();\r\n this.initBookerCache();\r\n }\r\n GetCurrentDate(): Date {\r\n return this.bookerConfig.CurrentDate;\r\n }\r\n GetPropertyDetail(): PropertyDetail {\r\n var propertyDetail = new PropertyDetail();\r\n propertyDetail.HotelId = \"\";\r\n return propertyDetail;\r\n }\r\n\r\n GetTravelDates(): TravelDates {\r\n var travelDates = new TravelDates();\r\n travelDates.ArrivalDate = this.moment.utc(this.bookerConfig.CurrentDate).hour(0).minute(0).second(0).millisecond(0);\r\n travelDates.DepartureDate = this.moment.utc(this.bookerConfig.CurrentDate).add(1, \"days\").hour(0).minute(0).second(0).millisecond(0);\r\n var cachedDates = this.bookingCache.get(\"travelDates\");\r\n if (cachedDates) {\r\n this.$log.debug(\"Using cached travel dates\", cachedDates);\r\n travelDates = cachedDates;\r\n }\r\n\r\n return travelDates;\r\n }\r\n\r\n PutTravelDates(travelDates: TravelDates) {\r\n this.bookingCache.put(\"travelDates\", travelDates);\r\n }\r\n \r\n GetRoomDetails(): RoomDetail {\r\n \r\n var defaultRoomDetail = new RoomDetail();\r\n defaultRoomDetail.RoomCount = 1;\r\n defaultRoomDetail.BedRoomCount = new BedroomOption();\r\n defaultRoomDetail.BedRoomCount.Count = 0;\r\n defaultRoomDetail.VillasView = new ViewOption();\r\n defaultRoomDetail.VillasView.Value = '';\r\n\r\n var defaultRoom = new Room();\r\n defaultRoom.AdultCount = 2;\r\n defaultRoom.ChildCount = 0;\r\n defaultRoomDetail.Rooms.push(defaultRoom);\r\n \r\n return defaultRoomDetail;\r\n }\r\n\r\n GetRateCodes(): RateCodes {\r\n var rateCode = new RateCodes();\r\n rateCode.RateCode = \"rpc_NONE\";\r\n\r\n var cachedRates = this.bookingCache.get(\"rateCodes\");\r\n if (cachedRates) {\r\n this.$log.debug(\"Using cached rates\", cachedRates);\r\n rateCode = cachedRates;\r\n }\r\n\r\n return rateCode;\r\n }\r\n\r\n PutRateCodes(rateCodes: RateCodes) {\r\n this.bookingCache.put(\"rateCodes\", rateCodes);\r\n }\r\n\r\n GetGlobalDetail(): GlobalBookerDetails {\r\n var globalDetails = new GlobalBookerDetails();\r\n globalDetails.Brand = \"-1\";\r\n globalDetails.City = \"-1\";\r\n globalDetails.Hotel = \"-1\";\r\n globalDetails.Country = \"-1\";\r\n\r\n var cachedDetails = this.bookingCache.get(\"globalBookerDetails\");\r\n if (cachedDetails) {\r\n this.$log.debug(\"Using cached global details\", cachedDetails);\r\n }\r\n\r\n return globalDetails;\r\n }\r\n\r\n PutGlobalDetail(globalDetail: GlobalBookerDetails) {\r\n this.bookingCache.put(\"globalBookerDetails\", globalDetail);\r\n }\r\n\r\n OpenBooker() {\r\n if (this.bookerConfig.ShowBookingWidget) {\r\n this.bookerState.IsExpanded = true;\r\n this.onUpdatedBookerState();\r\n\r\n this.$timeout(function () { \r\n var closeButton = angular.element(\"#closeButton\");\r\n closeButton.focus();\r\n }, 0); \r\n angular.element(\"#omni-booker #bookNowButton\").attr(\"aria-expanded\", \"true\");\r\n \r\n angular.element(\"#findAndBookLineItem\").attr(\"aria-expanded\", \"true\");\r\n angular.element(\"#bookNowLineItem\").attr(\"aria-expanded\", \"true\");\r\n }\r\n }\r\n\r\n CloseBooker() {\r\n var bookerHasFocus = this.CheckBookerFocus();\r\n \r\n if (this.bookerConfig.ShowBookingWidget && bookerHasFocus) {\r\n if (!this.bookerConfig.IsBookerAlwaysOpen) {\r\n // configuration maintains booker can't be closed\r\n\r\n if (this.bookerState.IsExpanded){\r\n this.bookerState.IsExpanded = false;\r\n this.$timeout(function () { \r\n var bookNowButton = angular.element(\"#omni-booker #bookNowButton\");\r\n bookNowButton.focus();\r\n\r\n }, 0); \r\n angular.element(\"#omni-booker #bookNowButton\").attr(\"aria-expanded\", \"false\");\r\n \r\n angular.element(\"#findAndBookLineItem\").attr(\"aria-expanded\", \"false\");\r\n angular.element(\"#bookNowLineItem\").attr(\"aria-expanded\", \"false\");\r\n }\r\n\r\n this.onUpdatedBookerState();\r\n }\r\n }\r\n }\r\n\r\n ToggleBooker() {\r\n if (this.bookerConfig.ShowBookingWidget) {\r\n if (!this.bookerConfig.IsBookerAlwaysOpen) {\r\n // configuration maintains booker can't be closed\r\n this.bookerState.IsExpanded = !this.bookerState.IsExpanded;\r\n\r\n if (this.bookerState.IsExpanded){\r\n this.$timeout(function () { \r\n var closeButton = angular.element(\"#closeButton\");\r\n closeButton.focus();\r\n }, 0); \r\n angular.element(\"#bookNowButton\").attr(\"aria-expanded\", \"true\");\r\n }\r\n else{\r\n angular.element(\"#bookNowButton\").attr(\"aria-expanded\", \"false\");\r\n }\r\n\r\n this.onUpdatedBookerState();\r\n }\r\n } \r\n }\r\n\r\n TabBooker(event: KeyboardEvent) {\r\n let parentModal: any = angular.element('.om-booking-container');\r\n let focusableElementsInModal: any = parentModal.find(\".bookerTabElement\");\r\n let numberOfElements: any = focusableElementsInModal.length;\r\n let firstTabElement: any = focusableElementsInModal[0];\r\n let lastTabElement: any = focusableElementsInModal[numberOfElements - 1];\r\n \r\n if (event.keyCode === 9) {\r\n if (document.activeElement === lastTabElement) {\r\n event.preventDefault();\r\n firstTabElement.focus();\r\n }\r\n }\r\n }\r\n\r\n CheckBookerFocus(){\r\n // if the item that has focus does not have the id of the input field, AND does not have a tabbookeritem class, then we can say that the booker does not have focus.\r\n\r\n var currentFocusedItem = angular.element(document.activeElement);\r\n\r\n var bookerHasFocus = false;\r\n\r\n if (currentFocusedItem.hasClass(\"bookerTabElement\") || \r\n currentFocusedItem.attr(\"id\") === \"where-going\" ||\r\n currentFocusedItem.is('body')){\r\n bookerHasFocus = true;\r\n }\r\n else{\r\n bookerHasFocus = false;\r\n }\r\n return bookerHasFocus;\r\n }\r\n\r\n GetBookerState() {\r\n // Make a copy, do not allow access to modify the internal state\r\n return new BookerState(this.bookerState);\r\n }\r\n\r\n private initPageState() {\r\n // TODO: Move this outside of booker, it can be applied to any page (will require changes in input field renderings).\r\n this.$rootScope[\"isbrand\"] = this.bookerConfig.IsBrandPage();\r\n this.$rootScope[\"ishotel\"] = this.bookerConfig.IsHotelPage();\r\n this.$rootScope[\"isresort\"] = this.bookerConfig.IsResortPage();\r\n }\r\n\r\n private initBookerState() {\r\n // Setup booker state from configurations from sitecore / backend\r\n this.bookerState = new BookerState();\r\n this.bookerState.IsExpanded = this.bookerConfig.ShowBookingWidget && (this.bookerConfig.IsBookerExpanded || this.bookerConfig.IsBookerAlwaysOpen);\r\n this.bookerState.IsEnabled = this.bookerConfig.ShowBookingWidget;\r\n this.bookerState.IsBrandPage = this.bookerConfig.IsBrandPage();\r\n this.bookerState.IsPropertyPage = this.bookerConfig.IsHotelPage() || this.bookerConfig.IsResortPage();\r\n this.bookerState.IsResortPage = this.bookerConfig.IsResortPage();\r\n\r\n this.onUpdatedBookerState();\r\n }\r\n\r\n private initBookerDateConfig() {\r\n if (this.dateConfig.MonthsLong.length > 0 &&\r\n this.dateConfig.MonthsShort.length > 0 &&\r\n this.dateConfig.WeekdaysLong.length > 0 &&\r\n this.dateConfig.WeekdaysShort.length > 0) {\r\n this.moment.defineLocale(\"en-foo\", {\r\n parentLocale: \"en\"\r\n });\r\n\r\n this.moment.updateLocale(\"en-foo\", {\r\n months: this.dateConfig.MonthsLong,\r\n monthsShort: this.dateConfig.MonthsShort,\r\n weekdays: this.dateConfig.WeekdaysLong,\r\n weekdaysShort: this.dateConfig.WeekdaysShort\r\n });\r\n }\r\n }\r\n\r\n private initBookerCache() {\r\n this.bookingCache = this.cacheFactory.get(\"bookingCache\");\r\n\r\n // Create cache if it doesn't exist\r\n if (!this.bookingCache) {\r\n this.bookingCache = this.cacheFactory(\"bookingCache\", {\r\n storageMode: \"sessionStorage\"\r\n });\r\n }\r\n }\r\n \r\n private onUpdatedBookerState() {\r\n this.$rootScope[\"IsBookerEnabled\"] = this.bookerState.IsEnabled;\r\n this.$rootScope[\"IsBookerExpanded\"] = this.bookerState.IsExpanded;\r\n this.$rootScope.$broadcast(\"bookerStateUpdate\");\r\n }\r\n }\r\n\r\n NgModule.service(\"omni.bookingservice\", BookingService);\r\n}\r\n","module Omni.ResortMap {\r\n export let ngModule = angular.module(\"omni.resortmap\", [\r\n \"omniViews\"\r\n ]);\r\n}","module Omni.ResortMap {\r\n ngModule.controller('MainController',\r\n ['DataService', 'ResortProvider', '$scope', '$state', '$stateParams',\r\n function (DataService, ResortProvider, $scope, $state, $stateParams) {\r\n $scope.resort = null;\r\n\r\n DataService.get({}, function (data) {\r\n $scope.resort = data;\r\n $scope.isResort = data.is_resort;\r\n ResortProvider.setResort(data);\r\n if ($scope.isResort) {\r\n $state.go('resort');\r\n } else {\r\n $state.go('floor', { id: 0 });\r\n }\r\n });\r\n }\r\n ]);\r\n}\r\n","module Omni.ResortMap {\r\n ngModule.controller('ResortController',\r\n ['$scope', '$state', '$stateParams', 'ResortProvider',\r\n function ($scope, $state, $stateParams, ResortProvider) {\r\n\r\n $scope.showPopover = false;\r\n $scope.popover = {};\r\n $scope.resort = ResortProvider.getResort();\r\n $scope.zoomButton = false;\r\n\r\n $scope.filterResortData = function () {\r\n angular.forEach($scope.resort.location, function (value, key) {\r\n value.posn = key + 1;\r\n value.e = key;\r\n });\r\n };\r\n\r\n $scope.closePopover = function () {\r\n $scope.$emit(\"closePopover\");\r\n };\r\n\r\n $scope.changeState = function (st, num) {\r\n $state.go(st, { id: num });\r\n };\r\n\r\n $scope.filterResortData();\r\n }]);\r\n}\r\n","module Omni.ResortMap {\r\n ngModule.controller('RoomController',\r\n ['ResortProvider', '$scope', '$state', '$stateParams', '$timeout',\r\n function (ResortProvider, $scope, $state, $stateParams, $timeout) {\r\n\r\n $scope.location = ResortProvider.getLocation($stateParams.id);\r\n $scope.showBackButton = true;\r\n\r\n $scope.floor = $scope.location.floor[$stateParams.floorId];\r\n $scope.room = null;\r\n angular.forEach($scope.floor.room, function (value, index) {\r\n if (index == $stateParams.roomId) {\r\n $scope.room = value;\r\n }\r\n });\r\n\r\n $scope.partialIndex = 0;\r\n $scope.partials = $scope.room.partial;\r\n $scope.partial = $scope.partials[$scope.partialIndex];\r\n $scope.layouts = $scope.partial.layout;\r\n\r\n $scope.showPartialSelector = function () {\r\n return $scope.partials.length > 1;\r\n };\r\n\r\n $scope.roomVideoToggle = function () {\r\n if ($state.current.name !== 'room.video') {\r\n $state.go('room.video');\r\n } else {\r\n $state.go('room');\r\n }\r\n };\r\n }\r\n ]);\r\n}\r\n","module Omni.ResortMap {\r\n ngModule.config(['$stateProvider', '$urlRouterProvider', '$locationProvider',\r\n function ($stateProvider, $urlRouterProvider, $locationProvider) {\r\n\r\n $stateProvider\r\n .state('resort', {\r\n templateUrl: \"omni/assets/resortmap/views/resort.tpl.html\",\r\n controller: \"ResortController\"\r\n })\r\n .state('location', {\r\n abstract: true,\r\n params: {\r\n \"id\": \"\"\r\n },\r\n resolve: {\r\n \"location\": [\"ResortProvider\", \"$stateParams\", function (ResortProvider, $stateParams) {\r\n return ResortProvider.getLocation($stateParams.id);\r\n }]\r\n },\r\n templateUrl: \"omni/assets/resortmap/views/location.tpl.html\",\r\n //controller: function() {},\r\n controller: [\"$rootScope\", \"$state\", \"$scope\", \"$stateParams\", \"location\", function ($rootScope, $state, $scope, $stateParams, location) {\r\n $scope.location = location;\r\n $scope.baseState = (location.type !== 'undefined' && location.type == 'leisure') ? 'leisure' : 'floor';\r\n if ($scope.$parent.isResort) {\r\n $scope.showBackButton = true;\r\n $scope.h1Class = \"withBackButton\";\r\n } else {\r\n $scope.showBackButton = false;\r\n $scope.h1Class = \"\";\r\n }\r\n $scope.backButton = function () {\r\n if ($scope.baseState == 'floor') {\r\n $rootScope[\"activeTab\"] = 'meeting';\r\n } else {\r\n $rootScope[\"activeTab\"] = 'leisure';\r\n }\r\n $state.go('resort');\r\n };\r\n $scope.videoToggle = function () {\r\n if ($state.current.name !== 'video') {\r\n $state.go('video');\r\n } else {\r\n $state.go($scope.baseState);\r\n }\r\n };\r\n $scope.showFloorRoomSelector = function () {\r\n return $state.current.name === 'floor.detail';\r\n };\r\n }]\r\n })\r\n .state('video', {\r\n parent: \"location\",\r\n views: {\r\n \"main\": {\r\n templateUrl: \"omni/assets/resortmap/views/video.tpl.html\",\r\n controller: [\"$scope\", \"$sce\", function ($scope, $sce) {\r\n $scope.video_url = null;\r\n }]\r\n }\r\n }\r\n })\r\n .state('leisure', {\r\n parent: \"location\",\r\n views: {\r\n \"main\": {\r\n templateUrl: 'omni/assets/resortmap/views/slideshow.tpl.html',\r\n controller: [\"$scope\", \"$stateParams\", function ($scope, $stateParams) {\r\n $scope.slides = $scope.location.gallery;\r\n $scope.showSlideNav = function () {\r\n return $scope.slides.length > 1;\r\n };\r\n }]\r\n }\r\n }\r\n })\r\n .state('meeting', {\r\n parent: \"location\",\r\n views: {\r\n \"main\": {\r\n templateUrl: \"omni/assets/resortmap/views/meeting.tpl.html\"\r\n }\r\n }\r\n })\r\n .state('gallery', {\r\n parent: \"meeting\",\r\n views: {\r\n \"meetingMain\": {\r\n templateUrl: \"omni/assets/resortmap/views/slideshow.tpl.html\",\r\n controller: [\"$scope\", function ($scope) {\r\n $scope.slides = $scope.location.gallery;\r\n $scope.showSlideNav = function () {\r\n return $scope.slides.length > 1;\r\n };\r\n }]\r\n }\r\n }\r\n })\r\n .state('floor', {\r\n parent: \"meeting\",\r\n params: {\r\n \"id\": \"\"\r\n },\r\n resolve: {\r\n \"location\": [\"ResortProvider\", \"$stateParams\", function (ResortProvider, $stateParams) {\r\n return ResortProvider.getLocation($stateParams.id);\r\n }]\r\n },\r\n views: {\r\n 'meetingMain': {\r\n templateUrl: \"omni/assets/resortmap/views/floor.tpl.html\",\r\n controller: [\"$scope\", \"$state\", \"$stateParams\", \"location\", function ($scope, $state, $stateParams, location) {\r\n $scope.floors = location.floor;\r\n $scope.showBackButton = true;\r\n if (location.floor.length > 1) {\r\n $scope.showFloorSelector = true;\r\n } else {\r\n $scope.showFloorSelector = false;\r\n }\r\n $state.go('floor.detail', { id: $stateParams.id, floorId: 0 });\r\n }]\r\n }\r\n }\r\n })\r\n .state(\"floor.detail\", {\r\n params: {\r\n \"id\": \"\",\r\n \"floorId\": \"\"\r\n },\r\n parent: \"floor\",\r\n resolve: {\r\n \"location\": [\"ResortProvider\", \"$stateParams\", function (ResortProvider, $stateParams) {\r\n return ResortProvider.getLocation($stateParams.id);\r\n }]\r\n },\r\n views: {\r\n 'floorContainer': {\r\n templateUrl: \"omni/assets/resortmap/views/floorContainer.tpl.html\",\r\n controller: [\"$scope\", \"$state\", \"$stateParams\", \"$timeout\", \"location\", function ($scope, $state, $stateParams, $timeout, location) {\r\n var id = $stateParams.floorId || 0;\r\n $scope.showBackButton = true;\r\n $scope.location = location;\r\n $scope.floor = location.floor[id];\r\n $scope.rooms = $scope.floor.room;\r\n $scope.showPopover = false;\r\n $scope.popover = null;\r\n $scope.floorIndex = $stateParams.floorId;\r\n $scope.closePopover = function () {\r\n $scope.$emit(\"closePopover\");\r\n };\r\n }]\r\n }\r\n }\r\n })\r\n .state('room', {\r\n params: {\r\n 'id': \"\",\r\n 'floorId': \"\",\r\n 'roomId': \"\"\r\n },\r\n parent: 'floor.detail',\r\n views: {\r\n \"@\": {\r\n templateUrl: \"omni/assets/resortmap/views/room.tpl.html\",\r\n controller: \"RoomController\"\r\n }\r\n }\r\n })\r\n .state('room.video', {\r\n parent: \"room\",\r\n views: {\r\n \"roomMain\": {\r\n templateUrl: \"omni/assets/resortmap/views/video.tpl.html\",\r\n controller: [\"$scope\", function ($scope) {\r\n $scope.showBackButton = true;\r\n }]\r\n }\r\n }\r\n });\r\n $locationProvider.html5Mode({\r\n enabled: false,\r\n requireBase: false\r\n });\r\n\r\n $locationProvider.hashPrefix('');\r\n\r\n }])\r\n .run(['$rootScope', '$state', '$stateParams',\r\n function ($rootScope, $state, $stateParams) {\r\n $rootScope[\"$state\"] = $state;\r\n $rootScope[\"$stateParams\"] = $stateParams;\r\n }]);\r\n}\r\n","module Omni.ResortMap {\r\n ngModule.directive('floorCanvas', (['$rootScope', '$stateParams', '$state', \"Kinetic\",\r\n function ($rootScope, $stateParams, $state, Kinetic) {\r\n function createShape(x, y, shape, id) {\r\n var r = 10;\r\n var el;\r\n var name = 'Marker ' + (id + 1);\r\n var shapeId = \"shape\" + id;\r\n\r\n el = new Kinetic.Circle({\r\n x: x,\r\n y: y,\r\n radius: r,\r\n name: name,\r\n id: shapeId,\r\n fill: '#d55628',\r\n stroke: '#b14822',\r\n strokeWidth: 1\r\n });\r\n\r\n return el;\r\n }\r\n\r\n function createMarkerGroup(point, i, xRatio, yRatio) {\r\n var x = (point.x_coord / 2) * xRatio;\r\n var y = (point.y_coord / 2) * yRatio;\r\n var shape = \"default\";\r\n var kids = new Kinetic.Group({\r\n id: \"group\" + i,\r\n index: i\r\n });\r\n\r\n var floorMapMarker = createShape(x, y, shape, i);\r\n kids.add(floorMapMarker);\r\n\r\n return kids;\r\n }\r\n\r\n function buildPopover(loc, x, y, el) {\r\n var width = jQuery(\"#mapContainer\").width();\r\n var height = jQuery(\"#mapContainer\").height();\r\n\r\n var popover: any = {};\r\n var v, h;\r\n if (y > height / 2) {\r\n popover.top = y - 168;\r\n v = \"top\";\r\n } else {\r\n popover.top = y + 10;\r\n v = \"bottom\";\r\n }\r\n\r\n if (x > width / 2) {\r\n h = \"l\";\r\n popover.left = x - 212;\r\n } else {\r\n h = \"r\";\r\n popover.left = x - 20;\r\n }\r\n\r\n jQuery(\"#popoverElement\").css({\r\n top: popover.top,\r\n left: popover.left\r\n });\r\n\r\n popover.placement = v + ' ' + h;\r\n popover.type = 'floor';\r\n popover.title = loc.title;\r\n popover.area = loc.area;\r\n popover.capacity = loc.capacity;\r\n popover.l = loc.length;\r\n popover.w = loc.width;\r\n\r\n if ((loc.length != null && loc.length != 0) && (loc.width != null && loc.width != 0)) {\r\n popover.dimensions = loc.length + \"' x \" + loc.width + \"'\";\r\n } else {\r\n popover.dimensions = \"NA\";\r\n }\r\n popover.ceiling = loc.ceiling;\r\n popover.el = el;\r\n\r\n return popover;\r\n }\r\n\r\n return {\r\n restrict: \"E\",\r\n priority: 1001,\r\n template: '
',\r\n replace: true,\r\n link: function (scope, element, attrs) {\r\n var imageObj = new Image();\r\n imageObj.src = attrs.src;\r\n scope.floor_img = attrs.src;\r\n // jQuery(\"#floorMapCanvas\").css(\"background\", \"no-repeat top left\").css(\"backgroundImage\", scope.floor_img);\r\n var mainContainer = jQuery(\"#mainMapContainer\");\r\n\r\n var containerWidth = mainContainer.width() * (3 / 4);\r\n jQuery(\"#floorMapCanvas\").width(containerWidth);\r\n\r\n var containerHeight = containerWidth * 430 / 692;\r\n jQuery(\"#floorMapCanvas\").height(containerHeight);\r\n jQuery(\"#mainMapContainer\").height((containerHeight + 2));\r\n\r\n var xRatio = containerWidth / 692;\r\n var yRatio = containerHeight / 430;\r\n\r\n var floorMap: any = {\r\n canvasId: element.attr('id'),\r\n stage: null,\r\n layer: null,\r\n points: null,\r\n popover: null,\r\n\r\n initialize: function () {\r\n floorMap.points = scope.floor.room;\r\n floorMap.stage = new Kinetic.Stage({\r\n container: floorMap.canvasId,\r\n width: containerWidth,\r\n height: containerHeight\r\n });\r\n var floor = new Kinetic.Image({\r\n x: 0,\r\n y: 0,\r\n image: imageObj,\r\n width: containerWidth,\r\n height: containerHeight\r\n });\r\n\r\n floorMap.layer = new Kinetic.Layer();\r\n // floorMap.layer.add(floor);\r\n\r\n for (var i = 0; i < floorMap.points.length; i++) {\r\n\r\n var kids = createMarkerGroup(floorMap.points[i], i, xRatio, yRatio);\r\n // add handler to fire tweening function\r\n kids.on(\"tap\", function (e) {\r\n var target = (angular.isUndefined(e.target.parent)) ?\r\n e.target : e.target.parent.attrs.index;\r\n floorMap.showPopover(target);\r\n });\r\n kids.on(\"click\", function (e) {\r\n var target = (angular.isUndefined(e.target.parent)) ?\r\n e.target : e.target.parent.attrs.index;\r\n floorMap.showPopover(target);\r\n });\r\n\r\n floorMap.layer.add(kids);\r\n }\r\n\r\n floorMap.stage.add(floorMap.layer);\r\n floorMap.stage.on(\"click\", function (evt) {\r\n // console.log(evt);\r\n });\r\n\r\n jQuery(\"#roomPopoverSelect\").empty().append('');\r\n angular.forEach(scope.floor.room, function (el: any, index) {\r\n var option = ''\r\n jQuery(\"#roomPopoverSelect\").append(option);\r\n option = \"\";\r\n });\r\n jQuery(\"#roomPopoverSelect\").off();\r\n jQuery(\"#roomPopoverSelect\").on(\"change\", function (e) {\r\n var i = this.value;\r\n floorMap.showPopover(i);\r\n });\r\n },\r\n showPopover: function (target, i) {\r\n var floor = scope.location.floor[$stateParams[\"floorId\"]];\r\n if (target == -1) {\r\n scope.showPopover = false;\r\n scope.$apply();\r\n return;\r\n }\r\n var groupName = \"#group\" + (target);\r\n var shape = floorMap.stage.find(groupName);\r\n var coordx = shape[0].children[0].attrs.x;\r\n var coordy = shape[0].children[0].attrs.y;\r\n\r\n var loc = null;\r\n loc = floor.room[target];\r\n scope.showPopover = false;\r\n scope.popover = buildPopover(loc, (coordx), (coordy), target);\r\n scope.showPopover = true;\r\n loc = null;\r\n scope.$apply();\r\n }\r\n };\r\n\r\n imageObj.onload = function () {\r\n scope.$apply(floorMap.initialize());\r\n\r\n $rootScope.$on(\"closePopover\", function () {\r\n scope.showPopover = false;\r\n });\r\n\r\n };\r\n }\r\n };\r\n }]) as any);\r\n}\r\n","module Omni.ResortMap {\r\n ngModule.directive('floorSelect', (['$document', '$state',\r\n function ($document, $state) {\r\n return {\r\n restrict: 'C',\r\n link: function (scope, element, attrs) {\r\n var floor;\r\n element.on(\"change\", function (e) {\r\n floor = e.target.value;\r\n $state.go(\"floor.detail\", { floorId: floor });\r\n });\r\n }\r\n };\r\n }]) as any);\r\n}\r\n","module Omni.ResortMap {\r\n (function (window, $j) {\r\n ngModule.directive('resortMapCanvas', (['$rootScope', '$timeout', '$window', '$location', '$state', \"Kinetic\",\r\n function ($rootScope, $timeout, $window, $location, $state, Kinetic) {\r\n\r\n function scaleImage(source, scaleFactor) {\r\n var canvas: any = document.createElement(\"canvas\");\r\n var ctx: any = canvas.getContext(\"2d\");\r\n canvas.width = source.width * scaleFactor;\r\n canvas.height = source.height * scaleFactor;\r\n ctx.drawImage(source, 0, 0, source.width * scaleFactor, source.height * scaleFactor);\r\n sharpen(ctx, canvas.width, canvas.height, 0.35);\r\n return (canvas);\r\n }\r\n\r\n function sharpen(ctx, w, h, mix) {\r\n\r\n var weights = [0, -1, 0, -1, 5, -1, 0, -1, 0],\r\n katet = Math.round(Math.sqrt(weights.length)),\r\n half = (katet * 0.5) | 0,\r\n dstData = ctx.createImageData(w, h),\r\n dstBuff = dstData.data,\r\n srcBuff = ctx.getImageData(0, 0, w, h).data,\r\n y = h;\r\n var x;\r\n while (y--) {\r\n x = w;\r\n while (x--) {\r\n var sy = y,\r\n sx = x,\r\n dstOff = (y * w + x) * 4,\r\n r = 0,\r\n g = 0,\r\n b = 0,\r\n a = 0;\r\n for (var cy = 0; cy < katet; cy++) {\r\n for (var cx = 0; cx < katet; cx++) {\r\n var scy = sy + cy - half;\r\n var scx = sx + cx - half;\r\n if (scy >= 0 && scy < h && scx >= 0 && scx < w) {\r\n var srcOff = (scy * w + scx) * 4;\r\n var wt = weights[cy * katet + cx];\r\n r += srcBuff[srcOff] * wt;\r\n g += srcBuff[srcOff + 1] * wt;\r\n b += srcBuff[srcOff + 2] * wt;\r\n a += srcBuff[srcOff + 3] * wt;\r\n }\r\n }\r\n }\r\n dstBuff[dstOff] = r * mix + srcBuff[dstOff] * (1 - mix);\r\n dstBuff[dstOff + 1] = g * mix + srcBuff[dstOff + 1] * (1 - mix);\r\n dstBuff[dstOff + 2] = b * mix + srcBuff[dstOff + 2] * (1 - mix)\r\n dstBuff[dstOff + 3] = srcBuff[dstOff + 3];\r\n }\r\n }\r\n\r\n ctx.putImageData(dstData, 0, 0);\r\n }\r\n\r\n function createShape(x, y, shape, id) {\r\n var r: any = 10;\r\n var el: any;\r\n var name: any = 'Marker ' + id;\r\n var shapeId: any = \"shape\" + id;\r\n\r\n switch (shape) {\r\n case \"top-left\":\r\n var sx: any = x;\r\n var sy: any = y - r;\r\n var ex: any = x - r;\r\n var ey: any = y;\r\n var ax: any = x - r;\r\n var ay: any = y - r;\r\n var startPoint: any = \"M\" + sx + \",\" + sy;\r\n var curve: any = \"A\" + r + \",\" + r + \",0,1,1,\" + ex + \",\" + ey;\r\n var point: any = \"L\" + ax + \",\" + ay + \"Z\";\r\n var path: any = startPoint + curve + point;\r\n el = new Kinetic.Path({\r\n data: path\r\n });\r\n break;\r\n case \"top-right\":\r\n var sx: any = x;\r\n var sy: any = y - r;\r\n var ex: any = x + r;\r\n var ey: any = y;\r\n var ax: any = x + r;\r\n var ay: any = y - r;\r\n var startPoint: any = \"M\" + sx + \",\" + sy;\r\n var curve: any = \"A\" + r + \",\" + r + \",0,1,0,\" + ex + \",\" + ey;\r\n var point: any = \"L\" + ax + \",\" + ay + \"Z\";\r\n var path: any = startPoint + curve + point;\r\n el = new Kinetic.Path({\r\n data: path\r\n });\r\n break;\r\n case \"bottom-left\":\r\n var sx: any = x - r;\r\n var sy: any = y;\r\n var ex: any = x;\r\n var ey: any = y + r;\r\n var ax: any = x - r;\r\n var ay: any = y + r;\r\n var startPoint: any = \"M\" + sx + \",\" + sy;\r\n var curve: any = \"A\" + r + \",\" + r + \",0,1,1,\" + ex + \",\" + ey;\r\n var point: any = \"L\" + ax + \",\" + ay + \"Z\";\r\n var path: any = startPoint + curve + point;\r\n el = new Kinetic.Path({\r\n data: path\r\n });\r\n break;\r\n case \"bottom-right\":\r\n var sx: any = x + r;\r\n var sy: any = y;\r\n var ex: any = x;\r\n var ey: any = y + r;\r\n var ax: any = x + r;\r\n var ay: any = y + r;\r\n var startPoint: any = \"M\" + sx + \",\" + sy;\r\n var curve: any = \"A\" + r + \",\" + r + \",0,1,0,\" + ex + \",\" + ey;\r\n var point: any = \"L\" + ax + \",\" + ay + \"Z\";\r\n var path: any = startPoint + curve + point;\r\n el = new Kinetic.Path({\r\n data: path\r\n });\r\n break;\r\n default:\r\n el = new Kinetic.Circle({\r\n x: x,\r\n y: y,\r\n radius: r\r\n });\r\n break;\r\n }\r\n\r\n el.name(name);\r\n el.id(shapeId);\r\n el.fill('#F07230');\r\n el.stroke('#b14822');\r\n el.strokeWidth(1);\r\n el.opacity(1);\r\n return el;\r\n }\r\n\r\n function createTextLabel(x, y, posn) {\r\n var simpleText = new Kinetic.Text({\r\n x: x,\r\n y: y,\r\n text: posn,\r\n fontSize: 12,\r\n fontStyle: 'italic',\r\n fontFamily: 'Calibri',\r\n fill: '#ffffff',\r\n opacity: 1\r\n });\r\n simpleText.offsetX(simpleText.width() / 2);\r\n simpleText.offsetY(simpleText.height() / 2);\r\n\r\n return simpleText;\r\n }\r\n\r\n function createMarkerGroup(point, z, xRatio, yRatio) {\r\n var x = (point.x_coord / 2) * xRatio;\r\n var y = (point.y_coord / 2) * yRatio;\r\n var shape = point.marker_type;\r\n var i = point.id;\r\n var kids = new Kinetic.Group({\r\n id: \"group\" + i,\r\n index: i\r\n });\r\n var mapMarker = createShape(x, y, shape, i);\r\n var label = createTextLabel(x, y, point.posn);\r\n\r\n kids.add(mapMarker);\r\n kids.add(label);\r\n\r\n return kids;\r\n }\r\n\r\n function buildPopover(loc, x, y, el) {\r\n var width = $j(\"#mapContainer\").width();\r\n var height = $j(\"#mapContainer\").height();\r\n\r\n var popover: any = {};\r\n var v, h;\r\n if (y > height / 2) {\r\n if (loc.type == \"meeting\") {\r\n var disp = 145;\r\n } else {\r\n var disp = 100;\r\n }\r\n if (loc.title.length > 22) {\r\n disp = disp + 20;\r\n }\r\n popover.top = y - disp;\r\n v = \"top\";\r\n } else {\r\n popover.top = y + 20;\r\n v = \"bottom\";\r\n }\r\n\r\n if (x > width / 2) {\r\n h = \"l\";\r\n popover.left = x - 211;\r\n } else {\r\n h = \"r\";\r\n popover.left = x - 20;\r\n }\r\n\r\n $j(\"#popoverElement\").css({\r\n top: popover.top,\r\n left: popover.left\r\n });\r\n\r\n popover.placement = v + ' ' + h;\r\n popover.title = loc.title;\r\n popover.type = loc.type;\r\n popover.el = el;\r\n\r\n return popover;\r\n }\r\n\r\n function setActiveTabItem(el) {\r\n // get the type and click the tab\r\n var type: any = el.type;\r\n if (type == \"leisure\") {\r\n ($j(\"#tabs a:first\") as any).tab(\"show\");\r\n } else {\r\n ($j(\"#tabs a:last\") as any).tab(\"show\");\r\n }\r\n // then click the item\r\n var li = $j(\".locationList\").find(\"[data-list-item='\" + el.id + \"']\");\r\n li.addClass(\"active\");\r\n }\r\n\r\n function buildTabPane(el) {\r\n var html = \"\";\r\n html += \"
  • \";\r\n html += \"\";\r\n html += \"\" + el.posn + \"\";\r\n html += \"

    \" + el.title + \"

    \";\r\n html += \"
  • \";\r\n\r\n return html;\r\n }\r\n\r\n function buildSideBar(data) {\r\n var html = '';\r\n html += \"\";\r\n html += \"
    \";\r\n\r\n var leisureHtml = \"\";\r\n var meetingHtml = \"\";\r\n\r\n angular.forEach(data, function (el: any, index) {\r\n if (el.type == \"leisure\") {\r\n leisureHtml += buildTabPane(el);\r\n } else {\r\n meetingHtml += buildTabPane(el);\r\n }\r\n });\r\n\r\n html += \"
    \";\r\n html += \"
      \" + leisureHtml + \"
    \";\r\n html += \"
    \";\r\n html += \"
    \";\r\n html += \"
      \" + meetingHtml + \"
    \";\r\n html += \"
    \";\r\n html += \"
    \";\r\n\r\n return html;\r\n }\r\n\r\n function scrollList() {\r\n var listContainer = $j(\".tab-pane.active\");\r\n var activeListItem = $j(\".tab-pane.active ul.locationList li.listItem.active\");\r\n var distance = listContainer.scrollTop() +\r\n (activeListItem.position().top - listContainer.position().top)\r\n - (listContainer.height() / 2) + (activeListItem.height() / 2);\r\n listContainer.animate({ scrollTop: distance }, 500, 'swing');\r\n }\r\n\r\n\r\n return {\r\n restrict: \"EA\",\r\n priority: 1001,\r\n replace: true,\r\n link: function (scope, element, attrs) {\r\n\r\n // Build Sidebar List\r\n var sidebar = element.find(\"#mapSidebar\");\r\n var locations = scope.resort.location;\r\n\r\n var sideBarHtml = buildSideBar(locations);\r\n sidebar.html(sideBarHtml);\r\n\r\n var regex = new RegExp(\"[\\\\?&]m=([^&#]*)\"),\r\n results: any = regex.exec(location.search);\r\n\r\n if ((results !== null && results[1] == 1) || $rootScope[\"activeTab\"] == 'meeting' || $j(\"#topNavLink\").text().trim().toLowerCase() == \"meetings\") {\r\n ($j(\"#tabs a:last\") as any).tab(\"show\");\r\n }\r\n\r\n var mainContainer = $j(\"#mainMapContainer\");\r\n\r\n var containerWidth = mainContainer.width() * (3 / 4);\r\n $j(\"#mapContainer\").width(containerWidth);\r\n\r\n var containerHeight = containerWidth * 430 / 692;\r\n $j(\"#mapContainer\").height(containerHeight);\r\n $j(\"#mainMapContainer\").height((containerHeight + 1));\r\n\r\n var xRatio = containerWidth / 692;\r\n var yRatio = containerHeight / 430;\r\n\r\n\r\n var map = {\r\n parentGroup: null,\r\n mapImages: null,\r\n canvasId: \"mapCanvas\",\r\n points: locations,\r\n fromListClick: false,\r\n stage: null,\r\n layer: null,\r\n popover: null,\r\n scale: 1,\r\n activeItem: null,\r\n targetItem: null,\r\n\r\n initialize: function (c2) {\r\n map.stage = new Kinetic.Stage({\r\n container: map.canvasId,\r\n width: containerWidth,\r\n height: containerHeight\r\n });\r\n map.layer = new Kinetic.Layer();\r\n map.parentGroup = new Kinetic.Group();\r\n map.mapImages = new Kinetic.Group();\r\n\r\n var smResort = new Kinetic.Image({\r\n x: 0,\r\n y: 0,\r\n image: c2,\r\n width: Math.round(containerWidth),\r\n height: Math.round(containerHeight),\r\n listening: true,\r\n name: \"smallMap\"\r\n });\r\n\r\n smResort.on('zoomIn', function (evt) {\r\n smResort.opacity(0);\r\n lgResort.opacity(1);\r\n });\r\n\r\n var lgResort = new Kinetic.Image({\r\n x: 0,\r\n y: 0,\r\n image: lgImageObj,\r\n width: Math.round(containerWidth),\r\n height: Math.round(containerHeight),\r\n listening: true,\r\n name: \"largeMap\"\r\n });\r\n\r\n lgResort.on('zoomOut', function (evt) {\r\n lgResort.opacity(0);\r\n smResort.opacity(1);\r\n });\r\n\r\n // add the shape to the layer\r\n map.mapImages.add(lgResort);\r\n map.mapImages.add(smResort);\r\n map.parentGroup.add(map.mapImages);\r\n\r\n // iterate over points to build marker groups\r\n for (var i = 0; i < map.points.length; i++) {\r\n // build marker layer - shape, shadow, and text\r\n var kids = createMarkerGroup(map.points[i], i, xRatio, yRatio);\r\n\r\n // add handler to fire tweening function\r\n kids.on(\"tap\", function (e) {\r\n var target = (angular.isUndefined(e.target.parent)) ?\r\n e.target : e.target.parent.attrs.index;\r\n $j(\".listItem\").removeClass(\"active\");\r\n scope.showPopover = false;\r\n scope.$apply();\r\n map.playTween(target);\r\n\r\n });\r\n\r\n kids.on(\"click\", function (e) {\r\n var target = (angular.isUndefined(e.target.parent)) ?\r\n e.target : e.target.parent.attrs.index;\r\n $j(\".listItem\").removeClass(\"active\");\r\n scope.showPopover = false;\r\n scope.$apply();\r\n map.playTween(target);\r\n });\r\n\r\n map.parentGroup.add(kids);\r\n }\r\n\r\n map.layer.add(map.parentGroup);\r\n map.stage.add(map.layer);\r\n },\r\n\r\n apply: function () {\r\n try {\r\n scope.$apply();\r\n } catch (e) { }\r\n },\r\n\r\n playTween: function (target) {\r\n var groupName = \"#group\" + (target);\r\n var shape = map.stage.find(groupName);\r\n\r\n // using the text group for the x/y coords as the shape objects don't have those attrs.\r\n var coordx = shape[0].children[1].attrs.x;\r\n var coordy = shape[0].children[1].attrs.y;\r\n\r\n scope.showPopover = false;\r\n\r\n if (map.scale == 1) {\r\n map.panZoom(target, coordx, coordy);\r\n } else if (map.scale == 2 && scope.activeItem !== target) {\r\n map.pan(target, coordx, coordy);\r\n } else if (map.scale == 2 && scope.activeItem == target) {\r\n map.scale = 1;\r\n map.resetStage();\r\n }\r\n },\r\n\r\n panZoom: function (el, x, y) {\r\n var panZoomDef = {\r\n node: map.parentGroup,\r\n scaleX: 2,\r\n scaleY: 2,\r\n x: -x,\r\n y: -y,\r\n easing: Kinetic.Easings.EaseInOut,\r\n duration: 0.6,\r\n onFinish: function () {\r\n var loc = $j.grep(locations, function (e: any) { return e.id == el; });\r\n map.popover = buildPopover(loc[0], x, y, el);\r\n map.finishTween(2, el, true);\r\n }\r\n };\r\n var anim = new Kinetic.Tween(panZoomDef);\r\n anim.tween.play();\r\n },\r\n\r\n pan: function (el, x, y) {\r\n var pan = {\r\n node: map.parentGroup,\r\n x: -x,\r\n y: -y,\r\n easing: Kinetic.Easings.EaseInOut,\r\n duration: 0.6,\r\n onFinish: function () {\r\n var loc = $j.grep(locations, function (e: any) { return e.id == el; });\r\n map.popover = buildPopover(loc[0], x, y, el);\r\n map.finishTween(2, el, true);\r\n }\r\n };\r\n var anim = new Kinetic.Tween(pan);\r\n anim.tween.play();\r\n },\r\n\r\n resetStage: function () {\r\n var reset = {\r\n node: map.parentGroup,\r\n x: 0,\r\n y: 0,\r\n scaleX: 1,\r\n scaleY: 1,\r\n easing: Kinetic.Easings.EaseInOut,\r\n duration: 0.6,\r\n onFinish: function () {\r\n map.finishTween(1, null, false);\r\n }\r\n };\r\n var anim = new Kinetic.Tween(reset);\r\n anim.tween.play();\r\n },\r\n\r\n finishTween: function (scale, activeItem, showPopover) {\r\n if (scale == 2) {\r\n scope.zoomButton = true;\r\n var img = map.stage.find(\".smallMap\");\r\n img.fire('zoomIn');\r\n } else {\r\n scope.zoomButton = false;\r\n var img = map.stage.find(\".largeMap\");\r\n img.fire('zoomOut');\r\n }\r\n map.scale = scale;\r\n map.activeItem = activeItem;\r\n scope.popover = map.popover;\r\n scope.showPopover = showPopover;\r\n\r\n if (activeItem !== null) {\r\n var item = $j.grep(locations, function (e: any) { return e.id == activeItem; });\r\n setActiveTabItem(item[0]);\r\n scrollList();\r\n }\r\n map.apply();\r\n }\r\n };\r\n\r\n var lgImageObj = new Image();\r\n lgImageObj.src = scope.resort.map_img;\r\n var smImageObj = new Image();\r\n smImageObj.src = lgImageObj.src;\r\n\r\n\r\n smImageObj.onload = function () {\r\n var step1, step2;\r\n step1 = (3 / 4);\r\n step2 = (2 / 3);\r\n // var c1 = scaleImage(smImageObj, step1);\r\n var c2 = scaleImage(smImageObj, step2);\r\n\r\n map.initialize(c2);\r\n\r\n // Listen for list-item click\r\n $j(\".listItem\").on(\"click\", function (e) {\r\n if ($j(this).hasClass(\"active\")) {\r\n $j(this).toggleClass(\"active\");\r\n scope.showPopover = false;\r\n map.resetStage();\r\n scope.$apply();\r\n } else {\r\n $j(\".listItem\").removeClass(\"active\");\r\n scope.showPopover = false;\r\n scope.$apply();\r\n $j(this).addClass(\"active\");\r\n scrollList();\r\n var id = $j(this).data(\"list-item\");\r\n map.playTween(id);\r\n }\r\n });\r\n\r\n $rootScope.$on(\"closePopover\", function () {\r\n scope.showPopover = false;\r\n scope.zoomButton = false;\r\n $j(\".listItem\").removeClass(\"active\");\r\n map.fromListClick = false;\r\n map.resetStage();\r\n });\r\n\r\n $rootScope.$on(\"resetStage\", function () {\r\n scope.showPopover = false;\r\n map.fromListClick = false;\r\n map.resetStage();\r\n });\r\n };\r\n }\r\n };\r\n }]) as any);\r\n})(window, window['$j']);\r\n}\r\n","module Omni.ResortMap {\r\n ngModule.filter('naFilter', function () {\r\n return function (input) {\r\n if (input == 0) {\r\n return \"NA\";\r\n } else {\r\n return input;\r\n }\r\n };\r\n })\r\n .filter('ftFilter', function () {\r\n return function (input) {\r\n if (!isNaN(input) && input !== 0) {\r\n return input + \"'\";\r\n } else {\r\n return input;\r\n }\r\n };\r\n });\r\n}\r\n","module Omni.ResortMap {\r\n ngModule.directive('partialSlideshow', ['$document',\r\n function ($document) {\r\n return {\r\n restrict: 'A',\r\n priority: 1001,\r\n link: function (scope, element, attrs) {\r\n\r\n\r\n }\r\n };\r\n }]);\r\n}\r\n","module Omni.ResortMap {\r\n ngModule.directive('mapPopover', [function () {\r\n return {\r\n restrict: 'EAC',\r\n templateUrl: 'omni/assets/resortmap/views/popover.tpl.html'\r\n };\r\n }]);\r\n}\r\n","module Omni.ResortMap {\r\n ngModule.directive('roomLayout', (['$document',\r\n function ($document) {\r\n return {\r\n restrict: 'EA',\r\n link: function (scope, element, attrs) {\r\n\r\n function getOffset(index, length) {\r\n if (length > 5) {\r\n var left, right;\r\n left = 2;\r\n right = length - 3;\r\n\r\n // index is on the far left\r\n if (index <= left) {\r\n return 0;\r\n\r\n // index is on the far right\r\n } else if (index >= right) {\r\n return (right - 2);\r\n\r\n // index is somewhere in the middle\r\n } else {\r\n return (index - 2);\r\n }\r\n }\r\n }\r\n\r\n var partials = scope.partials;\r\n var s, a, c, p;\r\n var part = 0;\r\n var layouts = partials[part];\r\n scope._Index = 0;\r\n\r\n s = $document.find(\"#partialSelect\");\r\n a = $document.find(\"#area\");\r\n c = $document.find(\"#ceiling\");\r\n p = $document.find(\"#capacity\");\r\n var body = $document.find(\"body\");\r\n var bodyWidth = body.width();\r\n\r\n var offsetLength = 80;\r\n if (bodyWidth >= 1200) {\r\n offsetLength = 117;\r\n } else if (bodyWidth < 1200 && bodyWidth >= 992) {\r\n offsetLength = 92;\r\n } else if (bodyWidth < 992 && bodyWidth >= 768) {\r\n offsetLength = 83;\r\n }\r\n\r\n s.on(\"change\", function (e) {\r\n part = e.target.value;\r\n scope.layouts = partials[part].layout;\r\n a.html(partials[part].area);\r\n c.html(scope.room.ceiling);\r\n p.html(partials[part].capacity);\r\n scope._Index = 0;\r\n scope.length = scope.layouts.length;\r\n scope.$digest();\r\n });\r\n\r\n scope.length = scope.layouts.length;\r\n\r\n scope.$watch('_Index', function () {\r\n var offset = getOffset(scope._Index, scope.length);\r\n jQuery(\"#layoutNav\").animate({\r\n left: -(offset * offsetLength)\r\n });\r\n });\r\n\r\n scope.isActive = function (index) {\r\n return scope._Index === index;\r\n };\r\n scope.showPrev = function () {\r\n var oldIndex = angular.copy(scope._Index);\r\n scope._Index = (scope._Index > 0) ? --scope._Index : scope.length - 1;\r\n };\r\n\r\n scope.showNext = function () {\r\n var oldIndex = angular.copy(scope._Index);\r\n scope._Index = (scope._Index < scope.length - 1) ? ++scope._Index : 0;\r\n };\r\n\r\n scope.showPhoto = function (index) {\r\n var oldIndex = angular.copy(scope._Index);\r\n scope._Index = index;\r\n };\r\n\r\n scope.setWidth = function (len) {\r\n return len > 5;\r\n }\r\n }\r\n };\r\n }]) as any);\r\n}\r\n","module Omni.ResortMap {\r\n ngModule.factory('DataService', ['$resource', \"$window\", function ($resource, $window) {\r\n return $resource($window.endpointUrl);\r\n }])\r\n // underscore.js\r\n .factory('_', [\"$window\", function ($window: any) {\r\n\r\n return $window._;\r\n }])\r\n // Kinetic.js\r\n .factory('Kinetic', [\"$window\", function ($window: any) {\r\n\r\n return $window.Kinetic;\r\n }])\r\n // resort data object\r\n .factory('ResortProvider', ['_', function (_: any) {\r\n\r\n var resort,\r\n location,\r\n floor,\r\n room;\r\n var provider = {\r\n setResort: function (data) {\r\n resort = data;\r\n },\r\n getResort: function () {\r\n return resort;\r\n },\r\n getLocation: function (i) {\r\n if (resort.is_resort) {\r\n angular.forEach(resort.location, function (value, index) {\r\n if (value.id == i) {\r\n location = value;\r\n }\r\n });\r\n } else {\r\n location = resort.location[0];\r\n }\r\n return location;\r\n },\r\n getFloor: function (id) {\r\n angular.forEach(location.floor, function (value, index) {\r\n if (value.id == id) {\r\n floor = value;\r\n }\r\n });\r\n return floor;\r\n },\r\n getRoom: function (id) {\r\n angular.forEach(floor.room, function (value, index) {\r\n if (value.id == id) {\r\n room = value;\r\n }\r\n });\r\n return room;\r\n }\r\n };\r\n return provider;\r\n }]);\r\n}\r\n","module Omni.ResortMap {\r\n ngModule.directive('sidebar', ([\r\n function () {\r\n return {\r\n restrict: 'C',\r\n link: function (scope, element, attrs) {\r\n var body: any = element.find(\".body\");\r\n if (body.height > 290) {\r\n body.css({ overflowY: \"scroll\" });\r\n }\r\n }\r\n };\r\n }]) as any);\r\n}\r\n","module Omni.ResortMap {\r\n ngModule.directive('cycleSlideshow', (['$state', function ($state) {\r\n return {\r\n restrict: 'C',\r\n link: function (scope, element, attrs) {\r\n var slides = scope.slides;\r\n var html = null;\r\n var htmlClass;\r\n\r\n if ($state.current.name == 'gallery') {\r\n htmlClass = \"cycle-caption meeting\";\r\n } else {\r\n htmlClass = \"cycle-caption\";\r\n }\r\n\r\n html += \"
    \";\r\n\r\n if (slides.length > 1) {\r\n html += \"
    \";\r\n html += \"
    \";\r\n }\r\n\r\n angular.forEach(slides, function (slide: any, key) {\r\n html += \"\";\r\n });\r\n element.html(html);\r\n\r\n element.cycle({\r\n fx: \"fade\",\r\n timeout: 5000,\r\n captionTemplate: \"{{cycleTitle}}\",\r\n log: false\r\n });\r\n\r\n element.on('$destroy', function () {\r\n slides = [];\r\n });\r\n }\r\n };\r\n }]) as any);\r\n}\r\n","module Omni.ResortMap {\r\n ngModule.directive('youtube', ['$sce',\r\n function ($sce) {\r\n return {\r\n restrict: 'E',\r\n template: '',\r\n replace: true,\r\n link: function (scope, element, attrs) {\r\n scope.video_url = $sce.trustAsResourceUrl(scope.location.video_url);\r\n }\r\n };\r\n }]);\r\n}\r\n"]}