/*************************************************** fValidate Copyright (c) 2000-2003 by Peter Bailey www.peterbailey.net/fValidate/ fValidate.extended.js Included Validators ------------------- alnum ssn zip phone This file is only part of a larger validation library and will not function autonomously. Created at a tab-spacing of four (4) ****************************************************/ fValidate.prototype.alnum = function( minLen, tCase, numbers, spaces, puncs ) { if ( this.typeMismatch( 'text' ) ) return; tCase = this.setArg( tCase, "a" ); //alert( [minLen,tCase,numbers,spaces,puncs] ); numbers = ( numbers == "true" || numbers == "1" ); spaces = ( spaces == "true" || spaces == "1" ); //alert( [minLen,tCase,numbers,spaces,puncs] ); var okChars = "", arrE = ['None','Any','No','No','Any']; if ( minLen != '*' ) { minLen = parseInt( minLen, 10 ); arrE[0] = minLen; } else { minLen = 0; } switch( tCase.toUpperCase() ) { case 'U': okChars += 'A-Z'; arrE[1] = 'UPPER'; break; case 'L': okChars += 'a-z'; arrE[1] = 'lower'; break; case 'C': okChars += 'A-Z][a-z'; arrE[1] = 'Intial capital'; minLen--; break; default: okChars += 'a-zA-Z'; break; } if ( numbers == true ) { okChars += '0-9'; arrE[2] = 'Yes'; } if ( spaces == true ) { okChars += ' '; arrE[3] = 'Yes'; } if ( puncs == "any" ) { arrE[4] = "Any"; } else if ( puncs == "none" ) { arrE[4] = "None"; } else { puncs = puncs.replace( /pipe/g, "|" ); okChars += puncs; arrE[4] = puncs; //.toPattern().replace( /\\/g, "" ); } var length = ( minLen != "*" )? "{" + minLen + ",}": "+"; var regex = ( puncs == "any" ) ? new RegExp( "^([" + okChars + "]|[^a-zA-Z0-9\\s])" + length + "$" ): new RegExp( "^[" + okChars + "]" + length + "$" ); if ( !regex.test( this.elem.value ) ) { this.throwError( [this.elem.value, this.elem.fName, arrE[0], arrE[1], arrE[2], arrE[3], arrE[4]] ); } } fValidate.prototype.ssn = function() { if ( this.typeMismatch( 'text' ) ) return; if ( !( /^\d{3}\-\d{2}\-\d{4}$/.test( this.elem.value ) ) ) this.throwError(); } fValidate.prototype.zip = function( sep ) { if ( this.typeMismatch( 'text' ) ) return; sep = this.setArg( sep, "- " ); var regex = new RegExp( "^[0-9]{5}(|[" + sep.toPattern() + "][0-9]{4})?$" ); if ( ! regex.test( this.elem.value ) ) { this.throwError(); } } fValidate.prototype.phone = function( format ) { if ( this.typeMismatch( 'text' ) ) return; format = this.setArg( format, 0 ); var patterns = [ /^(\(?\d\d\d\)?)?[ -]?\d\d\d[ -]?\d\d\d\d$/, // loose /^(\(\d\d\d\) )?\d\d\d[ -]\d\d\d\d$/ // strict ]; if ( !patterns[format].test( this.elem.value ) ) { if ( format == 1 ) { this.throwError(); } else { this.throwError( [], 1 ); } } } // EOF