
// 'stacks' is the Stacks global object.
// All of the other Stacks related Javascript will 
// be attatched to it.
var stacks = {};


// this call to jQuery gives us access to the globaal
// jQuery object. 
// 'noConflict' removes the '$' variable.
// 'true' removes the 'jQuery' variable.
// removing these globals reduces conflicts with other 
// jQuery versions that might be running on this page.
stacks.jQuery = jQuery.noConflict(true);

// Javascript for stacks_in_1_page1
// ---------------------------------------------------------------------

// Each stack has its own object with its own namespace.  The name of
// that object is the same as the stack's id.
stacks.stacks_in_1_page1 = {};

// A closure is defined and assined to the stack's object.  The object
// is also passed in as 'stack' which gives you a shorthand for refering
// to this object from elsewhere.
stacks.stacks_in_1_page1 = (function(stack) {

jQuery(document).ready(function($){
	$('#nav ul li').hover(
		function(){
			$('ul:first',this).show();
		},
		function(){
			$('ul:first',this).hide();
		}
	);
});
	return stack;
})(stacks.stacks_in_1_page1);


// Javascript for stacks_in_51_page1
// ---------------------------------------------------------------------

// Each stack has its own object with its own namespace.  The name of
// that object is the same as the stack's id.
stacks.stacks_in_51_page1 = {};

// A closure is defined and assined to the stack's object.  The object
// is also passed in as 'stack' which gives you a shorthand for refering
// to this object from elsewhere.
stacks.stacks_in_51_page1 = (function(stack) {

	// When jQuery is used it will be available as $ and jQuery but only
	// inside the closure.
	var jQuery = stacks.jQuery;
	var $ = jQuery;
	

//-- Samurai Stack v1.0.0 by Joe Workman --//
/**
 * jQuery slicebox plugin
 * http://www.codrops.com/
 *
 * Copyright 2011, Pedro Botelho
 * Licensed under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 *
 * Date: Thu Sep 5 2011
 */
(function( window, $, undefined ) {
	
	// ======================= imagesLoaded Plugin ===============================
	// https://github.com/desandro/imagesloaded

	// $('#my-container').imagesLoaded(myFunction)
	// execute a callback when all images have loaded.
	// needed because .load() doesn't work on cached images

	// callback function gets image collection as argument
	//  this is the container

	// original: mit license. paul irish. 2010.
	// contributors: Oren Solomianik, David DeSandro, Yiannis Chatzikonstantinou

	$.fn.imagesLoaded 			= function( callback ) {
		var $images = this.find('img'),
			len 	= $images.length,
			_this 	= this,
			blank 	= 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';

		function triggerCallback() {
			callback.call( _this, $images );
		}

		function imgLoaded() {
			if ( --len <= 0 && this.src !== blank ){
				setTimeout( triggerCallback );
				$images.unbind( 'load error', imgLoaded );
			}
		}

		if ( !len ) {
		    triggerCallback();
		}

		$images.bind( 'load error',  imgLoaded ).each( function() {
		    // cached images don't fire load sometimes, so we reset src.
		    if (this.complete || this.complete === undefined){
				var src = this.src;
				// webkit hack from http://groups.google.com/group/jquery-dev/browse_thread/thread/eee6ab7b2da50e1f
				// data uri bypasses webkit log warning (thx doug jones)
				this.src = blank;
				this.src = src;
		    }
		});

		return this;
	};
	
	$.slicebox 					= function( options, element ) {
		this.$element 	= $( element );
		this._create( options );
	};
	
	$.slicebox.defaults 		= {
		orientation			: 'v',		// (v)ertical or (h)orizontal.
		perspective			: 1200,		// -webkit-perspective value.
		slicesCount			: 1,		// needs to be an odd number  15 => number > 0 (if you want the limit higher, change the _validate function).
		disperseFactor		: 0,		// each slice will move x pixels left / top (depending on orientation). The middle slice doesn't move. the middle slice's neighbors will move disperseFactor pixels.
		colorHiddenSides	: '#222',	// color of the hidden sides.
		sequentialRotation	: false,	// the animation will start from left to right. The left most slice will be the first one to rotate.
		sequentialFactor	: 0,		// if sequentialRotation is true this will be the interval between each rotation in ms.
		speed3d				: 800,		// animation speed3d.
		speed				: 600,		// fallback speed. You might want to set a different speed for the fallback animation...
		fallbackEasing		: 'easeOutExpo', // fallback easing.
		autocaption			: false,		// if true the caption will be shown automatically. Joe Workman Added
		slideshow			: true,	// if true the box will be rotating automatically.
		slideshowTime		: 2000		// interval for the slideshow in ms.
    };
	
	$.slicebox.prototype 		= {
		_create 			: function( options ) {
			var instance 			= this;
			
			instance.options 		= $.extend( true, {}, $.slicebox.defaults, options );
			
			instance._validate( instance.options );
			
			var $images				= instance.$element.children('img');
			
			// preload the images
			instance.$element.imagesLoaded( function() {
				if( Modernizr.csstransforms3d ) {
					instance.box = new $.Box3d( instance.options, $images, instance.$element );
					$images.remove();
				}	
				else
					instance.box = new $.Box( instance.options, $images, instance.$element );
			});
		},
		add	: function( $images, callback ) {
			this.box.addImages( $images );
			$images.remove();
			if ( callback ) callback.call( $images );
		},
		_validate			: function( options ) {
			if( Modernizr.csstransforms3d ) {
			/*
			remove these three lines if you don't want to limit the number of slices (not sure if it works fine..)
			*/
			if( options.slicesCount < 0 ) options.slicesCount = 1;
			else if( options.slicesCount > 15 ) options.slicesCount = 15;	
			else if( options.slicesCount %2 === 0 ) options.slicesCount++;
			
			if( options.disperseFactor < 0 ) options.disperseFactor = 0;
			}
			if( options.orientation !== 'v' && options.orientation !== 'h' ) options.orientation = 'v';
		},
		destroy				: function( callback ) {
			this._destroy( callback );
		},
		_destroy 			: function( callback ) {
			this.element.unbind('.slicebox').removeData('slicebox');

			$(window).unbind('.slicebox');
			
			if ( callback ) callback.call();
		},
		option				: function( key, value ) {
			if ( $.isPlainObject( key ) ){
				this.options = $.extend( true, this.options, key );
			} 
		}
	};
	
	/*********************************** 3d Box ********************************************************/
	
	$.Box3d 						= function( options, $images, $wrapper ) {
		this.size			= {					// assuming all images with same size
			width	: $images.width(),
			height	: $images.height()
		};
		this.slices			= new Array();
		this.animating		= false;
		this.$images		= $images;
		this.imagesCount	= this.$images.length;
		this.imageCurrent	= 0;
		this.orientation	= options.orientation;
		this.wrapper		= $wrapper;
		this.info			= false;
		
		this._createBox( options );
		this._configureSlices( options );
		
		if( options.autocaption ) {
			this._showInfo();
		}
		if( options.slideshow ) {

			this.isSlideshowActive	= true;
			this._slideshow( options );
			
			this.OptionPlay.addClass('rb-nav-pause').removeClass('sb-nav-play');
		}
	};
	
	$.Box3d.prototype 				= {
		_createBox 			: function( options ) {
			var boxStyle			= {
					'width'							: this.size.width + 'px',
					'height'						: this.size.height + 'px',
					'z-index'						: 10,
					'position'						: 'relative',
					'-webkit-perspective'			: options.perspective
				};
			
			// Joe Workman Added the sb-box class
			this.$box = $('<div>').addClass('sb-box').css( boxStyle ).appendTo( this.wrapper.css({
				width 	: boxStyle.width, 
				height 	: boxStyle.height 
			})); 
			
			// add navigation and options buttons
			this._addNavigation();
			this._addOptions();
			$('<div class="sb-shadow"/>').appendTo( this.wrapper );
			this._initEvents( options );
			
			for( var i = 0; i < options.slicesCount; ++i ) {
				
				var Slice3d	= new $.Slice3d( options, this.size, this.orientation ),
					$slice	= Slice3d.createSlice( options, i, this.$images );
				
				this.slices.push( Slice3d );
					
				$slice.appendTo( this.$box );
			}
			
			// again set sizes
			this._setSize( options );
		},
		_addNavigation		: function() {
			this.NavPrev 	= $('<span class="sb-nav-prev">Previous Slide</span>');
			this.NavNext 	= $('<span class="sb-nav-next">Next Slide</span>');
			
			var $sbNav		= $('<div class="sb-nav">').append( this.NavPrev ).append( this.NavNext );
			
			this.wrapper.append( $sbNav );
		},
		_addOptions			: function() {
			this.OptionPlay	= $('<span class="sb-nav-play">Autoplay</span>');
			this.OptionInfo	= $('<span class="sb-nav-info">Info</span>');
			
			var $sbNav		= $('<div class="sb-options">').append( this.OptionPlay ).append( this.OptionInfo );
			
			this.wrapper.append( $sbNav );
		},
		_initEvents			: function( options ) {
			var instance = this;
			instance.$box.bind('click.slicebox', function( event ) { //Joe Workman Added
				if (instance.$images.eq(instance.imageCurrent).attr('data-url') != undefined) {
					console.log('link');
					instance._followLink();
				}
			});
			instance.NavNext.bind('click.slicebox', function( event ) {
				instance.navigate( 'next', options );
			});
			instance.NavPrev.bind('click.slicebox', function( event ) {
				instance.navigate( 'prev', options );
			});
			instance.OptionPlay.bind('click.slicebox', function( event ) {
				if( !instance.isSlideshowActive ) {
					if( instance.animating ) return false;
				
					instance.isSlideshowActive	= true;
					
					instance._slideshow( options, true );
					
					instance.OptionPlay.addClass('rb-nav-pause').removeClass('sb-nav-play');
				}
				else {
					instance._stopSlideshow();
				}
			});
			instance.OptionInfo.bind('click.slicebox', function( event ) {
				if( !instance.info ) {
					instance._showInfo();
				}
				else {
					instance._hideInfo();
				}
			});
		},
		_followLink	: function() { //Joe Workman Added
			if( this.animating ) return false;
			
			this._stopSlideshow();
			
			var url	= this.$images.eq(this.imageCurrent).attr('data-url');
			document.location = url;
		},
		_showInfo			: function() {
			if( this.animating ) return false;
			
			this._stopSlideshow();
			
			// Joe Workman Changed to alt tag instead of title tag
			var title	= this.$images.eq(this.imageCurrent).attr('alt');
			$('<div class="sb-title"><span>' + title + '</span></div>').appendTo( this.wrapper ).stop().animate({
				height : '38px',
				bottom:'0px'
			}, 300);
			this.OptionInfo.addClass('sb-nav-noinfo').removeClass('sb-nav-info');
			this.info	= true;
		},
		_hideInfo			: function() {
			if( this.animating ) return false;
			this.wrapper.find('div.sb-title').remove();
			this.OptionInfo.addClass('sb-nav-info').removeClass('sb-nav-noinfo');
			this.info	= false;
		},
		_setSize			: function( options ) {
			if( this.orientation === 'v' ) {
				var newWidth	= Math.floor( this.size.width / options.slicesCount ) * options.slicesCount + 'px';
				this.$box.css( 'width' , newWidth );
				this.wrapper.css( 'width' , newWidth );
			}	
			else {
				var newHeight	= Math.floor( this.size.height / options.slicesCount ) * options.slicesCount + 'px' 
				this.$box.css( 'height' , newHeight );
				this.wrapper.css( 'height' , newHeight );
			}	
		},
		_configureSlices	: function( options ) {
			var middlepos	= Math.ceil( options.slicesCount / 2 ),
				instance	= this;
			
			for( var i = 0, len = instance.slices.length; i < len; ++i ) {
				var sliceObj	= instance.slices[i],
					$slice		= sliceObj.getEl();
				
				if( i < middlepos ) {
					if( this.orientation === 'v' )
						$slice.css({
							zIndex 	: ( i + 1 ) * 1000,
							left	: sliceObj.size.width * i + 'px',
							top		: '0px'
						});
					else if( this.orientation === 'h' )
						$slice.css({
							zIndex 	: ( i + 1 ) * 1000,
							top		: sliceObj.size.height * i + 'px',
							left	: '0px'
						});
				}	
				else {
					if( this.orientation === 'v' )
						$slice.css({
							zIndex 	: (options.slicesCount - i) * 1000,
							left	: sliceObj.size.width * i + 'px',
							top		: '0px'
						});
					else
						$slice.css({
							zIndex 	: (options.slicesCount - i)*1000,
							top		: sliceObj.size.height * i + 'px',
							left	: '0px'
						});
				}
				
				sliceObj.disperseFactor	= options.disperseFactor * ( ( i + 1 ) - middlepos );
				
			}
		},
		navigate : function( dir, options ) {
			var instance	= this;
			if( instance.animating ) return false;
			
			instance._stopSlideshow();
			
			if( instance.info )
				instance._hideInfo();
			
			instance.animating			= true;
			
			this._rotateBox( dir, options );			
		},
		_rotateBox			: function( dir, options, callback ) {
			var instance	= this;
			
			if( dir === 'next') {
				if( instance.imageCurrent < instance.imagesCount - 1 )
					++instance.imageCurrent;
				else
					instance.imageCurrent = 0;
			} 
			else if( dir === 'prev') {
				if( instance.imageCurrent < 1 )
					instance.imageCurrent	= instance.imagesCount - 1;
				else
					--instance.imageCurrent;
			}
			
			for( var i = 0, len = instance.slices.length; i < len; ++i ) {
				var sliceObj	= instance.slices[i];
				
				sliceObj.rotate( dir, i, options, instance.$images, instance.imageCurrent, function( i ) {
					if( i === options.slicesCount - 1 ) {
						instance.animating	= false;
						if( callback ) callback.call();
					}	
				});
			}
		},
		addImages			: function( $images, callback ) {
			this.$images 		= this.$images.add( $images );
			this.imagesCount	= this.$images.length;
			if ( callback ) callback.call( $images );
		},
		_slideshow			: function( options, startNow ) {
			if( !this.isSlideshowActive ) return false;
			
			clearTimeout( this.slideshowT );
			var instance = this;
			if( startNow ) instance._slideshowFunc( options );
			instance.slideshowT	= setTimeout( function() {
				instance._slideshowFunc( options );
			}, options.slideshowTime );
		},
		_slideshowFunc		: function( options ) {
			var instance = this;
			if( instance.info )
				instance._hideInfo();
			instance.animating			= true;	
			instance._rotateBox( 'next', options, function() {
				instance._slideshow( options );
			});
		},
		_stopSlideshow		: function() {
			this.isSlideshowActive	= false;
			clearTimeout( this.slideshowT );
			this.OptionPlay.addClass('sb-nav-play').removeClass('rb-nav-pause');
		}
	};
	
	/*********************************** Slice ********************************************************/
	
	$.Slice3d 						= function( options, boxsize, orientation ) {
		this.orientation		= orientation;
		this._setSize( options, boxsize, orientation );
		
		this.side				= 1;
		this._configureStyles( options );		
	};
	
	$.Slice3d.prototype 			= {
		_configureStyles	: function( options ) {
			// style for the slice
			this.style				= {
				'width'							: this.size.width + 'px',
				'height'						: this.size.height + 'px',
				'position'						: 'absolute',
				'-webkit-transform-style'		: 'preserve-3d',
				'-webkit-transition'			: '-webkit-transform ' + options.speed3d + 'ms',
				'-webkit-backface-visibility'	: 'hidden'
			};
			
			if( this.orientation === 'v' ) {
				this.animationStyles	= {
					side1	: { '-webkit-transform'	: 'translate3d( 0, 0, -' + ( this.size.height / 2 ) + 'px )' },
					side2	: { '-webkit-transform'	: 'translate3d( 0, 0,  -' + ( this.size.height / 2 ) + 'px ) rotate3d( 1, 0, 0, -90deg )' },
					side3	: { '-webkit-transform'	: 'translate3d( 0, 0,  -' + ( this.size.height / 2 ) + 'px ) rotate3d( 1, 0, 0, -180deg )' },
					side4	: { '-webkit-transform'	: 'translate3d( 0, 0,  -' + ( this.size.height / 2 ) + 'px ) rotate3d( 1, 0, 0, -270deg )' }
				};
				this.sidesStyles		= {
					frontSideStyle		: {
						'width'				: this.size.width + 'px', 
						'height'			: this.size.height + 'px',
						'background-color'	: options.colorHiddenSides,
						'-webkit-transform'	: 'rotate3d( 0, 1, 0, 0deg ) translate3d( 0, 0, ' + ( this.size.height / 2 ) + 'px )'
					},
					backSideStyle		: {
						'width'				: this.size.width + 'px', 
						'height'			: this.size.height + 'px',
						'background-color'	: options.colorHiddenSides,
						'-webkit-transform'	: 'rotate3d( 0, 1, 0, 180deg ) translate3d( 0, 0, ' + ( this.size.height / 2 ) + 'px ) rotateZ( 180deg )'
					},
					rightSideStyle		: {
						'width'				: this.size.height + 'px',
						'height'			: this.size.height + 'px',
						'left'				: this.size.width / 2 - this.size.height / 2 + 'px',
						'background-color'	: options.colorHiddenSides,
						'-webkit-transform'	: 'rotate3d( 0, 1, 0, 90deg ) translate3d( 0, 0, ' + ( this.size.width / 2 ) + 'px )'
					},
					leftSideStyle		: {
						'width'				: this.size.height + 'px',
						'height'			: this.size.height + 'px',
						'left'				: this.size.width / 2 - this.size.height / 2 + 'px',
						'background-color'	: options.colorHiddenSides,
						'-webkit-transform'	: 'rotate3d( 0, 1, 0, -90deg ) translate3d( 0, 0, ' + ( this.size.width / 2 ) + 'px )'
					},
					topSideStyle		: {
						'width'				: this.size.width + 'px',
						'height'			: this.size.height + 'px',
						'background-color'	: options.colorHiddenSides,
						'-webkit-transform'	: 'rotate3d( 1, 0, 0, 90deg ) translate3d( 0, 0, ' + ( this.size.height / 2 ) + 'px )'
					},
					bottomSideStyle		: {
						'width'				: this.size.width + 'px',
						'height'			: this.size.height + 'px',
						'background-color'	: options.colorHiddenSides,
						'-webkit-transform'	: 'rotate3d( 1, 0, 0, -90deg ) translate3d( 0, 0, ' + ( this.size.height / 2 ) + 'px )'
					}
				};	
			}
			else if( this.orientation === 'h' ) {
				this.animationStyles	= {
					side1	: { '-webkit-transform'	: 'translate3d( 0, 0, -' + ( this.size.width / 2 ) + 'px )' },
					side2	: { '-webkit-transform'	: 'translate3d( 0, 0, -' + ( this.size.width / 2 ) + 'px ) rotate3d( 0, 1, 0, -90deg )' },
					side3	: { '-webkit-transform'	: 'translate3d( 0, 0, -' + ( this.size.width / 2 ) + 'px ) rotate3d( 0, 1, 0, -180deg )' },
					side4	: { '-webkit-transform'	: 'translate3d( 0, 0, -' + ( this.size.width / 2 ) + 'px ) rotate3d( 0, 1, 0, -270deg )' }
				};
				this.sidesStyles		= {
					frontSideStyle		: {
						'width'				: this.size.width + 'px', 
						'height'			: this.size.height + 'px',
						'background-color'	: options.colorHiddenSides,
						'-webkit-transform'	: 'rotate3d( 0, 1, 0, 0deg ) translate3d( 0, 0, ' + ( this.size.width / 2 ) + 'px )'
					},
					backSideStyle		: {
						'width'				: this.size.width + 'px', 
						'height'			: this.size.height + 'px',
						'background-color'	: options.colorHiddenSides,
						'-webkit-transform'	: 'rotate3d( 0, 1, 0, 180deg ) translate3d( 0, 0, ' + ( this.size.width / 2 ) + 'px ) '
					},
					rightSideStyle		: {
						'width'				: this.size.width + 'px',
						'height'			: this.size.height + 'px',
						'background-color'	: options.colorHiddenSides,
						'-webkit-transform'	: 'rotate3d( 0, 1, 0, 90deg ) translate3d( 0, 0, ' + ( this.size.width / 2 ) + 'px )'
					},
					leftSideStyle		: {
						'width'				: this.size.width + 'px',
						'height'			: this.size.height + 'px',
						'background-color'	: options.colorHiddenSides,
						'-webkit-transform'	: 'rotate3d( 0, 1, 0, -90deg ) translate3d( 0, 0, ' + ( this.size.width / 2 ) + 'px )'
					},
					topSideStyle		: {
						'width'				: this.size.width + 'px',
						'height'			: this.size.width + 'px',
						'background-color'	: options.colorHiddenSides,
						'top'				: this.size.height / 2 - this.size.width / 2,
						'-webkit-transform'	: 'rotate3d( 1, 0, 0, 90deg ) translate3d( 0, 0, ' + ( this.size.height / 2 ) + 'px )'
					},
					bottomSideStyle		: {
						'width'				: this.size.width + 'px',
						'height'			: this.size.width + 'px',
						'background-color'	: options.colorHiddenSides,
						'top'				: this.size.height / 2 - this.size.width / 2,
						'-webkit-transform'	: 'rotate3d( 1, 0, 0, -90deg ) translate3d( 0, 0, ' + ( this.size.height / 2 ) + 'px )'
					}	
				};
			}
		},
		_setSize			: function( options, boxsize ) {
			if( this.orientation === 'v' )
				this.size				= {
					width	: Math.floor( boxsize.width / options.slicesCount ),
					height	: boxsize.height
				};
			else if( this.orientation === 'h' )
				this.size				= {
					width	: boxsize.width,
					height	: Math.floor( boxsize.height / options.slicesCount )
				};
		},
		createSlice			: function( options, i, $imgs ) {
			
			$slice	= $('<div/>')
				.css( this.style )
				.css( this.animationStyles.side1 )
				.append( $('<div/>').addClass('sb-side').css( this.sidesStyles.frontSideStyle ) )
				.append( $('<div/>').addClass('sb-side').css( this.sidesStyles.backSideStyle ) )
				.append( $('<div/>').addClass('sb-side').css( this.sidesStyles.rightSideStyle ) )
				.append( $('<div/>').addClass('sb-side').css( this.sidesStyles.leftSideStyle ) )
				.append( $('<div/>').addClass('sb-side').css( this.sidesStyles.topSideStyle ) )
				.append( $('<div/>').addClass('sb-side').css( this.sidesStyles.bottomSideStyle ) );
			
			this.element	= $slice;
			
			this._showImage( i , 0, $imgs );
			
			return $slice;
		},
		_showImage			: function( i, imgPos, $imgs ) {
			var faceIdx;
			switch( this.side ) {
				case 1 : 
					faceIdx = 0; 
					break;
				case 2 : 
					if( this.orientation === 'v' )
						faceIdx = 4;
					else if( this.orientation === 'h' )	
						faceIdx = 2;
					break;
				case 3 : 
					faceIdx = 1; 
					break;
				case 4 : 
					if( this.orientation === 'v' )
						faceIdx = 5;
					else if( this.orientation === 'h' )	
						faceIdx = 3;
					break;
			};
			
			var imgParam	= {};
			
			if( this.orientation === 'v' ) {
				imgParam.backgroundImage	= 'url(' + $imgs.eq( imgPos ).attr('src') + ')';
				imgParam.backgroundPosition	= - ( i * this.size.width ) + 'px 0px';
			}
			else if( this.orientation === 'h' )	{
				imgParam.backgroundImage	= 'url(' + $imgs.eq( imgPos ).attr('src') + ')';
				imgParam.backgroundPosition	= '0px -' + ( i * this.size.height ) + 'px';
			}
			
			this.element.children().eq( faceIdx ).css( imgParam );	
		},
		getEl				: function() {
			return this.element;
		},
		rotate				: function( dir, i, options, $imgs, imgCurrent, callback ) {
			var instance		= this,
				classRotation,
				seq				= ( options.sequentialRotation ) ? options.sequentialFactor * i : 0;
			
			setTimeout(function() {
				if( dir === 'next' ) {
					switch( instance.side ) {
						case 1 	: animationStyle = instance.animationStyles.side2; 	instance.side = 2; 	break;
						case 2 	: animationStyle = instance.animationStyles.side3; 	instance.side = 3; 	break;
						case 3 	: animationStyle = instance.animationStyles.side4; 	instance.side = 4; 	break;
						case 4 	: animationStyle = instance.animationStyles.side1;  instance.side = 1; 	break;
					};
				}
				else if( dir === 'prev' ) {
					switch( instance.side ) {
						case 1 	: animationStyle = instance.animationStyles.side4;  instance.side = 4; 	break;
						case 2 	: animationStyle = instance.animationStyles.side1; 	instance.side = 1; 	break;
						case 3 	: animationStyle = instance.animationStyles.side2; 	instance.side = 2; 	break;
						case 4 	: animationStyle = instance.animationStyles.side3; 	instance.side = 3; 	break;
					};
				}
				
				instance._showImage( i, imgCurrent, $imgs );
				
				var animateOut 	= {}, 
					animateIn	= {};
				
				if( instance.orientation === 'v' ) {
					animateOut.left	= '+=' + instance.disperseFactor + 'px';
					animateIn.left	= '-=' + instance.disperseFactor + 'px';
				}
				else if( instance.orientation === 'h' ) {
					animateOut.top	= '+=' + instance.disperseFactor + 'px';
					animateIn.top	= '-=' + instance.disperseFactor + 'px';
				}
				
				instance.element.css( animationStyle )
								.animate( animateOut, options.speed3d/2 - 50 )
					            .animate( animateIn, options.speed3d/2 - 50, function() {
									if( callback ) callback.call( this, i );
								});
								
			}, seq);
		}
	};
	
	
	
	
	/*********************************** Box Fallback ********************************************************/
	
	$.Box 							= function( options, $images, $wrapper ) {
		this.size			= {					// assuming all images with same size
			width	: $images.width(),
			height	: $images.height()
		};
		this.animating		= false;
		this.$images		= $images;
		this.imagesCount	= this.$images.length;
		this.imageCurrent	= 0;
		this.orientation	= options.orientation;
		this.wrapper		= $wrapper;
		this.info			= false;
		
		this._createBox( options );
		this._configureImages( options );
		
		if( options.slideshow ) {
			this.isSlideshowActive	= true;
			this._slideshow( options, true );
			
			this.OptionPlay.addClass('rb-nav-pause').removeClass('sb-nav-play');
		}
		if( options.autocaption ) {
			this._showInfo();
		}

	};
	
	$.Box.prototype 				= {
		_createBox 			: function( options ) {
			var boxStyle			= {
					'width'			: this.size.width + 'px',
					'height'		: this.size.height + 'px',
					'z-index'		: 10,
					'position'		: 'relative',
					'overflow'		: 'hidden'
				};
			// Joe Workman Added the sb-box class
			this.$box = $('<div>').addClass('sb-box').css( boxStyle ).appendTo( this.wrapper.css({
				width 	: boxStyle.width, 
				height 	: boxStyle.height
			}).addClass('sb-slider-fb')).append( this.$images.show() );
			
			// add navigation and options buttons
			this._addNavigation();
			this._addOptions();	
			$('<div class="sb-shadow"/>').appendTo( this.wrapper );
			this._initEvents( options );
		},
		_configureImages	: function( options ) {
			var instance			= this;
			
			instance.$images.each(function(i) {
				var $img	= $(this);
				
				if( i === 0) {
					$img.css({ left : '0px', top : '0px' });
				}	
				else {
					if( options.orientation === 'v')
						$img.css({ left : '0px', top : - instance.size.height + 'px' });
					else if( options.orientation === 'h')
						$img.css({ left : instance.size.width + 'px', top : '0px' });
				}	
					
			});
		},
		_addNavigation		: function() {
			this.NavPrev 	= $('<span class="sb-nav-prev">Previous Slide</span>');
			this.NavNext 	= $('<span class="sb-nav-next">Next Slide</span>');
			
			var $sbNav		= $('<div class="sb-nav">').append( this.NavPrev ).append( this.NavNext );
			
			this.wrapper.append( $sbNav );
		},
		_addOptions			: function() {
			this.OptionPlay	= $('<span class="sb-nav-play">Autoplay</span>');
			this.OptionInfo	= $('<span class="sb-nav-info">Info</span>');
			
			var $sbNav		= $('<div class="sb-options">').append( this.OptionPlay ).append( this.OptionInfo );
			
			this.wrapper.append( $sbNav );
		},
		_initEvents			: function( options ) {
			var instance 			= this;
			instance.$box.bind('click.slicebox', function( event ) { //Joe Workman Added
				if (instance.$images.eq(instance.imageCurrent).attr('data-url') != undefined) {
					console.log('link');
					instance._followLink();
				}
			});
			instance.NavNext.bind('click.slicebox', function( event ) {
				instance.navigate( 'next', options );
			});
			instance.NavPrev.bind('click.slicebox', function( event ) {
				instance.navigate( 'prev', options );
			});
			instance.OptionPlay.bind('click.slicebox', function( event ) {
				if( !instance.isSlideshowActive ) {
					if( instance.animating ) return false;
					
					instance.isSlideshowActive	= true;
					
					instance._slideshow( options, true );
					
					instance.OptionPlay.addClass('rb-nav-pause').removeClass('sb-nav-play');
				}
				else {
					instance._stopSlideshow();
				}
			});
			instance.OptionInfo.bind('click.slicebox', function( event ) {
				if( !instance.info ) {
					instance._showInfo();
				}
				else {
					instance._hideInfo();
				}
			});
		},
		_followLink	: function() { //Joe Workman Added
			if( this.animating ) return false;
			
			this._stopSlideshow();
			
			var url	= this.$images.eq(this.imageCurrent).attr('data-url');
			document.location = url;
		},
		_showInfo			: function() {
			if( this.animating ) return false;
			
			this._stopSlideshow();
			
			// Joe Workman Changed to alt tag instead of title tag
			var title	= this.$images.eq(this.imageCurrent).attr('alt');
			$('<div class="sb-title"><span>' + title + '</span></div>').appendTo( this.wrapper ).stop().animate({
				height : '38px',
				bottom:'0px'
			}, 300);
			this.OptionInfo.addClass('sb-nav-noinfo').removeClass('sb-nav-info');
			this.info	= true;
		},
		_hideInfo			: function() {
			if( this.animating ) return false;
			this.wrapper.find('div.sb-title').remove();
			this.OptionInfo.addClass('sb-nav-info').removeClass('sb-nav-noinfo');
			this.info	= false;
		},
		navigate			: function( dir, options ) {
			var instance	= this;
			if( instance.animating ) return false;
			
			instance._stopSlideshow();
	
			if( instance.info )
				instance._hideInfo();
	
			instance.animating			= true;
			
			this._slide( dir, options );
		},
		_slide				: function( dir, options, callback ) {
			var instance	= this,
				$current	= instance.$images.eq( instance.imageCurrent );
			
			if( dir === 'next') {
				if( instance.imageCurrent < instance.imagesCount - 1 )
					++instance.imageCurrent;
				else
					instance.imageCurrent = 0;
			} 
			else if( dir === 'prev') {
				if( instance.imageCurrent < 1 )
					instance.imageCurrent	= instance.imagesCount - 1;
				else
					--instance.imageCurrent;
			}
			
			var animParamOut	= {},
				animParamIn		= {};
			
			if( options.orientation === 'v') {
				animParamOut.top 	= ( dir === 'next' ) ? instance.size.height + 'px' : - instance.size.height + 'px';
				animParamIn.top 	= '0px';
			}
			else if( options.orientation === 'h') {
				animParamOut.left 	= ( dir === 'next' ) ? - instance.size.width + 'px' : instance.size.width + 'px';
				animParamIn.left 	= '0px';
			}
			
			$current.stop().animate(animParamOut, options.speed, options.fallbackEasing );
			
			var $next		= instance.$images.eq( instance.imageCurrent );
			
			if( dir === 'next' ) {
				if( options.orientation === 'v')
					$next.css( 'top', - instance.size.height + 'px' );
				else if( options.orientation === 'h')
					$next.css( 'left', instance.size.width + 'px' );
			}
			else {
				if( options.orientation === 'v')
					$next.css( 'top', instance.size.height + 'px' );
				else if( options.orientation === 'h')
					$next.css( 'left', - instance.size.width + 'px' );
			}
			
			instance.$images.eq( instance.imageCurrent ).stop().animate(animParamIn, options.speed, options.fallbackEasing, function() {
				instance.animating			= false;
				if( callback ) callback.call();
			});
		},
		_slideshow			: function( options, startNow ) {
			if( !this.isSlideshowActive ) return false;
			
			clearTimeout( this.slideshowT );
			var instance = this;
			if( startNow ) instance._slideshowFunc( options );
			instance.slideshowT	= setTimeout( function() {
				instance._slideshowFunc( options );
			}, options.slideshowTime );
		},
		_slideshowFunc		: function( options ) {
			var instance = this;
			if( instance.info )
				instance._hideInfo();
			instance.animating			= true;	
			instance._slide( 'next', options, function() {
				instance._slideshow( options );
			});
		},
		_stopSlideshow		: function() {
			this.isSlideshowActive	= false;
			clearTimeout( this.slideshowT );
			this.OptionPlay.addClass('sb-nav-play').removeClass('rb-nav-pause');
		},
		addImages			: function( $images, callback ) {
			this.$images 		= this.$images.add( $images );
			this.imagesCount	= this.$images.length;
			if ( callback ) callback.call( $images );
		}
	};
	
	var logError 				= function( message ) {
		if ( this.console ) {
			console.error( message );
		}
	};
	
	$.fn.slicebox 				= function( options ) {
		if ( typeof options === 'string' ) {
			var args = Array.prototype.slice.call( arguments, 1 );

			this.each(function() {
				var instance = $.data( this, 'slicebox' );
				if ( !instance ) {
					logError( "cannot call methods on slicebox prior to initialization; " +
					"attempted to call method '" + options + "'" );
					return;
				}
				if ( !$.isFunction( instance[options] ) || options.charAt(0) === "_" ) {
					logError( "no such method '" + options + "' for slicebox instance" );
					return;
				}
				instance[ options ].apply( instance, args );
			});
		} 
		else {
			this.each(function() {
				var instance = $.data( this, 'slicebox' );
				if ( !instance ) {
					$.data( this, 'slicebox', new $.slicebox( options, this ) );
				}
			});
		}
		return this;
	};
	
})( window, jQuery );
/* Modernizr 2.0.6 (Custom Build) | MIT & BSD
 * Build: http://www.modernizr.com/download/#-csstransforms3d-iepp-cssclasses-teststyles-testprop-prefixes-load
 */
;window.Modernizr=function(a,b,c){function A(a,b){for(var d in a)if(k[a[d]]!==c)return b=="pfx"?a[d]:!0;return!1}function z(a,b){return!!~(""+a).indexOf(b)}function y(a,b){return typeof a===b}function x(a,b){return w(n.join(a+";")+(b||""))}function w(a){k.cssText=a}var d="2.0.6",e={},f=!0,g=b.documentElement,h=b.head||b.getElementsByTagName("head")[0],i="modernizr",j=b.createElement(i),k=j.style,l,m=Object.prototype.toString,n=" -webkit- -moz- -o- -ms- -khtml- ".split(" "),o={},p={},q={},r=[],s=function(a,c,d,e){var f,h,j,k=b.createElement("div");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:i+(d+1),k.appendChild(j);f=["&shy;","<style>",a,"</style>"].join(""),k.id=i,k.innerHTML+=f,g.appendChild(k),h=c(k,a),k.parentNode.removeChild(k);return!!h},t,u={}.hasOwnProperty,v;!y(u,c)&&!y(u.call,c)?v=function(a,b){return u.call(a,b)}:v=function(a,b){return b in a&&y(a.constructor.prototype[b],c)};var B=function(a,c){var d=a.join(""),f=c.length;s(d,function(a,c){var d=b.styleSheets[b.styleSheets.length-1],g=d.cssRules&&d.cssRules[0]?d.cssRules[0].cssText:d.cssText||"",h=a.childNodes,i={};while(f--)i[h[f].id]=h[f];e.csstransforms3d=i.csstransforms3d.offsetLeft===9},f,c)}([,["@media (",n.join("transform-3d),("),i,")","{#csstransforms3d{left:9px;position:absolute}}"].join("")],[,"csstransforms3d"]);o.csstransforms3d=function(){var a=!!A(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);a&&"webkitPerspective"in g.style&&(a=e.csstransforms3d);return a};for(var C in o)v(o,C)&&(t=C.toLowerCase(),e[t]=o[C](),r.push((e[t]?"":"no-")+t));w(""),j=l=null,a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}()&&function(a,b){function s(a){var b=-1;while(++b<g)a.createElement(f[b])}a.iepp=a.iepp||{};var d=a.iepp,e=d.html5elements||"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",f=e.split("|"),g=f.length,h=new RegExp("(^|\\s)("+e+")","gi"),i=new RegExp("<(/*)("+e+")","gi"),j=/^\s*[\{\}]\s*$/,k=new RegExp("(^|[^\\n]*?\\s)("+e+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),l=b.createDocumentFragment(),m=b.documentElement,n=m.firstChild,o=b.createElement("body"),p=b.createElement("style"),q=/print|all/,r;d.getCSS=function(a,b){if(a+""===c)return"";var e=-1,f=a.length,g,h=[];while(++e<f){g=a[e];if(g.disabled)continue;b=g.media||b,q.test(b)&&h.push(d.getCSS(g.imports,b),g.cssText),b="all"}return h.join("")},d.parseCSS=function(a){var b=[],c;while((c=k.exec(a))!=null)b.push(((j.exec(c[1])?"\n":c[1])+c[2]+c[3]).replace(h,"$1.iepp_$2")+c[4]);return b.join("\n")},d.writeHTML=function(){var a=-1;r=r||b.body;while(++a<g){var c=b.getElementsByTagName(f[a]),d=c.length,e=-1;while(++e<d)c[e].className.indexOf("iepp_")<0&&(c[e].className+=" iepp_"+f[a])}l.appendChild(r),m.appendChild(o),o.className=r.className,o.id=r.id,o.innerHTML=r.innerHTML.replace(i,"<$1font")},d._beforePrint=function(){p.styleSheet.cssText=d.parseCSS(d.getCSS(b.styleSheets,"all")),d.writeHTML()},d.restoreHTML=function(){o.innerHTML="",m.removeChild(o),m.appendChild(r)},d._afterPrint=function(){d.restoreHTML(),p.styleSheet.cssText=""},s(b),s(l);d.disablePP||(n.insertBefore(p,n.firstChild),p.media="print",p.className="iepp-printshim",a.attachEvent("onbeforeprint",d._beforePrint),a.attachEvent("onafterprint",d._afterPrint))}(a,b),e._version=d,e._prefixes=n,e.testProp=function(a){return A([a])},e.testStyles=s,g.className=g.className.replace(/\bno-js\b/,"")+(f?" js "+r.join(" "):"");return e}(this,this.document),function(a,b,c){function k(a){return!a||a=="loaded"||a=="complete"}function j(){var a=1,b=-1;while(p.length- ++b)if(p[b].s&&!(a=p[b].r))break;a&&g()}function i(a){var c=b.createElement("script"),d;c.src=a.s,c.onreadystatechange=c.onload=function(){!d&&k(c.readyState)&&(d=1,j(),c.onload=c.onreadystatechange=null)},m(function(){d||(d=1,j())},H.errorTimeout),a.e?c.onload():n.parentNode.insertBefore(c,n)}function h(a){var c=b.createElement("link"),d;c.href=a.s,c.rel="stylesheet",c.type="text/css";if(!a.e&&(w||r)){var e=function(a){m(function(){if(!d)try{a.sheet.cssRules.length?(d=1,j()):e(a)}catch(b){b.code==1e3||b.message=="security"||b.message=="denied"?(d=1,m(function(){j()},0)):e(a)}},0)};e(c)}else c.onload=function(){d||(d=1,m(function(){j()},0))},a.e&&c.onload();m(function(){d||(d=1,j())},H.errorTimeout),!a.e&&n.parentNode.insertBefore(c,n)}function g(){var a=p.shift();q=1,a?a.t?m(function(){a.t=="c"?h(a):i(a)},0):(a(),j()):q=0}function f(a,c,d,e,f,h){function i(){!o&&k(l.readyState)&&(r.r=o=1,!q&&j(),l.onload=l.onreadystatechange=null,m(function(){u.removeChild(l)},0))}var l=b.createElement(a),o=0,r={t:d,s:c,e:h};l.src=l.data=c,!s&&(l.style.display="none"),l.width=l.height="0",a!="object"&&(l.type=d),l.onload=l.onreadystatechange=i,a=="img"?l.onerror=i:a=="script"&&(l.onerror=function(){r.e=r.r=1,g()}),p.splice(e,0,r),u.insertBefore(l,s?null:n),m(function(){o||(u.removeChild(l),r.r=r.e=o=1,j())},H.errorTimeout)}function e(a,b,c){var d=b=="c"?z:y;q=0,b=b||"j",C(a)?f(d,a,b,this.i++,l,c):(p.splice(this.i++,0,a),p.length==1&&g());return this}function d(){var a=H;a.loader={load:e,i:0};return a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=r&&!s,u=s?l:n.parentNode,v=a.opera&&o.call(a.opera)=="[object Opera]",w="webkitAppearance"in l.style,x=w&&"async"in b.createElement("script"),y=r?"object":v||x?"img":"script",z=w?"img":y,A=Array.isArray||function(a){return o.call(a)=="[object Array]"},B=function(a){return Object(a)===a},C=function(a){return typeof a=="string"},D=function(a){return o.call(a)=="[object Function]"},E=[],F={},G,H;H=function(a){function f(a){var b=a.split("!"),c=E.length,d=b.pop(),e=b.length,f={url:d,origUrl:d,prefixes:b},g,h;for(h=0;h<e;h++)g=F[b[h]],g&&(f=g(f));for(h=0;h<c;h++)f=E[h](f);return f}function e(a,b,e,g,h){var i=f(a),j=i.autoCallback;if(!i.bypass){b&&(b=D(b)?b:b[a]||b[g]||b[a.split("/").pop().split("?")[0]]);if(i.instead)return i.instead(a,b,e,g,h);e.load(i.url,i.forceCSS||!i.forceJS&&/css$/.test(i.url)?"c":c,i.noexec),(D(b)||D(j))&&e.load(function(){d(),b&&b(i.origUrl,h,g),j&&j(i.origUrl,h,g)})}}function b(a,b){function c(a){if(C(a))e(a,h,b,0,d);else if(B(a))for(i in a)a.hasOwnProperty(i)&&e(a[i],h,b,i,d)}var d=!!a.test,f=d?a.yep:a.nope,g=a.load||a.both,h=a.callback,i;c(f),c(g),a.complete&&b.load(a.complete)}var g,h,i=this.yepnope.loader;if(C(a))e(a,0,i,0);else if(A(a))for(g=0;g<a.length;g++)h=a[g],C(h)?e(h,0,i,0):A(h)?H(h):B(h)&&b(h,i);else B(a)&&b(a,i)},H.addPrefix=function(a,b){F[a]=b},H.addFilter=function(a){E.push(a)},H.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",G=function(){b.removeEventListener("DOMContentLoaded",G,0),b.readyState="complete"},0)),a.yepnope=d()}(this,this.document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
/*
 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
 *
 * Uses the built in easing capabilities added In jQuery 1.1
 * to offer multiple easing options
 *
 * TERMS OF USE - jQuery Easing
 * 
 * Open source under the BSD License. 
 * 
 * Copyright © 2008 George McGinley Smith
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
*/

// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend( jQuery.easing,
{
	def: 'easeOutQuad',
	swing: function (x, t, b, c, d) {
		//alert(jQuery.easing.default);
		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
	},
	easeInQuad: function (x, t, b, c, d) {
		return c*(t/=d)*t + b;
	},
	easeOutQuad: function (x, t, b, c, d) {
		return -c *(t/=d)*(t-2) + b;
	},
	easeInOutQuad: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t + b;
		return -c/2 * ((--t)*(t-2) - 1) + b;
	},
	easeInCubic: function (x, t, b, c, d) {
		return c*(t/=d)*t*t + b;
	},
	easeOutCubic: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t + 1) + b;
	},
	easeInOutCubic: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t + b;
		return c/2*((t-=2)*t*t + 2) + b;
	},
	easeInQuart: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t + b;
	},
	easeOutQuart: function (x, t, b, c, d) {
		return -c * ((t=t/d-1)*t*t*t - 1) + b;
	},
	easeInOutQuart: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
		return -c/2 * ((t-=2)*t*t*t - 2) + b;
	},
	easeInQuint: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t*t + b;
	},
	easeOutQuint: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t*t*t + 1) + b;
	},
	easeInOutQuint: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
		return c/2*((t-=2)*t*t*t*t + 2) + b;
	},
	easeInSine: function (x, t, b, c, d) {
		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
	},
	easeOutSine: function (x, t, b, c, d) {
		return c * Math.sin(t/d * (Math.PI/2)) + b;
	},
	easeInOutSine: function (x, t, b, c, d) {
		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
	},
	easeInExpo: function (x, t, b, c, d) {
		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
	},
	easeOutExpo: function (x, t, b, c, d) {
		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
	},
	easeInOutExpo: function (x, t, b, c, d) {
		if (t==0) return b;
		if (t==d) return b+c;
		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
	},
	easeInCirc: function (x, t, b, c, d) {
		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
	},
	easeOutCirc: function (x, t, b, c, d) {
		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
	},
	easeInOutCirc: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
	},
	easeInElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
	},
	easeOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
	},
	easeInOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
	},
	easeInBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*(t/=d)*t*((s+1)*t - s) + b;
	},
	easeOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
	},
	easeInOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158; 
		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
	},
	easeInBounce: function (x, t, b, c, d) {
		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
	},
	easeOutBounce: function (x, t, b, c, d) {
		if ((t/=d) < (1/2.75)) {
			return c*(7.5625*t*t) + b;
		} else if (t < (2/2.75)) {
			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
		} else if (t < (2.5/2.75)) {
			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
		} else {
			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
		}
	},
	easeInOutBounce: function (x, t, b, c, d) {
		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
	}
});

/*
 *
 * TERMS OF USE - EASING EQUATIONS
 * 
 * Open source under the BSD License. 
 * 
 * Copyright © 2001 Robert Penner
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
 */

$(document).ready(function() {
	$('#stacks_in_51_page1 .samurai_holder a').each(function(index, value) {
		$('#samurai_stacks_in_51_page1').css('cursor','pointer'); // add pointer if links are found.
		$('img', this).attr('data-url', $(this).attr('href'));
	});
	
	$('#stacks_in_51_page1 .samurai_holder img').appendTo($('#samurai_stacks_in_51_page1'));
	$('#stacks_in_51_page1 .samurai_holder').remove();

	$('#samurai_stacks_in_51_page1').slicebox({
		orientation			: 'h',		// (v)ertical or (h)orizontal.
		perspective			: 1200,						// -webkit-perspective value.
		slicesCount			: 5,			// needs to be an odd number  15 => number > 0 (if you want the limit higher, change the _validate function).
		disperseFactor		: 15,		// each slice will move x pixels left / top (depending on orientation). The middle slice doesn't move. the middle slice's neighbors will move disperseFactor pixels.
		colorHiddenSides	: '#B2A186',	// color of the hidden sides.
		sequentialRotation	: true,	// the animation will start from left to right. The left most slice will be the first one to rotate.
		sequentialFactor	: 100,	// if sequentialRotation is true this will be the interval between each rotation in ms.
		speed3d				: 800,			// animation speed3d.
		speed				: 800,	// fallback speed. You might want to set a different speed for the fallback animation...
		fallbackEasing		: 'easeOutExpo', 	// fallback easing.
		autocaption			: false,					// if true the caption will be shown automatically. Joe Workman Added
		slideshow			: true,			// if true the box will be rotating automatically.
		slideshowTime		: 6000		// interval for the slideshow in ms.
	});
	
	if ('none' == 'block') {
		$('#samurai_stacks_in_51_page1').addClass('shadow');
	}
	
	if( !Modernizr.csstransforms3d ) {
		$('#sb-note').show();		
	}
});

//-- End Samurai Stack --//
	return stack;
})(stacks.stacks_in_51_page1);



