
function bc_getObjByName(element_name, d) {
	var p, i, obj;
	if (!d) {
		d = document;
	}

	if ((p = element_name.indexOf("?")) > 0 && parent.frames.length) {
		d = parent.frames[element_name.substring(p + 1)].document;
		element_name = element_name.substring(0, p);
	}
	if (!(obj = d[element_name]) && d.all) {
		obj = d.all[element_name];
	}
	for (i=0; !obj && i < d.forms.length; i++) {
		obj = d.forms[i][element_name];
	}
	for (i=0; !obj && d.layers && i< d.layers.length; i++) {
		obj = bc_getObjByName(element_name, d.layers[i].document);
	}
	if(!obj && document.getElementById) {
		obj = document.getElementById(element_name);
	}

	return obj;
}

function bc_setValue(element_name, val, d) {
	if (!d) {
		d = document;
	}

	var obj = bc_getObjByName(element_name, d);

	if (obj.type == 'text' || obj.type == 'hidden') {
		obj.value = val;
	}
	else if (obj.type == 'select') {
		bc_selectSelectOptionByValue(obj, val);
	}
}

function bc_checkSelectOptionText(element){
	return element.options[element.selectedIndex].text;
}

function bc_checkSelectOptionValue(element) {
	return element.options[element.selectedIndex].value;
}

function bc_selectSelectOptionByValue(element, val) {
	for (var i = 0; i < element.options.length; i++) {
		if (element.options[i].value == val) {
			element.options[i].selected = true;
		}
		else {
			element.options[i].selected = false;
		}
	}
}

function bc_populateSelect(formname, objTrigger, parent_field_index) {
	var objForm = bc_getObjByName(formname);
	if (! objForm) {
		alert("The form object does not exist!");
		return;
	}

	var objChildSelect = objForm.elements[parent_field_index + 1];
	if (! objChildSelect) {
		alert("The child object does not exist!");
		return;
	}

	objChildSelect.options.length = 0;

	cur = mitems[objChildSelect.name][objTrigger.options[objTrigger.selectedIndex].value];
	if (cur) {
		// alert("populating field " + objChildSelect.name);

		objChildSelect.options.length = cur.length / 2;
		for (var i = 0; i < cur.length / 2; i++) {
			objChildSelect.options[i].value = cur[(i+1) * 2 - 2];
			objChildSelect.options[i].text = cur[(i+1) * 2 - 1];
		}
	}

	objChildSelect.selectedIndex = 0;

	bc_populateSelect(formname, objChildSelect, parent_field_index + 1);
}
