/**
* 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" );
		 }
	 }
	
}
