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 > 100) {
				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 > 100) {
				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 < 2) {
				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.match(new RegExp("<br /><br />"))) {
				contentToInject = contentToInject.substring(0, contentToInject.search("\\n\\n"));
			} else 	if (contentToInject.match(new RegExp("\\n\\n"))) {
				contentToInject = contentToInject.substring(0, contentToInject.search("\\n\\n"));
			} else if (contentToInject.length > 200) {
				contentToInject = contentToInject.substr(0, 200) + '...';
			} 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;
			}
		});
	}
	if (targetEvents && (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';
			}
			targetEvents.innerHTML = contentToInject;
		});
	}
	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;
	}
};