function addOptionElement(objElement, text, value) {
	if (document.layers) {
		objElement.options[objElement.options.length] = new Option(text, value);
	}
	else {
		var objOption = new Option();
		objOption.value = value;
		objOption.text = text;
		objOption.innerText = text;
		
		objElement.appendChild(objOption);
	}
}

function changeCategory(objSelectElement, formElementID, childElementID) {
	
	var objChildElement = document[formElementID][childElementID];
	
	while (objChildElement.options.length > 0) {
		if (objChildElement.remove)
			objChildElement.remove(0);
		else
			objChildElement.options[0] = null;
	}
	
	if (document.layers)
		objChildElement.options[0].selected = true;
	
	var selectedCategory = '';
	
	if (objSelectElement.selectedIndex != -1)
		selectedCategory = objSelectElement.options[objSelectElement.selectedIndex].value;
	
	if (selectedCategory.length > 0) {
		
		if (arrCategories[selectedCategory].length > 0) {
			
			var i = 0;
			var objOption;
			
			objChildElement.disabled = false;
			objChildElement.style.color = '#000000';
			
			while (i < arrCategories[selectedCategory].length) {
				addOptionElement(objChildElement, arrCategories[selectedCategory][i + 1], arrCategories[selectedCategory][i]);
				i += 2;
			}
			
		}
		else {
			addOptionElement(objChildElement, 'Category selected', '');
			objChildElement.disabled = true;
			objChildElement.style.color = '#666666';
		}
	}
	else {
		addOptionElement(objChildElement, 'Choose main category first...', '');
		objChildElement.disabled = true;
		objChildElement.style.color = '#666666';
	}
}

function initCategorySelection(mcatPath, formElementID, parentElementID, childElementID) {
	
	changeCategory(document[formElementID][parentElementID], formElementID, childElementID);
	
	var objRegionElement = document[formElementID][childElementID];

	if (mcatPath.length > 0) {

		for (var i = 0; i < objRegionElement.options.length; i++) {

			if (objRegionElement.options[i].value == mcatPath) {
				
				if (objRegionElement.options[i].setAttribute) {
					
					objRegionElement.options[i].setAttribute('selected', true);
					
					if (!objRegionElement.options[i].selected)
						objRegionElement.options[i].selected = true;
					
				}
				else {
					objRegionElement.options[i].selected = true;
				}
				
				break;
			}		
		}	
	}	
}

function toggleBranchSelection(element, selected, autoSelect) {
	
	for (var i = 0; i < element.childNodes.length; i++) {
		
		if (element.childNodes[i].tagName == 'INPUT')
			element.childNodes[i].checked = selected;
		else if (element.childNodes[i].tagName == 'DIV')
			element.childNodes[i].style.display = selected ? 'block' : 'none';
		
		if (element.childNodes[i].childNodes.length > 0)
			toggleBranchSelection(element.childNodes[i], selected, autoSelect);	
	}
}

function selectParentCategory(mcat, categoryID, autoSelect) {
	
	if (document.getElementsByName) {
		
		var elements = document.getElementsByName('parent_mcat_path');
		
		for (var i = 0; i < elements.length; i++) {
			if (elements[i].value == mcat) {
				elements[i].checked = !elements[i].checked;
				toggleBranch(categoryID, elements[i].checked, autoSelect)
				break;
			}
		}	
	}
}

function selectCategory(mcat) {
	
	if (document.getElementsByName) {
		
		var elements = document.getElementsByName('mcat_path');
		
		for (var i = 0; i < elements.length; i++) {
			if (elements[i].value == mcat) {
				elements[i].checked = !elements[i].checked;
				break;
			}
		}	
	}	
}

function onBranchClick(checked, containerID, labelID, autoSelect) {
	
	var container = document.getElementById ? document.getElementById(containerID) : document.all(containerID);
	var label = document.getElementById ? document.getElementById(labelID) : document.all(labelID);
	
	if (checked) {
		
		label.innerHTML = '-';
		container.style.display = 'block';
		
		if (autoSelect)
			toggleBranchSelection(container, true, true);
		
	} else {
		
		label.innerHTML = '+';
		container.style.display = 'none';
		
		toggleBranchSelection(container, false, true);
		
	}
}