// JavaScript Document
function fRequiredElement(oElem)
{
	if (oElem)
	{
		return true;
	}
	return false;
}

function fValidZip(sZip)
{
	if (sZip)
	{
		var rZip = /^\d{5}(-\d{4})?$/;
		var bZip = rZip.exec(sZip);
		if (bZip != null)
		{
			return true;
		}
		rZip = null;
		bZip = null;
	}
	return false;
}

function fValidPhone(sPhone)
{
	if (sPhone)
	{
		var rPhone = /^((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}$/;
		var bPhone= rPhone.exec(sPhone);
		if (bPhone != null)
		{
			return true;
		}
		rPhone= null;
		bPhone = null;
	}
	return false;
}

function fValidEmail(sEmail)
{
	if (sEmail)
	{
		var rEmail = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
		var bEmail= rEmail.exec(sEmail);
		if (bEmail != null)
		{
			return true;
		}
		rEmail= null;
		bEmail = null;
	}
	return false;
}

function fresetForm()
{
	var frm = document.getElementsByTagName("FORM");
	for (var i = 0; i < frm.length; i++)
	{
		if (frm[i] == undefined)
		{
			continue;
		}
		
		var frmElm = frm[i].elements;
		for (var j = 0; j < frmElm.length; j++)
		{
			if (frmElm[j] == undefined || frmElm[j].type == undefined)
			{
				continue;
			}

			frmElm[j].style['background'] = '#fff';
			frmElm[j].style['color'] = '#000';
			frmElm[j].style['border'] = '1px solid #000';			
			switch(frmElm[j].name)
			{
				case "fName":
				case "lName":
				case "sAddr1":
				case "sCity":
				case "sEmail":
					frmElm[j].style['border'] = '1px solid #f00';
					 break;
				default: 
					break;
			}			
		}
	}
	return true;
}

function initForm()
{
	var frm = document.getElementsByTagName("FORM");
	for (var i = 0; i < frm.length; i++)
	{
		if (frm[i] == undefined)
		{
			continue;
		}
		
		frm[i].onsubmit = fCheck;
		frm[i].onreset = fresetForm;
		
		var frmElm = frm[i].elements;
		for (var j = 0; j < frmElm.length; j++)
		{
			if (frmElm[j] == undefined || frmElm[j].type == undefined)
			{
				continue;
			}

			frmElm[j].style['background'] = '#fff';
			frmElm[j].style['color'] = '#000';
			frmElm[j].style['border'] = '1px solid #000';			
			switch(frmElm[j].name)
			{
				case "fName":
					//alert(j + " fName");										
					frmElm[j].Required = fRequiredElement;
					frmElm[j].style['border'] = '1px solid #f00';
					 break;
				case "lName":
					//alert(j + " lName");
					frmElm[j].Required = fRequiredElement;
					frmElm[j].style['border'] = '1px solid #f00';
					 break;
				case "sAddr1":
					//alert(j + " sAddr1");
					frmElm[j].Required = fRequiredElement;
					frmElm[j].style['border'] = '1px solid #f00';
					 break;
				case "sAddr2":
					//alert(j + " sAddr2");
					 break;
				case "sCity":
					//alert(j + " sCity");
					frmElm[j].Required = fRequiredElement;
					frmElm[j].style['border'] = '1px solid #f00';
					 break;
				case "sState":
					//alert(j + " sState");
					 break;
				case "sZip":
					//alert(j + " sZip");
					frmElm[j].Validate = fValidZip;
					 break;
				case "sPhDay":
					//alert(j + " sPhDay");
					frmElm[j].Validate = fValidPhone;
					 break;
				case "sPhEve":
					//alert(j + " sPhEve");
					frmElm[j].Validate = fValidPhone;
					 break;
				case "sEmail":
					//alert(j + " sEmail");
					frmElm[j].Validate = fValidEmail;
					frmElm[j].Required = fRequiredElement;
					frmElm[j].style['border'] = '1px solid #f00';
					 break;
				case "sComment":
					//alert(j + " sComment");
					 break;
				default: 
					//alert(j + " default " + frmElm[j].name);
					break;
			}			
		}
	}
}

function fCheck()
{
	var frm = document.getElementsByTagName("FORM");
	var iInd = frm.length;
	var i = 0;
	var j = 0;
	var frmElm;
	var bValid = true;
	for (i = 0; i < iInd ; i++)
	{
		frmElm = frm[i].elements;
		for (j = 0; j < frmElm.length; j++)
		{
			if (frmElm[j] == undefined || frmElm[j].type == undefined)
			{
				continue;
			}			
			/* --------------- */
			frmElm[j].Valueinvalid = false;
			frmElm[j].ValueRequired = false;
			
			if (frmElm[j].Required)
			{
				if (frmElm[j].value)
				{
					if (frmElm[j].Required(frmElm[j].value) == false)
					{
						frmElm[j].ValueRequired = true;
					}
					
					if ((frmElm[j].Validate) && (frmElm[j].value))
					{
						if (frmElm[j].Validate(frmElm[j].value) == false)
						{
							frmElm[j].Valueinvalid = true;
						}
					}
				}
				else
				{
					frmElm[j].ValueRequired = true;
				}
			}
			else
			{
					if ((frmElm[j].Validate) && (frmElm[j].value))
					{
						if (frmElm[j].Validate(frmElm[j].value) == false)
						{
							frmElm[j].Valueinvalid = true;
						}
					}
			}
			
			frmElm[j].style['background'] = '#fff';
			frmElm[j].style['color'] = '#000';
			frmElm[j].style['border'] = '1px solid #000';			
			
			if (frmElm[j].Valueinvalid && frmElm[j].Valueinvalid == true)
			{
				frmElm[j].style['color'] = '#f00';
				frmElm[j].style['border'] = '1px solid #f00';
				bValid = false;
			}
			
			if (frmElm[j].ValueRequired && frmElm[j].ValueRequired == true)
			{
				frmElm[j].style['border'] = '1px solid #f00';
				bValid = false;
			}
			/* ============== */			
		}
	}
	//alert("Returning: " + bValid); 
	if (bValid == false)
	{
		alert("Validation failed. Please check the entries with red border");
	}
	
	return bValid;
}

window.onload = initForm;
window.onunload = function()
{
	var frm = document.getElementsByTagName("FORM");
	for (var i = 0; i < frm.length; i++)
	{
		if (frm[i] == undefined)
		{
			continue;
		}
		
		var frmElm = frm[i].elements;
		for (var j = 0; j < frmElm.length; j++)
		{
			if (frmElm[j].value)
			{
				frmElm[j].value = null;
			}
		}
	}
}