/*
 * fancyCaption
 *	by Alex Schornberg
 *	v2.0
 *	http://herz-as.net
 */

	    $.fn.fancycaption = function(settings) {
		settings = $.extend({
		    slideTopBar: '.slide-top',	    // class for top bar caption. set to false to disable top bar slide
		    slideLeftBar: '.slide-left',    // class for top bar caption. set to false to disable top bar slide
		    slideBottomBar: '.slide-bottom',// class for bottom bar caption. set to false to disable bottom bar slide
		    slideRightBar: '.slide-right',  // class for bottom bar caption. set to false to disable bottom bar slide
		    slideTimeIn: 500,		    // time in ms to slide in top/bottom captions
		    slideEasingIn: 'swing',	    // slide in easing
		    slideTimeOut: 500,		    // time in ms to slide out top/bottom captions
		    slideEasingOut: 'swing',	    // slide out easing

		    fadeElement: '.fade',	    // class of the fade element
		    fadeTimeIn: 500,		    // time in ms to fade in overlay container
		    fadeEasingIn: 'swing',	    // fade in easing
		    fadeTimeOut: 500,		    // time in ms to fade out overlay container
		    fadeEasingOut: 'swing',	    // fade out easing
		    fadeFrom: 1,		    // final opacity the overlay container fades to (0=none, 1=full transparency)
		    fadeTo: 0.5			    // final opacity the overlay container fades to (0=none, 1=full transparency)
		}, settings);

		return this.each( function(){
		    if( settings.fadeElement ) $(this).find(settings.fadeElement).stop().animate({ opacity: settings.fadeFrom }, 0 ).nextAll();

		    if( settings.slideTopBar ) $(this).find(settings.slideTopBar).css('top', '-'+$(this).find(settings.slideTopBar).outerHeight()+'px');
		    if( settings.slideRightBar ) $(this).find(settings.slideRightBar).css('right', '-'+$(this).find(settings.slideRightBar).outerWidth()+'px');
		    if( settings.slideBottomBar ) $(this).find(settings.slideBottomBar).css('bottom', '-'+$(this).find(settings.slideBottomBar).outerHeight()+'px');
		    if( settings.slideLeftBar ) $(this).find(settings.slideLeftBar).css('left', '-'+$(this).find(settings.slideLeftBar).outerWidth()+'px');

		    if( settings.slideBottomBar || settings.slideTopBar || settings.slideRightBar || settings.slideLeftBar || settings.fadeElement ){
			$(this).hover(
			    function () {
				if( settings.fadeElement ) $(this).find(settings.fadeElement).first().stop().animate({ opacity: settings.fadeTo }, settings.fadeTimeIn, settings.fadeEasingIn );
				if( settings.slideTopBar ) $(this).find(settings.slideTopBar).stop().show().animate({ top: '0' }, settings.slideTimeIn, settings.slideEasingIn);
				if( settings.slideRightBar ) $(this).find(settings.slideRightBar).stop().show().animate({ right: '0' }, settings.slideTimeIn, settings.slideEasingIn);
				if( settings.slideBottomBar ) $(this).find(settings.slideBottomBar).stop().show().animate({ bottom: '0' }, settings.slideTimeIn, settings.slideEasingIn);
				if( settings.slideLeftBar ) $(this).find(settings.slideLeftBar).stop().show().animate({ left: '0' }, settings.slideTimeIn, settings.slideEasingIn);
			    },
			    function () {
				if( settings.fadeElement ) $(this).find(settings.fadeElement).first().stop().animate({ opacity: settings.fadeFrom }, settings.fadeTimeOut, settings.fadeEasingOut);
				if( settings.slideTopBar ) $(this).find(settings.slideTopBar).stop().animate({ top: '-'+$(this).find(settings.slideTopBar).outerHeight() }, settings.slideTimeOut, settings.slideEasingOut, function(){ $(this).children(settings.slideTopBar).hide() });
				if( settings.slideRightBar ) $(this).find(settings.slideRightBar).stop().show().animate({ right: '-'+$(this).find(settings.slideRightBar).outerWidth() }, settings.slideTimeIn, settings.slideEasingIn);
				if( settings.slideBottomBar ) $(this).find(settings.slideBottomBar).stop().animate({ bottom: '-'+$(this).find(settings.slideBottomBar).outerHeight() }, settings.slideTimeOut, settings.slideEasingOut, function(){ $(this).children(settings.slideBottomBar).hide() });
				if( settings.slideLeftBar ) $(this).find(settings.slideLeftBar).stop().show().animate({ left: '-'+$(this).find(settings.slideLeftBar).outerWidth() }, settings.slideTimeIn, settings.slideEasingIn);
			    }
			);
		    }
		});
	    };
