// JavaScript for jdc.download.php

function expandNotes(id,obj) {
  var elm = document.getElementById(id);
  if (!elm.style.display || elm.style.display == 'none') {
    elm.style.display = 'block';
    obj.alt = "Click to hide notes";
    obj.title = "Click to hide notes";
  }
  else {
    elm.style.display = 'none';
    obj.alt = "Click to see notes";
    obj.title = "Click to see notes";
  }
}

function checkCommentsNotes() {
  if (document.getElementById('comments').checked)
    document.getElementById('commentsNotes').style.display = 'block';
  else
    document.getElementById('commentsNotes').style.display = 'none';
}

function selectChilds(id) {
  var elm = document.getElementById(id);
  var childs = elm.parentNode.getElementsByTagName('input');
  var c = elm.checked ? true : false;
  for(var i=0; i< childs.length; i++) {
    if (childs[i].type == 'checkbox')
      childs[i].checked = c;
  }
}

function expand(id,obj) {
  var opt = document.getElementById('objOpt' + id);
  var sub = document.getElementById('objSub' + id);
  if (opt && (!opt.style.display || opt.style.display == 'none')) {
    opt.style.display = 'block';
    var collapse = true;
  }
  if (sub && (!sub.style.display || sub.style.display == 'none')) {
    sub.style.display = 'block';
    var collapse = true;
  }
  if (collapse) {
    obj.src = "gfx/arrow_up.jpg";
    obj.alt = "Click to collapse";
    obj.title = "Click to collapse";
    if (sub || opt) {
      if (opt)
        sub = opt;
      obj.parentNode.style.border = '1px solid #000'; 
      obj.parentNode.style.borderBottom = '1px solid #f6fafd';
      obj.parentNode.style.position = 'relative';
      obj.parentNode.style.background = '#f6fafd';
      obj.parentNode.style.padding = '4px';
      obj.parentNode.style.marginRight = '5px';
      obj.parentNode.style.zIndex = '1';
      if (document.createEventObject)
        sub.style.top = '-2px';
      else
        sub.style.top = '-1px';
    }
  }
  else {
    if (opt) {
      opt.style.display = 'none';
      var shrink = true;
    }
    if (sub) {
      sub.style.display = 'none';
      var shrink = true;
    }
    obj.src = "gfx/arrow_down.jpg";
    obj.alt = "Click to expand";
    obj.title = "Click to expand";
    if (sub || opt) {
      obj.parentNode.style.border = '0'; 
      obj.parentNode.style.position = 'static';
      obj.parentNode.style.background = '#fff';
      obj.parentNode.style.padding = '0';
      obj.parentNode.style.marginRight = '10px';
    }
  }
}

/* Dependency stuff */

Array.prototype.mapFunction =
  function(f) {
    var l = this.length;
    for(var i=0; i<l; i++)
      f(this[i]);
  };

function selectAll(obj, removeOptions) {
  var e = obj.form.elements;
  var l = e.length;
  if (obj.checked) {
    for(var i=0; i<l; i++) {
      if (e[i].type == 'checkbox' && !e[i].checked && /oid|all/.test(e[i].id)) {
        e[i].checked = true;
        selectObject(e[i]);
      }
    }
  }
  else {
    for(var i=0; i<l; i++) {
      if (e[i].type == 'checkbox' && (removeOptions || /oid|all/.test(e[i].id))) {
        e[i].checked = false;
        if (e[i].disabled) {
          e[i].disabled = false;
          e[i].title = null;
          e[i].nextSibling.title = null;
          e[i].nextSibling.style.color = '#000';
        }
      }
    }
  }
  //updateCurrentSize();
}

function enableAll(obj) {
  var e = obj.elements;
  var l = e.length;
  for(var i=0; i<l; i++) {
    if (e[i].type == 'checkbox' && e[i].checked && e[i].disabled)
      e[i].disabled = false;
  }
}

function selectObject(obj) {
  if (objDep[obj.id]) {
    if (obj.checked) {
      var a = objDep[obj.id];
      for(var i=0; i<a.length; i++) {
        var elm = document.getElementById(a[i]);
        elm.checked = true;
        elm.disabled = true;
        elm.title = 'Other modules depend on this module';
        elm.nextSibling.title = 'Other modules depend on this module';
        elm.nextSibling.style.color = '#ccc';
        selectObject(elm);
      }
    }
    else {
      var a = objDep[obj.id];
      for(var i=0; i<a.length; i++)
        checkReverse(a[i]);
      
    }
  }
  // If sub objects
  if (obj.parentNode.parentNode.lastChild.nodeName && obj.parentNode.parentNode.lastChild.nodeName.toLowerCase() == 'ul') {
    if (obj.checked) {
      var inputs = obj.parentNode.parentNode.lastChild.getElementsByTagName('input');
      for(var i=0; i<inputs.length; i++) {
        if (!inputs[i].checked && /oid/.test(inputs[i].id)) {
          inputs[i].checked = true;
          selectObject(inputs[i]);
        }
      }
    }
    else { 
      var inputs = obj.parentNode.parentNode.lastChild.getElementsByTagName('input');
      for(var i=0; i<inputs.length; i++) {
        if (inputs[i].checked && /oid/.test(inputs[i].id)) {
          inputs[i].checked = false;
          if (inputs[i].disabled) {
            inputs[i].disabled = false;
            inputs[i].title = null;
            inputs[i].nextSibling.title = null;
            inputs[i].nextSibling.style.color = '#000';
          }
        }
      }
    }
  }
  //updateCurrentSize();
}

function checkReverse(id) {
  var a = objDepReverse[id];
  for(var i=0; i<a.length; i++) {
    var elm = document.getElementById(a[i]);
    if (elm.checked)
      return;
  }
  var elm = document.getElementById(id);
  elm.disabled = false;
  elm.title = null;
  elm.nextSibling.title = null;
  elm.nextSibling.style.color = '#000';
}

function validate(e,obj) {
  var elm = obj.elements;
  var l = elm.length;
  for(var i=0; i<l; i++) {
    if (elm[i].type == 'checkbox' && elm[i].checked && /oid/.test(elm[i].id)) {
      enableAll(obj);
      return true;
    }
  }
  if (e.target)
    e.preventDefault();
  else
    e.returnValue = false;
  return false;
}
// Reset defaults
function resetDefaults() {
  var elm = document.getElementById('oid_1');
  elm.checked = false;
  selectObject(elm, true);
  var l = defaults.length;
  for(var i=0; i<l; i++) {
    if (/oid/.test(defaults[i])) {
      elm = document.getElementById(defaults[i]);
      elm.checked = true;
      selectObject(elm);
    }
    else
      document.getElementById(defaults[i]).checked = true;
  }
  document.getElementById('commentsOff').checked = true;
  updateCurrentSize();
}

function updateCurrentSize() {
  var commentsOff = document.getElementById('commentsOff');
  var elm = document.getElementById('currentSize');
  if (!elm) {
    elm = document.createElement('div');
    elm.id = 'currentSize';
    elm.className = 'currentSize';
    elm.appendChild(document.createTextNode(''));
    commentsOff.parentNode.insertBefore(elm, commentsOff.nextSibling.nextSibling.nextSibling);
  }
  var p = commentsOff.checked ? 'min' : 'max';
  var e = commentsOff.form.elements;
  var l = e.length;
  var totalsize = 0;
  for(var i=0; i<l; i++) {
    if (e[i].checked && /oid/.test(e[i].id) && size[e[i].id])
      totalsize += size[e[i].id][p];
  }
  if (totalsize > 1023)
    elm.firstChild.nodeValue = 'Current size is ~' + (totalsize/1024).toFixed(2) + ' Kb';
  else
    elm.firstChild.nodeValue = 'Current size is ~' + totalsize + ' bytes';
}

window.onload =
  function() {
    document.getElementById('javascriptEnabled').value = 'true';
    resetDefaults();
  };
