$(document).ready(function() {

	jQuery.validator.addMethod("phoneUS", function(phone_number, element)
	{
		phone_number = phone_number.replace(/\s+/g, ""); 
		return this.optional(element) || phone_number.length > 9 &&
			phone_number.match(/^(((\(\d{3}\)|\d{3})( |-|\.))|(\(\d{3}\)|\d{3}))?\d{3}( |-|\.)?\d{4}(( |-|\.)?([Ee]xt|[Xx])[.]?( |-|\.)?\d{1,5})?$/);
	}, "Enter a valid phone number");
	
	jQuery.validator.addMethod("zipcode", function(zip_code, element)
	{
		zip_code = zip_code.replace(/\s+/g, ""); 
		return this.optional(element) || zip_code.match(/^((\d{5})|(\d{5}-\d{4}))$/);
	}, "Enter a valid zip code");
	
	jQuery.validator.addMethod("loginname", function(login_name, element)
	{		
		return this.optional(element) || login_name.match(/^[A-z0-9.@_-]+$/);
	}, "User ID can contain letters, numbers and the symbols @.-_.");

	// Create customer address
	$("#frmcreateaddress").validate
		(
			{
				rules:
				{
					"first_name": { required: true },
					"last_name": { required: true },
					"addr_1": { required: true },
					"city": { required: true },
					"zip": { required: true, zipcode: true },					
					"daytime_phone": { required: true, phoneUS: true }
				},
				messages:
				{
					"first_name": { required: "First Name is required." },
					"last_name": { required: "Last Name is required." },
					"addr_1": { required: "Address is required." },
					"city": { required: "City is required." },
					"zip": { required: "Zip Code is required." },									
					"daytime_phone": { required: "Phone Number is required."}
				},
				
				errorElement: "div",
				
				submitHandler: function(form) { 
					form.submit();
				}
			}
		);
	// Billing address
	$("#frmcreatebillingaddress").validate
		(
			{
				rules:
				{
					"first_name": { required: true },
					"last_name": { required: true },
					"addr_1": { required: true },
					"city": { required: true },
					"zip": { required: true, zipcode: true },					
					"daytime_phone": { required: true, phoneUS: true }
				},
				messages:
				{
					"first_name": { required: "First Name is required." },
					"last_name": { required: "Last Name is required." },
					"addr_1": { required: "Address is required." },
					"city": { required: "City is required." },
					"zip": { required: "Zip Code is required." },									
					"daytime_phone": { required: "Phone Number is required."}
				},
				
				errorElement: "div",

				submitHandler: function(form) { 
					form.submit();
				}
			}
		);	
		
		
		// Shipping address
		$("#frmcreateshippingaddress").validate
		(
			{
				rules:
				{
					"first_name": { required: true },
					"last_name": { required: true },
					"addr_1": { required: true },
					"city": { required: true },
					"zip": { required: true, zipcode: true },					
					"daytime_phone": { required: true, phoneUS: true }
				},
				messages:
				{
					"first_name": { required: "First Name is required." },
					"last_name": { required: "Last Name is required." },
					"addr_1": { required: "Address is required." },
					"city": { required: "City is required." },
					"zip": { required: "Zip Code is required." },									
					"daytime_phone": { required: "Phone Number is required."}	
				},
				
				errorElement: "div",
				
				submitHandler: function(form) { 
					form.submit();
				}
			}
		);
		
		
	// Create and update customer validation
	// Create customer validation
	$("#frmcreatecustomer").validate
		(
			{
				rules:
				{
					"login_name": { required: true, loginname: true },
					"first_name": { required: true },
					"last_name": { required: true },
					"email_addr": { required: true, email: true },
					"password": { required: true, minlength: 6, maxlength: 16 },
					"verify_password": { required: true }
				},
				messages:
				{
					"login_name": { required: "Login Name required"  },
					"first_name": { required: "First Name required" },
					"last_name": { required: "Last Name required" },
					"email_addr": { required: "Email required", email: "Enter valid email" },
					"password": { required: "Invalid password. Password must be at least 6 characters but no more than 16 characters long" },
					"verify_password": { required: "Verify Password required" }
				},
				
				errorElement: "div",

				submitHandler: function(form) { 
					form.submit();
				}
			}
		);		
		
		
		// Update customer validation
		$("#frmupdatecustomer").validate
		(
			{
				rules:
				{
					"login_name": { required: true },
					"first_name": { required: true },
					"last_name": { required: true },
					"email_addr": { required: true, email: true }
				},
				messages:
				{
					"login_name": { required: "User ID is required." },
					"first_name": { required: "First Name is required." },
					"last_name": { required: "Last Name is required." },
					"email_addr": { required: "E-mail is required.", email: "Enter valid e-mail address." }					
				},
				
				errorElement: "div",
				
				submitHandler: function(form) { 
					form.submit();
				}
			}
		);	
		
		
		//Change Password validation
		$("#frmchangepassword").validate
		(
			{
				rules:
				{
					"curr_password": { required: true },
					"new_password": { required: true, minlength: 6, maxlength: 16 },
					"verify_new_password": { required: true, minlength: 6, maxlength: 16 }
				},
				messages:
				{
					"curr_password": { required: "Current Password is required." },
					"new_password": { required: "Invalid password. Password must be at least 6 characters but no more than 16 characters long." },
					"verify_new_password": { required: "Re-enter the New Password" }
				},
				
				errorElement: "div",
				
				submitHandler: function(form) { 
					form.submit();
				}
			}
		);
		
	// Create Credit card Validation
	// $("#frmcreatecreditcard").validate
		// (
			// {
				// rules:
				// {
					// "cc_number": { required: true, creditcard: true },
					// "cc_name": { required: true },
					// "first_name": { required: true },
					// "last_name": { required: true },
					// "addr_1": { required: true },
					// "city": { required: true },
					// "zip": { required: true, zipcode: true},
					// "email": { required: true, email: true },
					// "daytime_phone": { required: true, phone: true }
				// },
				// messages:
				// {
					// "cc_number": { required: "Please enter a valid credit card number" },
					// "cc_name": { required: "Please enter the name as it appears on your credit card" },
					// "first_name": { required: "Please enter the First Name" },
					// "last_name": { required: "Please enter the Last Name" },
					// "addr_1": { required: "Please enter the Address" },
					// "email": { required: "Please enter the email", email: "enter valid email" },
					// "city": { required: "Please enter the City" },
					// "daytime_phone": { required: "Please enter the phone number" },
					// "zip": { required: "Please enter the zipcode" }
				// }
			// }
		// );
		
		// $("#imgcreatecreditcard").click
		// (
			// function()
			// {
				// if ( $("#frmcreatecreditcard").valid() ) {
					// $("#frmcreatecreditcard").submit();
				// }
			// }					
		// );
	

	// Login validation
	$("#frmsignin").validate
	(
		{
			rules:
			{
				"login_name": { required: true },
				"password": { required: true }
			},
			messages:
			{
				"login_name": { required: "User ID is required." },
				"password": { required: "Password is required." }
			},			
			
			errorElement: "div",
			
			submitHandler: function(form) { 
					form.submit();
			}
		}
	);	
	
	// variant display validation
	$(".variantdisplay").each
	(
		function(i)
		{
			$("#frmaddtocart" + i).validate
			(
				{
					rules:
					{
						"quantity": { required: true,  range: [1, 99], digits: true }
					},
					messages:
					{
						"quantity": { required: "Quantity is required."}						
					}
					,errorLabelContainer: "#debug"
				}
			);	
			
			$("#imgaddtocart" + i).click
			(
				function()
				{
					$(".debug").val('');
					if ( $("#frmaddtocart" + i).valid() ) {
						$("#frmaddtocart" + i).submit();
					}
				}					
			);
		}
	);
});

// Address validation
	function validate(form)
	{
		$("#" + form).validate
		(
			{
				rules:
				{
					"first_name": { required: true },
					"last_name": { required: true },
					"addr_1": { required: true },
					"city": { required: true },
					"zip": { required: true, zipcode: true },					
					"daytime_phone": { required: true, phoneUS: true }
				},
				messages:
				{
					"first_name": { required: "First Name is required." },
					"last_name": { required: "Last Name is required." },
					"addr_1": { required: "Address is required." },
					"city": { required: "City is required." },
					"zip": { required: "Zip Code is required." },									
					"daytime_phone": { required: "Phone Number is required."}	
				},

				errorElement: "div",
				
				submitHandler: function(form) { 
					form.submit();
				}

			}
		);
		
		// if ( $("#"+form).valid() ) {
			// alert("submitted");
			// $("#"+form).submit();
		// }	
	}
	
