// JavaScript Document
var g_FocusElementStyle = "2px solid #000000";
var g_UnFocusElementStyle = "2px solid #cbcbcb";
var g_FocusBackColor = "#ffc";
var g_reEmail = /^[\w\.=-]+\@[\w\.-]+\.[a-z]{2,4}$/;
var g_invalidFields = 0;

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function addEventHandler(obj, evt, handler)
{
	if (obj.attachEvent != null)
	{
		obj.attachEvent("on"+evt, handler);
	}
	else if (obj.addEventListener != null)
	{
		obj.addEventListener(evt, handler, true);
	}
}

function getEventTarget(evt)
{
	var evtSource = null;
	if (typeof(window.event) != "undefined") {
		evtSource = window.event.srcElement;
	}
	else {
		evtSource = evt.target;
	}
	return evtSource;
}

function initFormElementsForFocus(sValidElems)
{
	var inputElems = document.getElementsByTagName('textarea');
	for (var i = 0; i < inputElems.length; i++) {
		addEventHandler(inputElems[i], 'focus', highlightFormElement);
		addEventHandler(inputElems[i], 'blur', unHighlightFormElement);
	}
	var inputElems = document.getElementsByTagName('input');
	for (var i = 0; i < inputElems.length; i++) {
		if (sValidElems.indexOf(inputElems[i].type) != -1) {
			addEventHandler(inputElems[i], 'focus', highlightFormElement);
			addEventHandler(inputElems[i], 'blur', unHighlightFormElement);
		}
	}
}

function initFormElementsForValidation()
{
	addEventHandler(document.forms[0].subject,'blur',validateSubject); 
	addEventHandler(document.forms[0].address,'blur',validateAddress); 
	addEventHandler(document.forms[0].message,'blur',validateMsg); 
}

function highlightFormElement(evt)
{
	var elem = getEventTarget(evt);
	if (elem != null) {
		elem.style.border = g_FocusElementStyle;
		elem.style.backgroundColor = g_FocusBackColor;
	}
}

function unHighlightFormElement(evt)
{
	var elem = getEventTarget(evt);
	if (elem != null) {
		elem.style.border = g_UnFocusElementStyle;
		elem.style.backgroundColor = "";
	}
}

function getLabelByID(idStr)
{
	var formLabels = document.getElementsByTagName('label');
	for (var i=0; i < formLabels.length; i++) {
		if (formLabels[i].getAttribute("htmlFor") == idStr)
			return formLabels[i];
	}
	return null;
}

function validateSubject()
{
	var formField = document.getElementById('subject');
	var ok = (formField.value != null && formField.value.length != 0);
	var theLabel = getLabelByID('subject');
	if (theLabel != null) {
		if (ok) {
			theLabel.className="validated";
		}
		else
			theLabel.className="invalid";
	}
	return ok;
}

function validateAddress()
{
	var formField = document.getElementById('address');
	var ok = (formField.value.length != 0 && g_reEmail.test(formField.value));
	var theLabel = getLabelByID('address');
	if (theLabel != null) {
		if (ok) {
			theLabel.className="validated";
		}
		else
			theLabel.className="invalid";
	}
	return ok;
}

function validateMsg()
{
	var formField = document.getElementById('message');
	var ok = (formField.value != null && formField.value.length != 0);
	var theLabel = getLabelByID('message');
	if (theLabel != null) {
		if (ok) {
			theLabel.className="validated";
		}
		else
			theLabel.className="invalid";
	}
	return ok;
}

function validateAllFields()
{
	// need to do it this way to make sure all the functions execute
	var ok = validateSubject();
	ok &= validateAddress();
	ok &= validateMsg();
	
	if (!ok)
		alert("The fields that are marked bold and red are required. Please supply valid\nvalues for these fields before sending.");
	
	document.MM_returnValue	= (ok == true);
}
