function CustomItemForm() {
  this.vlly_set = null;
  this.cust_set = null;

  if (typeof CustomItemForm._initialized == "undefined") {

    CustomItemForm.prototype.init = function (parentid) {
      var parentEl = document.getElementById(parentid);

      var myElmts = parentEl.getElementsByTagName('input');

      for (i=0;i<myElmts.length;i++) {
        if (myElmts[i].className && myElmts[i].className.indexOf("required") != -1) {
          myElmts[i].pageObj = this;
          addEvent(myElmts[i], 'blur', this.checkForm, false);
          addEvent(myElmts[i], 'keypress', this.handleField, false);
        }
      }

      this.initDimensionTypes();
      this.initSourceChoice(parentEl);
    }

    CustomItemForm.prototype.initDimensionTypes = function () {
      var vlly_dimension_type = document.getElementById('vlly_dimension_type');
      var cust_dimension_type = document.getElementById('cust_dimension_type');

      vlly_dimension_type.pageObj = this;
      addEvent(vlly_dimension_type, 'change', this.changeDimensionType, false);
      cust_dimension_type.pageObj = this;
      addEvent(cust_dimension_type, 'change', this.changeDimensionType, false);
    }

    CustomItemForm.prototype.initSourceChoice = function (parentEl) {
      var myDivs = parentEl.getElementsByTagName('div');
      var choiceRadio = null;
      var myRadios = new Array();

      for (i=0;i<myDivs.length;i++) {
        if (myDivs[i].className && myDivs[i].className.indexOf("choice_tab") != -1) {
          myDivs[i].pageObj = this;
          addEvent(myDivs[i], 'click', this.changeChoiceForm, false);

          choiceRadio = myDivs[i].getElementsByTagName('input');
          choiceRadio[0].pageObj = this;
          addEvent(choiceRadio[0], 'click', this.changeChoiceForm, false);
          myRadios.push(choiceRadio[0]);
        }
      }
      this.changeSupplySet("valley_supplied_set","off");
      this.changeSupplySet("customer_supplied_set","off");
      this.changeChoiceForm(null,myRadios);
    }

    CustomItemForm.prototype.changeDimensionType = function (e,el) {
      var el = (el) ? getRef(el) : getTarget(e);

      if (!el) {
        return;
      }

      var lw = null;
      var diam = null;
      var diam_units = null;
      var lwF = null;
      var diamF = null;
      var diam_unitsF = null;

      switch (el.name) {
        case "vlly_dimension_type":
          lw = document.getElementById("vlly_LW");
          diam = document.getElementById("vlly_diam");
          diam_units = document.getElementById("vlly_diam_units");
          switch (el.value) {
            case "Length/Width":
              lw.disabled = false;
              diam.disabled = true;
              diam_units.disabled = true;
              //change classes for IE so fields look more disabled
              changeClass(lw,"");
              changeClass(diam,"disabled");
              changeClass(diam_units,"disabled");
              break;
            case "Diameter":
              diam.disabled = false;
              diam_units.disabled = false;
              lw.disabled = true;
              //change classes for IE so fields look more disabled
              changeClass(lw,"disabled");
              changeClass(diam,"");
              changeClass(diam_units,"");
              break;
            default:
              diam.disabled = true;
              diam_units.disabled = true;
              lw.disabled = true;
              //change classes for IE so fields look more disabled
              changeClass(lw,"disabled");
              changeClass(diam,"disabled");
              changeClass(diam_units,"disabled");
              break;
          }
          break;
        case "cust_dimension_type":
          lw = document.getElementById("cust_LW_incoming");
          diam = document.getElementById("cust_diam_incoming");
          diam_units = document.getElementById("cust_diam_units_incoming");
          lwF = document.getElementById("cust_LW_final");
          diamF = document.getElementById("cust_diam_final");
          diam_unitsF = document.getElementById("cust_diam_units_final");
          switch (el.value) {
            case "Length/Width":
              lw.disabled = false;
              lwF.disabled = false;
              diam.disabled = true;
              diamF.disabled = true;
              diam_units.disabled = true;
              diam_unitsF.disabled = true;
              //change classes for IE so fields look more disabled
              changeClass(lw,"");
              changeClass(lwF,"");
              changeClass(diam,"disabled");
              changeClass(diamF,"disabled");
              changeClass(diam_units,"disabled");
              changeClass(diam_unitsF,"disabled");
              break;
            case "Diameter":
              diam.disabled = false;
              diamF.disabled = false;
              diam_units.disabled = false;
              diam_unitsF.disabled = false;
              lw.disabled = true;
              lwF.disabled = true;
              //change classes for IE so fields look more disabled
              changeClass(lw,"disabled");
              changeClass(lwF,"disabled");
              changeClass(diam,"");
              changeClass(diamF,"");
              changeClass(diam_units,"");
              changeClass(diam_unitsF,"");
              break;
            default:
              diam.disabled = true;
              diamF.disabled = true;
              diam_units.disabled = true;
              diam_unitsF.disabled = true;
              lw.disabled = true;
              lwF.disabled = true;
              //change classes for IE so fields look more disabled
              changeClass(lw,"disabled");
              changeClass(lwF,"disabled");
              changeClass(diam,"disabled");
              changeClass(diamF,"disabled");
              changeClass(diam_units,"disabled");
              changeClass(diam_unitsF,"disabled");
              break;
          }
          break;
      }
    }

    CustomItemForm.prototype.changeChoiceForm = function (e,myRadios) {
      var el = null;
      if (myRadios) {

        for (i=0;i<myRadios.length;i++) {
          if(myRadios[i].checked) {
            el = myRadios[i];
          }
        }
      } else {
        el = getTarget(e);
      }

      if (!el) {
        return;
      }

      if (el.nodeName.toLowerCase() == 'div') {
        var myRadio = el.getElementsByTagName('input');
        myRadio[0].checked = true;
        el = myRadio[0];
      }

      var pageObj = (this.pageObj) ? this.pageObj: el.pageObj;

      switch (el.value) {
        case "customer_supplied":
          clearErrorMsg(null,"vlly_quantity"+"_msg");
          pageObj.changeSupplySet("valley_supplied_set","off");
          pageObj.changeSupplySet("customer_supplied_set","on");
          pageObj.changeDimensionType(null,"cust_dimension_type");
          break;
        case "valley_supplied":
          clearErrorMsg(null,"cust_quantity"+"_msg");
          pageObj.changeSupplySet("customer_supplied_set","off");
          pageObj.changeSupplySet("valley_supplied_set","on");
          pageObj.changeDimensionType(null,"vlly_dimension_type");
          break;
      }
    }

    CustomItemForm.prototype.changeSupplySet = function (parentEl,currstate) {
      if (!parentEl || !currstate) return;

      var parentEl = getRef(parentEl);
      var myInputs = parentEl.getElementsByTagName('input');
      var mySelects = parentEl.getElementsByTagName('select');

      switch (currstate) {
        case "on":
          changeClass(parentEl,"fieldset_on");
          for (i=0;i<myInputs.length;i++) {
            myInputs[i].disabled = false;
          }
          for (i=0;i<mySelects.length;i++) {
            mySelects[i].disabled = false;
          }
          break;
        case "off":
          changeClass(parentEl,"fieldset_off");
          for (i=0;i<myInputs.length;i++) {
            myInputs[i].disabled = true;
          }
          for (i=0;i<mySelects.length;i++) {
            mySelects[i].disabled = true;
          }
          break;
      }
    }

    CustomItemForm.prototype.handleField = function (e,el) {
      var el = (el) ? el : getTarget(e);

      if (!el) {
        return;
      }
      var pageObj = (this.pageObj) ? this.pageObj: el.pageObj;

      clearErrorMsg(e);
    }

    CustomItemForm.prototype.checkForm = function (e) {
      var el = null;
      el = getTarget(e);

      if (!el) {
        return;
      }
      var pageObj = (this.pageObj) ? this.pageObj: el.pageObj;

      switch (el.id) {
        case "customitem_name":
          if (isEmpty(el.value)) {
            showErrorMsg(el,"Please provide a name for this custom item");
          }
          break;
        case "vlly_quantity":
          if (isEmpty(el.value)) {
            showErrorMsg(el,"Please enter a quantity");
          }
          break;
        case "cust_quantity":
          if (isEmpty(el.value)) {
            showErrorMsg(el,"Please enter a quantity");
          }
          break;
        case "company":
          if (isEmpty(el.value)) {
            showErrorMsg(el,"Please provide a company name.");
          }
          break;
        case "name":
          if (isEmpty(el.value)) {
            showErrorMsg(el,"Please provide your name");
          }
          break;
        case "telephone":
          if (isEmpty(el.value)) {
            showErrorMsg(el,"Please enter a phone number");
          } else if (!isUSPhone(el.value)) {
            showErrorMsg(el,"Phone format invalid");
          }
          break;
        case "email_address":
          if (isEmpty(el.value)) {
            showErrorMsg(el,"Please enter an email");
          } else if (!isEmail(el.value)) {
            showErrorMsg(el,"Email format invalid");
          }
          break;
        case "country":
          if (isEmpty(el.value)) {
            showErrorMsg(el,"Please provide your country");
          }
          break;
      }
    }

    CustomItemForm._initialized = true;
  }
}

function initForm_obj() {
  form_obj.init('custom_item_form');
}

var form_obj = new CustomItemForm();

addEvent(window,'load',initForm_obj,false);
