X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=htdocs%2Fjavascript%2Fxorg.js;h=7cb2fe3524a6aabcf187a229842bd3537f30347a;hb=7143ad2b35b4340435d83537504987851b9b8600;hp=0ce316941a1dd2f855cde78f1b74caf1ba7ee7f5;hpb=e173ee9b7e29b11c13c3bc5124d200cba6675cce;p=platal.git diff --git a/htdocs/javascript/xorg.js b/htdocs/javascript/xorg.js index 0ce3169..7cb2fe3 100644 --- a/htdocs/javascript/xorg.js +++ b/htdocs/javascript/xorg.js @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2003-2007 Polytechnique.org * + * Copyright (C) 2003-2008 Polytechnique.org * * http://opensource.polytechnique.org/ * * * * This program is free software; you can redistribute it and/or modify * @@ -32,7 +32,7 @@ function getNow() { if (yr<1000) yr += 1900; hr = dt.getHours(); mi = dt.getMinutes(); - + time = (mi < 10) ? hr +':0'+mi : hr+':'+mi; days = ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi']; months = ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', @@ -66,7 +66,7 @@ function addSearchEngine() try { window.external.AddSearchProvider(searchURI); } catch(e) { - alert("Impossible d'installer la barre de recherche"); + alert("Impossible d'installer la barre de recherche"); } } } @@ -89,7 +89,7 @@ function attachEvent(obj, evt, f, useCapture) { return true; } else if (obj.attachEvent) { return obj.attachEvent("on"+evt, f); - } + } return false; } @@ -151,42 +151,190 @@ RegExp.escape = function(text) { function popWin(theNode,w,h) { window.open(theNode.href, '_blank', - 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width='+w+',height='+h); + 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width='+w+',height='+h); +} + +// }}} +// {{{ function goodiesPopup() + +function goodiesPopup(node) { + if (node.href.indexOf('ical') > -1) { + __goodies_popup(node, __goodies_ical_sites, 'Calendrier iCal'); + } else if (node.href.indexOf('rss') > -1 && (node.href.indexOf('xml') > -1 || node.href.indexOf('hash'))) { + __goodies_popup(node, __goodies_rss_sites, 'Fil rss'); + } +} + +function disableGoodiesPopups() { + __goodies_active = false; +} + +var __goodies_active = true; +var __goodies_ical_sites = [ + {'url_prefix': '', + 'img': 'images/icons/calendar_view_day.gif', + 'title': 'Calendrier iCal'}, + {'url_prefix': 'http://www.google.com/calendar/render?cid=', + 'img': 'images/goodies/add-google-calendar.gif', + 'title': 'Ajouter à Google Calendar'}, + {'url_prefix': 'https://www.google.com/calendar/hosted/polytechnique.org/render?cid=', + 'img': 'images/goodies/add-google-calendar.gif', + 'title': 'Ajouter à Google Apps / Calendar'} +]; +var __goodies_rss_sites = [ + {'url_prefix': '', + 'img': 'images/icons/feed.gif', + 'title': 'Fil rss'}, + {'url_prefix': 'http://fusion.google.com/add?feedurl=', + 'img': 'images/goodies/add-google.gif', + 'alt': 'Add to Google', + 'title': 'Ajouter à iGoogle/Google Reader'}, + {'url_prefix': 'http://www.netvibes.com/subscribe.php?url=', + 'img': 'images/goodies/add-netvibes.gif', + 'title': 'Ajouter à Netvibes'}, + {'url_prefix': 'http://add.my.yahoo.com/content?.intl=fr&url=', + 'img': 'images/goodies/add-yahoo.gif', + 'alt': 'Add to My Yahoo!', + 'title': 'Ajouter à My Yahoo!'}, + {'url_prefix': 'http://www.newsgator.com/ngs/subscriber/subext.aspx?url=', + 'img': 'images/goodies/add-newsgator.gif', + 'alt': 'Subscribe in NewsGator Online', + 'title': 'Ajouter à Newsgator'} +]; + +function __goodies_popupText(url, sites) { + var text = '
'; + for (var site in sites) { + var s_alt = (sites[site]["alt"] ? sites[site]["alt"] : ""); + var s_img = sites[site]["img"]; + var s_title = (sites[site]["title"] ? sites[site]["title"] : ""); + var s_url = (sites[site]["url_prefix"].length > 0 ? sites[site]["url_prefix"] + escape(url) : url); + + text += '' + s_alt + '
'; + } + text += 'Plus de bonus ...
' + return text; +} + +function __goodies_popup(node, sites, default_title) { + var mouseover_cb = function() { + if (__goodies_active) { + var rss_text = __goodies_popupText(node.href, sites); + var rss_title = (node.title ? node.title : default_title); + return overlib(rss_text, CAPTION, rss_title, CLOSETEXT, 'Fermer', DELAY, 800, STICKY, WIDTH, 150); + } + } + var mouseout_cb = function() { + nd(); + } + + node.onmouseover = mouseover_cb; + node.onmouseout = mouseout_cb; } // }}} // {{{ function auto_links() function auto_links() { - nodes = document.getElementsByTagName('a'); + auto_links_nodes(document.getElementsByTagName('a')); + auto_links_nodes(document.getElementsByTagName('link')); +} + +function auto_links_nodes(nodes) { url = document.URL; fqdn = url.replace(/^https?:\/\/([^\/]*)\/.*$/,'$1'); light = (url.indexOf('display=light') > url.indexOf('?')); - for(var i=0; i -1 || node.href.indexOf('javascript:')>-1) continue; - if (node.href.indexOf(fqdn)<0 || node.className == 'popup') { - node.onclick = function () { window.open(this.href); return false; }; - } + for(var i=0; i < nodes.length; i++) { + node = nodes[i]; + if(!node.href || node.className == 'xdx' + || node.href.indexOf('mailto:') > -1 || node.href.indexOf('javascript:') > -1) + continue; + if (node.href.indexOf(fqdn) < 0 || node.className == 'popup') { + node.onclick = function () { window.open(this.href); return false; }; + } if (node.href.indexOf(fqdn) > -1 && light) { node.href = node.href.replace(/([^\#\?]*)\??([^\#]*)(\#.*)?/, "$1?display=light&$2$3"); } - if(node.className == 'popup2') { - node.onclick = function () { popWin(this,840,600); return false; }; - } - if(node.className == 'popup3') { - node.onclick = function () { popWin(this, 640, 800); return false; }; + if (node.href.indexOf('rss') > -1 || node.href.indexOf('ical') > -1) { + node.href = node.href.replace(/https/, 'http'); + if (node.href.indexOf('http') < 0) { + node.href = 'http://' + fqdn + '/' + node.href; + } + if (node.nodeName.toLowerCase() == 'a') { + goodiesPopup(node); + } + } + if(node.className == 'popup2') { + node.onclick = function () { popWin(this,840,600); return false; }; + } + if(node.className == 'popup3') { + node.onclick = function () { popWin(this, 640, 800); return false; }; + } + if(matches = (/^popup_([0-9]*)x([0-9]*)$/).exec(node.className)) { + var w = matches[1], h = matches[2]; + node.onclick = function () { popWin(this,w,h); return false; }; + } } - if(matches = (/^popup_([0-9]*)x([0-9]*)$/).exec(node.className)) { - var w = matches[1], h = matches[2]; - node.onclick = function () { popWin(this,w,h); return false; }; - } +} + +// }}} + + +/*************************************************************************** + * Password check + */ + +// {{{ function checkPassword + +function getType(char) { + if (char >= 'a' && char <= 'z') { + return 1; + } else if (char >= 'A' && char <= 'Z') { + return 2; + } else if (char >= '0' && char <= '9') { + return 3; + } else { + return 4; + } +} + +function checkPassword(box) { + var prev = 0; + var prop = 0; + var pass = box.value; + var types = Array(0, 0, 0, 0, 0); + for (i = 0 ; i < pass.length ; ++i) { + type = getType(pass.charAt(i)); + if (prev != 0 && prev != type) { + prop += 5; + } + if (i >= 5) { + prop += 5; + } + if (types[type] == 0) { + prop += 10; + } + types[type]++; + prev = type; + } + if (prop > 100) { + prop = 100; + } else if (prop < 0) { + prop = 0; + } + ok = (prop >= 60); + $("#passwords_measure").width(prop + "%").css("background-color", ok ? "green" : "red"); + if (ok) { + $(":submit").removeAttr("disabled"); + } else { + $(":submit").attr("disabled", "disabled"); } } // }}} + /*************************************************************************** * The real OnLoad */