/**
* 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;
    
    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: (03) 8851 1009");
    	 field.focus();
    	 field.select();
    	 return false;
    	}
     }
    
    if( ndigits == 8 && areaCode != null )
    	{
    	digits = areaCode + digits;
    	ndigits += 2;
    	}
    
    if( digits.length < 10)
    {
     alert("Invalid phone number format\nMust be 10 digits\nExample: (03) 8851 1009");
     field.focus();
     field.select();
     return false;
    }
    
    out = "(" + digits.substring(0,2) + ") " + digits.substring(2,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" );
		 }
	 }
	
}
