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.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 checkfield(field_id, err_msg){
	if (document.getElementById(field_id).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"));
		}
		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;
	}
	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;
	}
}

function exec_app_checkform(){
	var fields_checked = true;
	if(!checkfield("firstname", "Please fill in your first name")) {fields_checked = false;}
	if(!checkfield("lastname", "Please fill in your last name")) {fields_checked = false;}
	if(!checkfield("studentnumber", "Please fill in your student number", "number")) {fields_checked = false;}
	if(!checkfield("email", "Please fill in your email address", "email")) {fields_checked = false;}
	if(!checkfield("membernumber", "IEEE membership is required", "number")) {fields_checked = false;}
	if(!checkfield("position", "Please fill in your desired position")) {fields_checked = false;}
	if(!checkfield("why", "Please fill in your reason for joining us")) {fields_checked = false;}
	if(!checkfield("qualification", "Please write down your qualification")) {fields_checked = false;}
	if(!checkfield("plan", "Please write down your plans")) {fields_checked = false;}
	if(fields_checked){
		document.getElementById("exec_app_form").submit();
	}else{
		alert("Please fill out all required fields!");
	}
}

function contact_checkform(){
	var fields_checked = true;
	if(!checkfield("from", "Please fill in your name")) {fields_checked = false;}
	if(!checkfield("email", "Please fill in your email address", "email")) {fields_checked = false;}
	if(!checkfield("subj", "Please fill in the subject")) {fields_checked = false;}
	if(!checkfield("message", "Please fill in the message body")) {fields_checked = false;}
	if(fields_checked){
		document.getElementById("contact_form").submit();
	}else{
		alert("Please fill out all required fields!");
	}
}