//---------------------------------------------------------- // 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; }