function initBubbleBox(parent){
	//if(!(parent)) parent = "";
    $((parent?parent+" ":"")+'.bubblebox-info').each(function () {
          var distance = 10;
           var time = 250;
           var hideDelay = 500;
           var hideDelayTimer = null;
           var beingShown = false;
           var shown = false;
           var trigger = $('.bubblebox-icon', this);
           var info = $('.bubblebox', this).css('opacity', 0);
		
		var offset = trigger.position();
		var origT = offset.top + trigger.height() - info.height() + 8;
		var origL = offset.left + trigger.width()*0.5 - info.width()*0.5;
		//alert(origT+" , "+origL);
           $([trigger.get(0), info.get(0)]).mouseover(function () {
               if (hideDelayTimer) clearTimeout(hideDelayTimer);
               if (beingShown || shown) {
                   // don't trigger the animation again
                   return;
               } else {
                   // reset position of info box
                   beingShown = true;
                   info.css({
                       top: origT,
                       left: origL,
                       display: 'block'
                   }).animate({
                       top: '-=' + distance + 'px',
                       opacity: 1
                   }, time, 'swing', function() {
                       beingShown = false;
                       shown = true;
                   });
               }
               return false;
           }).mouseout(function () {
               if (hideDelayTimer) clearTimeout(hideDelayTimer);
               hideDelayTimer = setTimeout(function () {
                   hideDelayTimer = null;
                   info.animate({
                       top: '-=' + distance + 'px',
                       opacity: 0
                   }, time, 'swing', function () {
                       shown = false;
                       info.css('display', 'none');
                   });
               }, hideDelay);
               return false;
           });
       });
}

$(function () { initBubbleBox(); });

