// bia.js
// by Jon White (Jon.White@sas.com)

function validate(message) {
   var form = document.forms[0];
   var missing = 0;
   var checked = {};

   for (var i = 0; i < form.elements.length; i++) {
      var element = form.elements[i];
      if ((element.type == 'radio' ||
           element.type == 'checkbox') && element.checked)
         checked[element.name] = 1;
   }

   for (var i = 0; i < form.elements.length; i++) {
      var element = form.elements[i];

      var name = element.name;
      var type = element.type;
      if (name == 'first' || name == 'last' ||
          name == 'company' || name == 'other' ||
          type == 'hidden' || type == 'submit' ||
          type == 'button' || type == 'textarea' ||  
          element.style.display == 'none' ||
          element.style.visibility == 'hidden')
         continue;

      var value = type == 'text' ? element.value :
                  type == 'select-one' ? element.selectedIndex :
                  type == 'radio' || type == 'checkbox' ?
                     checked[element.name] : '';
      if (!value || (name == 'email' && !value.match(/^\S+@\S+\.\S+$/))) {
         element.value = '';
         element.style.backgroundColor = '#ffffcc';
         missing++;
      }
      else
         element.style.backgroundColor = '';
   }
   if (missing) {
      alert(message);
      return false;
   }
   return true;
}

function update() {
   var form = document.forms[0];
   var other_checked = 0;
   for (var i = 0; i < form.elements.length; i++) {
      var element = form.elements[i];
      if (element.name == 'topics' &&
          element.value == 'Other' &&
          element.checked) {
         other_checked = 1;
         break;
      }
   }

   var names = [ 'industry', 'align', 'bicc', 'topics' ];
   for (var i = 0; i < names.length; i++) {
      var name = names[i];
      var element = document.getElementById(name);
      var other = document.getElementById('other_' + name);

      if (element && other) {
         if (name == 'topics')
            other.style.visibility = other_checked ? 'visible' : 'hidden';
         else
            other.style.display =
               element.selectedIndex ==
                  element.options.length - 1 ? '' : 'none';
      }
   }
}

function setup() {
   var start = document.getElementById('start');
   if (start) {
      start.focus();
      start.select();
   }
   update();
}
