function captureMousePosition(e) {
  if (document.layers) { // Netscape
    xMousePos = e.pageX;
    yMousePos = e.pageY;
  } else if (document.all) { // Internet Explorer
    xMousePos = window.event.x+document.body.scrollLeft;
    yMousePos = window.event.y+document.body.scrollTop;
  } else if (document.getElementById) { // Netcsape 6
    xMousePos = e.pageX;
    yMousePos = e.pageY;
  }
  return [xMousePos, yMousePos];
}

function findPosX(obj) {
	var curLeft = 0;
	if (obj.offsetParent)	{
		while (obj.offsetParent)		{
			curLeft += obj.offsetLeft;
			obj      = obj.offsetParent;
		}
	}
	else if (obj.x)	{
		curLeft += obj.x;
	}
	return curLeft;
}

function findPosY(obj) {
	var curTop = 0;
	if (obj.offsetParent)	{
		while (obj.offsetParent) {
			curTop += obj.offsetTop;
			obj     = obj.offsetParent;
		}
	}
	else if (obj.y)	{
		curTop += obj.y;
	}
	return curTop;
}

var GiftListener = Class.create({

  id_gifts_list : 'list',
  id_descr      : 'descr',

  initialize: function() {
    
    var gifts = $$('#' + this.id_gifts_list + ' div.gift');
    
    if (gifts.length > 0) {
    
      for (var i=0; i<gifts.length; i++) {
      
        Event.observe(gifts[i].down('a'), 'mouseover', this.onAMouse.bindAsEventListener(this));
        Event.observe(gifts[i].down('a'), 'mouseout',  this.onAMouse.bindAsEventListener(this));
        Event.observe(gifts[i].down('a'), 'mousemove', this.onAMouseMove.bindAsEventListener(this));
      }
    }
  },
  
  onAMouseMove: function(event) {
    var mouse = captureMousePosition(event);
    $(this.id_descr).setStyle({
      top  : (mouse[1] /*- findPosY($(this.id_gifts_list))*/ - $(this.id_descr).getHeight() - 10) + 'px',
      left : (mouse[0] /*- findPosX($(this.id_gifts_list))*/) + 'px'
    });
    //$(this.id_descr).update(mouse[0] + ':' + mouse[1]);
  },
  
  onAMouse: function(event) {
    
    if (event.type == 'mouseover') {
      
      if (!$(this.id_descr)) {
        Element.insert($(this.id_gifts_list), { top : '<div class="descr" id="' + this.id_descr + '"></div>' });
      }
      
      $(this.id_descr).update(Event.element(event).up('p').next('div').innerHTML);
      $(this.id_descr).show();
    }
    else {
      $(this.id_descr).hide();
    }
  }
  
});

new GiftListener();
