Commit | Line | Data |
---|---|---|
0337d704 | 1 | /*************************************************************************** |
179afa7f | 2 | * Copyright (C) 2003-2008 Polytechnique.org * |
0337d704 | 3 | * http://opensource.polytechnique.org/ * |
4 | * * | |
5 | * This program is free software; you can redistribute it and/or modify * | |
6 | * it under the terms of the GNU General Public License as published by * | |
7 | * the Free Software Foundation; either version 2 of the License, or * | |
8 | * (at your option) any later version. * | |
9 | * * | |
10 | * This program is distributed in the hope that it will be useful, * | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |
13 | * GNU General Public License for more details. * | |
14 | * * | |
15 | * You should have received a copy of the GNU General Public License * | |
16 | * along with this program; if not, write to the Free Software * | |
17 | * Foundation, Inc., * | |
18 | * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * | |
19 | ***************************************************************************/ | |
20 | ||
350ba5ac | 21 | var is_IE = $.browser.msie; |
0337d704 | 22 | |
23 | // {{{ function getNow() | |
24 | ||
0337d704 | 25 | function getNow() { |
9f449375 | 26 | dt = new Date(); |
27 | dy = dt.getDay(); | |
28 | mh = dt.getMonth(); | |
29 | wd = dt.getDate(); | |
30 | yr = dt.getYear(); | |
0337d704 | 31 | if (yr<1000) yr += 1900; |
9f449375 | 32 | hr = dt.getHours(); |
33 | mi = dt.getMinutes(); | |
7143ad2b | 34 | |
9f449375 | 35 | time = (mi < 10) ? hr +':0'+mi : hr+':'+mi; |
36 | days = ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi']; | |
a14159bf | 37 | months = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', |
38 | 'août', 'septembre', 'octobre', 'novembre', 'décembre'] | |
9f449375 | 39 | |
40 | return days[dy]+' '+wd+' '+months[mh]+' '+yr+'<br />'+time; | |
41 | } | |
42 | ||
43 | // }}} | |
a27c6df8 | 44 | // {{{ Search Engine |
45 | ||
46 | function canAddSearchEngine() | |
47 | { | |
350ba5ac FB |
48 | if (((typeof window.sidebar == "object") && $.isFunction(window.sidebar.addSearchEngine)) |
49 | || ((typeof window.external == "object") && $.isFunction(window.external.AddSearchProvider))) { | |
50 | return true; | |
51 | } | |
52 | return false; | |
a27c6df8 | 53 | } |
39fd8f50 | 54 | |
b09e5dea | 55 | function addSearchEngine() |
56 | { | |
350ba5ac FB |
57 | var searchURI = "http://www.polytechnique.org/xorg.opensearch.xml"; |
58 | if ((typeof window.sidebar == "object") && $.isFunction(window.sidebar.addSearchEngine)) { | |
59 | window.sidebar.addSearchEngine( | |
60 | searchURI, | |
61 | "http://www.polytechnique.org/images/xorg.png", | |
62 | "Annuaire Polytechnique.org", | |
63 | "Academic"); | |
64 | } else { | |
65 | try { | |
66 | window.external.AddSearchProvider(searchURI); | |
67 | } catch(e) { | |
68 | alert("Impossible d'installer la barre de recherche"); | |
69 | } | |
b09e5dea | 70 | } |
39fd8f50 | 71 | } |
72 | ||
39fd8f50 | 73 | // }}} |
7e6495d4 | 74 | // {{{ dynpost() |
75 | ||
76 | function dynpost(action, values) | |
77 | { | |
7e6495d4 | 78 | var form = document.createElement('form'); |
79 | form.action = action; | |
80 | form.method = 'post'; | |
81 | ||
7cf438aa | 82 | $('body').get(0).appendChild(form); |
7e6495d4 | 83 | |
84 | for (var k in values) { | |
85 | var input = document.createElement('input'); | |
86 | input.type = 'hidden'; | |
87 | input.name = k; | |
88 | input.value = values[k]; | |
89 | form.appendChild(input); | |
90 | } | |
91 | ||
92 | form.submit(); | |
93 | } | |
94 | ||
e83d83e8 | 95 | |
d6610b77 | 96 | function dynpostkv(action, k, v) |
97 | { | |
bee33d93 | 98 | var dict = {}; |
99 | dict[k] = v; | |
100 | dynpost(action, dict); | |
d6610b77 | 101 | } |
102 | ||
7e6495d4 | 103 | // }}} |
af2ff9ef | 104 | // {{{ function RegExp.escape() |
105 | ||
106 | RegExp.escape = function(text) { | |
107 | if (!arguments.callee.sRE) { | |
108 | var specials = [ | |
109 | '/', '.', '*', '+', '?', '|', | |
110 | '(', ')', '[', ']', '{', '}', | |
111 | '\\', '^' , '$' | |
112 | ]; | |
113 | arguments.callee.sRE = new RegExp( | |
114 | '(\\' + specials.join('|\\') + ')', 'g' | |
115 | ); | |
116 | } | |
117 | return text.replace(arguments.callee.sRE, '\\$1'); | |
118 | } | |
119 | ||
120 | // }}} | |
0337d704 | 121 | |
122 | /*************************************************************************** | |
123 | * POPUP THINGS | |
124 | */ | |
125 | ||
126 | // {{{ function popWin() | |
127 | ||
e83d83e8 | 128 | function popWin(theNode, w, h) { |
0337d704 | 129 | window.open(theNode.href, '_blank', |
e83d83e8 FB |
130 | 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width='+w+',height='+h); |
131 | return false; | |
0337d704 | 132 | } |
133 | ||
134 | // }}} | |
769dc7d5 VZ |
135 | // {{{ function goodiesPopup() |
136 | ||
350ba5ac FB |
137 | var __goodies_active = true; |
138 | ||
139 | var __goodies_ical = { | |
140 | default_title: 'Calendrier iCal', | |
141 | sites: [ | |
142 | {'url_prefix': '', | |
143 | 'img': 'images/icons/calendar_view_day.gif', | |
144 | 'title': 'Calendrier iCal'}, | |
145 | {'url_prefix': 'http://www.google.com/calendar/render?cid=', | |
146 | 'img': 'images/goodies/add-google-calendar.gif', | |
147 | 'title': 'Ajouter à Google Calendar'}, | |
148 | {'url_prefix': 'https://www.google.com/calendar/hosted/polytechnique.org/render?cid=', | |
149 | 'img': 'images/goodies/add-google-calendar.gif', | |
150 | 'title': 'Ajouter à Google Apps / Calendar'} | |
151 | ] | |
152 | }; | |
153 | ||
154 | var __goodies_rss = { | |
155 | default_title: 'Fils RSS', | |
156 | sites: [ | |
157 | {'url_prefix': '', | |
158 | 'img': 'images/icons/feed.gif', | |
159 | 'title': 'Fil rss'}, | |
160 | {'url_prefix': 'http://fusion.google.com/add?feedurl=', | |
161 | 'img': 'images/goodies/add-google.gif', | |
162 | 'alt': 'Add to Google', | |
163 | 'title': 'Ajouter à iGoogle/Google Reader'}, | |
164 | {'url_prefix': 'http://www.netvibes.com/subscribe.php?url=', | |
165 | 'img': 'images/goodies/add-netvibes.gif', | |
166 | 'title': 'Ajouter à Netvibes'}, | |
167 | {'url_prefix': 'http://add.my.yahoo.com/content?.intl=fr&url=', | |
168 | 'img': 'images/goodies/add-yahoo.gif', | |
169 | 'alt': 'Add to My Yahoo!', | |
170 | 'title': 'Ajouter à My Yahoo!'}, | |
171 | {'url_prefix': 'http://www.newsgator.com/ngs/subscriber/subext.aspx?url=', | |
172 | 'img': 'images/goodies/add-newsgator.gif', | |
173 | 'alt': 'Subscribe in NewsGator Online', | |
174 | 'title': 'Ajouter à Newsgator'} | |
175 | ] | |
176 | }; | |
769dc7d5 | 177 | |
f14eed3f VZ |
178 | function disableGoodiesPopups() { |
179 | __goodies_active = false; | |
180 | } | |
181 | ||
350ba5ac | 182 | function goodiesPopup(node, goodies) { |
769dc7d5 | 183 | var text = '<div style="text-align: center; line-height: 2.2">'; |
350ba5ac FB |
184 | for (var site in goodies.sites) { |
185 | var entry = goodies.sites[site]; | |
186 | var s_alt = entry["alt"] ? entry["alt"] : ""; | |
187 | var s_img = entry["img"]; | |
188 | var s_title = entry["title"] ? entry["title"] : ""; | |
189 | var s_url = entry["url_prefix"].length > 0 ? entry["url_prefix"] + escape(this.href) : this.href; | |
769dc7d5 VZ |
190 | |
191 | text += '<a href="' + s_url + '"><img src="' + s_img + '" title="' + s_title + '" alt="' + s_alt + '"></a><br />'; | |
192 | } | |
350ba5ac | 193 | text += '<a href="https://www.polytechnique.org/Xorg/Goodies">Plus de bonus</a> ...</div>'; |
769dc7d5 | 194 | |
350ba5ac | 195 | var title = node.title ? node.title : goodies.default_title; |
769dc7d5 | 196 | |
350ba5ac FB |
197 | $(node) |
198 | .mouseover( | |
199 | function() { | |
200 | if (__goodies_active) { | |
201 | return overlib(text, CAPTION, title, CLOSETEXT, 'Fermer', DELAY, 800, STICKY, WIDTH, 150); | |
202 | } | |
203 | } | |
204 | ) | |
205 | .mouseout(nd); | |
769dc7d5 VZ |
206 | } |
207 | ||
208 | // }}} | |
0337d704 | 209 | // {{{ function auto_links() |
210 | ||
0337d704 | 211 | function auto_links() { |
b277fbe5 | 212 | url = document.URL; |
213 | fqdn = url.replace(/^https?:\/\/([^\/]*)\/.*$/,'$1'); | |
214 | light = (url.indexOf('display=light') > url.indexOf('?')); | |
e83d83e8 FB |
215 | |
216 | $("a,link").each( | |
217 | function(i) { | |
218 | node = $(this); | |
350ba5ac | 219 | href = this.href; |
e83d83e8 FB |
220 | if(!href || node.hasClass('xdx') |
221 | || href.indexOf('mailto:') > -1 || href.indexOf('javascript:') > -1) { | |
222 | return; | |
3def38d5 | 223 | } |
ea736ad3 | 224 | if ((href.indexOf(fqdn) < 0 && this.className.indexOf('popup') < 0) || node.hasClass('popup')) { |
e83d83e8 FB |
225 | node.click(function () { window.open(this.href); return false; }); |
226 | } | |
227 | if (href.indexOf(fqdn) > -1 && light) { | |
228 | href = href.replace(/([^\#\?]*)\??([^\#]*)(\#.*)?/, "$1?display=light&$2$3"); | |
350ba5ac | 229 | this.href = href; |
e83d83e8 | 230 | } |
350ba5ac FB |
231 | rss = href.indexOf('rss') > -1; |
232 | ical = href.indexOf('ical') > -1; | |
233 | if (rss || ical) { | |
e83d83e8 FB |
234 | if (href.indexOf('http') < 0) { |
235 | href = 'http://' + fqdn + '/' + href; | |
236 | } | |
350ba5ac FB |
237 | } |
238 | if (this.nodeName.toLowerCase() == 'a') { | |
239 | if (rss && href.indexOf('prefs/rss') < 0 && (href.indexOf('xml') > -1 || href.indexOf('hash'))) { | |
240 | goodiesPopup(this, __goodies_rss); | |
241 | } else if (ical) { | |
242 | goodiesPopup(this, __goodies_ical); | |
e83d83e8 FB |
243 | } |
244 | } | |
350ba5ac | 245 | if(matches = (/^popup_([0-9]*)x([0-9]*)$/).exec(this.className)) { |
e83d83e8 FB |
246 | var w = matches[1], h = matches[2]; |
247 | node.click(function() { return popWin(this, w, h); }); | |
769dc7d5 | 248 | } |
3def38d5 | 249 | } |
e83d83e8 FB |
250 | ); |
251 | $('.popup2').click(function() { return popWin(this, 840, 600); }); | |
252 | $('.popup3').click(function() { return popWin(this, 640, 800); }); | |
0337d704 | 253 | } |
254 | ||
e83d83e8 | 255 | |
0337d704 | 256 | // }}} |
257 | ||
7143ad2b FB |
258 | |
259 | /*************************************************************************** | |
260 | * Password check | |
261 | */ | |
262 | ||
263 | // {{{ function checkPassword | |
264 | ||
265 | function getType(char) { | |
266 | if (char >= 'a' && char <= 'z') { | |
267 | return 1; | |
268 | } else if (char >= 'A' && char <= 'Z') { | |
269 | return 2; | |
ea736ad3 | 270 | } else if (char >= '0' && char <= '9') { |
7143ad2b FB |
271 | return 3; |
272 | } else { | |
273 | return 4; | |
274 | } | |
275 | } | |
276 | ||
7b7d0970 | 277 | function checkPassword(box, okLabel) { |
7143ad2b FB |
278 | var prev = 0; |
279 | var prop = 0; | |
280 | var pass = box.value; | |
281 | var types = Array(0, 0, 0, 0, 0); | |
eaa3f284 | 282 | var firstType = true; |
7143ad2b FB |
283 | for (i = 0 ; i < pass.length ; ++i) { |
284 | type = getType(pass.charAt(i)); | |
285 | if (prev != 0 && prev != type) { | |
286 | prop += 5; | |
287 | } | |
eaa3f284 FB |
288 | prop += i; |
289 | if (types[type] == 0 && !firstType) { | |
290 | prop += 15; | |
291 | } else { | |
292 | firstType = false; | |
7143ad2b FB |
293 | } |
294 | types[type]++; | |
295 | prev = type; | |
296 | } | |
eaa3f284 | 297 | if (pass.length < 6) { |
aca1582e | 298 | prop *= 0.75; |
eaa3f284 | 299 | } |
7143ad2b FB |
300 | if (prop > 100) { |
301 | prop = 100; | |
302 | } else if (prop < 0) { | |
303 | prop = 0; | |
304 | } | |
de99248c | 305 | if (prop >= 60) { |
00681970 FB |
306 | color = "#4f4"; |
307 | bgcolor = "#050"; | |
de99248c FB |
308 | ok = true; |
309 | } else if (prop >= 40) { | |
310 | color = "#ff4"; | |
00681970 | 311 | bgcolor = "#750"; |
b19839fd | 312 | ok = true; |
de99248c FB |
313 | } else { |
314 | color = "#f20"; | |
00681970 | 315 | bgcolor = "#700"; |
de99248c FB |
316 | ok = false; |
317 | } | |
318 | $("#passwords_measure") | |
00681970 FB |
319 | .stop() |
320 | .animate({ width: prop + "%", | |
321 | backgroundColor: color | |
322 | }, 750) | |
323 | .parent().stop() | |
324 | .animate({ backgroundColor: bgcolor }, 750); | |
de99248c | 325 | var submitButton = $(":submit[@name='" + passwordprompt_submit + "']"); |
b19839fd | 326 | if (ok && pass.length >= 6) { |
7b7d0970 | 327 | submitButton.attr("value", okLabel); |
de99248c | 328 | submitButton.removeAttr("disabled"); |
7143ad2b | 329 | } else { |
7b7d0970 | 330 | submitButton.attr("value", "Mot de passe trop faible"); |
de99248c | 331 | submitButton.attr("disabled", "disabled"); |
7143ad2b FB |
332 | } |
333 | } | |
334 | ||
335 | // }}} | |
336 | ||
337 | ||
0337d704 | 338 | /*************************************************************************** |
339 | * The real OnLoad | |
340 | */ | |
341 | ||
350ba5ac | 342 | $(document).ready(auto_links); |
0337d704 | 343 | |
a14159bf | 344 | // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: |