/* Joshua Miller's Javascript Function Library Version 1.6 - 09/18/2001 (C)Copyright Joshua Miller 2001. All Rights Reserved. josh.miller@eagletgi.com Legal Information: This library is Linkware - please send a link to the site the scripts are being used on so I can see how others are using the scripts. No support is implied or guaranteed and the author is not liable for damage or loss of time, money or resources as a result of the direct or indirect use of these scripts. */ // ======================================================== // Macromedia Common Functions (Dreamweaver UD4) // ======================================================== // All Macromedia Functions (C)Copyright Macromedia, Inc. // http://www.macromedia.com function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i= 1.0){ checkdigit++; } doubledigit = false; } else{ checkdigit += tempdigit; doubledigit = true; } } // Reworked the return statement to match the other script formats. if((checkdigit % 10)!=0){ error=1; } if(error>0){ alert("Invalid CC Number, please check your entry and try again."); return false; }else{ return true; } } function jm_valid8CCExpDate(thisObj) { //v1.0 | CCExp Date Validation if ((thisObj.value.indexOf('/') || thisObj.value.indexOf('-')) && thisObj.value.length>=4){ var today= new Date; var error=0; if(thisObj.value.indexOf('/')>0){ var dateParts=thisObj.value.split('/'); }else if(thisObj.value.indexOf('-')>0){ var dateParts=thisObj.value.split('-'); }else{ error=2; } if(dateParts && dateParts.length>2){ var mm=dateParts[0]; var dd=dateParts[1]; var yy=dateParts[2]; }else{ var mm=dateParts[0]; var dd=01; var yy=dateParts[1]; } if(isNaN(parseFloat(mm)) || isNaN(parseFloat(dd)) || isNaN(parseFloat(yy))){ error=1; } if(yy.length==3){error=1;} if(yy.length==2){yy="20"+yy;} if(mm.length==1){mm="0"+mm;} if(dd.length==1){dd="0"+dd;} if((yy==today.getYear() && mm=4){ var today= new Date; var error=0; if(thisObj.value.indexOf('/')>0){ var dateParts=thisObj.value.split('/'); }else if(thisObj.value.indexOf('-')>0){ var dateParts=thisObj.value.split('-'); }else{ error=2; } if(dateParts && dateParts.length>2){ var mm=dateParts[0]; var dd=dateParts[1]; var yy=dateParts[2]; }else{ var mm=dateParts[0]; var dd=01; var yy=dateParts[1]; } if(isNaN(parseFloat(mm)) || isNaN(parseFloat(dd)) || isNaN(parseFloat(yy))){ error=1; } if(yy.length==3){error=1;} }else{ error=2; } if(error==2){ alert("Invalid Date Format!\nDate Must Contain '/' or '-' to separate values.\nPlease re-enter."); return false; }else if(error==1){ alert("This Date is Invalid. Please check the date you have entered."); return false; }else{ return true; } } function jm_valid8Num(thisObj){ //v1.0 | Positive Number Validation if(isNaN(parseFloat(thisObj.value))){ alert("You must enter a number."); return false; }else{ if(parseFloat(thisObj.value) <= 0){ alert("You must enter a positive number."); return false; }else{ return true; } } } function jm_valid8Zip(thisObj){ //v1.0 | Zipcode Validation var error=0; if(thisObj.value.indexOf('-')>0){ var zipParts=thisObj.value.split('-'); if(isNaN(parseFloat(zipParts[0])) || isNaN(parseFloat(zipParts[1])) || zipParts[1].length!=4){ error=1; } }else{ if(isNaN(parseFloat(thisObj.value))){ error=1; }else{ if(thisObj.value.length!=5){ error=1; } } } if(error>0){ alert("Invalid Zipcode!\nA valid Zipcode is formatted: 000000 or 00000-0000.\nPlease re-enter your zipcode."); return false; }else{ return true; } } function jm_valid8Pass(thisObj,formObj){ //v1.0 | Re-Enter Password Verification var error=0; var i=""; for(i=0;i0){ if(evalObj.value==thisObj.value && thisObj.value!=''){ error=0; }else{ error=1; } } } if(error>0){ alert("Your passwords do not match. Please re-enter your passwords."); return false; }else{ return true; } } function jm_valid8Chars(thisObj){ //v1.0 | Disallow Special Characters if(/[$\\@\\\#%\^\&\*\(\)\[\]\+\_\{\}\`\~\=\|\<\>\?\,\.]/.test(thisObj.value)){ alert("You can not enter punctuation of any kind into this field.\nPlease remove all punctuation."); return false; }else{ return true; } } function jm_valid8USPhone(thisObj){ //v1.2 | US Phone Validation //v1.1 Bug-Fix to make () around area code NOT required. //v1.2 Added support for EXT in a phone number var objLen=thisObj.value.length; var testObj=thisObj.value; var extStart=""; if(thisObj.value.toLowerCase().indexOf('ext')>0){ //Test for EXT extStart=thisObj.value.toLowerCase().indexOf('ext')-1; testObj=thisObj.value.toLowerCase().substring(0,extStart); } if(/^\(?\d{3}\)?(\-|\s)\d{3}(\-|\s)\d{4}$/.test(testObj)){ return true; }else{ alert("Invalid Phone Number. Must be 10 digits or in the format:\n000-000-0000 or (000) 000-0000 ext. 000"); return false; } } function jm_valid8Form(formObj){ //v2.3 | Complete Form Validation Script /* Supports: CC,CCEXP,DATE,SSN,EMAIL,INT,ZIP,CHARACTER and US-PHONE Validation. Other Features: HTML Stripper (v2.4) and Compare 2 Fields for Same Value. Use this script with the [cf_RealFormNames] tag to strip required_ and valid8_ from fieldnames upon submission. ================================================================= Browser Test Notes ================================================================= Tested OK on: Win2k PRO - IE6, IE5.0, Mozilla0.9.1, NS4.75, NS6, Opera5, AOL6(MSIE5), Sun HotJava 3.0 Win98/se - IE6, IE5.0, Mozilla0.9.1, NS4.76, NS6, Opera5, AOL6(MSIE5), Sun HotJava 3.0 MAC OS 9.2 - IE5, IE4.5, Mozilla0.9.2, NS4.60, NS6, Opera5, AOL5(MSIE4.01), iCAB 2.5.x, Sun HotJava 3.0 *Partial Compatability with iCAB 2.5.x on MAC OS 9.2 and HotJava 3.0 on all Platforms All Validation Functions work properly except jm_stripHTML() - Invalid Char. Error (iCAB) The CSS Support in iCAB and HotJava appears to be quite limited so the jm_highlightField() function doesn't work correctly to notify users of incorrect fields. ================================================================= Version History ================================================================= v1.0 Validation Functions Complete. v1.5 Repaired RADIO/CHECKBOX bug. v2.0 Updated Validation Calls with Array Loop Method. v2.1 Added ability to pass custom messages using hidden formfield. v2.2 Fixed Custom Error Messages not displaying on some browsers. v2.3 Notes: Validation Only Option (valid8_) Bugfix in Select and Multi-Select Fields HTML Stripper Function Browser Compliance and Testing Implemented ================================================================= v2.4 Release Notes ================================================================= 1. Updated HTML Stripper Function to accept more tags. This function is still a little buggy and needs some repair. 2. Added URL Validation (Loose validation: http://text.text) 3. Added IP Address Validation (2 Stack Validation: 000.000) ================================================================= */ var error=0; var i="";j=""; for(i=0;i=0){ if(required=="y"){// Require & Validate if(eval(f[j])){// Validate error=2; break; } }else if(validate=="y" && required=="n" && thisObj.value!=""){// Validate Only if(eval(f[j])){// Validate error=2; break; } } }else if(thisObj.value=="" && required=="y"){// Require Only error=1; break; } } // Begin NULL validation on non-text fieldtypes. }else if((((objType=="select-one") && (thisObj.selectedIndex==0)) || ((objType=="select-multiple") && (thisObj.selectedIndex == -1)))){ error=1; }else if((objType=="checkbox" || objType=="radio")){ var tmpName="formObj."+thisObj.name; var tmpObj=eval(tmpName); for(j=0;j\?\,\.]/.test(thisObj.value)){ thisObj.value=escape(thisObj.value); return true; } } function jm_basicHTML(thisObj){ //v1.1 | Allows Basic HTML Only (b,i,u,p,br,hr) // Need updated RegEX as it allows some "rogue" tags through. if (/(<[\/]?([bpua])|(br|hr)|([i$])[\/]?>)/.test(thisObj.value)){ return true; }else{ alert("Only , , ,
,
and

tags are allowed in this field."); return false; } } function jm_stripHTML(thisObj){ //v1.0 | Strip HTML if (/[<[0-9a-z^a-z=.,"\/#%*@!:]+>|&[a-z]+]/.test(thisObj.value)){ alert("No HTML is allowed in this field."); return false; }else{ return true; } } function jm_initCaps(thisObj){ //v1.0 | Make initial caps from UPPERCASE var i=0;j=0; var wordList="and,but,or,nor,for,yet,the,to"; var wordArray=wordList.split(','); var wordObj=thisObj.value.toLowerCase().split(' '); var ucase=""; var lcase=""; var tmpSnt=""; var pass=0; for(i=0;i"); document.write(""); document.write(""); document.write(""); document.write(""); document.write("<\/EMBED>"); document.write("<\/OBJECT>"); } function jm_vars2Flash(formObj,varList,loadVar){ //v1.0 | Formfields to Flash Variables var i=""; var a=varList.split(','); outputString=""; for(i=0;i"; var myText=oldString.replace(eval(pattern),newString); divObj.innerHTML=myText; } // ======================================================= // GUI Simulation Functions // ======================================================= function jm_guiButtonHover(formObj,brdr,brdrcolor){ //v1.0 | Button Hover formObj.style.border=brdr; formObj.style.borderColor=brdrcolor; } // ======================================================= // String Functions // Used for function interaction only. These do NOT alter // Form Objects or other elements of the page. // ======================================================= function jm_trim(string){ //v1.0 | TRIM whitespace function. string = string.replace(/^[\s]+/g,""); string = string.replace(/[\s]+$/g,""); return string; }