function DDformValidation(){this.currentValue='';this.currentCSS='';this.secondaryCheck=false;this.errors=new Array();this.formElement='';this.focusWidget=function(myElement){this.currentValue=myElement.value;this.currentCSS=myElement.className;this.swapClass(myElement,'focus');};this.blurWidget=function(myElement){if(myElement.value!=this.currentValue){valid=true;valid=this.validateValue(myElement,myElement.getAttribute('validate'));if(valid){this.hideError(myElement);}}else{if(this.currentCSS.indexOf("_")!=-1){temp=this.currentCSS.split('_');this.currentCSS=temp[1];}else{this.currentCSS='';}this.swapClass(myElement,this.currentCSS);}};this.initializeForm=function(myForm){items=myForm.elements;labels=document.getElementsByTagName('label');for(var i=0; i < items.length; i++){if(items[i].getAttribute('required')){this.swapClass(items[i],'required');labelKey=this.inArray(items[i].id,labels);if(labelKey >=0){labels[labelKey].innerHTML='*'+labels[labelKey].innerHTML;}}if(items[i].getAttribute('disabled')){this.swapClass(items[i],'disabled');}}};this.swapClass=function(myElement,myClass){currentClass=myElement.className;if(currentClass.indexOf("_")!=-1){temp=currentClass.split('_');currentClass=temp[0];}if(myClass!=''){myClass='_'+myClass;}myElement.className=currentClass+myClass;};this.validateForm=function(myForm){this.formElement=myForm;this.secondaryCheck=true;valid=true;items=myForm.elements;for(var i=0; i < items.length; i++){switch(items[i].type){case 'select-one':if(items[i].getAttribute('required')&& items[i].value==0 &&!items[i].getAttribute('disabled')){this.showError(items[i],"This field is required");valid=false;}break;default:if(items[i].getAttribute('required')&& items[i].value=='' &&!items[i].getAttribute('disabled')){this.showError(items[i],"This field is required");valid=false;}break;}}if(valid){for(var i=0; i < items.length; i++){temp=true;if(items[i].getAttribute('validate')&& items[i].getAttribute('required')&&!items[i].getAttribute('disabled')){temp=this.validateValue(items[i],items[i].getAttribute('validate'));}if(!temp){valid=false;}}}if(!valid){}return valid;};this.validateValue=function(myElement,myType){var valid=true;var errorMsg='';if(!myElement.getAttribute('disabled')){switch(myType){case 'username':var regEx=new RegExp(/^[a-z][a-z0-9\.\-\_]+$/i);if(!myElement.value.match(regEx)){errorMsg='Invalid username';valid=false;}if(myElement.value.length < 6){errorMsg='User name must be 6 or more characters';valid=false;}break;case 'password':var categoryCount=0;var re=/[A-Z]/;if(re.test(myElement.value)){categoryCount++;}var re=/[a-z]/;if(re.test(myElement.value)){categoryCount++;}var re=/\d/;if(re.test(myElement.value)){categoryCount++;}var re=/[^a-zA-Z0-9]/;if(re.test(myElement.value)){categoryCount++;}if(categoryCount < 3){errorMsg='Invalid password:You must use characters from 3 of the 4 catagories';valid=false;}if(myElement.value.length < 8){errorMsg='Invalid password:Your password must be at least 8 characters long';valid=false;}if(valid)enteredPassword=myElement.value;break;case 'confirmed':if(myElement.value!=enteredPassword){errorMsg='Passwords do not match';valid=false;}break;case 'email':if(!validEmail(myElement.value)){errorMsg='Invalid email';valid=false;}break;case 'date':if(!myElement.value.match(/(0[1-9]|1[012])[/](0[1-9]|[12][0-9]|3[01])[/](19|20)\d\d/)){errorMsg='Invalid date stamp<br/>Please use mm/dd/yyyy';valid=false;}break;case 'number':if(isNaN(myElement.value)){errorMsg='Numbers only';valid=false;}break;case 'state':break;case 'zip':var zip=myElement.value;if(isNaN(zip.replace(/[^0-9]/g,''))|| zip.length < 5){errorMsg="Invalid zip code. Please use 5 digits.";valid=false;}break;case 'ccNumber':var ccNum=myElement.value;var reversedNum="";var alteredNum="";var totalledNum=0;ccNum=ccNum.replace(/[^0-9]/g,'');if(isNaN(ccNum)){errorMsg="Invalid card number";valid=false;}else{for(i=0; i < ccNum.length; i++){c=parseInt(ccNum.charAt(i),10);reversedNum=c+reversedNum;}for(i=0; i < reversedNum.length; i++){c=parseInt(reversedNum.charAt(i),10);if(i % 2!=0){c*=2;}alteredNum=alteredNum+c;}for(i=0; i < alteredNum.length; i++){c=parseInt(alteredNum.charAt(i),10);totalledNum=totalledNum+c;}if(totalledNum!=0 && totalledNum % 10==0){}else{errorMsg="Invalid number,please retype.";valid=false;}}break;case 'routingNumber':var routingNum=myElement.value;var calculatedNum=0;routingNum=routingNum.replace(/[^0-9]/g,'');if(routingNum.length!=9){errorMsg="Routing number must be 9 digits";valid=false;}else{for(i=0; i < routingNum.length; i+=3){calculatedNum+=parseInt(routingNum.charAt(i),10)*3+parseInt(routingNum.charAt(i+1),10)*7+parseInt(routingNum.charAt(i+2),10);}}if(calculatedNum!=0 && calculatedNum % 10==0){}else{errorMsg="Invalid routing number";valid=false;}break;case 'relationship':if(myElement.value==0){errorMsg="Please choose a relation type";valid=false;}else if(myElement.value=='spouse'){for(i=0; i < depArray.length; i++){if(depArray[i][3]=='spouse'){errorMsg="Only 1 spouse allowed";valid=false;}}}break;case 'file':extArray=new Array("csv","xls","zip");properType=false;errorMsg="File must be one of the allowed types(csv,xls,zip)";for(i=0; i < extArray.length; i++){if(myElement.value.substr(myElement.value.length-3)==extArray[i]){properType=true;}}valid=properType;break;}}if(!valid){this.showError(myElement,errorMsg);}return valid;};this.showError=function(myElement,errorMsg){this.errors[myElement.id]=true;this.swapClass(myElement,'alarm');if(document.getElementById('errorSpan_'+myElement.name)){newDomElement=document.getElementById('errorSpan_'+myElement.name);var myTooltip=new YAHOO.widget.Tooltip("tt_"+myElement.name,{context:"tip_"+myElement.name,text:errorMsg,width:150});newDomElement.style.visibility="visible";}else{newDomElement=document.createElement('span');newDomElement.setAttribute('id','errorSpan_'+myElement.name);newDomElement.innerHTML=errorMsg+"<br/>";newDomElement.setAttribute('class','ddErrorSpan');newDomElement.setAttribute('className','ddErrorSpan');myElement.parentNode.insertBefore(newDomElement,myElement);}if(document.getElementById('errorSpan_DDerror')){newDomElement=document.getElementById('errorSpan_DDerror');newDomElement.innerHTML='<img src="/images/caution.gif" align="top"> There was an error on the form.';}else{newDomElement=document.createElement('span');newDomElement.setAttribute('id','errorSpan_DDerror');newDomElement.innerHTML=errorMsg+"<br/>";newDomElement.setAttribute('class','ddErrorSpan');newDomElement.setAttribute('className','ddErrorSpan');this.formElement.parentNode.insertBefore(newDomElement,this.formElement);}};this.hideError=function(myElement){this.errors[myElement.id]=false;var c=0;for(var n in this.errors){if(this.errors[n]){c++;}}if(myElement.getAttribute('required')){this.swapClass(myElement,'required');}else{this.swapClass(myElement,'');}if(newDomElement=document.getElementById('errorSpan_'+myElement.name)){newDomElement.style.visibility="hidden";}if(c==0){if(document.getElementById('errorSpan_DDerror')){document.getElementById('errorSpan_DDerror').innerHTML='';}}};this.inArray=function(needle,haystack){for(var i=0; i < haystack.length; i++){if(tempIndex=haystack[i].getAttribute('for')){}else{tempIndex=haystack[i].getAttribute('htmlFor');}if(tempIndex==needle){return i;}}return-1;};}function focusIt(item,type){switch(type){case 'style':switchStyle(item,'_focus','+');break;}}function blurIt(item,type){switch(type){case 'style':switchStyle(item,'_focus','-');break;default:start=type.indexOf('(');possibleFunction=type.substring(0,start);if(typeof eval(possibleFunction)=='function'){eval(type);}}}function switchStyle(item,classExtra,action){itemClass=item.className;switch(action){case '+':if(itemClass.indexOf(classExtra)==-1){newClass=itemClass+classExtra;}else{newClass=itemClass;}break;case '-':if(itemClass.indexOf(classExtra)!==-1){newClass=itemClass.substring(0,itemClass.indexOf(classExtra));}else{newClass=itemClass;}}item.className=newClass;}function formCheckRequired(form){items=form.elements;var invalid=new Array();var invalidCount=0;for(var i=0; i < items.length; i++){if(items[i].getAttribute('required')){customError='';if(items[i].getAttribute('error')){customError=items[i].getAttribute('error');}if(!items[i].value){invalid[invalidCount]=items[i];invalidCount++;if(customError!==''){items[i].errorMessage=customError;}else{items[i].errorMessage='Please enter a value';}}else{switch(items[i].getAttribute('required')){case 'true':break;case 'int':if(items[i].value.match(/\D/)){invalid[invalidCount]=items[i];invalidCount++;if(customError!==''){items[i].errorMessage=customError;}else{items[i].errorMessage='Please enter a numeric value with no special characters.';}}break;case 'numeric':if(!items[i].value.match(/[-+]?[0-9]*\.?[0-9]+/)){invalid[invalidCount]=items[i];invalidCount++;if(customError!==''){items[i].errorMessage=customError;}else{items[i].errorMessage='Please enter a numeric value only.';}}break;case 'string':if(items[i].value.match(/\W/)){invalid[invalidCount]=items[i];invalidCount++;if(customError!==''){items[i].errorMessage=customError;}else{items[i].errorMessage='Please enter a string.';}}break;case 'email':if(!validEmail(items[i].value)){invalid[invalidCount]=items[i];invalidCount++;if(customError!==''){items[i].errorMessage=customError;}else{items[i].errorMessage='Invalid email';}}break;case 'password':if(!validPassword(items[i].value,'')){invalid[invalidCount]=items[i];invalidCount++;if(customError!==''){items[i].errorMessage=customError;}else{items[i].errorMessage='Invalid password';}}break;case 'MMDDYYYY':if(!items[i].value.match(/(0[1-9]|1[012])[/](0[1-9]|[12][0-9]|3[01])[/](19|20)\d\d/)){invalid[invalidCount]=items[i];invalidCount++;if(customError!==''){items[i].errorMessage=customError;}else{items[i].errorMessage='Invalid date stamp.';}}break;}}}}return invalid;}function validPassword(pwd,username){var valid=true;var categoryCount=0;var re=/[A-Z]/;if(re.test(pwd)){categoryCount++}var re=/[a-z]/;if(re.test(pwd)){categoryCount++}var re=/\d/;if(re.test(pwd)){categoryCount++}var re=/[^a-zA-Z0-9]/;if(re.test(pwd.value)){categoryCount++}if(username){if(pwd.indexOf(username)!=-1){valid=false;}}if(pwd.length < 8){valid=false;}if(categoryCount < 3){valid=false;}return valid;}function validEmail(str){var valid=false;emailRegEx=new RegExp(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);if(str.match(emailRegEx)){valid=true;}else{valid=false;}return valid;}function formCheckForm(form){possiblespans=document.getElementsByTagName('span');for(i=0; i<possiblespans.length; i++){if(possiblespans[i].id.substring(2,11)=='ErrorSpan'){possiblespans[i].innerHTML='';}}possiblealarms=form.elements;for(i=0; i<possiblealarms.length; i++){switchStyle(possiblealarms[i],'_alarm','-');}var submit=true;var newDom=new Array();invalid=formCheckRequired(form);if(invalid.length > 0){submit=false;for(i=0; i<invalid.length; i++){switchStyle(invalid[i],'_alarm','+');if(document.getElementById('ddErrorSpan'+invalid[i].name)){document.getElementById('ddErrorSpan'+invalid[i].name).innerHTML="<b style='color:#ff0000'>"+invalid[i].errorMessage+'</b><br/>';}else{newDom[i]=document.createElement('span');newDom[i].setAttribute('id','ddErrorSpan'+invalid[i].name);newDom[i].innerHTML="<b style='color:#ff0000'>"+invalid[i].errorMessage+'</b><br/>';newDom[i].setAttribute('class','ddErrorSpan');invalid[i].parentNode.insertBefore(newDom[i],invalid[i]);}}}return submit;}
