function trimWord(p_szWord)
{
	if(p_szWord == "")
		return p_szWord;
	
	var szWord = "";

	szWord = leftTrim(p_szWord);
	szWord = rightTrim(szWord);
	
	return szWord;
}

function leftTrim(p_szWord)
{
	var i;
	var szWord = "";
	
	for(i= 0; i < p_szWord.length; i++)
	{
		if(p_szWord.charCodeAt(i) == 32)
			;
		else
		{
			szWord = p_szWord.substr(i);
			break;
		}
	}
	return szWord;
}

function rightTrim(p_szWord)
{
	var i;
	var szWord = "";
	
	for(i= p_szWord.length - 1; i >= 0; i--)
	{
		if(p_szWord.charCodeAt(i) == 32)
			;
		else
		{
			szWord = p_szWord.substr(0, i + 1);
			break;
		}
	}
	return szWord;
}

function validEmail(p_szEmail, szFldDesc, mandatory)
{
	var i;
	var iAtCount;
	var bValid;
	var szErrMsg = "Invalid " + szFldDesc + " format\n";
	
	bValid = true;
	iAtCount = 0;
	
	//if not mandatory, then leave
	if(mandatory == 0 && p_szEmail.length == 0)
		return "";
	
	if(mandatory == 1 && p_szEmail.length == 0)
		return szFldDesc + " is mandatory\n";
	
	if(!(p_szEmail.charCodeAt(0) == 64 || p_szEmail.charCodeAt(p_szEmail.length - 1) == 64))
		for(i = 0; i < p_szEmail.length; i++)
		{
			if(!((p_szEmail.charCodeAt(i) >= 45 && p_szEmail.charCodeAt(i) <= 46) ||
				(p_szEmail.charCodeAt(i) >= 48 && p_szEmail.charCodeAt(i) <= 57) ||
				(p_szEmail.charCodeAt(i) >= 64 && p_szEmail.charCodeAt(i) <= 90) || 
				p_szEmail.charCodeAt(i) == 95 ||
				(p_szEmail.charCodeAt(i) >= 97 && p_szEmail.charCodeAt(i) <= 122)))
			{
				bValid = false;
				break;
			}
			else
			{
				if(p_szEmail.charCodeAt(i) == 64)
					iAtCount++;
			}
		}
	else
		bValid = false;
	
	if(iAtCount == 1 && bValid == true)
		return "";
	else
		return szErrMsg;
}

function isNumericInt(p_szNumber)
{
	var i;
	if(p_szNumber.length == 0)
		return false;
	else
		for(i = 0; i < p_szNumber.length; i++)
		{
			if(!(p_szNumber.charCodeAt(i) >= 48 && p_szNumber.charCodeAt(i) <= 57))
				return false;
		}
	return true;
}

function isNumericFloat(p_szNumber)
{
	var i;
	var iDot;
	
	iDot = 0;
	for(i = 0; i < p_szNumber.length; i++)
		if(!(p_szNumber.charCodeAt(i) >= 48 && p_szNumber.charCodeAt(i) <= 57))
			return false;
		else
			if(p_szNumber.charCodeAt(i) == 46)
				iDot++;
	
	if(iDot > 1)
		return false;
	else
		return true;
}

function validFreeTextNoMandatory(p_szString, szFldDesc)
{
	var i;
	var szErrMsg = "Invalid " + szFldDesc + ", Non Standard ANSI characters\n";
	
	if(p_szString.length == 0)
		return "";
	else
		for(i = 0; i < p_szString.length; i++)
		{
			if(!(p_szString.charCodeAt(i) >= 32 && p_szString.charCodeAt(i) <= 126))	
					return szErrMsg;
		}
	return "";
}

function validChars(p_szString, szFldDesc)
{
	var i;
	var szErrMsg = "Invalid " + szFldDesc + ", special characters\n";
	
	if(p_szString.length == 0)
		return szFldDesc + " is mandatory\n";
	else
		for(i = 0; i < p_szString.length; i++)
		{
			if(!(p_szString.charCodeAt(i) == 45 || p_szString.charCodeAt(i) == 95 || p_szString.charCodeAt(i) == 32 ||
				(p_szString.charCodeAt(i) >= 48 && p_szString.charCodeAt(i) <= 57) ||
				(p_szString.charCodeAt(i) >= 64 && p_szString.charCodeAt(i) <= 90) || 
				(p_szString.charCodeAt(i) >= 97 && p_szString.charCodeAt(i) <= 122)))	
					return szErrMsg;
		}
	return "";
}

function validCharsNSpecial(p_szString, szFldDesc)
{
	var i;
	var szErrMsg = "Invalid " + szFldDesc + ", unaccepted special characters\n";
	
	if(p_szString.length == 0)
		return szFldDesc + " is mandatory\n";
	else
		for(i = 0; i < p_szString.length; i++)
		{
			if(!(p_szString.charCodeAt(i) >= 32 && p_szString.charCodeAt(i) <= 126))	
					return szErrMsg;
		}
	return "";
}

function mandatoryField(p_szString, szFldDesc)
{
	if(p_szString.length == 0)
		return szFldDesc + " is mandatory\n";
	else
		return "";
	
}

function validCharsNoSpace(p_szString, szFldDesc)
{
	var i;
	var szErrMsg = "Invalid " + szFldDesc + ", special characters and spaces not allowed\n";
	
	if(p_szString.length == 0)
		return szFldDesc + " is mandatory\n";
	else
		for(i = 0; i < p_szString.length; i++)
		{
			if(!(p_szString.charCodeAt(i) == 45 || p_szString.charCodeAt(i) == 95 ||
				(p_szString.charCodeAt(i) >= 48 && p_szString.charCodeAt(i) <= 57) ||
				(p_szString.charCodeAt(i) >= 64 && p_szString.charCodeAt(i) <= 90) ||
				(p_szString.charCodeAt(i) >= 97 && p_szString.charCodeAt(i) <= 122)))
					return szErrMsg;
		}
	return "";
}

function validDate(p_szDay, p_szMonth, p_szYear) //All in integer
{
	var bValid = false;
	
	if(p_szMonth == 1 || p_szMonth == 3 || p_szMonth == 5 || p_szMonth == 7 || p_szMonth == 8 || p_szMonth == 10 || p_szMonth == 12 )
	{
		if(p_szDay <= 31)
			bValid = true;
	}
	else
	{
		if(p_szMonth == 2)
		{
			if(!(p_szYear % 4) && (p_szDay <= 29))
					bValid = true;
			else
				if(p_szDay <= 28)
					bValid = true;
		}
		else
			if(p_szDay <= 30)
				bValid = true;
	}
	return bValid;
}

function validDateEx(szPrefix, szFormName, szFldDesc)
{
	var bDay = false;
	var bMonth = false;
	var bYear = false;
	var bValid = false;
	
	var iDay;
	var iMonth;
	var iYear;
	
	var szErrMsg = "Invalid " + szFldDesc + "\n";
	
	with(eval("document." + szFormName))
	{
		iDay = parseInt(eval(szPrefix + "Day.value"));
		iMonth = parseInt(eval(szPrefix + "Month.value"));
		iYear = parseInt(eval(szPrefix + "Year.value"));

		if(iDay > 0)
			bDay = true;
		
		if(iMonth > 0)
			bMonth = true;
		
		if(iYear > 0)
			bYear = true;
	}
	
	bValid = validDate(iDay, iMonth, iYear);
	if(bDay && bMonth && bYear && bValid)
		return "";
	else
		return szErrMsg;
}

function checkTextAreaMax(szData, szMaxLimit, szFldDesc)
{
	var szReturn;
	if(szData.length > szMaxLimit)
		szReturn = "input for " + szFldDesc + " cannot be greater than " + szMaxLimit + "\n";
	
	
	return szReturn;
}