var BodyChanger = function(params) {
	this.box = $("#" + params.objId);
	this.list = this.box.children();
	this.count = this.list.length;
	this.auto = false;
	this.moveLock = false;
	this.size = params.size || 900;
	this.time = params.time || 1000;
	this.selectItem(0);
};
BodyChanger.prototype = {
	selectItem: function(idx) {
		this.current = this.getIndex(idx);
		this.next = this.getIndex(idx + 1);
		this.prev = this.getIndex(idx - 1);

		$(this.list[this.next]).css({left:this.size + "px"});
		$(this.list[this.current]).css({left:"0px"});
		$(this.list[this.prev]).css({left:"-" + this.size + "px"});
	},
	getIndex: function(idx) {
		if (idx >= this.count || idx < 0) {
			idx = (this.count + idx) % this.count;
		}
		return idx;
	},
	selectPrev : function() {
		if(this.isLock()) {
			return;
		}
		this.lock();
		var prev = this.getIndex(this.prev - 1);

		var self = this;
		$(this.list[this.current]).animate({left:this.size + "px"}, this.time);
		$(this.list[prev]).css({left:"-" + this.size + "px"}, this.time);
		$(this.list[this.prev]).animate({left:"0px"}, {duration:this.time, complete:function() {
			self.unlock();
		}});
		
		this.next = this.current;
		this.current = this.prev;
		this.prev = prev;
	},
	selectNext : function() {
		if(this.isLock()) {
			return;
		}
		this.lock();
		var next = this.getIndex(this.next + 1);

		var self = this;
		$(this.list[this.current]).animate({left:"-" + this.size + "px"}, this.time);
		$(this.list[next]).css({left:this.size + "px"}, this.time);
		$(this.list[this.next]).animate({left:"0px"}, {duration:this.time, complete:function() {
			self.unlock();
		}});
		

		this.prev = this.current;
		this.current = this.next;
		this.next = next;
		this.moving = false;
	},
	autoPlay : function() {
		var self = this;
		this.play = setInterval(function() {
			self.selectNext();
		}, 4000);
	},
	stopPlay : function() {
		clearInterval(this.play);
	},
	isLock: function() {
		return this.moveLock;
	},
	lock: function() {
		this.moveLock = true;
	},
	unlock: function() {
		this.moveLock = false;
	}
};

