// Carrello della spesa
// CopyRight (C) 2006, Paolo Sancono
// Tutti i diritti riservati
// vale a dire che non puoi copiare e usare questo carrello

// Ha bisogno che venga caricato anche cookies.js

function valuta(a) {
  //Converte il numero a in una stringa di indicazione valuta arrotondata a 2 decimali
  a='' + (Math.round(a*100)/100);
  loc=a.indexOf(".");
  if (loc>0) {
    a=a + "00";
    a=a.substring(0,loc+3);
  } else {
    a=a + ".00";
  }
  return a;
}

carrello = new Object();

carrello.n = 0;
carrello.cod = new Array();
carrello.desc = new Array();
carrello.prezzo = new Array();
carrello.spese = new Array();
carrello.qta = new Array();

carrello.svuota = function() {
  this.n = 0;
  this.cod.length=0;
  this.desc.length=0;
  this.prezzo.length=0;
  this.spese.length=0;
  this.qta.length=0;
  this.store();
}

carrello.store = function() {
  // Salva il carrello in un cookie
  var data="";
  data += this.n + "@@";
  data += this.cod.join("##") + "@@";
  data += this.desc.join("##") + "@@";
  data += this.prezzo.join("##") + "@@";
  data += this.spese.join("##") + "@@";
  data += this.qta.join("##") + "@@";
  writePersistentCookie("ideegenialicarrello",data,"months",18);
}

carrello.recall = function() {
  data = getCookieValue("ideegenialicarrello");
  if (data == null)
    this.svuota()
  else {
    data = data.split("@@");
    this.n=parseInt(data[0]);
    this.cod=data[1].split("##");
    this.desc=data[2].split("##");
    this.prezzo=data[3].split("##");
    this.spese=data[4].split("##");
    this.qta=data[5].split("##");
    for (i=0;i<this.n;i++) {
      this.prezzo[i] = parseFloat(this.prezzo[i]);
      this.spese[i] = parseFloat(this.spese[i]);
      this.qta[i] = parseInt(this.qta[i]);
    }
  }
}

carrello.add = function(cod,desc,prezzo,spese,qta) {
  found="nontrovato";
  for (i=0;i<this.n;i++)
    if ((this.cod[i] == cod) && (this.desc[i] == desc) && (this.prezzo[i] == prezzo))
      found=i;
  if (found == "nontrovato") {
    this.cod[this.n]=cod;
    this.desc[this.n]=desc;
    this.prezzo[this.n]=prezzo;
    this.spese[this.n]=spese;
    this.qta[this.n]=qta;
    this.n++;
    alert('Articolo aggiunto al carrello');
  } else {
    this.qta[found] = (parseInt(this.qta[found]) + parseInt(qta));
    alert("Articolo già presente, quantità aumentata di "+qta);
  }
  this.store();
}

carrello.askadd = function(cod,desc,prezzo,spese) {
  // Chiede con un prompt la quantità da aggiungere
  // Aggiunge la quantità al carrello
  qta = prompt(desc+" - "+prezzo+" euro\nQuanti ne vuoi acquistare?","1");
  if (qta == null) { return }
  if (qta == 0) { return }
  carrello.add(cod,desc,prezzo,spese,qta);
}

carrello.askqta = function(i) {
  qta = prompt(""+this.cod[i]+" - "+this.desc[i]+" - "+this.prezzo[i]+" euro\nCambio la quantità da "+this.qta[i]+" a... ? (0 per eliminare)",this.qta[i]);
  if (qta == null) return;
  if (qta == 0) {
    this.cod.splice(i,1);
    this.desc.splice(i,1);
    this.prezzo.splice(i,1);
    this.spese.splice(i,1);
    this.qta.splice(i,1);
    this.n--;
  } else
    this.qta[i] = qta;
  this.store();
  location.reload();
}

carrello.nicetot = function() {
  tot=0;
  for (i=0;i<this.n;i++)
    tot += this.prezzo[i]*this.qta[i];
  tot = valuta(tot);
  return tot;
}

carrello.calcspese = function() {
  spese = 0;
  for (i=0;i<this.n;i++)
    if (this.spese[i] > spese)
      spese = this.spese[i];
  return spese;
}

carrello.disegna = function() {
  // Disegna il carrello con diversi document.write
  // il carrello viene disegnato all'interno di un form, il tag <form> deve stare nell'html chiamante, non qui
  // campi hidden e visibili bloccati costituiscono il carrello,
  // così che oltre che mostrato a schermo verrà anche inviato inviando la form
  document.write("<table border=2>");
  document.write("<tr><td align=center><b>Codice</b></td><td align=center><b>Descrizione</b></td><td align=center><b>Prezzo</b></td><td align=center><b>Qtà</b></td><td align=center><b>Tot</b></td></tr>");
  document.write('<input type="hidden" name="righe" value="'+this.n+'">');
  totale = 0;
  for (i=0;i<this.n;i++) {
    document.write("<tr><td>"+this.cod[i]+"</td>");
    document.write("<td>"+this.desc[i]+"</td>");
    document.write("<td align=right>"+valuta(this.prezzo[i])+"</td>");
    document.write('<td align=center><a href="javascript:carrello.askqta('+i+')">'+this.qta[i]+"</a></td>");
    parziale = this.prezzo[i]*this.qta[i];
    totale += parziale;
    document.write("<td align=right>"+valuta(parziale)+"</td></tr>");
    document.write('<input type="hidden" name="riga'+i+'" value="'+this.qta[i]+'x  '+this.cod[i]+' - '+this.desc[i]+' - '+valuta(this.prezzo[i])+' --- '+valuta(parziale)+'">');
    document.write('<input type="hidden" name="utm'+i+'" value="UTM:I|000|'+this.cod[i]+'|'+this.desc[i]+'|000|'+this.prezzo[i]+'|'+this.qta[i]+'">');
    // Statistiche google #UTM:I|[id ordine]|[sku/codice]|[nome prodotto]|[categoria]|[prezzo]|[quantità]
  }
  if (this.n == 0)
    document.write("<tr><td colspan=5 align=center>Carrello vuoto</td></tr>");
  else {
    spese = this.calcspese();
    document.write("<tr><td colspan=4 align=right><b>Totale carrello:</b></td><td align=right>"+valuta(totale)+"</td></tr>");
    document.write("<tr><td colspan=4 align=right><b>Spese di spedizione:</b></td><td align=right>"+valuta(spese)+"</td></tr>");
    document.write('<input type="hidden" name="subtotal" value="'+valuta(totale)+'">');
    document.write('<input type="hidden" name="spese" value="'+valuta(spese)+'">');
    totale += spese;
    if (totale >= 77.47) {
      document.write("<tr><td colspan=4 align=right><b>Bollo (per ordini > &euro;77,47):</b></td><td align=right>"+valuta(1.81)+"</td></tr>");
      document.write('<input type="hidden" name="bollo" value="'+valuta(1.81)+'">');
      totale += 1.81;
    }
    document.write("<tr><td colspan=4 align=right><b>Totale da pagare:</b></td><td align=right>"+valuta(totale)+"</td></tr>");
    document.write('<input type="hidden" name="grandtotal" value="'+valuta(totale)+'">');
  }
  document.write("</table>");
}

//-------

carrello.recall();

