/* Copyright (c) 2008 Brian Beck (exogen@gmail.com)
 * MIT (http://www.opensource.org/licenses/mit-license.php) licensed.
 *
 * Version: 1.0
 *
 * Requires:
 *   jQuery 1.2+
 *   Dimensions (http://plugins.jquery.com/project/dimensions)
 */

(function($) {
    $.extend({
        ahover: {
            version: 1.0,
            defaults: {
                toggleSpeed: 75,
                toggleEffect: 'both',
                hoverEffect: null,
                moveSpeed: 250,
                easing: 'swing',
                className: 'ahover'
            },
            effects: {
                'width': {width: 0},
                'height': {height: 0},
                'both': {width: 0, height: 0}
            }
        }
    });
    
    $.fn.extend({
        ahover: function(options) {
            var options = $.extend({}, $.ahover.defaults, options);
            var effect = (
                (typeof options.toggleEffect == 'string') ?
                $.ahover.effects[options.toggleEffect] : options.toggleEffect
            );
            var parent = this.offsetParent();
            return this.hover(
                function(e) {
                    var over = $(this);
                    var overSize = {
                        width: over.outerWidth(),
                        height: over.outerHeight()
                    };
                    var overOffset = over.offset();
                    var parentOffset = parent.offset();

                    var under = $('div.' + options.className, parent).stop();
                    var created = (under.length == 0);
                    if (created) {
                        under = $('<div>&nbsp;</div>')
                            .addClass(options.className)
                            .appendTo(parent).css(overSize);
                    }
                    
                    var underOffset = {
                        left: overOffset.left - parentOffset.left -
                            (under.outerWidth() - under.width()) / 2,
                        top: overOffset.top - parentOffset.top -
                            (under.outerHeight() - under.height()) / 2
                    }

                    if (created) {
                        under.css(underOffset).css(effect).animate(overSize, {
                            queue: false,
                            duration: options.toggleSpeed,
                            easing: options.easing
                        });
                    }
                    else {
                        var underCSS = $.extend({}, overSize, underOffset);
                        under.animate(underCSS, {
                            queue: false,
                            duration: options.moveSpeed,
                            easing: options.easing
                        });
                    }
                    if ($.isFunction(options.hoverEffect)) {
                        under.queue(options.hoverEffect);
                    }
                },
                function(e) {
                    $('div.' + options.className, parent).animate(effect, {
                        queue: false,
                        duration: options.toggleSpeed,
                        easing: options.easing,
                        complete: function() { $(this).remove(); }
                    });
                }
            );
        }
    });
})(jQuery);



// hover fix plugin
/*jQuery.fn.fixHover.js : for all elements, add hover class on mouseover and remove on mouseout */
jQuery.fn.fixHover = function(){
	$(this).each(function(){
		var hoverClasses = ' hover';
		if($(this).attr('class')){		
			var classes = $(this).attr('class');
			var classArray = classes.split(' ');
			$(classArray).each(function(){
				hoverClasses += ' ' + this + 'Hover';
			});
		}
		$(this).hover(
		function(){
			if(classes) $(this).attr('class', classes + hoverClasses);
			else $(this).addClass('hover');
		},
		function(){
			if(classes) $(this).attr('class', classes);
			else $(this).removeClass('hover');
		}
		);
	});
}




jQuery(function($) {
   $('ul.cards li').ahover({toggleEffect: 'width', toggleEffect: 'height', toggleSpeed: 275, moveSpeed: 250, hoverEffect: function() {
        $($('ul.cards li:hover'))
            .css({opacity: 0.99})
            .animate({opacity: 0.5}, 750)
            .animate({opacity: 0.99}, 750)
            .dequeue();
        $(this).queue(arguments.callee);
    }});

});

















