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();
}
};
if(objFirstError!=null){
alert(strErrorMessage);
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)){
if((element.options[i].selected==true)&&(element.options[i].value!="")){

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 "checkbox":
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(){
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.element.className="";
}
}
}else{
if(this.elements.oldClassName){
this.element.className=this.element.oldClassName;
}
else{
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_USERNAME") &&!(regex=="JSVAL_RX_ZIP")&&!(regex=="JSVAL_RX_MONEY")&&!(regex=="JSVAL_RX_PS")&&!(regex=="JSVAL_RX_ADD")&&!(regex=="JSVAL_RX_BAD")&&!(regex=="JSVAL_RX_NEWEMAIL")&&!(regex=="JSVAL_RX_CHAR")&&!(regex=="JSVAL_RX_WEBLINK")&&!(regex=="JSVAL_RX_INTVAL")
&&!(regex=="JSVAL_RX_IMG")&&!(regex=="JSVAL_RX_CREDITCARD")&&!(regex=="JSVAL_RX_POSTALZIP")&&!(regex=="JSVAL_RX_RAJ"))
{
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));
return ((/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/).test(value));

case "JSVAL_RX_TEL":
return((/^1?[\-]?\(?\d{3}\)?[\-]?\d{3}[\-]?\d{4}$/).test(value));

case "JSVAL_RX_PC":
//return((/[^0-9 \s]$/).test(value));
	var user = value;
	var ValidChars = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ_.1234567890";
	var IsNumber=true;
	var Char;
			   
	for (i = 0; i < user.length && IsNumber == true; i++) 
	{ 
		Char = user.charAt(i) ; 
		if (ValidChars.indexOf(Char) == -1) 
		{
			IsNumber = false;
			
			return false;
		}
	}
	
	/*if(value.search(/^[a-zA-Z]/))
	{
		alert("innnnnnnnnnnnn");
		//alert("Please enter valid first name.") ;
		//document.register.first_name.focus();
		return false;
	}*/
	return true;
	/*	{
		return((/[^0-9 \ ._$]$/).test(value));
	}*/
	

//return((/[^0-9 \ *._$]/).test(value));
//return((/[^\s][^0-9][a-z A-Z]/).test(value));
//return((/^[a-z][A-Z][^\s]/).test(value));


case "JSVAL_RX_CHAR":
//return((/[^0-9 \s]$/).test(value));
	var user = value;
	if(user!="")
	{
	var ValidChars = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ-";
	var IsNumber=true;
	var Char;
			   
	for (i = 0; i < user.length && IsNumber == true; i++) 
	{ 
		Char = user.charAt(i) ; 
		if (ValidChars.indexOf(Char) == -1) 
		{
			IsNumber = false;
			
			return false;
		}
	}
	}
	/*if(value.search(/^[a-zA-Z]/))
	{
		alert("innnnnnnnnnnnn");
		//alert("Please enter valid first name.") ;
		//document.register.first_name.focus();
		return false;
	}*/
	return true;
	
case "JSVAL_RX_TYPE":
	var user = value;
	if(user=="")
		return false;
		else
		return true;

case "JSVAL_RX_TYPE1":
	var user = value;
	if(user=="-1")
		return false;
		else
		return true;		
	
case "JSVAL_RX_INTVAL":
//return((/[^0-9 \s]$/).test(value));
	var user = value;
	var ValidChars = "0123456789.0123456789";
	var IsNumber=true;
	var Char;
			   
	for (i = 0; i < user.length && IsNumber == true; i++) 
	{ 
		Char = user.charAt(i) ; 
		if (ValidChars.indexOf(Char) == -1) 
		{
			IsNumber = false;
			
			return false;
		}
	}	
	/*if(value.search(/^[a-zA-Z]/))
	{
		alert("innnnnnnnnnnnn");
		//alert("Please enter valid first name.") ;
		//document.register.first_name.focus();
		return false;
	}*/
	return true;
	
case "JSVAL_RX_WEBLINK":
var sUrl = value;
	if(sUrl != "")
	{
			var url = false ;
			var isNot = "`!@$^*()[{]}\|;'',<> " ;
			if (sUrl.length != 0 )
			{
				if (sUrl.indexOf('://') != -1)
				{
					if (sUrl.indexOf('"') == -1)
					{
						url = true ;
						if (sUrl.length <= 7 )
						{
							url = false ;	
						}
						for (i=0;i!=sUrl.length;++i)
						{
							if (isNot.indexOf(sUrl.substring(i,i+1)) != -1)
							{
								url = false ;	
							}
						}
					}
				}
			}	
			if (url == false )
			{
				//alert("Please enter valid URL.\nEx. http://www.test.com") ;
				return false;
			}
			return true;
	}
	
case "JSVAL_RX_TEL":
return((/^1?[\-]?\(?\d{3}\)?[\-]?\d{3}[\-]?\d{4}$/).test(value));

case "JSVAL_RX_ADD":
var patternDesc=/^([a-zA-Z0-9]+)/;
	return patternDesc.test(value);
case "JSVAL_RX_BAD":
var patternDesc=/^([a-zA-Z0-9]+)/;
//alert (value);
//var badarr = bad.value;
var badword = document.frmachievement.bad.value;
alert (badword);
				
				var word_arr = badword.split(",");
				//alert(word_arr);
				var aString=new String(value);
				
				//alert (aString);
				//alert (word_arr.length);
				for(var i=0; i < word_arr.length; i++)
				{
					if(patternDesc.test(value)=='')
					{
						alert("Please enter event desc");
						return false;
					}
					if(aString.match(word_arr[i])!=null)
					{
						//aString = aString.replace(word_arr[i],"******");
						//value = aString;
						//alert("enter correct word");
						return false;
					}
				}
				


return patternDesc.test(value);
case "JSVAL_RX_PS":
	var user = value;
	var ValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	var IsNumber=true;
	var Char;		   
	for (i = 0; i < user.length && IsNumber == true; i++) 
	{ 
		Char = user.charAt(i) ; 
		if (ValidChars.indexOf(Char) == -1) 
		{
			IsNumber = false;
			
			return false;
		}
	}	
	/*if(value.search(/^[a-zA-Z]/))
	{
		alert("innnnnnnnnnnnn");
		//alert("Please enter valid first name.") ;
		//document.register.first_name.focus();
		return false;
	}*/
	return true;
	/*	{
		return((/[^0-9 \ ._$]$/).test(value));
	}*/
	

//return((/[^0-9 \ *._$]/).test(value));
//return((/[^\s][^0-9][a-z A-Z]/).test(value));
//return((/^[a-z][A-Z][^\s]/).test(value));
case"JSVAL_RX_USERNAME":
	
	var username = value;
	if(username.length<3)
		return false;
	var temp;

	if(!(username.charAt(0)>="A" && username.charAt(0)<="z"))
		return false;
	if((username.charAt(username.length-1)>="A" && username.charAt(username.length-1)<="z") || (username.charAt(username.length-1)>="0" && username.charAt(username.length-1)<="9"))
		temp="";
	else
		return false;
		
	for(var i=0;i<username.length;i++){
		temp=username.charAt(i);
		
		if((temp>="0" && temp<="9") || (temp>="A" && temp<="z") || (temp=="_") || (temp=="."))
			temp="";
		else
			return false;
		
	}
	return true;
	
	
case"JSVAL_RX_IMG":
var property_file=value; //document.frmpicture.picture.value;
				if(property_file!="")
				{
					var file = property_file.substring(property_file.length -5);
					var ext = file.slice(file.indexOf(".")).toLowerCase();
					if(ext!=".gif" && ext!=".png" && ext!=".jpg" && ext!=".jpeg")
					{
						 //alert("Images type should be .jpg or .jpeg or .png or .gif.");	
						 
						 return false;
					}
					else
					{
						return true;
					}
				}
				return true;
case "JSVAL_RX_ZIP":
return((/^\d{6}$/).test(value));
case "JSVAL_RX_MONEY":
return((/^\d+([\.]\d\d)?$/).test(value));
case "JSVAL_RX_CREDITCARD":
return(!isNaN(value));
case "JSVAL_RX_RAJ":
	if(value <=0 || value =="")
	{
		return false;
		//alert("Please Enter Valid Price.")
	}
	else if(value != "0")
	{
		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));
case "JSVL_RX_NEWEMAIL":
return ((/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/).test(value));


break;
default:
return(regx.test(value));
};
};
