Slower Ajax notification & typo
[platal.git] / htdocs / javascript / xorg.js
index 63efb48..7fcd6f0 100644 (file)
@@ -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   *
  *  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+"<br />"+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+'<br />'+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);
 }
 
 // }}}
@@ -54,13 +132,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,14 +140,6 @@ 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 <body onload="javascript:auto_links()">
- */
 function auto_links() {
     nodes = document.getElementsByTagName('a');
     fqdn = document.URL;
@@ -88,8 +151,11 @@ function auto_links() {
            node.onclick = function () { window.open(this.href); return false; };
        }
        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 +171,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: