/*
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' File Name             : Validation.js
' Purpose               : To store the validation functions 
' Description           :
' Files Dependent on    : None
' INC Files used        : None
' Database used         : None
' Tables used           : None
' Copyright(c)          : SRA Systems Ltd. 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Change Log         
' Date           Author       Reviewer    	Comments
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
*/
/*
******************************************************************************
'	Name          : CheckIfChar
'   Purpose       : This function the value contains only Alphabets
'	Parameters    : sInput,slabel,sMandatory
'	Returns       : Boolean
'   Author        : 
'	Created Date  : 
'   Modified Date :
'******************************************************************************/
function CheckIfChar(sInput,slabel,sMandatory)
{
	if (sInput == "" && sMandatory == "N")
	{
		return true
	}
	else if (sInput == "")
	{
		alert("Please enter  " + slabel)
		return false
	}
    for (var iCntr=0;iCntr < sInput.length;iCntr++)
	{
	  var sVal = sInput.substring(iCntr,iCntr+1)
	  if (!((sVal >= "a" && sVal <= "z") || (sVal >= "A" && sVal <= "Z") 
	      || sVal == " " || sVal == ";" || sVal == "," || sVal == "."))
	  {
		alert("Please enter a valid " + slabel);
		return false
	  }
	}
	return true;
} //End of function

/*
******************************************************************************
'   Name          : CheckIfNumeric
'	Purpose       : This function the value is Numeric
'	Parameters    : sInput,slabel,sMandatory
'	Returns       : Boolean
'   Author        : 
'	Created Date  : 
'   Modified Date :
'******************************************************************************/
function CheckIfNumeric(sInput,slabel,sMandatory)
{
	if (sInput == "" && sMandatory == "N")
	{
		return true
	}
	else if (sInput == "")
	{
		alert("Please enter a " + slabel);
		return false
	}
	else if (isNaN(parseInt(sInput)))
	{
		alert("Please enter a valid " + slabel);
		return false
	}
	else if (sInput.indexOf(".") != -1)
	{
		alert("Please enter a valid " + slabel);
		return false
	}
	else if (parseInt(sInput,10) < 0 )
	{
		alert("Please enter a valid " + slabel);
		return false
	}
	else if (sInput.indexOf(" ") != -1)
	{
		alert("Spaces not allowed in "+ slabel +" \n Please Remove the spaces and Proceed")
		return false
	}
	else
	{
		for (var iCntr=0;iCntr < sInput.length;iCntr++)
		{
			var iVal = sInput.substring(iCntr,iCntr+1)
			if (iVal < "0" || iVal > "9")
			{
				alert("Please enter a valid " + slabel);
				return false
			}
		}
		return true
    }
}//End of function
/*
******************************************************************************
'   Name          : DeriveDate
'	Purpose       : This function derive the Date in mm-dd-yyyy format
'	Parameters    : iMonth,iDay,iYear,slabel
'	Returns       : String
'   Author        : 
'	Created Date  : 
'   Modified Date :
'******************************************************************************/
function DeriveDate(iMonth,iDay,iYear,slabel)
{
	var sLabel ;
	var sDate = "";
	var iMon;
	var sMonth = new  Array("Jan","Feb",
                 "Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
	if (iDay == "")
	{
		var sMsg2 = slabel +  " : Day should not be blank"
		alert(sMsg2);
		return false
	}
	if (iMonth == "")
	{
		var sMsg1 = slabel +  " : Month should not be blank"
		alert(sMsg1);
		return false
	}
	if (iYear == "")
	{
		var sMsg3 = slabel +  " : Year should not be blank"
		alert(sMsg3);
		return false
	}

	if ((isNaN(iDay) == true) || (isNaN(iYear) == true) 
	    || (iDay == "") || (iMonth == "") || (iYear == "") ||
		 (iDay.length > 2) || (iMonth.length > 3) ||  (iYear.length != 4))
	{
		
	str = " : Invalid Date Format." 
		alert(slabel + str)	
		return false
	}
	if (iDay < 1 ||  iDay > 31)
	{
		alert(slabel + " : Invalid Day")
		return false
	}
	if (isNaN(iMonth) == true)
	{
		sMM1 = iMonth.toLowerCase()		
		if (sMM1 != "jan" && sMM1 != "feb" && sMM1 != "mar" && 
		    sMM1 != "apr" && sMM1 != "may" && sMM1 != "jun" && 
			sMM1 != "jul" && sMM1 != "aug" && sMM1 != "sep" && 
			sMM1 != "oct" && sMM1 != "nov" && sMM1 != "dec") 
		{
			alert(slabel + " : Invalid Month")
			return false
		}
	}
	else
	{
		if ((iMonth < 1) || (iMonth > 12))
		{
			alert(slabel + " : Invalid Month")
			return false
		}
		iMon = iMonth
		iMonth = sMonth[iMonth-1]
		sMM1 = iMonth.toLowerCase()
	}
	if (iYear <= 30)
		iYear = "20" + iYear
	else if (iYear <= 99)
		iYear = "19" + iYear
	else if (iYear <= 1900)
	{
		alert(slabel + " : Invalid Year")
		return false
	}
	if ((iDay > 31) && ((sMM1 == "jan") || (sMM1 == "mar") || 
	    (sMM1 == "may") || (sMM1 == "jul") || (sMM1 == "aug")
		|| (sMM1 == "oct") || (sMM1 == "dec")))
	{
		alert(slabel + " : Invalid Day")
		return false
	}
	else if ((iDay > 30) && ((sMM1 == "apr") || (sMM1 == "jun")
	         || (sMM1 == "sep") || (sMM1 == "nov")))
	{
		alert(slabel + " : Invalid Day")
		return false
	}		
	else if ((sMM1 == "feb") && (((iYear % 4 == 0) && (iDay > 29)) || 
	        ((iYear % 4 != 0) && (iDay > 28))))
	{
		alert(slabel + " : Invalid Day")
		return false
	}
	//if (iDay.length  < 2 )
		//iDay = "0" + iDay;
	sDate = iDay + "-" + iMonth + "-" + iYear;

	return sDate;
}//End of function
/*
******************************************************************************
'   Name          : DeriveDateMonNumeric
'	Purpose       : This function derive the Date in mm-dd-yyyy format
'	Parameters    : iMonth,iDay,iYear,slabel
'	Returns       : String
'   Author        : 
'	Created Date  : 
'   Modified Date :
'******************************************************************************/
function DeriveDateMonNumeric(iMonth,iDay,iYear,slabel)
{
	var sLabel ;
	var sDate = "";
	var iMon;
	var sMonth = new  Array("Jan","Feb",
                 "Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
	if (iDay == "")
	{
		var sMsg2 = slabel +  " : Day should not be blank"
		alert(sMsg2);
		return false
	}
	if (iMonth == "")
	{
		var sMsg1 = slabel +  " : Month should not be blank"
		alert(sMsg1);
		return false
	}
	if (iYear == "")
	{
		var sMsg3 = slabel +  " : Year should not be blank"
		alert(sMsg3);
		return false
	}

	if ((isNaN(iDay) == true) || (isNaN(iYear) == true) 
	    || (iDay == "") || (iMonth == "") || (iYear == "") ||
		 (iDay.length > 2) || (iMonth.length > 3) ||  (iYear.length != 4))
	{
		
	str = " : Invalid Date Format." 
		alert(slabel + str)	
		return false
	}
	if (iDay < 1 ||  iDay > 31)
	{
		alert(slabel + " : Invalid Day")
		return false
	}
	if (isNaN(iMonth) == true)
	{
		sMM1 = iMonth.toLowerCase()		
		if (sMM1 != "jan" && sMM1 != "feb" && sMM1 != "mar" && 
		    sMM1 != "apr" && sMM1 != "may" && sMM1 != "jun" && 
			sMM1 != "jul" && sMM1 != "aug" && sMM1 != "sep" && 
			sMM1 != "oct" && sMM1 != "nov" && sMM1 != "dec") 
		{
			alert(slabel + " : Invalid Month")
			return false
		}
	}
	else
	{
		if ((iMonth < 1) || (iMonth > 12))
		{
			alert(slabel + " : Invalid Month")
			return false
		}
		iMon = iMonth
		iMonth = sMonth[iMonth-1]
		sMM1 = iMonth.toLowerCase()
	}
	if (iYear <= 30)
		iYear = "20" + iYear
	else if (iYear <= 99)
		iYear = "19" + iYear
	else if (iYear <= 1900)
	{
		alert(slabel + " : Invalid Year")
		return false
	}
	if ((iDay > 31) && ((sMM1 == "jan") || (sMM1 == "mar") || 
	    (sMM1 == "may") || (sMM1 == "jul") || (sMM1 == "aug")
		|| (sMM1 == "oct") || (sMM1 == "dec")))
	{
		alert(slabel + " : Invalid Day")
		return false
	}
	else if ((iDay > 30) && ((sMM1 == "apr") || (sMM1 == "jun")
	         || (sMM1 == "sep") || (sMM1 == "nov")))
	{
		alert(slabel + " : Invalid Day")
		return false
	}		
	else if ((sMM1 == "feb") && (((iYear % 4 == 0) && (iDay > 29)) || 
	        ((iYear % 4 != 0) && (iDay > 28))))
	{
		alert(slabel + " : Invalid Day")
		return false
	}
	//if (iDay.length  < 2 )
		//iDay = "0" + iDay;
	sDate = iDay + "-" + iMon + "-" + iYear;

	return sDate;
}//End of function
/*
*******************************************************************************
'   Name          : IsEmpty
'	Purpose       : This function Validates if Field is empty
'	Parameters    : sInput,slabel
'	Returns       : Boolean
'   Author        : 
'	Created Date  : 
'   Modified Date :
'******************************************************************************/

function IsEmpty(sInput,slabel)
{

	if (sInput == "")
	{
		alert(slabel +" should not be blank");
		return false;
	}
	return true;	
} //End of function

/*
******************************************************************************
'   Name          : ValidateDate
'	Purpose       : This function Validates the Date
'	Parameters    : sInput,slabel
'	Returns       : Boolean
'   Author        : 
'	Created Date  : 
'   Modified Date :
'******************************************************************************/
function ValidateDate(sInput,slabel)
{
  var sMonth = new  Array("Jan","Feb",
                 "Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
	/*if (sInput == "")
	{
		alert(slabel +" should not be blank");
		return false
	}*/
	iErr = 0
	if (sInput.indexOf("-") != -1)
	{
		if (sInput.indexOf("-",sInput.indexOf("-")+1) != -1)
		{
			sMM = sInput.substring(0,sInput.indexOf("-"))
			iDD = sInput.substring(sInput.indexOf("-")+1,
                                       sInput.lastIndexOf("-"))
			iYY = sInput.substring(sInput.lastIndexOf("-")+1)
		}
		else
			iErr = 1
	}
	else
	{
		if (sInput.indexOf("/",sInput.indexOf("/")+1) != -1)
		{
			sMM = sInput.substring(0,sInput.indexOf("/"))
			iDD = sInput.substring(sInput.indexOf("/")+1,
                sInput.lastIndexOf("/"))
			iYY = sInput.substring(sInput.lastIndexOf("/")+1)
		}
		else
			iErr = 1
	}

	if ((iErr == 1) || (isNaN(iDD) == true) || (isNaN(iYY) == true) 
	    || (iDD == "") || (sMM == "") || (iYY == "") || (iDD.length > 2) 
		|| (sMM.length > 3) ||  (iYY.length != 4))
	{
	str = " : Invalid Date Format."
		alert(slabel + str)
		return false
	}
	if (iDD < 1 ||  iDD > 31)
	{
		alert(slabel + " : Invalid Day");
		return false
	}
	if (isNaN(sMM) == true)
	{
		sMM1 = sMM.toLowerCase()
		if (sMM1 != "jan" && sMM1 != "feb" && sMM1 != "mar" && 
		    sMM1 != "apr" && sMM1 != "may" && sMM1 != "jun" && 
			sMM1 != "jul" && sMM1 != "aug" && sMM1 != "sep" && 
			sMM1 != "oct" && sMM1 != "nov" && sMM1 != "dec") 
		{
			alert(slabel + " : Invalid Month")
			return false
		}
	}
	else
	{
		if ((sMM < 1) || (sMM > 12))
		{
			alert(slabel + " : Invalid Month")
			return false
		}
		sMM = sMonth[sMM-1]
		sMM1 = sMM.toLowerCase()
	}
	if (iYY <= 30)
		iYY = "20" + iYY
	else if (iYY <= 99)
		iYY = "19" + iYY
	else if (iYY <= 1900)
	{
		alert(slabel + " : Invalid Year")
		return false
	}
	if ((iDD > 31) && ((sMM1 == "jan") || (sMM1 == "mar") || 
	    (sMM1 == "may") || (sMM1 == "jul") || (sMM1 == "aug")
		|| (sMM1 == "oct") || (sMM1 == "dec")))
	{
		alert(slabel + " : Invalid Day")
		return false
	}
	else if ((iDD > 30) && ((sMM1 == "apr") || (sMM1 == "jun")
	         || (sMM1 == "sep") || (sMM1 == "nov")))
	{
		alert(slabel + " : Invalid Day")
		return false
	}		
	else if ((sMM1 == "feb") && (((iYY % 4 == 0) && (iDD > 29)) || 
	        ((iYY % 4 != 0) && (iDD > 28))))
	{
		alert(slabel + " : Invalid Day")
		return false
	}
	if (iDD.length  < 2 )
		iDD = "0" + iDD
	return true;
}//End of function


/*
*******************************************************************************
'   Name          : ValidateFutureDt
'	Purpose       : This function Validates the Date
'	Parameters    : sInput,slabel
'	Returns       : Boolean
'   Author        : 
'	Created Date  : 
'   Modified Date :
'******************************************************************************/
function ValidateFutureDt(sInput,slabel)
{
  var sDate = new Date() //To store the current date
  var sDay = sDate.getDate(); //To store the date part of current date
  var sMon = sDate.getMonth()+1; //To store the month part of current date
  var iYr = sDate.getYear(); //To store the year part of current date
  var sMonth = new  Array("Jan","Feb","Mar",
						 "Apr","May","Jun","Jul","Aug","Sep",
                         "Oct","Nov","Dec")
	iErr = 0
	if (sInput.indexOf("-") != -1)
	{
		if (sInput.indexOf("-",sInput.indexOf("-")+1) != -1)
		{
			iDD = sInput.substring(0,sInput.indexOf("-"))
			sMM = sInput.substring(sInput.indexOf("-")+1,
                                       sInput.lastIndexOf("-"))
			iYY = sInput.substring(sInput.lastIndexOf("-")+1)
			for(var i=0;i<12;i++)
			{
				if (sMM.toUpperCase() == sMonth[i].toUpperCase())
				{
					sMM = i+1;
					break;
				}
			}
		}
		else
			iErr = 1
	}
	else
	{
		if (sInput.indexOf("/",sInput.indexOf("/")+1) != -1)
		{
			iDD = sInput.substring(0,sInput.indexOf("/"))
			sMM = sInput.substring(sInput.indexOf("/")+1,
                sInput.lastIndexOf("/"))
			iYY = sInput.substring(sInput.lastIndexOf("/")+1)
			for( i=0;i<12;i++)
			{
				if (sMM == sMonth[i])
				{
					sMM = i+1;
					break;
				}
			}
		}
		else
			iErr = 1
	}	
	
	if (iYY <= 30)
		iYY = "20" + iYY
	else if (iYY <= 99)
		iYY = "19" + iYY
	
	//check whether the start year is lesser than end year
	if (parseInt(iYr,10) <= parseInt(iYY,10))
	{	
		//if so, check whether start month is greater than end month
		if (parseInt(sMon,10) > parseInt(sMM,10))
		{
			//if so, check whether the years are same, then raise an error
			if (parseInt(iYY,10) == parseInt(iYr,10))
			{
				alert(slabel + " should be in future");
				return false;
			}
		}
		else
		//if the start month is not greater than end month
		{
			//check whether both the months are equal
			if (parseInt(sMM) == parseInt(sMon))
	    	{
				//check whether the start date is greater than end date
				if (parseInt(iYY) == parseInt(iYr))
				{
					if (parseInt(sDay) > parseInt(iDD))
					{
						//then raise an alert
						alert(slabel + " should be in future");
						return false;
					}
				}
			}
		}
	}
	else
	{
		//if start year is greater than end year raise an alert
		alert(slabel + " should be in future")
		return false;
	}
	if (iDD.length  < 2 )
		iDD = "0" + iDD
	return true;
} //End of function
/*
*******************************************************************************
'   Name          : ValidateDateRange
'	Purpose       : This function Validates the Start and End Dates
'	Parameters    : sStartDate,sEndDate,slabel
'	Returns       : Boolean
'   Author        : 
'	Created Date  : 
'   Modified Date :
'******************************************************************************/

function ValidateDateRange(sStartDate,sEndDate,slabel)
{
	var sStDay; //To store the date part of Start Date
	var sEndDay; //To store the date part of End Date
	var sStMon; //To store the month part of Start Date
	var sEndMon; //To store the month part of End Date
	var sStYr; //To store the year part of Start Date
	var sEndMon; //To store the year part of End Date
	var bret ; //To store the return value of the function call
	var sMM1;  //Temporary Variable
	var nStartMonth;  //Stores the Month
	var sMM2;  //Temporary Variable
	var nEndMonth;  //Stores the End Month
	var sMonth = new  Array("Jan","Feb",
                 "Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
	
	//Get the date as dd,mon,yyyy and store them into different variables
	sStMon = sStartDate.substring(sStartDate.indexOf("-")+1,
                                       sStartDate.lastIndexOf("-"));
	sStDay =  sStartDate.substring(0,sStartDate.indexOf("-"))
	sStYr = sStartDate.substring(sStartDate.lastIndexOf("-")+1)
	
	sEndMon = sEndDate.substring(sEndDate.indexOf("-")+1,
                                       sEndDate.lastIndexOf("-"));
	sEndDay =  sEndDate.substring(0,sEndDate.indexOf("-"))
	sEndYr = sEndDate.substring(sEndDate.lastIndexOf("-")+1)
	//convert mon to mm format
	if (isNaN(sStMon) == true)
	{
		sMM1 = sStMon.toLowerCase();
	}
	for(var i=0;i<12;i++)
	{
		sMonth[i]=sMonth[i].toLowerCase();
		if (sMM1==sMonth[i])
		{
			nStartMonth=i+1;
			break;
		}
	}
	//convert mon to mm format
	if (isNaN(sEndMon) == true)
	{
		sMM2 = sEndMon.toLowerCase();
	}
	for(i=0;i<12;i++)
	{
		sMonth[i]=sMonth[i].toLowerCase();
		if (sMM2==sMonth[i])
		{
			nEndMonth=i+1;
			break;
		}
	}
	//check whether the start year is lesser than end year
	if (parseInt(sStYr) <= parseInt(sEndYr))
	{	
		//if so, check whether start month is greater than end month
		if (parseInt(nStartMonth) > parseInt(nEndMonth))
		{
			//if so, check whether the years are same, then raise an error
			if (parseInt(sStYr) == parseInt(sEndYr))
			{
				alert(slabel + " :  End Date should be greater than Start Date");
				return false;
			}
		}
		else
		//if the start month is not greater than end month
		{
			//check whether both the months are equal
			if (parseInt(nStartMonth) == parseInt(nEndMonth))
	    	{
				//check whether the start date is greater than end date
				if (parseInt(sStYr) == parseInt(sEndYr))
				{
					if (parseInt(sStDay) > parseInt(sEndDay))
					{
						//then raise an alert
						alert(slabel + " :  End Date should be greater than Start Date");
						return false;
					}
				}
			}
		}
	}
	else
	{
		//if start year is greater than end year raise an alert
		alert(slabel + " :  End Date should be greater than Start Date")
		return false;
	}

	return true;	
} //End of function

/*******************************************************************************
'   Name          : Validate2DateRanges
'	Purpose       : This function Validates the Start and End Dates
'	Parameters    : sStartDate,sEndDate,slabel
'	Returns       : Boolean
'   Author        : 
'	Created Date  : 
'   Modified Date :
'******************************************************************************/

function Validate2DateRanges(sStartDate1,sEndDate1,sStartDate2,sEndDate2,slabel1,slabel2)
{
	var sStDay1; //To store the date part of First Start Date
	var sEndDay1; //To store the date part of First End Date
	var sStMon1; //To store the month part of First Start Date
	var sEndMon1; //To store the month part of First End Date
	var sStYr1; //To store the year part of First Start Date
	var sEndMon1; //To store the year part of First End Date
	var sStDay2; //To store the date part of Second Start Date
	var sEndDay2; //To store the date part of Second End Date
	var sStMon2; //To store the month part of Second Start Date
	var sEndMon2; //To store the month part of Second End Date
	var sStYr2; //To store the year part of Second Start Date
	var sEndMon2; //To store the year part of Second End Date
	var bret ; //To store the return value of the function call
	var sMM;  //Temporary Variable
	var nFirstStartMonth;  //Stores the Month
	var nFirstEndMonth;  //Stores the End Month
	var nSecondStartMonth;  //Stores the Month
	var nSecondEndMonth;  //Stores the End Month
	var sMonth = new  Array("Jan","Feb",
                 "Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
	//get the date as dd,mon,yyyy and store them into different variables
	sStMon1 = sStartDate1.substring(sStartDate1.indexOf("-")+1,
                                       sStartDate1.lastIndexOf("-"));
	sStDay1 =  sStartDate1.substring(0,sStartDate1.indexOf("-"));
	sStYr1 = sStartDate1.substring(sStartDate1.lastIndexOf("-")+1);
	sEndMon1 = sEndDate1.substring(sEndDate1.indexOf("-")+1,
                                       sEndDate1.lastIndexOf("-"));
	sEndDay1 =  sEndDate1.substring(0,sEndDate1.indexOf("-"));
	sEndYr1 = sEndDate1.substring(sEndDate1.lastIndexOf("-")+1);
	sStMon2 = sStartDate2.substring(sStartDate2.indexOf("-")+1,
                                       sStartDate2.lastIndexOf("-"));
	sStDay2 =  sStartDate2.substring(0,sStartDate2.indexOf("-"));
	sStYr2 = sStartDate2.substring(sStartDate2.lastIndexOf("-")+1);
	sEndMon2 = sEndDate2.substring(sEndDate2.indexOf("-")+1,
                                       sEndDate2.lastIndexOf("-"));
	sEndDay2 =  sEndDate2.substring(0,sEndDate2.indexOf("-"));
	sEndYr2 = sEndDate2.substring(sEndDate2.lastIndexOf("-")+1);
	//convert mon to mm format
	if (isNaN(sStMon1) == true)
	{
		sMM = sStMon1.toLowerCase();
	}
	for(var i=0;i<12;i++)
	{
		sMonth[i]=sMonth[i].toLowerCase();
		if (sMM==sMonth[i])
		{
			nFirstStartMonth=i+1;
			break;
		}
	}
	//convert mon to mm format
	if (isNaN(sEndMon1) == true)
	{
		sMM = sEndMon1.toLowerCase();
	}
	for(i=0;i<12;i++)
	{
		sMonth[i]=sMonth[i].toLowerCase();
		if (sMM==sMonth[i])
		{
			nFirstEndMonth=i+1;
			break;
		}
	}
	//convert mon to mm format
	if (isNaN(sStMon2) == true)
	{
		sMM = sStMon2.toLowerCase();
	}
	for(var i=0;i<12;i++)
	{
		sMonth[i]=sMonth[i].toLowerCase();
		if (sMM==sMonth[i])
		{
			nSecondStartMonth=i+1;
			break;
		}
	}
	//convert mon to mm format
	if (isNaN(sEndMon2) == true)
	{
		sMM = sEndMon2.toLowerCase();
	}
	for(i=0;i<12;i++)
	{
		sMonth[i]=sMonth[i].toLowerCase();
		if (sMM==sMonth[i])
		{
			nSecondEndMonth=i+1;
			break;
		}
	}
	if (parseInt(sEndYr2) <= parseInt(sEndYr1))
	{	
		if (parseInt(nSecondEndMonth) > parseInt(nFirstEndMonth))
		{
			if (parseInt(sEndYr2) == parseInt(sEndYr1))
			{
				alert(slabel2 + " should be within the " + slabel1);
				return false;
			}
		}
		else
		{
			if (parseInt(nSecondEndMonth) == parseInt(nFirstEndMonth))
	    	{
				if (parseInt(sEndYr2) == parseInt(sEndYr1))
				{
					if (parseInt(sEndDay2) > parseInt(sEndDay1))
					{
						alert(slabel2 + " should be within the " + slabel1);
						return false;
					}
				}
			}
		}
	}
	else
	{
		alert(slabel2 + " should be within the " + slabel1);
		return false;
	}
	if (parseInt(sStYr2) >= parseInt(sStYr1))
	{	
		if (parseInt(nSecondStartMonth) < parseInt(nFirstStartMonth))
		{
			if (parseInt(sStYr2) == parseInt(sStYr1))
			{
				alert(slabel2 + " should be within the " + slabel1);
				return false;
			}
		}
		else
		{
			if (parseInt(nSecondStartMonth) == parseInt(nFirstStartMonth))
	    	{
				if (parseInt(sStYr2) == parseInt(sStYr1))
				{
					if (parseInt(sStDay2) < parseInt(sStDay1))
					{
						alert(slabel2 + " should be within the " + slabel1);
						return false;
					}
				}
			}
		}
	}
	else
	{
		alert(slabel2 + " should be within the " + slabel1);
		return false;
	}

	if (parseInt(sStYr2) <= parseInt(sEndYr1))
	{	
		if (parseInt(nSecondStartMonth) > parseInt(nFirstEndMonth))
		{
			if (parseInt(sStYr2) == parseInt(sEndYr1))
			{
				alert(slabel2 + " should be within the " + slabel1);
				return false;
			}
		}
		else
		{
			if (parseInt(nSecondStartMonth) == parseInt(nFirstEndMonth))
	    	{
				if (parseInt(sStYr2) == parseInt(sEndYr1))
				{	
					if (parseInt(sStDay2) > parseInt(sEndDay1))
					{
						alert(slabel2 + " should be within the " + slabel1);
						return false;
					}
				}
			}
		}
	}
	else
	{
		alert(slabel2 + " should be within the " + slabel1);
		return false;
	}
	if (parseInt(sEndYr2) >= parseInt(sStYr1))
	{	
		if (parseInt(nSecondEndMonth) < parseInt(nFirstStartMonth))
		{
			if (parseInt(sEndYr2) == parseInt(sStYr1))
			{
				alert(slabel2 + " should be within the " + slabel1);
				return false;
			}
		}
		else
		{
			if (parseInt(nSecondStartMonth) == parseInt(nSecondEndMonth))
	    	{
				if (parseInt(sEndYr2) == parseInt(sStYr1))
				{
					if (parseInt(sEndDay1) < parseInt(sEndDay2))
					{
						alert(slabel2 + " should be within the " + slabel1);
						return false;
					}
				}
			}
		}
	}
	else
	{
		alert(slabel2 + " should be within the " + slabel1);
		return false;
	}
	return true;	
} //End of function

/*
****************************************************************************
'   Name          : ValidateEmail
'	Purpose       : This function Validates the Email Address
'	Parameters    : strValue,strLabel,strRequired
'	Returns       : Boolean
'   Author        : 
'	Created Date  : 
'   Modified Date :
'******************************************************************************/

function ValidateEmail(strValue,strLabel,strRequired) {

if (strValue == "" && strRequired == "N"){
		return true
	}
	else if (strValue == ""){
		alert("Please enter "+ strLabel)
		return false
	}

if (strValue.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1){
		return true
	}
	else{
		alert("Please enter a valid " + strLabel );
		return false
	}
	
}



/*
****************************************************************************
'   Name          : ValidateURL
'	Purpose       : This function Validates the URL
'			       to make sure a . is present
'	Parameters    : sInput,slabel,sMandatory
'	Returns       : Boolean
'   Author        : 
'	Created Date  : 
'   Modified Date :
'******************************************************************************/
function ValidateURL(sInput,slabel,sMandatory)
{
	var iDot = 0
	if (sInput == "" && sMandatory == "N")
	{
		return true
	}
	else if (sInput == "")
	{
		alert("Please enter "+ slabel)
		return false
	}
	for (var iCntr=0;iCntr < sInput.length;iCntr++)
	{
		var iVal = sInput.substring(iCntr,iCntr+1)
		
		if ((iVal == ".") && (iCntr > 0))
		{
			iDot = iDot + 1
			var iDotLocation = iCntr;
		}
		
	}
	if ((iDot == 0) || (iDotLocation == sInput.length))
	{
		alert("Please enter valid URL");
		return false
	}
	//end for
	
	return true;
}

//End of Function


// **********************************************************************************
//  Name			: fn_sp_chk
//	Purpose			: This function will predict 
//					  if there are any spaces either in the begining or the end of the Inpuit
//	Parameters in	: sInput
//	Parameters out	: b_sp(boolean)
//	Returns			: b_sp
//	Author			: 
//	Date			: 
// *******************************************************************************

function fn_sp_chk(s_Input)
{	
	var b_sp = false
	var b_spaces
	while(''+s_Input.charAt(0)==' ')
	{
		s_Input=s_Input.substring(1,s_Input.length);
		b_spaces = "left"		
		b_sp = true
	}
	while(''+s_Input.charAt(s_Input.length-1)==' ')
	{
		s_Input=s_Input.substring(0,s_Input.length-1);
		b_spaces = "right"		
		b_sp = true
	}	
	//check for the spaces if in the left or in the right	
	if (b_spaces=="left")
	{
		alert("Avoid spaces in the beginning of the Remarks")
	}	
	else if (b_spaces=="right")
	{
		alert("Avoid spaces at the end of the Remarks")	
	}	
	return b_sp
}

// ***********************************************************************************************
//	Name			: TrimString
//	Purpose			: This function will trim the input string
//	Parameters in	: sInput
//	Parameters out	: sInput
//	Returns			: sInput
//	Author			: 
//	Date			: 
// ***********************************************************************************************

function TrimString(sInput)
{	
	sInput = sInput.toString();
	while(''+sInput.charAt(0)==' ')
	{
		sInput=sInput.substring(1,sInput.length);
	}
	while(''+sInput.charAt(sInput.length-1)==' ')
	{
		sInput=sInput.substring(0,sInput.length-1);
	}
	return sInput
}
// ***********************************************************************************************
//	Name		:ValidateAlphaNumeric
//	Purpose 	: This function Validates the AlphaNumeric
//				( Includes Alaphabets, Numeric,underscore )
//	Parameters 	: strInput,strlabel
//	Returns 	: Boolean
//	Author		: 
//	Date		: 
// ***********************************************************************************************
function ValidateAlphaNumeric(strInput,strlabel,strMandatory)
{	
	if (strInput == "" && strMandatory == "N")
	{
		return true
	}
	if (strInput == "")
	{
		alert(strlabel + " should be entered")
		return false
	}
	if (strInput.indexOf("\n") != -1)
	{
		alert(strlabel + " should be entered")
		return false
	}
	
	for (var iCntr=0;iCntr < strInput.length;iCntr++)
	{
		var iVal = strInput.substring(iCntr,iCntr+1)
		if ( (iCntr == 0 ) && (iVal == " "))
		{
			alert(strlabel +" can not have blanks in the begining")
			return false
		}
		if ( (iCntr == strInput.length - 1 ) && (iVal == " "))
		{
			alert(strlabel +" can not have blanks at the end")
			return false
		}
		if ( (iCntr == 0 ) && (iVal == "_"))
		{
			alert(strlabel +" can not have under score in the begining")
			return false
		}
		if ( (iCntr == strInput.length - 1 ) && (iVal == "_"))
		{
			alert(strlabel +" can not have under score at the end")
			return false
		}
		if (!((iVal >= "a" && iVal <="z") || (iVal >= "A" && iVal <="Z")||(iVal == "-")||(iVal == "!")||(iVal == "@")||(iVal == ".")||(iVal == "_") ||(iVal == "/")||(iVal == ",")||(iVal == "&")|| (iVal == " ")||(iVal>="0" && iVal<="9")))

		{
			alert(strlabel +" should not contain Special Characters")
			return false
		}
	}
	return true
}
/*
******************************************************************************
'   Name          : ContainsSpace
'	Purpose       : To Validate whether the given input contins any space character or not
'	Parameters    : 
'	Returns       : Boolean
'   Author        : 
'	Created Date  : 
'   Modified Date :
'******************************************************************************/

function ContainsSpace(strInput,strlabel)
{ 
 if (strInput.indexOf("\n") != -1)
 {
  alert(strlabel + " should be entered")
  return false
 }
 for (var iCntr=0;iCntr < strInput.length;iCntr++)
 {
  var iVal = strInput.substring(iCntr,iCntr+1)
  if ( (iCntr == 0 ) && (iVal == " "))
  {
   alert(strlabel +" can not have blanks in the beginning")
   return false
  }
  if ( (iCntr == strInput.length - 1 ) && (iVal == "_"))
  {
   alert(strlabel +" can not have under score at the end")
   return false
  }
  if (iVal==" ")
  {
  	alert(strlabel +" can not have space")
	return false
  }
  
 }
 return true
}



/*
**************************************************************************
|	Name		:	doValidatePhoneChar
|	Purpose 	:	Validation of Phone characters 
|					(Accepts numerics, '(', ')', '+', '-', ' ','X', 'x')
|	Parameters	:	strValue,strLabel,strRequired
|	Returns 	:	Boolean
|	Author		:	
|	Date		:	
**************************************************************************/


function doValidatePhoneChar(strValue,strLabel,strRequired){	
	if(strValue == "" && strRequired == "N"){
		return true
	}
/*	if((strValue == "") || (strValue.indexOf("\n") != -1)){
		alert(strLabel + " should be entered")
		return false
	}*/
	for(var iCounter = 0; iCounter < strValue.length; iCounter++){
		var strEach = strValue.substring(iCounter,iCounter+1)
		
		if(!((strEach >= "0" && strEach <= "9")
			||(strEach == "(")||(strEach == ")")
			||(strEach == " ")||(strEach == "-")
			||(strEach == "X")||(strEach == "x")
			||(strEach == ",")
			||(strEach == "+"))){	
			alert( strLabel + " contains unacceptable characters !" )
			return false
		}// end if
		
	}// end for
	return true
}


/*
***************************************************************************
|	Name		:	doValidateFAXChar
|	Purpose 	:	Validation of FAX characters 
|					(Accepts numerics, '(', ')', '+', '-', ' ')
|	Parameters	:	strValue,strLabel,strRequired
|	Returns 	:	Boolean
|	Author		:	
|	Date		:	
**************************************************************************/
function doValidateFAXChar(strValue,strLabel,strRequired){	
	if(strValue == "" && strRequired == "N"){
		return true
	}
	if((strValue == "") || (strValue.indexOf("\n") != -1)){
		alert(strLabel + " should be entered")
		return false
	}
	for(var iCounter = 0; iCounter < strValue.length; iCounter++){
		var strEach = strValue.substring(iCounter,iCounter+1)
		
		if(!((strEach >= "0" && strEach <= "9")
			||(strEach == "(")||(strEach == ")")
			||(strEach == " ")||(strEach == "-")
			||(strEach == "+"))){	
			alert( strLabel + " contains unacceptable characters !" )
			return false
		}// end if
		
	}// end for
	return true
}
/*
******************************************************************************
'	Name          : fnCheckDate
'   Purpose       : This function checks a particular date
'	Parameters    : sInput,slabel
'	Returns       : Boolean
'   Author        : 
'	Created Date  : 
'   Modified Date :
'******************************************************************************/

function fnCheckDate(sInput,slabel)
{
	var sDate = new Date() //To store the current date	
	var iYr = sDate.getYear(); //To store the year part of current date
	var sDay = "1";
	var sMon = "7";
	
	  var sMonth = new  Array("Jan","Feb","Mar",
						 "Apr","May","Jun","Jul","Aug","Sep",
                         "Oct","Nov","Dec")
	iErr = 0
	if (sInput.indexOf("-") != -1)
	{
		if (sInput.indexOf("-",sInput.indexOf("-")+1) != -1)
		{
			iDD = sInput.substring(0,sInput.indexOf("-"))
			sMM = sInput.substring(sInput.indexOf("-")+1,
                                       sInput.lastIndexOf("-"))
			iYY = sInput.substring(sInput.lastIndexOf("-")+1)
			for(var i=0;i<12;i++)
			{
				if (sMM.toUpperCase() == sMonth[i].toUpperCase())
				{
					sMM = i+1;
					break;
				}
			}
		}
		else
			iErr = 1
	}
	else
	{
		if (sInput.indexOf("/",sInput.indexOf("/")+1) != -1)
		{
			iDD = sInput.substring(0,sInput.indexOf("/"))
			sMM = sInput.substring(sInput.indexOf("/")+1,
                sInput.lastIndexOf("/"))
			iYY = sInput.substring(sInput.lastIndexOf("/")+1)
			for( i=0;i<12;i++)
			{
				if (sMM == sMonth[i])
				{
					sMM = i+1;
					break;
				}
			}
		}
		else
			iErr = 1
	}	
	
	if (iYY <= 30)
		iYY = "20" + iYY
	else if (iYY <= 99)
		iYY = "19" + iYY
	
	//check whether the start year is lesser than end year
	if (parseInt(iYr,10) <= parseInt(iYY,10))
	{	
		//if so, check whether start month is greater than end month
		if (parseInt(sMon,10) > parseInt(sMM,10))
		{
			//if so, check whether the years are same, then raise an error
			if (parseInt(iYY,10) == parseInt(iYr,10))
			{
				
				return false;
			}
		}
		else
		//if the start month is not greater than end month
		{
			//check whether both the months are equal
			if (parseInt(sMM) == parseInt(sMon))
	    	{
				//check whether the start date is greater than end date
				if (parseInt(iYY) == parseInt(iYr))
				{
					if (parseInt(sDay) > parseInt(iDD))
					{
						//then raise an alert
						alert(slabel + " should be in future");
						return false;
					}
				}
			}
		}
	}
	else
	{
		//if start year is greater than end year raise an alert
		alert(slabel + " should be in future")
		return false;
	}
	if (iDD.length  < 2 )
		iDD = "0" + iDD
	return true;		
}
/*
*******************************************************************************
' Name          : pastdate
' Purpose       : This function Validates the Date
' Parameters    : sInput,slabel
' Returns       : Boolean
' Author        : 
' Created Date  : 
' Modified Date :
'******************************************************************************/
function pastdate(sInput,slabel)
{
	var sDate = new Date(); //To store the current date
	var slabel = slabel;//To store the label
	var sDay = sDate.getDate(); //To store the date part of current date
	var sMon = sDate.getMonth()+1; //To store the month part of current date
	var iYr = sDate.getFullYear(); //To store the year part of current date
	var sMonth = new  Array("Jan","Feb","Mar",
						 "Apr","May","Jun","Jul","Aug","Sep",
                         "Oct","Nov","Dec");
	iErr = 0;
	if (sInput.indexOf("-") != -1)
	{
		if (sInput.indexOf("-",sInput.indexOf("-")+1) != -1)
		{
			var iDD = sInput.substring(0,sInput.indexOf("-"));
			var sMM = sInput.substring(sInput.indexOf("-")+1,
                                       sInput.lastIndexOf("-"));
			var iYY = sInput.substring(sInput.lastIndexOf("-")+1);
			for(var i=0;i<12;i++)
			{
				if (sMM.toUpperCase() == sMonth[i].toUpperCase())
				{
					sMM = i+1;
					break;
				}
			}
		}
		else
			iErr = 1
	}
	else
	{
		if (sInput.indexOf("/",sInput.indexOf("/")+1) != -1)
		{
			iDD = sInput.substring(0,sInput.indexOf("/"));
			sMM = sInput.substring(sInput.indexOf("/")+1,
                sInput.lastIndexOf("/"));
			iYY = sInput.substring(sInput.lastIndexOf("/")+1);
			for( i=0;i<12;i++)
			{
				if (sMM == sMonth[i])
				{
					sMM = i+1;
					break;
				}
			}
		}
		else
			iErr = 1
	}	
	
	if (iYY <= 30)
		iYY = "20" + iYY;
	else if (iYY <= 99)
		iYY = "19" + iYY;
	
	//check whether the start year is lesser than end year
	if (parseInt(iYr,10) >= parseInt(iYY,10))
	{	
		//if so, check whether start month is greater than end month
		if (parseInt(sMon,10) < parseInt(sMM,10))
		{
			//if so, check whether the years are same, then raise an error
			if (parseInt(iYY,10) == parseInt(iYr,10))
			{
				alert(slabel + " should not be in future.");
				return false;
			}
		}
		else
		//if the start month is not greater than end month
		{
			//check whether both the months are equal
			if (parseInt(sMM,10) == parseInt(sMon,10))
	    	{
				//check whether the start date is greater than end date
				if (parseInt(iYY,10) == parseInt(iYr,10))
				{
					if (parseInt(sDay,10) < parseInt(iDD,10))
					{
						//then raise an alert
						alert(slabel + " should not be in future.");
						return false;
					}
				}
			}
		}
	}
	else
	{
		//if start year is greater than end year raise an alert
		alert(slabel + " should not be in future.")
		return false;
	}
	if (iDD.length  < 2 )
		iDD = "0" + iDD;
	return true;
} //End of function
/*
*******************************************************************************
' Name          : CheckIfCharArea
' Purpose       : This function Validates the special chars
' Parameters    : sInput,slabel,sMandatory
' Returns       : Boolean
' Author        : 
' Created Date  : 
' Modified Date :
'******************************************************************************/
	function CheckIfCharArea(sInput,slabel,sMandatory)
		{	
			if (sInput == "" && sMandatory == "N")
			{
				return true
			}
			else if (sInput == "")
			{
				alert("Please enter a " + slabel)
				return false
			}
    		for (var iCntr=0;iCntr < sInput.length;iCntr++)
			{
	  			var sVal = sInput.substring(iCntr,iCntr+1)
	  			if (!((sVal >= "a" && sVal <= "z") || (sVal >= "A" && sVal <= "Z") 
	      			|| sVal == " " || sVal == "."  || sVal == "(" || sVal == ")" 
					|| sVal == "&" || sVal == ","))
	  			{
					alert("Please enter a valid " + slabel);
					return false
	  			}
			}
			return true;
		} //End of function


// ****************************************************************
//	Purpose                     | To compare start and end dates 
//	Parameters in               | strFirstDate,strSecondDate
//	Parameters out              | None
//	Returns                     | A boolean value 
//	Users errors thrown         | None
//	Notes                       | 
// ***************************************************************

function DateComparison(strFirstDate,strSecondDate)
{
    alert('inside DateComparison')
   	strMonthArray = new Array('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC')
	
	strFirstyearvalue = parseInt(strFirstDate.substring(7,11))
	strFirstdatevalue = splitnumber(strFirstDate.substring(0,2))
	strMonthValue = strFirstDate.substring(3,6)
	
	for ( i = 0; i  <= 12; i++)
	{
		if (strMonthValue.toUpperCase() == strMonthArray[i])
		strFirstmonthvalue = i 			
	}
	
	strSecondyearvalue = parseInt(strSecondDate.substring(7,11))
	strSeconddatevalue = splitnumber(strSecondDate.substring(0,2))
	strMonthValue = strSecondDate.substring(3,6)
	
	for ( i = 0; i  <= 12; i++)
	{
		if (strMonthValue.toUpperCase() == strMonthArray[i])
		strSecondmonthvalue = i 			
	}
	if (strSecondyearvalue < strFirstyearvalue)
		return false
	else
		if (strSecondyearvalue == strFirstyearvalue)
		{
			if (strSecondmonthvalue < strFirstmonthvalue)
				return false
			else
				if (strSecondmonthvalue == strFirstmonthvalue)
				{
					if (strSeconddatevalue <strFirstdatevalue)
						return false
					else
						return true
				}
				else
					return true
		}
		else
			return true
}


// ****************************************************************
//	Purpose                     | To compare start and end dates 
//	Parameters in               | strFirstDate,strSecondDate
//	Parameters out              | None
//	Returns                     | A boolean value 
//	Users errors thrown         | None
//	Notes                       | 
// ***************************************************************

function IsFirstDateLessThanSecondDate(strFirstDate,strSecondDate)
{
	strMonthArray = new Array('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC')
	
	strFirstyearvalue = parseInt(strFirstDate.substring(7,11))
	strFirstdatevalue = splitnumber(strFirstDate.substring(0,2))
	strMonthValue = strFirstDate.substring(3,6)
	
	for ( i = 0; i  <= 12; i++)
	{
		if (strMonthValue.toUpperCase() == strMonthArray[i])
		strFirstmonthvalue = i 			
	}
	
	strSecondyearvalue = parseInt(strSecondDate.substring(7,11))
	strSeconddatevalue = splitnumber(strSecondDate.substring(0,2))
	strMonthValue = strSecondDate.substring(3,6)
	
	for ( i = 0; i  <= 12; i++)
	{
		if (strMonthValue.toUpperCase() == strMonthArray[i])
		strSecondmonthvalue = i 			
	}
	if (strSecondyearvalue < strFirstyearvalue)
		return false
	else
		if (strSecondyearvalue == strFirstyearvalue)
		{
			if (strSecondmonthvalue < strFirstmonthvalue)
				return false
			else
				if (strSecondmonthvalue == strFirstmonthvalue)
				{
					if (strSeconddatevalue <=strFirstdatevalue)
						return false
					else
						return true
				}
				else
					return true
		}
		else
			return true
}

		

