/***********************************
 *	Shoppingcart handler
 ***********************************/
 
/**
 *	Shop overlay
 */
function toggleShopOverlay(visible, highlightCart){
	var overlay 	= $('shopoverlay');
	var background	= overlay.getElement('div.background');
	
	// Fix background height
	background.setStyle('height', window.getScrollHeight());
	
	// Start transition
	var overlayFx	= new Fx.Style(background, 'opacity', {duration: 1000, transition: Fx.Transitions.quintOut});
	if(visible){;
		overlayFx.start(0,.6);
		overlay.setStyle('visibility', 'visible');
	}else{	
		overlayFx.start(.6,0)
		overlay.setStyle('visibility', 'hidden');
	}
};

/**
 *	Add-to-shoppingcart handler
 */
window.addEvent('domready', function(){	

	// Add item to shoppingcart in productdetails
	$$('.addToCart').each(function(addButton){
		
		addButton.onclick = function(){
			
			// Toggle shop overlay
			var form		= addButton.getParent();
			var overlay		= $('shopoverlay');
			var name		= form.getElement('input[name=productName]').value;
			var image		= form.getElement('input[name=productImage]').value;
			var isExrent	= form.getElement('input[name=isExrent]').value;
			
			overlay.getElement('h2').innerHTML	= name;
			overlay.getElement('img').src 		= image;
			toggleShopOverlay(true);
			
			// Perform request
			var id			= form.getElement('input[name=productId]').value;
			new Json.Remote('/shoppingcart/jsonplus/' + id + '/1/' + isExrent, {
				onComplete: function(response){
					if(response.result){
					
						var quantityEl	= $('shoppingcart_count');
						var priceEl		= $('shoppingcart_price');
					
						// Update itemcount
						quantityEl.innerHTML = parseInt(quantityEl.innerHTML) + 1;
						
						// Update price
						currentPrice	= parseFloat(priceEl.innerHTML.replace(',', '.'));
						newPrice		= currentPrice + parseFloat(response.result.price || 0);
						priceEl.innerHTML = String(newPrice.toFixed(2)).replace('.', ',');
						
						// Highlight cart
						$E('div.cart_info').addClass('full');
						
					}else{
						alert("Er is een fout opgetreden. Gelieve later nog eens te proberen");
					}
				}.bind(this)
			}).send();
			
			location = '#header';
			return false;
		}
		
	});
	
	// Add/Remove item to shoppingcart
	var inRequest = false;
	$$('td.quantity a').each(function(button){
		button.onclick = function(){
			
			// Disable click when still requesting (not so A-jax after all :p)
			if(inRequest){
				return;	
			}else{
				inRequest = true;	
				$('totalPrice').addClass('loading');
			}
			
			// Collect data + fields					
			var productId				= button.rel.split('_')[0];
			var isExrent				= button.rel.split('_')[1];
			var productContainerEl		= $('product_' + productId + '_' + isExrent);
			var quantityEl				= productContainerEl.getElement('input[name=quantity]');
			var priceEl					= productContainerEl.getElement('td.total span');
			
			var totalEl					= $('totalPrice');
			
			if(button.hasClass('plus')){
				var type 		= 'plus';
				var quantity	= +1;
			}else{
				if(parseInt(quantityEl.value) == 0){
					return false;
				}else{
					var type 		= 'min';
					var quantity	= -1;
				}
			}
			
			new Json.Remote('/shoppingcart/json' + type + '/' + productId + '/1/' + isExrent, {
				onComplete: function(response){
					if(response.result){	
						// Update quantity
						quantityEl.value = parseInt(quantityEl.value) + quantity;
						
						// Update total product price
						currentPrice		= parseFloat(priceEl.innerHTML.replace(',', '.'));
						newPrice			= currentPrice + (parseFloat(response.result.price) * quantity);
						priceEl.innerHTML 	= String(newPrice.toFixed(2)).replace('.', ',');
						
						// Update total shoppingcart price
						newTotalPrice		= parseFloat(response.totalPrice);
						totalEl.innerHTML 	= String(newTotalPrice.toFixed(2)).replace('.', ',');
					}else{
						alert("Er is een fout opgetreden. Gelieve later nog eens te proberen");
					}
					inRequest = false;
					$('totalPrice').removeClass('loading');
				}.bind(this)
			}).send({});
			
			return false;
		}
	});
	
	// Remove row from shoppingcart
	$$('td.delete a').each(function(button){
	
		// Collect data + fields
		var productId				= button.rel.split('_')[0];
		var isExrent				= button.rel.split('_')[1];
		var productContainerEl		= $('product_' + productId + '_' + isExrent);
		var totalEl					= $('totalPrice');
		
		// Remove row
		button.onclick = function(){
			new Json.Remote('/shoppingcart/jsonremove/' + productId + '/' + isExrent, {
				onComplete: function(response){
					if(response.refresh){
						location = location;
						return;
					}else if(response.result){
						// Update total shoppingcart price
						totalEl.innerHTML		= String(parseFloat(response.totalPrice).toFixed(2)).replace('.', ',');
						
						// Remove product container in a fancy way
						flashFx = new Fx.Styles(productContainerEl, {
							'duration': 300,
							'onComplete': function(){
								productContainerEl.remove();
							}.bind(this)
						}).start({'opacity':[1,0]});
					}else{
						alert("Er is een fout opgetreden. Gelieve later nog eens te proberen");
					}
				}.bind(this)
			}).send({});
			
			return false;
		}
	});
	
	// Change delivery country (= method)
	var deliveryMethod = $E('select[name=deliveryMethod]');
	if(deliveryMethod){
		deliveryMethod.addEvent('change', function(){
			location = '/shoppingcart/delivery/' + deliveryMethod.value;
		});
	}

});
