/**
 * jquery.slideshow.js
 * @author shinji<web@shinjifukuda.com>
 * @version 30 Mar 2011
 * @link http://www.shinjifukuda.com
 */
(function(){jQuery.fn.slideshow=function(options)
{var defaults={width:'640px',height:'480px',selected:0,speed:1000,event:'click',behavior:'normal',easing:'swing',auto:true,interval:5000,repeat:true};var setting=jQuery.extend(defaults,options);var target=this;var targetId=jQuery(target).attr('id');var ul=jQuery('ul',target).addClass('slideshow-list');var li=jQuery('ul > li',target).addClass('slideshow-item');var resetCSS={'margin':0,'padding':0};var selected=setting.selected;var total=jQuery('ul > li',target).size();if(total<selected)selected=0;target.addClass('slideshow').css({'width':setting.width,'height':setting.height,'overflow':'hidden','position':'relative'});var w=Number(target.width());var h=Number(target.height());ul.css(resetCSS).css({'width':setting.width,'height':setting.height,'position':'absolute','z-index':1});var buttons=jQuery('<div class="slideshow-buttons"></div>').css({'z-index':2});var buttonsList=[];var items=[];var positionX=0;var positionY=0;var zidx=1;li.each(function(i)
{var item=jQuery(this).css({'position':'absolute','float':'left'}).data('pointX',positionX).data('pointY',positionY);positionX+=jQuery(this).width();positionY+=jQuery(this).height();items.push(item);var button=jQuery('<div><a href="javascript:void(0);">'+i+'</a></div>').data('value',i).addClass('slideshow-button');button.mouseenter(function(){jQuery(this).addClass('slideshow-button-hover');}).mouseleave(function(){jQuery(this).removeClass('slideshow-button-hover');});switch(setting.event.toLowerCase())
{case'mouseover':button.mouseenter(function(){selected=Number(jQuery(this).data('value'));changeHandler(selected);});break;case'mouseenter':button.mouseenter(function(){selected=Number(jQuery(this).data('value'));changeHandler(selected);});break;default:button.click(function(){selected=Number(jQuery(this).data('value'));changeHandler(selected);});break;};buttonsList.push(button);buttons.append(button);});target.append(buttons);function prevHandler()
{selected--;if(selected<0)selected=total-1;changeHandler(selected);};function nextHandler()
{selected++;if(selected/total===1)selected=0;changeHandler(selected);};var changeHandler;switch(setting.behavior.toLowerCase())
{case'fade':for(i=0;i<total;i++)items[i].css({'z-index':0,'left':0,'top':0});items[selected].css({'z-index':zidx});buttonsList[selected].addClass('slideshow-button-selected');changeHandler=function(value){zidx++;jQuery('.slideshow-button').removeClass('slideshow-button-selected');buttonsList[value].addClass('slideshow-button-selected');items[value].css({'display':'none','z-index':zidx});items[value].fadeIn(setting.speed);};break;case'scrollx':for(i=0;i<total;i++)items[i].css({'left':items[i].data('pointX')});buttonsList[selected].addClass('slideshow-button-selected');changeHandler=function(value){jQuery('.slideshow-button').removeClass('slideshow-button-selected');buttonsList[value].addClass('slideshow-button-selected');ul.animate({'left':'-'+items[value].data('pointX')+'px'},{queue:false,duration:setting.speed,easing:setting.easing});};break;case'scrolly':for(i=0;i<total;i++)items[i].css({'top':items[i].data('pointY'),'float':'none'});buttonsList[selected].addClass('slideshow-button-selected');changeHandler=function(value){jQuery('.slideshow-button').removeClass('slideshow-button-selected');buttonsList[value].addClass('slideshow-button-selected');ul.animate({'top':'-'+items[value].data('pointY')+'px'},{queue:false,duration:setting.speed,easing:setting.easing});};break;default:jQuery('.slideshow-button').removeClass('slideshow-button-selected');buttonsList[selected].addClass('slideshow-button-selected');changeHandler=function(value){zidx++;jQuery('.slideshow-button').removeClass('slideshow-button-selected');buttonsList[value].addClass('slideshow-button-selected');items[value].css({'display':'block','z-index':zidx});};break;};jQuery('[href^="#'+targetId+'-"]').each(function()
{var targetHref=String(jQuery(this).attr('href'));var result=targetHref.replace('#'+targetId+'-','');switch(result)
{case'prev':jQuery(this).click(prevHandler);break;case'next':jQuery(this).click(nextHandler);break;default:jQuery(this).click(function(e){selected=Number(result);changeHandler(selected);});break;};});var intervalId;if(setting.auto){intervalId=setInterval(timerHandler,setting.interval);target.mouseover(function(){clearInterval(intervalId);}).mouseout(function(){intervalId=setInterval(timerHandler,setting.interval);});}
var count=0;function timerHandler()
{if(setting.repeat){selected++;if(selected/total===1)selected=0;changeHandler(selected);}else{count++;if(count===total){clearInterval(intervalId);target.unbind('mouseover mouseout');}else{selected++;changeHandler(selected);}}};return this;}})(jQuery);
