// Javascript form validation routines.

var nbsp = 160;
var node_text = 3;
var emptyString = /^\s*$/
var glb_vfld;


// Trim leading/trailing whitespace off string

function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '')
};


// Delayed focus setting to get around IE bug

function setFocusDelayed(vfld)
{
  glb_vfld.focus()
}

function setfocus(vfld)
{
  glb_vfld = vfld;
  setTimeout( 'setFocusDelayed()', 100 );
}


// Display warn/error message in HTML element
// commonCheck routine must have previously been called

function msg(fld,
             msgtype,
             message)
{
  var dispmessage;
  if (emptyString.test(message)) 
    dispmessage = String.fromCharCode(nbsp);    
  else  
    dispmessage = message;

  var elem = document.getElementById(fld);
  elem.firstChild.nodeValue = dispmessage;  
  
  elem.className = msgtype;
};


// COMMON VALIDATION AND BROWSER CHECK

var proceed = 2;  

function commonCheck    (vfld,
                         ifld,
                         reqd)
{
  if (!document.getElementById) 
    return true;
  var elem = document.getElementById(ifld);
  if (!elem.firstChild)
    return true;
  if (elem.firstChild.nodeType != node_text)
    return true; 

  if (emptyString.test(vfld.value)) {
    if (reqd) {
      msg (ifld, "error", " *required");
      setfocus(vfld);
      return false;
    }
    else {
      msg (ifld, "warn", "");
      return true;  
    }
  }
  return proceed;
}


// VALIDATE USERNAME FIELD

function validateUname(vfld,
                         ifld )
{
  var stat = commonCheck (vfld, ifld, true);
  if (stat != proceed) return stat;

  var tfld = trim(vfld.value);
  var numdigits = 0;
  for (var j=0; j<tfld.length; j++)
    if (tfld.charAt(j)>='a' && tfld.charAt(j)<='z' || tfld.charAt(j)>='A' && tfld.charAt(j)<='Z' || tfld.charAt(j)>='0' && tfld.charAt(j)<='9') numdigits++;

  if (numdigits<3) {
    msg (ifld, "error", " *only " + numdigits + " characters - too short - 3-14 required");
    setfocus(vfld);
    return false;
  } else  if (numdigits>14) {
    msg (ifld, "error", " *" + numdigits + " characters - too long - 3-14 required");
    setfocus(vfld);
    return false;
  } else { 
    msg (ifld, "warn", "");
    return true;
 }
};


// VALIDATE PASSWORD FIELD

function validatePasswd(vfld,
                         ifld )
{
  var stat = commonCheck (vfld, ifld, true);
  if (stat != proceed) return stat;

  var tfld = trim(vfld.value);
  var numdigits = 0;
  for (var j=0; j<tfld.length; j++)
    if (tfld.charAt(j)>='a' && tfld.charAt(j)<='z' || tfld.charAt(j)>='A' && tfld.charAt(j)<='Z' || tfld.charAt(j)>='0' && tfld.charAt(j)<='9') numdigits++;

  if (numdigits<7) {
    msg (ifld, "error", " *only " + numdigits + " characters - too short - 7-14 required");
    setfocus(vfld);
    return false;
  } else  if (numdigits>14) {
    msg (ifld, "error", " *" + numdigits + " characters - too long - 7-14 required");
    setfocus(vfld);
    return false;
  } else { 
    msg (ifld, "warn", "");
    return true;
 }
};


// VALIDATE PASSWORD_AGAIN FIELD

function validatePasswd_again(vfld,
                         ifld )
{
  var stat = commonCheck (vfld, ifld, true);
  if (stat != proceed) return stat;

  pw1 = orderform.passwd.value;
  pw2 = orderform.passwd_again.value;
  if (pw1 != pw2) {
    msg (ifld, "error", " *passwords must match");
    setfocus(vfld);
    return false;
  } else {

  msg (ifld, "warn", "");  
  return true;
 }
};


// VALIDATE TERMS OF USE AGREEMENT CHECKBOX

function checkCheckBox(f){
if (f.agree.checked == false )
{
alert('You must read and agree to our Terms Of Service\nAgreement before submitting this form.');
return false;
}else
return true;
}


//ENABLE SUBMIT BUTTON

function submitform()
{
 if(document.orderform.onsubmit())
 {
 document.orderform.submit();
 }
}