<!DOCTYPE HTML>
<!--[if lte IE 7]> <html class="ie7"> <![endif]-->
<!--[if IE 8]>     <html class="ie8"> <![endif]-->
<!--[if IE 9]>     <html class="ie9"> <![endif]-->
<!--[if IE 10]>     <html class="ie10"> <![endif]-->
<!--[if !IE]><!--><html class="non-ie" xml:lang="en" lang="en"><!--<![endif]-->
<head>
<title>Reservation System - Waterloo Hub Hotel</title>

<script>
    if(document.location.href.indexOf('cancel') === -1) { 
        document.location.href = 'https://waterloohubhotel.com/bookings/';
    }
</script>

<meta name="keywords" content="">
<meta name="description" content="">
<link rel="shortcut icon" href="//bookings.waterloohubhotel.com/files/images/favicon.ico">
<link rel="canonical" href="/sitemap.xml">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<!-- bke stylesheets/javascript -->
<link href='//fonts.googleapis.com/css?family=Open+Sans:400,300,100,500,600,700' rel='stylesheet' type='text/css'>

<link rel="stylesheet" href="//bookings.waterloohubhotel.com/files/css/bke-reset.css" type="text/css">
<link rel="stylesheet" href="//bookings.waterloohubhotel.com/files/css/style-availtable.css" type="text/css">
<link rel="stylesheet" href="//bookings.waterloohubhotel.com/files/css/jquery.plugins.css" type="text/css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css">
<link rel="stylesheet" href="//use.fontawesome.com/releases/v5.10.1/css/all.css" integrity="sha384-wxqG4glGB3nlqX0bi23nmgwCSjWIW13BdLUEYC4VIMehfbcro/ATkyDsF/AbIOVe" crossorigin="anonymous">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/material-design-iconic-font/2.2.0/css/material-design-iconic-font.min.css">
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/themes/base/jquery-ui.css" type="text/css">
<link rel="stylesheet" href="//bookings.waterloohubhotel.com/files/css/jquery.rating.css" type="text/css">
<link rel="stylesheet" href="//bookings.waterloohubhotel.com/files/css/calendar.css" type="text/css">
<link rel="stylesheet" href="//bookings.waterloohubhotel.com/files/css/bke.scss" type="text/css">
<!-- <link rel="stylesheet" href="//bookings.waterloohubhotel.com/files/css/bke.comp.css" type="text/css"> -->
<link rel="stylesheet" href="//bookings.waterloohubhotel.com/files/css/print.scss" type="text/css" media="print">
<link rel="stylesheet" href="//bookings.waterloohubhotel.com/bookings/bkecss" type="text/css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/i18n/jquery-ui-i18n.min.js"></script>
<script src="//bookings.waterloohubhotel.com/files/js/jquery.plugins.js" type="text/javascript"></script>

<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBu-aZ_fS_DXfN-Dz_0YPY-9622cP0AY5I"></script>

<link rel="stylesheet" href="//bookings.waterloohubhotel.com/files/css/bke-searchbox.scss">

<!--[if lt IE 9]>
  <script src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
  <script src="//oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
  <script src="//bookings.waterloohubhotel.com/files/js/disable-response.js" type="text/javascript"></script>
<![endif]-->


<script src="//www.tripadvisor.com/js3/conversion/pixel.js"></script>
</head>

 

 <!-- IF microsite -->
<body class="pagelayout lang-en microsite">
 <!-- ENDIF microsite -->

	<script>
var $buoop = {vs:{i:9,f:25,o:12.1,s:7},c:2};
function $buo_f(){
 var e = document.createElement("script");
 e.src = "//browser-update.org/update.min.js";
 document.body.appendChild(e);
};
try {document.addEventListener("DOMContentLoaded", $buo_f,false)}
catch(e){window.attachEvent("onload", $buo_f)}
</script>

<header class="palette-bkgd-1" id="na-header">
	<div class="row">
		<div class="container">
			<!-- DESKTOP -->
			<div class="btn-home pull-left" style="display:none;">
				<a href="https://waterloohubhotel.com/bookings/" class="tip" title="Main website"><i class="zmdi zmdi-home"></i> <span>HOME</span></a>
			</div>
			<div class="bke-settings">
        
				

				<!-- BEGIN bke_currency_selector -->
				<div class="setting-curr">
					<div class="selected-curr-symbol"></div>
					
<select id="curr_selector" onchange="if (typeof ch_currency === 'function'){ ch_currency(this)}" class="bke_currency_selector">
      <option value="49" >INR</option>
      <option value="48" >MXN</option>
      <option value="47" >CZK</option>
      <option value="2" >EUR</option>
      <option value="4" >GBP</option>
      <option value="3" selected>USD</option>
      <option value="12" >CAD</option>
      <option value="11" >AUD</option>
      <option value="7" >BRL</option>
      <option value="43" >CHF</option>
      <option value="6" >DKK</option>
      <option value="9" >EGP</option>
      <option value="10" >MYR</option>
      <option value="1" >PLN</option>
      <option value="5" >ZAR</option>
      <option value="44" >NOK</option>
      <option value="45" >SEK</option>
      <option value="46" >AED</option>
      <option value="50" >OMR</option>
      <option value="51" >IDR</option>
      <option value="52" >GHS</option>
      <option value="53" >BHD</option>
      <option value="54" >SGD</option>
      <option value="55" >THB</option>
      <option value="57" >PEN</option>
      <option value="58" >MAD</option>
</select>
<script type="text/javascript">
(function(funcName, baseObj) {
    funcName = funcName || "docReady";
    baseObj = baseObj || window;
    var readyList = [];
    var readyFired = false;
    var readyEventHandlersInstalled = false;
    function ready() {
        if (!readyFired) {
            readyFired = true;
            for (var i = 0; i < readyList.length; i++) {
                readyList[i].fn.call(window, readyList[i].ctx);
            }
            readyList = [];
        }
    }

    function readyStateChange() {
        if ( document.readyState === "complete" ) {
            ready();
        }
    }
    baseObj[funcName] = function(callback, context) {
        if (readyFired) {
            setTimeout(function() {callback(context);}, 1);
            return;
        } else {
            readyList.push({fn: callback, ctx: context});
        }
        if (document.readyState === "complete") {
            setTimeout(ready, 1);
        } else if (!readyEventHandlersInstalled) {
            if (document.addEventListener) {
                document.addEventListener("DOMContentLoaded", ready, false);
                window.addEventListener("load", ready, false);
            } else {
                document.attachEvent("onreadystatechange", readyStateChange);
                window.attachEvent("onload", ready);
            }
            readyEventHandlersInstalled = true;
        }
    }
})("docReady", window);

var set_hover = function($) {
   
}


    Object.keys = Object.keys || (function () {
        var hasOwnProperty = Object.prototype.hasOwnProperty,
            hasDontEnumBug = !{toString:null}.propertyIsEnumerable("toString"),
            DontEnums = [
                'toString',
                'toLocaleString',
                'valueOf',
                'hasOwnProperty',
                'isPrototypeOf',
                'propertyIsEnumerable',
                'constructor'
            ],
            DontEnumsLength = DontEnums.length;
      
        return function (o) {
            if (typeof o != "object" && typeof o != "function" || o === null)
                throw new TypeError("Object.keys called on a non-object");
         
            var result = [];
            for (var name in o) {
                if (hasOwnProperty.call(o, name))
                    result.push(name);
            }
         
            if (hasDontEnumBug) {
                for (var i = 0; i < DontEnumsLength; i++) {
                    if (hasOwnProperty.call(o, DontEnums[i]))
                        result.push(DontEnums[i]);
                }   
            }
         
            return result;
        };
    })();

    // START    
    var currChanger = (function(){
        var availableCurr    = {"53":{"rate":"0.4356","side":"r","name":"Bahraini dinar","symbol":"BHD","isocode":"BHD"},"7":{"rate":"5.9515","side":"r","name":"Real","symbol":"R$","isocode":"BRL"},"57":{"side":"r","rate":"3.9907","isocode":"PEN","name":"Peruvian sol","symbol":"S/"},"52":{"rate":"12.7013","side":"r","name":"Ghanaian cedi","symbol":"GH&#x20B5;","isocode":"GHS"},"10":{"rate":"4.6545","side":"r","name":"Malaysian Ringgit","symbol":"RM","isocode":"MYR"},"50":{"side":"r","rate":"0.4436","isocode":"OMR","name":"Omani Rial","symbol":"OMR"},"11":{"rate":"1.6691","side":"r","name":"Australian dollar","symbol":"$","isocode":"AUD"},"51":{"rate":"19582.5271","side":"r","symbol":"Rp","name":"Indonesian rupiah","isocode":"IDR"},"6":{"side":"r","rate":"7.4728","isocode":"DKK","symbol":"kr.","name":"Danish Krone"},"5":{"side":"r","rate":"19.5325","isocode":"ZAR","name":"South African rand","symbol":"ZAR "},"46":{"side":"r","rate":"4.2380","isocode":"AED","name":"Dirham","symbol":"AED"},"47":{"side":"l","rate":"24.5112","isocode":"CZK","symbol":"K&#x10D;","name":"Czech Koruna"},"44":{"side":"r","rate":"11.2270","isocode":"NOK","symbol":"kr","name":"Norwegian Krone"},"48":{"symbol":"$","name":"Mexican Peso","isocode":"MXN","rate":"20.5989","side":"r"},"58":{"side":"r","rate":"10.8262","isocode":"MAD","name":"Moroccan dirham","symbol":"DH"},"43":{"side":"r","rate":"0.9217","isocode":"CHF","name":"Swiss Franc","symbol":"CHF"},"55":{"side":"l","rate":"37.6374","isocode":"THB","symbol":"&#xE3F;","name":"Thai baht"},"49":{"rate":"107.2750","side":"r","name":"Indian Rupee","symbol":"&#x20B9;","isocode":"INR"},"4":{"rate":"0.8718","side":"r","symbol":"&pound;","name":"Pound Sterling","isocode":"GBP"},"9":{"isocode":"EGP","name":"Egyptian Pound","symbol":"E&pound;","side":"r","rate":"62.5995"},"1":{"rate":"4.2768","side":"l","name":"Zloty","symbol":"z&#x142;","isocode":"PLN"},"54":{"rate":"1.4830","side":"r","symbol":"SGD","name":"Singapore dollar","isocode":"SGD"},"3":{"rate":"1.1538","side":"r","symbol":"$","name":"US Dollar","isocode":"USD"},"2":{"name":"Euro","symbol":"&euro;","isocode":"EUR","rate":"1.0000","side":"r"},"45":{"isocode":"SEK","name":"Swedish Krona","symbol":"kr","side":"r","rate":"10.8827"},"12":{"symbol":"$","name":"Canadian dollar","isocode":"CAD","rate":"1.6063","side":"r"}};
        var defaultCurrency  = 4;
        var currentCurrency  = false;//4;
        var changeCurrency   = false;
        var defaultClassName = 'curr_chan';
        var settings         = {
            defaultClassName : defaultClassName,
            changeCallback   : false,
            noRound          : false,
            replaceWithin    : false,
            ignoreOwnCurr    : false,
            obj              : false,
            objName          : false,
            arr              : false,
            arrName          : false,
            exceptIdLike     : false,
            onRoom           : false,
        };
        var bke_selected_currency = 'bke_selected_currency';
        var bke_selected_currency_sbox = 'bke_selected_currency_sbox';
        var origPriceObjs = {};
        var origPriceArr = {};
        var currentObjCurr = {};
        var currentArrCurr = {};
        var changerFunction = [];
        var currDataOrigin = {};
        var currData = {};
        var currDataCurrency = {};
        var currDataId = 0;
        var origCurrency = {};
        var currRoomCurrency = {};
        return {
            // changes currency
            setCurrency  : setCurrency,            
            addSymbol    : addSymbol,
            addChangerFunction : addChangerFunction,
            setCurrencyOnMultiple : setCurrencyOnMultiple,
            // Settings that needed to be called before replacing 
            // currency when applicable
            changeCallback : changeCallback,
            getDefaultCurrency:getDefaultCurrency,
            getCurrentCurrency:getCurrentCurrency,
            exceptIdLike   : exceptIdLike,
            replaceWithin  : replaceWithin,
            ignoreOwnCurr  : ignoreOwnCurr,
            onObject       : onObject,
            onRoom         : onRoom,
            onArray        : onArray,
            // rest of changes
            getCurrentCurrencySymbol : getCurrentCurrencySymbol,
            getRate        : getRate,
            noRound	       : noRound,
        }

        function noRound () {
        	settings.noRound = true;
        	return this;
        }

        function logErr (error) {
        }

        function exceptIdLike (regex) {
            settings.exceptIdLike = regex;
            return this;
        }

        function addChangerFunction(name) {        	
            var add = true;
            try {
                if (changerFunction.indexOf(name) >= 0) {
                    add = false;
                }
            } catch(error) {logErr(error);}
            if ( add )
                changerFunction.push(name);
            return this;
        }

        function onObject(o,name) {
            settings.obj = o;
            settings.objName = name;
            return this;
        }

        function onArray(a,name) {
            settings.arr = a;
            settings.arrName = name;
            return this;
        }

        function changeCallback(c) {
            settings.changeCallback = c;
            return this;
        }

        function replaceWithin(c) {
            settings.replaceWithin = c;
            return this;
        }

        function onRoom(c) {
            settings.onRoom = c;
            return this;
        }

        function ignoreOwnCurr() {
            settings.ignoreOwnCurr = true;
            return this;
        }

        function getCurrentCurrency(obj) {
            if (currentCurrency && currentCurrency != 0) {
                return currentCurrency;
            } else  {
                return getDefaultCurrency();
            }
        }

        function getCurrentCurrencySymbol (obj) {
            if (!obj) {
                return availableCurr[getDefaultCurrency()]['symbol'];
            } else {
                return availableCurr[getCurrencyFromSpan(obj)]['symbol'];
            }
        }

        function setCurrencyOnMultiple (to) {        
            if (changerFunction.length > 0) {
                for (var i = 0; i < changerFunction.length; i++) {
                    changerFunction[i](false,to);
                };
            }
        }

        // retrieves default currency for specified room when necessary
        // this required onRoom switch to define id of room to find '#bke_room_currency'
        function getDefaultCurrency () {
            var curr = defaultCurrency;
            if (settings.onRoom && !settings.onRoom == '') {
                if (origCurrency[settings.room]) {
                    curr = origCurrency[settings.room];
                } else {
                    try {
                        curr = document.querySelectorAll('#bke_room_currency'+settings.onRoom)[0].value;
                        origCurrency[settings.onRoom] = curr;
                    } catch (error) {logErr('Cannot find default currency for room '+settings.onRoom);} 
                }
            }
            return curr;
        }

        function currChangerCurrency() {
            var curr = defaultCurrency;
            try {
                curr = document.querySelectorAll('#curr_selector')[0].value;
            } catch (error) {logErr('Cannot find default currency changer value');} 
            return curr;
        }

        function clearData() {
        	currData = {} ;
        }

        // setting currency to values on page with curr_chan class
        function setCurrency (to, clear) {        	
            if (!to) 
                to = currChangerCurrency();
            if (!availableCurr[to] || to == 0) 
                to = getDefaultCurrency();
            if (clear)	
            	clearData();
            if (settings.obj && settings.objName) {
                if (!currentObjCurr[settings.objName])
                    currentObjCurr[settings.objName] = getDefaultCurrency();
                if (currentObjCurr[settings.objName] != to) {
                    changedObject = changeObjectCurrencies(currentObjCurr[settings.objName],to);
                    currentObjCurr[settings.objName] = to;
                    returnObj = changedObject;
                } else {
                    returnObj = settings.obj;
                }
            } else if (settings.arr && settings.arrName && settings.arr.length > 0){
                if (!currentArrCurr[settings.arrName])
                    currentArrCurr[settings.arrName] = getDefaultCurrency();
                if (currentObjCurr[settings.arrName] != to) {
                    changedArray = changeArrayCurrencies(currentArrCurr[settings.arrName],to);
                    currentArrCurr[settings.arrName] = to;
                    changeElementCurrencies(false,to);
                    returnObj = changedArray;
                } else {
                    returnObj = settings.arr;
                }
            } else {            
                changeElementCurrencies(false,to, clearData);
                returnObj = this;
            }
            
            if (settings.callback) settings.callback(to);
            cleanup();            
            return returnObj;
        }

        function changeArrayCurrencies(from, to) {
            if (!origPriceArr[from])
                origPriceArr[from] = {};
            if (!origPriceArr[from][settings.arrName])
                    origPriceArr[from][settings.arrName] = settings.arr;
            if (!origPriceArr[to])
                origPriceArr[to] = {};
            if (origPriceArr[to][settings.arrName])
                return origPriceArr[to][settings.arrName];

            changedArr = recalcArr(settings.arr,from,to);
            origPriceArr[to][settings.arrName] = changedArr;
            return changedArr;
        }

        function recalcArr(arr,from,to) {
            var manip = [];
            changeArrNode(arr, manip, from, to);
            if (manip.length > 0)
                manip = manip[0];
            return manip;
        }

        function changeArrNode(arr, manip, from, to) {
            if (arr) {
                if (Object.prototype.toString.call(arr) === '[object Array]') {
                    manip.push([]);
                    for (var i=0; i < arr.length; i++ ) {
                        changeArrNode(arr[i], manip[(manip.length-1)], from, to);
                    }
                } else {
                    manip.push(changeObjValue(arr, from, to));
                }
            }
        }

        function changeObjectCurrencies (from,to) {
            if (!origPriceObjs[from])
                origPriceObjs[from] = {};
            if (!origPriceObjs[from][settings.objName])
                    origPriceObjs[from][settings.objName] = settings.obj;
            if (!origPriceObjs[to])
                origPriceObjs[to] = {}
            if (origPriceObjs[to][settings.objName])
                return origPriceObjs[to][settings.objName];

            changedObj = recalcObj(settings.obj,from,to);
            origPriceObjs[to][settings.objName] = changedObj;
            return changedObj;
        }

        function recalcObj(obj,from,to) {
            var manip = {};
            changeObjNode(obj, manip, from, to);
            return manip;
        }

        function changeObjNode (obj, manip, from, to) {
            if (Object.prototype.toString.call(obj) === '[object Object]') {
                var keys = Object.keys(obj);
                for (var i=0; i < keys.length; i++ ) {
                    manip[keys[i]] = {};
                    if (Object.prototype.toString.call(obj[keys[i]]) !== '[object Object]') {
                        manip[keys[i]] = changeObjValue(obj[keys[i]], from, to);
                    } else {
                        changeObjNode(obj[keys[i]], manip[keys[i]], from, to);
                    }
                }
            } else {
                manip = changeObjValue(obj[keys[i]], from, to)(a);
            }
        }

        function changeObjValue (value,from,to) {
            if (value === 0 || value === '0') {
                return 0;
            }
            return addSymbol(exchangeRate(getRate(value), from, to),to);
        }

        function hasClass(ele,cls) {
            return !!ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
        }

        function addClass(ele,cls) {
            if (!hasClass(ele,cls)) ele.className += " "+cls;
        }

        function setCurrSpanData(obj) {
            var id = currDataId++;
            var className = 'curr_data'+id;            
            addClass(obj,className);
            return id;
        }

        function getSpanCurrency (obj,from,to) {
            id = getDataId(obj);

            currentValue = getObjValue(obj,from);

            if (id) {
                if (!currData[from])
                    currData[from] = {}
                if (!currData[from][id]){
                    if (!isNaN(currentValue)) {
                        currData[from][id] = currentValue;
                    }
                }
                if (!currData[to])
                    currData[to] = {};
                if (currData[to][id]) {
                    return currData[to][id];
                }
            } else {
                id = setCurrSpanData(obj);
                if (from == to)
                    return currentValue;
            }

            return false;            
        }

        function getDataId (obj) {
            classes = obj.className.split(' ');
            
            if (classes.length > 0) {
                for (var i = classes.length - 1; i >= 0; i--) {
                    match = classes[i].match(/curr_data(\d*)/);
                    if (match && match[1]) 
                        return match[1];
                }
            }
            return false;
        }
        
        function getCurrencyFromSpan(obj) {
            id = getDataId(obj);
            
            if (id) {
                if (currDataCurrency[id]) {
                    return currDataCurrency[id]
                } else {
                    currDataCurrency[id] = getDefaultCurrency();
                    return currDataCurrency[id];
                }
            } else {
                id = setCurrSpanData(obj);
                currDataCurrency[id] = getDefaultCurrency();
                return currDataCurrency[id];
            }
        }

        function setCurrencyToSpan(obj,newValue) {
            classes = obj.className.split(' ');
            
            if (classes.length > 0) {
                for (var i = classes.length - 1; i >= 0; i--) {
                    match = classes[i].match(/curr_data(\d*)/);
                    if (match && match[1]) {
                        match = match[1];
                    }
                    if (currDataCurrency[match]) {
                        currDataCurrency[match] = newValue;
                    }
                }
            }
        }

        function changeElementCurrencies (from,to) {         		
                var all = getAllToChange(settings.defaultClassName, settings.replaceWithin);
                var tempFrom;
                var tempTo;
                for (var i=0; i < all.length; i++ ) {
                    obj = all[i];
                    
                    from = getCurrencyFromSpan(obj);

                    if (settings.ignoreOwnCurr) {
                        tempTo        = from
                        tempFrom      = from;
                    } else {
                        tempTo        = to;
                        tempFrom      = from;
                    }
                    if (tempTo == tempFrom) {                        
                        continue;
                    }
                    objValue = getSpanCurrency(obj,tempFrom,tempTo);

                    setCurrencyToSpan(obj,tempTo);

                    if (objValue && objValue != false) {
                        applyValue(obj, addSymbol(objValue,tempTo), objValue);
                        continue;
                    }

                    if (availableCurr[tempTo]) {
                        value         = getObjValue(obj, tempFrom);

                        if (!value || value == ''){
                            continue;
                        }
                        changed = exchangeRate(value, tempFrom, tempTo);

                        applyValue(obj, addSymbol(changed, tempTo), changed);                 
                        
                    }
                }
                if (availableCurr[to]) {
                    currentCurrency = to;
                }
                changeInputs(bke_selected_currency,to);
                changeInputs(bke_selected_currency_sbox,to);
        }

        function cleanup () {
            settings         = {
                defaultClassName : defaultClassName,
                changeCallback   : false,
                replaceWithin    : false,
                ignoreOwnCurr    : false,
                obj              : false,
                noRound          : false,
                objName          : false,
                arr              : false,
                arrName          : false,
                exceptIdLike     : false,
                onRoom           : false
            };
        }

        function addSymbol (value, toSymbol) {
            if ((toSymbol == 0 && settings.onRoom) || !toSymbol) {
                toSymbol = getDefaultCurrency();
            }                 
            if (availableCurr[toSymbol]) {
                    if (availableCurr[toSymbol]['side'] == 'l') {
                        lcurr = availableCurr[toSymbol]['symbol'];
                        rcurr = '';
                    } else {
                        lcurr = '';
                        rcurr = availableCurr[toSymbol]['symbol']
                    }
                    value = rcurr + value + lcurr;
            } 
            return value;
        }

        function applyValue(obj,changed,changedValueOnly) {

            try {
                if (obj.tagName == 'INPUT') {
                    obj.value = changedValueOnly;                    
                } else {
                    obj.innerHTML = changed;                  
                }
            } catch (error) {logErr(error);} 
        }

        function getObjValue(obj,original) {
            value = false;
            if (obj.tagName == 'INPUT') {
                value = obj.value;                    
            } else {
                value = obj.innerHTML;                    
            }
            pureValue = getRate(value);
            return pureValue;
        }

        function changeInputs (name,to) {
            input = document.getElementsByName(name);
            if (input) {
                for (var i=0;i<input.length;i++) {
                    input[i].value = to;
                }
            }
            return this;
        }

        function getAllToChange (classNames, replaceWithin) {
            var all = [];
            try {
                if (replaceWithin) {
                    if (replaceWithin.match(/^[#\.]/)) {
                        found = replaceWithin.match(/^[#|\.](.*)/);
                        if (found && found.length > 0) {
                            all = document.querySelectorAll('.'+found[1]+' .curr_chan');
                            if (all.length < 1) {
                                all = document.querySelectorAll('#'+found[1]+' .curr_chan');
                            }
                        } else {
                            all = document.querySelectorAll(replaceWithin+' .curr_chan');
                        }
                    } else {
                        all = document.querySelectorAll('#'+replaceWithin+' .curr_chan');
                    }
                } else {
                    all = document.querySelectorAll('.'+classNames);
                }
                if (all && all.length && settings.exceptIdLike) {
                    newAll = [];
                    for (var i = all.length - 1; i >= 0; i--) {
                        if (all[i].id) {
                            if (!all[i].id.match(settings.exceptIdLike)) {
                                newAll.push(all[i]);
                            }
                        } else {
                            newAll.push(all[i]);
                        }
                    };
                    all = newAll;
                }
            } catch (error) {logErr(error);}
            return all;
        }

        function getRate(rate) {
            var r = '';
            var l = '';
            
            if (!isNaN(rate)) {
                return rate;
            }
            if ($.parseHTML(rate)){
                var newRate = $.parseHTML(rate);
                rate = newRate[0].textContent;
            }
            var match_curr = rate.match(/(?:<span.*?>)?([^\d]+)?((?:\d+)?\,?(?:\d+)\.?(?:\d+)?)?\s?([^\d]+;?)?([^\d]+)?(?:<\/span.*?>)?/);
            if (match_curr && match_curr[2]) {
                rate = match_curr[2];
                if (match_curr[1]) {
                    l = match_curr[1];
                    lcurr = l;
                    rcurr = '';
                } 
                if (match_curr[3]) {
                    r = match_curr[3];
                    rcurr = r;
                    lcurr = '';
                }
            } else {
                rate = rate.replace(/[^\d\.]/,'');
            }
            return rate;
        }
        
        function exchangeRate(value, from, to , callback) {   
            var c = false;

            if (callback && typeof callback === 'function') {
                c = callback;
            }

            if (availableCurr[from] && availableCurr[to]) {
                var er = /^-?[0-9]+$/;
                var isInt = er.test(value);
                value = value.replace(/,/g,'');
                parsedRate = value;
                if (from != 0 || to != 0) {
                    parsedRate = (((parseFloat(value) / parseFloat(availableCurr[from]['rate'])) * parseFloat(availableCurr[to]['rate'])));
                	if (!settings.noRound) {
                		parsedRate = Math.round(parsedRate);
                	}
                }
                if (!isInt) parsedRate = parsedRate.toFixed(2);
                if (c) c(parsedRate);
                
                return parsedRate;
            } else {
                if (c) c(value);
                return value;
            }
        }

        function changeTripteaseCurrencies(from,to){
            var triptease_div = document.querySelectorAll(".price-fighter-widget");
            if(triptease_div[0]){
                if (availableCurr[to]) {
                    noRound();
                    var price = triptease_div[0].getAttribute("data-pf-direct-price");
                    var newPrice = exchangeRate(price, from, to);
                    triptease_div[0].setAttribute("data-pf-direct-price", newPrice);
                    triptease_div[0].setAttribute("data-pf-currency", availableCurr[to].isocode);
                    cleanup();
                }
                if(typeof Paperboy !== 'undefined' && Paperboy.PriceCheck){
                    Paperboy.PriceCheck.reset();
                }
            }
        }
    })();

docReady(function() {
document.getElementById('curr_selector').value = '3';
document.getElementById('curr_selector').onchange();
    document.getElementById('curr_selector').onchange();
   if (typeof jQuery.ui != 'undefined') {
        set_hover(jQuery);
   }
});
</script>

				</div>
				<!-- END bke_currency_selector -->
			</div>

			<a href="https://waterloohubhotel.com/bookings/" class="logo"><img src="//bookings.waterloohubhotel.com/bookings/showimage?id=EFA0114770841271CD29ED7F46845158&type=18" alt="Waterloo Hub Hotel" /></a>
      
		</div>
	</div>
</header>

<div class="settings-bar">
  <div class="settings-bar__slide">
    <div class="settings-bar__item btn-booknow open-searchbox-01">
      <i class="far fa-calendar-check"></i> Check Availability
    </div>
    <div class="settings-bar__item settings-bar__calendar">
      <i class="fas fa-edit"></i>
       <div class="booking-summary__cal loading open-searchbox-01">
  <div class="booking-summary__location" style="display:none;">
    <h3>Location</h3>
    <span class="cal-loc"><span class="search-term"></span></span>
  </div>
  <div class="booking-summary__in">
    <h3>Check in</h3>
    <span class="cal-arr__day big"></span>
    <span class="cal-arr__month big"></span>
    <span class="cal-arr__dayname"></span>
    <span class="cal-arr__year"></span>
  </div>
  <div class="booking-summary__out">
    <h3>Check out</h3>
    <span class="cal-dep__day big"></span>
    <span class="cal-dep__month big"></span>
    <span class="cal-dep__dayname"></span>
    <span class="cal-dep__year"></span>
  </div>
  <div class="booking-summary__nights">
    <h3>Nights</h3>
    <span class="cal-nights big">1</span>
  </div>
</div>

<a class="btn-searchagain btn-shadow open-searchbox-01"><i class="fa fa-redo"></i> Search again</a>		





    </div>  
    <div class="settings-bar__item settings-bar__summary" onClick="slidePanel('#booking-summary','Booking Summary')">
      <i class="fas fa-shopping-cart"></i>
      Summary
    </div>
    
    <div class="settings-bar__item settings-bar__filter" onClick="slidePanel('#filter-offers','Filters')">
      <i class="fas fa-filter"></i>
      Filters
    </div>
    <!-- BEGIN bke_currency_selector -->
    <div class="settings-bar__item settings-bar__currency">
    <div class="selected-curr-symbol"></div>
      
<select id="curr_selector" onchange="if (typeof ch_currency === 'function'){ ch_currency(this)}" class="bke_currency_selector">
      <option value="49" >INR</option>
      <option value="48" >MXN</option>
      <option value="47" >CZK</option>
      <option value="2" >EUR</option>
      <option value="4" >GBP</option>
      <option value="3" selected>USD</option>
      <option value="12" >CAD</option>
      <option value="11" >AUD</option>
      <option value="7" >BRL</option>
      <option value="43" >CHF</option>
      <option value="6" >DKK</option>
      <option value="9" >EGP</option>
      <option value="10" >MYR</option>
      <option value="1" >PLN</option>
      <option value="5" >ZAR</option>
      <option value="44" >NOK</option>
      <option value="45" >SEK</option>
      <option value="46" >AED</option>
      <option value="50" >OMR</option>
      <option value="51" >IDR</option>
      <option value="52" >GHS</option>
      <option value="53" >BHD</option>
      <option value="54" >SGD</option>
      <option value="55" >THB</option>
      <option value="57" >PEN</option>
      <option value="58" >MAD</option>
</select>
<script type="text/javascript">
(function(funcName, baseObj) {
    funcName = funcName || "docReady";
    baseObj = baseObj || window;
    var readyList = [];
    var readyFired = false;
    var readyEventHandlersInstalled = false;
    function ready() {
        if (!readyFired) {
            readyFired = true;
            for (var i = 0; i < readyList.length; i++) {
                readyList[i].fn.call(window, readyList[i].ctx);
            }
            readyList = [];
        }
    }

    function readyStateChange() {
        if ( document.readyState === "complete" ) {
            ready();
        }
    }
    baseObj[funcName] = function(callback, context) {
        if (readyFired) {
            setTimeout(function() {callback(context);}, 1);
            return;
        } else {
            readyList.push({fn: callback, ctx: context});
        }
        if (document.readyState === "complete") {
            setTimeout(ready, 1);
        } else if (!readyEventHandlersInstalled) {
            if (document.addEventListener) {
                document.addEventListener("DOMContentLoaded", ready, false);
                window.addEventListener("load", ready, false);
            } else {
                document.attachEvent("onreadystatechange", readyStateChange);
                window.attachEvent("onload", ready);
            }
            readyEventHandlersInstalled = true;
        }
    }
})("docReady", window);

var set_hover = function($) {
   
}


    Object.keys = Object.keys || (function () {
        var hasOwnProperty = Object.prototype.hasOwnProperty,
            hasDontEnumBug = !{toString:null}.propertyIsEnumerable("toString"),
            DontEnums = [
                'toString',
                'toLocaleString',
                'valueOf',
                'hasOwnProperty',
                'isPrototypeOf',
                'propertyIsEnumerable',
                'constructor'
            ],
            DontEnumsLength = DontEnums.length;
      
        return function (o) {
            if (typeof o != "object" && typeof o != "function" || o === null)
                throw new TypeError("Object.keys called on a non-object");
         
            var result = [];
            for (var name in o) {
                if (hasOwnProperty.call(o, name))
                    result.push(name);
            }
         
            if (hasDontEnumBug) {
                for (var i = 0; i < DontEnumsLength; i++) {
                    if (hasOwnProperty.call(o, DontEnums[i]))
                        result.push(DontEnums[i]);
                }   
            }
         
            return result;
        };
    })();

    // START    
    var currChanger = (function(){
        var availableCurr    = {"53":{"rate":"0.4356","side":"r","name":"Bahraini dinar","symbol":"BHD","isocode":"BHD"},"7":{"rate":"5.9515","side":"r","name":"Real","symbol":"R$","isocode":"BRL"},"57":{"side":"r","rate":"3.9907","isocode":"PEN","name":"Peruvian sol","symbol":"S/"},"52":{"rate":"12.7013","side":"r","name":"Ghanaian cedi","symbol":"GH&#x20B5;","isocode":"GHS"},"10":{"rate":"4.6545","side":"r","name":"Malaysian Ringgit","symbol":"RM","isocode":"MYR"},"50":{"side":"r","rate":"0.4436","isocode":"OMR","name":"Omani Rial","symbol":"OMR"},"11":{"rate":"1.6691","side":"r","name":"Australian dollar","symbol":"$","isocode":"AUD"},"51":{"rate":"19582.5271","side":"r","symbol":"Rp","name":"Indonesian rupiah","isocode":"IDR"},"6":{"side":"r","rate":"7.4728","isocode":"DKK","symbol":"kr.","name":"Danish Krone"},"5":{"side":"r","rate":"19.5325","isocode":"ZAR","name":"South African rand","symbol":"ZAR "},"46":{"side":"r","rate":"4.2380","isocode":"AED","name":"Dirham","symbol":"AED"},"47":{"side":"l","rate":"24.5112","isocode":"CZK","symbol":"K&#x10D;","name":"Czech Koruna"},"44":{"side":"r","rate":"11.2270","isocode":"NOK","symbol":"kr","name":"Norwegian Krone"},"48":{"symbol":"$","name":"Mexican Peso","isocode":"MXN","rate":"20.5989","side":"r"},"58":{"side":"r","rate":"10.8262","isocode":"MAD","name":"Moroccan dirham","symbol":"DH"},"43":{"side":"r","rate":"0.9217","isocode":"CHF","name":"Swiss Franc","symbol":"CHF"},"55":{"side":"l","rate":"37.6374","isocode":"THB","symbol":"&#xE3F;","name":"Thai baht"},"49":{"rate":"107.2750","side":"r","name":"Indian Rupee","symbol":"&#x20B9;","isocode":"INR"},"4":{"rate":"0.8718","side":"r","symbol":"&pound;","name":"Pound Sterling","isocode":"GBP"},"9":{"isocode":"EGP","name":"Egyptian Pound","symbol":"E&pound;","side":"r","rate":"62.5995"},"1":{"rate":"4.2768","side":"l","name":"Zloty","symbol":"z&#x142;","isocode":"PLN"},"54":{"rate":"1.4830","side":"r","symbol":"SGD","name":"Singapore dollar","isocode":"SGD"},"3":{"rate":"1.1538","side":"r","symbol":"$","name":"US Dollar","isocode":"USD"},"2":{"name":"Euro","symbol":"&euro;","isocode":"EUR","rate":"1.0000","side":"r"},"45":{"isocode":"SEK","name":"Swedish Krona","symbol":"kr","side":"r","rate":"10.8827"},"12":{"symbol":"$","name":"Canadian dollar","isocode":"CAD","rate":"1.6063","side":"r"}};
        var defaultCurrency  = 4;
        var currentCurrency  = false;//4;
        var changeCurrency   = false;
        var defaultClassName = 'curr_chan';
        var settings         = {
            defaultClassName : defaultClassName,
            changeCallback   : false,
            noRound          : false,
            replaceWithin    : false,
            ignoreOwnCurr    : false,
            obj              : false,
            objName          : false,
            arr              : false,
            arrName          : false,
            exceptIdLike     : false,
            onRoom           : false,
        };
        var bke_selected_currency = 'bke_selected_currency';
        var bke_selected_currency_sbox = 'bke_selected_currency_sbox';
        var origPriceObjs = {};
        var origPriceArr = {};
        var currentObjCurr = {};
        var currentArrCurr = {};
        var changerFunction = [];
        var currDataOrigin = {};
        var currData = {};
        var currDataCurrency = {};
        var currDataId = 0;
        var origCurrency = {};
        var currRoomCurrency = {};
        return {
            // changes currency
            setCurrency  : setCurrency,            
            addSymbol    : addSymbol,
            addChangerFunction : addChangerFunction,
            setCurrencyOnMultiple : setCurrencyOnMultiple,
            // Settings that needed to be called before replacing 
            // currency when applicable
            changeCallback : changeCallback,
            getDefaultCurrency:getDefaultCurrency,
            getCurrentCurrency:getCurrentCurrency,
            exceptIdLike   : exceptIdLike,
            replaceWithin  : replaceWithin,
            ignoreOwnCurr  : ignoreOwnCurr,
            onObject       : onObject,
            onRoom         : onRoom,
            onArray        : onArray,
            // rest of changes
            getCurrentCurrencySymbol : getCurrentCurrencySymbol,
            getRate        : getRate,
            noRound	       : noRound,
        }

        function noRound () {
        	settings.noRound = true;
        	return this;
        }

        function logErr (error) {
        }

        function exceptIdLike (regex) {
            settings.exceptIdLike = regex;
            return this;
        }

        function addChangerFunction(name) {        	
            var add = true;
            try {
                if (changerFunction.indexOf(name) >= 0) {
                    add = false;
                }
            } catch(error) {logErr(error);}
            if ( add )
                changerFunction.push(name);
            return this;
        }

        function onObject(o,name) {
            settings.obj = o;
            settings.objName = name;
            return this;
        }

        function onArray(a,name) {
            settings.arr = a;
            settings.arrName = name;
            return this;
        }

        function changeCallback(c) {
            settings.changeCallback = c;
            return this;
        }

        function replaceWithin(c) {
            settings.replaceWithin = c;
            return this;
        }

        function onRoom(c) {
            settings.onRoom = c;
            return this;
        }

        function ignoreOwnCurr() {
            settings.ignoreOwnCurr = true;
            return this;
        }

        function getCurrentCurrency(obj) {
            if (currentCurrency && currentCurrency != 0) {
                return currentCurrency;
            } else  {
                return getDefaultCurrency();
            }
        }

        function getCurrentCurrencySymbol (obj) {
            if (!obj) {
                return availableCurr[getDefaultCurrency()]['symbol'];
            } else {
                return availableCurr[getCurrencyFromSpan(obj)]['symbol'];
            }
        }

        function setCurrencyOnMultiple (to) {        
            if (changerFunction.length > 0) {
                for (var i = 0; i < changerFunction.length; i++) {
                    changerFunction[i](false,to);
                };
            }
        }

        // retrieves default currency for specified room when necessary
        // this required onRoom switch to define id of room to find '#bke_room_currency'
        function getDefaultCurrency () {
            var curr = defaultCurrency;
            if (settings.onRoom && !settings.onRoom == '') {
                if (origCurrency[settings.room]) {
                    curr = origCurrency[settings.room];
                } else {
                    try {
                        curr = document.querySelectorAll('#bke_room_currency'+settings.onRoom)[0].value;
                        origCurrency[settings.onRoom] = curr;
                    } catch (error) {logErr('Cannot find default currency for room '+settings.onRoom);} 
                }
            }
            return curr;
        }

        function currChangerCurrency() {
            var curr = defaultCurrency;
            try {
                curr = document.querySelectorAll('#curr_selector')[0].value;
            } catch (error) {logErr('Cannot find default currency changer value');} 
            return curr;
        }

        function clearData() {
        	currData = {} ;
        }

        // setting currency to values on page with curr_chan class
        function setCurrency (to, clear) {        	
            if (!to) 
                to = currChangerCurrency();
            if (!availableCurr[to] || to == 0) 
                to = getDefaultCurrency();
            if (clear)	
            	clearData();
            if (settings.obj && settings.objName) {
                if (!currentObjCurr[settings.objName])
                    currentObjCurr[settings.objName] = getDefaultCurrency();
                if (currentObjCurr[settings.objName] != to) {
                    changedObject = changeObjectCurrencies(currentObjCurr[settings.objName],to);
                    currentObjCurr[settings.objName] = to;
                    returnObj = changedObject;
                } else {
                    returnObj = settings.obj;
                }
            } else if (settings.arr && settings.arrName && settings.arr.length > 0){
                if (!currentArrCurr[settings.arrName])
                    currentArrCurr[settings.arrName] = getDefaultCurrency();
                if (currentObjCurr[settings.arrName] != to) {
                    changedArray = changeArrayCurrencies(currentArrCurr[settings.arrName],to);
                    currentArrCurr[settings.arrName] = to;
                    changeElementCurrencies(false,to);
                    returnObj = changedArray;
                } else {
                    returnObj = settings.arr;
                }
            } else {            
                changeElementCurrencies(false,to, clearData);
                returnObj = this;
            }
            
            if (settings.callback) settings.callback(to);
            cleanup();            
            return returnObj;
        }

        function changeArrayCurrencies(from, to) {
            if (!origPriceArr[from])
                origPriceArr[from] = {};
            if (!origPriceArr[from][settings.arrName])
                    origPriceArr[from][settings.arrName] = settings.arr;
            if (!origPriceArr[to])
                origPriceArr[to] = {};
            if (origPriceArr[to][settings.arrName])
                return origPriceArr[to][settings.arrName];

            changedArr = recalcArr(settings.arr,from,to);
            origPriceArr[to][settings.arrName] = changedArr;
            return changedArr;
        }

        function recalcArr(arr,from,to) {
            var manip = [];
            changeArrNode(arr, manip, from, to);
            if (manip.length > 0)
                manip = manip[0];
            return manip;
        }

        function changeArrNode(arr, manip, from, to) {
            if (arr) {
                if (Object.prototype.toString.call(arr) === '[object Array]') {
                    manip.push([]);
                    for (var i=0; i < arr.length; i++ ) {
                        changeArrNode(arr[i], manip[(manip.length-1)], from, to);
                    }
                } else {
                    manip.push(changeObjValue(arr, from, to));
                }
            }
        }

        function changeObjectCurrencies (from,to) {
            if (!origPriceObjs[from])
                origPriceObjs[from] = {};
            if (!origPriceObjs[from][settings.objName])
                    origPriceObjs[from][settings.objName] = settings.obj;
            if (!origPriceObjs[to])
                origPriceObjs[to] = {}
            if (origPriceObjs[to][settings.objName])
                return origPriceObjs[to][settings.objName];

            changedObj = recalcObj(settings.obj,from,to);
            origPriceObjs[to][settings.objName] = changedObj;
            return changedObj;
        }

        function recalcObj(obj,from,to) {
            var manip = {};
            changeObjNode(obj, manip, from, to);
            return manip;
        }

        function changeObjNode (obj, manip, from, to) {
            if (Object.prototype.toString.call(obj) === '[object Object]') {
                var keys = Object.keys(obj);
                for (var i=0; i < keys.length; i++ ) {
                    manip[keys[i]] = {};
                    if (Object.prototype.toString.call(obj[keys[i]]) !== '[object Object]') {
                        manip[keys[i]] = changeObjValue(obj[keys[i]], from, to);
                    } else {
                        changeObjNode(obj[keys[i]], manip[keys[i]], from, to);
                    }
                }
            } else {
                manip = changeObjValue(obj[keys[i]], from, to)(a);
            }
        }

        function changeObjValue (value,from,to) {
            if (value === 0 || value === '0') {
                return 0;
            }
            return addSymbol(exchangeRate(getRate(value), from, to),to);
        }

        function hasClass(ele,cls) {
            return !!ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
        }

        function addClass(ele,cls) {
            if (!hasClass(ele,cls)) ele.className += " "+cls;
        }

        function setCurrSpanData(obj) {
            var id = currDataId++;
            var className = 'curr_data'+id;            
            addClass(obj,className);
            return id;
        }

        function getSpanCurrency (obj,from,to) {
            id = getDataId(obj);

            currentValue = getObjValue(obj,from);

            if (id) {
                if (!currData[from])
                    currData[from] = {}
                if (!currData[from][id]){
                    if (!isNaN(currentValue)) {
                        currData[from][id] = currentValue;
                    }
                }
                if (!currData[to])
                    currData[to] = {};
                if (currData[to][id]) {
                    return currData[to][id];
                }
            } else {
                id = setCurrSpanData(obj);
                if (from == to)
                    return currentValue;
            }

            return false;            
        }

        function getDataId (obj) {
            classes = obj.className.split(' ');
            
            if (classes.length > 0) {
                for (var i = classes.length - 1; i >= 0; i--) {
                    match = classes[i].match(/curr_data(\d*)/);
                    if (match && match[1]) 
                        return match[1];
                }
            }
            return false;
        }
        
        function getCurrencyFromSpan(obj) {
            id = getDataId(obj);
            
            if (id) {
                if (currDataCurrency[id]) {
                    return currDataCurrency[id]
                } else {
                    currDataCurrency[id] = getDefaultCurrency();
                    return currDataCurrency[id];
                }
            } else {
                id = setCurrSpanData(obj);
                currDataCurrency[id] = getDefaultCurrency();
                return currDataCurrency[id];
            }
        }

        function setCurrencyToSpan(obj,newValue) {
            classes = obj.className.split(' ');
            
            if (classes.length > 0) {
                for (var i = classes.length - 1; i >= 0; i--) {
                    match = classes[i].match(/curr_data(\d*)/);
                    if (match && match[1]) {
                        match = match[1];
                    }
                    if (currDataCurrency[match]) {
                        currDataCurrency[match] = newValue;
                    }
                }
            }
        }

        function changeElementCurrencies (from,to) {         		
                var all = getAllToChange(settings.defaultClassName, settings.replaceWithin);
                var tempFrom;
                var tempTo;
                for (var i=0; i < all.length; i++ ) {
                    obj = all[i];
                    
                    from = getCurrencyFromSpan(obj);

                    if (settings.ignoreOwnCurr) {
                        tempTo        = from
                        tempFrom      = from;
                    } else {
                        tempTo        = to;
                        tempFrom      = from;
                    }
                    if (tempTo == tempFrom) {                        
                        continue;
                    }
                    objValue = getSpanCurrency(obj,tempFrom,tempTo);

                    setCurrencyToSpan(obj,tempTo);

                    if (objValue && objValue != false) {
                        applyValue(obj, addSymbol(objValue,tempTo), objValue);
                        continue;
                    }

                    if (availableCurr[tempTo]) {
                        value         = getObjValue(obj, tempFrom);

                        if (!value || value == ''){
                            continue;
                        }
                        changed = exchangeRate(value, tempFrom, tempTo);

                        applyValue(obj, addSymbol(changed, tempTo), changed);                 
                        
                    }
                }
                if (availableCurr[to]) {
                    currentCurrency = to;
                }
                changeInputs(bke_selected_currency,to);
                changeInputs(bke_selected_currency_sbox,to);
        }

        function cleanup () {
            settings         = {
                defaultClassName : defaultClassName,
                changeCallback   : false,
                replaceWithin    : false,
                ignoreOwnCurr    : false,
                obj              : false,
                noRound          : false,
                objName          : false,
                arr              : false,
                arrName          : false,
                exceptIdLike     : false,
                onRoom           : false
            };
        }

        function addSymbol (value, toSymbol) {
            if ((toSymbol == 0 && settings.onRoom) || !toSymbol) {
                toSymbol = getDefaultCurrency();
            }                 
            if (availableCurr[toSymbol]) {
                    if (availableCurr[toSymbol]['side'] == 'l') {
                        lcurr = availableCurr[toSymbol]['symbol'];
                        rcurr = '';
                    } else {
                        lcurr = '';
                        rcurr = availableCurr[toSymbol]['symbol']
                    }
                    value = rcurr + value + lcurr;
            } 
            return value;
        }

        function applyValue(obj,changed,changedValueOnly) {

            try {
                if (obj.tagName == 'INPUT') {
                    obj.value = changedValueOnly;                    
                } else {
                    obj.innerHTML = changed;                  
                }
            } catch (error) {logErr(error);} 
        }

        function getObjValue(obj,original) {
            value = false;
            if (obj.tagName == 'INPUT') {
                value = obj.value;                    
            } else {
                value = obj.innerHTML;                    
            }
            pureValue = getRate(value);
            return pureValue;
        }

        function changeInputs (name,to) {
            input = document.getElementsByName(name);
            if (input) {
                for (var i=0;i<input.length;i++) {
                    input[i].value = to;
                }
            }
            return this;
        }

        function getAllToChange (classNames, replaceWithin) {
            var all = [];
            try {
                if (replaceWithin) {
                    if (replaceWithin.match(/^[#\.]/)) {
                        found = replaceWithin.match(/^[#|\.](.*)/);
                        if (found && found.length > 0) {
                            all = document.querySelectorAll('.'+found[1]+' .curr_chan');
                            if (all.length < 1) {
                                all = document.querySelectorAll('#'+found[1]+' .curr_chan');
                            }
                        } else {
                            all = document.querySelectorAll(replaceWithin+' .curr_chan');
                        }
                    } else {
                        all = document.querySelectorAll('#'+replaceWithin+' .curr_chan');
                    }
                } else {
                    all = document.querySelectorAll('.'+classNames);
                }
                if (all && all.length && settings.exceptIdLike) {
                    newAll = [];
                    for (var i = all.length - 1; i >= 0; i--) {
                        if (all[i].id) {
                            if (!all[i].id.match(settings.exceptIdLike)) {
                                newAll.push(all[i]);
                            }
                        } else {
                            newAll.push(all[i]);
                        }
                    };
                    all = newAll;
                }
            } catch (error) {logErr(error);}
            return all;
        }

        function getRate(rate) {
            var r = '';
            var l = '';
            
            if (!isNaN(rate)) {
                return rate;
            }
            if ($.parseHTML(rate)){
                var newRate = $.parseHTML(rate);
                rate = newRate[0].textContent;
            }
            var match_curr = rate.match(/(?:<span.*?>)?([^\d]+)?((?:\d+)?\,?(?:\d+)\.?(?:\d+)?)?\s?([^\d]+;?)?([^\d]+)?(?:<\/span.*?>)?/);
            if (match_curr && match_curr[2]) {
                rate = match_curr[2];
                if (match_curr[1]) {
                    l = match_curr[1];
                    lcurr = l;
                    rcurr = '';
                } 
                if (match_curr[3]) {
                    r = match_curr[3];
                    rcurr = r;
                    lcurr = '';
                }
            } else {
                rate = rate.replace(/[^\d\.]/,'');
            }
            return rate;
        }
        
        function exchangeRate(value, from, to , callback) {   
            var c = false;

            if (callback && typeof callback === 'function') {
                c = callback;
            }

            if (availableCurr[from] && availableCurr[to]) {
                var er = /^-?[0-9]+$/;
                var isInt = er.test(value);
                value = value.replace(/,/g,'');
                parsedRate = value;
                if (from != 0 || to != 0) {
                    parsedRate = (((parseFloat(value) / parseFloat(availableCurr[from]['rate'])) * parseFloat(availableCurr[to]['rate'])));
                	if (!settings.noRound) {
                		parsedRate = Math.round(parsedRate);
                	}
                }
                if (!isInt) parsedRate = parsedRate.toFixed(2);
                if (c) c(parsedRate);
                
                return parsedRate;
            } else {
                if (c) c(value);
                return value;
            }
        }

        function changeTripteaseCurrencies(from,to){
            var triptease_div = document.querySelectorAll(".price-fighter-widget");
            if(triptease_div[0]){
                if (availableCurr[to]) {
                    noRound();
                    var price = triptease_div[0].getAttribute("data-pf-direct-price");
                    var newPrice = exchangeRate(price, from, to);
                    triptease_div[0].setAttribute("data-pf-direct-price", newPrice);
                    triptease_div[0].setAttribute("data-pf-currency", availableCurr[to].isocode);
                    cleanup();
                }
                if(typeof Paperboy !== 'undefined' && Paperboy.PriceCheck){
                    Paperboy.PriceCheck.reset();
                }
            }
        }
    })();

docReady(function() {
document.getElementById('curr_selector').value = '3';
document.getElementById('curr_selector').onchange();
    document.getElementById('curr_selector').onchange();
   if (typeof jQuery.ui != 'undefined') {
        set_hover(jQuery);
   }
});
</script>

    </div>
    <!-- END bke_currency_selector -->
    
  </div>
</div>

<div class="na-progress-bar__wrapper">
  <div class="na-progress-bar" style="display:none;">
    <div class="na-progress-bar__main">
      <div class="step-1">
        <span>1</span>
        <span><i class="fa fa-check"></i></span>
      </div>
      <div class="step-2">
        <span>2</span>
        <span><i class="fa fa-check"></i></span>
      </div>
      <div class="step-3">
        <span>3</span>
        <span><i class="fa fa-check"></i></span>
      </div>
      <div class="na-progress-bar__bar"></div>
    </div>
    <div class="na-progress-bar__faded">
      <div class="step-1"></div>
      <div class="step-2"></div>
      <div class="step-3"></div>
      <div class="na-progress-bar__bar"></div>
    </div>
  </div>
  <div class="step-4">
    <h2>Thank you!</h2>
    <div class="confetti-wrapper">
      <div class="confetti-50"></div>
      <div class="confetti-49"></div>
      <div class="confetti-48"></div>
      <div class="confetti-47"></div>
      <div class="confetti-46"></div>
      <div class="confetti-45"></div>
      <div class="confetti-44"></div>
      <div class="confetti-43"></div>
      <div class="confetti-42"></div>
      <div class="confetti-41"></div>
      <div class="confetti-40"></div>
      <div class="confetti-39"></div>
      <div class="confetti-38"></div>
      <div class="confetti-37"></div>
      <div class="confetti-36"></div>
      <div class="confetti-35"></div>
      <div class="confetti-34"></div>
      <div class="confetti-33"></div>
      <div class="confetti-32"></div>
      <div class="confetti-31"></div>
      <div class="confetti-30"></div>
      <div class="confetti-29"></div>
      <div class="confetti-28"></div>
      <div class="confetti-27"></div>
      <div class="confetti-26"></div>
      <div class="confetti-25"></div>
      <div class="confetti-24"></div>
      <div class="confetti-23"></div>
      <div class="confetti-22"></div>
      <div class="confetti-21"></div>
      <div class="confetti-20"></div>
      <div class="confetti-19"></div>
      <div class="confetti-18"></div>
      <div class="confetti-17"></div>
      <div class="confetti-16"></div>
      <div class="confetti-15"></div>
      <div class="confetti-14"></div>
      <div class="confetti-13"></div>
      <div class="confetti-12"></div>
      <div class="confetti-11"></div>
      <div class="confetti-10"></div>
      <div class="confetti-9"></div>
      <div class="confetti-8"></div>
      <div class="confetti-7"></div>
      <div class="confetti-6"></div>
      <div class="confetti-5"></div>
      <div class="confetti-4"></div>
      <div class="confetti-3"></div>
      <div class="confetti-2"></div>
      <div class="confetti-1"></div>
      <div class="confetti-0"></div>
    </div>    
  </div>
</div>



  <div id="searchbox" style="display:none;"><script type="text/javascript">
jQuery(document).ready(function($) {
    $("#bke_name").click(function() {
        $("#bke_id").val(''); $("#loc_id").val(''); $("#c_id").val('');$("#landmark_id").val('');
    }); 
});    

function bke_check_search() {	
     var error = "";     
     if (typeof window.check_consolsite == 'function') {
        error = check_consolsite();
        //error = false;
     };

     if (error) {
        document.forms['bke_search'].bke_name.value='';     	
      };
    
     document.forms['bke_search'].submit();
     return false;
};
</script>
<form style="margin: 0px;" name="bke_search" class="bke_searchbox" method="post" action="//bookings.waterloohubhotel.com/bookings/checkavailability" onSubmit="return bke_check_search();">

	<input type="hidden" name="bke_calendar-jquery-collective_sbid" value=""/>
<input type="hidden" name="bke_id" value="51EECFE386604264BDB05FC8DFC83757"/>
<input type="hidden" id="grid_view" name="grid_view" value="0"/>
<input type="hidden" id="minstay" value="1"/>
<input type="hidden" id="maxstay" value="31"/>
<input type="hidden" name="bke_selected_currency_sbox" value="4"/>


<input type="hidden" value="en" name="lang">

<ul id="bke_searchbox_wrapper">
	<li class="title"><h2>Check Availability</h2></li>
	
	<!-- <li class="occupants field-wrapper"><SELECT class="input occupancy" name="occupancy[]" multiple style=""><OPTION value='3'  >Double</OPTION><OPTION value='4'  >Single/Double</OPTION><OPTION value='5'  >Triple</OPTION><OPTION value='8'  >Family 3</OPTION><OPTION value='6'  >Family 4</OPTION><OPTION value='7'  >Family 5</OPTION><OPTION value='9'  >Quadruple</OPTION><OPTION value='10'  >5 Adults</OPTION><OPTION value='11'  >6 Adults</OPTION><OPTION value='43'  >Family 6</OPTION><OPTION value='45'  >8 Adults</OPTION><OPTION value='44'  >7 Adults</OPTION><OPTION value='46'  >Family 7</OPTION><OPTION value='47'  >Family 8</OPTION><OPTION value='48'  >10 Adults</OPTION><OPTION value='2'  >Single</OPTION></SELECT><script type="text/javascript" src="/admin/js/jquery/jquery-ui.min.js"></script><script type="text/javascript" src="/admin/js/jquery/jquery.multiselect.min.js"></script><script>$(document).ready(function(){
        $(".occupancy").multiselect({
        selectedText : "# Room selected",
        noneSelectedText : "Select a Room",
        checkAllText: "Check all",
        uncheckAllText: "Uncheck all",
        checkAll: function(){
            checkPlu_occupancy();
        },
        classes : "multi_width",click : function(event, ui){
	        checkPlu_occupancy();
	    }
	    });function checkPlu_occupancy (){
	    var uiwidget = $(".occupancy");
	    var selectedWidget = uiwidget.multiselect("widget").find("input:checked");
	            if ((selectedWidget.length)>1) {
	            uiwidget.multiselect({selectedText : "# Rooms selected"});
	            } else { uiwidget.multiselect({selectedText : "# Room selected"}); };
	    if ((selectedWidget.length)==16) {
	        uiwidget.multiselect({selectedText : "All Rooms selected"});
	    }
	        };
	    checkPlu_occupancy();
	    ;});</script></li> -->
	<li class="arrival field-wrapper"><label>Arrive:</label> <input type="text" id="arrival-date">
<input type="hidden" name="bke_arrival_day" value="03" id="bke_arrival_day"><input type="hidden" name="bke_arrival_month" value="04" id="bke_arrival_month"><input type="hidden" name="bke_arrival_year" value="2026" id="bke_arrival_year"></li>
	<li class="departure field-wrapper"><label>Depart:</label> <input type="text" id="departure-date">
<input type="hidden" name="bke_departure_day" value="04" id="bke_departure_day"><input type="hidden" name="bke_departure_month" value="04" id="bke_departure_month"><input type="hidden" name="bke_departure_year" value="2026" id="bke_departure_year"></li>
	<!-- <li class="nights field-wrapper"><label>Nights:</label> <select name='bke_nights' class='bke_dropdown' onchange="bke_update_dropdown(form, form.bke_arrival_day.value, form.bke_arrival_month.value, form.bke_arrival_year.value, form.bke_nights.value, 1)">
<option value="1" >1</option>
<option value="2" >2</option>
<option value="3" >3</option>
<option value="4" >4</option>
<option value="5" >5</option>
<option value="6" >6</option>
<option value="7" >7</option>
<option value="8" >8</option>
<option value="9" >9</option>
<option value="10" >10</option>
<option value="11" >11</option>
<option value="12" >12</option>
<option value="13" >13</option>
<option value="14" >14</option>
<option value="15" >15</option>
<option value="16" >16</option>
<option value="17" >17</option>
<option value="18" >18</option>
<option value="19" >19</option>
<option value="20" >20</option>
<option value="21" >21</option>
<option value="22" >22</option>
<option value="23" >23</option>
<option value="24" >24</option>
<option value="25" >25</option>
<option value="26" >26</option>
<option value="27" >27</option>
<option value="28" >28</option>
<option value="29" >29</option>
<option value="30" >30</option>
<option value="31" >31</option>
</select>
</li> -->
	<li class="ratecode"><input type="text" name="bke_ratecode" size="8" class="bke_drop"
  style="text-align: center;" onclick="if (this.value == '') this.value = '';" 
  placeholder="rate code"
  value='' />
</li>
	<!--<li class="language"><select name="lang" ><option value="en" selected="selected">English</option> </select></li>-->
    <li class="submit"><input type="submit" name="bke_submit" class="btn" value="Book Now"></li>
</ul>
</form>





</div>

	<div class="row" id="na-bke">
		<div class="container no-padding" id="">
			<h3 class="page-title" style="display:none;">Reservation System</h3>
			<p class="bke_error">The file you have just requested is not available on server.</p>
		</div>
	</div> <!-- End - #na-bke -->

	<div class="clearfix"></div>
<footer class="row no-padding" id="na-footer">
    <div class="container">
        <div class="col-xs-12 col-sm-8 no-padding">
            <nav>
                <ul>
                  <!-- IF microsite -->
                  <li>
                    <a data-fancybox-href="#location-map" data-fancybox-title="Location" class="modal-fancy fancybox.inline" onclick="mapFooter();" id="location-link">Location</a>
                        <div style="display:none;">
                            <div id="location-map" class="modal-info">
                                    
                                    <!-- <div id="location-map__info">
                                      <h2>Waterloo Hub Hotel</h2>
                                      <p>contactadr  </p>
                                      <p>Address 1</p>
                                      <p>Address 2</p>
                                    </div> -->
                              
                                    <div id="map-footer"></div>
                                    
                                    <script>
                  
                                    var latitude = "51.496623";
                  
                                    var longitude = "-0.112187";
                  
                                    var mapZoom = "13";
                  
                                    var propertyName = "Waterloo Hub Hotel";
                  
                                    </script>
                            </div>
                        </div>
                  </li>
              
                  <!-- ENDIF microsite -->

                    <!-- IF bke_privacy_policy_section -->

                    <li><a data-fancybox-href="#privacy-policy-en" data-fancybox-title="Privacy Policy" class="modal-fancy fancybox.inline" id="privacy-policy-link">Privacy Policy</a>
                        <div style="display:none;">
                            <div id="privacy-policy-en" class="modal-info">
                                At the&nbsp;Waterloo Hub Hotel Ltd, we stress the importance of privacy and are committed to earning the trust of our guests by adopting high standards for the protection of personal information. Our policy outlines the type of personal information we collect and receive and to comply with the general data protection regulation, this includes the circumstances in which we collect or receive personal information, the policies and procedures we have established outlining its use, storage, length of time we hold data for and for sharing certain types of personal information in certain limited circumstances. The procedures you should follow if you have any questions or requests in respect of your personal information or our policies and procedures and the person to whom such questions or requests should be directed, and how to communicate with that person. The Waterloo Hub Hotel privacy policy also highlights the procedure we are following to keep your personal data accurate and where necessary up to date as well as the procedure we would follow in case of a data breach.<br /><br />In this policy Waterloo Hub Hotel Ltd and its affiliated companies, as they may exist from time to time.<br /><br />In this policy, personal information means information about you that is personally identifiable like your name, address, e-mail address, phone number, IP address and that is not otherwise publicly available and is not part of your work identification.<br /><br />It also includes information on guest preferences and usage, when such information is supplied to or recorded by the Waterloo Hub Hotel in the course of transacting business with an individual.<br /><br />The Privacy Protection Policy does not apply to information regarding the Waterloo Hub Hotel Ltd corporate customers. However, such information is protected by other Waterloo Hub Hotel Ltd policies and practices and through contractual arrangements.<br /><br /><br />How you may provide us with your personal information<br />By making a reservation, checking-in and by using Waterloo Hub Hotel Ltd services either directly or via our booking engine provider MEWS who is a third party supplier<br />By registering with our newsletters<br />By providing it to us in communications regarding service delivery such as comment cards, emails, review<br />By providing the information to us by participating in a marketing initiative<br />By visiting our website, and social media page<br />Below we will outline the type of information typically collected in each of these circumstances, the reasons for doing so, how we will use it, store it, and how long we keep it for<br />&nbsp;<br /><br />Making a reservation<br />When making a reservation or using Waterloo Hub Hotel services, it is necessary to have information to identify you, contact you, and process your purchase and requests. This information usually includes your name, address, phone number, e-mail address, credit card number, expiration date, and language preference. It may also include if you choose to share that information with us, your preferences regarding the delivery of your services such as the type of room, type of bed, and the like.<br /><br />We also offer exclusive discounts from time to time that may have qualifying criteria. Sometimes we offer special offers to, for example, seniors or children. To assess your eligibility and process your reservation correctly, we need to record your date of birth at the time of booking. You may be required to provide personal identification with your date of birth to verify this upon check-in.<br /><br />The Waterloo Hub Hotel is a hotel located in London, UK. Your personal information is shared with employees involved in delivering the service to you to the extent necessary for them to do so and to process the transaction.<br /><br />From time to time, we offer packages or other services that involve third parties. If you are partaking in such a package or service, your<br /><br />personal information will be shared with that third party to the extent necessary to provide that service and process the purchase or request.<br /><br />The Waterloo Hub Hotel Ltd may use the information you provide to send you offers and information about the Waterloo Hub Hotel services and those of select third parties. Your information will not be given to these third parties but rather the offer of the third party will be provided to Waterloo Hub Hotel Ltd which will manage the distribution.<br /><br />All data collected through the process of a booking or transactions will be kept for 6 years accordingly to the tax legislation requirement, except for digital Credit Card details which are automatically erased 24 hours after check out. Physical credit card details will be destroyed within two weeks following check out.<br /><br />Information provided to us in communications regarding service delivery such as comment cards, emails, and reviews<br />Information provided to us in such a fashion will be used solely to record your comments, communicating with you in respect of them, reviewing them with the subject hotel and hotel personnel, to recognise employees for excellence of service delivery and for developing improvements in service delivery.<br /><br />The Waterloo Hub Hotel Ltd offers you the ability to receive targeted, timely notification of time-sensitive offers&nbsp;<br />To sign up for this service, we require you to provide us with your e-mail address, first name, last name, language preference, and country of residence. Based on the lawful basis of consent, you are required to opt-in if you would like to receive our newsletter and offers. By opting in you give your consent for us to keep your data for six years. You may unsubscribe at any time using the link provided on every e-mail message, and you will no longer receive e-mail offers and promotions for the specified subscription or website, as the case may be. You may at any time in the future opt-in to receive e-mail offers.<br /><br />By visiting one of our websites and social media pages<br />We use &ldquo;cookies&rdquo; on our websites. Cookies are pieces of information that an Internet site transfers to your hard drive for record-keeping purposes. The use of cookies is an industry-standard &ndash; you&rsquo;ll find them almost everywhere on the Internet. The Waterloo Hub Hotel uses cookies to recognise visitors when they return to our sites. Once we know it is you, we can customise your online visit.<br /><br />We may also evaluate our content and services and tailor our websites, for visitors, based on other information we collect. Such as IP addresses, which are numbers assigned to your computer whenever you use the Internet, pixel tags (or clear gifs), and the type of Internet browser or operating system you are using. This information is collected in the aggregate, but we may tie it to your personal information through cookie use as described above.<br /><br />We use Hotjar and Google Analytics to measure how visitors interact with content on our websites. We also use Facebook Custom Audiences to ask Facebook to show you ads that are customised based on your interaction with our websites or our Facebook applications and to measure how you interact with those ads. All of these services use cookies and similar technologies, such as web beacons, tags, and embedded scripts, to record information about your interaction with our websites. Additional information on how these services use such technologies can be found on Google&rsquo;s website, and Facebook&rsquo;s website. The principles summarise how Google protects information collected through Google Analytics. Facebook&rsquo;s Data Use Policy describes how Facebook protects information collected through Facebook Custom Audiences.<br /><br />Why we collect personal information<br />To establish and maintain a responsible commercial relationship with you and to provide ongoing service. Based on your consent, we may securely hold your data for marketing purposes and will store proof of your consent. You may also withdraw your consent concerning the use of your personal information for marketing purposes or at any time. E-mail us at&nbsp;GDPR@hotelwaterloo.com&nbsp;using &lsquo;Unsubscribe&rsquo; as the subject line, and provide us sufficient personal identifiers so we can act effectively on your request.<br />To understand your needs and preferences. We maintain a record of the products and services you receive from us, and we may ask for additional information so that we can serve you better. For example, we may record your preference for a type of room. This information will be held based on legitimate interest for a maximum of 20 years in our PMS and will only be processed in case of rebooking.<br />To develop, enhance, market, or provide products and services. For example, we look at our guests&rsquo; use of our services so that we can understand better how to improve our services. This data will be held for a maximum of a year. After a year the data will be processed anonymously for us to build statistics on market trends.<br />To manage and develop our business and operations. For example, we analyse guest patterns of usage of our hotels and services to help us manage them efficiently and plan for future growth. This data will be held for a maximum of a year. After a year the data will be processed anonymously for us to build statistics on market trends.<br />To meet legal and regulatory requirements. With regards to the tax legislation, we have the obligation to keep invoices and registration cards for 6 years. After check out this data is safely stored and is not subject to any more processing unless it is requested by a legal authority.<br />When do we disclose personal information?<br />We disclose personal information only in these limited circumstances:<br /><br />We may disclose a guest&rsquo;s personal information to a person who, in the reasonable judgment of the Waterloo Hub Hotel, is seeking the information as an agent of the guest &ndash; for example, a travel agent who is booking a reservation on behalf of the guest.<br />Personal information will be shared with the Waterloo Hub Hotel for which your reservation has been made so that they may provide the services you have reserved.<br />Personal information will be shared with a third party involved in supplying the guest with the services they have purchased to the extent necessary to affect the supply and the processing of the transaction.<br />Personal information may be shared with a third party retained by the Waterloo Hub Hotel to perform functions on its behalfs such as reservations handling, data processing or storage, guest surveys, or research.<br />Personal information may be shared with an agent retained by the Waterloo Hub Hotel to evaluate a customer&rsquo;s creditworthiness or to collect a customer&rsquo;s account.<br />Personal information may be shared with a public authority or an agent of public authority if in the reasonable judgment of the Waterloo Hub Hotel it appears that there is an imminent danger to life or property which could be avoided or minimised by disclosure of the information, or which disclosure is compelled by legal authority.<br />Any such disclosure of a guest&rsquo;s personal information by the Waterloo Hub Hotel to a third party will be made only on a confidential basis conditioned upon the information being used only for the purpose for which it has been disclosed.<br /><br />To make sure your data is safe and secure we make sure our partners and third party respect the general data protection regulation by checking and keeping a copy of their own privacy policy<br /><br />Principles<br />The Waterloo Hub Hotel will not collect, use or disclose your personal information for any other purpose than those identified above, except with your consent.<br />The Waterloo Hub Hotel will protect your personal information with appropriate security safeguards.<br />The Waterloo Hub Hotel will take appropriate steps to protect the confidentiality of your personal information when dealing with third parties.<br />The Waterloo Hub Hotel will strive to keep your personal information as accurate and up to date as is necessary for the purposes identified above.<br />The Waterloo Hub Hotel will honor your request to access your personal information within a month following your inquiry. Please note that if GDPR advises that a request can be made via any channel but we recommend you to send us an email at&nbsp;GDPR@hotelwaterloo.com&nbsp;for best practices.<br />You are always free to refuse to provide personal information to us. However, in either case, this may limit our ability to serve you.<br /><br />If you have questions or concerns about our privacy practices or wish to request in respect of your personal information, please contact our marketing department at&nbsp;GDPR@hotelwaterloo.com&nbsp;or if you prefer by writing to us at:<br /><br />Waterloo Hub Hotel Ltd<br />54 Kennington Road<br />Lambeth<br />London<br />SE1 7BJ
                            </div>
                        </div>
                    </li>

                    <!-- ENDIF bke_privacy_policy_section -->

                    <!-- IF bke_cookies_policy_section -->

                    <li><a data-fancybox-href="#cookie-policy" data-fancybox-title="Cookie Policy" class="modal-fancy fancybox.inline" id="cookie-policy-link">Cookie Policy</a>
                        <div style="display:none;">
                            <div id="cookie-policy" class="modal-info">
                                We respect your right to privacy. Any personal information which you volunteer on this website will be treated with appropriate standards of security and confidentiality and following the UK Data Protection Act, 2018, which is the UK&rsquo;s implementation of the General Data Protection Regulation (GDPR).<br /><br />What are Cookies?<br />Cookies are text files containing small amounts of information that are downloaded to your device when you visit our website. Cookies are then sent back to the originating website on each subsequent visit, or to another website that recognizes that Cookie. Cookies are useful because they allow a website to recognize a user&rsquo;s device. There are several different types of Cookies, each having a different purpose.<br /><br />This website uses Google Analytics, a web analytics service provided by Google, Inc. (&ldquo;Google&rdquo;). This service uses Cookies. Cookies help the website analyze how visitors to our website use the site. The information generated by the cookie about your use of the website (including your IP address) will be transmitted to and stored by Google on servers in the United States. Google will use this information to evaluate your use of the website, compiling reports on website activity for us, and providing other services relating to website activity and internet usage. Google may also transfer this information to third parties where required to do so by law, or where such third parties process the information on Google&rsquo;s behalf. Google will not associate your IP address with any other data held by Google. You may refuse the use of cookies by selecting the appropriate settings on your browser, however, please note that if you do this you may not be able to use the full functionality of this website. By using this website and allowing cookies to remain enabled, you consent to the processing of data about you by Google in the manner and for the purposes as set out above.<br /><br />What types of Cookies may be used on this website?<br />Strictly Necessary Cookies<br /><br />Strictly Necessary Cookies are essential to enable you to move around the website and use its features. We use these Cookies to enable the services which you have specifically asked for.<br /><br />Performance Cookies<br /><br />Performance Cookies are Cookies that collect information on how visitors use a website, i.e. which pages visitors go to most. We use these Cookies to collect information anonymously on the pages which you have visited.<br /><br />Functional Cookies<br /><br />Functional Cookies are Cookies that allow the website to remember choices made by the user (name, address, language). We use these Cookies to remember choices made to improve our user&rsquo;s experience.<br /><br />Advertising Cookies<br /><br />Advertising Cookies are Cookies that are used to deliver adverts more relevant to a user&rsquo;s interests. They remember that a user has viewed a website before. They are often linked to the functionality of the site. We use these Cookies to collect information about your browsing habits to make advertising relevant to you and your interests<br /><br />Tailored Advertising<br /><br />If you have Cookies enabled on your machine, we will present you with advertisements relevant to our website. Google and third-party vendors show our advertisements across different internet sites. If you have Cookies switched on you may see advertisements for this website on other websites.<br /><br />Should you wish to opt-out of Tailored Advertising please visit the&nbsp;Network Advertising Initiative opt-out page<br /><br />Third-Party Cookies<br /><br />We may install third party cookies on our website. Third-party cookies are cookies that are set by a domain other than the website that is being visited by the user. If a user visits a website and another entity sets a cookie through that website, this would be a third-party cookie.<br /><br />Cookies are used by us to enable us to improve our website and to deliver more personalised service for you. If, after supplying personal information, you require a copy of it or you wish to discuss, correct, or delete it, please&nbsp;contact us.
                            </div>
                        </div>
                    </li>

                    <!-- ENDIF bke_cookies_policy_section -->

                    <!-- IF microsite -->
                    <!-- IF bke_cancel_policy_section -->
                    <!-- BEGIN bke_cancel_policy -->
                    <li><a data-fancybox-href="#cancellation-policy" data-fancybox-title="Cancellation Policy" class="modal-fancy fancybox.inline" id="cancellation-policy-link"> Cancellation Policy</a>
                        <div style="display:none;">
                            <div id="cancellation-policy" class="modal-info">
                                <!-- BKE_TEXT_TERMS only added here because BKE_CANCEL_POLICY needs it to be on the page or else it wont show. -->
                                <span style="display:none;">All rates are quoted subject to availability and alteration. All discounted rates quoted are limited offers and may be subject to a minimum night’s stay.<br>
<br>
While every effort has been made to ensure the accuracy of all information, Princes Street Suites does not accept liability for any errors or omissions and reserves the right to change information.<br>
<br>
Should you wish to cancel a reservation prior to arrival, Princes Street Suites has a strict cancellation policy: <br>
<br>
We understand that plans can change, you can contact us up to 24 hours prior to arrival (4 pm) without penalty. A charge of (the first night’s stay) applies in the event of late cancellation within 24 hours of arrival or if a no show occurs. Please note that Advance Purchase and Non-Refundable bookings do not qualify for this cancellation policy and these rate plans are non-amendable, non-cancellable, and non-refundable. Promotional offers/rates may be subject to an alternative cancellation policy and these can be found on our offers page. All rates are inclusive of VAT.<br>
<br>
The booking deposit is non-refundable and is charged to your credit card at the time of "make reservation" submission. The booking deposit will show as "Net Affinity, Dublin" on your credit card statement. The remaining charge is payable to the hotel upon your departure.<br>
<br>
Please contact PWaterloo Hub Hotel & Suites direct in order to cancel or amend your reservation. For any special requests please do not hesitate to contact us direct.</span>
                                We understand that plans can change, you can contact us up to 24 hours prior to arrival (4 pm) without penalty. A charge of (the first night’s stay) applies in the event of late cancellation within 24 hours of arrival or if a no show occurs. Please note that Advance Purchase and Non-Refundable bookings do not qualify for this cancellation policy and these rate plans are non-amendable, non-cancellable, and non-refundable. Promotional offers/rates may be subject to an alternative cancellation policy and these can be found on our offers page. All rates are inclusive of VAT.<br>
                            </div>
                        </div>
                    </li>
                    <!-- END bke_cancel_policy -->
                    <!-- ENDIF bke_cancel_policy_section -->
                    <!-- ENDIF microsite -->

                    

                    <!-- IF bke_health_info_section -->
                    <li><a data-fancybox-href="#health-info" data-fancybox-title="Health & Safety Info" class="modal-fancy fancybox.inline" id="health-info-link"> Health & Safety Info</a>
                        <div style="display:none;">
                            <div id="health-info" class="modal-info">
                                <strong>Your safety &amp; well-being</strong><br />With varying government restrictions in different parts of the UK, we&rsquo;re constantly reviewing our hotel and restaurant policies to ensure we open and operate in line with these. With this in mind, please ensure you check the guidance or regulations applicable to you before traveling. For more information, please click here for current details outlined by the government regarding COVID-19.<br /><br />Coronavirus (COVID-19): Update<br />Here at the Waterloo Hub Hotel &amp; Suites, the safety, comfort, and well-being of you and our team is our main priority. Therefore, we have acted, in line with government guidance, to ensure that you have a safe and enjoyable stay at our Hotel. These changes include the introduction of social distancing measures in hotels, the provision of hand sanitiser plus safety screens, and limiting lift usage. We&rsquo;re also continuing to deliver the highest standards of cleanliness across all of our hotels and introducing increased frequency of cleaning for high touch areas.<br /><br />We&rsquo;re committed to ensuring every area of our hotels is cleaned to the highest standards and that&rsquo;s why we work with external Health &amp; Safety consultants Saeker. To give you peace of mind when you stay with us we&rsquo;ve also introduced additional measures such as more frequent cleaning of communal areas, adding a safety seal to rooms post-cleaning, and allowing 72 hours between each room use. To find out more about Saeker you can visit saeker.co.uk<br /><br />We are constantly monitoring and following the changes in recommendations and guidelines of the local government and health authorities, to continue working towards providing the best service possible while ensuring the safety of our guests.<br /><br />Here are some of the changes we have made<br />Cashless service &ndash; only Contactless &amp; credit card payments are accepted, to reduce unnecessary contact<br />To limit contact, we have introduced a self-check-in Kiosk. This means, if you have a pre-paid reservation, you can check-in without the assistance of our ambassadors. You will need a reservation number starting with WHH. If you do not have this, you can contact our team via phone or email to obtain it. We also offer our guests the option of both check-in and check-out online.<br />Be greeted by our ambassadors through a safety screen at the front desk, this is for extra protection for our guests and team.<br />Hand sanitisers are available in all public areas, and all surfaces are regularly wiped down and disinfected.<br />Lift usage will be limited to 1 person or household at a time<br />Room seals will indicate your room has been cleaned and no-one has entered since being cleaned.<br />Our breakfast service will consist of pre-packed boxes comprising a continental style breakfast<br />Snacks, drinks and takeaway hot coffee will still be available to purchase on a cashless basis. Our Contactless limit is 45GBP.<br />You can order through Deliveroo or Uber Eats delivery, just ask them to pop it in the designated area for contact-free delivery. Remember to keep an eye on your app so you know when it has arrived.<br />Our linen undergoes a high-temperature cleaning process and is laundered to the highest standards.<br />If you require Housekeeping services, please let the reception know by dialing 0 on the phone. Please note; the room should be vacant at the time of cleaning.<br />Our cancellation policy<br />We are constantly updating our global cancellation policy to reflect the most recent developments related to COVID-19 and any official travel or meeting restrictions, suspensions, quarantines or lockdown measures announced by governments worldwide. Our aim is to offer you as much flexibility and planning comfort as possible<br /><br />Individual reservations<br />&ndash; Free modifications subject to availability and/or any rate differences<br />&ndash; Free cancellations for arrivals up until 29/07/2020.<br /><br />&ndash; Free modifications up to 24 hours before the arrival date. Any modifications are subject to availability and/or any rate differences<br />&ndash; Free cancellations up to 24 hours before arrival date<br />○ This includes reservations on advanced purchase rates described as noncancelable<br />○ If a deposit has been paid, the amount will be refunded to the payment method used (or maybe in the form of vouchers or credit, where required by local regulations)<br /><br />Bookings made through travel agencies<br />&ndash; Guests who booked via online travel agents or third-party travel professionals must contact their booking provider for any adjustments. We are unable to make changes to bookings through travel agencies.<br /><br /> <br /><br />If you have any questions then please do contact us<br />T: +44 (0)20 7922 1331<br />E: info@waterloohubhotel.com<br /> <br /><br />Given the high volume of inquiries, it may take longer than usual for our teams to respond.
                            </div>
                        </div>
                    </li>
                    <!-- ENDIF bke_health_info_section -->

                </ul>
            </nav>
        </div>
        <div class="col-xs-12 col-sm-4 text-right no-padding">
          <!-- <a href="" class="na-logo">
            <img src="//www.netaffinity.com/files/images/netaffinity-logo-black.svg" alt="">
          </a> -->
          <div class="made-by-na">
  <span>
  Made with <i class="fas fa-heart"></i> by</span> <a class="na-logo" href="http://www.netaffinity.com" alt="Net Affinity" target="_blank">
        <img alt="Net Affinity" src="https://www.netaffinity.com/files/images/netaffinity-logo-black.svg" style="width: 115px; height: 45px;">
    </a>
</div>
        </div>

    </div>
</footer>
<div class="slide-panel">
  <div class="slide-panel__title">
  </div>
  <div class="slide-panel__close" onClick="slidePanel()"><i class="fas fa-times"></i></div>
  <div class="slide-panel__content">
  </div>
</div>

<div class="slide-panel__overlay">
</div>


	<script type="text/javascript">
	jQuery('input.star').rating();

	</script>
	
	<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
	<script src="//bookings.waterloohubhotel.com/files/js/jquery.settings.js" type="text/javascript"></script>
	<script src="//bookings.waterloohubhotel.com/files/js/bke-searchbox.js"></script>
	
		<form id="bke_searchbox_data" class="bke_searchbox" style="display:none;" >
	<input type="hidden" autocomplete="false">
	<input type="hidden" value="1" id="bke_minstay">
	<input type="hidden" value="364" id="bke_maxstay">
	<input type="hidden" name="bke_form_token" value="" id="bke_form_token">
	<input type="hidden" name="grid_view" value="0" id="bke_grid_view">
	<input type="hidden" name="lang" value="en" id="bke_lang">
	<input type="hidden" name="bke_ratecode" value="" id="bke_ratecode">
	<input type="hidden" name="bke_arrival_day" value="03" id="bke_arrival_day">
	<input type="hidden" name="bke_arrival_month" value="04" id="bke_arrival_month">
	<input type="hidden" name="bke_arrival_year" value="2026" id="bke_arrival_year">
	<input type="hidden" name="bke_departure_day" value="" id="bke_departure_day">
	<input type="hidden" name="bke_departure_month" value="" id="bke_departure_month">
	<input type="hidden" name="bke_departure_year" value="" id="bke_departure_year">
	<input type="hidden" name="bke_nights" value="1" id="bke_nights">
	<input type="hidden" name="bke_avail_order" value="" id="bke_avail_order">
	
</form>
<div class="na-searchbox undone">
	<div class="na-searchbox__parameters">
		<input type="hidden" name="searchbox_type" value="">
		<input type="hidden" name="searchbox_display" value="overlay">
		<input type="hidden" name="searchbox_size" value="">
		<input type="hidden" name="searchbox_flexdate" value="">
		<input type="hidden" name="searchbox_usp" value="">
		<input type="hidden" name="searchbox_collapse" value="">
		<input type="hidden" name="searchbox_ratecode" value="">
		<input type="hidden" name="searchbox_hidden" value="yes">
		<input type="hidden" name="searchbox_debug" value="">
		<input type="hidden" name="searchbox_location" value="">
	</div>
	<div class="na-searchbox__header" style="display:none;">
		Book Your Stay
	</div>
	<div class="na-searchbox__main">

		<!-- IF microsite -->

  <!-- 
  // Uncomment this to use in individual hotels with different types of accommodation
  
  <div class="na-searchbox__location">
    <div class="na-searchbox__actionselect-fieldwrapper">
      <select name="bke_actionselect" id="bke_actionselect">
        <option value="" selected>Please Select Accommodation Type</option>
        <option value="secure.PROPERTY-URL-1.ie">PROPERTY NAME 1</option>
        <option value="secure.PROPERTY-URL-2.ie">PROPERTY NAME 2</option>
      </select>
    </div>
  </div>
  <script>
  $("#bke_actionselect").change(function(){
          var sel = $("#bke_actionselect").val();
          $("#bke_searchbox_data").attr("action", "https://" + sel + "/bookings/checkavailability");
  });
  </script>
  
  -->

<!-- ENDIF microsite -->


		<div class="na-searchbox__dates">
			<div class="na-searchbox__checkin">
				<span class="na-searchbox__label">Check In</span>
				<div class="na-searchbox__day-week"></div>
				<div class="na-searchbox__day-number">03</div>
				<div class="na-searchbox__month">04</div>
				<div class="na-searchbox__year">2026</div>
			</div>
		</div>

		<!--if bke_ratecode_section-->
		<div class="na-searchbox__ratecode">
			<div class="na-searchbox__col-70 left">Do you have a promo code?</div>
			<div class="na-searchbox__col-30 right">
				<div class="na-searchbox__switch na-searchbox__switch-ratecode off">
					<div class="na-searchbox__slide">
						<div class="na-searchbox__on">Yes</div>
						<div class="na-searchbox__button"></div>
						<div class="na-searchbox__off">No</div>
					</div>
				</div>
			</div>
		</div>
		<input type="text" class="na-searchbox__ratecode-input" name="ratecode" placeholder="Have a promo code?">
		<!--endif bke_ratecode_section-->

		<button class="na-searchbox__submit" id="ibe_submit">Search</button>

	</div>
	<!-- IF bke_usp -->
	<div class="na-searchbox__usptrigger">
		Why Book With Us? <img src="//bookings.waterloohubhotel.com/files/images/usp-tick.svg" alt="Waterloo Hub Hotel" width="24" height="23">
	</div>
	<!-- ENDIF bke_usp -->
	<!-- IF bke_usp -->
	<div class="na-searchbox__uspoverlay">
		<div class="na-searchbox__uspcontainer">
			<div class="na-searchbox__uspclose"><svg xmlns="http://www.w3.org/2000/svg" width="16.971" height="16.972" viewBox="0 0 16.971 16.972">
				<path id="icon-close" data-name="Union 9" d="M0,15.557,7.071,8.485,0,1.414,1.414,0,8.485,7.071,15.557,0,16.97,1.415,9.9,8.486l7.071,7.071L15.557,16.97,8.486,9.9,1.414,16.971Z" fill="#666"/>
			</svg>
		</div>
		<div class="na-searchbox__uspheading">Why Book With Us? <img src="//bookings.waterloohubhotel.com/files/images/usp-tick.svg" alt="Waterloo Hub Hotel" width="24" height="23"></div>
		
		<div class="na-searchbox__usplistitem">
			<img src="//bookings.waterloohubhotel.com/files/images/usp-tick.svg" alt="Best Price Guarantee**" width="24" height="23">
			<span class="na-searchbox__usptitle">Best Price Guarantee**</span>
			<span class="na-searchbox__usptext">You won&rsquo;t find a better deal anywhere else.</span>
		</div>
		
		<div class="na-searchbox__usplistitem">
			<img src="//bookings.waterloohubhotel.com/files/images/usp-tick.svg" alt="No Booking Fee:&#9;" width="24" height="23">
			<span class="na-searchbox__usptitle">No Booking Fee:&#9;</span>
			<span class="na-searchbox__usptext">Book now - pay later.</span>
		</div>
		
		<div class="na-searchbox__usplistitem">
			<img src="//bookings.waterloohubhotel.com/files/images/usp-tick.svg" alt="Free Cancellation** :&#9;" width="24" height="23">
			<span class="na-searchbox__usptitle">Free Cancellation** :&#9;</span>
			<span class="na-searchbox__usptext">Subject to Conditions.</span>
		</div>
		
		<div class="na-searchbox__usplistitem">
			<img src="//bookings.waterloohubhotel.com/files/images/usp-tick.svg" alt="Priority Check-in*:&#9;" width="24" height="23">
			<span class="na-searchbox__usptitle">Priority Check-in*:&#9;</span>
			<span class="na-searchbox__usptext">Subject to availability.</span>
		</div>
		
	</div>
</div>
<!-- ENDIF bke_usp -->
<div class="na-searchbox__overlay">
	<div class="na-searchbox__overlay-container">
		<div class="na-searchbox__overlaylogo">
			<div class="na-searchbox__overlaylogowrapper">
				<img src="//bookings.waterloohubhotel.com/bookings/showimage?id=EFA0114770841271CD29ED7F46845158&type=18" alt="Waterloo Hub Hotel"/>
			</div>
			<div class="na-searchbox__overlayclose"><svg xmlns="http://www.w3.org/2000/svg" width="16.971" height="16.972" viewBox="0 0 16.971 16.972">
				<path id="icon-close" data-name="Union 9" d="M0,15.557,7.071,8.485,0,1.414,1.414,0,8.485,7.071,15.557,0,16.97,1.415,9.9,8.486l7.071,7.071L15.557,16.97,8.486,9.9,1.414,16.971Z" fill="#666"/>
			</svg></div>
		</div>
		<div class="na-searchbox__overlaywrapper">
			<div class="na-searchbox__overlayscroll">
				<div class="na-searchbox__header" style="display:none;">
					Book Your Stay
				</div>
			</div>
		</div>
		<!-- IF bke_usp -->
		<div class="na-searchbox__overlayusp">
			<div class="na-searchbox__overlayusp-header">
				<div class="btn-circle">
					<svg xmlns="http://www.w3.org/2000/svg" width="12.777" height="7.777" viewBox="0 0 12.777 7.777">
						<path id="Union_9" data-name="Union 9" d="M6.389,7.753l-.025.025L0,1.414,1.414,0,6.389,4.975,11.363,0l1.414,1.414L6.413,7.778Z" fill="#fff"/>
					</svg>
				</div>
				Why Book With Us?
			</div>
			<div class="na-searchbox__overlayusp-content">
				<ul>
					
					<li>
						<div class="na-searchbox__usptitle">Best Price Guarantee**</div>
						<div class="na-searchbox__usptext">You won&rsquo;t find a better deal anywhere else.</div>
					</li>
					
					<li>
						<div class="na-searchbox__usptitle">No Booking Fee:&#9;</div>
						<div class="na-searchbox__usptext">Book now - pay later.</div>
					</li>
					
					<li>
						<div class="na-searchbox__usptitle">Free Cancellation** :&#9;</div>
						<div class="na-searchbox__usptext">Subject to Conditions.</div>
					</li>
					
					<li>
						<div class="na-searchbox__usptitle">Priority Check-in*:&#9;</div>
						<div class="na-searchbox__usptext">Subject to availability.</div>
					</li>
					
				</ul>
			</div>
		</div>
		<!-- ENDIF bke_usp -->
	</div>
</div>
</div>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@mdi/font@4.5.95/css/materialdesignicons.min.css">


<script>
	let hotelUrl = "https://waterloohubhotel.com/bookings/";
</script>
	
<script type="text/javascript" language="javascript">
    TAPixel.impressionWithReferer("001F000000v8WJk");
</script>
<script type="text/javascript" src="//bookings.waterloohubhotel.com/bookings/calendar-jquery-collective"></script>
</body>
</html>