/** * Совместимость с 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); } });