<!-- Hide
	function isValidInteger()
	{
		if (arguments.length != 1)
			return false;
		if (Trim(arguments[0] + '')== "")	
		    	return false;
		return parseInt(Number(arguments[0])) == arguments[0];
	}

	function isValidFloat()
	{
		if (arguments.length != 1)
			return false;
		return parseFloat(arguments[0]) == arguments[0];
	}
	
	function isValidCurrency()
	{
		if (arguments.length != 1)
			return false;
		return isValidFloat(arguments[0]);
	}
	
	function isValidEmailID()
	{
		if (arguments.length != 1)
			return false;
	
		var indexOfAtTheRate = arguments[0].indexOf("@");
		var indexOfDot = arguments[0].lastIndexOf(".");
		var indexOfSpace = arguments[0].indexOf(" ");

		if ( indexOfAtTheRate <= 0 || indexOfDot < 0 || indexOfSpace >= 0 || indexOfDot == arguments[0].length-1 || indexOfAtTheRate >= indexOfDot || indexOfDot - indexOfAtTheRate == 1)
			return false;
		return true;
	}

	function Trim(SourceString)
	{
	    if (SourceString == null)
	        return '';
	        
		var len = SourceString.length;
		if (len == 0)
		    return SourceString;
		
		var intIndex=0;
		for (intIndex=0; intIndex<len; intIndex++)
			if (SourceString.charAt(intIndex) != " ")
				break;
		SourceString = SourceString.substring(intIndex, SourceString.length);
			
		len = SourceString.length;
		for (intIndex=SourceString.length-1; intIndex>=0; intIndex--)
			if (SourceString.charAt(intIndex) != " ")
				break;

		SourceString = SourceString.substring(0, intIndex+1);
		return SourceString;
	}

	function replace(strString, strFind, strReplace)
	{
		var i, tempString;
		var len = strString.length;
		
		tempString = '';
		for (i=0; i<len; i++)
			if (strString.charAt(i) == strFind)
				tempString = tempString + strReplace;
			else
				tempString = tempString + strString.charAt(i);
		return tempString;
	}
	
	//	KRD-05032004 Ver-1.0
	function replaceAll(strString, strFind, strReplace)
	{
		return replaceSubstring(strString, strFind, strReplace);
//		return replaceEngine(strString, strFind, strReplace, 0);
	}
	
	//	Recursive replace function
	function replaceEngine(strString, strFind, strReplace, intStartIndex )
	{
		var intIndex = strString.indexOf(strFind, intStartIndex);
		if ( intIndex >= 0 )	//	found
		{
			intStartIndex = intIndex + strReplace.length;
			strString = strString.replace(strFind, strReplace);
			return replaceEngine(strString, strFind, strReplace, intStartIndex);
		}
		else
			return strString;	
	}
	
	function replaceSubstring(inputString, fromString, toString) 
	{
	   // Goes through the inputString and replaces every occurrence of fromString with toString
	   var temp = inputString;
	   if (fromString == "") 
	      return inputString;
	   
	   if (toString.indexOf(fromString) == -1) 
	   {	// If the string being replaced is not a part of the replacement string (normal situation)
			while (temp.indexOf(fromString) != -1) 
			{
				var toTheLeft = temp.substring(0, temp.indexOf(fromString));
				var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
				temp = toTheLeft + toString + toTheRight;
			}
	   }
	   else 
	   {	// String being replaced is part of replacement string (like "+" being replaced with "++") - prevent an infinite loop
			var midStrings = new Array("~", "`", "_", "^", "#");
			var midStringLen = 1;
			var midString = "";
			// Find a string that doesn't exist in the inputString to be used
			// as an "inbetween" string
			while (midString == "") 
			{
				for (var i=0; i < midStrings.length; i++) 
				{
					var tempMidString = "";
					for (var j=0; j < midStringLen; j++) 
					{ 
						tempMidString += midStrings[i]; 
					}
					if (fromString.indexOf(tempMidString) == -1) 
					{
						midString = tempMidString;
						i = midStrings.length + 1;
					}
				}
			}	// Keep on going until we build an "inbetween" string that doesn't exist
				// Now go through and do two replaces - first, replace the "fromString" with the "inbetween" string
			while (temp.indexOf(fromString) != -1) 
			{
				var toTheLeft = temp.substring(0, temp.indexOf(fromString));
				var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
				temp = toTheLeft + midString + toTheRight;
			}
			// Next, replace the "inbetween" string with the "toString"
			
			while (temp.indexOf(midString) != -1) 
			{
				var toTheLeft = temp.substring(0, temp.indexOf(midString));
				var toTheRight = temp.substring(temp.indexOf(midString)+midString.length, temp.length);
				temp = toTheLeft + toString + toTheRight;
			}
		} // Ends the check to see if the string being replaced is part of the replacement string or not
		
		return temp; // Send the updated string back to the user
	} // Ends the "replaceSubstring" function

	function isValidString()
	{
		if (arguments.length != 1)
			return false;
		return Trim(arguments[0]) != '';
	}	

	function sValidateMailAddress()
	{
		if (arguments.length != 1) 
			return false;

		//var smRegExp = new RegExp('^[^.@][^@]\*@[^.@][^@]\*[.][^.@]\*[^@]\*[^.@]\+$');
		var smRegExp = new RegExp('^[^@. ][^@ ]\*@[^@. ][^@ ]\*[.][^.@ ]\*[^@ ]\*[^@. ]$');
		return (smRegExp.test(arguments[0]))
	}

/*
	Argument Count
	1)	-->	strDate (Default Format : "dmy", Date Separator : "/"
	2)	-->	strDate, Date Format  ( Default Separator : "/" )
	3)	-->	strDate, Date Format, Separator
	4)	-->	int[D/M/Y], int[D/M/Y], int[D/M/Y], Date Format  
*/	

	function isValidDate() 
	{
		var strDate, strDateFormat, strSeparator;
		var intDay, intMonth, intYear;
		var intD, intM, intY;
		
		if (arguments.length <= 0)			//	No Argument passed
			return false;

		if (arguments.length == 1)			//	Only one argument comes. Assume that it's in 'dmy' format with separator '/'
		{
			strDate = arguments[0];	
			strDateFormat = 'dmy';
			strSeparator = '/';
		}
		else if (arguments.length == 2)		//	Exact two arguments come.	First --> Date and Second --> Date Format, Default separator --> '/'
		{
			strDate = arguments[0];
			strDateFormat = arguments[1].toLowerCase();	
			strSeparator = '/';
		}
		else if (arguments.length == 3)		// Exact three arguments come. First --> Date, Second --> Date Format And Third --> Separator
		{
			strDate = arguments[0];
			strDateFormat = arguments[1].toLowerCase();
			strSeparator = arguments[2];
		}
		else if (arguments.length == 4)		//	Exact four arguments come. First Three are 'Date', 'Month' and 'Year' and 4th argument is Date Format. Default Separator --> '/'
		{
			strSeparator = "/";
			strDateFormat = arguments[3].toLowerCase();		//	Any combination of 'd', 'm' and 'y' character

			intD = strDateFormat.indexOf('d');		//	Find sequence inside arguments
			intM = strDateFormat.indexOf('m');
			intY = strDateFormat.indexOf('y');

			
			if ( intD < 0 || intM < 0 || intY < 0 || intD > 2 || intM > 2 || intY > 2 )		// Validation
				return false;
			
			intDay = arguments[intD];
			intMonth = arguments[intM];
			intYear = arguments[intY];
		}
		
		if (arguments.length != 4)
		{
			var aryDate = strDate.split(strSeparator);		// Split Date string
			if ( aryDate.length != 3 )	//	Three part not found.
				return false;
						
			intD = strDateFormat.indexOf('d');	//	Find sequence inside Date String
			intM = strDateFormat.indexOf('m');
			intY = strDateFormat.indexOf('y');
			
			if ( intD < 0 || intM < 0 || intY < 0 || intD > 2 || intM > 2 || intY > 2 )		// Validation
				return false;
			
			intDay = aryDate[intD];
			intMonth = aryDate[intM];
			intYear = aryDate[intY];
		}

		if ( !isValidInteger(intDay) )
			return false;
		if ( !isValidInteger(intMonth) )
			return false;
		if ( !isValidInteger(intYear) )
			return false;
			
		var strTempDate = new Date(intMonth + '/' + intDay + '/' + intYear);

		//	Strange logic !!?, That is because of flexible behavior of Date class of Java Script.
		if ((strTempDate.getDate() != parseInt(intDay,10)) || ((strTempDate.getMonth()+1) != parseInt(intMonth,10)) || (strTempDate.getFullYear() != (parseInt(intYear,10))))
			return false;	// ('Invalid Date ');
			
		return true;	//	Valid Date
	}
	
	function compareDate()	
	{
		var strFromDate, strToDate, strDateFormat, strSeparator;
		var intFDay, intFMonth, intFYear;
		var intTDay, intTMonth, intTYear;
		var intD, intM, intY;
		var aryDate;
		
		if (arguments.length < 2)		//	Insufficient arguments
			return null;
			
		strFromDate = arguments[0];		//	Assume first and second are dates.
		strToDate = arguments[1];
		
		if (arguments.length == 2)		//	Exact two arguments come.  Default Date Format --> 'dmy' And Separator --> '/'
		{	
			strDateFormat = "dmy";
			strSeparator = "/";
		}
		if (arguments.length == 3)		//	Exact three arguments come. Third argument is Date Format.
		{	
			strDateFormat = arguments[2].toLowerCase();
			strSeparator = "/";
		}
		else if (arguments.length == 4)	//	Exact four arguments come. Third --> DateFormat, Forth --> Separator.
		{
			strDateFormat = arguments[2].toLowerCase();
			strSeparator = arguments[3];
		}

		if ( !isValidDate(strFromDate, strDateFormat, strSeparator)  ||  !isValidDate(strToDate, strDateFormat, strSeparator) )		// Both Date Validation
			return null;
			
		intD = strDateFormat.indexOf('d');	//	Find sequence inside Date String, that is common for both Date String
		intM = strDateFormat.indexOf('m');
		intY = strDateFormat.indexOf('y');

		aryDate = strFromDate.split(strSeparator);	// Split First Date. No worries about three parts because date has been already checekd for valoidation
		intFDay = aryDate[intD];
		intFMonth = aryDate[intM];
		intFYear = aryDate[intY];

		aryDate = strToDate.split(strSeparator);	// Split Second Date. No worries about three parts because date has been already checekd for valoidation
		intTDay = aryDate[intD];
		intTMonth = aryDate[intM];
		intTYear = aryDate[intY];

		var lngFromNumber = Number(intFYear * 10000) + Number(intFMonth * 100) + Number(intFDay);
		var lngToNumber = Number(intTYear * 10000) + Number(intTMonth * 100) + Number(intTDay);

		return lngFromNumber <= lngToNumber;
	}
	
	function formatDate()	// strDate, strCurrFormat, strRequireFormat, strS
	{
		var strDate, strCurDateFormat, strReqDateFormat, strSeparator;
		var intDay, intMonth, intYear;
		var intD, intM, intY;

		if (arguments.length == 0)
			return null;
		strDate = arguments[0];

		if (arguments.length < 3)
			return strDate;
		strCurDateFormat = arguments[1].toLowerCase();;
		strReqDateFormat = arguments[2].toLowerCase();;		
		
		if (arguments.length == 3)
			strSeparator = '/';
		else
			strSeparator = arguments[3];

		if (! isValidDate(strDate, strCurDateFormat, strSeparator ))
			return strDate;

		intD = strDateFormat.indexOf('d');	//	Find sequence inside Date String
		intM = strDateFormat.indexOf('m');
		intY = strDateFormat.indexOf('y');

		var aryDate = strDate.split(strSeparator);
		
		intDay = aryDate[intD];
		intMonth = aryDate[intM];
		intYear = aryDate[intY];

		if ( strReqDateFormat == 'dmy' )
			return  intDay + strSeparator + intMonth + strSeparator + intYear;
		if ( strReqDateFormat == 'dym' )
			return  intDay + strSeparator + intYear + strSeparator + intMonth;
		if ( strReqDateFormat == 'mdy' )
			return  intMonth + strSeparator + intDay + strSeparator + intYear;
		if ( strReqDateFormat == 'myd' )
			return  intMonth + strSeparator + intYear + strSeparator + intDay;
		if ( strReqDateFormat == 'ydm' )
			return  intYear + strSeparator + intDay + strSeparator + intMonth;
		if ( strReqDateFormat == 'ymd' )
			return  intYear + strSeparator + intMonth + strSeparator + intDay;
		else
			return strDate;
	}	

	function isValidIdentifier()
	{
		var smRegExp1 = new RegExp('^[a-zA-Z](\\w|\-)*$');
		var smRegExp2 = new RegExp('(__|\-\-)');
		
		if (arguments.length != 1)
			return false;
			
		if (smRegExp1.test(arguments[0]))
		{
			if (smRegExp2.test(arguments[0]))
				return false;
			return true;
		}
		else
			return false;
	}
// End Hide -->