// VARIABLE DECLARATIONS
var defaultEmptyOK = false
var decimalPointDelimiter = "."
var whitespace = " \t\n\r";
var USStateCodeDelimiter = "|";
var USStateCodes = "AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY|AE|AA|AP"

function warnInvalid (theField, s)
{   theField.focus()
		theField.select()
		alert(s)
		return false
}		

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}


function isWhitespace (s)

{   var i;

		if (isEmpty(s)) return true;

		for (i = 0; i < s.length; i++)
		{
				var c = s.charAt(i);

				if (whitespace.indexOf(c) == -1) return false;
		}

		return true;
}		

function isStateCode(s)
{   if (isEmpty(s))
       if (isStateCode.arguments.length == 1) return defaultEmptyOK;
       else return (isStateCode.arguments[1] == true);
    return ( (USStateCodes.indexOf(s) != -1) &&
             (s.indexOf(USStateCodeDelimiter) == -1) )
}

function isEmail (s)
{
    // Fullstop cannot be the first character
    var fullstop = s.indexOf('.');
    if (fullstop == 0)
    {
      return false;
    }

    // Double fullstop not allowed
    var doubleFullstop = s.indexOf('..');
    if (doubleFullstop != -1)
    {
      return false;
    }

		if (isEmpty(s))
			if (isEmail.arguments.length == 1) return defaultEmptyOK;
			else return (isEmail.arguments[1] == true);

		if (isWhitespace(s)) return false;

		var i = 1;
		var sLength = s.length;

		while ((i < sLength) && (s.charAt(i) != "@"))
		{ i++
		}

		if ((i >= sLength) || (s.charAt(i) != "@")) return false;
		else i += 2;

		while ((i < sLength) && (s.charAt(i) != "."))
		{ i++
		}

		if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
		else return true;
}		

function checkString (theField, s, emptyOK)
{
		if (checkString.arguments.length == 2) emptyOK = defaultEmptyOK;
		if ((emptyOK == true) && (isEmpty(theField.value))) return true;
		if (isWhitespace(theField.value))
			return warnEmpty (theField, s);
		else return true;
}

function checkLength (theField)
{
		var s = theField.value
		var sLength = s.length;
		if (sLength < 5)
			return warnLength (theField);
		else return true;
}

function checkLengthNoMorethen80 (theField)
{
		var s = theField.value
		var sLength = s.length;
		if (sLength > 80)
			return warnLengthDelComments (theField);
		else return true;
}

function checkSelect (theField, s)
{
    if (theField.options[theField.selectedIndex].value == "")
       return warnEmpty (theField, s);
    else return true;
}

function checkRadio (theField, s)
{
    for(i=0; i < theField.length; i++)
    {
			if (theField[i].checked) return true;
    }
   
    return warnRadio (s);
}


function checkCardCID (theField, s)
{
		if ( isNaN(parseInt(theField.value)) == true || parseInt(theField.value) < 0 )
		{
			return warnEmpty (theField, s );
		}else return true;
}


function checkIssueNumber (theRadio, theField, s)
{
		if (theField.value != "")
		{ 
				if ( isNaN(parseInt(theField.value)) == true || parseInt(theField.value) < 0 )
				{
					return warnEmpty (theField, s );
				}else return true;
		}else return true;
}

function stripCharsInBag (s, bag)
{   var i;
    var returnString = "";

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }

    return returnString;
}

function checkPassword (passwordField, confField, s)
{
  if (passwordField.value != confField.value) return warnInvalid (passwordField, s);
  return true;
}

function checkStateCode (theCountryField, theField, s,emptyOK)
{   if (checkStateCode.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else
    {  
       if (theCountryField.value == 'US')
       {    
          theField.value = theField.value.toUpperCase();
       }
       if (!isStateCode(theField.value, false))
          if (theCountryField.value == 'US')
          {
            return warnInvalid (theField, s);
          }else return true;
       else return true;
    }
}

