var awaria_3d = false;
var dbg = '';

//zdefiniowanie danych dotyczšcych papierów

function MaterialDef(Nazwa, SzerArk, WysArk, Spad, Podklad, Zywica, Koszt, Cena, zaoraglone, Termin, Ploter,Laminat, Waga, Material){
  	this.Nazwa = Nazwa;
	this.SzerArk = SzerArk;
    this.WysArk = WysArk;
	this.Spad = Spad;
  	this.Podklad = Podklad;
	this.Zywica = Zywica;
	this.Koszt = Koszt;
	this.Cena = Cena;
	this.zaoraglone = zaoraglone; // Czy cięcie musi być zaokrąglone
	this.Termin = Termin;
	this.Ploter = Ploter;
	this.Laminat = Laminat;
	this.Waga = Waga; //w gramach
	this.Material = Material; // Materiał do druku p-papier, f- folia
  }



// utworzenie tablicy papierów
MaterialDane = new Array();// 		| nazwa | max szer,wys | spad | podklad | 3d | koszt staly | cena druku z materialem | czy zaokrąglone | termin | ploter | laminat | waga | materiał |
																						//	szer wys  s  p  3d  k   dr+mat	   z    t   p  l  w     m
MaterialDane[0] = new MaterialDef(js_Etykiety_z_papieru_samoprzylepnego, 					480, 322, 2, 0,	0,	5,	3.00*0.92, 0,	3,	0, 0, 31.5, 'p');
MaterialDane[1] = new MaterialDef(js_Etykiety_z_papieru_samoprzylepnego_laminowanego,		480, 318, 2, 0,	0,	5,	3.50*0.92, 0,	4,	1, 1, 33,	'p');
MaterialDane[2] = new MaterialDef(js_Etykiety_z_folii_samoprzylepnej,						442, 312, 2, 0,	0,	5,	6.70*0.92, 0,	4,	0, 0, 42,	'f');
MaterialDane[3] = new MaterialDef(js_Etykiety_z_folii_samoprzylepnej_silver,				412, 289, 2, 0,	0,	5,	7.00*0.92, 0,	3,	0, 1, 42,	'fs');
MaterialDane[4] = new MaterialDef(js_Etykiety_z_folii_samoprzylepnej_gold,					412, 289, 2, 0,	0,	5,	7.00*0.92, 0,	3,	0, 1, 42,	'fg');
MaterialDane[5] = new MaterialDef(js_Nalepki_3D_samoprzylepne,								480, 318, 4, 0,	1,	25,	6.73*0.92, 1,	5,	0, 0, 42,	'f');
MaterialDane[6] = new MaterialDef(js_Nalepki_3D_samoprzylepne_silver,						412, 289, 4, 0,	1,	25,	7.10*0.92, 1,	5,	0, 0, 42,	'fs');
MaterialDane[7] = new MaterialDef(js_Nalepki_3D_samoprzylepne_gold,							412, 289, 4, 0,	1,	25,	7.10*0.92, 1,	5,	0, 0, 42,	'fg');
MaterialDane[8] = new MaterialDef(js_Etykiety_z_papieru_samoprzylepnego_na_podkladzie_mag,	480, 290, 3, 1,	0,	5,	3.00*0.92, 0,	4,	1, 0, 42,	'p');
MaterialDane[9] = new MaterialDef(js_Etykiety_z_papieru_samoprzylepnego_lamin_na_podk_mag,	480, 290, 3, 1,	0,	5,	3.50*0.92, 0,	5,	1, 1, 300,	'p');
MaterialDane[10] = new MaterialDef(js_Etykiety_z_folii_samoprzylepnej_na_podk_magnet,		442, 290, 3, 1,	0,	5,	6.73*0.92, 0,	4,	1, 0, 300,	'f');
MaterialDane[11] = new MaterialDef(js_Etykiety_3D_na_podk_magnetycznym,  					480, 290, 3, 1,	1,	25,	6.73*0.92, 1,	6,	1, 0, 300,	'f');
MaterialDane[12] = new MaterialDef(js_Etykiety_z_folii_adhezyjnej_bialej, 		 			440, 310, 2, 0,	0,	5,	6.8*0.92,  0,	3,	0, 0, 300,	'ab');
MaterialDane[13] = new MaterialDef(js_Etykiety_z_folii_adhezyjnej_przezroczystej, 		 	440, 310, 2, 0,	0,	5,	6.8*0.92,  0,	3,	0, 0, 300,	'ap');

/*
330 kolo 0,1m    1037mm - 0,10 min
100 *12 0,44m    3770     0,44
30 *6*8  1,43min 4524	  1,43
15  *100  2,33   4712	  2,33

15 * 100			1,08


100 x prostokat o boku 15  - 1,08 min
48 x pr 30 - 0,38 min
12 x pr 100 - 0,21 min
*/


// zdefiniowanie stałych




var CenaFoliiMagnetycznej 	= 11.00;
var CenaNaklejania 			= 1.00;
var RoboczogodzinaPlotera 	= 70.00;
var debug=0;

function SetMaterial(){
	ii=0;
	for (var i = 0; i < MaterialDane.length; i++) {
	//	if(!(MaterialDane[i].Zywica == 1 && awaria_3d))
		{
			document.kalkulator.Material.options[ii] = new Option(MaterialDane[i].Nazwa);
			ii++;
		}
	}
}


function sprawdzDane(){
	szer = document.kalkulator.szer.value.replace(',','.');
	wys = document.kalkulator.wys.value.replace(',','.');
	szer=szer*1-4;
	wys=wys*1-4;
	if(szer<5 || wys <5){
		resetuj_wynik('');
		alert(js_alert_Zbyt_maly_rozmiar);
		return 0;
	}
	if(MaterialDane[document.kalkulator.Material.selectedIndex].Zywica == 1){
		if(szer*wys > 20000){
			resetuj_wynik(js_alert_Maksymalny_rozmiar_nalepki_3D);
			alert(js_alert_Zbyt_duzy_rozmiar);
			return 0;
		}
		if(szer<11 || wys <11 || szer*wys < 121){
			resetuj_wynik(js_alert_Minimalny_wymiar_nalepki);
			alert(js_alert_Zbyt_maly_rozmiar);
			return 0;
		}
	}
	maxSzer = MaterialDane[document.kalkulator.Material.selectedIndex].SzerArk - MaterialDane[document.kalkulator.Material.selectedIndex].Spad *2;
	maxWys  = MaterialDane[document.kalkulator.Material.selectedIndex].WysArk  - MaterialDane[document.kalkulator.Material.selectedIndex].Spad *2;
	over=0;
	if(szer>maxSzer || wys>maxSzer ){
		over=1;
	}else{
		if(szer>maxWys && wys>maxWys) over=1;
	}
	if(over){
		resetuj_wynik(js_alert_Maksymalny_rozmiar_uzytku_dla_mat + maxSzer + 'mm x '+ maxWys + 'mm.');
		alert(js_alert_Zbyt_duzy_rozmiar);
		return 0;
	}

	return 1;
}

function ustawCzekboksa(){
	nazwa = document.kalkulator.Material[document.kalkulator.Material.selectedIndex].text;
	if(MaterialDane[document.kalkulator.Material.selectedIndex].zaoraglone == 0 && MaterialDane[document.kalkulator.Material.selectedIndex].Ploter == 0)
	{
		document.kalkulator.proste_linie.disabled = false;
		document.getElementById('2').disabled = false;
	}else{
		document.kalkulator.proste_linie.disabled = true;
		document.kalkulator.proste_linie.checked = false;
		document.getElementById('2').disabled = true;
	}
	if( (MaterialDane[document.kalkulator.Material.selectedIndex].Zywica) && (awaria_3d  || !expres_3d))
	{
		document.getElementById('exp_lab').disabled = true; //label
		document.getElementById('exp').disabled = true; //checkbox
		document.getElementById('exp').checked = false; //checkbox
	}else{
		document.getElementById('exp_lab').disabled = disabled_expres; //label
		document.getElementById('exp').disabled = disabled_expres; //checkbox
	}
	dodaj_uwage_3d();
}



function CzasCiecia(szer,wys,czyProste,lbArkuszy,luz){
// zwraca czas całego zlecenia w godzinach

//	cenaCieciaUzytku = (szer*2+wys*2)*0.1 * 0.71 * RoboczogodzinaPlotera/3600;
	if (czyProste)	CiecieUzytku = (szer*2+wys*2)*0.0038 + 0.45;
	else			CiecieUzytku = ((szer*2+wys*2)*0.0074 + 1.3)*1.8; // Sztucznie podbijam cenę krzywoliniowych zeby nie było zbyt dużej obniżki cen po urealnieinu kostów (1.8)
//	else			CiecieUzytku = (szer*2+wys*2)*0.071/2; // zwiększyłem roboczogodzinę plotera więc sztucznie zmniejszam cza zeby było kompatybilne wstecz
	//else			CiecieUzytku = 0.0045*(szer*2+wys*2) - 40/(szer*2+wys*2) + 2.1;

	CzasArkusza = CiecieUzytku * luz + 20;
	Czaszlecenia = CzasArkusza * lbArkuszy + 60*3;

	dbg += '<BR> Czas cięcia jednej etykiety : '+ 	CiecieUzytku;
	dbg += '<BR> Czas cięcia jednego Arkusza : '+ 	CzasArkusza;
	dbg += '<BR> Czas cięcia całości : '+ 	Czaszlecenia;
	return Czaszlecenia/3600;

}

function kalkulacja(){


	if (!sprawdzDane()) return;

	var wsp, Liczba_nalepek_na_arkuszu, liczbaArkuszy, cenaCieciaUzytku, naddatek,naddatek_ark;

	if(document.kalkulator.dealer.value==1) {wsp=1} else {wsp=1.6}

	szer = document.kalkulator.szer.value.replace(',','.');
	szer=szer*1-4;
	wys = document.kalkulator.wys.value.replace(',','.');
	wys=wys*1-4;

	var szer_ark = MaterialDane[document.kalkulator.Material.selectedIndex].SzerArk;
	var wys_ark  = MaterialDane[document.kalkulator.Material.selectedIndex].WysArk;
	var spad     = MaterialDane[document.kalkulator.Material.selectedIndex].Spad;
	var naklad   = document.kalkulator.naklad.value;

	// obliczamy ile nalepek zmiesci nie na arkuszu w zaleznoci od orietacji strony
	S1 = Math.floor( szer_ark / (szer+2*spad));
	W1 = Math.floor( wys_ark / (wys+2*spad));
	S2 = Math.floor( wys_ark / (szer+2*spad));
	W2 = Math.floor( szer_ark / (wys+2*spad));

	if (S1*W1>S2*W2) {
		Liczba_nalepek_na_arkuszu= S1*W1;
		macierz= 'Obrócone, '+ W1 +' x ' +S1;
	}else{
		Liczba_nalepek_na_arkuszu= S2*W2;
		macierz= S2 +' x ' +W2;
	}
	dbg += ' Nakład obliczeniowy: '+ naklad;

	naddatek = 0; 	naddatek_ark = 0;
	if(MaterialDane[document.kalkulator.Material.selectedIndex].Zywica == 1) {
		if (Liczba_nalepek_na_arkuszu>=10) {
			naddatek = Math.ceil(Liczba_nalepek_na_arkuszu * 0.05);
		}else{
			naddatek_ark = Math.ceil ( Math.ceil (naklad/Liczba_nalepek_na_arkuszu)* 0.05);
		}
	}



	Liczba_nalepek_na_arkuszu_netto = Liczba_nalepek_na_arkuszu - naddatek;
	liczbaArkuszy = Math.ceil(naklad / Liczba_nalepek_na_arkuszu_netto);

	OptymalneNalkady=false;
	if (Liczba_nalepek_na_arkuszu_netto*liczbaArkuszy!=document.kalkulator.naklad.value){
		if (liczbaArkuszy==1) {
			OptymalneNalkady=Liczba_nalepek_na_arkuszu_netto;
		}else{
			OptymalneNalkady=Liczba_nalepek_na_arkuszu_netto*(liczbaArkuszy-1);
			OptymalneNalkady+=', '+Liczba_nalepek_na_arkuszu_netto*liczbaArkuszy;
		}
	}
	if(MaterialDane[document.kalkulator.Material.selectedIndex].Zywica == 1 && naddatek ==0)  liczbaArkuszy = Math.ceil (liczbaArkuszy*1.05);

	var Cena = MaterialDane[document.kalkulator.Material.selectedIndex].Cena * liczbaArkuszy;
	dbg += ' cena druku z papierem: '+ Cena;
	Cena += MaterialDane[document.kalkulator.Material.selectedIndex].Koszt*1;
	dbg += '<BR> koszt stały: '+ MaterialDane[document.kalkulator.Material.selectedIndex].Koszt*1;
	if(MaterialDane[document.kalkulator.Material.selectedIndex].Podklad == 1) {
		Cena += (CenaFoliiMagnetycznej*1 + CenaNaklejania*1)* liczbaArkuszy;
		dbg += '<BR> cena foli + naklejanie: '+(CenaFoliiMagnetycznej*1 + CenaNaklejania*1)*liczbaArkuszy;
	}

	// liczymy cenę cięcia
	CenaCiecia =  CzasCiecia(szer,wys,document.kalkulator.proste_linie.checked,liczbaArkuszy,Liczba_nalepek_na_arkuszu) * RoboczogodzinaPlotera *1;
	dbg += ' cena cięcia: '+ CenaCiecia;
	Cena += CenaCiecia;


	// sprawdzamy czy jest wylewanie zywicy
	if(MaterialDane[document.kalkulator.Material.selectedIndex].Zywica == 1){
		powierzchnia = szer*wys/100;
		if(0.02+4500/(powierzchnia*naklad)/100>0.035){
			CenaWylania = 0.038;
		}else{
			CenaWylania = 0.022+ 4300 / (powierzchnia*naklad)/100;
		}
		Cena += szer*wys*naklad/100*CenaWylania;
		dbg += '<BR> cena zywicy : '+ szer*wys*naklad/100*CenaWylania;
	}

	termin = MaterialDane[document.kalkulator.Material.selectedIndex].Termin+nadtermin_igen+nadtermin_laser;
	if(MaterialDane[document.kalkulator.Material.selectedIndex].Zywica == 1) termin += nadtermin_3d;

	if ((szer+wys)*naklad > 200000 && !document.kalkulator.proste_linie.checked) termin += 1;

	fontkolor=''; font='';
	if (document.kalkulator.expres.checked) {
		termin -= 1;
		fontkolor='<font color=red><B>'+ js_w_ekspresie ;
		font='</b></font>';
	}
	//debug += '<BR> Cena razem org. :'+ Cena;
	if (Liczba_nalepek_na_arkuszu > 300 && MaterialDane[document.kalkulator.Material.selectedIndex].Zywica != 1) {
		Cena = Cena*1.1;
	}

	if (Cena > 400) {
	//alert(Math.ceil((Cena - 400)/300));
		termin += Math.ceil((Cena - 400)/300)
	}
	if (Cena > 400) alert(js_alert_wydluzony_termin);

	Cena = Math.max(Cena, 30);
	if (document.kalkulator.expres.checked) {
		Cena = Cena*1.3;
	}

	Cena = Cena * wsp*1.02; //podniesienie ceny z powodu wzrostu cen materiałów o 2%

	Cena = Math.ceil(Cena*100)/100;



	wyn = '<table><tr><td>'+js_Cena_zlecenia+ '</td><td>' +formatNum(Cena/kurs_waluty,2)+ ' '+wal+' (+ '+vat*stawka_vat+'% VAT)</td></tr>';
	wyn += '<tr><td>'+js_Cena_jednej_sztuki+ '</td><td>' +formatNum(Cena/naklad/kurs_waluty,3)+ ' '+wal+' (+ '+vat*stawka_vat+'% VAT)</td></tr>';

	wyn += '<tr><td colspan=2>_______________________________________________</td></tr>';
	if (OptymalneNalkady) wyn += '<tr><td>optymalne nakłady :</td><td>' +OptymalneNalkady+ ' szt.</td></tr>';
	wyn += '<tr><td>'+js_waga+ '</td><td>' + formatNum(waga(liczbaArkuszy),2) +'kg</td></tr>';
	wyn += '<tr><td>'+js_Termin+ '</td><td>'+fontkolor +termin+ js_dni_roboczych + font+'</td></tr>';

	if (wsp ==1 & kurs_waluty==1)	wyn += '<tr><td><i>Sugerowana cena detaliczna : &nbsp;</i></td><td><i>' +formatNum(Cena*1.6,2)+ ' '+wal+' (+ '+vat*stawka_vat+'% VAT)</i></td></tr>';
	wyn += '</table>';
	document.getElementById("wynik").innerHTML = wyn;


	if(debuger) document.getElementById("wyn_dbg").innerHTML = dbg+'</TD></TR></table>';
	dbg="";

	Specyfikacja ='Arkusz : '+ MaterialDane[document.kalkulator.Material.selectedIndex].SzerArk + ' x '+MaterialDane[document.kalkulator.Material.selectedIndex].WysArk;
	Specyfikacja += '\n<br>Liczba użytków na arkuszu : '+Liczba_nalepek_na_arkuszu+' \n<br> Rozmieszczenie : '+macierz;
	Specyfikacja += '\n<br>Odległość użytków : '+ MaterialDane[document.kalkulator.Material.selectedIndex].Spad*2;

	indeks_elinor = 'ETN';
	if( MaterialDane[document.kalkulator.Material.selectedIndex].Podklad == 1) indeks_elinor = 'ETN_Mag';
	if( MaterialDane[document.kalkulator.Material.selectedIndex].Zywica == 1) indeks_elinor = 'nalepki';

	Nazwa_zlecenia = MaterialDane[document.kalkulator.Material.selectedIndex].Nazwa;
	Nazwa_zlecenia = Nazwa_zlecenia.replace('lamin.','laminowane');
	Nazwa_zlecenia = Nazwa_zlecenia.replace('podkł.','podkładzie');
	Nazwa_zlecenia += ' ' + (szer*1+4) + 'mm x ' + (wys*1+4) + 'mm ';
	if(document.kalkulator.proste_linie.checked){
		Nazwa_zlecenia += ' (cięcie prostoliniowe)';
	}
	Nazwa_zlecenia += ' '+ naklad + ' szt.';

	if (document.kalkulator.expres.checked){
		Nazwa_zlecenia = '<font color=red>EKSPRES</font> ' + Nazwa_zlecenia;
	}

document.kalkulator.Specyfikacja.value = Specyfikacja;
document.kalkulator.kwota_netto.value = formatNum(Cena,2);
document.kalkulator.cena_za_sztuke.value = formatNum(Cena,2);
document.kalkulator.termin.value = termin * 24;
document.kalkulator.nazwa_zlecenia.value = Nazwa_zlecenia;
document.kalkulator.masa_sztuki.value = waga(liczbaArkuszy);

document.kalkulator.LiczbaArkuszy.value = liczbaArkuszy;
document.kalkulator.indeks_el.value =indeks_elinor;
document.kalkulator.papier.value = MaterialDane[document.kalkulator.Material.selectedIndex].Material;
document.kalkulator.ploter.value = MaterialDane[document.kalkulator.Material.selectedIndex].Ploter;
document.kalkulator.naklejanie.value =MaterialDane[document.kalkulator.Material.selectedIndex].Podklad;
document.kalkulator.wylewanie.value =MaterialDane[document.kalkulator.Material.selectedIndex].Zywica;
document.kalkulator.laminowanie.value =MaterialDane[document.kalkulator.Material.selectedIndex].Laminat;
}

/**
 *
 * @access public
 * @return void
 **/
function dodaj_uwage_3d(){

	uwaga='<p><strong>W przypadku etykiet 3D o skomlikowanym kształcie lub bardzo małych,<BR>z uwagi na podwyższoną pracochłonność, zastrzegamy sobie prawo<br> podwyższenia ceny i wydłużenia terminu realizacji!<BR><BR><strong></p>';
		if( MaterialDane[document.kalkulator.Material.selectedIndex].Zywica != 1) uwaga='';

		document.getElementById("uwaga_3d").innerHTML =uwaga;
}

/**
 *
 * @access public
 * @return void
 **/
function resetuj_wynik(text){
	if(text) document.getElementById("wynik").innerHTML = text; else document.getElementById("wynik").innerHTML = '';
}

function waga(lArk){
	masaZywicy=0;
	wagaArkusza= MaterialDane[document.kalkulator.Material.selectedIndex].Waga / 1000;
	if (MaterialDane[document.kalkulator.Material.selectedIndex].Zywica ==1){
		szer = document.kalkulator.szer.value.replace(',','.')-4;
		wys = document.kalkulator.wys.value.replace(',','.')-4;
		masaZywicy = wys*0.001*szer*0.001*0.4*document.kalkulator.naklad.value;
	}
	return lArk*wagaArkusza+masaZywicy;
}
