/*
	Javascript date droplist picker generator
	copyright Elipsa-it, 2007.
*/

var DatePicker = new Class({
	options: {
		hiddenInput: 0
	},
	
	initialize: function(options) {
		this.setOptions(options);
		this.dates = [];
		
		this.hiddenInput = new String();
		this.hiddenInput = this.options.hiddenInput;

		var monthSelect = new Element('select');
		monthSelect.injectAfter($(this.hiddenInput));
		this.monthSelect = monthSelect;
		
		var daySelect = new Element('select');
		daySelect.setProperties({
		    id: this.hiddenInput,
		    name: this.hiddenInput
		});

		daySelect.injectAfter(monthSelect);
		this.daySelect = daySelect;
		
				
		this.generateMonths();
		this.generateDays();
		
		this.monthSelect.addEvent('change', this.generateDays.bind(this));
		//$(this.options.hiddenInput).remove();

	},
	
	generateMonths: function() {
		var dt_currentdate = new Date();

		for (var i=0; i < 12; i++)
		{
			dt_currentdate = new Date();
			var tmp = this.mn2dtstr(dt_currentdate.setMonth(dt_currentdate.getMonth() + i));
			this.dates[i] = dt_currentdate;
			var Opt = new Element('option');
			Opt.setProperty("id", i);
			Opt.setText(tmp);
			Opt.injectInside(this.monthSelect);
		}
		return true;
	},
	
	generateDays: function(){
		var selId = this.monthSelect.selectedIndex;
		var dt_startdate = new Date(this.dates[selId]);
		var dt_startdatetmp = new Date(this.dates[selId]);
		
		var day_buffer = new String();
		
		var i=1;
		dt_startdatetmp.setDate(i);
		this.daySelect.empty();
		while(dt_startdate.getMonth() == dt_startdatetmp.getMonth())
		{
			var Opt = new Element('option');
			Opt.setProperty("value", this.dt2dtstr(dt_startdatetmp));
			Opt.setText(i);
			Opt.injectInside(this.daySelect);
			/*
			day_buffer += '<option value="' + this.dt2dtstr(dt_startdatetmp) + '">' + i + '</option>\n';
			*/
			i++;
			dt_startdatetmp.setDate(i);
			
		}
		
		//this.daySelect.setHTML(day_buffer);
		return true;
	},

	mn2dtstr: function(dt_datetime) {
		var dt_datetime2 = new Date(dt_datetime);
		var arr_months = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
		return (new String (arr_months[dt_datetime2.getMonth()] + " " + dt_datetime2.getFullYear() ));
	},
	
	dt2dtstr: function(dt_datetime) {
		var dt_datetime2 = new Date(dt_datetime);
		var arr_months = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
		return (new String (arr_months[dt_datetime2.getMonth()] + " " + dt_datetime2.getDate() + ", " + dt_datetime2.getFullYear() ));
	}
});

DatePicker.implement(new Options, new Events);
