var digitsInSID = 9

var reAllowed = /[\'A-Za-z,.-]/
var reInteger = /\d/
var reDoubleWhitespace = /\s\s/
var reSpace = /\s/

var mPrefix = "You did not enter a value for "
var mSuffix = ". This is a required field. Please enter it now."

var iLine1 = "ERROR:\tPlease double check that you entered LINE 1 exactly as it appears on your UCLA Bruin Card.\n\tNote that consecutive spaces are not allowed."
var iLine2 = "ERROR:\tPlease double check that you entered LINE 2 exactly as it appears on your UCLA Bruin Card.\n\tNote that consecutive spaces are not allowed."
var iSID = "ERROR:\tPlease enter a valid 9 digit UCLA ID number."

var defaultEmptyOK = false

function isAllowed (s)
{
    if (isEmpty(s)) 
       if (isAllowed.arguments.length == 1) return defaultEmptyOK;
       else return (isAllowed.arguments[1] == true);
    else
    {
       for (var i=0; i<s.length; i++)
       {
         if (!reAllowed.test(s[i]) && !reSpace.test(s[i]))
         return false;
       }
       return true;
    }
}

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function isInteger (s)
{
    if (isEmpty(s))
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);
    else
    {
       for (var i=0; i<s.length; i++)
       {
         if (!reInteger.test(s[i]))
         return false;
       }
       return true;
    }
}

function isSID (s)
{  if (isEmpty(s)) 
       if (isSID.arguments.length == 1) return defaultEmptyOK;
       else return (isSID.arguments[1] == true);
   return ((s.length == digitsInSID) && isInteger(s))
}

function isDoubleWhitespace (s)
{
    return (reDoubleWhitespace.test(s));
}

function warnEmpty (theField, s)
{   theField.focus()
    alert(mPrefix + s + mSuffix)
    return false
}

function warnInvalid (theField, s)
{   theField.focus()
    theField.select()
    alert(s)
    return false
}

function chkLine1 (theField)
{
    if (isEmpty(theField.value))
       return warnEmpty (theField, "Line1");
    if (isDoubleWhitespace(theField.value) || !isAllowed(theField.value))
       return warnInvalid (theField, iLine1);
    else return true;
}

function chkLine2 (theField)
{
    if (isEmpty(theField.value))
       return warnEmpty (theField, "Line2");
    if (isDoubleWhitespace(theField.value) || !isAllowed (theField.value))
       return warnInvalid (theField, iLine2);
    else return true;
}

function chkSID (theField, emptyOK)
{
    if (chkSID.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else
    { 
      if (!isSID(theField.value, false)) 
         return warnInvalid (theField, iSID);
      else 
         return true;
    }
}
