ADD #143 (80%)
[cl7.git] / js / cl7.js
1 /**
2 * coding: utf-8
3 * Quelques bouts de JS pour le site de la corcelles-lan 7.
4 * Necessite la lib jQuery.
5 */
6
7 var cl7 = {};
8
9 cl7.verification_formulaire_inscription = function(util) {
10 var estLogge = $('meta[name="estLogge"]').attr('content');
11
12 if ($('#formulaireInscription input[name="pseudo"]').val() === "") {
13 util.messageDialogue("Le pseudo ne peut pas être vide");
14 return false;
15 }
16 if (!estLogge && $('#formulaireInscription input[name="pass1"]').val() === "" &&
17 $('#formulaireInscription input[name="pass2"]').val() === "") {
18 util.messageDialogue("Le password ne peut pas être vide");
19 return false;
20 }
21 if ($('#formulaireInscription input[name="pass1"]').val() !== $('#formulaireInscription input[name="pass2"]').val()) {
22 util.messageDialogue("Les passwords ne correspondent pas");
23 return false;
24 }
25 if ((!estLogge || $('#formulaireInscription input[name="pass1"]').val() != '') && $('#formulaireInscription input[name="pass1"]').val().length < 3) {
26 util.messageDialogue("La taille de password doit être d'au moins 3 caractères");
27 return false;
28 }
29 if ($('#formulaireInscription input[name="nom"]').val() === "") {
30 util.messageDialogue("Le nom ne peut pas être vide");
31 return false;
32 }
33 if ($('#formulaireInscription input[name="prenom"]').val() === "") {
34 util.messageDialogue("Le prénom ne peut pas être vide");
35 return false;
36 }
37 if ($('#formulaireInscription input[name="e_mail"]').val() === "") {
38 util.messageDialogue("L'email ne peut pas être vide");
39 return false;
40 }
41 if ($('#formulaireInscription input[name="accord"]').length === 1 && !$('#formulaireInscription input[name="accord"]').attr("checked")) {
42 util.messageDialogue("Vous devez être d'accord avec le préambule");
43 return false;
44 }
45 return true;
46 };
47
48 cl7.maj_prix_inscription = function() {
49 var prixTotal = parseInt($('meta[name="cout_total"]').attr('content'));
50 var prixPeriode = parseInt($('meta[name="cout_periode"]').attr('content'));
51 var nbPeriodesTotal = parseInt($('meta[name="nb_periodes"]').attr('content'));
52 var nbPeriodesCheck = parseInt($('#formulaireInscription input[name="periodes[]"]:checked').length);
53
54 var prix = 5;
55 if (nbPeriodesCheck === nbPeriodesTotal) {
56 prix = prixTotal;
57 } else if (nbPeriodesCheck != 0) {
58 prix = prixPeriode * nbPeriodesCheck;
59 }
60 $('#formulaireInscription span#prix').html(prix.toString());
61 };
62
63 $(document).ready(
64 function() {
65 var util = new cl7.Util();
66
67 // Check du formulaire d'inscription.
68 $('form#formulaireInscription').submit(function() {
69 return cl7.verification_formulaire_inscription(util);
70 });
71
72 // Affichage d'un message si disponible au chargement de la page.
73 var messageUtilisateur = $('meta[name="messageUtilisateur"]').attr('content');
74 if (messageUtilisateur !== undefined) {
75 util.messageDialogue(messageUtilisateur);
76 }
77
78 // Met à jour les champs en rapport avec le clan existant choisi.
79 $('form#formulaireInscription select[name="clanChoix"]').change(function() {
80 if ($(this).val() === '0') {
81 return;
82 }
83 $clan = $(this).val().split(';');
84 $('form#formulaireInscription input[name="clan_nom"]').val($clan[0]);
85 $('form#formulaireInscription input[name="clan_tag"]').val($clan[1]);
86 });
87
88 // inscrit les emails codés (page contacts)
89 $('a#contactPifou').attr('href', util.rot13('znvygb:tert.oheev@tznvy.pbz'));
90 $('a#contactLePiaf').attr('href', util.rot13('znvygb:yrcvns695@zfa.pbz'));
91
92 $('#formulaireInscription input[name="periodes[]"]').change(function() {
93 cl7.maj_prix_inscription();
94 });
95 // met à jour le prix d'inscription
96 cl7.maj_prix_inscription();
97
98 // Permet d'éviter de faire plus de choix qu'il n'en faut sur la page des jeux joués.
99 var nbVotesMax = 3;
100 var coches = [];
101 $('#formulaireJeuxJoues input[name="votes[]"]:checked').each(function() {
102 coches.unshift(parseInt($(this).attr("value")));
103 });
104 $('#formulaireJeuxJoues input[name="votes[]"]').change(function() {
105 if($(this).attr("checked")) {
106 if (coches.length >= nbVotesMax) {
107 $('#formulaireJeuxJoues input[value="' + coches.pop() + '"]').attr("checked", false);
108 }
109 coches.unshift(parseInt($(this).attr("value")));
110 } else {
111 for (var i = 0; i < coches.length; i ++) {
112 if (coches[i] == parseInt($(this).attr("value"))) {
113 coches.splice(i, 1);
114 break;
115 }
116 }
117 }
118 });
119
120 // Enlève ou affiche les informations (p.e. '<nom>') concernant les champs des formulaires.
121 $('form input.info').focus(function() {
122 if (!$(this).hasClass('info'))
123 return;
124
125 var value = $(this).val();
126 $(this).blur(function() {
127 if ($(this).val().trim() === '') {
128 $(this).val(value).addClass('info');
129 $(this).unbind('blur');
130 }
131 });
132
133 $(this).val('').removeClass('info');
134 });
135
136 $('form').submit(function() {
137 $('input.info', this).val('');
138 });
139 }
140 );