if (typeof cm === 'undefined') {
	var cm = {};
}

cm.DependentComboBox = function(hComboBox, dComboBox, data) {
	
	var hComboBox = $(hComboBox);
	var dComboBox = $(dComboBox);
	var data = data || {};
	
	if (!hComboBox || !dComboBox) {
		return;
	}
	
	var fillComboBox = function(comboBox, data) {
		while (comboBox.firstChild) {
			comboBox.removeChild(comboBox.firstChild);
		}
		var option, i;
		for (i = 0; i < data.length; i++) {
			if (data[i].data !== undefined && data[i].value !== undefined) {
				option = comboBox.appendChild(document.createElement('option'));
				option.appendChild(document.createTextNode(data[i].data));
				option.value = data[i].value;
			}
		}
	};
	
	var hHandler = function(event) {
		if (typeof data[this.value] === 'undefined') {
			return;
		}
		var value = dComboBox.value;
		fillComboBox(dComboBox, data[this.value]);
		dComboBox.value = value;
	};
	
	Event.observe(hComboBox, 'change', hHandler);
	
};
