
// returns the value of selected list/radio item
function getSelected(obj) {
   var v;
   var n;
   if (typeof obj == "object") {
      for(n = 0; n < obj.length; n++ ) {
         if (obj[n].checked) {
            v = obj[n].value;
            break;
         }
      }
   }
   return v;
}

function _getElementById(name) {
   var obj=null;
   if (document.getElementById) { 
      // IE5 and up / NS6.x
      obj=document.getElementById(name);
   } else if (document.layers) {
       // NS 4.x document.layers['myDiv'].visiblity = 'visible';
       obj = document.layers[name];
      // return document.layers[name];
   } else if (document.all) { 
      // IE 4 document.all['myDiv'].style.visibility = 'visible';
      obj = document.all[name];
      // return typeof(obj)=="undefined" ? false : obj;
   } else {
      return false;
   }
   return (obj==null || obj=="undefined" || typeof(obj) != "object" ? false : obj);
}

function getFormElement(form, field) {
   var obj=false;
   if (document.getElementById) {
      obj = eval("document."+form.name+"."+field);
      if (obj != "undefined" && typeof(obj) == 'object') {
         return obj;
      }
   }
   // alert("scanning form elements for " + field);
   for (var i = 0; i < form.elements.length; i++) {
      if (form.elements[i].id == field) {
         return (form.elements[i]);
      }
   }
   return false;
}

function FormValidation(req) {

   var me = this;
   this.required = req;
   this.error_color = "red";
   this.normal_color = "black";

   this.setColors = function(normal,error) {
      me.normal_color=normal;
      me.error_color=error;
   }

   // Highlight the fields that failed the validation
   this.highlightFailed = function(form, fields) {
      for (var i=0; i < fields.length; i++) {
         var objlbl = _getElementById(fields[i] + "_lbl");
         if (objlbl != false) { objlbl.style.color=me.error_color; }
      }
   }
         
   this.validate = function(form) {
      for (var i = 0; i < me.required.length; i++) {
         var pos = me.required[i].search(":");
         if (pos == -1) continue;
         var field = me.required[i].substring(0,pos);
         var msg   = me.required[i].substr(pos+1);
         var obj = getFormElement(form, field);
         if (typeof(obj) != false) {
            var objlbl = _getElementById(field + "_lbl");

            // if (objlbl==false) { alert("Field ["+field+"_lbl] Not Found In Form"); }
            if ( (obj.type == 'select-one' && obj.selectedIndex) || 
                 (obj.type == 'checkbox' && obj.checked ) ||
                 ((obj.type == 'text' || obj.type=='password') && obj.value)
               ) {
               if (objlbl != false) { objlbl.style.color=me.normal_color; }
               continue;
            }
            if (objlbl != false) { objlbl.style.color=me.error_color; }
            alert(msg);
            if (typeof(obj)=='object') {obj.focus(); } else { alert("unknown field type for " + field); }
            return (false);
         }
      }
      return (true);
   }
}
