//File Name   :validate.js
//Path        :Com006 C:/js/validate.js
//Description :Generic Global Functions used for any Asp or Html Page
//Code Warrior:Ramesh Ramachandran
//Date        :February 07, 2001


//This variable holds the message to be displayed if form is not submitted
var global_message="";

var global_elementName="";

//Validation RegExp objects.
var global_reEmail=/^[a-zA-Z|\.|\-|_][a-zA-Z0-9|\.|\-|_]*@[a-zA-Z0-9|\.|\-|_]+\.[a-zA-Z0-9|\.|\-|_][a-zA-Z0-9|\.|\-|_]{1,2}$/;

var global_reHTML=/^.*[\<]|[\<].+[\>]|[\>].+$/;

var global_reUSER=/^.*[\<`!@#\$*%&()_\|\\^]|[\<].+[\>]|[\>].+$/;
//This returns if the quantity entered is between the specified values

function global_checkChar()
{
	var global_i;
	var global_arrayFieldName;
	var global_arylnth = global_checkChar.arguments.length;

	for (global_i = 0;global_i < global_arylnth;global_i=global_i+2) 
		{ 
			this[global_i]=global_checkChar.arguments[global_i];
			global_arrayFieldName=global_checkChar.arguments[(global_i+1)];
			global_Trim(this[global_i]);	
				var global_ValNum=this[global_i].value;
			if (global_reUSER.test(global_ValNum))			
				{
				if (global_message.length==0)
					{
global_feedback(this[global_i],"Please do not enter invalid characters in "+global_arrayFieldName);
					}
				break;
				}						
		}
}

function global_comboSelect(fld,FldName)
{
	if (fld.options[fld.selectedIndex].value==0)
	{
					if (global_message.length==0)
						{
		global_feedback(fld,"Please select "+FldName);
						}
	}
}

function global_numberCheck() 
{
	var global_i;
	var global_arrayFieldName;
	var global_arylnth = global_numberCheck.arguments.length;

	for (global_i = 0;global_i < global_arylnth;global_i=global_i+2) 
		{ 
			this[global_i]=global_numberCheck.arguments[global_i];
			global_arrayFieldName=global_numberCheck.arguments[(global_i+1)];
			global_Trim(this[global_i]);	
				var global_ValNum=this[global_i].value
			if ((isNaN(global_ValNum)==true) || (global_ValNum.length==0))			
				{
				if (global_message.length==0)
					{
global_feedback(this[global_i],"Please enter only numeric values in "+global_arrayFieldName);
					}
				break;
				}						
		}
}


function global_quantityCheck(global_item, global_min, global_max) 
{
   if (isNaN(global_item.value)==true) 
	{
				if (global_message.length==0)
					{
	global_feedback(global_item,"Please enter a positive number");
					}
	}
   else if ((parseInt(global_item.value) < global_min) && (!(global_isEmpty(global_min))) && (!(global_isEmpty(global_max))))
	{
				if (global_message.length==0)
					{
	global_feedback(global_item,"Please enter " + global_item.name + " greater than " + global_min);
					}
	}
   else if ((parseInt(global_item.value) > global_max) && (!(global_isEmpty(global_min))) && (!(global_isEmpty(global_max))))
	{
				if (global_message.length==0)
					{
	global_feedback(global_item,"Please enter " + global_item.name + " less than " + global_max);
					}
	}
}

//This checks for proper email ids check
function global_checkEmail(global_element)
{
  		if(!global_reEmail.test(global_element.value)) 
	{
				if (global_message.length==0)
					{
			global_feedback(global_element,"Please enter a valid e-mail address.");
					}
	}
}

//This is to prevent Html tags to be entered and is the last compulsory validation


function global_checkHTML(global_form)
{
	var global_a;
	for(global_i=0;global_i<global_form.elements.length-1;global_i++)
	{
		if(global_reHTML.test(global_form.elements[global_i].value))
		{
			global_a=global_form.elements[global_i];
				if (global_message.length==0)
					{
			global_feedback(global_form.elements[global_i],"Warning! Do not enter HTML Tags in "+global_a.name+" field");
					}
			break;
		}
	}
		if (global_message!="")
			{
				alert(global_message);
				global_elementName.focus();
				global_message="";	
				return false;
			}
		else
			{
				return true
			}
}




//This populates the Message Box for illegal entries in Input Fields
function global_feedback(global_element,global_msg)
{
	global_message=global_message+'\n'+global_msg;
	global_elementName=global_element;
}


// February can't be greater than 29 (leap year calculation comes later) 
// check for months with only 30 days 
// if not divisible by 4, then not a leap year so Feb 29 is invalid 
// at this point, year is divisible by 4. So if year is divisible by 
// 100 and not 400, then it's not a leap year so Feb 29 is invalid 

function global_checkValidDate(global_y,global_m,global_d) 
{
	var global_yText=global_y.options[global_y.selectedIndex].text;
	var global_mText=global_m.options[global_m.selectedIndex].text;
	var global_dText=global_d.options[global_d.selectedIndex].text;
	var global_numYear=parseInt(global_y.options[global_y.selectedIndex].value);
	var global_numMonth=parseInt(global_m.options[global_m.selectedIndex].value);
	var global_numDay=parseInt(global_d.options[global_d.selectedIndex].value);

if ((global_numMonth!=0) && (global_numDay!=0) && (global_numYear!=0))
{
	if ((global_numMonth==2) && (global_numDay>29)) 
		{ 
				if (global_message.length==0)
					{
		global_feedback(global_d,"February cannot exceed 29 days."); 
					}		} 
	else
		{
	if ((global_numMonth==2) || (global_numMonth==4) || (global_numMonth==6) || (global_numMonth==9) || (global_numMonth==11)) 
				{ 
				if (global_numDay>30) 		
					{ 
				if (global_message.length==0)
						{
					global_feedback(global_d,global_mText+" cannot exceed 30 days.");
						}
					} 
				else
					{
					if ((global_numMonth==2) && (global_numDay==29)) 
						{ 
						var global_div4 = global_numYear%4 
						var global_div100 = global_numYear%100 
						var global_div400 = global_numYear%400 
					if (global_div4!=0) 
							{ 
				if (global_message.length==0)
					{
				global_feedback(global_d,"This is not a Leap Year. Day has to be less than 29.");
					}
							} 
					else if ((global_div100==0) && (global_div400!=0)) 
							{ 
				if (global_message.length==0)
					{
				global_feedback(global_d,"This is not a leap year. Please select a date before 29.");
					}
							} 
						}
					}	
				}
		}
	}
		else{
				if (global_message.length==0)
					{
				global_feedback(global_d,"Please select an appropriate date.");
					}
			}
}

//This is for start date and end date comparison

function global_DateCompare(global_yr1,global_mth1,global_dt1,global_yr2,global_mth2,global_dt2,global_msgD)
{
	global_Dat1 = (parseInt(global_yr1.options[global_yr1.selectedIndex].value) + parseInt(global_mth1.options[global_mth1.selectedIndex].value) + parseInt(global_dt1.options[global_dt1.selectedIndex].value));
	global_Dat2 = (parseInt(global_yr2.options[global_yr2.selectedIndex].value) + parseInt(global_mth2.options[global_mth2.selectedIndex].value) + parseInt(global_dt2.options[global_dt2.selectedIndex].value));
	if(global_Dat1 > global_Dat2)
		{
				if (global_message.length==0)
					{
var global_mm=(global_msgD)?global_msgD:"Start Date cannot be greater than End Date";					
global_feedback(global_dt1,global_mm);
					}
		}
}

// general purpose function to see if an input value has been entered at all

function global_isEmpty(global_inputStr) 
{
	if (global_inputStr == "" || global_inputStr == null) 
	{
		return true;
		global_elemValTest=0;					
	}
	return false;
}

var global_elemVal;
var global_elemValTest;

function global_TrimCheckBlank()
{
	var global_i;
	var global_arrayFieldName;
	var global_arylnth = global_TrimCheckBlank.arguments.length;

	for (global_i = 0;global_i < global_arylnth;global_i=global_i+2) 
		{ 
			this[global_i]=global_TrimCheckBlank.arguments[global_i];
			global_arrayFieldName=global_TrimCheckBlank.arguments[(global_i+1)];
			global_Trim(this[global_i]);			
			if (global_isEmpty(global_elemVal)==true)			
				{
				if (global_message.length==0)
					{				
global_feedback(this[global_i],"Please enter "+global_arrayFieldName);
					}
				break;
				}						
		}
}

//Global Variable

function global_Trim(global_element)
{
	global_elemVal=global_element.value;
	if (!(global_isEmpty(global_elemVal)))
	{
		global_JRTrim(global_elemVal);
	if (!(global_isEmpty(global_elemVal)))
		{
			global_JLTrim(global_elemVal);
		}
	global_element.value=global_elemVal;	

	}
}

// Description : removes all extra spaces left part of the string

	function global_JLTrim(global_str)
{		var global_i;
		var global_finalstr,global_max;
		global_finalstr=global_str;	
		global_max=global_str.length;global_i=0;
			while((global_str.charAt(global_i)==' ')&&(global_i<=global_max))
			{
			global_finalstr=global_str.substring(global_i+1,global_max);
			global_i=global_i+1;
			}
			global_elemVal=global_finalstr;
}

// Description : removes all extra spaces Right part of the string

	function global_JRTrim(global_str)
{
		var global_finalstr,global_max,global_i;
		global_finalstr=global_str;
		global_max=global_str.length;

		if (global_max>1)
			{
			global_i=global_max-1;
			while((global_str.charAt(global_i)==' ')&&(global_i>=0))
				{
				global_finalstr=global_str.substring(0,global_i);
				global_i=global_i-1;
				}
			}
		else
			{
			if (global_str.charAt(0)==' ')	
				{
				global_finalstr="";
				}
			}
					global_elemVal=global_finalstr;
					
}


	function global_IsBlank(global_strB)
{
	var global_retValB = false;
	var strLength=global_strB.length;
	for (var global_i = 0;global_i < strLength;global_i++) 
	{
			if (global_strB.charAt(global_i)==' ')	
				{
				global_retValB = true;
				break;
				}
	
	
	}
	return global_retValB;

}	

	function global_checkBlank()
{

	var global_i;
	var global_arrayFieldName;
	var global_arylnth = global_checkBlank.arguments.length;

	for (global_i = 0;global_i < global_arylnth;global_i=global_i+2) 
		{ 
			this[global_i]=global_checkBlank.arguments[global_i];
			var global_strValCB=this[global_i].value;
			global_Trim(this[global_i]);			
			global_arrayFieldName=global_checkBlank.arguments[(global_i+1)];
			if ((global_isEmpty(global_elemVal)==true) || (global_IsBlank(global_strValCB)==true))			
				{
				if (global_message.length==0)
					{
global_feedback(this[global_i],"Please enter "+global_arrayFieldName);
					}
				break;
				}						
		}
}
	
	function global_maxLength(global_elemML,global_max,global_FldName)
{
	var global_strML=global_elemML.value;
	if (global_strML.length>global_max)
		{
				if (global_message.length==0)
					{
global_feedback(global_elemML,"Cannot accept more than "+global_max+" characters in "+global_FldName);		
					}
		global_strML=global_strML.substring(0,global_max);
		global_elemML.value=global_strML;
		}

}
