function validateCompleteForm(_1,_2){
	return _validateInternal(_1,_2,0);
}

function validateStandard(_3,_4){
	return _validateInternal(_3,_4,1);
}

function _validateInternal(_5,_6,_7){
	var _8="";
	var _9=null;
	if(_7==0){
	_8=(_5.err)?_5.err:_getLanguageText("err_form");
}

var _a=_GenerateFormFields(_5);
	for(var i=0;i<_a.length;++i){
		var _c=_a[i];
		if(!_c.IsValid(_a)){
			_c.SetClass(_6);
			if(_7==1){
				_throwError(_c);
				return false;
			}else{
				if(_9==null){
				_9=_c;
				}
			_8=_handleError(_c,_8);
			bError=true;
			}
		}else{
			_c.ResetClass();
		}
	}
	if(_9!=null){
		alert(_8);
		_9.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(_e){
	var _f=new Array();
	for(var i=0;i<_e.length;++i){
		var _11=_e.elements[i];
		var _12=_getElementIndex(_f,_11);
		if(_12==-1){
			_f[_f.length]=new Field(_11,_e);
		}else{
			_f[_12].Merge(_11);
		}
	}
return _f;
}

function _getElementIndex(arr,_14){
	if(_14.id){
		var _15=_14.id.toLowerCase();
		for(var i=0;i<arr.length;++i){
			if(arr[i].element.id){
				if(arr[i].element.id.toLowerCase()==_15){
					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(_17,_18){
	this.type=_17.type;
	this.element=_17;
	this.exclude=_17.exclude||_17.getAttribute("exclude");
	this.err=_17.err||_17.getAttribute("err");
	this.required=_parseBoolean(_17.required||_17.getAttribute("required"));
	this.realname=_17.realname||_17.getAttribute("realname");
	this.elements=new Array();
switch(this.type){
	case "textarea":
	case "password":
	case "text":
	case "file":
		this.value=_17.value;
		this.minLength=_17.minlength||_17.getAttribute("minlength");
		this.maxLength=_17.maxlength||_17.getAttribute("maxlength");
		this.regexp=this._getRegEx(_17);
		this.minValue=_17.minvalue||_17.getAttribute("minvalue");
		this.maxValue=_17.maxvalue||_17.getAttribute("maxvalue");
		this.equals=_17.equals||_17.getAttribute("equals");
		this.callback=_17.callback||_17.getAttribute("callback");
		break;
	case "select-one":
	case "select-multiple":
		this.values=new Array();
		for(var i=0;i<_17.options.length;++i){
			if(_17.options[i].selected&&(!this.exclude||_17.options[i].value!=this.exclude)){
				this.values[this.values.length]=_17.options[i].value;
			}
		}
		this.min=_17.min||_17.getAttribute("min");
		this.max=_17.max||_17.getAttribute("max");
		this.equals=_17.equals||_17.getAttribute("equals");
		break;
	case "checkbox":
		this.min=_17.min||_17.getAttribute("min");
		this.max=_17.max||_17.getAttribute("max");
	case "radio":
		this.required=_parseBoolean(this.required||_17.getAttribute("required"));
		this.values=new Array();
		if(_17.checked){
			this.values[0]=_17.value;
		}
			this.elements[0]=_17;
		break;
	}
}

Field.prototype.Merge=function(_1a){
	var _1b=_parseBoolean(_1a.getAttribute("required"));
	if(_1b){
		this.required=true;
	}
	if(!this.err){
		this.err=_1a.getAttribute("err");
	}
	if(!this.equals){
		this.equals=_1a.getAttribute("equals");
	}
	if(!this.callback){
		this.callback=_1a.getAttribute("callback");
	}
	if(!this.realname){
		this.realname=_1a.getAttribute("realname");
	}
	if(!this.max){
		this.max=_1a.getAttribute("max");
	}
	if(!this.min){
		this.min=_1a.getAttribute("min");
	}
	if(!this.regexp){
		this.regexp=this._getRegEx(_1a);
	}
	if(_1a.checked){
		this.values[this.values.length]=_1a.value;
	}
		this.elements[this.elements.length]=_1a;
};

Field.prototype.IsValid=function(_1c){
	switch(this.type){
		case "textarea":
		case "password":
		case "text":
		case "file":
		return this._ValidateText(_1c);
		case "select-one":
		case "select-multiple":
		case "radio":
		case "checkbox":
		return this._ValidateGroup(_1c);
		default:
		return true;
	}
};

Field.prototype.SetClass=function(_1d){
	if((_1d)&&(_1d!="")){
		if((this.elements)&&(this.elements.length>0)){
			for(var i=0;i<this.elements.length;++i){
				if(this.elements[i].className!=_1d){
				this.elements[i].oldClassName=this.elements[i].className;
				this.elements[i].className+=' '+_1d;
			}
		}
	}else{
		if(this.element.className!=_1d){
			this.element.oldClassName=this.element.className;
			this.element.className+=' '+_1d;
		}
	}
	}
};

Field.prototype.ResetClass=function(){
if((this.type!="button")&&(this.type!="submit")&&(this.type!="reset")){
if((this.elements)&&(this.elements.length>0)){
for(var i=0;i<this.elements.length;++i){
if(this.elements[i].oldClassName){
this.elements[i].className=this.elements[i].oldClassName;
}else{
this.elements[i].className="";
}
}
}else{
if(this.element.oldClassName){
this.element.className=this.element.oldClassName;
}else{
}
}
}
};

Field.prototype._getRegEx=function(_20){
regex=_20.regexp||_20.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_URL")&&!(regex=="JSVAL_RX_TEL")&&!(regex=="JSVAL_RX_PC")&&!(regex=="JSVAL_RX_ZIP")&&!(regex=="JSVAL_RX_MONEY")&&!(regex=="JSVAL_RX_CREDITCARD")&&!(regex=="JSVAL_RX_POSTALZIP")){
nBegin=0;
nEnd=regex.length-1;
if(regex.charAt(0)=="/"){
nBegin=1;
}
if(regex.charAt(regex.length-1)=="/"){
nEnd=regex.length-2;
}
return new RegExp(regex.slice(nBegin,nEnd));
}else{
return regex;
}
}
};
Field.prototype._ValidateText=function(_21){
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(!this.required&&!this.value){
return true;
}
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<_21.length;++i){
var _23=_21[i];
if((_23.element.name==this.equals)||(_23.element.id==this.equals)){
if(_23.element.value!=this.value){
return false;
}
break;
}
}
}
if(this.required){
var _24=parseFloat(this.value);
if((this.minValue||this.maxValue)&&isNaN(_24)){
return false;
}
if((this.minValue)&&(_24<this.minValue)){
return false;
}
if((this.maxValue)&&(_24>this.maxValue)){
return false;
}
}
}
return true;
};
Field.prototype._ValidateGroup=function(_25){
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(_26,_27){
var obj=_26.element;
strNewMessage=_27+((_26.realname)?_26.realname:((obj.id)?obj.id:obj.name))+"\n";
return strNewMessage;
}
function _throwError(_29){
var obj=_29.element;
switch(_29.type){
case "text":
case "password":
case "textarea":
case "file":
alert(_getError(_29,"err_enter"));
try{
obj.focus();
}
catch(ignore){
}
break;
case "select-one":
case "select-multiple":
case "radio":
case "checkbox":
alert(_getError(_29,"err_select"));
break;
}
}
function _getError(_2b,str){
var obj=_2b.element;
strErrorTemp=(_2b.err)?_2b.err:_getLanguageText(str);
idx=strErrorTemp.indexOf("\\n");
while(idx>-1){
strErrorTemp=strErrorTemp.replace("\\n","\n");
idx=strErrorTemp.indexOf("\\n");
}
return strErrorTemp.replace("%FIELDNAME%",(_2b.realname)?_2b.realname:((obj.id)?obj.id:obj.name));
}
function _parseBoolean(_2e){
return !(!_2e||_2e==0||_2e=="0"||_2e=="false");
}
function _checkRegExp(_2f,_30){
switch(_2f){
case "JSVAL_RX_EMAIL":
return ((/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,5})$/).test(_30));
case "JSVAL_RX_URL":
return ((/^(https?:\/\/)?[\w\-]+(\.[\w\-]+)*\.[a-z]{2,5}$/i).test(_30));
case "JSVAL_RX_TEL":
return ((/^1?[\- ]?\(?\d{3}\)?[\- ]?\d{3}[\- ]?\d{4}$/).test(_30));
case "JSVAL_RX_PC":
return ((/^[a-z]\d[a-z] ?\d[a-z]\d$/i).test(_30));
case "JSVAL_RX_ZIP":
return ((/^\d{5}$/).test(_30));
case "JSVAL_RX_MONEY":
return ((/^\d+([\.]\d\d)?$/).test(_30));
case "JSVAL_RX_CREDITCARD":
return (!isNaN(_30));
case "JSVAL_RX_POSTALZIP":
if(_30.length==6||_30.length==7){
return ((/^[a-zA-Z]\d[a-zA-Z] ?\d[a-zA-Z]\d$/).test(_30));
}
if(_30.length==5||_30.length==10){
return ((/^\d{5}(\-\d{4})?$/).test(_30));
}
break;
default:
return (_2f.test(_30));
}
}

