$(document).ready(function() {
	if (!$('.pagination').length) return;
/*	$('.more-res').click(function(e) {
		var page = parseInt($('.pager.active').text());
		
		$('.pager').removeClass('active').eq(page).addClass('active');
		$('.products.scrollable .prod-page').animate({marginTop: (-375) * page});		
		e.preventDefault();
	}); */
	
	function getCurrentPage() {
		return parseInt(get_filter('page')) / 9 + 1;
	}

	
	function get_filter(f) {
		var parts = window.location.toString().substr(7).split('/');
		parts.shift(); parts.shift();
		
		var kv = {};
		for (var i = 0; i < parts.length; i+= 2) {
			kv[parts[i]] = parts[i+1];
		}
		return kv[f];
	}
	
	function add_filter(n, v, nc) {
		var parts = window.location.toString().substr(7).split('/');
		var domain = parts.shift();
		var controller = parts.shift();

		// transform parts into a dict
		var kv = {};
		for (var i = 0; i < parts.length; i += 2) {
			kv[parts[i]] = parts[i+1];
		}

		// set the new value
		kv[n] = v;

		// transform back
		var new_sub = "";

		for (var k in kv) {
			if (kv[k])
				new_sub += "/" + k + "/" + kv[k];
		}
		if (nc) {
			return new_sub;
		}
		window.location = "http://" + domain + "/" + controller + new_sub;
	}
	
	function getProductPath() {
		var re = /\/products(.*?)#?$/;
		return re.exec(document.location)[1];
	}
	
	var end_page = -1;
	
	function fetchPage(page, prepend) {
		function addPage(data) {
			data = $(data);
			data.find('.prod-holder').hover(function() {
				$(this).addClass('hover');
			}, function() {
				$(this).removeClass('hover');
			});
			if (data.find('.END-PAGES').length) {
				end_page = page;
			}
			if (prepend) {
				data.css({marginTop: (-375) * (page)});
				$('.products.scrollable').prepend(data);
			}
			else
				$('.products.scrollable').append(data);
			$('.products.scrollable .prod-page').animate({marginTop: (-375) * (page - 1)});
			$('.pagination .pager').text(page);
			if (page - 1) $('.pagination .prev-res').text(page - 1);
			if (page == end_page) {
				$('.pagination .more-res').fadeOut();
			}
			else {
				$('.pagination .more-res').text(page + 1);
			}
		}
		var url = (offers ? '/offers' : '/products') + '_page/' + add_filter('page', ((page - 1) * 9), true);
		$.get(url, {}, addPage, 'html');
	}
	

	var page = getCurrentPage() || 1;
	var last_page = page;
	var reached_pages = [page];
	if (page == 1) {
		$('.pagination .prev-res').css({display: 'block', 'opacity': '0'});
	}
	else {
		$('.pagination .prev-res').text(page - 1);
	}
	$('.pagination .pager').text(page);
	$('.pagination .pager').get(0).href = (offers ? '/offers' : '/products') + add_filter('page', (page - 1) * 9, true);
	
	if ($('.END-PAGES').length) {
		$('.pagination .more-res').css('display', 'none');
		end_page = page;
	}
	else {
		$('.pagination .more-res').text(page + 1);
	}
	
	$('.products.scrollable .prod-page').css({
		marginTop: (-375) * (page - 1),
		top: (375) * (page - 1)
	});
	
	function getPage(page) {
		page = parseInt(page);
		$('.pagination .pager').get(0).href = (offers ? '/offers' : '/products') + add_filter('page', (page - 1) * 9, true);
		if (page == 1) {
			$('.pagination .prev-res').fadeOut(function() { $(this).css({'display': 'block', 'opacity': '0'}); });
		}
		else if (page == 2 && page > last_page) {
			$('.pagination .prev-res').css({'display': 'none', 'opacity': 1}).fadeIn(400);
		}
		if ($.inArray(page, reached_pages) == -1) {
			reached_pages.push(page);
			fetchPage(page, last_page > page);
			last_page = page;
			$('.pagination .more-res').fadeIn();
		}
		else {
			$('.pagination .pager').text(page);
			page--;
			$('.products.scrollable .prod-page').animate({marginTop: (-375) * page});
			if (page + 1 == end_page) {
				$('.pagination .more-res').fadeOut();
			}
			else {
				$('.pagination .more-res').text(page + 2);
			}
			if (page) $('.pagination .prev-res').text(page);
			if ((page + 1) < last_page)
				$('.pagination .more-res').fadeIn();
			last_page = page + 1;
		}
	}

	$('.prev-res').click(function(e) {
		if (page > 1) {
			page--;
		
			getPage(page);
		}
		
		e.preventDefault();
	});
	
	$('.more-res').click(function(e) {
		page++;
		
		getPage(page);
		
		e.preventDefault();
	});
	
	$('#sort').change(function() {
		add_filter('sort', $(this).val());
	});
	$('#perpage').change(function() {
		add_filter('perpage', $(this).val());
	})
	
	$('.prod-holder').live('click', function() {
		document.location = $(this).find('a').get(0).href;
	});
	
	$('.prod-holder').hover(function() {
		$(this).addClass('hover');
	}, function() {
		$(this).removeClass('hover');
	});
});