// Cataloghi e Riviste digitale COLORE - v. 1.1  -  05-06-2006

// Parametri vari
var quantitaLimite = 100000; // Quantita' massima ordinabile

var riepilogo = ""; // DEBUG

// Costi carta euro/kg
var costoCarta = new Array();
costoCarta['usomano'] = 3.1; // Carta Usomano
costoCarta['opaca'] = 2.0 // Carta patinata opaca
costoCarta['lucida'] = 2.0; // Carta patinata lucida
costoCarta['gardapat13'] = 2.12; // Garda Pat13
costoCarta['adesivaFedrigoni'] = 2.1; // Carta adesiva AdHoc Fedrigoni
costoCarta['acquerBianco'] = 3.3; // Acquerello bianco
costoCarta['acquerAvorio'] = 3.3; // Acquerello avorio
costoCarta['tintoGesso'] = 3.4; // Tintoretto gesso
costoCarta['tintoCrema'] = 3.4; // Tintoretto crema
costoCarta['marinaConPerga'] = 3.6; // Marina conchiglia pergamena
costoCarta['arjoWiggins'] = 4.1; // Arjo Wiggins Curious metallics
costoCarta['fedriPearl'] = 4.1; // Gruppo Fedrigoni
costoCarta['fedriJade'] = 4.1; // Gruppo Fedrigoni

// costoCarta['pvcAdesivo'] = {"A5":0.75, "A4":1.50, "A3":2.50};

// Costo stampa per facciata (Euro)
// var costoStampaFacc = {"A5":0.06, "A4":0.12, "A3":0.24 }; // OLD
// var costoPassaggio = 0.24; // Costo di stampa di un foglio f.to 32x45/33x48
var fasciaPrezzo = [0.22, 0.18, 0.15, 0.11]; // Costi x fasce prezzo in base ai passaggi
var fasciaPrezzoCop = [0.22, 0.18, 0.15, 0.11]; // Costi x fasce prezzo copertina in base ai passaggi
 // var costoStampaFacc800Pass = {"A5":0.05, "A4":0.10, "A3":0.20 }; RIMOSSO - Promo terminata

// Numero di facciate necessarie per la stampa del lato di un foglio A3 (1 passaggio)
var faccFoglio = { "A5":4, "A4":2, "A4b":2, "A3":1, "A3b":2  };

// Costo avviamento rilegatura (vedi prices_pf)

// Taglio con tagliacarte elettronico Polar (vedi prices_pf)

// Costo rilegatura per copia (vedi prices_pf)

// Costo avviamento plastificazione e plast copertina (vedi prices_pf)

// Costo avviamento copertina (vedi prices_pf)

// Superficie di ogni singolo foglio (Mq)
var areaCarta = {"A5":0.0315,"A4":0.063,"A4b":0.063,"A3":0.126,"A3b":0.063, "big":0.1584};  // 0.15x0.21; 0.21x0.30 ; 0.30x0.42

// Fattore moltiplicativo fronte retro
var fatFronteRetro = {"solo_fronte":1.0, "fronte_retro":0.5};

// Costo fisso piegatura/cordonatura e singola piega (vedi prices_pf)

// var delivery_soglia_it = { hh24:260.00, hh24_10:999999.0, hh24_airplus:999999.0, hh24_mio:999999.0 };
// var delivery_it = { hh24:9.50, hh24_10:30.00, hh24_airplus:25.00, hh24_mio:0.0 };
// var delivery = { "italia":9.50, "hh24":19.99, "hh48":9.99, "gg":5.99 };



// Nomi dei campi
var fQuantita = "quantita";
var fFormato = "formato";
var fFacciate = "facciate";
var fFronteRetro = "fronte_retro";
var fCartaTipo = "carta_tipo";
var fGrammiInt = "grammi_int";
var fCopertina = "copertina";
var fCartaCop = "carta_copertina";
var fGrammiCop = "grammi_cop";
var fPlastica = "plastica";
var fLucida = "lucida";
var fRilegatura = "rilegatura";
// var fDelivery = "delivery";
var fAvviamento = "avviamento";
var fCostoBase ="costo_base";
var fCostoRilegatura = "costo_rilegatura";
var fCostoPiegaCordo = "costo_piegaCordo";
var fCostoTaglioPolar = "costo_taglioPolar";
var fCostoPlastica = "costo_plastica";
var fCostoCarta = "costo_carta";
// var fCostoSpedizione = "costo_spedizione";
var fpesocarta="pesoCarta";
var fCostoSingola = "costo_singola";
var fTotale = "totale";
var fTotaleIVA = "totale_iva";

// Nome del modulo
var nomeForm = "riviste_form";


function formattaNumero(valore, precisione, separatore) {
	valore = "" + valore;
	precisione = parseInt(precisione);
	var completo = "" + Math.round(valore * Math.pow(10, precisione));
	var puntoDec = completo.length - precisione;
	if (valore == 0) {
		result = "0" + separatore;
		for (var i = 0; i < precisione; i++)
			result += "0"; 
	} 
	else if(puntoDec > 0) {
		result = completo.substring(0, puntoDec);
		result += separatore;
		result += completo.substring(puntoDec, completo.length);
	}
	else if (puntoDec < 0) {
		result = "0" + separatore;
		for (var i = 0; i < -puntoDec; i++)
			result += "0";
		result += completo;
	}
	else {
		result ="0" + separatore + completo;
	}
	return result;
}


function getCostoCarta(carta,formato,grammi) {
	var moltGrammiCarta = (grammi <= 300) ? 1 : 2; // Se la carta ha grammatura superiore a 300 il costo raddoppia
	return (costoCarta[carta] * moltGrammiCarta);
}

function getInt(nomeCampo) {
	var x = Math.round(parseInt(document.forms[nomeForm].elements[nomeCampo].value))
	return isNaN(x) ? 0 : x;
}

function getStr(nomeCampo) {
	return document.forms[nomeForm].elements[nomeCampo].value;
}

function setFloat(nomeCampo, valore, precisione) {
	try {
		document.forms[nomeForm].elements[nomeCampo].value = 
			formattaNumero(valore, precisione, ",");
	}
	catch (e) {}
}

function setInt(nomeCampo, valore) {
	try {
		document.forms[nomeForm].elements[nomeCampo].value = valore;
	}
	catch (e) {}
}

// NUMERO DI FOGLI INTERNI
function calcolaNumFogliInterni() {
	verFacciate();

	var facciate   = getInt(fFacciate); // Numero di facciate
	var fronteRetro = getStr(fFronteRetro); // Stampa fronte/retro o solo fronte

	var copertina  = getStr(fCopertina); // Tipo copertina o senza copertina
	
	var numFogli = (fronteRetro == "solo_fronte" ? facciate : facciate/2); // Se la stampa avviene fronte e retro, il numero di fogli necessario sara' uguale alla meta' delle facciate
	var numFogliCopertina = (copertina == "" ? 0 : 2); // Se non viene richiesta la copertina non serve nessun foglio, altrimenti ne servono 2
	
	if (copertina == "auto") {
		numFogli -= numFogliCopertina;
	}
	
	return numFogli; // Il numero di fogli interni necessari
}

// PESO CARTA FOGLI INTERNI (1 copia)
function calcolaPesoCartaInt () {
	var formato    = getStr(fFormato); // Formato scelto 
	var grammiInt = getStr(fGrammiInt); // Grammatura delle pagine interne
	
	supTotFogliInt = calcolaNumFogliInterni() * areaCarta[formato]; // Superficie totale dei fogli interni (Mq)
	
	return ((grammiInt / 1000) * supTotFogliInt); // Peso totale fogli interni (Kg)
}

// PESO CARTA COPERTINA (1 copia)
function calcolaPesoCopertina () {
	var copertina  = getStr(fCopertina); // Tipo copertina o senza copertina
	var formato    = getStr(fFormato); // Formato scelto
	var grammiCop	= getStr(fGrammiCop); // Grammatura della copertina
	var numFogliCopertina = (copertina == "" ? 0 : 2); // Se non viene richiesta la copertina non serve nessun foglio, altrimenti ne servono 2
	
	var supTotCopertina = numFogliCopertina * areaCarta[formato]; // Superficie totale copertina (Mq)
	return ((grammiCop / 1000) * supTotCopertina); // Peso totale copertina (Kg)
	
}

// COSTO CARTA FOGLI INTERNI
function calcolaCostoCartaInt (pesoTotFogliInt) {
	var cartaTipo   = getStr(fCartaTipo); // Tipo di carta per le pagine interne
	return (pesoTotFogliInt * costoCarta[cartaTipo]);
}

// COSTO CARTA COPERTINA
function calcolaCostoCopertina (pesoTotCopertina) {
	var cartaCop   = getStr(fCartaCop); // Tipo di carta per la copertina
	return (pesoTotCopertina * costoCarta[cartaCop]);
}
	
// COSTO STAMPA
function calcolaCostoStampa () {
	var fronteRetro = getStr(fFronteRetro); // Stampa fronte/retro o solo fronte
	var latiStampa = (fronteRetro == "solo_fronte" ? 1 : 2);
	var quantita = getInt(fQuantita);
	var numFogliInterni = calcolaNumFogliInterni(); // Numero di fogli interni
	var formato = getStr(fFormato); // Formato scelto
	var numPassaggi = (numFogliInterni / faccFoglio[formato]) * latiStampa * quantita;
	
	var copertina  = getStr(fCopertina); // Tipo copertina o senza copertina
	var numFogliCopertina = (copertina == "" ? 0 : 2); // Se non viene richiesta la copertina non serve nessun foglio, altrimenti ne servono 2
	var numPassaggiCop = (numFogliCopertina / faccFoglio[formato]) * latiStampa * quantita;
	
	// Promozione con sconti per fasce di quantita' A3 (passaggi fogli interni)
	if (numPassaggi <= 300) { costoStampaInt = fasciaPrezzo[0] * numPassaggi; }
	if (numPassaggi > 300 && numPassaggi <= 1000) { costoStampaInt = (fasciaPrezzo[0] * 300) + ((numPassaggi - 300) * fasciaPrezzo[1]); }
	if (numPassaggi > 1000 && numPassaggi <= 2000) { costoStampaInt = (fasciaPrezzo[0] * 300) + (fasciaPrezzo[1] * 700) + ((numPassaggi - 1000) * fasciaPrezzo[2]); }
	if (numPassaggi > 2000) { costoStampaInt = (fasciaPrezzo[0] * 300) + (fasciaPrezzo[1] * 700) + (fasciaPrezzo[2] * 1000) + ((numPassaggi - 2000) * fasciaPrezzo[3]); }
	
	// Promozione con sconti per fasce di quantita' A3 (passaggi copertina)
	if (numPassaggiCop <= 300) { costoStampaCop = fasciaPrezzoCop[0] * numPassaggiCop; }
	if (numPassaggiCop > 300 && numPassaggiCop <= 1000) { costoStampaCop = (fasciaPrezzoCop[0] * 300) + ((numPassaggiCop - 300) * fasciaPrezzoCop[1]); }
	if (numPassaggiCop > 1000 && numPassaggiCop <= 2000) { costoStampaCop = (fasciaPrezzoCop[0] * 300) + (fasciaPrezzoCop[1] * 700) + ((numPassaggiCop - 1000) * fasciaPrezzoCop[2]); }
	if (numPassaggiCop > 2000) { costoStampaCop = (fasciaPrezzoCop[0] * 300) + (fasciaPrezzoCop[1] * 700) + (fasciaPrezzoCop[2] * 1000) + ((numPassaggiCop - 2000) * fasciaPrezzoCop[3]); }
	

/*	if (numPassaggi <= 800) { // Vecchia promozione
		costoStampaInt = costoStampaFacc[formato]  * (numPassaggi * faccFoglio[formato]); // Costo di stampa di una facciata * numero di passaggi (ovvero foglio A3) x quantita' di facciate per passaggio (1 per formato A3, 2 per A4, 4 per A5)
	} else {
		costoStampaInt = costoStampaFacc800Pass[formato]  * (numPassaggi * faccFoglio[formato]); // * quantita;
	}
*/
	
//	var costoStampaCop = costoStampaFacc[formato]  * (numPassaggiCop * faccFoglio[formato]); // OLD

	return (costoStampaInt + costoStampaCop);
}

// Costi di trasporto: vedi costiTrasporto.js

function calcola () {
	
	var quantita = getInt(fQuantita); // Numero di copie
	if (quantita < 1 || quantita > quantitaLimite) {
		quantita = 1; // Verifica che non sia stata impostata una quantita' inferiore a 1 o superiore al limite
		document.forms[nomeForm].elements['quantita'].value = quantita; // e imposta il campo del form
	}

	// Costo di avviamento
	var copertina  = getStr(fCopertina); // Tipo copertina o senza copertina
	var avviamento = avviamentoCopertina[copertina];
	
	// Costo di stampa
	var costoStampa = calcolaCostoStampa();
	
	// Costo della plastificazione
	var formato = getStr(fFormato);
	var plastica   = getStr(fPlastica);
	var costoPlastica = ((plastica != "") && (copertina != "")) ? avviamentoPlastica + (quantita * (plasticaCop[formato] * 2)) : 0.0;
	
	// Costo della rilegatura
	var rilegatura = getStr(fRilegatura);
	var costoRilegatura = avviamentoLega[rilegatura] + (quantita * rilegaturaCopia[rilegatura]);
	
	// Costo per Piegatura e Cordonatura (applicato solo per copertina rigida
	if (getStr(fCopertina) == "rigida") {
		costoPiegaCordo = avviamentoPiega + (quantita * costoSingolaPiega);
	} else {
		costoPiegaCordo = 0;
	}
	
	// Costo totale della carta (fogli interni + copertina)
	var pesoCartaInt = calcolaPesoCartaInt() * quantita; // Peso della carta dei fogli interni (Kg)
	var pesoCartaCop = calcolaPesoCopertina() * quantita; // Peso della carta della copertina (Kg)
	var pesoCartaTot = pesoCartaInt + pesoCartaCop // Peso totale della carta (Kg)
	var costoCartaTot = calcolaCostoCartaInt(pesoCartaInt) + calcolaCostoCopertina(pesoCartaCop);
	
	riepilogo += "\n Peso carta fogli int. (Kg): " + pesoCartaInt;
	riepilogo += "\n Costo carta int. (Euro): " + calcolaCostoCartaInt(pesoCartaInt);
	riepilogo += "\n Peso carta copertina (Kg): " + pesoCartaCop;
	riepilogo += "\n Costo carta cop. (Euro): " + calcolaCostoCopertina(pesoCartaCop);
	riepilogo += "\n Peso carta totale (Kg): " + pesoCartaTot;
	riepilogo += "\n Costo carta totale (Euro): " + costoCartaTot;
	
	
	// Totale parziale
	var totParziale = avviamento + taglioPolar + costoStampa + costoPlastica + costoRilegatura + costoPiegaCordo + costoCartaTot;
	
	// Costo di trasporto
//	var costoSpedizione = calcolaTrasporto(pesoCartaTot, getStr(fDelivery), totParziale);
	
	// Peso totale del materiale
	/* Vedi pesoCartaTot */
	
	// Costo singola copia
	var costoSingolaCopia = totParziale / quantita; // (totParziale + costoSpedizione) / quantita;
	
	// Costo totale (iva esclusa)
	var costoTotaleNetto = totParziale; // + costoSpedizione;
	
	setFloat(fAvviamento, avviamento, 2);
	setFloat(fCostoBase, costoStampa, 2);
	setFloat(fCostoPlastica, costoPlastica, 2);
	setFloat(fCostoRilegatura, costoRilegatura, 2);
	setFloat(fCostoPiegaCordo, costoPiegaCordo,2);
	setFloat(fCostoTaglioPolar, taglioPolar,2);
	setFloat(fCostoCarta, costoCartaTot,2);
//	setFloat(fCostoSpedizione, costoSpedizione, 2);
	setFloat(fpesocarta, (pesoCartaTot*1.2), 2); // maggiorazione 20% sul peso carta
	setFloat(fCostoSingola, costoSingolaCopia, 3);
   setFloat(fTotale, costoTotaleNetto, 2);
	setFloat(fTotaleIVA, costoTotaleNetto * 1.2, 2);
	}
