(function(d) {
	function n(a, o) {
		return parseInt(d.css(a[0], o)) || 0
	}
	function t(a) {
		return a[0].offsetWidth + n(a, "marginLeft") + n(a, "marginRight")
	}
	function u(a) {
		return a[0].offsetHeight + n(a, "marginTop") + n(a, "marginBottom")
	}
	d.fn.jCarouselLite = function(a) {
		a = d.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}, a || {});
		return this.each(function() {
			function o() {
				return i.slice(c).slice(0, b)
			}
			function j(e) {
				if(!p) {
					a.beforeStart && a.beforeStart.call(this, o());
					if(a.circular)if(e <= a.start - b - 1) {
						g.css(k, -((f - b * 2) * h) + "px");
						c = e == a.start - b - 1 ? f - b * 2 - 1 : f - b * 2 - a.scroll
					}else if(e >= f - b + 1) {
						g.css(k, -(b * h) + "px");
						c = e == f - b + 1 ? b + 1 : b + a.scroll
					}else c = e;
					else if(e < 0) {
						g.css(k, -(f * h) + "px");
						c = e == a.start - b - 1 ? f - 1 : f - a.scroll
					}else if(e > f - b) {
						g.css(k, -h + "px");
						c = 0
					}else c = e;
					p = true;
					g.animate(k == "left" ? {left:-(c * h)} : {top:-(c * h)}, a.speed, a.easing, function() {
						a.afterEnd && a.afterEnd.call(this, o());
						p = false
					});
					if(!a.circular) {
						d(a.btnPrev + "," + a.btnNext).removeClass("disabled");
						d(c - a.scroll < 0 && a.btnPrev || c + a.scroll > f - b && a.btnNext || []).addClass("disabled")
					}
				}return false
			}
			var p = false, k = a.vertical ? "top" : "left", s = a.vertical ? "height" : "width", l = d(this), g = d("ul", l), m = d("li", g), q = m.size(), b = a.visible;
			if(a.circular) {
				g.prepend(m.slice(q - b - 1 + 1).clone()).append(m.slice(0, b).clone());
				a.start += b
			}var i = d("li", g), f = i.size(), c = a.start;
			l.css("visibility", "visible");
			i.css({display:"block", overflow:"hidden", "float":a.vertical ? "none" : "left"});
			g.css({margin:"0", padding:"0", position:"relative", "list-style-type":"none", "z-index":"1"});
			l.css({overflow:"hidden", position:"relative", "z-index":"2", left:"0px"});
			var h = a.vertical ? u(i) : t(i);
			m = h * f;
			q = h * b;
			i.css({width:i.width(), height:i.height()});
			g.css(s, m + "px").css(k, -(c * h));
			l.css(s, q + "px");
			a.btnPrev && d(a.btnPrev).click(function() {
				return j(c - a.scroll)
			});
			a.btnNext && d(a.btnNext).click(function() {
				return j(c + a.scroll)
			});
			a.btnGo && d.each(a.btnGo, function(e, r) {
				d(r).click(function() {
					return j(a.circular ? a.visible + e : e)
				})
			});
			a.mouseWheel && l.mousewheel && l.mousewheel(function(e, r) {
				return r > 0 ? j(c - a.scroll) : j(c + a.scroll)
			});
			a.auto && setInterval(function() {
				j(c + a.scroll)
			}, a.auto + a.speed)
		})
	}
})(jQuery);
