/*******************************************************************************************************************************

	Author : Kailash Agrawal

	Modified and updated by : Soumya Roy

	Copyright: POKROK Technologies Ltd 2005.

******************************************************************************************************************************/



/*******************************************************************************************************************************

	Notes: the calling function should be like this:

	

	if(form_name_validation_error("form_name","control_name","data_type","atttribute","message"))

	{

			return false;

	}

	

	

	the function returns true if error occurs!

******************************************************************************************************************************/



function form_name_validation_error(form_name, control_name, data_type, atttribute, message)

{

	if(data_type != 'check_box' && data_type != 'check_box_group' && data_type != 'radio_group')

	{

		var control_value = eval("document."+form_name+"."+control_name).value;

		control_value = form_name_validation_Trim(control_value);

	}

	else

	{

		var obj = eval("window.document."+form_name).elements;

		var objcount = obj.length;

	}

	

	if(data_type == 'space')//detect space in entries

	{

		if(control_value == '' && eval("document."+form_name+"."+control_name).value != "")

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}

		else

			return false;

	}

	if(data_type == 'char')//detect blank fields(entries)

	{

		if(control_value == '')

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}

		else

			return false;

	}

	if(data_type == 'num')//check numerical values

	{

		if(isNaN(control_value) == true)

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;
		}	

		else

			return false;

	}

	if(data_type == 'email')//check email

	{

		var emailStr = control_value;

		var emailPat=/^(.+)@(.+)$/

		var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"

		var validChars="\[^\\s" + specialChars + "\]"

		var quotedUser="(\"[^\"]*\")"

		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/

		var atom=validChars + '+'

		var word="(" + atom + "|" + quotedUser + ")"

		var userPat=new RegExp("^" + word + "(\\." + word + ")*$")

		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

		var matchArray=emailStr.match(emailPat)

		if (matchArray==null) 

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}

		var user=matchArray[1]

		var domain=matchArray[2]

		if (user.match(userPat)==null)

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}

		var IPArray=domain.match(ipDomainPat)

		if (IPArray!=null) 

		{

			for (var i=1;i<=4;i++) 

			{

				if (IPArray[i]>255) 

				{

					alert(message);

					eval("document."+form_name+"."+control_name).focus();

					return true;

				}

			}

				 

		}

		var domainArray=domain.match(domainPat)

		if (domainArray==null) 

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}

		var atomPat=new RegExp(atom,"g")

		var domArr=domain.match(atomPat)

		var len=domArr.length

		if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) 

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}

		if (len<2) 

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}

		return false;

	}

	if(data_type == 'length_max')//check maximum character length

	{

		attrib = parseInt(atttribute);

		if((control_value.length > attrib))

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}	

		else

			return false;

	}

	if(data_type == 'length_min')//check minimum character length

	{

		attrib = parseInt(atttribute);

		if((control_value.length < attrib))

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}	

		else

			return false;

	}

	if(data_type == 'char_match')//check for specific string

	{

		if((control_value == atttribute))

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}	

		else

			return false;

	}

	if(data_type == 'char_not_match')//check for absence specific string

	{

		if((control_value != atttribute))

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}	

		else

			return false;

	}

	if(data_type == 'size')//check character length

	{

		attrib = parseInt(atttribute);

		if((control_value.length != attrib))

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}	

		else

			return false;

	}

	if(data_type == 'sp_char')//check for special characters

	{

		var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";

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

		{

			if (iChars.indexOf(control_value.charAt(i)) != -1) 

			{

				alert (message);

				eval("document."+form_name+"."+control_name).focus();

				return true;

			}

  		}

	}

	if(data_type == 'in_space')//check for space in string

	{

		var iSpace = " ";

		if (control_value.indexOf(iSpace) != -1) 

		{

			alert (message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}

  	}

	if(data_type == 'max_num')//check for maximum numerical values

	{

		if(parseInt(control_value) > parseInt(atttribute))

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}	

		else

			return false;

	}

	if(data_type == 'min_num')//check for minimum numerical values

	{

		if(parseInt(control_value) < parseInt(atttribute))

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}	

		else

			return false;

	}

	if(data_type == 'eq_num')//check for equality of specific numerical values

	{

		if(parseInt(control_value) != parseInt(atttribute))

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}	

		else

			return false;

	}

	if(data_type == 'not_eq_num')//check for non-equality of specific numerical values

	{

		if(parseInt(control_value) == parseInt(atttribute))

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}	

		else

			return false;

	}

	if(data_type == 'check_box')//check checked check-box

	{

		if(eval("document."+form_name+"."+control_name).checked == false)

		{

			alert(message);

			eval("document."+form_name+"."+control_name).focus();

			return true;

		}

		else

			return false;

		

	}

	if(data_type == 'check_box_group')//check checked check-box in check-box group

	{

		var check_box_group_not_selected = true;

		var focus_check_box_group;

		for(i=0; i<objcount; i++)

		{

			if(obj[i].name == control_name && obj[i].checked == true)

			{

				check_box_group_not_selected = false;

				focus_check_box_group = i;

			}

		}

		if(check_box_not_selected)

		{

			alert(message);

			obj[focus_check_box_group].focus();

			return true;

		}

		else

			return false;

		

	}

	if(data_type == 'radio_group')//check checked radio_button in radio_button group

	{

		var radio_group_not_selected = true;

		var focus_radio_group;

		for(i=0; i<objcount; i++)

		{

			if(obj[i].name == control_name && obj[i].checked == true)

			{

				radio_group_not_selected = false;

				focus_radio_group = i;

			}

		}

		if(radio_group_not_selected)

		{

			alert(message);

			obj[focus_radio_group].focus();

			return true;

		}

		else

			return false;

		

	}

}





function form_name_validation_Trim(TRIM_VALUE)//

{

	if(TRIM_VALUE.length < 1)

	{

		return "";

	}

	

	TRIM_VALUE = Rform_name_validation_Trim(TRIM_VALUE);

	TRIM_VALUE = Lform_name_validation_Trim(TRIM_VALUE);

	

	if(TRIM_VALUE=="")

	{

		return "";

	}

	else

	{

	return TRIM_VALUE;

	}

} //End Function





function Rform_name_validation_Trim(VALUE)//

{

	var w_space = String.fromCharCode(32);

	var v_length = VALUE.length;

	var strTemp = "";

	if(v_length < 0)

	{

		return	"";

	}

	var iTemp = v_length -1;



	while(iTemp > -1)

	{

		if(VALUE.charAt(iTemp) == w_space)

		{

		}

		else

		{

			strTemp = VALUE.substring(0,iTemp +1);

			break;

		}

		iTemp = iTemp-1;



	} //End While

	return strTemp;



} //End Function





function Lform_name_validation_Trim(VALUE)//

{

	var w_space = String.fromCharCode(32);

	if(v_length < 1)

	{

	return "";

	}

	var v_length = VALUE.length;

	var strTemp = "";



	var iTemp = 0;



	while(iTemp < v_length)

	{

		if(VALUE.charAt(iTemp) == w_space)

		{

		}

		else

		{

			strTemp = VALUE.substring(iTemp,v_length);

			break;

		}

		iTemp = iTemp + 1;

	} //End While

	return strTemp;

} //End Function





