function validate(form)

{

	var errFields = Array();

	var MailFields = Array();

	var NumberFields = Array();

	var fieldAr = Array();

	for (var i = 0; i < form.elements.length; i++)

	{

	    var field = form.elements[i];

		if (field.required && field.value == "")

		{

			errFields.push(field.text);

			fieldAr.push(field);

		}

		if (field.isMail)

			MailFields.push(field);

			

		if (field.isNumber)

			NumberFields.push(field);

	}



	var strMessage = "";



	if (errFields.length > 0)

	{

	    strMessage = "Please complete the following fields \nbefore submitting this form: \n\n";

     	for (var i in errFields)

     	{

     		strMessage += "   - " + errFields[i] + "\n";

     	}

		alert(strMessage);

        //focus element

        fieldAr[0].focus();

        

		return false;

	}

	strMessage = "Some fields have incorrect values:\n\n";



	if (NumberFields.length > 0)

	{

		for (var i in NumberFields)

		{

			var field = NumberFields[i];

			if (!bIsNumber(field.value))

			{

				errFields.push("   - " + field.text + " must be a number\n");

				fieldAr.push(field);

			}			

		}	

	}



	if (MailFields.length > 0)

	{

		for (var i in MailFields)

		{

			if (!checkEmail(MailFields[i]))

			{

				errFields.push("   - " + MailFields[i].text + " must contain @ symbol\n");

				fieldAr.push(MailFields[i]);

			}

		}

	}



	if (errFields.length > 0)

	{

		for (var i in errFields)

		{

			strMessage += errFields[i];

		}

        alert(strMessage);

        //focus element

        fieldAr[0].focus();

		return false;

	}



    //checking for www or http

	for (var i = 0; i < form.elements.length; i++)

	{

	    var field = form.elements[i];

	    if (field.text != undefined && !checkForSpam(field.value))

		{

			errFields.push(field.text);

			fieldAr.push(field);

		}

	}



	strMessage = "To help prevent spam the following fields cannot contain web addresses or links:\n\n";

	if (errFields.length > 0)

	{

		for (var i in errFields)

		{

			strMessage += "   - " + errFields[i] + "\n";

		}

		alert(strMessage);

        //focus

        fieldAr[0].focus();

		return false;

	}	



	return true;

}



function checkForSpam(val)

{

	var re = /.*(www|http).*/i;

	if (val.match(re))

		return false;



	return true;

}



function checkEmail(element)

{

	var re = /^[a-zA-Z0-9.]+@[a-zA-Z0-9.]+\.[a-zA-Z]{2,}$/;

	if (element.value.match(re) != null)

		return true;



	return false;

}



function bIsNumber(val)

{

	if (val.match(/^[0-9]+$/))

		return true;

		

	return false;

}
