<!DOCTYPE html>
<html class='ltr locale-{{selectedLocale.code}} currency-{{selectedCurrency.code}}' lang='{{ selectedLocale.lang_code }}'>
<head>
<meta charset='UTF-8'>
<meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'>
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0,user-scalable=no' name='viewport'>
<meta content='black-translucent' name='apple-mobile-web-app-status-bar-style'>
<meta content='yes' name='apple-mobile-web-app-capable'>
<meta name='google' value='notranslate'>
<meta content='K0MakaChlI5s9r7Y8jDMKgqkK4T23K--eikmGGFBics' name='google-site-verification'>
<meta content='3710747612763141776375' property='qc:admins'>
<title>金鹏俱乐部酒店租车预订</title>
<meta content='{{ &quot;wl.hainan.site_meta&quot; | translate }}' name='description'>
<base href='/'>
<!-- DNS prewarming to avoid intermitten delay in dns resolution -->
<link href='//kaligopress.herokuapp.com' rel='dns-prefetch'>
<link href='https://www.kaligo.com/assets/application-343e7ec5d91ec2b1306749f1f1377921a6dd7a4666ee69a2e010b98c9b85373b.css' media='all' rel='stylesheet'>
<link href='https://www.kaligo.com/assets/v2/kaligo-927a78c29168cef9b01b99c926ff1e3a6d12d8cbb122a2dcad960d634a27885f.css' media='all' rel='stylesheet'>
<link href='https://www.kaligo.com/assets/v2/kaligo2-0d92c5db2621d4f912e895bf2610c337d09e34b92ff2c49971d9c80c384f2cbb.css' media='all' rel='stylesheet'>

<link href='https://www.kaligo.com/assets/cars-39e94617b90cc58bdde392cb9c93927331b29d526583cfe2ebcb3e5ca2355ef1.css' media='all' rel='stylesheet'>

<link href='https://www.kaligo.com/assets/whitelabel/hainan/hainan-35b61405979100e3633e56727b0f68daaf5a1192168d3b43345a049a4c8b58f4.css' media='all' rel='stylesheet'>
<script src="https://www.kaligo.com/packs/518-27d071be855dc3930416.js" defer="defer"></script>
<script src="https://www.kaligo.com/packs/552-47046f233370c1d19ac7.js" defer="defer"></script>
<script src="https://www.kaligo.com/packs/779-1b094dcc8b2eecbf6cf3.js" defer="defer"></script>
<script src="https://www.kaligo.com/packs/936-b9df9a28e5874f41edc1.js" defer="defer"></script>
<script src="https://www.kaligo.com/packs/828-8dcac4332fbc5c467df7.js" defer="defer"></script>
<script src="https://www.kaligo.com/packs/hainan-6302a9c2e2434b797c4e.js" defer="defer"></script>
<link rel="stylesheet" href="https://www.kaligo.com/packs/css/552-b2a6f535.css" defer="defer" />
<!-- Unfortunately Stripe does not recommend self-hosting this JS file, so we load from CDN -->
<script src='https://js.stripe.com/v2/'></script>
<script>
  Stripe.setPublishableKey('pk_live_yU30Pd1u2Tp4WWTJjg0euqfh')
</script>

<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="WSu7QGNATOh_FD79KkGf9SmLjACZwAjQ1LPXLY-mlCRd8dbjOnjRpPtOiJFdt_dVxPDyuv1MX6eTuKJOseIn6Q" />

<!-- favicon types -->
<link href='https://cdn-s3.kaligo.com/assets/images/hainan/favicon.ico' rel='shortcut icon' type='image/x-icon'>
</head>
<body class='{{ $root.landingPage.product_type }} hainan-white-label' ng-class='lockBody' ng-click='setMouseUser($event)' ng-controller='MainCtrl' watch-width=''>
<style parse-style='::landingPage.styles' type='text/css'></style>
<style>
  hotel-result-filter-mobile #mobile-popup-header,
  hotel-result-sort-mobile #mobile-popup-header,
  hotel-result-map-mobile #mobile-popup-header,
  .room-details-modal .title-content {
    background-color: {{ pointsPartner.settings.colors.backgroundColor }};
  }
  .partner-bg-color,
  #search-bottom-sheet {
    background-color: {{ pointsPartner.settings.colors.backgroundColor }};
  }
  .color-points {
    color: {{ pointsPartner.settings.colors.fontColor }};
  }
</style>

<div id='checkout_enrollment_form' style='display: none'></div>
<div id='main' ng-cloak='' ng-controller='HainanCtrl' role='main'>
<div class='entire-overlay'>
<div class='overlay-content'>
<div class='hainan-top-banner'></div>
<div class='main-content'>
<div class='logo-container'>
<img alt='Fortune Wings Club Hainan' src='https://cdn-s3.kaligo.com/assets/images/hainan/logo-fortune-wings-club2.png'>
</div>
<div class='hainan-maintenance-text'>
<!-- /en -->
<h3>
System Maintenance
</h3>
<p>
Please note Hainan Air loyalty system is currently undergoing maintenance.
<br>
During this time, hotel bookings and car rentals cannot be performed.
<br>
We apologise for the inconvenience caused.
<br>
</p>
<!-- / zh-CN -->
<h3>
关于金鹏俱乐部系统升级维护的公告
</h3>
<p>
亲爱的金鹏会员，由于系统维护，暂时无法进行酒店预订与租车的兑换。敬请谅解。
<br>
</p>
<!-- / zh-TW -->
<h3>
關於金鵬俱樂部系統升級維護的公告
</h3>
<p>
親愛的金鵬會員，由於系統維護，暫時無法進行飯店預訂與租車的兌換。敬請諒解。
<br>
</p>
</div>
</div>
</div>
</div>

</div>
<div class='select2-drop-mask style-mask ng-cloak' ng-show='isSelect2DropDownOpen'></div>
<div class='cancellation-policy-overlay popup' ng-class='{&#39;is-shown&#39;: $root.globalState.isCancellationPolicyError}'>
<div class='content'>
<div class='info-container'>
<em class='fa fa-exclamation inline-element'></em>
<span class='text inline-element' translate='cancellation_policy_error_message'></span>
</div>
<a class='back' href='' ng-click='redirectToHotelDetailsPage()' title='Back to hotel details page' translate='cancellation_policy_error_button'></a>
</div>
</div>

<div class='popup' id='booking-key-expired' ng-class='{&#39;is-shown&#39;: $root.globalState.bookingKeyExpired}'>
<div class='content'>
<div class='header'>
<span class='fa fa-exclamation inline-element'></span>
<div class='info-text inline-element'>
<div translate='cars.errors.expired_booking_key'></div>
</div>
</div>
<a class='click-here-to-redirect' ng-click='backToCarsResults()' ng-controller='CarsBackToResultsCtrl'>
<em class='fa fa-arrow-left'></em>
<span translate='Back to search results'></span>
</a>
</div>
</div>

<script id='search bar' type='text/ng-template'>
<div class='search-state-bar hidden-xs hidden-sm' ng-controller='HotelsSearchBarCtrl'>
<div class='max-size'>
<div class='col pull-left col-action'>
<div ng-click='editSearch()' ng-show='inResultPage' role='link' tabindex='0'>
<em class='fa fa-search'></em>
<div class='text capitalize' role='link' translate='edit'></div>
</div>
<div ng-click='backToSearchResultsPage()' ng-hide='inResultPage' role='link'>
<em class='fa icon-arrow-left'></em>
<div class='text capitalize' translate='Back'></div>
</div>
</div>
<div class='col pull-left col-destination' ng-click='editSearch()'>
<label class='uppercase font-futura' translate='Destination or Hotel'></label>
<div class='value' ng-bind='$root.destination'></div>
</div>
<div class='col pull-left col-duration'>
<div class='pull-left col-check-in' ng-click='editSearch()'>
<label class='uppercase font-futura' for='checkInDate' translate='Check In'></label>
<div class='value' ng-bind='displayCheckInDateShort'></div>
</div>
<div class='pull-left col-night'>
<div class='night-ball partner-bg-color'>
<span class='night' ng-bind='$root.duration'></span>
<i class='fa fa-moon-o'></i>
</div>
</div>
<div class='pull-left col-check-out' ng-click='editSearch()'>
<label class='uppercase font-futura' for='checkOutDate' translate='Check Out'></label>
<div class='value' ng-bind='displayCheckOutDateShort'></div>
</div>
</div>
<div class='col pull-left col-info'>
<div class='pull-left col-rooms' ng-click='editSearch()'>
<label class='uppercase font-futura' for='roomCount' translate='Rooms'></label>
<div class='value' ng-bind='$root.roomCount'></div>
</div>
<div class='pull-left col-guests' ng-click='editSearch()'>
<label class='uppercase font-futura' for='adultCount' translate='Guests'></label>
<div class='value adult-count'>
<span ng-if='adultCount == 1' translate='count.adult_one'></span>
<span ng-if='adultCount &gt; 1' translate-values='{ count: &#39;{{ adultCount }}&#39; }' translate='count.adult_other'></span>
</div>
<div class='value children-count' ng-if='childrenCount &gt; 0'>
<span class='lowercase' ng-if='childrenCount == 1' translate='count.children_one'></span>
<span class='lowercase' ng-if='childrenCount &gt; 1' translate-values='{ count: &#39;{{ childrenCount }}&#39; }' translate='count.children_other'></span>
</div>
</div>
</div>
<div class='col pull-left col-partner' ng-click='editSearch()'>
<img ng-src='{{ pointsPartner.iconUrl }}'>
</div>
</div>
</div>

</script>
<script id='search summary' type='text/ng-template'>
<div class='max-size' ng-if='globalStateService.currentPage == &quot;hotel-detail&quot;'>
<div class='back-to-search-result' ng-click='redirectToSearchResultsPage()' ng-controller='HotelsSearchBarCtrl' role='link'>
<em class='fa icon-arrow-left'></em>
<span class='text' translate='Back to search results'></span>
</div>
</div>
<div class='search-summary' ng-if='globalStateService.currentPage != &quot;hotel-detail&quot;'>
<img class='btn-edit' ng-click='editSearch()' src='https://cdn-s3.kaligo.com/assets/images/edit_mobile.png'>
<div class='search-info'>
<div class='destination' ng-bind='::destination'></div>
<div class='summary'>
<span ng-bind='displayCheckInDateNum | date: &#39;dd MMM&#39;'></span>
<span>-</span>
<span ng-bind='displayCheckOutDateNum | date: &#39;dd MMM&#39;'></span><span>,&nbsp;</span><span class='room-count' translate-values='{ count: &#39;{{ $root.roomCount }}&#39; }' translate='wl.room_count'></span><span>,&nbsp;</span><span class='guest-count' translate-values='{ count: &#39;{{ $root.adultCount }}&#39; }' translate='guest(s) per room'></span>
</div>
</div>
</div>

</script>
<script id='/html/modals/hotels_search' type='text/ng-template'>
<div class='modal-body'>
<a aria-label='Close' class='modal-closer' ng-click='close()'>✕</a>
<hotels-edit-search-form></hotels-edit-search-form>
</div>

</script>
<script id='/html/modals/cars_search' type='text/ng-template'>
<div class='modal-body cars-modify-search-modal'>
<a class='modal-closer' ng-click='closeModal()'>✕</a>
<cars-edit-search-form on-search='closeModal()'></cars-edit-search-form>
</div>

</script>
<script id='/html/modals/cars_terms_modal' type='text/ng-template'>
<div class='modal-body cars-terms-modal' modal-accessibility-lock=''>
<a aria-label='Close' autofocus='true' class='modal-closer' key-enter='closeTermsModal()' ng-click='closeTermsModal()' tabindex='0'>✕</a>
<p class='loading' ng-if='termsLoading' translate='Terms &amp; Conditions is loading...'></p>
<div class='modal-heading' ng-if='!termsLoading' translate='{{ customTitle ? customTitle : &#39;Terms &amp; Conditions&#39; }}'></div>

<accordion class='accordion-element' ng-repeat='(key, value) in termsData'>
<div class='header' ng-class='{active: showPanel}' ng-click='togglePanel()'>
<span translate='cars.term.{{key}}'></span>
<em class='fa fa-angle-down'></em>
</div>
<div class='content' ng-class='{active: showPanel}'>
<p ng-repeat='terms in value track by $index'>
<span translate='{{terms}}'></span>
</p>
</div>
</accordion>
</div>

</script>
<noscript>
<div class='popUp table-layout ng-hide' id='noscript'>
<div class='col'>
<div class='content'>
<div class='title'>
<i class='uk-icon-exclamation-sign navy-blue'></i>
<span>
It seems JavaScript is either disabled or not supported by your browser
</span>
</div>
<p>
For a better experience on Kaligo, enable JavaScript in your browser, then try again.
</p>
<a class='btn-primary btn'>ok</a>
</div>
</div>
</div>
</noscript>

<script>
  if (!window.KaligoConfig) window.KaligoConfig = {};
  // get the subdomain info from the server.
  window.KaligoConfig['subdomain'] = 'travel.ffp';
  window.KaligoConfig['cdnUrl'] = 'https://cdn-s3.kaligo.com';
  window.KaligoConfig['cdnImageUrl'] = 'https://cdn-s3.kaligo.com/assets/images';
  window.KaligoConfig['APP_VERSION'] = '2.2.0';
  window.KaligoConfig['isProduction'] = true;
  window.KaligoConfig['environment'] = "production";
  window.KaligoConfig['highResImagesCdnUrl'] = "https://d2ey9sqrvkqdfs.cloudfront.net";
  
  // Angular v2
  window.KaligoConfig['appVersion'] = '2.2.0';
</script>

<script>
  window.KaligoConfig['APPLICATION_TYPE'] = 'whitelabel';
  window.KaligoConfig['WHITELABEL_PARTNER'] = 'hainan';
  window.KaligoConfig['DLP'] = 'hainan-wl';
  window.KaligoConfig['PRODUCT_TYPE'] = 'redeem';
</script>
<script>
  var _rollbarConfig = {
    accessToken: "ee3dd83a16454861b33e05486b964faf",
    captureUncaught: true,
    captureUnhandledRejections: false,
    payload: { environment: "production" }
  };
  !function(r){function e(n){if(o[n])return o[n].exports;var t=o[n]={exports:{},id:n,loaded:!1};return r[n].call(t.exports,t,t.exports,e),t.loaded=!0,t.exports}var o={};return e.m=r,e.c=o,e.p="",e(0)}([function(r,e,o){"use strict";var n=o(1),t=o(4);_rollbarConfig=_rollbarConfig||{},_rollbarConfig.rollbarJsUrl=_rollbarConfig.rollbarJsUrl||"https://cdnjs.cloudflare.com/ajax/libs/rollbar.js/2.3.8/rollbar.min.js",_rollbarConfig.async=void 0===_rollbarConfig.async||_rollbarConfig.async;var a=n.setupShim(window,_rollbarConfig),l=t(_rollbarConfig);window.rollbar=n.Rollbar,a.loadFull(window,document,!_rollbarConfig.async,_rollbarConfig,l)},function(r,e,o){"use strict";function n(r){return function(){try{return r.apply(this,arguments)}catch(r){try{console.error("[Rollbar]: Internal error",r)}catch(r){}}}}function t(r,e){this.options=r,this._rollbarOldOnError=null;var o=s++;this.shimId=function(){return o},"undefined"!=typeof window&&window._rollbarShims&&(window._rollbarShims[o]={handler:e,messages:[]})}function a(r,e){if(r){var o=e.globalAlias||"Rollbar";if("object"==typeof r[o])return r[o];r._rollbarShims={},r._rollbarWrappedError=null;var t=new p(e);return n(function(){e.captureUncaught&&(t._rollbarOldOnError=r.onerror,i.captureUncaughtExceptions(r,t,!0),i.wrapGlobals(r,t,!0)),e.captureUnhandledRejections&&i.captureUnhandledRejections(r,t,!0);var n=e.autoInstrument;return e.enabled!==!1&&(void 0===n||n===!0||"object"==typeof n&&n.network)&&r.addEventListener&&(r.addEventListener("load",t.captureLoad.bind(t)),r.addEventListener("DOMContentLoaded",t.captureDomContentLoaded.bind(t))),r[o]=t,t})()}}function l(r){return n(function(){var e=this,o=Array.prototype.slice.call(arguments,0),n={shim:e,method:r,args:o,ts:new Date};window._rollbarShims[this.shimId()].messages.push(n)})}var i=o(2),s=0,d=o(3),c=function(r,e){return new t(r,e)},p=d.bind(null,c);t.prototype.loadFull=function(r,e,o,t,a){var l=function(){var e;if(void 0===r._rollbarDidLoad){e=new Error("rollbar.js did not load");for(var o,n,t,l,i=0;o=r._rollbarShims[i++];)for(o=o.messages||[];n=o.shift();)for(t=n.args||[],i=0;i<t.length;++i)if(l=t[i],"function"==typeof l){l(e);break}}"function"==typeof a&&a(e)},i=!1,s=e.createElement("script"),d=e.getElementsByTagName("script")[0],c=d.parentNode;s.crossOrigin="",s.src=t.rollbarJsUrl,o||(s.async=!0),s.onload=s.onreadystatechange=n(function(){if(!(i||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)){s.onload=s.onreadystatechange=null;try{c.removeChild(s)}catch(r){}i=!0,l()}}),c.insertBefore(s,d)},t.prototype.wrap=function(r,e,o){try{var n;if(n="function"==typeof e?e:function(){return e||{}},"function"!=typeof r)return r;if(r._isWrap)return r;if(!r._rollbar_wrapped&&(r._rollbar_wrapped=function(){o&&"function"==typeof o&&o.apply(this,arguments);try{return r.apply(this,arguments)}catch(o){var e=o;throw"string"==typeof e&&(e=new String(e)),e._rollbarContext=n()||{},e._rollbarContext._wrappedSource=r.toString(),window._rollbarWrappedError=e,e}},r._rollbar_wrapped._isWrap=!0,r.hasOwnProperty))for(var t in r)r.hasOwnProperty(t)&&(r._rollbar_wrapped[t]=r[t]);return r._rollbar_wrapped}catch(e){return r}};for(var u="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(","),f=0;f<u.length;++f)t.prototype[u[f]]=l(u[f]);r.exports={setupShim:a,Rollbar:p}},function(r,e){"use strict";function o(r,e,o){if(r){var t;"function"==typeof e._rollbarOldOnError?t=e._rollbarOldOnError:r.onerror&&!r.onerror.belongsToShim&&(t=r.onerror,e._rollbarOldOnError=t);var a=function(){var o=Array.prototype.slice.call(arguments,0);n(r,e,t,o)};a.belongsToShim=o,r.onerror=a}}function n(r,e,o,n){r._rollbarWrappedError&&(n[4]||(n[4]=r._rollbarWrappedError),n[5]||(n[5]=r._rollbarWrappedError._rollbarContext),r._rollbarWrappedError=null),e.handleUncaughtException.apply(e,n),o&&o.apply(r,n)}function t(r,e,o){if(r){"function"==typeof r._rollbarURH&&r._rollbarURH.belongsToShim&&r.removeEventListener("unhandledrejection",r._rollbarURH);var n=function(r){var o,n,t;try{o=r.reason}catch(r){o=void 0}try{n=r.promise}catch(r){n="[unhandledrejection] error getting `promise` from event"}try{t=r.detail,!o&&t&&(o=t.reason,n=t.promise)}catch(r){t="[unhandledrejection] error getting `detail` from event"}o||(o="[unhandledrejection] error getting `reason` from event"),e&&e.handleUnhandledRejection&&e.handleUnhandledRejection(o,n)};n.belongsToShim=o,r._rollbarURH=n,r.addEventListener("unhandledrejection",n)}}function a(r,e,o){if(r){var n,t,a="EventTarget,Window,Node,ApplicationCache,AudioTrackList,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(",");for(n=0;n<a.length;++n)t=a[n],r[t]&&r[t].prototype&&l(e,r[t].prototype,o)}}function l(r,e,o){if(e.hasOwnProperty&&e.hasOwnProperty("addEventListener")){for(var n=e.addEventListener;n._rollbarOldAdd&&n.belongsToShim;)n=n._rollbarOldAdd;var t=function(e,o,t){n.call(this,e,r.wrap(o),t)};t._rollbarOldAdd=n,t.belongsToShim=o,e.addEventListener=t;for(var a=e.removeEventListener;a._rollbarOldRemove&&a.belongsToShim;)a=a._rollbarOldRemove;var l=function(r,e,o){a.call(this,r,e&&e._rollbar_wrapped||e,o)};l._rollbarOldRemove=a,l.belongsToShim=o,e.removeEventListener=l}}r.exports={captureUncaughtExceptions:o,captureUnhandledRejections:t,wrapGlobals:a}},function(r,e){"use strict";function o(r,e){this.impl=r(e,this),this.options=e,n(o.prototype)}function n(r){for(var e=function(r){return function(){var e=Array.prototype.slice.call(arguments,0);if(this.impl[r])return this.impl[r].apply(this.impl,e)}},o="log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(","),n=0;n<o.length;n++)r[o[n]]=e(o[n])}o.prototype._swapAndProcessMessages=function(r,e){this.impl=r(this.options);for(var o,n,t;o=e.shift();)n=o.method,t=o.args,this[n]&&"function"==typeof this[n]&&("captureDomContentLoaded"===n||"captureLoad"===n?this[n].apply(this,[t[0],o.ts]):this[n].apply(this,t));return this},r.exports=o},function(r,e){"use strict";r.exports=function(r){return function(e){if(!e&&!window._rollbarInitialized){r=r||{};for(var o,n,t=r.globalAlias||"Rollbar",a=window.rollbar,l=function(r){return new a(r)},i=0;o=window._rollbarShims[i++];)n||(n=o.handler),o.handler._swapAndProcessMessages(l,o.messages);window[t]=n,window._rollbarInitialized=!0}}}}]);
</script>

<div class='popup hainan-loading' ng-hide='!$root.isLoading || globalState.isNewSearch'>
<div class='center-of-page'>
<div class='pos-relative'>
<img alt='Fortune Wings Club Hainan' src='https://cdn-s3.kaligo.com/assets/images/hainan/logo-fortune-wings-club-v3.png'>
<div class='loading-animation-bar'>
<div class='fill'></div>
</div>
</div>
</div>
</div>
</body>
</html>
