function validateForm(frm) {
    var msg = "";
    var missing = "";
    var emails = "";

    for(var i = 0; i < frm.length; i++) {
	
	var e = frm.elements[i];
	
	if (e.getAttribute('mandatory')) {
	    if (e.value == "") {
		missing += '- ' + e.name + '\n';
	    }

	    // Check if 'email' occurs in the field name and if so validate as such
	    if (isEmailField(e) && !isValidEmail(e.value)) {
		emails += '- ' + e.name + '\n';
	    }
	} else {
	    if (isEmailField(e) && e.value != "" && !isValidEmail(e.value)) {
		// Do same check if information supplied, even if field not mandatory
		emails += '- ' + e.name + '\n';
	    }
	}
	
	
    }
    
    if (missing) {
	msg += "Please fill out the following fields:\n\n" + missing + "\n\n";
    }
    if (emails) {
	msg += "Please supply a valid email address in the following fields:\n\n" + emails;
    }

    if (msg) {
	alert(msg);
	return false;
    } else {
	return true;
    }
	
}

function isEmailField(field) {
    return field.getAttribute('emailField');
}

function isValidEmail(email){
    var validFormatRegExp = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
    var isValid = validFormatRegExp.test(email);
    return isValid;
}
