/**
* Совместимость с IE6.
*/
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(elt /*, from*/) {
var len = this.length;
var from = Number(arguments[1]) || 0;
from = (from < 0) ? Math.ceil(from) : Math.floor(from);
if (from < 0) from += len;
for (; from < len; from++) {
if (from in this && this[from] === elt) return from;
}
return -1;
};
}
jQuery(document).ready(function()
{
var bannersList = [], bannersParent = [];
/**
* Функция ротации баннеров.
* Меняет разом все баннеры во всех блоках.
*/
function rotateBanner() {
var banList = [], previous = 0, nextbx = 0;
for(var px in bannersParent)
{
banList = bannersList[px];
if (1 == banList.length) continue;
for(var bx in banList)
{
if ('function' != typeof(banList[bx].css)) continue;
if ('block' == banList[bx].css('display')) { previous = bx; }
//banList[bx].css('display', 'none');
}
banList[previous].animate(
{ opacity: "0.1" },
{
easing: 'swing',
duration: 400,
complete: function(){
for(var bx in banList)
{
if ('function' != typeof(banList[bx].css)) continue;
banList[bx].css('display', 'none');
}
if (2 < banList.length)
{
do {
nextbx = Math.floor(Math.random() * banList.length);
}
while (previous == nextbx);
}
else {
for(bx in banList)
{
if (bx != previous)
{
nextbx = bx;
break;
}
}
}
banList[nextbx].css('display', 'block');
}
}
);
banList[previous].animate({ opacity: "1" }, 1);
}
delete banList, previous, nextbx;
}
/**
* Формируем списки баннеров
* относительно их родительских блоков.
*/
jQuery('.ban_rotator').each(function(ix, val) {
var parent = jQuery(this).parent();
var parent_uq = parent.get(0).tagName + parent.attr('class') + parent.attr('id');
var kp = bannersParent.indexOf(parent_uq);
if (-1 == kp)
{
kp = bannersParent.length;
bannersParent.push(parent_uq);
bannersList[kp] = [];
}
bannersList[kp].push(jQuery(this));
});
if (0 < bannersList.length)
{
setInterval(rotateBanner, 4000);
}
});