function isTopLevelNode(node) {
	var parent = DMAPI.getParent(node);
	if(!parent)
		return;
	parent = DMAPI.getParent(parent);
	return !parent;
}

function imgtxtUpdateView(node, active, selected) {
	
	if(DMAPI.getDisabled(node) || (DMAPI.getNonSelectable(node) && DMAPI.isLeaf(node)))
		return;
		
	var isTopLevel = isTopLevelNode(node);
	
	if(isTopLevel) {
		
		var el;
		var url = DMAPI.getValue(node, active || DMAPI.isInPopupLoop(node) ? "ActiveImage" : (selected ? "SelectedImage" : "Image"));
		if(node.CustomType == "ImageOnly") {
			el = DMAPI.getElement(node,"Image");
			if(el)
				el.src = url;
		}
		else {	
			el = node.getElement();
			if(el)
				el.style.backgroundImage = "url(" + url + ")";
		}
		
	}
	
	
}

function imgtxtResolveValue(node, _name, active, selected) {
	var isTopLevel = isTopLevelNode(node);
	if(isTopLevel) {
		if(_name == "itemAttrs")
			return "background='" + DMAPI.getValue(node, DMAPI.getDisabled(node) ?  "DisabledImage" : (active ? "ActiveImage" : (selected ? "SelectedImage" : "Image"))) + "'";
	}
	return DMAPI.getValue(node, _name);
}

function imgtxtResolveCssClass(node, _name, active, selected) {

	if(active)
		selected = false;

	var cssName;
	
	if(_name == "TopLevel")
		cssName = "Level";
	else if(_name == "Popup")
		cssName = "Popup"; 
	else if(_name == "TopLevelContainer")
		cssName = "Container";
	else if(_name == "PopupContainer")
		cssName = "PopupContainer";
	else if(_name == "TopItem")
		cssName = (selected && !DMAPI.isInPopupLoop(node)) ? "SelectedItem" : (!node.NonSelectable && active) ? "ActiveItem" : "Item";
	else if(_name == "Item")
		cssName = (selected && !DMAPI.isInPopupLoop(node)) ? "SelectedPopupItem" : (!node.NonSelectable && active) ? "ActivePopupItem" : "PopupItem";
	else
		alert("unexpexted CSS class request [" + _name + "]");
		
	return DMAPI.getValue(node, cssName);
}