
WebApp.Carrello = function(){
	var _class = ["remove", "add"];
  var i = -1;
  var _precImg = null;
  var _isClick = false;
	var _contaArticoli = 0;
	var _elencoId = [];
	var _elencoPref = [];
	
	function updateCounter(val) {
		_contaArticoli += val;
  	var countObj = document.getElementById("numeroProdottiCarrello");
  	if (_contaArticoli < 0) {
  		_contaArticoli = 0;
  	}
  	countObj.innerHTML = _contaArticoli;  
	}

	function showConferma(id, pref) {
		var loading = getLoading(id, pref);
		loading.innerHTML = '<div>Articolo aggiunto al carrello!</div><a href="' + WebApp.baseUrl + '/carrello.do" class="acquista">Acquista subito</a>';
		setTimeout(function(){
				loading.style.display = "none";
			}, 5000);		
	}
	
	function onAddToCartComplete(id, pref) {
		updateCounter(1);
		_elencoId["" + id] = id;
    _isClick = false;
		showConferma(id, pref);
		if (WebApp.AnteprimaCarrello) {
			WebApp.AnteprimaCarrello.update();	
		}
	}
	
	function showConfermaEliminazione(id, pref) {
		var loading = getLoading(id, pref);
		loading.innerHTML = '<div>Articolo rimosso dal carrello!</div>';
		setTimeout(function(){
				loading.style.display = "none";
			}, 3000);		
	}
	
	function onRemoveFromCartComplete(id, pref) {
		updateCounter(-1);
		_elencoId["" + id] = null;
    _isClick = false;
		showConfermaEliminazione(id, pref);
		if (WebApp.AnteprimaCarrello) {
			WebApp.AnteprimaCarrello.update();	
		}			
	}
  
  function validaDatiUtenteCarrello() {
  	var objForm = document.getElementById("frmCarrello");
    if (objForm.elements["nome"].value == "" ||
    		objForm.elements["cognome"].value == "" ||
        objForm.elements["indirizzo"].value == "" ||
				objForm.elements["localita"].value == "" ||
				objForm.elements["provincia"].value == "" ||
				objForm.elements["nazione"].value == "" ||
				objForm.elements["telefono"].value == "" ||
				objForm.elements["cap"].value == "" ||
				objForm.elements["mail"].value == "") {
      alert("I dati di spedizione merce con * sono obbligatori");
    	return false;    
    }
		if (objForm.elements["mail"].value != objForm.elements["confermamail"].value) {
      alert("La conferma e-mail non corrisponde");
    	return false;    
		}
		if (objForm.elements["richiestaFattura"].checked) {
			if (objForm.elements["pivaFattura"].value == "" &&
				objForm.elements["codiceFiscaleFattura"].value == "") {
        alert("Compilare il campo Codice Fiscale.\nNel caso di titolari di Partita IVA compilare anche il campo Partita IVA.");
      	return false;  				
			}
  		if (!objForm.elements["datiUguali"].checked) {
        if (objForm.elements["ragioneSocialeFattura"].value == "" ||
  					objForm.elements["nomeFattura"].value == "" ||
        		objForm.elements["cognomeFattura"].value == "" ||
            objForm.elements["indirizzoFattura"].value == "" ||
    				objForm.elements["localitaFattura"].value == "" ||
    				objForm.elements["provinciaFattura"].value == "" ||
    				objForm.elements["nazioneFattura"].value == "" ||
    				objForm.elements["telefonoFattura"].value == "" ||
    				objForm.elements["capFattura"].value == "") {
          alert("I dati di fatturazione con * sono obbligatori");
        	return false;    
        }		
  		}
		}
    if (!objForm.elements["autorizzo"].checked) {
      alert("Accettare l'autorizzazione al trattamendo dei dati personali per procedere");
    	return false;    
    }
		
    if (!objForm.elements["accettoCondizioniAcquisto"].checked) {
      alert("Per procedere è necessario leggere e accettare le condizioni di acquisto");
    	return false;    
    }
		return true;		
  }
  
  function getLoading(id, pref) {
  	if (pref == null) {
  		pref = "";
  	}  	
		var cont = document.getElementById(pref + "elem_" + id);
		var loading = document.getElementById(pref + "loading_" + id);			
  	if (loading == null) {
  		loading = document.createElement("div");
  		cont.appendChild(loading);
  		cont.style.position = "relative";
  		loading.id = pref + "loading_" + id;
  		loading.className = "loadingCarrello";
  		loading.innerHTML = '<img src="' + WebApp.assetsUrl + '/imagescons/loading.gif" alt="Operazione in corso" /> Operazione in corso...';
  	}  
  	return loading;	
  }
  
	function attivaLoading(id, pref) {
  	var loading = getLoading(id, pref);
  	loading.style.display = "block";	
	}
	
	function setDatiFattura(id, visualizza) {
  	var obj = document.getElementById(id);
  	if (obj == null) {
  		return;
  	}
  	if (visualizza != null && visualizza && obj.visibile == null) {
  		obj.visibile = true;
  	}
  	else {
  		obj.visibile = obj.visibile == null ? false : obj.visibile;
  	}
  	if (obj.visibile) {
  		obj.style.display = "none";
  		var objForm = document.getElementById("frmCarrello");
			objForm.elements["ragioneSocialeFattura"].value = "";
			objForm.elements["nomeFattura"].value = "";
  		objForm.elements["cognomeFattura"].value = "";
      objForm.elements["indirizzoFattura"].value = "";
  		objForm.elements["localitaFattura"].value = "";
  		objForm.elements["provinciaFattura"].value = "";
  		objForm.elements["nazioneFattura"].value = "Italia";
  		objForm.elements["telefonoFattura"].value = "";
  		objForm.elements["capFattura"].value = "";
			if (id != "datiUguali") {
    		objForm.elements["codiceFiscaleFattura"].value = "";			
    		objForm.elements["pivaFattura"].value = "";
			}			
  	} 
  	else {
  		obj.style.display = "block";
  	}
  	obj.visibile = !obj.visibile;	
	}
	
	function visualizzaBottoneCarrello(id, clsRem, clsAdd) {
			var cont = null;
			for (var i = 0; i < _elencoPref.length; i++) {
	  		cont = document.getElementById(_elencoPref[i] + "elem_" + id);
	  		if (cont != null) {
					Element.removeClassName(cont, clsRem);			
					Element.addClassName(cont, clsAdd);		
				}
			}
	}
	
	return {
		initCounter : function(val) {
			_contaArticoli = val;
		},
		remFromCartByExtern : function(id) {
			updateCounter(-1);
			visualizzaBottoneCarrello(id, "rimuovi", "aggiungi");
		},
		cambioMetodoPagamentoSpedizione : function() {
    	var obj = document.getElementById("frmCarrello");
      obj.action = WebApp.baseUrl + "/cambioMetodoPagamentoSpedizione.do";
      obj.submit();
		}, 
  	datiUguali : function(visualizza) {
			setDatiFattura("datiUguali", visualizza);
    },	
  	richiestaFattura : function(visualizza) {
			setDatiFattura("richiestaFattura", visualizza);		
    },	
  	cartNext1 : function(url) {
    	var obj = document.getElementById("frmCarrello");
      obj.action = WebApp.baseUrl + "/datiCheckout.do";
      obj.submit();
    },
  	cartNext2 : function(url) {
    	if (validaDatiUtenteCarrello()) {
      	var obj = document.getElementById("frmCarrello");
        obj.action = WebApp.baseUrl + "/riepilogoCheckout.do";
        obj.submit();
      }
    },
  	addToCart : function(id,pref) {
    	if (_isClick) 
      	return;
      if (_elencoId["" + id] != null) {
      	showConferma(id, pref);
      	return;
      }
      _isClick = true;
			pref = pref == null ? "" : pref;
	
			visualizzaBottoneCarrello(id, "aggiungi", "rimuovi");	
			attivaLoading(id, pref);
				
      var request = new HttpRequest();    
      request.setFunctionOperationComplete(function(){onAddToCartComplete(id, pref);});
      
      request.send(WebApp.baseUrl + "/addToCart.do","id="+id);			     	
    },
		remFromCart : function(id,pref) {
    	if (_isClick) 
      	return;
      _isClick = true;
			pref = pref == null ? "" : pref;
			
			visualizzaBottoneCarrello(id, "rimuovi", "aggiungi");
  		attivaLoading(id, pref);
				
      var request = new HttpRequest();    
      request.setFunctionOperationComplete(function(){onRemoveFromCartComplete(id, pref);});
      request.send(WebApp.baseUrl + "/removeFromCart.do","id="+id);			     	
		},
		setPrefBottoni : function(val) {
			_elencoPref = val;
		}
			
  }
}();
