2024-10-16 18:19:14 +02:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html lang="fr">
|
|
|
|
<head>
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
<title>Suivi des Paiements</title>
|
|
|
|
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
|
2024-10-18 19:07:09 +02:00
|
|
|
<link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" />
|
2024-10-16 18:19:14 +02:00
|
|
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
|
|
|
<link rel="stylesheet" href="../../css/PROF/paiements.css">
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
|
2024-10-18 16:54:03 +02:00
|
|
|
<!-- Header -->
|
|
|
|
<div class="header w3-bar w3-card-4 w3-dark-blue">
|
2024-10-16 18:19:14 +02:00
|
|
|
<!-- Logo pour retourner à l'accueil -->
|
2024-10-18 16:54:03 +02:00
|
|
|
<div class="logo-container w3-bar-item">
|
2024-10-18 19:45:09 +02:00
|
|
|
<img src="../../media/img/logoWhite.png" alt="Logo Accueil" class="w3-image" style="width:150px; height:40px;">
|
2024-10-16 18:19:14 +02:00
|
|
|
</div>
|
2024-10-18 19:45:09 +02:00
|
|
|
|
2024-10-18 16:54:03 +02:00
|
|
|
<!-- Bouton burger pour petit écran -->
|
|
|
|
<a href="javascript:void(0)" class="w3-bar-item w3-button w3-hide-large w3-right w3-padding-16" onclick="toggleMenu()">☰</a>
|
2024-10-18 19:45:09 +02:00
|
|
|
|
2024-10-16 18:19:14 +02:00
|
|
|
<!-- Catégories dans le header -->
|
2024-10-18 19:45:09 +02:00
|
|
|
<div id="menu" class="categories w3-hide-small w3-hide-medium w3-bar-item">
|
2024-10-18 16:54:03 +02:00
|
|
|
<a href="./enseignant_permanent.html" class="w3-bar-item w3-button">Accueil</a>
|
|
|
|
<a href="./mes-heures.html" class="w3-bar-item w3-button">Heures</a>
|
|
|
|
<a href="./paiements.html" class="w3-bar-item w3-button">Paiements</a>
|
|
|
|
<a href="./mes-informations.html" class="w3-bar-item w3-button">Mes informations et documents</a>
|
2024-10-16 18:19:14 +02:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Section utilisateur avec déconnexion -->
|
2024-10-18 19:45:09 +02:00
|
|
|
<div class="user-section w3-right w3-hide-small w3-hide-medium">
|
2024-10-16 18:19:14 +02:00
|
|
|
<div class="user-name">
|
|
|
|
Denis MONNERAT
|
|
|
|
</div>
|
2024-10-18 16:54:03 +02:00
|
|
|
<div class="logout-container w3-bar-item">
|
|
|
|
<a href="./notifications.html" title="Notifications">
|
2024-10-18 19:45:09 +02:00
|
|
|
<img src="../../media/img/notifs.png" alt="Logo notification" style="width:24px; height:24px;">
|
2024-10-18 16:54:03 +02:00
|
|
|
</a>
|
|
|
|
<a href="./settings.html" title="Paramètres">
|
2024-10-18 19:45:09 +02:00
|
|
|
<img src="../../media/img/settings.png" alt="Logo paramètres" style="width:24px; height:24px;">
|
2024-10-18 16:54:03 +02:00
|
|
|
</a>
|
2024-10-16 18:19:14 +02:00
|
|
|
<a href="../../index.html" title="Se déconnecter">
|
2024-10-18 19:45:09 +02:00
|
|
|
<img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion" style="width:24px; height:24px;">
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Menu mobile caché au départ -->
|
|
|
|
<div id="mobileMenu" class="w3-bar-block w3-hide w3-hide-large w3-dark-blue">
|
|
|
|
<a href="./enseignant_permanent.html" class="w3-bar-item w3-button">Accueil</a>
|
|
|
|
<a href="./mes-heures.html" class="w3-bar-item w3-button">Heures</a>
|
|
|
|
<a href="./paiements.html" class="w3-bar-item w3-button">Paiements</a>
|
|
|
|
<a href="./mes-informations.html" class="w3-bar-item w3-button">Mes informations et documents</a>
|
|
|
|
|
|
|
|
<!-- Section utilisateur pour mobile -->
|
|
|
|
<div class="w3-bar-item w3-border-top w3-margin-top">
|
|
|
|
<div class="user-name">Denis MONNERAT</div>
|
|
|
|
<a href="./notifications.html" title="Notifications">
|
|
|
|
<img src="../../media/img/notifs.png" alt="Logo notification" style="width:24px; height:24px;">
|
|
|
|
</a>
|
|
|
|
<a href="./settings.html" title="Paramètres">
|
|
|
|
<img src="../../media/img/settings.png" alt="Logo paramètres" style="width:24px; height:24px;">
|
|
|
|
</a>
|
|
|
|
<a href="../../index.html" title="Se déconnecter">
|
|
|
|
<img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion" style="width:24px; height:24px;">
|
2024-10-16 18:19:14 +02:00
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="dashboard-container">
|
|
|
|
<!-- Historique des paiements -->
|
|
|
|
<div class="section-header">
|
|
|
|
<h2>Historique des Paiements</h2>
|
|
|
|
</div>
|
|
|
|
<div class="card">
|
|
|
|
<div class="table-container">
|
|
|
|
<table>
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th data-sort="periode">Période</th>
|
|
|
|
<th data-sort="heuresPayees">Heures Payées</th>
|
|
|
|
<th data-sort="montantBrut">Montant Brut (€)</th>
|
|
|
|
<th data-sort="montantNet">Montant Net (€)</th>
|
|
|
|
<th data-sort="datePaiement">Date de Paiement</th>
|
|
|
|
<th data-sort="modePaiement">Mode de Paiement</th>
|
|
|
|
<th data-sort="compteBancaire">Compte Bancaire</th>
|
|
|
|
<th data-sort="statut">Statut</th>
|
|
|
|
<th>Bulletin de Paie</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<td>Février 2024</td>
|
|
|
|
<td>35h</td>
|
|
|
|
<td>3500,00</td>
|
|
|
|
<td>2722,00</td>
|
|
|
|
<td>01/03/2024</td>
|
|
|
|
<td>Virement Bancaire</td>
|
|
|
|
<td>Compte XXXXXX1234</td>
|
|
|
|
<td class="status-valide">Validé</td>
|
|
|
|
<td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Mars 2024</td>
|
|
|
|
<td>35h</td>
|
|
|
|
<td>3500,00</td>
|
|
|
|
<td>2722,00</td>
|
|
|
|
<td>01/04/2024</td>
|
|
|
|
<td>Virement Bancaire</td>
|
|
|
|
<td>Compte XXXXXX1234</td>
|
|
|
|
<td class="status-valide">Validé</td>
|
|
|
|
<td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Avril 2024</td>
|
|
|
|
<td>35h</td>
|
|
|
|
<td>3500,00</td>
|
|
|
|
<td>2722,00</td>
|
|
|
|
<td>01/05/2024</td>
|
|
|
|
<td>Virement Bancaire</td>
|
|
|
|
<td>Compte XXXXXX1234</td>
|
|
|
|
<td class="status-valide">Validé</td>
|
|
|
|
<td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Mai 2024</td>
|
|
|
|
<td>35h</td>
|
|
|
|
<td>3500,00</td>
|
|
|
|
<td>2722,00</td>
|
|
|
|
<td>01/06/2024</td>
|
|
|
|
<td>Virement Bancaire</td>
|
|
|
|
<td>Compte XXXXXX1234</td>
|
|
|
|
<td class="status-valide">Validé</td>
|
|
|
|
<td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Juin 2024</td>
|
|
|
|
<td>35h</td>
|
|
|
|
<td>3500,00</td>
|
|
|
|
<td>2722,00</td>
|
|
|
|
<td>01/07/2024</td>
|
|
|
|
<td>Virement Bancaire</td>
|
|
|
|
<td>Compte XXXXXX1234</td>
|
|
|
|
<td class="status-valide">Validé</td>
|
|
|
|
<td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Septembre 2024</td>
|
|
|
|
<td>35h</td>
|
|
|
|
<td>3500,00</td>
|
|
|
|
<td>2722,00</td>
|
|
|
|
<td>01/10/2024</td>
|
|
|
|
<td>Virement Bancaire</td>
|
|
|
|
<td>Compte XXXXXX1234</td>
|
|
|
|
<td class="status-valide">Validé</td>
|
|
|
|
<td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Octobre 2024</td>
|
|
|
|
<td>35h</td>
|
|
|
|
<td>3500,00</td>
|
|
|
|
<td>2722,00</td>
|
|
|
|
<td>01/11/2024</td>
|
|
|
|
<td>Virement Bancaire</td>
|
|
|
|
<td>Compte XXXXXX1234</td>
|
|
|
|
<td class="status-attente">En attente</td>
|
|
|
|
<td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
<p><strong>Prochain paiement prévu :</strong> Novembre 2024 (35h restantes)</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Graphique des paiements (brut) -->
|
|
|
|
<div class="section-header">
|
|
|
|
<h2>Évolution de vos Paiements</h2>
|
|
|
|
</div>
|
|
|
|
<div class="card">
|
|
|
|
<div class="chart-container">
|
|
|
|
<canvas id="paymentChart"></canvas>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Formulaire pour signaler un problème -->
|
|
|
|
<!-- Formulaire pour signaler un problème -->
|
|
|
|
<div class="section-header">
|
|
|
|
<h2>Signaler un problème de paye</h2>
|
|
|
|
</div>
|
|
|
|
<div class="card contact-form">
|
|
|
|
<h3>Formulaire de signalement</h3>
|
|
|
|
<form id="contactForm">
|
|
|
|
<label for="probleme">Sélectionnez un problème :</label>
|
|
|
|
<select id="probleme" required>
|
|
|
|
<option value="">-- Sélectionner un problème --</option>
|
|
|
|
<option value="noPayment">Je n'ai pas reçu de paiement</option>
|
|
|
|
<option value="wrongAmount">Le montant de mon salaire est inférieur à ce qui était prévu.</option>
|
|
|
|
<option value="duplicatePayment">J'ai reçu un paiement en double</option>
|
|
|
|
<option value="latePayment">Mon paiement est en retard</option>
|
|
|
|
<option value="unjustifiedWithholding">Il y a une retenue sur mon paiement que je ne comprends pas</option>
|
|
|
|
<option value="technicalIssue">J'ai des difficultés à accéder à mes bulletins de salaire en ligne</option>
|
|
|
|
</select>
|
|
|
|
|
|
|
|
<!-- Champs supplémentaires qui s'affichent selon le problème -->
|
|
|
|
<div id="detailsSupplementaires" style="display: none;">
|
|
|
|
<!-- Champ pour sélectionner le mois -->
|
|
|
|
<div id="moisEnQuestion" style="display:none;">
|
|
|
|
<label for="mois">Sélectionner le mois :</label>
|
|
|
|
<select id="mois">
|
|
|
|
<option value="">-- Sélectionner le mois --</option>
|
|
|
|
<option value="fevrier">Février 2024</option>
|
|
|
|
<option value="mars">Mars 2024</option>
|
|
|
|
<option value="avril">Avril 2024</option>
|
|
|
|
<option value="mai">Mai 2024</option>
|
|
|
|
<option value="juin">Juin 2024</option>
|
|
|
|
<option value="septembre">Septembre 2024</option>
|
|
|
|
<option value="octobre">Octobre 2024</option>
|
|
|
|
</select>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Champ pour indiquer le montant reçu -->
|
|
|
|
<div id="montantRecuSupplementaire" style="display:none;">
|
|
|
|
<label for="montantRecu">Montant reçu (€) :</label>
|
|
|
|
<input type="number" id="montantRecu" placeholder="Montant reçu" />
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Champ pour indiquer le montant attendu -->
|
|
|
|
<div id="montantAttendu" style="display:none;">
|
|
|
|
<label for="montantAttenduInput">Montant attendu (€) :</label>
|
|
|
|
<input type="number" id="montantAttenduInput" placeholder="Montant attendu" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<button type="submit">Envoyer</button>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="footer">
|
|
|
|
<p>© 2024 IUT de Fontainebleau. Tous droits réservés |
|
|
|
|
<a href="html/mentions_legales.html">Mentions légales</a>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Popup de confirmation -->
|
|
|
|
<div class="popup" id="popup">
|
|
|
|
<img src="https://img.icons8.com/ios-filled/50/155724/checkmark.png" alt="Coche">
|
|
|
|
<h4>Message envoyé</h4>
|
|
|
|
<p>Votre message a été transmis à la direction. Un email de confirmation vous a été envoyé.</p>
|
|
|
|
<button onclick="fermerPopup()">Fermer</button>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Script pour gérer le formulaire et le popup -->
|
|
|
|
<script>
|
|
|
|
document.getElementById('probleme').addEventListener('change', function() {
|
|
|
|
var detailsSupplementaires = document.getElementById('detailsSupplementaires');
|
|
|
|
var montantRecuSupplementaire = document.getElementById('montantRecuSupplementaire');
|
|
|
|
var moisEnQuestion = document.getElementById('moisEnQuestion'); // Champ pour sélectionner le mois
|
|
|
|
var montantAttendu = document.getElementById('montantAttendu'); // Champ pour indiquer le montant attendu
|
|
|
|
|
|
|
|
// Masquer tous les champs au départ
|
|
|
|
detailsSupplementaires.style.display = 'none';
|
|
|
|
montantRecuSupplementaire.style.display = 'none';
|
|
|
|
moisEnQuestion.style.display = 'none';
|
|
|
|
montantAttendu.style.display = 'none';
|
|
|
|
|
|
|
|
// Afficher les champs en fonction du problème sélectionné
|
|
|
|
switch (this.value) {
|
|
|
|
case 'noPayment':
|
|
|
|
detailsSupplementaires.style.display = 'block';
|
|
|
|
moisEnQuestion.style.display = 'block'; // Afficher le champ pour sélectionner le mois
|
|
|
|
break;
|
|
|
|
case 'wrongAmount':
|
|
|
|
detailsSupplementaires.style.display = 'block';
|
|
|
|
montantRecuSupplementaire.style.display = 'block'; // Afficher le montant
|
|
|
|
moisEnQuestion.style.display = 'block'; // Afficher le champ pour sélectionner le mois
|
|
|
|
break;
|
|
|
|
case 'duplicatePayment':
|
|
|
|
detailsSupplementaires.style.display = 'block';
|
|
|
|
moisEnQuestion.style.display = 'block'; // Afficher le champ pour sélectionner le mois
|
|
|
|
montantAttendu.style.display = 'block'; // Afficher le champ pour le montant attendu
|
|
|
|
break;
|
|
|
|
case 'latePayment':
|
|
|
|
detailsSupplementaires.style.display = 'block';
|
|
|
|
moisEnQuestion.style.display = 'block'; // Afficher le champ pour sélectionner le mois
|
|
|
|
break;
|
|
|
|
case 'unjustifiedWithholding':
|
|
|
|
detailsSupplementaires.style.display = 'block';
|
|
|
|
break;
|
|
|
|
case 'technicalIssue':
|
|
|
|
detailsSupplementaires.style.display = 'block';
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
// Aucune action si aucune valeur valide n'est sélectionnée
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
document.getElementById('contactForm').addEventListener('submit', function(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
// Afficher le popup de confirmation
|
|
|
|
document.getElementById('popup').style.display = 'block';
|
|
|
|
});
|
|
|
|
|
|
|
|
function fermerPopup() {
|
|
|
|
document.getElementById('popup').style.display = 'none';
|
|
|
|
// Réinitialiser le formulaire après soumission
|
|
|
|
document.getElementById('contactForm').reset();
|
|
|
|
document.getElementById('detailsSupplementaires').style.display = 'none';
|
|
|
|
}
|
|
|
|
|
|
|
|
// Configuration du graphique Chart.js
|
|
|
|
const ctx = document.getElementById('paymentChart').getContext('2d');
|
|
|
|
const paymentChart = new Chart(ctx, {
|
|
|
|
type: 'line',
|
|
|
|
data: {
|
|
|
|
labels: ['Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Septembre', 'Octobre'],
|
|
|
|
datasets: [{
|
|
|
|
label: 'Montant Brut (€)',
|
|
|
|
data: [3500, 3500, 3500, 3500, 3500, 3500, 3500],
|
2024-10-18 16:54:03 +02:00
|
|
|
backgroundColor: 'rgba(204, 153, 0, 0.60)', // Jaune très sombre, pas transparent
|
|
|
|
borderColor: 'rgba(178, 128, 0, 1)', // Jaune plus foncé pour la bordure
|
2024-10-16 18:19:14 +02:00
|
|
|
fill: true,
|
|
|
|
tension: 0.3,
|
|
|
|
}]
|
|
|
|
},
|
|
|
|
options: {
|
|
|
|
responsive: true,
|
|
|
|
scales: {
|
|
|
|
y: {
|
|
|
|
beginAtZero: true
|
|
|
|
}
|
|
|
|
},
|
|
|
|
plugins: {
|
|
|
|
legend: {
|
|
|
|
display: true,
|
|
|
|
position: 'top',
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
document.querySelectorAll('th[data-sort]').forEach(function (header) {
|
|
|
|
header.addEventListener('click', function () {
|
|
|
|
const table = header.closest('table');
|
|
|
|
const tbody = table.querySelector('tbody');
|
|
|
|
const rowsArray = Array.from(tbody.querySelectorAll('tr'));
|
|
|
|
const index = Array.from(header.parentElement.children).indexOf(header);
|
|
|
|
let order = header.dataset.order || 1;
|
|
|
|
|
|
|
|
// Retirer les classes de tri des autres colonnes
|
|
|
|
document.querySelectorAll('th[data-sort]').forEach(function (th) {
|
|
|
|
th.classList.remove('ascending', 'descending');
|
|
|
|
});
|
|
|
|
|
|
|
|
// Appliquer la classe de tri
|
|
|
|
if (order == 1) {
|
|
|
|
header.classList.add('ascending');
|
|
|
|
header.dataset.order = -1; // Inverser l'ordre pour la prochaine fois
|
|
|
|
} else {
|
|
|
|
header.classList.add('descending');
|
|
|
|
header.dataset.order = 1; // Réinitialiser pour la prochaine fois
|
|
|
|
}
|
|
|
|
|
|
|
|
// Trier les lignes du tableau
|
|
|
|
rowsArray.sort(function (rowA, rowB) {
|
|
|
|
let cellA = rowA.children[index].innerText.trim();
|
|
|
|
let cellB = rowB.children[index].innerText.trim();
|
|
|
|
|
|
|
|
// Gérer les périodes (mois)
|
|
|
|
if (header.dataset.sort === 'periode') {
|
|
|
|
cellA = moisToNumero(cellA);
|
|
|
|
cellB = moisToNumero(cellB);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Gérer les montants numériques avec des virgules
|
|
|
|
else if (!isNaN(cellA.replace(',', '.')) && !isNaN(cellB.replace(',', '.'))) {
|
|
|
|
return (parseFloat(cellA.replace(',', '.')) - parseFloat(cellB.replace(',', '.'))) * order;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Gérer les dates
|
|
|
|
else if (isDate(cellA) && isDate(cellB)) {
|
|
|
|
return (new Date(cellA) - new Date(cellB)) * order;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Gérer les textes (par défaut)
|
|
|
|
else {
|
|
|
|
return cellA.localeCompare(cellB) * order;
|
|
|
|
}
|
|
|
|
|
|
|
|
return (cellA - cellB) * order;
|
|
|
|
});
|
|
|
|
|
|
|
|
// Réorganiser les lignes dans le tableau
|
|
|
|
rowsArray.forEach(function (row) {
|
|
|
|
tbody.appendChild(row);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
// Fonction pour convertir les mois en numéros pour faciliter le tri
|
|
|
|
function moisToNumero(mois) {
|
|
|
|
const moisIndex = {
|
|
|
|
"Janvier": 1,
|
|
|
|
"Février": 2,
|
|
|
|
"Mars": 3,
|
|
|
|
"Avril": 4,
|
|
|
|
"Mai": 5,
|
|
|
|
"Juin": 6,
|
|
|
|
"Juillet": 7,
|
|
|
|
"Août": 8,
|
|
|
|
"Septembre": 9,
|
|
|
|
"Octobre": 10,
|
|
|
|
"Novembre": 11,
|
|
|
|
"Décembre": 12
|
|
|
|
};
|
|
|
|
|
|
|
|
// Extraire le mois et l'année du texte (ex: "Février 2024")
|
|
|
|
const [moisNom, annee] = mois.split(' ');
|
|
|
|
return new Date(annee, moisIndex[moisNom] - 1); // Créer un objet Date
|
|
|
|
}
|
|
|
|
|
|
|
|
// Fonction pour vérifier si un texte est une date valide
|
|
|
|
function isDate(dateString) {
|
|
|
|
return !isNaN(Date.parse(dateString));
|
|
|
|
}
|
|
|
|
|
2024-10-18 19:45:09 +02:00
|
|
|
function toggleMenu() {
|
|
|
|
var x = document.getElementById("mobileMenu");
|
|
|
|
if (x.className.indexOf("w3-show") == -1) {
|
|
|
|
x.className += " w3-show";
|
|
|
|
} else {
|
|
|
|
x.className = x.className.replace(" w3-show", "");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-10-16 18:19:14 +02:00
|
|
|
</script>
|
|
|
|
|
|
|
|
</body>
|
|
|
|
</html>
|