
function validator () 
{	
	$("#editcustomerform").submit(function() 
		{
								  
			var fields = $(this).find(".mand");
			var invalid_count = 0;
			var formoutput = $(this).find(".formoutput");
			var invalid_email = false;
			var show_invalid_email_warning = true;
			var cmsg = "The highlighted email address you provided does not seem to be correct. Please enter a valid email address.";
			
			if($(formoutput).css("display") !== "none") {
				if(formoutput.length > 0) $(formoutput).fadeOut(500);
			}
			
			for(i=0; i<fields.length; i++) {
				$(fields[i]).css("border", "1px solid #999");
			}
			
			for(i=0; i<fields.length; i++) {
				switch(fields[i].type) {
					case "select-one":
					case "select-multiple":
						if(fields[i].selectedIndex == 0) {
							$(fields[i]).css("border", "1px solid #ff0000");
							invalid_count++;
						}
						break;
					case "text":
					case "textarea":
					case "password":
						if(!fields[i].value) {
							$(fields[i]).css("border", "1px solid #ff0000");
							invalid_count++;
						} else {
							var name = $(fields[i]).attr("name");
							if(name.indexOf("email") >= 0) {
								var emailRegxp = /^([\w]+)(.[\w]+)*@([\w]+)(.[\w]{2,4}){1,2}$/;
								if(emailRegxp.test(fields[i].value) == false) {
									invalid_email = true;
									if(show_invalid_email_warning) {
										$(fields[i]).css("border", "1px solid #ff0000");
									}
								}
							}
						}
						break;
				}
				
			}
			
			if( !invalid_count ) {
				
				if(invalid_email && show_invalid_email_warning) {
					//if(!confirm(cmsg)) { 
						return false;
					//}
				}
				return true;
				
			} else {
				
				if(formoutput.length > 0) {
					
					$(formoutput).css("font-size", "0.9em");
					$(formoutput).css("color", "#ff0000");
					$(formoutput).css("font-weight", "bold");
					$(formoutput).text("Please ensure the highlighted fields are complete before proceeding.");
					$(formoutput).fadeIn(500);
					
				} else {
					
					alert("Please ensure the highlighted fields are complete before proceeding.");
					
				}
				
				return false;
				
			}
		
		}
	);
	
}

function appFormFunctions() { 

	for(var i = 0; i < $("#appform div.step").length; i++) { 
		var thisdiv = $("#appform div.step")[i];
		if(i > 0) {
			$(thisdiv).hide();
		}
	}
	
	function validateFields(fields)
	{

		var invalid_count = 0;

		for(i=0; i<fields.length; i++) {
			$(fields[i]).css("border", "1px solid #999");
			if(fields[i].type == "checkbox") $(fields[i]).parent().css("border", "none");
		}
		
		for(i=0; i<fields.length; i++) {
			
			switch(fields[i].type) {
				case "select-one":
				case "select-multiple":
					if(fields[i].selectedIndex == 0) {
						$(fields[i]).css("border", "1px solid #ff0000");
						invalid_count++;
					}
					break;
				case "checkbox":
					if(!$(fields[i]).attr("checked")) {
						$(fields[i]).parent().css("border", "1px solid #ff0000");
						invalid_count++;
					}
					break;
				case "text":
				case "textarea":
				case "password":
					if(!fields[i].value) {
						$(fields[i]).css("border", "1px solid #ff0000");
						invalid_count++;
					}
					break;
			}
			
		}
		
		if( invalid_count > 0 ) {
			
			return false;
			
		} else {
		
			return true;
			
		}
	}
	
	$("#appform input.move-step").click(
		function () 
		{
			
			var direction = $(this).attr("name");
			var parentObj = $(this).parents("div.step");
			var step_num = $(parentObj).attr("id");
			var next_step = parseInt(step_num)+1;
			var prev_step = parseInt(step_num)-1;
			
			if(direction == "next") {
				
				var fields = $(parentObj).find(".mand");
				
				if(!validateFields(fields)) {
					
					alert("Please make sure the highlighted fields are complete before continuing.");
					
				} else {
				
					$("#"+step_num).hide();
					$("#"+next_step).show();
					
					window.location.href="#TextArea";
					
				}
				
			} else if(direction == "prev") {
				
				$("#"+step_num).hide();
				$("#"+prev_step).show();
				
			}
			
		}
	);
	
	$("#appform form").submit(
		function ()
		{
			var fields = $(".step:last").find(".mand");
		
			if(!validateFields(fields)) {
				
				alert("Please make sure the highlighted fields are complete before continuing.");
				
				return false;
				
			} else {
			
				return true;
				
			}
			
		}
	);

}

function regFormDOB() { 
	
	var monthFieldName = "#DOB_m";
	var dayFieldName = "#DOB_d";
	
	var TO_monthFieldName = "#DOB_m_to";
	var TO_dayFieldName = "#DOB_d_to";
	
	var FROM_monthFieldName = "#DOB_m_from";
	var FROM_dayFieldName = "#DOB_d_from";
	
	var months = Array(31, 30, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);		// Days in the month.
	
	$(monthFieldName).change(
		function ()
		{
			
			var selectedMonth = $(this).val();	// New selected month.
			var selectedDay = $(dayFieldName).val();	// Current selected day.
			
			// Remove children (<option>'s) from days drop down.
			$(dayFieldName).children().remove();
			
			
			// Add new set of options to days, making sure to reselect 
			// the previous selected option if it's available.
			$(dayFieldName).append("<option value=\"0\">-</option>");
			for(var i=1; i<=months[selectedMonth-1]; i++) {
				if(selectedDay == i) {
					$(dayFieldName).append("<option selected=\"selected\" value=\""+i+"\">"+i+"</option>");
				} else {
					$(dayFieldName).append("<option value=\""+i+"\">"+i+"</option>");
				}
			}
			
			if(selectedMonth == 0) {
				for(var i=1; i<=31; i++) { 
					$(dayFieldName).append("<option value=\""+i+"\">"+i+"</option>");
				}
			}
			
		}
	);
	
	$(TO_monthFieldName).change(
		function ()
		{
			
			var selectedMonth = $(this).val();	// New selected month.
			var selectedDay = $(TO_dayFieldName).val();	// Current selected day.
			
			// Remove children (<option>'s) from days drop down.
			$(TO_dayFieldName).children().remove();
			
			// Add new set of options to days, making sure to reselect 
			// the previous selected option if it's available.
			$(TO_dayFieldName).append("<option value=\"0\">-</option>");
			for(var i=1; i<=months[selectedMonth-1]; i++) {
				if(selectedDay == i) {
					$(TO_dayFieldName).append("<option selected=\"selected\" value=\""+i+"\">"+i+"</option>");
				} else {
					$(TO_dayFieldName).append("<option value=\""+i+"\">"+i+"</option>");
				}
			}
			
			if(selectedMonth == 0) {
				for(var i=1; i<=31; i++) { 
					$(TO_dayFieldName).append("<option value=\""+i+"\">"+i+"</option>");
				}
			}
			
		}
	);
	
	$(FROM_monthFieldName).change(
		function ()
		{
			
			var selectedMonth = $(this).val();	// New selected month.
			var selectedDay = $(FROM_dayFieldName).val();	// Current selected day.
			
			// Remove children (<option>'s) from days drop down.
			$(FROM_dayFieldName).children().remove();
			
			// Add new set of options to days, making sure to reselect 
			// the previous selected option if it's available.
			$(FROM_dayFieldName).append("<option value=\"0\">-</option>");
			for(var i=1; i<=months[selectedMonth-1]; i++) {
				if(selectedDay == i) {
					$(FROM_dayFieldName).append("<option selected=\"selected\" value=\""+i+"\">"+i+"</option>");
				} else {
					$(FROM_dayFieldName).append("<option value=\""+i+"\">"+i+"</option>");
				}
			}
			
			if(selectedMonth == 0) {
				for(var i=1; i<=31; i++) { 
					$(FROM_dayFieldName).append("<option value=\""+i+"\">"+i+"</option>");
				}
			}
			
		}
	);

}

$(document).ready(function()
{
	appFormFunctions();
	regFormDOB();
	validator();
});
