//----------------------------------------------------------
// Animated Galleries
//----------------------------------------------------------
(function($) {
jQuery.fn.wpgallery = function(settings) {
//-----------------------------------
// Extend jQuery settings to include arguments
//-----------------------------------
settings = jQuery.extend({}, settings);
//-----------------------------------
// Declare thumb style enumeration
//-----------------------------------
var eThumbStyle =
{
None:0,
Resize:1,
ResizeActive:2,
ResizeHover:3,
Opacity:4,
OpacityActive:5,
OpacityHover:6
};
//-----------------------------------
// Declare thumb position enumeration
//-----------------------------------
var eThumbPosition =
{
Horizontal:0,
Vertical:1
};
//-----------------------------------
// Declare transition style enumeration
//-----------------------------------
var eTransitStyle =
{
Basic:0,
OpaqueFade:1,
LeftToRight:2,
TopToBottom:3,
SquareFade:4,
VerticalFlip:5,
HorizontalFlip:6
};
//-----------------------------------
// Declare control bar style enumeration
//-----------------------------------
var eControlBarStyle =
{
InternalTop:0,
InternalTopAnimated:1,
InternalBottom:2,
InternalBottomAnimated:3,
ExternalBottom:4
};
//-----------------------------------
// Declare navbar alignment enumeration
//-----------------------------------
var eNavbarAlignment =
{
Centre:0,
Left:1,
Right:2
};
//-----------------------------------
// Declare browser enumeration
//-----------------------------------
var eBrowser =
{
Msie:0,
Mozilla:1,
Safari:2,
Opera:3,
Chrome:4
};
//-----------------------------------
// Declare browser enumeration
//-----------------------------------
var eImageData =
{
ImageSrc:0,
ImageWidth:1,
ImageHeight:2,
ImageCaption:3,
ThumbSrc:4
};
//-----------------------------------
// Declare member variables
//-----------------------------------
var $mainDiv = this;
var $frameDiv = null;
var $controlDiv = null;
var $imageDiv = null;
var $captionDiv = null;
var $thumbDiv = null;
var $thumb1Div = null;
var $thumb2Div = null;
var $navBarDiv = null;
var $rewindButton = null;
var $previousButton = null;
var $playButton = null;
var $nextButton = null;
var $forwardButton = null;
var $rewindMap = null;
var $previousMap = null;
var $playMap = null;
var $nextMap = null;
var $forwardMap = null;
var $thumbRewindButton = null;
var $thumbRewindMap = null;
var $thumbForwardButton = null;
var $thumbForwardMap = null;
var nCurrentImage = 0;
var nPreviousImage = 0;
var bPlaying = false;
var bPrevious = false;
var bGoToImage = false;
var bJumpToImage = false;
var bJumpForward = true;
var bFirstThumbDiv = true;
var nThumbFirstImg = 0;
var bMouseOverThumbs = false;
var bScrollingThumbs = false;
var nThumbHoverBoundary = 20;
var nThumbMinorHoverBoundary = 10;
var nThumbDivBoundary = 100;
var nThumbActiveResize = 10;
var strZoomId = settings.imageArray + '_zoom';
var strRewindMapId = settings.imageArray + '_RewindMapId';
var strPreviousMapId = settings.imageArray + '_PreviousMapId';
var strPlayMapId = settings.imageArray + '_PlayMapId';
var strNextMapId = settings.imageArray + '_NextMapId';
var strForwardMapId = settings.imageArray + '_ForwardMapId';
var strThumbRewindMapId = settings.imageArray + '_ThumbRewindMapId';
var strThumbForwardMapId = settings.imageArray + '_ThumbForwardMapId';
var nGalleryLeft = settings.nGalleryLeft + ( settings.bPageCentred ? (( $(document).width() - settings.nPageWidth ) / 2 ): 0 );
var bShowNavFwrdNReverse = ( settings.nTotalImages > settings.nTotalThumbs );
var nNavBarWidth = ( ( settings.bShowThumbnails && bShowNavFwrdNReverse ) ? settings.nNavBarIconWidth * 5 : settings.nNavBarIconWidth * 3 );
settings.nTotalThumbs = Math.min( settings.nTotalThumbs, settings.nTotalImages );
settings.bShowThumbnailArrows = ( settings.bShowThumbnailArrows && bShowNavFwrdNReverse );
var nBrowser = eBrowser.Opera;
if( jQuery.browser.mozilla )
nBrowser = eBrowser.Mozilla;
if( jQuery.browser.msie )
nBrowser = eBrowser.Msie;
else if( /chrome/.test( navigator.userAgent.toLowerCase() ) )
nBrowser = eBrowser.Chrome;
else if( jQuery.browser.safari )
nBrowser = eBrowser.Safari;
var bPngHack = ( jQuery.browser.msie && jQuery.browser.version < 7 );
var nThumbDivHeight = 0;
var nThumbDivTop = 0;
var nThumbDivWidth = 0;
var nThumbDivLeft = 0;
if( settings.nThumbPosition == eThumbPosition.Horizontal )
{
nThumbDivHeight = ( settings.nThumbStyle == eThumbStyle.Resize || settings.nThumbStyle == eThumbStyle.ResizeActive || settings.nThumbStyle == eThumbStyle.ResizeHover ) ? settings.nThumbSize * 2 : settings.nThumbSize;
nThumbDivTop = settings.nThumbTop;
nThumbDivWidth = ( settings.nThumbSize * settings.nTotalThumbs ) + ( settings.nThumbSpacing * ( settings.nTotalThumbs - 1 ) ) + nThumbDivBoundary;
nThumbDivLeft = ( ( settings.nGalleryWidth - nThumbDivWidth ) / 2 );
}
else // Vertical Thumb Position
{
nThumbDivWidth = ( settings.nThumbStyle == eThumbStyle.Resize || settings.nThumbStyle == eThumbStyle.ResizeActive || settings.nThumbStyle == eThumbStyle.ResizeHover ) ? settings.nThumbSize * 2 : settings.nThumbSize;
nThumbDivLeft = settings.nThumbLeft;
nThumbDivHeight = ( settings.nThumbSize * settings.nTotalThumbs ) + ( settings.nThumbSpacing * ( settings.nTotalThumbs - 1 ) ) + nThumbDivBoundary;
nThumbDivTop = ( ( settings.nGalleryHeight - nThumbDivHeight ) / 2 );
}
//-----------------------------------
// Initialise gallery
//-----------------------------------
initialise();
//-----------------------------------
// Event handlers - Window resize
//-----------------------------------
if( settings.bPageCentred )
{
$(window).bind('resize', function()
{
nGalleryLeft = settings.nGalleryLeft + (( $(document).width() - settings.nPageWidth ) / 2 );
});
}
//-----------------------------------
// Event handlers - Navigation Controls
//-----------------------------------
if( settings.bShowNavBar )
{
if( settings.bShowThumbnails && bShowNavFwrdNReverse )
{
$rewindButton.click(function()
{
bJumpForward = false;
var nTargetImg = nThumbFirstImg - 1;
if( nTargetImg < 0 )
nTargetImg = settings.nTotalImages - 1;
goToImage( nTargetImg, true );
});
$forwardButton.click(function()
{
bJumpForward = true;
var nTargetImg = nThumbFirstImg + settings.nTotalThumbs;
if( nTargetImg >= settings.nTotalImages )
nTargetImg = 0;
goToImage( nTargetImg, true );
});
if( bPngHack )
{
$rewindMap.hover(function() { $rewindButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.rewindoverButtonSrc + '\', sizingMethod=\'scale\')' }); }, function() { $rewindButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.rewindButtonSrc + '\', sizingMethod=\'scale\')' }); });
$forwardMap.hover(function() { $forwardButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.forwardoverButtonSrc + '\', sizingMethod=\'scale\')' }); }, function() { $forwardButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.forwardButtonSrc + '\', sizingMethod=\'scale\')' }); });
}
else
{
$rewindButton.hover(function() { $(this).attr('src', settings.rewindoverButtonSrc); }, function() { $(this).attr('src', settings.rewindButtonSrc); });
$forwardButton.hover(function() { $(this).attr('src', settings.forwardoverButtonSrc); }, function() { $(this).attr('src', settings.forwardButtonSrc); });
}
}
$previousButton.click(function()
{
stopTimer();
bPrevious = true;
switchSlide();
bPrevious = false;
});
$playButton.click(function()
{
if (bPlaying)
{
stopTimer();
}
else
{
switchSlide();
startTimer();
}
});
$nextButton.click(function()
{
stopTimer();
switchSlide();
});
if( bPngHack )
{
$previousMap.hover(function() { $previousButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.prevoverButtonSrc + '\', sizingMethod=\'scale\')' }); }, function() { $previousButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.prevButtonSrc + '\', sizingMethod=\'scale\')' }); });
$playMap.hover(function()
{ if (bPlaying) $playButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.pauseoverButtonSrc + '\', sizingMethod=\'scale\')' }); else $playButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.playoverButtonSrc + '\', sizingMethod=\'scale\')' }); },
function()
{ if (bPlaying) $playButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.pauseButtonSrc + '\', sizingMethod=\'scale\')' });
else $playButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.playButtonSrc + '\', sizingMethod=\'scale\')' }); });
$nextMap.hover(function() { $nextButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.nextoverButtonSrc + '\', sizingMethod=\'scale\')' }); }, function() { $nextButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.nextButtonSrc + '\', sizingMethod=\'scale\')' }); });
}
else
{
$previousButton.hover(function() { $(this).attr('src', settings.prevoverButtonSrc); }, function() { $(this).attr('src', settings.prevButtonSrc); });
$playButton.hover(function()
{ if (bPlaying) $(this).attr('src', settings.pauseoverButtonSrc); else $(this).attr('src', settings.playoverButtonSrc); },
function()
{ if (bPlaying) $(this).attr('src', settings.pauseButtonSrc); else $(this).attr('src', settings.playButtonSrc); });
$nextButton.hover(function() { $(this).attr('src', settings.nextoverButtonSrc); }, function() { $(this).attr('src', settings.nextButtonSrc); });
}
}
if( settings.bShowThumbnails && bShowNavFwrdNReverse && settings.bShowThumbnailArrows )
{
$thumbRewindButton.click(function()
{
bJumpForward = false;
var nTargetImg = nThumbFirstImg - 1;
if( nTargetImg < 0 )
nTargetImg = settings.nTotalImages - 1;
goToImage( nTargetImg, true );
});
$thumbForwardButton.click(function()
{
bJumpForward = true;
var nTargetImg = nThumbFirstImg + settings.nTotalThumbs;
if( nTargetImg >= settings.nTotalImages )
nTargetImg = 0;
goToImage( nTargetImg, true );
});
if( bPngHack )
{
$thumbRewindMap.hover(function() { $thumbRewindButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.thumboverRewindButtonSrc + '\', sizingMethod=\'scale\')' }); }, function() { $thumbRewindButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.thumbRewindButtonSrc + '\', sizingMethod=\'scale\')' }); });
$thumbForwardMap.hover(function() { $thumbForwardButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.thumboverForwardButtonSrc + '\', sizingMethod=\'scale\')' }); }, function() { $thumbForwardButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.thumbForwardButtonSrc + '\', sizingMethod=\'scale\')' }); });
}
else
{
$thumbRewindButton.hover(function() { $(this).attr('src', settings.thumboverRewindButtonSrc); }, function() { $(this).attr('src', settings.thumbRewindButtonSrc); });
$thumbForwardButton.hover(function() { $(this).attr('src', settings.thumboverForwardButtonSrc); }, function() { $(this).attr('src', settings.thumbForwardButtonSrc); });
}
}
//-----------------------------------
// Event handlers - Controls (caption and nav bar hover-slide action)
//-----------------------------------
if( settings.bShowNavBar || settings.bShowCaption )
{
if( settings.nControlBarStyle == eControlBarStyle.InternalTopAnimated )
$frameDiv.hover(function() { $controlDiv.css({ visibility:'visible' }); $controlDiv.animate({ top: 0 }, 250); }, function() { $controlDiv.animate({ top: -$controlDiv.height() }, 250, function() { $controlDiv.css({ visibility:'hidden' }); }); });
else if( settings.nControlBarStyle == eControlBarStyle.InternalBottomAnimated )
$frameDiv.hover(function() { $controlDiv.css({ visibility:'visible' }); $controlDiv.animate({ top: settings.nImageDivHeight - $controlDiv.height() }, 250); }, function() { $controlDiv.animate({ top: settings.nImageDivHeight }, 250, function() { $controlDiv.css({ visibility:'hidden' }); }); });
}
//-----------------------------------
// Event handlers - Thumbnails
//-----------------------------------
if( settings.bShowThumbnails )
{
if( settings.nThumbStyle == eThumbStyle.Resize || settings.nThumbStyle == eThumbStyle.ResizeHover )
{
$mainDiv.mousemove(function(e)
{
var ptMouseX = 0;
var ptMouseY = 0;
switch( nBrowser )
{
case eBrowser.Msie:
{
if( jQuery.browser.version < 7 ) // IE6 and below don't support zoom
{
ptMouseX = e.pageX - ( nGalleryLeft + nThumbDivLeft );
ptMouseY = e.pageY - ( settings.nGalleryTop + nThumbDivTop );
}
else // IE7 and above support zoom
{
var fZoom = getZoom();
if( settings.nThumbPosition == eThumbPosition.Horizontal )
ptMouseY = ( e.pageY / fZoom ) - ( settings.nGalleryTop + nThumbDivTop );
else
ptMouseY = ( e.pageY / fZoom ) - ( settings.nGalleryTop + nThumbDivTop ) + ( fZoom > 1.0 ? ( ( e.pageY - e.clientY ) / fZoom ) : 0 );
if( settings.bPageCentred )
{
nGalleryLeft = settings.nGalleryLeft + (( ( $(document).width() * ( fZoom < 1.0 ? fZoom : 1 ) ) - ( settings.nPageWidth / ( fZoom > 1.0 ? fZoom : 1 ) ) ) / 2 );
ptMouseX = ( e.pageX / fZoom ) - ( nGalleryLeft + nThumbDivLeft ) + ( ( e.pageX - e.clientX ) / fZoom );
}
else
{
ptMouseX = ( e.pageX / fZoom ) - ( nGalleryLeft + nThumbDivLeft ) + ( ( e.pageX - e.clientX ) / fZoom );
}
}
}
break;
case eBrowser.Mozilla:
{
ptMouseX = e.pageX - ( nGalleryLeft + nThumbDivLeft );
ptMouseY = e.pageY - ( settings.nGalleryTop + nThumbDivTop );
}
break;
case eBrowser.Opera:
case eBrowser.Safari:
case eBrowser.Chrome:
{
if( settings.bPageCentred )
{
var fZoom = getZoom();
nGalleryLeft = settings.nGalleryLeft + (( ( $(document).width() / ( fZoom > 0.99 ? fZoom : 1 ) ) - settings.nPageWidth ) / 2 );
}
ptMouseX = e.pageX - ( nGalleryLeft + nThumbDivLeft );
ptMouseY = e.pageY - ( settings.nGalleryTop + nThumbDivTop );
}
break;
}
if( settings.nThumbPosition == eThumbPosition.Horizontal )
{
if( ptMouseX > -1 && ptMouseX < nThumbDivWidth && ptMouseY > -1 && ptMouseY < ( nThumbDivHeight + nThumbHoverBoundary ) )
{
var nBorderRatio = 1;
if( ptMouseX < nThumbHoverBoundary )
nBorderRatio = 1 - Math.max( 0, ( ( nThumbHoverBoundary - ptMouseX ) / nThumbHoverBoundary ) );
else if( ptMouseX > nThumbDivWidth - nThumbHoverBoundary )
nBorderRatio = Math.max( 0, ( ( nThumbDivWidth - ptMouseX ) / nThumbHoverBoundary ) );
else if( ptMouseY < nThumbHoverBoundary )
nBorderRatio = 1 - Math.max( 0, ( ( nThumbHoverBoundary - ptMouseY ) / nThumbHoverBoundary ) );
else if( ptMouseY > nThumbDivHeight )
nBorderRatio = Math.max( 0, ( ( nThumbDivHeight + nThumbMinorHoverBoundary - ptMouseY ) / nThumbMinorHoverBoundary ) );
var nSlideX = ( ptMouseX - ( nThumbDivWidth / 2 ) ) * 0.1 * nBorderRatio;
var $frontThumbDiv = bFirstThumbDiv ? $thumb1Div : $thumb2Div;
for (var i = 0; i < settings.nTotalThumbs; ++i)
{
var nThumbCentre = ( (i + 0.5) * (settings.nThumbSize + settings.nThumbSpacing)) + ( nThumbDivBoundary / 2 );
var nXOffset = ( ptMouseX - nThumbCentre ) < 0 ? nThumbCentre - ptMouseX : ptMouseX - nThumbCentre;
var nRatio = Math.max( 0, ( 150 - nXOffset ) / 150 );
var nImgResize = settings.nThumbSize * nRatio * nBorderRatio;
var nImgLeft = (i * (settings.nThumbSize + settings.nThumbSpacing)) - ( nImgResize / 2 ) + ( nThumbDivBoundary / 2 ) - nSlideX;
$frontThumbDiv.find('img:eq('+ i +')').css({ 'left': nImgLeft, 'width':(settings.nThumbSize + nImgResize), 'top':-nImgResize, 'height': (settings.nThumbSize + nImgResize) });
}
bMouseOverThumbs = true;
}
else if( bMouseOverThumbs )
{
bMouseOverThumbs = false;
resetThumbSize( true );
}
}
else
{
if( ptMouseX > -nThumbMinorHoverBoundary && ptMouseX < nThumbDivWidth && ptMouseY > -1 && ptMouseY < nThumbDivHeight )
{
var nBorderRatio = 1;
if( ptMouseY < nThumbHoverBoundary )
nBorderRatio = 1 - Math.max( 0, ( ( nThumbHoverBoundary - ptMouseY ) / nThumbHoverBoundary ) );
else if( ptMouseY > nThumbDivHeight - nThumbHoverBoundary )
nBorderRatio = Math.max( 0, ( ( nThumbDivHeight - ptMouseY ) / nThumbHoverBoundary ) );
else if( ptMouseX > nThumbDivWidth - nThumbHoverBoundary )
nBorderRatio = Math.max( 0, ( ( nThumbDivWidth - ptMouseX ) / nThumbHoverBoundary ) );
if( ptMouseX < 0 )
nBorderRatio = Math.max( 0, ( ( nThumbMinorHoverBoundary + ptMouseX ) / nThumbMinorHoverBoundary ) );
var nSlideY = ( ptMouseY - ( nThumbDivHeight / 2 ) ) * 0.1 * nBorderRatio;
var $frontThumbDiv = bFirstThumbDiv ? $thumb1Div : $thumb2Div;
for (var i = 0; i < settings.nTotalThumbs; ++i)
{
var nThumbCentre = ( (i + 0.5) * (settings.nThumbSize + settings.nThumbSpacing)) + ( nThumbDivBoundary / 2 );
var nYOffset = ( ptMouseY - nThumbCentre ) < 0 ? nThumbCentre - ptMouseY : ptMouseY - nThumbCentre;
var nRatio = Math.max( 0, ( 150 - nYOffset ) / 150 );
var nImgResize = settings.nThumbSize * nRatio * nBorderRatio;
var nImgTop = (i * (settings.nThumbSize + settings.nThumbSpacing)) - ( nImgResize / 2 ) + ( nThumbDivBoundary / 2 ) - nSlideY;
$frontThumbDiv.find('img:eq('+ i +')').css({ 'left':0, 'width':(settings.nThumbSize + nImgResize), 'top':nImgTop, 'height': (settings.nThumbSize + nImgResize) });
}
bMouseOverThumbs = true;
}
else if( bMouseOverThumbs )
{
bMouseOverThumbs = false;
resetThumbSize( true );
}
}
});
}
}
//-----------------------------------
// Final action once everything declared - start autoplay
//-----------------------------------
if( settings.bAutoplay )
startTimer();
//-----------------------------------
// Function Declarations
//-----------------------------------
function initialise()
{
// Append div for calculting zoom
if( nBrowser == eBrowser.Safari || nBrowser == eBrowser.Opera )
$mainDiv.append('
');
// Append thumb div
if( settings.bShowThumbnails )
{
$mainDiv.append('');
$thumbDiv = $mainDiv.find('div:last');
}
// Append frame div
$mainDiv.append('');
$frameDiv = $mainDiv.find('div:last');
// Append first image and image div
var nImageWidth = Math.min( settings.nImageDivWidth, getImageData( 0, eImageData.ImageWidth ) );
var nImageHeight = Math.min( settings.nImageDivHeight, getImageData( 0, eImageData.ImageHeight ) );
var nImageLeft = ( settings.nImageDivWidth - nImageWidth ) / 2;
var nImageTop = ( settings.nImageDivHeight - nImageHeight ) / 2;
$frameDiv.append(' + )
');
$imageDiv = $frameDiv.find('div:first');
if( settings.bShowNavBar || settings.bShowCaption )
{
// Append control div
switch( settings.nControlBarStyle )
{
case eControlBarStyle.InternalTop:
$frameDiv.append('');
$controlDiv = $frameDiv.find('div:last');
break;
case eControlBarStyle.InternalTopAnimated:
$frameDiv.append('');
$controlDiv = $frameDiv.find('div:last');
break;
case eControlBarStyle.InternalBottom:
$frameDiv.append('');
$controlDiv = $frameDiv.find('div:last');
break;
case eControlBarStyle.InternalBottomAnimated:
$frameDiv.append('');
$controlDiv = $frameDiv.find('div:last');
break;
case eControlBarStyle.ExternalBottom:
$mainDiv.append('');
$controlDiv = $mainDiv.find('div:last');
break;
}
if( settings.bShowNavBar && settings.bNavBarOnTop )
{
var nNavBarLeftPadding = ( settings.nNavBarAlignment == eNavbarAlignment.Right ) ? settings.nImageDivWidth - nNavBarWidth : ( settings.nNavBarAlignment == eNavbarAlignment.Left ) ? 0 : ( ( settings.nImageDivWidth - nNavBarWidth ) / 2 );
var strNavBarColour = ( settings.strNavBarColour == 'none' ? '' : ('background-color:' + settings.strNavBarColour + ';') );
var strNavBarOpacity = ( settings.nNavBarOpacity >= 1.0 ? '' : (' filter:alpha(opacity=' + ( settings.nNavBarOpacity * 100 ) + '); opacity:' + settings.nNavBarOpacity + '; -moz-opacity:' + settings.nNavBarOpacity + ';') );
var strNavDiv= '';
$controlDiv.append( strNavDiv );
$navBarDiv = $controlDiv.find('div:first');
}
if( settings.bShowCaption )
{
var strCaptionText = showCaptionCount() + getImageData( 0, eImageData.ImageCaption );
var strCaptionColour = ( settings.strCaptionColour == 'none' ? '' : ('background-color:' + settings.strCaptionColour + ';') );
var strCaptionOpacity = ( settings.nCaptionOpacity >= 1.0 ? '' : (' filter:alpha(opacity=' + ( settings.nCaptionOpacity * 100 ) + '); opacity:' + settings.nCaptionOpacity + '; -moz-opacity:' + settings.nCaptionOpacity + ';') );
var strCaptionDiv = ' ' + strCaptionText + '
';
$controlDiv.append( strCaptionDiv );
$captionDiv = $controlDiv.find('div:last');
}
if( settings.bShowNavBar )
{
if( !settings.bNavBarOnTop )
{
var nNavBarLeftPadding = ( settings.nNavBarAlignment == eNavbarAlignment.Right ) ? settings.nImageDivWidth - nNavBarWidth : ( settings.nNavBarAlignment == eNavbarAlignment.Left ) ? 0 : ( ( settings.nImageDivWidth - nNavBarWidth ) / 2 );
var strNavBarColour = ( settings.strNavBarColour == 'none' ? '' : ('background-color:' + settings.strNavBarColour + ';') );
var strNavBarOpacity = ( settings.nNavBarOpacity >= 1.0 ? '' : (' filter:alpha(opacity=' + ( settings.nNavBarOpacity * 100 ) + '); opacity:' + settings.nNavBarOpacity + '; -moz-opacity:' + settings.nNavBarOpacity + ';') );
var strNavDiv= '';
$controlDiv.append( strNavDiv );
$navBarDiv = $controlDiv.find('div:last');
}
// Append nav bar buttons
if( settings.bShowThumbnails && bShowNavFwrdNReverse )
{
if( bPngHack )
{
$navBarDiv.append('
');
$navBarDiv.append('
');
$navBarDiv.append('
');
$navBarDiv.append('
');
$navBarDiv.append('
');
$rewindMap = $navBarDiv.find('map:eq(0)');
$previousMap = $navBarDiv.find('map:eq(1)');
$playMap = $navBarDiv.find('map:eq(2)');
$nextMap = $navBarDiv.find('map:eq(3)');
$forwardMap = $navBarDiv.find('map:eq(4)');
}
else
{
$navBarDiv.append('
');
$navBarDiv.append('
');
$navBarDiv.append('
');
$navBarDiv.append('
');
$navBarDiv.append('
');
}
$rewindButton = $navBarDiv.find('img:eq(0)');
$previousButton = $navBarDiv.find('img:eq(1)');
$playButton = $navBarDiv.find('img:eq(2)');
$nextButton = $navBarDiv.find('img:eq(3)');
$forwardButton = $navBarDiv.find('img:eq(4)');
}
else
{
if( bPngHack )
{
$navBarDiv.append('
');
$navBarDiv.append('
');
$navBarDiv.append('
');
$previousMap = $navBarDiv.find('map:eq(0)');
$playMap = $navBarDiv.find('map:eq(1)');
$nextMap = $navBarDiv.find('map:eq(2)');
}
else
{
$navBarDiv.append('
');
$navBarDiv.append('
');
$navBarDiv.append('
');
}
$previousButton = $navBarDiv.find('img:eq(0)');
$playButton = $navBarDiv.find('img:eq(1)');
$nextButton = $navBarDiv.find('img:eq(2)');
}
}
switch( settings.nControlBarStyle )
{
case eControlBarStyle.InternalTop:
$controlDiv.css({ visibility:'visible' });
break;
case eControlBarStyle.InternalTopAnimated:
$controlDiv.css({ top:(-$controlDiv.height()) });
break;
case eControlBarStyle.InternalBottom:
$controlDiv.css({ visibility:'visible', top:( settings.nImageDivHeight - $controlDiv.height()) });
break;
}
}
if( settings.bShowThumbnails )
{
if( settings.nThumbPosition == eThumbPosition.Horizontal )
{
// Append thumbnail 1 div
var nNestedThumbDivTop = ( settings.nThumbStyle == eThumbStyle.Resize || settings.nThumbStyle == eThumbStyle.ResizeHover ) ? settings.nThumbSize : 0;
$thumbDiv.append('');
$thumb1Div = $thumbDiv.find('div:first');
// Append thumbnail 2 div
$thumbDiv.append('');
$thumb2Div = $thumbDiv.find('div:last');
}
else
{
// Append thumbnail 1 div
$thumbDiv.append('');
$thumb1Div = $thumbDiv.find('div:first');
// Append thumbnail 2 div
$thumbDiv.append('');
$thumb2Div = $thumbDiv.find('div:last');
}
// Load the thumbnails
for (var i = 0; i < settings.nTotalThumbs; ++i)
{
var nImgOpacity = ( settings.nThumbStyle == eThumbStyle.Opacity || settings.nThumbStyle == eThumbStyle.OpacityActive || settings.nThumbStyle == eThumbStyle.OpacityHover ) ? settings.nThumbOpacity : 1.0;
var strBorderStyle = ( settings.bThumbBorder ? 'solid' : 'none' );
if( settings.nThumbPosition == eThumbPosition.Horizontal )
{
var nImgLeft = (i * (settings.nThumbSize + settings.nThumbSpacing)) + ( nThumbDivBoundary / 2 );
// Append first thumb div
if( i < settings.nTotalImages )
{
$thumb1Div.append('
');
loadImage( $thumb1Div.find('a:eq('+ i +')').find('img:first'), getImageData( i, eImageData.ThumbSrc ), i, true );
}
// Append Second thumb div
if( settings.nTotalThumbs + i < settings.nTotalImages )
{
$thumb2Div.append('
');
loadImage( $thumb2Div.find('a:eq('+ i +')').find('img:first'), getImageData( settings.nTotalThumbs + i, eImageData.ThumbSrc ), i, true );
}
}
else
{
var nImgTop = (i * (settings.nThumbSize + settings.nThumbSpacing)) + ( nThumbDivBoundary / 2 );
// Append first thumb div
if( i < settings.nTotalImages )
{
$thumb1Div.append('
');
loadImage( $thumb1Div.find('a:eq('+ i +')').find('img:first'), getImageData( i, eImageData.ThumbSrc ), i, true );
}
// Append second thumb div
if( settings.nTotalThumbs + i < settings.nTotalImages )
{
$thumb2Div.append('
');
loadImage( $thumb2Div.find('a:eq('+ i +')').find('img:first'), getImageData( i, eImageData.ThumbSrc ), i, true );
}
}
if( i < settings.nTotalImages )
{
$thumb1Div.find('img:eq('+ i +')').click( function( nThumb ) { return function() { goToImage(nThumb, false); } }(i));
if( settings.bThumbBorder )
$thumb1Div.find('img:eq('+ i +')').hover( function() { $(this).css({ 'border-color':settings.strThumbBorderHoverColour }); }, function( nThumb ) { return function() { var bHighlight = ((nCurrentImage-nThumbFirstImg) == nThumb); $(this).css({ 'border-color':(bHighlight?settings.strThumbBorderActiveColour:settings.strThumbBorderColour) }); } }(i));
if( settings.nThumbStyle == eThumbStyle.Opacity )
$thumb1Div.find('img:eq('+ i +')').hover( function(){ $(this).animate({ opacity:1.0 }, 200 ); }, function( nThumb ){ return function(){ var bHighlight = ((nCurrentImage-nThumbFirstImg) == nThumb); $(this).animate({ opacity:(bHighlight?1.0:settings.nThumbOpacity) }, 20 ); } }(i));
else if( settings.nThumbStyle == eThumbStyle.OpacityHover )
$thumb1Div.find('img:eq('+ i +')').hover( function(){ $(this).animate({ opacity:1.0 }, 200 ); }, function(){ $(this).animate({ opacity:settings.nThumbOpacity }, 20 ); });
}
if( settings.nTotalThumbs + i < settings.nTotalImages )
{
$thumb2Div.find('img:eq('+ i +')').click( function( nThumb ) { return function() { goToImage(nThumb, false); } }(i));
if( settings.bThumbBorder )
$thumb2Div.find('img:eq('+ i +')').hover( function() { $(this).css({ 'border-color':settings.strThumbBorderHoverColour }); }, function( nThumb ) { return function() { var bHighlight = ((nCurrentImage-nThumbFirstImg) == nThumb); $(this).css({ 'border-color':(bHighlight?settings.strThumbBorderActiveColour:settings.strThumbBorderColour) }); } }(i));
if( settings.nThumbStyle == eThumbStyle.Opacity )
$thumb2Div.find('img:eq('+ i +')').hover( function(){ $(this).animate({ opacity:1.0 }, 200 ); }, function( nThumb ){ return function(){ var bHighlight = ((nCurrentImage-nThumbFirstImg) == nThumb); $(this).animate({ opacity:(bHighlight?1.0:settings.nThumbOpacity) }, 20 ); } }(i));
else if( settings.nThumbStyle == eThumbStyle.OpacityHover )
$thumb2Div.find('img:eq('+ i +')').hover( function(){ $(this).animate({ opacity:1.0 }, 200 ); }, function(){ $(this).animate({ opacity:settings.nThumbOpacity }, 20 ); });
}
}
if( settings.bThumbBorder )
$thumb1Div.find('img:eq(0)').css({ 'border-color':settings.strThumbBorderActiveColour });
if( settings.nThumbStyle == eThumbStyle.Opacity || settings.nThumbStyle == eThumbStyle.OpacityActive )
$thumb1Div.find('img:eq(0)').css({ opacity:1.0 });
else if( settings.nThumbStyle == eThumbStyle.Resize || settings.nThumbStyle == eThumbStyle.ResizeActive )
{
if( settings.nThumbPosition == eThumbPosition.Horizontal )
$thumb1Div.find('img:eq(0)').css({ 'left':(( nThumbDivBoundary / 2 ) - ( nThumbActiveResize / 2 )), 'top':-nThumbActiveResize, width:settings.nThumbSize + nThumbActiveResize, height:settings.nThumbSize + nThumbActiveResize });
else
$thumb1Div.find('img:eq(0)').css({ 'top':(( nThumbDivBoundary / 2 ) - ( nThumbActiveResize / 2 )), width:settings.nThumbSize + nThumbActiveResize, height:settings.nThumbSize + nThumbActiveResize });
}
if( settings.bShowThumbnailArrows )
{
if( settings.nThumbPosition == eThumbPosition.Horizontal )
{
var nThumbTop = settings.nThumbTop + ( ( settings.nThumbSize - settings.nThumbButtonSize ) / 2 ) + (( settings.nThumbStyle == eThumbStyle.Resize || settings.nThumbStyle == eThumbStyle.ResizeActive || settings.nThumbStyle == eThumbStyle.ResizeHover ) ? settings.nThumbSize : 0 );
var nThumbLeft = settings.nThumbButtonIndent;
var nThumbRight = settings.nGalleryWidth - ( settings.nThumbButtonIndent + settings.nThumbButtonSize );
if( bPngHack )
{
$mainDiv.append('
');
$thumbRewindMap = $mainDiv.find('map:last');
$thumbRewindButton = $mainDiv.find(('img:last'));
$mainDiv.append('
');
$thumbForwardMap = $mainDiv.find('map:last');
$thumbForwardButton = $mainDiv.find(('img:last'));
}
else
{
$mainDiv.append('
');
$thumbRewindButton = $mainDiv.find('a:last').find(('img:eq(0)'));
$mainDiv.append('
');
$thumbForwardButton = $mainDiv.find('a:last').find(('img:eq(0)'));
}
}
else
{
var nThumbLeft = settings.nThumbLeft + ( ( settings.nThumbSize - settings.nThumbButtonSize ) / 2 );
var nThumbTop = settings.nThumbButtonIndent;
var nThumbBottom = settings.nGalleryHeight - ( settings.nThumbButtonIndent + settings.nThumbButtonSize );
if( bPngHack )
{
$mainDiv.append('
');
$thumbRewindMap = $mainDiv.find('map:last');
$thumbRewindButton = $mainDiv.find(('img:last'));
$mainDiv.append('
');
$thumbForwardMap = $mainDiv.find('map:last');
$thumbForwardButton = $mainDiv.find(('img:last'));
}
else
{
$mainDiv.append('
');
$thumbRewindButton = $mainDiv.find('a:last').find(('img:eq(0)'));
$mainDiv.append('
');
$thumbForwardButton = $mainDiv.find('a:last').find(('img:eq(0)'));
}
}
}
}
// Load the images into the gallery div
for (var i = 1; i < settings.nTotalImages; ++i)
{
$imageDiv.append('
');
}
// Preload images in the current and next screens
nTotalNextImages = Math.min( ( settings.nTotalThumbs * 2 ), settings.nTotalImages );
for (var i = 0; i < nTotalNextImages; ++i)
{
loadImage( $imageDiv.find('img:eq('+ i +')'), getImageData( i, eImageData.ImageSrc ), i, false );
}
// Preload images and thumbs in previous screen
if( settings.nTotalImages > ( settings.nTotalThumbs * 2 ) )
{
nStartOfPrevImgages = ( settings.nTotalImages - settings.nTotalThumbs );
for (var i = nStartOfPrevImgages; i < settings.nTotalImages; ++i)
{
loadImage( $imageDiv.find('img:eq('+ i +')'), getImageData( i, eImageData.ImageSrc ), i, false );
var thumb = new Image();
thumb.src = getImageData( i, eImageData.ThumbSrc );
}
}
};
function loadImage( div, strImageSrc, nPos, bThumb )
{
var image = new Image();
image.onload = function()
{
if( bThumb )
{
$(div).attr({ 'src':strImageSrc });
}
else
{
var nWidth = Math.min( settings.nImageDivWidth, getImageData( nPos, eImageData.ImageWidth ) );
var nHeight = Math.min( settings.nImageDivHeight, getImageData( nPos, eImageData.ImageHeight ) );
var nLeft = ( settings.nImageDivWidth - nWidth ) / 2;
var nTop = ( settings.nImageDivHeight - nHeight ) / 2;
$(div).attr({ 'src':strImageSrc });
$(div).css({ 'left':nLeft, 'top':nTop, 'width':nWidth, 'height':nHeight });
}
};
image.src = strImageSrc;
};
function stopTimer()
{
$imageDiv.stopTime();
if( bPngHack )
{ if( settings.bShowNavBar ){ $playButton.attr({ 'title':settings.strPlayToolTip }); $playButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.playButtonSrc + '\', sizingMethod=\'scale\')' }); } }
else
{ if( settings.bShowNavBar ){ $playButton.attr({ 'src':settings.playButtonSrc, 'title':settings.strPlayToolTip }); } }
bPlaying = false;
};
function startTimer()
{
if (!bPlaying)
{
bPlaying = true;
if( bPngHack )
{ if( settings.bShowNavBar ){ $playButton.attr({ 'title':settings.strPauseToolTip }); $playButton.css({ 'filter':'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + settings.pauseButtonSrc + '\', sizingMethod=\'scale\')' }); } }
else
{ if( settings.bShowNavBar ){ $playButton.attr({ 'src':settings.pauseButtonSrc, 'title':settings.strPauseToolTip }); } }
$imageDiv.everyTime((settings.nStaticTime + settings.nTransitTime), "GalleryTimer", function() { switchSlide(); });
}
};
function showCaptionCount()
{
if( settings.bCaptionCount )
return (' ' + (nCurrentImage + 1) + '/' + settings.nTotalImages + ' ');
else
return ('');
};
function goToImage(nThumb, bJump)
{
if( bScrollingThumbs )
return;
if( bJump )
{
nImage = nThumb;
bScrollingThumbs = true;
}
else
{
nImage = nThumbFirstImg + nThumb;
}
if (nImage != nCurrentImage)
{
stopTimer();
nPreviousImage = nCurrentImage;
nCurrentImage = nImage;
bJump ? bJumpToImage = true : bGoToImage = true;
switchSlide();
bJump ? bJumpToImage = false : bGoToImage = false;
}
}
function resetThumbSize( bFrontDiv )
{
var $thumbDiv;
if( bFrontDiv )
var $thumbDiv = bFirstThumbDiv ? $thumb1Div : $thumb2Div;
else
var $thumbDiv = bFirstThumbDiv ? $thumb2Div : $thumb1Div;
if( settings.nThumbPosition == eThumbPosition.Horizontal )
{
for (var i = 0; i < settings.nTotalThumbs; ++i)
{
var nImgLeft = (i * (settings.nThumbSize + settings.nThumbSpacing)) + ( nThumbDivBoundary / 2 );
$thumbDiv.find('img:eq('+ i +')').css({ 'top':0, 'left': nImgLeft, 'width':settings.nThumbSize, 'height': settings.nThumbSize });
}
}
else
{
for (var i = 0; i < settings.nTotalThumbs; ++i)
{
var nImgTop = (i * (settings.nThumbSize + settings.nThumbSpacing)) + ( nThumbDivBoundary / 2 );
$thumbDiv.find('img:eq('+ i +')').css({ 'top':nImgTop, 'width':settings.nThumbSize, 'height': settings.nThumbSize });
}
}
}
function getZoom()
{
switch( nBrowser )
{
case eBrowser.Msie:
return ( document.documentElement.offsetHeight / $(window).height() );
case eBrowser.Chrome:
var rcWnd = document.body.getBoundingClientRect(); // ( This function also works for Msie )
return ( ( Math.round((rcWnd.right-rcWnd.left)/document.body.clientWidth * 100) ) / 100 );
case eBrowser.Safari:
return ( $(window).height() / document.getElementById( strZoomId ).offsetHeight );
case eBrowser.Opera:
return ( window.innerHeight / document.getElementById( strZoomId ).offsetHeight );
}
return 1;
}
function getImageData( nImage, nData )
{
var bValidImage = ( settings.imageArray[ nImage ] != null && settings.imageArray[ nImage ].wp_image != null );
switch( nData )
{
case eImageData.ImageSrc:
{
if( bValidImage )
return settings.imageArray[ nImage ].wp_image.imgsrc;
else
return "";
}
case eImageData.ImageWidth:
{
if( bValidImage )
return settings.imageArray[ nImage ].wp_image.width;
else
return 200;
}
case eImageData.ImageHeight:
{
if( bValidImage )
return settings.imageArray[ nImage ].wp_image.height;
else
return 200;
}
case eImageData.ImageCaption:
{
if( bValidImage )
return settings.imageArray[ nImage ].wp_image.caption;
else
return "";
}
case eImageData.ThumbSrc:
{
if( bValidImage )
return settings.imageArray[ nImage ].wp_image.thumbSrc;
else
return "";
}
}
}
function scrollThumbs( bForward )
{
if( settings.bShowThumbnails && bShowNavFwrdNReverse )
{
bScrollingThumbs = true;
var nDirection = bForward ? 1 : -1;
var $frontThumbDiv = bFirstThumbDiv ? $thumb1Div : $thumb2Div;
var $backThumbDiv = bFirstThumbDiv ? $thumb2Div : $thumb1Div;
nThumbFirstImg += nDirection * settings.nTotalThumbs;
if( nThumbFirstImg >= settings.nTotalImages )
nThumbFirstImg = 0;
else if( nThumbFirstImg < 0 )
nThumbFirstImg = settings.nTotalImages - ( settings.nTotalImages % settings.nTotalThumbs > 0 ? settings.nTotalImages % settings.nTotalThumbs : settings.nTotalThumbs )
if( settings.nThumbPosition == eThumbPosition.Horizontal )
$backThumbDiv.css({ left: ( nDirection * settings.nGalleryWidth ) });
else
$backThumbDiv.css({ top: ( nDirection * settings.nGalleryHeight ) });
resetThumbSize( false );
bFirstThumbDiv = !bFirstThumbDiv;
var nValidThumbs = Math.min( settings.nTotalImages - nThumbFirstImg, settings.nTotalThumbs );
for (var i = 0; i < settings.nTotalThumbs; ++i)
{
if( i < nValidThumbs )
{
$backThumbDiv.find('img:eq('+ i +')').attr({ 'src': settings.loadingButtonSrc, 'title': getImageData( nThumbFirstImg + i, eImageData.ImageCaption ) });
$backThumbDiv.find('img:eq('+ i +')').css({ 'visibility': 'visible' });
loadImage( $backThumbDiv.find('img:eq('+ i +')'), getImageData( nThumbFirstImg + i, eImageData.ThumbSrc ), i, true );
}
else
{
$backThumbDiv.find('img:eq('+ i +')').css({ 'visibility': 'hidden' });
}
}
if( settings.nThumbPosition == eThumbPosition.Horizontal )
{
$backThumbDiv.animate({ left: 0 }, settings.nTransitTime);
$frontThumbDiv.animate({ left: ( nDirection * -settings.nGalleryWidth ) }, settings.nTransitTime, function() { preloadDivImages( bForward ); bScrollingThumbs = false; } );
}
else
{
$backThumbDiv.animate({ top: 0 }, settings.nTransitTime);
$frontThumbDiv.animate({ top: ( nDirection * -settings.nGalleryHeight ) }, settings.nTransitTime, function() { preloadDivImages( bForward ); bScrollingThumbs = false; } );
}
}
}
function preloadDivImages( bForward )
{
// Pre-load the next set of thumbs and images
if( bForward )
{
// Preload the thumbs and images in the next div
var nFirstThumbInNextDiv = nThumbFirstImg + settings.nTotalThumbs;
var nLastThumbInNextDiv = Math.min( nFirstThumbInNextDiv + settings.nTotalThumbs, settings.nTotalImages );
if( nFirstThumbInNextDiv < settings.nTotalImages )
{
for (var i = nFirstThumbInNextDiv; i < nLastThumbInNextDiv; ++i)
{
loadImage( $imageDiv.find('img:eq('+ i +')'), getImageData( i, eImageData.ImageSrc ), i, false );
var thumb = new Image();
thumb.src = getImageData( i, eImageData.ThumbSrc );
}
}
}
else
{
// Preload the thumbs and images in the previous div
var nFirstThumbInPrevDiv = ( nThumbFirstImg - settings.nTotalThumbs < 0 ) ? ( settings.nTotalImages - settings.nTotalThumbs ) : ( nThumbFirstImg - settings.nTotalThumbs );
var nLastThumbInPrevDiv = Math.min( nFirstThumbInPrevDiv + settings.nTotalThumbs, settings.nTotalImages );
if( nFirstThumbInPrevDiv > 0 )
{
for (var i = nFirstThumbInPrevDiv; i < nLastThumbInPrevDiv; ++i)
{
loadImage( $imageDiv.find('img:eq('+ i +')'), getImageData( i, eImageData.ImageSrc ), i, false );
var thumb = new Image();
thumb.src = getImageData( i, eImageData.ThumbSrc );
}
}
}
};
function switchSlide()
{
var $nextImg;
var $activeImg
if (bJumpToImage)
{
$activeImg = $imageDiv.find('img:eq(' + nPreviousImage + ')');
$nextImg = $imageDiv.find('img:eq(' + nCurrentImage + ')');
scrollThumbs( bJumpForward );
}
else if (bGoToImage)
{
$activeImg = $imageDiv.find('img:eq(' + nPreviousImage + ')');
$nextImg = $imageDiv.find('img:eq(' + nCurrentImage + ')');
if ($nextImg.length == 0)
{
$next = $imageDiv.find('img:first');
nCurrentImage = 0;
}
}
else if (bPrevious)
{
$activeImg = $imageDiv.find('img:eq(' + nCurrentImage + ')');
$nextImg = $activeImg.prev('img');
nPreviousImage = nCurrentImage--;
if (nCurrentImage < 0 || $nextImg.length == 0)
{
$nextImg = $imageDiv.find('img:last');
nCurrentImage = settings.nTotalImages - 1;
scrollThumbs( false );
}
else
{
if ((nCurrentImage + 1) % settings.nTotalThumbs == 0)
scrollThumbs( false );
}
}
else
{
$activeImg = $imageDiv.find('img:eq(' + nCurrentImage + ')');
$nextImg = $activeImg.next('img');
nPreviousImage = nCurrentImage++;
if (nCurrentImage < 0 || $nextImg.length == 0)
{
$nextImg = $imageDiv.find('img:first');
nCurrentImage = 0;
scrollThumbs( true );
}
else
{
if (nCurrentImage % settings.nTotalThumbs == 0)
scrollThumbs( true );
}
}
// Ensure an active image has been assigned
if( $activeImg.length == 0 )
$activeImg = $imageDiv.find('img:last');
// Ensure the next image visibility is hidden and opacity 1.0
$nextImg.css({ visibility:'hidden', opacity:1.0 });
// Dynamically load the image - just in case it hasn't yet been loaded
loadImage( $nextImg, getImageData( nCurrentImage, eImageData.ImageSrc ), nCurrentImage, false );
// Update the image caption
if( settings.bShowCaption )
{
var strCaption = showCaptionCount() + $nextImg.attr('title');
$captionDiv.text( strCaption );
}
// Determine switch direction for left-to-right/top-to-bottom transition styles
var bForceNormalTransit = false;
if( nCurrentImage == 0 && nPreviousImage == ( settings.nTotalImages - 1 ) )
bForceNormalTransit = true;
else if( bJumpToImage && bJumpForward )
bForceNormalTransit = true;
// Perform transition animation on main image
switch( settings.nTransitionStyle )
{
case eTransitStyle.Basic:
$nextImg.css({ opacity:1.0, 'z-index':( settings.nZIndex + 2 ), visibility:'visible' });
$activeImg.css({ opacity:1.0, 'z-index':( settings.nZIndex + 1 ), visibility:'hidden' });
break;
case eTransitStyle.OpaqueFade:
$activeImg.animate({ opacity: 0.0 }, settings.nTransitTime);
$nextImg.css({ opacity:0.0, 'z-index':( settings.nZIndex + 2 ), visibility:'visible' });
$nextImg.animate({ opacity: 1.0 }, settings.nTransitTime, function() { $activeImg.css({ opacity:0.0, 'z-index':( settings.nZIndex + 1 ), visibility:'hidden' }); });
break;
case eTransitStyle.LeftToRight:
var nActiveImgLeft = ( settings.nImageDivWidth - Math.min( settings.nImageDivWidth, getImageData( nPreviousImage, eImageData.ImageWidth ) ) ) / 2;
var nNextImgLeft = ( settings.nImageDivWidth - Math.min( settings.nImageDivWidth, getImageData( nCurrentImage, eImageData.ImageWidth ) ) ) / 2;
if( !bForceNormalTransit && ( bPrevious || nPreviousImage > nCurrentImage || ( bJumpToImage && !bJumpForward && nCurrentImage == ( settings.nTotalImages - 1 ) ) ) )
{
// Shift left to right
$nextImg.animate({ left: ( -settings.nImageDivWidth + nNextImgLeft ) }, 1, function(){ $nextImg.css({ visibility:'visible' }); } );
$activeImg.animate({ left:( settings.nImageDivWidth + nActiveImgLeft ) }, settings.nTransitTime);
$nextImg.animate({ left: nNextImgLeft }, settings.nTransitTime, function() { $activeImg.css({ opacity:1.0, 'z-index':( settings.nZIndex + 1 ), visibility:'hidden' }); });
}
else
{
// Shift right to left
$nextImg.animate({ left: ( settings.nImageDivWidth + nNextImgLeft ) }, 1, function(){ $nextImg.css({ visibility:'visible' }); } );
$activeImg.animate({ left: ( -settings.nImageDivWidth + nActiveImgLeft ) }, settings.nTransitTime);
$nextImg.animate({ left: nNextImgLeft }, settings.nTransitTime, function() { $activeImg.css({ opacity:1.0, 'z-index':( settings.nZIndex + 1 ), visibility:'hidden' }); });
}
break;
case eTransitStyle.TopToBottom:
var nActiveImgTop = ( settings.nImageDivHeight - Math.min( settings.nImageDivHeight, getImageData( nPreviousImage, eImageData.ImageHeight ) ) ) / 2;
var nNextImgTop = ( settings.nImageDivHeight - Math.min( settings.nImageDivHeight, getImageData( nCurrentImage, eImageData.ImageHeight ) ) ) / 2;
if( !bForceNormalTransit && ( bPrevious || nPreviousImage > nCurrentImage || ( bJumpToImage && !bJumpForward && nCurrentImage == ( settings.nTotalImages - 1 ) ) ) )
{
// Shift top to bottom
$nextImg.animate({ top: -settings.nImageDivHeight + nNextImgTop } , 1, function(){ $nextImg.css({ visibility:'visible' }); } );
$activeImg.animate({ top: ( settings.nImageDivHeight + nActiveImgTop ) }, settings.nTransitTime);
$nextImg.animate({ top: nNextImgTop }, settings.nTransitTime, function() { $activeImg.css({ opacity:1.0, 'z-index':( settings.nZIndex + 1 ), visibility:'hidden' }); });
}
else
{
// Shift bottom to top
$nextImg.animate({ top: settings.nImageDivHeight + nNextImgTop }, 1, function(){ $nextImg.css({ visibility:'visible' }); } );
$activeImg.animate({ top: ( -settings.nImageDivHeight + nActiveImgTop ) }, settings.nTransitTime);
$nextImg.animate({ top: nNextImgTop }, settings.nTransitTime, function() { $activeImg.css({ opacity:1.0, 'z-index':( settings.nZIndex + 1 ), visibility:'hidden' }); });
}
break;
case eTransitStyle.SquareFade:
var nNextImgWidth = Math.min( settings.nImageDivWidth, getImageData( nCurrentImage, eImageData.ImageWidth ) );
var nNextImgHeight = Math.min( settings.nImageDivHeight, getImageData( nCurrentImage, eImageData.ImageHeight ) );
var nNextImgLeft = ( ( settings.nImageDivWidth - nNextImgWidth ) / 2 );
var nNextImgTop = ( ( settings.nImageDivHeight - nNextImgHeight ) / 2 );
$nextImg.animate({ width: '0', height: '0', left: (settings.nImageDivWidth/2), top: (settings.nImageDivHeight/2) }, 1 );
$activeImg.animate({ width: '0', height: '0', left: (settings.nImageDivWidth/2), top: (settings.nImageDivHeight/2) }, (settings.nTransitTime/2), function(){ $nextImg.css({ visibility:'visible' }); $activeImg.css({ visibility:'hidden' }); $nextImg.animate({ width: nNextImgWidth, height: nNextImgHeight, left: nNextImgLeft, top: nNextImgTop }, (settings.nTransitTime/2)); } );
break;
case eTransitStyle.VerticalFlip:
var nNextImgWidth = Math.min( settings.nImageDivWidth, getImageData( nCurrentImage, eImageData.ImageWidth ) );
var nNextImgLeft = ( ( settings.nImageDivWidth - nNextImgWidth ) / 2 );
$nextImg.animate({ width: '0', left: (settings.nImageDivWidth/2) }, 1 );
$activeImg.animate({ width: '0', left: (settings.nImageDivWidth/2) }, (settings.nTransitTime/2), function(){ $nextImg.css({ visibility:'visible' }); $activeImg.css({ visibility:'hidden' }); $nextImg.animate({ width: nNextImgWidth, left: nNextImgLeft }, (settings.nTransitTime/2)); } );
break;
case eTransitStyle.HorizontalFlip:
var nNextImgHeight = Math.min( settings.nImageDivHeight, getImageData( nCurrentImage, eImageData.ImageHeight ) );
var nNextImgTop = ( ( settings.nImageDivHeight - nNextImgHeight ) / 2 );
$nextImg.animate({ height: '0', top: (settings.nImageDivHeight/2) }, 1 );
$activeImg.animate({ height: '0', top: (settings.nImageDivHeight/2) }, (settings.nTransitTime/2), function(){ $nextImg.css({ visibility:'visible' }); $activeImg.css({ visibility:'hidden' }); $nextImg.animate({ height: nNextImgHeight, top: nNextImgTop }, (settings.nTransitTime/2)); } );
break;
}
if( settings.bShowThumbnails )
{
// Perform thumbnail animation
if( settings.bThumbBorder
|| settings.nThumbStyle == eThumbStyle.Resize
|| settings.nThumbStyle == eThumbStyle.ResizeActive
|| settings.nThumbStyle == eThumbStyle.Opacity
|| settings.nThumbStyle == eThumbStyle.OpacityActive )
{
// Find the active thumbnail and highlight it
var $frontThumbDiv = bFirstThumbDiv ? $thumb1Div : $thumb2Div;
var $thumbDiv = $frontThumbDiv.find('img:eq('+ ( nCurrentImage - nThumbFirstImg ) +')');
var nThumbOffset = ( (nCurrentImage % settings.nTotalThumbs) * ( settings.nThumbSize + settings.nThumbSpacing)) + ( nThumbDivBoundary / 2 );
if( settings.bThumbBorder )
$thumbDiv.css({ 'border-color':settings.strThumbBorderActiveColour });
if( ( settings.nThumbStyle == eThumbStyle.Resize || settings.nThumbStyle == eThumbStyle.ResizeActive ) && !bMouseOverThumbs )
{
if( settings.nThumbPosition == eThumbPosition.Horizontal )
{
if( nBrowser == eBrowser.Chrome || nBrowser == eBrowser.Safari ) // Account for zoom factor in chrome and safari
$thumbDiv.css({ 'left':( nThumbOffset / getZoom() ) });
$thumbDiv.animate({ 'left':(nThumbOffset - (nThumbActiveResize/2)), 'top':-nThumbActiveResize, 'width':settings.nThumbSize + nThumbActiveResize, 'height':settings.nThumbSize + nThumbActiveResize }, 100);
}
else
{
if( nBrowser == eBrowser.Chrome || nBrowser == eBrowser.Safari ) // Account for zoom factor in chrome and safari
$thumbDiv.css({ 'top':( nThumbOffset / getZoom() ) });
$thumbDiv.animate({ 'top':(nThumbOffset - (nThumbActiveResize/2)), 'width':settings.nThumbSize + nThumbActiveResize, 'height':settings.nThumbSize + nThumbActiveResize }, 100);
}
}
else if( settings.nThumbStyle == eThumbStyle.Opacity || settings.nThumbStyle == eThumbStyle.OpacityActive )
{
$thumbDiv.animate({ 'opacity':1.0, '-moz-opacity':1.0, 'filter:alpha:opacity':100 }, 200);
}
// Find the previous thumbnail and remove the highlighting
if( nPreviousImage < nThumbFirstImg || nPreviousImage >= nThumbFirstImg + settings.nTotalThumbs ) // If image resides on back thumb div
$frontThumbDiv = bFirstThumbDiv ? $thumb2Div : $thumb1Div;
$thumbDiv = $frontThumbDiv.find('img:eq('+ ( nPreviousImage % settings.nTotalThumbs ) +')');
if( settings.bThumbBorder )
$thumbDiv.css({ 'border-color':settings.strThumbBorderColour });
nThumbOffset = ( (nPreviousImage % settings.nTotalThumbs) * (settings.nThumbSize + settings.nThumbSpacing) ) + ( nThumbDivBoundary / 2 );
if( ( settings.nThumbStyle == eThumbStyle.Resize || settings.nThumbStyle == eThumbStyle.ResizeActive ) && !bMouseOverThumbs )
{
if( settings.nThumbPosition == eThumbPosition.Horizontal )
{
if( nBrowser == eBrowser.Chrome || nBrowser == eBrowser.Safari ) // Account for zoom factor in chrome and safari
$thumbDiv.css({ 'left':( nThumbOffset / getZoom() ) });
$thumbDiv.animate({ 'left':nThumbOffset, 'top':0, 'width':settings.nThumbSize, 'height':settings.nThumbSize }, 100 );
}
else
{
if( nBrowser == eBrowser.Chrome || nBrowser == eBrowser.Safari ) // Account for zoom factor in chrome and safari
$thumbDiv.css({ 'top':( nThumbOffset / getZoom() ) });
$thumbDiv.animate({ 'left':0, 'top':nThumbOffset, 'width':settings.nThumbSize, 'height':settings.nThumbSize }, 100 );
}
}
else if( settings.nThumbStyle == eThumbStyle.Opacity || settings.nThumbStyle == eThumbStyle.OpacityActive )
{
$thumbDiv.animate({ 'opacity':settings.nThumbOpacity, '-moz-opacity':settings.nThumbOpacity, 'filter:alpha:opacity':(settings.nThumbOpacity*100) }, 200);
}
}
}
};
};
})(jQuery);
//-----------------------------------
// Global Functions
//-----------------------------------
function wp_galleryimage(imgsrc, width, height, thumbSrc, caption)
{
this.wp_image = new Image();
this.wp_image.imgsrc = imgsrc;
this.wp_image.width = width;
this.wp_image.height = height;
this.wp_image.thumbSrc = thumbSrc;
this.wp_image.caption = caption;
}