]> ruin.nu Git - ndwebbie.git/blob - root/static/js/raid.js
8bec240b57e1689932cfe721bf490b2618e3b091
[ndwebbie.git] / root / static / js / 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 modified = '_';
29
30 function claim(dataSource, target, wave,cmd){
31         var HTTP = getHTTPObject();
32         if(HTTP) {
33                 var url = dataSource + '&cmd='+cmd+'&target=' + target + '&wave=' + wave + '&rand='+ Math.random();
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                                         clearObject(obj);
43                                         var re = new RegExp("targetlist>((.|\\n)*)</targetlist");
44                                         if(re.test(HTTP.responseText))
45                                                 obj.innerHTML = RegExp.$1;
46                                 }
47                         }
48                 }
49                 HTTP.send(null);
50         }
51 }
52
53 function clearObject(obj){
54         while (obj.hasChildNodes()){
55                 obj.removeChild(obj.firstChild);
56         }
57 }
58
59 function listTargets(dataSource){
60         var http = getHTTPObject();
61         http.open("GET",dataSource+'&cmd=gettargets' + '&rand='+ Math.random(),true);
62         http.onreadystatechange = function(){
63                 if (http.readyState == 4 &&
64                                 http.status == 200) {
65                         var obj = document.getElementById("targets");
66                         if (obj){
67                                 clearObject(obj);
68                                 var re = new RegExp("targetlist>((.|\\n)*)</targetlist");
69                                 if(re.test(http.responseText))
70                                         obj.innerHTML = RegExp.$1;
71                         }
72                 }
73         }
74         http.send(null);
75 }
76
77 function update(dataSource){
78         var HTTP = getHTTPObject();
79         if(HTTP) {
80                 HTTP.open("GET",dataSource+"&cmd=update&from="+modified + '&rand='+ Math.random(),true);
81                 HTTP.onreadystatechange = function(){
82                         if (HTTP.readyState == 4 &&
83                                         HTTP.status == 200) {
84                                 updateClaims(dataSource,HTTP.responseXML,true);
85                         }
86                 }
87                 HTTP.send(null);
88         }
89 }
90
91 function updateClaims(dataSource,xmlthingy,timestamp){
92         var targets = xmlthingy.getElementsByTagName("target");
93         for (var i = 0; i < targets.length; i++){
94                 var target = targets[i].attributes.getNamedItem("id").nodeValue;
95                 var obj = document.getElementById("claim"+target);
96                 if (!obj)
97                         continue;
98                 //obj.innerHTML = '';
99                 clearObject(obj);
100                 var waves = targets[i].getElementsByTagName("wave");;
101                 for (var j = 0; j < waves.length; j++){
102                         var command = waves[j].getElementsByTagName("command")[0];
103                         var claimers = waves[j].getElementsByTagName("claimers")[0];
104                         var joinable = waves[j].getElementsByTagName("joinable")[0];
105                         var wave = waves[j].attributes.getNamedItem("id").nodeValue;
106                         command = command.firstChild.nodeValue;
107                         if(claimers.firstChild){
108                                 claimers = '('+claimers.firstChild.nodeValue+')';
109                         }else
110                                 claimers = '';
111                         joinable = joinable.firstChild.nodeValue;
112
113                         if (command == 'none'){
114                                 var s = document.createElement("b");
115                                 s.appendChild(document.createTextNode("Claimed by "+claimers));
116                                 obj.appendChild(s);
117                         }else{
118                                 var b = document.createElement("input");
119                                 b.type = 'button';
120                                 b.setAttribute("class", command);
121                                 b.value = command +' wave '+wave+' '+claimers;
122                                 b.setAttribute("onclick", "claim('"+dataSource+"',"+target+","+wave+",'"+command+"');");
123                                 /*b.onclick = function(){
124                                         claim(dataSource,t,wave,command);
125                                 }*/
126                                 obj.appendChild(b);
127                         }
128                         if (command == 'Unclaim'){
129                                 var b = document.createElement("input");
130                                 b.type = 'button';
131                                 b.value = 'J';
132                                 b.title = 'Make target joinable';
133                                 command = 'set&joinable=TRUE';
134                                 if (joinable == 1){
135                                         b.value = 'N';
136                                         b.title = 'Disable join';
137                                         command = 'set&joinable=FALSE';
138                                 }
139                                 b.setAttribute("onclick", "claim('"+dataSource+"',"+target+","+wave+",'"+command+"');");
140                                 obj.appendChild(b);
141                         }
142                         /*@cc_on
143                         obj.innerHTML = obj.innerHTML; // IE doesn't understand unless you tell it twice
144                         @*/
145                 }
146                 /*
147                 obj = document.getElementById("coords"+target);
148                 var coords = targets[i].getElementsByTagName("coords");;
149                 if (obj)
150                         obj.innerHTML = coords[0].firstChild.nodeValue;
151                 */
152         }
153         if (timestamp){
154                 timestamp = xmlthingy.getElementsByTagName("timestamp");
155                 if (timestamp)
156                         modified = timestamp[0].firstChild.nodeValue;
157         }
158 }