
var min_year = 1900; // defines lowest year in year menu
var max_year = 2020; // defines highest year in the year menu

// make this false to prevent the weekday element from being displayed
var weekday_showing = false;

// make this true to make dayofweek return a number (0-6)
var dayofweek_returned_as_number = false;

// make this true to make month return a number (0-11)
var month_returned_as_number = true;

if (min_year <= 400)
	alert("Minimum year must be higher than 400 for this algorithm to work.");
	
// The following code adds three methods to the built-in Date object
function _strMonth() {
	var months = new Array("January", "February", "March", "April",
	   "May", "June", "July", "August", "September", "October", 
	   "November", "December");
return months[this.getMonth()];
}

function _strDay() {
	var days= new Array("Sunday", "Monday", "Tuesday", "Wednesday", 
	    "Thursday", "Friday", "Saturday");
return days[this.getDay()];
}

function _weekOf() {
	sunday = ((arguments[0]==null) || (!arguments[0])); // Check for optional argument
return (new Date(this - ((this.getDay() - ((sunday) ? 0 : 1)) *24*60*60*1000)));
}

// Add these methods to all dates
Date.prototype.weekOf = _weekOf;
Date.prototype.strMonth = _strMonth;
Date.prototype.strDay = _strDay;

function changeDays(numb,date_form,aname1, aname2, aname3) {
	MonthCtrl = eval("date_form." + aname2);
	DayCtrl = eval("date_form." + aname1);
	YearCtrl = eval("date_form." + aname3);
	
	mth = eval(MonthCtrl.selectedIndex)-1;
	sel = eval(YearCtrl.selectedIndex);
	
	//yr = eval(YearCtrl.options[sel].text);
	yr = eval(YearCtrl.options[sel].value);

	if (numb != 1) {
		numDays = numDaysIn(mth,yr);
		numDays = numDays + 1;
		eval("date_form." + aname1 +".options.length="+numDays) ;
		for (i=27;i<numDays;i++) {
			j=i+1;
			j=i;
			eval("date_form." + aname1 +".options["+i+"].text = "+j);
		}
	}
}
	
function numDaysIn(mth,yr) {
	if (mth==3 || mth==5 || mth==8 || mth==10) return 30;
	else if ((mth==1) && leapYear(yr)) return 29;
	else if (mth==1) return 28;
	else return 31;
}

function leapYear(yr) {

	if (((yr % 4 == 0) && yr % 100 != 0) || yr % 400 == 0)
		return true;
	else
		return false;
}

function arr() {
	this.length=arr.arguments.length;
	for (n=0;n<arr.arguments.length;n++) {
		this[n] = arr.arguments[n];
	}
}

weekdays = new arr("Sun.","Mon.","Tues.","Wed.", "Thurs.","Fri.","Sat.");
 
months = new arr("Jan.","Feb.","Mar.","Apr.","May","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec.");
 
var cur = new Date();

function getWeekDay(mth,day,yr) {
	first_day = firstDayOfYear(yr);
	for (num=0;num<mth;num++) {
		first_day += numDaysIn(num,yr);
	}
	first_day += day-1;
return first_day%7;
}

function firstDayOfYear(yr) {
	diff = yr - 401;
	return parseInt((1 + diff + (diff / 4) - (diff / 100) + (diff / 400)) % 7);
}

// fixes a Netscape 2 and 3 bug
function getFullYear(d) { // d is a date object
	yr = d.getYear();
	if (yr < 1000)
		yr+=1900;
	return yr;
}

function datedrop(myname1, myname2, myname3 ,feeddate){
	//alert (feeddate);
	if(!feeddate)
	{
		d=new Date();
		edmonth=d.getMonth();
		edday=d.getDate();
		edyear=d.getFullYear();
	}
	else
	{
		d=new Date(feeddate)
		edmonth=d.getMonth();
		edday=d.getDate();
		edyear=d.getFullYear();
	}

	
	// write day element
	document.write("<select name="+myname1+" size=1 onChange='changeDays(0,this.form,"+'"'+myname1+'"'+',"'+myname2+'"'+',"'+myname3+'"'+")'>");
	for (i=1;i<=numDaysIn(d.getMonth(),getFullYear(d));i++)
	 document.write("<option"+(edday==i?" selected":"")+" value="+i+">"+i+"\n");

	// write month element
	document.write("</select><select name="+myname2+" size=1 onChange='changeDays(0,this.form,"+'"'+myname1+'"'+',"'+myname2+'"'+',"'+myname3+'"'+")'>\n");
	for (i=1;i<13;i++)
	{
	   document.write("<option"+(month_returned_as_number?" value="+(i-1):"")
	   +(edmonth==i-1?" selected":"")+">"+months[i-1]+"\n");
	}
	
	// write year element
	document.write("</select><select name="+myname3+" size=1 onChange='changeDays(0,this.form,"+'"'+myname1+'"'+',"'+myname2+'"'+',"'+myname3+'"'+")'>\n");
	for (i=min_year;i<max_year;i++)
	 document.write("<option"+(edyear==i?" selected":"")+" value="+i+">"+i+"\n");
	document.write("</select>");
}

function isFutureDate(day, month, year)
{
	d = new Date()    //today's date
	mill=new Date(year, month, day, 00, 00, 00)    //Next millennium start date
	diff = mill-d    //difference in milliseconds
	mtg = new String(diff/86400000)    //calculate days and convert to string
	point=mtg.indexOf(".")    //find the decimal point
	days=mtg.substring(0,point)    //get just the whole days
//	document.write("There are only " + days + " days to today.")
	if (days>=0)
		return true;
	else 
		return false;
}

function compareDate(day1,month1,year1,day2,month2,year2)
{
	date1=new Date(year1,month1,day1,00,00,00);
	date2=new Date(year2,month2,day2,00,00,00);
	
	//date1=parseInt(year1)*365 + parseInt(month)
	//alert("date 1: "+day1+" "+month1+" "+year1);
	//alert("date 2: "+day2+" "+month2+" "+year2);
	diff=date2-date1;
	//alert(diff);

	if(diff < 0)
		return false;
	else 
		return true;
}


function datedropYearRange(myname1, myname2, myname3 ,feeddate, miny, maxy){
	//alert (feeddate);
	min_year = miny;
	max_year = maxy;
	
	if(!feeddate)
	{
		d=new Date();
		edmonth=d.getMonth();
		edday=d.getDate();
		edyear=d.getFullYear();
	}
	else
	{
		if (feeddate=="0/0/0")
		{
			d=new Date("1/1/1000")
			edmonth=-1;
			edday=0;
			edyear=d.getFullYear();
		}
		else
		{
			d=new Date(feeddate)
			edmonth=d.getMonth();
			edday=d.getDate();
			edyear=d.getFullYear();
		}
	}


	// write day element
	document.write("<select id='"+myname1+"' name='"+myname1+"' size=1 onChange='changeDays(0,this.form,"+'"'+myname1+'"'+',"'+myname2+'"'+',"'+myname3+'"'+")' style='width:77px;' >");
	document.write("<option value=''>Day\n");
	for (i=1;i<=numDaysIn(d.getMonth(),getFullYear(d));i++)
	 document.write("<option"+(edday==i?" selected":"")+" value="+i+">"+i+"\n");

	// write month element
	document.write("</select><select id='"+myname2+"' name="+myname2+" size=1 onChange='changeDays(0,this.form,"+'"'+myname1+'"'+',"'+myname2+'"'+',"'+myname3+'"'+")' style='width:77px;' >\n");
	document.write("<option value=''>Month\n");
	for (i=1;i<13;i++)
	{ 
	  // document.write("<option"+(month_returned_as_number?" value="+(i-1):"")
	  // +(edmonth==i-1?" selected":"")+">"+months[i-1]+"\n");
	  document.write("<option"+(month_returned_as_number?" value="+(i):"")
	  +(edmonth==i-1?" selected":"")+">"+months[i-1]+"\n");
	}
	// write year element
	document.write("</select><select id='"+myname3+"' name="+myname3+" size=1 onChange='changeDays(0,this.form,"+'"'+myname1+'"'+',"'+myname2+'"'+',"'+myname3+'"'+")'  style='width:77px;' >\n");
	document.write("<option value=''>Year\n");
	for (i=min_year;i<=max_year;i++)
	 document.write("<option"+(edyear==i?" selected":"")+" value="+i+">"+i+"\n");
	document.write("</select>");
}

