]> ruin.nu Git - ndwebbie.git/blobdiff - root/static/js/raid.js
Initial commit of catalyst files
[ndwebbie.git] / root / static / js / raid.js
diff --git a/root/static/js/raid.js b/root/static/js/raid.js
new file mode 100644 (file)
index 0000000..8bec240
--- /dev/null
@@ -0,0 +1,158 @@
+function getHTTPObject() {
+  var xmlhttp;
+  /*@cc_on
+  @if (@_jscript_version >= 5)
+    try {
+      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
+    } catch (e) {
+      try {
+        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
+      } catch (E) {
+        xmlhttp = false;
+      }
+    }
+  @else
+  xmlhttp = false;
+  @end @*/
+
+  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
+    try {
+      xmlhttp = new XMLHttpRequest();
+    } catch (e) {
+      xmlhttp = false;
+    }
+  }
+  return xmlhttp;
+}
+
+var modified = '_';
+
+function claim(dataSource, target, wave,cmd){
+       var HTTP = getHTTPObject();
+       if(HTTP) {
+               var url = dataSource + '&cmd='+cmd+'&target=' + target + '&wave=' + wave + '&rand='+ Math.random();
+               //obj.innerHTML = "test";
+               HTTP.open("GET", url,true);
+               HTTP.onreadystatechange = function(){
+                       if (HTTP.readyState == 4 &&
+                                       HTTP.status == 200) {
+                               updateClaims(dataSource,HTTP.responseXML,false);
+                               var obj = document.getElementById("targets");
+                               if (obj){
+                                       clearObject(obj);
+                                       var re = new RegExp("targetlist>((.|\\n)*)</targetlist");
+                                       if(re.test(HTTP.responseText))
+                                               obj.innerHTML = RegExp.$1;
+                               }
+                       }
+               }
+               HTTP.send(null);
+       }
+}
+
+function clearObject(obj){
+       while (obj.hasChildNodes()){
+               obj.removeChild(obj.firstChild);
+       }
+}
+
+function listTargets(dataSource){
+       var http = getHTTPObject();
+       http.open("GET",dataSource+'&cmd=gettargets' + '&rand='+ Math.random(),true);
+       http.onreadystatechange = function(){
+               if (http.readyState == 4 &&
+                               http.status == 200) {
+                       var obj = document.getElementById("targets");
+                       if (obj){
+                               clearObject(obj);
+                               var re = new RegExp("targetlist>((.|\\n)*)</targetlist");
+                               if(re.test(http.responseText))
+                                       obj.innerHTML = RegExp.$1;
+                       }
+               }
+       }
+       http.send(null);
+}
+
+function update(dataSource){
+       var HTTP = getHTTPObject();
+       if(HTTP) {
+               HTTP.open("GET",dataSource+"&cmd=update&from="+modified + '&rand='+ Math.random(),true);
+               HTTP.onreadystatechange = function(){
+                       if (HTTP.readyState == 4 &&
+                                       HTTP.status == 200) {
+                               updateClaims(dataSource,HTTP.responseXML,true);
+                       }
+               }
+               HTTP.send(null);
+       }
+}
+
+function updateClaims(dataSource,xmlthingy,timestamp){
+       var targets = xmlthingy.getElementsByTagName("target");
+       for (var i = 0; i < targets.length; i++){
+               var target = targets[i].attributes.getNamedItem("id").nodeValue;
+               var obj = document.getElementById("claim"+target);
+               if (!obj)
+                       continue;
+               //obj.innerHTML = '';
+               clearObject(obj);
+               var waves = targets[i].getElementsByTagName("wave");;
+               for (var j = 0; j < waves.length; j++){
+                       var command = waves[j].getElementsByTagName("command")[0];
+                       var claimers = waves[j].getElementsByTagName("claimers")[0];
+                       var joinable = waves[j].getElementsByTagName("joinable")[0];
+                       var wave = waves[j].attributes.getNamedItem("id").nodeValue;
+                       command = command.firstChild.nodeValue;
+                       if(claimers.firstChild){
+                               claimers = '('+claimers.firstChild.nodeValue+')';
+                       }else
+                               claimers = '';
+                       joinable = joinable.firstChild.nodeValue;
+
+                       if (command == 'none'){
+                               var s = document.createElement("b");
+                               s.appendChild(document.createTextNode("Claimed by "+claimers));
+                               obj.appendChild(s);
+                       }else{
+                               var b = document.createElement("input");
+                               b.type = 'button';
+                               b.setAttribute("class", command);
+                               b.value = command +' wave '+wave+' '+claimers;
+                               b.setAttribute("onclick", "claim('"+dataSource+"',"+target+","+wave+",'"+command+"');");
+                               /*b.onclick = function(){
+                                       claim(dataSource,t,wave,command);
+                               }*/
+                               obj.appendChild(b);
+                       }
+                       if (command == 'Unclaim'){
+                               var b = document.createElement("input");
+                               b.type = 'button';
+                               b.value = 'J';
+                               b.title = 'Make target joinable';
+                               command = 'set&joinable=TRUE';
+                               if (joinable == 1){
+                                       b.value = 'N';
+                                       b.title = 'Disable join';
+                                       command = 'set&joinable=FALSE';
+                               }
+                               b.setAttribute("onclick", "claim('"+dataSource+"',"+target+","+wave+",'"+command+"');");
+                               obj.appendChild(b);
+                       }
+                       /*@cc_on
+                       obj.innerHTML = obj.innerHTML; // IE doesn't understand unless you tell it twice
+                       @*/
+               }
+               /*
+               obj = document.getElementById("coords"+target);
+               var coords = targets[i].getElementsByTagName("coords");;
+               if (obj)
+                       obj.innerHTML = coords[0].firstChild.nodeValue;
+               */
+       }
+       if (timestamp){
+               timestamp = xmlthingy.getElementsByTagName("timestamp");
+               if (timestamp)
+                       modified = timestamp[0].firstChild.nodeValue;
+       }
+}