var Dom = YAHOO.util.Dom;
var Event = YAHOO.util.Event;
var Connect = YAHOO.util.Connect;

var cart_is_adding = false;
var cart_is_removing = false;
var cart_added_info = [];

var setTextContent = function(node, text) {
	if (document.body.textContent) {
		node.textContent = text;
		return;
	}
	
	node.innerText = text;
}

var cart_init = function() {
	var onRecv = {
		success: function(o) {
			var prods = eval("(" + o.responseText+ ")");
			
			for (var x in prods) {
				cart_add_to_list(prods[x]);
			}
		}
	};
	
	cart_update_sum();
	Connect.asyncRequest("post", "CartProducts.php", onRecv);
};

var cart_add = function(id, listing_id) {
	listing_id = listing_id ? listing_id : id;
	var qty = Dom.get("productquantity_" + listing_id).value;

	onAdd = {
		success: function(o) {
			var prod = eval("(" + o.responseText + ")");
		
			var orig_img = Dom.get("productimage_" + listing_id);
			var img = document.createElement("img");
			document.body.appendChild(img);
			
			img.src = orig_img.src;
			img.width = orig_img.width;
			img.height = orig_img.height;
			Dom.setStyle(img, "z-index", 10000);
			Dom.setStyle(img, "position", "fixed");
			
			var adjPos = Dom.getXY(orig_img);
			adjPos[0] -= Dom.getDocumentScrollLeft();
			adjPos[1] -= Dom.getDocumentScrollTop();
			Dom.setXY(img, adjPos);
						
			var prodlist = Dom.get("cartproducts");
			var dest = null;
						
			if (prodlist.childNodes.length) {
				if (cart_added_info[prod.id] && cart_added_info[prod.id].qty) {
					dest = Dom.getXY(cart_added_info[prod.id].pi);
				} else {					
					var lc = prodlist.lastChild;
					var lcr = Dom.getRegion(prodlist.firstChild);							
					dest = Dom.getXY(lc);
					dest[0] += (lcr.right - lcr.left);
					dest[1] += (lcr.top - lcr.bottom) + 80;
				}
			} else {
				dest = Dom.getXY(prodlist);
				dest[1] += 10;
			}
			
			var dur = 0.5;
			
			var moveAnim = new YAHOO.util.Motion(img, {
				points: { to: dest }
			}, dur, YAHOO.util.Easing.easeOut); 
			
			var etcAnim = new YAHOO.util.Anim(img, {
				height: { to: 75 },
				width: { to: 75 }//,
//				opacity: { to: 0.5 }
			}, dur);
			
			moveAnim.onComplete.subscribe(function() {
				for (var i = 0; i < qty; i++) {
					cart_add_to_list(prod);
				}
				img.parentNode.removeChild(img);
				cart_update_sum();
				cart_is_adding = false;
			});
			moveAnim.animate();	
			etcAnim.animate();	
		},
		
		failure: function(o) {
			alert("lol");
		}
	};
	
	if (!cart_is_adding) {
		Connect.asyncRequest("post", "CartAdd.php", onAdd, "id=" + id + "&qty=" + qty);
		cart_is_adding = true;
	}
};

var cart_add_to_list = function(prod) {
	var pl = Dom.get("cartproducts");
	
	if (cart_added_info[prod.id] && cart_added_info[prod.id].qty) {	
		var info = cart_added_info[prod.id];
		info.qty += 1;
		info.qs.innerHTML = info.qty; //info.qty + " × " + info.name;
	} else {
		var li = document.createElement("li");
		pl.appendChild(li);
		
		/*
		var ps = document.createElement("span");
		Dom.addClass(ps, "cartlistprice");
		ps.innerHTML = prod.price;
		li.appendChild(ps);
		
		var nt = document.createTextNode(prod.name);
		li.appendChild(nt);*/
		
		var qs = document.createElement("span");
		Dom.addClass(qs, "quantity");
		qs.innerHTML = "1";
		li.appendChild(qs);
				
		var pi = document.createElement("img");
		pi.src = "../pd/getproductimage.php?pid=" + prod.id + "&size=charlymedium";
		pi.width = 75;
		pi.height = 75;
		li.appendChild(pi);
		
		var rb = document.createElement("a");
		li.appendChild(rb);
		rb.innerHTML = " [x]";
		rb.href = "#";
		rb.onclick = function() { return function() { cart_remove(prod.id); return false; }; }();
		
		cart_added_info[prod.id] = {
			qty: 1,
			name: prod.name,
			li: li,
			qs: qs,
			pi: pi
		}
	}
};

var cart_remove = function(id) {
	var onRemove = {
		success: function(o) {
			var info = cart_added_info[id];
			if (info.qty > 0) info.qty -= 1;
//			info.title.nodeValue = (info.qty > 1 ? info.qty + " × " : "") + info.name;
			info.qs.innerHTML = info.qty;

			if (info.qty == 0) {
//				info.li.parentNode.removeChild(info.li);

				var foa = new YAHOO.util.Anim(info.li, {
					opacity: { to: 0 }
				}, 0.25, YAHOO.util.Easing.easeOut);
				foa.onComplete.subscribe(function() { info.li.parentNode.removeChild(info.li); });
				foa.animate();
			}

			cart_update_sum();
			cart_is_removing = false;
		}
	};

	if (!cart_is_removing) {
		Connect.asyncRequest("post", "CartRemove.php", onRemove, "id=" + id);
		cart_is_removing = true;
	}
};

var cart_update_sum = function() {
	var onRecv = {
		success: function(o) {		
			var info = eval("(" + o.responseText + ")");
			var sums = Dom.getElementsByClassName("cartsum");
			for (var x in sums) {
				sums[x].innerHTML = info.formatted;
			}

			var coba = new YAHOO.util.Anim("to_checkout", {
					opacity: { to: info.decimal ? 1 : 0 }
			}, 0.25, YAHOO.util.Easing.easeOut);
			coba.animate(); 
			
			/*
			var tcs = Dom.get("to_checkout");
			if (tcs.childNodes[0]) {
				tcs.removeChild(tcs.childNodes[0]);
			}
			
			if (info.decimal < 12) {
				for (var x in cart_added_info) {
					if (cart_added_info[x].qty) {
						tcs.innerHTML = "Minimitilaus 12€";
						break;
					}
				}
			} else {
				var a = document.createElement("a");
				a.href = "Checkout1.php";
				a.innerHTML = "Checkout";
				tcs.appendChild(a);
			}*/
		}
	};
	
	Connect.asyncRequest("get", "CartSum.php", onRecv);
};

Event.onDOMReady(function() {
	cart_init();
});

