
/*what type of browser do we have then ?*/
var requester = new Requester();
if (requester.isAvailable())
{
	/* Add styles for XMLHR capable browsers */
	setStylesheet("XMLHR", false, false);
	schedule("window", initXMLHR);
}
schedule("window", init);


/* Validate form before sending */
function checkForm()
{
	var firstError = null;
	/* new entries here */
	var firstname = document.getElementById("firstname") ;
	var surname = document.getElementById("surname") ;
	var jobtitle = document.getElementById("jobtitle") ;
	/* end new entries */
	var submit = document.getElementById("submit");
	var validationArray = new Array();

	validationArray.push(firstname);
	validationArray.push(surname);
	validationArray.push(jobtitle);

	for (var i = 0; i < validationArray.length; i++)
	{
		if (!validationArray[i].valid)
		{
			validationArray[i].onchange();

			if (!validationArray[i].valid)
			{
				message(validationArray[i], "errorMessage", "Please enter a valid " + validationArray[i].title);

				if (firstError == null)
				{
					firstError = validationArray[i];
				}
			}
		}
	}

	if (firstError != null)
	{
		try
		{
			firstError.focus();
		}
		catch (error)
		{
		}

		return false;
	}

	/* Send information via XMLHR */
	if (requester.isAvailable())
	{
		//don't need this as we are not sending anything here
		/*var CGIString = "receipt=" + receipt.value + "&name=" + name.value + "&email=" + email.value;
		submit.className = submit.className.addClass("loading");
		submit.value = "Contacting server";
		requester.setAction(sentForm);
		requester.loadURL("send.php", CGIString);

		return false;*/
	}

	return true;
}




/* Initialisation for JS capable browsers */
function init()
{
	var firstname = document.getElementById("firstname") ;
	var surname = document.getElementById("surname") ;
	var jobtitle = document.getElementById("jobtitle") ;
	var submit = document.getElementById("submit");
	var registration_form = document.getElementById("registration_form") ;
	var address1 = document.getElementById("address1") ;
	var towncity = document.getElementById("towncity")
	var postcode = document.getElementById("form_postcode") ;
	var email = document.getElementById("email") ;


	email.onkeyup = onkeyupEmail;
	email.onchange = onchangeEmail;
	email.onblur = onchangeEmail;
	firstname.onkeyup = onkeyupName;
	firstname.onchange = onchangeName;
	firstname.onblur = onchangeName;
	surname.onkeyup = onkeyupName;
	surname.onchange = onchangeFamilyName;
	surname.onblur = onchangeFamilyName;
	jobtitle.onkeyup = onkeyupName;
	jobtitle.onchange = onchangeJobTitle;
	jobtitle.onblur = onchangeJobTitle;
	address1.onkeyup = onkeyupName;
	address1.onchange = onchangeAddress1;
	address1.onblur = onchangeAddress1;
	towncity.onkeyup = onkeyupName;
	towncity.onchange = onchangeTownCity;
	towncity.onblur = onchangeTownCity;
	postcode.onkeyup = onkeyupName;
	postcode.onchange = onchangePostCode;
	postcode.onblur = onchangePostCode;

	registration_form.onsubmit = checkForm;

	return true;
}


/* Initialisation for XMLHR capable browsers */
function initXMLHR()
{
	/*don't need to worry about this too much as 
	we are not using the ajax component here */
	var firstname = document.getElementById("firstname") ;
	var surname = document.getElementById("surname") ;
	var jobtitle = document.getElementById("jobtitle") ;

	/* address 1, towncity, postcode */

	firstname.defaultValue = firstname.value;
	surname.defaultValue = surname.value;
	jobtitle.defaultValue = jobtitle.value;

	return true;
}


/* Insert/clear message next to form element */
function message(element, classString, errorMessage)
{
	if (element.message != null)
	{
		try
		{
			element.message.className = "";
			element.message.removeChild(element.message.childNodes[0]);
		}
		catch (error)
		{
		}
	}

	if (errorMessage != null)
	{
		if (element.message == null)
		{
			var messageDiv = document.createElement("div");

			element.message = element.parentNode.insertBefore(messageDiv, element);
			element.message.style.marginLeft = parseInt(element.scrollWidth) + 10 + "px";
		}

		element.message.className = classString;
		element.message.appendChild(document.createTextNode(errorMessage));
	}

	return true;
}


function onchangeEmail(field)
{
	if (field == "[object Event]" || field == null)
	{
		field = this;
	}

	if (!field.value.isValidEmail())
	{
		field.valid = false;
		message(field, "errorMessage", "Please enter a valid e-mail address");
		field.className = field.className.addClass("error");
	}
	else
	{
		field.valid = true;
		message(field);
		field.className = field.className.removeClass("error");
	}

	return true;
}


function onchangeMessage()
{
	var previewSpan = document.getElementById("previewSpan");

	if (this.value == "")
	{
		this.valid = false;
		message(this, "errorMessage", "Please enter a valid message");
		this.className = this.className.addClass("error");
	}
	else
	{
		this.valid = true;
		message(this);
		this.className = this.className.removeClass("error");
	}

	previewSpan.childNodes[0].nodeValue = this.value;

	return true;
}

function onchangeName(field)
{
	if (field == "[object Event]" || field == null)
	{
		field = this;
	}

	if (field.value == "")
	{
		field.valid = false;
		message(field, "errorMessage", "First name missing");
		field.className = field.className.addClass("error");
	}
	else
	{
		field.valid = true;
		message(field);
		field.className = field.className.removeClass("error");
	}

	return true;
}

function onchangeFamilyName(field)
{
	if (field == "[object Event]" || field == null)
	{
		field = this;
	}

	if (field.value == "")
	{
		field.valid = false;
		message(field, "errorMessage", "Family name missing");
		field.className = field.className.addClass("error");
	}
	else
	{
		field.valid = true;
		message(field);
		field.className = field.className.removeClass("error");
	}

	return true;
}

function onchangeJobTitle(field)
{
	if (field == "[object Event]" || field == null)
	{
		field = this;
	}

	if (field.value == "")
	{
		field.valid = false;
		message(field, "errorMessage", "Job title missing");
		field.className = field.className.addClass("error");
	}
	else
	{
		field.valid = true;
		message(field);
		field.className = field.className.removeClass("error");
	}

	return true;
}

function onchangeAddress1(field)
{
	if (field == "[object Event]" || field == null)
	{
		field = this;
	}

	if (field.value == "")
	{
		field.valid = false;
		message(field, "errorMessage", "First line of address missing");
		field.className = field.className.addClass("error");
	}
	else
	{
		field.valid = true;
		message(field);
		field.className = field.className.removeClass("error");
	}

	return true;
}

function onchangeTownCity(field)
{
	if (field == "[object Event]" || field == null)
	{
		field = this;
	}

	if (field.value == "")
	{
		field.valid = false;
		message(field, "errorMessage", "Town or city missing");
		field.className = field.className.addClass("error");
	}
	else
	{
		field.valid = true;
		message(field);
		field.className = field.className.removeClass("error");
	}

	return true;
}

function onchangePostCode(field)
{
	if (field == "[object Event]" || field == null)
	{
		field = this;
	}

	if (field.value == "")
	{
		field.valid = false;
		message(field, "errorMessage", "Postcode missing");
		field.className = field.className.addClass("error");
	}
	else
	{
		field.valid = true;
		message(field);
		field.className = field.className.removeClass("error");
	}

	return true;
}

function onkeyupEmail()
{
	if (this.message != null && this.message.className.classExists("errorMessage"))
	{
		if (!this.value.isValidEmail())
		{
			this.valid = false;
			message(this, "errorMessage", "Please enter a valid e-mail address");
			this.className = this.className.addClass("error");
		}
		else
		{
			this.valid = true;
			message(this);
			this.className = this.className.removeClass("error");
		}
	}

	return true;
}


function onkeyupMessage()
{
	var previewSpan = document.getElementById("previewSpan");

	if (this.value == "")
	{
		this.valid = false;
	}
	else
	{
		this.valid = true;
		message(this);
		this.className = this.className.removeClass("error");
	}

	previewSpan.childNodes[0].nodeValue = this.value;

	return true;
}


function onkeyupName()
{
	if (this.value == "")
	{
		this.valid = false;
	}
	else
	{
		this.valid = true;
		message(this);
		this.className = this.className.removeClass("error");
	}

	return true;
}