var today = new Date(); //define date object
var min_year = 1975; // defines lowest year in year menu
var max_year = today.getFullYear() - 10; // defines highest year in the year menu

// make this false to prevent the weekday element from being displayed
var weekday_showing = true;

// 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,date_form, no) {
 mth = eval("date_form.bln" + no + ".selectedIndex");
 sel = eval("date_form.thn" + no + ".selectedIndex");
 yr = eval("date_form.thn" + no + ".options[sel].text");
 if (numb != 1) {
  numDays = numDaysIn(mth,yr);
  eval("date_form.tgl" + no + ".options.length = numDays");
  for (i=27;i<numDays;i++) {
    eval("date_form.tgl" + no + ".options[i].text = i+1");
  }
 }
 day = eval("date_form.tgl" + no + ".selectedIndex+1");
}

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];
 }
}
 
//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;
}

function create_date_element(no) {
		<!--//write day element
		document.write("<select name='tgl" + no + "' size='1' onChange='changeDays(1,this.form," + no + ")'>\n");
		for (i=1;i<=numDaysIn(cur.getMonth(),getFullYear(cur));i++)
			document.write("<option value="+i+(today.getDate()==i?" selected ":"")+">"+i+"\n");
		document.write("</select>"+"\n");
 										
		// write month element
		document.write("<select name=bln" + no + " onChange='changeDays(0,this.form," + no + ")'size=1>");
		for (i=0;i<12;i++)
			document.write("<option"+(month_returned_as_number?" value="+(i+1):"")+(today.getMonth()==i?" selected":"")+">"+months[i]+"\n");
		document.write("</select>"+"\n");

		// write year element
		document.write("<select name=thn" + no + " onChange='changeDays(0,this.form," + no + ")' size=1>\n");
		for (i=min_year;i<max_year;i++)
			document.write("<option value="+i+(getFullYear(today)==i?" selected":"")+">"+i+"\n");
		document.write("</select>"+"\n");
		// -->
}

function create_date_edit(no,tgl,bln,thn) {
		today=new Date(thn,bln-1,tgl);

		document.write("<select name='tgl" + no + "' size='1' onChange='changeDays(1,this.form," + no + ")'>\n");
		for (i=1;i<=numDaysIn(cur.getMonth(),getFullYear(cur));i++)
			document.write("<option value="+i+(today.getDate()==i?" selected ":"")+">"+i+"\n");
		document.write("</select>"+"\n");
		// write month element
		document.write("<select name=bln" + no + " onChange='changeDays(0,this.form," + no + ")'size=1>");
		for (i=0;i<12;i++)
			document.write("<option"+(month_returned_as_number?" value="+(i+1):"")+(today.getMonth()==i?" selected":"")+">"+months[i]+"\n");
		document.write("</select>"+"\n");
		<!--//write day element
		
		// write year element
		document.write("<select name=thn" + no + " onChange='changeDays(0,this.form," + no + ")' size=1>\n");
		for (i=min_year;i<max_year;i++)
			document.write("<option value="+i+(today.getFullYear()==i?" selected":"")+">"+i+"\n");
		document.write("</select>"+"\n");
}
