var shop = {

	validationFormOk : true,
	
	init:function(){
		// debut changement des quantités
				$$('.addQuantity').each(function(p){
					 Event.observe($(p), 'click',function (event){shop.addQuantity(p);},false);
								 
				});
				$$('.deleteQuantity').each(function(p){
					 Event.observe($(p), 'click',function (event){shop.deleteQuantity(p);},false);
				});
		// fin changement des quantités
				
		//debut changement des quantités directement via le champ input
			if ($('checkStock') && $('checkStock').value == 1 ) {
				$$('.inputQuantity').each(function(p){
					Event.observe($(p), 'change', function (event){shop.checkStockOnChange(p.id,p.value);},false);
				});	
			}
		//fin changement des quantités directement via le champ input
		
		//debut validation du formulaire
			if ($('checkStock') && $('checkStock').value == 1 ) {
				Event.observe($('shopCartForm'),'submit',shop.validCart);
			}
		//fin validation du formulaire
	
		},
			//ajout d'une quantité (voir pour mettre dans appli-box-www-data)
			addQuantity:function (p)
			{
				var productId = (p.id).split("-");
				var stockOk = true;
				// vérification du stock
				if ($('checkStock').value == 1 ) {
					stockOk = shop.checkStock(productId[1], parseInt($('products[' + productId[1] + ']').value) + 1);
				}
				
				if(stockOk){
					$('products[' + productId[1] + ']').value = parseInt($('products[' + productId[1] + ']').value) + 1;
				}else{
					alert('Le nombre de ce produit en stock est de ' + $('productsInStock[' + productId[1] + ']').value + '. Vous ne pouvez en commander plus.');
				}
			},

			//vérification du stock
			//renvoi un boolean : true if product is in stock with quantity asked else false
			 checkStock:function(productId, quantityAsked)
			{
				if ( quantityAsked > $('productsInStock[' + productId + ']').value){
					return false;
				}
				return true;
			},

			// passage intermediaire avant d'utiliser la fonction "checkStock"
			// permet de récupérer le product_id à partir de l'id de l'input (ex. : products[38] pour récupérer 38) 
			checkStockOnChange:function (inputQId,inputQValue)
			{
				varTmp = inputQId.split('[');
				productId = varTmp[1].split(']');
				productId = productId[0];
				stockOk = shop.checkStock(productId, parseInt(inputQValue));
				if (stockOk == false){
					alert('Le nombre de ce produit en stock est de ' + $('productsInStock[' + productId + ']').value + '. Vous ne pouvez en commander plus.');
					$(inputQId).value = $('productsInStock[' + productId + ']').value;
				}
			},

			//suppression d'une quantité (voir pour mettre dans appli-box-www-data)
			deleteQuantity:function (p)
			{
				var productId = (p.id).split("-");
				if ($('products[' + productId[1] + ']').value > 0){
					$('products[' + productId[1] + ']').value = parseInt($('products[' + productId[1] + ']').value) - 1;	
				}
			},
			
			validCart:function(event)
			{
				validationFormOk = true;
				
				$$('.inputQuantity').each(function(p){
					shop.checkValidateForm(p.id,p.value);
				});	
				
				if(validationFormOk == false){//variable mis à jour dans shop.checkStockOnChange
						Event.stop(event);				
				}
				
			},
			
			checkValidateForm:function(inputQId,QuantityElement)
			{
				varTmp = inputQId.split('[');
				productId = varTmp[1].split(']');
				productId = productId[0];
				stockOk = shop.checkStock(productId, parseInt(QuantityElement));
				if (stockOk == false){
					validationFormOk = false;
				}
			}
		
}

Event.observe(window, 'load', shop.init, false);
