//Lunh test START 
//Add this to the creditCard text box:  onChange="testCard(this.form)" 

function commonTest(ccnumber){
	var i;
	var sum=0; 
//For a card with an even number of digits, double every odd numbered 
//digit and subtract 9 if the product is greater than 9. Add 
//up all the even digits as well as the doubled-odd digits, and the 
//result must be a multiple of 10 or it's not a valid card. If the card 
//has an odd number of digits, perform the same addition doubling the 
//even numbered digits instead. 

//The above means go backwards through digits doubling every other one (not first) 
//if double is above 9, or digit is over 4, then subtract 9 
//Do Mod(10) on result to see if it has zero remainder for division by 10 

var lastDoubled=0;
 for(i=(ccnumber.length - 1);i>=0;i--) { 
  digit=ccnumber.charAt(i); 
  sum += parseInt(digit); 
  lastDoubled++;
  if(lastDoubled>1) { 
   lastDoubled=0; 
   sum += parseInt(digit); 
   if(digit>4) sum-=9; 
  } 
 } 

 s=sum.toString() 
 if (s.charAt(s.length-1)!="0" || ccnumber.length<10 || ccnumber.length>19 || sum==0) { 
  return false; 
 }
 return true; 
} 

//Lunh test END 


function testComCard(comCardNumber) { 
	var digits = "0123456789"; 
	var s=comCardNumber ;
	var ccnumber1=""; 
	var i ;

	//Trim to digits 
 	for(i=0;i<s.length;i++) { 
  		t=s.charAt(i) 
  		if (digits.indexOf(t)>=0) ccnumber1=ccnumber1+t 
 	} 
	ccnumber1="290901"+ccnumber1;
	return(commonTest(ccnumber1));
}

function testCardGV(GVCardNumber) { 
	var digits = "0123456789"; 
	var s=GVCardNumber;
	var ccnumber2=""; 
	var i ;
	// Test de la taille
	if(s.length != 9) return false;
	
	//Trim to digits 
 	for(i=0;i<s.length;i++) { 
  		t=s.charAt(i) 
  		if (digits.indexOf(t)>=0) ccnumber2=ccnumber2+t 
 	} 
	ccnumber2="29090106"+ccnumber2 ;
	return(commonTest(ccnumber2));
}
function testCardCybelys(CybelysCardNumber) { 
	var digits = "0123456789"; 
	var s=CybelysCardNumber;
	var ccnumber2=""; 
	var i ;

	// Test de la taille
	if(s.length != 9) return false;

	//Trim to digits 
 	for(i=0;i<s.length;i++) { 
  		t=s.charAt(i) 
  		if (digits.indexOf(t)>=0) ccnumber2=ccnumber2+t 
 	} 
	ccnumber2="30840601"+ccnumber2 ;
	return(commonTest(ccnumber2));
}

function testCardPassEntr(GVCardNumber) { 
	var digits = "0123456789"; 
	var s=GVCardNumber;
	var ccnumber2=""; 
	var i ;

	// Test de la taille
	if(s.length != 9) return false;

	//Trim to digits 
 	for(i=0;i<s.length;i++) { 
  		t=s.charAt(i) 
  		if (digits.indexOf(t)>=0) ccnumber2=ccnumber2+t 
 	} 
	ccnumber2="29090199"+ccnumber2 ;
	return(commonTest(ccnumber2));
}
