Forms = {};

Forms.Fields = {};

Forms.Fields.List = {

	click: function(a) {
		if (a.data[1]=='add') {

			var idPrefix = a.element.id.replace(/\.add$/, '');
			var tpl=$_(idPrefix+'.^.li').cloneNode(true);
			var last=$_(idPrefix+'.$.li');
			var newId=$_(idPrefix+'.newId');
			var numLines=$_(idPrefix+'.numLines');
			var maxLines=$_(idPrefix+'.maxLines');
			var elems=_getElementsByTagName({root:tpl, tags:'INPUT,LABEL,A'});
			var ul=last.parentNode;

			tpl.id = tpl.id.replace(/\^/, newId.value);
			for (var i=0; i<elems.length; i++) {
				if (elems[i].id) elems[i].id = elems[i].id.replace(/\^/, newId.value);
				if (elems[i].name) elems[i].name = elems[i].name.replace(/\^/, newId.value);
				if (elems[i].htmlFor) elems[i].htmlFor = elems[i].htmlFor.replace(/\^/, newId.value);
			}

			newId.value--;
			numLines.value++;
			ul.insertBefore(tpl, last);
			tpl.style.display = '';

			if (numLines.value==maxLines.value) last.style.display = 'none';

		} else if (a.data[2]=='remove') {

			var idPrefix = a.element.id.replace(/\.[0-9-]+\.remove$/, '');
			var numLines=$_(idPrefix+'.numLines');
			var maxLines=$_(idPrefix+'.maxLines');
			var last=$_(idPrefix+'.$.li');
			var li = $_(idPrefix+'.'+a.data[1]+'.li');
			var removed = $_(idPrefix+'.'+a.data[1]+'.removed');
			var ul=li.parentNode;

			numLines.value--;
			if (a.data[1]<0) {  ul.removeChild(li); } else { li.style.display = 'none'; removed.value = 1; }
			if (last.style.display=='none' && numLines.value<maxLines.value) last.style.display = '';

		}
	},

	change: function(a) {
		var preview = $_(a.element.id.replace(new RegExp('\.'+a.data[2]+'$'), '.preview'));
		if (!preview) return;
		if (a.data[2]=='url') preview.href = a.element.value;
		else if (a.data[2]=='title') preview.innerHTML = a.element.value;
	}

}