var JQ = {};
JQ.Move = function(conf) {
	// 向左移动的绑定元素
	this.leftEL = '';
	// 向右移动的绑定元素
	this.rightEL = '';
	// 需要移动的元素
	this.moveEl = '';
	// 每次移动距离
	this.step = 90;
	// 预计移动元素的宽度
	this.forecastWidth = 600;
	// 移动速度
	this.speed = 800;
	// 启用时的样式
	this.enableCSS = {
		color : 'black'
	};
	// 禁用时的样式
	this.disableCSS = {
		color : 'gray'
	};

	apply(this, conf);
	// 向左移动
	this.moveLeft = function() {
		$dom(_leftEl).trigger("click");
	};
	// 向右移动
	this.moveRight = function() {
		$dom(_rightEl).trigger("click");
	};

	var _leftEl = this.leftEL;
	var _rightEl = this.rightEL;
	var _moveEl = this.moveEl;
	var _step = this.step;
	var _forecastWidth = this.forecastWidth;
	var _speed = this.speed;
	var _enableCSS = this.enableCSS;
	var _disableCSS = this.disableCSS;

	var _count = 0;
	var _ismoving = false;
	var _parentWidth = $dom(_moveEl).parent().width();

	function bindMove() {
		$dom(_leftEl).bind('click', {
					tag : 1
				}, moveclivk);
		$dom(_leftEl).css('cursor', 'pointer');
		$dom(_leftEl).css('z-index', '999');

		$dom(_rightEl).bind('click', {
					tag : -1
				}, moveclivk);
		$dom(_rightEl).css('cursor', 'pointer');
		$dom(_rightEl).css('z-index', '999');

		$dom(_moveEl).css('position', 'relative');
		$dom(_moveEl).css('left', '0px');
		$dom(_moveEl).css('width', '999999px');
		if ($dom(_moveEl).parent().css('width') == '') {
			$dom(_moveEl).parent().css('width', '100%');
		}
		$dom(_moveEl).parent().css('position', 'relative');
		$dom(_moveEl).parent().css('overflow', 'hidden');
	}

	function moveclivk(e) {
		if (!this.enSt || _ismoving) {
			return;
		}

		var tag = e.data.tag;

		var cLeft = $dom(_moveEl).css('left');
		var tagLeft = parseInt(cLeft) + _step * tag;

		_ismoving = true;
		$dom(_moveEl).animate({
					left : tagLeft + 'px'
				}, _speed, function() {
					var l = parseInt($dom(_moveEl).css('left'));
					tag == 1 ? _count-- : _count++;
					checkMoveState();
					_ismoving = false;
				});
	}

	function checkMoveState() {
		enableMoveClick(_count > 0, _leftEl);
		enableMoveClick(((_forecastWidth - _parentWidth) / _step) > _count,
				_rightEl);
	}

	function enableMoveClick(en, lr) {
		$dom(lr).css(en ? _enableCSS : _disableCSS);
		$dom(lr)[0].enSt = en;
	}

	function $dom(id) {
		return $('#' + id);
	}

	bindMove();
	checkMoveState();
};