var NEOdefs = new Object;
NEOdefs.prevent = 0;
NEOdefs.popup_open = 0;
NEOdefs.force_close = 0;
NEOdefs.closing = 0;
NEOdefs.element = null;

//NEOdefs.cache = new Array();

document.write("<style type=\"text/css\">#NeoDefsContainer{z-index: 1000; left: 0px; top: 2px; position: absolute; white-space: normal;};</style>");


function NEOdefs_close (event, force)
 {
	NEOdefs.force_close = 1;
	setTimeout('NEOdefs_close_done()', 500);
 }

function NEOdefs_remove()
 {
	if(!NEOdefs.popup_open)
	 {
		var ib = document.getElementById('NeoDefsContainer');
		if(ib) ib.parentNode.removeChild(ib);
	 }
 }

function NEOdefs_close_done()
 {
	var ib = $('NeoDefsContainer');
	if(NEOdefs.force_close)
	 {
		NEOdefs.popup_open = 0;
		NEOdefs.force_close = 0;
		//ib.style.opacity = '0.0';
		new Effect.Opacity( ib, {duration:0.8, from:1.0, to:0} );
		setTimeout('NEOdefs_remove()', 800);
	 }
 }


NEOdefs_show = function (el, def_id)
 {
	if(NEOdefs.element != null && NEOdefs.element != el)
	 {
		NEOdefs.popup_open = 0;
		NEOdefs.force_close = 0;
		NEOdefs_remove(NEOdefs.element);
	 }

	if(NEOdefs.force_close)
	 {
		NEOdefs.force_close = 0;
		NEOdefs.popup_open = 1;
		return;
	 }

	//var def_id = el.id.substr(14);

	if(!NEOdefs.popup_open)
	 {
		//var pos = Position.positionedOffset(el); //.positionedOffset //getPosition //Position.realOffset 
		var esize = Element.getDimensions(el);

		var ib = document.getElementById('NeoDefsContainer');
		if(ib) ib.parentNode.removeChild(ib);

		ib = document.createElement('div');
		ib.id = 'NeoDefsContainer';

		ib.style.width = NEOdefs_width+"px";
		ib.style.height = NEOdefs_height+"px";
		var func = NEOdefs_close.bindAsEventListener();
		Event.observe(el, 'mouseout', func, true);
		ib.style.opacity = '0';

		ib.style.left = (Math.ceil(esize.width/2-NEOdefs_width/2))+'px';
		//ib.style.left = (pos[0]+Math.ceil(esize.width/2-NEOdefs_width/2))+'px';
		//if(pos[1] > NEOdefs_height+20) ib.style.top = (pos[1]-NEOdefs_height)+'px';
		//else ib.style.top = (pos[1]+5)+'px';
		var text = NEOdefinitions_design.replace('###TEXT###', NEOdefinitions[def_id].text);
		var text = text.replace('###URL###', NEOdefinitions[def_id].url);
		var regexp = /^(\w+\:\/\/)/;
		var url_user = NEOdefinitions[def_id].url.replace(regexp, '');
		var text = text.replace('###URL_WITHOUT_PROTOCOL###', url_user);
		ib.innerHTML = text;

		var b = el;//document.getElementsByTagName("body")[0];
		NEOdefs.element = el;
		Element.setOpacity(ib, 0);
		if (b.firstChild != null) b.insertBefore(ib, b.firstChild);
		else b.appendChild(ib);
		ib = document.getElementById('NeoDefsContainer');

		new Effect.Opacity( ib, {duration:0.8, from:0, to:1.0} );
		NEOdefs.popup_open = 1;
	 }
 }

