document.write('<link rel="stylesheet" type="text/css" href="/script/configurator/inputs.css" media="screen" />');
var config_elements = new Array();
var Input = {
  initialize: function() {
    if(document.getElementsByTagName("form")) {
      var divs = document.getElementsByTagName("div");
      for(var i = 0; i < divs.length; i++) {
        if(divs[i].className.match("checkbox") || divs[i].className.match("radio")) {
          divs[i].onmousedown = Input.effect;
          divs[i].onmouseup = Input.handle;
          window.onmouseup = Input.clear;
          for (var j=0;j<divs[i].childNodes.length;j++) {
            if (divs[i].childNodes[j].checked == true) {
              divs[i].className = "radio selected";
              divs[i].style.backgroundPosition = "0 -52px";
            }
          }
        }
      }
    }
    Input.datasheet();
  },

  effect: function() {
    // no valid configuration
    if (this.disabled) return;
    if(this.className == "checkbox" || this.className == "radio") {
      this.style.backgroundPosition = "0 -26px";
    } else {
      this.style.backgroundPosition = "0 -79px";
    }
  },

  handle: function() {
    selector = this.getElementsByTagName("input")[0];

    // no valid configuration
    if (this.disabled) return;

    if(this.className == "checkbox") {
      selector.checked = true;
      this.className = "checkbox selected";
      this.style.backgroundPosition = "0 -52px";
    } else if(this.className == "checkbox selected") {
      selector.checked = false;
      this.className = "checkbox";
      this.style.backgroundPosition = "0 0";
    } else {

      // check for items to disable
      var _disable=selector.getAttribute("disable");
      var _dependence=selector.getAttribute("dependence");

      if (selector.checked) {
        selector.checked = false;

        // check for items to enable
        if (_disable) {
          var _tmp = _disable.split(',');
          for(var j=0;j<_tmp.length;j++) {
            var obj = document.getElementById(_tmp[j]);
            obj.className = "radio";
            obj.disabled  = false;
            obj.style.backgroundPosition = "0 0px";
          }
        }

        this.className = "radio";
        this.style.backgroundPosition = "0 0px";
        config_elements[this.id.substring(34)] = false;

        inputs = document.getElementsByTagName("input");
        var idx = this.id.substring(0,33);
        var obj = document.getElementById('orderNo'+idx);
        obj.style.backgroundColor = '#FFD7D7';
        obj.innerHTML = "??";

        var obj = document.getElementById('orderNoFull'+idx);
        obj.style.backgroundColor = '#FFD7D7';
        obj.innerHTML = "??";

      } else {
        selector.checked = true;

        // check for items to disable
        if (_disable) {
          var _tmp = _disable.split(',');
          for(var j=0;j<_tmp.length;j++) {
            var obj = document.getElementById(_tmp[j]);
            obj.className = "radio disabled";
            obj.disabled  = true;
            obj.style.backgroundPosition = "0 -105px";

            // disable right dependencies
            for (x=0;x<obj.childNodes.length;x++) {
              if (
                obj.childNodes[x].type == "radio" &&
                !obj.childNodes[x].disabled
              ) {

                var items = obj.childNodes[x].getAttribute("disable");
                var _tmp2 = items.split(',');
                for(var k=0;k<_tmp2.length;k++) {
                  if (this.id == _tmp2[k]) continue;

                  obj.className = "radio disabled";
                  obj.disabled  = true;
                  obj.style.backgroundPosition = "0 -105px";
                }
              }
            }
          }
        }

        this.className = "radio selected";
        this.style.backgroundPosition = "0 -52px";
        inputs = document.getElementsByTagName("input");
        var idx = this.id.substring(0,33);
        var obj = document.getElementById('orderNo'+idx);
        obj.style.backgroundColor = '#FFFFFF';
        obj.innerHTML = selector.value;

        var obj = document.getElementById('orderNoFull'+idx);
        obj.style.backgroundColor = '#DAE5EB';
        obj.innerHTML = selector.value;

      }
      for(i = 0; i < inputs.length; i++) {
        var a = inputs[i].getAttribute("name");
        var b = selector.getAttribute("name");
        if (!a || !b) continue;
        if(a.substring(0,33) == b.substring(0,33)) {
          if(inputs[i] != selector) {
            inputs[i].checked = false;

            if (config_elements[inputs[i].value]) {

              // check for items to enable based on last item
              var _tmp  	 = inputs[i].getAttribute("disable").split(',');
              var _disable = selector.getAttribute("disable").split(',');
              for(var j=0;j<_tmp.length && _tmp[0];j++) {

                for(var k=0,found = false;k<_disable.length && !found ;k++) {
                  if (_disable[k] == _tmp[j]) found = true;
                }

                if (!found) {
                  var obj = document.getElementById(_tmp[j]);
                  obj.className = "radio";
                  obj.disabled  = false;
                  obj.style.backgroundPosition = "0 0";
                }
              }
            }

            // check again for items to disable
            var found = false;
            var _tmp = inputs[i].getAttribute("dependence").split(',');
            for(var j=0;j<_tmp.length && _tmp[0];j++) {
              var obj = document.getElementById(_tmp[j]);
              for (x=0;x<obj.childNodes.length;x++) {
                if (
                  obj.childNodes[x].type == "radio" &&
                  obj.childNodes[x].checked
                ) {
                  found = true;
                }
              }
            }
            if (found) continue;

            config_elements[inputs[i].value] = false;
            inputs[i].parentNode.className = "radio" + (selector.checked ? " clear":"");
            inputs[i].parentNode.style.backgroundPosition = "0 0";

          }
        }
      }

    }

    Input.datasheet(selector);

  },

  datasheet: function(selector) {
    var checked = false;
    var val = "";
    if (selector && selector != "undefined") {
      checked = selector.checked;
      val = selector.value;
      config_elements[val] = checked;
    }
    for (var j=1;j<5;j++) {
      var _table = document.getElementById("config_table_"+j);
      if (!_table || _table == "undefined") break;
      var _divs  = _table.getElementsByTagName("span");
      for(var i=0;i<_divs.length;i++) {
        if (_divs[i].className.substring(0,11) == "config_show") {
          if (_divs[i].className == "config_show_"+val && checked) {
            _divs[i].style.display = 'block';
          } else {
            var idx = _divs[i].className.substring(12);
            if (!config_elements[idx]) _divs[i].style.display = 'none';
          }
        }
      }
      var _divs  = _table.getElementsByTagName("tr");
      for(var i=0;i<_divs.length;i++) {
        if (_divs[i].className.substring(0,11) == "config_show") {
          if (_divs[i].className == "config_show_"+val && checked) {
            _divs[i].style.display = 'block';
          } else {
            var idx = _divs[i].className.substring(12);
            if (!config_elements[idx]) _divs[i].style.display = 'none';
          }
        }
      }
    }
  },

  clear: function() {
    divs = document.getElementsByTagName("div");
    for(var i = 0; i < divs.length; i++) {
      if(divs[i].className == "checkbox" || divs[i].className == "radio") {
        divs[i].style.backgroundPosition = "0 0";
      } else if(divs[i].className == "checkbox selected" || divs[i].className == "radio selected") {
        divs[i].style.backgroundPosition = "0 -52px";
      }
    }
  }

}
window.onload = Input.initialize;
