
var bin = null;
var bin2 = null;
var ccNumber = null;
var ccNumber2 = null;
var invalidBINs = null;

function intializeInvalidBINs(){
	invalidBINs = new Array(
	'374355','377064','379024','400344','400375','400612','400767','400768','400911','401914','403888','404708',
	'406042','407390','408531','410517','411773','412487','413333','414613','414709','414750','414986','415407',
	'415874','415968','416046','416047','419002','421398','421402','421546','421657','421766','422112','422837',
	'424319','425131','426452','427538','427557','428434','429263','429404','430260','430326','430990','431195',
	'432144','432376','433429','435603','435630','435640','435689','436618','436678','438421','439226','440396',
	'442624','442732','443001','443040','443445','443500','445208','446054','446278','447211','448027','448275',
	'448858','448926','450766','450903','450949','451016','453155','453903','453978','454063','455408','455702',
	'456361','456462','456472','456726','457048','457198','465860','467541','467726','467745','474473','474476',
	'479367','479851','480213','480349','482851','482882','486796','486830','490755','491986','492181','492945',
	'496696','497040','497230','497401','497819','498073','511340','512786','513219','513601','514503','514616',
	'517805','518645','518718','518919','521190','522134','522182','525615','526225','526226','526719','528061',
	'528210','528716','529149','529962','530111','530128','535318','537860','540127','540438','540630','540758',
	'541109','541327','541736','543073','543267','543460','543482','544330','544541','544566','544602','544792',
	'544927','545460','545749','545758','546503','548006','548050','548234','549096','549113','549709','549958',
	'550200','551199','551392','551861','558158','558250','440396','522182','545749','407390','421402','421546',
	'432144','467726','514503','526719','528061','529962','379024','421657','428434','446054','451016','511340',
	'544330','400768','406042','411773','414750','415407','415874','416046','416047','419002','421766','422112',
	'422837','425131','427538','427557','429263','429404','430326','433429','435603','435630','435640','435689',
	'436618','442732','443001','443500','445208','448275','467541','474473','479367','480349','482851','482882',
	'486796','486830','526225','526226','528716','530111','537860','544602','544792','544927','546503','548006',
	'551199','551861','558158','374355','400344','400375','400767','414709','415968','432376','436678','442624',
	'443040','448027','448926','455408','474476','479851','480213','490755','491986','512786','514616','517805',
	'518919','529149','544566','545758','548050','549096','551392','558250','377064','400612','400911','401914',
	'403888','404708','408531','410517','412487','413333','414613','414986','421398','424319','426452','430260',
	'430990','431195','438421','439226','443445','446278','447211','448858','450766','450903','450949','453155',
	'453903','453978','454063','455702','456361','456462','456472','456726','457048','457198','465860','467745',
	'492181','492945','496696','497040','497230','497401','497819','498073','513219','513601','518645','518718',
	'521190','522134','525615','528210','530128','535318','540127','540438','540630','540858','541109','541327',
	'541736','543073','543267','543460','543482','544541','545460','548234','549113','549709','549958','550200'
	);
}

/* This method checks whether the BIN is a valid number or not.
 * If the BIN is invalid, error message will be displayed in the page.
 * Otherwise encryptCard() will be called.
*/
function checkForInvalidBIN(){
	intializeInvalidBINs();
	getBINNumber();
	var isInvalidBIN = validateBIN(bin);
	
	var isInvalidBIN2;
	if(ccNumber2 != null && ccNumber2 != ""){
		isInvalidBIN2 = validateBIN(bin2);
		if(isInvalidBIN2 && !isInvalidBIN){
			setError('secondCC');
		}else if(!isInvalidBIN2 && isInvalidBIN){
			setError('firstCC');		
		}else if(isInvalidBIN2 && isInvalidBIN){
			setError('firstCC');
			setError('secondCC');		
		}else if(!isInvalidBIN2 && !isInvalidBIN){
			encryptCard2();
		}
	}else{
		if(isInvalidBIN){
			setError();
		}else{
			encryptCard();
		} 
	}
}	

function getBINNumber(){
	if(document.getElementById("creditCardNumberTemp")!= null){
		ccNumber = document.getElementById("creditCardNumberTemp").value;
		if(ccNumber != null && ccNumber != ""){
			bin = ccNumber.substr(0,6);
		}
	}
	if(document.getElementById("secondaryCCNumberTemp")!= null && document.getElementById("secondaryCCNumberTemp")!= ""){
		ccNumber2 = document.getElementById("secondaryCCNumberTemp").value;
		if(ccNumber2 != null){
			bin2 = ccNumber2.substr(0,6);
		}
	} 
}

function validateBIN(bin){
    var isInvalidBIN = false;
	for(var i=0; i<invalidBINs.length; i++){
		if(invalidBINs[i] == bin){
			isInvalidBIN = true;
			break;
		}
	}
	return isInvalidBIN;
}

function setError(creditCard){
	if(creditCard != null && creditCard == 'secondCC'){
		document.getElementById("secondCCInvalidBIN").style.display = "block";
	}else{
		document.getElementById("invalidBIN").style.display = "block";
	}
	
	if('referenceFlag'== creditFlag) {
	    formatCreditCardErrorMessages(creditCard);
    }
}
