$(document).ready(function(){//start ready
	$('form.form div.req input, form.form div.req select').addClass('required');
	$('#pay-pnl1 form.form label[@for^="paymentDetails[expiry_date]"]').next().removeClass('required');
	$('.form').validate({				
		rules: {
			email: {
				email: true
			},
			/*"paymentDetails[card_number]": {
				required: true,
				number: true
			},
			"paymentDetails[card_cv2]": {
      			number: true
    		},
			"paymentDetails[issue_number]": {
      			number: true
    		},
			"paymentDetails[expiry_date]": {
				required:	true
			},*/
			password_valid: {
				equalTo: "#password"
			},
			telephone: {
				required: false
			}
		}						
	});
	//$('#delivery_form').validate();
	
	$(".checkout").click(function() {
	  $("#delivery_form").valid();
	});
		
	$(".addPres").click(function() {
	  $("#pre-form").valid();
	});
	
	//add margin to first select in date fields
	$('select[@name="start_dateMonth"],select[@name="expiry_dateMonth"]').css('margin-right', '0.5em');
	
	$.validator.addMethod("phone", function(strPhone) {
		var digits = "0123456789";
		var phoneNumberDelimiters = "()- ext.";
		var validWorldPhoneChars = phoneNumberDelimiters + "+";
		var minDigitsInIPhoneNumber = 11;

		s=stripCharsInBag(strPhone,validWorldPhoneChars);
		return (isInteger(s) && (s.length >= minDigitsInIPhoneNumber || s.length == 0));
	}, "Please enter a valid phone number");

	function isInteger(s) { var i;
		for (i = 0; i < s.length; i++)
		{
			// Check that current character is number.
			var c = s.charAt(i);
			if (((c < "0") || (c > "9"))) return false;
		}
		// All characters are numbers.
		return true;
	}
	function stripCharsInBag(s, bag) { var i;
		var returnString = "";
		// Search through string's characters one by one.
		// If character is not in bag, append to returnString.
		for (i = 0; i < s.length; i++)
		{
			// Check that current character isn't whitespace.
			var c = s.charAt(i);
			if (bag.indexOf(c) == -1) returnString += c;
		}
		return returnString;
	}

	//copies delivery address to billing address when checkbox clicked, also shows and hides errors
	var deliveryToBilling = {
		dispVals: function() {
			$("#delivery_same_as_billing").click( function() {
				if ($('#delivery_same_as_billing:checked').val() == 'on') {
					$("#delivery_address_line_1").val($('#billing_address_line_1').val());
					 $("#delivery_address_line_2").val($("#billing_address_line_2").val());
					 $("#delivery_town").val($("#billing_town").val());
					 $("#delivery_county").val($("#billing_county").val());
					 $("#delivery_country_code").val($("#billing_country_code").val());
					 $("#delivery_postcode").val($("#billing_postcode").val());
					 
					$('#delivery_addr label.error').css('display', 'none') 
				}
				else {
					$('#delivery_addr label.error').css('display', 'inline');
					$("#delivery_address_line_1, #delivery_address_line_2, #delivery_town, #delivery_county, #delivery_country_code, #delivery_postcode").val('');
				}
			});
		}
		
	}
	deliveryToBilling.dispVals();

});
