// WFB MODIFIED 2003.11.15 at 17:58:12
/*
	Changed "alert" functions to add text to global "CreditCardError".
	Error is returned as "" if there is no error.
	Added date validation.
	Formatted code for better readability.
*/
/* Credit-card check digit verification
Author: D. Keith Mattox
All code copyright © 1998-99 Interpressions Software Solutions Inc.
D. Keith Mattox http://www.interpressions.com
*/

// Placed outside functions to that it will be global
var CreditCardError = '';

function check_card() 
{
	var cardtype=document.order.CardType.options[document.order.CardType.selectedIndex].value;
	var cnlen=document.order.CreditCardNumber.value.length;
	var ccnum=document.order.CreditCardNumber.value;
	if (cardtype == "") 
	{ 
		CreditCardError = 'Please select a credit card type.';
		return CreditCardError;
	}
	if (cardtype != '') 
	{ 
		if (document.order.NameOnCard.value == '' || document.order.NameOnCard.value == '-REQUIRED-') 
		{
			CreditCardError = 'Please enter the name on the credit card.';
			return CreditCardError;
		}
		if (document.order.CardExp.value == '')
		{
			CreditCardError = 'Please enter the expiration date of your credit card.';
			return CreditCardError;
		}
		if (isNaN(document.order.CardExp.value)) 
		{
			CreditCardError = 'Expiration date must be numeric.';
			return CreditCardError;
   	}
   	// ADD EXPIRATION ROUTINE HERE
		var TodayIs = new Date();
		var ThisMonth = TodayIs.getMonth() + 1;
		var ThisYear = TodayIs.getFullYear();
		var YearCheck = 0 + document.order.CardExpYear.value - ThisYear;
		var MonthCheck = 0 + document.order.CardExpMon.value - ThisMonth;
		if (YearCheck <= 0 && MonthCheck <= 0)
		{
			CreditCardError = 'The credit card seems to have expired.';
			return CreditCardError;
		}
		// END ADDITION BY BB
		if (ccnum == '' || ccnum =='-REQUIRED-')
		{
			CreditCardError = 'Please enter your credit card number.';
			return CreditCardError;
		}
		if (ccnum.indexOf(' ')!=-1)
		{
			CreditCardError = 'Please DO NOT include spaces or dashes in your credit card number.';
			return CreditCardError;
		}
		if (ccnum.indexOf('-')!=-1)
		{
			CreditCardError = 'Please DO NOT include spaces or dashes in your credit card number.';
			return CreditCardError;
		}
		if (isNaN(ccnum))
		{
			CreditCardError = 'Credit card number must be numeric.';
			return CreditCardError;
		}
		
/* Remove number validation		
		
		if ((cardtype == 'American Express') && !(cnlen==15))
		{ 
			bad_card(cardtype);
			return CreditCardError;
		}
		if (((cardtype == "MasterCard") || (cardtype == "Discover")) && !(cnlen==16))
		{ 
			bad_card(cardtype);
			return CreditCardError;
		}
		if ((cardtype == "Visa") && !((cnlen==13) || (cnlen==16)))
		{ 
			bad_card(cardtype);
			return CreditCardError;
		}
		ccdgt = new Array();
		for (c = 0; c < cnlen; c++)
		{ 
			ccdgt[c] = ccnum.substring(c,c+1);
		}
		ccdgta = new Array();
		for (c = 0; c < cnlen; c++) 
		{ 
			ccdgta[c] = ccdgt[c]*2; 
		}
		if ((cnlen==13)||(cnlen==15)) 
		{
			if (ccdgta[1] >= 10)
			{ 
				ccda1=ccdgta[1].toString();
				var cc1b = ccda1.substring(0,1);
				var cc1c = ccda1.substring(1,2);
				var cc1 = parseInt(cc1b)+parseInt(cc1c);
			} 
			else
			{
				var cc1 = ccdgta[1];
  			}
			if (ccdgta[3] >= 10)
			{ 
				ccda3=ccdgta[3].toString();
				var cc3b = ccda3.substring(0,1);
				var cc3c = ccda3.substring(1,2);
				var cc3 = parseInt(cc3b)+parseInt(cc3c);
			} 
			else
			{
				var cc3 = ccdgta[3];
			}
			if (ccdgta[5] >= 10)
			{ 
				ccda5=ccdgta[5].toString();
				var cc5b = ccda5.substring(0,1);
				var cc5c = ccda5.substring(1,2);
				var cc5 = parseInt(cc5b)+parseInt(cc5c);
			} 
			else
			{
				var cc5 = ccdgta[5];
			}
			if (ccdgta[7] >= 10)
			{ 
				ccda7=ccdgta[7].toString();
				var cc7b = ccda7.substring(0,1);
				var cc7c = ccda7.substring(1,2);
				var cc7 = parseInt(cc7b)+parseInt(cc7c);
			}
			else
			{
				var cc7 = ccdgta[7];
			}
			if (ccdgta[9] >= 10)
			{ 
				ccda9=ccdgta[9].toString();
				var cc9b = ccda9.substring(0,1);
				var cc9c = ccda9.substring(1,2);
				var cc9 = parseInt(cc9b)+parseInt(cc9c);
			} 
			else
			{
				var cc9 = ccdgta[9];
			}
			if (ccdgta[11] >= 10) 
			{ 
				ccda11=ccdgta[11].toString();
				var cc11b = ccda11.substring(0,1);
				var cc11c = ccda11.substring(1,2);
				var cc11 = parseInt(cc11b)+parseInt(cc11c);
			} 
			else 
			{
				var cc11 = ccdgta[11];
			}
			if (cnlen == 13) 
			{ 
				ccval = ccdgt[0]+cc1+ccdgt[2]+cc3+ccdgt[4]+cc5+ccdgt[6]+cc7+ccdgt[8]+cc9+ccdgt[10]+cc11+ccdgt[12];
				if (ccval != 0)
				{ 
					bad_card(cardtype);
					return CreditCardError;
				}
				else 
				{
					// 13 digit card is ok
					CreditCardError = '';
					return CreditCardError;
			   }
  			}
			if (ccdgta[13] >= 10) 
			{ 
				ccda13=ccdgta[13].toString();
				var cc13b = ccda13.substring(0,1);
				var cc13c = ccda13.substring(1,2);
				var cc13 = parseInt(cc13b)+parseInt(cc13c);
			} 
			else 
			{
				var cc13 = ccdgta[13];
			}
			if (cnlen == 15) 
			{
				var ccval = parseInt(ccdgt[0])+parseInt(cc1)+parseInt(ccdgt[2])+parseInt(cc3)+parseInt(ccdgt[4])+parseInt(cc5)+parseInt(ccdgt[6])+parseInt(cc7)+parseInt(ccdgt[8])+parseInt(cc9)+parseInt(ccdgt[10])+parseInt(cc11)+parseInt(ccdgt[12])+parseInt(cc13)+parseInt(ccdgt[14]);
				ccvalstr=ccval.toString();
				if (ccvalstr.substring(1,2) !=0) 
				{ 
					bad_card(cardtype);
					return CreditCardError;
				}
  			}
 		}
		if (ccdgta[0] >= 10) 
		{ 
			ccda0=ccdgta[0].toString();
			var cc0b = ccda0.substring(0,1);
			var cc0c = ccda0.substring(1,2);
			var cc0 = parseInt(cc0b)+parseInt(cc0c);
		} 
		else 
		{
			var cc0 = ccdgta[0];
		}
		if (ccdgta[2] >= 10) 
		{ 
			ccda2=ccdgta[2].toString();
			var cc2b = ccda2.substring(0,1);
			var cc2c = ccda2.substring(1,2);
			var cc2 = parseInt(cc2b)+parseInt(cc2c);
		} 
		else 
		{
			var cc2 = ccdgta[2];
  		}
		if (ccdgta[4] >= 10) 
		{ 
			ccda4=ccdgta[4].toString();
			var cc4b = ccda4.substring(0,1);
			var cc4c = ccda4.substring(1,2);
			var cc4 = parseInt(cc4b)+parseInt(cc4c);
		} 
		else 
		{
			var cc4 = ccdgta[4];
		}
		if (ccdgta[6] >= 10) 
		{ 
			ccda6=ccdgta[6].toString();
			var cc6b = ccda6.substring(0,1);
			var cc6c = ccda6.substring(1,2);
			var cc6 = parseInt(cc6b)+parseInt(cc6c);
		} 
		else 
		{
			var cc6 = ccdgta[6];
  		}
		if (ccdgta[8] >= 10) 
		{ 
			ccda8=ccdgta[8].toString();
			var cc8b = ccda8.substring(0,1);
			var cc8c = ccda8.substring(1,2);
			var cc8 = parseInt(cc8b)+parseInt(cc8c);
		} 
		else 
		{
			var cc8 = ccdgta[8];
		}
		if (ccdgta[10] >= 10) 
		{ 
			ccda10=ccdgta[10].toString();
			var cc10b = ccda10.substring(0,1);
			var cc10c = ccda10.substring(1,2);
			var cc10 = parseInt(cc10b)+parseInt(cc10c);
		} 
 		else 
 		{
			var cc10 = ccdgta[10];
		}
		if (ccdgta[12] >= 10)
		{ 
			ccda12=ccdgta[12].toString();
			var cc12b = ccda12.substring(0,1);
			var cc12c = ccda12.substring(1,2);
			var cc12 = parseInt(cc12b)+parseInt(cc12c);
		} 
		else 
		{
			var cc12 = ccdgta[12];
		}
		if (ccdgta[14] >= 10) 
		{ 
			ccda14=ccdgta[14].toString();
			var cc14b = ccda14.substring(0,1);
			var cc14c = ccda14.substring(1,2);
			var cc14 = parseInt(cc14b)+parseInt(cc14c);
		} 
		else 
		{
			var cc14 = ccdgta[14];
		}
		var ccval = parseInt(cc0)+parseInt(ccdgt[1])+parseInt(cc2)+parseInt(ccdgt[3])+parseInt(cc4)+parseInt(ccdgt[5])+parseInt(cc6)+parseInt(ccdgt[7])+parseInt(cc8)+parseInt(ccdgt[9])+parseInt(cc10)+parseInt(ccdgt[11])+parseInt(cc12)+parseInt(ccdgt[13])+parseInt(cc14)+parseInt(ccdgt[15]);
		ccvalstr=ccval.toString();
		if (ccvalstr.substring(1,2) !=0) 
		{ 
			bad_card(cardtype);
			return CreditCardError;
		}
		
		
END COMMENNTED AREA */		
		
		
 	}
	CreditCardError = '';  // card is OK
	return CreditCardError;
}

function bad_card(ctype) 
{
	CreditCardError = 'You have entered an invalid '+ctype+ ' credit card number.';
}
