var InputCalendar = {};
/**
 * Custom calendar class, requires:
 * 
 *   a single hidden field for the full value
 *   three separate fields
 *   	calendar_day_${field_id}
 *   	calendar_month_${field_id}
 *   	calendar_year_${field_id}
 *   
 */
InputCalendar = new Class({
	
	source_element: null,
	
	elements: {
	
	},
	
	initialize: function(id){
		var el = $(id);
		if (!$chk(el)){
			return false;
		}
		this.source_element = el;
		this.elements.day = $('calendar_day_' + id);
		this.elements.month = $('calendar_month_' + id);
		this.elements.year = $('calendar_year_' + id);
		this.setValueFields();
		this.setupFields();
	},
	
	setValueFields: function(){
		var value = this.source_element.get('value');
		
		if (value) {
			var val = value.split('-');
			this.elements.day.value = val[0];
			this.elements.month.value = val[1];
			this.elements.year.value = val[2];
		}
	},
	
	joinFieldValues: function(){
		var day = Number(this.elements.day.get('value'));
		var month = Number(this.elements.month.get('value'));
		var year = Number(this.elements.year.get('value'));
		var valid = true;
		if (isNaN(day) || (day < 1 || day > 31)) {
			this.elements.day.value = '';
			valid = false;
		}
		if (isNaN(month) || (month < 1 || month > 12)) {
			this.elements.month.value = '';
			valid = false;
		}
		if (isNaN(year) || year < 1900 || year > 2100 ) {
			this.elements.year.value = '';
			valid = false;
		}
		this.source_element.set('value', '');
		if (valid) {
			this.source_element.set('value', day+'-' + month + '-' + year);
		}
	},
	
	setupFields: function(){
		this.elements.day.addEvent('blur', this.joinFieldValues.bindWithEvent(this));
		this.elements.month.addEvent('blur', this.joinFieldValues.bindWithEvent(this));
		this.elements.year.addEvent('blur', this.joinFieldValues.bindWithEvent(this));
	}
});