// JavaScript validation routines
// Web Techniques


var validated=true;  // global


// call this from onchange
function valid(fld,errm) // varying number of arguments
  {
  var i;
  validated=true;
// scan regular expressions
  for (i=2;i<valid.arguments.length;i++) 
    {
    var rx;
    rx=new RegExp(valid.arguments[i]);
    if (rx.exec(fld.value)!=null ) 
       return true;  // ok
    }
// no matches...
  alert(errm);
  fld.focus();   // put focus back
  validated=false;  // tell onsubmit if necessary
  return false;
  }


// This scans all the onchanged routines
function onsubmitV(frm)
  {
  // force validation of all fields
  var l;
  var i;
  validated=true;
  for (i=0; i < frm.elements.length && validated; i++)
  	{
    if (frm.elements[i].onchange!=null)
      frm.elements[i].onchange();  // fake change
    }
  return validated;
  }


function validUSphone(fld)
  {
  rv=valid(fld,"Please enter your phone number with area code",
    "^ *\\(? *([0-9][0-9][0-9]) *\\)? *[-.]? *([0-9][0-9][0-9]) *[-.]? *([0-9][0-9][0-9][0-9]) *$");
  if (rv)
    fld.value="(" + RegExp.$1 + ") " + RegExp.$2 + "-" + RegExp.$3;
  return rv;
  }


function validUSphoneID(fld)
  {
  rv=valid(fld,"Please enter your U.S. phone number with area code in the " + fld.name + " field",
    "^ *\\(? *([0-9][0-9][0-9]) *\\)? *[-.]? *([0-9][0-9][0-9]) *[-.]? *([0-9][0-9][0-9][0-9]) *$");
  if (rv)
    fld.value="(" + RegExp.$1 + ") " + RegExp.$2 + "-" + RegExp.$3;
  return rv;
  }
