var DateField = jQuery.Class.create({
	init: function(selector){
		this.datePicker = $j(selector+' .datePicker');
		this.datePicker.addClass('dateField');
		this.initialized = false;
		this.display = false;
		this.selector = selector;
		this.dateInput = $j(this.selector+' .dateInput');
		
		$j(selector+' .dateButton').bind('click', {parent: this}, function (e) {
			e.data.parent.showHideCalendar();
		});
	},
	
	initDate: function() {
		var initDateText = this.dateInput.val();
		var initDateArray = initDateText.split('-');
		if(initDateArray.length==3) {
			return new Date(parseInt(initDateArray[0], 10), parseInt(initDateArray[1], 10) -1 , parseInt(initDateArray[2], 10))
		} else {
			return new Date();
		}
	},
	
	initDatePicker: function () {
		this.initDate();
		var parent = this;
		var defaultDate = this.initDate();
		this.datePicker.datepicker({
				altField: this.selector+'.dateInput', 
				altFormat: 'yy-mm-dd',
				gotoCurrent: true, 
				defaultDate: defaultDate,
				onSelect: function(dateText) {parent.updateField();}
		});
		this.initialized = true;
	},
	
	showHideCalendar: function() {
		if(!this.display) {
			//if(!this.initialized) {
				this.initDatePicker();
			/*} else {
				this.datePicker.datepicker("show");
			}*/
			this.display = true;
		} else {
			//this.datePicker.datepicker("hide", 10);
			this.datePicker.datepicker('destroy');
			this.display = false;
		}
	},
	
	updateField: function() {
		var newDate = this.datePicker.datepicker( 'getDate' );
		var mm = (newDate.getMonth()+1);
		if(mm<10) {
			mm = '0'+ mm;
		}
		var dd = newDate.getDate();
		if(dd<10) {
			dd = '0'+ dd;
		}
		this.dateInput.val(newDate.getFullYear()+'-'+mm+'-'+dd);
		this.showHideCalendar();
	}
});