/**
* These client side form validation methods can be called via the onBlur or onChange attribute of a form element.
* They cannot be used as validators in an onSubmit() handler.
*/

//=================================================================================
// Put a Postal/Zip code into standard form
// Postal code is ANA-NAN
// Zip code is 5 digits + optional 4 more digits
function formatZIPCode(field)
{
var i, nd, out, c;
var out = ""
var nd = 0
var ndigits = 0;
var nalpha = 0;

var str = field.value;
str = str.toUpperCase();
nd = str.length;

// Count digits and letters
for (i = 0; i < nd; i++)
 {
    c = str.charAt(i);
    if (c >= "0" && c <= "9")  
      ndigits++;
    else if (c >= "A" && c <= "Z") 
      nalpha++;
    else  if (c != "-" && c != " ") {
           alert("Invalid ZIP/Postal Code:\n" + str);
           field.focus();
           field.select();
           return;
       }
 }

if ((ndigits != 3 && nalpha != 0) || (nalpha != 0 && nalpha != 3))
{
 alert("Invalid ZIP/Postal code\n");
 field.focus();
 field.select();
 return;
}

if (ndigits > 5 && ndigits != 9)
{
 alert("Invalid ZIP/Postal code.\n");
 field.focus();
 field.select();
 return;
}

var nc = 0;
for (i = 0; i < nd; i++)
 {
 c = str.charAt(i);
 if (!((c >= "0" && c <= "9") || (c >="A" && c <="Z"))) continue;
 out = out+c;
 nc++;
 if (nc == 3 && nalpha || nc == 5 && ndigits > 5)
	{
	out = out + "-";
	nc++;
	}
 }
 field.value = out;

}

//=================================================================================
// Put a phone number into standard format. This routine
// allows phone number field to be empty, or it must
// contain exactly 10 digits. Allowed characters are
// 0,1,..9,-(). Non-digits are removed and the result
// is formatted as "nnn-nnn-nnnn"
// call formatPhoneNumber(elementReference) or
// formatPhoneNumber(elementReference, defaultAreaCode)
//
function formatPhoneNumber(field)
{
var i, nd, out, c, digits;
var argv = formatPhoneNumber.arguments;
var argc = argv.length;
var areaCode = null;

// For formatted phone numbers, remove the following line
 return;
 
 
if (argc > 1)
{
	areaCode = argv[1];
}

out = "";
nd = 0;
ndigits = 0;
digits = "";

if (field.value.length == 0)
    return;
    
for (i = 0; i < field.value.length; i++)
 {
 c = field.value.charAt(i);
 if (c >= "0" && c <= "9")
 {
 	digits += c;
	ndigits++;
 }
 else if (c != '(' && c != ')' && c != '-' && c != ' ' && "ext".indexOf(c) < 0)
	{
	 alert("Invalid phone number format\nMust be 10 digits\nExample: 519-555-1234");
	 field.focus();
	 field.select();
	 return false;
	}
 }

if (ndigits == 7 && areaCode != null)
	{
	digits = areaCode + digits;
	ndigits += 3;
	}

if (digits.length < 10)
{
 alert("Invalid phone number format\nMust be 10 digits\nExample: 519-555-1234");
 field.focus();
 field.select();
 return false;
}

out = "(" + digits.substring(0,3) + ") " + digits.substring(3,6) + "-" + digits.substring(6,10);
if (digits.length > 10)
	out += " x" + digits.substring(10, digits.length);
 field.value = out;
 return true;
}

//=================================================================================
/**
* Ensure input contains nothing but digits
*/
function formatDigits(name, elem)
{
	var i, nd, out, c, digits;
	var str = elem.value;
	
	out = "";
	nd = 0;
	ndigits = 0;
	digits = "";
	
	for (i = 0; i < str.length; i++)
	 {
		 c = str.charAt(i);
		 if (c < '0' || c > '9')
		 {
		 	alert(elem.name + " must contain digits only");
		 }
	 }
	
}
