//for(var i=1; i<30010; i=i+7){
//	var tempencrypt = numToChar(i);
//	var tempdecrypt = validateFBC(tempencrypt)
//	document.write("ID=" + i + " encrypted=" + tempencrypt + " decrypted=" + tempdecrypt +"<BR>");
//}

// num is an integer customer id and fn will return a string(encrypted id)
function numToChar(num){
	//generate hash table
	generateNumToChar();
	
	//calculate 2 character validation code
	var valCode = (num % 53) + 47;	//min=46 , max=99
	var encriptedValCode="";
	valCode=String(valCode);
	for(var i=0; i<valCode.length; i++){
		encriptedValCode = encriptedValCode + numToCharArray[valCode.charAt(i)];
		////document.write(numToCharArray[valCode.charAt(i)]);
		////document.write("<br>");
	}
	
	//Convert customer id to its encrypted equivalent	
	num=String(num);	//convert num to a string
	////document.write(num.length);
	var StringEncriptedID="";
	if(num.length<2){	// if id only one character put an equivalent leading zero
		StringEncriptedID = numToCharArray["0"];
		
	}
	for(var i=0; i<num.length; i++){
		////document.write(StringEncriptedID);
		StringEncriptedID = StringEncriptedID + numToCharArray[num.charAt(i)];
		
		////document.write("<br>");
	}
	
	//attach a spacer letter at end to divide from validation code

        
        
	//var spacerLetter = random(3);//0,1,2
	var spacerLetter = Math.ceil(Math.random()*4);//0,1,2
	switch (spacerLetter) {
		case 1:
			StringEncriptedID = StringEncriptedID + "J";
			break;
		case 2:
			StringEncriptedID = StringEncriptedID + "O";
			break;
		case 3:
			StringEncriptedID = StringEncriptedID + "B";
			break;
		default:
			StringEncriptedID = StringEncriptedID + "B";
			//for portal use J, O, B
			//for thg use G, U, T
	}

	////document.write(StringEncriptedID);
	////document.write("<BR>");

	////StringEncriptedID = StringEncriptedID + "T";

	////document.write(StringEncriptedID);
	////document.write("<BR>");

	//add on encripted Validation Code
	StringEncriptedID = StringEncriptedID + encriptedValCode;
	
	////document.write(StringEncriptedID);
	////document.write("<BR>");
	
	//Remove hash table
	delete numToCharArray;
	
	return StringEncriptedID;
}

function generateNumToChar(){
	numToCharArray = new Array();
	numToCharArray["0"] = "P";
	numToCharArray["1"] = "X";
	numToCharArray["2"] = "W";
	numToCharArray["3"] = "Q";
	numToCharArray["4"] = "R";
	numToCharArray["5"] = "L";
	numToCharArray["6"] = "M";
	numToCharArray["7"] = "N";
	numToCharArray["8"] = "H";
	numToCharArray["9"] = "K";
}

function validateFBC(tempCode){
	generateCharToNum();
	
	var spacerLetter;	//holder for spacer letter
	var StringEncriptedID;	//holder for encrypted id
	var StrEncryValCode;	//holder for encrypted validation code
	var idInt;	//integer value of id
	var validateCode;	//integer value of validation code
	
	tempCode = tempCode.toUpperCase();
	
	//Look at spacer letter
	spacerLetter = tempCode.charAt(tempCode.length-3);
	
	//if a valid spacer letter
	if((spacerLetter=="J")||(spacerLetter=="O")||(spacerLetter=="B")){
		//get encrypted id
		StringEncriptedID = tempCode.substring(0, tempCode.length-3);
		//convert back to a customer id string
		for(var i=0; i<StringEncriptedID.length; i++){
			if(charToNumArray[StringEncriptedID.charAt(i)]){
			}
			else{
			//	alert("not in num hash");
				return false;
			}
			idInt = idInt + charToNumArray[StringEncriptedID.charAt(i)];
		}
		//idInt=Int(idInt);	//string to int
		
		//get encrypted validation code
		StrEncryValCode = tempCode.substring(tempCode.length-2, tempCode.length);
		//convert back to a validation string
		for(var i=0; i<StrEncryValCode.length; i++){
			if(charToNumArray[StrEncryValCode.charAt(i)]){}
			else{
				//alert("not in val hash");
				return false;
			}
			validateCode = validateCode + charToNumArray[StrEncryValCode.charAt(i)];
		}
		//validateCode=Int(validateCode);	//string to int
		
		//return id if number validates
		if(validateCode==((idInt%53)+47)){
			//return idInt;
			return true;
			//alert(idInt);
			
		}
		//alert("doesnt validate");
		return false;
	}else{
		//trace(spacerLetter);
		//return "not a valid spacer";
		//alert("not a valid spacer");
		return false;
	}
}

function generateCharToNum(){
	charToNumArray = new Array();
	charToNumArray["P"] = "0";
	charToNumArray["X"] = "1";
	charToNumArray["W"] = "2";
	charToNumArray["Q"] = "3";
	charToNumArray["R"] = "4";
	charToNumArray["L"] = "5";
	charToNumArray["M"] = "6";
	charToNumArray["N"] = "7";
	charToNumArray["H"] = "8";
	charToNumArray["K"] = "9";
	
}
