naehas={addListener:function(C,A,B){if(C.addEventListener){C.addEventListener(A,B,false)}else{if(C.attachEvent){C.attachEvent("on"+A,B)}}},prefillForms:function(E){var A;for(var B=0;A=E[B];B++){var C=document.forms[B];for(var D in A){C[D].value=A[D]}}},recordExternalLink:function(B){var A="/external_link.html?_naehas_external_url="+encodeURIComponent(B);var C=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();C.open("GET",A,false);C.send(null)},trackExternalLinks:function(){var C=location.hostname;for(var B=0;link=document.links[B];B++){if(link.hostname!=C){naehas.addListener(link,"click",A(link))}}function A(E){var D=E.href;D=D.substr(D.indexOf("://")+3);return function(){naehas.recordExternalLink(D)}}},validateForms:function(){var B=document.forms;for(var C=0;C<B.length;C++){var D=B[C];naehas.addListener(D,"submit",A(C))}function A(E){return function(F){if(!F){var F=window.event}if(!naehas.validateForm(E)){F.returnValue=false;if(F.preventDefault){F.preventDefault()}}}}},validateForm:function(H){validationRules={required:{validator:naehas.validateRequired,errorMsg:"is required"},email:{validator:naehas.validateEmail,errorMsg:"is not a valid email address"},phone:{validator:naehas.validatePhone,errorMsg:"is not a valid phone number"}};var A=document.forms[H];var D=naehas.inputLabels[H];var J=new Array();if(naehas.validations&&naehas.validations[H]){var B=naehas.validations[H];for(var E in B){var G=validationRules[E];if(G){I(B[E],G.validator,J,G.errorMsg)}}}if(J.length>0){var F="The following error(s) must be corrected before submitting the form:\n";for(var C=0;C<J.length;C++){F+="\t"+J[C]+"\n"}alert(F+"\n");return false}else{return true}function I(L,P,R,K){if(L){if(!K){K=""}if(typeof (L)=="string"){L=[L]}for(var O=0;O<L.length;O++){var Q=L[O];var M=A[Q];if(!P(M)){var N=D[Q];if(!N){N=Q}R.push(N+" "+K)}}}}},validatePhone:function(D){if(D.type=="hidden"||D.type=="text"||D.type=="textarea"){var G=D.value;if(G.length==0){return true}G=naehas.trim(G);var B=0;var A=/^(\+|\(|\)|\.|-|\s)$/;var E=/^\d$/;for(var C=0;C<G.length;C++){var F=G.charAt(C);if(E.test(F)){B++}else{if(!A.test(F)){return false}}}if(B<10){return false}}return true},validateRequired:function(E){var D=true;if(!naehas.isFieldPresent(E)){D=false}else{if((E.type=="hidden"||E.type=="text"||E.type=="textarea"||E.type=="file"||E.type=="radio"||E.type=="checkbox"||E.type=="select-one"||E.type=="password")){var C="";if(E.type=="select-one"){var B=E.selectedIndex;if(B>=0){C=E.options[B].value}}else{if(E.type=="radio"||E.type=="checkbox"){if(E.checked){C=E.value}}else{C=E.value}}if(naehas.trim(C).length==0){D=false}}else{if(E.type=="select-multiple"){var A=E.options.length;lastSelected=-1;for(loop=A-1;loop>=0;loop--){if(E.options[loop].selected){lastSelected=loop;C=E.options[loop].value;break}}if(lastSelected<0||trim(C).length==0){D=false}}else{if((E.length>0)&&(E[0].type=="radio"||E[0].type=="checkbox")){isChecked=-1;for(loop=0;loop<E.length;loop++){if(E[loop].checked){isChecked=loop;break}}if(isChecked<0){D=false}}}}}return D},isFieldPresent:function(B){var A=true;if(B==null||(typeof B=="undefined")){A=false}else{if(B.disabled){A=false}}return A},validateEmail:function(A){if(A.type=="hidden"||A.type=="text"||A.type=="textarea"){var C=A.value;if(C.length==0){return true}var R=0;var U=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;var Q=/^(.+)@(.+)$/;var O='\\(\\)><@,;:\\\\\\"\\.\\[\\]';var J="[^\\s"+O+"]";var E='("[^"]*")';var P=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;var B=J+"+";var N="("+B+"|"+E+")";var K=new RegExp("^"+N+"(\\."+N+")*$");var G=new RegExp("^"+B+"(\\."+B+")*$");var D=C.match(Q);if(D==null){return false}var S=D[1];var T=D[2];for(L=0;L<S.length;L++){if(S.charCodeAt(L)>127){return false}}for(L=0;L<T.length;L++){if(T.charCodeAt(L)>127){return false}}if(S.match(K)==null){return false}var I=T.match(P);if(I!=null){for(var L=1;L<=4;L++){if(I[L]>255){return false}}return true}var H=new RegExp("^"+B+"$");var F=T.split(".");var M=F.length;for(L=0;L<M;L++){if(F[L].search(H)==-1){return false}}if(R&&F[F.length-1].length!=2&&F[F.length-1].search(U)==-1){return false}if(M<2){return false}return true}return true},trim:function(A){return A.replace(/^\s*/,"").replace(/\s*$/,"")}};