var shoppingcart;
/**************************************
 *	Create Shoppingcart
 **************************************/
window.addEvent('domready', function(){
	/*
	 * If alternate text is set we use it as default value
	 */
	$$('#searchform input').each(function(el){
		el.addEvents({
			'click': function(){
				if(el.get('value') == el.get('alt')){
					el.set('value', '');
				}
			},
			'blur': function(){
				el.removeClass('focus');
				if(el.get('value') == '' && el.get('alt')){
					el.set('value', el.get('alt'));
				}
			},
			'focus': function(){
				if(el.get('value') == el.get('alt')){
					el.set('value', '');
				}
			}
		});
	});
									 
									 
	shoppingcart = new ShoppingCart({
		cart : $('shoppingcart')
	});
	
	//disable buttons
	$$('a.disabled').each(function(link, index){
		link.addEvent('click', function(e){
			new Event(e).stop();
		});	
	})	
	
	//add amount buttons
	$$('a.add').each(function(link, index){
		link.addEvent('click', function(e){
			new Event(e).stop();			
			shoppingcart.addAmount(link.rel);
		});	
	})
	
	//delete amount buttons
	$$('a.del').each(function(link, index){
		link.addEvent('click', function(e){
			new Event(e).stop();
			shoppingcart.delAmount(link.rel);
		});	
	})
	
	//delete shoppingcart buttons
	$$('a.prod_del').each(function(link, index){
		link.addEvent('click', function(e){
			new Event(e).stop();
			shoppingcart.deleteFromShoppingcart(link.rel);
		});	
	})
	
	//buy item button
	$$('a.buy').each(function(link, index){
		link.addEvent('click', function(e){
			new Event(e).stop();			
			shoppingcart.addToShoppingcart(link.rel);
		});	
	})
	
	//force input fields to numeric
	$(document.body).getElements('input[name^=amount_]').each(function(input, index){
		input.addEvent('keypress', function(e){
			var val = input.value;

			if (val.length < 2) {
				switch (e.code) {
					case 224:
						input.value += '0';
						break;
					case 38:
						input.value += '1';
						break;
					case 233:
						input.value += '2';
						break;
					case 34:
						input.value += '3';
						break;
					case 39:
						input.value += '4';
						break;
					case 40:
						input.value += '5';
						break;
					case 167:
						input.value += '6';
						break;
					case 232:
						input.value += '7';
						break;
					case 33:
						input.value += '8';
						break;
					case 231:
						input.value += '9';
						break;
				}
			}
			
			if (e.code == 8 || (e.code >= 45 && e.code <= 57)) {
				//numeric 
			}
			else {				
				new Event(e).stop();
				e.preventDefault();			
			}

		});
	})
});


/**************************************
 *	Shoppingcart
 **************************************/
ShoppingCart = new Class({
	
	options:	{
		cart:	false,
		items:	false				
	},
		
	
	/**
	 *	Initialize
	 */
	initialize: function(options){
		
		// Fetch options
		this.setOptions(options);			
		
		if(!this.options.cart) return false;					
	},
	
	addAmount : function(rel){
		var input = $(document.body).getElement('input[name='+rel+']');
		var value = parseInt(input.value);
		if ($type(value)  != 'number')value = 0;
		this._setAmount(input, value+1);
	},
	
	delAmount : function(rel){
		var input = $(document.body).getElement('input[name='+rel+']');
		var value = parseInt(input.value);
		if ($type(value)  != 'number')value = 0;
		this._setAmount(input, value-1);
	},	
	
	addToShoppingcart : function(rel)
	{	
		var id = rel.replace('buy_', '');	
		
		var amount = 1;
		
		var self = this;		
		var jsonRequestAdd = new Request.JSON({
			url: '/shoppingcart/add', 
			method: 'post',
			data: {
				'product_id': id,	
				'amount' : amount,			
				'incart' : false
			},
			onSuccess: function(response){
				
				if (response.result) {
					var total = response.data.shoppingcart_price.toString().replace('.', ',');	
					
					if($('shoppingcart_count'))
						$('shoppingcart_count').innerHTML = response.data.shoppingcart_count;
	
					if($('shoppingcart_price'))	
						$('shoppingcart_price').innerHTML = total;						
					
					self.setOverlay(response.data);
				}		   
			}
		}).send();

	},
	
	updateShoppingcart : function(rel)
	{
		var input = $(document.body).getElement('input[name='+rel+']');
		
		var id = rel.replace('amount_', '');		
		
		var amount = parseInt(input.value);
		if ($type(amount)  != 'number')amount = 0;
		
		if(amount == 0) return false;
		
		if($('subtotal'))
			$('subtotal').innerHTML = '<img src="/design/images/layout/loader-green.gif" alt="" style="vertical-align:middle" />';
			
		if($('discount'))
			$('discount').innerHTML = '<img src="/design/images/layout/loader-green.gif" alt="" style="vertical-align:middle" />';		
			
		if($('promodiscount'))
			$('promodiscount').innerHTML = '<img src="/design/images/layout/loader-green.gif" alt="" style="vertical-align:middle" />';
			
		$('total').innerHTML = '<img src="/design/images/layout/loader-green.gif" alt="" style="vertical-align:middle" />';
		$('sub_' + id).innerHTML = '<img src="/design/images/layout/loader-black.gif" alt="" style="vertical-align:middle" />';		
		
		var self = this;		
		var jsonRequestUpdate = new Request.JSON({
			url: '/shoppingcart/add', 
			method: 'post',
			data: {
				'product_id': id,
				'amount' : amount,
				'incart' : true
			},
			onSuccess: function(response){
				if (response.result) {
					var subtotal = response.data.shoppingcart_subtotal.toString().replace('.', ',');	
					var discount = response.data.shoppingcart_discount.toString().replace('.', ',');	
					var promo_discount = response.data.shoppingcart_promo_discount.toString().replace('.', ',');	
					var total = response.data.shoppingcart_price.toString().replace('.', ',');
					var promo_text = response.data.shoppingcart_promo_text;
					
					if($('subtotal'))
						$('subtotal').innerHTML = subtotal;
					
					if($('discount')){
						$('discount').innerHTML = discount;
						if(discount == '0,00'){
							$('spacer-row').addClass('unv');
							$('subtotal-row').addClass('unv');
							$('discount-row').addClass('unv');
						}
						else{
							$('spacer-row').removeClass('unv');
							$('subtotal-row').removeClass('unv');
							$('discount-row').removeClass('unv');
						}
					}
					
					if($('promodiscount'))
						$('promodiscount').innerHTML = promo_discount;
					
					if($('promotext'))
						$('promotext').innerHTML = promo_text;
					
					if($('promo-row')) {
						if(promo_text.length > 0 || promo_discount > 0)
						{
							$('promo-row').removeClass('unv');
							if($('promoError'))
								$('promoError').destroy();
						}
						else
							$('promo-row').addClass('unv');
					}
						
					$('total').innerHTML = total;
					$('sub_' + id).innerHTML = response.data.product.subtotal.toString().replace('.', ',');											
				}		   
			}
		}).send();

	},
	
	deleteFromShoppingcart : function(rel){
		var input = $(document.body).getElement('input[name='+rel+']');
		
		var id = rel.replace('amount_', '');		
				
		$('total').innerHTML = '<img src="/design/images/layout/loader-green.gif" alt="" style="vertical-align:middle" />';		
		
		var self = this;		
		var jsonRequest = new Request.JSON({
			url: '/shoppingcart/delete', 
			method: 'post',
			data: {
				'product_id': id				
			},
			onSuccess: function(response){
				if (response.result) {
					var total = response.data.shoppingcart_price.toString().replace('.', ',');					
					$('total').innerHTML = total;	
					
					$('row_' + id).fade('out');
					(function(){
						$('row_' + id).destroy()
					}).delay(500);
					
					if($('recommendProduct'))
						window.location.reload(true);
					
					var TRs = $(document.body).getElements('tr[id^=row_]');					
					if(TRs.length <= 1)
						window.location.reload(true);
				}		   
			}
		}).send();
	},
	
	setOverlay : function(data)
	{
		
		var product = data.product;
		
		var overlay = new Element('div', {'id' : 'sc_overlay'})		
		var background = new Element('div', {'id' : 'sc_bg'});
		var balloon = new Element('div', {'id' : 'sc_balloon'});
		var balloon_content = new Element('div', {'id' : 'sc_content'});
		
		background.setStyle('height', window.getScrollHeight());
		
		background.injectTop(overlay);		
		overlay.injectTop($(document.body));			
		
		background.fade('hide');	
		background.fade(0.7);
		
		window.scrollTo(window.getScrollLeft(), 0);
		
		balloon.injectTop(overlay);
		balloon_content.injectTop(balloon);			
		
		balloon_content.innerHTML = '<div id="sc_text">' + data.shoppingcart_html +'</div>';
		
		var shopButton = new Element('a', {'id' : 'sc_shopbutton', 'href':'#', 'html' : '<span>Verder winkelen</span>', 'title' : 'Verder winkelen'});
		var payButton = new Element('a', {'id' : 'sc_paybutton','href':'/winkelwagen/', 'html' : '<span>Afrekenen</span>', 'title' : 'Afrekenen'});
		
		if(!$('recommendProduct'))
			shopButton.injectBottom(balloon_content);
		
		shopButton.addEvent('click', function(e){
			new Event(e).stop();
			if($('recommendProduct'))
				window.location.reload(true);
			else
				overlay.destroy();
		});	
				
		payButton.injectBottom(balloon_content);
						
	},	
	
	_setAmount: function(input, amount)
	{
		if (amount > 99) 
			amount = 99;
		if (amount < 1) 
			amount = 1;
		input.value = amount;
		
		var id = input.name.replace('amount_', '');
		if ($('sub_' + id)) {
			this.updateShoppingcart(input.name);			
		}
	
	}
});
ShoppingCart.implement(new Options);