script> /*function makeScrollable(wrapper, scrollable){ // Get jQuery elements var wrapper = $(wrapper), scrollable = $(scrollable); // Hide images until they are not loaded scrollable.hide(); var loading = $('Loading...').appendTo(wrapper); // Set function that will check if all images are loaded var interval = setInterval(function(){ var images = scrollable.find('img'); var completed = 0; // Counts number of images that are succesfully loaded images.each(function(){ if (this.complete) completed++; });
if (completed == images.length){ clearInterval(interval); // Timeout added to fix problem with Chrome setTimeout(function(){ loading.hide(); // Remove scrollbars wrapper.css({overflow: 'hidden'}); scrollable.slideDown('slow', function(){ enable(); }); }, 1000); } }, 100);
function enable(){ // height of area at the top at bottom, that don't respond to mousemove var inactiveMargin = 99; // Cache for performance var wrapperWidth = wrapper.width(); var wrapperHeight = wrapper.height(); // Using outer height to include padding too var scrollableHeight = scrollable.outerHeight() + 2*inactiveMargin; // Do not cache wrapperOffset, because it can change when user resizes window // We could use onresize event, but it's just not worth doing that // var wrapperOffset = wrapper.offset();
// Create a invisible tooltip var tooltip = $('') .css('opacity', 0) .appendTo(wrapper);
// Save menu titles scrollable.find('a').each(function(){ $(this).data('tooltipText', this.title); });
var lastTarget; //When user move mouse over menu wrapper.mousemove(function(e){ // Save target lastTarget = e.target; var wrapperOffset = wrapper.offset(); var tooltipLeft = e.pageX - wrapperOffset.left; // Do not let tooltip to move out of menu. // Because overflow is set to hidden, we will not be able too see it tooltipLeft = Math.min(tooltipLeft, wrapperWidth - 75); //tooltip.outerWidth()); var tooltipTop = e.pageY - wrapperOffset.top + wrapper.scrollTop() - 40; // Move tooltip under the mouse when we are in the higher part of the menu if (e.pageY - wrapperOffset.top < wrapperHeight/2){ tooltipTop += 80; } tooltip.css({top: tooltipTop, left: tooltipLeft}); // Scroll menu var top = (e.pageY - wrapperOffset.top) * (scrollableHeight - wrapperHeight) / wrapperHeight - inactiveMargin; if (top < 0){ top = 0; } wrapper.scrollTop(top); });
// Setting interval helps solving perfomance problems in IE var interval = setInterval(function(){ if (!lastTarget) return; var currentText = tooltip.text(); if (lastTarget.nodeName == 'IMG'){ // We've attached data to a link, not image var newText = $(lastTarget).parent().data('tooltipText'); // Show tooltip with the new text if (currentText != newText) { tooltip .stop(true) .css('opacity', 0) .text(newText) .animate({opacity: 1}, 1000); } } }, 200);
// Hide tooltip when leaving menu wrapper.mouseleave(function(){ lastTarget = false; tooltip.stop(true).css('opacity', 0).text(''); }); } }