// Format of function call:
// onClick="frm_valid('link_title','','R','page_title','','RisEmail','textfield3','','NisNum','textfield32','','RinRange10:200');return document.frm_valid_return">


function findObj(n, d)
{
	var p,i,x;

	if(!d)
		d=document;

	if((p=n.indexOf("?"))>0&&parent.frames.length)
	{
		d=parent.frames[n.substring(p+1)].document;
		n=n.substring(0,p);
	}

	if(!(x=d[n])&&d.all)
		x=d.all[n];

	for (i=0;!x&&i<d.forms.length;i++)
		x=d.forms[i][n];

	for(i=0;!x&&d.layers&&i<d.layers.length;i++)
		x=findObj(n,d.layers[i].document);

	if(!x && document.getElementById)
		x=document.getElementById(n);

	return x;
}


function frm_valid()
{
	var i,p,q,nm,test,num,min,max,errors='',args=frm_valid.arguments, field_name='';
	var cnd_req_nam	= new Array(2);
	var cnd_req_val	= new Array(2);
	var cnd_count	= 0;
	var frm_number	= args[0];
	
	if (args[1])
		var errors_received	= args[1];
	
	for (i=2; i<(args.length-2); i+=3)
	{
		test=args[i+2];
		val=findObj(args[i]);
		//if (focus_field == '') focus_field = val;

		if (val)
		{
			nm = val.title;
			field_name = val;
			
			// If field contains a value
			// -------------------------
			if ((val=val.value)!="")
			{
				// If this is a E-mail field
				// -------------------------
				if (test.indexOf('isEmail')!=-1)
				{
					at	= val.indexOf('@');
					dot	= val.indexOf('.');

					// If e-mail is invalid
					// --------------------
					if (
						at < 1 ||
						at > (val.length - 3) ||
						dot < 1 ||
						dot > (val.length - 2)
						//at == dot + 1 ||
						//dot == at + 1 ||

					   )
						errors+='- '+nm+' must contain a valid e-mail address.\n';
				}
				// If this is a Numeric field
				// --------------------------
				else if (test.indexOf('isNum')!=-1)
				{
					// If value is not numeric
					// -----------------------
					if (isNaN(val))
						errors+='- '+nm+' must contain a number.\n';
				}
				// If this is a Range Numeric field
				// --------------------------------
				else if (test.indexOf('inRange') != -1)
				{
					p	=test.indexOf(':');
					min	=test.substring(8,p);
					max	=test.substring(p+1);

					// If value is not in range
					// ------------------------
					if (val<min || max<val)
						errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
				}
				
				// If this is a Password field
				// ---------------------------
				if (test.indexOf('Confirm')!=-1)
				{
					// If passwords don't match
					// ------------------------
					frm_name = "form" + frm_number;
					primary_field = "document." + frm_name + "." + field_name.name + ".value";
					confirm_field = "document." + frm_name + "." + field_name.name + "_confirm.value";
					primary_title = "document." + frm_name + "." + field_name.name + ".title";
					confirm_title = "document." + frm_name + "." + field_name.name + "_confirm.title";
					
					if (eval(primary_field) != eval(confirm_field))
						errors+= '- ' + eval(primary_title) + ' and ' + eval(confirm_title) + ' don\'t match.\n';
				}
			}
			// If field doesn't contain a value but it is a required field
			// -----------------------------------------------------------
			else if (test.charAt(0) == 'R')
			{
				errors += '- '+nm+' is a required field.\n';
			}
			
			if (test.charAt(0) == 'O')
			{
				cnd_req_nam[cnd_count] = nm;
				cnd_req_val[cnd_count] = val;
				cnd_count++;
			}	
		}
	}
	
	if (cnd_count != 0)
	{
		cnd_error_gen = 1;
		for (cnt_arr = 0; cnt_arr < (cnd_count); cnt_arr++)
		{
			if (cnd_req_val[cnt_arr] != "")
				cnd_error_gen = 0;
		}
	
		if (cnd_error_gen == 1)
		{
			errors += '- One of the following fields are required:\n';
			
			for (cnt_arr = 0; cnt_arr < (cnd_count); cnt_arr++)
			{
				if (cnd_req_nam != "")
					errors += '    - ' + cnd_req_nam[cnt_arr] + '\n';
			}
		}
	}
	
	if (errors_received)
		errors += errors_received;
	
	if (errors)
	{
		alert('Please Note:\n\n'+errors);
		//focus_field.focus();
	}
	
	document.frm_valid_return = (errors == '');
}
