X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=htdocs%2Fjavascript%2Fxorg.js;h=0ce316941a1dd2f855cde78f1b74caf1ba7ee7f5;hb=962ce33ec0f0b5b645d9fd294df17f279cc84ad3;hp=63efb4830c3c44727fa52bc9103c5edd4a61255a;hpb=0337d704b62718d7c77106c0e4c4e26fb02beacf;p=platal.git diff --git a/htdocs/javascript/xorg.js b/htdocs/javascript/xorg.js index 63efb48..0ce3169 100644 --- a/htdocs/javascript/xorg.js +++ b/htdocs/javascript/xorg.js @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2003-2004 Polytechnique.org * + * Copyright (C) 2003-2007 Polytechnique.org * * http://opensource.polytechnique.org/ * * * * This program is free software; you can redistribute it and/or modify * @@ -18,32 +18,127 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ***************************************************************************/ - -/*************************************************************************** - * MISC - */ +var is_netscape = (navigator.appName.substring(0,8) == "Netscape"); +var is_IE = (navigator.appName.substring(0,9) == "Microsoft"); // {{{ function getNow() -/** - * function used to print the client's computer datetime on the page - */ function getNow() { - dt=new Date(); - dy=dt.getDay(); - mh=dt.getMonth(); - wd=dt.getDate(); - yr=dt.getYear(); + dt = new Date(); + dy = dt.getDay(); + mh = dt.getMonth(); + wd = dt.getDate(); + yr = dt.getYear(); if (yr<1000) yr += 1900; - hr=dt.getHours(); - mi=dt.getMinutes(); - if (mi<10) - time=hr+":0"+mi; - else - time=hr+":"+mi; - days=new Array ("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"); - months=new Array ("janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"); - return days[dy]+" "+wd+" "+months[mh]+" "+yr+"
"+time; + 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', + 'août', 'septembre', 'octobre', 'novembre', 'décembre'] + + return days[dy]+' '+wd+' '+months[mh]+' '+yr+'
'+time; +} + +// }}} +// {{{ Search Engine + +function canAddSearchEngine() +{ + if (((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) + || ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function"))) { + return true; + } + return false; +} + +function addSearchEngine() +{ + var searchURI = "http://www.polytechnique.org/xorg.opensearch.xml"; + if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) { + window.sidebar.addSearchEngine( + searchURI, + "http://www.polytechnique.org/images/xorg.png", + "Annuaire Polytechnique.org", + "Academic"); + } else { + try { + window.external.AddSearchProvider(searchURI); + } catch(e) { + alert("Impossible d'installer la barre de recherche"); + } + } +} + +// }}} +// {{{ Events + +function eventClosure(obj, methodName) { + return (function(e) { + e = e || window.event; + return obj[methodName](e); + }); +} + +function attachEvent(obj, evt, f, useCapture) { + if (!useCapture) useCapture = false; + + if (obj.addEventListener) { + obj.addEventListener(evt, f, useCapture); + return true; + } else if (obj.attachEvent) { + return obj.attachEvent("on"+evt, f); + } + return false; +} + +// }}} +// {{{ dynpost() + +function dynpost(action, values) +{ + var body = document.getElementsByTagName('body')[0]; + + var form = document.createElement('form'); + form.action = action; + form.method = 'post'; + + body.appendChild(form); + + for (var k in values) { + var input = document.createElement('input'); + input.type = 'hidden'; + input.name = k; + input.value = values[k]; + form.appendChild(input); + } + + form.submit(); +} + +function dynpostkv(action, k, v) +{ + var dict = {}; + dict[k] = v; + dynpost(action, dict); +} + +// }}} +// {{{ function RegExp.escape() + +RegExp.escape = function(text) { + if (!arguments.callee.sRE) { + var specials = [ + '/', '.', '*', '+', '?', '|', + '(', ')', '[', ']', '{', '}', + '\\', '^' , '$' + ]; + arguments.callee.sRE = new RegExp( + '(\\' + specials.join('|\\') + ')', 'g' + ); + } + return text.replace(arguments.callee.sRE, '\\$1'); } // }}} @@ -54,13 +149,6 @@ function getNow() { // {{{ function popWin() -/** - * function that pops an anchor - * - * @param theNode anchor the anchor we are talking about - * @param w int the desired width for the popup - * @param h int the desired height for the popup - */ 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); @@ -69,27 +157,27 @@ function popWin(theNode,w,h) { // }}} // {{{ function auto_links() -/** - * parses an html file, and update the onclik handlers for anchors that need it. - * - * anchors : - * - that points to another host are opened in a new window (mimic the target=_new) - * - of class popup(2) or popup_###x### create real popups (no url bar, ...) - * This function is designed to be used in - */ function auto_links() { nodes = document.getElementsByTagName('a'); - fqdn = document.URL; - fqdn = fqdn.replace(/^https?:\/\/([^\/]*)\/.*$/,'$1'); + 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') { + 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; }; + 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; }; @@ -105,9 +193,10 @@ function auto_links() { // {{{ function pa_onload -function pa_onload() { - auto_links(); +if (!attachEvent(window, 'load', auto_links)) { + window.onload = auto_links; } // }}} +// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: