]> ruin.nu Git - ndwebbie.git/blob - raid.js
5a4eb14d97929b9c0c29ec13e51323e5e2bcc510
[ndwebbie.git] / raid.js
1 function getHTTPObject() {
2   var xmlhttp;
3   /*@cc_on
4   @if (@_jscript_version >= 5)
5     try {
6       xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
7     } catch (e) {
8       try {
9         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
10       } catch (E) {
11         xmlhttp = false;
12       }
13     }
14   @else
15   xmlhttp = false;
16   @end @*/
17
18   if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
19     try {
20       xmlhttp = new XMLHttpRequest();
21     } catch (e) {
22       xmlhttp = false;
23     }
24   }
25   return xmlhttp;
26 }
27
28 var HTTP = getHTTPObject();
29 var modified = '_';
30
31 function claim(dataSource, target, wave,cmd){
32         if(HTTP) {
33                 var url = dataSource + '&cmd='+cmd+'&target=' + target + '&wave=' + wave;
34                 //obj.innerHTML = "test";
35                 HTTP.open("GET", url,true);
36                 HTTP.onreadystatechange = function(){
37                         if (HTTP.readyState == 4 &&
38                                         HTTP.status == 200) {
39                                 updateClaims(dataSource,HTTP.responseXML,false);
40                                 var obj = document.getElementById("targets");
41                                 if (obj){
42                                         var re = new RegExp("targetlist>(.*)</targetlist", "m");
43                                         re.test(HTTP.responseText);
44                                         obj.innerHTML = RegExp.$1;
45                                 }
46                         }
47                 }
48                 HTTP.send(null);
49         }
50 }
51
52 function listTargets(dataSource){
53         var http = getHTTPObject();
54         http.open("GET",dataSource+'&cmd=gettargets',true);
55         http.onreadystatechange = function(){
56                 if (http.readyState == 4 &&
57                                 http.status == 200) {
58                         var obj = document.getElementById("targets");
59                         if (obj)
60                                 obj.innerHTML = http.responseText;
61                 }
62         }
63         http.send(null);
64 }
65
66 function update(dataSource){
67         if(HTTP) {
68                 HTTP.open("GET",dataSource+"&cmd=update&from="+modified,true);
69                 HTTP.onreadystatechange = function(){
70                         if (HTTP.readyState == 4 &&
71                                         HTTP.status == 200) {
72                                 updateClaims(dataSource,HTTP.responseXML,true);
73                         }
74                 }
75                 HTTP.send(null);
76         }
77 }
78
79 function updateClaims(dataSource,xmldoc,timestamp){
80         targets = xmldoc.getElementsByTagName("target");
81         for (var i = 0; i < targets.length; i++){
82                 var target = targets[i].attributes.getNamedItem("id").nodeValue;
83                 var obj = document.getElementById("claim"+target);
84                 if (!obj)
85                         continue;
86                 obj.innerHTML = '';
87                 var waves = targets[i].getElementsByTagName("wave");;
88                 for (var j = 0; j < waves.length; j++){
89                         var command = waves[j].firstChild.nextSibling;
90                         var claimers = command.nextSibling;
91                         var joinable = claimers.nextSibling;
92                         var wave = waves[j].attributes.getNamedItem("id").nodeValue;
93                         command = command.firstChild.nodeValue;
94                         if(claimers.firstChild){
95                                 claimers = '('+claimers.firstChild.nodeValue+')';
96                         }else
97                                 claimers = '';
98                         joinable = joinable.firstChild.nodeValue;
99
100                         if (command == 'none'){
101                                 var s = document.createElement("b");
102                                 s.appendChild(document.createTextNode("Claimed by "+claimers));
103                                 obj.appendChild(s);
104                         }else{
105                                 var b = document.createElement("input");
106                                 b.type = 'button';
107                                 b.setAttribute("class", command);
108                                 b.value = command +' wave '+wave+' '+claimers;
109                                 b.setAttribute("onClick", "claim('"+dataSource+"',"+target+","+wave+",'"+command+"')");
110                                 /*b.onclick = function(){
111                                         claim(dataSource,t,wave,command);
112                                 }*/
113                                 obj.appendChild(b);
114                         }
115                         if (command == 'unclaim'){
116                                 var b = document.createElement("input");
117                                 b.type = 'button';
118                                 b.value = 'J';
119                                 command = 'set&joinable=TRUE';
120                                 if (joinable == 1){
121                                         b.value = 'N';
122                                         command = 'set&joinable=FALSE';
123                                 }
124                                 b.setAttribute("onClick", "claim('"+dataSource+"',"+target+","+wave+",'"+command+"')");
125                                 obj.appendChild(b);
126                         }
127                 }
128                 obj = document.getElementById("coords"+target);
129                 var coords = targets[i].getElementsByTagName("coords");;
130                 if (obj)
131                         obj.innerHTML = coords[0].firstChild.nodeValue;
132         }
133         if (timestamp){
134                 timestamp = xmldoc.getElementsByTagName("timestamp");
135                 if (timestamp)
136                         modified = timestamp[0].firstChild.nodeValue;
137         }
138 }