67417bd6652e89d5289198cc5b25ed6a3fc01ae2
[pompage.git] / js / yopyop.js
1 /**
2 * Voir : http://developer.mozilla.org/fr/docs/R%C3%A9f%C3%A9rence_du_DOM_Gecko:Introduction#DOM_et_JavaScript
3 * et : http://developer.mozilla.org/fr/docs/R%C3%A9f%C3%A9rence_du_DOM_Gecko:element
4 */
5
6 /**
7 * Vire les espaces aux extremités d'une chaine.
8 * s [String] : une chaine
9 */
10 function trim(s)
11 {
12 return rtrim(ltrim(s));
13 }
14
15 /**
16 * Vire les espaces au début d'une chaine.
17 * s [String] : une chaine
18 */
19 function ltrim(s)
20 {
21 var l=0;
22 while(l < s.length && s[l] == ' ')
23 { l++; }
24 return s.substring(l, s.length);
25 }
26
27 /**
28 * Vire les espaces à la fin d'une chaine.
29 * s [String] : une chaine
30 */
31 function rtrim(s)
32 {
33 var r=s.length -1;
34 while(r > 0 && s[r] == ' ')
35 { r-=1; }
36 return s.substring(0, r+1);
37 }
38
39 /**
40 * Callback appelé lorsque un film est cliqué.
41 * Affiche ou cache les informations détaillés pour ce film.
42 * id [int] : l'identificateur du film
43 */
44 function detailFilm(id)
45 {
46 var detail = document.getElementById("detail"+id)
47
48 if (detail.style.display == "table")
49 detail.style.display = "none"
50 else
51 detail.style.display = "table"
52 }
53
54
55 /**
56 * Effectue une recherche, n'affiche que les films qui contiennent le motif recherché.
57 * Recherche dans le titre, le realisateur, les acteurs, les genres et les pays en fonction des checkbox respectives.
58 */
59 function doRecherche()
60 {
61 var afficherTout = false;
62 // si aucun choix n'est fait pour la recherche on affiche tout
63 if (!document.getElementById("checkRechercheTitre").checked
64 && !document.getElementById("checkRechercheGenres").checked
65 && !document.getElementById("checkRechercheRealisateurs").checked
66 && !document.getElementById("checkRechercheActeurs").checked
67 && !document.getElementById("checkRecherchePays").checked)
68 afficherTout = true;
69
70 var motif = document.getElementById("recherche").value
71 var rechercheRegExp = new RegExp(".*" + motif + ".*", "i")
72
73 var liste = document.getElementById("liste")
74 var lignes = liste.childNodes
75 for(i = 1; i < lignes.length; i += 2)
76 {
77 var titre = lignes[i].firstChild.innerHTML
78 var tableDetails = lignes[i+1].firstChild.firstChild.childNodes
79 var genres = tableDetails[0].firstChild.nextSibling.textContent
80 var realisateurs = tableDetails[1].firstChild.nextSibling.textContent
81 var acteurs = tableDetails[2].firstChild.nextSibling.textContent
82 var pays = tableDetails[3].firstChild.nextSibling.textContent
83 if (
84 afficherTout ||
85 document.getElementById("checkRechercheTitre").checked && rechercheRegExp.exec(titre) != null
86 || document.getElementById("checkRechercheGenres").checked && rechercheRegExp.exec(genres) != null
87 || document.getElementById("checkRechercheRealisateurs").checked && rechercheRegExp.exec(realisateurs) != null
88 || document.getElementById("checkRechercheActeurs").checked && rechercheRegExp.exec(acteurs) != null
89 || document.getElementById("checkRecherchePays").checked && rechercheRegExp.exec(pays) != null)
90 {
91 lignes[i].style.display = "table-row"
92 }
93 else
94 {
95 lignes[i].style.display = "none"
96 lignes[i+1].firstChild.firstChild.style.display = "none"
97 }
98 }
99 }
100
101 /**
102 * Initialise la recherche.
103 */
104 function viderRecherche()
105 {
106 document.getElementById("checkRechercheTitre").checked = true
107 document.getElementById("checkRechercheGenres").checked = true
108 document.getElementById("checkRechercheRealisateurs").checked = true
109 document.getElementById("checkRechercheActeurs").checked = true
110 document.getElementById("checkRecherchePays").checked = true
111 document.getElementById("recherche").value = ""
112 doRecherche()
113 }
114
115 /**
116 * Recherche d'un genre, pays, réalisateur, etc..
117 * texte [String] : une chaine quelconque à rechercher
118 * type [String] : dans quel champ porte la recherche. Valeurs possibles : 'Titre', 'Genres', 'Realisateurs', 'Acteurs', 'Pays'
119 */
120 function rechercheElement(texte, type)
121 {
122 texte = trim(texte)
123 document.getElementById("checkRechercheTitre").checked = false
124 document.getElementById("checkRechercheGenres").checked = false
125 document.getElementById("checkRechercheRealisateurs").checked = false
126 document.getElementById("checkRechercheActeurs").checked = false
127 document.getElementById("checkRecherchePays").checked = false
128 document.getElementById("checkRecherche"+type).checked = true
129 document.getElementById("recherche").value = texte
130 doRecherche()
131 }