var min_year = 2009; // defines lowest year in year menu
var max_year = 2016; // 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.");

function changeDays(numb,form_num,date_form) 
{
	if(form_num == 1)
	{
		 mth = date_form.month1.selectedIndex;
		 sel = date_form.year1.selectedIndex;
		 yr = date_form.year1.options[sel].text;
		 
		 if (numb != 1) 
		 {
		 	numDays = numDaysIn(mth,yr);
			date_form.day1.options.length = numDays;
			for (i=27;i<numDays;i++) 
			{
				date_form.day1.options[i].text = i+1;
			}
		 }
		 day = date_form.day1.selectedIndex+1;
		 if (weekday_showing)
		  date_form.dayofweek1.selectedIndex = getWeekDay(mth,day,yr);
	}
	else
	{
		 mth = date_form.month2.selectedIndex;
		 sel = date_form.year2.selectedIndex;
		 yr = date_form.year2.options[sel].text;
		 
		 if (numb != 1) 
		 {
		 	numDays = numDaysIn(mth,yr);
			date_form.day2.options.length = numDays;
			for (i=27;i<numDays;i++) 
			{
				date_form.day2.options[i].text = i+1;
			}
		 }
		 day = date_form.day2.selectedIndex+1;
		 if (weekday_showing)
		  date_form.dayofweek2.selectedIndex = getWeekDay(mth,day,yr);
	}
}
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.");
// *** comment out the one you don't want to use ***
//weekdays = new arr("Sunday","Monday","Tuesday","Wednesday",
// "Thursday","Friday","Saturday");
 
months = new arr("Jan.","Feb.","Mar.","Apr.","May",
 "June","July","Aug.","Sep.","Oct.","Nov.","Dec.");
// *** comment out the one you don't want to use ***
//months = new arr("January","February","March","April","May",
// "June","July","August","September","October","November","December");
 
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;
}

// write dayofweek element
if (weekday_showing) {
 document.write("<select name=dayofweek size=1>");
 for (i=0;i<7;i++)
  document.write("<option"+(dayofweek_returned_as_number?" value="+i:"")
   +(cur.getDay()==i?" selected":"")+">"+weekdays[i]+"\n");
 document.write("</select>");
}

function WriteMonth(num,increase)
{
	// write month element
	document.write("<select name=month"+num+" onChange='changeDays(0,"+num+",this.form)' size=1>");
	for (i=0;i<12;i++)
	{	
		a = i;
		a = a + 1;
		document.write("<option value="+a+(cur.getMonth()+increase==i?" selected":"")+">"+months[i]+"\n");
	}
	 document.write("</select>");
}

function WriteDay(num,increase)
{
	// write day element
	document.write("</select><select name=day"+num+" size=1 onChange='changeDays(1,"+num+",this.form)'>\n");
	for (i=1;i<=numDaysIn(cur.getMonth(),getFullYear(cur));i++)
	 document.write("<option"+(cur.getDate()==i?" selected":"")+" Value="+i+">"+i+"\n");
	document.write("</select>");
}

function WriteYear(num)
{
	// write year element
	document.write("</select><select name=year"+num+" onChange='changeDays(0,"+num+",this.form)' size=1>\n");
	for (i=min_year;i<max_year;i++)
	 document.write("<option"+(getFullYear(cur)==i?" selected":"")+" Value="+i+">"+i+"\n");
	document.write("</select>");
}


	

