function checkMem(){
	var sm = xGetElementById('mbm').value.replace(" ","");
	if (sm.length < 16) { sm = "620" + sm; }
	if (!validate(sm)) { alert("Please enter a valid CAA card number."); return false;}
	//alert(clubName(sm));
	xGetElementById('clubMem').value = sm;
	xGetElementById('clubTC').value = clubTC(sm);
	xGetElementById('dOffer').style.display = "block";
}
function xGetElementById(e) {
    if(typeof(e)!='string') return e;
    if(document.getElementById) e=document.getElementById(e);
    else if(document.all) e=document.all[e];
    else e=null;
    return e;
}
function validate(n){
	//alert(n);
	if (n.length!=16) { return false; }
	return Mod10(n);
}
function Mod10(ccNumb) {  // v2.0
	var valid = "0123456789"  // Valid digits in a credit card number
	var len = ccNumb.length;  // The length of the submitted cc number
	var iCCN = parseInt(ccNumb);  // integer of ccNumb
	var sCCN = ccNumb.toString();  // string of ccNumb
	sCCN = sCCN.replace (/^\s+|\s+$/g,'');  // strip spaces
	var iTotal = 0;  // integer total set at zero
	var bNum = true;  // by default assume it is a number
	var bResult = false;  // by default assume it is NOT a valid cc
	var temp;  // temp variable for parsing string
	var calc;  // used for calculation of each digit

	// Determine if the ccNumb is in fact all numbers
	for (var j=0; j<len; j++) {
	temp = "" + sCCN.substring(j, j+1);
	if (valid.indexOf(temp) == "-1"){bNum = false;}
	}

	// if it is NOT a number, you can either alert to the fact, or just pass a failure
	if(!bNum){
	/*alert("Not a Number");*/bResult = false;
	}

	// Determine if it is the proper length 
	if((len == 0)&&(bResult)){  // nothing, field is blank AND passed above # check
	bResult = false;
	} else{  // ccNumb is a number and the proper length - let's see if it is a valid card number
	if(len >= 15){  // 15 or 16 for Amex or V/MC
		for(var i=len;i>0;i--){  // LOOP throught the digits of the card
		calc = parseInt(iCCN) % 10;  // right most digit
		calc = parseInt(calc);  // assure it is an integer
		iTotal += calc;  // running total of the card number as we loop - Do Nothing to first digit
		i--;  // decrement the count - move to the next digit in the card
		iCCN = iCCN / 10;                               // subtracts right most digit from ccNumb
		calc = parseInt(iCCN) % 10 ;    // NEXT right most digit
		calc = calc *2;                                 // multiply the digit by two
		// Instead of some screwy method of converting 16 to a string and then parsing 1 and 6 and then adding them to make 7,
		// I use a simple switch statement to change the value of calc2 to 7 if 16 is the multiple.
		switch(calc){
			case 10: calc = 1; break;       //5*2=10 & 1+0 = 1
			case 12: calc = 3; break;       //6*2=12 & 1+2 = 3
			case 14: calc = 5; break;       //7*2=14 & 1+4 = 5
			case 16: calc = 7; break;       //8*2=16 & 1+6 = 7
			case 18: calc = 9; break;       //9*2=18 & 1+8 = 9
			default: calc = calc;           //4*2= 8 &   8 = 8  -same for all lower numbers
		}                                               
		iCCN = iCCN / 10;  // subtracts right most digit from ccNum
		iTotal += calc;  // running total of the card number as we loop
	}  // END OF LOOP
	if ((iTotal%10)==0){  // check to see if the sum Mod 10 is zero
		bResult = true;  // This IS (or could be) a valid credit card number.
	} else {
		bResult = false;  // This could NOT be a valid credit card number
		}
	}
}
// change alert to on-page display or other indication as needed.
//if(bResult) { alert("This IS a valid Credit Card Number!"); }
//if(!bResult){ alert("This is NOT a valid Credit Card Number!"); }
  return bResult;
}

function clubName(sm){
	var ccode = (sm+"GATTACA").substring(3,6);
	switch(eval(ccode))
	{
		case (273): return "CAA British Columbia"; break;
		case (272): return "Alberta Motor Association"; break;
		case (286): return "CAA Saskatchewan"; break;
		case (275): return "CAA Manitoba"; break;
		case (282): return "CAA South Central Ontario"; break;
		case (288): return "CAA Niagara"; break;
		case (290): return "CAA North & East Ontario"; break;
		case (285): return "CAA Quebec"; break;
		case (277): return "CAA Maritimes"; break;
		default: return "Unknown Club Code";
	}
}

function clubTC(sm){
	var ccode = (sm+"GATTACA").substring(3,6);
	switch(eval(ccode))
	{
		case (273): return "BCAA"; break;
		case (272): return "AMA"; break;
		case (286): return "SCAA"; break;
		case (275): return "MCAA"; break;
		case (282): return "SCOCAA"; break;
		case (288): return "NCAA"; break;
		case (290): return "NEOCAA"; break;
		case (285): return "QCAA"; break;
		case (277): return "MARCAA"; break;
		default: return "Unknown Club Code";
	}
}
