$(document).ready(function () {
	var scadenza = 10;								// scadenza cookie
	var k = 0;										// indice degli elementi inseriti nell'array
	var basket = new Array();						// cestino elettronico
	basket.totale_costo = 0;						// prezzo totale di tutti i prodotti inseriti nel carrello
	basket.totale_quantity = 0;						// quantità totale di tutti i prodotti inseriti nel carrello
	
		// se l utente ritorna sul sito ed è stato salvato il cookie allora si legge il suo precedente carrello elettornico
		// struttura dati per inserire nel carrello i prodotti la lettura della pagina
	
	load_cookie(basket);
	
$('.draggable').draggable({ helper: "clone", opacity: "0.5" });

$('.dropzone').droppable({
	
	accept: ".draggable",
	hoverClass: "dropHover",
	drop:function(ev, ui){
		//Inizializzazione parametri				
		var item = ui.draggable.clone().addClass("droppedItemStyle");
		var droppedItem = item[0];
		var nome = droppedItem.attributes["id"].nodeValue;				
		var productCode = droppedItem.attributes["code"].nodeValue;
		var productPrice = droppedItem.attributes["price"].nodeValue;
		//aggiungiamo parametri all oggetto droppedItem 
		
		// indica quanti pezzi di questo prodotto si devono aggiungere nel carrello
		var quantity_input = droppedItem.getElementsByTagName("input").item(0).value;
		if(quantity_input == ""){droppedItem.quantity = 1;}else{droppedItem.quantity = Number(quantity_input);}		
		
		droppedItem.nome = nome;						// nome associato per renderlo disponibile al cookie creato in locale
		droppedItem.codice = productCode;				// codice del prodotto -> identificazione univoca
		droppedItem.prezzo = productPrice;				// prezzo del prodotto singolo
		droppedItem.tot_product = 0;					// prezzo parziale prodotto

		//elimino alcuni TAG dal clone
		droppedItem.getElementsByTagName("input").item(0).style.display = 'none';
		droppedItem.getElementsByTagName("img").item(0).style.display = 'none';
		var class_to_remove  = droppedItem.getElementsByClassName("description")[0];
		droppedItem.removeChild(class_to_remove);

		// CASO in cui sia il primo elemento							
		if(basket.length == 0){			
			// quando si clicca sull'oggetto copiato nel carrello significa che lo si vuole rimuovere		
                item.click(function(){
					if(droppedItem.quantity > 1){
						droppedItem.getElementsByTagName("p").item(0).innerHTML --;
						droppedItem.quantity --;
						droppedItem.tot_product = Number(productPrice * (-1)) + Number(droppedItem.tot_product);
						droppedItem.getElementsByTagName("p").item(1).innerHTML = "<p class=\"price\">Prezzo: " + droppedItem.tot_product + " euro</p>";
					}else{
						basket.splice(droppedItem, 1);
                    	$(".dropzone").children().remove("#" + droppedItem.id);
					}
					//aggiornamento quantità totale
					basket.totale_quantity--;
					
					if(basket.totale_quantity == 0){
						basket.totale_costo = 0;
						$('#total').html("");
					}else{
						//aggiornamento totale costo e totale quantità
						basket.totale_costo = Number(basket.totale_costo) + Number(productPrice * (-1));
						$('#total').html( "<p>Prodotti: " + basket.totale_quantity + "<br/>Totale: "+ taglia_float(basket.totale_costo) + " euro</p>");
					}
					
					//aggiorna cookie
					salva_nel_cookie(basket, scadenza);
					return false;
				});

				var info = document.createElement("p");
				info.setAttribute("class", "info_item");
				info.innerHTML = droppedItem.quantity;
				
				var price = document.createElement("p");
				price.setAttribute("class", "info_price");
			
				//Aggiorno anche il carrello parziale per questo prodotto
				droppedItem.tot_product = droppedItem.prezzo * droppedItem.quantity;
				price.innerHTML = "<p class=\"price\">Prezzo: " + droppedItem.tot_product + " euro</p>";

				droppedItem.appendChild(info);
				droppedItem.appendChild(price);
				$(this).append(droppedItem);
				
				
				//aggiungi primo oggetto al carrello
				basket.push(droppedItem);
				
				//aggiorna prezzo totale
				basket.totale_costo = droppedItem.tot_product;						
				basket.totale_quantity = droppedItem.quantity;
				$('#total').html( "<p>Prodotti: " + basket.totale_quantity + "<br/>Totale: "+ taglia_float(basket.totale_costo) + " euro</p>");
				
				//aggiorna cookie
				salva_nel_cookie(basket, scadenza);
				
				// Aggiornato perchè aggiunto un nuovo elemento all'array
				k++;
				
		}else{
			
			// CASO in cui si debba controllare l'intero carrello e aggiornare le quantità e i prezzi
			
				for(j=0; j<basket.length; j++){
					//alert("IF -> basket["+j+"].codice= " + basket[j].codice +"  == productCode= " + productCode+ " ?" );
					//alert(basket[j].codice == productCode);
					//alert("codice: " + basket[j].codice + " quantita: " + basket[j].quantity);
					
					if(basket[j].codice == productCode){
						if(quantity_input == ""){
							//aggiornamento quantità
							basket[j].quantity++;
							basket[j].getElementsByTagName("p").item(0).innerHTML++;
						}else{
							basket[j].quantity = Number(quantity_input) + Number(basket[j].quantity);
							basket[j].getElementsByTagName("p").item(0).innerHTML = Number(quantity_input) + Number(basket[j].getElementsByTagName("p").item(0).innerHTML);
						}
						
						
						//						aggiornamento prezzi			
												
						// basket[j].quantity -> arriva già aggiornato dal blocco di codice subito sopra
						// droppedItem.quantity -> sono i pezzi aggiunti ora

						//	alert("FOR - basket[j].quantity: " + basket[j].quantity);
						//	alert("FOR - droppedItem.quantity: "+ droppedItem.quantity);
															
						basket[j].tot_product = Number(basket[j].tot_product) + Number(productPrice) * Number(droppedItem.quantity);
						basket[j].getElementsByTagName("p").item(1).innerHTML = "<p class=\"price\">Prezzo: " + basket[j].tot_product + " euro</p>";
												
						//  alert("aggiornato con valore " + basket[j].tot_product);
						
						//aggiorna prezzo totale
						basket.totale_costo = Number(basket.totale_costo) + Number(droppedItem.quantity) * Number(productPrice);
						basket.totale_quantity = Number(basket.totale_quantity) + Number(droppedItem.quantity);
						$('#total').html( "<p>Prodotti: " + basket.totale_quantity + "<br/>Totale: "+ taglia_float(basket.totale_costo) + " euro</p>");
						
						//aggiorna cookie
						salva_nel_cookie(basket, scadenza);

						break;
					}

				}

				// SE l'elemento non è stato trovato all interno del carrello allora lo si aggiunge alla fine
				
				if(j == basket.length){
					// quando si clicca sull'oggetto copiato nel carrello significa che lo si vuole rimuovere
							  item.click(function(){
									if(droppedItem.quantity > 1){
										droppedItem.getElementsByTagName("p").item(0).innerHTML --;
										droppedItem.quantity --;
										droppedItem.tot_product = Number(productPrice * (-1)) + Number(droppedItem.tot_product);
										droppedItem.getElementsByTagName("p").item(1).innerHTML = "<p class=\"price\">Prezzo: " + droppedItem.tot_product + " euro</p>";					
									}else{
										basket.splice(droppedItem, 1);
				                    	$(".dropzone").children().remove("#" + droppedItem.id);			
									}
									//aggiornamento quantità totale
									basket.totale_quantity--;

									if(basket.totale_quantity == 0){
										basket.totale_costo = 0;
										$('#total').html("");
									}else{
										//aggiornamento totale costo e totale quantità
										basket.totale_costo = Number(basket.totale_costo) + Number(productPrice * (-1));
										$('#total').html( "<p>Prodotti: " + basket.totale_quantity + "<br/>Totale: "+ basket.totale_costo + " euro</p>");
									}
				
									//aggiorna cookie
									salva_nel_cookie(basket, scadenza);
									
									return false;
								});
								
							var info = document.createElement("p");
							info.setAttribute("class", "info_item");
							info.innerHTML = droppedItem.quantity;

							var price = document.createElement("p");
							price.setAttribute("class", "info_price");
							//Aggiorno anche il carrello parziale per questo prodotto
							droppedItem.tot_product = Number(droppedItem.prezzo) * Number(droppedItem.quantity);
							price.innerHTML = "<p class=\"price\">Prezzo: " + droppedItem.tot_product + " euro</p>";
							

							droppedItem.appendChild(info);
							droppedItem.appendChild(price);
							
							//$(this) -> $('.dropzone')
							$(this).append(droppedItem);
						    
							//aggiungi prodotto al carrello
							basket.push(droppedItem);
							
							//aggiorna prezzo totale
							basket.totale_costo = Number(basket.totale_costo) + Number(droppedItem.quantity) * Number(productPrice);
							basket.totale_quantity = Number(basket.totale_quantity) + Number(droppedItem.quantity);
							$('#total').html( "<p>Prodotti: " + basket.totale_quantity + "<br/>Totale: "+ basket.totale_costo + " euro</p>");
																
							//aggiorna cookie
							salva_nel_cookie(basket, scadenza);
																							
							// Aggiornato perchè aggiunto un nuovo elemento all'array
							k++;
					}				
	  	}
		//aggiorna cookie
		salva_nel_cookie(basket, scadenza);		
	}
})
		
		
		//se si toglie da questa sezione, le seguenti linee di codice, le variabili passate alla richiesta POST in ajax non sono disponibili!!
		
		//al load della pagina prelevare il contenuto dei cookie se esistono
		$('.grid_4.space.check_out').click(function(){
		// scrivere su un cookie locale il carrello -> ANKE SE NON LOGGATO !!!!!
		// nella pagina del check out : 
			/**
			*
			*	SETTA COOKIE DEL CARRELLO ELETTONICO
			*	
			*	1° cookie: mette nel carrello i prodotti della sessione precedente
			*	2° cookie: logga l utente una volta prelevato l'HASHCODE dal cookie e confrontato nel database
			*
			*
			**/
	
		salva_nel_cookie(basket, scadenza);
			
		});  /* END CLICK SUL PULSANTE CARRELLO  */
		
		function get_droppable_item(codice, nome, descr, prezzo, link_thumb, link, ogni, basket, i){
					//creiamo l'elemento da inserire: 
					var div = document.createElement("div");
					div.setAttribute("class", "draggable ui-draggable droppedItemStyle");
					div.setAttribute("code", codice);
					div.setAttribute("price", prezzo);
					div.setAttribute("id", nome);
					div.innerHTML = nome;
					
					var a = document.createElement("a");
					a.setAttribute("class", "zoom");
					a.setAttribute("title", descr);
					a.setAttribute("href", link);
					
					var img = document.createElement("img");
					img.setAttribute("src", link);
					img.setAttribute("style", "display:none");

					var input = document.createElement("input");
					input.setAttribute("class", "how_many");
					input.setAttribute("type", "text");
					input.setAttribute("name", "how_many");
					input.setAttribute("value", ogni);
					input.setAttribute("style", "display:none");

					var p = document.createElement("p");
					p.setAttribute("class", "info_item");
					p.innerHTML = ogni;

					var p_prezzo = document.createElement("p");
					p_prezzo.setAttribute("class", "info_price");
					totale = Number(prezzo) * Number(ogni);
					p_prezzo.innerHTML =  "<p class=\"price\">Prezzo: " + totale + " euro</p>";
					
					a.appendChild(img);
					div.appendChild(a);
					div.appendChild(input);
					div.appendChild(p);
					div.appendChild(p_prezzo);
					
					//aggiornare le variabili del carrello
					basket.push(div);

					div.nome = nome;							// nome associato per renderlo disponibile al cookie creato in locale
					div.codice = codice;						// codice a barre del prodotto -> identificazione univoca
					div.prezzo = prezzo;						// prezzo del prodotto singolo
					div.tot_product = totale;					// prezzo parziale prodotto
					div.quantity = ogni;						// quantita di ogni prodotto
					
					//aggiorno costo corrente del carrello
					basket.totale_costo = Number(basket.totale_costo) + Number(totale);
					basket.totale_quantity = Number(basket.totale_quantity) + Number(ogni);
					$('#total').html( "<p>Prodotti: " + basket.totale_quantity + "<br/>Totale: "+ basket.totale_costo + " euro</p>");

					$('.dropzone').append(div);
					
					$('#basket_before').empty();
					$.each(basket,function(index, item){
					    $('#basket_before').append($( "<li>" + item.nome + " at " + index +"</li>" ));
					});
					
					//rimozione quando si clicca sull'oggetto
					$('#'+div.nome).click(function(){
						
					if(this.quantity > 1){
						this.getElementsByTagName("p").item(0).innerHTML --;
						this.quantity --;
						this.tot_product = Number(basket[i].prezzo * (-1)) + Number(basket[i].tot_product);
						this.getElementsByTagName("p").item(1).innerHTML = "<p class=\"price\">Prezzo: " + taglia_float(basket[i].tot_product) + " euro</p>";
					}else{
						
						$.each(basket, function(index, item){
							if(basket[index] === div){
								basket.splice(index, 1);
							}
						})
						
						$(".dropzone").children().remove("#" + this.nome);
						
					}

						//aggiornamento quantità totale
						basket.totale_quantity--;

						if(basket.totale_quantity == 0){
							basket.totale_costo = 0;
							$('#total').html("");
						}else{
							//aggiornamento totale costo e totale quantità
							basket.totale_costo = Number(basket.totale_costo) + Number(this.prezzo * (-1));
							$('#total').html( "<p>Prodotti: " + basket.totale_quantity + "<br/>Totale: "+ taglia_float(basket.totale_costo) + " euro</p>");
						}	

						$('#target').empty();
						$('#target').html("lunghezza secondo: " + this.nome + "  " + basket.length + " <br/>");
						$.each(basket,function(index, item){
						    $('#target').append($( "<li>" + item.nome + " at " + index  +"</li>" ));
						});
						
						// aggiorna cookie
						salva_nel_cookie(basket, scadenza);
						

						return false;
					});

		}
		
		function trim(x) {
			return x.toString().replace(/^[ \t\r\n]+/,'').replace(/[ \t\r\n]+$/,'');
		}

		function taglia_float(a){

			return a.toString().substr(0, 5);

		}
		
		function salva_nel_cookie(basket, scadenza){
			var COOKIE_NAME = top.location.host;
			var options = { path: '/', expires: scadenza };
			var codici = '';


			if(basket.length < 0){
				$.cookie(COOKIE_NAME, null, options);
				alert("cookie vuoto");
			}else{
				//SETTA COOKIE 			
		 		$.cookie(COOKIE_NAME, '&$'+get_code_products(basket)+'&$'+get_tot_product(basket), options);

			//	alert("cookie salvato: " +  $.cookie(COOKIE_NAME));

				function get_code_products(basket){
					var m = 0;
					while(m != basket.length){
						codici = codici + trim(basket[m].codice)  + "%->";
						m++;
					}
						return codici.substr(0, codici.length-3);
				}

				function get_tot_product(basket){
					var tot_product = "";
					for( k = 0; k < basket.length; k++){
						tot_product = tot_product + basket[k].quantity  + "," ;
					}
						return tot_product.substr(0, tot_product.length-1);
				}

			}
		}

		function load_cookie(basket){
			var carrello = $.cookie(top.location.host);
			// se il cookie esiste...
			if(carrello != null && carrello != "&$&$" ){
				var split = carrello.split("&$");

				// il metodo split è usato per separare una stringa in un array di stringhe
				var stringa_codici = split[1].toString();
				var stringa_per_ogni = split[2].toString();

				var codici = stringa_codici.split("%->");
				var ogni = stringa_per_ogni.split(",");

				$.ajax({
			   		type: "POST",
			   		url: "cgi-bin/object/CartProdotti.php",
			   		data: "codici="+codici,
					dataType: "json",
					beforeSend: function(){
						var loading = document.createElement("img");
						loading.setAttribute("id", "loading");
						loading.setAttribute("src", "img/loading.gif");
						$('.grid_4.space.check_out').append(loading);
					},
			   		success: function(msg){
						//ritorna un array di array come salvato in lato server
						for(i in ogni ){
							codice = msg[i].cod_1 + "/" + msg[i].cod_2;
							get_droppable_item(codice, msg[i].nome, msg[i].descr, msg[i].prezzo, msg[i].link_thumb, msg[i].link, ogni[i], basket, i);					
						}
			   		},
					complete:function(){
						$('#loading').remove();
					}
			 	});
					/*
					//problema di tempi : il computer nn riesce a processare tt le info provenienti dal server --> soluzione: conviene inviare tt i codici al server e poi salvarli in un array JSON e processarli
					// tutti insieme localmente creando per onguno di essi 
					for( i in ogni ){
						// non si possono clonare poichè se non ci sono nella pagina presente da dove li prende !!?
						// si deve creare ogni prodotto da capo !!
						get_droppable_item(trim(codici[i]),trim(ogni[i]), basket, i);
					}
					*/	
				}else{
					//alert("carrello nullo");
				}
		}
		
});  /* END ON READY PAGE */