var erFlag = "";
function validateForm(frm) {
	fixMistake();
    
	var el;
    var erMessage = "";
	
	$('[validation]').each(function (i) {
		//alert($(this).attr('validation'));
		switch ($(this).attr('validation')) {
			case "Email":
				if ($(this).val() == "") {
					//$(this).parent().addClass('mistake');
					$(this).after('<span class="mistake">Must not be blank</span>');
					erFlag = 'yes';
				} else if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test($(this).val()))){
					//$(this).parent().addClass('mistake');
					$(this).after('<span class="mistake">Email is not valid</span>');
					erFlag = 'yes';
				}
				break;
			case "Dropdown":
				if ($(this)[0][$(this)[0].selectedIndex].value == "") {
					$(this).after('<span class="mistake">Must select a value</span>');
					erFlag = 'yes';
				}
				break;
			case "Number":
				if (isNaN($(this).val()) || $(this).val() == '') {
					$(this).after('<span class="mistake">Must be a valid number</span>');
					erFlag = 'yes';
				}
				break;
			case "Checkbox Group":
				var name = $(this).attr('name');
				var myOption = -1;
				$('[name="'+name+'"]').each(function(i) {
					if ($(this)[0].checked) {
						myOption = i;
						i=$('[name="'+name+'"]').length;
					}
				});
				if (myOption == -1 && $(this).parent().parent().parent().children().filter('.mistake').length == 0) {
					$(this).parent().parent().before('<span class="mistake">Must select at least one value</span>');
					erFlag = 'yes';
				}
				break;
			case "Checkboxes (with Price)":
				var name = $(this).attr('name');
				var myOption = -1;
				$('[name="'+name+'"]').each(function(i) {
					if ($(this)[0].checked) {
						myOption = i;
						i=$('[name="'+name+'"]').length;
					}
				});
				if (myOption == -1 && $(this).parent().parent().parent().children().filter('.mistake').length == 0) {
					$(this).parent().parent().before('<span class="mistake">Must select at least one value</span>');
					erFlag = 'yes';
				}
				break;
			case "Radio Button Group":
				var name = $(this).attr('name');
				var myOption = -1;
				$('[name="'+name+'"]').each(function(i) {
					if ($(this)[0].checked) {
						myOption = i;
						i=$('[name="'+name+'"]').length;
					}
				});
				if (myOption == -1 && $(this).parent().parent().parent().children().filter('.mistake').length == 0) {
					$(this).parent().parent().before('<span class="mistake">Must select a value</span>');
					erFlag = 'yes';
				}
				break;
			case "Radio Buttons (with Price)":
				var name = $(this).attr('name');
				var myOption = -1;
				$('[name="'+name+'"]').each(function(i) {
					if ($(this)[0].checked) {
						myOption = i;
						i=$('[name="'+name+'"]').length;
					}
				});
				if (myOption == -1 && $(this).parent().parent().parent().children().filter('.mistake').length == 0) {
					$(this).parent().parent().before('<span class="mistake">Must select a value</span>');
					erFlag = 'yes';
				}
				break;
			case "Credit Card":
				var thisName = $(this).attr('name');
				var arName = thisName.split("-");
				var newName = arName[0];
				switch (newName) {
					case "noc":
						if ($(this).val() == '') {
							$(this).after('<span class="mistake">Must not be blank</span>');
							erFlag = 'yes';
						}
						break;
					case "ccnumber":
						if (isNaN($(this).val()) || $(this).val() == '') {
							$(this).after('<span class="mistake">Must be a valid number</span>');
							erFlag = 'yes';
						}
						break;
					case "cctype":
						if ($(this)[0][$(this)[0].selectedIndex].value == "") {
							$(this).after('<span class="mistake">Must select a value</span>');
							erFlag = 'yes';
						}
						break;
					case "expmonth":
						if (isNaN($(this).val()) || $(this).val() == '') {
							$(this).after('<span class="mistake">Must be a valid number</span>');
							erFlag = 'yes';
						}
						break;
					case "expyear":
						if (isNaN($(this).val()) || $(this).val() == '') {
							$(this).after('<span class="mistake">Must be a valid number</span>');
							erFlag = 'yes';
						}
						break;
					case "ccv":
						if (isNaN($(this).val()) || $(this).val() == '') {
							$(this).after('<span class="mistake">Must be a valid number</span>');
							erFlag = 'yes';
						}
						break;
					default:
				}
				break;
			case "Name":
				if ($(this).val() == '') {
					$(this).after('<span class="mistake">Must not be blank</span>');
					erFlag = 'yes';
				}
				break;
			case "Date":
				var myOption = 1;
				if (isNaN($(this).val()) || $(this).val() == '') {
					myOption = -1;
				}
				if (myOption == -1 && $(this).parent().children().filter('.mistake').length == 0) {
					$(this).parent().children().filter('p').after('<div class="mistake">Check your date</div>');
					erFlag = 'yes';
				}
				break;
			case "Address":
				var myOption = 1;
				if ($(this).val() == '') {
					myOption = -1;
				}
				if (myOption == -1 && $(this).parent().parent().parent().children().filter('.mistake').length == 0) {
					$(this).parent().parent().parent().children().filter('p').after('<div class="mistake">Make sure your address is not blank</div>');
					erFlag = 'yes';
				}
				break;
			default:
				if ($(this).val() == "") {
					$(this).after('<span class="mistake">Must not be blank</span>');
					erFlag = 'yes';
				}
		}
	});
	
	if (!(erFlag == "")) {
		erMessage = "There are some problems in your form.\n\nPlease check that all the fields are filled out correctly";
		alert(erMessage);
		return (false);
	} else {
		return (true);
	}
}

function makeMistake(el) {
	el.className += 'mistake';
	//el.parent().addClass('mistake');
	erFlag += 'yes';
}

function fixMistake() {
	$('.mistake').remove();
	erFlag = '';
}