function validate(form) {
	var send = true;
	if (form.id == "internshipPost") {
		var requiredFields = new Array();
		//remove errors if resubmitted
		for (var x = 0; x < requiredFields.length; x++) {
			if (document.getElementById(requiredFields[x]).value == "") {
				displayError(document.getElementById(requiredFields[x]));
				send = false;
			} else if (requiredFields[x] == "deadline") {
				if (validDate(document.getElementById(requiredFields[x]).value)) {
					var formatted = formatDate(document.getElementById(requiredFields[x]).value);
					document.getElementById(requiredFields[x]).value = formatted;
					removeError(document.getElementById(requiredFields[x]));
				} else {
					displayError(document.getElementById(requiredFields[x]));
					send = false;
				}
			} else {
				removeError(document.getElementById(requiredFields[x]));
			}
		}
		if (send == false) {
			displayError(document.getElementById("upload"));
		}
	} else if (form.id == "createAccount") {
		var requiredFields = new Array("firstname","lastname","company","username","pass1","pass2");
		//remove errors if resubmitted
		for (var x = 0; x < requiredFields.length; x++) {
			if (document.getElementById(requiredFields[x]).value == "") {
				displayError(document.getElementById(requiredFields[x]));
				send = false;
			} else {
				removeError(document.getElementById(requiredFields[x]));
			}
		}
		if (form.pass1.value != form.pass2.value) {
			form.pass1.title = "Passwords do not match, please retype and try again";
			displayError(document.getElementById("pass1"));
			send = false;
		} else {
			form.password.value = hex_md5(form.pass1.value);
		}
		if (form.address.value == "" & form.phone.value == "" & form.email.value == "") {
			form.phone.title = "Please provide either your phone number or email address";
			displayError(document.getElementById("phone"));
			send = false;
		}
	} else	if (form.id == "updatePassword") {
		var requiredFields = new Array("old","password","repassword");
		//remove errors if resubmitted
		for (var x = 0; x < requiredFields.length; x++) {
			if (document.getElementById(requiredFields[x]).value == "") {
				displayError(document.getElementById(requiredFields[x]));
				send = false;
			} else {
				removeError(document.getElementById(requiredFields[x]));
			}
		}
		if (form.password.value != form.repassword.value) {
			form.password.title = "Passwords do not match, please retype and try again";
			displayError(document.getElementById("password"));
			send = false;
		} else if (form.password.value != "") {
			form.password.value = hex_md5(form.password.value);
			form.repassword.value = hex_md5(form.repassword.value);
			form.old.value = hex_md5(form.old.value);
		}
		if (send != false) {
			form.coded.value = "yes";
		}
	} else if (form.id == "updateAccount") {
		var requiredFields = new Array("firstname","lastname","company");
		//remove errors if resubmitted
		for (var x = 0; x < requiredFields.length; x++) {
			if (document.getElementById(requiredFields[x]).value == "") {
				displayError(document.getElementById(requiredFields[x]));
				send = false;
			} else {
				removeError(document.getElementById(requiredFields[x]));
			}
		}
		if (form.address.value == "" & form.phone.value == "" & form.email.value == "") {
			form.phone.title = "Please provide either your phone number or email address";
			displayError(document.getElementById("phone"));
			send = false;
		}
	}
	return send;
}

function validDate(date) {
	datetest = new Date(date);
	//javascript doesn't recognize this date format
	if (datetest == "Invalid Date") {
		//tes a standard format that JS doesn't know
		if (date.indexOf("-") > -1) {
			var pieces = date.split("-");
			var day = pieces[2];
			var month = pieces[1];
			var year = pieces[0];
			
			//if the month is a number between 0 and 12
			//if the year is in the future
			var now = new Date();
			if (month <= 12 & month > 0 & year > now.getFullYear() & day > 0 & day <= 31) {
				return true
			} else {
				return false
			}
		} else {
			return false;
		}
	}
	return true;
}

function formatDate(date) {
	if (date.indexOf("-") > -1) {
		var pieces = date.split("-");
		var day = pieces[2];
		var month = pieces[1];
		var year = pieces[0];
		
		month = (month.toString().length == 1) ? "0" + month.toString() : month;
		day = (day.toString().length == 1) ? "0" + day.toString() : day;
		
		var formatted = year + "-" + month + "-" + day;
	} else {
		date = new Date(date);
		
		var month = date.getMonth() + 1;
		month = (month.toString().length == 1) ? "0" + month.toString() : month;
		var day = (date.getDate().toString().length == 1) ? "0" + date.getDate().toString() : date.getDate();
		
		var formatted = date.getFullYear() + "-" + month + "-" + day;
	}
	return formatted;
}

function displayError(element) {
	if (document.getElementById(element.name + "Label").childNodes.length == 1 || document.getElementById(element.name + "Label").childNodes.length == 2 | document.getElementById(element.name + "Label").childNodes.length == 4) {
		var errorp = document.createElement('span');
		errorp.className =  'error';
		errorp.appendChild(document.createTextNode(element.title + "."));
		document.getElementById(element.name + "Label").appendChild(errorp);
	} else {
		document.getElementById(element.name + "Label").childNodes[2].innerHTML = element.title + ".";
	}
}

function removeError(element) {
	if (document.getElementById(element.name + "Label").childNodes.length == 3) {
		document.getElementById(element.name + "Label").childNodes[2].innerHTML = "";
	}
}

function fillInContact(checkbox) {
	var fields = new Array("company","firstname","lastname","address","city","state","zip","phone","email");
	if (checkbox.checked == true) {
		for (var i = 0; i < fields.length; i++) {
			document.getElementById(fields[i]).value = document.getElementById(fields[i] + "Provided").value;
		}
	} else {
		for (var i = 0; i < fields.length; i++) {
			document.getElementById(fields[i]).value = "";
		}
	}
}

function siteDesc(place) {
	switch (place) {
		case "on":
			document.getElementById("sitedescArea").innerHTML="<table><tr><td>Building:</td><td><input type=\"text\" name=\"sitebuilding\" size=\"6\"/></td></tr><tr><td>Room:</td><td><input type=\"text\" name=\"siteroom\" size=\"6\"/></td></tr></table>";
			break;

		case "off":
			document.getElementById("sitedescArea").innerHTML="<table><tr><td>Street:</td><td><input type=\"text\" name=\"sitestreet\" size=\"6\"/></td></tr><tr><td>City:</td><td><input type=\"text\" name=\"sitecity\" size=\"6\"/></td></tr><tr><td>State:</td><td><input type=\"text\" name=\"sitestate\" size=\"2\"/></td></tr><tr><td>Zip:</td><td><input type=\"text\" name=\"sitezip\" size=\"5\"/></table>";
			break;

		case "int":
			document.getElementById("sitedescArea").innerHTML="<table><tr><td>City and Country:</td><td><input type=\"text\" name=\"sitecity\" size=\"6\"/></td></tr></table>";
			break;

		case "none":
			document.getElementById("sitedescArea").innerHTML="";
			break;
	}
}

