function validateForm(form_id) {

	//alert("validateForm: "+form_id)

	//check to make sure form exists
	var form = $("#"+form_id);

	if(form.size()==0) {
		return false;
	}
	
	$("#"+form_id+" input[type=text]").each(function(idx, item) {

		var input = $(item);
		var label = $("label[for="+input.attr("id")+"]");
		if(label == null || label == undefined) {
			var labelText = "";
		} else {
			if(input.hasClass("isMonthNumber")) {
				var labelText = "mm";
			} else if (input.hasClass("isDayNumber")) {
				var labelText = "dd";
			} else if (input.hasClass("isFullYearNumber")) {
				var labelText = "yyyy";
			} else {
				var labelText = label.text();
			}
			
			if(label.hasClass("hide")) {
				//alert(labelText)
				input.attr("hasLabel","false");
				var hasLabel = false;
			} else {
				input.attr("hasLabel","true");
				var hasLabel = true;
			}
		}
		
		input.attr("origValue",labelText);

		if(!hasLabel) {
			
			if(labelText != "" && $(input).is(':visible') ) {
				// if(input.val() == label || input.val() == "") {
				// 		input.val(labelText);
				// }
				
				if($(this).attr("id") == "pledge_number") {
					input.val("#");
				} else {
					input.val(labelText);
				}
				if(input.attr("hasLabel") == "false") {
					input.focus(function() { 
						if($(this).attr("id") == "pledge_number") {
							if(this.value == "#") {
								this.value = "";
							}
						} else {
							if(this.value == labelText) {
								this.value = "";
							}
						
						}
						
					});
		
					input.blur(function() {
						if(this.value == "") {
							if($(this).attr("id") == "pledge_number") {
								this.value = "#";
							} else {
								this.value = labelText;
							}
						}
					});
				}
			}
		}
	})	
		
	form.submit(function(event){
		//event.preventDefault();
		var errors = new Array();
		
		
		//check to make sure nothing is blank
		$("#"+form_id+" input.notBlank,#"+form_id+" select.notBlank,#"+form_id+" textarea.notBlank").each(function(idx, item){
			if(!isNotBlank(item)) {
//				var msg = getLabel(item)+" can not be blank.";
				var msg = getLabel(item)+" is required.";
				//alert(msg)
				errors.push(msg);
			};			
		});
		
		//check if anything is required
		$("#"+form_id+" input.required").each(function(idx, item){
			if(!isRequired(item)) {
				var msg = getLabel(item)+" is required.";
				//alert(msg)
				errors.push(msg);
			};			
		});
		
		//check for email
		$("#"+form_id+" input.email").each(function(idx, item){
			if(isNotBlank(item)) {
				if(!isValidEmail(item)) {
					var msg = getLabel(item)+" is not an valid email format.";
					//alert(msg)
					errors.push(msg);
				};
			}
		});
		
		//check for length
		var maxLength = 400;
		$("#"+form_id+" textarea.hasMaxlength").each(function(idx, item){
			if(!isUnderMaxLength(item, maxLength)) {
				var msg = getLabel(item)+" must be under "+maxLength+" characters.";
				//alert(msg)
				errors.push(msg);
			}
		});
		
		$("#"+form_id+" input.isAlphabetical").each(function(idx, item){
			if(isNotBlank(item)) {
				if(!isAlphabetical(item)) {
					var msg = getLabel(item)+" must have only letters.";
					//alert(msg)
					errors.push(msg);
				};
			}
		});
				
		//check for numbers only
		$("#"+form_id+" input.isNumeric").each(function(idx, item){
			if(!isNumeric(item)) {
				var msg = getLabel(item)+" must have only numbers.";				
				//alert(msg)
				errors.push(msg);
			};
		});
		
		//check to match inputs
		var matchInputs = $("#"+form_id+" input.match");
		if(matchInputs.size() > 1) {
			if(!compare(matchInputs)) {
				// var labels = new Array();
				// 				matchInputs.each(function(idx, item) {
				// 					var input = $(item);
				// 					//alert(input.attr("id"))
				// 					var label = $("label[for="+input.attr("id")+"]");
				// 					//alert(label)
				// 					if(label.size() == 1) {
				// 						var msgLabel = label.text();
				// 						label.push(msgLabel);
				// 					}
				// 				})
				// 				if(msgLabel.length > 0) {
				// 					if(msgLabel.length == 2) {
				// 						var msg = msgLabel[0]+" and "+msgLabel[1]+" do not match.";
				// 					} else {
				// 						var msg = msgLabel.split(",")+" do not match.";
				// 					}
				// 			
				// 					//alert(msg)
				// 					errors.push(msg);
				// 				}
				var msg = "New Password and Confirm Password do not match.";
				errors.push(msg);
			}
		};
		
		if(form.attr("id") == "pledge_form") {
			//birth date
			//month
			var month = $("#pledge_form input.isMonthNumber")[0];
			//day
			var day = $("#pledge_form input.isDayNumber")[0];
			//year		
			var year = $("#pledge_form input.isFullYearNumber")[0];

			if(month != undefined && day != undefined && year != undefined) {
				if(!isMonthNumber(month) || !isDayNumber(day) || !isFullYearNumber(year)) {
					var msg = "Birthdate is not valid.";
					errors.push(msg);
				} else {
					//check if user is at least age required
					var ageRequired = 13;
					var dateToday = new Date();
					var dob = new Date();
					dob.setFullYear(parseInt($(year).attr("value")), parseInt($(month).attr("value"))-1, parseInt($(day).attr("value")));
					var age = Math.floor((dateToday - dob) / (365.25 * 24 * 60 * 60 * 1000))
					if (age < ageRequired) {
						var msg = "You must be "+ageRequired+" years of age to pledge.";
						errors.push(msg);
					}
				}
			}

			if ($("#pledge_form input#am_employee").attr('checked')) {
			/*
				// Employee ID
				var pledge_employeeID = $("#pledge_form input#pledge_employeeID").attr('value');
				if (pledge_employeeID == 'employee ID' || pledge_employeeID == '' || pledge_employeeID.length != 7) {
					errors.push("If you are an employee, you must provide a 7 character TWC Employee ID.");
				}


				// Employee region
				var pledge_region = $("#pledge_form select#pledge_region").attr('value');
				if (pledge_region == '') {
					errors.push("If you are an employee, you must provide a region.");
				}
			*/
			}

			$("#pledge_form input.hasAgreed").each(function(idx, item){
				if(!isRequired(item)) {
					var input = $(item);
					//alert(input.attr("id"))
					var label = $("label[for="+input.attr("id")+"]");
					//alert(label)
					var msg = "You must agree with the Terms and Conditions.";
					//alert(msg)
					errors.push(msg);
				};
			});
		}
								
		// $("#"+form_id+" input.hasAgreed").each(function(idx, item){
		// 	if(!isRequired(item)) {
		// 		var input = $(item);
		// 		//alert(input.attr("id"))
		// 		var label = $("label[for="+input.attr("id")+"]");
		// 		//alert(label)
		// 		var msg = "You must agree with the Terms and Conditions.";
		// 		//alert(msg)
		// 		errors.push(msg);
		// 	};
		// });
		
		if(errors.length > 0) {
			$(this).attr("errors", errors);
			var isModal = $("#"+form_id+"  input[id=isModal]");
			if(isModal.size() == 1) {
				createErrorBox(errors, false);
			} else {
				createErrorBox(errors);
			}

			
			return false;
		} else {
			return true;
		}
		return false;
	});
}

function getLabel(item) {
	var input = $(item);
	var label = $("label[for="+input.attr("id")+"]");
	if(label.size() == 1) {
		//remove any ending semicolons
		var labelText = label.text().replace(/:/g,"");
	} else {
		var labelText = "A field";
	}
	
	return labelText;
}


function isValidEmail(input) {
	var input = $(input);
	var emailFormat = /^[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_\.-][A-Za-z0-9]+)*\.([A-Za-z]){2,4}$/i;
	var emailValid = emailFormat.test(input.attr("value"));
	if(!emailValid) {
		//alert("Please enter a valid e-mail address");
	 	return false;
	} else {
		return true;
	}
}

function isRequired(input) {
	if(input.type == "text") {
		if(isNotBlank(input)) {
			var input = $(input);
			var value = $(input).attr("value");
			var origValue = input.attr("origValue");
			//alert(origValue)
			if(value.toLowerCase() != origValue.toLowerCase()){
				return true;
			} else {
				return false;
			}
			//return true;
		}
	} else if(input.type == "checkbox") {
		var input = $(input);
		var value = $(input).attr("checked");
		if(value) {
			return true;
		} else {
			return false;
		}
		
	}
}

function isNotBlank(input) {
	var input = $(input);
	var inputType = input.attr("tagName").toLowerCase();
	var value = input.val();
	if(value == "") {
		//alert("I am blank");
		return false;
	} else {
		//alert("I am NOT blank, BUT I am still the value of the label");
		if(value == input.attr("origValue")) {
			return false;
		}
		//alert("I am NOT blank");
		return true;
	}
}

function isUnderMaxLength(input, maxLength) {
	var input = $(input);
	var value = input.val();
	if(value.length <= maxLength) {
	 	return true;
	} else {
		//alert("Please enter a number.");
		return false;
	}
}

function isNumeric(input) {
	var input = $(input);
	var regex = /^[0-9]+$/;
	var isValid = regex.test(input.val());
	if(isValid) {
	 	return true;
	} else {
		//alert("Please enter a number.");
		return false;
	}
}

function isAlphabetical(input) {
	var input = $(input);
	var regex = /^[a-zA-Z -]+$/;
	var isValid = regex.test(input.attr("value"));
	if(isValid) {
		//alert("Please enter letters only.");
	 	return true;
	} else {
		return false;
	}	
}

function isMonthNumber(input) {
	if(isNumeric(input)) {
		var input = $(input);
		var value = parseInt(input.attr("value"));
		if(value > 12 || value < 1) {
			//alert("not a valid month number")
			return false;
		}
		return true;
	} else {
		//alert("not a valid month number")		
		return false;
	}
}

function isDayNumber(input) {
	if(isNumeric(input)) {
		var input = $(input);
		var value = parseInt(input.attr("value"));
		//alert(value.substring(0,1))
		// if(value.substring(0,1) == 0) {
		// 	var value = value.substring(1);
		// }
		if(value > 31 || value < 1) {
			//alert("not a valid day number:" +value)
			return false;
		}
		return true;
	} else {
		//alert("not a valid number")
		return false;
	}
}

function isFullYearNumber(input) {
	if(isNumeric(input)) {
		var input = $(input);
		var value = input.attr("value");
		if(value.length != 4) {
			//alert("not a valid year number")
			return false;
		}
		return true;
	} else {
		//alert("not a valid number")
		return false;
	}
}

function hasAgreed(input) {
	var input = $(input);
	var value = $(input).attr("checked");
	if(value) {
		return true;
	} else {
		return false;
	}
}

function compare(inputs) {
	var firstInput = $(inputs[0]);
	var doesMatch = true;
	inputs.each(function(idx,item) {
		var input = $(item);
		if(input.attr("value") != firstInput.attr("value")) {
			doesMatch = false;
			return false;
		}
	});

	if(doesMatch) {
		return true;
	} else {
		return false;
	}
}




