CINXE.COM

Trusted websites

<style> .analytics-header-click { cursor: pointer; } .analytics-footer-click { cursor: pointer; } </style> <link rel="icon" href="/etc/designs/tihV2/static/components/tih-base/favicon-16x16.png" type="image/x-icon"> <!-- INACTIVE SESSION MODAL --> <div class="modal fade" style="display:none;" id="inactiveSessionModal" tabindex="-1" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false"> <div class="modal-dialog modal-dialog-centered modal-lg rounded-4 is-borderless"> <div class="modal-content"> <button type="button" class="btn-close floating-btn" data-bs-dismiss="modal" aria-label="Close"> <i class="bi bi-x-lg"></i> </button> <div class="modal-body text-center"> <div class="modal-body text-center"> <h4 id="inactiveSessionModalContent"></h4> </div> </div> </div> </div> </div> <script> function showErrorInModal() { document.getElementById('inactiveSessionModalContent').textContent = 'Error: Inactive Session'; } function escapeHTML(str) { return str.replace(/[&<>'"]/g, function(tag) { const charsToReplace = { '&': '&amp;', '<': '&lt;', '>': '&gt;', "'": '&#39;', '"': '&quot;' }; return charsToReplace[tag] || tag; }); } </script> <!-- Utility functions ================================================== --> <script nonce="n2ix81kaxuda" type="text/javascript"> function parseScript(inputJson){ var jsonString = JSON.stringify(inputJson); jsonString = jsonString.replace(/</g,'&lt;'); jsonString = jsonString.replace(/>/g,'&gt;'); return JSON.parse(jsonString); } function getArrayListString(arrayList) { if(Array.isArray(arrayList)){ return arrayList.join(); } return [].join(); } </script> <!-- MEDIA UTILITY FUNCTIONS ================================================== --> <script nonce="n2ix81kaxuda" type="text/javascript"> var MEDIA_UTIL = (function(){ return { "onSuccessfulImageLoad": function(target) { }, "onErrorMediaLoad": function(target,defaultMediaURL) { $(target).attr("src", defaultMediaURL); $(target).attr("onerror", null); }, "onErrorImageLoad": function(target) { $(target).attr("src", "/etc/designs/tihV2/static/common/images/default-image.png"); $(target).attr("onerror", null); } } })(); </script> <!-- PAGINATION UTILITY FUNCTIONS ================================================== --> <script nonce="n2ix81kaxuda" type="text/javascript"> var PAGINATION_UTIL = (function() { return { "generatePaginationHTML": function(totalRecords, pageLimit, page) { var totalPages = Math.ceil(totalRecords / pageLimit); var pagination = ""; if (page == 1) { pagination += "<li class='page-item disabled'>"; pagination += "<a class='page-link' href='#/' aria-label='Previous'>"; pagination += "<i class='fa-solid fa-chevron-left'>"; pagination += "</i>"; pagination += "</a>"; pagination += "</li>"; } else { pagination += "<li class='page-item'>"; pagination += "<a class='page-link paginationPage analytics-pagination-click' analytics-pagination-name='Page " + (page - 1) + "' href='#/' aria-label='Previous'>"; pagination += "<input type='hidden' value='" + (page - 1) + "'>"; pagination += "<i class='fa-solid fa-chevron-left'>"; pagination += "</i>"; pagination += "</a>"; pagination += "</li>"; } if (page <= 3) { for (var i = 1; i <= page; i++) { if (i == page) { pagination += "<li class='page-item active'>"; pagination += "<a class='page-link' href='#/'>"; } else { pagination += "<li class='page-item'>"; pagination += "<a class='page-link paginationPage analytics-pagination-click' analytics-pagination-name='Page " + i + "' href='#/'>"; } pagination += "<input type='hidden' value='" + i + "'>"; pagination += i; pagination += "</a>"; pagination += "</li>"; } } else { pagination += "<li class='page-item'>"; pagination += "<a class='page-link paginationPage analytics-pagination-click' analytics-pagination-name='Page 1' href='#/'>"; pagination += "<input type='hidden' value='1'>"; pagination += 1; pagination += "</a>"; pagination += "</li>"; pagination += "<li class='page-item'>"; pagination += "<span>&hellip;</span>"; pagination += "</li>"; pagination += "<li class='page-item'>"; pagination += "<a class='page-link paginationPage analytics-pagination-click' analytics-pagination-name='Page " + (page - 1) + "' href='#/'>"; pagination += "<input type='hidden' value='" + (page - 1) + "'>"; pagination += (page - 1); pagination += "</a>"; pagination += "</li>"; pagination += "<li class='page-item active'>"; pagination += "<a class='page-link' href='#/'>"; pagination += "<input type='hidden' value='" + page + "'>"; pagination += page; pagination += "</a>"; pagination += "</li>"; } if (page == totalPages) { pagination += "<li class='page-item disabled'>"; pagination += "<a class='page-link' href='#/' aria-label='Next'>"; pagination += "<i class='fa-solid fa-chevron-right'></i>"; pagination += "</a>"; pagination += "</li>"; } else { if (page + 2 >= totalPages) { for (var i = (page + 1); i <= totalPages; i++) { pagination += "<li class='page-item'>"; pagination += "<a class='page-link paginationPage analytics-pagination-click' analytics-pagination-name='Page " + i + "' href='#/'>"; pagination += "<input type='hidden' value='" + i + "'>"; pagination += i; pagination += "</a>"; pagination += "</li>"; } } else { pagination += "<li class='page-item'>"; pagination += "<a class='page-link paginationPage analytics-pagination-click' analytics-pagination-name='Page " + (page + 1) + "' href='#/'>"; pagination += "<input type='hidden' value='" + (page + 1) + "'>"; pagination += (page + 1); pagination += "</a>"; pagination += "</li>"; pagination += "<li class='page-item'>"; pagination += "<span>&hellip;</span>"; pagination += "</li>"; pagination += "<li class='page-item'>"; pagination += "<a class='page-link paginationPage analytics-pagination-click' analytics-pagination-name='Page " + totalPages + "' href='#/'>"; pagination += "<input type='hidden' value='" + totalPages + "'>"; pagination += totalPages; pagination += "</a>"; pagination += "</li>"; } pagination += "<li class='page-item'>"; pagination += "<a class='page-link paginationPage analytics-pagination-click' analytics-pagination-name='Page " + (page + 1) + "' href='#/' aria-label='Next'>"; pagination += "<input type='hidden' value='" + (page + 1) + "'>"; pagination += "<i class='fa-solid fa-chevron-right'></i>"; pagination += "</a>"; pagination += "</li>"; } return pagination; } } })(); </script> <!-- DATE UTILITY FUNCTIONS ================================================== --> <script nonce="n2ix81kaxuda" type="text/javascript"> var DATE_UTIL = (function() { return { "formatDate": function(date, displayShortForm) { var newDate = new Date(date); var year = newDate.getFullYear(); var month =newDate.getMonth()+1; month = month < 10 ? '0'+month : month; var day = newDate.getDate(); day = day < 10 ? '0'+day : day; if(month=="01"){ month = "January"; } else if(month=="02"){ month = "February"; } else if(month=="03"){ month = "March"; } else if(month=="04"){ month = "April"; } else if(month=="05"){ month = "May"; } else if(month=="06"){ month = "June"; } else if(month=="07"){ month = "July"; } else if(month=="08"){ month = "August"; } else if(month=="09"){ month = "September"; } else if(month=="10"){ month = "October"; } else if(month=="11"){ month = "November"; } else if(month=="12"){ month = "December"; } if (displayShortForm !== undefined && displayShortForm == true){ month = month.substring(0,3); } var startDate = day + "-" + month + "-" + year; var parts = startDate.split("-"); return parts[0]+" "+parts[1]+" "+parts[2]; } } })(); </script> <!-- PERFORMANCE UTILITY ================================================== --> <script nonce="n2ix81kaxuda" type="text/javascript"> var PERFORMANCE_MODULE = (function() { var actionMap = {}; function logPerformanceStats(data) { $.ajax({ url : "/bin/performanceLog", data : data, type : 'POST', dataType : 'json' }); } function startTiming(action) { var startTime = performance.now(); actionMap[action] = startTime; return startTime; } function getDuration(action) { var startTime = actionMap[action]; if (typeof (startTime) !== "number") { return; } var duration = performance.now() - startTime; actionMap[action] = undefined; return duration; } function endTiming(action) { var duration = getDuration(action); console.log("Action: " + action + ", Duration: " + duration); var data = { "action" : action, "duration" : duration }; logPerformanceStats(data); return duration; } function endTimingWithUUID(action, uuid) { var duration = getDuration(action); console.log("Action: " + action + ", Duration: " + duration + ", UUID: " + uuid); var data = { "action" : action, "duration" : duration, "uuid" : uuid }; logPerformanceStats(data); return duration; } function endTimingWithFileSize(action, fileSize) { var duration = getDuration(action); console.log("Action: " + action + ", Duration: " + duration + ", File Size: " + fileSize); var data = { "action" : action, "duration" : duration, "fileSize" : fileSize }; logPerformanceStats(data); return duration; } function endTimingWithImgCount(action, imgCount) { var duration = getDuration(action); console.log("Action: " + action + ", Duration: " + duration + ", Img Count: " + imgCount); var data = { "action" : action, "duration" : duration, "imgCount" : imgCount }; logPerformanceStats(data); return duration; } return { "startTiming" : function(action) { if (typeof (action) !== "string") { return ""; } return startTiming(action); }, "endTiming" : function(action) { if (typeof (action) !== "string") { return ""; } return endTiming(action); }, "endTimingWithUUID" : function(action, uuid) { if (typeof (action) !== "string") { return ""; } if (typeof (uuid) !== "string") { return ""; } return endTimingWithUUID(action, uuid); }, "endTimingWithFileSize" : function(action, fileSize) { if (typeof (action) !== "string") { return ""; } if (typeof (fileSize) !== "number") { return ""; } return endTimingWithFileSize(action, fileSize); }, "endTimingWithImgCount" : function(action, imgCount) { if (typeof (action) !== "string") { return ""; } if (typeof (imgCount) !== "number") { return ""; } return endTimingWithImgCount(action, imgCount); }, "MANAGE_CONTENT_LOAD" : "Manage Content Page Load", "MANAGE_CONTENT_SEARCH" : "Manage Content Search", "PRODUCT_LISTING_LOAD" : "Product Listing Page Load", "PRODUCT_LISTING_SEARCH" : "Product Listing Search", "VIEW_CONTENT" : "View Content", "UPLOAD_MEDIA_STANDALONE" : "StandAlone - Upload Media", "DEAL_LISTING_SEARCH" : "Deal Listing Search", "START_HERE_PRECINCT" : "Add Precinct Content - Start Here", "FEATURED_POI_PRECINCT" : "Add Precinct Content - Featured POI", "ADMIN_PUBLISH_PRECINCT" : "Add Precinct Content - Admin Publish Content", "NON_ADMIN_PUBLISH_PRECINCT" : "Add Precinct Content - Non Admin Publish Content", "UPLOAD_MEDIA_PRECINCT" : "Add Precinct Content - Upload Media", "START_HERE_ACCOMMODATION" : "Add Accommodation Content - Start Here", "ADMIN_PUBLISH_ACCOMMODATION" : "Add Accommodation Content - Admin Publish Content", "NON_ADMIN_PUBLISH_ACCOMMODATION" : "Add Accommodation Content - Non Admin Publish Content", "UPLOAD_MEDIA_ACCOMMODATION" : "Add Accommodation Content - Upload Media", "START_HERE_ATTRACTION" : "Add Attraction Content - Start Here", "ADMIN_PUBLISH_ATTRACTION" : "Add Attraction Content - Admin Publish Content", "NON_ADMIN_PUBLISH_ATTRACTION" : "Add Attraction Content - Non Admin Publish Content", "UPLOAD_MEDIA_ATTRACTION" : "Add Attraction Content - Upload Media", "START_HERE_BARS" : "Add Bars Content - Start Here", "ADMIN_PUBLISH_BARS" : "Add Bars Content - Admin Publish Content", "NON_ADMIN_PUBLISH_BARS" : "Add Bars Content - Non Admin Publish Content", "UPLOAD_MEDIA_BARS" : "Add Bars Content - Upload Media", "START_HERE_MICE" : "Add MICE Content - Start Here", "ADMIN_PUBLISH_MICE" : "Add MICE Content - Admin Publish Content", "NON_ADMIN_PUBLISH_MICE" : "Add MICE Content - Non Admin Publish Content", "UPLOAD_MEDIA_MICE" : "Add MICE Content - Upload Media", "START_HERE_CRUISES" : "Add Cruises Content - Start Here", "ADMIN_PUBLISH_CRUISES" : "Add Cruises Content - Admin Publish Content", "NON_ADMIN_PUBLISH_CRUISES" : "Add Cruises Content - Non Admin Publish Content", "UPLOAD_MEDIA_CRUISES" : "Add Cruises Content - Upload Media", "START_HERE_DEAL" : "Add Deal Content - Start Here", "ADMIN_PUBLISH_DEAL" : "Add Deal Content - Admin Publish Content", "NON_ADMIN_PUBLISH_DEAL" : "Add Deal Content - Non Admin Publish Content", "UPLOAD_MEDIA_DEAL" : "Add Deal Content - Upload Media", "START_HERE_EVENT" : "Add Event Content - Start Here", "ADMIN_PUBLISH_EVENT" : "Add Event Content - Admin Publish Content", "NON_ADMIN_PUBLISH_EVENT" : "Add Event Content - Non Admin Publish Content", "UPLOAD_MEDIA_EVENT" : "Add Event Content - Upload Media", "START_HERE_FOOD_BEVERAGE" : "Add Food & Beverages Content - Start Here", "UPLOAD_MEDIA_FOOD_BEVERAGE" : "Add Food & Beverages Content - Upload Media", "ADMIN_PUBLISH_FOOD_BEVERAGE" : "Add Food & Beverages Content - Admin Publish Content", "NON_ADMIN_PUBLISH_FOOD_BEVERAGE" : "Add Food & Beverages Content - Non Admin Publish Content", "START_HERE_SHOPS" : "Add Malls & Shops Content - Start Here", "UPLOAD_MEDIA_SHOPS" : "Add Malls & Shops Content - Upload Media", "ADMIN_PUBLISH_SHOPS" : "Add Malls & Shops Content - Admin Publish Content", "NON_ADMIN_PUBLISH_SHOPS" : "Add Malls & Shops Content - Non Admin Publish Content", "START_HERE_TOUR" : "Add Tour Content - Start Here", "UPLOAD_MEDIA_TOUR" : "Add Tour Content - Upload Media", "ADMIN_PUBLISH_TOUR" : "Add Tour Content - Admin Publish Content", "NON_ADMIN_PUBLISH_TOUR" : "Add Tour Content - Non Admin Publish Content", "START_HERE_VENUE" : "Add Venue Content - Start Here", "UPLOAD_MEDIA_VENUE" : "Add Venue Content - Upload Media", "ADMIN_PUBLISH_VENUE" : "Add Venue Content - Admin Publish Content", "NON_ADMIN_PUBLISH_VENUE" : "Add Venue Content - Non Admin Publish Content", "START_HERE_WALKING_TRAIL" : "Add Walking Trail Content - Start Here", "UPLOAD_MEDIA_WALKING_TRAIL" : "Add Walking Trail Content - Upload Media", "ADMIN_PUBLISH_WALKING_TRAIL" : "Add Walking Trail Content - Admin Publish Content", "NON_ADMIN_PUBLISH_WALKING_TRAIL" : "Add Walking Trail Content - Non Admin Publish Content" } })(); </script> <!-- LOGIN REDIRECTION UTILITY FUNCTIONS ================================================== --> <script nonce="n2ix81kaxuda" type="text/javascript"> var LOGIN_REDIRECTION_UTIL = (function() { return { "redirectToLogin": function() { var redirectUrl = window.location.href; $.ajax({ url : "/bin/navigateToLogin", data : {redirectUrl:redirectUrl}, type : 'POST', success:function(data, textStatus, jqXHR){ window.location.href = data; } }); } } })(); </script> <!-- SESSION TIMEOUT ================================================== --> <script nonce="n2ix81kaxuda" type="text/javascript"> /* Session timeout implementation */ /* Start **************************/ // How frequently to check for session expiration in miliseconds var sess_pollInterval = 60000; // How many minutes the session is valid for var sess_expirationMinutes = 20; // How many minutes before warning prompt var sess_warningMinutes = 18; var sess_logoutUrl = ""; var sess_intervalId; var sess_lastActivity; var sess_showWarningMess = false; function initSessionMonitor(pollInterval, expirationMinutes, warningMinutes, logoutUrl){ sess_pollInterval = pollInterval; sess_expirationMinutes = expirationMinutes; sess_warningMinutes = warningMinutes; if (sess_warningMinutes >= sess_expirationMinutes){ sess_warningMinutes = sess_expirationMinutes - 1; } sess_logoutUrl = logoutUrl; if (sess_expirationMinutes > 0){ sess_lastActivity = new Date(); sessSetInterval(); $(document).bind('click', function (){ resetSessLastActivity(); }); $(document).scroll(function() { resetSessLastActivity(); }); } } function sessCheckTimeout(){ var now = new Date(); var diff = now - sess_lastActivity; var diffMinutes = diff / 1000 / 60; console.log('Your have been Inactive for ' + diffMinutes + ' minutes'); if (diffMinutes > sess_expirationMinutes){ sessDoLogout(); } else if (diffMinutes >= sess_warningMinutes){ var mess = "It seems that you have been inactive for a while.<br/><br/>" + "For security purposes, you will be automatically logged out if there is no activity within the next " + (sess_expirationMinutes - sess_warningMinutes) + " minutes.<br/><br/>Please click to continue your session." if (!sess_showWarningMess){ showWarning(mess); sess_showWarningMess = true; } } } function sessDoLogout(){ sessClearInterval(); $.ajax({ url:"/bin/terminateConcurrentSessionV2", data:{"terminateSession":"New"}, type:'POST', success:function(data, textStatus, jqXHR){ window.location.href = sess_logoutUrl; }, error:function(data, textStatus, jqXHR){ window.location.href = sess_logoutUrl; } }); } function sessSetInterval(){ sess_intervalId = setInterval(sessCheckTimeout, sess_pollInterval); } function sessClearInterval(){ if(sess_intervalId != undefined || sess_intervalId != null){ clearInterval(sess_intervalId); } } function resetSessLastActivity(){ sess_lastActivity = new Date(); if (sess_showWarningMess){ $("#inactiveSessionModal").modal("hide"); $("#inactiveSessionModal").css('display','none'); sess_showWarningMess = false; } } function showWarning(message){ $("#inactiveSessionModalContent").html(message); $("#inactiveSessionModal").modal("show"); $("#inactiveSessionModal").css('display','block'); $("#inactiveSessionModal").on('hidden.bs.modal', function(){ $('body#top').attr('class', ''); }); } /* End **************************/ /* Session timeout implementation */ /* Special character replacement function */ String.prototype.replaceSpecialCharacterWithSettings = function replaceSpecialCharacterWithSettings() { //console.log("replace special character with settings starts."); var settings = new Map(), temp = this; // append your settings here.... settings.set("&", "&amp;"); settings.set("'", "&apos;"); settings.set(">", "&gt;"); settings.set("<", "&lt;"); settings.set(":\\(","&#40;"); settings.set(":\\)","&#41;"); //console.log("str:", this); //console.log("settings:", settings); settings.forEach(function(value, key, map) { var regExp = new RegExp(key, "g"); temp = temp.replace(regExp, value); //console.log("reg expression:",regExp); //console.log("after replaced:",temp); }); //console.log("result:", temp); //console.log("replace special character with settings ends."); return temp; }; </script> <!-- ANALYTICS UTILITY ================================================== --> <script nonce="n2ix81kaxuda" type="text/javascript"> function changeDatasetForAnalytics(dataset){ if(dataset == "accommodation"){ dataset = "Accommodation"; }else if(dataset == "attractions"){ dataset = "Attractions"; }else if(dataset == "bars_clubs"){ dataset = "Bars & Clubs"; }else if(dataset == "editorial"){ dataset = "Editorials"; }else if(dataset == "events"){ dataset = "Events - Leisure"; }else if(dataset == "mice_events"){ dataset = "Events - Business"; }else if(dataset == "food_beverages"){ dataset = "Food & Beverages"; }else if(dataset == "cruises"){ dataset = "Cruises"; }else if(dataset == "shops"){ dataset = "Malls & Shops"; }else if(dataset == "tour"){ dataset = "Tours"; }else if(dataset == "venue"){ dataset = "Venue"; }else if(dataset == "walking_trail"){ dataset = "Walking Trails"; } return dataset; } </script> <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="keywords" content="HTML,CSS,XML,JavaScript"> <meta name="description" content=''/> <meta name="viewport" content="width=device-width, initial-scale=1"> <script src="/etc/designs/tihV2/static/common/analyticsjs/header.min.4aae10171b44ecc5f1336c8da6cf8340.js" nonce="n2ix81kaxuda"></script> <script nonce="n2ix81kaxuda" type="text/javascript"> var digitalData = { page: { pillar: '', type: '' } }; </script> <script nonce="n2ix81kaxuda" type="text/javascript"> var ANALYTICS_EXTENDED_SERVICE = (function(){ var TYPE_CONSTANT = "TYPE"; var TYPE_OF_USER_CONSTANT = "typeOfUser"; var REGISTRATION_METHOD_CONSTANT = "registrationMethod"; var REGISTER_CONFIRMATION_ANALYTICS_REG_TYPE_MAPPING = { "ip": "business_partner_user", "pub": "public", "dev": "developer", "stb": "stb_user", "sta": "stb_agencies_user" }; var REGISTER_CONFIRMATION_ANALYTICS_ACCOUNT_TYPE_MAPPING = { "SP": "SP", "CP": "CP", "PL": "PL" }; function isEmptyString(str) { return (typeof(str) !== "string" || str.length <= 0); } return { "setPropForRegFlow": function(digiData, pageInfo) { try { if(!digiData){ console.log("ANALYTICS_EXTENDED_SERVICE.setPropForRegFlow() => digiData =", digiData); return; } if(!pageInfo) { console.log("ANALYTICS_EXTENDED_SERVICE.setPropForRegFlow() => pageInfo =", pageInfo); return; } if(pageInfo[TYPE_CONSTANT] !== "Home" && pageInfo[TYPE_CONSTANT] !== "Register"){ console.log("ANALYTICS_EXTENDED_SERVICE.setPropForRegFlow() => pageInfo[\"" + TYPE_CONSTANT + "\"] =", pageInfo[TYPE_CONSTANT]); return; } digiData["typeOfUser"] = ""; digiData["registerButton"] = ""; } catch(e){ console.log("ANALYTICS_EXTENDED_SERVICE.setPropForRegFlow() => e =", e); } }, "setPropForRegConfirmationAnalytics": function(digiData, pageInfo) { try { if(!digiData){ console.log("ANALYTICS_EXTENDED_SERVICE.setPropForRegAnalytics() => digiData =", digiData); return; } if(!pageInfo) { console.log("ANALYTICS_EXTENDED_SERVICE.setPropForRegAnalytics() => pageInfo =", pageInfo); return; } if(pageInfo[TYPE_CONSTANT] !== "Register Confirmation" && pageInfo[TYPE_CONSTANT] !== "STB Register Confirmation"){ console.log("ANALYTICS_EXTENDED_SERVICE.setPropForRegAnalytics() => pageInfo[\"" + TYPE_CONSTANT + "\"] =", pageInfo[TYPE_CONSTANT]); return; } var regType = ""; var accountType = ""; var regTypeMappedValue = REGISTER_CONFIRMATION_ANALYTICS_REG_TYPE_MAPPING[regType]; var accountTypeMappedValue = REGISTER_CONFIRMATION_ANALYTICS_ACCOUNT_TYPE_MAPPING[accountType]; if(isEmptyString(regTypeMappedValue)){ console.log("ANALYTICS_EXTENDED_SERVICE.setPropForRegAnalytics() => regTypeMappedValue =", regTypeMappedValue); return; } if(isEmptyString(accountTypeMappedValue)){ console.log("ANALYTICS_EXTENDED_SERVICE.setPropForRegAnalytics() => accountTypeMappedValue =", accountTypeMappedValue); return; } digiData[TYPE_OF_USER_CONSTANT] = regTypeMappedValue; digiData[REGISTRATION_METHOD_CONSTANT] = accountTypeMappedValue; } catch(e){ console.log("ANALYTICS_EXTENDED_SERVICE.setPropForRegAnalytics() => e =", e); } } }; })(); </script> <script nonce="n2ix81kaxuda" type="text/javascript"> if (typeof AnalyticsService != 'undefined') { var TIH_PAGE_INFO = AnalyticsService.Page.getPageInfo(); if (typeof TIH_PAGE_INFO != 'undefined' && TIH_PAGE_INFO) { digitalData = { page: { pillar : TIH_PAGE_INFO.PILLAR, type : TIH_PAGE_INFO.TYPE } }; ANALYTICS_EXTENDED_SERVICE.setPropForRegFlow(digitalData, TIH_PAGE_INFO); ANALYTICS_EXTENDED_SERVICE.setPropForRegConfirmationAnalytics(digitalData, TIH_PAGE_INFO); } } </script> <script nonce="n2ix81kaxuda" async src="https://www.googletagmanager.com/gtag/js?id=DC-6953330"></script> <script nonce="n2ix81kaxuda"> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'DC\u002D6953330'); </script> <meta name="google-site-verification" content="K2n9IrU1zMxttfeFwZZSaVHM92RRhT5RwsOF55sDaYw" /> <script nonce="n2ix81kaxuda" src="//assets.adobedtm.com/f9bea43d375e/2ed058bbce54/launch-9d52fe211282.min.js" async></script> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="/etc/designs/tihV2/static/common/bootstrap/v5.3.1/css/bootstrap.min.css"> <link type="text/css" rel="stylesheet" href="/etc/designs/tihV2/static/components/tih-base/screen.css"> </head> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/common/jquery/v3.7.1/js/jquery.3.7.1.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/common/jquery/jquery.waypoints.min.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/common/jquery/jquery.countup.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/common/jquery/jquery.scrolling-tabs.min.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/common/jquery/jquery.print.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/common/dataTables/v1.13.6/js/dataTables.min.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/common/bootstrap/v5.3.1/js/bootstrap.bundle.min.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/common/bootstrap/bootstrap-password-toggler.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/common/select2/v4.1.0/js/select2.min.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/common/owl-carousel/v2.3.4/js/owl.carousel.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/components/tih-base/master.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/common/dom-purify/v3.0.5/js/purify.min.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/components/tih-base/go-top.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/common/lightslider/js/lightslider.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/common/intl-tel-input/v18.1.1/js/intlTelInput.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/common/flatpickr/v4.6.13/js/flatpickr.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/common/flatpickr/plugins/monthSelect/js/index.js"></script> <script nonce="n2ix81kaxuda" src="/etc/designs/tihV2/static/devbridge-autocomplete/1.4.7/js/jquery.autocomplete.js"></script> <script nonce="n2ix81kaxuda"> console.log("notificationMessage : "+""); </script> <style> .new.section { display:none; } #suggestions-container-header{ padding-left:30px; } .autocomplete-suggestions { position:relative !important; } .autocomplete-suggestions{ color:black !important; } .footer-social a[target=_blank]:after { content: ""; } .footer-logos a[target=_blank]:after { content: ""; } </style> <body> <div class="site-action-holder"> <a href="#/" class="back-top cd-top"> <div> <span class="material-icons-round">vertical_align_top</span> </div> </a> </div> <header class="fixed-top"> <div id="sgds-masthead" class="sgds-masthead" aria-label="A Singapore Government Agency Website"> <div class="sgds-masthead-banner"> <div class="container-xxl"> <div class="masthead-layout"> <div class="masthead-govt-crest flex-fill"> <div class="govt-crest-text"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" class="sg-crest"><path fill="#C52F19" d="M5.896 11.185c0 0-0.949 1.341 0.294 3.075 0 0 0.196-0.883 2.159-0.883h2.356c2.225 0 3.893-2.126 2.846-4.319 0 0 1.57 0.164 2.095-0.818 0.523-0.981-0.033-1.374-0.818-1.374h-3.959c0 0.704-1.341 0.802-1.341 0h-2.225c0 0-1.669 0-1.701 1.407 0 0 0.377-0.229 0.752-0.261v0.375c0 0-0.458 0.082-0.671 0.197-0.212 0.114-0.523 0.425-0.228 1.227 0.294 0.801 0.409 1.079 0.409 1.079s0.475-0.41 1.244-0.41h0.9c1.602 0 1.308 1.554-0.295 1.554s-1.815-0.85-1.815-0.85z"></path><path fill="#C52F19" d="M14.255 9.566c0 0 0.54 0.033 0.932-0.31 0 0 3.55 2.765-1.717 8.326-5.268 5.562-1.195 9.162-1.195 9.162s-0.948 0.915-0.409 2.699c0 0-2.191-1.237-3.867-3.338-2.422-3.036-3.902-7.681 2.749-11.386 0 0 4.389-2.208 3.506-5.153z"></path><path fill="#C52F19" d="M8.829 6.343c0 0 0.709-1.265 2.355-1.265 1.298 0 1.594-0.666 1.594-0.666s0.566-1.079 3.424-1.079c2.619 0 4.384 0.873 5.812 2.039 0 0-3.85-2.388-7.645 0.971h-5.54z"></path><path fill="#C52F19" d="M24.839 14.348c-0.109-3.948-3.163-8.179-9.728-7.939 6.413-5.431 17.537 6.695 8.375 13.066 0 0 1.533-2.186 1.353-5.126z"></path><path fill="#C52F19" d="M16.093 6.845c8.005-0.24 10.863 9.357 5.693 13.676l-5.191 2.509c0 0-0.676-2.181 1.833-4.734 2.509-2.551 4.929-7.328-2.006-10.469 0 0 0.131-0.654-0.327-0.981z"></path><path fill="#C52F19" d="M15.678 9.004c0 0 0.393-0.371 0.524-0.676 5.954 2.486 5.017 6.697 1.461 10.23-2.181 2.246-1.505 4.668-1.505 4.668s-2.66 1.657-3.577 3.097c0 0-3.852-3.28 1.483-8.724 5.235-5.344 1.614-8.594 1.614-8.594z"></path></svg> <!--<span class="sgds-icon sgds-icon-sg-crest text-decoration-none"></span>--> <span class="is-text">A Singapore Government Agency Website</span> </div> <a href="#/" class="sgds-masthead-button" id="sgds-masthead-identify" role="button" aria-expanded="false" aria-controls="sgds-masthead-content" data-bs-toggle="collapse" data-bs-target="#mastheadHiddenContent"> <span class="is-text sgds-masthead-button-text link-color">How to identify</span> <i class="sgds-icon sgds-icon-chevron-down sgds-masthead-identify-icon"></i> </a> </div> </div> </div> </div> <div class="collapse" id="mastheadHiddenContent"> <div id="sgds-masthead-content" class="sgds-masthead-content"> <div class="container-xxl"> <div class="row"> <div class="col-lg-6"> <div class="column-wrapper"> <div class="icon"> <svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 17 17" fill="none" class="banner-icon"><path d="M0.166016 5.6665V9.00067H0.999349V13.9998H0.166016V16.4998H0.999349H3.49935H5.16602H7.66601H9.33268H11.8327H13.4993L15.9993 16.5007V16.4998H16.8327V13.9998H15.9993V9.00067H16.8327V5.6665L8.49935 0.666504L0.166016 5.6665ZM3.49935 13.9998V9.00067H5.16602V13.9998H3.49935ZM7.66601 13.9998V9.00067H9.33268V13.9998H7.66601ZM13.4993 13.9998H11.8327V9.00067H13.4993V13.9998ZM10.166 5.6665C10.166 6.58651 9.41935 7.33317 8.49935 7.33317C7.57935 7.33317 6.83268 6.58651 6.83268 5.6665C6.83268 4.7465 7.57935 3.99984 8.49935 3.99984C9.41935 3.99984 10.166 4.7465 10.166 5.6665Z" fill="#242425"></path></svg> </div> <div class="content"> <div class="title">Official website links end with .gov.sg</div> <article> Government agencies communicate via .gov.sg websites (e.g. go.gov.sg/open). <a href="https://www.gov.sg/trusted-sites#govsites" class="trusted-websites-link" rel="noopener noreferrer" target="_blank"> Trusted websites <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 32 32" class="trusted-websites-icon"><title>Trusted websites</title><path d="M18.667 4v2.667h4c0.186-0.020 0.374-0.020 0.56 0l-2.667 2.667-6.973 6.987 1.88 1.88 9.733-9.667c0.092 0.257 0.137 0.528 0.133 0.8v4h2.667v-9.333h-9.333z"></path><path d="M22.667 25.333h-16v-16h8v-2.667h-8c-1.473 0-2.667 1.194-2.667 2.667v16c0 1.473 1.194 2.667 2.667 2.667h16c1.473 0 2.667-1.194 2.667-2.667v-8h-2.667v8z"></path></svg> </a> </article> </div> </div> </div> <div class="col-lg-6"> <div class="column-wrapper"> <div class="icon"> <svg xmlns="http://www.w3.org/2000/svg" width="15" height="18" viewBox="0 0 15 18" fill="none" class="banner-icon"><path d="M14.1663 9.00008C14.1663 8.08091 13.4188 7.33342 12.4997 7.33342H11.6663V4.83342C11.6663 2.53591 9.79717 0.666748 7.49967 0.666748C5.20217 0.666748 3.33301 2.53591 3.33301 4.83342V7.33342H2.49967C1.58051 7.33342 0.833008 8.08091 0.833008 9.00008V15.6667C0.833008 16.5859 1.58051 17.3334 2.49967 17.3334H12.4997C13.4188 17.3334 14.1663 16.5859 14.1663 15.6667V9.00008ZM4.99967 4.83342C4.99967 3.45508 6.12134 2.33341 7.49967 2.33341C8.87801 2.33341 9.99967 3.45508 9.99967 4.83342V7.33342H4.99967V4.83342Z" fill="#242425"></path></svg> </div> <div class="content"> <div class="title">Secure websites use HTTPS</div> <article>Look for a<b> lock </b>(<svg xmlns="http://www.w3.org/2000/svg" width="15" height="18" viewBox="0 0 15 18" fill="none" class="banner-icon-inline"><path d="M14.1663 9.00008C14.1663 8.08091 13.4188 7.33342 12.4997 7.33342H11.6663V4.83342C11.6663 2.53591 9.79717 0.666748 7.49967 0.666748C5.20217 0.666748 3.33301 2.53591 3.33301 4.83342V7.33342H2.49967C1.58051 7.33342 0.833008 8.08091 0.833008 9.00008V15.6667C0.833008 16.5859 1.58051 17.3334 2.49967 17.3334H12.4997C13.4188 17.3334 14.1663 16.5859 14.1663 15.6667V9.00008ZM4.99967 4.83342C4.99967 3.45508 6.12134 2.33341 7.49967 2.33341C8.87801 2.33341 9.99967 3.45508 9.99967 4.83342V7.33342H4.99967V4.83342Z" fill="#242425"></path></svg>) or https:// as an added precaution. Share sensitive information only on official, secure websites.</article> </div> </div> </div> </div> </div> </div> </div> </div> <div class="header-holder" id="mainHeader"> <div class="container-xxl"> <div class="d-flex align-items-stretch gap-1"> <div class="navbar-brand header-logo-holder"> <a url-link="/content/tih/en/home.html" class="text-decoration-none stretched-link analytics-header-click" analytics-header-name='TIH Logo' title="Tourism Informatin &amp; Service Hub"> <img src="/etc/designs/tihV2/static/components/tih-base/logo_tih.svg" alt="TIH logo"> </a> </div> <div class="header-nav-holder flex-fill"> <div class="navbar-menu justify-content-start"> <div class="mobile-search-holder collapse" id="globalSearch" data-bs-parent="#mainHeader"> <div class="container-xxl"> <form method="GET" action="/content/tih/en/search-result.html" id="searchForm"> <div class="input-group global-search-bar"> <input type="text" class="form-control global-search" placeholder='What Tourism Offering or Media Asset are you looking for?' name="keyword" id="searchInputHeader"> <div class="input-group-append"> <a href="#/" class="clear-search animated"> <span class="sgds-icon sgds-icon-cross"></span> </a> <button class="btn btn-primary rounded-pill" type="submit" id="headerSearchResultSearch"> <i class="sgds-icon sgds-icon-search"></i> <span>Search</span> </button> </div> </div> </form> </div> <div class="search-suggestions d-none" id="suggestions-container-header"> </div> </div> <div class="navbar-login-btn-holder flex-fill justify-content-end"> <a class="sgds btn btn-outline-primary rounded-pill" role="button" href="https://tih-iam.stb.gov.sg/iamsso/login?service=https://tih.stb.gov.sg/bin/loginValidation"> <span class="material-icons-outlined">login</span> <span>Sign In</span> </a> <a class="sgds btn btn-primary rounded-pill" role="button" href="/content/tih/en/profile/register.html"> <span class="material-icons-outlined">person_add_alt</span> <span>Register</span> </a> </div> <div class="navbar-item" id="headerAboutTIH"> <div class="navbar-item-top-level-link"> <a class="navbar-link" href="#/"> <h6> <span>About TIH</span> <i class="sgds-icon sgds-icon-chevron-down"></i> </h6> </a> <button class="mobile-collapse-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#menuDropdown-02"> <i class="sgds-icon sgds-icon-chevron-down"></i> </button> </div> <div class="navbar-dropdown collapse" id="menuDropdown-02"> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='About Us' url-link="/content/tih/en/about-tih/about-us.html"><span>About Us</span></a> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='Business Directory' url-link="/content/tih/en/about-tih/business-directory.html"><span>Business Directory</span></a> </div> </div> <div class="navbar-item" id="headerTourismOfferings"> <div class="navbar-item-top-level-link"> <a class="navbar-link" href="#/"> <h6> <span>Tourism Offerings</span> <i class="sgds-icon sgds-icon-chevron-down"></i> </h6> </a> <button class="mobile-collapse-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#menuDropdown-03"> <i class="sgds-icon sgds-icon-chevron-down"></i> </button> </div> <div class="navbar-dropdown collapse is-wider" id="menuDropdown-03"> <div class="row"> <div class="col-lg-6"> <div class="navbar-dropdown-column"> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='Accommodation' url-link="/content/tih/en/tourism-offerings.html?dataset=Accommodation"><span>Accommodation</span></a> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='Attractions' url-link="/content/tih/en/tourism-offerings.html?dataset=Attractions"><span>Attractions</span></a> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='Events - Business' url-link="/content/tih/en/tourism-offerings.html?dataset=MICEEvent"><span>Events - Business</span></a> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='Events - Leisure' url-link="/content/tih/en/tourism-offerings.html?dataset=Event"><span>Events - Leisure</span></a> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='Food &amp; Beverages' url-link="/content/tih/en/tourism-offerings.html?dataset=FoodBeverages"><span>Food &amp; Beverages</span></a> </div> </div> <div class="col-lg-6"> <div class="navbar-dropdown-column"> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='Malls &amp; Shops' url-link="/content/tih/en/tourism-offerings.html?dataset=Shopping"><span>Malls &amp; Shops</span></a> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='Precincts' url-link="/content/tih/en/tourism-offerings.html?dataset=Precincts"><span>Precincts</span></a> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='Tours' url-link="/content/tih/en/tourism-offerings.html?dataset=Tours"><span>Tours</span></a> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='Wellness' url-link="/content/tih/en/tourism-offerings.html?group=Wellness"><span>Wellness</span> <span class="badge rounded-pill text-bg-primary">New</span></a> </div> </div> </div> </div> </div> <div class="navbar-item" id="headerMediaAssets"> <div class="navbar-item-top-level-link"> <a class="navbar-link" href="#/"> <h6> <span>Media Assets</span> <i class="sgds-icon sgds-icon-chevron-down"></i> </h6> </a> <button class="mobile-collapse-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#menuDropdown-04"> <i class="sgds-icon sgds-icon-chevron-down"></i> </button> </div> <div class="navbar-dropdown collapse" id="menuDropdown-04"> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='Images' url-link="/content/tih/en/media-assets.html?mediaType=images"><span>Images</span></a> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='Videos' url-link="/content/tih/en/media-assets.html?mediaType=videos"><span>Videos</span></a> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='3D Models' url-link="/content/tih/en/media-assets.html?mediaType=3dmodels"><span>3D Models</span></a> </div> </div> <div class="navbar-item" id="headerAPIServices"> <div class="navbar-item-top-level-link"> <a class="navbar-link analytics-header-click" analytics-header-name='API Services' url-link="/content/tih/en/api-services.html"> <h6><span>API Services</span></h6> </a> </div> </div> <div class="navbar-item" id="headerSupport"> <div class="navbar-item-top-level-link"> <a class="navbar-link" href="#/"> <h6> <span>Support</span> <i class="sgds-icon sgds-icon-chevron-down"></i> </h6> </a> <button class="mobile-collapse-toggle" type="button" data-bs-toggle="collapse" data-bs-target="#menuDropdown-06"> <i class="sgds-icon sgds-icon-chevron-down"></i> </button> </div> <div class="navbar-dropdown collapse" id="menuDropdown-06"> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='Help Centre' url-link="/content/tih/en/support/help-centre.html"><span>Help Centre</span></a> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='FAQs' url-link="/content/tih/en/header/faq.html"><span>FAQs</span></a> <a class="navbar-item sub-link analytics-header-click" analytics-header-name='Contact Us' url-link="/content/tih/en/support/help-centre.html#contact-us"><span>Contact Us</span></a> </div> </div> </div> </div> <div class="header-actions-holder"> <div class="navbar-login-btn-holder d-none"> <a class="sgds btn btn-outline-primary" role="button" href="https://tih-iam.stb.gov.sg/iamsso/login?service=https://tih.stb.gov.sg/bin/loginValidation"> <span>Sign In</span> </a> <a class="sgds btn btn-primary rounded-pill" role="button" href="/content/tih/en/profile/register.html"> <span>Register</span> </a> </div> <div class="right-action-single-btn d-none d-lg-flex"> <button class="btn" type="button" data-bs-toggle="collapse" data-bs-target="#globalSearch" aria-expanded="false"> <span class="sgds-icon sgds-icon-search"></span> <span class="sgds-icon sgds-icon-cross"></span> </button> </div> <div class="d-lg-none"> <a class="hamburger-menu" data-bs-toggle="collapse" href="#siteMainNav" role="button" aria-expanded="false"> <span class="icon-bar"></span> </a> </div> </div> </div> </div> </div> </header> <div class="mainpar parsys"><div class="tourism-offerings section"> <style> .tourism-offerings.section { padding: 0 0; } @media (min-width: 600px) { .page-results-listing-content-holder .page-result-card-holder.is-horizontal .card-main-info p { width: 500px; } } </style> <title>Tourism Offerings | TIH</title> <html> <main> <div class="page-holder"> <div class="page-header bg-primary bg-gradient"> <div class="page-header-bg-image"> <div class="imagefill-holder"> <img src="/content/dam/tih/b2b_revamp_header_img/banner-to.jpg" alt="" class="img-cover" data-object-fit="cover"> </div> </div> <div class="container-xxl"> <div class="page-breadcrumb-holder"> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a href="/content/tih/en/home.html">Home</a></li> <li class="breadcrumb-item active" aria-current="page">Tourism Offerings</li> </ol> </nav> </div> <div class="page-title-holder"> <h1 class="page-title-heading">Tourism Offerings</h1> <div class="row"> <div class="col-lg-8"> <div class="page-title-info"> <p>Access our extensive repository of Singapore Tourism Offerings across various content categories.</p> </div> </div> </div> </div> <script nonce="n2ix81kaxuda"> </script> </div> </div> <div class="page-body"> <section> <div class="container-xxl"> <div class="page-section-holder"> <div class="page-section-header d-none">&nbsp;</div> <div class="page-section-body"> <div class="page-results-listing-holder"> <div class="row g-3 g-xl-4"> <div class="col-lg-3"> <div class="page-results-listing-filter-holder collapse d-lg-block" id="sideSearchFilter"> <div class="page-listing-filter-header"> <div class="flex-fill">&nbsp;</div> <button type="button" class="btn-close" aria-label="Close" type="button" data-bs-toggle="collapse" data-bs-target="#sideSearchFilter"></button> </div> <div class="page-listing-filter-body"> <section> <div class="card"> <div class="card-header"> <h6>Categories</h6> </div> <div id="categoryTypes"> </div> </div> </section> <section> <div class="card"> <div class="card-header"> <h6>Filter By</h6> </div> <div class="card-body"> <div class="radio-checkbox-holder"> <div class="form-group"> <div class="form-check"> <input class="form-check-input" type="checkbox" value="wellness" id="wellness"> <label class="form-check-label" for="wellness"> <span>Wellness Related</span> </label> </div> </div> <div class="form-group"> <div class="form-check"> <input class="form-check-input" type="checkbox" value="sta" id="sta"> <label class="form-check-label" for="sta"> <span>SG Tourism Award</span> </label> </div> </div> </div> </div> </div> </section> <section> <div class="form-floating rounded-2 shadow"> <select name="language" id="language" class="form-select"> <option value="en">English</option> <option value="zh-cn">中文 - 简体</option> <option value="zh-tw">中文 - 繁體</option> <option value="ja">日本語</option> <option value="ko">한국어</option> </select> <label>Language</label> </div> </section> </div> <script nonce="n2ix81kaxuda"> function generateTourismOfferingsPreLoginCategory(){ var categoryTypeHTML = "<ul class='list-group list-group-flush'>"; for (var i = 0; i < AEM_CATEGORY_KEY.length; i++){ var index = CATEGORY_LIST.indexOf(AEM_CATEGORY_VALUES[i]); categoryTypeHTML += "<li class='list-group-item'>"; categoryTypeHTML += "<input type='hidden' class='tourism-offerings-dataset' value='" + ALL_CATEGORY_VALUES[i] + "'>"; categoryTypeHTML += "<input type='hidden' class='tourism-offerings-parent-dataset' value='" + AEM_CATEGORY_VALUES[i] + "'>"; categoryTypeHTML += "<a href='#/' class='tourism-offerings-pre-login-category-select'>" + AEM_CATEGORY_KEY[i] + "</a>"; categoryTypeHTML += "</li>"; } categoryTypeHTML += "</ul>"; $('#categoryTypes').empty().append(categoryTypeHTML); $(".tourism-offerings-pre-login-category-select").on("click", function() { $(this).parent('.list-group-item').addClass('active'); $(this).parent('.list-group-item').siblings('.list-group-item').removeClass('active'); retrieveTourismOfferings(); }); } </script> <div class="page-listing-filter-footer"> <div class="btn-holder split-btn-holder"> <div></div> <div> <button class="btn btn-primary icon-link icon-link-hover rounded-pill is-hoverable tourism-listing-search"> <span>Show results</span> <span class="material-icons-outlined">east</span> </button> </div> </div> </div> </div> </div> <div class="col-lg-9"> <div class="page-results-listing-content-holder"> <div class="page-result-filter-holder"> <div class="page-result-filter-info flex-fill" id="tourismListingPaginationResults"> </div> <div class="page-result-filter-action justify-content-between"> <div class="page-result-mobile-filter-btn-holder order-1 order-sm-2"> <button class="btn btn-outline-primary icon-link rounded-pill is-hoverable" type="button" data-bs-toggle="collapse" data-bs-target="#sideSearchFilter" aria-expanded="false"> <span class="material-icons-outlined">tune</span> <span>Filters</span> </button> </div> <div class="form-floating order-2 order-sm-1"> <select id="tourismListingSort" class="form-select analytics-sortby-click" analytics-sortby-name="Sort By"> <option value="lastupdateddate" selected>Most recent</option> <option value="name">Name (A-Z)</option> </select> <label>Sort by</label> </div> </div> </div> <div class="pageBtnHolder text-center lazy-load-btn-holder col-sm-offset-4 col-md-offset-3" id="loading"> <img src="/etc/designs/tihV2/static/common/loading/loading.gif"/> </div> <div class="page-result-card-holder is-horizontal" id="tourismListing"> </div> </div> </div> </div> </div> <div class="request-for-login-holder"> <div class="card bg-gradient text-white"> <div class="card-image"> <span class="material-icons-outlined">login</span> </div> <div class="card-body"> <h3>Limited access</h3> <p>To view all Tourism Offerings, please <a href="#/" id="tourismOfferingsLoginRedirection">Sign in</a> or <a href="/content/tih/en/profile/register.html">Register</a>.</p> </div> </div> </div> <script nonce="n2ix81kaxuda"> $(document).ready(function() { $('#tourismOfferingsLoginRedirection').on('click', function() { LOGIN_REDIRECTION_UTIL.redirectToLogin(); }); }); </script> </div> </div> </div> </section> </div> </div> </main> </html> <script nonce="n2ix81kaxuda"> const PRE_LOGIN_PAGE_LIMIT = 5; const POST_LOGIN_PAGE_LIMIT = 10; const CATEGORY_LIST = "Accommodation,Attractions,BarsClubs,Cruises,Event,FoodBeverages,MICEEvent,Shopping,Tours,Venues,WalkingTrail".split(","); const CATEGORY_TYPE_EN_LIST = "Backpacker Hostels|Hotels|Resorts|Serviced Apartments|Others,Adventure|Arts|Fitness and Holistic Wellness|History & Culture|Leisure & Recreation|Nature & Wildlife|Others,Clubs,Contemporary|Luxury|Premium|Others,Arts|Attractions|Entertainment|Food & Beverages|History & Culture|Nature & Wildlife|Shopping|Sports|Others,Bars|Cafe|Hawker Centres|Restaurants|Others,Advanced Manufacturing|Aerospace & Logistics|Applied Health Sciences|Financial Services|Innovation & Technology|Lifestyle|Social|Urban Solutions|Others,Bazaars & Flea Markets|Boutiques|Department Stores|Malls|Others,Adventure & Sports|Arts|Food & Beverages|History & Culture|In-House|Multi-Day Packages|Nature & Wildlife|Sightseeing|Others,Arts & Entertainment|MICE|Sports|Others,Arts|Events & Festivities|Food & Beverages|History & Culture|See & Do|Shops|Others".split(","); const CATEGORY_TYPE_EN_VALUE_LIST = "backpackers_hostel|hotel|resort|serviced_apartment|others,adventure|arts|fitness_holistic_wellness|history_culture|recreation_leisure|nature_wildlife|others,club,contemporary|luxury|premium|others,arts|attraction|entertainment|food_beverage|history_culture|nature_wildlife|shopping|sport|others,bar|cafe|hawker_centre|restaurant|others,advanced_manufacturing|aerospace_logistics|applied_health_sciences|financial_services|innovation_technology|lifestyle|social|urban_solutions|others,bazaar_flea_market|boutique|department_store|mall|others,adventure_sport|arts|food_beverage|history_culture|in_house|multi_day_package|nature_wildlife|sightseeing_or_day|others,art_entertainment|mice|sports|others,art|events_festivities|food_beverage|history_culture|see_do|shops|others".split(","); const CATEGORY_TYPE_ZHCN_LIST = "背包客旅舍|酒店|度假村|服务公寓|其他,探险|艺术|健身与康养|历史与文化|休闲与娱乐|自然风景和野生动物|其他,夜店,时尚|豪华|高级|其他,艺术|景点|娱乐|餐饮|历史与文化|自然风景和野生动物|购物|体育|其他,酒吧|咖啡馆|熟食中心|餐厅|其他,先进制造业|航空与物流|应用健康科学|金融服务|创新与科技|生活方式|社交|城市解决方案|其他,市集与跳蚤市场|精品店|百货商场|购物商场|其他,探险与体育|艺术|餐饮|历史与文化|预约导览|多日配套|自然风景和野生动物|观光|其他,艺术与娱乐|会议展览与奖励旅游 (MICE)|体育|其他,艺术|活动与节庆|餐饮|历史与文化|观光游览|商店|其他".split(","); const CATEGORY_TYPE_ZHTW_LIST = "背包客旅舍|酒店|渡假村|服務公寓|其他,探險|藝術|健身與康養|歷史與文化|休閒與娛樂|自然風景和野生動物|其他,夜店,時尚|豪華|高級|其他,藝術|景點|娛樂|食物和飲料|歷史與文化|自然風景和野生動物|購物|體育|其他,酒吧|咖啡館|熟食中心|餐廳|其他,先進製造業|航空與物流|應用健康科學|金融服務|創新與科技|生活方式|社交|城市解決方案|其他,市集與跳蚤市場|精品店|百貨商場|購物商場|其他,探險與體育|藝術|食物和飲料|歷史與文化|預約導覽 |多日配套 |自然風景和野生動物|觀光|其他,藝術與娛樂|會議展覽與獎勵旅遊 (MICE)|體育|其他,藝術|活動與節慶|食物和飲料|歷史與文化|觀光遊覽|商店|其他".split(","); const CATEGORY_TYPE_JA_List = "バックパッカー向けホステル|ホテル|リゾート|サービスアパートメント|その他,冒険|アート|フィットネス & ホリスティック・ウェルネス|歴史と文化|レジャーとレクリエーション|自然と野生生物|その他,クラブ,現代的な|ラグジュアリーな|プレミアム|その他,アート|アトラクション|エンターテイメント|食事と飲み物|歴史と文化|自然と野生生物|ショッピング|スポーツ|その他,バー|カフェ|ホーカーセンター|レストラン|その他,先進製造|航空宇宙およびロジスティクス|応用健康科学|金融サービス|イノベーション&テクノロジー|ライフスタイル|社会|都市ソリューション|その他,バザーとフリーマーケット|ブティック|デパート|ショッピングモール|その他,アドベンチャーとスポーツ|アート|食事と飲み物|歴史と文化|屋内|複数日パッケージ|自然と野生生物|観光|その他,アートとエンターテイメント|MICE|スポーツ|その他,アート|イベントとフェスティバル|食事と飲み物|歴史と文化|観光と体験|ショップ|その他".split(","); const CATEGORY_TYPE_KO_List = "배낭 여행자 호스텔|호텔|리조트|서비스 아파트|기타,어드벤처|예술|건강 & 균형 있는 삶|역사와 문화|레크리에이션 및 레저|자연과 야생 동물|기타,클럽,현대적인|럭셔리|프리미엄|기타,예술|관광명소|엔터테인먼트|식음료|역사와 문화|자연과 야생 동물|쇼핑|스포츠|기타,바|카페|호커 센터|레스토랑|기타,첨단 제조|항공우주 및 물류|응용 보건 과학|금융 서비스|혁신 및 기술|라이프스타일|소셜|어반 솔루션|기타,바자회 및 벼룩시장|부티크 상점|백화점|쇼핑몰|기타,어드벤처 및 스포츠|예술|식음료|역사와 문화|인하우스|장기 패키지|자연과 야생 동물|관광|기타,예술과 엔터테인먼트|MICE|스포츠|기타,예술|이벤트 및 축제|식음료|역사와 문화|보고 체험하기|상점|기타".split(","); const AEM_CATEGORY_KEY = "Accommodation,Attractions,Events - Business,Events - Leisure,Food & Beverages,Malls & Shops,Precincts,Tours".split(","); const AEM_CATEGORY_VALUES = "Accommodation,Attractions,MICEEvent,Event,FoodBeverages,Shopping,Precincts,Tours".split(","); const ALL_CATEGORY_VALUES = "accommodation,attractions,mice_events,events,food_beverages,shops,precincts,tours".split(","); const LANGUAGE_KEY = "en,zh-cn,zh-tw,ja,ko".split(","); const LANGUAGE_VALUE = "English,中文 - 简体,中文 - 繁體,日本語,한국어".split(","); const IS_LOGIN = ("false" === 'true'); const TOURISM_OFFERINGS_DETAIL_PAGE = "/content/tih/en/tourism-offerings/detail-page.html"; const ERROR_PAGE = "/content/tih/en/errors/error.html"; var keywordTyped = false; $(document).ready(function() { if (IS_LOGIN){ generateTourismOfferingsPostLoginCategory(); generateTourismOfferingsPostLoginCompanies(); generateTourismOfferingsPostLoginSearch(); generateTourismOfferingsPostLoginFilterOnChange(); generateTourismOfferingsPostLoginTrendingTags(); } else { generateTourismOfferingsPreLoginCategory(); } $('#language').on('change', function() { if (IS_LOGIN){ generateTourismOfferingsPostLoginCategory(); } else { retrieveTourismOfferings(); } }); $('#sta').on('change', function() { retrieveTourismOfferings(); }); $('#wellness').on('change', function() { retrieveTourismOfferings(); }); $('#tourismListingSort').on('change', function() { retrieveTourismOfferings(); }); /* $('#filterPageLimit').on('change',function() { pageLimit = $(this).val(); retrieveTourismOfferings(); }); */ $('.tourism-listing-clear-all').on('click', function() { if (IS_LOGIN){ resetTourismOfferingsPostLoginFilter(); } $('#language').val("en"); }); $('#tourismSearch').on('input', function() { if ($("#tourismSearch").val() != "") { keywordTyped = true; } }); /*------------------Load listing based on url parameter------------------*/ var queryString = window.location.search; console.log(queryString); var urlParams = new URLSearchParams(queryString); var dataset = urlParams.get("dataset"); console.log("dataset = " + dataset); var keyword = urlParams.get("keyword"); console.log("keyword = " + keyword); var group = urlParams.get("group"); console.log("group = " + group); var contributor = urlParams.get("contributor"); console.log("contributor = " + contributor); if (keyword != null) { keyword = keyword.replace("%22", "\""); if (IS_LOGIN){ $("#tourismSearch").val(keyword); } } if (contributor != null) { if (IS_LOGIN){ $("#tourismCompanies").val(contributor).trigger('change'); } } if (group != null && group == "Wellness") { $('#wellness').prop("checked", true).trigger("change"); } if (dataset == null) { if (IS_LOGIN){ $('#isAllCategories').find('a').click(); } else { $('#categoryTypes').find('a').first().click(); } } else { if (CATEGORY_LIST.indexOf(dataset) < 0 && dataset != "Precincts"){ window.location.href = ERROR_PAGE; } else { if (IS_LOGIN){ $(".tourism-offerings-parent-dataset:input[value='" + dataset + "']").siblings("a").click(); } else { $(".tourism-offerings-parent-dataset:input[value='" + dataset + "']").siblings('.tourism-offerings-pre-login-category-select').click(); } } } retrieveTourismOfferings(); }); function retrieveTourismOfferings(page){ $("#loading").show(); var dataset = ""; var types = []; var keyword = ""; var language = $("#language").val(); var sort = $("#tourismListingSort").val(); var sortOrder = "asc"; var groupStr = ""; var pageLimit; var filtersource = ""; var startDate = ""; if (page === undefined) { page = 1; } $('#tourismListing').empty(); $('#tourismListingPagination').empty(); if (IS_LOGIN) { /*------------------Retrieve dataset and types------------------*/ if ($('#isAllCategories').hasClass('active')){ dataset = ALL_CATEGORY_VALUES.toString(); } else { dataset = $('#categoryTypes').find('.list-group-item.active').find('.tourism-offerings-dataset').val(); $('#categoryTypes').find('.list-group-item.active').find('.radio-checkbox-holder').find('input:checked').each(function() { types.push(this.value); }); } /*------------------Retrieve keyword------------------*/ keyword = $("#tourismSearch").val(); if (keyword.replaceAll('"', "") == "" || keyword.replaceAll("'", "") == "") { keyword = ""; } /*------------------Retrieve group------------------*/ var group = []; if ($('#sta').is(":checked")){ group.push($('#sta').val()); } if ($('#wellness').is(":checked")){ group.push($('#wellness').val()); } groupStr = group.join(","); /*------------------Retrieve companies------------------*/ filtersource = $('#tourismCompanies').val().toString(); /*------------------Retrieve Page limit------------------*/ /*pageLimit = $('#filterPageLimit').val();*/ pageLimit = POST_LOGIN_PAGE_LIMIT; /*------------------Retrieve event period------------------*/ if (dataset == "events") { if ($(".flat-month-picker").val()) { startDate = $(".flat-month-picker").val() + "-" + "01"; } } } else { /*------------------Retrieve dataset------------------*/ dataset = $('#categoryTypes').find('.list-group-item.active').find('.tourism-offerings-dataset').val(); /*------------------Retrieve group------------------*/ var group = []; if ($('#sta').is(":checked")){ group.push($('#sta').val()); } if ($('#wellness').is(":checked")){ group.push($('#wellness').val()); } groupStr = group.join(","); /*------------------Retrieve Page limit------------------*/ pageLimit = PRE_LOGIN_PAGE_LIMIT; } /*------------------Retrieve Sort------------------*/ if (keywordTyped) { keywordTyped = false; sort = "score"; sortOrder = "desc"; $("#tourismListingSort").val("score"); } else { if (sort == "lastupdateddate"){ sortOrder = "desc"; } else if (sort == "name") { sortOrder = "asc"; } else if (sort == "score") { sortOrder = "desc"; } } var offset = (page - 1) * pageLimit; var input={ keyword:keyword, dataset:dataset, type:types.toString(), language:language, sort:sort, sortOrder:sortOrder, group:groupStr, offset:offset.toString(), limit:pageLimit.toString(), filtersource:filtersource, startDate:startDate }; $.ajax({ url: "/content/tih/en/tourism-offerings/jcr:content/mainpar/tourism_offerings.tourism-offerings.html", data: input, type: 'POST', contentType: 'application/json', dataType: 'json', success: function(originalData) { /*------------------Generate listing------------------*/ $('#tourismListing').empty(); $('#tourismListingPagination').empty(); $("#loading").hide(); var data = parseScript(originalData); data = data.data; console.log(data); if (data.length > 0) { var tourismListing = "<div class='row row-cols-1 g-4'>"; for(var i = 0;i < data.length; i++){ var uuid = data[i].uuid; var dataset = data[i].dataset; tourismListing += "<div class='col'>"; tourismListing += "<a href='"+ TOURISM_OFFERINGS_DETAIL_PAGE + "?language=" + language + "&dataset=" + dataset + "&uuid=" + uuid + "'>"; tourismListing += "<div class='card rounded-4'>"; tourismListing += "<div class='card-body'>"; tourismListing += "<div class='card-info-holder'>"; tourismListing += "<div class='card-main-info'>"; if (data[i].temporarilyClosed == "Y"){ tourismListing += "<div class='icon-link text-danger'>"; tourismListing += "<span class='material-icons-outlined'>error</span>"; tourismListing += "<span>Temporarily Closed</span>"; tourismListing += "</div>"; } tourismListing += "<h5 class='card-title'>" + getProcessedName(DOMPurify.sanitize(data[i].name)) + "</h5>"; tourismListing += "<p>" + getProcessedDescription(DOMPurify.sanitize(data[i].description)) + "</p>"; if (data[i].startDate && data[i].endDate){ tourismListing += "<div class='icon-link text-primary'>"; tourismListing += "<span class='material-icons-outlined'>calendar_month</span>"; tourismListing += "<span>" + DATE_UTIL.formatDate(data[i].startDate, true) + " - " + DATE_UTIL.formatDate(data[i].endDate, true) + "</span>"; tourismListing += "</div>"; } tourismListing += "</div>"; tourismListing += "<div class='card-sub-info'>"; if ((data[i].companyDisplayName) != "stb" && (data[i].companyDisplayName) != "STB"){ tourismListing += "<div class='card-author'>" + DOMPurify.sanitize(data[i].companyDisplayName) + "</div>"; } else { tourismListing += "<div class='card-author'>Singapore Tourism Board</div>"; } tourismListing += "<div class='card-info-categories'>"; var languageDisplay = []; for (var b = 0; b < data[i].supportedLanguage.length; b++){ if (LANGUAGE_KEY.indexOf(data[i].supportedLanguage[b].toLowerCase()) != -1){ languageDisplay.push(LANGUAGE_VALUE[LANGUAGE_KEY.indexOf(data[i].supportedLanguage[b].toLowerCase())]); } } tourismListing += "<span>" + languageDisplay.join(" | ") + "</span>"; tourismListing += "</div>"; tourismListing += "</div>"; tourismListing += "</div>"; tourismListing += "</div>"; tourismListing += "<div class='card-image'>"; tourismListing += "<div class='card-categories'>"; var datasetIndex = ALL_CATEGORY_VALUES.indexOf(dataset); tourismListing += "<span>" + AEM_CATEGORY_KEY[datasetIndex] + "</span>"; tourismListing += "</div>"; var thumbnail = data[i].thumbnails; var documentsList = data[i].documents; var videosList = data[i].videos; var imagesList = data[i].images; var image = ""; if(thumbnail=="" || thumbnail==undefined || thumbnail==null){ if(documentsList != undefined && documentsList != null && documentsList.length > 0 && imagesList.length == 0 && videosList.length == 0 ){ image = "/etc/designs/tihV2/static/common/images/default-document-image.png"; } else if(videosList != undefined && videosList != null && videosList.length > 0 && imagesList.length == 0){ image = "/etc/designs/tihV2/static/common/images/default-video-image.png"; } else if(imagesList != undefined && imagesList != null && imagesList.length > 0){ image = "/etc/designs/tihV2/static/common/images/default-image.png"; } else { image = "/etc/designs/tihV2/static/common/images/default-image.png"; } } else{ var image_url =data[i].thumbnails[0].url; var image_uuid =data[i].thumbnails[0].uuid; if(image_uuid !="" && image_uuid !=null && image_uuid != undefined){ var mediaFileType = "Medium%20Thumbnail"; image="/bin/GetMediaByUuid?uuid="+image_uuid+"&fileType="+mediaFileType+"&mediaType=image"; } else if (image_url.indexOf("v1/download/uuid/") == -1){ image = image_url; } } tourismListing += "<img data-src='" + image + "' alt='' class='img-cover image-source' data-object-fit='cover'>"; tourismListing += "</div>"; tourismListing += "</div>"; tourismListing += "</a>"; tourismListing += "</div>"; } tourismListing += "</div>"; $('#tourismListing').append(tourismListing); attachLoadAndErrorEvents(); /*------------------Generate results label------------------*/ var totalRecords = originalData.totalRecords; var tourismListingPaginationResults = "<span>Showing <strong>" + (offset + 1) + "-" + (offset + data.length) + "</strong> out of " + totalRecords + " results</span>"; $("#tourismListingPaginationResults").empty().append(tourismListingPaginationResults); if (IS_LOGIN) { /*------------------Generate pagination------------------*/ generateTourismOfferingsPostLoginPagination(totalRecords, pageLimit, page) } } else { var tourismListing = "<div class='row row-cols-1 g-4'>"; tourismListing += "<span>No Record Found</span>"; tourismListing += "</div>"; $('#tourismListing').append(tourismListing); $("#tourismListingPaginationResults").empty().append(""); } //Analytics Tracking if (typeof AnalyticsService != 'undefined' && typeof AnalyticsService.ProductExperienceListing != 'undefined') { var analyticsKeyword = $('#tourismSearch').val(); var contentLang = $('#language :selected').text().trim(); var dataset = $('#categoryTypes').find('.list-group-item.active').find('.tourism-offerings-dataset').val(); AnalyticsService.ProductExperienceListing.trackSearch(analyticsKeyword, changeDatasetForAnalytics(dataset), types.toString(), contentLang, filtersource, groupStr); } }, error: function(XMLHttpRequest, textStatus, errorThrown) { } }); } function getProcessedName(name) { var language = $("#language").val(); var isEnglish = false; if (language == "en"){ isEnglish = true; } if(typeof(name) !== "string" || name.length <= 0){ return "Untitled"; } if(isEnglish === true){ if(name.length > 50){ return name.substring(0,50) + " ..."; } } else { if(name.length > 20){ return name.substring(0,20) + " ..."; } } return name; } function getProcessedDescription(description) { var language = $("#language").val(); var isEnglish = false; if (language == "en"){ isEnglish = true; } if(typeof(description) !== "string" || description.length <= 0){ return "No description available"; } if(isEnglish === true){ if(description.length > 80){ return description.substring(0,80) + " ..."; } } else { if(description.length > 40){ return description.substring(0,40) + " ..."; } } return description; } //UI functions $(document).ready(function(){ $('.select2-holder > select').select2({ width: '100%' }); }); function attachLoadAndErrorEvents() { var imageSourceElements = document.querySelectorAll(".image-source"); imageSourceElements.forEach(function(imageSourceElement) { var srcUrl = imageSourceElement.getAttribute("data-src"); imageSourceElement.onload = function() { MEDIA_UTIL.onSuccessfulImageLoad(imageSourceElement); }; imageSourceElement.onerror = function() { MEDIA_UTIL.onErrorImageLoad(imageSourceElement); }; imageSourceElement.setAttribute("src", srcUrl); }); } </script></div> </div> <footer class="sgds footer"> <section class="footer-top"> <div class="container-xxl"> <div class="footer-header"> <div class="row"> <div class="col-lg-6"> <div class="title">Tourism Information &amp; Services Hub (TIH)</div> <div class="description d-none">TIH is a digital resource platform for businesses to access relevant information on Singapore's tourism offerings and travel software services.</div> </div> </div> </div> <div class="footer-items"> <div class="row"> <div class="col-lg-9"> <div class="row row-cols-1 row-cols-lg-6"> <div class="col flex-fill"> <div class="footer-links"> <div class="title">About TIH</div> <ul class="links"> <li><a class='analytics-footer-click' analytics-footer-name='About Us' url-link="/content/tih/en/about-tih/about-us.html">About Us</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Business Directory' url-link="/content/tih/en/about-tih/business-directory.html">Business Directory</a></li> </ul> </div> </div> <div class="col col-lg-5 flex-fill"> <div class="footer-links"> <div class="title">Tourism Offerings</div> <div class="row"> <div class="col-6"> <ul class="links"> <li><a class='analytics-footer-click' analytics-footer-name='Accommodation' url-link="/content/tih/en/tourism-offerings.html?dataset=Accommodation">Accommodation</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Attractions' url-link="/content/tih/en/tourism-offerings.html?dataset=Attractions">Attractions</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Events - Business' url-link="/content/tih/en/tourism-offerings.html?dataset=MICEEvent">Events - Business</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Events - Leisure' url-link="/content/tih/en/tourism-offerings.html?dataset=Event">Events - Leisure</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Food &amp; Beverages' url-link="/content/tih/en/tourism-offerings.html?dataset=FoodBeverages">Food &amp; Beverages</a></li> </ul> </div> <div class="col-6"> <ul class="links"> <li><a class='analytics-footer-click' analytics-footer-name='Malls &amp; Shops' url-link="/content/tih/en/tourism-offerings.html?dataset=Shopping">Malls &amp; Shops</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Precincts' url-link="/content/tih/en/tourism-offerings.html?dataset=Precincts">Precincts</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Tours' url-link="/content/tih/en/tourism-offerings.html?dataset=Tours">Tours</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Wellness' url-link="/content/tih/en/tourism-offerings.html?group=Wellness">Wellness</a></li> </ul> </div> </div> </div> </div> <div class="col flex-fill"> <div class="footer-links"> <div class="title">Media Assets</div> <ul class="links"> <li><a class='analytics-footer-click' analytics-footer-name='Images' url-link="/content/tih/en/media-assets.html?mediaType=images">Images</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Videos' url-link="/content/tih/en/media-assets.html?mediaType=videos">Videos</a></li> <li><a class='analytics-footer-click' analytics-footer-name='3D Models' url-link="/content/tih/en/media-assets.html?mediaType=3dmodels">3D Models</a></li> </ul> </div> </div> <div class="col flex-fill"> <div class="footer-links"> <div class="title"><a class='analytics-footer-click' analytics-footer-name='API Services' url-link="/content/tih/en/api-services.html">API Services</a></div> </div> <div class="footer-links"> <div class="title">Support</div> <ul class="links"> <li><a class='analytics-footer-click' analytics-footer-name='Help Centre' url-link="/content/tih/en/support/help-centre.html">Help Centre</a></li> <li><a class='analytics-footer-click' analytics-footer-name='FAQs' url-link="/content/tih/en/header/faq.html">FAQs</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Contact Us' url-link="/content/tih/en/support/help-centre.html#contact-us">Contact Us</a></li> </ul> </div> </div> </div> <div class="row row-cols-1"> <div class="footer-links"> <div class="title">Other STB Sites</div> <div class="row row-cols-1 row-cols-lg-2"> <div class="col"> <ul class="links"> <li><a class='analytics-footer-click' analytics-footer-name='STB Corporate Website' href="https://www.stb.gov.sg/content/stb/en.html" target="_blank" rel="noopener noreferrer">STB Corporate Website</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Singapore Exhibition &amp; Convention Bureau (SECB)' href="https://www.visitsingapore.com/mice/en/" target="_blank" rel="noopener noreferrer">Singapore Exhibition &amp; Convention Bureau (SECB)</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Singapore Tourism Analytics Network (Stan)' href="https://stan.stb.gov.sg/content/stan/en/home.html" target="_blank" rel="noopener noreferrer">Singapore Tourism Analytics Network (Stan)</a></li> </ul> </div> <div class="col"> <ul class="links"> <li><a class='analytics-footer-click' analytics-footer-name='Singapore Tourism Awards' href="https://www.singaporetourismawards.gov.sg/" target="_blank" rel="noopener noreferrer">Singapore Tourism Awards</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Travel Agents &amp; Tourist Guides Licensing System (TRUST)' href="https://trust.stb.gov.sg/" target="_blank" rel="noopener noreferrer">Travel Agents & Tourist Guides Licensing System (TRUST)</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Visit Singapore (Tourist Information)' href="https://www.visitsingapore.com/" target="_blank" rel="noopener noreferrer">Visit Singapore (Tourist Information)</a></li> </ul> </div> </div> </div> </div> </div> <div class="col-lg-3"> <div class="footer-links"> <div class="footer-logos"> <div> <a class='analytics-footer-click' analytics-footer-name='Tcube' target="_blank" rel="noopener noreferrer" href="https://www.stb.gov.sg/content/stb/en/trade-events-and-resources/Tcube.html"> <img src="/etc/designs/tihV2/static/components/tih-base/logo_tcube_transparent.png" alt="Tcube logo" style="height: 60px;"> </a> </div> <div> <a class='analytics-footer-click' analytics-footer-name='visitsingapore' target="_blank" rel="noopener noreferrer" href="https://www.visitsingapore.com/en/"> <img src="/etc/designs/tihV2/static/components/tih-base/logo_passion_made_possible.svg" alt="Passion Made Possible logo" style="height: 40px;"> </a> <a class='analytics-footer-click' analytics-footer-name='stb' target="_blank" rel="noopener noreferrer" href="https://www.stb.gov.sg/content/stb/en.html"> <img src="/etc/designs/tihV2/static/components/tih-base/logo_stb.svg" alt="STB logo" style="height: 48px;"> </a> </div> </div> </div> <div class="footer-links"> <div class="title">Connect with Us</div> <div class="footer-social"> <a class='analytics-footer-click' analytics-footer-name='linkedin' target="_blank" rel="noopener noreferrer" href="https://www.linkedin.com/company/singapore-tourism-board"> <i class="fa-brands fa-linkedin"></i> </a> </div> </div> </div> </div> </div> </div> </section> <section class="footer-bottom"> <div class="container-xxl"> <div class="footer-mandatory-links"> <div class="row"> <div class="col"> <ul> <li><a class='analytics-footer-click' analytics-footer-name='Report Vulnerability' href="https://tech.gov.sg/report_vulnerability" target="_blank" rel="noopener noreferrer">Report Vulnerability</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Privacy Statement' href="https://www.stb.gov.sg/content/stb/en/footer/privacy-statement.html" target="_blank" rel="noopener noreferrer">Privacy Statement</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Terms of Use' url-link="/content/tih/en/footer/terms-of-use.html">Terms of Use</a></li> <li><a class='analytics-footer-click' analytics-footer-name='Sitemap' url-link="/content/tih/en/header/sitemap.html">Sitemap</a></li> </ul> </div> </div> </div> <div class="footer-copyrights"> <div class="row"> <div class="col"> <div class="d-flex justify-content-lg-end"> &copy; 2024 Government of Singapore. <br class="d-md-none">Last Updated 03 April 2024. </div> </div> </div> </div> </div> </section> </footer> </body> </html> <script src="/etc/designs/tihV2/static/common/analyticsjs/footer.min.7211592004dbc7c8ed6d7fb7173f06a2.js" nonce="n2ix81kaxuda"></script> <script src="/etc/designs/tihV2/static/components/tih-base/core.js" nonce="n2ix81kaxuda"></script> <script nonce="n2ix81kaxuda"> $(document).ready(function() { $('#notification-close').on('click', function () { setCookie("isShowBanner", "false", 30*365); }); $("#searchInputHeader").focus(showHeaderSuggestions); var currentUrl = window.location.href; if (currentUrl.includes("about-tih")) { $("#headerAboutTIH").addClass("active"); } else if (currentUrl.includes("tourism-offerings")) { $("#headerTourismOfferings").addClass("active"); } else if (currentUrl.includes("media-assets")) { $("#headerMediaAssets").addClass("active"); } else if (currentUrl.includes("api-services")) { $("#headerAPIServices").addClass("active"); } else if (currentUrl.includes("support") || currentUrl.includes("header")) { $("#headerSupport").addClass("active"); } }); /* ==================================== Search AutoComplete ==================================== */ $("#searchInputHeader").autocomplete({ delay: 100, appendTo: '#suggestions-container-header', lookup: function (request, response) { var q = $("#searchInputHeader").val(); var dataString ={q:q,searchResourceType:"content"}; /*---------- AutoComplete API Content ---------------------*/ $.ajax({ url: "/content/tih/en/search-result/jcr:content/mainpar/search_result.search-autocomplete.html", data: dataString, type: 'POST', contentType: 'application/json', dataType: 'json', success: function(data) { var availableTags= []; //TODO need to set format result to availableTags var respJsonObj = JSON.parse(JSON.stringify(data)); var obj1 = respJsonObj.data.product; for(var i=0;i<obj1.length;i++){ availableTags.push(String(obj1[i].suggestions)); } var obj2 = respJsonObj.data.product_tag; for(var i=0;i<obj2.length;i++){ availableTags.push(String(obj2[i].suggestions)); } /*---------- AutoComplete API Media ---------------------*/ var q1 = $("#searchInputHeader").val(); var dataString1 ={q:q1,searchResourceType:"media"}; var ajx = $.ajax({ url : "/content/tih/en/search-result/jcr:content/mainpar/search_result.search-autocomplete.html", type: "POST", data: dataString1, contentType: 'application/json', dataType: 'json' }); ajx.always(function(data){ //TODO need to set format result to availableTags var respJsonObj = JSON.parse(JSON.stringify(data)); var obj1 = respJsonObj.data.media_library; var obj2 = respJsonObj.data.media_library_tag; for(var i=0;i<obj1.length;i++){ availableTags.push(String(obj1[i].suggestions)); } var obj2 = respJsonObj.data.media_library_tag; for(var i=0;i<obj2.length;i++){ availableTags.push(String(obj2[i].suggestions)); } var uniqueAvailableTags = []; var suggestionsJson =[]; for(var i=0;i<availableTags.length;i++){ if(uniqueAvailableTags.indexOf(availableTags[i]) == -1){ uniqueAvailableTags.push(availableTags[i]); } } uniqueAvailableTags.sort( function(a,b) { a = a? a.toLowerCase() : a; b = b? b.toLowerCase() : b; return a === b ? 0 : a > b ? 1 : -1; }); for(var i=0;i<uniqueAvailableTags.length;i++){ suggestionsJson.push({value:uniqueAvailableTags[i]}); } tagsJson = { "suggestions": suggestionsJson }; if(uniqueAvailableTags.length > 0 ){ $("#suggestions-container-header").removeClass("d-none"); $("#suggestions-container-header").css("display", "block"); } else { $("#suggestions-container-header").addClass("d-none"); $("#suggestions-container-header").css("display", "none"); } response(tagsJson); }); } }); } }); function showHeaderSuggestions() { $("#suggestions-container-header").css("display", "block"); $(document).bind("click.headerSuggestions", function(e){ if(!$(e.target).is("#suggestions-container-header, #searchInputHeader")) hideHeaderSuggestions(); }); } function hideHeaderSuggestions(){ $("#suggestions-container-header").css("display", "none"); $(document).unbind("click.headerSuggestions"); } function getCookie(cookieName) { var name = cookieName + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for(var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } function setCookie(cookieName, cookieValue, exDays) { var d = new Date(); d.setTime(d.getTime() + (exDays * 24 * 60 * 60 * 1000)); var expires = "expires=" + d.toGMTString(); document.cookie = cookieName + "=" + cookieValue + ";" + expires + ";path=/"; } </script> <script nonce="n2ix81kaxuda" type="text/javascript"> var t = new Date(); function getUrlParam(name) { var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.search); if (results == null) { return null; } else { return decodeURI(results[1]) || 0; } } jQuery(document).ready(function () { var isAuthorMode = false; var loginExpireTime = 0; loginExpireTime = 30; var loginExtensionExpireTime = 0; loginExtensionExpireTime = 5; if (!isAuthorMode && "" != "" && loginExpireTime > 0) { initSessionMonitor(60000, loginExpireTime, loginExpireTime - loginExtensionExpireTime, "/bin/usersignout"); } /*var requestSession = $.ajax({ type: "GET", dataType: "json", url: "<currentPage.getPath()%>/jcr:content.profile?"+t.getTime() }); requestSession.always(function(jqXHR){*/ /*});*/ if (getUrlParam('logout') == 'true') { var myWindow = window.open("https://tih-iam.stb.gov.sg/iamsso/logout", "_blank", "toolbar=yes,scrollbars=yes,resizable=yes,top=-100,left=-100,width=400,height=400"); setTimeout(function () { myWindow.close(); }, 10000); } /* var urlParams = new URLSearchParams(window.location.search); if(urlParams.get('logout') =='true'){ var myWindow = window.open("http://tih-iam-sit.stb.gov.sg/iamsso/logout", "_blank", "toolbar=yes,scrollbars=yes,resizable=yes,top=-100,left=-100,width=400,height=400"); setTimeout(function(){ myWindow.close(); }, 10000); }*/ //Analytics Tracking AnalyticsService.DeveloperPortal.init(); }); </script> <script nonce="n2ix81kaxuda"> /* Added delay for Adobe Analytics Header and Footer tracking*/ $(document).ready(function(){ $(".analytics-header-click").click(function(evt){ var link = this.getAttribute("url-link").toString(); setTimeout(function() { window.location.href = link; }, 500); }); $(".analytics-footer-click").click(function(evt){ var link = this.getAttribute("url-link").toString(); setTimeout(function() { window.location.href = link; }, 500); }); }); </script>

Pages: 1 2 3 4 5 6 7 8 9 10