(function($){$.fn.extend({infiniteCarousel:function(options){var defaults={transitionSpeed:1500,displayTime:6000,textholderHeight:.2,displayProgressBar:1,displayThumbnails:1,displayThumbnailNumbers:1,displayThumbnailBackground:1,thumbnailWidth:'20px',thumbnailHeight:'20px',thumbnailFontSize:'.7em'};var options=$.extend(defaults,options);return this.each(function(){var randID=Math.round(Math.random()*100000000);var o=options;var obj=$(this);var curr=1;var numImages=$('img',obj).length;var imgHeight=$('img:first',obj).height();var imgWidth=$('img:first',obj).width();var autopilot=1;$('p',obj).hide();$(obj).width(imgWidth).height(imgHeight);if(o.displayProgressBar){$(obj).append('<div id="progress'+randID+'" style="position:absolute;bottom:0;background:#bbb;left:'+$(obj).css('paddingLeft')+'"></div>');$('#progress'+randID).width(imgWidth).height(5).css('opacity','.5')}$(obj).css({'overflow':'hidden','position':'relative'});$('li:last',obj).prependTo($('ul',obj));$('ul',obj).css('left',-imgWidth+'px');$('ul',obj).width(9999);$('ul',obj).css({'list-style':'none','margin':'0','padding':'0','position':'relative'});$('li',obj).css({'display':'inline','float':'left'});$(obj).append('<div id="textholder'+randID+'" class="textholder" style="position:absolute;bottom:0px;margin-bottom:'+-imgHeight*o.textholderHeight+'px;left:'+$(obj).css('paddingLeft')+'"></div>');var correctTHWidth=parseInt($('#textholder'+randID).css('paddingTop'));var correctTHHeight=parseInt($('#textholder'+randID).css('paddingRight'));$('#textholder'+randID).width(imgWidth-(correctTHWidth*2)).height((imgHeight*o.textholderHeight)-(correctTHHeight*2)).css({'backgroundColor':'#FFF','opacity':'0.5'});showtext($('li:eq(1) p',obj).html());html='<div id="btn_rt'+randID+'" style="position:absolute;right:0;top:'+((imgHeight/2)-15)+'px"><a href="javascript:void(0);"><img style="border:none;margin-right:2px;width:13px;height:30px;" src="/test/scripts/infinitecarousel/images/rt.png" /></a></div>';html+='<div id="btn_lt'+randID+'" style="position:absolute;left:0;top:'+((imgHeight/2)-15)+'px"><a href="javascript:void(0);"><img style="border:none;margin-left:2px;width:13px;height:30px;" src="/test/scripts/infinitecarousel/images/lt.png" /></a></div>';$(obj).append(html);html='<a href="javascript:void(0);"><img id="pause_btn'+randID+'" src="/test/scripts/infinitecarousel/images/pause.png" style="position:absolute;top:3px;right:3px;width:16px;height:16px;border:none" alt="Pause" /></a>';html+='<a href="javascript:void(0);"><img id="play_btn'+randID+'" src="/test/scripts/infinitecarousel/images/play.png" style="position:absolute;top:3px;right:3px;width:16px;height:16px;border:none;display:none;" alt="Play" /></a>';$(obj).append(html);$('#pause_btn'+randID).css('opacity','.5').hover(function(){$(this).animate({opacity:'1'},250)},function(){$(this).animate({opacity:'.5'},250)});$('#pause_btn'+randID).click(function(){autopilot=0;$('#progress'+randID).stop().fadeOut();clearTimeout(clearInt);$('#pause_btn'+randID).fadeOut(250);$('#play_btn'+randID).fadeIn(250);showminmax()});$('#play_btn'+randID).css('opacity','.5').hover(function(){$(this).animate({opacity:'1'},250)},function(){$(this).animate({opacity:'.5'},250)});$('#play_btn'+randID).click(function(){autopilot=1;anim('next');$('#play_btn'+randID).hide();clearInt=setInterval(function(){anim('next')},o.displayTime+o.transitionSpeed);setTimeout(function(){$('#pause_btn'+randID).show();$('#progress'+randID).fadeIn().width(imgWidth).height(5)},o.transitionSpeed)});$('#btn_rt'+randID).css('opacity','.75').click(function(){autopilot=0;$('#progress'+randID).stop().fadeOut();anim('next');setTimeout(function(){$('#play_btn'+randID).fadeIn(250)},o.transitionSpeed);clearTimeout(clearInt)}).hover(function(){$(this).animate({opacity:'1'},250)},function(){$(this).animate({opacity:'.75'},250)});$('#btn_lt'+randID).css('opacity','.75').click(function(){autopilot=0;$('#progress'+randID).stop().fadeOut();anim('prev');setTimeout(function(){$('#play_btn'+randID).fadeIn(250)},o.transitionSpeed);clearTimeout(clearInt)}).hover(function(){$(this).animate({opacity:'1'},250)},function(){$(this).animate({opacity:'.75'},250)});if(o.displayThumbnails){$(obj).after('<div id="thumbs'+randID+'" style="position:relative;overflow:auto;text-align:left;padding-top:5px;"></div>');$('#thumbs'+randID).width(imgWidth);for(i=0;i<=numImages-1;i++){thumb=$('img:eq('+(i+1)+')',obj).attr('src');$('#thumbs'+randID).append('<div class="thumb" id="thumb'+randID+'_'+(i+1)+'" style="cursor:pointer;background-image:url('+thumb+');display:inline;float:left;width:'+o.thumbnailWidth+';height:'+o.thumbnailHeight+';line-height:'+o.thumbnailHeight+';padding:0;overflow:hidden;text-align:center;border:2px solid #ccc;margin-right:4px;font-size:'+o.thumbnailFontSize+';font-family:Arial;color:#000;text-shadow:0 0 3px #fff">'+(i+1)+'</div>');if(i==0)$('#thumb'+randID+'_1').css({'border-color':'#ff0000'})}thumb=$('img:first',obj).attr('src');$('#thumb'+randID+'_'+numImages).css({'background-image':'url('+thumb+')'});$('#thumbs'+randID+' div.thumb:not(:first)').css({'opacity':'.65'});$('#thumbs'+randID+' div.thumb').hover(function(){$(this).animate({'opacity':.99},150)},function(){if(curr!=this.id.split('_')[1])$(this).animate({'opacity':.65},250)});$('#thumbs'+randID+' div').bind('click',thumbclick);if(!o.displayThumbnailNumbers)$('#thumbs'+randID+' div').text('');if(!o.displayThumbnailBackground)$('#thumbs'+randID+' div').css({'background-image':'none'})}function thumbclick(event){target_num=this.id.split('_');if(curr!=target_num[1]){$('#thumb'+randID+'_'+curr).css({'border-color':'#ccc'});$('#progress'+randID).stop().fadeOut();clearTimeout(clearInt);$('#thumbs'+randID+' div').css({'cursor':'default'}).unbind('click');autopilot=0;setTimeout(function(){$('#play_btn'+randID).fadeIn(250)},o.transitionSpeed)}if(target_num[1]>curr){diff=target_num[1]-curr;anim('next',diff)}if(target_num[1]<curr){diff=curr-target_num[1];anim('prev',diff)}}function showtext(t){if(t!=null){$('#textholder'+randID).html(t).animate({marginBottom:'0px'},500);showminmax()}}function showminmax(){if(!autopilot){html='<img style="position:absolute;top:2px;right:18px;display:none;cursor:pointer" src="/test/scripts/infinitecarousel/images/down.png" title="Minimize" alt="minimize" id="min" /><img style="position:absolute;top:2px;right:18px;display:none;cursor:pointer" src="/test/scripts/infinitecarousel/images/up.png" title="Maximize" alt="maximize" id="max" />';html+='<img style="position:absolute;top:2px;right:6px;display:none;cursor:pointer" src="/test/scripts/infinitecarousel/images/close.png" title="Close" alt="close" id="close" />';$('#textholder'+randID).append(html);$('#min').fadeIn(250).click(function(){$('#textholder'+randID).animate({marginBottom:(-imgHeight*o.textholderHeight)-(correctTHHeight*2)+24+'px'},500,function(){$("#min,#max").toggle()})});$('#max').click(function(){$('#textholder'+randID).animate({marginBottom:'0px'},500,function(){$("#min,#max").toggle()})});$('#close').fadeIn(250).click(function(){$('#textholder'+randID).animate({marginBottom:(-imgHeight*o.textholderHeight)-(correctTHHeight*2)+'px'},500)})}}function borderpatrol(elem){$('#thumbs'+randID+' div').css({'border-color':'#ccc'}).animate({opacity:0.65},500);setTimeout(function(){elem.css({'border-color':'#ff0000'}).animate({'opacity':.99},500)},o.transitionSpeed)}function anim(direction,dist){$('#btn_rt'+randID).fadeOut(500);$('#btn_lt'+randID).fadeOut(500);$('#textholder'+randID).animate({marginBottom:(-imgHeight*o.textholderHeight)-(correctTHHeight*2)+'px'},500);$('#pause_btn'+randID).fadeOut(250);$('#play_btn'+randID).fadeOut(250);if(direction=="next"){if(curr==numImages)curr=0;if(dist>1){borderpatrol($('#thumb'+randID+'_'+(curr+dist)));$('li:lt(2)',obj).clone().insertAfter($('li:last',obj));$('ul',obj).animate({left:-imgWidth*(dist+1)},o.transitionSpeed,function(){$('li:lt(2)',obj).remove();for(j=1;j<=dist-2;j++){$('li:first',obj).clone().insertAfter($('li:last',obj));$('li:first',obj).remove()}$('#btn_rt'+randID).fadeIn(500);$('#btn_lt'+randID).fadeIn(500);$('#play_btn'+randID).fadeIn(250);showtext($('li:eq(1) p',obj).html());$(this).css({'left':-imgWidth});curr=curr+dist;$('#thumbs'+randID+' div').bind('click',thumbclick).css({'cursor':'pointer'})})}else{borderpatrol($('#thumb'+randID+'_'+(curr+1)));$('#thumbs'+randID+' div').css({'cursor':'default'}).unbind('click');$('li:first',obj).clone().insertAfter($('li:last',obj));$('ul',obj).animate({left:-imgWidth*2},o.transitionSpeed,function(){$('li:first',obj).remove();$('ul',obj).css('left',-imgWidth+'px');$('#btn_rt'+randID).fadeIn(500);$('#btn_lt'+randID).fadeIn(500);if(autopilot)$('#pause_btn'+randID).fadeIn(250);showtext($('li:eq(1) p',obj).html());if(autopilot){$('#progress'+randID).width(imgWidth).height(5);$('#progress'+randID).animate({'width':0},o.displayTime,function(){$('#pause_btn'+randID).fadeOut(50);setTimeout(function(){$('#pause_btn'+randID).fadeIn(250)},o.transitionSpeed)})}curr=curr+1;$('#thumbs'+randID+' div').bind('click',thumbclick).css({'cursor':'pointer'})})}}if(direction=="prev"){if(dist>1){borderpatrol($('#thumb'+randID+'_'+(curr-dist)));$('li:gt('+(numImages-(dist+1))+')',obj).clone().insertBefore($('li:first',obj));$('ul',obj).css({'left':(-imgWidth*(dist+1))}).animate({left:-imgWidth},o.transitionSpeed,function(){$('li:gt('+(numImages-1)+')',obj).remove();$('#btn_rt'+randID).fadeIn(500);$('#btn_lt'+randID).fadeIn(500);$('#play_btn'+randID).fadeIn(250);showtext($('li:eq(1) p',obj).html());curr=curr-dist;$('#thumbs'+randID+' div').bind('click',thumbclick).css({'cursor':'pointer'})})}else{borderpatrol($('#thumb'+randID+'_'+(curr-1)));$('#thumbs'+randID+' div').css({'cursor':'default'}).unbind('click');$('li:last',obj).clone().insertBefore($('li:first',obj));$('ul',obj).css('left',-imgWidth*2+'px').animate({left:-imgWidth},o.transitionSpeed,function(){$('li:last',obj).remove();$('#btn_rt'+randID).fadeIn(500);$('#btn_lt'+randID).fadeIn(500);if(autopilot)$('#pause_btn'+randID).fadeIn(250);showtext($('li:eq(1) p',obj).html());curr=curr-1;if(curr==0)curr=numImages;$('#thumbs'+randID+' div').bind('click',thumbclick).css({'cursor':'pointer'})})}}}var clearInt=setInterval(function(){anim('next')},o.displayTime+o.transitionSpeed);$('#progress'+randID).animate({'width':0},o.displayTime+o.transitionSpeed,function(){$('#pause_btn'+randID).fadeOut(100);setTimeout(function(){$('#pause_btn'+randID).fadeIn(250)},o.transitionSpeed)})})}})})(jQuery);
