function strToDate(datum){
	// pokusi se prevest retezec ve formatu DD.MM.YYYY, napr. 01.01.2005, na objekt Date
	if (datum.length == 10){
		var den = datum.substring(0, 2);
		var mesic = datum.substring(3, 5);
		var rok = datum.substring(6);
	
		var D = new Date(rok, mesic - 1, den, 0, 0, 0, 0); // mesic musi byt -1, pac se pocita od nuly
		return D;
	}
	return Number.NaN;
}

function elementUpdate(idElement, hodnota, forma){
	if (document.getElementById){
		if (elem = document.getElementById(idElement)){
			elem.innerHTML = hodnota;
		}
	}

	if (forma[idElement]){
		if (forma[idElement].value){
			forma[idElement].value = hodnota;
		}
	}
}

function do_change_img(img_id){
	// predpokladame existenci globalniho poleObrazku
	if (poleObrazku.length <= img_id) return false;

	document.images["display_obrazek"].src = poleObrazku[img_id];

	return false;
}

function kalkulTermTypeChange(){
	forma = document.form_kalkulator;
// zmena typu terminu / akce/den/vice dnu
// podle toho se otevira/zavira cast
	if (forma.termin && forma.termin.checked){
		// je zvolena akce, zobrazuje se popis akce, nezobrazuje se zbytek
		rozbalovacRozbal("popis_akce");
		rozbalovacZabal("volby_mimo_akci");
	} else {
		// nezobrazuje se popis akce
		rozbalovacZabal("popis_akce");
		rozbalovacRozbal("volby_mimo_akci");
	}

// nakonec musi byt reeval
	kalkul_reeval();
}

function getDatumOd(forma){
	var datumOd = strToDate(forma.od_datum.value);
	datumOd.setHours(forma.od_hodina.selectedIndex, forma.od_minuta.selectedIndex * 15);
	return datumOd;
}

function getDatumDo(forma){
	var datumDo = strToDate(forma.do_datum.value);
	datumDo.setHours(forma.do_hodina.selectedIndex, forma.do_minuta.selectedIndex * 15);
	return datumDo;
}

/*
predpokladame existenci globalnich promennych
cena_jedenden = cislo
cena_spoluucast5 = cislo
cena_spoluucast10 = cislo
cena_slevazadny1 = cislo
cena_slevazadny2 = cislo
cena_volnekm[0] = cislo pro najemne1
...
cena_volnekm[3] = cislo pro najemne4    pole je tedy cislovano od jedne

max_id_polozky = udava vlastne delku pole polozky[]
polozky[id_volby] = cena		pricemz tedy pole musi byt dosti velke a bude ridke, nektere polozky_jednorazova[id_volby] = true/false podle toho, esi je cena jednorazova nebo denni
hodnoty nedef

pocetdnu_rozsah1lo = je dolni mez pro slevu za dny 1
pocetdnu_rozsah1hi = je horni mez pro slevu za dny 1
pocetdnu_rozsah2lo = je dolni mez pro slevu za dny 2
pocetdnu_rozsah2hi = je horni mez pro slevu za dny 2 a je to tez limit pro pocet dnu
*/
function kalkul_reeval(){
	forma = document.form_kalkulator;
	celkova_cena = 0;
	pocetdnu = 0;
	pocethodin = 0;

	elementUpdate('cena_zaloha', 0, forma);
	elementUpdate('cena_celkem', 0, forma);
	elementUpdate('cena_ridic', 0, forma);

	if (forma.termin && forma.termin.checked){
		celkova_cena = cena_akce;
	} else {
		// vice dnu, musim vycucnout datum z textu
		var datumOd = getDatumOd(forma);
		var datumDo = getDatumDo(forma);
		if (isNaN(datumOd) || isNaN(datumDo)){
			pocethodin = 0;
		} else {
			pocethodin = Math.ceil((datumDo.getTime() - datumOd.getTime()) / 1000 / 3600);
			if (pocethodin < 0) pocethodin = 0;
		}
		pocetdnu = Math.ceil(pocethodin / 24);
		elementUpdate('pocet_hodin', pocethodin, forma);
		elementUpdate('pocet_dnu', pocetdnu, forma);
	}

	if (pocetdnu > pocetdnu_rozsah2hi){
		alert(msg_pocetdnu);
		return false;
	}

	switch (pocetdnu){
		case 0: break; // nedelame nic, je to akce nebo nejaka chyba v datech
		default:

			// jiny placeni pro stavebni stroje
			if(jeStroj == 1)
			 {

			 if(pocetdnu > 29)
			  {
			  elementUpdate('status', 'Dlouhodobý pronájem, měsíc' , forma);
			  }
			 else if(pocetdnu > 19)
			  {
			  elementUpdate('status', 'Dlouhodobý pronájem, 20-30 dní' , forma); 
			  }
			 else if(pocetdnu > 9)
			  {
			  elementUpdate('status', 'Dlouhodobý pronájem, 10-19 dní' , forma); 
			  }
			 else if(pocetdnu > 5)
			  {
			  elementUpdate('status', 'Dlouhodobý pronájem, 6-9 dní' , forma); 
			  }
			 else if(pocethodin > 72)
			  {
			  elementUpdate('status', 'Dlouhodobý pronájem, 3-5 dní' , forma); 
			  }
			 else if(pocethodin > 20)
			  {
			  elementUpdate('status', 'Krátkodobý pronájem, +21 hodin' , forma); 
			  }
			 else if(pocethodin > 10)
			  {
			  elementUpdate('status', 'Krátkodobý pronájem, 11-20 hodin' , forma); 
			  }
			 else if(pocethodin > 3)
			  {
			  elementUpdate('status', 'Krátkodobý pronájem, 4-10 hodin' , forma); 
			  }
			 else
			 {
			 elementUpdate('status', 'Krátkodobý pronájem, 1-3 hodiny' , forma); 
			 }
		
			 }
			else
			{
			
			// PUVODNI KOD!
			if (s_ridicem){
				// cena bude hodinova
				//i = Math.floor((pocethodin - 1) / 3);
				//if (i > 2) i = 2; else if (i < 0) i = 0;
				if (pocethodin < 4) i = 0;  else if (pocethodin < 11) i = 1;  else if (pocethodin > 10) i = 2;
				hodcena = pocethodin * cena_hodinova[i];
        volnekm = pocethodin * volne_km[i];
        cenavolnekm = forma.add_km.value * cena_volnekm[i];
				pre_cena = hodcena + cenavolnekm;
				celkova_cena += cenavolnekm;
				celkova_cena += hodcena;
				celkova_cena = celkova_cena * forma.volba_pocet.value;
				//elementUpdate('cena_ridic', hodcena, forma);
				elementUpdate('cena_ridic', pre_cena, forma);
				elementUpdate('volne_km', volnekm, forma);
				elementUpdate('cena_volne_km', cenavolnekm, forma);
			} else {
				if (pocetdnu == 1){
					celkova_cena = cena_jedenden;
					elementUpdate('cena_jedenden', cena_jedenden, forma);
				} else {
					elementUpdate('cena_jedenden', 0, forma);
				}
				if (forma.volne_km){
					pom = pocetdnu * cena_volnekm[forma.volne_km.selectedIndex - 1];
					if (isNaN(pom)){
						elementUpdate('cena_najemne', 0, forma);
					} else {
						celkova_cena += pom;
						elementUpdate('cena_najemne', pom, forma);
					}
				}
				// zapocitame spoluucast, podle xls je spoluucast denni
				if (forma.spoluucast.selectedIndex == 0){
					celkova_cena += pocetdnu * cena_spoluucast10;
					elementUpdate('cena_zaloha', cena_vozu / 10, forma); // tj. 10 %
					elementUpdate('cena_spoluucast', pocetdnu * cena_spoluucast10, forma);
				} else {
					celkova_cena += pocetdnu * cena_spoluucast5;
					elementUpdate('cena_zaloha', cena_vozu / 20, forma); // tj. 5 %
					elementUpdate('cena_spoluucast', pocetdnu * cena_spoluucast5, forma);
				}


				// zapocitame hodinovou slevu...




				// nakonec v pripade dostatecneho poctu dnu zapocitame slevy za dny, jsou denni
				if ((pocetdnu_rozsah1lo <= pocetdnu) && (pocetdnu <= pocetdnu_rozsah1hi)){
					elementUpdate('cena_slevazadny', pocetdnu * cena_slevazadny1, forma);
					celkova_cena += pocetdnu * cena_slevazadny1;
				} else if ((pocetdnu_rozsah2lo <= pocetdnu) && (pocetdnu <= pocetdnu_rozsah2hi)){
					elementUpdate('cena_slevazadny', pocetdnu * cena_slevazadny2, forma);
					celkova_cena += pocetdnu * cena_slevazadny2;
				} else {
					elementUpdate('cena_slevazadny', 0, forma);
				}
			}

			} // konec rozdeleni na stavebni stroje

			// zapocitame volitelne polozky
			for (i = 1; i <= max_id_polozky; i++){
				nazevPrvku = "volba_" + i;
				if (forma.elements[nazevPrvku] && forma.elements[nazevPrvku].checked){
					// element tohoto jmena existuje a je checked, pricitame


					//celkova_cena += (polozky_hodinova[i] * pocethodin);

					if (polozky_jednorazova[i]){
						// cena je jednorazova, tj. nenasobim poctem dnu
						elementUpdate('cena_volba_' + i, polozky[i], forma);
						celkova_cena += polozky[i];
					} else {

					if(polozky_hodinova[i]) {
					 
						elementUpdate('cena_volba_' + i, pocethodin * polozky_hodinova[i], forma);
						celkova_cena += pocethodin * polozky_hodinova[i];

					} else {

					elementUpdate('cena_volba_' + i, pocetdnu * polozky[i], forma);
					celkova_cena += pocetdnu * polozky[i];

					}

					}
				} else {
					elementUpdate('cena_volba_' + i, 0, forma);
				}
			}
			
			break;
	} // switch
	
	if (pouzivat_zimnipneu){
		celkova_cena += pocetdnu * cena_pneu;
		elementUpdate('cena_zimni', pocetdnu * cena_pneu, forma);
	}

	if (isNaN(celkova_cena)) celkova_cena = 0; // celkova cena je bez dph

	dph_cast = Math.round(celkova_cena * dph); // pridana hodnota
	elementUpdate('cena_bez_dph', celkova_cena, forma);
	elementUpdate('cena_dph', dph_cast, forma);
	elementUpdate('cena_celkem', dph_cast + celkova_cena, forma);

	return true;
}

// kontrola poli pro formular kalkulatoru
// pokud je to bez ridice, musi byt vybrano najemne
// musi byt cas od mensi nez cas do
function kontrola_poli(forma){
	forma = document.form_kalkulator;
	var datumOd = getDatumOd(forma);
	var datumDo = getDatumDo(forma);
	if (isNaN(datumOd) || isNaN(datumDo)){
		alert(msg_platnydatum);
		return false
	}

	if (datumDo.getTime() <= datumOd.getTime()){
		alert(msg_terminoddo);
		return false
	}

	if (!s_ridicem && !(forma.termin && forma.termin.checked)){
		if (forma.volne_km.selectedIndex == 0){
			alert(msg_volnekm);
			return false;
		}
	}
	return true;
}

// kontrola poli pro formular, kde se vklada kontaktni info.
// musi byt vyplneno jmeno, telefon a spravny email
function kontrola_poli_kontakt(forma){
	if (forma.jmeno.value == ""){
		alert(msg_zadatjmeno);
		return false;
	}

	if (forma.telefon.value == ""){
		alert(msg_zadattelefon);
		return false;
	}

	if ((forma.email.value == "") || (forma.email.value.search("^[A-Za-z0-9\\._%-]+@[A-Za-z0-9\\._%-]+\\.[A-Za-z]{2,4}$") != 0)){
		alert(msg_zadatemail);
		return false;
	}

	return true;
}



