// when the page loads, transform all product images into draggable items

// and allow them to be dropped on the cart

window.onload = function() {

	// retrieve all product images

	var draggables = $$("div.productImg");

	// make them all draggable

	draggables.each(function(currentDraggable) { 

		new Draggable(currentDraggable, { revert: true, ghosting: true });												 

	});

	

	// define the cart as a droppable

	Droppables.add("cart", {

		hoverclass: "cartOnHover",

		onDrop: function(element) {

			// each product image has an id like 'product_x', where 'x' is the database id,

			// so we extract it next

			var itemId = element.id.split("_");

			addToCart(itemId[1]);

		}

	});

	

	// bind a progress indicator to all Ajax calls

	startAjax();

}



function startAjax()

{

	Ajax.Responders.register({

	  // when an Ajax request is started, show the indicator

		onCreate: function() {

		if (Ajax.activeRequestCount > 0)

		  Element.show($("indicator"));

	  },

		// when an Ajax request is finished, hide the indicator

		onComplete: function() {

		if (Ajax.activeRequestCount == 0)

		  Element.hide($("indicator"));

	  }

	});

}



// add item to cart

function addToCart(id)

{

	new Ajax.Request("server.php?action=addToCart", {

		parameters: "id=" + id,

		onSuccess: function(resp) {

			var cartUpdate = eval('(' + resp.responseText + ')');

			var isNew = cartUpdate['cartItemDetails'][0].isNew;

			// if this item is new in the cart, inject it inside, otherwise update the qty and subtotal

			if (isNew == 1)

			{

				var newItem = '<div id="cartItem_' + id + '" style="display:none" class="textcart">';

				//newItem += '<div class="cell1" id="cartItemQty_' + id + '" valign="top">1</div>';

				newItem += '<span class="x"><a href="server.php?action=removeFromCart&id=' + id + '" onclick="return removeFromCart(' + id + ')">x</a></span>';

				newItem += ' <span>' + cartUpdate['cartItemDetails'][0].title + '</span>';

				newItem += '<span id="cartItemPrice_' + id + '"> (' + cartUpdate['cartItemDetails'][0].newPrice + ' RON)</span>';

				

				newItem += '</div>';

				

				if ($("cartIsEmpty"))

					Element.hide($("cartIsEmpty"));



				new Insertion.Bottom("cartItems", newItem);	

				

				Effect.Appear("cartItem_" + id, { duration: 0.5 });

				Element.update($("cartTotalAmount"), "<strong>Total: " + cartUpdate['cartItemDetails'][0].total + " RON</strong> ");

				new Effect.Highlight("cartTotalAmount", {startcolor:'#dcd1de', endcolor:'#ffffff', restorecolor:''});
			
				
				
			}

			// so, the item already existed in the cart, therefore update its quantity and subtotal

			else

			{

				//Element.update($("cartItemQty_" + id), cartUpdate['cartItemDetails'][0].newQty);

				//Element.update($("cartItemPrice_" + id), cartUpdate['cartItemDetails'][0].newPrice + " RON");

				//Element.update($("cartTotalAmount"), "<strong>Total: " + cartUpdate['cartItemDetails'][0].total + " RON</strong>");

				new Effect.Highlight("cartTotalAmount", {startcolor:'#dcd1de', endcolor:'#ffffff', restorecolor:''});

				new Effect.Highlight("cartItemPrice_" + id, {startcolor:'#dcd1de', endcolor:'#ffffff', restorecolor:'#dcd1de'});

				//new Effect.Highlight("cartItemQty_" + id, {startcolor:'#dcd1de', endcolor:'#ffffff', restorecolor:'#dcd1de'});
		
				//new Effect.Move("product"+id, {x: 80, y: -80, mode: 'absolute'});
			
				
			}

		}

	});

	return false;

}



// remove an item from the cart

function removeFromCart(id)

{

	Effect.Fade("cartItem_" + id);

	new Ajax.Request("server.php?action=removeFromCart", {

		parameters: "id=" + id,

		onSuccess: function(resp) {

			var total = resp.responseText;

			if (total == 0)

			{

				// update the cart's total amount and contents

				Element.update($("cartItems"), '<div id="cartIsEmpty" class="textcart">Niciun produs in cos.</div>');

				Element.update($("cartTotalAmount"), "<strong>Total: 0.00 RON</strong>");

				
				
			}

			else

			{

				// update the cart's total amount

				Element.update($("cartTotalAmount"), "<strong>Total: " + total + " RON</strong>");

			}

			new Effect.Highlight("cartTotalAmount", {startcolor:'#dcd1de', endcolor:'#ffffff', restorecolor:''});
			
		}

	});

	return false;

}



// empty the cart

function emptyCart()

{

	new Ajax.Request("server.php?action=emptyCart", {

		onSuccess: function(resp) {

			if (resp.responseText == 1)

			{

				// update the cart's total amount and contents

				Element.update($("cartItems"), '<div id="cartIsEmpty" class="textcart">Niciun produs in cos.</div>');

				Element.update($("cartTotalAmount"), "<strong>Total: 0.00 RON</strong>");

				new Effect.Highlight("cartIsEmpty", {startcolor:'#dcd1de', endcolor:'#ffffff', restorecolor:'#dcd1de'});

				new Effect.Highlight("cartTotalAmount", {startcolor:'#dcd1de', endcolor:'#ffffff', restorecolor:''});

			}

		}

	});

	return false;

}


Element.Methods.moveTo = function(element,x,y) {
    new Effect.Move(element, {x: x, y: y, mode: 'relative',transition: Effect.Transitions.reverse});
	return element;
}
Element.Methods.pulsate = function(element) {
  new Effect.Pulsate(element);
  return element;
}

Element.addMethods();
