/*!
 * jCarousel - Riding carousels with jQuery
 *   http://sorgalla.com/jcarousel/
 *
 * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Built on top of the jQuery library
 *   http://jquery.com
 *
 * Inspired by the "Carousel Component" by Bill Scott
 *   http://billwscott.com/carousel/
 */
(function(c){c.fn.jcarousel=function(g){if(typeof g=="string"){var e=c(this).data("jcarousel"),f=Array.prototype.slice.call(arguments,1);return e[g].apply(e,f)}else{return this.each(function(){c(this).data("jcarousel",new a(this,g))})}};var d={vertical:false,rtl:false,start:1,offset:1,size:null,scroll:3,visible:null,animation:"normal",easing:"swing",auto:0,wrap:null,initCallback:null,reloadCallback:null,itemLoadCallback:null,itemFirstInCallback:null,itemFirstOutCallback:null,itemLastInCallback:null,itemLastOutCallback:null,itemVisibleInCallback:null,itemVisibleOutCallback:null,buttonNextHTML:"<div></div>",buttonPrevHTML:"<div></div>",buttonNextEvent:"click",buttonPrevEvent:"click",buttonNextCallback:null,buttonPrevCallback:null,itemFallbackDimension:null},b=false;c(window).bind("load.jcarousel",function(){b=true});c.jcarousel=function(j,g){this.options=c.extend({},d,g||{});this.locked=false;this.container=null;this.clip=null;this.list=null;this.buttonNext=null;this.buttonPrev=null;if(!g||g.rtl===undefined){this.options.rtl=(c(j).attr("dir")||c("html").attr("dir")||"").toLowerCase()=="rtl"}this.wh=!this.options.vertical?"width":"height";this.lt=!this.options.vertical?(this.options.rtl?"right":"left"):"top";var n="",l=j.className.split(" ");for(var h=0;h<l.length;h++){if(l[h].indexOf("jcarousel-skin")!=-1){c(j).removeClass(l[h]);n=l[h];break}}if(j.nodeName.toUpperCase()=="UL"||j.nodeName.toUpperCase()=="OL"){this.list=c(j);this.container=this.list.parent();if(this.container.hasClass("jcarousel-clip")){if(!this.container.parent().hasClass("jcarousel-container")){this.container=this.container.wrap("<div></div>")}this.container=this.container.parent()}else{if(!this.container.hasClass("jcarousel-container")){this.container=this.list.wrap("<div></div>").parent()}}}else{this.container=c(j);this.list=this.container.find("ul,ol").eq(0)}if(n!=""&&this.container.parent()[0].className.indexOf("jcarousel-skin")==-1){this.container.wrap('<div class=" '+n+'"></div>')}this.clip=this.list.parent();if(!this.clip.length||!this.clip.hasClass("jcarousel-clip")){this.clip=this.list.wrap("<div></div>").parent()}this.buttonNext=c(".jcarousel-next",this.container);if(this.buttonNext.size()==0&&this.options.buttonNextHTML!=null){this.buttonNext=this.clip.after(this.options.buttonNextHTML).next()}this.buttonNext.addClass(this.className("jcarousel-next"));this.buttonPrev=c(".jcarousel-prev",this.container);if(this.buttonPrev.size()==0&&this.options.buttonPrevHTML!=null){this.buttonPrev=this.clip.after(this.options.buttonPrevHTML).next()}this.buttonPrev.addClass(this.className("jcarousel-prev"));this.clip.addClass(this.className("jcarousel-clip")).css({overflow:"hidden",position:"relative"});this.list.addClass(this.className("jcarousel-list")).css({overflow:"hidden",position:"relative",top:0,margin:0,padding:0}).css((this.options.rtl?"right":"left"),0);this.container.addClass(this.className("jcarousel-container")).css({position:"relative"});if(!this.options.vertical&&this.options.rtl){this.container.addClass("jcarousel-direction-rtl").attr("dir","rtl")}var k=this.options.visible!=null?Math.ceil(this.clipping()/this.options.visible):null;var m=this.list.children("li");var p=this;if(m.size()>0){var f=0,h=this.options.offset;m.each(function(){p.format(this,h++);f+=p.dimension(this,k)});this.list.css(this.wh,(f+100)+"px");if(!g||g.size===undefined){this.options.size=m.size()}}this.container.css("display","block");this.funcNext=function(){p.next()};this.funcPrev=function(){p.prev()};this.funcResize=function(){p.reload()};if(this.options.initCallback!=null){this.options.initCallback(this,"init")}if(!b&&c.browser.safari){this.buttons(false,false);c(window).bind("load.jcarousel",function(){p.setup()})}else{this.setup()}};var a=c.jcarousel;a.fn=a.prototype={jcarousel:"0.2.5"};a.fn.extend=a.extend=c.extend;a.fn.extend({setup:function(){this.first=null;this.last=null;this.prevFirst=null;this.prevLast=null;this.animating=false;this.timer=null;this.tail=null;this.inTail=false;if(this.locked){return}this.list.css(this.lt,this.pos(this.options.offset)+"px");var e=this.pos(this.options.start);this.prevFirst=this.prevLast=null;this.animate(e,false);c(window).unbind("resize.jcarousel",this.funcResize).bind("resize.jcarousel",this.funcResize)},reset:function(){this.list.empty();this.list.css(this.lt,"0px");this.list.css(this.wh,"10px");if(this.options.initCallback!=null){this.options.initCallback(this,"reset")}this.setup()},reload:function(){if(this.tail!=null&&this.inTail){this.list.css(this.lt,a.intval(this.list.css(this.lt))+this.tail)}this.tail=null;this.inTail=false;if(this.options.reloadCallback!=null){this.options.reloadCallback(this)}if(this.options.visible!=null){var g=this;var h=Math.ceil(this.clipping()/this.options.visible),f=0,e=0;this.list.children("li").each(function(j){f+=g.dimension(this,h);if(j+1<g.first){e=f}});this.list.css(this.wh,f+"px");this.list.css(this.lt,-e+"px")}this.scroll(this.first,false)},lock:function(){this.locked=true;this.buttons()},unlock:function(){this.locked=false;this.buttons()},size:function(e){if(e!=undefined){this.options.size=e;if(!this.locked){this.buttons()}}return this.options.size},has:function(g,h){if(h==undefined||!h){h=g}if(this.options.size!==null&&h>this.options.size){h=this.options.size}for(var f=g;f<=h;f++){var k=this.get(f);if(!k.length||k.hasClass("jcarousel-item-placeholder")){return false}}return true},get:function(e){return c(".jcarousel-item-"+e,this.list)},add:function(l,q){var m=this.get(l),h=0,g=c(q);if(m.length==0){var p,m=this.create(l),k=a.intval(l);while(p=this.get(--k)){if(k<=0||p.length){k<=0?this.list.prepend(m):p.after(m);break}}}else{h=this.dimension(m)}if(g.get(0).nodeName.toUpperCase()=="LI"){m.replaceWith(g);m=g}else{m.empty().append(q)}this.format(m.removeClass(this.className("jcarousel-item-placeholder")),l);var o=this.options.visible!=null?Math.ceil(this.clipping()/this.options.visible):null;var f=this.dimension(m,o)-h;if(l>0&&l<this.first){this.list.css(this.lt,a.intval(this.list.css(this.lt))-f+"px")}this.list.css(this.wh,a.intval(this.list.css(this.wh))+f+"px");return m},remove:function(f){var g=this.get(f);if(!g.length||(f>=this.first&&f<=this.last)){return}var h=this.dimension(g);if(f<this.first){this.list.css(this.lt,a.intval(this.list.css(this.lt))+h+"px")}g.remove();this.list.css(this.wh,a.intval(this.list.css(this.wh))-h+"px")},next:function(){this.stopAuto();if(this.tail!=null&&!this.inTail){this.scrollTail(false)}else{this.scroll(((this.options.wrap=="both"||this.options.wrap=="last")&&this.options.size!=null&&this.last==this.options.size)?1:this.first+this.options.scroll)}},prev:function(){this.stopAuto();if(this.tail!=null&&this.inTail){this.scrollTail(true)}else{this.scroll(((this.options.wrap=="both"||this.options.wrap=="first")&&this.options.size!=null&&this.first==1)?this.options.size:this.first-this.options.scroll)}},scrollTail:function(e){if(this.locked||this.animating||!this.tail){return}var f=a.intval(this.list.css(this.lt));!e?f-=this.tail:f+=this.tail;this.inTail=!e;this.prevFirst=this.first;this.prevLast=this.last;this.animate(f)},scroll:function(f,e){if(this.locked||this.animating){return}this.animate(this.pos(f),e)},pos:function(B){var k=a.intval(this.list.css(this.lt));if(this.locked||this.animating){return k}if(this.options.wrap!="circular"){B=B<1?1:(this.options.size&&B>this.options.size?this.options.size:B)}var y=this.first>B;var D=this.options.wrap!="circular"&&this.first<=1?1:this.first;var G=y?this.get(D):this.get(this.last);var A=y?D:D-1;var E=null,z=0,u=false,F=0,C;while(y?--A>=B:++A<B){E=this.get(A);u=!E.length;if(E.length==0){E=this.create(A).addClass(this.className("jcarousel-item-placeholder"));G[y?"before":"after"](E);if(this.first!=null&&this.options.wrap=="circular"&&this.options.size!==null&&(A<=0||A>this.options.size)){C=this.get(this.index(A));if(C.length){E=this.add(A,C.clone(true))}}}G=E;F=this.dimension(E);if(u){z+=F}if(this.first!=null&&(this.options.wrap=="circular"||(A>=1&&(this.options.size==null||A<=this.options.size)))){k=y?k+F:k-F}}var r=this.clipping();var t=[];var h=0,A=B,s=0;var G=this.get(B-1);while(++h){E=this.get(A);u=!E.length;if(E.length==0){E=this.create(A).addClass(this.className("jcarousel-item-placeholder"));G.length==0?this.list.prepend(E):G[y?"before":"after"](E);if(this.first!=null&&this.options.wrap=="circular"&&this.options.size!==null&&(A<=0||A>this.options.size)){C=this.get(this.index(A));if(C.length){E=this.add(A,C.clone(true))}}}G=E;var F=this.dimension(E);if(F==0){throw new Error("jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...")}if(this.options.wrap!="circular"&&this.options.size!==null&&A>this.options.size){t.push(E)}else{if(u){z+=F}}s+=F;if(s>=r){break}A++}for(var q=0;q<t.length;q++){t[q].remove()}if(z>0){this.list.css(this.wh,this.dimension(this.list)+z+"px");if(y){k-=z;this.list.css(this.lt,a.intval(this.list.css(this.lt))-z+"px")}}var o=B+h-1;if(this.options.wrap!="circular"&&this.options.size&&o>this.options.size){o=this.options.size}if(A>o){h=0,A=o,s=0;while(++h){var E=this.get(A--);if(!E.length){break}s+=this.dimension(E);if(s>=r){break}}}var n=o-h+1;if(this.options.wrap!="circular"&&n<1){n=1}if(this.inTail&&y){k+=this.tail;this.inTail=false}this.tail=null;if(this.options.wrap!="circular"&&o==this.options.size&&(o-h+1)>=1){var w=a.margin(this.get(o),!this.options.vertical?"marginRight":"marginBottom");if((s-w)>r){this.tail=s-r-w}}while(B-->n){k+=this.dimension(this.get(B))}this.prevFirst=this.first;this.prevLast=this.last;this.first=n;this.last=o;return k},animate:function(h,e){if(this.locked||this.animating){return}this.animating=true;var f=this;var g=function(){f.animating=false;if(h==0){f.list.css(f.lt,0)}if(f.options.wrap=="circular"||f.options.wrap=="both"||f.options.wrap=="last"||f.options.size==null||f.last<f.options.size){f.startAuto()}f.buttons();f.notify("onAfterAnimation");if(f.options.wrap=="circular"&&f.options.size!==null){for(var j=f.prevFirst;j<=f.prevLast;j++){if(j!==null&&!(j>=f.first&&j<=f.last)&&(j<1||j>f.options.size)){f.remove(j)}}}};this.notify("onBeforeAnimation");if(!this.options.animation||e==false){this.list.css(this.lt,h+"px");g()}else{var i=!this.options.vertical?(this.options.rtl?{right:h}:{left:h}):{top:h};this.list.animate(i,this.options.animation,this.options.easing,g)}},startAuto:function(f){if(f!=undefined){this.options.auto=f}if(this.options.auto==0){return this.stopAuto()}if(this.timer!=null){return}var e=this;this.timer=setTimeout(function(){e.next()},this.options.auto*1000)},stopAuto:function(){if(this.timer==null){return}clearTimeout(this.timer);this.timer=null},buttons:function(g,f){if(g==undefined||g==null){var g=!this.locked&&this.options.size!==0&&((this.options.wrap&&this.options.wrap!="first")||this.options.size==null||this.last<this.options.size);if(!this.locked&&(!this.options.wrap||this.options.wrap=="first")&&this.options.size!=null&&this.last>=this.options.size){g=this.tail!=null&&!this.inTail}}if(f==undefined||f==null){var f=!this.locked&&this.options.size!==0&&((this.options.wrap&&this.options.wrap!="last")||this.first>1);if(!this.locked&&(!this.options.wrap||this.options.wrap=="last")&&this.options.size!=null&&this.first==1){f=this.tail!=null&&this.inTail}}var e=this;this.buttonNext[g?"bind":"unbind"](this.options.buttonNextEvent+".jcarousel",this.funcNext)[g?"removeClass":"addClass"](this.className("jcarousel-next-disabled")).attr("disabled",g?false:true);this.buttonPrev[f?"bind":"unbind"](this.options.buttonPrevEvent+".jcarousel",this.funcPrev)[f?"removeClass":"addClass"](this.className("jcarousel-prev-disabled")).attr("disabled",f?false:true);if(this.options.buttonNextCallback!=null&&this.buttonNext.data("jcarouselstate")!=g){this.buttonNext.each(function(){e.options.buttonNextCallback(e,this,g)}).data("jcarouselstate",g)}if(this.options.buttonPrevCallback!=null&&(this.buttonPrev.data("jcarouselstate")!=f)){this.buttonPrev.each(function(){e.options.buttonPrevCallback(e,this,f)}).data("jcarouselstate",f)}},notify:function(e){var f=this.prevFirst==null?"init":(this.prevFirst<this.first?"next":"prev");this.callback("itemLoadCallback",e,f);if(this.prevFirst!==this.first){this.callback("itemFirstInCallback",e,f,this.first);this.callback("itemFirstOutCallback",e,f,this.prevFirst)}if(this.prevLast!==this.last){this.callback("itemLastInCallback",e,f,this.last);this.callback("itemLastOutCallback",e,f,this.prevLast)}this.callback("itemVisibleInCallback",e,f,this.first,this.last,this.prevFirst,this.prevLast);this.callback("itemVisibleOutCallback",e,f,this.prevFirst,this.prevLast,this.first,this.last)},callback:function(j,m,e,k,h,g,f){if(this.options[j]==undefined||(typeof this.options[j]!="object"&&m!="onAfterAnimation")){return}var n=typeof this.options[j]=="object"?this.options[j][m]:this.options[j];if(!c.isFunction(n)){return}var o=this;if(k===undefined){n(o,e,m)}else{if(h===undefined){this.get(k).each(function(){n(o,this,k,e,m)})}else{for(var l=k;l<=h;l++){if(l!==null&&!(l>=g&&l<=f)){this.get(l).each(function(){n(o,this,l,e,m)})}}}}},create:function(e){return this.format("<li></li>",e)},format:function(k,h){var k=c(k),g=k.get(0).className.split(" ");for(var f=0;f<g.length;f++){if(g[f].indexOf("jcarousel-")!=-1){k.removeClass(g[f])}}k.addClass(this.className("jcarousel-item")).addClass(this.className("jcarousel-item-"+h)).css({"float":(this.options.rtl?"right":"left"),"list-style":"none"}).attr("jcarouselindex",h);return k},className:function(e){return e+" "+e+(!this.options.vertical?"-horizontal":"-vertical")},dimension:function(i,j){var h=i.jquery!=undefined?i[0]:i;var g=!this.options.vertical?(h.offsetWidth||a.intval(this.options.itemFallbackDimension))+a.margin(h,"marginLeft")+a.margin(h,"marginRight"):(h.offsetHeight||a.intval(this.options.itemFallbackDimension))+a.margin(h,"marginTop")+a.margin(h,"marginBottom");if(j==undefined||g==j){return g}var f=!this.options.vertical?j-a.margin(h,"marginLeft")-a.margin(h,"marginRight"):j-a.margin(h,"marginTop")-a.margin(h,"marginBottom");c(h).css(this.wh,f+"px");return this.dimension(h)},clipping:function(){return !this.options.vertical?this.clip[0].offsetWidth-a.intval(this.clip.css("borderLeftWidth"))-a.intval(this.clip.css("borderRightWidth")):this.clip[0].offsetHeight-a.intval(this.clip.css("borderTopWidth"))-a.intval(this.clip.css("borderBottomWidth"))},index:function(e,f){if(f==undefined){f=this.options.size}return Math.round((((e-1)/f)-Math.floor((e-1)/f))*f)+1}});a.extend({defaults:function(e){return c.extend(d,e||{})},margin:function(j,i){if(!j){return 0}var h=j.jquery!=undefined?j[0]:j;if(i=="marginRight"&&c.browser.safari){var g={display:"block","float":"none",width:"auto"},f,k;c.swap(h,g,function(){f=h.offsetWidth});g.marginRight=0;c.swap(h,g,function(){k=h.offsetWidth});return k-f}return a.intval(c.css(h,i))},intval:function(e){e=parseInt(e);return isNaN(e)?0:e}})})(jQuery);
