function displayErrorMessage(containerName, errorMessage, classOrId, fontColour, borderColour, backgroundColour) {
	classOrId = classOrId==null ? 1 : classOrId;
	classOrId = classOrId==1 ? '#' : '.';
	fontColour = fontColour==null ? 'ff0000' : fontColour;
	borderColour = borderColour==null ? 'ff0000' : borderColour;
	backgroundColour = backgroundColour==null ? 'fce5e6' : backgroundColour;
	$(classOrId + containerName).html('<span style="color: #' + fontColour + ';">' + errorMessage + '</span>');
}
function deleteErrorMessage(containerName, classOrId) {
	classOrId = classOrId==null ? 1 : classOrId;
	classOrId = classOrId==1 ? '#' : '.';
	$(classOrId + containerName).html('');
}
function checkTextFieldEmpty(fieldName, classOrId, errorContainer, errorMessage, errorContainerClassOrId, borderColour, backgroundColour) {
	var errorCount = 0;
	classOrId = classOrId==null ? 1 : classOrId;
	classOrId = classOrId==1 ? '#' : '.';
	borderColour = borderColour==null ? 'ff0000' : borderColour;
	backgroundColour = backgroundColour==null ? 'fce5e6' : backgroundColour;
	if($(classOrId + fieldName).val() == '') {
		$(classOrId + fieldName).css({
			'border': '1px solid #' + borderColour,
			'background': '#' + backgroundColour
		});
		if(errorContainer != null && errorMessage != null) {
			displayErrorMessage(errorContainer, errorMessage, errorContainerClassOrId);
		}
		errorCount++;
	}
	else {
		$(classOrId + fieldName).css({
			'border': '',
			'background': ''
		});
		deleteErrorMessage(errorContainer, errorContainerClassOrId);
	}
	return errorCount;
}
function checkTextFieldMultiple(fieldNames, requiredFields, classOrId, errorContainer, errorMessage, errorContainerClassOrId, borderColour, backgroundColour) {
	var errorCount = 0;
	var fieldErrors = 0;
	classOrId = classOrId==null ? 1 : classOrId;
	classOrId = classOrId==1 ? '#' : '.';
	var textFieldsArray = fieldNames.split(',');
	borderColour = borderColour==null ? 'ff0000' : borderColour;
	backgroundColour = backgroundColour==null ? 'fce5e6' : backgroundColour;
	for(i=0; i<textFieldsArray.length; ++i) {
		if($(classOrId + textFieldsArray[i]).val() == '') {
			$(classOrId + textFieldsArray[i]).css({
				'border': '1px solid #' + borderColour,
				'background': '#' + backgroundColour
			});
			fieldErrors++;
		}
		else {
			$(classOrId + textFieldsArray[i]).css({
				'border': '',
				'background': ''
			});
		}
	}
	if(fieldErrors > (textFieldsArray.length-requiredFields)) {
		errorCount=1;
		if(errorContainer != null && errorMessage != null) {
			displayErrorMessage(errorContainer, errorMessage, errorContainerClassOrId);
		}
	}
	if(errorCount == 0) {
		for(i=0; i<textFieldsArray.length; ++i) {
			$(classOrId + textFieldsArray[i]).css({
				'border': '',
				'background': ''
			});
			deleteErrorMessage(errorContainer, errorContainerClassOrId);
		}
	}
	return errorCount;
}
function checkDate(fieldName, classOrId, errorContainer, errorMessage, errorMessageDateFormat, errorContainerClassOrId, borderColour, backgroundColour) {
	var errorCount = 0;
	classOrId = classOrId==null ? 1 : classOrId;
	classOrId = classOrId==1 ? '#' : '.';
	borderColour = borderColour==null ? 'ff0000' : borderColour;
	backgroundColour = backgroundColour==null ? 'fce5e6' : backgroundColour;
	if(!isValidDate($(classOrId + fieldName).val(), 'DMY')) {
		$(classOrId + fieldName).css({
			'border': '1px solid #' + borderColour,
			'background': '#' + backgroundColour
		});
		if($(classOrId + fieldName).val()!='') {
			if(errorContainer != null && errorMessage != null) {
				displayErrorMessage(errorContainer, errorMessageDateFormat, errorContainerClassOrId);
			}
		}
		else {
			if(errorContainer != null && errorMessage != null) {
				displayErrorMessage(errorContainer, errorMessage, errorContainerClassOrId);
			}
		}
		errorCount++;
	}
	else {
		$(classOrId + fieldName).css({
			'border': '',
			'background': ''
		});
		deleteErrorMessage(errorContainer, errorContainerClassOrId);
	}
	return errorCount;
}
function checkTelephone(fieldName, classOrId, errorContainer, errorMessage, errorContainerClassOrId, borderColour, backgroundColour) {
	var errorCount = 0;
	classOrId = classOrId==null ? 1 : classOrId;
	classOrId = classOrId==1 ? '#' : '.';
	var temp = $(classOrId + fieldName).val().replace(/\s/gi, '');
	borderColour = borderColour==null ? 'ff0000' : borderColour;
	backgroundColour = backgroundColour==null ? 'fce5e6' : backgroundColour;
	if($(classOrId + fieldName).val() != '') {
		if(isNaN(temp)) {
			$(classOrId + fieldName).css({
				'border': '1px solid #' + borderColour,
				'background': '#' + backgroundColour
			});
			if(errorContainer != null && errorMessage != null) {
				displayErrorMessage(errorContainer, errorMessage, errorContainerClassOrId);
			}
			errorCount++;
		}
		else {
			$(classOrId + fieldName).css({
				'border': '',
				'background': ''
			});
			deleteErrorMessage(errorContainer, errorContainerClassOrId);
		}
	}
	return errorCount;
}
function checkEmail(fieldName, classOrId, errorContainer, errorMessage, errorContainerClassOrId, borderColour, backgroundColour) {
	var errorCount = 0;
	classOrId = classOrId==null ? 1 : classOrId;
	classOrId = classOrId==1 ? '#' : '.';
	borderColour = borderColour==null ? 'ff0000' : borderColour;
	backgroundColour = backgroundColour==null ? 'fce5e6' : backgroundColour;
	if($(classOrId + fieldName).val().indexOf("@") < 1 || $(classOrId + fieldName).val().lastIndexOf(".") < 1) {
		$(classOrId + fieldName).css({
			'border': '1px solid #' + borderColour,
			'background': '#' + backgroundColour
		});
		if(errorContainer != null && errorMessage != null) {
			displayErrorMessage(errorContainer, errorMessage, errorContainerClassOrId);
		}
		errorCount++;
	}
	else {
		$(classOrId + fieldName).css({
			'border': '',
			'background': ''
		});
		deleteErrorMessage(errorContainer, errorContainerClassOrId);
	}
	return errorCount;
}
function checkoxChecked(fieldName, classOrId) {
	classOrId = classOrId==null ? 1 : classOrId;
	classOrId = classOrId==1 ? '#' : '.';
	if($(classOrId + fieldName).attr('checked')) return true;
	return false;
}
function resetStyle(fieldNames, classOrId) {
	classOrId = classOrId==null ? 1 : classOrId;
	classOrId = classOrId==1 ? '#' : '.';
	var textFieldsArray = fieldNames.split(',');
	for(i=0; i<textFieldsArray.length; ++i) {
		if($(classOrId + textFieldsArray[i]).val() == '') {
			$(classOrId + textFieldsArray[i]).css({
				'border': '',
				'background': ''
			});
		}
	}
}
function isValidDate(dateStr, format) {
	// function to validate a date
   if (format == null) { format = 'MDY'; }
   format = format.toUpperCase();
   if (format.length != 3) { format = 'MDY'; }
   if ( (format.indexOf('M') == -1) || (format.indexOf('D') == -1) || (format.indexOf('Y') == -1) ) { format = 'MDY'; }
   if (format.substring(0, 1) == 'Y') { // If the year is first
      var reg1 = /^\d{2}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
      var reg2 = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
   } else if (format.substring(1, 2) == 'Y') { // If the year is second
      var reg1 = /^\d{1,2}(\-|\/|\.)\d{2}\1\d{1,2}$/
      var reg2 = /^\d{1,2}(\-|\/|\.)\d{4}\1\d{1,2}$/
   } else { // The year must be third
      var reg1 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2}$/
      var reg2 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
   }
   // If it doesn't conform to the right format (with either a 2 digit year or 4 digit year), fail
   if ( (reg1.test(dateStr) == false) && (reg2.test(dateStr) == false) ) { return false; }
   var parts = dateStr.split(RegExp.$1); // Split into 3 parts based on what the divider was
   // Check to see if the 3 parts end up making a valid date
   if (format.substring(0, 1) == 'M') { var mm = parts[0]; } else if (format.substring(1, 2) == 'M') { var mm = parts[1]; } else { var mm = parts[2]; }
   if (format.substring(0, 1) == 'D') { var dd = parts[0]; } else if (format.substring(1, 2) == 'D') { var dd = parts[1]; } else { var dd = parts[2]; }
   if (format.substring(0, 1) == 'Y') { var yy = parts[0]; } else if (format.substring(1, 2) == 'Y') { var yy = parts[1]; } else { var yy = parts[2]; }
   if (parseFloat(yy) <= 50) { yy = (parseFloat(yy) + 2000).toString(); }
   if (parseFloat(yy) <= 99) { yy = (parseFloat(yy) + 1900).toString(); }
   var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);
   if (parseFloat(dd) != dt.getDate()) { return false; }
   if (parseFloat(mm)-1 != dt.getMonth()) { return false; }
   return true;
}
