function validateForm(theForm)
{
	var i;		
	var errorString="";
	var crLf = "<br/>";
	var prefix = "";

	for(i=0; i<theForm.elements.length; i++)
	{
		if (theForm.elements[i].getAttribute("required"))
		{
			if (theForm.elements[i].value=="")
				errorString+= prefix+theForm.elements[i].getAttribute("required")+crLf;
		}

		if (theForm.elements[i].getAttribute("reg_exp"))
		{
			if (theForm.elements[i].value!="" && !match2RegExp(theForm.elements[i].value,theForm.elements[i].getAttribute("pattern")))
				errorString+= prefix+theForm.elements[i].getAttribute("reg_exp")+crLf;
		}

		if (theForm.elements[i].getAttribute("numeric"))
		{
			if (theForm.elements[i].value!="" && /*isNaN(theForm.elements[i].value)*/ !isFloat(theForm.elements[i].value))
				errorString+= prefix+theForm.elements[i].getAttribute("numeric")+crLf;
		}

		if (theForm.elements[i].getAttribute("date"))
		{
			if (theForm.elements[i].value!="" && !isDate(theForm.elements[i].value))
				errorString+= prefix+theForm.elements[i].getAttribute("date")+crLf;
		}

		if (theForm.elements[i].getAttribute("email"))
		{
			if (theForm.elements[i].value!="" && !isEmail(theForm.elements[i].value))
				errorString+= prefix+theForm.elements[i].getAttribute("email")+crLf;
		}

		if (theForm.elements[i].getAttribute("s_required"))
		{
			if (theForm.elements[i].options.length > 0)
			{
				var myindex = theForm.elements[i].selectedIndex;

				if (theForm.elements[i].options[myindex].value==0)
					errorString+= prefix+theForm.elements[i].getAttribute("s_required")+crLf;
			}
			else
				errorString+= prefix+theForm.elements[i].getAttribute("s_required")+crLf;
		}

		if (theForm.elements[i].getAttribute("ch_required"))
		{
			if (theForm.elements[i].checked==false)
				errorString+= prefix+theForm.elements[i].getAttribute("ch_required")+crLf;
		}

		if (theForm.elements[i].getAttribute("rd_required"))
		{
			if (errorString.indexOf(theForm.elements[i].getAttribute("rd_required")) == -1)
			{
				var radiobtn = eval('theForm.'+(theForm.elements[i].getAttribute('name')).toString());
				var k;
				var checked=false;

				//for(k=radiobtn.length-1; k > -1; k--)
				for(k=0; k<radiobtn.length; k++)
				{
					if (radiobtn[k].checked==true)
					{
						checked=true;
						break;
					}
				}
				if (checked==false)
				errorString+= prefix+theForm.elements[i].getAttribute("rd_required")+crLf;
			}
		}

		if(theForm.elements[i].getAttribute("grch_required"))
		{
			if (errorString.indexOf(theForm.elements[i].getAttribute("grch_required")) == -1)
			{
				var grpCHBname = theForm.elements[i].name
				var checkboxes = document.getElementsByName(grpCHBname);
				var checked2=false;
				var y;

				for(y=0; y<checkboxes.length; y++)
				{
					if (checkboxes[y].checked==true)
					{
						checked2=true;
						break;
					}
				}

				if (checked2==false)
				errorString+= prefix+theForm.elements[i].getAttribute("grch_required")+crLf;
			}
		}
	}

	if (errorString!="")
	{
		//alert(errorString);
		//messageBox(errorString);
		document.getElementById('frmResult').innerHTML = errorString;
		return false;
	}
	else
	return true;
}

function messageBox(errorString)
{
	if (document.getElementById("error_div"))
	{
		document.body.removeChild(document.getElementById("error_div"));
	}

	var div_box = document.createElement("div");
	div_box.id = "error_div";
	div_box.style.position = "absolute";
	div_box.style.left = "70px";
	div_box.style.top = "200px";
	div_box.style.zIndex  = 99;
	div_box.style.border = "1px orange solid";

	div_box.onBlur = function()
	{
		document.body.removeChild(document.getElementById("error_div"));
	}
	
	var tableO = document.createElement("table");
	tableO.bgColor = "#052e62";

	if (document.all)
	div_box.style.filter = 'alpha(opacity=85)';
	else
	{
		div_box.style.opacity = 0.85;
		div_box.style.MozBorderRadius = "8px";
		tableO.style.MozBorderRadius = "8px";
	}
	
	var tbodyO = document.createElement("tbody");
	var tr_header = document.createElement("tr");
	var td_header = document.createElement("td");
	td_header.style.padding = 6+"px";
	td_header.style.fontFamily = "Verdana,Tahoma";
	td_header.style.fontSize = 13;
	td_header.innerHTML = "<b>[.:: A l e r t ::.]</b>";
	td_header.align = "center";
	td_header.style.color="orange";
	td_header.style.borderBottom = "1px orange solid";
	tr_header.appendChild(td_header);
	tbodyO.appendChild(tr_header);
	var tr_msg = document.createElement("tr");
	var td_msg = document.createElement("td");
	td_msg.style.padding = 6+"px";
	td_msg.style.color = "#B2D0F9";
	td_msg.style.fontFamily = "Verdana,Tahoma";
	td_msg.style.fontSize = "11";
	td_msg.innerHTML = "<b>"+errorString+"</b>";
	tr_msg.appendChild(td_msg);
	tbodyO.appendChild(tr_msg);
	var tr_btn = document.createElement("tr");
	var td_btn = document.createElement("td");
	td_btn.align="center";
	var btnOK = document.createElement("input");
	btnOK.type = "button";
	btnOK.style.paddingLeft = 9+"px";
	btnOK.style.paddingRight = 9+"px";
	btnOK.style.backgroundColor = "#669CCB";
	btnOK.style.border = "1px orange solid";
	btnOK.style.color="#FFFFFF";
	btnOK.value = "OK";

	btnOK.onclick = function()
	{
		document.body.removeChild(document.getElementById("error_div"));
	}

	td_btn.appendChild(btnOK);
	tr_btn.appendChild(td_btn);
	tbodyO.appendChild(tr_btn);
	tableO.appendChild(tbodyO);
	div_box.appendChild(tableO);
	document.body.appendChild(div_box);

	if (document.all)
	{
		var x = (document.body.clientWidth - div_box.offsetWidth)/2;
		var y = (document.body.clientHeight - div_box.offsetHeight)/2;
	}
	else
	{
		var x = (window.innerWidth - div_box.offsetWidth)/2;
		var y = (window.innerHeight - div_box.offsetHeight)/2;
	}

	div_box.style.left = (x-270)+"px";
	div_box.style.top =  y+"px";
}

function isDate(strValue)
{
	var regExp = /^\d{4}\-\d{2}\-\d{2}$/;
	if (regExp.test(strValue))
	return true;
	return false;
}

function isEmail(strValue)
{
	var regExp = /^([\w-_]+)(.[\w-_]+)*@([\w-_]+)(.[\w]{2,3})$/;
	if (regExp.test(strValue))
	return true;
	return false;
}

function isFloat(strValue)
{
	var regExp = /^([\d]+)(.[\d]+)?$/;
	if (regExp.test(strValue))
	return true;
	return false;
}

function match2RegExp(strValue,pattern)
{
	var regExp = pattern;
	if (eval(regExp).test(strValue))
	return true;
	return false;
}