/* File:			ssncheck.js
 * Author:			Isaac SH
 * Date:			16 April 2007
 * Description:		Checks whether the Tax ID is valid, shows an error if not,
 *					strips out non-numeric characters from valid sequences
 * -----------------------------------------------------------------------------
 */
 
function check_ssn(ssn) {
	
	var new_ssn_string = ssn.value.replace(/[^0-9]/ig,'');

	if(is_valid_ssn(new_ssn_string)) {
	
		ssn.value = new_ssn_string;
		hide_ssn_error();
		return true;	
		
	}
	
	// If not valid...
	
	ssn.focus();
	
	if(!ssn_error_exists())
		show_ssn_error();

	return true;

}

/* is_valid_ssn(new_ssn)
 * Checks whether a string is a valid tax ID sequence.
 * -----------------------------------------------------------------
 */

function is_valid_ssn(new_ssn_string) {

	var valid_ssn_length = 9;
	var new_ssn_string_length = new_ssn_string.length;

	// Not the right number of digits? Not valid.
	
	if(new_ssn_string_length != valid_ssn_length)
		return false;

	ssn_test_regexp = /^[0-9]+$/;
	var is_valid = ssn_test_regexp.test(new_ssn_string);
	
	return is_valid;

}

/* show_ssn_error()
 * Creates a <p> for the error message display.
 * -----------------------------------------------------------------
 */

function show_ssn_error() {
	
	var ssn_error_td = document.getElementById("ssn_field");
	var ssn_error_p = document.createElement("p");
	var ssn_error_text = document.createTextNode("Please enter a valid 9-digit tax ID.");
	ssn_error_p.appendChild(ssn_error_text);
	ssn_error_p.id = "ssn_error_msg";
	var ssn_td = document.getElementById("ssn_field");
	ssn_td.appendChild(ssn_error_p);
	
}

/* ssn_error_exists()
 * Checks whether the error msg is already displayed. Don't want to
 * show it multiple times!
 * -----------------------------------------------------------------
 */

function ssn_error_exists() {
	
	var ssn_td = document.getElementById("ssn_field");
	
	if(ssn_td.childNodes.length <= 1)
		return false;
		
	return true;
	
}

/* hide_ssn_error()
 * Deletes the error message.
 * -----------------------------------------------------------------
 */

function hide_ssn_error() {
	
	var ssn_td = document.getElementById("ssn_field");
	var ssn_error_msg = document.getElementById("ssn_error_msg");
   if (ssn_error_msg) {
    	ssn_td.removeChild(ssn_error_msg);
   }
	return true;
	
}
