function CheckDstDigit(Corp, House, Cust, Check)
{
	var zeros = "000000"
	var checkString = new String(Corp);
	if(House.length < 6) // pad with leading zeros
		checkString += zeros.substr(0, 6 - House.length)
	checkString += House;
	if(Cust.length < 2)
		checkString += zeros.substr(0, 2 - Cust.length)
	checkString += Cust;
	
	var oddSum = 0;
	var evenSum = 0;
	for(var i = 1; i <= checkString.length; i++)
	{
		if(i % 2 == 0) // even
		{
			evenSum += new Number(checkString.substr(i-1,1));
		}
		else // odd
		{
			oddSum += new Number(checkString.substr(i-1,1));
		}
	}
	var sumString = new String((oddSum *2) + evenSum);
	sumString = sumString.substr(sumString.length-1,1);
	var digitString = new String((new Number(sumString) - 10) * -1);
	if(digitString.length == 2)
		digitString = "0" // map 10 to 0
	
	if(digitString == Check)
		return true;
	else
		return false;
}

function CheckCsgAccountNumber(Field)
{
	var oReg2 = /^8\d{15}$/
	var accntNum = Field.value.trim();
	accntNum = accntNum.replace(/\D/g,"");
	if(!oReg2.test(accntNum))
		return false
	var total = 0;
	var checkDigit = accntNum.substr(15,1);
	for(var i = 1; i <= 15; i++)
	{
		var digit = accntNum.substr(i-1,1);
		if(i % 2 == 0) // even
		{
			total += new Number(digit);			
		}
		else // odd
		{
			var result = digit *2;
			var resultString = new String(result);
			if(resultString.length == 2)
				result = new Number(resultString.substr(0,1)) + new Number(resultString.substr(1,1));
			total += new Number(result);
		}
		// Debug.writeln("Current digit is: " + digit);
	}
	var testDigit = new String(total);
	testDigit = testDigit.substr(testDigit.length - 1, 1);
	testDigit = 10 - new Number(testDigit);
	testDigit = (testDigit != 10)? testDigit : 0;
	if(testDigit == checkDigit)
		return true;
	else
		return false;
}


function CheckDstAccountNumber(Field)
{
	// regular/signature series bills allow space/dash separator respectively
	var oReg = /^(\d{5,7})(?: |-)(\d{1,6})-(\d{1,2})-(\d$)/
	var oReg1 = /^\d{13}$/
	var acctNum = Field.value.trim();
	if(oReg1.test(acctNum))
	{
		return false; // convergys account number
	}
	else if (oReg.test(acctNum))
	{
		var m = acctNum.match(oReg);
		var corp = m[1];
		var house = m[2];
		var cust = m[3];
		var check = m[4];
		return CheckDstDigit(corp, house, cust, check)
	}
	return false;
}

function MaskAccountNumber(eventObj, accountField)
{
	var keyCode = eventObj.keyCode;
	if (keyCode != 8 && keyCode != 46 && keyCode != 39 && keyCode != 37) // Ignore backspace, delete, left and right
	{
		var accountNumber = accountField.value
		var firstChar = accountNumber.substr(0,1)
		if (firstChar != 8)
		{
			if(accountNumber.indexOf("  ") > 0)
			{
				accountNumber = accountNumber.replace("  ", " ");
				accountField.value = accountNumber;
			}
			if(accountNumber.indexOf("--") > 0)
			{
				accountNumber = accountNumber.replace("--", "-");
				accountField.value = accountNumber;
			}
			accountField.maxLength = 17;
			var oRegCorp = /^(\d{5}$)/
			var oRegHouse = /^(\d{5})(?: |-)(\d{6}$)/
			var oRegCust = /^(\d{5})(?: |-)(\d{6})-(\d{2}$)/
			var oRegFull = /^(\d{5})(?: |-)(\d{1,6})-(\d{1,2})-(\d$)/
			if(oRegCorp.test(accountNumber))
			{
				accountField.value = accountNumber + " ";
			}
			else if(oRegHouse.test(accountNumber))
			{
				accountField.value = accountNumber + "-";
			}
			else if(oRegCust.test(accountNumber))
			{
				accountField.value = accountNumber + "-";
			}
			else if(oRegFull.test(accountNumber))
			{
				
				var zeros = "000000"
				var m = accountNumber.match(oRegFull);
				var Corp = m[1];
				var House = m[2];
				var Cust = m[3];
				var Check = m[4];
				if(House.length < 6) // pad with leading zeros
					House = zeros.substr(0, 6 - House.length) + House
				if(Cust.length < 2)
					Cust = zeros.substr(0, 2 - Cust.length) + Cust
				accountField.value = Corp + " " + House + "-" + Cust + "-" + Check;
			}
			
		}
		else
		{
			accountField.maxLength = 16;
		}
	}
}
