function insertAfter(element_type, target, new_id){
	var new_element = document.createElement(element_type);
	var target_element = document.getElementById(target);
	new_element.setAttribute("id", new_id);
	switch (element_type){
		case "div":
			if(arguments[3] != undefined){
				new_element.style.color = "#FF0000";
				new_element.style.display = "inline";
				new_element.innerHTML = arguments[3];
				target_element.parentNode.insertBefore(new_element, target_element.nextSibling);
			}
			break;
		case "img":
			if(arguments[3] != undefined && arguments[4] != undefined &&arguments[5] != undefined){
				new_element.style.display = "inline";
				new_element.src = arguments[3];
				new_element.width = arguments[4];
				new_element.height = arguments[5];
				target_element.parentNode.insertBefore(new_element, target_element.nextSibling);
			}
			break;
		default:
			target_element.parentNode.insertBefore(new_element, target_element.nextSibling);
			break;
	}
}

function insertBefore(element_type, target, new_id){
	var newelement = document.createElement("div");
	var currentelement = document.getElementById(element);
	newelement.setAttribute("id", new_id);
	switch (element_type){
		case "div":
			if(arguments[3] != undefined){
				new_element.style.display = "inline";
				new_element.innerHTML = arguments[3];
				target_element.parentNode.insertBefore(new_element, target_element);
			}
			break;
		case "img":
			if(arguments[3] != undefined && arguments[4] != undefined &&arguments[5] != undefined){
				new_element.style.display = "inline";
				new_element.src = arguments[3];
				new_element.width = arguments[4];
				new_element.height = arguments[5];
				target_element.parentNode.parentNode.insertBefore(new_element, target_element);
			}
			break;
		default:
			target_element.parentNode.insertBefore(new_element, target_element);
			break;
	}
}

function append_error(field_id, err_msg){
	if (document.getElementById(field_id + "_warning") == undefined){
		document.getElementById(field_id).style.backgroundColor = "#FFCCCC";
		insertAfter("div", field_id, field_id + "_warning", err_msg);
		insertAfter("img", field_id, field_id + "_warningimg", "/images/exclamation.png", 16, 16);
		insertAfter("br", field_id, field_id + "_break");
	}
}

function delete_error(field_id){
	if (document.getElementById(field_id + "_warning") != undefined){
		document.getElementById(field_id).style.backgroundColor = "#FFFFFF";
		document.getElementById(field_id).parentNode.removeChild(document.getElementById(field_id+"_warning"));
		document.getElementById(field_id).parentNode.removeChild(document.getElementById(field_id+"_warningimg"));
		document.getElementById(field_id).parentNode.removeChild(document.getElementById(field_id+"_break"));
	}
}

function checkfield(field_id, err_msg){
	if (document.getElementById(field_id).type == "radio"){
		radio_choice = false
		var radios = document.getElementsByName(document.getElementById(field_id).name);
		for (counter = 0; counter < radios.length; counter++)
			if (radios[counter].checked)
				radio_choice = true;
		if (!radio_choice){
			append_error(radios[radios.length-1].id + "_text", err_msg);
			return false;
		}else{
			delete_error(radios[radios.length-1].id + "_text");
			return true;
		}
	}else{
		if (document.getElementById(field_id).value == ""){
			append_error(field_id, err_msg);
			return false;
		}else{
			delete_error(field_id);
			if (arguments[2] != undefined){
				if (validatefield(field_id, arguments[2], document.getElementById(field_id).value)){
					return true;
				}else{
					return false;
				}
			}else{
				return true
			}
		}
	}
}

function validatefield(field_id, type, value){
	switch (type){
		case "email":
			var regEx = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
			var err_msg = "please enter a valid email address";
			break;
		case "phone":
			var regEx = /^\(\d\d\d\) \d\d\d-\d\d\d\d$/;
			var err_msg = "please enter a valid phone number";
			break;
		case "number":
			var regEx = /^[0-9]+$/;
			var err_msg = "please enter a valid number";
			break;
		case "studentid":
			var regEx = /^[0-9]{8}$/;
			var err_msg = "please enter a valid student ID";
			break;
	}
	if(!regEx.test(value)) {
		if (document.getElementById(field_id + "_warning") == undefined){
			document.getElementById(field_id).style.backgroundColor = "#FFCCCC";
			insertAfter("div", field_id, field_id + "_warning", err_msg);
			insertAfter("img", field_id, field_id + "_warningimg", "/images/exclamation.png", 16, 16);
			insertAfter("br", field_id, field_id + "_break");
		}
		return false;
	}else{
		if (document.getElementById(field_id + "_warning") != undefined){
			document.getElementById(field_id).style.backgroundColor = "#FFFFFF";
			document.getElementById(field_id).parentNode.removeChild(document.getElementById(field_id+"_warning"));
			document.getElementById(field_id).parentNode.removeChild(document.getElementById(field_id+"_warningimg"));
			document.getElementById(field_id).parentNode.removeChild(document.getElementById(field_id+"_break"));
		}
		return true;
	}
}

