summaryrefslogtreecommitdiff
path: root/rt/share/html/NoAuth/js/ahah.js
blob: 5fcb47a19b33a05cfcca484316df3816d8f5714d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*
% $r->content_type('application/x-javascript');
*/
// originally Fetched from http://www.opendarwin.org/~drernie/src/ahah.js - No Copyright - Public Domain
// a patch fetched from http://www.xfront.com/microformats/examples/ahah/example01/ahah.js - see http://issues.bestpractical.com/Ticket/Display.html?id=14296

function ahah(url, target, delay) {
  // document.getElementById(target).innerHTML = 'Loading <a href="'+url+'">'+url +'</a>...';
  var req;
  if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
  }

  var use_get;
  if ( /webkit|firefox\/2/i.test( navigator.userAgent ) ) {
      // seems safari has weird problem with post: 
      // it does remove the old content of target
      // while doesn't replace that with new content
      // so is firefox 2
      use_get = 1;
  }

  if (req != undefined) {
    req.onreadystatechange = function() {ahahDone(req, url, target, delay);};
    if ( use_get == 1 ) {
        req.open("GET", url, true);
    }
    else{
        req.open("POST", url, true);
    }
    req.send("");
  }
}  

function ahahDone(req, url, target, delay) {
  if (req.readyState == 4) { // only if req is "loaded"
    if (req.status == 200) { // only if "OK"
      document.getElementById(target).innerHTML = req.responseText;
    } else {
      document.getElementById(target).innerHTML="Error loading '"+url+"':\n"+req.statusText;
    }
    if (delay != undefined) {
       setTimeout("ahah(url,target,delay)", delay); // resubmit after delay
	    //server should ALSO delay before responding
    }
  }
}

% $m->abort();