PageSourceSearch

https://www.naftikachronika.gr/wp-content/themes/naftikachronika-v2/scripts-head.js?ver=1750530230

js naftikachronika.gr collected 2026-10-02 07:27:11 UTC 10,545 bytes, 308 lines download raw bytes

1/*------------------------------------------------------------*/
2// Header Scripts
3
4function header_scripts() {
5	
6	var header = document.querySelector('.cc-header');
7	var header_top = document.querySelector('.cc-header-top');
8	var elementor_header = document.querySelector('.elementor-location-header');
9	
10	var header_color = '';
11	var is_color_set = false;
12	var is_subnav_open = false;
13	
14	var header_height = 0;
15	var header_top_height = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--header-top-height'));
16	
17	// Header Menu → Mark active items
18	var menu_items = document.querySelectorAll('.cc-header-navbar .header-menu .sub-menu li.current-menu-item');
19	menu_items.forEach(function(item) {
20		item.parentNode.closest('li').classList.add('current-menu-item');
21	});
22	
23	// Header Menu → Set header colors
24	var menu_items = document.querySelectorAll('.cc-header-navbar .header-menu > li.current-menu-item');
25	if (menu_items) { // First level items
26		menu_items.forEach(function(item) {
27			item.classList.forEach(function(class_name) {
28				if (class_name.startsWith('header-color')) {
29					header_color = class_name;
30				}
31			});
32		});
33		menu_items = document.querySelectorAll('.cc-header-navbar .header-menu > li.current-menu-item > .sub-menu > li.current-menu-item');
34		if (menu_items) { // Second level items
35			menu_items.forEach(function(item) {
36				item.classList.forEach(function(class_name) {
37					if (class_name.startsWith('header-color')) {
38						header_color = class_name;
39					}
40				});
41			});
42		}
43		if (header_color) {
44			header.classList.add(header_color);
45			var header_color_hex = getComputedStyle(header).getPropertyValue('--header-background-color');
46			document.querySelector('meta[name="theme-color"]').setAttribute('content', header_color_hex);
47			console.log('Header color: '+header_color_hex+' ('+header_color+')');
48		}
49	}
50	
51	// Header Submenus
52	var submenus = document.querySelectorAll('.cc-header-subnav .header-submenu');
53	submenus.forEach(function(submenu) { // Loop through submenu placeholders
54		var submenu_name = submenu.dataset.menu;
55		if (submenu_name) {
56			
57			// Copy items from the main menu
58			var submenu_source = document.querySelector('.cc-header-navbar .header-menu > li.'+submenu_name+' > ul.sub-menu');
59			if (submenu_source) {
60				var submenu_clone = submenu_source.cloneNode(true);
61				submenu_clone.classList.replace('sub-menu', 'menu');
62				submenu.replaceChildren(submenu_clone);
63			}
64			
65			// Open the first active submenu
66			if (!is_subnav_open) {
67				var is_submenu_current = submenu.querySelector('li.current-menu-item');
68				if (is_submenu_current) {
69					is_subnav_open = true;
70					header.classList.add('open-'+submenu_name);
71					set_header_height(); // Refresh header height
72				}
73			}
74			
75			// Add listener to open submenus on click
76			var submenu_trigger = document.querySelector('.cc-header-navbar .header-menu > li.'+submenu_name+' > a');
77			if (submenu_trigger) {
78				submenu_trigger.addEventListener('click', function(event) {
79					if (!header.classList.contains('open-'+submenu_name) && !header.classList.contains('open-ddrawer')) {
80						event.preventDefault();
81						header.classList.forEach(function(class_name) {
82							if (class_name.startsWith('open-header-submenu')) {
83								header.classList.remove(class_name);
84							}
85						});
86						header.classList.add('open-'+submenu_name);
87						set_header_height(); // Refresh header height
88					} else {
89						var submenu_trigger_href = submenu_trigger.getAttribute('href');
90						if (submenu_trigger_href == '#') {
91							event.preventDefault();
92						}
93					}
94				});
95			}
96			
97		}
98	});
99	
100	// Desktop Drawer Submenus → Initialize
101	var submenus = document.querySelectorAll('.cc-header-ddrawer .header-submenu');
102	submenus.forEach(function(submenu) { // Loop through submenu placeholders
103		var submenu_name = submenu.dataset.menu;
104		if (submenu_name) {
105			
106			// Copy items from the main menu
107			var submenu_source = document.querySelector('.cc-header-navbar .header-menu > li.'+submenu_name+' > ul.sub-menu');
108			if (submenu_source) {
109				var submenu_clone = submenu_source.cloneNode(true);
110				submenu_clone.classList.replace('sub-menu', 'menu');
111				submenu.replaceChildren(submenu_clone);
112			}
113			
114		}
115	});
116	
117	// Desktop Drawer → Alternative content functionality
118	var drawer_content_button = document.querySelector('.cc-header-ddrawer #trigger-ddrawer-alt-content');
119	drawer_content_button.addEventListener('click', function(event) {
120		event.preventDefault();
121		if (header.classList.contains('ddrawer-alt-content')) {
122			header.classList.remove('ddrawer-alt-content');
123			drawer_content_button.classList.remove('active');
124		} else {
125			header.classList.add('ddrawer-alt-content');
126			drawer_content_button.classList.add('active');
127		}
128	});
129	
130	// Mobile Drawer → Prevent default functionality for dummy links (mobile menu top level)
131	var menu_items = document.querySelectorAll('.cc-header-mdrawer .header-mobile-menu > li > a');
132	menu_items.forEach(function(item) {
133		item.addEventListener('click', function(event) {
134			if (this.getAttribute('href') == '#') {
135				event.preventDefault();
136			}
137		});
138	});
139	
140	// Desktop Drawer → Open/close functionality
141	function toggle_ddrawer(action = 'toggle') {
142		var is_ddrawer_open = header.classList.contains('open-ddrawer');
143		if (is_ddrawer_open) {
144			if (action == 'close' || action == 'toggle') {
145				document.body.classList.remove('no-scroll');
146				header.classList.remove('open-ddrawer');
147				console.log('Desktop drawer closed');
148				set_header_height(); // Refresh header height
149			}
150		} else {
151			if (action == 'open' || action == 'toggle') {
152				document.body.classList.add('no-scroll');
153				header.classList.add('open-ddrawer');
154				console.log('Desktop drawer opened');
155				set_header_height(); // Refresh header height
156			}
157		}
158	}
159	
160	// Mobile Drawer → Open/close functionality
161	function toggle_mdrawer(action = 'toggle') {
162		var is_mdrawer_open = header.classList.contains('open-mdrawer');
163		if (is_mdrawer_open) {
164			if (action == 'close' || action == 'toggle') {
165				document.body.classList.remove('no-scroll');
166				header.classList.remove('open-mdrawer');
167				console.log('Mobile drawer closed');
168				// set_header_height(); // Refresh header height
169			}
170		} else {
171			if (action == 'open' || action == 'toggle') {
172				document.body.classList.add('no-scroll');
173				header.classList.add('open-mdrawer');
174				console.log('Mobile drawer opened');
175				// set_header_height(); // Refresh header height
176			}
177		}
178	}
179	
180	// Drawers → Open/close trigger buttons
181	var ddrawer_trigger = document.querySelector('.cc-header .trigger-ddrawer');
182	ddrawer_trigger.addEventListener('click', function(event) {
183		event.preventDefault();
184		toggle_ddrawer();
185	});
186	var mdrawer_trigger = document.querySelector('.cc-header .trigger-mdrawer');
187	mdrawer_trigger.addEventListener('click', function(event) {
188		event.preventDefault();
189		toggle_mdrawer();
190	});
191	
192	// Drawers → Close on ESC key press
193	document.addEventListener('keydown', function(event) {
194		if (event.key === "Escape" || event.keyCode === 27) {
195			toggle_ddrawer('close');
196			toggle_mdrawer('close');
197		}
198	});
199	
200	// Drawers → Close on viewport resize (eg: orientation change)
201	window.addEventListener('resize', function() {
202		if (window.innerWidth >= 1024) {
203			toggle_mdrawer('close');
204		} else {
205			toggle_ddrawer('close');
206		}
207	});
208	
209	// Drawers → Open desktop drawer if there is a newsletter form response
210	var newsletter_header_response = document.querySelector('.cc-header-ddrawer .mc4wp-form .mc4wp-response .mc4wp-alert');
211	if (newsletter_header_response) {
212		toggle_ddrawer('open');
213	}
214	
215	// Sticky Header → Set header height (parent element min-height)
216	// Acts as a content spacer when the header has a fixed position
217	function set_header_height() {
218		header_height = header.offsetHeight;
219		if (header_top.offsetHeight == 0 && window.innerWidth >= 1024) {
220			header_height = header_height + header_top_height;
221		}
222		document.documentElement.style.setProperty('--header-height', header_height+'px');
223	}
224	set_header_height(); // Take a quick first measurment
225	
226	// Sticky Header → Refresh header height after page load
227	window.addEventListener('load', function() {
228		set_header_height(); // Take a more refined measurment
229	});
230	
231	// Sticky Header → Refresh header height on viewport resize
232	window.addEventListener('resize', function() {
233		set_header_height();
234	});
235	
236	// Sticky Header → Add/remove sticky class
237	// Sticky is always enabled on mobile (with CSS). No need to add a class!
238	window.addEventListener('scroll', function() {
239		if (!document.body.classList.contains('elementor-editor-active')) { // Elementor editor is NOT active!
240			if (window.innerWidth >= 1024) {
241				if (window.scrollY >= header_top_height) {
242					elementor_header.classList.add('sticky-enabled');
243				} else {
244					elementor_header.classList.remove('sticky-enabled');
245					set_header_height(); // Refresh header height
246				}
247			} else { // Remove class in case of viewport resize
248				elementor_header.classList.remove('sticky-enabled');
249			}
250		}
251	});
252	
253	// Update Date
254	update_date(); // Utility Functions
255	setInterval(update_date, 5000);
256	
257}
258
259
260/*------------------------------------------------------------*/
261// Content Scripts
262
263function content_scripts() {
264	
265	// Post Share Buttons
266	var post_share_buttons = document.querySelectorAll('.post-share .post-share-toggle');
267	post_share_buttons.forEach(function(post_share_button) {
268		post_share_button.addEventListener('click', function(event) {
269			event.preventDefault();
270			var post_share = post_share_button.closest('.post-share');
271			if (post_share) {
272				post_share.classList.toggle('open');
273			}
274		});
275	});
276	
277	// Publication Groups
278	var toggle_publication_button = document.querySelectorAll('.pub-toggle');
279	toggle_publication_button.forEach(function(button) {
280		button.addEventListener('click', function(event) {
281			event.preventDefault();
282			var publication_group = this.closest('.pub-group');
283			if (publication_group) {
284				publication_group.classList.toggle('open');
285			}
286		});
287	});
288	
289}
290
291
292/*------------------------------------------------------------*/
293// Utility Functions
294
295function update_date() {
296	
297	var now = new Date();
298	var day = now.getDate();
299	var month = now.getMonth() + 1; // Month starts from 0
300	var year = now.getFullYear();
301	
302	day = (day < 10) ? '0' + day : day;
303	month = (month < 10) ? '0' + month : month;
304	var date = day + '.' + month + '.' + year;
305	
306	document.getElementById('current-date').innerHTML = date;
307	
308}

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.