/**
 * @author FINSA Consulting s.r.l.
 * @classDescription Functions for manage Image-Tooltip 
 */
 
 // Tooltip Initialization
 function initToolTip(ttFixed, offsetX, offsetY, elementClass){
  var SHOW_DELAY = 50;
  var HIDE_DELAY = 50;
  if (typeof(elementClass)=="undefined") {
    elementClass='';
  }
  $$('.toolTip').removeEvents('mouseenter');//.removeEvents('mouseleave').removeEvents('mousemove');
  var first = true;
  $$('.toolTipBox'+elementClass).each(function(element){if(!first){element.destroy();} first = false; });
  
  // ----- Tooltip
  $$('.toolTip').each(function(element,index) {
    if (element.get('title') == null) {
      element.removeClass('toolTipShow');
	  return;
	}
  	var content = element.get('title').split(' :: ');
  	if(content.length < 3)
      element.removeClass('toolTipShow');
  	else
      element.addClass('toolTipShow');
  	element.store('tip:title', content[0]);
  	element.store('tip:text', content[2]);
  	element.set('title','');
  });
  
    $$('.toolTipLast').each(function(element,index) {
    if (element.get('title') == null) return;
  	var content = element.get('title').split(' :: ');
  	element.store('tip:title', content[0]);
  	element.store('tip:text', content[2]);
  	element.set('title','');
  });
  /*
   Tooltip
      * maxTitleChars indica il numero massimo di caratteri che possono comparire nel tooltip;
      * showDelay il ritardo in ms con cui deve apparire il tooltip;
      * hideDelay il ritardo in ms con cui deve scomparire;
      * className il prefisso visto in precedenza;
      * offsets un oggetto con proprieta' x e y che rappresentano la distanza dall'angolo superiore sinistro del tooltip al puntatore del mouse;
      * fixed un parametro boolean: se e' impostato su true il tooltip non segue i movimenti del nostro mouse.
  */

  var tips;
	if (false) {
	  tips = $$('.toolTip.toolTipShow');
	  if((tips.length!=offsetX.length) || (tips.length!=offsetY.length)) {
	  tips.each(function(elem){alert(elem.outerHTML)})
      alert("WARNING: the number of Tips is different from the number of offset values");
    }
    else {
  	  var tip;
  	  tips.each(function(elem,index){
          tip = new Tips(elem, {
            className: 'toolTipBox'+elementClass,
            showDelay: SHOW_DELAY,
            hideDelay: HIDE_DELAY,
            offsets: {
            	'x': offsetX[index],       
            	'y': offsetY[index]        
            }, 
            fixed: false
          }); 
          tip.addEvents({
            'show': function(tip) {
                tip.fade('in');
            },
            'hide': function(tip) {
                tip.fade('out');
            }
          });
      });    
    }
  }
  else 
  {
    /*Set all Tooltip*/
    tips = new Tips($$('.toolTip.toolTipShow'), {
        className: 'toolTipBox'+elementClass,
        showDelay: SHOW_DELAY,
        hideDelay: HIDE_DELAY,
        fixed: false
    }); 
    tips.addEvents({
      'show': function(tip) {
          tip.fade('in');
      },
      'hide': function(tip) {
          tip.fade('out');
      }
    }); 
  }
}
