
		function copyAddress(form){
			if (form.same.checked == true) {
				form.billing_address1.value = form.shipping_address1.value;	
				form.billing_address2.value = form.shipping_address2.value;	
				form.billing_city.value = form.shipping_city.value;	
				form.billing_state.value = form.shipping_state.value;	
				form.billing_zip.value = form.shipping_zip.value;	
			}else{
				form.billing_address1.value = "";	
				form.billing_address2.value = "";	
				form.billing_city.value = "";	
				form.billing_state.value = "";	
				form.billing_zip.value = "";	
			}
		}

		function checkLoginInfo(form){
			if (form.shipping_first_name.value == "" || form.shipping_last_name.value == "" || form.email.value=="" ||  form.phone.value=="" || form.billing_address1.value == "" || form.billing_city.value == "" || form.billing_state.value == "" || form.billing_zip.value == ""|| form.shipping_address1.value == "" || form.shipping_city.value == "" || form.shipping_state.value == ""){
				alert("Must fill out the required fields marked with a *.");
				return false;
			}else{
				if (form.po_number.value != ""){
					return true;	
				}else{
					return chkCCForm(form);	
				}
			}
		}

	function chkCCForm(form){
		if (form.CardName.value =="" || form.CardNumber.value ==""){
			alert("Please fill in all fields.");
			return false;
		}else{
			if(CheckCardNumber(form)==true){
				form.take_action.disabled = true;
				return true; //change to true 
			}else{
				return false;
			}
		}
	}

	var Cards = new makeArray(8);
	Cards[0] = new CardType("MasterCard", "51,52,53,54,55", "16");
	var MasterCard = Cards[0];
	Cards[1] = new CardType("VisaCard", "4", "13,16");
	var VisaCard = Cards[1];
	Cards[2] = new CardType("AmExCard", "34,37", "15");
	var AmExCard = Cards[2];
	Cards[3] = new CardType("DinersClubCard", "30,36,38", "14");
	var DinersClubCard = Cards[3];
	Cards[4] = new CardType("DiscoverCard", "6011", "16");
	var DiscoverCard = Cards[4];
	Cards[5] = new CardType("enRouteCard", "2014,2149", "15");
	var enRouteCard = Cards[5];
	Cards[6] = new CardType("JCBCard", "3088,3096,3112,3158,3337,3528", "16");
	var JCBCard = Cards[6];
	var LuhnCheckSum = Cards[7] = new CardType();
	
	/*************************************************************************\
	CheckCardNumber(form)
	function called when users click the "check" button.
	\*************************************************************************/
	function CheckCardNumber(form) {
		var tmpyear;
		if (form.CardNumber.value.length == 0) {
			alert("Please enter a Card Number.");
			//form.CardNumber.focus();
			return false;
		}
		if (form.ExpYear.options[form.ExpYear.selectedIndex].value.length == 0) {
			alert("Please enter the Expiration Year.");
			//form.ExpYear.focus();
			return false;
		}
		if (form.ExpYear.options[form.ExpYear.selectedIndex].value > 96)
			tmpyear = "19" + form.ExpYear.options[form.ExpYear.selectedIndex].value;
		else if (form.ExpYear.value < 21)
			tmpyear = "20" + form.ExpYear.options[form.ExpYear.selectedIndex].value;
		else {
			alert("The Expiration Year is not valid.");
			return false;
		}
		tmpmonth = form.ExpMon.options[form.ExpMon.selectedIndex].value;
		// The following line doesn't work in IE3, you need to change it
		// to something like "(new CardType())...".
		// if (!CardType().isExpiryDate(tmpyear, tmpmonth)) {
		if (!(new CardType()).isExpiryDate(tmpyear, tmpmonth)) {
			alert("This card has already expired.");
			return false;
		}
		retval=false;
		card = form.CardType.options[form.CardType.selectedIndex].value;
		var retval = eval(card + ".checkCardNumber(\"" + form.CardNumber.value +
		"\", " + tmpyear + ", " + tmpmonth + ");");
		
		cardname = "";
		
		if (retval){
		
		// comment this out if used on an order form
			//alert("This card number appears to be valid.");
			return true;
		}else {
		// The cardnumber has the valid luhn checksum, but we want to know which
		// cardtype it belongs to.
			for (var n = 0; n < Cards.size; n++) {
				if (Cards[n].checkCardNumber(form.CardNumber.value, tmpyear, tmpmonth)) {
					cardname = Cards[n].getCardType();
					break;
			   }
			}
			if (cardname.length > 0) {
				alert("This looks like a " + cardname + " number, not a " + card + " number.");
			}else {
				alert("This card number is not valid.");
			}
			return false;
		}
	}
	/*************************************************************************\
	Object CardType([String cardtype, String rules, String len, int year, 
	                                        int month])
	cardtype    : type of card, eg: MasterCard, Visa, etc.
	rules       : rules of the cardnumber, eg: "4", "6011", "34,37".
	len         : valid length of cardnumber, eg: "16,19", "13,16".
	year        : year of expiry date.
	month       : month of expiry date.
	eg:
	var VisaCard = new CardType("Visa", "4", "16");
	var AmExCard = new CardType("AmEx", "34,37", "15");
	\*************************************************************************/
	function CardType() {
		var n;
		var argv = CardType.arguments;
		var argc = CardType.arguments.length;
		
		this.objname = "object CardType";
		
		var tmpcardtype = (argc > 0) ? argv[0] : "CardObject";
		var tmprules = (argc > 1) ? argv[1] : "0,1,2,3,4,5,6,7,8,9";
		var tmplen = (argc > 2) ? argv[2] : "13,14,15,16,19";
		
		this.setCardNumber = setCardNumber;  // set CardNumber method.
		this.setCardType = setCardType;  // setCardType method.
		this.setLen = setLen;  // setLen method.
		this.setRules = setRules;  // setRules method.
		this.setExpiryDate = setExpiryDate;  // setExpiryDate method.
		
		this.setCardType(tmpcardtype);
		this.setLen(tmplen);
		this.setRules(tmprules);
		if (argc > 4)
		this.setExpiryDate(argv[3], argv[4]);
		
		this.checkCardNumber = checkCardNumber;  // checkCardNumber method.
		this.getExpiryDate = getExpiryDate;  // getExpiryDate method.
		this.getCardType = getCardType;  // getCardType method.
		this.isCardNumber = isCardNumber;  // isCardNumber method.
		this.isExpiryDate = isExpiryDate;  // isExpiryDate method.
		this.luhnCheck = luhnCheck;// luhnCheck method.
		return this;
	}
	
	/*************************************************************************\
	boolean checkCardNumber([String cardnumber, int year, int month])
	return true if cardnumber pass the luhncheck and the expiry date is
	valid, else return false.
	\*************************************************************************/
	function checkCardNumber() {
		var argv = checkCardNumber.arguments;
		var argc = checkCardNumber.arguments.length;
		var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;
		var year = (argc > 1) ? argv[1] : this.year;
		var month = (argc > 2) ? argv[2] : this.month;
		
		this.setCardNumber(cardnumber);
		this.setExpiryDate(year, month);
		
		if (!this.isCardNumber())
			return false;
		if (!this.isExpiryDate())
			return false;
		
		return true;
	}
	/*************************************************************************\
	String getCardType()
	return the cardtype.
	\*************************************************************************/
	function getCardType() {
		return this.cardtype;
	}
	/*************************************************************************\
	String getExpiryDate()
	return the expiry date.
	\*************************************************************************/
	function getExpiryDate() {
		return this.month + "/" + this.year;
	}
	/*************************************************************************\
	boolean isCardNumber([String cardnumber])
	return true if cardnumber pass the luhncheck and the rules, else return
	false.
	\*************************************************************************/
	function isCardNumber() {
		var argv = isCardNumber.arguments;
		var argc = isCardNumber.arguments.length;
		var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;
		if (!this.luhnCheck())
			return false;
		for (var n = 0; n < this.len.size; n++)
			if (cardnumber.toString().length == this.len[n]) {
				for (var m = 0; m < this.rules.size; m++) {
					var headdigit = cardnumber.substring(0, this.rules[m].toString().length);
					if (headdigit == this.rules[m])
						return true;
				}
				return false;
			}
		return false;
	}
	
	/*************************************************************************\
	boolean isExpiryDate([int year, int month])
	return true if the date is a valid expiry date,
	else return false.
	\*************************************************************************/
	function isExpiryDate() {
		var argv = isExpiryDate.arguments;
		var argc = isExpiryDate.arguments.length;
		
		year = argc > 0 ? argv[0] : this.year;
		month = argc > 1 ? argv[1] : this.month;
		
		if (!isNum(year+""))
			return false;
		if (!isNum(month+""))
			return false;
		today = new Date();
		expiry = new Date(year, month);
		if (today.getTime() > expiry.getTime())
			return false;
		else
			return true;
	}
	
	/*************************************************************************\
	boolean isNum(String argvalue)
	return true if argvalue contains only numeric characters,
	else return false.
	\*************************************************************************/
	function isNum(argvalue) {
	argvalue = argvalue.toString();
	
	if (argvalue.length == 0)
		return false;
		
	for (var n = 0; n < argvalue.length; n++)
		if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
			return false;

	return true;
	}
	
	/*************************************************************************\
	boolean luhnCheck([String CardNumber])
	return true if CardNumber pass the luhn check else return false.
	Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
	\*************************************************************************/
	function luhnCheck() {
	var argv = luhnCheck.arguments;
	var argc = luhnCheck.arguments.length;
	
	var CardNumber = argc > 0 ? argv[0] : this.cardnumber;
	
	if (! isNum(CardNumber)) {
		return false;
	}
	
	var no_digit = CardNumber.length;
	var oddoeven = no_digit & 1;
	var sum = 0;
	
	for (var count = 0; count < no_digit; count++) {
		var digit = parseInt(CardNumber.charAt(count));
		if (!((count & 1) ^ oddoeven)) {
			digit *= 2;
			if (digit > 9)
				digit -= 9;
		}
		sum += digit;
	}
	if (sum % 10 == 0)
		return true;
	else
		return false;
	}
	
	/*************************************************************************\
	ArrayObject makeArray(int size)
	return the array object in the size specified.
	\*************************************************************************/
	function makeArray(size) {
		this.size = size;
		return this;
	}
	
	/*************************************************************************\
	CardType setCardNumber(cardnumber)
	return the CardType object.
	\*************************************************************************/
	function setCardNumber(cardnumber) {
		this.cardnumber = cardnumber;
		return this;
	}
	
	/*************************************************************************\
	CardType setCardType(cardtype)
	return the CardType object.
	\*************************************************************************/
	function setCardType(cardtype) {
		this.cardtype = cardtype;
		return this;
	}
	
	/*************************************************************************\
	CardType setExpiryDate(year, month)
	return the CardType object.
	\*************************************************************************/
	function setExpiryDate(year, month) {
		this.year = year;
		this.month = month;
		return this;
	}
	
	/*************************************************************************\
	CardType setLen(len)
	return the CardType object.
	\*************************************************************************/
	function setLen(len) {
		// Create the len array.
		if (len.length == 0 || len == null)
			len = "13,14,15,16,19";
		
		var tmplen = len;
		n = 1;
		while (tmplen.indexOf(",") != -1) {
			tmplen = tmplen.substring(tmplen.indexOf(",") + 1, tmplen.length);
			n++;
		}
		this.len = new makeArray(n);
		n = 0;
		while (len.indexOf(",") != -1) {
			var tmpstr = len.substring(0, len.indexOf(","));
			this.len[n] = tmpstr;
			len = len.substring(len.indexOf(",") + 1, len.length);
			n++;
		}
		this.len[n] = len;
		return this;
	}
	
	/*************************************************************************\
	CardType setRules()
	return the CardType object.
	\*************************************************************************/
	function setRules(rules) {
		// Create the rules array.
		if (rules.length == 0 || rules == null)
			rules = "0,1,2,3,4,5,6,7,8,9";
		  
		var tmprules = rules;
		n = 1;
		while (tmprules.indexOf(",") != -1) {
			tmprules = tmprules.substring(tmprules.indexOf(",") + 1, tmprules.length);
			n++;
		}
		this.rules = new makeArray(n);
		n = 0;
		while (rules.indexOf(",") != -1) {
			var tmpstr = rules.substring(0, rules.indexOf(","));
			this.rules[n] = tmpstr;
			rules = rules.substring(rules.indexOf(",") + 1, rules.length);
			n++;
		}
		this.rules[n] = rules;
		return this;
	}

<!-- Begin
function popUp(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=300,height=300');");
}
// End -->

<!--
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->

