// check number
function isNum(num)
{
	var i,j,strTemp;
	strTemp="0123456789";
	for (i=0;i<num.length;i++)
	{
		j=strTemp.indexOf(num.charAt(i));
		if (j==-1)
  		{
			return false;
		}
	}
	return true;
}

// check form validity
function check()
{
	if (document.frm1.bcCardNumber.value.length != 19)
	{
		alert("Invalid card number");
		document.frm1.bcCardNumber.focus();
		return false;
	}
	if (isNum(document.frm1.bcCardNumber.value)==false)
	{
		alert("Invalid card number");
		document.frm1.bcCardNumber.focus();
		return false;
	}
	if (mod10check(document.frm1.bcCardNumber.value)==false)
	{
		alert("Invalid card number");
		document.frm1.bcCardNumber.focus();
		return false;
	}
	
	if (document.frm1.bcCardPassword.value.length < 3 || document.frm1.bcCardPassword.value.length > 9)
	{
		alert("Invalid password");
		document.frm1.bcCardPassword.focus();
		return false;
	}
	
	if (isNum(document.frm1.bcCardPassword.value)==false)
	{
		alert("Invalid password (numbers only)");
		document.frm1.bcCardPassword.focus();
		return false;
	}

	return true;
}

// mod 10 check for the card number
function mod10check(str)
{
	//step1 : revers order
	var str_reorder = new Array(); // re order array
	var checkdigit = str.substr(18,1); // check digit
	//var patten = new Array(2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0);
	var patten = new Array(2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1);
	var i;
	for (i=0; i<18; i++)
	{
		str_reorder[i] = Number(str.substr(17-i,1));
	}

	var total = 0;

	for (i=0; i<18; i++)
	{

	    sum = str_reorder[i] * patten[i];

	    if (sum > 9) {
	        sum = sum - 9;
	    }

    	total +=  sum;
	}

	var result = 10 - (total % 10);

	if ((result+"")==checkdigit || (result-Number(checkdigit))==10 )
	{
		return true;
	}
	else
	{
		return false;
	}

}
