window.onload = initForms;





function initForms()


{


	for (var i=0; i< document.forms.length; i++)


	{	


		document.forms[i].onsubmit = function()


		{	return validForm(this.name);	}


	}


}





function validForm(formular)


{


	var allGood = true;


	var allTags = document.forms[formular].getElementsByTagName("*");





	for (var i=0; i<allTags.length; i++)


	{


		if(allTags[i].type=="text" || allTags[i].type=="textarea" || allTags[i].type=="select-one" || allTags[i].type=="checkbox" || allTags[i].type=="radio" || allTags[i].type=="password")


		{


			if (!validTag(allTags[i]))


			{	allGood = false;	}


		}


	}


	return allGood;





	function validTag(thisTag)


	{


		var outClass = "";


		var allClasses = thisTag.className.split(" ");


	


		for (var j=0; j<allClasses.length; j++)


		{	outClass += validBasedOnClass(allClasses[j]) + " ";	}


	


		thisTag.className = outClass;


	


		if (outClass.indexOf("invalid") > -1)


		{


			invalidLabel(thisTag.parentNode);


			thisTag.focus();


			if (thisTag.nodeName == "INPUT")


			{	thisTag.select();	}


			return false;


		}


		return true;


		


		function validBasedOnClass(thisClass)


		{


			var classBack = "";


		


			switch(thisClass)


			{


				case "":


				case "invalid":


					break;


				case "reqd":


					if(thisTag.type=="text" || thisTag.type=="textarea" || thisTag.type=="password" || thisTag.type=="select-one")


					{


						if (allGood && thisTag.value == "") classBack = "invalid ";


						classBack += thisClass;


					}


					if(thisTag.type=="checkbox")


					{


						if (allGood && thisTag.checked == false) classBack = "invalid ";


						classBack += thisClass;


					}


					break;


				case "radio":


					if (allGood && !radioPicked(thisTag.name)) classBack = "invalid ";


					classBack += thisClass;


					break;


				case "isNum":


					if (allGood && !isNum(thisTag.value)) classBack = "invalid ";


					classBack += thisClass;


					break;


				case "email":


					if (allGood && !validEmail(thisTag.value)) classBack = "invalid ";


					classBack += thisClass;


					break;


				default:


					if (allGood && !crossCheck(thisTag,thisClass)) classBack = "invalid ";


					classBack += thisClass;


			}


			return classBack;


		}


				


		function crossCheck(inTag,otherFieldID)


		{


			if (!document.getElementById(otherFieldID))


			{	return false;	}


			return (inTag.value != "" || document.getElementById(otherFieldID).value != "");


		}


		


		function radioPicked(radioName)


		{


			var radioSet = "";





			for (var k=0; k<document.forms.length; k++)


			{


				if (!radioSet)


				{	radioSet = document.forms[k][radioName];	}


			}


			if (!radioSet)


			{	return false;	}


			for (k=0; k<radioSet.length; k++)


			{


				if (radioSet[k].checked)


				{	return true;	}


			}


			return false;


		}


		


		


		function isNum(passedVal)


		{


			if (passedVal == "")


			{	return false;	}


			for (var k=0; k<passedVal.length; k++)


			{


				if (passedVal.charAt(k) < "0")


				{	return false;	}


				if (passedVal.charAt(k) > "9")


				{	return false;	}


			}


			return true;


		}


		


		function validEmail(email)


		{


			var invalidChars = " /:,;";


		


			if (email == "")


			{	return false;	}


			for (var k=0; k<invalidChars.length; k++)


			{


				var badChar = invalidChars.charAt(k);


				if (email.indexOf(badChar) > -1)


				{	return false;	}


			}


			var atPos = email.indexOf("@",1);


			if (atPos == -1)


			{	return false;	}


			if (email.indexOf("@",atPos+1) != -1)


			{	return false;	}


			var periodPos = email.indexOf(".",atPos);


			if (periodPos == -1)


			{	return false;	}


			if (periodPos+3 > email.length)


			{	return false;	}


			


			return true;


		}


		


		function invalidLabel(parentTag)


		{


			if (parentTag.nodeName == "LABEL")


			{	parentTag.className += " invalid";	}


		}


	}


	


}



