document.observe('dom:loaded', function() {
	var a = $$('select.slave[rel]');
	a.each(function(slave) {
		var master = $(slave.getAttribute('rel'));
		if (master) {
			var options = slave.select('option');
			var ops = {};
			options.each(function(op) {
				var op_rel = op.getAttribute('rel');
				ops[op_rel] = ops[op_rel] || [];
				ops[op_rel].push(op);
				if (master.value != op_rel) {
					op.remove();
				}
			});
			master.drop_ops = ops;
			master.drop_slave = slave;
			master.drop_last = master.value;
			var evt = function() {
				if (master.drop_last != master.value) {
					slave.select('option').each(Element.remove);
					ops[master.value].each(function(op) {
						slave.insert(op);
					});
					master.drop_last = master.value;
				}
				slave.value = (ops[master.value].length > 0) ? ops[master.value][0].value : '';
			};
			master.observe('change', evt);
			master.observe('keyup', evt);
		}
	});
});
