강남 패밀리 호텔 (Gangnam Family Hotel, 서울) - 호텔 리뷰 & 가격 비교
강남 패밀리 호텔 주변 호텔
강남 패밀리 호텔의 특징
강남 패밀리 호텔 객실
서울이스케이프룸 - 강남2호점 주변 호텔
학동 역 주변 호텔
선정릉 역 주변 호텔
선릉역 주변 호텔
삼역 주변 호텔
잠원 역 주변 호텔
신사역 주변 호텔
신 논현 역 주변 호텔
강남 패밀리 호텔, 서울
176위(683곳의 서울 소재 호텔 중)
서울 강남구 봉은사로 143
무료 취소(~20.07.25)
무료 취소(~20.07.28)
모든 사진 보기 (293)293
서울의 683개 호텔 중 #176개
2013 년 6 월부터 Dormy Inn Seoul은 GANGNAM FAMILY HOTEL 이라는 이름으로 비즈니스를 운영하게됩니다. 최근에 객실 상태를 개조하여 모든 손님들에게 고품격 서비스와 헌신을 제공 할 준비가되었습니다. 강남 패밀리 호텔 (GANGNAM FAMILY HOTEL)에 접근하면서 최고의 서비스 레지던스 체험 중 하나가 시작됩니다. 우리는 강남의 중심부에 위치하여 비즈니스 및 오락의 장소입니다. 집을 떠나 집처럼, 가구가 완비된 (세탁기, 주방, 냉장고) 객실은 합리적인 가격으로 손님 여러분께 준비되어 있습니다. 장기 투숙객, 가족 및 비즈니스에 완벽하게 최적화되어 있으며, KAL Limousine No.6703 이 여러분들을 강남 패밀리 호텔 앞으로 모실 것 입니다. 우리는 차로 10 분이면 코엑스 (COEX), 세계 무역 센터 (World Trade Center)에 편리하게 접근 할 수 있습니다. 지하철 9 호선 7 호선, 2 호선 도보 15 분. 강남 패밀리 호텔 무료 서비스 : ◈ 인터넷과 무선 인터넷 무료 (세탁기, 조리기구가있는 주방, 다리미, 냉장고) ◈ 무료 주차장 ◈ 24 시간 개인 지원 서비스
412음식점(0.5km 내)
신 논현 7 분
삼11 분
슌미
167리뷰18질문 및 답변3객실 팁
모든언어(167)
Airwind157이 리뷰를 작성했습니다. 2019년 3월
싱가포르, 싱가포르66 포스팅6개의 유용한 리뷰 평가
가족에게 탁월한
호텔은 Eonju 기차역까지 도보로 이동 가능한 거리 (200 m) 내에 있습니다. 이 객실에는 간이 주방, 세탁기, 다림질 시설, 대형 냉장고 및 전자 렌지가 마련되어 있습니다. 가족에게 좋고, 편리한 상점은 바로 아래에 있습니다.
Sine N.이 리뷰를 작성했습니다. 2019년 2월
서울 어드벤처를위한 완벽한 호텔
우리가 도착했을 때 방은 매우 깨끗합니다. 그러나, 나는 방이 4 명의 사람을 위해 꽤 붐 find다라고 안다. 그것이 말하게되면서, 우리는 벌써 Family room을 예약했다. 어쨌든이 호텔은기구, 냉장고, 세탁기 및 전자 렌지를 객실에 제공했습니다. 나는 매우 인상적이다라고 말할 것이다! 또한 호텔 주변에는 여러 편의 편의점이 있으며 호텔 바로 옆에 있습니다. 따라서, 당신이 진짜로 빠른 것을 사거나 자정 갈구가있을 필요가있는 경우에 대비하여 매우 편리합니다. 유일한 코멘트는 가격에 관한 것입니다. 제안 가격으로, 나는 방이 꽤 평균이라고 생각한다. 직원들은 매우 환영받으며 친절했습니다. 그들은 도움을 제공하고 제안을하기를 열망했습니다. 우리는 서울에서의 모험에서 돌아와서 깨끗하고 체계적인 방이었습니다. 침대는 매우 편안했다. 총체적으로, 서비스는 매우 인상적이었다. 나는 아주 행복하다. 이 호텔은 또한 지하철 역 (9 호선)과 공항 리무진 버스 정류장 근처에 위치하여 교통이 문제가되지 않습니다. 어디든 갈 수 있으며 호텔에서 도보로 약 10 분 거리에 있습니다. 내가 가지고있는 유일한 의견은 호텔이 언덕에 위치해 있으므로 짐을 매우 조심해야한다는 것입니다. 총체적으로, 나의 친구와 나는 호텔에서 우리 체재를 즐겼다. 방은 평평했지만 편안했습니다. 직원은 좋았다. 서비스는 인상적이었고, 위치는 좋았습니다. 지하철역과 여러 상점 근처였습니다.
ThailandExpatBangkok이 리뷰를 작성했습니다. 2018년 12월
Bangkok51 포스팅15개의 유용한 리뷰 평가
모든면에서 매우 좋습니다. 직원들이 기꺼이 열심히 노력합니다!
2018 년 11 월 초에 4 박 숙박했습니다. 인천 1 호선에서 KAL 리무진 버스 (110 분)를 타고 많은 수하물 / 밤 / 비가 오는 / 차가운 곳에서 노보텔 (로비에서 버스 정류장)에서 하차 한 후 택시 (2 분, 500) 강남 패밀리 호텔. 호텔 입구 옆의 미니 마트에서 스낵과 음료를 구입했습니다. . . . 밖에서 피크닉 테이블에 앉아서 토요일 저녁을 보았다. 체크인은 원활했고 스탭들은 열심히 도와주었습니다. 방은 "광고 된"것과 같이이었다. . . 얼룩없이 깨끗하게. 전자 화장실과 바닥 난방 제어 장치를 재미있게 배웠습니다. TV는 좋았어. 이중창은 거리의 소음을 차단했지만 신선한 공기를 마실 수 있도록 열었습니다. "부엌"에는 필요한 모든 것이 있었고 모든 것이 잘 작동했습니다. . . . . 다양한 표지판을 읽을 시간이 필요합니다. 환경 친화적 인 음식물 쓰레기 처리가 나를위한 첫 번째였습니다! 가사 직원이 도움이되었다. 영어는 부동산 전체에 걸쳐 매우 제한되어 있으므로 시간을 들여 서늘한 곳에 두십시오! 동쪽으로 약 300m 정도 걸 으면 다양한 먹는 곳을 발견 할 수 있습니다. 식료품 점에 대해서는 버거 킹 (Burger King) 북쪽으로 약 30m 정도 가십시오. . . 미니 마트보다 저렴합니다. 당신이 huff & puff (lugging groceries) 언덕을 등지고 싶지 않다면, 지하철역의 NW 쪽 에스컬레이터를 치고 가져 가라. .
Ayushi P이 리뷰를 작성했습니다. 2018년 8월
벵갈루루, 인도133 포스팅9개의 유용한 리뷰 평가
한국 최고의 호텔 접대
강남 패밀리 호텔은 서울의 번화 한 강남 지역에 위치하고 있습니다. 호텔은 신농회 (Sinnonhyeon) 및 강남 (Gangnam) 지하철역에서 걸어서 갈 수있는 거리에 있으며, 인근에서 쇼핑하고 먹을 수있는 수많은 장소가 있습니다. 저는 MBA 과정에서 International Immersion 모듈의 일환으로 2 주간 머물렀습니다. 객실은 아늑하고 편안하며 미니 주방, 냉장고, 전자 렌지 및 세탁기와 같은 모든 기본적인 시설을 갖추고 있습니다. 그러나이 시설들보다 한국에 대한 처녀 자리 방문은 매우 도움이 된 호텔 직원, 특히 호텔 매니저 인 Euness Ji 님께서 잊지 못할 추억이되었습니다. 언제나 우리 체류의 모든 측면이 돌봐.
jleung2213이 리뷰를 작성했습니다. 2018년 8월
앨버커키, 뉴멕시코65 포스팅16개의 유용한 리뷰 평가
가격을 꼭 평균. 그냥 오래된. 그러나, 호텔 직원들은 매우 친절하게 그들이 영어를 할 수 있었다.. 아침 식사는 아주 비싸고 호텔, 그들은 이교도여야 바로 옆에 많은 레스토랑이 있습니다. 편의점 아래층에 두 지하철 길 선.
dormy inn seoul hotel seoul, dormy hotel seoul
대한민국서울논현동 / 강남구 / 강남/논현/역삼
' ); return s.join ( '' ); }; return exports; }); require(['ta/p13n/placements'], function(placements) { var define = placements.define.bind(placements,'dual_search_dust','handlers',['deferred/lateHandlers','handlers']); /** * Private javascript for dual_search placement */ define(["placement", "lib/jquery-amd", "ta/Core/TA.Store", 'ta/Core/TA.Event', "typeahead/TypeAhead.views" /*this needs to be here when the placement is, even though we don't use it here */ ], function (placement, $, taStore, taEvent, typeAheadViews) { if (placement.params && 'typeahead_to_store' in placement.params) { var propertiesToStore = placement.params['typeahead_to_store']; if (propertiesToStore) { for (var property in propertiesToStore) { if (propertiesToStore.hasOwnProperty(property)) { taStore.store(property, propertiesToStore[property]); } } } } focusOnWrapperClick('GEO_SCOPE_CONTAINER', 'GEO_SCOPED_SEARCH_INPUT'); focusOnWrapperClick('MAIN_SEARCH_CONTAINER', 'mainSearch'); /** * allows to focus the corresponding input when its wrapper is clicked (wrapper is wider and taller than the input) */ function focusOnWrapperClick(wrapperId, inputId) { $('#' + wrapperId).on('click', function(e) { // If the click target is the input element, let the browser handle it, so we don't trigger focus twice. if ($(e.target).closest('#' + inputId).length == 0) { $('#' + inputId).focus(); } }); } var options = taStore.retrieve("typeahead_dual_search_options"); function _popAutoTooltip() { if (!options.autoTooltip || !taStore.retrieve("isFirstSessionPageView") || !window.require) { return; } var reqs = ['trjs!overlays/Overlay', 'trjs!overlays/position', 'trjs!overlays/styles/popover', 'trjs!overlays/options/maxWidth', 'trjs!overlays/options/repositionOnEvent' ]; require(reqs, function (Overlay, Position, Style, MaxWidth, Reposition) { var searchButton = document.getElementById("SEARCH_BUTTON"); var mixins = [ Position && Position['below'] && Position['below']([], false), Style && Style(searchButton, 'below', "dark small", " ", options.autoTooltip), MaxWidth && MaxWidth(220), Reposition && Reposition(window, "showingCookieConsentBanner") ]; var overlay = new Overlay(searchButton, mixins); if (overlay) { // pop tooltip immediately overlay.show() } }); } if (document.activeElement === $("#GEO_SCOPED_SEARCH_INPUT")[0]) { placement.require(["trjs!deferred/lateHandlers"], function (lh) { lh.whereFocused({type: "dummy"}, document.activeElement); }); } else if (document.activeElement === $("#mainSearch")[0]) { placement.require(["trjs!deferred/lateHandlers"], function (lh) { lh.whatFocused({type: "dummy"}, document.activeElement); }); } else if (options && options.autoTooltip) { taEvent.queueForLoad(_popAutoTooltip, "dual_search auto tooltip"); } return { getOptions: function () { return options; } }; }); }); define('calendars/CalendarDate', ['vanillajs'], function(vanilla) { 'use strict'; function CalendarDate(date) { date = date || new Date(); this.date = new Date(date.getFullYear(), date.getMonth(), date.getDate()); } CalendarDate.prototype = { constructor: CalendarDate, daysInMonth: function() { return new Date(this.year(), this.month() + 1, 0).getDate(); }, eachDayInMonth: function(callback) { for (var day = 1, days = this.daysInMonth(); day <= days; day++) { callback(new CalendarDate(new Date(this.year(), this.month(), day))); } }, thisMonth: function() { return new CalendarDate(new Date(this.year(), this.month(), 1)); }, nextMonth: function() { return this.relativeMonth(1); }, previousMonth: function() { return this.relativeMonth(-1); }, relativeMonth: function(delta) { return new CalendarDate(new Date(this.year(), this.month() + delta, 1)); }, relativeDay: function(delta) { return new CalendarDate(new Date(this.year(), this.month(), this.day() + delta)); }, firstOfMonth: function() { return new CalendarDate(new Date(this.year(), this.month(), 1)); }, lastOfMonth: function() { return new CalendarDate(new Date(this.year(), this.month(), this.daysInMonth())); }, year: function() { return this.date.getFullYear(); }, month: function() { return this.date.getMonth(); }, day: function() { return this.date.getDate(); }, dayOfWeek: function() { return this.date.getDay(); }, firstDayOfMonth: function() { return new Date(this.year(), this.month(), 1).getDay(); }, inRange: function(startDate, endDate) { if (!startDate || !endDate) { return false; } return this.compare(startDate) > 0 && this.compare(endDate) < 0; }, compare: function(other) { var toCompare = ['getFullYear', 'getMonth', 'getDate'] , current ; for (var i = 0, len = toCompare.length; i < len; i++) { current = toCompare[i]; if (this.date[current]() < other.date[current]()) { return -1; } if (this.date[current]() > other.date[current]()) { return 1; } } return 0; }, daysTo: function(other) { return Math.ceil((other.date.getTime() - this.date.getTime()) / (1000 * 60 * 60 * 24)); }, toISOString: function() { return this.date.toISOString().split("T")[0]; }, toString: function() { return this.year() + '-' + this.month() + '-' + this.day(); } }; CalendarDate.fromString = function(string) { var dateComponents = string.split('-'); return new CalendarDate(new Date(dateComponents[0], dateComponents[1], dateComponents[2])); }; return CalendarDate; });define('mixins/page-dates/DateTypeStore', ['vanillajs', 'ta/Core/TA.Store', 'calendars/CalendarDate', 'mixins/page-dates/Utils'], function(vanilla, taStore, CalendarDate, DateUtils) { 'use strict'; var PREFIX = "zu"; var DateTypeStore = { CHECKIN: { queryString: null, pathString: null }, CHECKOUT: { queryString: null, pathString: null }, STAYDATES: { children: ['CHECKIN', 'CHECKOUT'], queryString: 'staydates', pathString: PREFIX + 's' }, EATERY: { queryString: 'eaterydate', pathString: PREFIX + 'r' }, DEPARTURE: { queryString: null, pathString: null }, RETURN: { queryString: null, pathString: null }, ROUNDTRIP: { children: ['DEPARTURE', 'RETURN'], queryString: 'rtdates', pathString: PREFIX + 't' }, ONEWAYFLIGHT: { queryString: 'oneway', pathString: PREFIX + 'o' }, LEG_1: { queryString: 'leg1date', pathString: PREFIX + '1' }, LEG_2: { queryString: 'leg2date', pathString: PREFIX + '2' }, LEG_3: { queryString: 'leg3date', pathString: PREFIX + '3' }, ATTRACTION: { queryString: 'attrdate', pathString: PREFIX + 'a' }, ATTRACTION_FROM: { queryString: null, pathString: null }, ATTRACTION_TO: { queryString: null, pathString: null }, ATTRACTIONRANGE: { children: ['ATTRACTION_FROM', 'ATTRACTION_TO'], queryString: 'attrrange', pathString: PREFIX + 'e' }, VPDATES: { children: ['VPDEPARTURE', 'VPRETURN'], queryString: 'vpdates', pathString: null }, VPDEPARTURE: { queryString: null, pathString: null }, VPRETURN: { queryString: null, pathString: null } }; DateTypeStore.getStartDateType = function(dateType) { var parents = _getParentTypes(dateType); if(parents.length==0) { var children = DateTypeStore[dateType].children; if (children && children.length > 0) { return children[0]; } return dateType; } return DateTypeStore[parents[0]].children[0]; }; DateTypeStore.getEndDateType = function(dateType) { var parents = _getParentTypes(dateType); if(parents.length==0) { var children = DateTypeStore[dateType].children; if (children && children.length > 0) { return children[children.length - 1]; } return dateType; } var parentType = DateTypeStore[parents[0]]; return parentType.children[parentType.children.length - 1]; }; function _getParentTypes(childType) { var parents = []; for (var type in DateTypeStore) { if (!DateTypeStore.hasOwnProperty(type)) { continue; } if (DateTypeStore[type].children && DateTypeStore[type].children.indexOf(childType) >= 0) { parents.push(type); } } return parents; } function _getCalendarDate(dateType) { var dates = ta.page.getDates(dateType); return dates && dates[0] ? new CalendarDate(dates[0]) : null; } DateTypeStore.isChildDateType = function(dateType) { return _getParentTypes(dateType).length > 0; }; DateTypeStore.isSingleDateType = function(dateType) { var type = DateTypeStore[dateType]; return !DateTypeStore.isChildDateType(dateType) && !(type && type.children && type.children.length > 0); }; DateTypeStore.getParents = _getParentTypes; DateTypeStore.isHotelDateType = function(dateType) { return _getParentTypes(dateType).indexOf('STAYDATES') >= 0; }; DateTypeStore.isRoundTripDateType = function(dateType) { return _getParentTypes(dateType).indexOf('ROUNDTRIP') >= 0; }; DateTypeStore.isAttractionRangeDateType = function(dateType) { return _getParentTypes(dateType).indexOf('ATTRACTIONRANGE') >= 0; }; DateTypeStore.isVacationPackagesDateType = function(dateType) { return _getParentTypes(dateType).indexOf('VPDATES') >= 0; }; DateTypeStore.allowsSameDayRange = function(dateType) { return DateTypeStore.isAttractionRangeDateType(dateType) || DateTypeStore.isRoundTripDateType(dateType); }; DateTypeStore.isMultiCityDateType = function(dateType) { return dateType == 'LEG_1' || dateType == 'LEG_2' || dateType == 'LEG_3'; }; DateTypeStore.isStartDateType = function(dateType) { var parents = _getParentTypes(dateType); if (parents.length == 0) return false; return DateTypeStore[parents[0]].children.indexOf(dateType) == 0; }; DateTypeStore.isEndDateType = function(dateType) { var parents = _getParentTypes(dateType); if(parents.length==0) return false; var parentType = DateTypeStore[parents[0]]; return parentType.children.indexOf(dateType) == parentType.children.length - 1; }; DateTypeStore.getStartDate = function(dateType) { var startType = DateTypeStore.getStartDateType(dateType); if(startType == null) { return ta.page.getDates(dateType)[0]; } return ta.page.getDates(startType)[0]; }; DateTypeStore.getEndDate = function(dateType) { var endType = DateTypeStore.getEndDateType(dateType); if(endType == null) { return ta.page.getDates(dateType)[0]; } return ta.page.getDates(endType)[0]; }; DateTypeStore.getMinEnabledDate = function(dateType) { if (DateTypeStore.isHotelDateType(dateType) || DateTypeStore.isRoundTripDateType(dateType)) { var minCheckInDate = taStore.retrieve('multiDP.minCheckInDate'); if (minCheckInDate) { return new CalendarDate(DateUtils.fromString(minCheckInDate)); } } else if (dateType == 'LEG_1') { return _getCalendarDate('ONEWAYFLIGHT'); } else if (dateType == 'LEG_2') { return _getCalendarDate('LEG_1') || _getCalendarDate('ONEWAYFLIGHT'); } else if (dateType == 'LEG_3') { return _getCalendarDate('LEG_2') || _getCalendarDate('LEG_1') || _getCalendarDate('ONEWAYFLIGHT'); } else if (dateType == 'ATTRACTION_TO') { return _getCalendarDate('ATTRACTION_FROM'); } return null; }; DateTypeStore.flattenType = function(dateType) { var type = DateTypeStore[dateType]; if (!type) { return []; } if (!type.children) { return [dateType]; } return type.children.slice(0); }; DateTypeStore.getCorrespondingDateType = function(dateType) { switch(dateType) { case 'CHECKIN': return 'CHECKOUT'; case 'CHECKOUT': return 'CHECKIN'; case 'DEPARTURE': return 'RETURN'; case 'RETURN': return 'DEPARTURE'; case 'ATTRACTION_FROM': return 'ATTRACTION_TO'; case 'ATTRACTION_TO': return 'ATTRACTION_FROM'; case 'VPDEPARTURE': return 'VPRETURN'; case 'VPRETURN': return 'VPDEPARTURE'; default: return null; } }; return DateTypeStore; }); define('mixins/page-dates/picker-autoadvance-utils', [], function() { var exports = {}; exports.keepOverlayOpenOnSelection = function(target) { var overlayElmts = document.querySelectorAll(".ui_overlay"); for (var i = 0; i < overlayElmts.length; i++) { var overlayObj = overlayElmts[i].overlay; var source = overlayObj && overlayObj.sourceElement; if (source === target) { overlayObj.dontHideOnSelection = true; break; } } }; return exports; }); define('mixins/page-dates/picker-autoadvance', [ 'mixins/page-dates/DateTypeStore', 'mixins/page-dates/picker-autoadvance-utils', 'utils/domUtils' ], function( DateType, autoadvanceUtils, domUtils ) { 'use strict'; var _advancedToType = null; function apply(parentElement, autofillMissingDates, alwaysAdvanceFromStartDate) { var taPage = ta.page; taPage && taPage.on('dateSelected', function selected(target, dateType, date) { if (!domUtils.isOrContainsElement(document.body, parentElement)) { taPage.off('dateSelected', selected); return; } if (!target) { return; } if (!domUtils.isOrContainsElement(parentElement, target)) { return; } var otherType = DateType.getCorrespondingDateType(dateType); if (!otherType) { return; } var isStartDate = DateType.isStartDateType(dateType); var shouldAutoAdvance = !taPage.hasDates(otherType) || (alwaysAdvanceFromStartDate && isStartDate && dateType !== _advancedToType); if (shouldAutoAdvance) { if (autofillMissingDates && !taPage.hasDates(otherType) && Array.isArray(date)) { var autoDate = new Date(date[0].getFullYear(), date[0].getMonth(), date[0].getDate() + (isStartDate ? 1 : -1)); taPage.pushDates(null, otherType, [autoDate]); } var otherPicker = parentElement.querySelector('[data-datetype="' + otherType + '"]'); if (otherPicker) { _advancedToType = otherType; autoadvanceUtils.keepOverlayOpenOnSelection(target); setTimeout(taPage.gatherDates.bind(taPage, otherPicker)); } } }); } return { apply: apply }; }); define('mixins/page-dates/pop-calendar', [ 'ta', 'common/trackingStreams', 'common/Radio', 'ta/support/Qualtrics', 'ta/Core/TA.Store', 'ta/Core/TA.LocalStorage', 'ta/util/SessionStorage', 'utils/responsive'], function(ta, trackingStreams, radio, taQualtrics, taStore, LocalStorage, sessionStorage, responsive) { var KEY_POP_CALENDAR_DISMISSED = "pop-calendar-dismissed"; var _popFromDefault = false , _popFromVisibleOnly = false , _popFromVisibleOnlyBreakpoint = "" , _datesWereDefaulted = false , _qualtricsSurveyEnabled = false , _hasMetaMarketingDefaultDates = false , _popCalendarType = '' , _isDetailPage = false , _hasPopped = false , _isShowing = false , _isVacationPackage = false ; function _datepickerClosed() { _isShowing = false; } function init(options) { _popFromDefault = !!options.popFromDefault; _popFromVisibleOnly = !!options.popFromVisibleOnly; _popFromVisibleOnlyBreakpoint = options.popFromVisibleOnlyBreakpoint; _datesWereDefaulted = !!options.datesWereDefaulted; _popCalendarType = options.popCalendarType; _hasMetaMarketingDefaultDates = !!options.hasMetaMarketingDefaultDates; _qualtricsSurveyEnabled = !!options.qualtricsSurveyEnabled; _isDetailPage = !!options.isDetailPage; _isVacationPackage = window.pageServlet === "Vacation_Packages"; ta.page.on('datepickerRejected', _datepickerClosed); ta.page.on('dateSelected', _datepickerClosed); } function shouldPop(datePickerElement) { if (LocalStorage.enabled && LocalStorage.get('popCalendarAfterRedirectedFromIB')) { LocalStorage.remove('popCalendarAfterRedirectedFromIB'); return true; } if (!_datesWereDefaulted || _hasPopped){ return false; } if (taStore.retrieve('suppressCalendarPop')) { return false; } if (!_popCalendarType) { return false; } if (_qualtricsSurveyEnabled && (taQualtrics && (taQualtrics.canDisplay() || taQualtrics.seenThisPageView()))) { if (require.defined('page-model')) { if (require('page-model').isMobile) { return false; } } else { return false; } } if(datePickerElement && _popFromVisibleOnly && (!_popFromVisibleOnlyBreakpoint || responsive.is(_popFromVisibleOnlyBreakpoint, true, false)()) && !_isInViewport(datePickerElement)) { return false; } switch (_popCalendarType) { case "doNot": return false; case "untilClosedPerServletType": return !_getDismissedThisSessionThisServletType(); case "untilClosed": return !_getDismissedThisSession(); case "always": return true; default: break; } return _popFromDefault && _datesWereDefaulted; } function _getDismissedThisSession() { return sessionStorage.canUseSessionStore() && !!sessionStorage.getObject(KEY_POP_CALENDAR_DISMISSED); } function _getDismissedThisSessionThisServletType() { var store = sessionStorage.canUseSessionStore() && sessionStorage.getObject(KEY_POP_CALENDAR_DISMISSED); return store && !!store[_isVacationPackage ? "vp" : _isDetailPage ? "detail" : "list"]; } function _setDismissedThisSession() { if (sessionStorage.canUseSessionStore()) { var store = sessionStorage.getObject(KEY_POP_CALENDAR_DISMISSED) || {}; store[_isVacationPackage ? "vp" : _isDetailPage ? "detail" : "list"] = true; sessionStorage.setObject("pop-calendar-dismissed", store); radio('pop-calendar').emit('dismissed'); } } function _isInViewport(elem) { var bounding = elem.getBoundingClientRect(); return ( bounding.top >= 0 && bounding.left >= 0 && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) && bounding.right <= (window.innerWidth || document.documentElement.clientWidth) ); } function shouldPopMetaMarketing() { return _hasMetaMarketingDefaultDates; } function popCalendar(datePickerElement) { _isShowing = true; ta.page.gatherDates(datePickerElement); _hasPopped = true; trackingStreams.trackEvent("DATEPICKER", "auto-popped-calendar-shown", window.pageServlet); trackingStreams.trackEvent('calendar', 'in_view', 'autopop'); } function wasPoppedThisPageLoad() { return _hasPopped; } function isShowing() { return _isShowing; } function setUserEnteredDates() { _datesWereDefaulted = false; } return { init: init, shouldPop: shouldPop, shouldPopMetaMarketing: shouldPopMetaMarketing, popCalendar: popCalendar, wasPoppedThisPageLoad: wasPoppedThisPageLoad, isShowing: isShowing, setUserEnteredDates: setUserEnteredDates, setDismissedThisSession: _setDismissedThisSession }; }); define( 'mixins/page-dates/default-dates', [ 'ta', 'mixins/mixin', 'mixins/Events', 'mixins/page-dates/pop-calendar', 'mixins/page-dates/DateTypeStore', 'common/trackingStreams', 'vanillajs', 'ta/Core/TA.Event' ], function( ta, mixin, Events, PopCalendar, DateTypeStore, trackingStreams, vanillajs, taEvent ) { 'use strict'; var _currentCheckin , _currentCheckout , _datesWereDefaulted = false , _refreshLocalStorage = false , _localStorageTTL = 0 , _initComplete = false ; var HOTEL_DATE_TYPES = { beginType: 'CHECKIN', endType: 'CHECKOUT', range: 'STAYDATES' }; var ATTRACTION_DATE_TYPES = { beginType: 'ATTRACTION_FROM', endType: 'ATTRACTION_TO', range: 'ATTRACTIONRANGE' }; function init(options) { PopCalendar.init(options); _datesWereDefaulted = !!options.datesWereDefaulted; _refreshLocalStorage = !!options.refreshLocalStorage; _localStorageTTL = options.localStorageTTL; _initComplete = true; exports.emit("init"); } function onInit(callback) { if (typeof callback !== "function") { return; } if (_initComplete) { callback(); } else { exports.on("init", callback); } } function apply(parentElement, suppressAutoPop, rangeDatesTypeOverride) { var rangeDatesType = rangeDatesTypeOverride ? rangeDatesTypeOverride : 'STAYDATES'; if (!ta.page.usingUnifiedDates) { return; } if (!ta.page.hasDates(rangeDatesType)) { ta.page.clearDates(rangeDatesType); } _currentCheckin = ta.page.getDates(DateTypeStore.getStartDateType(rangeDatesType))[0]; _currentCheckout = ta.page.getDates(DateTypeStore.getEndDateType(rangeDatesType))[0]; var datePickerElement = parentElement.querySelector('[data-datetype="'+DateTypeStore.getStartDateType(rangeDatesType)+'"]'); ta.page.on('dateSelected', function handler(target, dateType, date) { var trackingEvent, hadDates = _currentCheckin && _currentCheckout, newCheckin = ta.page.getDates(rangeDatesType)[0], newCheckout = ta.page.getDates(rangeDatesType)[1]; if (parentElement.contains(target)) { if (!hadDates && ta.page.hasDates(rangeDatesType)) { trackingEvent = "undated_to_manually_dated"; } else if (newCheckin != _currentCheckin || newCheckout != _currentCheckout) { PopCalendar.setUserEnteredDates(); ta.page.off('datepickerRejected', _onDatepickerRejected); if (_datesWereDefaulted) { trackingEvent = "default_dated_to_manually_dated"; _datesWereDefaulted = false; } else { trackingEvent = "manually_dated_to_manually_dated"; } } _currentCheckin = newCheckin; _currentCheckout = newCheckout; if (trackingEvent) { var pickerLoc = ''; if (target && target.getAttribute('data-picker-location')) { pickerLoc = target.getAttribute('data-picker-location'); if (document.querySelector('#PERSISTENT_TRIP_SEARCH_BAR.fixed')) { pickerLoc += '_persistent'; } } trackingStreams.trackEvent("DATEPICKER", trackingEvent, pickerLoc); } } }); function _onDatepickerRejected(elmt) { if (PopCalendar.wasPoppedThisPageLoad()) { exports.emit('poppedCalendarDismissed', elmt); PopCalendar.setDismissedThisSession(); ta.page.off('datepickerRejected', _onDatepickerRejected); } } function load() { if (!datePickerElement) { return; } if (_datesWereDefaulted) { trackingStreams.trackEvent("DATEPICKER", "undated_to_default_dated"); } if (!suppressAutoPop) { var shouldPopFromDefault = PopCalendar.shouldPop(datePickerElement); if (shouldPopFromDefault || PopCalendar.shouldPopMetaMarketing()) { shouldPopFromDefault && exports.emit('popFromDefault'); ta.page.on('datepickerRejected', _onDatepickerRejected); PopCalendar.popCalendar(datePickerElement); } } } if (document.readyState === 'loading') { window.addEventListener('DOMContentLoaded', load); } else { load(); } taEvent.on('specialOfferClosed', function(){ if (!suppressAutoPop){ if (datePickerElement && PopCalendar.shouldPop(datePickerElement)){ PopCalendar.popCalendar(datePickerElement); } } }); } var exports = { init: init, onInit: onInit, apply: apply, usingDefaults: function() { return _datesWereDefaulted; }, shouldRefreshLocalStorage: function() { return _refreshLocalStorage; }, getLocalStorageTTL: function() { return _localStorageTTL; } }; return mixin(exports, new Events('popFromDefault')); }); require(['ta/prwidgets'], function(widgets) { var define = widgets.define.bind(widgets,'datepickers_desktop_horizontal_styleguide_icon','handlers',['handlers']); define(['widget', 'vanillajs', 'api-mod', 'ta/Core/TA.Event', 'mixins/page-dates/picker-autoadvance', 'mixins/page-dates/default-dates'], function(widget, vanilla, api, taEvent, pickerAutoadvance, DefaultDates) { 'use strict'; var _checkinElement = api.find('[data-datetype=CHECKIN]', widget.element) , _checkoutElement = api.find('[data-datetype=CHECKOUT]', widget.element) ; function _setDateLabel(target, date) { var label; var dateFormat = target.getAttribute('data-dateFormat'); if (!date) { label = target.getAttribute('data-emptyText'); } else { label = ta.i18n.formatDate(dateFormat, date); } api.find('.picker-inner .picker-label', target).firstChild.nodeValue = label; /* HOT-4599 */ } function _onDateSelected(target, dateType, date) { // Clean up if the widget is no longer in the document. if (!api.inDocument(widget.element)) { ta.page.removeListener('dateSelected', _onDateSelected); _checkinElement = null; _checkoutElement = null; return; } if (dateType === 'CHECKIN') { _setDateLabel(_checkinElement, date[0]); } else if (dateType === 'CHECKOUT') { _setDateLabel(_checkoutElement, date[0]); } else if (dateType === 'STAYDATES') { _setDateLabel(_checkinElement, date[0]); _setDateLabel(_checkoutElement, date[1]); } } /* HOT-8985 */ function _onDatePickerClick(elmt, defer_search) { if (!elmt) { return; } var calendarFlyout = elmt.getParent(".calendarFlyout"); if (calendarFlyout) { var deferred = calendarFlyout.deferred, // arbitrary property, set in DesktopStayDate. calendarWrapper = calendarFlyout.getElement('.calendarWrapper'); if (deferred && calendarWrapper) { deferred.reject(); ta.page.gatherDates(elmt, calendarWrapper, defer_search); return; } } ta.page.gatherDates(elmt, null, defer_search); } taEvent.queueForLoad(function() { ta.page.on('dateSelected', _onDateSelected); pickerAutoadvance.apply(widget.element); DefaultDates.apply(widget.element); }, 'datepicker widget handlers'); return { onDatePickerClick: _onDatePickerClick }; }); });require(['ta/p13n/placements','ta/page','$prp/resp_hr_ad_wrapper/handlers'], function(placements, impl) { window.ta.plc_resp_hr_ad_wrapper_upper_block_0_handlers = placements.load('resp_hr_ad_wrapper','handlers.js', { 'name': 'resp_hr_ad_wrapper:upper_block', 'occurrence': 0, 'id': 'taplc_resp_hr_ad_wrapper_upper_block_0', 'location_id': 569419, 'servletClass': 'com.TripResearch.servlet.hotels.hotelreview.HotelReviewServlet', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {"contentUpdatedEvent":"reviewListUpdated","bumpDownForSocial":"true"}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/resp_hr_ad_wrapper/handlers'], function(placements, impl) { window.ta.plc_resp_hr_ad_wrapper_lower_block_0_handlers = placements.load('resp_hr_ad_wrapper','handlers.js', { 'name': 'resp_hr_ad_wrapper:lower_block', 'occurrence': 0, 'id': 'taplc_resp_hr_ad_wrapper_lower_block_0', 'location_id': 569419, 'servletClass': 'com.TripResearch.servlet.hotels.hotelreview.HotelReviewServlet', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {"contentUpdatedEvent":"qaListUpdated"}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/footer_banner_ad_billboard/handlers'], function(placements, impl) { window.ta.plc_footer_banner_ad_billboard_hotel_review_resp_0_handlers = placements.load('footer_banner_ad_billboard','handlers.es6', { 'name': 'footer_banner_ad_billboard:hotel_review_resp', 'occurrence': 0, 'id': 'taplc_footer_banner_ad_billboard_hotel_review_resp_0', 'location_id': 569419, 'servletClass': 'com.TripResearch.servlet.hotels.hotelreview.HotelReviewServlet', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {"footer_banner_ad_style":"billboardAd"}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/unsupported_browser_messaging/handlers'], function(placements, impl) { window.ta.plc_unsupported_browser_messaging_0_handlers = placements.load('unsupported_browser_messaging','handlers.js', { 'name': 'unsupported_browser_messaging', 'occurrence': 0, 'id': 'taplc_unsupported_browser_messaging_0', 'location_id': 569419, 'servletClass': 'com.TripResearch.servlet.hotels.hotelreview.HotelReviewServlet', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/facebook_autologin/handlers'], function(placements, impl) { window.ta.plc_facebook_autologin_0_handlers = placements.load('facebook_autologin','handlers.js', { 'name': 'facebook_autologin', 'occurrence': 0, 'id': 'taplc_facebook_autologin_0', 'location_id': 569419, 'servletClass': 'com.TripResearch.servlet.hotels.hotelreview.HotelReviewServlet', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/global_nav/handlers'], function(placements, impl) { window.ta.plc_global_nav_0_handlers = placements.load('global_nav','handlers.js', { 'name': 'global_nav', 'occurrence': 0, 'id': 'taplc_global_nav_0', 'location_id': 569419, 'servletClass': 'com.TripResearch.servlet.hotels.hotelreview.HotelReviewServlet', 'servletName': 'Hotel_Review', 'modules': ["deferred/lateHandlers","handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/global_nav_links/handlers'], function(placements, impl) { window.ta.plc_global_nav_links_0_handlers = placements.load('global_nav_links','handlers.js', { 'name': 'global_nav_links', 'occurrence': 0, 'id': 'taplc_global_nav_links_0', 'location_id': 569419, 'servletClass': 'com.TripResearch.servlet.hotels.hotelreview.HotelReviewServlet', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {"geopillOnHome":false}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/global_nav_dropdowns/handlers'], function(placements, impl) { window.ta.plc_global_nav_dropdowns_0_handlers = placements.load('global_nav_dropdowns','handlers.js', { 'name': 'global_nav_dropdowns', 'occurrence': 0, 'id': 'taplc_global_nav_dropdowns_0', 'location_id': 569419, 'servletClass': 'com.TripResearch.servlet.hotels.hotelreview.HotelReviewServlet', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/global_nav_action_inbox/handlers'], function(placements, impl) { window.ta.plc_global_nav_action_inbox_empty_0_handlers = placements.load('global_nav_action_inbox','handlers.js', { 'name': 'global_nav_action_inbox:empty', 'occurrence': 0, 'id': 'taplc_global_nav_action_inbox_empty_0', 'location_id': 569419, 'servletClass': 'com.TripResearch.servlet.hotels.hotelreview.HotelReviewServlet', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/masthead_search/handlers'], function(placements, impl) { window.ta.plc_masthead_search_empty_0_handlers = placements.load('masthead_search','handlers.js', { 'name': 'masthead_search:empty', 'occurrence': 0, 'id': 'taplc_masthead_search_empty_0', 'location_id': 569419, 'servletClass': 'com.TripResearch.servlet.hotels.hotelreview.HotelReviewServlet', 'servletName': 'Hotel_Review', 'modules': ["deferred/lateHandlers","handlers"], 'params': {"typeahead_to_store":{"typeahead_new_location_label":"새 위치","typeahead.aliases.flight_reviews":["비행 리뷰","항공사 리뷰"],"typeahead_throttle_requests":"true","typeahead.aliases.rental_cars":["렌터카","자동차 렌트"],"typeahead_cruise_ships_enabled":"true","typeahead.aliases.activities":["투어 및 티켓","투어 및 티켓"],"typeahead.aliases.things_to_do":["즐길거리","오락시설","관광명소","액티비티","즐길거리","관광","Sights","관광명소","액티비티","관광명소","볼거리","여행지","관광명소","최고의 관광명소","최고의 즐길거리","최고의 관광명소","최고의 관광","인기 관광명소","인기 즐길거리","인기 관광명소","인기 관광","관광명소 Top 10","즐길거리 Top 10","관광명소 Top 10","관광 Top 10"],"typeahead.enable_nearby":true,"typeahead_cruise_cruiselines_enabled":"false","typeahead_divClasses":null,"typeahead.scoped.cur_loc_denied":"트립어드바이저가 회원님의 위치에 접근이 거부되었습니다.브라우저와 트립어드바이저에게 접근 권한을 부여하고 다시 시도해주세요.","typeahead.scoped.cur_loc":"주변","typeahead.aliases.travel_forums":["포럼","포럼","트래블 포럼","여행 포럼"],"typeahead.aliases.travel_guides":["가이드","여행지 가이드"],"typeahead.aliases.vacation_rentals":["베케이션 렌탈","베케이션 렌탈","Airbnb","홀리데이 렌탈","홀리데이 렌탈"],"typeahead.aliases.flights":["항공권","항공권","항공편","도착지","직항편","비지니스 클래스 항공권","귀국 항공권","항공사 항공권","항공편","저가 항공권","출발지","최저가 항공권","항공편만","편도 항공권","직항편","국내선 항공권","항공 요금","행 저가 항공","행 항공편","행 항공사 항공편","행 비지니스 클래스 항공권","행 최저가 항공권","행 직항편","행 국내선 항공편","행 직항편","행 편도 항공편","항공 요금","항공권","항공권","행 항공 요금","행 항공 요금","행 항공권","행 항공권"],"typeahead_moved_label":"장소 이전","typeahead_dual_search_options":{"geoID":294197,"bypassSearch":true,"staticTypeAheadOptions":{"minChars":3,"defaultValue":"검색","injectNewLocation":true,"typeahead1_5":true,"geoBoostFix":true},"debug":false,"navSearchTypeAheadEnabled":true,"isMobileWeb":false,"geoInfo":{"geoId":294197,"geoName":"서울","parentName":"대한민국","shortParentName":"대한민국","categories":{"GEO":{"url":"/Tourism-g294197-Seoul-Vacations.html"},"HOTEL":{"url":"/Hotels-g294197-Seoul-Hotels.html"},"ATTRACTION":{"url":"/Attractions-g294197-Activities-Seoul.html"},"EATERY":{"url":"/Restaurants-g294197-Seoul.html"},"FLIGHTS_TO":{"url":"/Flights-g294197-Seoul-Cheap_Discount_Airfares.html"},"CAR_RENTAL_OFFICE":{"url":"/RentalCars_Review?detail=294197"}}}},"typeahead_closed_label":"운영 종료","typeahead.scoped.all_of_trip":"전 세계","typeahead_attraction_activity_search":"false","typeahead.aliases.hotels":["호텔","호텔","숙소","숙박시설","숙박시설","숙박시설","숙박","호텔 리뷰","호텔 및 모텔","최고의 호텔","최고의 숙박시설","최고의 숙박시설","최고의 호텔 및 모텔","숙박시설","숙박시설","인기 호텔","인기 숙박시설","인기 숙박시설","인기 호텔 및 모텔","호텔 Top 10","숙박시설 Top 10","숙박시설 Top 10","호텔 및 모텔 Top 10"],"typeahead.aliases.restaurants":["음식","음식점","먹거리","다이닝","음식점","맛집","음식점","먹거리","음식점","음식","최고의 음식점","최고의 음식점","최고의 음식","최고의 음식점","인기 음식점","인기 음식점","인기 음식","인기 음식점","음식점 Top 10","음식점 Top 10","음식 Top 10","음식점 Top 10"],"typeahead.searchMore.v2":"\"%\"검색","typeahead.searchSessionId":"0ECBDDD45FE26F3ECDA266476B285CC71590631083440ssid"}}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/browser_mode_tracking/handlers'], function(placements, impl) { window.ta.plc_browser_mode_tracking_0_handlers = placements.load('browser_mode_tracking','handlers.js', { 'name': 'browser_mode_tracking', 'occurrence': 0, 'id': 'taplc_browser_mode_tracking_0', 'location_id': 569419, 'servletClass': 'com.TripResearch.servlet.hotels.hotelreview.HotelReviewServlet', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/qualtrics_survey/handlers'], function(placements, impl) { window.ta.plc_qualtrics_survey_0_handlers = placements.load('qualtrics_survey','handlers.js', { 'name': 'qualtrics_survey', 'occurrence': 0, 'id': 'taplc_qualtrics_survey_0', 'location_id': 569419, 'servletClass': 'com.TripResearch.servlet.hotels.hotelreview.HotelReviewServlet', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/meta_click_tracker/handlers'], function(placements, impl) { window.ta.plc_meta_click_tracker_0_handlers = placements.load('meta_click_tracker','handlers.js', { 'name': 'meta_click_tracker', 'occurrence': 0, 'id': 'taplc_meta_click_tracker_0', 'location_id': 569419, 'servletClass': 'com.TripResearch.servlet.hotels.hotelreview.HotelReviewServlet', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/masthead_h1/handlers'], function(placements, impl) { window.ta.plc_masthead_h1_hr_resp_0_handlers = placements.load('masthead_h1','handlers.js', { 'name': 'masthead_h1:hr_resp', 'occurrence': 0, 'id': 'taplc_masthead_h1_hr_resp_0', 'location_id': 569419, 'servletClass': 'com.TripResearch.servlet.hotels.hotelreview.HotelReviewServlet', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/p13n/placements','ta/page','$prp/trip_planner_breadcrumbs/handlers'], function(placements, impl) { window.ta.plc_trip_planner_breadcrumbs_0_handlers = placements.load('trip_planner_breadcrumbs','handlers.js', { 'name': 'trip_planner_breadcrumbs', 'occurrence': 0, 'id': 'taplc_trip_planner_breadcrumbs_0', 'location_id': 569419, 'servletClass': 'com.TripResearch.servlet.hotels.hotelreview.HotelReviewServlet', 'servletName': 'Hotel_Review', 'modules': ["handlers"], 'params': {}, 'data': {}});}); require(['ta/prwidgets', 'ta/page'], function(prwidgets) { prwidgets.initWidgets(document); });