Event.observe(window, 'load', init_cart, false);

var cart;

function init_cart()
{
	var links = document.getElementsByClassName("addtocart");
		
	for(var i = 0; i < links.length; i++)
	{
		var link = links[i];
		Event.observe(link, 'click', AddToCart, false);
		for(var j = 0; j < buyables.length; j++)
		{
			var item = buyables[j];
			
			if(item.id == link.id.substring(4))
			{
				link.cartItem = item;
				link.href = "#";
			}
		}
	}
	
	cart = "";
	var c = 1;
	var key;
	for(var i = 0; c != null;i++)
	{
		if(i < 10)
			key = "CART0" + i;
		else
			key = "CART" + i;
		
		c = readCookie(key);
		if(c != null)
			cart += unEscapeEx(c);
	}
	if(cart != "")
		cart = eval(cart);
}

function GetCartItem(type, id)
{
	for(var i = 0; i < cart.length; i++)
	{
		var it = cart[i];
		if(it.id == id && it.type == type)
			return it;
	}
	return null;
}

function GetCartItemHTML(it)
{
	return "<a href='#' title='Eyða' onclick=\"return RemoveFromCart('" + it.type + "', '" + it.id + "');\">" + it.count + "</a> x <a href='" + GetItemLink(it.type, it.id) + "'>" + it.name + "</a>";
}

function RemoveFromCart(type, id)
{
	for(var i = 0; i < cart.length; i++)
	{
		var it = cart[i];
		if(it.id == id && it.type == type)
		{
			it.count--;
			element = $('CartItem' + it.id);
			if(it.count <= 0)
			{
				cart.splice(i,1);
				if(cart.length)
					Element.remove(element);
			}
			else
				element.innerHTML = GetCartItemHTML(it);
			break;
			
		}
	}

	
	
	SaveCart();
	if(cart.length == 0)
	{
		RemoveCart();
	}
	else
		DisplayTotal();
	
	return false;
}

function AddToCart(event)
{
	var item = Event.element(event).cartItem;
	
	var cartitems = $('CartItems');
	var createdCart = cartitems == null;
	if(createdCart)
	{
		cartitems = CreateCart();
	}
	
	var cartitem = GetCartItem(item.type, item.id);
	
	if(cartitem == null)
	{
		item = {id: item.id, type: item.type, name: item.name, price: item.price, count: 1};
		cart[cart.length] = item;
		new Insertion.Bottom(cartitems, "<dt id='CartItem" + item.id + "'></dt>");
	}
	else
	{
		cartitem.count += 1;
		item = cartitem;
	}
	
	element = $('CartItem' + item.id);
	element.innerHTML = GetCartItemHTML(item);
	
	DisplayTotal();
	
	SaveCart();
	
	if(createdCart)
		new Effect.BlindDown('cart');
	else
		new Effect.Highlight('CartItem' + item.id, {startcolor: '#000000', endcolor: '#3e515c', restorecolor: 'transparent'});
		//new Effect.Pulsate('CartItem' + item.id, {duration: 3, from: 0, to: 0.2, afterFinishInternal: function(effect) { Element.setStyle(effect.element, {opacity: 1}); }});
	
	
	Event.stop(event);

	return false;
}

function GetItemLink(type, id)
{
	switch(type)
	{
		case "prod":
			return "?p=2&id=" + id;
	}
	return "";
}

function DisplayTotal()
{
	var total = GetTotal();
	var displayer = $('CartPrice');
	displayer.innerHTML = "kr. " + total;
}

function GetTotal()
{
	var total = 0;
	for(var i = 0; i < cart.length; i++)
	{
		total += cart[i].price * cart[i].count;
	}
	
	total = total.toString();
	
	for(var i = total.length; i > 0;)
	{
		i -= 3;
		if(i > 0)
			total = total.substring(0,i) + "." + total.substring(i);
	}
	
	return total;
}

function CreateCart()
{
	var area = $('CartArea');
	area.innerHTML = "<div id='cart' style='display: none;' class='box darkbox'> \
						<h1 class='menu_title cart master-image'><span>Karfan þín</span></h1>\
						<dl id='CartItems'>\
						</dl>\
						<p class='price_title'>Upphæð:</p>\
						<p id='CartPrice' class='price'>kr. </p>\
						<ul id='cart_links'>\
							<li><a href='?p=3' id='ViewCart' class='master-image'><span>Skoða körfu</span></a></li>\
							<li><a href='?p=4' id='GoCheckout' class='master-image'><span>Fara á kassa</span></a></li>\
						</ul>\
					</div>";
	cart = new Array();
	
	return $('CartItems');
}

function RemoveCart()
{
	var area = $('cart');
	new Effect.BlindUp(area, {afterFinish: function(effect) { Element.remove('cart')} } );
}

function SaveCart()
{
	var c = JSON.stringify(cart);
	c = escapeEx(c);
	
	
	for(var i = 0; ; i++)
	{
		var key = "CART";
		if(i < 10)
			key += "0" + i;
		else
			key += i;
		if(i * 4000 < c.length)
			createCookie(key, c.substring(i*4000, (i+1)*4000), 30);
		else
		{
			if(readCookie(key) != null)
				createCookie(key, "", -1);
			else
				return;
		}
	}
}

function createCookie(name,value,days)
{
	var expires = "";
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		expires = "; expires="+date.toGMTString();
	}
	else
		expires = "";
	var cookie_content = name+"="+escape(value)+expires+"; path=/"; 
	document.cookie = cookie_content;
	cookie_content;
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name)
{
	createCookie(name,"",-1);
}

function escapeEx(str)
{
	str = "" + str;
	escape(str);
	while(true)
	{
		var i = str.indexOf('+');
		if(i < 0)
			break;
		str = str.substring(0,i) + '%2B' + str.substring(i + 1, str.length);
	}
	return str;
}
function unEscapeEx (str)
{
	str = "" + str;
	while (true)
	{
		var i = str . indexOf ('+');
		if (i < 0)
			break;
		str = str . substring (0, i) + '%20' +
			str . substring (i + 1, str . length);
	}
	return unescape (str);
}