function validateCompleteForm(objForm,strErrorClass){return _validateInternal(objForm,strErrorClass,0);};function validateStandard(objForm,strErrorClass){return _validateInternal(objForm,strErrorClass,1);};function _validateInternal(form,strErrorClass,nErrorThrowType){var strErrorMessage="";var objFirstError=null;if(nErrorThrowType==0){strErrorMessage=(form.err)?form.err:_getLanguageText("err_form");};var fields=_GenerateFormFields(form);for(var i=0;i<fields.length;++i){var field=fields[i];if(!field.IsValid(fields)){field.SetClass(strErrorClass);if(nErrorThrowType==1){_throwError(field);return false;}else{if(objFirstError==null){objFirstError=field;}strErrorMessage=_handleError(field,strErrorMessage);bError=true;}}else{field.ResetClass(strErrorClass);}};if(objFirstError!=null){objFirstError.element.focus();return false;};return true;};function _getLanguageText(id){objTextsInternal=new _jsVal_Language();objTexts=null;try{objTexts=new jsVal_Language();}catch(ignored){};switch(id){case"err_form":strResult=(!objTexts||!objTexts.err_form)?objTextsInternal.err_form:objTexts.err_form;break;case"err_enter":strResult=(!objTexts||!objTexts.err_enter)?objTextsInternal.err_enter:objTexts.err_enter;break;case"err_select":strResult=(!objTexts||!objTexts.err_select)?objTextsInternal.err_select:objTexts.err_select;break;};return strResult;};function _GenerateFormFields(form){var arr=new Array();for(var i=0;i<form.length;++i){var element=form.elements[i];var index=_getElementIndex(arr,element);if(index==-1){arr[arr.length]=new _Field(element,form);}else{arr[index].Merge(element);}};return arr;};function _getElementIndex(arr,element){if(element.name){var elementName=element.name.toLowerCase();for(var i=0;i<arr.length;++i){if(arr[i].element.name){if(arr[i].element.name.toLowerCase()==elementName){return i;}};};}return-1;};function _jsVal_Language(){this.err_form="Please enter/select values for the following fields:\n\n";this.err_select="Please select a valid \"%FIELDNAME%\"";this.err_enter="Please enter a valid \"%FIELDNAME%\"";};function _Field(element,form){this.type=element.type;this.element=element;this.exclude=element.exclude||element.getAttribute('exclude');this.err=element.err||element.getAttribute('err');this.required=_parseBoolean(element.required||element.getAttribute('required'));this.realname=element.realname||element.getAttribute('realname');this.elements=new Array();switch(this.type){case"textarea":case"password":case"text":case"file":this.value=element.value;this.minLength=element.minlength||element.getAttribute('minlength');this.maxLength=element.maxlength||element.getAttribute('maxlength');this.regexp=this._getRegEx(element);this.minValue=element.minvalue||element.getAttribute('minvalue');this.maxValue=element.maxvalue||element.getAttribute('maxvalue');this.equals=element.equals||element.getAttribute('equals');this.callback=element.callback||element.getAttribute('callback');break;case"select-one":case"select-multiple":this.values=new Array();for(var i=0;i<element.options.length;++i){if(element.options[i].selected&&(!this.exclude||element.options[i].value!=this.exclude)){this.values[this.values.length]=element.options[i].value;}}this.min=element.min||element.getAttribute('min');this.max=element.max||element.getAttribute('max');this.equals=element.equals||element.getAttribute('equals');break;case" ":this.min=element.min||element.getAttribute('min');this.max=element.max||element.getAttribute('max');case"radio":this.required=_parseBoolean(this.required||element.getAttribute('required'));this.values=new Array();if(element.checked){this.values[0]=element.value;}this.elements[0]=element;break;};};_Field.prototype.Merge=function(element){var required=_parseBoolean(element.getAttribute('required'));if(required){this.required=true;};if(!this.err){this.err=element.getAttribute('err');};if(!this.equals){this.equals=element.getAttribute('equals');};if(!this.callback){this.callback=element.getAttribute('callback');};if(!this.realname){this.realname=element.getAttribute('realname');};if(!this.max){this.max=element.getAttribute('max');};if(!this.min){this.min=element.getAttribute('min');};if(!this.regexp){this.regexp=this._getRegEx(element);};if(element.checked){this.values[this.values.length]=element.value;};this.elements[this.elements.length]=element;};_Field.prototype.IsValid=function(arrFields){switch(this.type){case"textarea":case"password":case"text":case"file":return this._ValidateText(arrFields);case"select-one":case"select-multiple":case"radio":case"checkbox":return this._ValidateGroup(arrFields);default:return true;};};_Field.prototype.SetClass=function(newClassName){if((newClassName)&&(newClassName!="")){if((this.elements)&&(this.elements.length>0)){for(var i=0;i<this.elements.length;++i){if(this.elements[i].className!=newClassName){this.elements[i].oldClassName=this.elements[i].className;this.elements[i].className=newClassName;}}}else{if(this.element.className!=newClassName){this.element.oldClassName=this.element.className;this.element.className=newClassName;}};}};_Field.prototype.ResetClass=function(errorClass){if((this.type!="button")&&(this.type!="submit")&&(this.type!="reset"&&(this.type!="checkbox"))){if((this.elements)&&(this.elements.length>0)){for(var i=0;i<this.elements.length;++i){if(this.type!="radio"){if(this.elements[i].oldClassName){this.elements[i].className=this.elements[i].oldClassName;}else{if(this.element[i].className==errorClass){this.element.className="";}}}}}else{if(this.element.oldClassName){this.element.className=this.element.oldClassName;}else{if(this.element.className==errorClass){this.element.className="";}}};};};_Field.prototype._getRegEx=function(element){regex=element.regexp||element.getAttribute('regexp');if(regex==null)return null;retype=typeof(regex);if(retype.toUpperCase()=="FUNCTION")return regex;else if((retype.toUpperCase()=="STRING")&&!(regex=="JSVAL_RX_EMAIL")&&!(regex=="JSVAL_RX_TEL")&&!(regex=="JSVAL_RX_PC")&&!(regex=="JSVAL_RX_ZIP")&&!(regex=="JSVAL_RX_MONEY")&&!(regex=="JSVAL_RX_CREDITCARD")&&!(regex=="JSVAL_RX_POSTALZIP")&&!(regex=="JSVAL_RX_TEXT")&&!(regex=="JSVAL_RX_ADDRESS")){nBegin=0;nEnd=0;if(regex.charAt(0)=="/")nBegin=1;if(regex.charAt(regex.length-1)=="/")nEnd=0;return new RegExp(regex.slice(nBegin,nEnd));}else{return regex;};};_Field.prototype._ValidateText=function(arrFields){if((this.required)&&(this.callback)){nCurId=this.element.id?this.element.id:"";nCurName=this.element.name?this.element.name:"";eval("bResult = "+this.callback+"('"+nCurId+"', '"+nCurName+"', '"+this.value+"');");if(bResult==false){return false;};}else{if(this.required&&!this.value){return false;};if(this.value&&(this.minLength&&this.value.length<this.minLength)){return false;};if(this.value&&(this.maxLength&&this.value.length>this.maxLength)){return false;};if(this.regexp){if(!_checkRegExp(this.regexp,this.value)){if(!this.required&&this.value){return false;}if(this.required){return false;}}else{return true;};};if(this.equals){for(var i=0;i<arrFields.length;++i){var field=arrFields[i];if((field.element.name==this.equals)||(field.element.id==this.equals)){if(field.element.value!=this.value){return false;};break;};};};if(this.required){var fValue=parseFloat(this.value);if((this.minValue||this.maxValue)&&isNaN(fValue)){return false;};if((this.minValue)&&(fValue<this.minValue)){return false;};if((this.maxValue)&&(fValue>this.maxValue)){return false};};}return true;};_Field.prototype._ValidateGroup=function(arrFields){if(this.required&&this.values.length==0){return false;};if(this.required&&this.min&&this.min>this.values.length){return false;};if(this.required&&this.max&&this.max<this.values.length){return false;};return true;};function _handleError(field,strErrorMessage){var obj=field.element;strNewMessage=strErrorMessage+((field.realname)?field.realname:((obj.id)?obj.id:obj.name))+"\n";return strNewMessage;};function _throwError(field){var obj=field.element;switch(field.type){case"text":case"password":case"textarea":case"file":alert(_getError(field,"err_enter"));try{obj.focus();}catch(ignore){}break;case"select-one":case"select-multiple":case"radio":case"checkbox":alert(_getError(field,"err_select"));break;};};function _getError(field,str){var obj=field.element;strErrorTemp=(field.err)?field.err:_getLanguageText(str);idx=strErrorTemp.indexOf("\\n");while(idx>-1){strErrorTemp=strErrorTemp.replace("\\n","\n");idx=strErrorTemp.indexOf("\\n");};return strErrorTemp.replace("%FIELDNAME%",(field.realname)?field.realname:((obj.id)?obj.id:obj.name));};function _parseBoolean(value){return!(!value||value==0||value=="0"||value=="false");};function _checkRegExp(regx,value){switch(regx){case"JSVAL_RX_EMAIL":return((/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,5})+$/).test(value));case"JSVAL_RX_TEXT":return((/^[a-zA-Z\s-a-zA-Z]*$/).test(value));case"JSVAL_RX_TEL":return((/^[0-9\s0-9]*$/).test(value));case"JSVAL_RX_ADDRESS":return((/^[0-9A-Za-z\sA-Za-z'-]*$/).test(value));case"JSVAL_RX_PC":return((/^[a-z]\d[a-z] ?\d[a-z]\d$/i).test(value));case"JSVAL_RX_ZIP":return((/^\d{5}$/).test(value));case"JSVAL_RX_MONEY":return((/^\d+([\.]\d\d)?$/).test(value));case"JSVAL_RX_CREDITCARD":return(!isNaN(value));case"JSVAL_RX_POSTALZIP":if(value.length==6||value.length==7)return((/^[a-zA-Z]\d[a-zA-Z] ?\d[a-zA-Z]\d$/).test(value));if(value.length==5||value.length==10)return((/^\d{5}(\-\d{4})?$/).test(value));break;default:return(regx.test(value));};};
