var catalog = (function() {
	var blocks;

	var parendId = null;

	var index = 0;

	var left = 0;
	var leftLimit = 1;

	var flagWidth = 1;
	var layerWidth = 0;

	var speed = 500;

	var isMove = false;
	var isAnimate = false;

	var lastLeft = 0;
	var lastPageX;

	var maxTime = 1.5;
	var time = 1;

	var Level = 0;

	var moveSteps;

	var count;
	var steps;


	$(function() {
		function init() {
			alert('!');
		}

		function initCap(target) {
			steps = new Array();
			steps[0] = 0;

			count = $('.wrp-catalog '+target+' td').size();

			stepWidth = 0;

			for (i = 0; i < count; i++) {
				stepWidth -= $('.wrp-catalog '+target+' td:eq('+i+')').width();
				steps[i+1] = stepWidth;
			}
		}

		blocks = {
			root: $('#icatalog'),
			conteiner: $(".wrp-catalog .container"),
			arrowRight: $('#ia-right'),
			arrowLeft: $('#ia-left'),
			arrowTop: $(' #ia-top')
		};

		if (flagWidth > 0) {
			flagWidth = -1;
			Level = $('.wrp-catalog table.sub-cap:visible').size();

			if (parseInt($('.wrp-catalog table.cap').css('margin-top')) < 0) {
				initCap('table.sub-cap:visible');

				temp = $('.wrp-catalog table.sub-cap:visible').attr('class');
				temp = explode('sub-cap i', temp);
				parendId = temp[1];
			} else {
				initCap('table.cap');
			}
		}

		blocks.root.mousedown(startDnd).mousemove(dnd).mouseup(finishDnd).mouseout(finishDnd);

		blocks.arrowRight.mouseover(function(e)	{
			blocks.arrowRight.attr("class","arr-right-acv");
		});
		blocks.arrowRight.mouseout(function(e)	{
			blocks.arrowRight.attr("class","arr-right");
		});

		blocks.arrowLeft.mouseover(function(e)	{
			blocks.arrowLeft.attr("class","arr-left-acv");
		});
		blocks.arrowLeft.mouseout(function(e)	{
			blocks.arrowLeft.attr("class","arr-left");
		});

		blocks.arrowTop.mouseover(function(e)	{
			blocks.arrowTop.attr("class","arr-top-acv");
		});
		blocks.arrowTop.mouseout(function(e)	{
			blocks.arrowTop.attr("class","arr-top");
		});

		blocks.arrowLeft.click(function(e)	{
			if (index < count) {
				index++;
				blocks.conteiner.animate({"left": steps[index]}, speed);
			}
		});

		blocks.arrowRight.click(function(e)	{
			if (index > 0) {
				index--;
				blocks.conteiner.animate({"left": steps[index]}, speed);
			}
		});

		blocks.arrowTop.click(function(e)	{

			Level--;

			$('.wrp-catalog table:visible:last').hide();

			var marginTop = -54 * Level;
			blocks.conteiner.animate({"marginTop": marginTop, "left": 0}, speed);

			if (Level == 0) {
				blocks.arrowTop.hide();
			}
			initCap('table.cap');
		});

		$('.wrp-catalog a.ajax').click(function(e)	{

			Level++;

			//blocks.conteiner.animate({}, speed);

			var marginTop = -54 * Level;
			$('.wrp-catalog .container').animate({"left": 0, "marginTop": marginTop}, speed);


			blocks.arrowTop.show();

			parendId = $(this).attr("rel");

			$('.wrp-catalog table.sub-cap.i'+parendId).show();
			initCap('table.sub-cap.i'+parendId);

			return false;

		});



	});

	function setPointer(){

	}

	function startDnd(event) {


		isMove = true;
		lastPageX = event.pageX;

		moveSteps = [];

		left = parseInt($("#icatalog .container").css('left'));
		lastLeft = left;

	}

	function dnd(event) {
		if (!isMove) {
			return;
		}

		var timeCounter = new Date();
		var pageX = parseInt(event.pageX);


		step = (pageX- lastPageX);
		left += step;
		lastPageX = pageX;

		$("#icatalog .container").css('left', left);

	}

	function finishDnd(event) {
		if (!isMove) {
			return;
		}
		isMove = false;

		left = parseInt($("#icatalog .container").css('left')) ;

		rr2 = lastLeft - left;

		if (Math.abs(rr2) > 0) {
			if (left < 0) {
				for (i = 0; i < count; i++) {
					if (steps[i] >= left && steps[i+1] <= left) {
						rr1 = Math.abs((steps[i] - steps[i+1])  / 10);
						if (rr1 < Math.abs(rr2) && rr2 > 0) i++;

						break;
					}
				}
			} else i = 0;

			index = i;
			blocks.conteiner.animate({"left": steps[i]}, speed);
		}
	}

})();
