| 
				
			 | 
			
			
				
				@@ -7,6 +7,7 @@ import '@fortawesome/fontawesome-free/css/all.min.css'; 
			 | 
		
		
	
		
			
			| 
				7
			 | 
			
				7
			 | 
			
			
				
				 document.addEventListener('DOMContentLoaded', function () { 
			 | 
		
		
	
		
			
			| 
				8
			 | 
			
				8
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				9
			 | 
			
				9
			 | 
			
			
				
				     imageLoading() 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				10
			 | 
			
			
				
				+    scrollOpenCover(); 
			 | 
		
		
	
		
			
			| 
				10
			 | 
			
				11
			 | 
			
			
				
				     reset() // reset everrything to ensure smooth 
			 | 
		
		
	
		
			
			| 
				11
			 | 
			
				12
			 | 
			
			
				
				     sessionStorage.setItem("initial-load", "true"); // will be used by click event 
			 | 
		
		
	
		
			
			| 
				12
			 | 
			
				13
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -37,12 +38,12 @@ document.addEventListener('click', function () { 
			 | 
		
		
	
		
			
			| 
				37
			 | 
			
				38
			 | 
			
			
				
				         }, 600) 
			 | 
		
		
	
		
			
			| 
				38
			 | 
			
				39
			 | 
			
			
				
				     } 
			 | 
		
		
	
		
			
			| 
				39
			 | 
			
				40
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				40
			 | 
			
				
			 | 
			
			
				
				-    setTimeout(()=>{ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				41
			 | 
			
			
				
				+    setTimeout(() => { 
			 | 
		
		
	
		
			
			| 
				41
			 | 
			
				42
			 | 
			
			
				
				         eventCountdown(); 
			 | 
		
		
	
		
			
			| 
				42
			 | 
			
				43
			 | 
			
			
				
				         let petalOverlay = document.getElementById("petalOverlay"); 
			 | 
		
		
	
		
			
			| 
				43
			 | 
			
				44
			 | 
			
			
				
				         petalOverlay.classList.remove("hidden"); 
			 | 
		
		
	
		
			
			| 
				44
			 | 
			
				45
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				45
			 | 
			
				
			 | 
			
			
				
				-    },5000) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				46
			 | 
			
			
				
				+    }, 5000) 
			 | 
		
		
	
		
			
			| 
				46
			 | 
			
				47
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				47
			 | 
			
				48
			 | 
			
			
				
				 }); 
			 | 
		
		
	
		
			
			| 
				48
			 | 
			
				49
			 | 
			
			
				
				  
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -103,6 +104,49 @@ function imageLoading() { 
			 | 
		
		
	
		
			
			| 
				103
			 | 
			
				104
			 | 
			
			
				
				     checkAllImagesLoaded(); 
			 | 
		
		
	
		
			
			| 
				104
			 | 
			
				105
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				105
			 | 
			
				106
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				107
			 | 
			
			
				
				+// enable open close cover 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				108
			 | 
			
			
				
				+function scrollOpenCover() { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				109
			 | 
			
			
				
				+    var partLeftPos = 0; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				110
			 | 
			
			
				
				+    var partRightPos = 0; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				111
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				112
			 | 
			
			
				
				+    function updatePositions() { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				113
			 | 
			
			
				
				+        var distance = $(window).scrollTop() * 2; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				114
			 | 
			
			
				
				+        var left = partLeftPos - distance; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				115
			 | 
			
			
				
				+        var right = partRightPos - distance; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				116
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				117
			 | 
			
			
				
				+        $('.left').css('left', left + "px"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				118
			 | 
			
			
				
				+        $('.right').css('right', right + "px"); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				119
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				120
			 | 
			
			
				
				+        //Calculate boundaries 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				121
			 | 
			
			
				
				+        var leftPartRightEdge = $('.left').offset().left + $('.left').outerWidth(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				122
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				123
			 | 
			
			
				
				+        //Check if both parts are completely off-screen 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				124
			 | 
			
			
				
				+        var isLeftOffScreen = leftPartRightEdge <= 0; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				125
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				126
			 | 
			
			
				
				+        //Toggle visibility and z-index 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				127
			 | 
			
			
				
				+        if (isLeftOffScreen && left < 0) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				128
			 | 
			
			
				
				+            $('.parent').removeClass('z-30'); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				129
			 | 
			
			
				
				+        } else { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				130
			 | 
			
			
				
				+            $('.parent').addClass('z-30'); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				131
			 | 
			
			
				
				+        } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				132
			 | 
			
			
				
				+    } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				133
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				134
			 | 
			
			
				
				+    //Initial positions update 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				135
			 | 
			
			
				
				+    updatePositions(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				136
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				137
			 | 
			
			
				
				+    //Listen to scroll events using requestAnimationFrame for smooth animation 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				138
			 | 
			
			
				
				+    var ticking = false; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				139
			 | 
			
			
				
				+    $(window).scroll(function () { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				140
			 | 
			
			
				
				+        if (!ticking) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				141
			 | 
			
			
				
				+            window.requestAnimationFrame(function () { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				142
			 | 
			
			
				
				+                updatePositions(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				143
			 | 
			
			
				
				+                ticking = false; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				144
			 | 
			
			
				
				+            }); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				145
			 | 
			
			
				
				+        } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				146
			 | 
			
			
				
				+        ticking = true; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				147
			 | 
			
			
				
				+    }); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				148
			 | 
			
			
				
				+} 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				149
			 | 
			
			
				
				+ 
			 | 
		
		
	
		
			
			| 
				106
			 | 
			
				150
			 | 
			
			
				
				 function reset() { 
			 | 
		
		
	
		
			
			| 
				107
			 | 
			
				151
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				108
			 | 
			
				152
			 | 
			
			
				
				     // reset to top 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -115,7 +159,7 @@ function reset() { 
			 | 
		
		
	
		
			
			| 
				115
			 | 
			
				159
			 | 
			
			
				
				     }, 100) 
			 | 
		
		
	
		
			
			| 
				116
			 | 
			
				160
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				117
			 | 
			
				161
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				118
			 | 
			
				
			 | 
			
			
				
				-function playMusic(){ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				162
			 | 
			
			
				
				+function playMusic() { 
			 | 
		
		
	
		
			
			| 
				119
			 | 
			
				163
			 | 
			
			
				
				     var audioElement = document.getElementById('player'); 
			 | 
		
		
	
		
			
			| 
				120
			 | 
			
				164
			 | 
			
			
				
				     var hasPlayed = false; 
			 | 
		
		
	
		
			
			| 
				121
			 | 
			
				165
			 | 
			
			
				
				     if (!hasPlayed) { 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -123,10 +167,10 @@ function playMusic(){ 
			 | 
		
		
	
		
			
			| 
				123
			 | 
			
				167
			 | 
			
			
				
				         var playPromise = audioElement.play(); 
			 | 
		
		
	
		
			
			| 
				124
			 | 
			
				168
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				125
			 | 
			
				169
			 | 
			
			
				
				         if (playPromise !== undefined) { 
			 | 
		
		
	
		
			
			| 
				126
			 | 
			
				
			 | 
			
			
				
				-            playPromise.then(function() { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				170
			 | 
			
			
				
				+            playPromise.then(function () { 
			 | 
		
		
	
		
			
			| 
				127
			 | 
			
				171
			 | 
			
			
				
				                 // Automatic playback started! 
			 | 
		
		
	
		
			
			| 
				128
			 | 
			
				172
			 | 
			
			
				
				                 hasPlayed = true; // Prevent further attempts to play 
			 | 
		
		
	
		
			
			| 
				129
			 | 
			
				
			 | 
			
			
				
				-            }).catch(function(error) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				173
			 | 
			
			
				
				+            }).catch(function (error) { 
			 | 
		
		
	
		
			
			| 
				130
			 | 
			
				174
			 | 
			
			
				
				                 // Automatic playback failed. 
			 | 
		
		
	
		
			
			| 
				131
			 | 
			
				175
			 | 
			
			
				
				                 console.log('Autoplay failed: ' + error); 
			 | 
		
		
	
		
			
			| 
				132
			 | 
			
				176
			 | 
			
			
				
				             }); 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -134,28 +178,28 @@ function playMusic(){ 
			 | 
		
		
	
		
			
			| 
				134
			 | 
			
				178
			 | 
			
			
				
				     } 
			 | 
		
		
	
		
			
			| 
				135
			 | 
			
				179
			 | 
			
			
				
				 } 
			 | 
		
		
	
		
			
			| 
				136
			 | 
			
				180
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				137
			 | 
			
				
			 | 
			
			
				
				-function eventCountdown(){ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				181
			 | 
			
			
				
				+function eventCountdown() { 
			 | 
		
		
	
		
			
			| 
				138
			 | 
			
				182
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				139
			 | 
			
				
			 | 
			
			
				
				-//Countdown date (adjust this date to your desired countdown target) 
			 | 
		
		
	
		
			
			| 
				140
			 | 
			
				
			 | 
			
			
				
				-const countdownDate = new Date('2024-08-17T11:00:00').getTime(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				183
			 | 
			
			
				
				+    //Countdown date (adjust this date to your desired countdown target) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				184
			 | 
			
			
				
				+    const countdownDate = new Date('2024-08-17T11:00:00').getTime(); 
			 | 
		
		
	
		
			
			| 
				141
			 | 
			
				185
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				142
			 | 
			
				
			 | 
			
			
				
				-//Update the countdown every second 
			 | 
		
		
	
		
			
			| 
				143
			 | 
			
				
			 | 
			
			
				
				-const countdownElement = document.getElementById('countdown'); 
			 | 
		
		
	
		
			
			| 
				144
			 | 
			
				
			 | 
			
			
				
				-const countdownTimer = setInterval(() => { 
			 | 
		
		
	
		
			
			| 
				145
			 | 
			
				
			 | 
			
			
				
				-    //Get the current date and time 
			 | 
		
		
	
		
			
			| 
				146
			 | 
			
				
			 | 
			
			
				
				-    const now = new Date().getTime(); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				186
			 | 
			
			
				
				+    //Update the countdown every second 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				187
			 | 
			
			
				
				+    const countdownElement = document.getElementById('countdown'); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				188
			 | 
			
			
				
				+    const countdownTimer = setInterval(() => { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				189
			 | 
			
			
				
				+        //Get the current date and time 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				190
			 | 
			
			
				
				+        const now = new Date().getTime(); 
			 | 
		
		
	
		
			
			| 
				147
			 | 
			
				191
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				148
			 | 
			
				
			 | 
			
			
				
				-    //Calculate the time remaining 
			 | 
		
		
	
		
			
			| 
				149
			 | 
			
				
			 | 
			
			
				
				-    const distance = countdownDate - now; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				192
			 | 
			
			
				
				+        //Calculate the time remaining 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				193
			 | 
			
			
				
				+        const distance = countdownDate - now; 
			 | 
		
		
	
		
			
			| 
				150
			 | 
			
				194
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				151
			 | 
			
				
			 | 
			
			
				
				-    //Calculate days, hours, minutes, and seconds 
			 | 
		
		
	
		
			
			| 
				152
			 | 
			
				
			 | 
			
			
				
				-    const days = Math.floor(distance / (1000 * 60 * 60 * 24)); 
			 | 
		
		
	
		
			
			| 
				153
			 | 
			
				
			 | 
			
			
				
				-    const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); 
			 | 
		
		
	
		
			
			| 
				154
			 | 
			
				
			 | 
			
			
				
				-    const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); 
			 | 
		
		
	
		
			
			| 
				155
			 | 
			
				
			 | 
			
			
				
				-    const seconds = Math.floor((distance % (1000 * 60)) / 1000); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				195
			 | 
			
			
				
				+        //Calculate days, hours, minutes, and seconds 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				196
			 | 
			
			
				
				+        const days = Math.floor(distance / (1000 * 60 * 60 * 24)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				197
			 | 
			
			
				
				+        const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				198
			 | 
			
			
				
				+        const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				199
			 | 
			
			
				
				+        const seconds = Math.floor((distance % (1000 * 60)) / 1000); 
			 | 
		
		
	
		
			
			| 
				156
			 | 
			
				200
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				157
			 | 
			
				
			 | 
			
			
				
				-    //Format the countdown into a string 
			 | 
		
		
	
		
			
			| 
				158
			 | 
			
				
			 | 
			
			
				
				-    const countdownHTML = ` 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				201
			 | 
			
			
				
				+        //Format the countdown into a string 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				202
			 | 
			
			
				
				+        const countdownHTML = ` 
			 | 
		
		
	
		
			
			| 
				159
			 | 
			
				203
			 | 
			
			
				
				         <div class="flex flex-col"> 
			 | 
		
		
	
		
			
			| 
				160
			 | 
			
				204
			 | 
			
			
				
				             <div class="flex gap-8 justify-center"> 
			 | 
		
		
	
		
			
			| 
				161
			 | 
			
				205
			 | 
			
			
				
				                 <div class="font-medium text-gray-500">${days}</div> 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -175,13 +219,13 @@ const countdownTimer = setInterval(() => { 
			 | 
		
		
	
		
			
			| 
				175
			 | 
			
				219
			 | 
			
			
				
				         </div> 
			 | 
		
		
	
		
			
			| 
				176
			 | 
			
				220
			 | 
			
			
				
				     `; 
			 | 
		
		
	
		
			
			| 
				177
			 | 
			
				221
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				178
			 | 
			
				
			 | 
			
			
				
				-    //Display the countdown in the element 
			 | 
		
		
	
		
			
			| 
				179
			 | 
			
				
			 | 
			
			
				
				-    countdownElement.innerHTML = countdownHTML; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				222
			 | 
			
			
				
				+        //Display the countdown in the element 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				223
			 | 
			
			
				
				+        countdownElement.innerHTML = countdownHTML; 
			 | 
		
		
	
		
			
			| 
				180
			 | 
			
				224
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				181
			 | 
			
				
			 | 
			
			
				
				-    //If the countdown is over, clear the timer and display a message 
			 | 
		
		
	
		
			
			| 
				182
			 | 
			
				
			 | 
			
			
				
				-    if (distance < 0) { 
			 | 
		
		
	
		
			
			| 
				183
			 | 
			
				
			 | 
			
			
				
				-        clearInterval(countdownTimer); 
			 | 
		
		
	
		
			
			| 
				184
			 | 
			
				
			 | 
			
			
				
				-        countdownElement.innerHTML = 'Majlis berlangsung'; 
			 | 
		
		
	
		
			
			| 
				185
			 | 
			
				
			 | 
			
			
				
				-    } 
			 | 
		
		
	
		
			
			| 
				186
			 | 
			
				
			 | 
			
			
				
				-}, 1000); // Update every second (1000 milliseconds) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				225
			 | 
			
			
				
				+        //If the countdown is over, clear the timer and display a message 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				226
			 | 
			
			
				
				+        if (distance < 0) { 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				227
			 | 
			
			
				
				+            clearInterval(countdownTimer); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				228
			 | 
			
			
				
				+            countdownElement.innerHTML = 'Majlis berlangsung'; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				229
			 | 
			
			
				
				+        } 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				230
			 | 
			
			
				
				+    }, 1000); // Update every second (1000 milliseconds) 
			 | 
		
		
	
		
			
			| 
				187
			 | 
			
				231
			 | 
			
			
				
				 } 
			 |