// 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')" - format for credit cards should be the card type (use the card type selector value
// 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;
//alert('-'+$data+'-');
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.";
		}

	}else if($format=='Visa') {
      // Visa: length 16, prefix 4, dashes optional.
      var $re = new RegExp(/^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/);
   	}else if($format=='Mastercard') {
      // Mastercard: length 16, prefix 51-55, dashes optional.
      var $re = new RegExp(/^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/);
   	}else if($format=='Discover') {
      // Discover: length 16, prefix 6011, dashes optional.
      var $re = new RegExp(/^6011-?\d{4}-?\d{4}-?\d{4}$/);
	}else if($format=='Amex') {
      // American Express: length 15, prefix 34 or 37.
      var $re = new RegExp(/^3[4,7]\d{13}$/);
	}else if($format=='Diners') {
      // Diners: length 14, prefix 30, 36, or 38.
      var $re = new RegExp(/^3[0,6,8]\d{12}$/);
   	}
   	if ($re&&!$data.match($re)){
		$msg = "Please enter a valid Credit Card 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].getAttribute('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;
			}
			//alert('Select: '+$select[$i].options[$select[$i].options.selectedIndex].value);
		}
	}
	for($i=0; $input[$i]; $i++){
		//alert('Input: ' + $input[$i].getAttribute('required') + ' - ' +$input[$i].value);
		if($input[$i].getAttribute('required')=='true'&&($input[$i].value==''||$input[$i].value===false||$input[$i].value==null)){
			$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].getAttribute('required')=='true'&&$txtarea[$i].value==''){
			$blank = true;
		}
	}
	//alert('blank: '+$blank);
	if($blank||$msg){
		alert(($msg?$msg:'Please fill in the required fields.'));
		return false;
	}
}