dojo.provide("UI.Highlight.Focus");


(function() {
	var onFocus = function(event) {
		dojo.removeClass(event.target, this.options.blur);
		dojo.addClass(event.target,    this.options.focus);
	};
	
	var onBlur = function(event) {
		dojo.removeClass(event.target, this.options.focus);
		dojo.addClass(event.target,    this.options.blur);
	}
	
	dojo.declare("UI.Highlight.Focus", null, {
		// Default className options
		options: {
			enabled: true,
			focus: "selected",
			blur:  "unselected"
		},
		
		constructor: function(node, options) {
			if ( !node ) {
				throw "Invalid node for new fieldFocus(node)";
			}
			
			this.setOptions(options);
			
			// Apply the blur style by default
			if ( !dojo.hasClass(node, this.options.selected) ) {
				onBlur.call(this, {target: node});
			}
				
			dojo.connect(node, "focus", this, onFocus);
			dojo.connect(node, "blur",  this, onBlur);
		},
		
		setOptions: function(options) {
			this.options = dojo.mixin(this.options, options || {});
		}
	});
})();
