window.tx_icsfdfeformbuilder_forms = [];
function tx_icsfdfeformbuilder_load()
{
	var forms = window.tx_icsfdfeformbuilder_forms;
	for (var index in forms)
	{
		var controls = forms[index].controls;
		var change = document.getElementById(forms[index].change);
		var addInit = forms[index].addInit;
		var submit = forms[index].submit;
		change.ctrls = {};
		for (var name in controls)
		{
			var controlid = controls[name];
			var num = 0;
			while ((control = document.getElementById(controlid + ((num) ? ('_' + num) : ('')))) != null)
			{
				control = document.getElementById(controlid);
				if (control == null)
					continue;
				control.onchange_handlers = [
					tx_icsfdfeformbuilder_onchange_notify_build(change)
				];
				control.onchange = tx_icsfdfeformbuilder_onchange_handler;
				if ((control.type == 'checkbox') || (control.type == 'radio'))
					control.onclick = control.onchange;
				num++;
			}
		}
		for (var name in addInit)
		{
			try
			{
				addInit[name]();
			}
			catch (e)
			{
			}
		}
		change.form.onsubmit = tx_icsfdfeformbuilder_onsubmit_handler;
		change.form.onsubmit_handlers = submit;
	}
}
function tx_icsfdfeformbuilder_onchange_handler()
{
	for (var name in this.onchange_handlers)
		try
		{
			if (this.onchange_handlers[name])
				this.onchange_handlers[name].call(this);
		}
		catch (e)
		{
		}
}
function tx_icsfdfeformbuilder_onchange_notify_build(change)
{
	return function() { tx_icsfdfeformbuilder_onchange_notify(this, change); };
}
function tx_icsfdfeformbuilder_onchange_notify(control, change)
{
	if (change.ctrls[control.id] == null)
	{
		change.ctrls[control.id] = true;
		var name = control.name;
		var match = /^(.+(\[[^]]+\])+)\[\d+\]$/.exec(name);
		if (match != null)
			name = match[1];
		if (change.value == '')
			change.value = name;
		else
			change.value += ',' + name;
	}
}
function tx_icsfdfeformbuilder_onsubmit_handler()
{
	var ret = true;
	for (var name in this.onsubmit_handlers)
		try
		{
			if (this.onsubmit_handlers[name])
				ret = ret && (this.onsubmit_handlers[name].call(this) != false);
		}
		catch (e)
		{
		}
	return ret;
}

