/* 	FIXES THE DAYS IN A SELECT 
		WHERE THERE ARE 3 SELECTS
		NAMED MONTH, DAY AND YEAR.
		
		PASS THE NAME OF THE FORM IN QUOTES, IE. setDays('formName');
		
		IF THE SELECT FIELDS ARE NOT NAMED MONTH, DAY, AND YEAR YOU NEED TO PASS THE FIELD NAMES IN THE FUNCTION CALL:
		setDays('myFormName','myYearFieldName','myMonthFieldName','myDayFieldName');
		
		IF YOUR DROPDOWN HAS A BLANK OR DASH 'BEFORE' THE LISTS, SET EXTRAFIELD TO 1:
		setDays('myFormName','myYearFieldName','myMonthFieldName','myDayFieldName',1);
		
		ANYTHING THAT QUALIFIES AS DEFAULT CAN BE SET TO NULL- OR IF AT THE END, LEAVE IT OFF:
		setDays('myFormName','myYearFieldName',NULL,'myDayFieldName',1);
		
		extraField MEANS THAT THERE IS A BLANK OR DASH FIELD 'BEFORE' THE MONTH,DAY,YEAR LISTS. */

function setDays(frmName,myYear,myMonth,myDay,extraField) {
	obj = eval("document."+frmName);
  c = 1;
	if(myYear) 	objMyYear		= eval("obj."+myYear); 	else objMyYear = obj.year;
	if(myMonth)	objMyMonth 	= eval("obj."+myMonth);	else objMyMonth = obj.month;
	if(myDay) 	objMyDay		= eval("obj."+myDay);		else objMyDay = obj.day;
  var y = objMyYear.options[objMyYear.selectedIndex].value;
  var m = objMyMonth.selectedIndex;
	var d = objMyDay;
	var dayLength = d.length;
	
	if(frmName=='qd')	m=m+4;

  // find number of days in current month
  if ( (!extraField && ((m == 3) || (m == 5) || (m == 8) || (m == 10))) || (extraField && ((m == 4) || (m == 6) || (m == 9) || (m == 11))) ) {
    days = 30;
  }
  else if ( (!extraField && m == 1) || (extraField && m == 2) ) {
    // check for leapyear - Any year divisible by 4, except those divisible by 100 (but NOT 400)
    if ( (Math.floor(y/4) == (y/4)) && ((Math.floor(y/100) != (y/100)) || (Math.floor(y/400) == (y/400))) )
      days = 29;
    else
      days = 28;
  }
  else {
    days = 31;
  }

	// CHECKS TO ACCOMODATE EXTRA BLANK/DASH FIELD BEFORE LISTS
	if(extraField){daycheck = dayLength-1; alterdays = days+1; indexadd = 0;}
	else{daycheck = dayLength; alterdays = days; indexadd = 1;}

  // if (days in new month > current days) then we must add the extra days
  if (days > daycheck) {
		d.length = alterdays;
    for (i = dayLength; i < alterdays; i++) {
      d.options[i].text = i + indexadd;
      d.options[i].value = i + indexadd;
    }
  }

  // if (days in new month < current days) then we must delete the extra days
  if (days < daycheck) {
    d.length = alterdays;
    if (d.selectedIndex == -1) 
      d.selectedIndex = days - 1;
  }  
}