var erFlag = "";
function validateForm(frm) {
	fixMistake();
    
	var el;
    var erMessage = "";
	
	$('[validation]').each(function (i) {
		//alert($(this).attr('validation'));
		switch ($(this).attr('validation')) {
		    // email address
			case "5":
				if ($(this).val() == "") {
					$(this).parent().parent().find('p').append(' <span class="warning">please enter an email.</span>');
					$(this).parent().parent().addClass('error');
					erFlag = 'yes';
				} else if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test($(this).val()))){
					$(this).parent().parent().find('p').append(' <span class="warning">invalid email.</span>');
					$(this).parent().parent().addClass('error');
					erFlag = 'yes';
				}
				break;
			// dropdown list
			case "11":
				if ($(this)[0][$(this)[0].selectedIndex].value == "") {
					$(this).parent().parent().find('p').append(' <span class="warning">please select a value.</span>');
					$(this).parent().parent().addClass('error');
					erFlag = 'yes';
				}
				break;
			// number field
			case "12":
				if (isNaN($(this).val()) || $(this).val() == '') {
					$(this).parent().parent().find('p').append(' <span class="warning">must be a valid number.</span>');
					$(this).parent().parent().addClass('error');
					erFlag = 'yes';
				}
				break;
			// checkbox list
			case "7":
				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().filter('.error').length == 0) {
					$(this).parent().parent().parent().find('p').append(' <span class="warning">please select at least one value.</span>');
					$(this).parent().parent().parent().addClass('error');
					erFlag = 'yes';
				}
				break;
			// price checkboxes 
			case "15":
				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().filter('.error').length == 0) {
					$(this).parent().parent().parent().find('p').append(' <span class="warning">please select at least one value.</span>');
					$(this).parent().parent().parent().addClass('error');
					erFlag = 'yes';
				}
				break;
		    // radio button list
			case "8":
				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().filter('.error').length == 0) {
					$(this).parent().parent().parent().find('p').append(' <span class="warning">please select a value.</span>');
					$(this).parent().parent().parent().addClass('error');
					erFlag = 'yes';
				}
				break;
			// price radio buttons
			case "14":
				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().filter('.error').length == 0) {
					$(this).parent().parent().parent().find('p').append(' <span class="warning">please select a value.</span>');
					$(this).parent().parent().parent().addClass('error');
					erFlag = 'yes';
				}
				break;
		    // credit card
			case "13":
				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;
			// name field
			case "1":
			    var myOption = 1;
			    var thisName = $(this).attr('name');
				var arName = thisName.split("-");
				var newName = arName[0];
				switch (newName) {
					case "fname":
				        if ($(this).val() == '') {
				            $(this).parent().parent().find('p').append(' <span class="warning">first name required.</span>');
				            myOption = -1;
				        }
				        break;
				    case "lname":
				        if ($(this).val() == '') {
				            $(this).parent().parent().find('p').append(' <span class="warning">last name required.</span>');
				            myOption = -1;
				        }
				        break;
				    default:
				}
				if (myOption == -1 && $(this).parent().parent().filter('.error').length == 0)
				{
				    $(this).parent().parent().addClass('error');
				    erFlag = 'yes';
				}
				break;
			// date picker
			case "2":
				var myOption = 1;
				if (isNaN($(this).val()) || $(this).val() == '') {
					myOption = -1;
				}
				if (myOption == -1 && $(this).parent().parent().filter('.error').length == 0) {
					$(this).parent().parent().find('p').append(' <span class="warning">check your date.</span>');
					$(this).parent().parent().addClass('error');
					erFlag = 'yes';
				}
				break;
			// address block
			case "4":
			    var myOption = 1;
			    var thisName = $(this).attr('name');
				var arName = thisName.split("-");
				var newName = arName[0];
				switch (newName) {
					case "address":
					    if ($(this).val() == '') {
					        $(this).parent().parent().parent().find('p').append(' <span class="warning">address required.</span>');
					        myOption = -1;
					    }
					    break;
					case "city":
					    if ($(this).val() == '') {
					        $(this).parent().parent().parent().find('p').append(' <span class="warning">city required.</span>');
					        myOption = -1;
					    }
					    break;
					case "state":
					    if ($(this).val() == '') {
					        $(this).parent().parent().parent().find('p').append(' <span class="warning">state required.</span>');
					        myOption = -1;
					    }
					    break;
					case "zip":
					    if ($(this).val() == '') {
					        $(this).parent().parent().parent().find('p').append(' <span class="warning">zip required.</span>');
					        myOption = -1;
					    }
					    break;
					case "country":
					    if ($(this).val() == '') {
					        $(this).parent().parent().parent().find('p').append(' <span class="warning">country required.</span>');
					        myOption = -1;
					    }
					    break;
					default:
				}
				if (myOption == -1 && $(this).parent().parent().filter('.error').length == 0)
				{
				    $(this).parent().parent().parent().addClass('error');
				    erFlag = 'yes';
				}	
				break;
			// all others
			default:
				if ($(this).val() == "") {
					$(this).parent().parent().find('p').append(' <span class="warning">must not be blank.</span>');
					$(this).parent().parent().addClass('error');
					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();
	$('.warning').remove();
	$('.error').removeClass('error');
	erFlag = '';
}
