// JavaScript Document Authored by Michael Schaafsma

// This function is to validate data
// The setup for this is to have the onChange="valid_data('controlpath', 'format')"
// Valid formats are auto, url, phone, email, zip, pass (match passwords), pwd (password standard), ssn (social security number), ccn(credit card number)
function valid_data($cpath, $format){
var $cntrl = eval('document.' + $cpath);
var $data = $cntrl.value;
var $msg = null;
	if($data==''){
		return;
	}
	if(!$format){  // no format entered, check the control's name
		var $name = new String();
		$name = $cntrl.name;
		if($name.indexOf('phone')!=-1||$name.indexOf('fax')!=-1){
			$format = 'phone';
		} else if($name.indexOf('email')!=-1){
			$format = 'email';
		} else if($name.indexOf('zip')!=-1){
			$format = 'zip';
		} else if($name.indexOf('ssn')!=-1){
			$format = 'ssn';
		} else if($name.indexOf('ccn')!=-1){
			$format = 'ccn';
		} else if($name.indexOf('url')!=-1){
			$format = 'url';
		}
	}
	
	if($format=='phone'){  // matches 2315552424 or (231)555-2424 or 231-555-2424 or 231.555.2424
 		if($data.match(/^\D\d\d\d\D*\d\d\d\D\d\d\d\d$/)==null&&$data.match(/^\d\d\d\D\d\d\d\D\d\d\d\d$/)==null&&$data.match(/^\d\d\d\d\d\d\d\d\d\d$/)==null){
  			$msg = 'Please enter a valid phone number including area code.';
			$cntrl.value = "";
		} else {
  			$data = $data.replace(/\D/g,"");
			$data = $data.substring(0,3)+"-"+$data.substring(3,6)+"-"+$data.substring(6,10);
 			$cntrl.value = $data;
		}
	}
 
	else if($format=='email'){ // matches anything@anydomain.any
 		if($data.match(/^\w+[@]\w+[.]\D+$/)==null){
  			$msg = "Please enter a valid e-mail address.";
			$cntrl.value = "";}}
			
	else if($format=='url'){ // matches anything@anydomain.any
 		if($data.match(/^[www.]\D+[.]\D\D\D$/)==null&&$data.match(/^[www.]\D+[.]\D\D\D[/]\D+$/)==null&&$data.match(/^[www.]\D+[.]\D\D$/)==null&&$data.match(/^[www.]\D+[.]\D\D[/]\D+$/)==null){
  			$msg = "Please enter a valid e-mail address as 'www.whatever.com'.";
			$cntrl.value = "www.";}}
 
	else if($format=='zip'){  // matches 49444 or 49444-1234
 		if($data.match(/^\d\d\d\d\d$/)==null&&$data.match(/^\d\d\d\d\d-\d\d\d\d$/)==null){
  			$msg = 'Please enter a valid zip code.';
		}
	}
 
	else if($format=='pass'){ // checks if passwords match.
		var $cntrl2 = eval($cpath+'_ignore');
		var $data2 = $cntrl2.value;
		if($data!=$data2||$data==''){
			$msg = 'Passwords do not match.';
			$cntrl.value = '';
			$cntrl2.value = '';
		}
	}
	else if($format=='pwd'){ // checks if passwords meet password standards of minimum of 8 characters, and at least one number, lowercase letter, and upper case letter.
		if($cntrl.value.length < 6) {
			$msg = "Password must contain at least six characters!";
		}
		if($data.match(/[0-9]/)!=null) {
			$msg += "  Password must contain at least one number (0-9)!";
		} 
		if($data.match(/[a-z]/)==null) { 
			$msg += "  Password must contain at least one lowercase letter (a-z)!";
		}
		if($data.match(/[A-Z]/)!=null) { 
			$msg += "  Password must contain at least one uppercase letter (A-Z)!";
		}
	}

	else if($format=='ssn'){  // social security numbers xxx-xx-xxxx or xxxxxxxxx
 		if($data.match(/^\d\d\d-\d\d-\d\d\d\d$/)==null&&$data.match(/^\d\d\d\d\d\d\d\d\d$/)==null){
  			$msg = "Please enter a valid Social Security number.";
		}
	}
 
	if($msg){
		alert($msg);
 		$cntrl.focus();
 	}
}
 
// This function makes sure that required fields are filled in on the Submit.
// It requires that the function be put into the onSubmit in the form, and that all
//    required fields have an attribute required="true" in them.
function valid_submit($formname){
	var $doc = eval("document."+$formname);
	var $pwd_arr = new Array('password','pwd','code_key');
	var $in_name = new String();
	var $blank = false;
	var $msg = false;
	var $input = $doc.getElementsByTagName('input');
	var $select = $doc.getElementsByTagName('select');
	var $txtarea = $doc.getElementsByTagName('textarea');
	for($i=0; $select[$i]; $i++){
		if($select[$i].required=='true'){
			if($select[$i].multiple&&$select[$i].options.selectedIndex==-1){
				$blank = true;
			}else if($select[$i].options[$select[$i].options.selectedIndex].value==''){
				$blank = true;
			}
		}
	}
	for($i=0; $input[$i]; $i++){
		if($input[$i].required=='true'&&$input[$i].value==''){
			$blank = true;
		}
		$in_name = $input[$i].name;
		for($n=0; $pwd_arr[$n]; $n++){
			if($in_name.indexOf($pwd_arr[$n])!=-1&&$in_name.indexOf('_ignore')==-1){
				var $pwd_ignr = eval('document.'+$formname+'.'+$in_name+'_ignore');
				if($pwd_ignr.value!=$input[$i].value){
					$msg = 'Passwords do not match.';
					$input[$i].value = '';
					$pwd_ignr.value = '';
					$input[$i].focus();
				}
			}
		}
	}
	for($i=0; $txtarea[$i]; $i++){
		if($txtarea[$i].required=='true'&&$txtarea[$i].value==''){
			$blank = true;
		}
	}
	if($blank||$msg){
		alert(($msg?$msg:'Please fill in the required fields.'));
		return false;
	}else{
		return true;
	}
}