		aValidator = new Array();
		
		/*  ************************************************ */
		/*  *******************  CLASSES  ****************** */
		/*  ************************************************ */
		function Class_Validator( TypeValidator, Id, ControlToValidate, ErrorMessage, Display, Enabled )
		{
			this.TypeValidator = TypeValidator;
			this.Id = Id;
			this.ControlToValidate = ControlToValidate;
			this.ErrorMessage = ErrorMessage;
			this.Display = Display;
			this.Enabled = Enabled;
			this.EnabledCopy = Enabled;
			return this;
		}
		function Class_RequiredFieldValidator( TypeValidator, Id, ControlToValidate, ErrorMessage, Display, Enabled, InitialValue )
		{
			this.base = Class_Validator
			this.base(TypeValidator, Id, ControlToValidate, ErrorMessage, Display, Enabled);
			this.InitialValue = InitialValue;
			return this;
		}
		function Class_RequiredFieldCheckedValidator( TypeValidator, Id, ControlToValidate, ErrorMessage, Display, Enabled )
		{
			this.base = Class_Validator
			this.base(TypeValidator, Id, ControlToValidate, ErrorMessage, Display, Enabled);
			return this;
		}
		function Class_RegularExpressionValidator( TypeValidator, Id, ControlToValidate, ErrorMessage, Display, Enabled, ValidationExpression )
		{
			this.base = Class_Validator
			this.base(TypeValidator, Id, ControlToValidate, ErrorMessage, Display, Enabled);
			this.ValidationExpression = ValidationExpression;
			return this;
		}
		function Class_CustomValidator( TypeValidator, Id, ControlToValidate, ErrorMessage, Display, Enabled, ClientValidationFunction )
		{
			this.base = Class_Validator
			this.base(TypeValidator, Id, ControlToValidate, ErrorMessage, Display, Enabled);
			this.ClientValidationFunction = ClientValidationFunction;
			return this;
		}
		function Class_CompareValidator( TypeValidator, Id, ControlToValidate, ErrorMessage, Display, Enabled, ControlToCompare, ValueToCompare, Type, Operator, Digits, GroupChar, DecimalChar, DateOrder, Century, CutOffYear )
		{
			this.base = Class_Validator
			this.base(TypeValidator, Id, ControlToValidate, ErrorMessage, Display, Enabled);
			this.ControlToCompare = ControlToCompare;
			this.ValueToCompare = ValueToCompare;
			this.Type = Type;
			this.Operator = Operator;
			this.Digits = Digits;
			this.GroupChar = GroupChar;
			this.DecimalChar = DecimalChar;
			this.DateOrder = DateOrder;
			this.Century = Century;
			this.CutOffYear = CutOffYear;
			return this;
		}
		function Class_RangeValidator( TypeValidator, Id, ControlToValidate, ErrorMessage, Display, Enabled, MinimumValue, MaximumValue, Type, Digits, GroupChar, DecimalChar, DateOrder, Century, CutOffYear )
		{
			this.base = Class_Validator
			this.base(TypeValidator, Id, ControlToValidate, ErrorMessage, Display, Enabled);
			this.MinimumValue = MinimumValue;
			this.MaximumValue = MaximumValue;
			this.Type = Type;
			this.Digits = Digits;
			this.GroupChar = GroupChar;
			this.DecimalChar = DecimalChar;
			this.DateOrder = DateOrder;
			this.Century = Century;
			this.CutOffYear = CutOffYear;
			return this;
		}
		/*  ************************************************ */
		/*  ****************  END  CLASSES  **************** */
		/*  ************************************************ */
		
		/*  ************************************************ */
		/*  ************* METHODS ADD OBJECTS ************** */
		/*  ************************************************ */
		function AddObj_RequiredFieldValidator( Id, ControlToValidate, ErrorMessage, Display, Enabled, InitialValue )
		{
			//v[ aValidator.length ] = new Class_RequiredFieldValidator( "RequiredFieldValidator", Id, ControlToValidate, ErrorMessage, Display, Enabled );
			aValidator.push(new Class_RequiredFieldValidator( "RequiredFieldValidator", Id, ControlToValidate, ErrorMessage, Display, Enabled, InitialValue ));
		}
		function AddObj_RequiredFieldCheckedValidator( Id, ControlToValidate, ErrorMessage, Display, Enabled )
		{
			aValidator.push(new Class_RequiredFieldCheckedValidator( "RequiredFieldCheckedValidator", Id, ControlToValidate, ErrorMessage, Display, Enabled ));
		}
		function AddObj_RegularExpressionValidator( Id, ControlToValidate, ErrorMessage, Display, Enabled, ValidationExpression )
		{
			aValidator.push(new Class_RegularExpressionValidator( "RegularExpressionValidator", Id, ControlToValidate, ErrorMessage, Display, Enabled, ValidationExpression ));
		}
		function AddObj_CustomValidator( Id, ControlToValidate, ErrorMessage, Display, Enabled, ClientValidationFunction )
		{
			aValidator.push(new Class_CustomValidator( "CustomValidator", Id, ControlToValidate, ErrorMessage, Display, Enabled, ClientValidationFunction ));
		}
		function AddObj_CompareValidator( Id, ControlToValidate, ErrorMessage, Display, Enabled, ControlToCompare, ValueToCompare, Type, Operator, Digits, GroupChar, DecimalChar, DateOrder, Century, CutOffYear )
		{
		//digits = 2;groupchar = ","; decimalchar = ".";
		//dateorder = "mdy"; cutoffyear="29"; century="2000";
			aValidator.push(new Class_CompareValidator( "CompareValidator", Id, ControlToValidate, ErrorMessage, Display, Enabled, ControlToCompare, ValueToCompare, Type, Operator, Digits, GroupChar, DecimalChar, DateOrder, Century, CutOffYear));
		}
		function AddObj_RangeValidator( Id, ControlToValidate, ErrorMessage, Display, Enabled, MinimumValue, MaximumValue, Type, Digits, GroupChar, DecimalChar, DateOrder, Century, CutOffYear )
		{
			aValidator.push(new Class_RangeValidator( "RangeValidator", Id, ControlToValidate, ErrorMessage, Display, Enabled, MinimumValue, MaximumValue, Type, Digits, GroupChar, DecimalChar, DateOrder, Century, CutOffYear));
		}
		/*  ************************************************ */
		/*  ************ END METHODS ADD OBJECTS *********** */
		/*  ************************************************ */

		/* ************************************************* */
		/* ************** FUNTIONS VALIDATION ************** */
		/* ************************************************* */
		function Fn_RequiredFieldCheckedValidator( oValidator ) //private
		{	//if the validation is negative
			//	  - return 1 -   or   - return 2 (and error message is show immediately) -
			//else return 0
			function OptionsListIsChecked_Validator( sControlsName )
			{
				var bIsChecked = false;var i = 0;
				var aObj = document.getElementsByName(sControlsName);				
				while ( (i < aObj.length) && (!bIsChecked) )
				{//alert( aObj[i].id + "-" +aObj[i].value );					
					bIsChecked = aObj[i].checked;
					i++;
				}
				return bIsChecked;
			}

			var iResultValidation = 0;
			if ( !OptionsListIsChecked_Validator( oValidator.ControlToValidate ) )
			{
				if ( !bShowAllErrorTogether_Validator ) ShowHideTextAllValidator( "hide" );
				ShowHideTextValidator( oValidator.Id, oValidator.Display, "show" );
				if ( bShowAllErrorTogether_Validator )
					iResultValidation = 1;
				else
				{
					alert( oValidator.ErrorMessage );
					if ( (document.getElementsByName(oValidator.ControlToValidate)) != null )
					{
						var aObj = document.getElementsByName(oValidator.ControlToValidate);
						aObj[0].focus();
					}
					iResultValidation = 2;
				}
			}
			else
				ShowHideTextValidator( oValidator.Id, oValidator.Display, "hide" );
			return iResultValidation

		}
		function Fn_RequiredFieldValidator( oValidator ) //private
		{	//if the validation is negative
			//	  - return 1 -   or   - return 2 (and error message is show immediately) -
			//else return 0
			var iResultValidation = 0;

			var sInitialValue = ""+oValidator.InitialValue
			var sActualValue = ""+ValidatorGetValue_Validation( oValidator.ControlToValidate, oValidator.Id )
			//var sActualValue = ""+document.getElementById( oValidator.ControlToValidate ).value
			if ( sActualValue == sInitialValue )
			{
				if ( !bShowAllErrorTogether_Validator ) ShowHideTextAllValidator( "hide" );
				ShowHideTextValidator( oValidator.Id, oValidator.Display, "show" );
				if ( bShowAllErrorTogether_Validator )
					iResultValidation = 1;
				else
				{
					alert( oValidator.ErrorMessage );
					if ( (document.getElementById(oValidator.ControlToValidate)) != null )
					{
						document.getElementById( oValidator.ControlToValidate ).focus();
						//alert(document.getElementById( oValidator.ControlToValidate ).tagName )
						if (document.getElementById( oValidator.ControlToValidate ).tagName.toUpperCase() !="SELECT")
							document.getElementById( oValidator.ControlToValidate ).select();
					}
					iResultValidation = 2;
				}
			}
			else
				ShowHideTextValidator( oValidator.Id, oValidator.Display, "hide" );
			return iResultValidation
		}
		function Fn_RegularExpressionValidator( oValidator ) //private
		{	//if the validation is negative
			//	  - return 1 -   or   - return 2 (and error message is show immediately) -
			//else return 0
			var iResultValidation = 0;
			re = new RegExp( oValidator.ValidationExpression )
			var sActualValue = ValidatorGetValue_Validation( oValidator.ControlToValidate, oValidator.Id );
			//var sActualValue = document.getElementById( oValidator.ControlToValidate ).value;
			if ( sActualValue != "" )
			{
				if ( !re.test( sActualValue ) )
				{
					if ( !bShowAllErrorTogether_Validator ) ShowHideTextAllValidator( "hide" );
					ShowHideTextValidator( oValidator.Id, oValidator.Display, "show" );
					if ( bShowAllErrorTogether_Validator )
						iResultValidation = 1;
					else
					{
						alert( oValidator.ErrorMessage );
						if ( (document.getElementById(oValidator.ControlToValidate)) != null )
						{
							document.getElementById( oValidator.ControlToValidate ).focus();
							document.getElementById( oValidator.ControlToValidate ).select();
						}
						iResultValidation = 2;
					}
				}
				else
					ShowHideTextValidator( oValidator.Id, oValidator.Display, "hide" );
			}
			else
				ShowHideTextValidator( oValidator.Id, oValidator.Display, "hide" );
			return iResultValidation
		}
		function Fn_CustomValidator( oValidator ) //private
		{	//if the validation is negative
			//	  - return 1 -   or   - return 2 (and error message is show immediately) -
			//else return 0
			var iResultValidation = 0;
			str = oValidator.ClientValidationFunction + "('" + oValidator.ControlToValidate +  "')";
			bExecFn = eval( str );
			if ( !bExecFn )
			{
				if ( !bShowAllErrorTogether_Validator ) ShowHideTextAllValidator( "hide" );
				ShowHideTextValidator( oValidator.Id, oValidator.Display, "show" );
				if ( bShowAllErrorTogether_Validator )
					iResultValidation = 1;
				else
				{
					alert( oValidator.ErrorMessage );
					document.getElementById( oValidator.ControlToValidate ).focus();			
					iResultValidation = 2;
				}
			}
			else
				ShowHideTextValidator( oValidator.Id, oValidator.Display, "hide" );
			return iResultValidation
		}
		//CompareValidatorEvaluateIsValid
		function Fn_CompareValidator(val)
		{
			var iResultValidation = 0;
			var value = ValidatorGetValue_Validation(val.ControlToValidate, val.Id);
			if (ValidatorTrim_Validation(value).length != 0)
			{
				var compareTo = "";
				if (null == document.getElementById(val.ControlToCompare)) {
					if (typeof(val.ValueToCompare) == "string") {
						compareTo = val.ValueToCompare;
					}
				}
				else
				{
					compareTo = ValidatorGetValue_Validation(val.ControlToCompare, val.Id);
				}
				var bReturn = ValidatorCompare_Validation(value, compareTo, val.Operator, val);
			}
			else
			{
				bReturn = true;
				iResultValidation = 0;//return true;
			}

			if ( !bReturn )
			{
				if ( !bShowAllErrorTogether_Validator ) ShowHideTextAllValidator( "hide" );
				ShowHideTextValidator( val.Id, val.Display, "show" );
				if ( bShowAllErrorTogether_Validator )
					iResultValidation = 1;
				else
				{
					alert( oValidator.ErrorMessage );
					document.getElementById( val.ControlToValidate ).focus();			
					iResultValidation = 2;
				}
			}
			else
				ShowHideTextValidator( val.Id, val.Display, "hide" );
			return iResultValidation

		}
		function Fn_RangeValidator(val)
		{
			var iResultValidation = 0;
			var value = ValidatorGetValue_Validation(val.ControlToValidate, val.Id);
			if (ValidatorTrim_Validation(value).length == 0)
			{
				bReturn = true;
				iResultValidation = 0;//return true;
			}
			else
			{
				bReturn = (ValidatorCompare_Validation(value, val.MinimumValue, "GreaterThanEqual", val) &&
						ValidatorCompare_Validation(value, val.MaximumValue, "LessThanEqual", val));
			   
				if ( !bReturn )
				{
					if ( !bShowAllErrorTogether_Validator ) ShowHideTextAllValidator( "hide" );
					ShowHideTextValidator( val.Id, val.Display, "show" );
					if ( bShowAllErrorTogether_Validator )
						iResultValidation = 1;
					else
					{
						alert( oValidator.ErrorMessage );
						document.getElementById( val.ControlToValidate ).focus();			
						iResultValidation = 2;
					}
				}
				else
					ShowHideTextValidator( val.Id, val.Display, "hide" );
			}
			return iResultValidation
		}
		/* ****************************************************************** */
		/* *** FUNCTION RELATED Fn_CompareValidator & Fn_RangeValidator ***** */
		/* ****************************************************************** */
		function ValidatorConvert_Validation(op, dataType, val)
		{
			function GetFullYear(year)
			{
				//alert( year );
				//alert( year + parseInt(century) );
				//restar = ((year < cutoffyear) ? 0 : 100 )
				//alert( "restar: " + restar );
				//alert(year + parseInt(century)) - ((year < cutoffyear) ? 0 : 100);
				return (year + parseInt(century)) - ((year < cutoffyear) ? 0 : 100);
			}
				//digits = 2;groupchar = ","; decimalchar = ".";
				//dateorder = "mdy"; cutoffyear="29"; century="2000";
 				digits = val.Digits;
 				groupchar = val.GroupChar;
 				decimalchar = val.DecimalChar;
				dateorder = val.DateOrder;
				cutoffyear = val.CutOffYear;
				century = val.Century;
		var num, cleanInput, m, exp;
			if (dataType == "Integer") {
				exp = /^\s*[-\+]?\d+\s*$/;
				if (op.match(exp) == null) 
					return null;
				num = parseInt(op, 10);
				return (isNaN(num) ? null : num);
			}
			else if(dataType == "Double") {
				exp = new RegExp("^\\s*([-\\+])?(\\d+)?(\\" + decimalchar + "(\\d+))?\\s*$");
				m = op.match(exp);
				if (m == null)
					return null;
				cleanInput = m[1] + (m[2].length>0 ? m[2] : "0") + "." + m[4];
				num = parseFloat(cleanInput);
				return (isNaN(num) ? null : num);            
			} 
			else if (dataType == "Currency") {
				exp = new RegExp("^\\s*([-\\+])?(((\\d+)\\" + groupchar + ")*)(\\d+)"
								+ ((digits > 0) ? "(\\" + decimalchar + "(\\d{1," + digits + "}))?" : "")
								+ "\\s*$");
				m = op.match(exp);
				if (m == null)
					return null;
				var intermed = m[2] + m[5] ;
				if (m[1]==null) m[1]="";
				cleanInput = m[1] + intermed.replace(new RegExp("(\\" + groupchar + ")", "g"), "") + ((digits > 0) ? "." + m[7] : 0);
				num = parseFloat(cleanInput);
				return (isNaN(num) ? null : num);            
			}
			else if (dataType == "Date") {
				var yearFirstExp = new RegExp("^\\s*((\\d{4})|(\\d{2}))([-/]|\\. ?)(\\d{1,2})\\4(\\d{1,2})\\s*$");
				m = op.match(yearFirstExp);
				var day, month, year;
				var bD = true;
				if (m != null)
				{
					if ( m[2] != null)
					{
						if ((m[2].length == 4) || (dateorder == "ymd"))
						{ bD = false;
							//if (m != null && (m[2].length == 4 || dateorder == "ymd")) {
							day = m[6];
							month = m[5];
							year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10))
						}
					}
				}
				if ( bD ) {
					if (dateorder == "ymd"){
						return null;		
					}						
					var yearLastExp = new RegExp("^\\s*(\\d{1,2})([-/]|\\. ?)(\\d{1,2})\\2((\\d{4})|(\\d{2}))\\s*$");
					m = op.match(yearLastExp);
					if (m == null) {
						return null;
					}
					if (dateorder == "mdy") {
						day = m[3];
						month = m[1];
					}
					else {
						day = m[1];
						month = m[3];
					}
					//alert( m[5] );
					//alert(GetFullYear(parseInt(m[6], 10)))
					//alert( "y " + year );
					if (m[5] != null)
						year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));
					else
						year = GetFullYear(parseInt(m[6], 10));
					//alert( "final: " +  year );
				}
				month -= 1;
				var date = new Date(year, month, day);
				return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate()) ? date.valueOf() : null;
			}
			else {
				return op.toString();
			}
		}
		function ValidatorCompare_Validation(operand1, operand2, operator, val)
		{
			var dataType = val.Type;
			var op1, op2;
			if ((op1 = ValidatorConvert_Validation(operand1, dataType, val)) == null)
				return false;    
			if (operator == "DataTypeCheck")
				return true;
			if ((op2 = ValidatorConvert_Validation(operand2, dataType, val)) == null)
				return true;
			switch (operator) {
				case "NotEqual":
					return (op1 != op2);
				case "GreaterThan":
					return (op1 > op2);
				case "GreaterThanEqual":
					return (op1 >= op2);
				case "LessThan":
					return (op1 < op2);
				case "LessThanEqual":
					return (op1 <= op2);
				default:
					return (op1 == op2);            
			}
		}
		function ValidatorTrim_Validation(s)
		{
			var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
			return (m == null) ? "" : m[1];
		}		

		function ValidatorGetValue_Validation(id, idValidator)
		{
			var control;
			if ( document.getElementById(id) != null )
			{
				control = document.getElementById(id);
				if (typeof(control.value) == "string")
				{
					return control.value;
				}
			}
			else alert( "Error in run time in the ClientScript:\n\r - Control '" + id + "' not found (related to '"+idValidator+"')" );
			return "";
		}
		/* ****************************************************************** */
		/* *** FUNCTION RELATED Fn_CompareValidator & Fn_RangeValidator ***** */
		/* ****************************************************************** */

		/* ************************************************* */
		/* *********** END FUNTIONS VALIDATION ************* */
		/* ************************************************* */
		
		function ShowHideTextAllValidator( action ) //private
		{
			for (var i = 0; i < aValidator.length; i++)
			{
				ShowHideTextValidator( aValidator[i].Id, aValidator[i].Display, action );
			}
		}
		function ShowHideTextValidator( id, display, action ) //private
		{
			var sDisplay = display.toLocaleLowerCase();
			var oError = document.getElementById( id )
			if ( action == "show" )
			{
				//if ( (display != "None") && (display != "") )
				if ( sDisplay == "dynamic" )
					oError.style.display = "inline";
				else if ( sDisplay == "static" )
					oError.style.visibility = "";
			}
			else if  ( action == "hide" )
			{
				if (document.getElementById( id ))
				{
					if ( sDisplay == "dynamic" )
						oError.style.display = "none";
					else if ( sDisplay == "static" )
						oError.style.visibility = "hidden";
				}
			}
		}
		function SetEnabledByControlValidator( idControls, bEnabled ) //public
		{
			if (bEnabled == null) bEnabled = true;
			idCs = idControls + ",";
			var oValidator;
			for ( var j = 0; j < aValidator.length; j++ )
			{
				oValidator = aValidator[j];
				if ( idCs.indexOf( oValidator.ControlToValidate + "," ) != -1 )
				{
					oValidator.Enabled = bEnabled;
					oValidator.EnabledCopy = bEnabled;
				}
			}
		}
		function SetEnabledValidator( idValidators, bEnabled ) //public
		{
			/*
			var arrValidator = idValidators.split(",");
			//alert( arrValidator );
			for ( var j = 0; j < arrValidator.length; j++ )
			{
				for ( var i = 0; (i < aValidator.length) && (aValidator[i].Id != arrValidator[j]); i++ );
				aValidator[i].Enabled = bEnabled;
			}
			*/
			if (bEnabled == null) bEnabled = true;
			idVs = idValidators + ",";
			var oValidator;
			for ( var j = 0; j < aValidator.length; j++ )
			{
				oValidator = aValidator[j];
				if ( idVs.indexOf( oValidator.Id + "," ) != -1 )
				{
					oValidator.Enabled = bEnabled;
					oValidator.EnabledCopy = bEnabled;
				}
			}
		}
		function EnabledAllValidator(bEnabled) //public
		{
			if (bEnabled == null) bEnabled = true;
			var oValidator;
			for ( var j = 0; j < aValidator.length; j++ )
			{
				oValidator = aValidator[j];
				oValidator.Enabled = bEnabled;
				oValidator.EnabledCopy = bEnabled;
			}
		}
		function OnlyValidation( idValidators, bEnabled ) //public
		{
			bOnlyValidation_Validator = true;
			var oValidator;
			if (bEnabled == null) bEnabled = true;
			if ( bEnabled == true)
				for ( var j = 0; j < aValidator.length; j++ )
				{
					oValidator = aValidator[j];
					oValidator.Enabled = !bEnabled;
					ShowHideTextValidator( oValidator.Id, oValidator.Display, "hide" );
				}
			//lo sgte es equivalente a SetEnabledValidator() pero no mantiene la copia de "enabled"
			idVs = idValidators + ",";
			for ( var j = 0; j < aValidator.length; j++ )
			{
				oValidator = aValidator[j];
				if ( idVs.indexOf( oValidator.Id + "," ) != -1 )
				{
					oValidator.Enabled = bEnabled;
					if ( !bEnabled ) ShowHideTextValidator( oValidator.Id, oValidator.Display, "hide" );
				}
			}
		}
		function OnlyByControlValidation( idControls, bEnabled ) //public
		{
			bOnlyValidation_Validator = true;
			var oValidator;
			if (bEnabled == null) bEnabled = true;
			if ( bEnabled == true)
				for ( var j = 0; j < aValidator.length; j++ )
				{
					oValidator = aValidator[j];
					oValidator.Enabled = !bEnabled;
					ShowHideTextValidator( oValidator.Id, oValidator.Display, "hide" );
				}
			//lo sgte es equivalente a SetEnabledValidator() pero no mantiene la copia de "enabled"
			idCs = idControls + ",";
			for ( var j = 0; j < aValidator.length; j++ )
			{
				oValidator = aValidator[j];
				if ( idCs.indexOf( oValidator.ControlToValidate + "," ) != -1 )
				{
					oValidator.Enabled = bEnabled;
					if ( !bEnabled ) ShowHideTextValidator( oValidator.Id, oValidator.Display, "hide" );
				}
			}
		}
		function RollBackEnabled_Validator() //private
		{
			var oValidator;
			for ( var j = 0; j < aValidator.length; j++ )
			{
				oValidator = aValidator[j];
				oValidator.Enabled = oValidator.EnabledCopy;
			}
		}
		function SetDisabledValidation() //public
		{
			bNotValidation_Validator = true;
		}
		function SetEnabledValidation() //public
		{
			bNotValidation_Validator = false;
		}

		function SetFunctionPostBack( sFunction, sParam )
		{
			sFunctionPostBack_Validator = sFunction;
			if ( sParam != null )
				sParamPostBack_Validator = sParam;
		}
		function SetFunctionValidationSummary( sFunction )
		{
			sFunctionValidationSummary_Validator = sFunction;
		}
		var bNotValidation_Validator = false; //private
		var bOnlyValidation_Validator = false; //private
		var sIdForm_Validator = ""; //private
		var sFunctionPostBack_Validator = ""; //private
		var sParamPostBack_Validator = ""; //private
		var sFunctionValidationSummary_Validator = ""; //private
		
		var bShowAllErrorTogether_Validator = true; //private NEW var - using by Summary
		var bShowMessageBox_Validator = true; //private - using by Summary
		var bShowSummary_Validator = false; //private - using by Summary
		var sBullet_Validator = "-";//"&bull;"; //private NEW var - using by Summary
		var sHeaderText_Validator = ""; //private - using by Summary
		
		function MakeValidation()
		{
			if (bNotValidation_Validator)
				return true;
			else
			{
				var sAllError = "";
				var bResultValidation = true;
				var oValidator;
				for ( var i = 0; i < aValidator.length; i++ )
				{
					oValidator = aValidator[i];
					if ( !oValidator.Enabled )
					{
						ShowHideTextValidator( oValidator.Id, oValidator.Display, "hide" );
					}
					else
					{
						switch (oValidator.TypeValidator.toLocaleLowerCase())
						{
							case "requiredfieldvalidator": //Required Field Validator
								iResultValidation = Fn_RequiredFieldValidator( oValidator )
								break;
							case "requiredfieldcheckedvalidator": //Required Field Checked Validator
								iResultValidation = Fn_RequiredFieldCheckedValidator( oValidator )
								break;
							case "regularexpressionvalidator": //Regular Expression Validator
								iResultValidation = Fn_RegularExpressionValidator( oValidator )
								break;
							case "customvalidator": //Custom Validator
								iResultValidation = Fn_CustomValidator( oValidator )
								break;
							case "comparevalidator": //Compare Validator
								iResultValidation = Fn_CompareValidator( oValidator )
								break;
							case "rangevalidator": //Range Validator
								iResultValidation = Fn_RangeValidator( oValidator )
								break;
						}

						switch ( iResultValidation )
						{
							case 1:	sAllError+= sBullet_Validator+" "+oValidator.ErrorMessage+"<br>"; break;
							case 2:
								if ( bOnlyValidation_Validator )
								{
									bOnlyValidation_Validator = false;
									RollBackEnabled_Validator();
								}
								return false;
								break;
						}
					}
				}
				
				if ( ( sAllError != "" ) && ( sHeaderText_Validator != "" ) )
					sAllError = sHeaderText_Validator + "<br>" + sAllError;
				if ( bShowSummary_Validator )
				{
					fnShowSummary(sAllError);
				}
				if ( sAllError != "" )
				{
					if ( bShowMessageBox_Validator )
					{
						var sAllErrorBox = sAllError.replace(/<br>/g, "\n\r");
						alert( sAllErrorBox );
					}
					if (bOnlyValidation_Validator) {bOnlyValidation_Validator = false;RollBackEnabled_Validator()}
					if ( sFunctionValidationSummary_Validator != "" )
					{
						eval( sFunctionValidationSummary_Validator + "('" + sAllError + "')" );
					}
					return false;
				}
				if (bOnlyValidation_Validator) {bOnlyValidation_Validator = false;RollBackEnabled_Validator()}
				return true;
			}
		}

