//
// validation utilities
//
function trim(s) {
  return s.replace(/^\s+|\s+|\s+$/g, '');
}
function validAccount(fld) {
    var valid = 0 ;
    var illegalChars = /\W/ ;                      // Digits only
    var pattern = /\d{13,16}/ ;                        // Digits only
    var tfld = trim(fld.value) ;
	if (tfld.length < 1) {
        fld.style.background = 'yellow'; 
    } else if (illegalChars.test(tfld.value)) {
        fld.style.background = 'yellow'; 
    } else if (fld.value.match(pattern)) {
        fld.style.background = 'white';
		valid = 1 ;
	} else {
        fld.style.background = 'yellow'; 
    } 
    return valid;
}
function validDigits(fld,cnt) {
    var valid = 0 ;
    var illegalChars = /\W/ ;                      // Digits only
    var pattern = /\d/ ;                        // Digits only
    var tfld = trim(fld.value) ;
	if (tfld.length < 1) {
        fld.style.background = 'yellow'; 
    } else if (illegalChars.test(tfld.value)) {
        fld.style.background = 'yellow'; 
    } else if  ((fld.value.match(pattern)) && (fld.value.length == cnt)) {
        fld.style.background = 'white';
		valid = 1 ;
	} else {
        fld.style.background = 'yellow'; 
    } 
    return valid;
}
function validAmount(fld) {
    var valid = 0 ;
    var illegalChars = /\W/ ;                    // not normal character set
	var pattern = /^\d{0,15}\.\d{2}$/; // whole numbers, decimals
    var tfld = trim(fld.value) ;
	if (tfld.length < 1) {
        fld.style.background = 'yellow'; 
    } else if (illegalChars.test(tfld.value)) {
        fld.style.background = 'yellow'; 
    } else if (fld.value.match(pattern)) {
        fld.style.background = 'white';
		valid = 1 ;
    } else {
        fld.style.background = 'yellow'; 
    }
    return valid;    
}
function validZip(fld) {
    var valid = 0 ;
    var illegalChars = /\W/ ;                  // normal character set
	var pattern = /^\d{5}$|^\d{5}-\d{4}$/; // numbers and dash
    var tfld = trim(fld.value) ;
	if (tfld.length < 1) {
        fld.style.background = 'yellow'; 
    } else if (illegalChars.test(tfld.value)) {
        fld.style.background = 'yellow'; 
    } else if (fld.value.match(pattern)) {
        fld.style.background = 'white';
		valid = 1 ;
    } else {
        fld.style.background = 'yellow';
    } 
    return valid;    
}
function validName(fld) {
    var valid = 0 ;
    var illegalChars = /\W/ ; // allow letters, numbers, and underscores
    var tfld = trim(fld.value) ;

	if (tfld.length < 1) {
        fld.style.background = 'yellow'; 
    } else if (illegalChars.test(tfld)) {
        fld.style.background = 'yellow'; 
    } else {
        fld.style.background = 'white';
		valid = 1 ;
    } 
    return valid;
}
function validEmail(fld) {
    var valid = 0;
    var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
    
    if (fld.value == "") {
        fld.style.background = 'Yellow';
    } else if (!emailFilter.test(tfld)) {              //test email for illegal characters
        fld.style.background = 'Yellow';
    } else if (fld.value.match(illegalChars)) {
        fld.style.background = 'Yellow';
    } else {
        fld.style.background = 'White';
		valid = 1 ;
    }
    return valid ;
}
function validPhone(fld) {
    var valid = 0 ;
	var notnumber = /\D/ ;
    var stripped = fld.value.replace(/[xX\(\)\.\-\ ]/g, ''); 
    if (fld.value == "") {
        fld.style.background = 'Yellow';
	} else if (notnumber.test(stripped)) {
        fld.style.background = 'Yellow';	
	} else if (isNaN(parseInt(stripped))) {
        fld.style.background = 'Yellow';
    } else if (!(stripped.length >= 10)) {
        fld.style.background = 'Yellow';
    } else  {
        fld.style.background = 'White';
        valid = 1 ;
	}
    return valid ;

}	

