bundesverdienstkreuz
[platal.git] / htdocs / javascript / xorg.js
index 6da7805..85bbb56 100644 (file)
@@ -35,13 +35,43 @@ function getNow() {
     
     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']
+    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) {
@@ -59,7 +89,8 @@ function attachEvent(obj, evt, f, useCapture) {
         return true;
     } else if (obj.attachEvent) {
         return obj.attachEvent("on"+evt, f);
-    }
+    } 
+    return false;
 }
 
 // }}}
@@ -94,6 +125,23 @@ function dynpostkv(action, k, v)
 }
 
 // }}}
+// {{{ 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');
+}
+
+// }}}
 
 /***************************************************************************
  * POPUP THINGS
@@ -103,29 +151,49 @@ function dynpostkv(action, k, v)
 
 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 auto_links()
 
 function auto_links() {
-    nodes = document.getElementsByTagName('a');
-    fqdn = document.URL;
-    fqdn = fqdn.replace(/^https?:\/\/([^\/]*)\/.*$/,'$1');
-    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.className == 'popup2') {
-           node.onclick = function () { popWin(this,840,600); 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; };
-       }
+    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 < 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.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.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; };
+        }
     }
 }
 
@@ -137,7 +205,10 @@ function auto_links() {
 
 // {{{ function pa_onload
 
-attachEvent(window, 'load', 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: