PageSourceSearch

https://secure.plazahotel.ie/crm/rpc/The%20Plaza%20Hotel/WSS_js.php

js plazahotel.ie collected 2026-09-26 08:14:29 UTC 27,314 bytes, 697 lines download raw bytes

1/*
2DO NOT TAKE A COPY OF THIS FILE!
3DO NOT COPY PARTS OF THIS FILE!
4THIS SCRIPT IS DYNAMICALLY GENERATED!
5*/
6
7if(typeof AvvioWS == 'undefined')
8{
9	var AvvioWS = {};
10}
11
12/* CONFIG OPTIONS FROM OUTSIDE */
13if ( ! AvvioWS.hasOwnProperty('debug') ) AvvioWS.debug = false;
14/* INTERNAL VALUES */
15AvvioWS.languages = ["en"];
16AvvioWS.lang = false
17AvvioWS.ref = (document.referrer) ? ('&r='+encodeURIComponent(document.referrer)) : '';
18AvvioWS.loc = (document.URL) ? ('&l='+encodeURIComponent(document.URL)) : '';
19AvvioWS.cachebuster = '&b=' + Math.round(Math.random() * 999999);
20AvvioWS.version = "&v=38985f9aa1ffcc5e4dd09353cf4ade75";
21AvvioWS.appLocations = {"convert5":"https:\/\/secure.plazahotel.ie\/convert\/site\/The Plaza Hotel\/","crm":"https:\/\/secure.plazahotel.ie\/crm\/site\/The Plaza Hotel\/","vouchers5":"https:\/\/secure.plazahotel.ie\/vouchers\/site\/The Plaza Hotel\/"};
22
23AvvioWS.getLanguage = function() {
24	if(this.lang != false)
25		return this.lang;
26	return this.languages[0];
27};
28
29AvvioWS.getAppBaseURL = function(appName) {
30	return AvvioWS.appLocations[appName] || null;
31};
32
33AvvioWS.getGenericURL = function(appName, lang, extra, args={}) {
34	var url = AvvioWS.getAppBaseURL(appName);
35	if(url == null)
36		return null;
37		
38	if(lang !== null)
39	{
40		if(AvvioWS.languages.indexOf(lang) > -1)
41			url += lang + '/';
42	}
43		
44	url += extra;
45	
46	delete args.lang;
47	const u = new URLSearchParams(args).toString();
48		
49	if(u.length > 0)
50		url += '?' + u;
51	
52	var sep = (url.indexOf('?') == -1) ? '?' : '&';
53	url += sep + 'fw_notemplate=1';
54	
55	return url;
56};
57
58AvvioWS.getGenericModalURL = function(appName, lang, extra, args={}) {
59	if(url = AvvioWS.getGenericURL(appName, lang, extra, args))
60		return 'javascript:AvvioWS.openBookingEngine(\''+url+'\');';
61	return null;
62};
63
64(function() {
65	var event = new CustomEvent('avvioWSSLoaded');
66	document.dispatchEvent(event);
67	
68	var d = document.getElementsByClassName('allora-action');
69	for(let i=0; i<d.length; i++)
70	{
71		var lang = d[i].getAttribute('data-allora-lang');
72		var args = {}
73		try
74		{
75			args = JSON.parse(d[i].getAttribute('data-allora-args') || '{}');
76		}
77		catch(error)
78		{
79			console.log('Invalid JSON in data-allora-args attribute');
80		}
81		
82		if(d[i].getAttribute('data-allora-action') == 'modal-index')
83		{
84			if(url = AvvioWS.getGenericModalURL('convert5', lang, 'index.html', args))
85				d[i].setAttribute('href', url);
86		}
87		else if(d[i].getAttribute('data-allora-action') == 'modal-results')
88		{
89			if(url = AvvioWS.getGenericModalURL('convert5', lang, 'results.php', args))
90				d[i].setAttribute('href', url);
91		}
92		else if(d[i].getAttribute('data-allora-action') == 'modal-room')
93		{
94			var roomID = d[i].getAttribute('data-allora-roomID');
95			var requiredArgs = {viewtype:'roomrate', partya:0, roomcode:roomID};
96			if((url = AvvioWS.getGenericModalURL('convert5', lang, 'results.php', {...requiredArgs, ...args})) && ! isNaN(roomID))
97				d[i].setAttribute('href', url);
98		}
99		else if(d[i].getAttribute('data-allora-action') == 'modal-rate')
100		{
101			var rateID = d[i].getAttribute('data-allora-rateID');
102			var requiredArgs = {partya:0, noerr:1};
103			if((url = AvvioWS.getGenericModalURL('convert5', lang, 'rate/'+rateID+'.html', {...requiredArgs, ...args})) && ! isNaN(rateID))
104				d[i].setAttribute('href', url);
105		}
106		else if(d[i].getAttribute('data-allora-action') == 'modal-rategroup')
107		{
108			var rateGroupID = d[i].getAttribute('data-allora-rateGroupID');			
109			if((url = AvvioWS.getGenericModalURL('convert5', lang, 'rate_group/'+rateGroupID+'.html', {...args})) && ! isNaN(rateGroupID))
110				d[i].setAttribute('href', url);
111		}
112		else if(d[i].getAttribute('data-allora-action') == 'modal-roomgroup')
113		{
114			var roomGroupCode = d[i].getAttribute('data-allora-roomGroupCode');
115			var requiredArgs = {viewtype:'roomrate', partya:0, roomgroup:roomGroupCode};
116			if((url = AvvioWS.getGenericModalURL('convert5', lang, 'results.php', {...requiredArgs, ...args})))
117				d[i].setAttribute('href', url);
118		}
119		else if(d[i].getAttribute('data-allora-action') == 'modal-vouchers')
120		{
121			if(url = AvvioWS.getGenericModalURL('vouchers5', lang, 'index.html', {...args}))
122				d[i].setAttribute('href', url);	
123		}
124	}
125	
126	var event = new CustomEvent('avvioWSSDocumentParsed');
127	document.dispatchEvent(event);
128		
129}());
130
131AvvioWS.openBookingEngineIndex = function(args={}) {
132	if(url = AvvioWS.getGenericURL('convert5', args.lang||null, 'index.html', args))
133		AvvioWS.openBookingEngine(url);
134};
135
136AvvioWS.openBookingEngineResults = function(args={}) {
137	if(url = AvvioWS.getGenericURL('convert5', args.lang||null, 'results.html', args))
138		AvvioWS.openBookingEngine(url);
139};
140
141AvvioWS.openBookingEngineRoom = function(roomID, args={}) {
142	var requiredArgs = {viewtype:'roomrate', partya:0, roomcode:roomID};
143	if(url = AvvioWS.getGenericURL('convert5', args.lang||null, 'results.php', {...requiredArgs, ...args}))
144	      AvvioWS.openBookingEngine(url);
145};
146
147AvvioWS.openBookingEngineRate = function(rateID, args={}) {
148	var requiredArgs = {partya:0, noerr:1};
149	if(url = AvvioWS.getGenericURL('convert5', args.lang||null, 'rate/'+rateID+'.html', {...requiredArgs, ...args}))
150	      AvvioWS.openBookingEngine(url);
151};
152
153AvvioWS.openBookingEngineRateGroup = function(rateGroupID, args={}) {
154      if(url = AvvioWS.getGenericURL('convert5', args.lang||null, 'rate_group/'+rateGroupID+'.html', {...args}))
155	      AvvioWS.openBookingEngine(url);
156};
157
158AvvioWS.openBookingEngineRoomGroup = function(roomGroupCode, args={}) {
159	var requiredArgs = {viewtype:'roomrate', partya:0, roomgroup:roomGroupCode};
160	if(url = AvvioWS.getGenericURL('convert5', args.lang||null, 'results.php', {...requiredArgs, ...args}))
161	      AvvioWS.openBookingEngine(url);
162};
163
164AvvioWS.openVoucherEngineIndex = function(args={}) {
165	if(url = AvvioWS.getGenericURL('vouchers5', args.lang||null, 'index.html', args))
166	      AvvioWS.openBookingEngine(url);
167};
168
169AvvioWS.openVoucherBalanceChecker = function(args={}) {
170	if(url = AvvioWS.getGenericURL('vouchers5', args.lang||null, 'balance_login.html', args))
171	      AvvioWS.openBookingEngine(url);
172};
173
174/*
175===================================================
176AI Tracking
177*/
178
179AvvioWS.deployAI = function()
180{
181	var aiLocation= 'https://secure.plazahotel.ie/ai/rpc/The%20Plaza%20Hotel/image?el=NFf0efM2IJbMrG22M4J6IP_vRcdrv_qqRQC8JSPo_9E' + this.cachebuster + this.ref + this.loc;
182	const aiImg = document.createElement('img');
183	aiImg.src = aiLocation;
184	aiImg.width = 1;
185	aiImg.height = 1;
186	aiImg.id = 'avvioAIImage';
187	document.querySelector('body').appendChild(aiImg);
188};const modalStyle = document.createElement('style');
189modalStyle.textContent = atob('OnJvb3R7IC0tYm9yZGVyLXJhZGl1cy0xeDogOHB4OyB9I2F2dmlvLWxvZGl2IHsgZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyB6LWluZGV4OiAxMDI1MDAwO30jYXZ2aW8tbW9kYWwtZnJhbWV7IHotaW5kZXg6IDEyNTAwMDsgfSNhdnZpby1sb2Rpdi5hdnZpby1sb2FkZXI6Ym
189Vmb3JlIHsJcG9zaXRpb246IGFic29sdXRlOwl0b3A6IGNhbGMoNTAlIC0gMjRweCk7CWxlZnQ6IGNhbGMoNTAlIC0gMjRweCk7CWJvcmRlcjogOHB4IHNvbGlkICM4QzkxOTY7CWJvcmRlci1yYWRpdXM6IDUwJTsJYm9yZGVyLXRvcDogOHB4IHNvbGlkIHRyYW5zcGFyZW50Owl3aWR0aDogNDhweDsJaGVpZ2h0OiA0OHB4Owktd2Via2l0LWFuaW1hdGlvbjogc2hvdy1zcGlubmVyIDAuMnMsIHNwaW4gMXMgMC4ycyBsaW5lYXIgaW5maW5pdGU7CWFuaW1hdGlvbjogc2hvdy1zcGlubmVyIDAuMnMsIHNwaW4gMXMgMC4ycyBsaW5lYXIgaW5maW5pdGU7CWJveC1zaXppbmc6IGJvcmRlci1ib3g7IAljb250ZW50OiAiIjsJb3BhY2l0eTogLjg7fUAtd2Via2l0LWtleWZyYW1lcyBzcGluIHsJMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfQkxMDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9fUBrZXlmcmFtZXMgc3BpbiB7CTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH0JMTAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfX1ALXdlYmtpdC1rZXlmcmFtZXMgc2hvdy1zcGlubmVyIHsJZnJvbSB7IC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTsgdHJhbnNmb3JtOiBzY2FsZSgwKTt9CXRvIHsgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOyB0cmFuc2Zvcm06IHNjYWxlKDEpO319QGtleWZyYW1lcyBzaG93LXNwaW5uZXIgewlmcm9tIHt0cmFuc2Zvcm06IHNjYWxlKDApO30JdG8ge3RyYW5zZm9ybTogc2NhbGUoMSk7fX0=');
190document.head.appendChild(modalStyle);
191
192AvvioWS.deployModalFunctions = function()
193{
194	const lodiv = document.createElement('div');
195	lodiv.id = 'avvio-lodiv';
196	lodiv.style.position = 'fixed';
197	lodiv.style.left = 0;
198	lodiv.style.top = 0;
199	lodiv.style.height = '100dvh';
200	lodiv.style.width  = '100dvw';
201	lodiv.style.zindex = '50000';
202	lodiv.style.display = 'none';
203	document.body.appendChild(lodiv);
204	AvvioWS.postToWidget = function(message)
205	{
206		var af = document.getElementById('avvio-frame');
207		if(af !== null)
208			af.contentWindow.postMessage(message,'*');
209	}
210	AvvioWS.closeModal = function ()
211	{
212		// updating continue feed url without page reload.
213		AvvioWS.postToWidget({type:"updateContinueFeedLink"});
214
215		document.getElementById('avvio-lodiv').classList.remove('avvio-loader');
216		const element = document.getElementById('avvio-modal-frame');
217		setTimeout(function(){
218			if(element)
219				element.remove();
220			document.getElementById('avvio-lodiv').style.display='none';
221			//document.getElementById('avvio-frame').style.opacity = 1;
222			document.body.style.overflowY = AvvioWS.avvioReBodyOverflow;
223			//document.body.style.position = AvvioWS.avvioReBodyPosition;
224			document.body.style.width = AvvioWS.avvioReBodyWidth;
225		}, 200);
226
227		let modalWrapper = document.getElementById("avvioFakeModalWrapper");
228		if(modalWrapper)
229			modalWrapper.style.display = "none";
230	}
231	AvvioWS.openModal = function openModal(url, transparent, noLoader)
232	{
233		if( ! url)
234			return;
235
236		let lodiv = document.getElementById('avvio-lodiv');
237		lodiv.style.display = 'flex';
238		
239		var mframe = document.createElement('iframe');
240		mframe.id = 'avvio-modal-frame';
241		mframe.setAttribute('frameborder',0);
242		mframe.setAttribute('allow','web-share');
243		mframe.src = url;
244		mframe.style.height = '100dvh';
245		mframe.style.width  = '100dvw';
246
247		if(transparent)
248		{
249			mframe.setAttribute("allowTransparency", true);
250			mframe.setAttribute("background", "transparent");
251			mframe.visibility = "hidden";
252		}
253		
254		lodiv.appendChild(mframe);
255
256		AvvioWS.avvioReBodyOverflow = document.body.style.overflowY;
257		AvvioWS.avvioReBodyWidth = document.body.style.width;
258
259		document.body.style.overflowY = 'hidden';
260		document.body.style.width = '100%';
261
262		setTimeout(function () {
263			if ( ! noLoader)
264				lodiv.classList.add('avvio-loader');
265			mframe.addEventListener('load', function () {
266				lodiv.classList.remove('avvio-loader');
267				mframe.visibility = "visible";
268			}, { 'once': true });
269		}, 150);
270	};
271	AvvioWS.openBookingEngine = function openBookingEngine(url)
272	{
273		let wrapper = document.getElementById("avvioFakeModalWrapper");
274		const alignment = "avvio-modal-center";
275
276		if( ! wrapper)
277		{
278			let fontAwesome = document.querySelector("#fa-v5-font-face");
279			//console.log(fontAwesome);
280
281			wrapper    = document.createElement("div");
282			wrapper.id = "avvioFakeModalWrapper";
283			wrapper.style.display = "none";
284
285			let shadowRoot = wrapper.attachShadow({ mode: "open" });
286
287			let frame = document.getElementById("avvio-lodiv");
288			let frameZIndex = getComputedStyle(frame).zIndex;
289
290			const shadowHTML = document.createElement("html");
291			shadowRoot.appendChild(shadowHTML);
292
293			const shadowHead = document.createElement("head");
294			shadowHTML.appendChild(shadowHead);
295
296			let staticPath = "https://ag.avvio.com/crm/templates/ConsumerSide/StaticContent/mainbe/";
297			
298			// Firefox wants the weird double quote
299			let font  = new FontFace("'Font Awesome 7 Pro'", "url(" + staticPath + "css/fontawesome7.2.0/webfonts/fa-regular-400.woff2) format('woff2')");
300			document.fonts.add(font);
301
302			// Chrome doesn't like it
303			let font2 = new FontFace("Font Awesome 7 Pro", "url(" + staticPath + "css/fontawesome7.2.0/webfonts/fa-regular-400.woff2) format('woff2')");
304			document.fonts.add(font2);
305
306			let cssFiles = [
307				staticPath + "css/fontawesome7.2.0/css/all.min.css",
308				staticPath + "css/designsystem.css",
309			];
310
311			for(let file of cssFiles)
312			{
313				let shadowStyle = document.createElement("link");
314				shadowStyle.setAttribute("rel", "stylesheet");
315				shadowStyle.setAttribute("type", "text/css");
316				shadowStyle.setAttribute("href", file)
317				shadowHead.appendChild(shadowStyle);
318			}
319
320			const shadowBody = document.createElement("body");
321			shadowHTML.appendChild(shadowBody);
322
323			let modalbg = document.createElement("div");
324			modalbg.setAttribute("id", "avvioFakeModal__background");
325			modalbg.setAttribute("class", "avvio-modal__background");
326			modalbg.style.zIndex = frameZIndex - 1;
327
328			let modal = document.createElement("div");
329			modal.setAttribute("id", "avvioFakeModal");
330			modal.setAttribute("class", "avvio-modal  avvio-modal-center");
331			shadowBody.appendChild(modalbg);
332
333			let header = document.createElement("div");
334			header.setAttribute("class", "avvio-modal__header noheader");
335			modal.appendChild(header);
336
337			let button = document.createElement("button");
338			button.setAttribute("id", "avvioFakeModal__closeBtn");
339			button.setAttribute("type", "button");
340			button.setAttribute("class", "button-icon button-icon--plain closeModal closelink");
341			header.appendChild(button);
342
343			let buttonIcon = document.createElement("i");
344			buttonIcon.setAttribute("class", "button-icon__icon far fa-fw fa-times");
345			buttonIcon.addEventListener("click", AvvioWS.closeModal);
346			button.appendChild(buttonIcon);
347
348			let content = document.createElement("div");
349			content.setAttribute("class", "avvio-modal__content");
350			modal.appendChild(content);
351
352			let mainScroll = document.createElement("div");
353			mainScroll.setAttribute("class", "avvio-modal__main avvio-modal__main-scroll");
354			content.appendChild(mainScroll);
355
356			let loader = document.createElement("div");
357			loader.setAttribute("id", "loader");
358			mainScroll.appendChild(loader);
359
360			let body = document.getElementsByTagName("body")[0];
361			modalbg.appendChild(modal);
362			body.appendChild(wrapper);
363
364			window.addEventListener("message", function (event) {
365				if( ! event.data)
366					return;
367
368				if(event.data.type !== "resizeFake")
369					return;
370
371				modal.style.top    = event.data.top    + "px";
372				modal.style.left   = event.data.left   + "px";
373				modal.style.width  = event.data.width  + "px";
374				modal.style.height = event.data.height + "px";
375				//console.log(event.data);
376				//
377				modal.setAttribute("dir", event.data.rtl ? "rtl" : false);
378			});
379		}
380
381		let modal = wrapper.shadowRoot.getElementById("avvioFakeModal");
382		modal.style.top       = "";
383		modal.style.left      = "";
384
385		switch (alignment) {
386			case 'avvio-modal-left':
387			case 'avvio-modal-right':
388				modal.style.height = "100dvh";
389				break;
390
391			default:
392			case 'avvio-modal-center':
393				modal.style.height = "735.2px";
394				break;
395		}
396
397		AvvioWS.openModal(url, true);
398	};
399	window.addEventListener('message', e => {
400		const key = e.message ? 'message' : 'data';
401		const data = e[key];
402
403		if(data.avvio && 'https://secure.plazahotel.ie/crm/site/The%20Plaza%20Hotel/'.
403indexOf(e.origin + '/') != 0)
404		{
405			console.log('Origin does not match location');
406			// TODO KK this needs to be tested 
407			// return;
408		}
409		
410		if(data.type == 'openModal') {
411			AvvioWS.openModal(data.url);
412		}
413		else if(data.type == 'openBookingEngine') {
414			AvvioWS.openBookingEngine(data.url);
415		}
416		else if(data.type == 'closeModal') {
417			AvvioWS.closeModal();
418		}
419	},false);
420	
421	window.addEventListener('keydown', function(evt) {
422		evt = evt || window.event;
423		var isEscape = false;
424		if('key' in evt)
425			isEscape = (evt.key === 'Escape' || evt.key === 'Esc');
426		else
427			isEscape = (evt.keyCode === 27);
428
429		if(isEscape)
430			AvvioWS.closeModal();
431	});
432}; /* semicolon not optional */		const style = document.createElement('style');
433		style.textContent = atob('I2F2dmlvLWZyYW1lIHsgcG9zaXRpb246Zml4ZWQ7IGJvdHRvbTo1MHB4OyByaWdodDozMnB4OyBvcGFjaXR5OjA7IH0jYXZ2aW8tZnJhbWUgeyBoZWlnaHQ6IDEwMCU7IG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDI0MHB4KTsgfS5zbGlkZS1vdXQtYmx1cnJlZC1ib3R0b20uaGlkZVJlSWZyYW1lIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9LmZyYW1lLW1pbmltaXNlZCB7IG1heC13aWR0aDozMjBweDsgbWF4LWhlaWdodDoxMDZweDsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMzIwcHg7IH0uZnJhbWUtbWF4aW1pc2VkIHsgd2lkdGg6NDgwcHg7IH0uZnJhbWUtc3VwZXItbWluaW1pc2VkIHsgd2lkdGg6NzZweDsgbWF4LXdpZHRoOjc2cHg7IGhlaWdodDo4MHB4OyBtYXgtaGVpZ2h0OjgwcHg7IH0vKi5mcmFtZS1oaWRkZW4geyBib3R0b206IC01NjAwcHggIWltcG9ydGFudDsgfSovI2F2dmlvLW1vZGFsLWZyYW1lIHsgbWF4LWhlaWdodDogMTAwJTsvKiA5NSU7ICovIH1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjUxMnB4KSB7CSNhdnZpby1mcmFtZSB7IG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDUwcHgpOyB6LWluZGV4OiAxMDAwICFpbXBvcnRhbnQ7IH0JI2F2dmlvLWZyYW1lLmZyYW1lLW1heGltaXNlZCB7IHdpZHRoOiAxMDAlOyBtYXgtd2lkdGg6NDgwcHg7IGJvdHRvbTogMDsgfQkjYXZ2aW8tZnJhbWUgeyBwb3NpdGlvbjpmaXhlZDsgYm90dG9tOjEwMHB4OyByaWdodDowcHg7IG9wYWNpdHk6MDsgfQkjYXZ2aW8tbG9kaXYgeyBhbGlnbi1pdGVtczplbmQ7IH0JI2F2dmlvLWZyYW1lLmZyYW1lLW1heGltaXNlZCB7IGJvdHRvbTowcHg7IGxlZnQ6MHB4OyB9CSNhdnZpby1mcmFtZS5mcmFtZS1taW5pbWlzZWQgeyByaWdodDowcHg7IH19LnNsaWRlLWluLWJsdXJyZWQtYm90dG9tIHsJLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWluLWJsdXJyZWQtYm90dG9tIDAuNnMgY3ViaWMtYmV6aWVyKDAuMjMwLCAxLjAwMCwgMC4zMjAsIDEuMDAwKSBib3RoOyBhbmltYXRpb246IHNsaWRlLWluLWJsdXJyZWQtYm90dG9tIDAuNnMgY3ViaWMtYmV6aWVyKDAuMjMwLCAxLjAwMCwgMC4zMjAsIDEuMDAwKSBib3RoO31ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGUtaW4tYmx1cnJlZC1ib3R0b20gewkwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwJSkgc2NhbGUoMC45NSk7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMCUpIHNjYWxlKDAuOTUpOyBvcGFjaXR5OiAwOyB9CTEwMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlWSgxKSBzY2FsZVgoMSk7IG9wYWNpdHk6IDAuOTk7IH19QGtleWZyYW1lcyBzbGlkZS1pbi1ibHVycmVkLWJvdHRvbSB7CTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAlKSBzY2FsZSgwLjk1KTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwJSkgc2NhbGUoMC45NSk7IG9wYWNpdHk6IDA7IH0JMTAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGVZKDEpIHNjYWxlWCgxKTsgb3BhY2l0eTogMC45OTsgfX0uc2xpZGUtb3V0LWJsdXJyZWQtYm90dG9tIHsJLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLW91dC1ibHVycmVkLWJvdHRvbSAwLjQ1cyBjdWJpYy1iZXppZXIoMC43NTUsIDAuMDUwLCAwLjg1NSwgMC4wNjApIGJvdGg7IGFuaW1hdGlvbjogc2xpZGUtb3V0LWJsdXJyZWQtYm90dG9tIDAuNDVzIGN1YmljLWJlemllcigwLjc1NSwgMC4wNTAsIDAuODU1LCAwLjA2MCkgYm90aDt9QC13ZWJraXQta2V5ZnJhbWVzIHNsaWRlLW91dC1ibHVycmVkLWJvdHRvbSB7CTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTsgb3BhY2l0eTogMTsgfQkxMDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAlKSBzY2FsZSgwLjk1KTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwJSkgc2NhbGUoMC45NSk7IG9wYWNpdHk6IDA7IH19QGtleWZyYW1lcyBzbGlkZS1vdXQtYmx1cnJlZC1ib3R0b20gewkwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7IG9wYWNpdHk6IDE7IH0JMTAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwJSkgc2NhbGUoMC45NSk7ICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAlKSBzY2FsZVkoMC45NSk7IG9wYWNpdHk6IDA7IH19');
434		document.head.appendChild(style);
435
436		
437		
438
439AvvioWS.avvioReBodyOverflow = 0;
440//AvvioWS.avvioReBodyPosition = 0;
441AvvioWS.AvvioReBodyMargins = (parseInt(getComputedStyle(document.body).marginRight)) + (parseInt(getComputedStyle(document.body).marginLeft));
442AvvioWS.avvioReBodyWidth = 'calc(100% - '+AvvioWS.AvvioReBodyMargins+'px)';
443document.body.style.scrollbarGutter = 'stable';
444
445var marginTopBottom;
446var ReApiObject;
447AvvioWS.deployRE = function()
448{
449	var isWidgetVisible = true;
450	if(typeof avvioReWidget !== 'undefined' && avvioReWidget == false){
451		isWidgetVisible = false;
452		console.log('Re Widget hidden.');
453	}
454
455	var dims = getClientDimensions();
456	if(dims.width > 512){ // Desktop
457		marginTopBottom = 240;
458		marginBottom = 50;
459	}else{ // Mobile
460		marginTopBottom = 50
461		marginBottom = 100
462	}
463	function getClientDimensions()
464	{
465		var w = document.documentElement.clientWidth;
466		var h = document.documentElement.clientHeight;
467		return {width:w, height:h};
468	}
469
470	var hour = new Date().getHours();
471
472	var dims = getClientDimensions();
473
474	// collect feedViews
475	var feedViews = JSON.parse(localStorage.getItem('seenFeedsData'));
476	if(feedViews === null)
477		feedViews = [];
478	// clear localstorage
479	localStorage.removeItem('seenFeedsData');
480
481	const iframe = document.createElement('iframe');
482	iframe.id = 'avvio-frame';
483	iframe.title = 'Recommender Engine';
484	iframe.setAttribute('frameborder', 0);
485	iframe.setAttribute('taborder', 0);
486	iframe.src = 'https://secure.plazahotel.ie/crm/site/The%20Plaza%20Hotel/' + this.getLanguage()+'/frame.php?br=8&isWidgetVisible='+isWidgetVisible+'&hour='+hour + this.loc + this.ref + '&vh='+dims.height + '&vw='+dims.width + '&feedViews='+feedViews.join() + this.version;
487	iframe.style.height = '100dvh';
488
489	iframe.width = 330;
490	iframe.style.zIndex = 25000;
491	iframe.scrolling = 'no';
492
493	iframe.style.display = 'block';
494
495	document.body.appendChild(iframe);
496	window.addEventListener('message', e => {
497		const key = e.message ? 'message' : 'data';
498		const data = e[key];
499
500		if(data.avvio && 'https://secure.plazahotel.ie/crm/site/The%20Plaza%20Hotel/'.indexOf(e.origin + '/') != 0)
501		{
502			console.log('Origin does not match location');
503			return;
504		}
505
506		if(data.type == 'setIframe100') {
507			iframe.style.maxHeight = "calc(100% - "+marginTopBottom+"px)";
508			iframe.classList.add('frame-maximised');
509			iframe.classList.remove('frame-minimised','frame-super-minimised');
510		}
511		else if(data.type == 'collapseFrame') {
512			iframe.classList.add('frame-minimised');
513			iframe.classList.remove('frame-maximised','frame-super-minimsed');
514			iframe.style.maxHeight = '106px'; //'auto';
515			iframe.width  = data.width;
516			//AvvioWS.closeModal();
517		}
518		else if(data.type == 'minimiseBadge') {
519			iframe.style.maxHeight = '86px';
520			iframe.width  = '100px';
521			iframe.classList.remove('frame-maximised','frame-minimised');
522			iframe.classList.add('frame-super-minimised');
523		}
524		else if(data.type == 'frameContentReady') {
525			if(isWidgetVisible)
526				document.getElementById('avvio-frame').style.opacity = 0.99;
527			iframe.width = data.width;
528		}
529		else if(data.type == 'removeIframe') {
530			document.getElementById('avvio-frame').style.display = 'none';
531		}
532		else if(data.type == 'updateFrameHeight') {
533			iframe.style.maxHeight = 'min('+parseInt(data.height) + 'px, calc(100% - '+marginTopBottom+'px))';
534		}
535		else if(data.type == 'updateLocalstorage') {
536			localStorage.setItem('seenFeedsData', JSON.stringify(data.feedViews));
537		}else if(data.type == 'reApiObjectPass') {
538			ReApiObject = data.ReApiObject;
539			console.log(ReApiObject);
540			console.log("Document ready. ReApiObject loaded. Trying to run ReApiRun() JS function");
541			if (typeof ReApiRun !== "undefined" && typeof ReApiRun === "function") {
542				ReApiRun();
543			}
544		}else if(data.type == 'reWidgetRefresh') {
545		
546			console.log("re widget refresh");
547			iframe.src = iframe.src;
548			setTimeout(function(){
549				AvvioWS.expandReWidget();
550			}, 1000);
551		}
552	},false);
553	if( ! isWidgetVisible)
554	{
555		document.getElementById('avvio-frame').style.cssText += 'opacity: 0 !important;';
556		setTimeout(function(){
557			document.getElementById('avvio-frame').style.display = 'none';
558			document.getElementById('avvio-frame').style.opacity = '0.99'
559		}, 1000);
560	}
561	// hiding widget when scroll
562	var lastScrollTop;
563	var reShown = true;
564	var resizeTimeout;
565	var hideReIframeTimer;
566	window.parent.document.addEventListener("scroll", function(){
567		var st = window.pageYOffset || document.documentElement.scrollTop;
568		if (st > lastScrollTop && reShown)
569		{	// move down
570			iframe.classList.remove('slide-in-blurred-bottom');
571			iframe.classList.add('slide-out-blurred-bottom');
572			reShown = false;
573			hideReIframeTimer = setTimeout(function(){
574				iframe.classList.add('hideReIframe');
575			}, 1000);
576		}
577		else if (st < lastScrollTop && ! reShown)
578		{	// move up
579			clearTimeout(hideReIframeTimer);
580			iframe.classList.remove('hideReIframe');
581			iframe.classList.remove('slide-out-blurred-bottom');
582			iframe.classList.add('slide-in-blurred-bottom');
583			reShown = true;
584			setTimeout(function(){
585				iframe.classList.remove('slide-in-blurred-bottom');
586			}, 300);
587		}
588		lastScrollTop = st <= 0 ? 0 : st; // For Mobile or negative scrolling
589	}, false);
590
591	window.addEventListener("resize", function() {
592		// added timeout to work with maximize button
593		clearTimeout(resizeTimeout);
594		resizeTimeout = setTimeout(function(){
595			var dims = getClientDimensions();
596			var iframe = document.getElementById('avvio-frame');
597
598			if(dims.width > 512) // Desktop
599			{
600				marginTopBottom = 240;
601			}else{ // Mobile
602				marginTopBottom = 50
603			}
604			//const message = {type:"mainWindowHeight", height:dims.height, width:dims.width};
605			//iframe.contentWindow.postMessage(message,'*');
606			AvvioWS.postToWidget({type:"mainWindowHeight", height:dims.height, width:dims.width});
607		}, 500);
608	});
609	AvvioWS.expandReWidget = function(feedNumber = 'feedKey0'){
610		if(document.getElementById('avvio-frame').style.display == 'none')
611		{
612			isWidgetVisible = true;
613			reShown = false;
614			document.getElementById('avvio-frame').style.display = 'block';
615			//const message = {type:"forceExpand", feedNumber: feedNumber};
616			//document.getElementById('avvio-frame').contentWindow.postMessage(message,'*');
617			AvvioWS.postToWidget({type:"forceExpand", feedNumber: feedNumber});
618		}
619		if( !reShown){
620			clearTimeout(hideReIframeTimer);
621			iframe.classList.remove('hideReIframe');
622			iframe.classList.remove('slide-out-blurred-bottom');
623			iframe.classList.add('slide-in-blurred-bottom');
624			reShown = true;
625			setTimeout(function(){
626				iframe.classList.remove('slide-in-blurred-bottom');
627			}, 300);
628		}
629		const message = {type:"expandWidget", feedNumber: feedNumber};
630		document.getElementById('avvio-frame').contentWindow.postMessage(message,'*');
631	}
632}
633
634AvvioWS.deployRequired=function()
635{
636	if ( this.debug ) console.log("WSS:deployRequired" );
637}
638
639AvvioWS.deployFunctional=function()
640{
641	if ( this.debug ) console.log("WSS:deployFunctional" );
642
643	if ( AvvioWS.hasOwnProperty('deployAI') ) AvvioWS.deployAI();
644	if ( AvvioWS.hasOwnProperty('deployRE') ) AvvioWS.deployRE();
645	//AvvioWS.deployModalFunctions();
646}
647
648AvvioWS.deployStatistical=function()
649{
650	if ( this.debug ) console.log("WSS:deployStatistical" );
651
652	if ( AvvioWS.hasOwnProperty('deployCRM') ) AvvioWS.deployCRM();
653}
654
655AvvioWS.deployMarketing=function()
656{
657	if ( this.debug ) console.log("WSS:deployMarketing" );
658}
659AvvioWS.deployModalFunctions();
660
661/*
662===================================================
663ACC
664*/
665
666
667if ( typeof AvvioCC == 'undefined' )
668{
669	// if the parent did not define AvvioCC yet, then we just create one here
670	// and make sure ACC kicks off init straight away
671	var AvvioCC = {};
672
673	// IMPORTANT:
674	// AvvioCC values (if any) need to be defined by parent page before WSS is loaded/executed!	 
675	AvvioCC.variablesAfterScript=false;
676}
677
678// IMPORTANT:
679// if ACC is loaded through WSS, then any avvio related scripts are controlled by the WSS
680// the parent page should not deploy avvio::crm or avvio:ai scripts
681// gtm should not deploy avvio:crm or avvio:ai scripts
682AvvioCC.userDeploysAvvio=true;
683
684AvvioWS.deployACC = function()
685{
686	/* global code */
687	var path="https://secure.plazahotel.ie/crm/rpc/The%20Plaza%20Hotel/ACC_js.php";
688
689	if ( this.lang != false )
690		path+='lang='+this.lang;
691
692	const script = document.createElement('script');
693	script.src = "https://secure.plazahotel.ie/crm/rpc/The%20Plaza%20Hotel/ACC_js.php";
694	document.querySelector('head').appendChild(script);
695}
696
697AvvioWS.deployACC();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.