(function(){
  R = {  
    leadForm: {},
    programSelects: [],
    delayStart: this.delayStart || false,
    started: false,

    defaults: {
      elements: [],
      excludeOptions: [],
      form: "LeadSystem",
      label: "Program Interested in"
    },
    
    getDefaults: function() {
      for(key in R.defaults) {
        R[key] = R.defaults[key];
        if(R.options && R.options[key]) R[key] = R.options[key];
      }
    },
    
    inArray: function(obj, val) {
      for (var i=0, len=obj.length; i<len; i++) {
        if (obj[i]===val) return true;
      }
      return false;
    },


    getSelects: function(frm, lbl) {
      mySels = [];
      if (R.elements.length) {
        for(idx in R.elements) {
          mySels.push(document.getElementsByName(R.elements[idx])[0]);
        }
      } else {
        sels = frm.getElementsByTagName("select");
        for (var i=0, sel; sel=sels[i]; i++) {
          par = sel.parentNode;
          if (par.nodeName.toLowerCase() == "td") par = par.parentNode;
          txt = par.innerText || par.textContent;
          if (txt.toLowerCase().indexOf(lbl.toLowerCase()) >= 0) mySels.push(sel);
        }
      }
      if (mySels) return mySels;
      return false;
    },

    removeOptions: function(sels, arr) {
      for (var i=0, sel; sel=sels[i]; i++) {      
        for (var j=sel.options.length-1; j>=1; j--) {
          if (R.inArray(arr, sel.options[j].value)) sel.remove(j);
        }
        // remove empty sections
        var lastVal = -1;
        for (var j=sel.options.length-1; j>=1; j--) {
          if (lastVal==-1 && sel.options[j].value==-1 && j) sel.remove(j);
          if (sel.options[j]) lastVal = sel.options[j].value;
        }
        if (sel.value==-1) sel.selectedIndex = 0;
      }
    },
    
    start: function() {
      R.delayStart = false;
      R.initStart();
    },
    
    initStart: function() {
      if(!R.delayStart && !R.started) {
        R.getDefaults();
        R.leadForm = document.getElementsByName(R.form)[0];
        if (R.leadForm) {
          R.programSelects = R.getSelects(R.leadForm, R.label);
          if (R.programSelects) {
            R.removeOptions(R.programSelects, R.excludeOptions);
          }
        }
        R.started = true;
      }
    },
    
    init: function () {
      if (window.addEventListener) window.addEventListener("load", this.initStart, false);
      else if (window.attachEvent) window.attachEvent("onload", this.initStart);
    }
  }
  window['RemoveOptions'] = R;
})();

RemoveOptions.init();
