/*
Dependencies:
	~/javascript/jquery.js
	~/javascript/calendar/calendar.js
	~/javascript/calendar/lang/calendar-en.js
	~/javascript/calendar/calendar-setup.js
*/


/* ====== chooseMonth ====== */

/**
 * Called when the user chooses a different month to re-populate the list of
 * days of the month that are available
 */

function chooseMonth(strMonthControl, strDayControl)
{
	if (!document.getElementById) return;
	var ctlMonthYear = document.getElementById(strMonthControl);
	var ctlDay = document.getElementById(strDayControl);
	_chooseMonth(ctlMonthYear, ctlDay);
}

function _chooseMonth(ctlMonthYear, ctlDay)
{
	var m = ctlMonthYear.value.split("-");
	var month = parseInt(m[1]);
	var year = parseInt(m[0]);
	var leap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
	var days = (month == 4 || month == 6 || month == 9 || month == 11)
		? 30
		: (month == 2 ? (leap ? 29 : 28) : 31);
	if (ctlDay.length > days) {
		for (var i = ctlDay.length - 1; i >= days; i--) {
			ctlDay.remove(i);
		}
	}
	else if (ctlDay.length < days) {
		for (var i = ctlDay.length + 1; i <= days; i++) {
			var opt = document.createElement('option');
			opt.text = i;
			opt.value = i;
			try {
				ctlDay.add(opt, null);
			}
			catch(ex) {
				ctlDay.add(opt);
			}
		}
	}
}

function disableDateTimePicker(picker, disable) {
	jQuery(picker).children().attr("disabled", disable);
}

function initCalendar(buttonID)
{
   var today = new Date();
   today = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0);
   var lastDay = new Date(today.getTime() + 63072000000);
   lastDay = new Date(lastDay.getFullYear(), lastDay.getMonth(), lastDay.getMonthDays(), 0, 0, 0);

   var ctlButton = document.getElementById(buttonID);
   var jqButton = jQuery(ctlButton);
   var ctlDay = jqButton.siblings('.ctlDay').get(0);
   var ctlMonthYear = jqButton.siblings('.ctlMonthYear').get(0);

   jqButton.click(function() {
      try {
         if (ctlDay.disabled) {
            return false;
         }
      }
      catch (ex) {
         alert(ex);
      }
      var selectedDate = Date.parseDate(ctlMonthYear.value + "-" + ctlDay.value, "%Y-%m-%d");
      var calendar = new Calendar(
         0, // Sunday
         selectedDate,
         function(cal, date) {
            if (cal.dateClicked) {
               var day = cal.date.getDate();
               var ym = cal.date.print("%Y-%m");
               jQuery(ctlMonthYear).children("option[value='" + ym + "']").attr("selected", "selected");
               jQuery(ctlDay).children("option[value='" + day + "']").attr("selected", "selected");
               _chooseMonth(ctlMonthYear, ctlDay);
               cal.callCloseHandler();
            }
         },
         function(cal) {
            cal.destroy();
         }
      );
      calendar.weekNumbers = false;
      calendar.setRange(today.getFullYear(), lastDay.getFullYear());
      calendar.getDateStatus = function(date) {
         return (date < today || date > lastDay);
      };
      calendar.create();
      calendar.showAtElement(ctlDay, "Br");
      return false;
   });
}


