// Based on the date selector script by Arash Ramin 
// available at http://www.digitalroom.net.
// Amended by shopcreator to make form independant
// and to support multiple date fields per form.
//
// for this to work, you need 3 <select> lists, 
// in the format basenameday, basenamemonth, basenameyear
// where basename can be whatever you want as a name so long
// as its the same across all 3 fields (this is so that you
// can have more than one date field set in a form, just give 
// each set a different base name.
// then on the month and year select items, add in :
// onclick="setDays("name_of_your_form","your_basename")


function RePopulateYearList(formname, datefield_basename, year_start, year_end)
{
  var yearitem = eval("document." + formname + "." + datefield_basename + "year");
  yearitem.length = 0;
  yeardiff = year_end - year_start;
  if (yeardiff < 0 ) yeardiff = 0;
  year_counter = year_start;
  i = 0;
  while ( i <= yeardiff)
  {
  	yearitem.length = i + 1;
	yearitem.options[i].text = year_counter;
	yearitem.options[i++].value = year_counter++;
  }  
}

function setCurrentDate(formname, datefield_basename) {
  // changes the date selector menus to use current date
  var currentDate = new Date();
  var i = 0;
  var indexfound = false;
  
  yearitem = eval("document." + formname + "." + datefield_basename + "year");
  monthitem = eval("document." + formname + "." + datefield_basename + "month");
  dayitem = eval("document." + formname + "." + datefield_basename + "day");
  
  while (i < yearitem.length && indexfound == false)
  {
  	if(yearitem.options[i].value == currentDate.getYear())
	{
		yearitem.selectedIndex = i;
		indexfound = true;
	}
	i++;
  }
  monthitem.selectedIndex = currentDate.getMonth();

  setDays(formname, datefield_basename);  
  dayitem.selectedIndex = currentDate.getDate() - 1;
}


function setDays(formname, datefield_basename) {

  var argv = setDays.arguments;
  var argc = setDays.arguments.length;
  var argument3 = (argc > 2) ? argv[2] : null;
  
  var yearitem = eval("document." + formname + "." + datefield_basename + "year");
  var y = yearitem.options[yearitem.selectedIndex].value;
  var monthitem = eval("document." + formname + "." + datefield_basename + "month");
  var m = monthitem.selectedIndex;
  var dayitem = eval("document." + formname + "." + datefield_basename + "day");
  var dayitemLen = dayitem.length;  
  var d;
  if (argument3 == "headingused"){
	 m--;
	 dayitemLen--;
  }	 
  // find number of days in current month
  if ( (m == 3) || (m == 5) || (m == 8) || (m == 10) ) {
    days = 30;
  }
  else if (m == 1) {
    // 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;
  }
  // if (days in new month > current days) then we must add the extra days
  if (days > dayitemLen) {
    for (i = dayitemLen; i < days; i++) {
      if (argument3 == "headingused"){
	    dayitem.length = days+1;
        dayitem.options[i+1].text = i + 1;
        dayitem.options[i+1].value = i + 1;		
	  }	
	  else {
	    dayitem.length = days;
        dayitem.options[i].text = i + 1;
        dayitem.options[i].value = i + 1;	
	  }	
    }
  }

  
	// if (days in new month < current days) then we must delete the extra days
	if (days < dayitemLen) {
		if (argument3 == "headingused")
		    dayitem.length = days+1;
		else	
		    dayitem.length = days;		
		if (dayitem.selectedIndex == -1) 
			dayitem.selectedIndex = days - 1;
		}
	}



/*

function setDays(formname, datefield_basename) {

  var argv = setDays.arguments;
  var argc = setDays.arguments.length;
  var argument3 = (argc > 2) ? argv[2] : null;
  
  var yearitem = eval("document." + formname + "." + datefield_basename + "year");
  var y = yearitem.options[yearitem.selectedIndex].value;
  var monthitem = eval("document." + formname + "." + datefield_basename + "month");
  var m = monthitem.selectedIndex;
  var dayitem = eval("document." + formname + "." + datefield_basename + "day");
  var dayitemLen=dayitem.length;
  var d;
  // if the drop down box has headings we'll need to remove 1 from the month and day counts to get the correct values
  if (argument3 == "headingused"){
	 m--;
	 dayitemLen--;
  }	 
  // find number of days in current month
  if ( (m == 3) || (m == 5) || (m == 8) || (m == 10) ) {
    days = 30;
  }
  else if (m == 1) {
    // 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;
  }

  // if (days in new month > current days) then we must add the extra days
  if (days > dayitemLen) {
	alert(dayitemLen);
	alert(days);
	if (argument3 == "headingused"){
	  days++;
	}	  
  	alert("there are not enough days in the array lets add some");
    for (i = dayitemLen; i < days; i++) {
		alert("the value of i = " + i);
      dayitem.length = days;
      dayitem.options[i].text = i + 1;
      dayitem.options[i].value = i + 1;
    }
  }

  
  // if (days in new month < current days) then we must delete the extra days
  if (days < dayitemLen) {
  	alert("there are now two many days in the array lets trim it down");  
	if (argument3 == "headingused"){
	  days++;
	}	  
    dayitem.length = days;
    if (dayitem.selectedIndex == -1) 
      dayitem.selectedIndex = days - 1;
  }

}

*/