function MM_findObj(n, d) { //v4.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);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') {
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (val<min || max<val) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}

var nacho=false;
var burrito=false;

var payment="";
var CardNumber="";
var ccexp="";

function valbutton(formName) {

myOption = -1;
for (i=0; i<formName.myradiobutton.length; i++) {
if (formName.myradiobutton[i].checked) {
myOption = i;
}
}
//if (myOption == -1) {
//alert("You must select a radio button");
//return false;
//}
if (myOption == 0) {
//alert("You selected button an existing card")
return true;
}

if (myOption == 2) {
//alert("You are paying by check")
//runVerification(thisform);
return true;
}

if (myOption == 1) {
//alert("You are entering a new card")
//runVerification(thisform);
}


//function runVerification(formName) {
		
		
	formName.txtCardType.value;
        if (formName.txtCardType.value == "null") {
		alert("You didn't select a payment method.");
                return false;
                }

        if (!formName.CardNumber.value) {
		alert("You didn't enter a credit card number.");
                return false;
                }
        nacho=ccformatValidate(formName);
        if (nacho) {

                burrito=ccexpdateValidate(formName);
                if (burrito) {
			return true;
                        }
                else {
                        alert("Your credit card has expired.");
                        return false;
                        }
		}
	else {
                alert("The number you have entered is invalid for the credit card type you have chosen!");
                return false;
		}
	}

function ccformatValidate(formName) {
	if (formName.txtCardType.value == "Visa") payment="Visa";
	if (formName.txtCardType.value == "MC") payment="MC";
	if (formName.txtCardType.value == "Amex") payment="Amex";



        var CardNumber=GimmeNumbers(formName.CardNumber.value);

	if (CardNumber.length<13) return false;


        if (CardNumber.length!=16 && payment=="MC") return false;
        if (CardNumber.length!=15 && payment=="Amex") return false;
        if (CardNumber.length!=13 && CardNumber.length!=16 && payment=="Visa") return false;

        cctype=CardNumber.substring(0,1);
        if (payment=="Amex" && cctype=="3") return true;
        if (payment=="Visa" && cctype!="4") return false;
        if (payment=="MC" && cctype!="5") return false;
    
        CardNumberchk=new Array;
	for (splits=0; splits<CardNumber.length; splits++) {
                CardNumberchk[splits]=CardNumber.substring(splits, splits+1);
		}
        var skemp=0;
	for (splits=0; splits<CardNumber.length; splits++) {
                if (splits%2==0) {     
			CardNumberchk[splits]=CardNumberchk[splits]*2;
			if (CardNumberchk[splits]>=10) CardNumberchk[splits]=CardNumberchk[splits]-9;
			}

		CardNumberchk[splits]++; CardNumberchk[splits]--;
		skemp=skemp + CardNumberchk[splits].valueOf();
		}

        if (skemp%10!=0) {return false;}
	else {
		formName.CardNumber.value=CardNumber;
		return true;
		}
	}

function ccexpdateValidate(formName) {

     var ccexp=GimmeNumbers(formName.txtMonth.value + formName.txtYear.value);
	var expmonth=0;
	var expyear=0;
	var realmonth=0;
	var realyear=0;

	if (ccexp.length<3 || ccexp.length>6) return false;
	if (ccexp.length==3) {
                expmonth=ccexp.substring(0,1);
                expyear=ccexp.substring(1,3);
		}
	if (ccexp.length==4) {

                if (ccexp.substring(0,1)=="0") {
			expmonth=ccexp.substring(1,2);
			expyear=ccexp.substring(2,4);
			}
		else {
			expmonth=ccexp.substring(0,2);
			expyear=ccexp.substring(2,4);
			}
                }
	if (ccexp.length==5) {
		expmonth=ccexp.substring(0,1);
		expyear=ccexp.substring(1,5);
		}
	if (ccexp.length==6) {
		expmonth=ccexp.substring(0,2);
		expyear=ccexp.substring(2,6);
		}

	if (expmonth<1 || expmonth>12) return false;

        expmonth++; expmonth--;
        expyear++; expyear--;

	if (ccexp.length==3 || ccexp.length==4) expyear=expyear+1900;

	timeisit=new Date();
	realmonth=timeisit.getMonth();
	realmonth++;
	realyear=timeisit.getYear();

	if (realyear<2000) realyear=realyear+1900;

        if (expyear==realyear) {
		if (expmonth<realmonth) return false;
		}
        if (expyear<realyear) return false;


        expmonth+=""; expyear+="";
        if (expmonth.length==1) expmonth="0"+expmonth;
        ccexp=expmonth.substring(0,expmonth.length);
        ccexp+=expyear.substring(0,4);

	return true;
	}
        function GimmeNumbers(loadedText) {    
                var cleanText="";

                loadedText+="";

                for (skimp=0; skimp<loadedText.length; skimp++) {
                        if (loadedText.substring(skimp,skimp+1)>="0" && loadedText.substring(skimp, skimp+1)<="9") cleanText+=loadedText.substring(skimp, skimp+1);
                        }
                return cleanText;
                }