var js_options={errorTag:"div",errorClass:"jsvalidation",errorLocation:"beforeBegin",errorIDPrefix:"jsvalidator",startGone:false,useBR:"none",useBlur:true,submitClass:'submit_action',highlightColor:'#FFFF99',endColor:'#FFFFFF',extMessage:true}
var custom_validators={number:{className:"jsvalidate_number",defaultMessage:"This field must have a numerical value.",regExp:/^[-]?\d+(\.\d+)?$/},digits:{className:"jsvalidate_digits",defaultMessage:"This field can only contain numbers.",regExp:/^[-]?\d+(\.\d+)?$/},email:{className:"jsvalidate_email",defaultMessage:"This field must contain a valid email address.",regExp:/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/},uscanzip:{className:"jsvalidate_uscanzip",defaultMessage:"This field must contain a valid US or Canada zip code.",regExp:/^((\d{5}([- ])\d{4})|(\d{5})|([AaBbCcEeGgHhJjKkLlMmNnPpRrSsTtVvXxYy]\d[A-Za-z]\s?\d[A-Za-z]\d))$/},usstate:{className:"jsvalidate_usstate",defaultMessage:"This field must contain a valid 2 letter US state code.",regExp:/^(A[LKSZRAEP]|C[AOT]|D[EC]|F[LM]|G[ANU]|HI|I[ADLN]|K[SY]|LA|M[ADEHINOPST]|N[CDEHJMVY]|O[HKR]|P[ARW]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$/},usphone:{className:"jsvalidate_usphone",defaultMessage:"This field must contain a valid US phone number with area code.",regExp:/^([0-9]( |-|.)?)?(\(?[0-9]{3}\)?|[0-9]{3})( |-|.)?([0-9]{3}( |-|.)?[0-9]{4}|[a-zA-Z0-9]{7})$/},creditcard:{className:"jsvalidate_creditcard",defaultMessage:"This field must contain a valid credit card number.",regExp:/^((4\d{3})|(5[1-5]\d{2})|(6011))([- ])?\d{4}([- ])?\d{4}([- ])?\d{4}|3[4,7]\d{13}$/},ssn:{className:"jsvalidate_ssn",defaultMessage:"This field must contain a valid social security number.",regExp:/(^|\s)(00[1-9]|0[1-9]0|0[1-9][1-9]|[1-6]\d{2}|7[0-6]\d|77[0-2])(-?|[\. ])([1-9]0|0[1-9]|[1-9][1-9])\3(\d{3}[1-9]|[1-9]\d{3}|\d[1-9]\d{2}|\d{2}[1-9]\d)($|\s|[;:,!\.\?])/},alpha:{className:"jsvalidate_alpha",defaultMessage:"This field must contain only letters.",regExp:/^[a-zA-z\s]+$/},alphanum:{className:"jsvalidate_alphanum",defaultMessage:"This field must contain only letters or numbers.",regExp:/^[a-zA-Z0-9]+$/}};var js_validators={required:{className:"jsrequired",defaultMessage:"error"},notfirst:{className:"select-notfirst",defaultMessage:"Select something other than the first item."},filetypes:{defaultMessage:"This field accepts the following file types:"}};String.prototype.trim=function(){a=this.replace(/^\s+/,'');return a.replace(/\s+$/,'');};Array.prototype.inArray=function(value){var i;for(i=0;i<this.length;i++){if(this[i]===value){return true;}}
return false;};Array.prototype.remove=function(s){for(i=0;i<this.length;i++){if(s==this[i])this.splice(i,1);}};String.prototype.isEmpty=function(){if((this.value.length==0)||(this.value==null)){return true;}
return false;};if(!Array.prototype.pop){Array.prototype.pop=function(){var last;if(this.length){last=this[this.length-1];this.length-=1;}
return last||null;};}
if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0;i<arguments.length;++i){this[this.length]=arguments[i];}
return this.length;};}
function isset(v){return((typeof(v)=='undefined'||v.length==0)?false:true);}
function getElementsByClassName(className,tag,elm){var testClass=new RegExp("(^|\\s)"+className+"(\\s|$)");var tag=tag||"*";var elm=elm||document;var elements=(tag=="*"&&elm.all)?elm.all:elm.getElementsByTagName(tag);var returnElements=[];var current;var length=elements.length;for(var i=0;i<length;i++){current=elements[i];if(testClass.test(current.className)){returnElements.push(current);}}
return returnElements;}
function isArray(){if(typeof arguments[0]=='object'){var criterion=arguments[0].constructor.toString().match(/array/i);return(criterion!=null);}
return false;}
function isString(){if(typeof arguments[0]=='string')return true;if(typeof arguments[0]=='object'){var criterion=arguments[0].constructor.toString().match(/string/i);return(criterion!=null);}
return false;}
function RemoveDuplicates(arr){if(isArray(arr)){arr.sort();returnArray=true;}else{returnArray=false;arr.trim();arr=arr.split(" ");arr.sort();}
var result=new Array();var lastValue="";for(var i=0;i<arr.length;i++){var curValue=arr[i];if(curValue!=lastValue){result[result.length]=curValue;}
lastValue=curValue;}
if(!returnArray){var newResult="";for(var a=0;a<result.length;a++){newResult+=result[a]+" ";}
newResult.trim();result=newResult;}
return result;}
var _emptyTags={"IMG":true,"BR":true,"INPUT":true,"META":true,"LINK":true,"PARAM":true,"HR":true};if(typeof HTMLElement!="undefined"&&!HTMLElement.prototype.insertAdjacentHTML){HTMLElement.prototype.__defineGetter__("outerHTML",function(){var attrs=this.attributes;var str="<"+this.tagName;for(var i=0;i<attrs.length;i++)
str+=" "+attrs[i].getAttribute('name')+"=\""+attrs[i].value+"\"";if(_emptyTags[this.tagName])
return str+">";return str+">"+this.innerHTML+"</"+this.tagName+">";});HTMLElement.prototype.__defineSetter__("outerHTML",function(sHTML){var r=this.ownerDocument.createRange();r.setStartBefore(this);var df=r.createContextualFragment(sHTML);this.parentNode.replaceChild(df,this);});HTMLElement.prototype.insertAdjacentHTML=function(sWhere,sHTML){var df;var r=this.ownerDocument.createRange();switch(String(sWhere).toLowerCase()){case"beforebegin":r.setStartBefore(this);df=r.createContextualFragment(sHTML);this.parentNode.insertBefore(df,this);break;case"afterbegin":r.selectNodeContents(this);r.collapse(true);df=r.createContextualFragment(sHTML);this.insertBefore(df,this.firstChild);break;case"beforeend":r.selectNodeContents(this);r.collapse(false);df=r.createContextualFragment(sHTML);this.appendChild(df);break;case"afterend":r.setStartAfter(this);df=r.createContextualFragment(sHTML);this.parentNode.insertBefore(df,this.nextSibling);break;}};}
var jsValidator=new Array();var these_options=eval("({})");function findForms(){var forms=document.getElementsByTagName('form');return forms;}
function getFields(formref,type){var els;if(type=="name"){els=document.forms[formref].elements;}
if(type=="id"){els=Form.getElements(formref);}
return els;}
function getParentForm(el){while(el.parentNode!=null&&el.tagName!="FORM")el=el.parentNode;return(el.getAttribute('name'))?el.getAttribute('name'):el.getAttribute('id');}
function hasLabel(el){while(el.parentNode!=null&&el.tagName!="LABEL")el=el.parentNode;return(el.tagName=="LABEL")?true:false;}
function getLabel(el){while(el.parentNode!=null&&el.tagName!="LABEL")el=el.parentNode;return el;}
function attachSubmit(form_ref){var form_attach;var parent_ref;if(form_ref.cloneNode(false).getAttribute('name')||form_ref.cloneNode(false).getAttribute('id')){if(document.forms[form_ref.cloneNode(false).getAttribute('name')]){form_attach=document.forms[eval("form_ref.cloneNode(false).getAttribute('name')")];form_ref=form_ref.cloneNode(false).getAttribute('name');}else{form_attach=$(eval("form_ref.cloneNode(false).getAttribute('id')"));form_ref=form_ref.cloneNode(false).getAttribute('id');}}else{form_attach=form_ref;}
if(window.addEventListener){form_attach.onsubmit=function(){return submitAction(form_ref,'INPUT','submit');};}else{form_attach.attachEvent('onsubmit',function(){return submitAction(form_ref,'INPUT','submit');});}
if(getElementsByClassName(js_options['submitClass']).length>0){var buttons=getElementsByClassName(js_options['submitClass']);for(b=0;b<buttons.length;b++){parent_ref=getParentForm(buttons[b]);if(parent_ref==form_ref){tag=buttons[b].tagName;if(buttons[b].type){type=buttons[b].type.toLowerCase();}else{type="";}
Event.observe(buttons[b],'click',function(){return submitAction(form_ref,tag,type);});}}}}
function extractOptions(vals){var first_pos=vals.indexOf("{");var last_pos=vals.indexOf("}")+1;var the_options=vals.substring(first_pos,last_pos);return the_options;}
var radioNum=0;function attachValidation(fieldref,form_name){var validation_message="";var the_field;var these_options=eval("({})");var isRadio=false;var doneRadios=new Array();var doExt=true;var useBlur=false;if(document.forms[form_name].elements[fieldref]){the_field=document.forms[form_name].elements[fieldref];if(typeof the_field.nodeType=="undefined"){el_type=the_field[0].type.toLowerCase();}else{el_type=the_field.type.toLowerCase();}
if(el_type=="radio"){isRadio=true;}}else{the_field=$(fieldref);}
if(isRadio){classes="";for(r=0;r<the_field.length;r++){classes+=the_field[r].className+" ";}}else{classes=the_field.className;}
if(classes){if(classes.indexOf("{")>-1&&classes.indexOf("}")>-1){these_options=extractOptions(classes).toString();classes=classes.replace(these_options,"");these_options=eval("("+these_options+")");}
useBlur=(isset(these_options['useBlur']))?these_options['useBlur']:js_options['useBlur'];extMessage=(isset(these_options['extMessage']))?these_options['extMessage']:js_options['extMessage'];classes.trim();classes=RemoveDuplicates(classes);classes=classes.split(" ");for(c=0;c<classes.length;c++){for(items in js_validators){if(classes[c]==js_validators[items]['className']){if(validation_message==""){validation_message=js_validators[items]['defaultMessage'];}else{validation_message+=' '+js_validators[items]['defaultMessage'];}
if(!jsValidator.inArray(fieldref+","+form_name+","+the_field.className)){array_pos=jsValidator.length;jsValidator[array_pos]=fieldref+","+form_name+","+the_field.className;}}}
for(items in custom_validators){if(classes[c]==custom_validators[items]['className']){if(validation_message==""){validation_message=custom_validators[items]['defaultMessage'];}else{validation_message+=' '+custom_validators[items]['defaultMessage'];}
if(!jsValidator.inArray(fieldref+","+form_name+","+the_field.className)){array_pos=jsValidator.length;jsValidator[array_pos]=fieldref+","+form_name+","+the_field.className;}}}
if(isRadio){for(n=0;n<the_field.length;n++){if(the_field[n].getAttribute('alt')!=""&&the_field[n].getAttribute('alt')!=null){validation_message=the_field[n].getAttribute('alt');}}}else{if(the_field.getAttribute('alt')){if(the_field.getAttribute('alt')!=""&&the_field.getAttribute('alt')!=null){validation_message=the_field.getAttribute('alt');}}}
if(el_type=="file"&&extMessage&&doExt){if(the_field.getAttribute('accept')!=""){if(validation_message==""){validation_message=js_validators['filetypes']['defaultMessage']+" "+the_field.getAttribute('accept');}else{validation_message+=" "+js_validators['filetypes']['defaultMessage']+" "+the_field.getAttribute('accept');}}
doExt=false;}}}
if(validation_message!=""&&validation_message!=null){var field_name=js_options['errorIDPrefix']+"_"+fieldref;field_name=field_name.trim();errorTag=(isset(these_options['errorTag']))?these_options['errorTag']:js_options['errorTag'];errorClass=(isset(these_options['errorClass']))?these_options['errorClass']:js_options['errorClass'];startGone=(isset(these_options['startGone']))?these_options['startGone']:js_options['startGone'];useBR=(isset(these_options['useBR']))?these_options['useBR']:js_options['useBR'];errorLocation=(isset(these_options['errorLocation']))?these_options['errorLocation']:js_options['errorLocation'];var html="<";html+=errorTag;html+=" id=\""+field_name+"\" ";if(errorClass!=""){html+="class=\""+errorClass+"\" ";}
if(startGone){html+=" display:none;";}
html+="\">";if(useBR!="none"){if(useBR=="before"||useBR=="both"){html+='<br />';}}
html+=validation_message;if(useBR!="none"){if(useBR=="after"||useBR=="both"){html+='<br />';}}
html+="</";html+=errorTag;html+=">";if(errorLocation=="afterEnd"||errorLocation=="beforeBegin"){if(isRadio){if(errorLocation=="afterEnd"){totalRadios=the_field.length-1;if(radioNum==totalRadios){addTo=(hasLabel(the_field[radioNum]))?getLabel(the_field[radioNum]):the_field[radioNum];addTo.insertAdjacentHTML(errorLocation,html);radio_pos=doneRadios.length;doneRadios[radio_pos]=the_field[radioNum].getAttribute('name');}
radioNum++;}else{if(!doneRadios.inArray(the_field[0].getAttribute('name'))){the_field[0].insertAdjacentHTML(errorLocation,html);radio_pos=doneRadios.length;doneRadios[radio_pos]=the_field[radioNum].getAttribute('name');}}}else{this_type=the_field.type.toLowerCase();if(this_type=="checkbox"){attachTo=(hasLabel(the_field))?getLabel(the_field):the_field;attachTo.insertAdjacentHTML(errorLocation,html);}else{the_field.insertAdjacentHTML(errorLocation,html);}}}
if($(field_name)){new Effect.Opacity(field_name,{to:0.0,duration:0});}
if(errorLocation=="none"&&startGone&&$(field_name)){$(field_name).style.display='none';}}
if(useBlur){if(the_field.isArray&&the_field[0].type){field_type=the_field[0].type;}else{if(the_field.type){field_type=the_field.type.toLowerCase();}}
if((the_field.tagName=="INPUT"&&(field_type=="text"||field_type=="password"))||the_field.tagName=="TEXTAREA"){Event.observe(the_field,'blur',function(){blurAction(the_field,form_name);});}
if(the_field.tagName=="SELECT"){Event.observe(the_field,'blur',function(){blurAction(the_field,form_name);});Event.observe(the_field,'change',function(){blurAction(the_field,form_name);});}
if(the_field.tagName=="INPUT"&&field_type=="checkbox"){Event.observe(the_field,'click',function(){blurAction(the_field,form_name);});}
if(the_field.tagName=="INPUT"&&field_type=="checkbox"){Event.observe(the_field,'blur',function(){blurAction(the_field,form_name);});Event.observe(the_field,'click',function(){blurAction(the_field,form_name);});Event.observe(the_field,'change',function(){blurAction(the_field,form_name);});}
if(typeof the_field.nodeType=="undefined"){for(a=0;a<the_field.length;a++){if(!radio_name){var radio_name=the_field[a].getAttribute('name');}
Event.observe(document.forms[form_name].elements[radio_name][a],'click',function(){blurAction(the_field,form_name);});}}}}
function getFileExtension(filename){if(filename.length==0)return"";var dot=filename.lastIndexOf(".");if(dot==-1)return"";var extension=filename.substr(dot+1,filename.length);return extension;}
function blurAction(field_reference,form_ref){var field_name;var the_result=true;var these_options=eval("({})");var isRadio=false;if(($(field_reference))||(document.forms[form_ref].elements[field_reference])){field_reference=($(field_reference))?$(field_reference):document.forms[form_ref].elements[field_reference];}
if(typeof field_reference.nodeType=="undefined"){the_field=(field_reference[0].getAttribute('name'))?field_reference[0].getAttribute('name'):field_reference[0].getAttribute('id');isRadio=true;}else{the_field=(field_reference.getAttribute('id'))?field_reference.getAttribute('id'):field_reference.getAttribute('name');}
if(isRadio){classes="";for(r=0;r<field_reference.length;r++){classes+=field_reference[r].className+" ";}}else{classes=field_reference.className;}
if(classes){if(classes.indexOf("{")>-1&&classes.indexOf("}")>-1){these_options=extractOptions(classes);classes=classes.replace(these_options,"");these_options=eval("("+these_options+")");}
classes.trim();classes=RemoveDuplicates(classes);classes=classes.split(" ");var bad_field=false;var isRequired=false;hColor=(isset(these_options['highlightColor']))?these_options['highlightColor']:js_options['highlightColor'];eColor=(isset(these_options['endColor']))?these_options['endColor']:js_options['endColor'];startGone=(isset(these_options['startGone']))?these_options['startGone']:js_options['startGone'];errorIDPrefix=(isset(these_options['errorIDPrefix']))?these_options['errorIDPrefix']:js_options['errorIDPrefix'];errorLocation=(isset(these_options['errorLocation']))?these_options['errorLocation']:js_options['errorLocation'];for(c=0;c<classes.length;c++){field_name=errorIDPrefix+'_'+the_field;field_name=field_name.trim();for(items in custom_validators){if(classes[c]==custom_validators[items]['className']&&field_reference.value!=""){var thisRegExp=custom_validators[items]['regExp'];if(!thisRegExp.test(field_reference.value)){bad_field=true;}}}
if(classes[c]==js_validators['required']['className']){isRequired=true;if(typeof field_reference.nodeType=="undefined"){thistype=field_reference[0].type.toLowerCase();field_type=thistype;thisTag=field_reference[0].tagName;}else{field_type=field_reference.type.toLowerCase();thisTag=field_reference.tagName;}
if((thisTag=="INPUT"&&(field_type=="text"||field_type=="password"))||thisTag=="TEXTAREA"){if(field_reference.value==""){bad_field=true;}}
if(thisTag=="SELECT"){if(field_reference.value==""){bad_field=true;}}
if(thisTag=="INPUT"&&field_type=="checkbox"){if(field_reference.checked==false){bad_field=true;}}
if(thisTag=="INPUT"&&field_type=="file"){if(field_reference.value==""){bad_field=true;}else{if(field_reference.getAttribute('accept')!=""){pass=false;fileTypes=field_reference.getAttribute('accept').split(",");ext=getFileExtension(field_reference.value)
for(f=0;f<fileTypes.length;f++){if(ext==fileTypes[f]){pass=true;}}
if(!pass){bad_field=true;}}}}
if(thisTag=="INPUT"&&field_type=="radio"){this_field=(field_reference.name)?document.forms[form_ref].elements[field_reference.name]:document.forms[form_ref].elements[field_reference[0].name];theRadios=this_field.length;bad_field=true;for(t=0;t<theRadios;t++){if(this_field[t].checked==true){bad_field=false;}}}}
if(classes[c]==js_validators['notfirst']['className']){if(field_reference.selectedIndex==0&&field_reference.tagName=="SELECT"){bad_field=true;}}}
if(bad_field){if(errorLocation=="none"){if($(field_name)){throwFlag(field_name,hColor,eColor,startGone);}}else{throwFlag(field_name,hColor,eColor,startGone);}
the_result=false;}else{if(errorLocation=="none"){if($(field_name)){hideFlag(field_name,startGone);}}else{hideFlag(field_name,startGone);}}}
return the_result;}
function loadAction(){var forms=findForms();var attachIt;var fields;var j;var done;if(forms.length>=1){for(var i=0;i<forms.length;i++){attachIt=attachSubmit(forms[i]);form_name=forms[i].cloneNode(false).getAttribute('name');if(form_name){fields=getFields(form_name,"name");}else{fields=getFields(forms[i].getAttribute('id'),"id");}
for(j=0;j<fields.length;j++){done=false;if(fields[j].getAttribute('id')){attachValidation(fields[j].getAttribute('id'),form_name);done=true;}
if(fields[j].cloneNode(false).getAttribute('name')&&done==false){attachValidation(fields[j].cloneNode(false).getAttribute('name'),form_name);done=true;}}}}}
function throwFlag(fieldToFlag,hColor,eColor,gone){if(Element.getOpacity(fieldToFlag)>.75){new Effect.Highlight(fieldToFlag,{duration:1.0,startcolor:hColor,endcolor:eColor});}else{if(gone){$(fieldToFlag).style.display='';}
new Effect.Opacity(fieldToFlag,{to:1.0,duration:.5});}}
function hideFlag(fieldToHide,gone){if(Element.getOpacity(fieldToHide)>.25){new Effect.Opacity(fieldToHide,{to:0.0,duration:.5});if(gone){$(fieldToHide).style.display='none';}}}
function validateFields(theForm){var the_field;var proceed=true;for(var jsV=0;jsV<jsValidator.length;jsV++){var bad_field=false;var els=jsValidator[jsV].split(",");field_ref=els[0];form_ref=els[1];class_ref=els[2];if(form_ref==theForm){checkField=blurAction(field_ref,form_ref);if(!checkField){proceed=false;}}}
return proceed;}
function submitAction(thisForm){var process=validateFields(thisForm);if(process){valid_class(5);return false;}
return process;}
function valid_class(test){var test;if(test==5){addcomment();}
else{return false;}}
Event.observe(window,'load',function(){loadAction();});
