(function(){$.fn.roller=function(options){var settings=$.extend({width:'auto',height:'auto',autoRoll:1,autoRollLength:5000,autoRollPauseOnHover:0,animType:'slide',animLength:1000,animFlashColor:'#ffffff',buildNav:['prev','index','next'],startOnItemIndex:0,onrollend:function(){},onautorollstart:function(){},onautorollstop:function(){}},options);return this.each(function(){var $subject=$(this),$viewport=$('<div class="roller-viewport" />'),$items=$(this).children(),$nav;settings.width=='auto'?settings.width=$(this).outerWidth():settings.width=parseInt(settings.width);settings.height=='auto'?settings.height=$(this).outerHeight():settings.height=parseInt(settings.height);$subject.css({width:settings.width+'px',height:settings.height+'px',overflow:'hidden',position:'relative'}).addClass('roller');settings.currentItemIndex=0;settings.autoRollTimer=null;if(settings.buildNav.length>0){$nav=$('<ul class="roller-nav" />');for(x in settings.buildNav){var $navItem;if(settings.buildNav[x]=='next'){$navItem=$('<li class="roller-nav-next"><a href="javascript:void(0);"><span><img src="img/arrow_right.gif"></span></a></li>');$navItem.appendTo($nav);}else if(settings.buildNav[x]=='prev'){$navItem=$('<li class="roller-nav-prev"><a href="javascript:void(0);"><span><img src="img/arrow_left.gif"></span></a></li>');$navItem.appendTo($nav);}else if(settings.buildNav[x]=='index'){$items.each(function(i,val){$navItem=$('<li class="roller-nav-item'+(settings.startOnIndex?' roller-nav-item-current':'')+'"><a href="javascript:void(0);"><span>'+(i+1)+'</span></a></li>');$navItem.appendTo($nav);});}}
$nav.appendTo($subject);$nav.find('.roller-nav-next').click(function(){$subject.trigger('roller_next');});$nav.find('.roller-nav-prev').click(function(){$subject.trigger('roller_prev');});$nav.find('.roller-nav-item').click(function(){if(!$(this).is('.roller-current'))$subject.trigger('roller_show',[$nav.find('.roller-nav-item').index(this)]);});}
$subject[0].rollerSettings=settings;$subject[0].rollerSettings.items=$items;$subject[0].rollerSettings.nav=$nav;$items.addClass('roller-item').css({width:settings.width+'px',height:settings.height+'px'}).wrapAll('<div class="roller-viewport" style="position: relative; width: 100%; height: 100%; overflow: hidden;"></div>');if(settings.animType=='slide'){var slideWidth=(settings.width*$items.length)+'px';$items.css('float','left').wrapAll('<div class="roller-slide-x" style="position: absolute; left: 0; top: 0; width: '+slideWidth+'; height: 100%; overflow: hidden;"></div>');}
if(settings.animType=='slide-y'){var slideHeight=(settings.height*$items.length)+'px';$items.wrapAll('<div class="roller-slide-y" style="position: absolute; left: 0; top: 0; width: 100%; height: '+slideHeight+'; overflow: hidden;"></div>');}
if(settings.animType=='fade'||settings.animType=='flash'||settings.animType=='none'||!settings.animType){$items.css({position:'absolute',left:0,top:0,zIndex:0}).hide();}
$subject.bind('roller_show',function(event,itemIndex){if($(this).is('.roller-transition'))return;if(typeof itemIndex=='string'){if(!itemIndex.match(/^#/))itemIndex='#'+itemIndex;if(this.rollerSettings.items.filter(itemIndex).length>0){itemIndex=this.rollerSettings.items.index(itemIndex);}}
if(this.rollerSettings.items.eq(itemIndex).is('.roller-current'))return;if(this.rollerSettings.autoRoll)$(this).trigger('roller_autoroll_stop');$(this).addClass('roller-transition');if(itemIndex>=this.rollerSettings.items.length)itemIndex=0;if(itemIndex<0)itemIndex=this.rollerSettings.items.length-1;this.rollerSettings.currentItemIndex=itemIndex;if(settings.buildNav){this.rollerSettings.nav.find('.roller-nav-item').removeClass('roller-current').eq(itemIndex).addClass('roller-current');}
if(this.rollerSettings.animType=='slide'){this.rollerSettings.items.filter('.roller-current').removeClass('roller-current');this.rollerSettings.items.eq(itemIndex).addClass('roller-current');$(this).find('.roller-slide-x').animate({left:-(itemIndex*parseInt(this.rollerSettings.width))+'px'},this.rollerSettings.animLength,function(){$(this).parents('.roller').trigger('roller_end');});}else if(this.rollerSettings.animType=='slide-y'){this.rollerSettings.items.filter('.roller-current').removeClass('roller-current');this.rollerSettings.items.eq(itemIndex).addClass('roller-current');$(this).find('.roller-slide-y').animate({top:-(itemIndex*parseInt(this.rollerSettings.height))+'px'},this.rollerSettings.animLength,function(){$(this).parents('.roller').trigger('roller_end');});}else if(this.rollerSettings.animType=='fade'){this.rollerSettings.items.filter('.roller-current').css('z-index',1).removeClass('roller-current').addClass('roller-old');this.rollerSettings.items.eq(itemIndex).addClass('roller-current').hide().css('z-index',2).fadeIn(this.rollerSettings.animLength,function(){$(this).parents('.roller').find('.roller-old').css('z-index','').removeClass('roller-old').hide();$(this).parents('.roller').trigger('roller_end');});}else if(this.rollerSettings.animType=='flash'){$(this).find('.roller-viewport').append('<div class="roller-flash" style="background-color: '+this.rollerSettings.animFlashColor+'; z-index: 2; position: absolute; left: 0; top: 0; padding: 0; margin: 0; width: 100%; height: 100%;" />');this.rollerSettings.items.filter('.roller-current').removeClass('roller-current').css('z-index',0).addClass('roller-old');this.rollerSettings.items.eq(itemIndex).addClass('roller-current').css('z-index',1).show();this.rollerSettings.items.filter('.roller-old').css('z-index','').removeClass('roller-old').hide();$(this).find('.roller-flash').fadeOut(this.rollerSettings.animLength,function(){$(this).parents('.roller').trigger('roller_end');$(this).remove();});}else{this.rollerSettings.items.removeClass('roller-current').hide().eq(itemIndex).addClass('roller-current').show();$(this).trigger('roller_end');}}).bind('roller_end',function(){$(this).removeClass('roller-transition');if(this.rollerSettings.autoRoll)$(this).trigger('roller_autoroll_start');if(this.rollerSettings.onrollend)this.rollerSettings.onrollend(this);}).bind('roller_next',function(){$(this).trigger('roller_show',[this.rollerSettings.currentItemIndex+1]);}).bind('roller_prev',function(){$(this).trigger('roller_show',[this.rollerSettings.currentItemIndex-1]);});if(settings.autoRoll){$subject.bind('roller_autoroll_start',function(){var roller=$(this);this.rollerSettings.autoRollTimer=setTimeout(function(){roller.trigger('roller_next');},this.rollerSettings.autoRollLength);if(settings.onautorollstart)settings.onautorollstart(this);}).bind('roller_autoroll_stop',function(){clearTimeout(this.rollerSettings.autoRollTimer);if(settings.onautorollstop)settings.onautorollstop(this);});if(settings.autoRollPauseOnHover){$subject.find('.roller-viewport').hover(function(){$(this).parents('.roller').trigger('roller_autoroll_stop');},function(){$(this).parents('.roller').trigger('roller_autoroll_start');});}
$subject.trigger('roller_autoroll_start');}
$subject.trigger('roller_show',settings.startOnItemIndex);});};$.fn.rollerShow=function(itemIndex){return this.each(function(){var $subject;if(this.rollerSettings){$subject=$(this);}else{$(this).parents().each(function(){if(this.rollerSettings){$subject=$(this);return false;}});}
$subject.trigger('roller_show',[itemIndex]);});};})();
