(function($){ var logoW = 185; var logoH = 40; var logos = [ { id:4, title:'KYMCO USA', path:'/uploads/partner-logos/thumb/kymco.png', width:165, height:33 }, { id:1, title:'GasGas', path:'/uploads/partner-logos/thumb/gasgas_sm.png', width:104, height:37 }, { id:3, title:'Troy-Bilt', path:'/uploads/partner-logos/thumb/troy-bilt.png', width:165, height:26 }, { id:5, title:'Hyosung', path:'/uploads/partner-logos/thumb/hyosung_tr.png', width:165, height:28 }, { id:6, title:'ATK USA', path:'/uploads/partner-logos/thumb/atkusa.jpg', width:129, height:40 }, { id:7, title:'Parts Unlimited', path:'/uploads/partner-logos/thumb/partsunlimited.gif', width:152, height:40 }, { id:2, title:'County Clipper', path:'/uploads/partner-logos/thumb/country_clipper.png', width:119, height:40 }, { id:9, title:'Landmaster', path:'/uploads/partner-logos/thumb/landmasterlogo.gif', width:165, height:32 } ]; var bListId = '#brand-logos ul'; var swapInterval = 10000; var $bList = false; var activeLogos = new Array(); function init() { $bList = $(bListId); var $aEl = $('li a:first', $bList); $(window).resize( function(){ delay(reloadLogos, 500, 'logos'); } ); reloadLogos(); } function reloadLogos() { var maxW = $(window).width(); var count = Math.floor( maxW / logoW ); if(count > logos.length) count = logos.length; // if no changes need to be made if(activeLogos.length == count) return; clearTimer(); $bList.html(''); $bList.width( count*logoW); activeLogos = new Array(); for(i=0; i'+getLogoHtml(i)+''); $nLogo.find('img:first').css('opacity',0).animate({'opacity':1}); } resetTimer(); } function getLogoHtml(idx) { // returns an image that links to the partner page // vertically center the image var offset = logoH - logos[idx].height; var pad = offset > 0 ? ' style="margin-top:'+cParseInt(offset/2)+'px"' : ''; return ''+logos[idx].title+''; } var lastChangedEl = -1; var changedEls = new Array(); var shownLogos = new Array(); function logoSwap() { // no logos to swap, don't come back if(logos.length==0 || activeLogos.length == logos.length) return clearTimer(); // we change all elements before re-changing any one, if all elements have been changed, reset the cache if(changedEls.length==activeLogos.length) changedEls = new Array(); // show all logos before re-showing any one, if all logos have been changed, reset the cache if(shownLogos.length==logos.length) shownLogos = activeLogos; var changeEl = 0; var changeLogo = 0; if(activeLogos.length > 1) do{ changeEl = Math.floor( Math.random() * activeLogos.length ) } while( changedEls.length==0 ? changeEl==lastChangedEl : inArray(changeEl, changedEls) ); if(logos.length > 1) do{ changeLogo = Math.floor( Math.random() * logos.length ) } while( isActive(changeLogo) || inArray(changeLogo, shownLogos) ); $bList.find('li:eq('+changeEl+') img:first').animate({'opacity':0}, function(){ $bList.find('li:eq('+changeEl+')').html( getLogoHtml(changeLogo) ).find('img:first').css('opacity',0).animate({'opacity':1}); }); lastChangedEl = changeEl; changedEls[changedEls.length] = changeEl; activeLogos[changeEl] = changeLogo; } function isActive(idx) { for(var i=0; i