var sum = 0;
var options = new Array(
new Array('broker_program_state', 1),
new Array('broker_timed_events', 2),
new Array('broker_service_checks', 4),
new Array('broker_host_checks', 8),
new Array('broker_event_handlers', 16),
new Array('broker_logged_data', 32),
new Array('broker_notifications', 64),
new Array('broker_flapping_data', 128),
new Array('broker_comment_data', 256),
new Array('broker_downtime_data', 512),
new Array('broker_system_commands', 1024),
new Array('broker_ocp_data', 2048),
new Array('broker_status_data', 4096),
new Array('broker_adaptive_data', 8192),
new Array('broker_externalcommand_data', 16384),
new Array('broker_retention_data', 32768),
new Array('broker_acknowledgement_data', 65536),
new Array('broker_statechange_data', 131072),
new Array('broker_reserved18', 262144),
new Array('broker_reserved19', 524288)
 );

function updateSum() {
  var sum = 0;
  for (var i = 0; i < options.length; i++) {
    if (document.getElementById(options[i][0]).checked) {
      sum = sum | parseInt(options[i][1]);
    }
  }
  document.getElementById('processing_options').value = 'event_broker_options=' + sum;
}
function updateCheckBoxes(event) {
  var code = 0;
  if (!event) {
    event = window.event;
  }
  if (event.which) {
    code = event.which;
  } else if (event.keyCode) { 
    code = event.keyCode; 
  }
  if ((code >= 48 && code <= 58) || (code == 8) || (code == 46)) {
    if (sum = document.getElementById('processing_options').value.match(/^\s*data_processing_options\s*=\s*(\d+)\s*$/)) {
      sum = RegExp.$1;        
      updateSum2(); 
    }
  }
}

function updateSum2() {
  for (var i = 0; i < options.length; i++) {
    if (options[i][1] && sum) {
      document.getElementById(options[i][0]).checked = true;
    } else {
      document.getElementById(options[i][0]).checked = false;
    }
  }
  if (sum == 67108863) {
    document.getElementById('ndomod_process_everything').checked = true;
  } else {
    document.getElementById('ndomod_process_everything').checked = false;
  }
}
function drawTable() {
  function stringCompareInArray(a, b) {
    return (a[0] == b[0]) ? 0 : (a[0] > b[0]) ? 1 : -1
  }

  var po = document.getElementById('options');
  var table = document.createElement('table');
  table.style.tableLayout = 'auto';
  table.style.width = '0%';
  var tbody = document.createElement('tbody');
  options.sort(stringCompareInArray);
  for (var i = 0; i < options.length; i++) {
    var tr = document.createElement('tr');
    var td1 = document.createElement('td');
    var td2 = document.createElement('td');
    var td3 = document.createElement('td');
    var inp2 = document.createElement('input');
    td1.style.color = '#33ff00';
    td1.style.backgroundColor = 'black';
    td1.style.paddingLeft = '8px';
    td1.style.paddingRight = '16px';
    td1.style.paddingTop = '0px';
    td1.style.paddingBottom = '0px';
    td1.style.height = '1em';
    td1.style.borderLeft = '0px';
    td1.style.borderTop = '0px';
    td1.style.borderBottom = '0px';
    td1.style.borderRight = '0px';

    td2.style.textAlign = 'right';
    td2.style.color = '#33ff00';
    td2.style.backgroundColor = 'black';
    td2.style.paddingRight = '8px';
    td2.style.paddingTop = '0px';
    td2.style.paddingBottom = '0px';
    td2.style.height = '1em';
    td2.style.borderLeft = '0px';
    td2.style.borderTop = '0px';
    td2.style.borderBottom = '0px';
    td2.style.borderRight = '0px';

    inp2.id = options[i][0];
    inp2.type = 'checkbox';
    inp2.style.width = '13px';
    inp2.style.height = '13px';
    inp2.style.margin = '0px';
    inp2.style.paddingTop = '0px';
    inp2.style.paddingBottom = '0px';

    inp2.style.border = '1px solid orange';
    if (options[i][0] == 'ndomod_process_everything') {
      inp2.style.border = '1px solid red';
    }
    inp2.onclick = updateSum;
    td1.appendChild(document.createTextNode(options[i][0]));
    td2.appendChild(inp2);
    tr.appendChild(td1);
    tr.appendChild(td2);
    tbody.appendChild(tr);
  }
  var result = document.createElement('input');
  var tr = document.createElement('tr');
  var td = document.createElement('td');
  result.readonly = true;
  result.style.width = '100%';
  result.id = 'processing_options';
  result.value = 'event_broker_options=0';
  result.onkeyup = updateCheckBoxes;
  td.colSpan = 2;
  td.appendChild(result);
  result.style.border = '1px solid orange';
  td.style.color = '#33ff00';
  td.style.backgroundColor = 'black';
  td.style.paddingLeft = '8px';
  td.style.paddingRight = '8px';
  td.style.borderLeft = '0px';
  td.style.borderTop = '0px';
  td.style.borderBottom = '0px';
  tr.style.width = '100%';
  tr.appendChild(td);
  tbody.appendChild(tr);
  table.appendChild(tbody);
  table.style.borderCollapse = 'collapse';
  tbody.firstChild.childNodes[0].style.paddingTop = '8px';
  tbody.firstChild.childNodes[1].style.paddingTop = '8px';
  tbody.lastChild.childNodes[0].style.paddingBottom = '8px';
  po.appendChild(table);
}

