;(function($) {

	$.widget("ui.stringDateInput", {
	
		get: function() {
			return this.value
		},
	
		lazyInit: function() {
			var self = this
	
			this.calendarElem = $(document.createElement('span'))
			this.calendarElem.id = this.getId()+'-dateInput'
	
			this.element.after(this.calendarElem)
			this.element.appendTo(this.calendarElem)
	
			this.calendarElem.dateInput({selectedValue: this.value})
	
			this.calendarElem.bind('select', function(e, selectedDate) {
	
				self.set(new Date(selectedDate+'')) // clone date object
				self.element.triggerHandler('select', [selectedDate])
			})
	
			self.lazyInited = true
		},
		
		_init: function() {
			
			this.init.apply(this, arguments);
		},
		
		init: function() {
			$.widget.prototype._init.apply(this,arguments)
			var self = this
			this.lazyInited = false
	
	
			this.element.click(function(){
				
				this.blur()
				if (!self.lazyInited) {
					self.lazyInit()
				}
				if(self.calendarElem.dateInput('isShow')) {
	  				self.calendarElem.dateInput('close')
				} else {
	
	  				self.calendarElem.dateInput('open')
				}
			})
	
			var date = this._getData('value')
			if (!date) {
				date = new Date();
			}
	
			if (typeof date == 'string') {
				date = Date.fromStringFormat(date)
			}
	
			var today = new Date()
			var todayDay = new Date(today.getFullYear(), today.getMonth(), today.getDate())
			if (todayDay > date) date = todayDay
	
			this.set(date)
	
	
		},
	
		set: function(date) {
			this.value = date
			this.renderValue()
	
			if (this.lazyInited) {
				this.calendarElem.dateInput('set', date)
			}
		},
	
		getParams: function(params) {
			var value = this.value
			if (value instanceof Date) value = Date.toStringFormat(value)
	
			params[this.getId()] = value
		},
	
		renderDate: function() {
			var date = this.value
			return date.getDate() + ' ' + Date.shortMonthNames[date.getMonth()];
		},
	
		renderValue: function() {
			this.element.html(this.renderDate())
		}
	
	
	});
	
	$.extend($.ui.stringDateInput, { 
		getter: 'get getParams renderDate'
	})
})(jQuery);