// JavaScript Document
var absolute_url = 'http://'+window.location.host.toString()+'/cavalierino/';

/*Resetta i valori degli input*/
function reset_qt_field(class_carrello){
	$(class_carrello).each(function() {
		$(this).val(1);					   
	});
}
/*Conta il numero di prodotti presenti nel carrello*/
function count_products(){
	var numero_prodotti = 0;
	$(".cart_product").each(function() {
		numero_prodotti++;
	});
	return numero_prodotti;
}
/*Visualizza o nasconde il carrello a seconda che siano o meno presenti dei prodotti*/
function show_basket(){
	if(count_products() > 0) $('#shopping_cart').show();
	else $('#shopping_cart').hide();
}
/*Funzione che crea la riga nel carrello*/
function write_row(object){
	var totale = parseFloat(object.prezzo)*parseFloat(object.qt);
	totale = totale.toFixed(2);
	$('#shopping_cart').append('<div class="cart_product" id="'+object.id+'"><div class="nome">'+object.nome+'</div><span class="prezzo">'+object.prezzo+' &euro;</span> x <span class="quantita qt_'+object.id+'">'+object.qt+'</span>: <span class="prezzo_totale_prodotto">'+totale+' &euro;</span><br><div class="operazioni"><span class="basket_sub" onclick="sub_product('+object.id+')"><img src="'+absolute_url+'images/tasto_meno.gif"></span> <span class="basket_add" onclick="add_product('+object.id+')"><img src="'+absolute_url+'images/tasto_piu.gif"></span> <span class="basket_del" onclick="del_product('+object.id+')"><img src="'+absolute_url+'images/tasto_x.gif"></span></div></div>');	
}
/*Funzione che aggiorna la riga nel carrello <span class="basket_add_qt" onclick="add_product_input('+object.id+')">Add_m</span> <input id="basket_add_qt_'+object.id+'" type="text" size="1" value="1">*/ 
function update_row(object){
	var totale = parseFloat(object.prezzo)*parseFloat(object.qt); //prezzo parziale arrotondato
	totale = totale.toFixed(2);
	$('#'+object.id).html('<div class="nome">'+object.nome+'</div><span class="prezzo">'+object.prezzo+' &euro;</span> x <span class="quantita qt_'+object.id+'">'+object.qt+'</span>: <span class="prezzo_totale_prodotto">'+totale+' &euro;</span><br><div class="operazioni"><span class="basket_sub" onclick="sub_product('+object.id+')"><img src="'+absolute_url+'images/tasto_meno.gif"></span> <span class="basket_add" onclick="add_product('+object.id+')"><img src="'+absolute_url+'images/tasto_piu.gif"></span> <span class="basket_del" onclick="del_product('+object.id+')"><img src="'+absolute_url+'images/tasto_x.gif"></span></div>');
}

/*Funzione che calcola il totale di quanto presente nel carrello*/
function cart_total(){
	var prezzo_totale = 0;
	$(".prezzo_totale_prodotto").each(function() { //Addiziono i totali di ogni prodotto
		prezzo_totale += parseFloat($(this).html()); //prendo il valore e faccio il casting del valore in Float (per la virgola)
	});
	prezzo_totale = prezzo_totale.toFixed(2);
	$('#prezzo_totale').remove(); //rimuovo il vecchio totale
	$('#shopping_cart').append('<div id="prezzo_totale">'+prezzo_totale+' &euro;</div>'); //e lo sostituisco col nuovo
}
/*Funzione che permette di eliminare un prodotto*/
function del_product(id){
	var qt_list = parseInt($('#disponibilita_'+id).html()); //prendo la quantità presente nell'elenco, già aggiornata
	var qt_cart = parseInt($('.qt_'+id).html()); //prendo la quantità inserita nel carrello
	//resetto il valore della disponibilità nell'elenco, poiché il prodotto non è più nel carrello
	$('#disponibilita_'+id).html(qt_list+qt_cart); 
	//chiamo il file php in ajax per aggiornare i dati in sessione
	$.post(absolute_url+"modules/basket/del_product.php", { prodotto_id: id },
	    function(){
			$('#basket_add_'+id).removeAttr('disabled');
			$('#'+id).remove(); //rimuovo il prodotto dal carrello
			cart_total(); //ricalcolo il prezzo totale
			show_basket();
		 });
		
}
/*Funzione che permette di diminuire la quantità di un prodotto presente nel carrello*/
function sub_product(id){
	//chiamo il file php in ajax per aggiornare i dati in sessione
	$.post(absolute_url+"modules/basket/sub_product.php", { prodotto_id: id },
	    function(data){
		   if(data != '}') { 
					var json_object = JSON.parse(data); //faccio il parsing dei dati json che mi sono stati restituiti
					if(json_object.qt < json_object.qt_max) $('#basket_add_'+id).removeAttr('disabled');
					if(json_object.qt < 1){ //controllo la quantità del prodotto già presente nel carrello
					//se inferiore a 1, elimino il prodotto dell'elenco
						del_product(id);
					}
					else {
						$('#disponibilita_'+id).html(json_object.qt_max-json_object.qt); //aggiorno la quantità di prodotti disponibili
						//altrimenti mi limito ad aggiornare i valori: quantità, prezzo parziale, prezzo totale
						update_row(json_object);
					}
					show_basket();
					cart_total();
				}
		 });
		
}
/*Funzione che permette di aumentare la quantità di un prodotto presente nel carrello*/
function add_product(id){
	//chiamo il file php in ajax per aggiornare i dati in sessione
	$.post(absolute_url+"modules/basket/add_product.php", { prodotto_id: id, qt: 1 },
	    function(data){
		   if(data != '}') { 
					var json_object = JSON.parse(data); //faccio il parsing dei dati json che mi sono stati restituiti
					if(parseInt(json_object.qt) >= parseInt(json_object.qt_max)){ 
						$('#basket_add_'+id).attr('disabled', 'disabled');
					}
					update_row(json_object);
					$('#disponibilita_'+id).html(json_object.qt_max-json_object.qt); //aggiorno la quantità di prodotti disponibili
					show_basket();
					cart_total();
				}
		 });
		
}
/*Funzione che permette di aumentare di un numero arbitrario la quantità di un prodotto presente nel carrello*/
function add_product_input(id){
	var qt = parseInt($('#basket_add_qt_'+id).val());
	//chiamo il file php in ajax per aggiornare i dati in sessione
	$.post(absolute_url+"modules/basket/add_product.php", { prodotto_id: id, qt: qt },
	    function(data){
		   if(data != '}') { 
					var json_object = JSON.parse(data); //faccio il parsing dei dati json che mi sono stati restituiti
					if(parseInt(json_object.qt) >= parseInt(json_object.qt_max)) $('#basket_add_'+id).attr('disabled', 'disabled');
					update_row(json_object);
					$('#disponibilita_'+id).html(json_object.qt_max-json_object.qt); //aggiorno la quantità di prodotti disponibili
					show_basket();
					cart_total();
				}
		 });
		
}
/*Funzione che controlla la disponibilità dei prodotti appena prima della conferma dell'ordine*/
function check_qt(id_lingua){
	var check = false;
	var query_string = 'lingua_id='+id_lingua+'&';
	$('.cart_product').each(function(index) {
		var id_prodotto = $(this).attr('id');
		var qt_prodotto = parseInt($('.qt_'+id_prodotto).html());
		query_string = query_string + 'prodotto[]='+id_prodotto+'&'+'qt[]='+qt_prodotto+'&';
		check = true;
	});
	$.post(absolute_url+"modules/basket/check_qt.php", query_string,
			function(data){
			   if(data != '}') { 
						var json_object = JSON.parse(data);
						//scorre tutti i prodotti che sono stati restituiti in php in formato json
						$.each(json_object.prodotti, function(index, object) { 
						check = false;
			});		
		}	
	});
	if(check) $('#acquisto_finale').submit();
}
$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);
/*******-FUNZIONI IN DOCUMENTO READY-*******/
$(document).ready(function(){
	/*Codice che controlla la quantità inserita*/
	$('.prod_qt').change(function(){
		var prod_qt_id = $(this).attr('id');
		prod_qt_id = prod_qt_id.replace('prod_qt_', '');
		var max_qt = parseInt($('#disponibilita_'+prod_qt_id).html());
		if($(this).val() > max_qt) $(this).val(max_qt);
		else if($(this).val() < 1) $(this).val(1);
	});
	/*Codice che permette di aggiungere un prodotto al carrello o di aumentarne la quantità dalla lista dei prodotti*/
	$('.basket_add').click(function(){	
		var pulsante = $(this).attr('id');
		var data = $(this).attr('title'); //ricavo alcune informazioni sul prodotto e sull'ambiente: id, lingua, quantità
		var id = data.split('-');
		var qt_basket = parseInt($('.qt_'+id[0]).html()); //ricavo la quantità già presente nel carrello
		var qt = parseInt($('#prod_qt_'+id[0]).val());
		var qt_disp = parseInt($('#disponibilita_'+id[0]).html());
		var max_qt = parseInt(id[2]);
		if(isNaN(qt_basket)) qt_basket = 0; //se il prodotto non è ancora presente, inizializzo la quantità a zero
		if(true){ //se la quantità già presente è minore della disponibilità, permetto di aggiungere il prodotto
			$('#shopping_cart').show();	
			//chiamo il file php in ajax per aggiornare i dati in sessione
			$.post(absolute_url+"modules/basket/add_list_product.php", { prodotto_id: id[0], lingua_id: id[1], qt: qt },
			function(data){
			   if(data != '}') {
						var json_object = JSON.parse(data);
						if(parseInt(json_object.qt) >= parseInt(json_object.qt_max)) $('#' + pulsante).attr('disabled', 'disabled');
						if(qt_basket > 0){ //controllo se l'oggetto è già presente nel carrello
						//se è presente, mi limito ad aggiornare i valori di quello già presente
							update_row(json_object);
						}
						else {
							//altrimenti lo creo
							write_row(json_object);
						}
						$('#disponibilita_'+id).html(json_object.qt_max-json_object.qt); //aggiorno la quantità di prodotti disponibili				
						reset_qt_field('.prod_qt');
						show_basket();
						cart_total();
					}
			 });
		}
		
	});
//Il seguente pezzo di codice disabilita l'aggiunta al carrello se la quantità è a 0
	$('.basket_disponibilita').each(function(){
		var disponibilita = $(this).html();
		var id = $(this).attr('id').split('_')
		if(disponibilita == 0) { 
			$('#basket_add_'+id[1]).attr('disabled', 'disabled');;
		}
	});
/************************************************************************************/
	
	/*Codice che carica il carrello al carimento della pagina, visualizzando tutti gli elementi che sono stati aggiunti*/
if($('#shopping_cart').length != 0){
	if($('.basket_add').length > 0) {
		var data = $('.basket_add').attr('title'); //ricavo alcune informazioni sul prodotto e sull'ambiente: id, lingua, quantità
		var id = data.split('-');
		var qt_disp = parseInt($('#disponibilita_'+id[0]).html());
		
		if(qt_disp == 0) { $('.basket_add').attr('disabled', 'disabled'); }
	}
$.post(absolute_url+"modules/basket/all_products.php", { },
	    function(data){
		   if(data != '}') {    
					var json_object = JSON.parse(data);
					//Aggiungo valori descrittivi generali
					//json_object.peso;

					$('#dati_spedizione_varie').html(json_object.nome_spedizione + ' ' + json_object.importo_spedizione + ' &euro; <br />' + json_object.descrizione_spedizione);
					//scorre tutti i prodotti che sono stati restituiti in php in formato json
					$.each(json_object.prodotti, function(index, object) { 
						write_row(object);
						var qt_list = parseInt($('#disponibilita_'+object.id).html());
						$('#disponibilita_'+object.id).html(object.qt_max-object.qt);//aggiorno la disponibilità di un prodotto
			});		
		}	
		cart_total();
		show_basket();
	});
}
	/*Codice che carica il carrello per la conferma*/
if($('#shopping_cart_confirm').length != 0){
	$.post(absolute_url+"modules/basket/all_products.php", { },
	    function(data){
		   if(data != '}') { 
					var json_object = JSON.parse(data);
					//scorre tutti i prodotti che sono stati restituiti in php in formato json
					$.each(json_object.prodotti, function(index, object) { 
						var totale = parseFloat(object.prezzo)*parseFloat(object.qt);
				totale = totale.toFixed(2);
				$('#shopping_cart_confirm').append('<div class="cart_product" id="'+object.id+'">'+object.nome+':  <span class="prezzo">'+object.prezzo+'</span>: <span class="qt_'+object.id+'">'+object.qt+'</span> <span class="prezzo_totale_prodotto">'+totale+'</span> </div>');	
				var prezzo_totale = 0;
				$(".prezzo_totale_prodotto").each(function() { //Addiziono i totali di ogni prodotto
					prezzo_totale += parseFloat($(this).html()); //prendo il valore e faccio il casting del valore in Float (per la virgola)
				});
				$('#prezzo_totale').remove(); //rimuovo il vecchio totale
				$('#shopping_cart_confirm').append('<div id="prezzo_totale">'+prezzo_totale+'</div>'); //e lo sostituisco col nuovo
			});		
		}	
	});
}
});
