
function containsElement(parent, child) {
	var isParent = false;
	do {
		if ((isParent = parent == child)) {
			break;
			
		}
		child = child.parentNode;
		
	} while (child != null);
  
	return isParent;
}


function mouseLeft(what, evt) {
	evt = (evt) ? evt : ((window.event) ? window.event : "");
	if (evt.relatedTarget) {
    	return !containsElement(what, evt.relatedTarget);
	} else {
        if (what.contains(evt.toElement)) {
                return(false);
        } else {
                return(true);
        }
  	}
}

function showProblem(dd) {
	if ($(dd).className.indexOf("over") >= 0) return;
	
	$(dd).className = $(dd).className + " over";
	
	$(dd).onmouseout = function(evt) {
		if (mouseLeft(this, evt)) {
			this.className = this.className.replace("over", "");
		}
	}
}

function hideProblem(dd) {
	$(dd).className = $(dd).className.replace(new RegExp(" over\\b"), "");
}

