$(document).ready(function() {
	$('ul.accordion').each(function() {
	    var activeItem = null;
	    var isAnimating = false;
	    var itemWaitingToActivate = null;
	    
	    var items = $(this).children('li');
	    var itemCount = items.length;
	    
	    var accordionWidth = this.clientWidth;
	    var activeItemWidth = 480;
	    var inactiveItemWidth = (this.clientWidth - activeItemWidth - 4) / (itemCount - 1);    
	    
	    var checkWaiting = function() {
	       if (itemWaitingToActivate != null) {
	           setInactiveFunc(activeItem, true);
	           setActiveFunc(itemWaitingToActivate, true);
	           itemWaitingToActivate = null;
	       }
	    }
	    
	    var setActiveFunc = function(item, animated) {
	        activeItem = item;
	        $(item).addClass('active');
	        
	        if (animated) {
	        
	            isAnimating = true;
	            
                $(item).animate(
                    { width: activeItemWidth },
                    'fast',
                    function() {
                        isAnimating = false;
                        checkWaiting();
                    });
            }
            else {
                item.style.width = activeItemWidth + 'px';
            }
	    };
	    
	    var setInactiveFunc = function(item, animated) {
	        $(item).removeClass('active');
	       
	        if (animated) {
	            $(item).animate( { width: inactiveItemWidth }, 'fast' );
	        }
	        else {
	            item.style.width = inactiveItemWidth + 'px';
	        }
	    };
	    
	    for (var i = 0; i < itemCount; i++) {
            var item = items[i];
            item.style.display = 'table-cell';
            
            var link = $(item).children('a').first();
            link.css('zIndex', 1000 + (itemCount - i));
            
            setInactiveFunc(item, false);
	    }
	    
	    setActiveFunc(items[0], false);
	    
	    $(items).mouseenter(function() {
            if (this != activeItem)
            {
                itemWaitingToActivate = this;
                if (!isAnimating)
                {
                    checkWaiting();
                }
            }
	    });
	});
});
