		var agreedTerms;
		var illegalChars;
		var whichField;
		var validated;
		var formValidated;
		
		function showErrorMsg(fieldName, error) {
			var fld = document.getElementById(fieldName);
			if (error) {
				document.getElementById("error_" + fieldName + error).style.display = "block";
			} else {
				document.getElementById("error_" + fieldName).style.display = "block";
			}
			fld.style.backgroundColor = "#FFF0F0";
			fld.style.borderColor = "red";
			fld.style.color = "red";
		};
		function hideErrorMsg(fieldName, errors) {
			if (errors) {
				for (i = 1; i <= errors; i++) { 
					document.getElementById("error_" + fieldName + i).style.display = "none";
				}
			} else {
				document.getElementById("error_" + fieldName).style.display = "none";
			}
		};

		function fieldValidate(fieldName) {
			var fld = document.getElementById(fieldName);
			var stringMatch = checkForString(fieldName, "_");
			switch(stringMatch) {
				case "username":
				case "firstName":
				case "surName":
					illegalChars = /[^A-Za-z]/; // allow letters
					if (!fld.value) {
						showErrorMsg(fieldName, "1");
						return false;
					} else if (fld.value.length < 2) {
						showErrorMsg(fieldName, "2");
						return false;
					//} else if (illegalChars.test(fld.value)) {
					//	showErrorMsg(fieldName, "3");
					//	return false;
					} else if (fld.value.length > 45) {
						showErrorMsg(fieldName, "4");
						return false;
					}
					return true;
				break;
				case "title":
				case "address":
				case "subject":
				case "photographer":
					illegalChars = /[^\w\s]/; // allow letters, numbers, and underscores
					if (!fld.value) {
						showErrorMsg(fieldName, "1");
						return false;
					} else if (fld.value.length < 2) {
						showErrorMsg(fieldName, "2");
						return false;
					//} else if (illegalChars.test(fld.value)) {
					//	showErrorMsg(fieldName, "3");
					//	return false;
					} else if (fld.value.length > 45) {
						showErrorMsg(fieldName, "4");
						return false;
					}
					return true;
				break;
				case "upload":
					if (!fld.value) {
						showErrorMsg(fieldName, "1");
						return false;
					}
				break;
				case "email":
					function trim(s) {
						return s.replace(/^\s+|\s+$/, '');
					} 
					var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
					var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
					illegalChars = /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
					if (!fld.value) {
						showErrorMsg(fieldName, "1");
						return false;
					} else if (!emailFilter.test(tfld)) {              //test email for illegal characters
						showErrorMsg(fieldName, "1");
						return false;
					} else if (fld.value.match(illegalChars)) {
						showErrorMsg(fieldName, "1");
						return false;
					}
					return true;
				break;
				case "confirmemail":
					var emailFld = document.getElementById('email');
					if (emailFld.value == "") {
						hideErrorMsg(fieldName, "2");
						showErrorMsg(fieldName, "1");
						return false;
					} else if (emailFld.value != "" && fld.value != emailFld.value || emailFld.value != "" && fld.value == "") {
						hideErrorMsg(fieldName, "1");
						showErrorMsg(fieldName, "2");
						return false;
					}
					return true;
				break;
				case "password":
					illegalChars = /[\W_]/; // allow only letters and numbers 
					if (!fld.value) {
						showErrorMsg(fieldName, "1");
						return false;
					} else if (fld.value.length < 4) {
						showErrorMsg(fieldName, "2");
						return false;
					} else if (illegalChars.test(fld.value)) {
						showErrorMsg(fieldName, "3");
						return false;
					} else if (fld.value.length > 20) {
						showErrorMsg(fieldName, "4");
						return false;
					}
					return true;
				break;
				case "text":
					if (!fld.value) {
						showErrorMsg(fieldName, "1");
						return false;
					}
					return true;
				break;
				case "checkbox":
					if (fld.status != 1) {
						document.getElementById("error_agreeTerms1").style.display = "block";
						return false;
					}
					return true;
				break;
				default:
					return true;
				break;
			}
		};

		function validateForm(object) {
			var returnVar = true;
			for (keyVar in object) {	
				if (fieldValidate(object[keyVar]) == false) {
					 returnVar = false;
				}
			}
			return returnVar;
		};
		
		function highlightField(element) {
			var whichField = document.getElementById(element);
			whichField.style.backgroundColor = "#F0FFF0";
			whichField.style.borderColor = "green";
			whichField.style.color = "green";
			var stringToFind = checkForString(whichField.id, '_');
			var targetEvents = document.getElementById('eventPreview' + stringToFind);
			var targetBanners = document.getElementById('bannerPreview' + stringToFind);
			if (targetEvents && (stringToFind == 'title' || stringToFind == 'subTitle' || stringToFind == 'dates' || stringToFind == 'text') || targetBanners && stringToFind == 'button')  {
				this.addEvent('keyup', function(e){
					var contentToInject = whichField.value;
					if (contentToInject.length > 250) {
						contentToInject = contentToInject.substr(0, 250) + '...';
					} else if (contentToInject.length < 1) {
						contentToInject = 'No text';
					}
					if (stringToFind == 'title') {
						targetEvents.innerHTML = '&laquo;' + contentToInject + '&raquo;';
					} else if (stringToFind == 'button') {
						targetBanners.innerHTML = contentToInject + ' &raquo;';
					} else {
						targetEvents.innerHTML = contentToInject;
					}
				});
			}
			var targetBanners = document.getElementById('bannerPreview' + stringToFind);
			if (targetBanners && (stringToFind == 'title')) {
				this.addEvent('keyup', function(e){
					var contentToInject = whichField.value;
					if (contentToInject.length > 45) {
						contentToInject = contentToInject.substr(0, 45) + '...';
					} else if (contentToInject.length < 1) {
						contentToInject = 'No text';
					}
					targetBanners.innerHTML = contentToInject;
				});
			}
		};
		function dimField(element) {
			whichField = document.getElementById(element);
			if (fieldValidate(element) && whichField.validated != false) {
				whichField.style.backgroundColor = "white";
				whichField.style.border = "1px solid";
				whichField.style.borderColor = "#BDC7D8";
				whichField.style.color = "#8a94a5";
			}
		};
		function compareFields(element, compare, errors) {
			var Element = document.getElementById(element);
			var Compare = document.getElementById(compare);
			if(Element.value == Compare.value && Element.value != "") {
				Element.style.backgroundColor = "#F0FFF0";
				Element.style.borderColor = "green";
				Element.style.color = "green";
				Element.validated = true;
				hideErrorMsg(element, errors);
			} else {
				Element.style.backgroundColor = "#FFF0F0";
				Element.style.borderColor = "red";
				Element.style.color = "red";
				Element.validated = false;
			}
		};
