function showBubble(id){
	var bubble = document.getElementById('ingredBubble');
	if (bubble) 
		bubble.parentNode.removeChild(bubble);


		var bubble = document.createElement("div");
		bubble.id = "ingredBubble";
		
		var header = document.createElement("h5");
		header.appendChild(document.createTextNode("INGREDIENTS"));
		
		var body = document.createElement("p");
		body.innerHTML = ingData[id];
		//body.appendChild(document.createTextNode(ingData[id]));
		
		bubble.appendChild(header);
		bubble.appendChild(body);
		
		document.body.appendChild(bubble);
}

function hideIngredients(node){
	removeEventHandler(node, 'mousemove', updateLocation);
	var bubble = document.getElementById('ingredBubble');
	if(bubble)
		bubble.parentNode.removeChild(bubble);
}

function showIngredients(node, id){
	addEventHandler(node, 'mousemove', updateLocation);
	setTimeout("showBubble(" + id + ");", 1);
}

function updateLocation(evt){
	var cur = getPosition(evt);	
	var bubble = document.getElementById('ingredBubble');
	if (bubble) {
		bubble.style.left = (parseInt(cur.x) + 15) + "px";
		bubble.style.top = (parseInt(cur.y) + 15) + "px";
	}
}

function getPosition(e) {
    e = e || window.event;
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } 
    else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX + 
            (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY + 
            (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}

function getEventNode(evt){
	if (evt.target)
		var targetNode = evt.target;
	else if(evt.srcElement)
		var targetNode = evt.srcElement;
		
	return targetNode;
}

function addEventHandler(element, type, handler) {
	try {
		element.addEventListener(type, handler, false);
	} catch(inferiorBrowserException) {
		if(element.attachEvent) 
			element.attachEvent('on'+type, handler);
		else 
			element['on'+type] = handler;
	}
	return [element, type, handler];
}

function removeEventHandler(element, type, handler) {
	try {
		element.removeEventListener(type, handler, false);
	} catch(inferiorBrowserException) {
		if(element.detachEvent)
			element.detachEvent('on'+type, handler);
		else 
			element['on'+type] = null;
	}
	return [element, type, handler];
}