function initTooltips() {
	var i, elements = new Array();
	var elemsToTooltip = ['input','textarea','select']; 
	
	for (e in elemsToTooltip) {
		var c = document.getElementsByTagName(elemsToTooltip[e]);
		for (i = 0; i < c.length; i++) { elements.push(c[i]); }
	}
	
	for(i = 0; current = elements[i]; i++) {
		var helpDiv = document.getElementById("help_" + current.id);
		if (helpDiv) {
		    current.onmouseover = closure(elements[i], helpDiv, "mouse");
		    current.onfocus = closure(elements[i], helpDiv, "focus");
		    current.onblur = function() { hideTooltip("focus"); };
		    current.onmouseout = function() { hideTooltip("mouse"); };
		}
	}
	
	var container = document.createElement("div");
	container.className = "tooltipContainer";
	container.id = "tooltipContainer";
	container.state = "";// custom field
	document.getElementsByTagName('body')[0].appendChild(container);

	var connector = document.createElement("div"); 
	connector.className = "tooltipConnector";
	connector.id = "tooltipConnector";
	container.appendChild(connector);
	
	var idleHelp = document.createElement("div");
	idleHelp.style.display = "none";
	idleHelp.id = "idleHelp";
	document.getElementsByTagName('body')[0].appendChild(idleHelp);
	
}

function closure(element, helpDiv, method) {
	return function() { popupTooltip(element, helpDiv, method); };
}

function popupTooltip(element, help, method) {
	var container = document.getElementById("tooltipContainer");
	var connector = document.getElementById("tooltipConnector");
	
	if((container.state=="focus")&&(method=="mouse")) return;

    while ( container.childNodes.length > 1 ) {
    	var currentHelp = container.firstChild;
    	container.removeChild( currentHelp );       
    	document.getElementById("idleHelp").appendChild(currentHelp);
    } 

	help.style.display = 'block';
	container.insertBefore(help, connector);	
	container.style.display = 'block';
	container.state = method;
	
	var offset = getOffset(element);
	container.style.left = (offset.left + element.offsetWidth) + "px";//element.style.left;
	container.style.top = (offset.top - help.offsetHeight + element.offsetHeight) + "px";//element.style.top;
}

function hideTooltip(method) {
	var container = document.getElementById("tooltipContainer");

	if((container.state=="focus")&&(method=="mouse")) return;

	container.style.display = 'none';
	container.opacity=0;
	container.state="";
}

function getOffset( el ) {
    var _x = 0;
    var _y = 0;
    while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {
        _x += el.offsetLeft;
        _y += el.offsetTop;
        el = el.offsetParent;
    }
    return { top: _y, left: _x };
}


