<!-- // begin...
var containerTag = 'TR'; // can be any tag name
var compatible = (document.getElementById && document.getElementsByTagName && document.createElement && 
	!(navigator.userAgent.indexOf('MSIE 5') != -1 && navigator.userAgent.indexOf('Mac') != -1));

if (compatible){
	document.write('<style>.accessibility{display: none}</style>');
	var waitingRoom = document.createElement('div');
}

var hiddenFormFieldsPointers = new Object();

function prepareForm() {
	if (!compatible) return;
	var marker = document.createElement(containerTag);
	marker.style.display = 'none';

	var selects = document.getElementsByTagName('select');
	for (var i=0;i<selects.length;i++)
	addEventSimple(selects[i],'change',showHideFields)

	var containers = document.getElementsByTagName(containerTag);
	var hiddenFields = new Array;
	for (var i=0;i<containers.length;i++) {
		if (containers[i].getAttribute('rel')) {
			var y = getAllFormFields(containers[i]);
			containers[i].nestedRels = new Array();
			for (var j=0;j<y.length;j++) {
				var rel = y[j].getAttribute('rel');
				if (!rel || rel == 'none') continue;
				containers[i].nestedRels.push(rel);
			}

			if (!containers[i].nestedRels.length) containers[i].nestedRels = null;
			hiddenFields.push(containers[i]);
		}
	}

	while (hiddenFields.length) {
		var rel = hiddenFields[0].getAttribute('rel');
		if (!hiddenFormFieldsPointers[rel])
			hiddenFormFieldsPointers[rel] = new Array();
		var relIndex = hiddenFormFieldsPointers[rel].length;
		hiddenFormFieldsPointers[rel][relIndex] = hiddenFields[0];
		var newMarker = marker.cloneNode(true);
		newMarker.id = rel + relIndex;
		hiddenFields[0].parentNode.replaceChild(newMarker,hiddenFields[0]);
		waitingRoom.appendChild(hiddenFields.shift());
	}
	setDefaults();
	addEventSimple(document,'click',showHideFields);
}

function setDefaults() {
	var inputs = document.getElementsByTagName('input');
	for (var i=0;i<inputs.length;i++) {
		if (inputs[i].checked && inputs[i].getAttribute('rel'))
			intoMainForm(inputs[i].getAttribute('rel'))
	}
	
	var selects = document.getElementsByTagName('select');
	for (var i=0;i<selects.length;i++) {
		if (selects[i].options[selects[i].selectedIndex].getAttribute('rel'))
			intoMainForm(selects[i].options[selects[i].selectedIndex].getAttribute('rel'))
	}
}

function showHideFields(e) {
	try{
		var evt = e || window.event;
		var evtTarget = evt.target || evt.srcElement;
		if (evtTarget.nodeName == 'LABEL') {
			var relatedFieldName = evtTarget.getAttribute('for') || evtTarget.getAttribute('htmlFor');
			evtTarget = document.getElementById(relatedFieldName);
		}
	
		if (!((evtTarget.nodeName == 'SELECT' && e.type == 'change') || (evtTarget.nodeName == 'INPUT' && evtTarget.getAttribute('rel')))) return;
		var fieldsToBeInserted = evtTarget.getAttribute('rel');
	
		if (evtTarget.type == 'checkbox') {
			if (evtTarget.checked)
				intoMainForm(fieldsToBeInserted);
			else
				intoWaitingRoom(fieldsToBeInserted);
		}else if (evtTarget.type == 'radio') {
			removeOthers(evtTarget.form[evtTarget.name],fieldsToBeInserted)
			intoMainForm(fieldsToBeInserted);
		}else if (evtTarget.type == 'select-one') {
			fieldsToBeInserted = evtTarget.options[evtTarget.selectedIndex].getAttribute('rel');
			removeOthers(evtTarget.options,fieldsToBeInserted);
			intoMainForm(fieldsToBeInserted);
		}
	}catch(e){}
}

function removeOthers(others,fieldsToBeInserted) {
	for (var i=0;i<others.length;i++) {
		var show = others[i].getAttribute('rel');
		if (show == fieldsToBeInserted) continue;
		intoWaitingRoom(show);		
	}
}

function intoWaitingRoom(relation){
	if (relation == 'none') return;
	try{
		var Elements = hiddenFormFieldsPointers[relation];
		for (var i=0;i<Elements.length;i++) {
			waitingRoom.appendChild(Elements[i]);
			if (Elements[i].nestedRels)
				for (var j=0;j<Elements[i].nestedRels.length;j++)
					intoWaitingRoom(Elements[i].nestedRels[j]);
		}
	}catch(err){}
}

function intoMainForm(relation) {
	if (relation == 'none') return;
	try{
		var Elements = hiddenFormFieldsPointers[relation];
		for (var i=0;i<Elements.length;i++) {
			var insertPoint = document.getElementById(relation+i);
			insertPoint.parentNode.insertBefore(Elements[i],insertPoint);
			if (Elements[i].nestedRels) {
				var fields = getAllFormFields(Elements[i]);
				for (var j=0;j<fields.length;j++) {
					if (!fields[j].getAttribute('rel')) continue;
					if (fields[j].checked || fields[j].selected) 
					intoMainForm(fields[j].getAttribute('rel'));
				}
			}
		}
	}catch(err){}
}

function getAllFormFields(node){
	var allFormFields = new Array;
	var x = node.getElementsByTagName('input');
	for (var i=0;i<x.length;i++)
		allFormFields.push(x[i]);
	var y = node.getElementsByTagName('option');
	for (var i=0;i<y.length;i++)
		allFormFields.push(y[i]);
	return allFormFields;
}


addEventSimple(window,"load",prepareForm);
// end -->