in assets/www/scripts/MetroJs.lt.js [751:878]
$this.flipList = function (callback) {
if (typeof (callback) == "undefined" || callback == null)
callback = null;
if (tdata.repeatCount > -1) {
if (tdata.loopCount > tdata.repeatCount) {
tdata.stopTimer(false);
tdata.loopCount = 0;
tdata.hasRun = false;
$this.data("LiveTile", tdata);
return;
} else {
tdata.loopCount += 1;
}
}
var fBag = []; // two bags to make sure we don't duplicate images
var bBag = [];
var $tiles = $this.find(stgs.tileCssSelector);
//in case we want to pick one image per loop
var fStaticRndm = 0;
if (swapFrontSource) {
if (frontRandomBag.length == 0) {
for (var i = 0; i < stgs.frontImages.length; i++) {
if (i != prevFrontIndex || stgs.frontImages.length == 1)
frontRandomBag[i] = i;
}
frontRandomBag = privMethods.shuffleArray(frontRandomBag);
}
fStaticRndm = frontRandomBag.pop();
prevFrontIndex = fStaticRndm;
}
var bStaticRndm = 0;
if (swapBackSource) {
if (backRandomBag.length == 0) {
for (var i = 0; i < stgs.backImages.length; i++) {
if (i != prevBackIndex || stgs.backImages.length == 1)
backRandomBag[i] = i;
}
backRandomBag = privMethods.shuffleArray(backRandomBag);
}
bStaticRndm = backRandomBag.pop();
prevBackIndex = bStaticRndm;
}
$tiles.each(function (idx) {
var $t = jQuery(this);
if (flistData.length < idx + 1) {
// cache the selector
var data = {};
data.$front = $t.find(stgs.listTileCssSelector).first();
data.$back = $t.find(stgs.listTileCssSelector).last();
data.isReversed = false;
flistData[idx] = data;
}
var $front = flistData[idx].$front;
var $back = flistData[idx].$back;
var tDelay = stgs.triggerDelay(idx);
var triggerSpeed = (tDelay > 0) ? (tdata.speed + tDelay) : tdata.speed;
var trigger = (!stgs.alwaysTrigger) ? ((Math.random() * 351) > 150 ? true : false) : true;
var newImage;
if (flistData[idx].isReversed) {
if (trigger && tDelay >= 0) {
window.setTimeout(function () {
flistData[idx].isReversed = false;
if (!swapFrontSource) {
$this.flipListItem(true, $t, $front, $back);
} else {
var isRandom = stgs.frontIsRandom;
var isInGrid = stgs.frontIsInGrid;
var isBground = stgs.frontIsBackgroundImage;
var frontImages = stgs.frontImages;
if (isRandom && !isInGrid) {
//make sure the random bag is ready
if (fBag.length == 0) {
for (var i = 0; i < stgs.frontImages.length; i++) {
fBag[i] = i;
}
fBag = privMethods.shuffleArray(fBag);
}
newImage = frontImages[fBag.pop()];
} else {
if (!isInGrid) {
newImage = frontImages[Math.min(idx, frontImages.length)];
} else {
newImage = frontImages[Math.min(fStaticRndm, frontImages.length)];
}
}
$this.flipListItem(true, $t, $front, $back, newImage, isBground);
}
}, triggerSpeed);
}
} else {
if (trigger && tDelay >= 0) {
window.setTimeout(function () {
flistData[idx].isReversed = true;
if (!swapBackSource) {
$this.flipListItem(false, $t, $back, $front);
} else {
var isRandom = stgs.backIsRandom;
var isInGrid = stgs.backIsInGrid;
var isBground = stgs.backIsBackgroundImage;
var backImages = stgs.backImages;
if (isRandom && !isInGrid) {
//make sure the random bag is ready
if (bBag.length == 0) {
for (var i = 0; i < stgs.backImages.length; i++) {
bBag[i] = i;
}
bBag = privMethods.shuffleArray(bBag);
}
newImage = backImages[bBag.pop()];
} else {
if (!isInGrid) {
newImage = backImages[Math.min(idx, backImages.length)];
} else {
newImage = backImages[Math.min(bStaticRndm, backImages.length)];
}
}
$this.flipListItem(false, $t, $back, $front, newImage, isBground);
}
}, triggerSpeed);
}
}
});
window.setTimeout(function () {
tdata.isReversed = !tdata.isReversed;
}, tdata.speed);
};