////////////////////// TS Validation Functions start here ****************/

//////////////////////  Generic Validation Function */
function validate (obj, lbl, msg, typ, required) 
{

	var bErr = false;
	var whitespace = /^[\s\u00a0]*$/;

	//Added for Clientside validation implementation
	var RegExp_type5 = new RegExp('^[a-zA-Z0-9\.@_&\'\*\+/\=\?\^\{\}\-~]+@[a-zA-Z0-9\.@_&\'\*\+/\=\?\^\{\}\-~]+$', 'g'); // Regular Expression for Email
	var RegExp_type6 = new RegExp ('^[\u0020-\u003b=\u003f-\u007e\u009f-\uffff]+$', 'g'); //Regular Expression for UniAlphaNumAndSpclChr
	var RegExp_type7 = new RegExp('^[a-zA-Z0-9\u009f-\uffff]+$','g'); //Regular Expression for UniAlphaNum
	var RegExp_type8 = new RegExp('<script|<applet|<object|<body|<img|<iframe','gi'); //Regular Expression for UANAndHtmlTags except script, object and applet tags
	var RegExp_type9 = new RegExp('<applet','gi');//Regular Expression for UANAndAllHtmlTags except applet
	var RegExp_type12 = new RegExp('^[-a-zA-Z0-9:\/?&%._\=]+$','g'); //Regular Expression for URL
	var RegExp_type15 = new RegExp('^[0-9a-zA-Z^]+$','g'); //Regular Expression for HEX
	//Added for Clientside validation implementation
	var i;
	var argc = 5;
	var matchBool = 0;
	
	//Added for Clientside validation implementation
	var maxValue = arguments[argc++];
	maxValue = (typeof maxValue != 'undefined' ? maxValue : '100000')
	var valType = arguments[argc++];
	valType = ((typeof valType == 'undefined' || parseInt(valType) == 0) ? '8' : valType);
	if('text,textarea,email'.indexOf(typ.toLowerCase()) >= 0)
	{
		var regExp = eval('RegExp_type'+valType);
		if (obj.value != null)
		{
			matchBool = ((valType == '8' || valType == '9') ? obj.value.toLowerCase().match(regExp) : !obj.value.toLowerCase().match(regExp));
		}
	}
	//Added for Clientside validation implementation
	switch (typ = typ.toLowerCase()) 
	{
		case 'textarea':		
			if(required && whitespace.test(obj.value.replace(/[\n\r]/g, ' ')))
				bErr = true;
			else if(maxValue > 0 && obj.value != null && obj.value.length > maxValue)
				bErr = true;
			else if((obj.value != null && trim(obj.value) != '') && matchBool)
				bErr = true;
		break;
		case 'text':
			if (required && whitespace.test(obj.value))
				bErr = true;
			else if(maxValue > 0 && obj.value != null && obj.value.length > maxValue)
				bErr = true;
			else if((obj.value != null && trim(obj.value) != '') && matchBool)
				bErr = true;
	}
	return bErr;
}

//////////////////////  Generic Form Elements Validation Function */
function ValidateFormElementsLoop(objForm)
{
	if (objForm == null)
		return true;
				
	var i = 0;

	for(i=0; i<objForm.elements.length; i++)
	{
		if(objForm.elements[i].type == 'text' || objForm.elements[i].type == 'textarea')
		{
			if(validate(objForm.elements[i], 'testname', 'testmsg', objForm.elements[i].type, 0) == true)
			{
				if (objForm.name == 'frmAgent')
				{
					// Coming from Search page
					alert(MSG_TSV_EnterValidInputSearchFields);
				}
				else
				{
					if(objForm.elements[i].type == 'text')
						alert(MSG_TSV_EnterValidInputText);
					else
						alert(MSG_TSV_EnterValidInputTextArea);
				}
				objForm.elements[i].focus();
				return false;
			}
		}
	}
	return true;
} 

function ltrim ( s )
{
	return s.replace( /^\s*/, "" )
}

function rtrim ( s2 )
{
	return s2.replace( /\s*$/, "" );
}

function trim ( s3 )
{
	return rtrim(ltrim(s3));
}

////////////////////// TS Validation Functions end here ****************/
