﻿// Error Check Functions
function EC_name()
	{
	var obj 	= document.getElementById('name');
	var div 	= obj.parentNode;
	var value 	= obj.value;
	if(/^[a-zA-Z\s\'\.]{1,100}$/.test(value) == false)
		{
		obj.onkeyup = function(){EC_name();}
		addError(obj.getAttribute('id'),'The Name field is invalid, empty, or too long.');
		div.className = "showError";
		return true;
		}
	else
		{
		obj.onkeyup = null;
		removeError(obj.getAttribute('id'));
		div.className = "hideError";
		return false;
		}
	}
function EC_e_mail()
	{
	var obj 	= document.getElementById('e_mail');
	var div 	= obj.parentNode;
	var value 	= obj.value;
	if(/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[_a-z0-9-]+)*(\.[_a-z0-9-]{2,3})$/i.test(value) == false)
		{
		obj.onkeyup = function(){EC_e_mail();}
		addError(obj.getAttribute('id'),'The E-Mail field contains an invalid e-mail address or is empty.');
		div.className = "showError";
		return true;
		}
	else
		{
		obj.onkeyup = null;
		removeError(obj.getAttribute('id'))
		div.className = "hideError";
		return false;
		}
	}
function EC_subject()
	{
	var obj 	= document.getElementById('subject');
	var div 	= obj.parentNode;
	var value 	= obj.value;
	if(/^(.){1,100}$/.test(value) == false)
		{
		obj.onkeyup = function(){EC_subject();}
		addError(obj.getAttribute('id'),'The Subject field is invalid, empty, or too long.');
		div.className = "showError";
		return true;
		}
	else
		{
		obj.onkeyup = null;
		removeError(obj.getAttribute('id'));
		div.className = "hideError";
		return false;
		}
	}
function EC_message()
	{
	var obj 	= document.getElementById('message');
	var div 	= obj.parentNode;
	var value 	= obj.value;
	if(/^(.|\s){1,2000}$/.test(value) == false)
		{
		obj.onkeyup = function(){EC_message();}
		addError(obj.getAttribute('id'),'The Message field is empty or too long.');
		div.className = "showError";
		return true;
		}
	else
		{
		obj.onkeyup = null;
		removeError(obj.getAttribute('id'));
		div.className = "hideError";
		return false;
		}
	}
// Add error to list
function addError(name,error)
	{
	var div 		= document.getElementById('errors_div');
	var list 		= document.getElementById('errors_list');
	var num_errors	= list.childNodes.length
	// Check if error is already displayed
	if(num_errors > 0)
		{
		for(var i=0;i<num_errors;i++)
			{
			var current_obj = list.childNodes[i];
			if(current_obj.firstChild.nodeValue == error)
				{
				return false; // Exit
				}
			}
		}
	if(list.childNodes.length == 0)
		{
		div.className = 'showErrors';
		}
	
	var LI = document.createElement('li');
	LI.className = 'errorType_'+name;
	var TEXT = document.createTextNode(error);
	LI.appendChild(TEXT);
	list.appendChild(LI);
	}

// Remove error from list
function removeError(name)
	{
	var div 		= document.getElementById('errors_div');
	var list 		= document.getElementById('errors_list');
	var num_errors 	= list.childNodes.length
	for(var i=0;i<num_errors;i++)
		{
		var current_obj = list.childNodes[i];
		if(current_obj.className == 'errorType_' + name)
			{
			list.removeChild(current_obj);
			break;
			}
		}
	if(list.childNodes.length == 0)
		{
		div.className = 'hideErrors';
		}
	}
// Form Submit / Error Check
function submitMessage()
	{
	var errors = 0;
	EC_name()? errors++ : null;
	EC_e_mail()? errors++ : null;
	EC_subject()? errors++ : null;
	EC_message()? errors++ : null;
	if(errors == 0)
		{
		document.getElementById('contact').submit();
		}
	else
		{
		alert('Please scroll up and correct the fields bordered in red.');
		return false;
		}
	}
