//
// Jquery based cart, needs jquery and jquery cookie plugin
//

$.extend({
	sumvalues:    function(obj){
		var a = 0;
		$.each(obj, function(k){ a = a + parseInt(obj[k]); });
		return a;
	}
});


var g_cartCookieName = 'techSadYourCart';
var g_compCookieName = 'techSadYourComp';
var TOK_DELIM = ":";

function addToCart(id, price) {
	var result = parseCartCookieString(g_cartCookieName);
	var newprice = parseFloat(result[0]) + parseFloat(price);
	var items = result[1];
	items[id] = parseInt(items[id] || 0) + 1;
	s = createCartCookieString(items, newprice);
	$.cookie(g_cartCookieName, s, { path: '/' });
	cartUpdated(items, newprice);
}

function cartUpdated(items, price) {
	$('<div class="quick-alert">Товар добавлен в корзину!</div>')
			.insertAfter($('#cart-box')).fadeIn('slow').animate( {
				opacity : 1.0 }, 3000).fadeOut('slow', function() {
				$(this).remove();
			});
	$('#cart-qty').text($.sumvalues(items));
	$('#cart-total').text(price);
	$('#cart-box').show();
	$('#cart-msg').text('');
}

function parseCartCookieString(cookieName) {
	var c = $.cookie(cookieName);
	if(!c) return [0, {}];
	var tokens = c.split(TOK_DELIM);
	var items = {};
	for ( var i = 1; i < tokens.length; i++) {
		var t = tokens[i];
		var pair = t.split("-");
		items[pair[0]] = pair[1];
	}
	return [ tokens[0], items ];
}

function createCartCookieString(items, price) {
	var sb = "";
	sb += price;
	sb += TOK_DELIM;
	for( var k in items) {
		sb += k;
		sb += "-";
		sb += items[k];
		sb += TOK_DELIM;
	}
	// cut off final TOK_DELIM
	return sb.substr(0, sb.length - 1);
}

function emptyCart() {
	$.cookie(g_cartCookieName, null, { path: '/' });
	$('#cart-box').hide();
	$('#cart-msg').text('Ваша корзина пуста');
}


//
// Jquery based product comparison feature
//

// add or remove from comparison list
function addToCompare(cb, id) {
	var ids = parseCompCookieString(g_compCookieName);
	var newids = [];
	for(var i = 0; i < ids.length; i++) {
		if(ids[i] == id) {
			cb.checked = false;
			id = 0;
		}
		else {
			newids.push(ids[i]);
		}
	}
	if(id > 0) newids.push(id);
	s = createCompCookieString(newids);
	$.cookie(g_compCookieName, s, { path: '/' });
	compUpdated(id);
}

function compUpdated(id) {
	var str = "Товар добавлен к сравнению";
	if(id == 0) str = "Товар удален из сравнения";
	$('<div class="quick-alert">'+str+'</div>')
			.insertAfter($('#cart-box')).fadeIn('slow').animate( {
				opacity : 1.0 }, 3000).fadeOut('slow', function() {
				$(this).remove();
			});
}


function parseCompCookieString(cookieName) {
	var c = $.cookie(cookieName);
	if(!c) return [];
	var tokens = c.split(TOK_DELIM);
	return tokens;
}

function createCompCookieString(ids) {
	var sb = "";
	for(var i = 0; i < ids.length; i++) {
		sb += ids[i];
		sb += TOK_DELIM;
	}
	return sb.substr(0, sb.length - 1);
}


