$(document).ready(function() {

	// Shopping Cart interaction
	$('#cart-btn').click(function() {
		if ($('.l-minicart').hasClass('l-minicart-closed')) {
			$('.l-minicart')
				.addClass('l-minicart-toggling')
				.removeClass('l-minicart-closed');
			$('.h-minicart')
				.hide()
				.slideDown('fast', function() {
					$('.l-minicart').removeClass('l-minicart-toggling');
				});
		} else {
			$('.l-minicart')
				.addClass('l-minicart-toggling');

			$('.h-minicart').slideUp('fast', function() {
				$('.l-minicart').removeClass('l-minicart-toggling');
				$('.l-minicart').addClass('l-minicart-closed');
			});
		}
		return false;
	});


	// Bike Search dialog
	var $catSelect = $('#search-filter-category');
	var $venSelect = $('#search-filter-vendor');
	var optionsByType = new Array();

	$venSelect.change(function() {
		var vendor = $venSelect.val();
		if (optionsByType[ vendor ])
			return $catSelect.html( optionsByType[ vendor ] );

		$.ajax({
			url: '/ajax/vendor-tags/' + vendor,
			type: 'GET',
			dataType: 'json',
			success: function(data) {
				$catSelect.empty();
				for (i = 0; i < data.length; i++) {
					var opt = $("<option />").attr('value', data[i].id).html(data[i].name);
					$catSelect.append(opt);
				}
				optionsByType[ vendor ] = $catSelect.html();
			}
		});
	});
	
	
	// Items compare
	function handleCompareCheckboxes() {
		$('.compare :checkbox').removeAttr('name');
		$('.compare :checkbox').click(function() {
			var $this = $(this);
			var $p = $(this).parent('.compare')
			var val = $(this).val();

			$.ajax({
				url: '/ajax/toggle-compare/' + val,
				type: 'GET',
				dataType: 'json',
				beforeSend: function() {
					$p.addClass('ajax');
				},
				success: function(data) {
					var found = false;
					for (var i = 0; !found && i < data.length; i++)
						if (data[i] == val)
							found = true;
					
					if (found)
						$this.attr('checked', 'checked');
					else
						$this.removeAttr('checked');

					$p.removeClass('ajax');
				}
			});
		});
	}
	

	// Columns alignment
	function updateColumns($cols) {
		var __oldColumnsCount = 0;
	
	
		function getColumnWidth(cols) {
			if (cols < 3)
				cols = 3;
			return Math.floor( ($cols.width() - cols * 10) / cols );
		}

		// Calculating columns count; 230 is an rel-image width + 10px
		var cnt = Math.floor($cols.width() / 230);
		cnt = cnt > 0 ? cnt : 1;
		var len = $cols.find(".item").length;
		if (cnt > len)
			cnt = len;

		var width = getColumnWidth(cnt);
		if (width < 220) {
			width = 220;
			if (cnt > 1)
				cnt--;
		}


		if (__oldColumnsCount == cnt) {
			$cols.find('.item').width( width );
			return;
		}
		__oldColumnsCount = cnt;		

		// Putting list of items to UL's
		var uls = new Array();
		var ul = false;
		var i = 0;
		$cols.find(".item").each(function() {
			if (i % cnt == 0) {
				if (ul)
					uls[uls.length] = ul;
				ul = $("<ul />");
			}

			ul.append( 
				new $("<li />")
				.addClass("item")
				.html($(this).html())
			);
			i++;
		});

		uls[uls.length] = ul;

		// Replacing items list with new HTML
		$cols.empty();
		for (var i = 0; i < uls.length; i++)
			$cols.append(uls[i]);

		$cols.find(".item").width(width);
		handleCompareCheckboxes();
	}

	var $allCols = $('[id=cols]');
	if ($allCols.length) {
		var _updateColumns = function() {
			$allCols.each(function() {
				updateColumns($(this));
			});
		}

		_updateColumns();
		$(window).resize(_updateColumns);
	}
	
	if (document.location.href.match(/#minicart/)) {
		var $cart = $('.l-minicart');
		$cart.hide();
		$cart.fadeIn('normal', function() {
			//$cart.fadeOut('normal', function() {
			//	$cart.fadeIn('normal');
			//});
		});
	}
});