// #PLib::PLoad('PLib.Dom.Client.prototype');
// #PLib::PLoad('PLib.Dom.Client.Scripts.lowpro');

var FormItemAutoSubmit = Class.create();

FormItemAutoSubmit.prototype = {
	initialize: function() {
		this.loaded = false;
		this.autoSubmitItems = new Hash();
	//	Event.observe(window, 'load', this.bindToDocument.bindAsEventListener(this));
		Event.onReady(this.bindToDocument.bindAsEventListener(this));
	},
	
	bindToDocument: function(event) {

		var listener = this.processEvent.bindAsEventListener(this);
		this.autoSubmitItems.each(function(pair)
		{
			var ctrls = $A(document.getElementsByName(pair.key));
			ctrls.each(function(ctrl)
			{
				Event.observe(ctrl, pair.value.get('event'), listener);
			});
		});
	},
		
	processEvent: function(event)
	{
		var el = Event.element(event);
		var form = el.up('form');
		if(form)
		{
			var url = this.autoSubmitItems.get(el.name).get('url');
			if(url != null)
				form.action = url; 
			if(typeof(autoState) != "undefined")
			{
				autoState.fillAutoState(form);
			}
			form.submit();
			if(event.preventDefault)
			{
				event.preventDefault();
			}
			else
			{
				return false;
			}			
		}
		return;
	},
	
	addAutoSubmitItem: function(element, event, url)
	{
		var tmp = new Hash();
	//	tmp.set('element', element);
		tmp.set('event', event);
		tmp.set('url', url);
		this.autoSubmitItems.set(element, tmp);
	}
}

var formItemAutoSubmit = new FormItemAutoSubmit();

