function SSMValidateForm(frm){
	var sName;
	var sAlertName;
	var sSuffix;
	var sEmail;
	var aMatch;
	var bValid;
	var sObligNames;
	var aOblig;
	var bObligOK;
	bObligOK = false;
	for(var i=0; i<frm.length; i++){
		sName = frm.elements[i].name;
		sSuffix = sName.slice(sName.length-1)
		sAlertName = sName.slice(0, sName.length - 1).replace(/_/g, ' ');
		switch(sSuffix){
			//Validate Dropdowns (Required)
			case '^':
				if(frm.elements[i].options.selectedIndex == 0){
						alert('The ' + sAlertName + ' field is required');
						frm.elements[i].focus();
						return false;
				}
				break;
			//Validate Text (Required)
			case '*':
				if(frm.elements[i].value == ''){
					alert('The ' + sAlertName + ' field is required');
					frm.elements[i].focus();
					return false;
				}
				break;
			//Validate Email Address (Email Required)
			case '%':
				sEmail = frm.elements[i].value;
				aMatch = sEmail.match(/[a-zA-Z0-9_.+-]+@[a-zA-Z0-9_.+-]+\.\w{2,}/);
				bValid = ( aMatch != null ) ? true : false;
				if( bValid ) bValid = ( aMatch.length == 1 && aMatch[0] == sEmail ) ? true : false;
				if( !bValid ){
					if(frm.elements[i].value == ''){
						alert('The ' + sAlertName + ' field is required');
					}
					else {
						alert('Please enter a valid email address');
					}
					frm.elements[i].focus();
					return false;
				}
				break;
			//Validate Email Address (Not Required)
			case '@':
				sEmail = frm.elements[i].value;
				if (sEmail != ''){
					aMatch = sEmail.match(/[a-zA-Z0-9_.+-]+@[a-zA-Z0-9_.+-]+\.\w{2,}/);
					bValid = ( aMatch != null ) ? true : false;
					if( bValid ) bValid = ( aMatch.length == 1 && aMatch[0] == sEmail ) ? true : false;
					if( !bValid ){
						alert('Please enter a valid email address');
						frm.elements[i].focus();
						return false;
					}
				}
				break;
			//Email or Contact number required
			case '&':
				if(frm.elements[i].value == '' && frm.elements[i-1].value == ''){
						alert('Please enter an Email Address or ' + sAlertName);
						frm.elements[i-1].focus();
						return false;
				}
				break;
		}
	}
	//Obligatory Fields
	if(frm.Oblig === undefined){
		return true;
	}
	else{
		sObligNames = frm.Oblig.value
		aOblig = sObligNames.split(',')
		//Loop through form elements
		for(var i=0; i<frm.length; i++){
			//Loop through obligatory fields
			for(var j=0; j<aOblig.length; j++){
				//If the form element name = the obligatory field name, then
				if(frm.elements[i].name == aOblig[j]){
					//If form element is not empty
					if(frm.elements[i].value != ''){
						bObligOK = true;	
					}
				}
			}
		}
		if(bObligOK == false){
			sObligNames = sObligNames.replace(/[*@%]/g, '')
			sObligNames = sObligNames.replace(/_/g, ' ')
			sObligNames = sObligNames.replace(/,/g, ', ')
			alert('Please enter one of the following fields: ' + sObligNames);
			return false;					
		}
	}
	return true;
}
