/* by psavel */

var lim_bialko = 15;
var lim_wegle = 40;
var lim_tluszcz = 30;

/* pożądane wartości */
var goal_kcal = 2500, akt_kcal = 0;
var goal_pr = .3; //procentowo
var goal_ch = .5; //jw
//var goal_fat = .2; //suma do 1

var goal_pr_g, akt_pr = 0;
var goal_ch_g, akt_ch = 0;
var goal_fat_g, akt_fat = 0;

var delay = 350;

var curId= 'tresc'; //aktywny tab
var curEbook = 'prawybook1'; //aktywny tab
var scnHei; //screen height

var objSld;
var footer = 0;

var posilki = new Array("Śniadanie", "Drugie śniadanie", "Obiad", "Podwieczorek", "Kolacja"); //const
var brakPosilkow = "&middot; brak posiłków &middot;"; //warning message

var we_bi = 4, we_ch = 4, we_fat=9; //wartość energetyczna danych elementów, const


function zwinDropdowny() {
   document.getElementById('dropdown_numerPosilku').innerHTML = ''; //zwijamy pierwszy dropdown
   document.getElementById('search_suggest').innerHTML = ''; //zwijamy drugidropdown
   document.getElementById('ilosc').style.display = 'none'; //zwijamy ilosc
}

function znikajStarter() {
	if (delay) {
		changeOpac(100, 'starter');
		opacity('starter', 100, 0, 300);
		delay = 0;
		setTimeout("document.getElementById('starter').style.display = 'none';", 310)
	}
}

function pytajOJedzonko() {
	if (curId!='tresc') changeTab('tresc');
	if ((document.getElementById('poj').style.display != 'block') || (!delay)) {
		zwinDropdowny();
		
		znikajStarter();
		changeOpac(0, 'poj');
		document.getElementById('poj_input').value = '';
		
		setTimeout("document.getElementById('starter').style.display = 'none'; document.getElementById('poj').style.display = 'block'; opacity('poj', 0, 100, 300); document.getElementById('poj_input').focus();", delay);
		delay = 0;
	} else {
		zwinDropdowny();
	}
	
}


function ustawPosilek(nazwa) {
	//workaround
	for(i=0; i < posilki.length; i++)
		if (posilki[i] == nazwa) document.getElementById('pNumerPosilku').innerHTML = nazwa;
	zwinDropdowny();
}

function pokazPosilki() {
  var lista = document.getElementById('dropdown_numerPosilku');
  
  if (lista.innerHTML == '') {
    //obliczamy liczbe
	zwinDropdowny();
    
    for(i=0; i < posilki.length; i++) {
		if (posilki[i] == document.getElementById('pNumerPosilku').innerHTML) {
			prefix = '<b>';
			postfix = '</b>'
		} else prefix = postfix = '';
		
		var zawartosc = '<div '+ (prefix ? '' : 'onmouseOver="suggestOver(this, false);" onMouseOut="suggestOut(this);" ');
		zawartosc += 'onClick="ustawPosilek(\'' + posilki[i] +'\');" ';
		zawartosc += 'class="suggest_link" id="div_posilek' + i + '"><div class="jedzonko_element">#'+ (i+1) + ' :: '+ prefix + posilki[i] + postfix + '</div><a class="rem" title="xusun" onClick="usun(this);">(x)</a></div>';

		lista.innerHTML += zawartosc;
		
    }
	lista.innerHTML += '<div class="suggest_link right" onClick="pytajOJedzonko();">dodaj posiłek...</div>';
	titleToNote.setup(1);
   } else zwinDropdowny();
}



function zmien_ilosc(objetosc) {
   document.getElementById('obj').value = objetosc; //zwijamy pierwszy dropdown
}

function rozwinIlosc() { //albo zwiń
	if (document.getElementById('ilosc').style.display != 'block') {
		if (!removeHTMLTags(document.getElementById('ilosc').innerHTML)) load('/inc/ilosc.inc', 'ilosc');
		else {
			document.getElementById('obj').value = '';
			document.getElementById('obj').focus();
		}
		zwinDropdowny();
		document.getElementById('ilosc').style.display = 'block';
		
	} else zwinDropdowny();
}

function potwierdzNazwe() { //posiłku
	zwinDropdowny();
	posilki.push(document.getElementById('poj_input').value);
	document.getElementById('pNumerPosilku').innerHTML = document.getElementById('poj_input').value;
	nieDodawaj(); //nieprecyzyjna nazwa - zamyka okienko
	
	//dodajemy diva
	var par = document.getElementById('tresc');
	var newdiv = document.createElement('div');
	newdiv.setAttribute("id",'div_'+naId(document.getElementById('poj_input').value));
	//newdiv.innerHTML = posilki[posilki.length-1];
	par.appendChild(newdiv);
}

function przeliczObj() {
	if (!(parseFloat(document.getElementById('obj').value))) { //błędna wartość
		warning("Wpisana wartość jest niepoprawna - spróbuj jeszcze raz.", 4000);
		return;
	}

	var tmp;
	//m = V*gestosc = v* (ostatnioSzukane[wybrana*ld+4]) / 1000
	if (wybrana!=(-1)) //alert(wybrana + ' -> ' +ostatnioSzukane[wybrana*ld+4]);
		tmp = document.getElementById('suw_obj').value = parseFloat(document.getElementById('obj').value) * parseFloat(ostatnioSzukane[wybrana*ld+4])/1000 /*+ 'g'*/;
	else
		tmp = document.getElementById('suw_obj').value = parseFloat(document.getElementById('obj').value) * 0.7 /*+ 'g'*/; //średnia gęstość dla sypkiego stuffu
		
	objSld.f_setValue(parseFloat(tmp));
		
	//document.getElementById('ilosc').style.display = 'none';
	
}

function naId(nazwa) {
	var out='';
	for (j = 0; j < nazwa.length; j++) {
		if ((nazwa[j] >= 'a' && nazwa[j] <= 'z') || (nazwa[j] >= 'A' && nazwa[j] <= 'Z') || (nazwa[j] >= '1' && nazwa[j] <= '9'))
			out += nazwa[j];
	}
	//alert(out);
	return out;
}

function rnd(vl) { //zaokrągla do dwóch miejsc po przecinku
	return Math.round(vl*100)/100;
}

function dodajPosilek() {
	if (curId!='tresc') changeTab('tresc');

	if (delay) { //starter znika jeśli jeszcze nie zdążył
		//opacity('starter', 100, 0, 300);
		//setTimeout("document.getElementById('starter').style.display = 'none';", 300);
		document.getElementById('starter').style.display = 'none';
	}
	
	
	if (!((posilki.length) && (document.getElementById('txtSearch').value) && (document.getElementById('iloscJedzonka').value))) { // forma nieprawidłowa
		setTimeout("warning('Musisz uzupełnić wszystkie pola, aby dodać produkt!', 3000);", delay);
		return;
	}
	
	if (!(aktualnieZaznaczona)) {
		setTimeout("warning('Niestety dany produkt nie istnieje w naszej bazie.', 3000);", delay);
		return;
	}

	if (!(parseFloat(document.getElementById('iloscJedzonka').value))) { //błędna ilość
		setTimeout("warning('Wpisana ilość produktu nie jest prawidłowa.', 3000);", delay);
		return;
	}

	delay = 0; //informuje, że starter już zniknął

	//co jeśli wpisana błędna? (wybrana = -1 chyba)
	var nazwa = document.getElementById('pNumerPosilku').innerHTML; //nazwa posilku
	var idn = naId(nazwa);
	
	if (!document.getElementById('tb_'+idn))  { //tabelka nie istnieje => tworzymy diva, nagłówek i table+headers
		var par = document.getElementById('div_'+idn);
		changeOpac(0, 'div_'+idn);
		s = new Tween(document.getElementById('div_'+idn).style,'height',Tween.strongEaseIn,0,71,0.5,'px'); s.start();
		setTimeout("document.getElementById('div_"+idn+"').style.height = 'auto';", 600);
		
		var newh = document.createElement('h1');
		newh.innerHTML = nazwa;
		par.appendChild(newh);

		var newtb = document.createElement('table');
		newtb.setAttribute("id", 'tb_'+idn);
		
		var tr = document.createElement('tr');
		var attr = new Array("nazwa", "bialko", "cukry", "fat", "kcal");
		for (i = 0; i < 5; i++) {
			var th = document.createElement('th');
			th.setAttribute("class", 'th_'+attr[i]);
			th.innerHTML = "&nbsp;";
			tr.appendChild(th);
		}
		
		newtb.appendChild(tr);
		
		var tbody = document.createElement('tbody');
		newtb.appendChild(tbody);
		
		par.appendChild(newtb);
		
		opacity('div_'+idn, 0, 100, 500);
	}
	
	//dodajemy wiersz
	var myTable = document.getElementById('tb_'+idn);
	var tBody = myTable.getElementsByTagName('tbody')[0];
	var newTR = document.createElement('tr');
	
	var newTD = document.createElement('td');
	dodawanaIlosc = parseFloat(document.getElementById('iloscJedzonka').value.replace('kg', 'e3')); //w gramach, ale jako liczba już
	newTD.innerHTML = ostatnioSzukane[wybrana*ld] + ' ('+dodawanaIlosc+'g) <a onClick="del(this)" title="xustb">(x)</a>';
	newTR.appendChild(newTD);
	
	for (i = 1; i < 4; i++) {
		var newTD = document.createElement('td');
		var dod;
		newTD.innerHTML = (dod = rnd((dodawanaIlosc / 100) * ostatnioSzukane[wybrana*ld + i])); //zależna od wpisanej ilości
		newTR.appendChild(newTD);
		
		switch(i) {
			case 1: akt_pr+=dod; break;
			case 2: akt_ch+=dod; break;
			case 3: akt_fat+=dod; break;
		}
	}
	
	var newTD = document.createElement('td');
	newTD.innerHTML =  rnd((dodawanaIlosc / 100) * (we_bi*ostatnioSzukane[wybrana*ld+1] + we_ch*ostatnioSzukane[wybrana*ld+2] + we_fat*ostatnioSzukane[wybrana*ld+3]));	//wartość energetyczna wg wiki; 4*bi + 4*ch + 4*fat
	newTR.appendChild(newTD);
	
	/* uzupełniamy statystyki */
	akt_kcal+=parseFloat(newTD.innerHTML);
	refresh_stats(); //wyświetlamy
	
	newTR.className = 'transparent';
	var d = new Date();
	var id = newTR.id = 'row'+d.getTime(); //random
	tBody.appendChild(newTR);
	opacity(id, 0, 100, 500);
	
	titleToNote.setup(1);
}


function nieDodawaj() {
	opacity('poj', 100, 0, 300);
	setTimeout("document.getElementById('poj').style.display='none';", 300);
}

function del(r)  { /* remove table row */
	var i = r.parentNode.parentNode.rowIndex;
	var tr = r.parentNode.parentNode;
	var tb = tr.parentNode; //tbody chyba

	if (tb.rows.length == 1) { //ostatni wiersz
		tb.parentNode.parentNode.innerHTML = '';
	}
	
	/* odejmujemy ze statystyk */
	var ch = tr.childNodes;
	/*for (var c=0; c<children.length; c++) { //for children
		alert(children[c].innerHTML);
	} that's how it works*/
	akt_pr-=parseFloat(ch[1].innerHTML);
	akt_ch-=parseFloat(ch[2].innerHTML);
	akt_fat-=parseFloat(ch[3].innerHTML);
	akt_kcal-=parseFloat(ch[4].innerHTML);
	
	refresh_stats();
	
	r.parentNode.parentNode.parentNode.deleteRow(i);
	
	titleToNote.xhideNote();
}

/* funkcje dla obsługi statystyk */
function uzup(elid, vbl) {
	document.getElementById(elid).innerHTML = ((vbl >= 0) ? Math.round(vbl) : 0);
}

function refresh_stats() {
	uzup("akt_pr", akt_pr); uzup("akt_ch", akt_ch); uzup("akt_fat", akt_fat); //lewa kolumna
	uzup("goal_pr_g", goal_pr_g); uzup("goal_ch_g", goal_ch_g); uzup("goal_fat_g", goal_fat_g); //prawa
	uzup("akt_kcal", Math.floor(akt_kcal)); uzup("goal_kcal", goal_kcal); //kalorie
}

function recalc_goals() {
	goal_pr_g = Math.floor(goal_kcal * goal_pr / we_bi);
	goal_ch_g = Math.floor(goal_kcal * goal_ch / we_ch);
	goal_fat_g = Math.floor(goal_kcal * (1 - goal_ch - goal_pr) / we_fat);
}

/* pozostałe */

function init(withTab, withEbook) {
	/* tworzymy divy dla defaultowych posiłków*/
	for(i=0; i < posilki.length; i++) {
		//alert(posilki[i]);
		{
			var par = document.getElementById('tresc');
			var newdiv = document.createElement('div');
			newdiv.setAttribute("id",'div_'+naId(posilki[i]));
			//newdiv.innerHTML = posilki[i];
			par.appendChild(newdiv);
		}
	}
	
	/* uzupełniamy ramkę "podsumowanie" o defaultowe wartości z js */
	recalc_goals();
	refresh_stats();

	if (!withTab) withTab = 'tresc';
	
	/* zapobiegamy mruganiu */
	
	var zakladki = new Array('tresc', 'ebooki', 'div_arty', 'div_baza');
	for (i=0; i < zakladki.length; i++)
		if (withTab != zakladki[i]) {
			setTimeout("changeOpac(0, '"+zakladki[i]+"')", 0);
			setTimeout("document.getElementById('"+zakladki[i]+"').style.display = 'none';", 0);
		} else {
			setTimeout("changeOpac(1000, '"+zakladki[i]+"')", 0);
			setTimeout("document.getElementById('"+zakladki[i]+"').style.display = 'block';", 0);
			curId = withTab;
		}
		
	changeOpac(0, 'copy'); //copyright note
	
	scnHei = document.documentElement.clientHeight - 20 - 120; //120 na statsy. 20 na oko, bo nie wiem jak inaczej
	
	//dla ebooków
	if (withTab=='ebooki') {
		if (withEbook != '') curEbook = withEbook;
	}
}

function usun(d) { /* usuwa posiłek */
	d.parentNode.onClick = ''; //usuwamy domyślną akcję dla rodzica - i tak zaraz umrze

	var lrhtml=d.parentNode.innerHTML; //za
	var nazwa = removeHTMLTags((lrhtml.split(' » ')[1]).split('</div>')[0]);
	document.getElementById('tresc').removeChild(document.getElementById('div_'+naId(nazwa)));
	//usuwamy z tablicy
	for(i=0; i < posilki.length; i++)
		if (nazwa == posilki[i]) { posilki.splice(i,1); break; }
	//ustawiamy pierwszy istniejący jeśli takowy istnieje
	
	if (posilki.length) ustawPosilek(posilki[0]);
		else document.getElementById('pNumerPosilku').innerHTML = brakPosilkow;
	
}

/* warning challenge */
function warning(tresc, czas) {
	var animtime = 300;
	var newdiv = document.createElement('div');
	
	newdiv.setAttribute("id", "error");
	document.getElementById('container').appendChild(newdiv);
	changeOpac(0, "error");
	
	newdiv.setAttribute("class", "error");
	newdiv.innerHTML =	"<div class=\"error1\"></div>\n<div class=\"error2\">"+tresc+"</div>";
	

	opacity("error", 0, 100, animtime);
	
	setTimeout("opacity(\"error\", 100, 0, "+animtime+"); setTimeout(\"document.getElementById('container').removeChild(document.getElementById('error'));\", "+animtime+");", animtime+czas);

}

function changeTab(newId) { /* pod globalną curId aktualna */
	//znikajStarter();
	//changeOpac(0, 'trescx');
	//document.getElementById('trescx').style.display = 'none';
	
	// jeśli nie ma jeszcze zawartośći, to wczytaj
	if (!removeHTMLTags(document.getElementById(newId).innerHTML)) load('/nojs/'+newId+'.nodiv.inc.php', newId);
	//if (newId == 'ebooki') ebookNoFlash();
	
	var bombmax = (scnHei - 100 - document.getElementById(curId).offsetHeight); //szerokość do której bomb się rozszerzy
	
	s = new Tween(document.getElementById("bomb").style,'height',Tween.bounceEaseOut,0,bombmax,0.5,'px');
	s.start();
	setTimeout("opacity(\""+curId+"\", 100, 0, 500);", 500); //seuenced for performance
	setTimeout("document.getElementById(\""+curId+"\").style.display = 'none'; 	t = new Tween(document.getElementById(\"bomb\").style,'height',Tween.bounceEaseOut,"+bombmax+",0,0.5,'px'); t.start();", 1000);
	setTimeout("document.getElementById(\""+newId+"\").style.display = 'block'; opacity(\""+newId+"\", 0, 100, 500);", 1000);

	curId = newId;
	
	if (newId=='ebooki') changeBook('prawybook1');
}

function changeBook(tabName) {
	opacity(curEbook, 100, 0, 300);
	setTimeout("document.getElementById('"+curEbook+"').style.display = 'none'; document.getElementById('"+tabName+"').style.display = 'block'; opacity(\""+tabName+"\", 0, 100, 300); curEbook = '"+tabName+"';", 300);	

}

function objConfirm() {
	document.getElementById('iloscJedzonka').value = document.getElementById('suw_obj').value + 'g';
		
	document.getElementById('ilosc').style.display = 'none';
}

function zatwLimity() {
	/* ukrywamy okno */
	changeOpac(100, 'limity');
	opacity('limity', 100, 0, 300);
	setTimeout("document.getElementById('limity').style.display = 'none';", 300);
	
	/* sprawdamy poprawność danych i zapisujemy odpowiednio */
	goal_kcal = parseFloat(document.getElementById('suw_kcal').value);
	goal_pr = parseFloat(document.getElementById('suw_prot').value)/100; //w procentach
	goal_ch = parseFloat(document.getElementById('suw_carb').value)/100; //jw.
	if (goal_pr + goal_ch > 1) { goal_ch = 1 - goal_pr; objSld4.f_setValue(100*goal_ch); };
	//goal_fat = 1 - (goal_pr + goal_ch);
	
	recalc_goals();
	refresh_stats();
}

function pokazLimity() {
	if (!removeHTMLTags(document.getElementById('limity').innerHTML)) load('/inc/limity.inc', 'limity');
	znikajStarter();
	changeOpac(0, 'limity');
	document.getElementById('limity').style.display = 'block';
	opacity('limity', 0, 100, 300); /* mruga */

}

