﻿
/* --------------------------------------------------------------
    function: MediaAsset
    
   -------------------------------------------------------------- */ 

  var Tooltip = function(area,hoverClass,tooltipClass)
  { 
	//this.ActiveArea = area;
	this.ActiveItem=null;     
	this.BodySize=null; 	
	var self = this;

	//------------------------   
	
	this.ShowInfoBox = function(e)
	{
		var proposedActiveItem = $(e.target);
		proposedActiveItem = proposedActiveItem.hasClass(self.hoverClass) ? proposedActiveItem :  $(e.target).getParent('.' + self.hoverClass);
		if(proposedActiveItem == self.ActiveItem){ return; }else if(self.ActiveItem){ self.HideInfoBox();  }
		
		//alert(e.target.tagName + '    ] ' + $(e.target).getParent('.' + self.hoverClass));
		
		self.ActiveItem=proposedActiveItem;
		self.BodySize = document.getSize();
		if(!self.ActiveItem.InfoBox)
		{   
			self.ActiveItem.Coords = self.ActiveItem.getCoordinates(document.body);
			self.ActiveItem.InfoBox = self.ActiveItem.getElement('.' + self.tooltipClass);
			self.ActiveItem.InfoBox.setStyle('display','block');
			self.ActiveItem.InfoBox.Size = self.ActiveItem.InfoBox.getSize();
			self.ActiveItem.InfoBox.inject($('HZone'));
		}  
		document.addEvent('mousemove',self.ActiveItemMouseMoveEvent);                      
	}
   
	this.HideInfoBox = function(e){    
	
		//$('write').innerHTML += e.target.tagName + ","
		document.removeEvent('mousemove',self.ActiveItemMouseMoveEvent);
		self.ActiveItem.InfoBox.setStyle('top','-5000px'); 
		self.ActiveItem.Cursor=null;self.ActiveItem=null;                         
	}
   
   
	this.ActiveItemMouseMoveEvent=function(e){             
		self.ActiveItem.Cursor = {'x':e.page.x,'y':e.page.y }; 
		self.PositionActiveItemInfoBox();                     
	}
	
	this.PositionActiveItemInfoBox=function()
	{
		if(!self.ActiveItem.InfoBox.Size || !self.ActiveItem.Cursor){ return; }
		if(self.ActiveItem.Cursor.x + self.ActiveItem.InfoBox.Size.x + 50 > self.BodySize.x){
			self.ActiveItem.InfoBox.setStyle('left',self.ActiveItem.Cursor.x-self.ActiveItem.InfoBox.Size.x + 10); 
		}else{
			self.ActiveItem.InfoBox.setStyle('left',self.ActiveItem.Cursor.x-2); 
		}
		
		if(self.ActiveItem.Cursor.y - (document.body.scrollTop>0 ? document.body.scrollTop : document.documentElement.scrollTop) + self.ActiveItem.InfoBox.Size.y +20 > self.BodySize.y){
			self.ActiveItem.InfoBox.setStyle('top',self.ActiveItem.Cursor.y-self.ActiveItem.InfoBox.Size.y - 5  ); 
		}else{
			self.ActiveItem.InfoBox.setStyle('top',self.ActiveItem.Cursor.y+18); 
		}
	}            
  
		
	//------------------------ 
	
	this.Initialize = function()
	{
	    self.hoverClass = hoverClass;
	    self.tooltipClass = tooltipClass;

		$$(area + ' .' + self.hoverClass).each(
			function(element){
				element.addEvent('mouseover',self.ShowInfoBox);
				element.addEvent('mouseleave', self.HideInfoBox);
			}
		);            
	}
	
	this.Initialize();
}
