store = {
	adjustRows: function() {
		var container = $('#products-list');
		var list = $('#products-list li');
		var columns = Math.floor(container.width() / list.width());
		var rows = [];
		var row = -1;
		var i = -1;

		list.each(function(index, elm) {
			i++;
			if (i % columns == 0 || i == 0) {
				row++;
				rows[row] = {maxHeight: 0, elements: []};
			}

			var size = $(elm).height();

			rows[row].maxHeight = (rows[row].maxHeight < size) ? size : rows[row].maxHeight;
			rows[row].elements.push($(elm));
		});

		$.each(rows, function(index, obj) {
			$.each(obj.elements, function(i, elm) {
				elm.height(obj.maxHeight);
			});
		});
	},

    productImgs: function() {
        $('#product-images a').fancybox();
    },

	cart: function() {
		if ($('#CartStoreViewForm').length > 0) {
			var form = $('#CartStoreViewForm');
			var btn = form.find('button');
			var cart = $('#mighty-cart');
			var inProccess = false;

			btn.click(function() {
				if (!inProccess) {
					form.submit();
				}

				return false;
			});

			form.submit(function() {
				var dest = form.attr('action');
				var cartData = form.serialize();

				$.ajax({
					url: dest,
					type: 'POST',
					dataType: 'json',
					data: cartData,
					beforeSend: function(o) {
						inProccess = true;

						$('#mighty-loader').show();
					},
					success: function(d) {
						$('#mighty-loader').hide();
						cart.fadeIn('slow');
						inProccess = false;

						cart.find('li.close a').unbind('click').click(function() {
							cart.addClass('close', 700, function() {
								cart.hide().removeClass('close');

								$('#mighty-bar li.cart a').text(d.count);
							});

							return false;
						});
					},
					error: function() {
						alert(messages.general.error);
					}
				});

				return false;
			});
		}
	}
}

$(document).ready(function() {
    store.adjustRows();
    store.productImgs();
	store.cart();
});