var FeaturedPostsLib = this.FeaturedPostsLib || {};
FeaturedPostsLib.fpg = FeaturedPostsLib.fpg || {};
(function($j) {
var animationLocked = new Array(); // Lock object for animations
var autoscrollInterval = new Array();
/** Initialize jQuery based animations */
FeaturedPostsLib.fpg.init = function()
{
// hide all pages on first entry in featured posts list
$j('.fpg-wrapper').each(function() {
$j(this).children('.fpg-page').slice(1).find('.fpg-item').css(
{'margin-top':'3px','opacity':0.0});
});
// initialize the scroll buttons and autoscroll
initAutoscroll();
initScrollButtons();
initPips();
// release animation locks
for (var i=1; i<=animationLocked.length; i++)
{
animationLocked[i-1] = false;
}
};
/** Add click event handlers to scroll buttons */
function initScrollButtons()
{
$j('.fpg-arrow-right').each(function(index) {
$j(this).click(function() {
if (animationLocked[index] == false)
{
FeaturedPostsLib.fpg.fpgScrollPages(this, 'right', index);
}
clearInterval(autoscrollInterval[index]);
});
});
$j('.fpg-arrow-left').each(function(index) {
$j(this).click(function() {
if (animationLocked[index] == false)
{
FeaturedPostsLib.fpg.fpgScrollPages(this, 'left', index);
}
clearInterval(autoscrollInterval[index]);
});
});
}
function initPips()
{
$j('.fpg-arrow-wrapper').each(function(index) {
$j(this).children('.fpg-arrow-pip').click(function() {
if (animationLocked[index] == false)
{
fpgScrollToPage(this, index);
}
clearInterval(autoscrollInterval[index]);
});
});
}
function initAutoscroll()
{
$j('.fpg-wrapper').each(function(index) {
animationLocked[index] = true;
if (1 == 0)
{
var callback =
"FeaturedPostsLib.fpg.fpgScrollPages(jQuery('.fpg-wrapper').slice(" +
index + "," + (index + 1) + ").find('.fpg-arrow-right'), 'right', " + index + ")";
autoscrollInterval[index] = setInterval(
callback, 7000);
}
});
}
function fpgScrollToPage(slideButton, index)
{
if (!($j(slideButton).hasClass('fpg-selected-pip')))
{
// lock animations
animationLocked[index] = true;
// get the currently displayed element(s)
var currentItem = $j(slideButton).parent().siblings('.fpg-page:visible');
// get the next item to display
var nextItemIndex = parseInt($j(slideButton).text());
var nextItem = $j(slideButton).parent().siblings('.fpg-page').eq(nextItemIndex-1);
fpgSetSelectedPip(nextItem);
fpgAnimate(nextItem, currentItem, 'right', index);
}
}
FeaturedPostsLib.fpg.fpgScrollPages = function(button, dir, index)
{
if (animationLocked[index] != true)
{
// lock animations
animationLocked[index] = true;
// get the currently displayed element(s)
var currentItem = $j(button).parent().siblings('.fpg-page:visible');
var nextItem;
if (dir == 'right')
{
nextItem = currentItem.next('.fpg-page');
}
else if (dir == 'left')
{
nextItem = currentItem.prev('.fpg-page');
}
if (nextItem.length > 0)
{
fpgSetSelectedPip(nextItem);
fpgAnimate(nextItem, currentItem, dir, index);
}
else if (1 == 0)
{
if (dir == 'right')
{
nextItem = currentItem.siblings('.fpg-page').first();
}
else if (dir == 'left')
{
nextItem = currentItem.siblings('.fpg-page').last();
}
fpgSetSelectedPip(nextItem);
fpgAnimate(nextItem, currentItem, dir, index);
}
else
{
animationLocked[index] = false;
}
}
};
function fpgSetSelectedPip(toShow)
{
// Remove class from current slide
$j(toShow).siblings('.fpg-arrow-wrapper').children('.fpg-selected-pip').removeClass('fpg-selected-pip');
// Get the index of the next item to be displayed
var nextSlideIndex = $j(toShow).index();
$j(toShow).siblings('.fpg-arrow-wrapper').children('.fpg-arrow-pip').eq(nextSlideIndex).addClass('fpg-selected-pip');
}
function fpgAnimate(toShow, toHide, dir, index)
{
// fade out items on currently shown page
var itemToHide;
if (dir == 'right')
{
itemToHide = $j(toHide).children().children('.fpg-item.fpg-first-col');
}
else
{
itemToHide = $j(toHide).children().children('.fpg-item').last();
}
fpgFadeOutItems(itemToHide, dir, function() {
toHide.css('display','none');
toShow.css('display','');
var itemToShow;
if (dir == 'right')
{
itemToShow = $j(toShow).children().children('.fpg-item.fpg-first-col');
}
else
{
itemToShow = $j(toShow).children().children('.fpg-item').last();
}
fpgFadeInItems(itemToShow, dir, function() {
animationLocked[index] = false;
});
});
}
function fpgFadeOutItems(itemToHide, dir, callback)
{
var itemCount = itemToHide.length;
$j(itemToHide).animate({ 'opacity': 0.0,
'margin-top': '3' },
3, 'linear', function() {
if (--itemCount <= 0)
{
var nextItem;
if (dir == 'right')
{
nextItem = $j(itemToHide).next('.fpg-item');
}
else
{
nextItem = $j(itemToHide).prev('.fpg-item');
}
if (nextItem.length > 0)
fpgFadeOutItems(nextItem, dir, callback);
else
callback();
}
}
);
}
function fpgFadeInItems(itemToShow, dir, callback)
{
var itemCount = itemToShow.length;
$j(itemToShow).animate({ 'opacity': 1.0,
'margin-top': '0' },
3, 'linear', function() {
if (--itemCount <= 0)
{
var nextItem;
if (dir == 'right')
{
nextItem = $j(itemToShow).next('.fpg-item');
}
else
{
nextItem = $j(itemToShow).prev('.fpg-item');
}
if (nextItem.length >0 )
fpgFadeInItems(nextItem, dir, callback);
else
callback();
}
}
);
}
}(jQuery))
jQuery(document).ready(FeaturedPostsLib.fpg.init);