nmdgf.widgets.DateField = {
		
	dateFields : null,
	
	EMPTY_DATE : 'mm/dd/yyyy',
	
	cssClass : 'date-field',
	
	initialize : function() {
		this.dateFields = nmdgf.query('.'+this.cssClass);
		
		nmdgf.addListener(this.dateFields, 'focus', function(e) {
			nmdgf.widgets.DatePicker.hide();
			var el = nmdgf.byEvent(e);
			nmdgf.widgets.DateField.setIfEmptyDate(el);
		});
		
		nmdgf.addListener(this.dateFields, 'blur', function(e) {
			var el = nmdgf.byEvent(e);
			nmdgf.widgets.DateField.format(el);
			nmdgf.widgets.DateField.setIfBlank(el);
		});
		
		for(var idx in this.dateFields) {
			nmdgf.widgets.DateField.setIfBlank(this.dateFields[idx]);
		}
		
		var forms = nmdgf.query('form');
		for(var idx in forms) {
			nmdgf.addListener(forms[idx], 'submit', this.clearEmptyDates, this);
		}
	},
	
	clearEmptyDates : function() {
	    for(var idx in this.dateFields) {
			this.setIfEmptyDate(this.dateFields[idx]);
		}
	},
	
	setIfBlank : function(el) {
		if(el.disabled !== true && el.value === '') {
			el.value = nmdgf.widgets.DateField.EMPTY_DATE;
		}
	},
	
	setIfEmptyDate : function(el) {
		if(el.disabled !== true && el.value === nmdgf.widgets.DateField.EMPTY_DATE) {
			el.value = '';
		}
	},
	
	format : function(el) {
		var date = Date.parse(el.value);
		if(date !== null) {
			el.value = date.toString('MM/dd/yyyy');
		}else {
			el.value = '';
		}
	}
	
};
nmdgf.registerWidget(nmdgf.widgets.DateField);
