// Important Validation Types	REQ, ISNUM, ISDESI, ISEMAIL, ISRANGE 	
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Limitations of the Validation code is that we can only use this code in Single driven form per page.
///////////////////////////////////////////////////////////////////////////////////////////////////////

var arr = new Array();
var valarr = new Array();
var isFalse = 0;
var radioCheck = false;
var chekbobChek = false;
var fs = null;
function checkValidate(formindex)
{
	var curEle = "";
	for(var i=0;i<document.forms[formindex].elements.length;i++)
	{
		curEle = document.forms[formindex].elements[i];
		if(curEle.getAttribute("SanObj"))
		{
			arr.push(i);
			var pNode = curEle.parentNode;
			pNode.innerHTML+="<span id=\"aValidate"+i+"\" class=\"ColorRedHide\">&nbsp;</span>";
		}
	}
	checkEleType(formindex);
	document.forms[formindex].onsubmit = function (){ return autoValidate(formindex);	}	
}

function checkEleType(formindex)
{
	var n = -1;
	for(var i=0;i<(arr.length);i++)
	{
		var j = arr[i];
		var curEle =document.forms[formindex].elements[j];
		if((curEle.type=='radio')||(curEle.type=='checkbox'))
		{
			n++;
			valarr[n] = j;
			var itemname = curEle.name;
			valarr[n] = new Array();
			var chkEle = "";
			var rc = 0;
			for(var k=0;k<document.forms[formindex].elements.length;k++)
			{
				chkEle = document.forms[formindex].elements[k];
				
				if(((chkEle.type=="radio")||(chkEle.type=='checkbox'))&&(chkEle.name==itemname))
				{
					valarr[n][rc] =k;
					rc++;
				}				
			}
		}
	}
}
function resetErrorControls()
{
	for(var i=0;i<(arr.length);i++)
	{
		if(document.getElementById('aValidate'+arr[i])!=null)
		{
			document.getElementById('aValidate'+arr[i]).className = 'ColorRedHide';
		}
	}
}
function autoValidate(formindex)
{
	isFalse = 0;
	var n = -1;
	fs = null;
	if(arr.length>0)
	{
		resetErrorControls();
		
		for(var i=0;i<(arr.length);i++)
		{
			var j = arr[i];
			var type =document.forms[formindex].elements[j].type;
			if(type=="radio" || type=="checkbox")
			{			
				n++;
				radioCheckSelect(formindex,n,j);	
			}
			else
			{
				if(type=="text" || type=="select-one" || type=="textarea" || type=="password")
				{
					checkText(formindex,j);
				}
			}
		}
		if(isFalse>0)
		{
			document.forms[formindex].elements[fs].focus();
			return false;
		}
	}
}
function radioCheckSelect(formindex, ei, aei)
{	
	if(valarr[ei].length>0)
	{ 
		var t=0;
		var ctrlType = "";
		for(var m=0; m<valarr[ei].length;m++)
		{
			var eele = valarr[ei][m];
			if(m==0){
				ctrlType =document.forms[formindex].elements[eele].type; 	
			}
			if(document.forms[formindex].elements[eele].checked==true)
			{	t++;	}
		}
		if(t==0)
		{
			var errControl = document.getElementById('aValidate'+aei);
			if(ctrlType=='radio')
				errControl.innerHTML = "Select atleast One";
			else
				errControl.innerHTML = "Select atleast One";
				
			errControl.className = 'ColorRed';
			if(fs == null){	fs = eele;	}
			isFalse++;	
		}
	}
}
function errorEvaluate(formindex, eleindex, ertype)
{
	var email = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	var numcheck = /^([0-9]+)$/;
	var decicheck = /^([0-9]*\.[0-9]+|[0-9]+)$/;
	var eid = document.forms[formindex].elements[eleindex];
	var errControl = document.getElementById('aValidate'+eleindex);
	var rv = 0;
	var ll = 0;
	var ul = 0;
	var rValue =0; 
	if(ertype.indexOf("ISRANGE")> -1)
	{
		var etypeArr = ertype.split("/");
		ertype = etypeArr[0];
		ll =  etypeArr[1];
		ul =  etypeArr[2];
	}
	switch(ertype)
	{
		case 'REQ' :
			if(eid.value=="")
			{
				errControl.innerHTML = "Required";
				errControl.className = 'ColorRed';
				if(fs == null){	fs = eleindex;	}
				isFalse++;
				rv++;
			}
			break;
		case 'ISNUM' :
			if(!eid.value.match(numcheck))
			{
				errControl.innerHTML = "Enter Numeric";
				errControl.className = 'ColorRed';
				if(fs == null){	fs = eleindex;	}
				isFalse++;
				rv++;
			}
			break;
		case 'ISRANGE' :
			rValue = eid.value.length;
			if(ll==ul)
			{
				if(rValue!=ll)
				{
					errControl.innerHTML = ll+" digits Only";
					errControl.className = 'ColorRed';
					if(fs == null){	fs = eleindex;	}
					isFalse++;
					rv++;
				}
			}
			else
			{
				if((rValue<ll)||(rValue>ul)){
					errControl.innerHTML = ll+" to "+ul+" digits Only";
					errControl.className = 'ColorRed';
					if(fs == null){	fs = eleindex;	}
					isFalse++;
					rv++;
				}
			}
			break;
		case 'ISDESI' :
			if(!eid.value.match(decicheck))
			{
				errControl.innerHTML = "Invalid (e.g. '0.0')";
				errControl.className = 'ColorRed';
				if(fs == null){	fs = eleindex;	}
				isFalse++;
				rv++;
			}
			break;
		case 'ISEMAIL' :
			if(!eid.value.match(email))
			{
				errControl.innerHTML = "Invalid email";
				errControl.className = 'ColorRed';
				if(fs == null){	fs = eleindex;	}
				isFalse++;
				rv++;
			}
			break;
		case 'ISRANGE' :
		
			break;		
	}
	return rv;
}

function checkText(formindex,eleindex)
{
	
	var validtypeArr = document.forms[formindex].elements[eleindex].getAttribute("SanObj");
	var eid = document.forms[formindex].elements[eleindex].id;
	var validtype = validtypeArr.split('#');
	var retValid =	0;
	for(q=0; q<validtype.length;q++)
	{
		if(retValid==0)
			retValid = errorEvaluate(formindex, eleindex, validtype[q]);
	}
}
