function newForm(p) {
	p = p.split(',');
	for (var i=0; i<p.length; i++) {
		p[i] = p[i].split(':');
		window[p[i][0]] = {};
		var f = window[p[i][0]];
		f.form = (p[i].length > 1) ? document.forms[p[i][1]] : document.forms[0];
		f.objects = {};//form:(p[i].length > 1) ? document.forms[p[i][1]] : document.forms[0]};
		f.curSet = f.form.curSet;
		f.need = f.form.need;
		f.elements = {};
		f.groups = {};
		f.sets = {};
		f.addGroup = methods.form.addGroup;
		f.addSet = methods.form.addSet;
		f.activateSet = methods.form.activateSet;
		f.submit = methods.form.submit;
		f.reset = methods.form.reset;
	}
}
function initFormMethods() {
	var MF = {};
	MF.addGroup = function(p) {
		p = p.split(']');
		if (p[p.length-1] == '') { p.length = p.length-1 }
		for (var i=0; i<p.length; i++) { //-- add groups
			p[i] = p[i].split('[');
			this.objects[p[i][0]] = document.getElementById('fgrp_'+p[i][0]);
			this.groups[p[i][0]] = p[i][1].split(',');
			var e = this.groups[p[i][0]];
			for (var j=0; j<e.length; j++) { //-- add elements
				this.elements[e[j]] = this.form[e[j]];
			}
		}
	};
	MF.addSet = function(p) {
		p = p.split(']');
		if (p[p.length-1] == '') { p.length = p.length-1 }
		for (var i=0; i<p.length; i++) { //-- add sets
			p[i] = p[i].split('[');
			this.sets[p[i][0]] = {};
			var g = p[i][1].split(',');
			for (var j=0; j<g.length; j++) { //-- extract group options
				g[j] = g[j].split(':');
				this.sets[p[i][0]][g[j][0]] = g[j][1].split('');
			}
		}
	};
	MF.activateSet = function(setName) {
		if (setName != null) { this.curSet.value = setName }
		var set = this.sets[this.curSet.value];
		for (var g in this.groups) {
			if (set[g] != null) { //-- set group and icon display
				this.objects[g].style.display = '';
				for (var i=0; i<set[g].length; i++) {
					var icn = document.getElementById('icn_'+this.groups[g][i]);
					if (icn != null) { icn.style.display = (set[g][i] == 'r') ? '' : 'none' }
				}
			} else { this.objects[g].style.display = 'none' }
			var cg = this.groups[g]; //-- set '[x]disabled' items
			var sg = this.sets[this.curSet.value][g];
			for (var i=0; i<cg.length; i++) { this.elements[cg[i]].disabled = (sg == null || sg[i] == 'x') ? true : false }
		}
	};
	MF.submit= function() {
		var need = '';
		for (var g in this.groups) { //-- set '[d]on't send' and '[r]equired' items
			var cg = this.groups[g];
			var sg = this.sets[this.curSet.value][g];
			if (sg != null) {
				for (var i=0; i<sg.length; i++) {
					if (sg[i] == 'd' && this.elements[cg[i]] != null) { this.elements[cg[i]].disabled = true }
					if (sg[i] == 'r') { need += cg[i] + ' ' }
				}
			}
		}
		this.need.value = (need.length>0) ? need.substring(0,need.length-1) : '';
/*		var a='';
		for (var i=0; i<document.forms[0].length; i++) {
			var fe = document.forms[0][i];
			if (!fe.disabled) { a += fe.name+'='+fe.value+'\n' }
		}
		alert(a);*/
		this.form.submit();
	};
	MF.reset= function() {
		this.activateSet('start');
		this.form.reset();
	}
	if (window.methods == null) { window.methods = {} }
	methods.form = MF;
}
initFormMethods();
