// 2009.03.31 Carousel.js
$(function(){$('div.ad').each(function(){var tmp=$(this).attr('title');if(tmp){var param=tmp.split(",");if(param[0]=='carousel'){var json=param[1]||'books';if(json){$(this).BooksCarousel({jsonfile:'/voice/js/json/'+json+'.js',max:16,auto_int:4000,easing:'easeOutCubic'});}}}});});jQuery.fn.BooksCarousel=function(o){o=jQuery.extend({jsonfile:'/voice/js/json/books.js',auto_int:4000,max:16,all:false,easing:'easeOutBounce'},o);var targetDiv=this;var max=o.max;$(targetDiv).html($("<div></div>").addClass("wood")
.attr("id","bookshelf").css("float","left")
.html($("<ul></ul>").attr("id","abooks")));$(targetDiv)
.append('<button class="prev" title="back">&lt;</button>')
.append('<button class="next" title="next">&gt;</button>')
.append('<br clear="left" />');$.getJSON(o.jsonfile,function(data){$.each(data.books,function(i,book){if(o.all){$('#abooks').append($('<li></li>').html(bookObject(book)));}
else if(max>0&&Math.ceil(Math.random()*10)%2>0){$('#abooks').append($('<li></li>').html(bookObject(book)));max-=1;}});$('#bookshelf').jCarouselLite({btnNext:".next",btnPrev:".prev",visible:6,scroll:3,circular:false,easing:o.easing,auto:o.auto_int,speed:4000});});function bookObject(pic){var asin=pic.s;var author=pic.p;var title=pic.a;var image,src;src='http://images-jp.amazon.com/images/P/'+asin+'.01.MZZZZZZZ.jpg';image=$("<img />").attr({src:src,alt:asin});if(o.all)
return $('<a href="'+vos.astore+'/detail/'+asin+'"></a>')
.html($(image).height(80)).append(title)
.css({"font-size":"8pt","line-height":"1em"});return $('<a href="'+vos.astore+'/detail/'+asin+'"></a>')
.html($(image).height(160))
.attr("title",author+title);}}
jQuery.fn.jCarouselLite=function(o){o=$.extend({btnPrev:null,btnNext:null,btnGo:null,mouseWheel:false,auto:null,speed:200,easing:null,vertical:false,circular:true,visible:3,start:0,scroll:1,beforeStart:null,afterEnd:null},o||{});return this.each(function(){var running=false,animCss=o.vertical?"top":"left",sizeCss=o.vertical?"height":"width";var div=$(this),ul=$("ul",div),tLi=$("li",ul),tl=tLi.size(),v=o.visible;if(o.circular){ul.prepend(tLi.slice(tl-v-1).clone()).append(tLi.slice(0,v).clone());o.start+=v;}
var li=$("li",ul),itemLength=li.size(),curr=o.start;div.css("visibility","visible");li.css("overflow","hidden")
.css("float",o.vertical?"none":"left")
.children().css("overflow","hidden");ul.css("margin","0")
.css("padding","0")
.css("position","relative")
.css("list-style-type","none")
.css("z-index","1");div.css("overflow","hidden")
.css("position","relative")
.css("z-index","2")
.css("left","0px");var liSize=o.vertical?height(li):width(li);var ulSize=liSize*itemLength;var divSize=liSize*v;li.css("width",li.width()).css("height",li.height());ul.css(sizeCss,ulSize+"px").css(animCss,-(curr*liSize));div.css(sizeCss,divSize+"px");if(o.btnPrev)$(o.btnPrev).click(function(){return go(curr-o.scroll);});if(o.btnNext)$(o.btnNext).click(function(){return go(curr+o.scroll);});if(o.btnGo)
$.each(o.btnGo,function(i,val){$(val).click(function(){return go(o.circular?o.visible+i:i);});});if(o.mouseWheel&&div.mousewheel)
div.mousewheel(function(e,d){return d>0?go(curr-o.scroll):go(curr+o.scroll);});if(o.auto)
setInterval(function(){go(curr+o.scroll);},o.auto+o.speed);function vis(){return li.slice(curr-1).slice(0,v);};function go(to){if(!running){if(o.beforeStart)o.beforeStart.call(this,vis());if(o.circular){if(to<=o.start-v-1){ul.css(animCss,-((itemLength-(v*2))*liSize)+"px");curr=to==o.start-v-1?itemLength-(v*2)-1:itemLength-(v*2)-o.scroll;}else if(to>=itemLength-v+1){ul.css(animCss,-((v)*liSize)+"px");curr=to==itemLength-v+1?v+1:v+o.scroll;}else curr=to;}
else{if(to<0||to>itemLength-v)return;else curr=to;}
running=true;ul.animate(animCss=="left"?{left:-(curr*liSize)}:{top:-(curr*liSize)},o.speed,o.easing,function(){if(o.afterEnd)o.afterEnd.call(this,vis());running=false;});if(!o.circular){$(o.btnPrev+","+o.btnNext).removeClass("disabled");$((curr-o.scroll<0&&o.btnPrev)||(curr+o.scroll>itemLength-v&&o.btnNext)||[]).addClass("disabled");}}
return false;};});function css(el,prop){return parseInt($.css(el[0],prop))||0;};function width(el){return el[0].offsetWidth+css(el,'marginLeft')+css(el,'marginRight');};function height(el){return el[0].offsetHeight+css(el,'marginTop')+css(el,'marginBottom');};};


