<!--<%
String.prototype.Trim = function(){	return this.replace(/^\s*/,"").replace(/\s*$/,""); }
String.prototype.TrimR = function(){ return this.replace(/\s*$/,""); }
String.prototype.TrimM = function(){ return this.replace(/(\$|,| )/g,""); }

var gMaxPayees = 18;
var gMaxAPs = 50;

var rePwd =			/^\w{8,15}$/;
var rePwdVal =		/^\w*(([a-zA-Z]\w*\d)|(\d\w*[a-zA-Z]))\w*$/;
var rePin =			/^\d{4}$/;
var reSplKey =		/^9$|^16$|^2[07]$|^3[56]/;
var reArwSplKey =	/^9$|^16$|^2[07]$|^40$|^3[56789]$/; // 37-40 are arws
var reAddr =		/^[^^\\"<>]{0,30}$/;
var reAddrComp =	/^[^^\\"<>]{1,30}$/;
var reChqRef =		/^[^^\\"<>]{1,20}$/;
var reDebCredRef =	/^[^^\\"<>']{0,12}$/;
var rePostCode =	/^\d{1,4}$/;
var reDate =		/^([0-3]?\d)\/([01]?\d)\/(\d\d)$/;
var rePSISAcct =	/^(\d{6}[1-9]|\d{5}[1-9]\d|\d{4}[1-9]\d{2}|\d{3}[1-9]\d{3}|\d{2}[1-9]\d{4}|\d[1-9]\d{5}|[1-9]\d{6})([1245]\d|[0369][1-9])$/;
var reCustNo =		/^(\d{6}[1-9]|\d{5}[1-9]\d|\d{4}[1-9]\d{2}|\d{3}[1-9]\d{3}|\d{2}[1-9]\d{4}|\d[1-9]\d{5}|[1-9]\d{6})$/;
var reSafeKey =		/^\d{6}$/;
var rePSISSuff =	/^([1245]\d|[0369][1-9])$/;
var reCurSavLoan =/^([1245]\d|[039][1-9])$/;
var reCredSuff =	/^6[1-9]$/;
var reInput =		/\S+/;
var reExtBank =	/^\d{2}$/;
var reExtBranch =	/^\d{4}$/;
var reExtAcct =	/^\d{7}$/;
var reExtSuff =	/^\d{2,3}$/;
var rePayeeName =	/^[^^\\"<>]{1,30}$/;
var rePayeeCode =	/^\d{2}$/;
var reSequenceNumber = /^\d{2}$/;
var reNZBAAcct =	/^\d{15,16}$/;
var reNZBAField =	/^[^^\\"<>]{0,12}$/;
var reIdent =		/^[^^\\"<>]{0,4}$/;
var reEtp =			/^([^^\\"<>]{1,30})(\d{16})$/;
var reNumeric =	/^\d+$/;
var reUseMask =	/^[N ]$/;
var reTerm =		/^[1-9]\d?$/;
var reType =		/^[soimb]$/i;
var reCardNo =		/^(\d{14}|\d{16})$/;
var rePayment =	/^(\d{7})(\d{2})(\d{2})(\d{8})$/;
var reFuturePayment =	/^(\d{7})(\d{2})(\d{4})(\d{8})$/;
var reKeyAmt =	/^ *\$? *(([1-9](\d{0,5}|\d{0,2},\d{3})(\.\d{0,2})?)|0|(0?\.([1-9]\d?|0[1-9]?)?)) *$/;
var reAmt =		/^ *\$? *(([1-9](\d{0,5}|\d{0,2},\d{3})(\.\d{1,2})?)|(0?\.([1-9]\d?|0[1-9]))) *$/;
var reLAmt =	/^ *\$? *(([1-9](\d{0,7}|\d{0,2},\d{3}|\d?,\d{3},\d{3})(\.\d{1,2})?)|(0?\.([1-9]\d?|0[1-9]))) *$/;
var re0DecPl =	/\.$/;
var re1DecPl =	/\.\d$/;
var reDecPt =	/\./;
var reLDecPt =	/^\./;
var re1Comma =	/,d{3}\.\d{2}$/;
var re2Comma =	/,d{3},d{3}\.\d{2}$/;

function getToday()
{
    var oDate = new  Date();
    var sDay = ((oDate.getDate() + "").length == 1) ? "0" + oDate.getDate() : oDate.getDate() + "";
    var sMonth = (((oDate.getMonth() + 1) + "").length == 1) ? "0" + (oDate.getMonth() + 1) : oDate.getMonth() + 1;
    var date = sDay + "/" + sMonth + "/" +  oDate.getFullYear(); 
    return date.replace(/^(\d{2})\/(\d{2})\/(\d{2})(\d{2})$/, "$1\/$2\/$4");
}
 
function valDateToday(date, days)
{
	//debugger;
	var retVal = false;
	if (reDate.exec(date) && gToday != null)
	{
		var dt = (new Date( 2000 + parseInt(RegExp.$3, 10), parseInt(RegExp.$2, 10) - 1, RegExp.$1)).getTime() + (86400000 - 1);
		if (gToday <= dt && dt <= gToday + (days ? (86400000 * days) : 5184000000))
			retVal = true;
	}
	return retVal;
}

function finalDate(date, indicator, freq, noPayments)
{
    //debugger;
   date = date.replace(/^(\d{2})\/?(\d{2})\/?(\d{2})$/, "$1$2$3");
    //var month = parseInt(date.substr(2, 2)) - 1;
    
    var d = new Date("20" + date.substr(4, 2), parseInt(date.substr(2, 2)-1), date.substr(0, 2));
    noPayments--;    //This is because the next payment is included in number of payments.
    
    switch (indicator)
    {
        case "W":
            d.setDate(d.getDate() + (parseInt(freq) * 7 * noPayments));
            break;
        case "D":
            d.setDate(d.getDate() + (parseInt(freq) * noPayments));
            break;
        case "M":
            d.setMonth(d.getMonth() + (parseInt(freq) * noPayments));
            break;
    }
    var mth = parseInt(d.getMonth() + 1);
    var day = ((d.getDate() + "").length == 2) ? d.getDate() : "0" + d.getDate();  
    mth = ((mth + "").length == 2) ? mth : "0" + mth;  
    return day + "/" + mth + "/" + d.getFullYear();  
}

function valDate(date, days)
{
	var retVal = false;
	if (reDate.exec(date) && gToday != null)
	{
		var dt = (new Date( 2000 + parseInt(RegExp.$3, 10), parseInt(RegExp.$2, 10) - 1, RegExp.$1)).getTime();
		if (gToday <= dt && dt <= gToday + (days ? (86400000 * days) : 5184000000))
			retVal = true;
	}
	return retVal;
}

function checkDate(date)
{
      //debugger;
      // Validates a date. Accepted format ("dd/mm/yy") 
      
      var retVal = true;  
      var dayVal = RegExp.$1;
	  var monthVal = RegExp.$2 - 1;
	  var yearVal =  (RegExp.$3.length == 2) ? "20" + RegExp.$3 : RegExp.$3; 
    			    			  
	  var dateObject = new Date();
      dateObject.setFullYear( yearVal, monthVal, dayVal );
    		    			  
      if(dateObject.getDate() != dayVal)
          retVal = false;
      else if(dateObject.getMonth() != monthVal)
            retVal = false;   
      else if(dateObject.getFullYear() != yearVal)
            retVal = false;  
       
     return retVal;     
}

function valChar(chVal, chMask, val)
{
	switch (chMask)
	{
		case 's':return (chVal == ' ');
		case 'n':return /^\d$/.test(chVal);
		case 'a':return /^[A-Za-z]$/.test(chVal);
		case ' ':return true;
		default :return (chVal == chMask);
	}
}

function valNzba(val, mask, chk)
{
	var retVal = false;
	if (reNZBAField.test(val))
	{
		val += "            ".substr(0, 12 - val.length);
		if (!reUseMask.test(chk) || mask.length == 0)
			retVal = true;
		else if (chk == "N")
		{
			if ((val.length >= mask.length) && reNumeric.test(val))
			{
				var i = mask.length;
				while (--i >= 0)
					if (reNumeric.test(mask.charAt(i)) && (val.charAt(i) != mask.charAt(i))) break;
				retVal = (i == -1);
			}
		}
		else
		{
			var i = mask.length;
			while (--i >= 0)
				if (!valChar(val.charAt(i), mask.charAt(i), val)) break;
			retVal = (i == -1);
		}
	}
	return retVal;
}

function Curr(sAmt)
{
	this.Amt = sAmt.TrimM();
	this.toSStr = getSAmt;
	this.toMStr = getMAmt;
	this.toLStr = getLAmt;
}

function fmtAmt(sAmt)
{
	sAmt = sAmt.replace(/^0*/, '');
	if (!reDecPt.test(sAmt))
		sAmt += ".00";
	else if (re0DecPl.test(sAmt))
		sAmt += "00";
	else if (re1DecPl.test(sAmt))
		sAmt += "0";
	if (reLDecPt.test(sAmt))
		sAmt = "0" + sAmt;
	var iLen = sAmt.length;
	if (iLen > 6 && !re1Comma.test(sAmt))
		sAmt = sAmt.substring(0,iLen - 6) + "," + sAmt.substring(iLen - 6,iLen);
	iLen = sAmt.length;
	if (iLen > 10 && !re2Comma.test(sAmt))
		sAmt = sAmt.substring(0,iLen - 10) + "," + sAmt.substring(iLen - 10,iLen);
	return sAmt;
}

function fmtLen(sAmt,fLen)
{
	var s = "$         ";
	return s.substring(0, ((fLen) ? fLen : 10) - sAmt.length) + sAmt;
}

function getSAmt(){ return fmtAmt(this.Amt); }
function getMAmt(){ return fmtLen(fmtAmt(this.Amt),11);}
function getLAmt(){ return fmtLen(fmtAmt(this.Amt),14);}

//%>-->