alarm.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. //########################################################################################
  2. // alarm.js
  3. // Version 2.81
  4. // See 95_Alarm for licensing
  5. //########################################################################################
  6. //# Prof. Dr. Peter A. Henning
  7. function HashTable() {
  8. this.length = 0;
  9. this.items = new Array();
  10. for (var i = 0; i < arguments.length; i += 2) {
  11. if (typeof(arguments[i + 1]) != 'undefined') {
  12. this.items[arguments[i]] = arguments[i + 1];
  13. this.length++;
  14. }
  15. }
  16. this.removeItem = function(in_key) {
  17. var tmp_value;
  18. if (typeof(this.items[in_key]) != 'undefined') {
  19. this.length--;
  20. var tmp_value = this.items[in_key];
  21. delete this.items[in_key];
  22. }
  23. return tmp_value;
  24. }
  25. this.getItem = function(in_key) {
  26. return this.items[in_key];
  27. }
  28. this.setItem = function(in_key, in_value)
  29. {
  30. if (typeof(in_value) != 'undefined') {
  31. if (typeof(this.items[in_key]) == 'undefined') {
  32. this.length++;
  33. }
  34. this.items[in_key] = in_value;
  35. }
  36. return in_value;
  37. }
  38. this.hasItem = function(in_key) {
  39. return typeof(this.items[in_key]) != 'undefined';
  40. }
  41. }
  42. function encodeParm(oldval) {
  43. var newval;
  44. newval=oldval.replace('+', '%2B');
  45. newval=newval.replace('#', '%23');
  46. return newval;
  47. }
  48. var ah = new HashTable('l0s','','l0e','');
  49. //------------------------------------------------------------------------------------------------------
  50. // Write the Attribute Value
  51. //------------------------------------------------------------------------------------------------------
  52. function alarm_setAttribute(name, attr, val) {//set Alarm Attribute
  53. var location = document.location.pathname;
  54. if (location.substr(location.length-1,1) == '/') {location = location.substr(0,location.length-1);}
  55. var url = document.location.protocol+"//"+document.location.host+location;
  56. FW_cmd(url+'?XHR=1&cmd.'+name+'=attr '+name+' '+encodeParm(attr)+' '+ encodeParm(val));
  57. }
  58. function alarm_cancel(name,level){
  59. var val;
  60. var nam;
  61. var location = document.location.pathname;
  62. if (location.substr(location.length-1,1) == '/') {location = location.substr(0,location.length-1);}
  63. var url = document.location.protocol+"//"+document.location.host+location;
  64. FW_cmd(url+'?XHR=1&cmd.'+name+'={Alarm_Exec("'+name+'",'+level+',"web","button","off")}');
  65. }
  66. function alarm_arm(name,level){
  67. var val;
  68. var nam;
  69. var command = document.getElementById('l'+level+'x').checked;
  70. if (command == true){
  71. command="arm";
  72. }else{
  73. command="disarm";
  74. }
  75. var location = document.location.pathname;
  76. if (location.substr(location.length-1,1) == '/') {location = location.substr(0,location.length-1);}
  77. var url = document.location.protocol+"//"+document.location.host+location;
  78. FW_cmd(url+'?XHR=1&cmd.'+name+'={Alarm_Arm("'+name+'",'+level+',"web","button","'+command+'")}');
  79. }
  80. function alarm_set(name){
  81. var val;
  82. var nam;
  83. var location = document.location.pathname;
  84. if (location.substr(location.length-1,1) == '/') {location = location.substr(0,location.length-1);}
  85. var url = document.location.protocol+"//"+document.location.host+location;
  86. // saving arm data
  87. FW_cmd(url+'?XHR=1&cmd.'+name+'=attr '+name+' armdelay '+ document.getElementById('armdelay').value);
  88. FW_cmd(url+'?XHR=1&cmd.'+name+'=attr '+name+' armwait '+ encodeParm(document.getElementById('armwait').value));
  89. FW_cmd(url+'?XHR=1&cmd.'+name+'=attr '+name+' armact '+ encodeParm(document.getElementById('armaction').value));
  90. FW_cmd(url+'?XHR=1&cmd.'+name+'=attr '+name+' disarmact '+ encodeParm(document.getElementById('disarmaction').value));
  91. FW_cmd(url+'?XHR=1&cmd.'+name+'=attr '+name+' cancelact '+ encodeParm(document.getElementById('cancelaction').value));
  92. // saving start and end times
  93. for (var i = 0; i < alarmno; i++){
  94. FW_cmd(url+'?XHR=1&cmd.'+name+'=attr '+name+' level'+i+'start '+document.getElementById('l'+i+'s').value);
  95. FW_cmd(url+'?XHR=1&cmd.'+name+'=attr '+name+' level'+i+'end ' +document.getElementById('l'+i+'e').value);
  96. FW_cmd(url+'?XHR=1&cmd.'+name+'=attr '+name+' level'+i+'msg ' +document.getElementById('l'+i+'m').value);
  97. if (document.getElementById('l'+i+'x').checked == true ){
  98. val = "armed";
  99. }else{
  100. val = "disarmed";
  101. }
  102. FW_cmd(url+'?XHR=1&cmd.'+name+'=attr '+name+' level'+i+'xec ' + val);
  103. }
  104. for (var k in ah.items) {
  105. ah.setItem(k,document.getElementById(k).value);
  106. }
  107. // acquiring data for each sensor
  108. var sarr = document.getElementsByName('sensor');
  109. for (var k = 0; k < sarr.length; k++){
  110. nam = sarr[k].getAttribute('informId');
  111. val = "";
  112. for (var i = 0; i < alarmno; i++){
  113. if (sarr[k].children[1].children[i].checked == true ){
  114. val += "alarm"+i+",";
  115. }
  116. }
  117. val += "|"+sarr[k].children[2].children[0].value;
  118. val += "|"+sarr[k].children[2].children[1].value;
  119. val += "|"+sarr[k].children[3].children[0].options[sarr[k].children[3].children[0].selectedIndex].value;
  120. FW_cmd(url+'?XHR=1&cmd.'+nam+'=attr '+nam+' alarmSettings ' + encodeParm(val));
  121. }
  122. // acquiring data for each actor
  123. var aarr = document.getElementsByName('actor');
  124. for (var k = 0; k < aarr.length; k++){
  125. nam = aarr[k].getAttribute('informId');
  126. val = "";
  127. for (var i = 0; i < alarmno; i++){
  128. //alert(" Checking "+k+" "+i)
  129. if (aarr[k].children[1].children[i].checked == true ){
  130. val += "alarm"+i+",";
  131. }
  132. }
  133. val += "|"+aarr[k].children[2].children[0].value;
  134. val += "|"+aarr[k].children[2].children[1].value;
  135. val += "|"+aarr[k].children[3].children[0].value;
  136. FW_cmd(url+'?XHR=1&cmd.'+nam+'=attr '+nam+' alarmSettings ' + encodeParm(val));
  137. }
  138. // creating notifiers
  139. FW_cmd(url+'?XHR=1&cmd.' + name + ' ={main::Alarm_CreateNotifiers("' + name + '")}');
  140. }