SC.ProductComparison = function () {
	return this;
}
SC.ProductComparison.doAjax = function (action, productId)
{
	$.get('module.php?ModuleName=com.summercart.productcomparison&load=table&action=' + action + '&ProductID=' + productId,
		'',
		SC.ProductComparison.ajaxCallback,
		'json'
	);
}
SC.ProductComparison.ajaxCallback = function (data)
{
	if (data['error'] == '') {
		SC.ProductComparison.currentCompareList = data['compareList'];
		
		$('.comparable .compareAddButton').show();
		$('.comparable .compareRemoveButton').hide();
		$('.comparable .compareAddButton input[type=checkbox]').attr('checked', false);
		$('.comparable .compareRemoveButton input[type=checkbox]').attr('checked', false);
		
		for (key in SC.ProductComparison.currentCompareList) {
			productId = SC.ProductComparison.currentCompareList[key];
			$('.compareAddButton.product' + productId).hide();
			$('.compareRemoveButton.product' + productId).show();
			$('.compareAddButton.product' + productId + ' input[type=checkbox]').attr('checked', 'checked');
			$('.compareRemoveButton.product' + productId + ' input[type=checkbox]').attr('checked', 'checked');
		}
		
		$('#ProductComparisonBox').html(data['box']);
		$('.ProductComparisonDetailsBox').html(data['product']);
		
		if (data['productAction'] == 'add') {
			SC.ProductComparison.animateAdd(data['productId']);
		}
	} else {
		alert(data['error']);
	}
}
SC.ProductComparison.add = function (productId)
{
	SC.ProductComparison.doAjax('dmAjaxAddProduct', productId);
	return false;
}
SC.ProductComparison.remove = function (productId)
{
	SC.ProductComparison.doAjax('dmAjaxRemoveProduct', productId);
	return false;
}
SC.ProductComparison.animateAdd = function (productId)
{
	var source = SC.ProductComparison.getAnimateSource();
	if (source.length != 1) {
		return;
	}
	var sourcePosition = source.position();
	
	var target = SC.ProductComparison.getAnimateTarget();
	if (target.length != 1) {
		return;
	}
	var targetPosition = target.position();
	
	if ($('#comparisonTransfer').length == 0) {
		$('body').append('<div id="comparisonTransfer"></div>');
	}
	
	$('#comparisonTransfer').css({
		position: 'absolute',
		top: sourcePosition.top + 'px',
		left: sourcePosition.left + 'px',
		width: source.width() + 'px',
		height: source.height() + 'px',
		border: '2px solid'
	});
	
	var duration = Math.abs(sourcePosition.top - targetPosition.top);
	duration = duration < 300 ? 300 : duration;
	
	$('#comparisonTransfer').animate({
		top: targetPosition.top + 'px',
		left: targetPosition.left + 'px',
		width: target.width() + 'px',
		height: target.height() + 'px'
	}, duration, function () {$(this).hide();});		
}
