$(function () {
	
	
	var aHiddenSelectElems = []; // array of select elements hidden for the MSIE6 z-Index bug

	var hideVisibleSelectElements = function () {
		var aElements = document.getElementsByTagName("select");
		// hide elements and save element references
		for (var i = 0; i < aElements.length; i++) {
			if (aElements[i].style.visibility != "hidden") {
				aElements[i].style.visibility="hidden";
				aHiddenSelectElems.push(aElements[i]);
			}
		}
	}
	
	var showHiddenSelectElements = function() {
		for (var i = 0; i < aHiddenSelectElems.length; i++) {
			aHiddenSelectElems[i].style.visibility = "visible";
		}
		aHiddenSelectElems = []; // clear the array
	}
	
	var isMsie6 = function () {
		var ua = navigator.userAgent.toLowerCase();
		var av = parseInt(navigator.appVersion);
		var bIsMsie = ((ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1))
		return (bIsMsie && (av == 4) && (ua.indexOf("msie 6.") != -1))
	}		
			
			
        $('.bubbleInfo').each(function () {
            var distance = 0;
            var time = 150;
            var hideDelay = 150;

            var hideDelayTimer = null;

            var beingShown = false;
            var shown = false;
            var trigger = $('.trigger', this);
            var info = $('.popup', this).css('opacity', 0);


            $([trigger.get(0), info.get(0)]).mouseover(function () {
				(isMsie6()) ? hideVisibleSelectElements() : false;
                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: 40,
                        left: -12,
                        display: 'block'
                    }).animate({
                        top: '-=' + distance + 'px',
                        opacity: 1
                    }, time, 'swing', function() {
                        beingShown = false;
                        shown = true;
                    });
					trigger.addClass('on');
                }

                return false;
            }).mouseout(function () {
				(isMsie6()) ? showHiddenSelectElements() : false;
                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');
                    });
					trigger.removeClass('on');

                }, hideDelay);

                return false;
            });
        });
    });