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 updateAmount() {
	var shippingCost = 0;
	switch ($('#shipping_method').val()) {
		case "first_class_mail":
			shippingCost = 1;
		break;
		case 'usps_priority':
			shippingCost = 6;
		break;
		case 'fedex_2day':
			shippingCost = 16;
		break;
	}
	/* ORIGINAL */ 
	amount = $('#ma_qty').val() * $('#ma_amount').val() + $('#r2l_qty').val() * $('#r2l_amount').val() + shippingCost;
	$('#orderTotal').text(amount.toFixed(2)); 
	/* WORKING VERSION TO ACCOMMODATE ADDITIONAL FIELDS OF REVISED FORMS - THE MA AND R2L FORMS USE orderTotal2 
	amount2 = $('#ma_qty').val() * $('#ma_amount').val() + $('#ma_qty2').val() * $('#ma_amount2').val() + $('#r2l_qty').val() * $('#r2l_amount').val() + $('#r2l_qty2').val() * $('#r2l_amount2').val() + shippingCost;
	$('#orderTotal2').text(amount.toFixed(2)); */
	/* WORKING VERSION TO ACCOMMODATE ADDITIONAL FIELDS OF REVISED FORMS - THE MA AND R2L FORMS USE orderTotal2*/
	
	amount2 = 0;
	// there is a prefix on the fields for each restaurant
	restaurants = ['ma', 'r2l'];
	// there is a suffix on the fields for each "row"
	suffixes = ['', '2'];
	
	// loop through and add up the amount for each row if it has a quantity value
	for (i = 0; i < restaurants.length; ++i) {
		qty = '#'+restaurants[i]+'_qty';
		amount = '#'+restaurants[i]+'_amount';
		
		for (j = 0; j < suffixes.length; ++j) {
			qty += suffixes[j];
			amount += suffixes[j];
			// only add it if there is a qty value, if the row is commented, you won't get a NaN this way
			if ($(qty).val()) {
				amount2 += $(qty).val() * $(amount).val();
			}
		}
	}
	amount2 += shippingCost;
	$('#orderTotal2').text(amount2.toFixed(2)); 
}

$(document).ready(function(){

	//$("#gcards input[@type='text'],textarea").css({fontFamily:"sans-serif",fontSize:"small"});

	// Security code ? uses this
	$(".more").toggle(function(){
		$(".info").css({display:"block"});
	},function(){
		$(".info").css({display:"none"});
	});
	
	// Shipping method ? uses this
	$(".mores").toggle(function(){
		$(".infos").css({display:"block"});
	},function(){
		$(".infos").css({display:"none"});
	});

	// Automatically fill in the card holder from first/last
	$("#card_holder").focus(function() {
		if (!this.value) {
        	var n1 = $("#x_first_name").val();
        	var n2 = $("#x_last_name").val();
        	if (n1 && n2)
				this.value = n1 + " " + n2;
		}
    });
    
    // Copy billing to shipping when checked
    $("input#same_billing").click(function(){  
         if ($("input#same_billing").is(':checked'))  
         {  
             // Checked, copy values  
             $("input#s_first_name").val($("input#x_first_name").val());  
             $("input#s_last_name").val($("input#x_last_name").val());  
             $("input#s_company").val($("input#x_company").val());  
             $("textarea#s_address").val($("textarea#x_address").val());  
             $("input#s_city").val($("input#x_city").val());  
             $("select#s_state").val($("select#x_state").val());  
             $("input#s_zip").val($("input#x_zip").val());  
             $("select#s_country").val($("select#x_country").val()); 
             $("input#s_phone").val($("input#x_phone").val());  
             $("input#s_email").val($("input#x_email").val());  
         }  
         else  
         {  
             // Clear on uncheck  
             $("input#shipping-email").val("");  
             $("input#shipping-name").val("");  
             $("input#shipping-phone").val("");  
             $("input#s_first_name").val("");  
             $("input#s_last_name").val("");  
             $("input#s_company").val("");  
             $("textarea#s_address").val("");  
             $("input#s_city").val("");  
             $("select#s_state").val("");  
             $("input#s_zip").val("");  
             $("select#s_country").val("");  
             $("input#s_phone").val("");  
             $("input#s_email").val(""); 
         }  
     });  

	// Disable the submit button when submitting
	$("#gcards").submit(function() {
		if ($("#gcards").valid()) {
			$("#order_submit").attr("disabled", "disabled");
			return true;
		}
		return false;
	});

	jQuery.validator.addMethod(
		'cardmatch',
		function(value, element, param) {
			return true;						// remove this line to activate!
			var t = $(param).val();
			var d = (value.substr(0,1) * 10) + (value.substr(1,1) * 1);
			if (t == 'mastercard') {
				return (d >= 51 && d <= 55);
			} else if (t == 'visa') {
				return (d >= 40 && d <= 49);
			} else if (t == 'amex') {
				return (d == 34 || d == 37);
			} else {
	 			return false;
			}
		}, "The Card Type and Card Number don't match.");

     
	// Enable form validation
	$("#gcards").validate({
		// With rules...
		// todo figure out logic here for validation
		rules: {
			//original
			//ma_qty: {
			//	required: function(){return $("#r2l_qty").val() == '' || $("#oneChoice").val() == 1 }
			//},
			//ma_amount: {
  			//	required: function(){return $("#ma_qty").val() != ''},
			//	number:true,
			//	min:1
			//},
			//r2l_qty: {
			//	required: function(){return $("#ma_qty").val() == '' || $("#oneChoice").val() == 1 }
			//},
			//r2l_amount: {
  			//	required: function(){return $("#r2l_qty").val() != ''},
			//	number:true,
			//	min:1
			//},
			//new
			ma_qty: {
				required: function(){return $("#ma_qty2").val() == '' || $("#oneChoice").val() == 1 }
			},
			ma_amount: {
  				required: function(){return $("#ma_qty").val() != ''},
				number:true,
				min:1
			},
			r2l_qty: {
				required: function(){return $("#r2l_qty2").val() == '' || $("#oneChoice").val() == 1 }
			},
			r2l_amount: {
  				required: function(){return $("#r2l_qty").val() != ''},
				number:true,
				min:1
			},
			//for second rows just validate that the amounts are numbers
			ma_amount2: "number",
			r2l_amount2: "number",
			//amount: "required",
			//frequency: "required",
			//other_amount: {
  			//	required:"#amount_other:checked",
			//	number:true,
			//	min:1
			//},
			// tribute_name: {
			//	required:"#tribute_type:filled",
			//	minlength:5
			//},
			x_first_name: "required",
			x_last_name: "required",
			x_address: "required",
			x_city: "required",
			x_state: {
				required: function(){return $("#x_country").val() == 'US'}
			},
			x_zip: {
				required:true,
				rangelength:[5,10]
			},
			x_country: "required",
			x_phone: "phone",
			x_email: {
				required:true,
				email:true
			},
			card_holder: "required",
			card_type: "required",
			card_number: {
				required:true,
				creditcard:true,
				cardmatch:"#card_type"
			},
			card_exp_month: "required",
			card_exp_year: "required",
			card_security: {
				required:true,
				number:true,
				rangelength:[3,4]
			},
			shipping_method: "required",
			s_first_name: "required",
			s_last_name: "required",
			s_address: "required",
			s_city: "required",
			s_state: {
				required: function(){return $("#x_country").val() == 'US'}
			},
			s_zip: {
				required:true,
				rangelength:[5,10]
			},
			s_country: "required",
			s_phone: "phone",
			s_email: {
				required:false,
				email:true
			},
		},
		// Form validation messages
		messages: {
			ma_qty: "Please select a quantity",
			ma_amount: "Please enter a gift card amount",
			r2l_qty: "Please select a quantity",
			r2l_amount: "Please enter a gift card amount",
			//amount: "A gift card amount is required",
			// frequency: "Please select the frequency of your donation",
			//other_amount: {
			//	required:"A donation amount is required",
			//	number:"Please provide a valid number",
			//	min:"You must specify at least $1"
			//},
			// tribute_name: {
			//	required:"Please provide a tribute name",
			//	minlength:$.format("Please enter at least {0} characters")
			//}, 
			x_first_name: "Please enter your first name",
			x_last_name: "Please enter your last name",
			x_address: "Please enter your street address",
			x_city: "Please enter your city",
			x_state: "Please select your state",
			x_zip: "Please enter your postal code",
			x_country: "Please select your country",
			x_email: {
				required:"Please enter your email address",
				email:"Please provide a valid email address"
			},
			card_holder: "Please enter the cardholder's name",
			card_number: {
				required: "Please enter the credit card number",
				creditcard: "Please provide a valid card number"
			},
			card_type: "Please select a card type",
			card_exp_month: "Please select an expiration month",
			card_exp_year: "Please select an expiration year",
			card_security: {
				required:"You must enter your CCV",
				number:"Numbers only please!",
				rangelength:"Your CCV should be 3 or 4 digits long"
			},
			shipping_method: "Please select a shipping method",
			s_first_name: "Please enter your first name",
			s_last_name: "Please enter your last name",
			s_address: "Please enter your street address",
			s_city: "Please enter your city",
			s_state: "Please select your state",
			s_zip: "Please enter your postal code",
			s_country: "Please select your country",
			s_email: {
				required:" ",
				email:"Please provide a valid email address"
			}
		},
        errorPlacement: function(error, element) {
			if ( element.is(":radio") )
				error.appendTo( element.parent().parent() );
			else if ( element.is(":checkbox") )
				error.appendTo ( element.next() );
			else
				error.appendTo( element.parent() );
		}
	});
	
	$('#ma_qty, #ma_qty2, #r2l_qty, #r2l_qty2, #ma_amount, #ma_amount2, #r2l_amount, #r2l_amount2, #shipping_method').bind('change', updateAmount);
});
