var minimalka_upust = 250;

//zdefiniowanie danych dotyczących papierów
function PapierDef(Nazwa, SzerArk,WysArk,Cena,Gramatura, Uszlachetnianie){
  	this.Nazwa = Nazwa
	this.SzerArk = SzerArk
    this.WysArk = WysArk
  	this.Cena = Cena
	this.Gramatura = Gramatura
	this.Uszlachetnianie = Uszlachetnianie
}
function UszlachetnianieDef(Nazwa, CenaJednostkowa, CzasJednostkowy, CzasPrzygotowania, Doplata){
  	this.Nazwa = Nazwa;
  	this.CenaJednostkowa = CenaJednostkowa;
	this.CzasJednostkowy = CzasJednostkowy;
	this.CzasPrzygotowania = CzasPrzygotowania;
	this.Doplata = Doplata;
}
function IntrolDef(Nazwa, CenaJednostkowa, CzasJednostkowy, CzasPrzygotowania){
  	this.Nazwa = Nazwa;
  	this.CenaJednostkowa = CenaJednostkowa;
	this.CzasJednostkowy = CzasJednostkowy;
	this.CzasPrzygotowania = CzasPrzygotowania;
  	}

var szer_ark_okl, wys_ark_okl, Index_wybranej_okladki,Index_wybranego_papieru, Liczba_stron;
var Liczba_ciec_cv, Gramatura_Okl, Cena_uszlachetniania_okladki, Liczba_arkuszy_okladek, druk_okladki, druk_srodka, Wspolczynnik_kosztu;
var Liczba_ciec, Liczba_arkuszy, Gramatura, Naklad;
var Liczba_uzytkow_na_arkuszu_igen, Liczba_uzytkow_na_arkuszu_nuvera, Wspolczynnik_wagi_arkusza, Koszt_papieru, SzerOkladki;
var WysOkladki, wynik_czb, wynik_kolor,  awaria_igen, awaria_nuvera;
var Szer_Arkusza_nuvera, Wys_Arkusza_nuvera, Szer_Arkusza_igen, Wys_Arkusza_igen;


var debug=" adadad asdasdad<br><br><table  width=200><TR><TD align=left>";
var WWW=false;
var klient_upust;
var klient_upust_kol;

// współczynniki i ceny wyjściowe
var	Cena_EUR = 4.25;
var cena_jednostkowa_personalizacji = 0.02;
var Koszt_toneru_dla_sredniego_zadruku = 0.08;
var RoboczoGodzina = 25;
var Krawedz_szycia =2;
var wspolczynnik_formatu_B = 1;  /// domyslnie jest 1  i ustawiany na 0.9 dla formatów B do liczenia ceny druku czarnego
var wspolczynnik_oplacalnosci_insertowania=0.0; //dla jakiego udziału stron czarnodiałych cały druk odbywa się na iGenie (% str. cz-b)


 // utworzenie tablicy papierów
 // UWAGA!!! przy usunięciu bądź dodania jakiegoś materiału należy nmienić warunek dla papierów ozdobnych w linii 734 (komunikat: js_alert_ozdobny_na_presteku)
PapierDane = new Array();//    nazwa,                      		max wymiar  cena,      możliwe gramatury.     			możliwości uszlachetniania	Grubosci
PapierDane[0] = new PapierDef(js_bez_okladki,		     				999,  999,  0,	new Array("  -  "),						new Array("0")			);
PapierDane[1] = new PapierDef(js_papier_offsetowy,	     				330,  488,  4.50,	new Array(80,90),					new Array("0")			);
PapierDane[2] = new PapierDef(js_papier_powlekany_matowy, 				330,  488,  4.80, 	new Array(150,200,250,300),			new Array(0,3,4)		);// (0,1,2,3,4,5,6)
PapierDane[3] = new PapierDef(js_papier_powlekany_blysk,		  		330,  488,  4.80,	new Array(150,200,250,300),			new Array(0,3,4)		);// (0,1,2,3,4,5,6)
PapierDane[4] = new PapierDef(js_karton_Trucard,  						330,  488,  9.00,	new Array("350"),					new Array(0,3,4)		);// (0,1,2,3,4,5,6)
PapierDane[5] = new PapierDef(js_karton_jednostronnie_powlekany,		330,  488,  5.90, 	new Array("250"),					new Array(0,1,2)		);// (0,1,2,5)
PapierDane[6] = new PapierDef(js_Tworzywo_sztuczne_PET,  				324,  450,  220.0,	new Array(190,355),					new Array("0")			);
PapierDane[7] = new PapierDef('GARDAPAT',								330,  488,  11,		new Array('200'),					new Array('0')			);
PapierDane[8] = new PapierDef('ELFENBENS Linen 137',					330,  488,  19,		new Array('245'),					new Array('0')			);
PapierDane[9] = new PapierDef('ACQUERELLO Comoscio',					330,  488,  28,		new Array('240'),					new Array('0')			);
PapierDane[10] = new PapierDef('ACQUERELLO Avorio',						330,  488,  28,		new Array('240'),					new Array('0')			);
PapierDane[11] = new PapierDef('TINTORETTO Gesso',						330,  488,  28,		new Array('250'),					new Array('0')			);
PapierDane[12] = new PapierDef('CONSTELLATION E23 Pinstripe',			330,  488,  28,		new Array('240'),					new Array('0')			);
PapierDane[13] = new PapierDef('CONSTELLATION E33 Raster',				330,  488,  28,		new Array('240'),					new Array('0')			);
PapierDane[14] = new PapierDef('LESSEBO Ivory',							330,  488,  9,		new Array('250'),					new Array('0')			);
//PapierDane[15] = new PapierDef('CURTIS MALTS Speyside',					350,  500,  26,		new Array('300'),					new Array('0')			);



// utworzenie tablicy uslug uszlachetniania
//////// UWAGA!  jeśli zmienia się jakieś usługi należy pamiętać o zmianie tablicy indeksów w  tablicy OkladkaDane //////////// 0.28
UszlachetnianieDane = new Array()			//	nazwa 									koszt szt. 	czas jedn.	czas przygotowania doplata
UszlachetnianieDane[0] = new UszlachetnianieDef(js_Bez_uszlachetniania,					0,			0,			0,			0);
UszlachetnianieDane[1] = new UszlachetnianieDef(js_Laminowanie_jednostronne_blysk,		0.105,		1/480,		0.28,		0.1429);	//480 przelotow / h 10gł + 7gr z narzutem 50%
UszlachetnianieDane[2] = new UszlachetnianieDef(js_Laminowanie_jednostronne_mat,		0.15,		1/480,		0.28,		0.1479);	//j.w. + 10gr z narzutem 50%
UszlachetnianieDane[3] = new UszlachetnianieDef(js_Laminowanie_dwustronne_blysk,		0.21,		2/480,		0.28,		0.2858);	//jednostronne x 2
UszlachetnianieDane[4] = new UszlachetnianieDef(js_Laminowanie_dwustronne_mat,			0.3,		2/480,		0.28,		0.2958);	//jednostronne x 2
//UszlachetnianieDane[5] = new UszlachetnianieDef(js_Lakierowanie_UV_jednostronne,		0.20,		0,			0,			0);		//koszt 10gr  x narzut 100%
//UszlachetnianieDane[6] = new UszlachetnianieDef(js_Lakierowanie_UV_dwustronne,		0.40,		0,			0,			0);  	//jednostronne x 2


// utworzenie tablicy uslug introligatorskich
IntrolDane = new Array()		//nazwa												koszt szt. 	czas jedn.	czas przygotowania
IntrolDane[0] = new IntrolDef('Cięcie na krajarce arkusza na użytki',				0.00075,	1/250,		0.08);
IntrolDane[1] = new IntrolDef('Falcowanie 1 lub 2 złamy',							0,			1/5000,		0.25);	//6000 uzytków / h
IntrolDane[2] = new IntrolDef('Bigowanie - 1 big',									0,			1/300,		0.16);	//300 bigów/h
IntrolDane[3] = new IntrolDef('Bigowanie > 1 big',									0,			2/300,		0.16);	// jak wyżej x 2
IntrolDane[4] = new IntrolDef('Łamanie po bigowaniu',								0,			1/300,		0.08);	// tyle co bigowanie. jesli wybrano >1big w kodzie nalezy pomnozyc x2
IntrolDane[5] = new IntrolDef('Listwowanie',										0.5,		1/150,		0.10);	// z założenia 50 gr za szt. + dodatkowe warunki w kodzie
IntrolDane[6] = new IntrolDef('Dziurkowanie 2 dziurki',								0,			0.0000012,	0.2);	//liczone dla papieru 100g jesli grupszy papier nalezy cene pomnozyc proporcjonalnie do papieru
IntrolDane[7] = new IntrolDef('Dziurkowanie 4 dziurki',								0,			0.0000024,	0.2);	//liczone dla papieru 100g jesli grupszy papier nalezy cene pomnozyc proporcjonalnie do papieru
IntrolDane[8] = new IntrolDef('Szycie zeszytowe',									0.10,		0,			0);		// jeśli zszywki oczkowe do kosztu nalezy dodac 3gr/szt
IntrolDane[9] = new IntrolDef('Oklejanie książek',									0.1,		1/80,		0.08);	// jeśli zszywki oczkowe do kosztu nalezy dodac 3gr/szt
IntrolDane[10] = new IntrolDef('Klejenie Twardej oprawy',							0,			0,			0);		// cena jest liczona od sztuki jeżli mały format to 10 duzy 13
IntrolDane[11] = new IntrolDef('Spiralowanie',										0,			0,			0.16);	// cena sztuki jest liczona oosobną funkcją cena_spiralowania()


function grubosc_kartki(papier,gram){ //mm

	var js_papier_samoprzylepny="", js_folia_samoprzylepna="";
	var GrIdx = new Array();
	GrIdx[80] = 1; GrIdx[90] = 2; GrIdx[100] = 3; GrIdx[115] = 4; GrIdx[150] = 5; GrIdx[180] = 6; GrIdx[190] = 7;
	GrIdx[200] = 8; GrIdx[240] = 9; GrIdx[245] = 10; GrIdx[250] = 11; GrIdx[300] = 12; GrIdx[350] = 13; GrIdx[355] = 14;

	GruboscDane = new Array();//    nazwa,                            G80	G90		G100	G115	G150	G180	G190	G200	G240	G245	G250	G300	G350	G355
	GruboscDane[0] = new Array(js_papier_offsetowy,                   0.1,	0.113,	0.125,	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0  	);
	GruboscDane[1] = new Array(js_papier_powlekany_matowy,            0,  	0,  	0,  	0.095,	0.129,	0,  	0,  	0.18,	0,  	0,  	0.239,	0.286,	0,  	0  	);
	GruboscDane[2] = new Array(js_papier_powlekany_blysk,             0,  	0,  	0,  	0.095,	0.129,	0,  	0,  	0.18,	0,  	0,  	0.239,	0.286,	0,  	0  	);
	GruboscDane[3] = new Array(js_karton_Trucard,                     0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0.38,  	0  	);
	GruboscDane[4] = new Array(js_karton_jednostronnie_powlekany,     0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0.35,	0,  	0,  	0  	); //?
	GruboscDane[5] = new Array(js_Tworzywo_sztuczne_PET,              0,  	0,  	0,  	0,  	0,  	0,  	0.145, 	0,  	0,  	0,  	0,  	0,  	0,  	0.27);
	GruboscDane[6] = new Array(js_papier_samoprzylepny,               0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0  	);
	GruboscDane[7] = new Array(js_folia_samoprzylepna,                0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0  	);
	GruboscDane[8] = new Array('GARDAPAT',                            0,  	0,  	0,  	0,  	0,  	0,  	0,  	0.25,  	0,  	0,  	0,  	0,  	0,  	0  	);
	GruboscDane[9] = new Array('ELFENBENS Linen 137',                 0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0.27,  	0,  	0,  	0,  	0  	);
	GruboscDane[10] = new Array('ACQUERELLO Comoscio',                0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0.33,  	0,  	0,  	0,  	0,  	0  	);
	GruboscDane[11] = new Array('ACQUERELLO Avorio',                  0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0.33,  	0,  	0,  	0,  	0,  	0  	);
	GruboscDane[12] = new Array('TINTORETTO Gesso',                   0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0.35,  	0,  	0,  	0  	);
	GruboscDane[13] = new Array('CONSTELLATION E23 Pinstripe',        0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0.27,  	0,  	0,  	0,  	0,  	0  	);
	GruboscDane[14] = new Array('CONSTELLATION E33 Raster',           0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0.27,  	0,  	0,  	0,  	0,  	0  	);
	GruboscDane[15] = new Array('LESSEBO Ivory',                      0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0.28,  	0,  	0,  	0  	);
	GruboscDane[16] = new Array('CURTIS MALTS Speyside',              0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0,  	0.42,  	0,  	0  	);

	for (var i = 0; i <GruboscDane.length; i++) if (GruboscDane[i][0] == papier) PapIdx = i;

	if(gram != "  -  " && papier != 'bez okladki') return GruboscDane[PapIdx][GrIdx[gram]]; else return 0;
}

function rodzajSpirali(grub){
	grub = grub+0.5;
	var Spir='3/16"';
	if (grub>3)    Spir='1/4"';
	if (grub>4)    Spir='3/8"';
	if (grub>7)    Spir='7/16"';
	if (grub>8.5)    Spir='1/2"';
	if (grub>10.0)    Spir='9/16"';
	if (grub>11.5)    Spir='błąd';
	debug += "<BR>Grubość  = " +grub;
	debug += "<BR>Spirala  = " +Spir;
	return Spir;
}

function setPapier() {
	for (var i = 1; i <PapierDane.length; i++) {
		document.kalkulator.Papier.options[i-1] = new Option(PapierDane[i].Nazwa);
	}
	setGramatura();
}

function setOkladka() {
	for (var i = 0; i <PapierDane.length; i++) {
		document.kalkulator.Okladka.options[i] = new Option(PapierDane[i].Nazwa);
	}
	setGramatura_Okl();
}

function setGramatura()
{
	var OldGram = document.kalkulator.Gramatura[document.kalkulator.Gramatura.selectedIndex].text;

	var Index_wybranego_papieru = document.kalkulator.Papier.selectedIndex; // to będzie globalne
	document.kalkulator.Gramatura.length = 0;
	var UstawKursor=0;
	var nr=0;

	for (var i = 0; i <PapierDane[(Index_wybranego_papieru+1)].Gramatura.length; i++) {
		document.kalkulator.Gramatura.options[nr] = new Option(PapierDane[Index_wybranego_papieru+1].Gramatura[i]);
		if(	PapierDane[Index_wybranego_papieru+1].Gramatura[i]== OldGram) UstawKursor=nr;
		nr++;
	}
	document.kalkulator.Gramatura.options[UstawKursor].selected = true;
	setUszlachetnianie();
}

function setGramatura_Okl()
{
	var OldGram = document.kalkulator.GramaturaOkl[document.kalkulator.GramaturaOkl.selectedIndex].text;

	var Index_wybranego_papieru = document.kalkulator.Okladka.selectedIndex; // to będzie globalne
	document.kalkulator.GramaturaOkl.length = 0;
	var UstawKursor=0;
	var nr=0;
	for (var i = 0; i <PapierDane[Index_wybranego_papieru].Gramatura.length; i++) {
		document.kalkulator.GramaturaOkl.options[nr] = new Option(PapierDane[Index_wybranego_papieru].Gramatura[i]);
		if(	PapierDane[Index_wybranego_papieru].Gramatura[i]== OldGram) UstawKursor=nr;
		nr++;
	}
	document.kalkulator.GramaturaOkl.options[UstawKursor].selected = true;

		if (document.kalkulator.Okladka.options[0].selected) {
		Bez_okladki=true;
	}else{
		Bez_okladki=false;
	}
	document.kalkulator.GramaturaOkl.disabled = Bez_okladki;
	//document.kalkulator.UszlachetnianieOkl.disabled = Bez_okladki;
	document.getElementById("ID_dwustronny").disabled = Bez_okladki;
	document.getElementById("ID_jednostronny").disabled = Bez_okladki;
	document.getElementById("ID_dwustronny_lb").disabled = Bez_okladki;
	document.getElementById("ID_jednostronny_lb").disabled = Bez_okladki;

	setUszlachetnianie_Okl()
}

function setUszlachetnianie() {

	var OldUszlachet = document.kalkulator.Uszlachetnianie[document.kalkulator.Uszlachetnianie.selectedIndex].text;
	Gramatura = document.kalkulator.Gramatura[document.kalkulator.Gramatura.selectedIndex].text;
	var UstawKursor=0;
	for (var i=0; i<PapierDane.length; i++)
	{
		if(document.kalkulator.Papier[document.kalkulator.Papier.selectedIndex].text == PapierDane[i].Nazwa)
		{
			Index_wybranego_papieru = i;
		}
	}

	document.kalkulator.Uszlachetnianie.length = 0;	//	usuń opcje z listy
	if (Gramatura > 180){
		for (var i = 0; i < PapierDane[Index_wybranego_papieru].Uszlachetnianie.length; i++) {
			document.kalkulator.Uszlachetnianie.options[i] = new Option(UszlachetnianieDane[PapierDane[Index_wybranego_papieru].Uszlachetnianie[i]].Nazwa);
			if(UszlachetnianieDane[PapierDane[Index_wybranego_papieru].Uszlachetnianie[i]].Nazwa == OldUszlachet) UstawKursor=i;
		}
		document.kalkulator.Uszlachetnianie.options[UstawKursor].selected = true;
	}else{ document.kalkulator.Uszlachetnianie.options[0]= new Option(js_Bez_uszlachetniania);}

	if(document.kalkulator.Uszlachetnianie.length <= 1) {
		document.kalkulator.Uszlachetnianie.disabled=true;
	}else{
		document.kalkulator.Uszlachetnianie.disabled=false;
	}
}

function setUszlachetnianie_Okl() {

	var OldUszlachet = document.kalkulator.UszlachetnianieOkl[document.kalkulator.UszlachetnianieOkl.selectedIndex].text;
	Gramatura = document.kalkulator.GramaturaOkl[document.kalkulator.GramaturaOkl.selectedIndex].text;
	var UstawKursor=0;
	for (var i=0; i<PapierDane.length; i++)
	{
		if(document.kalkulator.Okladka[document.kalkulator.Okladka.selectedIndex].text == PapierDane[i].Nazwa)
		{
			Index_wybranego_papieru = i;
		}
	}

	document.kalkulator.UszlachetnianieOkl.length = 0;	//	usuń opcje z listy
	if (Gramatura > 180){
		for (var i = 0; i < PapierDane[Index_wybranego_papieru].Uszlachetnianie.length; i++) {
			document.kalkulator.UszlachetnianieOkl.options[i] = new Option(UszlachetnianieDane[PapierDane[Index_wybranego_papieru].Uszlachetnianie[i]].Nazwa);
			if(UszlachetnianieDane[PapierDane[Index_wybranego_papieru].Uszlachetnianie[i]].Nazwa == OldUszlachet) UstawKursor=i;
		}
		document.kalkulator.UszlachetnianieOkl.options[UstawKursor].selected = true;
	}else{ document.kalkulator.UszlachetnianieOkl.options[0]= new Option(js_Bez_uszlachetniania);}

	if(document.kalkulator.UszlachetnianieOkl.length <= 1) {
		document.kalkulator.UszlachetnianieOkl.disabled=true;
	}else{
		document.kalkulator.UszlachetnianieOkl.disabled=false;
	}
}


// ╒══════════════════════════════════════╕ //
// │            Oobliczenia cen           │ //
// ╘══════════════════════════════════════╛ //



function Cena_Uszlachetniania(liczbaArkuszy, liczbaArkuszy_cv)
{
	var cena1, cena2;
	// poniwarz index listy uszlachetniania zmieniają się w zależności od papieru  trzeba rozpoznać co to za usługa po tekstcie a nie po indexie.
	for (var i = 0; i < UszlachetnianieDane.length; i++)
	{
		if(UszlachetnianieDane[i].Nazwa == document.kalkulator.Uszlachetnianie[document.kalkulator.Uszlachetnianie.selectedIndex].text)
		{
			cena1 = UszlachetnianieDane[i].CenaJednostkowa * liczbaArkuszy + UszlachetnianieDane[i].CzasJednostkowy * liczbaArkuszy * RoboczoGodzina + UszlachetnianieDane[i].CzasPrzygotowania * RoboczoGodzina + UszlachetnianieDane[i].Doplata * liczbaArkuszy  ;
		}
		if(UszlachetnianieDane[i].Nazwa == document.kalkulator.UszlachetnianieOkl[document.kalkulator.UszlachetnianieOkl.selectedIndex].text)
		{
			cena2 = UszlachetnianieDane[i].CenaJednostkowa * liczbaArkuszy_cv + UszlachetnianieDane[i].CzasJednostkowy * liczbaArkuszy_cv * RoboczoGodzina + UszlachetnianieDane[i].CzasPrzygotowania * RoboczoGodzina + UszlachetnianieDane[i].Doplata * liczbaArkuszy_cv  ;
		}
	}
	return cena1+cena2;
}

function cena_spiralowania(dlugosc,liczbastron){

	var cenaRobociznyPerforacji = 0.10;
	var cenaRobociznyZaciskania = 0.40;
	var podzialkaPerforatora	= 8.5;
	var cenaJednostkowaOczkaSpirali = 0.00323;
	liczbaOczekSpirali = Math.ceil(dlugosc / podzialkaPerforatora);
	cena_spirali = Math.ceil(liczbaOczekSpirali*cenaJednostkowaOczkaSpirali*1.2*100)/100;
	cena_robocizny = Math.ceil((liczbastron/2 * grubosc_kartki(document.kalkulator.Papier[document.kalkulator.Papier.selectedIndex].text,document.kalkulator.Gramatura[document.kalkulator.Gramatura.selectedIndex].text))/3)*cenaRobociznyPerforacji + cenaRobociznyZaciskania;
	cena = cena_robocizny + cena_spirali;
	return cena;
}

function Cena_Introligatorki()
{
	var Gramatura = document.kalkulator.Gramatura[document.kalkulator.Gramatura.selectedIndex].text;
	var GramaturaOkl = document.kalkulator.GramaturaOkl[document.kalkulator.GramaturaOkl.selectedIndex].text;
	var papier = document.kalkulator.Papier[document.kalkulator.Papier.selectedIndex].text
	var okladka = document.kalkulator.Okladka[document.kalkulator.Okladka.selectedIndex].text
	var naklad = document.kalkulator.Liczba_folderow.value


	if (PapierDane[Index_wybranego_papieru].SzerArk == PapierDane[Index_wybranej_okladki].SzerArk && PapierDane[Index_wybranego_papieru].WysArk == PapierDane[Index_wybranej_okladki].WysArk)
	{
		if (!document.kalkulator.Okladka.selectedIndex) Okladka = 2*naklad*grubosc_kartki(okladka,GramaturaOkl);  else	Okladka = 0;
		Cena_ciecia = Math.ceil( (Liczba_arkuszy * grubosc_kartki(papier,Gramatura) + Okladka)/ 80  ) * Liczba_ciec ; 			// liczba ciec * liczba 8-centymetrowych stosów papieru
	}else{
		if (!document.kalkulator.Okladka.selectedIndex) Okladka = 2*naklad*grubosc_kartki(okladka,GramaturaOkl);  else	Okladka = 0;
		Cena_ciecia = Math.ceil( (Liczba_arkuszy * grubosc_kartki(papier,Gramatura))/ 80  ) * Liczba_ciec ; 					// liczba ciec * liczba 8-centymetrowych stosów papieru
		Cena_ciecia += Math.ceil( 2*naklad*grubosc_kartki(okladka,GramaturaOkl)/ 80  ) * Liczba_ciec_cv ; 						// liczba ciec * liczba 8-centymetrowych stosów papieru okładki
	}

	var dlugosc_spirali;
	if(Krawedz_szycia == 1) dlugosc_spirali = Math.min( document.kalkulator.SzerUzytku.value*1, document.kalkulator.WysUzytku.value*1); else  dlugosc_spirali = Math.max( document.kalkulator.SzerUzytku.value*1, document.kalkulator.WysUzytku.value*1);
	cena_spiralkowania = cena_spiralowania(dlugosc_spirali,document.kalkulator.Liczba_stron.value*1)
	debug += "<BR>cena ciecia  = " +formatNum(Cena_ciecia,2);
	debug += "<BR>cena spiralowania  = " +formatNum(cena_spiralkowania*Liczba_folderow,2);
	cena_introligatorki = Cena_ciecia*1 + cena_spiralkowania*Liczba_folderow;

	return cena_introligatorki;
}



function Cena_papieru(papier,gramatura,Liczba_arkuszy){
	var PapIdx;
	for (var i = 0; i <PapierDane.length; i++) if (PapierDane[i].Nazwa == papier) PapIdx = i;
	rozmiar_do_ciecia =PapierDane[PapIdx].SzerArk*0.001 * PapierDane[PapIdx].WysArk*0.001;
	Waga_arkusza = rozmiar_do_ciecia * gramatura / 1000;
	var Koszt_papieru = PapierDane[PapIdx].Cena * (Liczba_arkuszy * Waga_arkusza);
	//debug += "<BR>Waga początkowa papieru "+papier + " = " +Liczba_arkuszy * Waga_arkusza;
	return (Koszt_papieru) * 1.15;
}


function Cena_druku(Liczba_przelotow, liczbaUzytkowNaArkuszy)
{

//	poleZadruku = document.kalkulator.SzerUzytku.value*0.001 * document.kalkulator.WysUzytku.value*0.001 * liczbaUzytkowNaArkuszy;

	//wynik1 = Liczba_przelotow * 0.60  ;
//	wynik2 = poleZadruku/(0.35*0.50)*Liczba_przelotow * 0.20;
	//alert("lb uz na ark "+liczbaUzytkowNaArkuszy + "   " + poleZadruku/(0.35*0.50))

		wynik1 = Liczba_przelotow * 0.67  ;
wynik2=0;

	debug += "<BR>cena druku = " + formatNum(wynik1,2);
	debug += "<BR>cena toneru = " + formatNum(wynik2,2);
	return wynik1 +wynik2;
}


function liczba_uzytkow(Szer_Arkusza, Wys_Arkusza, SzerUzytku, WysUzytku)
{
	//ustalamy że szerokość jest  mniejsza od wysokości
	if (SzerUzytku>WysUzytku) {
		tmp=SzerUzytku;
		SzerUzytku=WysUzytku;
		WysUzytku=tmp;
	}
	var Liczba_uzytkow_na_arkuszu, Liczba_ciec, macierz;
	// obliczamy ile uzytków zmiesci nie na arkuszu w zaleznoci od orietacji strony
	S1 = Math.floor( Szer_Arkusza / SzerUzytku );
	W1 = Math.floor( Wys_Arkusza / WysUzytku );
	S2 = Math.floor( Wys_Arkusza / SzerUzytku );
	W2 = Math.floor( Szer_Arkusza / WysUzytku );
	if (S1*W1>S2*W2) {
		Liczba_uzytkow_na_arkuszu= S1*W1;
		Liczba_ciec = (S1+W1)*2;	// cięcie liczone jest bez wycinki
		macierz= S1 +' x ' +W1;
		var obrot=1
	}else{
		Liczba_uzytkow_na_arkuszu= S2*W2;
		Liczba_ciec = (S2+W2)*2;
		macierz= S2 +' x ' +W2;
		var obrot=0
	}
	var Wynik = new Array();
	Wynik[0] = Liczba_uzytkow_na_arkuszu;
	Wynik[1] = Liczba_ciec;
	Wynik[2] = macierz;
	Wynik[3] = obrot;
	return Wynik;
}

function Kalkulacja()
{
	debug="";
	Liczba_folderow = document.kalkulator.Liczba_folderow.value;
	Liczba_stron = document.kalkulator.Liczba_stron.value;
	var macierz_cover, macierz_srodek;




	Czy_okladka = false;
	if(document.kalkulator.Okladka.selectedIndex>0) Czy_okladka = true;

	if(document.kalkulator.czy_dwustronny_srodek[1].checked){
		if (Liczba_stron%2)	Liczba_stron= Liczba_stron*1+2-(Liczba_stron%2);
		if (Liczba_stron - document.kalkulator.Liczba_stron.value == 1) alert(js_alert_Ostatnia_strona_bedzie_pusta);
		Liczba_kartek = Liczba_stron/2;
	}else{
		Liczba_kartek = Liczba_stron;
	}

	Gramatura = document.kalkulator.Gramatura[document.kalkulator.Gramatura.selectedIndex].text;
	Gramatura_Okl = document.kalkulator.GramaturaOkl[document.kalkulator.GramaturaOkl.selectedIndex].text;
	disable(0);

	Grubosc_wkladu = (Liczba_kartek * grubosc_kartki(document.kalkulator.Papier[document.kalkulator.Papier.selectedIndex].text, Gramatura))
	if(Grubosc_wkladu > 13.7)
	{
		alert("broszura zbyt gruba")
		return false;
	}



	//if ((SzerUzytku==210 && WysUzytku==297)||(SzerUzytku==214 && WysUzytku==301)||(SzerUzytku==148 && WysUzytku==210)||(SzerUzytku==152 && WysUzytku==214)||(SzerUzytku==105 && WysUzytku==148)||(SzerUzytku==109 && WysUzytku==152)||(SzerUzytku==244 && WysUzytku==344)||(SzerUzytku==172 && WysUzytku==244)||(SzerUzytku==123 && WysUzytku==172))	doplata_za_nietypowa_impozycje = 0;

	for (var i=0; i<PapierDane.length; i++)	if(document.kalkulator.Papier[document.kalkulator.Papier.selectedIndex].text == PapierDane[i].Nazwa) Index_wybranego_papieru = i;
	for (var i=0; i<PapierDane.length; i++)	if(document.kalkulator.Okladka[document.kalkulator.Okladka.selectedIndex].text == PapierDane[i].Nazwa) Index_wybranej_okladki = i;

	Szer_Arkusza = PapierDane[Index_wybranego_papieru].SzerArk-4;
	Wys_Arkusza  = PapierDane[Index_wybranego_papieru].WysArk-8;

	var SzerUzytku = document.kalkulator.SzerUzytku.value*1;
	var WysUzytku = document.kalkulator.WysUzytku.value*1;

	debug = "<table ><TR><TD align=left>BEZ INSERTOWANIA";
	debug += "<BR>rozmiar ark iGen3 = "+Szer_Arkusza + " x " + Wys_Arkusza ;

	// obliczamy ile uzytków zmiesci nie na arkuszu w zaleznoci od orietacji strony
	luz = liczba_uzytkow(Szer_Arkusza, Wys_Arkusza, SzerUzytku, WysUzytku);
	Liczba_uzytkow_na_arkuszu = luz[0];
	Liczba_ciec = luz[1];
	macierz_srodek = luz[2];

	Liczba_arkuszy   = Math.ceil( Liczba_folderow / Liczba_uzytkow_na_arkuszu)* Liczba_kartek;


	debug += "<BR>    <B> Liczba arkuszy = " + Liczba_arkuszy+"</B>";
	debug += "<BR>Liczba uzytkow na arkuszu = " + Liczba_uzytkow_na_arkuszu;

	szer_ark_okl = PapierDane[Index_wybranej_okladki].SzerArk-4;
	wys_ark_okl = PapierDane[Index_wybranej_okladki].WysArk-8;

	// obliczamy ile okladek zmiesci sie na arkuszu w zaleznoci od orietacji strony
	luz = liczba_uzytkow(szer_ark_okl, wys_ark_okl, SzerUzytku, WysUzytku);
	Liczba_okladek_na_arkuszu = luz[0];
	Liczba_ciec_cv = luz[1];
	macierz_cover = luz[2];

	Liczba_arkuszy_okladek=0;
	if(Czy_okladka) Liczba_arkuszy_okladek = Math.ceil( Liczba_folderow / Liczba_okladek_na_arkuszu )*2;


	var waga = 0;
	waga = Liczba_folderow * Liczba_kartek * (document.kalkulator.SzerUzytku.value-4) * (document.kalkulator.WysUzytku.value-4) * Gramatura * 0.000000001;
	if(Czy_okladka)
	{
		waga += Liczba_folderow * 2 * (document.kalkulator.SzerUzytku.value-4) * (document.kalkulator.WysUzytku.value-4) * Gramatura_Okl * 0.000000001;
	}
	debug += "<BR>Waga końcowa = "+waga;


	cenaPapieru = Cena_papieru(document.kalkulator.Papier[document.kalkulator.Papier.selectedIndex].text,document.kalkulator.Gramatura[document.kalkulator.Gramatura.selectedIndex].text,Liczba_arkuszy)

	if(Czy_okladka){
		cenaOkladki = Cena_papieru(document.kalkulator.Okladka[document.kalkulator.Okladka.selectedIndex].text,document.kalkulator.GramaturaOkl[document.kalkulator.GramaturaOkl.selectedIndex].text,Liczba_arkuszy_okladek)
	}else{
		cenaOkladki = 0;
	}
				debug += "<BR>     cenaPapieru = " + formatNum(cenaPapieru,2);
				debug += "<BR> cena papieru okladki = " + formatNum(cenaOkladki,2);

	if(document.kalkulator.czy_dwustronny_srodek[1].checked) dwustronny =2; else dwustronny =1;

	cenaDrukuSrodka  = Cena_druku(Liczba_arkuszy*dwustronny, Liczba_uzytkow_na_arkuszu)
	debug += "<BR>     cena druku razem = " + formatNum(cenaDrukuSrodka,2);


	cenaDrukuOkladek=0;
	if(Czy_okladka){
		if(document.kalkulator.czy_dwustronny[1].checked) dwustronny =2; else dwustronny =1;
		cenaDrukuOkladek += Cena_druku(Liczba_arkuszy_okladek*dwustronny, Liczba_okladek_na_arkuszu)
		debug += "<BR>     cena druku okladki = " + formatNum(cenaDrukuOkladek,2);
	}

	cenaDruku = cenaDrukuOkladek + cenaDrukuSrodka;

				debug += "<BR>     cena intr razem = " +formatNum(Cena_Introligatorki(),2);
				debug += "<BR>     Liczba_arkuszy_okladek = " +Liczba_arkuszy_okladek;
				debug += "<BR>     cena uszl = " + formatNum(Cena_Uszlachetniania(Liczba_arkuszy, Liczba_arkuszy_okladek),2);

	upust=1;
	if(document.kalkulator.dealer.value!=1) upust=1.15;
	var Cena_razem = (cenaPapieru + cenaOkladki + cenaDruku + Cena_Introligatorki() + Cena_Uszlachetniania(Liczba_arkuszy, Liczba_arkuszy_okladek))*upust;

	var minimalka='';

	if(Liczba_arkuszy >10000){
	//	alert (js_alert_Zamowienie_powyzej_10000_arkuszy);
	}

	stawkaVAT = ' (+ '+vat*stawka_vat+'% VAT)';
	var isbn=document.kalkulator.isbn.value;
	dl=0
	isbn= isbn.toLowerCase();
	while(dl!=isbn.length){
		dl=isbn.length;
		isbn = isbn.replace('isbn','');
		isbn = isbn.replace(' ','');
		isbn = isbn.replace(':','');
		isbn = isbn.replace('-','');
	}
	if(isbn>0) stawkaVAT = ' (+ '+vat*stawka_vat_ksiazki+'% VAT)';


	//doplataZaPrzyg = Math.min(Cena_razem*doplata_za_nietypowa_impozycje, 20);
	//Cena_razem += doplataZaPrzyg;
	tabelka='<table >';
	if(minimalka) tabelka += '<tr><td colspan=2><i>' + minimalka + '<BR><BR></i></td></tr>';
	tabelka += '<tr><td ><B>' +js_Calkowita_cena_zlecenia + '</B></td><td><B>' + formatNum((Cena_razem/kurs_waluty),2) + ' '+wal+ stawkaVAT+'</B></td></tr>';
	tabelka += '<tr><td ><B>' + js_Cena_jednego_egzemplarza + '</B></td><td><B>' + formatNum((Cena_razem/Liczba_folderow/kurs_waluty),2) + ' '+wal+ stawkaVAT+'</B></td></tr>';
	tabelka += '<tr><td >' + js_Szacunkowa_waga+ '</td><td>' +formatNum(waga,1)+' kg</td></tr>';


	tabelka += '<tr><td >' + js_Maksymalny_termin_realizacji + ' : &nbsp;</td><td><B>' + (oblicz_termin()/24)+js_dni_robocze + '</B></td></tr>';
	if (upust ==1 & kurs_waluty==1)	tabelka += '<tr><td ><i>Sugerowana cena detaliczna </i>:</td><td><i>' +formatNum(Cena_razem*1.15,2)+ ' '+wal+' (+ '+vat*stawka_vat+'% VAT)</i></td></tr>';
	tabelka += '<tr><td></td><td></td></tr>';


	if (!WWW){

		tabelka += '<tr><td align=right>  Cena druku okladek :'+'</td><td>'+formatNum(cenaDrukuOkladek*upust,2)+'</td></tr>';
		tabelka += '<tr><td align=right>    Cena druku kolor :'+'</td><td>'+formatNum(cenaDruku*upust*klient_upust_kol,2)+'</td></tr>';
		tabelka += '<tr><td align=right>        Cena papieru :'+'</td><td>'+formatNum(cenaPapieru*upust*klient_upust,2)+'</td></tr>';
		tabelka += '<tr><td align=right>Cena papieru okładki :'+'</td><td>'+formatNum(cenaOkladki*upust*klient_upust,2)+'</td></tr>';
		tabelka += '<tr><td align=right> Cena introligatorki :'+'</td><td>'+formatNum(Cena_Introligatorki()*upust*klient_upust,2)+'</td></tr>';
		tabelka += '<tr><td align=right>Cena uszlachetniania :'+'</td><td>'+formatNum(Cena_Uszlachetniania(Liczba_arkuszy, Liczba_arkuszy_okladek)*upust*klient_upust,2)+'</td></tr>';

	}
	document.getElementById("wynik").innerHTML =tabelka;
	document.kalkulator.Krawedz_oprawy.value = Krawedz_szycia;
	document.kalkulator.LiczbaArkuszy_igen.value = Liczba_arkuszy;
	document.kalkulator.LiczbaArkuszy_cover.value = Liczba_arkuszy_okladek;
	document.kalkulator.macierz_srodek.value = macierz_srodek;
	document.kalkulator.macierz_cover.value = macierz_cover;
	document.kalkulator.LiczbaKopii_igen.value = Math.ceil(Liczba_folderow / Liczba_uzytkow_na_arkuszu);
	document.kalkulator.rodzaj_spirali.value = rodzajSpirali(Liczba_kartek * grubosc_kartki(document.kalkulator.Papier[document.kalkulator.Papier.selectedIndex].text,document.kalkulator.Gramatura[document.kalkulator.Gramatura.selectedIndex].text));
	document.kalkulator.masa_sztuki.value = waga; //Liczba_folderow;
	document.kalkulator.pokrycie_index.value = document.kalkulator.pokrycie.selectedIndex;
	document.kalkulator.CenaRazem.value = formatNum(Cena_razem,2);
	document.kalkulator.CenaZaSztuke.value = formatNum(Cena_razem,2);
	document.kalkulator.termin.value = oblicz_termin();


	if(debuger) document.getElementById("wyn_dbg").innerHTML = debug+'</TD></TR></table>';
	debug="";
	return true;
}


function disable(przelacznik)
{
	if(przelacznik){
		szary=document.getElementById("wynik").innerHTML.replace(/<TD/g,'<TD class="szary" ')
		document.getElementById("wynik").innerHTML = szary;
	}
}


function ustaw_oprawe()
{

	if (Krawedz_szycia == 1 ) {
		szer_ksiazki = Math.max(document.kalkulator.SzerUzytku.value, document.kalkulator.WysUzytku.value);
		wys_ksiazki = Math.min(document.kalkulator.SzerUzytku.value, document.kalkulator.WysUzytku.value);
	}else {
		szer_ksiazki = Math.min(document.kalkulator.SzerUzytku.value, document.kalkulator.WysUzytku.value);
		wys_ksiazki = Math.max(document.kalkulator.SzerUzytku.value, document.kalkulator.WysUzytku.value);
		}

	//wyłączamy spiralowania jak jest za gruba książka
	Grubosc_wkladu = (document.kalkulator.Liczba_stron.value/2 * grubosc_kartki(document.kalkulator.Papier[document.kalkulator.Papier.selectedIndex].text, document.kalkulator.Gramatura[document.kalkulator.Gramatura.selectedIndex].text))
	if(Grubosc_wkladu > 11.5)
	{
		alert("broszura zbyt gruba")

	}else{

	}

}


function Sprawdz_dane()
{
	var blad=true;

	if (document.kalkulator.SzerUzytku.value == 0 || document.kalkulator.WysUzytku.value == 0 || document.kalkulator.Liczba_folderow.value == 0 || document.kalkulator.Liczba_stron.value == 0 )
	{
		alert(js_alert_Wypelnij_wszystkie_pola);
		blad=false;
	}

	if (Krawedz_szycia == 1 ) {
		szer_ksiazki = Math.max(document.kalkulator.SzerUzytku.value, document.kalkulator.WysUzytku.value);
		wys_ksiazki = Math.min(document.kalkulator.SzerUzytku.value, document.kalkulator.WysUzytku.value);
	}else {
		szer_ksiazki = Math.min(document.kalkulator.SzerUzytku.value, document.kalkulator.WysUzytku.value);
		wys_ksiazki = Math.max(document.kalkulator.SzerUzytku.value, document.kalkulator.WysUzytku.value);
	}
	if (wys_ksiazki > 334) {
		alert("Przekroczono maksymalną długość brzegu do spiralowania. Spróbuj wybrać oprawę po krótszym boku");
		blad=false;
	}

	if (document.kalkulator.Okladka.options[0].selected) czyOkladka = 2; else czyOkladka = 0;
	liczba_wszystkich_kartek = Math.ceil(document.kalkulator.Liczba_stron.value/2) + czyOkladka
	if ( liczba_wszystkich_kartek <1)
	{
		alert("Minimalna liczba stron włącznie z okładką wynosi 5");
		blad=false;
	}





	for (var i=0; i<PapierDane.length; i++)	if(document.kalkulator.Papier[document.kalkulator.Papier.selectedIndex].text == PapierDane[i].Nazwa) Index_wybranego_papieru = i;
	for (var i=0; i<PapierDane.length; i++)	if(document.kalkulator.Okladka[document.kalkulator.Okladka.selectedIndex].text == PapierDane[i].Nazwa) Index_wybranej_okladki = i;

// Sprawdzamy czy użytek miesci się na arkuszu
		if (Math.min(document.kalkulator.SzerUzytku.value,document.kalkulator.WysUzytku.value) > PapierDane[Index_wybranego_papieru].SzerArk-6  )
		{
			if(document.kalkulator.WysUzytku.value > document.kalkulator.SzerUzytku.value)
			{
				document.kalkulator.SzerUzytku.select();
				alert(js_alert_Maksymala_szer_uzytku_wynosi);
				document.kalkulator.SzerUzytku.value =PapierDane[Index_wybranego_papieru].SzerArk-4;
			}else{
				document.kalkulator.WysUzytku.select();
				alert(js_alert_Maksymala_szer_uzytku_wynosi);
				document.kalkulator.WysUzytku.value =PapierDane[Index_wybranego_papieru].SzerArk-4;;
			}
			blad=false;
		}
		if (Math.max(document.kalkulator.SzerUzytku.value,document.kalkulator.WysUzytku.value) > PapierDane[Index_wybranego_papieru].WysArk-6  )
		{
			if(document.kalkulator.WysUzytku.value < document.kalkulator.SzerUzytku.value)
			{
				document.kalkulator.SzerUzytku.select();
				alert(js_alert_Maksymala_wys_uzytku_wynosi);
				document.kalkulator.SzerUzytku.value =PapierDane[Index_wybranego_papieru].WysArk-8;
			}else{
				document.kalkulator.WysUzytku.select();
				alert(js_alert_Maksymala_wys_uzytku_wynosi);
				document.kalkulator.WysUzytku.value =PapierDane[Index_wybranego_papieru].WysArk-8;
			}
			blad=false;
		}

// Sprawdzamy czy okladka miesci się na arkuszu
		if (Math.min(document.kalkulator.SzerUzytku.value,document.kalkulator.WysUzytku.value) > PapierDane[Index_wybranej_okladki].SzerArk-4  )
		{
			if(document.kalkulator.WysUzytku.value > document.kalkulator.SzerUzytku.value)
			{
				document.kalkulator.SzerUzytku.select();
				alert(js_alert_Maksymala_szer_uzytku_wynosi);
				document.kalkulator.SzerUzytku.value =PapierDane[Index_wybranej_okladki].SzerArk-4;
			}else{
				document.kalkulator.WysUzytku.select();
				alert(js_alert_Maksymala_szer_uzytku_wynosi);
				document.kalkulator.WysUzytku.value =PapierDane[Index_wybranej_okladki].SzerArk-4;
			}
			blad=false;
		}
		if (Math.max(document.kalkulator.SzerUzytku.value,document.kalkulator.WysUzytku.value) > PapierDane[Index_wybranej_okladki].WysArk-8  )
		{
			if(document.kalkulator.WysUzytku.value < document.kalkulator.SzerUzytku.value)
			{
				document.kalkulator.SzerUzytku.select();
				alert(js_alert_Maksymala_wys_uzytku_wynosi);
				document.kalkulator.SzerUzytku.value =PapierDane[Index_wybranej_okladki].WysArk-8;
			}else{
				document.kalkulator.WysUzytku.select();
				alert(js_alert_Maksymala_wys_uzytku_wynosi);
				document.kalkulator.WysUzytku.value =PapierDane[Index_wybranej_okladki].WysArk-8;
			}
			blad=false;
		}

	//if (document.kalkulator.Uszlachetnianie[document.kalkulator.Uszlachetnianie.selectedIndex].text.substring(0,11)== js_Laminowanie_jednostronne_blysk.substring(0,11)) alert(js_alert_Nie_laminow_okl_o_ciemnych_aplach);

	dwustronny = false;
	if(document.kalkulator.Uszlachetnianie[document.kalkulator.Uszlachetnianie.selectedIndex].text == js_Laminowanie_dwustronne_blysk) dwustronny = true;
	if(document.kalkulator.Uszlachetnianie[document.kalkulator.Uszlachetnianie.selectedIndex].text == js_Laminowanie_dwustronne_mat) dwustronny = true;
	if(document.kalkulator.Uszlachetnianie[document.kalkulator.Uszlachetnianie.selectedIndex].text == js_Lakierowanie_UV_dwustronne) dwustronny = true;

	return blad;
}


function wypelnij_pola_do_posta()
{
//	var ListaWybranychUsligIntr = new Array();
//	for (var i = 1; i <= 5; i++) {
//		ListaWybranychUsligIntr.push(document.getElementById("ID_chk_"+i).checked*1);    	// introligatorka zapisana jest w polu jako ciąg liczn oznaczający poszczególne pozycje na liście.
//	}

}

function oblicz_termin()
{
	var termin =(Liczba_arkuszy*2/8400 + 2.4285);
	termin = Math.floor(termin+0.5)*24;
	min_termin = 72;
	termin = Math.max(termin, min_termin);
	terminUsz=0;
	if(document.kalkulator.UszlachetnianieOkl.selectedIndex>0) terminUsz=24;
	if(document.kalkulator.Uszlachetnianie.selectedIndex>0) terminUsz=72;
	if(document.kalkulator.Uszlachetnianie.selectedIndex>0 && Liczba_arkuszy > 3000) terminUsz+=24;
	termin+=terminUsz;
	if(awaria_igen)	termin+=24;

	return termin;
}

function wpisz_wartosci(x,y){
	 if(x) document.kalkulator.SzerUzytku.value = x;
	 if(y) document.kalkulator.WysUzytku.value = y;
}
