

function ReturnYear(dtDate)
{
	//alert("inReturnYear " + dtDate); 
	//alert("***" + dtDate);
	if (!(dtDate == null)) {
		//alert("not null");
		//if (dtDate.indexOf("/") == -1) { //javascript date object
		//	alert("bbbb" + dtDate);
		//	return(dtDate.getFullYear());
		//} else {
			//alert((dtDate.split("/"))[2]);
			return(parseInt((dtDate.split("/"))[2], 10));
		//}
	} else {
		//alert("^^^^^^^^^^^");
		//alert(dtDate == null);
		//alert("is null");
		return("");
	}
}

function ReturnMonth(dtDate)
{
	//alert("inReturnMonth " + dtDate); 
	//alert("222222222" + dtDate);
	if (!(dtDate == null)) {
	//	if (dtDate.indexOf("/") == - 1) { //javascript date object
	//		return(dtDate.getMonth() + 1); //javascript represents months using 0-11
	//	} else {
			return(parseInt((dtDate.split("/"))[0], 10));	
	//	}
	} else {
		return("");
	}
}

function ReturnDay(dtDate)
{
	//var arrDate = dtDate.split("/");
	
	//alert("in ReturnDay " + dtDate);
	//alert((dtDate.split("/"))[0] + "\n" + (dtDate.split("/"))[1] + "\n" + (dtDate.split("/"))[2]);
	//alert(parseInt((dtDate.split("/"))[0]) + "\n" + parseInt((dtDate.split("/"))[1]) + "\n" + parseInt((dtDate.split("/"))[2]));	
	//alert((arrDate[0] - 0) + "\n" + (arrDate[1]-0) + "\n" + (arrDate[2]-0));
	//alert(arrDate[1] - 0);
	//alert(((dtDate.split("/"))(2)) - 0);
	//alert("inReturnDay " + dtDate); 
	if (!(dtDate == null)) {
	//	if (dtDate.indexOf("/") == -1) { //javascript date object 
	//		return(dtDate.getDate());
	//	} else {
			return(parseInt((dtDate.split("/"))[1], 10));		
	//	}
	} else {
		return("");
	}
}

function isDate(dtDate)
{
	var year, month, day;
	
	//alert("wrweR");
	
	year = ReturnYear(dtDate);
	month = ReturnMonth(dtDate);
	day = ReturnDay(dtDate);
	//alert(dtDate + "---" + year + " " + month + " " + day);
	
	//alert("in");
	//alert(year + month + day);	
	
	if (!(isNaN(year)) && !(isNaN(month)) && !(isNaN(day))) 
	{
		//alert("ok");
		if ((year >= 1753) && (year <= 9999) && (day >= 1) && (day <= 31) && (month >= 1) && (month <= 12))
		{		
			
			//31 days
			if ((month == 1) || (month==3) || (month == 5) || (month == 7) || (month == 8) || (month == 10) || (month == 12))
			{
				if (day <= 31)
				{
					return(true);
				}
				else
				{
					return(false);
				}
			}
			//february
			else if (month == 2)
			{
				if ((year%4) == 0) //leap year
				{
					if (day <= 29) 
					{
						return(true);
					}
					else
					{
						return(false);
					} 
				}
				else
				{
					if (day <= 28)
					{
						return(true);
					}
					else
					{
						return(false);
					}
				}	
			}
			//30 days
			else 
			{
				if (day <= 30)
				{
					return(true);
				}
				else
				{
					return(false);
				}
			}
		}
		else
		{	
			return(false);
		} //[outside SQL datatime bounds and normal date bounds]
	}
	else
	{
		//alert("nook");
		return(false);
	} //[check for NaN]
}

function validateDateInterval(inputDate, afterDate, beforeDate)
{
	var dtInput, dtAfter, dtBefore;
	
	if (isDate(inputDate))
	{
		dtInput = new Date(ReturnYear(inputDate), ReturnMonth(inputDate) - 1, ReturnDay(inputDate));
	
		if (isDate(afterDate))
		{
			dtAfter = new Date(ReturnYear(afterDate), ReturnMonth(afterDate) - 1, ReturnDay(afterDate));		
		
			if (dtInput < dtAfter)
			{
				//alert(dtInput + " < " + dtAfter + " failed");
				return(false);
			}
		}
		
		if (isDate(beforeDate))
		{
			dtBefore = new Date(ReturnYear(beforeDate), ReturnMonth(beforeDate) - 1, ReturnDay(beforeDate));		
		
			if (dtInput > dtBefore)
			{
				//alert(dtInput + " > " + dtAfter + " failed");			
				return(false);
			}
		}
	
		return(true);
	
	}
	else
	{
		//alert("boooo");
		return(false);
	}
}


function validateExistence(inputString)
{
	if (inputString.length > 0) 
	{
		return(true);
	}
	else
	{
		return(false);
	}
}


function addDate(Interval, Number, dtDate)
{
	var newDate, tempDate;
	
	//alert(Interval);
	//alert("in AddDate\n" + "Interval=" + Interval + "\n" + "Number=" + Number + "\n" + "Date=" + dtDate + "\n");
	
	switch(Interval) {
		case "d":
			var newDay;
			
			newDate = dtDate;
			//alert(newDate);
			
			newDay = ReturnDay(newDate) + parseInt(Number, 10); 
			
			
			do {
				//alert("in AddDate\n" + "Interval=" + Interval + "\n" + "Number=" + Number + "\n" + "Date=" + dtDate + "\n" + "newDate=" + newDate + "\n" + "newDay=" + newDay);
			
				if (newDay > ReturnDay(getLastDateOfMonth(newDate))) {
					//alert("newday=" + newDay);
					newDay = newDay - ReturnDay(getLastDateOfMonth(newDate));
					//alert("newDay=" + newDay);
					newDate = ReturnMonth(addDate("m", 1, newDate)) + "/" + newDay + "/" + ReturnYear(newDate);

				} else if(newDay < 1) {
					newDay = ReturnDay(getLastDateOfMonth(newDate)) + newDay;
					newDate = ReturnMonth(addDate("m", -1, newDate)) + "/" + newDay + "/" + ReturnYear(newDate);
					
				} else {
					newDate = ReturnMonth(newDate) + "/" + newDay + "/" + ReturnYear(newDate);
				}
			} while(!isDate(newDate)); 
			
			break;
			
		case "m":
			var newMonth, newYear;
		
			newMonth = ReturnMonth(dtDate) + parseInt(Number, 10);
			newYear = ReturnYear(dtDate);
			
			//alert("newMonth=" + newMonth);
			
			if (newMonth > 12) 
			{
				newMonth = parseInt(newMonth, 10) - 12;
				newYear = newYear + 1;
			}
			else if (newMonth < 1)
			{
				newMonth = parseInt(newMonth, 10) + 12;
				newYear = newYear - 1;
			}
			
			//alert("new month after=" + newMonth);
			newDate = newMonth + "/" + ReturnDay(dtDate) + "/" + newYear;
			
			//alert("1 " + newDate);		

			while(!isDate(newDate)) {
				//alert(newDate);
				newDate = ReturnMonth(newDate) + "/" + (ReturnDay(newDate) - 1) + "/" + ReturnYear(newDate);
			}
			
			break;	
		
		case "y":
			//alert("y");
		
			tempDate = ReturnYear(dtDate) + parseInt(Number, 10);
			
			newDate = ReturnMonth(dtDate) + "/" + ReturnDay(dtDate) + "/" + tempDate;
			
			while(!isDate(newDate)) {
				newDate = ReturnMonth(newDate) + "/" + (ReturnDay(newDate) - 1) + "/" + ReturnYear(newDate);
			}

			break;
	}
	
	//alert(Date + "*" + newDate);
	return(newDate);
}

function getLastDateOfMonth(dtDate)
{
	var LastDate;
	var LastDay;
	
	LastDate = "";
	LastDay = 32;
		
	while(!isDate(LastDate)) {
		LastDay = LastDay - 1;
		LastDate = ReturnMonth(dtDate) + "/" + LastDay + "/" + ReturnYear(dtDate);
	} 

	return(LastDate);

}

function getEligibilityDate(BirthDate)
{
	var EligibilityDate;
	
	//alert("E=" + BirthDate);
	
	if (ReturnDay(BirthDate) == 1) {
		EligibilityDate = addDate("m", -1, BirthDate);
	} else {
		EligibilityDate = BirthDate;
	}

	EligibilityDate = ReturnMonth(EligibilityDate) + "/1/" + ReturnYear(EligibilityDate);
	EligibilityDate = addDate("y", 65, EligibilityDate);
	
	return EligibilityDate;

}

function getIEPBeginDate(BirthDate)
{
	var IEPBeginDate;
	
	//alert("in GetIEPBeginDate");
	IEPBeginDate = getEligibilityDate(BirthDate);	
	//alert("GetIEPBeginDate - afterIEPBeginDate=" + IEPBeginDate);
	IEPBeginDate = addDate("m", -3, IEPBeginDate);
	//alert("GetIEPBeginDate - afterIEPBeginDate2");	
	return IEPBeginDate;
	
}

function getIEPEndDate(BirthDate)
{
	var IEPEndDate;
	
	IEPEndDate = getEligibilityDate(BirthDate);
	
	IEPEndDate = addDate("m", 3, IEPEndDate);
	
	IEPEndDate = ReturnMonth(IEPEndDate) + "/" + ReturnDay(getLastDateOfMonth(IEPEndDate)) + "/" + ReturnYear(IEPEndDate);
	
	return IEPEndDate;

}

function getGEPBeginDate(dtDate)
{
	return("1/1/" + ReturnYear(dtDate));
}

function getGEPEndDate(dtDate)
{
	var GEPEndDate;
	var EndDateWeekName;
	
	//GEPEndDate = "/31/" + ReturnYear(Date);
	//GEPEndDate = new Date(2003, 2, 2);
	GEPEndDate = "3/31/" + ReturnYear(dtDate);
	//alert(GEPEndDate);
	//GEPEndDate = new Date(ReturnYear(dtDate),2,31);  //month is 2 because js months range from 0-11
	
	//EndDateWeekName = GEPEndDate.getDay();
	EndDateWeekName = (new Date(ReturnYear(GEPEndDate), ReturnMonth(GEPEndDate) - 1, ReturnDay(GEPEndDate))).getDay();
	
	//alert("EndDateWeekName=" + EndDateWeekName);
	
	while((EndDateWeekName == 0) || (EndDateWeekName == 6)) { //0=Sunday, 6=Saturday
		GEPEndDate = addDate("d", 1, GEPEndDate);
		//alert("new one" + GEPEndDate);
		EndDateWeekName = (new Date(ReturnYear(GEPEndDate), ReturnMonth(GEPEndDate) - 1, ReturnDay(GEPEndDate))).getDay();
		//EndDateWeekName = GEPEndDate.getDay();
	}
	
	//GEPEndDate = (GEPEndDate.getMonth() + 1) + "/" + GEPEndDate.getDate() + "/" + GEPEndDate.getFullYear();
	
	return GEPEndDate;
}

function getMonthName(Month)
{
	var MonthNames = new Array();

	MonthNames[1] = "January";
	MonthNames[2] = "February";
	MonthNames[3] = "March";
	MonthNames[4] = "April";
	MonthNames[5] = "May";
	MonthNames[6] = "June";
	MonthNames[7] = "July";						
	MonthNames[8] = "August";
	MonthNames[9] = "September";
	MonthNames[10] = "October";
	MonthNames[11] = "November";
	MonthNames[12] = "December";	
	
	return MonthNames[Month];
}

function formatDate(DateValue)
{
	return getMonthName(ReturnMonth(DateValue)) + " " + ReturnDay(DateValue) + ", " + ReturnYear(DateValue);
}