/**
 * Esempio di caricamento della funzione: 
	    // caricamento del foglio di stile associato agli help balloons
	    <link href="media/show?569"   title="generali"   type="text/css"  rel="stylesheet">
	
	    // definizione della funzione w3gCostumizedHelpBalloon nella quale viene creato l'oggetto
	    // HelpBalloon con tutti i parametri necessari (se omessi si vedano i valori di default
	    // di seguito)
		<script>
		function w3gCostumizedHelpBalloon(elementId, title, wrapperUrl) {
		   var helpBalloon = new HelpBalloon( {
		id: elementId, 
		useEvent:['click'],
		title: title, 
		dataURL: wrapperUrl,
		imageTL: 'media/show?509', imageTR:'media/show?511', imageBL:'media/show?505', imageBR:'media/show?507', closeBtn:'media/show?546',
		innerMargin:50, 
		buttonHeight:23, 
		innerDims:[185,230], 
		verticalPos:70, 
		leftPadding_Left:'52px', 
		leftPadding_Right:'32px', 
		balloonStyle: {position: 'absolute', border: 'none', background: 'white', width: '260px', height: '283px', display: 'none'}
		});
		return helpBalloon;
		}
		</script>
 */
 
var w3gHelpBalloonsLoaded = false;

var HelpBalloon = Class.create();
HelpBalloon.prototype = {

	/**
	 * Instantiates the object
	 * @param {Object} options
	 */
	initialize: function(options)
	{   
		/**
		 * Establish default options and apply specified values
		 */
		this.options = Object.extend({
		    id: 'helpBalloon',
			returnElement: true,								//For use with embedding this object into another. Returns a reference to the object, rather than appending itself to the DOM.
			icon: '',						//url to the icon to use
			altText: 'Clicca qui per aiuto',		//Alt text of the help icon
			dataURL: null,										//URL to pull the title/content XML
			title: 'Title',										//Title of the balloon topic
			content: 'Content',									//Static content of the help balloon
			duration: 0.0,										//Duration of fade/appear affect
			useEvent: ['click'],				             //Events to trigger the balloon
			imagePath: '/atportal/media/show?',
			method:	'get',				//Method to retrieve the AJAX content
			defaultIcon: '/atportal/img/px.gif',
			imageTL: null,
			imageTR: null,
			imageBL: null,
			imageBR: null,
			closeBtn: null,
			innerDims: [100,100],								//Inner dimensions of the balloon, available for content
			innerMargin: 0,									//Inner margin
			buttonHeight: 0,
			//verticalPos: 0,
			topPosition: 0,
			bottomPosition: 0,
			leftPosition:0,
			rigthPosition: 0,
			leftPadding_Left: '0px',
			leftPadding_Right: '0px',
			balloonStyle: { position: 'absolute', 
							border: 'none', 
							background: 'white', 
							width: '100px', 
							height: '100px', 
							display: 'none' },
			scrollerHeight: 10,
			scrollAreaHeight: 100
		}, options||{});

		/**
		 * collection of object elements
		 */
		this._elements = {
			container: null,									//Containing element of the balloon
			inner: null,										//Inner content container
			icon: null,											//Triggering icon
			content: null,										//Body Content container
			button: null,										//Closing 'X' button
			title: null,										//Title Content Container
			bgContainer: null									//For IE, renders the alpha-transparent PNG
		};

		/**
		 * Properties and Attributes
		 */
		this._properties = {
			id: "HelpBalloon_" + Object.genGUID(),				//ID for object and Icon, Requires prototype.improvements.js
			balloons : [										//Path to 4 bubble images
				this.options.imageTL,			//Top Left
				this.options.imageTR,			//Top Right
				this.options.imageBL,			//Bottom Left
				this.options.imageBR     		//Bottom Right
			],
			
			balloonStyle: this.options.balloonStyle,
			button: this.options.closeBtn,		                //Closing 'X' image
			visible: false,										//Status of Balloon's visibility
			balloonCoords: null,								//Stores the balloon coordinates
			innerDims: this.options.innerDims,								//Inner dimensions of the balloon, available for content
			outerDims: [0,0],								//Outer dimensions of the balloon
			//pointerDims: [0,0],								//Balloon tail dimensions
			innerMargin: this.options.innerMargin,									//Inner margin
			buttonHeight: this.options.buttonHeight,									//Size of 'X' image
			drawn: false,										//Rendering status
			//renderXY: [0,0],									//X/Y coordinate of icon at time of render
			
			// MV - start
			// MV - spostamento verticale del tooltip personalizzabile
			//verticalPos: this.options.verticalPos,
			// padding del div contenuto del tooltip
			topPosition: this.options.topPosition,
			bottomPosition: this.options.bottomPosition,
			leftPosition: this.options.leftPosition,
			rightPosition: this.options.rightPosition,
			leftPadding_Left: this.options.leftPadding_Left,
			leftPadding_Right: this.options.leftPadding_Right
			// MV - end
			};

		/**
		 * Preload the balloon images
		 */
		 
		for(var i = 0; i < this._properties.balloons.length; i++)
		{
			var timg = document.createElement('img');
			timg.src = this._properties.balloons[i];
		}
        
		/**
		 * Create the anchoring icon
		 */
		
		var anchorElement = document.getElementById(this.options.id);
	    //this._elements.icon = document.createElement('img');
	    
	    //@MV 14-02-08 FIX 
	    var nodeImgFounded=false;
	    var children = anchorElement.childNodes;
	    for (var j = 0; j < children.length && !nodeImgFounded; j++) {
          if (children[j].nodeName=="img" || children[j].nodeName=="IMG")
  	    		nodeImgFounded=true;
	    }

        if (nodeImgFounded)
        	this._elements.icon = children[j-1];
        else {
        	this._elements.icon = document.createElement("img");
        	this._elements.icon.src = this.options.defaultIcon;
        } 	
		
		this._elements.icon.id = this._properties.id + "_icon";
		this._elements.icon._HelpBalloon = this;
		
		if (!nodeImgFounded)
			anchorElement.appendChild(this._elements.icon);

		if(!this._elements.icon) return false;

		for(i = 0; i < this.options.useEvent.length; i++)
		{   
		    id = this.options.id;
		    Event.observe(id, this.options.useEvent[i], w3gHelpBalloonEvent);
		    //Event.observe(id, this.options.useEvent[i], function(e) {  w3gHelpBalloonEvent(e)});
			//Event.observe(this._elements.icon, this.options.useEvent[i], this.toggle.bindAsEventListener(this));
		}
		
		//this._elements.icon.style.cursor = 'pointer';
		
		this._elements.container = document.createElement('div');
		this._elements.container.id = 'w3g_tooltip'+this.options.id;
		this._elements.container.className = 'w3g_tooltip';
		//this._elements.container.style.left = '0px';
		this._elements.container._HelpBalloon = this;

		/**
		 * If we are not relying on other javascript to attach the anchoring icon
		 * to the DOM, we'll just do where the script is called from. Default behavior.
		 *
		 * If you want to use external JavaScript to attach it to the DOM, attach this._elements.icon
		 */
		if(!this.options.returnElement)
		{
			document.write('<span id="' + this._properties.id + '"></span>');
	
			//this._insertAfterSpanRendering();
			var te = $(this._properties.id);
			//var p = te.parentNode;
			//p.insertBefore(this._elements.icon, te);
			p.removeChild(te);
			
		}
	},

    /**
	 * Toggles the help balloon
	 * @param {Object} e Event
	 */
	toggle: function(e)
	{  
		if(!e) e = window.event || {type: this.options.useEvent, target: this._elements.icon};
		var icon = Event.element(e);

		if(e.type == this.options.useEvent && !this._properties.visible && icon == this._elements.icon)
			this.show();
		else
			this.hide();
	},
	
    //MV - aggiunta variabile evento 'e' come parametro della funzione
	show: function(e)
	{   w3gHelpBalloonsLoaded = true;
	    if(!this._properties.drawn) this._draw();
			
		this._reposition(this);
		this._hideOtherHelps();

    	Effect.Appear(this._elements.container, {
			duration: this.options.duration,
			afterFinish: function(e){
				this._elements.container.setStyle('display', 'block');
				this._hideLowerElements();
			}.bindAsEventListener(this)
		});
		this._properties.visible = true;
	    Event.observe(window, 'resize', this._reposition.bindAsEventListener(this));
	    setTimeout(function() {w3gHelpBalloonsLoaded = false;}, 50);
    },
	/**
	 * Hides the balloon
	 */
	hide: function()
	{
		this._showLowerElements();
		Effect.Fade(this._elements.container, {duration: this.options.duration});
		setTimeout(function(){this._elements.container.style.display = 'none';}.bind(this), this.options.duration * 1000);
		this._properties.visible = false;
		Event.stopObserving(window, 'resize', this._reposition.bindAsEventListener(this));
		return;
	},

	/**
	 * Redraws the balloon based on the current coordinates of the icon.
	 */
	_reposition: function(e)
	{   /* POS
	        0 - top-left
	        1 - top-right
	        2 - bottom-left
	        3 - bottom-right
	    */
	    //var anchor = document.getElementById(this.options.id);
	    //this._properties.balloonCoords = this._getXY(anchor);
		
		this._showLowerElements();
		
		this._properties.balloonCoords = this._getXY(this._elements.icon);

		var pos = 0; // top-left

	    //var doc = document.documentElement;    
		var scrollTop=0;
		try {
		  //scrollTop = document.documentElement.scrollTop;
		  
		    if( document.body && document.body.scrollTop ) {
			    scrollTop = document.body.scrollTop;
			} else if( document.documentElement && ( document.documentElement.scrollTop ) ) {
			    scrollTop = document.documentElement.scrollTop;
			}
		    
		} catch (e) {/*alert(e);*/}
		
		
		var oh = this._properties.balloonCoords.x + parseInt(this._elements.container.style.width)+this.options.leftPosition;;
		var ov = this._properties.balloonCoords.y - parseInt(this._elements.container.style.height)+this.options.bottomPosition- scrollTop;     
        
		if(ov > 0)
			pos += 2;  // bottom-left
  
		//var ww = Browser.isMSIE() ? document.body.clientWidth : window.outerWidth;
		var ww = 0;
		try {
			ww = Browser.isMSIE() ? document.documentElement.clientWidth : window.outerWidth;
        } catch (e) {}
		
		//alert("ov: " + ov + "    doc.scrollTop: "+ doc.scrollTop + "      bottomPosition: "+ this.options.bottomPosition);
		//alert("oh: "+ oh + "      ww:" + ww);
		if(oh > ww && this._properties.balloonCoords.x > parseInt(this._elements.container.style.width) ) 
			pos += 1; // bottom-right 	

        if (this._elements.inner) {
		    if (pos==1 || pos==3) { // top-right e bottom-right
		        this._properties.balloonCoords.x += this.options.rightPosition;
				this._elements.inner.style.left = this._properties.leftPadding_Right;
			} else { // top-left e bottom-left
			    this._properties.balloonCoords.x += Math.round(this._elements.icon.width)+this.options.leftPosition;
				this._elements.inner.style.left = this._properties.leftPadding_Left;
			}
			
			if (pos==0 || pos==1) { // top-left e top-right
		        this._properties.balloonCoords.y += Math.round(this._elements.icon.height)+this.options.topPosition;
			} else { // bottom-left e bottom-right
			    this._properties.balloonCoords.y += this.options.bottomPosition;

			}
		}
	
		// Fix for IE alpha transparencies
		if ( Browser.isMSIE() )
		//if(Browser.isMSIE() && this._properties.balloons[pos].toLowerCase().indexOf('.png') > -1)
		{  
			var doAppend = false;
			if(!this._elements.bgContainer)
			{
				doAppend=true;
				this._elements.bgContainer = document.createElement('div');
				this._elements.bgContainer.id = 'w3g_tooltip_background'+this.options.id;
				this._elements.bgContainer.className = 'w3g_tooltip_background';
				
			}
			this._elements.bgContainer.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this._properties.balloons[pos] + "', sizingMethod='crop')";
			this._elements.bgContainer.style.position = 'absolute';
			this._elements.bgContainer.style.left = '0px';
			this._elements.bgContainer.style.top = '0px';
			this._elements.bgContainer.style.width = this._elements.container.style.width;
			this._elements.bgContainer.style.height = this._elements.container.style.height;
			this._elements.bgContainer.style.zIndex = -1;
			doAppend && this._elements.container.appendChild(this._elements.bgContainer);
		}
		else 
		   	this._elements.container.style.backgroundImage = 'url(' + this._properties.balloons[pos] + ')';
        	
		this._elements.container.style.backgroundRepeat = 'no-repeat';
		this._elements.container.style.backgroundColor = 'transparent';
		// MV - backgroundAttachment = 'fixed'; da problemi con IE7
		if(Browser.isMSIE()) this._elements.container.style.backgroundAttachment = 'scroll';
		this._elements.container.style.backgroundPosition = 'top left';

		//var cx = 0;
		//var cy = 0;
		var zx = this._properties.balloonCoords.x;
		var zy = this._properties.balloonCoords.y;
		switch(pos)
		{   
			case 1: // top-right 
				zx = this._properties.balloonCoords.x - parseInt(this._elements.container.style.width);
				break;

			case 2: // bottom-left
				zy = this._properties.balloonCoords.y - parseInt(this._elements.container.style.height);
			    break;

			case 3: // bottom-right
				zx = this._properties.balloonCoords.x - parseInt(this._elements.container.style.width);
				zy = this._properties.balloonCoords.y - parseInt(this._elements.container.style.height);
			    break;

			default:
			case 0: // top-left
			break;
		}
        
		this._elements.container.style.left = zx + "px";
		this._elements.container.style.top = zy + "px";
		var tempEl = this;
		setTimeout(function(){ tempEl._hideLowerElements()}, 300);
	},

	
	/**
	 * Render's the Balloon
	 */
	_draw: function()
	{   
	    //var anchor = document.getElementById(this.options.id);
	    //this._properties.balloonCoords = this._getXY(anchor);
	    //this._properties.balloonCoords.x += Math.round(20);
	    this._properties.balloonCoords = this._getXY(this._elements.icon);
		this._properties.balloonCoords.x += Math.round(this._elements.icon.width);
		this._properties.balloonCoords.y += Math.round(this._elements.icon.height);
	    
	    var pos = 0;

		var oh = this._properties.balloonCoords.x + parseInt(this._elements.container.style.width);
		var ov = this._properties.balloonCoords.y - parseInt(this._elements.container.style.height);

		if(ov > 0)
			pos += 2;

		var ww = Browser.isMSIE() ? document.body.clientWidth : window.outerWidth;
		if(oh > ww)
			pos += 1;
		
		if (this._elements.inner) {
		    if (pos==1 || pos==3) // top-right e bottom-right
				this._elements.inner.style.left = this._properties.leftPadding_Right;
			else // top-left e bottom-left
				this._elements.inner.style.left = this._properties.leftPadding_Left;
		}
		
		// MV - end
		Element.setStyle(this._elements.container, this._properties.balloonStyle);
		if(this.options.dataURL && !this._properties.drawn)
		{
			var cont = new Ajax.Request(this.options.dataURL, { 
							asynchronous: false, 
							method: this.options.method});
			/**
			 * Expects the following XML format:
			 * <HelpBalloon>
			 * 		<title>My Title</title>
			 * 		<content>My content</content>
			 * </HelpBaloon>
			 */
			var doHTML = false;
			if(cont.transport.responseXML)
			{
				var xml = cont.transport.responseXML.getElementsByTagName('HelpBalloon')[0];

				if(xml)
				{
					xmlTitle = xml.getElementsByTagName('title')[0];
					if(xmlTitle) this.options.title = xmlTitle.firstChild.nodeValue;

					xmlContent = xml.getElementsByTagName('content')[0];
					if(xmlContent) this.options.content = xmlContent.firstChild.nodeValue;
				}
				else
					doHTML = true;
			}
			else
				doHTML = true;

			if(doHTML)
			{
				// Attempt to get the title from a <title/> HTML tag
				var htmlTitle = cont.transport.responseText.match(/\<title\>([^\<]+)\<\/title\>/gi);
				if(htmlTitle)
				{
					htmlTitle = htmlTitle.toString().replace(/\<title\>|\<\/title\>/gi, '');
					this.options.title = htmlTitle;
				}
				this.options.content = cont.transport.responseText;
			}
		}


		this._elements.inner = document.createElement('div');
		
		// MV - start
		this._elements.inner.id = 'w3g_tooltip_sub'+this.options.id;
		this._elements.inner.className = 'w3g_tooltip_sub';
		
		if (pos==1 || pos==3) // top-right e bottom-right
			this._elements.inner.style.left = this._properties.leftPadding_Right;
		else // top-left e bottom-left
			this._elements.inner.style.left = this._properties.leftPadding_Left;
		// MV  - end
		
		this._elements.inner.style.position = 'absolute';
		this._elements.inner.style.width = this._properties.innerDims[0] + 'px';
		this._elements.inner.style.height = this._properties.innerDims[1] + 'px';
		
		var title = document.createElement('div');
		// MV - start
		title.id = 'w3g_tooltip_title'+this.options.id;
		title.className = 'w3g_tooltip_title';
		//title.style.position = 'absolute';
		// MV  - end
		title.appendChild(document.createTextNode(this.options.title));
		title.style.fontFamily = 'verdana';
		title.style.fontSize = '14px';
		title.style.fontWeight = 'bold';
		title.style.color = 'white';

		var closer = document.createElement('div');
		closer.id = 'w3g_tooltip_closer'+this.options.id;
        closer.className = 'w3g_tooltip_closer';
        
		if(Browser.isMSIE() && this._properties.button.toLowerCase().indexOf('.png') > -1)
		{     
			//closer.style.width = this._properties.buttonHeight + 'px';
			//closer.style.height = this._properties.buttonHeight + 'px';
			closer.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this._properties.button + "', sizingMethod='crop')";
		}
		else
		{  
			closerImg = document.createElement('img');
			closerImg.src = this._properties.button;
			closer.appendChild(closerImg);
			
		}
	
		Event.observe(closer, 'click', this.toggle.bindAsEventListener(this));
		//closer.style.cursor = 'pointer';
		closer.title = 'Chiudi l\'help';
		
		this._elements.inner.appendChild(title);
		this._elements.inner.appendChild(closer);

		var contents = document.createElement('div');
		// MV - start
		contents.id = 'w3g_tooltip_content'+this.options.id;
		contents.className = 'w3g_tooltip_content';
		// MV  - end
		
		contents.innerHTML = this.options.content;
		
		var contentContainer = document.createElement('div');
		contentContainer.id = "w3g_tooltip_container"+this.options.id;
		contentContainer.className = "w3g_tooltip_container";
		
		contentContainer.appendChild(contents);
		
		var scrollArea = document.createElement('div');
		scrollArea.id = "scrollArea"+this.options.id;
		scrollArea.className = "scrollArea";
		var scroller = document.createElement('div');
		scroller.id = "scroller"+this.options.id;
		scroller.className= "scroller";
		scrollArea.appendChild(scroller);
		
		// TO-DO: Gestione dello scorrimento del testo mediante la rotellina del mouse
		//Event.observe(contentContainer, "mousewheel", handleDIV, false);
		//Event.observe(contentContainer, "DOMMouseScroll", handleDIV, false); // Firefox
 
		contentContainer.appendChild(contents);
		
		this._elements.inner.appendChild(scrollArea);
		this._elements.inner.appendChild(contentContainer);
		this._elements.container.appendChild(this._elements.inner);
		
		document.getElementsByTagName('body')[0].appendChild(this._elements.container);
		this._properties.drawn = true;
		
		// timeout per permettere la renderizzazione a video del tooltip, altrimenti
		// l'inizializzazione dello scroller non riuscirebbe a referenziare gli oggetti del tooltip
		setTimeout("initializeScroller('"+this.options.id+"'," + this.options.scrollerHeight +"," + this.options.scrollAreaHeight+")", 400);
	},

	/**
	 * Gets the current position of the obj
	 * @param {Object} obj
	 */
	_getXY: function(obj)
	{
		var pos = Position.cumulativeOffset(obj)
		var y = pos[1];
		var x = pos[0];
		var x2 = x + parseInt(obj.offsetWidth);
		var y2 = y + parseInt(obj.offsetHeight);
		return {'x':x, 'y':y, 'x2':x2, 'y2':y2};

	},

	/**
	 * Determins if the object is a child of the balloon element
	 * @param {Object} obj
	 */
	_isChild: function(obj)
	{
		var i = 15;
		do{
			if(obj == this._elements.container)
				return true;
			obj = obj.parentNode;
		}while(obj && i--);
		return false
	},

	/**
	 * Determines if the balloon is over this_obj object
	 * @param {Object} this_obj
	 */
	_isOver: function(this_obj)
	{  
		if(!this._properties.visible) return false;
		if(this_obj == this._elements.container || this._isChild(this_obj)) return false;
		var this_coords = this._getXY(this_obj);
		var that_coords = this._getXY(this._elements.container);
		if(
			(
			 (
			  (this_coords.x >= that_coords.x && this_coords.x <= that_coords.x2)
			   ||
			  (this_coords.x2 >= that_coords.x &&  this_coords.x2 <= that_coords.x2)
			 )
			 &&
			 (
			  (this_coords.y >= that_coords.y && this_coords.y <= that_coords.y2)
			   ||
			  (this_coords.y2 >= that_coords.y && this_coords.y2 <= that_coords.y2)
			 )
			)

		  ){
			return true;
		}
		else
			return false;
	},

	/**
	 * Restores visibility of elements under the balloon
	 * (For IE)
	 */
	_showLowerElements: function()
	{
		var elements = this._getWeirdAPIElements();
		for(var i = 0; i < elements.length; i++)
		{
			if(this._isOver(elements[i]))
			{   //alert("SHOW: " + elements[i].id);
				if(elements[i].style.visibility != 'visible' && elements[i].hiddenBy == this)
				{
					elements[i].style.visibility = 'visible';
					elements[i].hiddenBy = null;
				}
			}
		}
	},

	/**
	 * Hides elements below the balloon
	 * (For IE)
	 */
	_hideLowerElements: function()
	{   
		var elements = this._getWeirdAPIElements();
		for(var i = 0; i < elements.length; i++)
		{   
			if(this._isOver(elements[i]))
			{   //alert("HIDE: " + elements[i].id);
				if(elements[i].style.visibility != 'hidden')
				{
					elements[i].style.visibility = 'hidden';
					elements[i].hiddenBy = this;
				}
			}
		}
	},

	/**
	 * Determines which elements need to be hidden
	 * (For IE)
	 */
	_getWeirdAPIElements: function()
	{   
	    var browser_name = navigator.appName;
	    var browser_version = navigator.appVersion;

	    if ((browser_name.indexOf('Explorer') > 0 && browser_version.indexOf('MSIE 7.')==-1) || 
		     browser_name.indexOf('Opera') >= 0 || 
			 browser_version.indexOf('Safari') > 0 ) { // Se il browser č MSIE diverso dal 7.x o Opera o Safari
		
			//if(!document.all) return [];
			var objs = ['select'];
			//var objs = ['select', 'input', 'object'];
			var elements = [];
			for(var i = 0; i < objs.length; i++)
			{
				var e = document.getElementsByTagName(objs[i]);
				for(var j = 0; j < e.length; j++)
				{
					elements.push(e[j]);
				}
			}
			return elements;
		} else return [];
	},

	/**
	 * Hides the other visible help balloons
	 * @param {Object} e
	 */
	_hideOtherHelps: function(e)
	{
		if(!e) e = window.event;
		var divs = document.getElementsByTagName('div');
		for(var i = 0; i < divs.length; i++)
		{
			if(divs[i]._HelpBalloon && divs[i]._HelpBalloon._properties.visible && (divs[i] != this._elements.container))
				divs[i]._HelpBalloon.toggle(e);
		}
	},
	
	_insertAfterSpanRendering: function() 
	{  
	    var te = $(this._properties.id);
		//var p = te.parentNode;
		//p.insertBefore(this._elements.icon, te);
		//p.removeChild(te);
	}
};

function initializeScroller(helpBalloonId, scrollerHeight, scrollAreaHeight) {
    var scrollerElem = document.getElementById("scroller"+helpBalloonId);
    scrollingHeight = document.getElementById("w3g_tooltip_content"+helpBalloonId).scrollHeight;
   
    if (scrollingHeight<scrollAreaHeight) {
    	scrollerElem.className = "no_scroller";
    }
	else
	   new scroller.init(helpBalloonId, scrollerHeight, scrollAreaHeight);

}

// TO-DO: Gestione dello scorrimento del testo mediante la rotellina del mouse
/*
var counterDIV=0;
function handleDIV(e) {
      // Event.wheel(e) ritorna 1 se la rotella e' girata verso su, -1 se č girata verso gių
     
      var content = document.getElementById("w3g_tooltip_content");
      var currentTop = parseInt(content.style.top);
      
      if (currentTop === undefined) {
      	currentTop=0;
      }
      
      if (Event.wheel(e)==1) // verso su
      	currentTop = currentTop+20;
      else // verso gių
      	currentTop = currentTop-20;
      
      content.style.top = currentTop+"px";
}
*/

function w3gHelpBalloonEvent(event) {
   var target = event.target || event.srcElement;

   while (target.id=="" || target.id.indexOf('w3gHelpBalloon')==-1)   {   
       target = target.parentNode;
   }
   
   if (!w3gHelpBalloonsLoaded)
   	w3gHelpBalloons[target.id].show(event);
   
}

/*
function w3gHelpBalloonEvent(event) {
  var target = event.target || event.srcElement;
  if (target.id) 
	if ( w3gHelpBalloons[target.id]) {
	}
    else 
		target = target.parentNode;
		
  w3gHelpBalloons[target.id].show(event);
}
*/