//****************************************************//
// DataValidation Version 4.09                      **//
// Copyright by e@syNET 1999-2001                   **//
// Last edited: 2001-12-20 (m.schwabl@easynet.co.at **//
// All rights reserved                              **//
//****************************************************//
//


//************************************************************************
// Default Language: English
//************************************************************************
//
var cnstLangDisplayHeader = 'The following fields contain invalid data:';
var cnstLangDisplayDataType = 'Data Type';
var cnstLangDisplayDescription = 'Description'

var cnstLangDataTypeString = 'Text';
var cnstLangDataTypeNumeric = 'Number';
var cnstLangDataTypeInteger = 'Integer';
var cnstLangDataTypeDate = 'Date';
var cnstLangDataTypeTime = 'Time';
var cnstLangDataTypeEmail = 'Email';
var cnstLangDataTypeWeb = 'Web-Address';
var cnstLangDataTypeCreditcard = 'Creditcard';

var cnstLangErrorInvalidInput = 'Invalid input!';
var cnstLangErrorInputRequired = 'Input required!';
var cnstLangErrorMinMaxLength = 'Invalid field length';
var cnstLangErrorInvalidCharacters = 'Invalid Character!';
var cnstLangErrorMinMaxValue = 'Invalid Range';
var cnstLangErrorDate = 'Invalid date!'
var cnstLangErrorTime = 'Invalid time!'
var cnstLangErrorEmail = 'Invalid email Address!';
var cnstLangErrorWeb = 'Invalid Web-Address!';
var cnstLangErrorCreditcard = 'Invalid Creditcard Code!';




function DataValidationError()
{
    this.length = 0;
    this.addItem = DataValidationAddItem;
    this.validate = DataValidationValidateField;
    this.showError = DataValidationShowError;
    this.reset = DataValidationReset;
}


function DataValidationErrorMessage(FieldName, DataType, DataTypeDescription, MinValue, MaxValue, MinLength, MaxLength, ErrorMessage, objHTMLElement, objHTMLErrorElement)
{
    this.FieldName = FieldName;
    this.DataType = DataType;
    this.DataTypeDescription = DataTypeDescription;
    this.MinValue  = MinValue;
    this.MaxValue = MaxValue;
    this.MinLength = MinLength;
    this.MaxLength = MaxLength;
    this.ErrorMessage = ErrorMessage;
    this.HTMLElement = objHTMLElement;
    this.HTMLErrorElement = objHTMLErrorElement;
}



function DataValidationAddItem(FieldName, DataType, DataTypeDescription, MinValue, MaxValue, MinLength, MaxLength, ErrorMessage, objHTMLElement, objHTMLErrorElement)
{

    this.length += 1;

    var myDataValidationErrorMessage = new DataValidationErrorMessage(FieldName, DataType, DataTypeDescription, MinValue, MaxValue, MinLength, MaxLength, ErrorMessage, objHTMLElement, objHTMLErrorElement);

    this[(this.length-1)] = myDataValidationErrorMessage;
}



function DataValidationValidateField(FieldName, varEnteredValue, bolRequired, DataType, MinValue, MaxValue, MinLength, MaxLength, ErrorMessage, objHTMLElement, objHTMLErrorElement)
{

    var bolDataFieldOK = true;
    var strErrorMessage;
    var strDataTypeDescription;
	var strTempEnteredValue;
	var intLen = this.length;

	if(bolRequired == 1)
	{
		bolRequired = true;
	}
	else
	{
		bolRequired = false;
	}


	if(DataType == 'bit') DataType = 'int';
	if(DataType == 'lng') DataType = 'int';
	if(DataType == 'sng') DataType = 'num';
	if(DataType == 'dbl') DataType = 'num';
	if(DataType == 'cur') DataType = 'num';



	if (typeof(varEnteredValue) == 'object')
	{
		strEnteredValue = new String(varEnteredValue.value);
	}
	else
	if (typeof(varEnteredValue) == 'undefined')  //controlarrays
	{
		strEnteredValue = '';

		if (objHTMLElement)
		{
			if(objHTMLElement.length)
			{
				for(var lngIndex = 0; lngIndex < objHTMLElement.length; lngIndex++)
				{
					if(objHTMLElement[lngIndex].checked)
					{
						strEnteredValue = String(objHTMLElement[lngIndex].value);
						break;
					}
				}
			}
		}
	}
	else
	{
		strEnteredValue = String(varEnteredValue);
	}


	strTempEnteredValue = strEnteredValue;


    if (MinLength != null)
    {
	  if (bolRequired || strTempEnteredValue != '')
	  {
		if (strTempEnteredValue.length < MinLength)
		{
			bolDataFieldOK = false;
		}
	  }
    }

    if (MaxLength != null)
    {
	  if (bolRequired || strTempEnteredValue != '')
	  {
		if (strTempEnteredValue.length > MaxLength)
		{
			bolDataFieldOK = false;
		}
	  }
    }

	if (bolRequired && strTempEnteredValue == '')
	{
		bolDataFieldOK = false;
	}


	if (ErrorMessage == '' && (! bolDataFieldOK))
	{
		if (MinLength != null && MaxLength != null)
		{
			ErrorMessage = cnstLangErrorMinMaxLength + ' (' + MinLength + '-' + MaxLength + ')';
		}
		if (MinLength == null && MaxLength != null)
		{
			ErrorMessage = cnstLangErrorMinMaxLength + ' max. ' + MaxLength;
		}
		if (MinLength != null && MaxLength == null)
		{
			ErrorMessage = cnstLangErrorMinMaxLength + ' min. ' + MinLength;
		}
		if (MinLength == null && MaxLength == null)
		{
			ErrorMessage = cnstLangErrorInputRequired;
		}
	}



	if (bolRequired || strTempEnteredValue != '')
	{


		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		// check Type: String  (U...UpperCase; L...LowerCase; 0...Numeric; S...Special)
		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		//
		if (DataType.substring(0,3) == 'str')		// String
		{


			strDataTypeDescription = cnstLangDataTypeString;


			if (DataType.length > 3)
			{

				// find charcter groups
				var intCharCode;
				var bolUpper = false;
				var bolLower = false;
				var bolNumeric = false;
				var bolSpecial = false;
				var bolInvalidChar = false;

				for (var intIndex = 0; intIndex < strTempEnteredValue.length; intIndex++)
				{
					intCharCode = strTempEnteredValue.charCodeAt(intIndex);

					if (intCharCode >= 65 && intCharCode <= 90) //UpperCase
					{
						bolUpper = true;
					}
					else
					if (intCharCode >= 97 && intCharCode <= 122) //LowerCase
					{
						bolLower = true;
					}
					else
					if (intCharCode >= 48 && intCharCode <= 57) //Numeric
					{
						bolNumeric = true;
					}
					else
					{
						bolSpecial = true;
					}
				}


				if (DataType.indexOf('U',3) == -1 && bolUpper)
				{
					bolInvalidChar = true;
				}
				else
				if (DataType.indexOf('L',3) == -1 && bolLower)
				{
					bolInvalidChar = true;
				}
				else
				if (DataType.indexOf('0',3) == -1 && bolNumeric)
				{
					bolInvalidChar = true;
				}
				else
				if (DataType.indexOf('S',3) == -1 && bolSpecial)
				{
					bolInvalidChar = true;
				}

				if (bolInvalidChar)
				{
					bolDataFieldOK = false;

					if (ErrorMessage == '')
					{
						ErrorMessage = cnstLangErrorInvalidCharacters;
					}
				}

			}


		}

		else

		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		// check Type: Numeric
		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		//
		if (DataType == 'num')
		{

			strDataTypeDescription = cnstLangDataTypeNumeric;


			// remove all . in the string (comma = ",")
			//
			while ((intDecimalPointPos = strTempEnteredValue.indexOf('.')) > 0)
			{
				strTempEnteredValue = strTempEnteredValue.substring(0, intDecimalPointPos) + strTempEnteredValue.substring(intDecimalPointPos + 1, strTempEnteredValue.length);
			}



			//find decimal point
			//
			intDecimalPointPos = strTempEnteredValue.indexOf(',');



			if (intDecimalPointPos > 0)
			{
				strTempEnteredValue = strTempEnteredValue.substring(0,intDecimalPointPos) + '.' + strTempEnteredValue.substring(intDecimalPointPos + 1, strTempEnteredValue.length);
			}


			//remove leading 0s
			//
			while (strTempEnteredValue.substr(0, 1) == '0')
			{
				if(strTempEnteredValue.length == 1)
				{
					break;
				}
				else
				{
					if(strTempEnteredValue.substr( 1 , 1) != '.')
					{
						strTempEnteredValue = strTempEnteredValue.substr( 1, strTempEnteredValue.length);
					}
					else
					{
						break;
					}
				}
			}


			// find decimal point again and check for 0 on the end
			// if there is a 0 -> remove it
			//
			if (strTempEnteredValue.indexOf('.') > 0)
			{
				while(strTempEnteredValue.substring(strTempEnteredValue.length-1, strTempEnteredValue.length) == '0')
				{
					strTempEnteredValue = strTempEnteredValue.substring(0,strTempEnteredValue.length-1)
				}
			}


			// remove trailing decimal point in case of just Zeros on the end
			//
			if (strTempEnteredValue.substring(strTempEnteredValue.length-1, strTempEnteredValue.length) == '.')
			{
				strTempEnteredValue = strTempEnteredValue.substring(0,strTempEnteredValue.length-1)
			}



			fltTempEnteredValue = parseFloat(strTempEnteredValue);



			if (isNaN(fltTempEnteredValue) || (String(fltTempEnteredValue).length != strTempEnteredValue.length))
			{
				bolDataFieldOK = false;
			}
			else
			{
				if (MinValue != null)
				{
					if (fltTempEnteredValue < MinValue)
					{
						bolDataFieldOK = false;
					}

				}

				if (MaxValue != null)
				{
					if (fltTempEnteredValue > MaxValue)
					{
						bolDataFieldOK = false;
					}
				}
			}

			if (ErrorMessage == '' && (! bolDataFieldOK))
			{
				if (MinValue != null && MaxValue != null)
				{
					ErrorMessage = cnstLangErrorMinMaxValue + ' (' + MinValue + '-' + MaxValue + ')';
				}
				if (MinValue == null && MaxValue != null)
				{
					ErrorMessage = cnstLangErrorMinMaxValue + ' max. ' + MaxValue;
				}
				if (MinValue != null && MaxValue == null)
				{
					ErrorMessage = cnstLangErrorMinMaxValue + ' min. ' + MinValue;
				}
				if (MinValue == null && MaxValue == null)
				{
					ErrorMessage = cnstLangErrorInvalidInput;
				}
			}
		}



		else



		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		// check Type: Integer
		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		//
		if (DataType == 'int')
		{

			strDataTypeDescription = cnstLangDataTypeInteger;


			//find decimal point
			//
			intDecimalPointPos = strTempEnteredValue.indexOf(',');


			if (intDecimalPointPos > 0)
			{
				strTempEnteredValue = strTempEnteredValue.substring(0,intDecimalPointPos) + '.' + strTempEnteredValue.substring(intDecimalPointPos + 1, strTempEnteredValue.length);
			}

			//remove leading 0s
			//
			while (strTempEnteredValue.substr(0, 1) == '0')
			{
				if(strTempEnteredValue.length == 1)
				{
					break;
				}
				else
				{
					if(strTempEnteredValue.substr( 1 , 1) != '.')
					{
						strTempEnteredValue = strTempEnteredValue.substr( 1, strTempEnteredValue.length);
					}
					else
					{
						break;
					}
				}
			}

			intTempEnteredValue = parseInt(strTempEnteredValue,10);



			if (isNaN(intTempEnteredValue) || (String(intTempEnteredValue).length != strTempEnteredValue.length))
			{
				bolDataFieldOK = false;
			}
			else
			{
				if (MinValue != null)
				{
					if (intTempEnteredValue < MinValue)
					{
						bolDataFieldOK = false;
					}

				}

				if (MaxValue != null)
				{
					if (intTempEnteredValue > MaxValue)
					{
						bolDataFieldOK = false;
					}
				}
			}

			if (ErrorMessage == '' && (! bolDataFieldOK))
			{
				if (MinValue != null && MaxValue != null)
				{
					ErrorMessage = cnstLangErrorMinMaxValue + ' (' + MinValue + '-' + MaxValue + ')';
				}
				if (MinValue == null && MaxValue != null)
				{
					ErrorMessage = cnstLangErrorMinMaxValue + ' max. ' + MaxValue;
				}
				if (MinValue != null && MaxValue == null)
				{
					ErrorMessage = cnstLangErrorMinMaxValue + ' min. ' + MinValue;
				}
				if (MinValue == null && MaxValue == null)
				{
					ErrorMessage = cnstLangErrorInvalidInput;
				}
			}
		}


		else

		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		// check Type: Date
		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		//
		if (DataType == 'dat')
		{

			var intDay;
			var intMonth;
			var intYear;
			var strDateEntered;
			var strDateMin;
			var strDateMax;

			strDataTypeDescription = cnstLangDataTypeDate;

			intDay = DataValidationGetDatePart(strTempEnteredValue, 'dd')
			intMonth = DataValidationGetDatePart(strTempEnteredValue, 'mm')
			intYear = DataValidationGetDatePart(strTempEnteredValue, 'yy')
			strDateEntered = DataValidationGetDatePart(strTempEnteredValue, 'str')



			//'''''''''''''''''''''''''''''''''''''''''''''''''''''
			// test if value is a date
			//'''''''''''''''''''''''''''''''''''''''''''''''''''''
			//
			if (intDay >= 1 && intDay <= 31 && intMonth >= 1 && intMonth <= 12 && intYear >= 1900 && intYear <= 2030)
			{
				// Month: 1,3,5,7,8,10,12
				//
				if (intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12)
				{
					// OK
				}

				else

				// Month: 4,6,9,11
				//
				if (intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11)
				{
					if (intDay > 30)
					{
						bolDataFieldOK = false;
					}
				}

				else

				// Month: 2
				//
				if (intMonth == 2)
				{
					if ( ((intYear % 4 == 0) && (intYear % 100 != 0)) || (intYear % 400 == 0) )
					// Schaltjahr
					{
						if (intDay > 29)
						{
							bolDataFieldOK = false;
						}
					}
					else
					{
						// no Schaltjahr
						if (intDay > 28)
						{
							bolDataFieldOK = false;
						}
					}
				}
				else
				{
					bolDataFieldOK = false;
				}


				if (MinValue != null)
				{
					strDateMin = DataValidationGetDatePart(MinValue , 'str');

					if (strDateMin > strDateEntered )
					{
						bolDataFieldOK = false;
					}
				}


				if (MaxValue != null)
				{
					strDateMax = DataValidationGetDatePart(MaxValue , 'str');

					if (strDateMax < strDateEntered )
					{
						bolDataFieldOK = false;
					}
				}
			}
			else
			{
				bolDataFieldOK = false;
			}


			if (ErrorMessage == '' && (! bolDataFieldOK))
			{
				if (MinValue != null && MaxValue != null)
				{
					ErrorMessage = cnstLangErrorDate + ' (' + MinValue + '-' + MaxValue + ')';
				}
				if (MinValue == null && MaxValue != null)
				{
					ErrorMessage = cnstLangErrorDate + ' (max. ' + MaxValue + ')';
				}
				if (MinValue != null && MaxValue == null)
				{
					ErrorMessage = cnstLangErrorDate + ' (min. ' + MinValue + ')';
				}
				if (MinValue == null && MaxValue == null)
				{
					ErrorMessage = cnstLangErrorInvalidInput;
				}
			}

		}

		else


		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		// check Type: Time
		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		//
		if (DataType == 'tim')
		{
			strDataTypeDescription = cnstLangDataTypeTime;

			intDelimiterPos = strTempEnteredValue.indexOf(':');

			if ((intDelimiterPos == 1 && strTempEnteredValue.length != 4) || (intDelimiterPos == 2 && strTempEnteredValue.length != 5))
			{
				bolDataFieldOK = false;
			}
			else
			{

				// if intDelimiterPos == 1 (eg. 7:00) -> add a leading 0
				//
				if (intDelimiterPos == 1)
				{
					strTempEnteredValue = '0' + strTempEnteredValue;
					intDelimiterPos = 2;
				}


				for (var intPos = 0; intPos < 5; intPos++)
				{
					if (isNaN(parseInt(strTempEnteredValue.substring(intPos,intPos+1),10)) && intPos != 2)
					{
						bolDataFieldOK = false;
					}
				}

				var intHours = parseInt(strTempEnteredValue.substring(0,intDelimiterPos),10);
				var intMinutes = parseInt(strTempEnteredValue.substring(intDelimiterPos + 1),10);


				if (isNaN(intHours) || isNaN(intMinutes))
				{
					bolDataFieldOK = false;
				}
				else
				{
					if (intHours < 0 || intHours > 23 || intMinutes < 0 || intMinutes > 59)
					{
						bolDataFieldOK = false;
					}
				}
			}


			if (ErrorMessage == '' && (! bolDataFieldOK))
			{
				ErrorMessage = cnstLangErrorTime;
			}
		}

		else

		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		// check Type: Email
		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		//
		if (DataType == 'email')
		{

			strDataTypeDescription = cnstLangDataTypeEmail;

			if (strTempEnteredValue.indexOf('@') == -1)
			{
				bolDataFieldOK = false;
			}

			if (strTempEnteredValue.indexOf('.') == -1)
			{
				bolDataFieldOK = false;
			}


			if (strTempEnteredValue.indexOf('!') >= 0)
			{
				bolDataFieldOK = false;
			}

			if (strTempEnteredValue.indexOf('/') >= 0)
			{
				bolDataFieldOK = false;
			}


			if (strTempEnteredValue.indexOf(' ') >= 0)
			{
				bolDataFieldOK = false;
			}


			if (strTempEnteredValue.indexOf('"') >= 0)
			{
				bolDataFieldOK = false;
			}

			if (ErrorMessage == '' && (! bolDataFieldOK))
			{
				ErrorMessage = cnstLangErrorEmail;
			}

		}


		else

		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		// check Type: www adress
		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		//
		if (DataType == 'www')
		{

			strDataTypeDescription = cnstLangDataTypeWeb;


			if (strTempEnteredValue.indexOf('!') >= 0)
			{
				bolDataFieldOK = false;
			}


			if (strTempEnteredValue.indexOf(' ') >= 0)
			{
				bolDataFieldOK = false;
			}


			if (strTempEnteredValue.indexOf('"') >= 0)
			{
				bolDataFieldOK = false;
			}

			if (ErrorMessage == '' && (! bolDataFieldOK))
			{
				ErrorMessage = cnstLangErrorWeb;
			}

		}


		else



		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		// check Type: creditcard
		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		//
		if (DataType == 'cc')
		{
			strDataTypeDescription = cnstLangDataTypeCreditcard;

			var total = 0;
			var flag = 0;

			for (var i = 0; i < strTempEnteredValue.length; i++)
			{
				if (isNaN(parseInt(strTempEnteredValue.charAt(i))))
				{
					bolDataFieldOK = false;
				}
			}

			for (var i=(strTempEnteredValue.length - 1);i>=0; i--)
			{
				if (flag == 1)
				{
					var digits = strTempEnteredValue.charAt(i) * 2;
					if (digits > 9) digits -= 9;
					total += digits;
					flag = 0;
				} else
				{
					total = total + parseInt(strTempEnteredValue.charAt(i));
					flag = 1;
				}
			}
			if (! (total%10) == 0)
			{
				bolDataFieldOK = false;
			}

			if (ErrorMessage == '' && (! bolDataFieldOK))
			{
				ErrorMessage = cnstLangErrorCreditcard;
			}

		}
	}



   if (! bolDataFieldOK)
   {
	 this.addItem(FieldName, DataType, strDataTypeDescription, MinValue, MaxValue, MinLength, MaxLength, ErrorMessage, objHTMLElement, objHTMLErrorElement);
   }



}



//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
// returns Datepart
//
// strDatePart: 'yy' -> year  as integer
// strDatePart: 'mm' -> month as integer   e.g 1,2,3,4,5,6,7,8,9,10,11,12
// strDatePart: 'dd' -> day	  as integer   e.g 1,2,3,4,5,6,7,8,9,10 ...
// strDatePart: 'str' -> date as string    20000112
//
function DataValidationGetDatePart(strValue, strDatePart)
{

	var strSeparatorChar;
	var intSeparatorPos1;
	var intSeparatorPos2;

	var intDay;
	var intMonth;
	var intYear;

	var strDay;
	var strMonth;
	var strYear;


	// find DateSeparator
	//
	if (strValue.indexOf('.') > 0)
	{
		strSeparatorChar = '.';
	}
	else

	if (strValue.indexOf('/') > 0)
	{
		strSeparatorChar = '/';
	}


	intSeparatorPos1 = strValue.indexOf(strSeparatorChar, 0);
	intSeparatorPos2 = strValue.indexOf(strSeparatorChar, intSeparatorPos1 + 1);


	if (strSeparatorChar == '/')
	{
		intMonth = parseInt(strValue.substring(0,intSeparatorPos1),10);
		intDay = parseInt(strValue.substring(intSeparatorPos1 + 1,intSeparatorPos2),10);
		intYear = parseInt(strValue.substring(intSeparatorPos2 + 1, strValue.length),10);
	}


	if (strSeparatorChar == '.')
	{
		intDay = parseInt(strValue.substring(0,intSeparatorPos1),10);
		intMonth = parseInt(strValue.substring(intSeparatorPos1 + 1,intSeparatorPos2),10);
		intYear = parseInt(strValue.substring(intSeparatorPos2 + 1, strValue.length),10);
	}




	// add leading 0
	//
	if (intDay < 10)
	{
		strDay = '0' + new String(intDay);
	}
	else
	{
		strDay = new String(intDay);
	}


	if (intMonth < 10)
	{
		strMonth = '0' + new String(intMonth);
	}
	else
	{
		strMonth = new String(intMonth);
	}

	if (intYear < 1000)
	{
		intYear = NaN;
	}
	else
	{
		strYear = new String(intYear);
	}



	// return value according to strDatePart
	if (strDatePart == 'dd')
	{
		return intDay;
	}
	else
	if (strDatePart == 'mm')
	{
		return intMonth;
	}
	else
	if (strDatePart == 'yy')
	{
		return intYear;
	}
	else
	if (strDatePart == 'str')
	{
		if (isNaN(intDay) || isNaN(intMonth) || isNaN(intYear))
		{
			return NaN;
		}
		else
		{
			return strYear + strMonth + strDay;
		}
	}



}




function DataValidationShowError()
{
	var bolFocusSet = false;
	var strBrowserType = navigator.appName;

	// check browser type
	if (strBrowserType.indexOf('Microsoft') >= 0
		&&  typeof(document.body.innerHTML) != 'undefined'
	)
	{
		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		// Internet Explorer
		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		for (var i=0; i < this.length;i++)
		{
			if(this[i].HTMLErrorElement)
			{
				this[i].HTMLErrorElement.innerHTML = this[i].ErrorMessage;
				this[i].HTMLErrorElement.style.display = 'block';
			}

			if( ! bolFocusSet)
			{
				if(this[i].HTMLElement)
				{
					if(this[i].HTMLElement.length  &&  this[i].HTMLElement.tagName != 'SELECT')
					{
						this[i].HTMLElement[0].focus();
						bolFocusSet = true;
					}
					else
					{
						if(this[i].HTMLElement.type != 'hidden')
						{
							this[i].HTMLElement.focus();
							bolFocusSet = true;
						}
					}
				}
			}
		}
	}
	else
	{
		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		// Netscape and others
		//'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
		var strError = '';
		strError = cnstLangDisplayHeader + '\n';
		strError = strError + '--------------------------------------------------------------------\n';



		for (var i=0;i<this.length;i++)
		{

			if( ! bolFocusSet)
			{
				if(this[i].HTMLElement)
				{
					if(this[i].HTMLElement.length  &&  this[i].HTMLElement.tagName != 'SELECT')
					{
						this[i].HTMLElement[0].focus();
						bolFocusSet = true;
					}
					else
					{
						if(this[i].HTMLElement.type != 'hidden')
						{
							this[i].HTMLElement.focus();
							bolFocusSet = true;
						}
					}
				}
			}

			strError +=  '\n' + this[i].FieldName + '\n';
			strError +=  '   ' + cnstLangDisplayDataType + ': \t' + this[i].DataTypeDescription + '\n';
			strError +=  '   ' + cnstLangDisplayDescription + ': \t' + this[i].ErrorMessage;
			strError += '\n';

		}

		alert (strError);

	}

}

function DataValidationReset()
{

	var strBrowserType = navigator.appName;

	// check browser type
	if (strBrowserType.indexOf('Microsoft') >= 0
		&&  typeof(document.body.innerHTML) != 'undefined'
	)
	{

		for (var i=0;i<this.length;i++)
		{
			if(this[i].HTMLErrorElement)
			{
				this[i].HTMLErrorElement.style.display = 'none';
				this[i].HTMLErrorElement.innerHTML = '';
			}
			this[i] = null;
		}

	}
	else
	{
		for (var i=0;i<this.length;i++)
		{
			this[i] = null;
		}
	}

	this.length = 0;
}
