/**
 * form_ops.js - FORM handling functions
 *
 * @version 2 May 2005
 * @author  Joseph Oster, wingo.com
 */

function foSetRadio(radioFld, val) {
  // set 'radioFld' button with value == val
  for (var i=0; i<radioFld.length; i++) radioFld[i].checked = (radioFld[i].value == val);
  }

function foGetRadio(radioFld) {
  // return value of selected 'radioFld' button
  var st = "";
  for (var i=0; i<radioFld.length; i++)
    if (radioFld[i].checked) {
      st = radioFld[i].value;
      break;
      }
  return st;
  }

function foEmail(emailStr) {
  // return true if 'emailStr' has valid email address format
  var emailPat=/^(.+)@(.+)$/
  var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
  var validChars="\[^\\s" + specialChars + "\]"
  var quotedUser="(\"[^\"]*\")"
  var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
  var atom=validChars + '+'
  var word="(" + atom + "|" + quotedUser + ")"
  var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
  var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
  var matchArray=emailStr.match(emailPat)
  if (matchArray==null) return false
  var user=matchArray[1]
  var domain=matchArray[2]
  if (user.match(userPat)==null) return false
  var IPArray=domain.match(ipDomainPat)
  if (IPArray!=null) {
    for (var i=1;i<=4;i++) {
      if (IPArray[i]>255) return false
      }
    return true
    }
  var domainArray=domain.match(domainPat)
  if (domainArray==null) return false
  var atomPat=new RegExp(atom,"g")
  var domArr=domain.match(atomPat)
  var len=domArr.length
  if (domArr[domArr.length-1].length<2 || 
  domArr[domArr.length-1].length>4) return false
  if (len<2) return false
  return true;
  }

function foSelected(pulldown) {
  // return value of selected item
  var st = "";
  for (var i=0; i<pulldown.options.length; i++)
  if (pulldown.options[i].selected) {
    if (pulldown.options[i].value) st = pulldown.options[i].value;
    else st = pulldown.options[i].text;
    break;
    }
  return st;
  }

function foPosInList(pulldown, val) {
  // return position of 'val' in pulldown menu, -1 if not found
  if (val != "")
    for (var i=0; i<pulldown.options.length; i++) {
      var opVal = pulldown.options[i].value;
      if (opVal == "") opVal = pulldown.options[i].text;
      if (opVal == val) {
        return i;
        break;
        }
      }
  return -1;
  }

function foSetSelectVal(pulldown, val) {
  // set "SELECTED" for item in pulldown menu with 'value==val'
  var p = foPosInList(pulldown,val);
  if (p != -1) pulldown.options[p].selected = true;
  }

var foDigits = "0123456789";

function foNumFilter(txt, okDecimal) {
	var newSt = "";
	for (var i=0; i<txt.length; i++) {
		var c = txt.charAt(i);
    if (foDigits.indexOf(c) != -1) newSt += c;
    else if (okDecimal && (c == ".")) {
      okDecimal = false;
      newSt += c;
      }
		}
	return newSt;
	}

function foFmtPhone(formField) {
  formField.value = trimString(formField.value);
  var digits = foNumFilter(formField.value);
  if (digits.length == 10) formField.value = "(" + digits.substr(0,3) + ") " + digits.substr(3,3) + "-" + digits.substr(6,4);
  }

function foFmtZipcode(formField) {
  formField.value = trimString(formField.value);
  var digits = foNumFilter(formField.value);
  if (digits.length == 9) formField.value = digits.substr(0,5) + "-" + digits.substr(5,4);
  }

function foFmtSSN(formField) {
  formField.value = trimString(formField.value);
  var digits = foNumFilter(formField.value);
  if (digits.length == 9) formField.value = digits.substr(0,3) + "-" + digits.substr(3,2) + "-" + digits.substr(5,4);
  }
