﻿// ## error, warning messages for validation

/*
var err001="$1 is mandatory.\r\n";
var err002="$1 is not a valid email format. Valid email could be like this: abc@mail.com\r\n";
var err003="Password values does not match.\r\n";
var err004="$1 has exceed max length. Please trim down the value of $2.\r\n"
var err005="$1 must be at least the length of $2.\r\n"
var err006="$1 accepts only accept characters a-z, A-Z and 0-9.\r\n";
var err007="$1 must be earlier or equal to $2.\r\n"
*/

var err001="$1 必須填寫.\r\n";
var err002="$1 的電郵格式不正確. 支援格式為: abc@mail.com\r\n";
var err002s="電郵格式不正確. 支援格式為: abc@mail.com\r\n";
var err003="密碼值不付, 會員密碼及重新輸入密碼值必須一樣.\r\n";
var err004="$1 值過長. 最長為 $2 位員.\r\n"
var err005="$1 值過短, 最小為 $2 位員.\r\n"
var err006="$1 只接受 a-z, A-Z 及 0-9.\r\n";
var err007="$1 必須早過 $2.\r\n"
var err010="名字及姓氏必須是英文.\r\n";


// ## regular exp
var reg_email=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
var reg_alphanum=/^([a-zA-Z0-9])+$/;

function isEmptyOrNull (pValue)
{
	var aOk=true;
	
	if (pValue && stringTrim (pValue).length>0)
	{
		aOk=false;
	}
	
	return aOk;
}

function stringLTrim (pValue)
{
	var aValue="";
	var idx=-1;
	
	if (pValue)
	{
		for (var i=0; i<pValue.length; i++)
		{
			var aChar=pValue.charAt (i);
			if (aChar!=" ")
			{
				idx=i;
				break;
			}
		}
		
		aValue=pValue.substr (i);
	}
	
	return aValue;
}

function stringRTrim (pValue)
{
	var aValue="";
	
	if (pValue)
	{
		aValue=stringReverse (stringLTrim (stringReverse (pValue)));
	}
	
	return aValue;
}

function stringTrim (pValue)
{
	var aValue="";
	
	if (pValue)
	{
		aValue=stringLTrim (stringRTrim (pValue));
	}
	
	return aValue;
}

function stringReverse (pValue)
{
	var aValue="";
	
	if (pValue)
	{
		for (var i=pValue.length-1; i>=0; i--)
		{
			aValue+=pValue.charAt (i);
		}
	}
	
	return aValue;
}

/**
 * basic support of 
 *	1) empty null check
 *	2) exceed length check
 */
function basicValidation (pValue, pFieldName, pMaxLen, pMinLen)
{	
	var aMsg="";
	
	if (isEmptyOrNull (pValue))
	{
		aMsg+=err001.replace (/\$1/, pFieldName);
	}
	else
	{
		if (pValue.length > pMaxLen)
		{
			var aErr=err004.replace (/\$1/, pFieldName);
			aErr=aErr.replace (/\$2/, pMaxLen+'');
			aMsg+=aErr;
		}
		else if (pMinLen!=null && pValue.length < pMinLen)
		{
			var aErr=err005.replace (/\$1/, pFieldName);
			aErr=aErr.replace (/\$2/, pMinLen+'');
			aMsg+=aErr;			
		}
	}	
	
	return aMsg;
}

/**
 * basic date pair validation
 *	1) null checks
 *	2) from date must be earlier or equal to to date
 */
function basicDatePairValidation (pFromDate, pToDate, pFromField, pToField)
{
	var aMsg="";
	var aDFromDate=null;
	var aDToDate=null;
	
	if (!isEmptyOrNull (pFromDate) && !isEmptyOrNull (pToDate))
	{
		aDFromDate=new Date (pFromDate);
		aDToDate=new Date (pToDate);
		
		if (aDFromDate>aDToDate)
		{
			var aErr=err007.replace (/\$1/, pFromField);
			aErr=aErr.replace (/\$2/, pToField);
			aMsg+=aErr;
		}
	}
	
	return aMsg;
}

