var DateDropdowns = {
  init: function(fieldName, formName) {
    var dateField = this._field(fieldName, formName);
    if (dateField == null) {
      return;
    }
    if (!dateField.value.match(/(\d+)\/(\d+)\/(\d+)/)) {
      return;
    }
    this._selectSet(this._field(fieldName + "Month", formName), RegExp.$1);
    this._selectSet(this._field(fieldName + "Day", formName), RegExp.$2);
    this._selectSet(this._field(fieldName + "Year", formName), RegExp.$3);
  },

  changed: function(fieldName, formName) {
    var dateField = this._field(fieldName, formName);
    if (dateField == null) {
      return;
    }
    var dateValue =
      this._selectGet(this._field(fieldName + "Month", formName)) + "/" +
      this._selectGet(this._field(fieldName + "Day", formName)) + "/" +
      this._selectGet(this._field(fieldName + "Year", formName));
    if (!dateValue.match(/\d+\/\d+\/\d+/)) {
      dateValue = "";
    }
    dateField.value = dateValue;
  },

  _field: function(fieldName, formName) {
    var form = null;
    if (formName == null) {
      form = document.forms[0];
      formName = "forms[0]";
    }
    else {
      form = document.forms[formName];
    }
    if (form == null) {
      alert("Form does not exist: " + formName);
      return null;
    }
    var field = form[fieldName];
    if (field == null) {
      alert("Field does not exist: " + formName + "." + fieldName);
    }
    return field;
  },

  _selectGet: function(list) {
    return list.options[list.selectedIndex].value;
  },

  _selectSet: function(list, value) {
    for (var i = 0; i < list.options.length; i++) {
      if (list.options[i].value == value) {
        list.selectedIndex = i;
        return;
      }
    }
  },
  
  setFocus: function(objID) {
    document.getElementById(objID).focus();
  }
};