
var jsonUrl = 'gateway.php';

var addToBasket = function(id, quantity, option)
{
	var jSonRequest = new Request.JSON({
										url: jsonUrl, 
										data: {'act' : 'addProduct', 'id' : id, 'quantity' : quantity, 'options' : option}, 
										onComplete: function(response){
											if(response)
											{
												handleBasket(response);
											}
										}
	}).send();
}

var removeFromBasket = function(id)
{
	var jSonRequest = new Request.JSON({
										url: jsonUrl, 
										data: {'act' : 'delProduct', 'id' : id}, 
										onComplete: function(response){
											if(response)
											{
												handleBasket(response);
											}
										}
	}).send();	
}

var editBasket = function(id, quantity)
{
	var jSonRequest = new Request.JSON({
										url: jsonUrl, 
										data: {'act' : 'editProduct', 'id' : id, 'quantity' : quantity}, 
										onComplete: function(response){
											if(response)
											{
												handleBasket(response);
											}
										}
	}).send();	
}

var handleBasket = function(response)
{
	if(response.result)
	{
		setBasketHtml(response.basket);
		setProdCounterHtml(response.total);
		
		if($('cart'))
		{
			setCartHtml(response.content);
			setBasketLinks();
		}
		
		if(response.message != '')
		{
			setMessage(response.message);
		}
		
		if($$('.cartprice'))
		{
			makeEditable();
		}
	}
}

var setProdCounterHtml = function(total)
{
	$('prodcounter').set('html', total);
}

var setBasketHtml = function(html)
{
	$('basket').set('html', html);
}

var setCartHtml = function(html)
{
	$('cart').set('html', html);
}

var inBasketLink = function(el)
{
	var id = el.get('rel');	
	el.addEvent('click', function(e){
		new Event(e).stop();
		
		//var option = new Array();
		//var option = new Hash();
		var option = new Object();
		if($$('.options'))
		{
			$$('.options').each(function(el){
				var value = el.get('value');
				var name = el.get('name');	
		
				//option.push(value);
				//option.extend({name : value})
				option[name] = value;
			});			
		}
		
		if(isEmptyObj(option))
		{
			option = 0;
		}
		
        var quantity = $('quantity_' + id).get('value');
        if(!isInteger(quantity))
        {
            quantity = 1;
        }
        
		addToBasket(id, quantity, option);
		
		if($('upid_' + id))
		{
			var value = $('upid_' + id).get('value');
			value = (parseInt(value) + 1);
			$('upid_' + id).set('value', value);
		}
	});	
}

var loginLink = function(el)
{
	el.addEvent('click', function(e){
		new Event(e).stop(); 
		
		setMessage('Om te bestellen moet u eerst ingeloggen/aanmelden.');
	});	

}

var setBasketLinks = function()
{
	setBasketInput();
	setBasketPlus();
	setBasketMin();
	setBasketDel();
}

var setBasketInput = function()
{
     $$('a.basketUpdate').each(function(index)
     {
        var id = index.get('rel');
        index.addEvent('click', function(e)
        {
            new Event(e).stop();
            var value = $('upid_' + id).get('value');
            if(!isInteger(value) || value < 1)
            {
                setMessage('Onjuist aantal');
                return;
            }
            
            editBasket(id, value);
            //$('upid_' + id).set('value', value);
        });
    });
	// input fields cart
	/*$$('input.sbquantity').each(function(index){
		var id = index.get('id');
		var orgInput;
		index.addEvents({
						'keyup': function(e){
							var value = this.get('value');
							var changed = true;
							
							if(value == '')
							{
								return;
							}
							
							// check if value is number, if not set value to origen
							if(isNumber(value) == false)
							{
								this.set('value', orgInput);
								changed = false;
							}
							
							changed = (orgInput == value) ? false : true;
							orgInput = value;
							
							// if value has changed update cart
							if(changed)
							{
								var id = this.get('rel');
								editBasket(id, value);
							}
						},
						'focus': function(e){
							orgInput = this.get('value');
						},
						'blur': function(e){
							var value = this.get('value');
							
							if(value == '')
							{
								this.set('value', orgInput);
							}
						}
						})
	});*/
}

var setBasketPlus = function()
{
	// increase cart quantity links
	$$('a.basketPlus').each(function(index){
		var id = index.get('rel');
		var value = $('upid_' + id).get('value');
		index.addEvent('click', function(e){
			new Event(e).stop();
			value = (parseInt(value) + 1);
			
			editBasket(id, value);	
			$('upid_' + id).set('value', value);
		});						
	});
}

var setBasketMin = function()
{
	// decrease cart quantity links
	$$('a.basketMin').each(function(index){
		var id = index.get('rel');
		var value = $('upid_' + id).get('value');
		index.addEvent('click', function(e){
			new Event(e).stop();
			value = (parseInt(value) - 1);
			
			editBasket(id, value);
			$('upid_' + id).set('value', value);
		});							
	});
}

var setBasketDel = function()
{
	// delete from cart
	$$('a.delBasket').each(function(index){
		var id = index.get('rel');	
		index.addEvent('click', function(e){
			new Event(e).stop();
			removeFromBasket(id);
		});							
	});
}

var isNumber = function(value)
{
	return !isNaN(value);
}

var domready = function()
{
	// in cart links and increase cart quantity links
	$$('a.orderLink').each(function(index){
		inBasketLink(index);					
	});
	$$('a.loginLink').each(function(index){
		loginLink(index);					
	});
	
	// set basket links and input field
	setBasketLinks();
}

window.addEvent('domready', domready);