PageSourceSearch

https://arenaswimming.com.au/assets/cookielaw/js/cookie_consent.js

js arenaswimming.com.au collected 2026-10-04 01:09:38 UTC 23,201 bytes, 652 lines download raw bytes

1/*
2 * Cookie Consent jQuery plugin v1.3.0
3 * http://PrivacyPolicies.com/cookie-consent/
4 *
5 * Copyright 2012-2018, PrivacyPolicies.com
6 * Dual licensed under the MIT or GPL Version 2 licenses.
7 */
8
9$.extend({
10	cookieconsent: function(options){
11		if(typeof(options) == 'undefined'){ options = {}; }
12
13		var current_level = null;
14		var notice_timeout = null;
15		var our_domain = 'fatgalah.com.au';
16		var cookieconsent_root_url = '//privacypolicies.com/cookie-consent/';
17
18
19        
20		// overridable config
21		var config = {
22			_demo_mode: false,
23
24			//cookieconsent_css_filepath: cookieconsent_root_url + 'releases/1.3.0/css/cookie-consent.css',
25			cookieconsent_css_filepath: '/cookieLawMin/css/cookie-consent.css?ver=1.2',
26			cookie_name: 'cookie_consent_level',
27			cookie_expires: new Date((new Date()).getTime() + 365*24*60*60*1000), // default to 365 days in the future
28            cookie_GUID_expires: new Date((new Date()).getTime() + 30*24*60*60*1000), // default to 30 day
29            cookie_css : '',
30
31            clear_database_log_in_days : 30,
32
33            hide_reject: false,
34
35            autorun: true,
36
37            post_url : "/cookieLawMin/cookiePost.php", // used for ajax post to save selected cookie level in database
38
39			// the id of one of the supplied levels
40			default_level_id: 'targeting',
41
42			// popup element
43			popup_container: 'body',
44
45			// can either be a string of html or an element containing the intial text explaning what's going on
46			cookie_notice: 'This website uses cookies, by continuing to use this website you are giving	consent to cookies being used.',
47
48			cookie_policy_link :  '/cookie-policy',
49			privacy_policy_link :  '/privacy-policy',
50			
51
52			// can either be a string of html or an element containing the intro text to the change settings dialog
53			edit_settings_intro: "<h2>Your cookie settings</h2><p>Cookies are very small text files that are stored on your computer when you visit some websites.</p><p>We use cookies to make our website easier for you to use. You can remove any cookies already stored on your computer, but these may prevent you from using parts of our website.</p>",
54
55			// time in seconds that the notice will be displayed before being automatically hidden
56			cookie_notice_autohide_timeout: 0, // 0 for never
57
58			// an element that when clicked will let the user edit their settings. if the element is empty, this plugin will add some call to action text
59			edit_settings_element: null,
60
61			// callback for when the level is changed *by the user*
62			on_change: function(){},
63
64			// path to the css file for a jQuery UI theme (stock or custom - doesn't matter)
65			// set to an empty string in order to use one already specified elsewhere on the site
66			jqueryui_theme_css: 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/themes/pepper-grinder/jquery-ui.css',
67
68			// url of a page explaning how cookies are to be used on the website
69			cookie_policy_url: '',
70
71			// consent levels, starting with basic (legal for all sites) and incrementally getting more cookies set
72			// when the run() method is called, callback functions will be invoked from level index 0 through to the current level
73			levels: [
74				{
75					id: 'necessary',
76					title: 'Strictly necessary<br />& Performance',
77					permissions: ['Remember what is in your shopping basket', 'Remember how far you are through an order'],
78					callback: function(){ }
79				},
80				{
81					id: 'functional',
82					title: 'Functional',
83					permissions: ['Remember your log-in details', 'Make sure you\'re secure when logged in to the website', 'Make sure the website looks consistent'],
84					callback: function(){ }
85				},
86				{
87					id: 'tracking',
88					title: 'Tracking',
89					permissions: ['Monitor how you travel through the website'],
90					callback: function(){ }
91				},
92				{
93					id: 'targeting',
94					title: 'Targeting',
95					permissions: ['Allow you to share pages with social networks like Facebook', 'Send information to other websites so that advertising is more relevant to you'],
96					callback: function(){ }
97				}
98			]
99		};
100
101		// if levels have been specified then remove default levels
102		if(options.levels && options.levels.length > 0){ config.levels = []; }
103
104		$.extend(true, config, options);
105
106		if(config.jqueryui_theme_css && config.jqueryui_theme_css .length){
107			$('head').append('<link id="cookieconsent-theme-link" rel="stylesheet" href="'+config.jqueryui_theme_css+'" t
107ype="text/css" />');
108		}
109		$('head').append('<link rel="stylesheet" href="'+config.cookieconsent_css_filepath+'" type="text/css" />');
110
111		function error(message){
112			if(window.console && window.console.error){ console.error(message, this); }
113		}
114
115		// sanity checks
116		if(config.levels.length == 1){ error('cookieconsent needs at least 2 levels. level 1 is legal without consent, so there\'d be no need for this plugin.'); return; }
117		if(config.levels.length > 4){  error('cookieconsent accepts a maximum of 4 levels.'); return; }
118		for(var i=0, level; level=config.levels[i]; i++){
119			if(level.id.indexOf(' ') > -1){ error('cookieconsent level id properties cannot contain spaces.'); return; }
120		}
121		config.edit_settings_element = $(config.edit_settings_element);
122		if(config.edit_settings_element.length == 0){ error('cookieconsent could not find the element specific in the edit_settings_element property'); return; }
123
124		// level methods
125		config.levels.get = function(level_id){
126			return get_by_id.call(this, level_id);
127		};
128		config.levels.select = function(level){
129			switch(typeof(level)){
130				case 'string':
131					level = get_by_id.call(config.levels, level);
132					break;
133				case 'object':
134					level = get_by_id.call(config.levels, level.id);
135					break;
136				default:
137					error('select_level() requires a level id or an actual level object');
138					return;
139			}
140
141			if(level){
142				current_level = level;
143
144				// set cookie
145				cookies.set(config.cookie_name, current_level.id);
146				//$.post( config.post_url, { selectedLevel: current_level.id, cookieID: cookies.get('cookie_GUID'), clearLogDays:config.clear_database_log_in_days } );
147
148				// update level changer
149				var buttons = level_changer.find('a');
150				buttons.removeClass('activated');
151				for(var i=0, button; button=buttons[i]; i++){
152					$(button).addClass('activated');
153					if($(button).data('level').id == level.id){ break; }
154				}
155
156				// update the permission lists
157				var permission_destination = permission_panels.find('.cookieconsent-permission-panel-allowed ul');
158				permission_destination.find('*').remove();
159				for(var i=0, level; level=this[i]; i++){
160					for(var x=0, permission; permission=level.permissions[x]; x++){
161						permission_destination.append('<li>'+permission+'</li>');
162					}
163					if(level.id == current_level.id){
164						permission_destination = permission_panels.find('.cookieconsent-permission-panel-disallowed ul');
165						permission_destination.find('*').remove();
166					}
167				}
168				permission_panels.find('ul').hide().fadeIn('normal');
169			}else{
170				// supplied level not found, so first try and fall back to the default level, if that fails, default to first level
171				level = config.levels.get(config.default_level_id);
172				if(!level){
173					if(config.levels.length > 0){
174						level = config.levels[0];
175					}else{
176						error('cookieconsent level supplied to select_level does not exist, and could not default');
177						return;
178					}
179				}
180				return config.levels.select(level);
181			}
182			return level;
183		};
184		config.levels.saved = function(){
185			return get_by_id.call(config.levels, cookies.get(config.cookie_name));
186		};
187
188		// array helpers
189
190		function randomString(length, chars) 
191		{
192			var result = '';
193			for (var i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];
194			return result;
195		}
196
197		function get_by_id(id){
198			for(var i=0, elem; elem=this[i]; i++)
199				if(elem.id == id){ return elem;}
200			return null;
201		};
202
203		// cookie methods
204		var cookies = {
205			set: function(name, value){
206				document.cookie = name + "=" + escape(value) + "; expires=" + config.cookie_expires.toGMTString() + "; path=/;";
207			},
208
209			setGUID: function(name, value){
210				document.cookie = name + "=" + escape(value) + "; expires=" + config.cookie_expires.toGMTString() + "; path=/;";
211			},
212			get: function(name){
213				var dc = document.cookie;
214				var prefix = name + "=";
215				var begin = dc.indexOf("; " + prefix);
216				if (begin == -1) {
217					begin = dc.indexOf(prefix);
218					if (begin != 0) return "";
219				} else
220					begin += 2;
221				var end = document.cookie.indexOf(";", begin);
222				if (end == -1)
223					end = dc.length;
224				return unescape(dc.substring(begin + prefix.length, end));
225			}
226		};
227
228		if (document.cookie.indexOf("cookie_GUID=") >= 0) 
229		{
230		// They've been here before.
231		    console.log('GUID has already been set.');		    
232		}
233		else 
234		{    
235			cookies.setGUID('cookie_GUID', randomString(15, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'));
236        } 
237		// popup function
238		function show_popup() {
239			var popup = $(
240				'<div class="ui-widget ui-widget-content ui-corner-top cookieconsent-popup"> <span class="cookie-message-content">' +
241					(typeof(config.cookie_notice) == 'string' ? config.cookie_notice : config.cookie_notice.html()) +
242					'</span><div class="cookieconsent-button-wrap" />' +
243					(config.cookie_policy_url.length > 0?'<a href="'+config.cookie_policy_url+'" class="cookieconsent-cookie-policy-link" target="_blank">Read more about cookies</a>':'') +
244					'</div>'
245			);
246			if(!config.hide_reject)
247			{
248			   var change_settings = make_button('Decline', 'btn-decline-cookie ui-icon-circle-close');
249		    }
250			var dismiss = make_button('Accept', 'ui-icon-circle-check');
251
252			popup.find('.cookieconsent-button-wrap').append(dismiss).append(change_settings);
253			popup.hover(function(){ $(this).data('mouseover', true); }, function(){ $(this).data('mouseover', false); });
254			popup.find('.cookieconsent-toggle-magic-button').click(function(){
255				$('.cookieconsent-magic-button-wrap').show();
256				$('.cookieconsent-toggle-magic-button').hide();
257				edit_settings();
258				return false;
259			});
260
261			if(!config.hide_reject)
262			{
263				change_settings.click(function(){
264					//edit_settings();
265					decline_cookie();
266					popup.fadeOut('normal');
267				});
268		    }
269			
270			dismiss.click(function(){
271				accept_cookie();
272				popup.fadeOut('normal');
273			});
274
275
276
277			$(config.popup_container).append(popup);
278
279			if(config.cookie_notice_autohide_timeout > 0){
280				notice_timeout = setTimeout(function(){
281					if(!popup.data('mouseover')){ popup.fadeOut('normal'); }
282				}, (config.cookie_notice_autohide_timeout * 1000));
283			}
284		}
285
286		// show popup if no cookie_name is set
287		if(!cookies.get(config.cookie_name)) {
288			show_popup();
289		}
290
291		// edit settings dialog
292		var overlay = $('<div class="ui-widget-overlay cookieconsent-overlay" />');
293		var settings_dialog = $(
294			'<div class="ui-widget ui-widget-content ui-corner-all cookieconsent-dialog-content cookieconsent-edit-settings">' +
295				(typeof(config.edit_settings_intro) == 'string' ? config.edit_settings_intro : config.edit_settings_intro.html()) +
296				'<a class="cookieconsent-toggle-magic-button cookieconsent-magic-button-related" href="#" onclick="$(\'.cookieconsent-magic-button-wrap\').fadeIn(\'normal\'); $(\'.cookieconsent-toggle-magic-button\').hide(); return false;"><span class="ui-icon ui-icon-alert"></span>Not concerned with cookies? Click here.</a>' +
297				'<div class="cookieconsent-magic-button-wrap cookieconsent-magic-button-related">' +
298					'<div class="ui-state-highlight ui-corner-all">' +
299						'<iframe allowtransparency="true" frameborder="0" scrolling="auto"></iframe>' +
300					'</div>' +
301				'</div>' +
302				'<div class="cookieconsent-level-changer-wrap">' +
303					'<p style="text-align:center; clear:both; padding:5px 10px;" class="ui-state-highlight">Use the buttons below to see the different types of cookies you can choose to allow.</p>' +
304					'<div class="cookieconsent-level-changer" />' +
305					'<div class="cookieconsent-permission-panels">' +
306						'<div class="ui-corner-all cookieconsent-permission-panel-disallowed"><div class="ui-corner-top ui-widget-header cookieconsent-permission-panel-title">This website cannot:</div><ul class="ui-widget ui-widget-content ui-corner-bottom" /></div>' +
307						'<div class="ui-corner-all cookieconsent-permission-panel-allowed"><div class="ui-corner-top ui-widget-header cookieconsent-permission-panel-title">This website is allowed to:</div><ul class="ui-widget ui-widget-content ui-corner-bottom" /></div>' +
308					'</div>' +
309				'</div>' +
310				(config.cookie_policy_url.length > 0?'<a href="'+config.cookie_policy_url+'" class="cookieconsent-cookie-policy-link" target="_blank">Read more about cookies</a>':'') +
311				'<a href="http://fatgalah.com.au" target="_blank" class="ui-corner-all cookieconsent-logo-link">Powered by Fatgalah.com.au</a>' +
312			'</div>'
313		);
314		var close_settings_dialog = make_button('Close', 'ui-icon-closethick').addClass('cookieconsent-dialog-close');
315		settings_dialog.append(close_settings_dialog);
316		$('body').append(overlay.hide()).append($('<div class="cookieconsent-dialog" />').append(settings_dialog.hide()));
317		close_settings_dialog.click(function(){ close_settings(); });
318		settings_dialog.parent().click(function(){ close_settings(); });
319		settings_dialog.click(function(e){ e.stopPropagation(); });
320		overlay.click(function(){ close_settings(); });
321
322		// level changer
323		var level_changer = settings_dialog.find('.cookieconsent-level-changer');
324		for(var i=0, level; level=config.levels[i]; i++){
325			var width = (96 / config.levels.length);
326			var margin = ((4 / config.levels.length) / 2);
327			var button = $(
328				'<a href="#" class="ui-corner-all" style="width:'+width+'%; margin:'+margin+'%;">' +
329					'<span class="cookieconsent-level-button-icon cookieconsent-level-'+level.id+'" />' +
330					'<span class="cookieconsent-level-button-title">'+level.title+'</span>' +
331				'</a>'
332			);
333			button.data('level', level);
334			button.click(function(){
335				config.levels.select($(this).data('level'));
336				if(typeof(config.on_change) == 'function'){ config.on_change(); }
337				return false;
338			});
339
340			// Trigger function from script tags
341			// Stop only when current_level meet
342			var scriptTrigger = function (stop_with_current_level) {
343				for(var i=0, level; level=config.levels[i]; i++){
344					current_level = cookies.get(config.cookie_name);
345
346					var level_scripts = $('script[cookieconsent-level='+level.id+']');
347					
348					level_scripts.each(function(){
349
350						var src = $(this).attr('src');
351
352						if (typeof src !== typeof undefined && src !== false) {
353							$(this).attr('type', 'text/javascript');
354							console.log($(this).attr('src'));
355						} else {
356							$(this).replaceWith(eval($(this).text()));
357							console.log($(this).text());
358						}
359
360					});
361					
362					if (level.id === stop_with_current_level) {
363						break;
364					}
365				}
366			};
367
368			// Trigger function init
369			current_level = cookies.get(config.cookie_name);
370
371			if (current_level) {
372				scriptTrigger(current_level);
373			} else {
374				cookies.set(config.cookie_name, config.default_level_id);
375			}
376
377			// Trigger function when click setting level
378			button.click(function () {
379				var new_current_level_id = $(this).data('level').id
380				if (typeof $(this).data('level').callback == 'function') {
381					run_callbacks(new_current_level_id);
382				}
383				scriptTrigger(new_current_level_id);
384
385				// Save new current_level into cookies
386				cookies.set(config.cookie_name, new_current_level_id);
387			});
388			level_changer.append(button);
389
390			// set the icon (the bars)
391			var icon_wrap = button.find('.cookieconsent-level-button-icon');
392			for(var x=0; x<config.levels.length; x++){
393				var height = (100-((90/config.levels.length)*((config.levels.length-1)-x)));
394				var width = (100/config.levels.length);
395				var left = ((width*x)+(margin*x));
396				icon_wrap.append('<div style="height:'+height+'%; width:'+width+'%; left:'+left+'%;"'+(x<=i?' class="activated"':'')+' />');
397			}
398		}
399
400		// permission panels
401		var permission_panels = settings_dialog.find('.cookieconsent-permission-panels');
402
403		// edit settings link
404		if(config.edit_settings_element != null){
405			switch(config.edit_settings_element[0].nodeName.toLowerCase()){
406				case 'input':
407					if(trim(config.edit_settings_element.val()).length == 0){ config.edit_settings_element.val('Change your cookie settings'); }
408					break;
409				default:
410					if(trim(config.edit_settings_element.html()).length == 0){ config.edit_settings_element.html('Change your cookie settings'); }
411			}
412			config.edit_settings_element.click(function(){ edit_settings(); return false; });
413		}
414
415		function saveInDB(cookieLevel)
416		{
417			$.post( config.post_url, { selectedLevel: cookieLevel, cookieID: cookies.get('cookie_GUID'), clearLogDays:config.clear_database_log_in_days } );
418		}
419
420		function decline_cookie()
421		{
422			cookies.set(config.cookie_name,'necessary');
423			cookies.set('user_saved_cookie',1);
424			saveInDB('necessary');
425			$('.cookieconsent-popup').hide();
426		}
427
428		function edit_settings(){
429			overlay.show();
430			settings_dialog.css({'top': $(window).scrollTop()+'px'}).fadeIn('fast');
431			$('.cookieconsent-popup').hide();
432		}
433
434		function accept_cookie(){
435
436			cookies.set('user_saved_cookie',1);			
437			cookies.set(config.cookie_name,'targeting');
438			saveInDB('targeting');
439			
440			
441		}
442		function close_settings(){			
443			cookies.set('user_saved_cookie',1);
444			overlay.hide();			
445			settings_dialog.fadeOut('fast');
446		}
447
448		// ui elements
449		function make_button(text, icon_class){
450			var button = $('<button class="ui-button ui-widget ui-state-default ui-corner-all">'+(icon_class?'<span class="ui-icon '+icon_class+' ui-button-icon-primary" />':'')+'<span class="ui-button-text">'+text+'</span></button>');
451			if(icon_class){
452				button.addClass('ui-button-text-icon-primary');
453			}else{
454				button.addClass('ui-button-text-only');
455			}
456			return button;
457		}
458
459		// functional helpers
460		function trim(text, char){
461			if(!char){ char = '\\s'; }
462			return text.replace(eval('/^'+char+'+/'), '').replace(eval('/'+char+'+$/'), '');
463		};
464
465		function run_callbacks(stop_with_current_level){
466			var script_elems = [];
467			var loaded_script_count = 0;
468
469			// when all level-applicable scripts have completed loading (if any) execute callbacks
470			function check_loaded_and_exec(){
471				if(script_elems.length > loaded_script_count){ return; }
472
473				for(var i=0, level; level=config.levels[i]; i++){
474					if(typeof(level.callback) == 'function'){ level.callback(); }
475
476					if(stop_with_current_level && level.id == current_level.id){ return; }
477				}
478			}
479
480			// find the scripts to be converted
481			for(var i=0, level; level=config.levels[i]; i++){
482				var level_scripts = $('script[cookieconsent-level='+level.id+']');
483				level_scripts.each(function(){
484					script_elems.push($(this));
485				});
486
487				if(stop_with_current_level && level.id == current_level.id){ break; }
488			}
489
490			// convert the scripts
491			for(var i=0, script; script=script_elems[i]; i++){
492				var self = script;
493				if(self.attr('src')){
494					$.getScript(self.attr('src'), function(){
495						loaded_script_count++;
496						check_loaded_and_exec();
497					});
498				} else {
499					self.attr('type', 'text/javascript')
500					$('head').append(self);
501					loaded_script_count++;
502					check_loaded_and_exec();
503				}
504			}
505
506			// check immediately incase there's no scripts needed for callbacks
507			check_loaded_and_exec();
508		}
509
510		// initialise and run
511		function initialise(){			
512             //alert(document.cookie.indexOf("user_saved_cookie="));
513             if (document.cookie.indexOf("user_saved_cookie=") < 0) 
514				{
515				   // They've been here before.
516				    show_popup();
517				}
518
519			function non_global_consent_operations(prevent_callback_execution){
520
521				// popup message if they haven't yet seen the cookie notice
522				if(config._demo_mode || config.levels.saved() == null){					
523					//show_popup();
524				}
525
526				//if user has not yet clicked yet
527				
528				if (document.cookie.indexOf("user_saved_cookie=") < 0) 
529				{
530				   // They've been here before.
531				    //show_popup();
532				}
533
534
535				initialise_level_changer();
536
537				if(!prevent_callback_execution){
538					// runs through each level's callbacks up to and including the current level
539					run_callbacks(true);
540				}
541			}
542
543			function initialise_level_changer(){
544				var saved_level = config.levels.saved();
545
546				if(saved_level == null){
547					config.levels.select(config.default_level_id);
548				} else {
549					// initialise UI with current level
550					config.levels.select(saved_level);
551				}
552			}
553
554
555			// magic button
556			if(typeof(window.postMessage) == 'function'){
557
558				function show_level_change(){
559					$('.cookieconsent-level-changer-wrap').show();
560					$('.cookieconsent-magic-button-wrap').hide();
561					$('.cookieconsent-toggle-magic-button').show();
562					initialise_level_changer();
563				}
564				function hide_level_change(){
565					$('.cookieconsent-level-changer-wrap').hide();
566					$('.cookieconsent-magic-button-wrap').show();
567					$('.cookieconsent-toggle-magic-button').hide();
568				}
569
570				window.addEventListener("message", function(event){
571					if(event.origin.replace(/^http(s)?:\/\//, '') == our_domain){
572						switch(event.data){
573							case 'global_enabled':
574								hide_level_change();
575								break;
576							case 'global_disabled':
577								show_level_change();
578								break;
579							default:
580								var parts = event.data.split(':');
581								if(parts.length == 2 && parts[0] == 'cookie_consent_global_allow'){
582									switch(parts[1]){
583										case 'true':
584											// run all callbacks regardless of set level
585											run_callbacks(false);
586
587											hide_level_change();
588
589											if(config._demo_mode){
590												non_global_consent_operations(true);
591											}
592											break;
593										case 'false':
594											non_global_consent_operations();
595											break;
596										default:
597											error('unrecognised response from Magic Button frame');
598											return;
599									}
600								}
601						}
602					}
603				}, false);
604			}else{
605				// older browsers which don't support cross domain messaging.
606				// show the popup and don't allow Magic Button support
607
608				non_global_consent_operations();
609
610				// hide Magic Button references
611				$('.cookieconsent-magic-button-related').hide();
612			}
613
614			// now we've set up the event listener (or not), we can safely set the magic button iframe source, and wait for any responses
615			settings_dialog.find('iframe').attr('src', cookieconsent_root_url+'magic-button/');
616			// magic button
617
618		}
619		if(config.autorun){
620			initialise();
621		}
622
623		// public
624		return {
625			get_levels: function(){
626				return config.levels;
627			},
628			get_level: function(level_id){
629				return config.levels.get(level_id);
630			},
631			select_level: function(level){
632				return config.levels.select(level);
633			},
634			saved_level: function(level){
635				return config.levels.saved();
636			},
637			is_granted: function(level_id){
638				for(var i=0, level; level=config.levels[i]; i++){
639					if(level.id == level_id){ return true; }
640					if(level.id == current_level.id){ return false; }
641				}
642				return false;
643			},
644			edit_settings: function(){
645				edit_settings();
646			},
647			run: function(){
648				initialise();
649			}
650		};
651	}
652});

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.