/*******************************************************************************
 * Dietos uzdavinio sprendimo klase
 * -----------------------------------------------------------------------------
 * Pradinis kodas: *****
 * is http://soften.ktu.lt/~mockus/dietalast/contdietalast.html
 * -----------------------------------------------------------------------------
 * Komentarai ir pakeitimai: Marijus Doviltis IFM-0/1 2005
 *
 * Atlikta:
 *  1. Kodas papildytas komentarais, sutvarkyti pavadinimai,kad atspindetu tuos
 *     duomenis kurie imami is lenteles o ne Mg zymetu Na ir pan. Taip pat buvo 
 *     naudojamas Cl vietoj J (Chloras vietoj Jodo), Cl nera normose, be to jis 
 *     nera is tu elementu kurie paprastai ivertinami. Mano nuomone rusiskoje
 *     medziagoje Cl taip pat panaudotas vietoje J, juo lab kad sutikrinus 
 *     duomenis su http://soften.ktu.lt/~mockus/dietalagu/dieta-prods.txt
 *     cl kiekis atitinka J kieki. 
 *  2. Perziureti skaiciavimai, pasalinti nereikalingi, painus ir neaisku kam
 *     skirti perskaiciavimai is vieno dydzio i kita o paskui vel atgal.
 *  3. Is naujo isversta rusiska medziaga, dalis patikrinta ir pakoreguota
 *     pagal kitus saltinius
 *  4. Perdelioti duomenu laukai applete, dalis ju sugrupuota. Tai turetu 
 *     palengvinti tolimesnes modifikacijas jei bus pridedami apribojimai,
 *     be to taip patogiau naudotis.
 *  5. Patiekalas yra neskaidomas (t.y. jis gali buti: 0, 1,2... , bet ne 0.0002
 *     ar pan. Be to,patiekalo maistiniai elementai neskaiciuojami kilogramais
 *     ty ne dauginti is 10
 *  6. Perkelta galimybe is siu metu darbo, kad itrauktu tik tuos produktus kuriu
 *     skonis atitinka pasirinkta su intervalu [pasirinkas:10]
 *     Bet sitas pasirinkimas atliekamas atskiru parametru o ne bendru kaip 
 *     buvo padaryta kolegu.
 *  7. Sutvarkyta optimizavimo formule pagal teorija, kad atitiktu realius 
 *     rezultatus. 
 *  8. Isvedami visi optimizavimo parametrai. Kartais pranesimas - "Virsijote
 *     rekomenduojama norma" gaunamas ,nes kelis kartus virsyjama norma pagal 
 *     vitaminus ar mineralus.
 *  9. Dabartiniai skaiciavimai atliekami su 12 grieztu ribojimu (ty virsutine 
 *     ir apatine ribos nurodytos 12 dedamuju) visi kiti apriboti is apacios.
 *     Grieztai apribota: Cal,Baltymai,Riebalai,Angliavandelniai
 *    					  vitaminai:A,B1,B2,B3,B6,B12;
 *     					  mikroelementai: Ca,S;
 *     Apribojimas is apacios (ty ne maziau negu reikia) sukuria tarsi laisves 
 *     laipsnius. Is apacios apriboti yra:
 *     					  vitaminai: C,E,PP
 *				 	  	  mikroelementai: P(Fosforas),Na;
 *
 * Dar reikia atlikti (pasiulymai kitiem metam):
 * 1. Patikslinti duomenis lenteleje ir ja papildyti
 * 2. Kadangi dienos normos yra atskirose lentelese, jos priklauso ne tik nuo
 *    mases, bet ir nuo amziaus, gyvenimo budo. Vartotojui patogu butu siuos 
 *    duomenis gauti migtuko paspaudimu ir pasirinkti norimus (kvepia dideliu
 *    programavimu)
 * ****************************************************************************
 * Naudingi parametrai:
 * Nurodant elemento pozicija applete naudojamos koordinates (x1,y1, delta x,delta y)
 * (x1,y1 - virsutinis kairysis taskas,delta x,delta y-dydis)
 * x dideja nuo kaires, y dideja nuo virsaus
 *------------------------------------------------
 **/
 package source;
import com.symantec.itools.javax.swing.borders.LineBorder;
import com.symantec.itools.javax.swing.models.*;

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.EventObject;
import javax.swing.*;
import javax.swing.text.JTextComponent;
import lp.*;
import symantec.itools.lang.Context;

public class Dieta extends JApplet
{
 /*---------------------------------------------
  * parametrai optimizacijai ?
  *--------------------------------------------*/
    static final short LE = 0;
    static final short EQ = 1;
    static final short GE = 2;
    static final short OF = 3;
    int productCount; // pagrindinio produktu saraso dydis
    int activProdCnt; //produktu skaicius kurie itraukiami i skaiciavimus
    Product produktai[]; //pagrindinis produktu sarasas
    Product prodActiv[]; //aktyviu produktu sarasas
    Product produktai1[];// laikinas sarasas
    /*--------------------------------------
     * kiti kintamieji,vaizdo elementai ir tt
     *-------------------------------------*/
    public boolean duomenuKlaida;
    String failas;
    JDialog D;
    JLabel lblFailas;
    JTextField txtfldFailas;
    JButton btnOK;
    JTabbedPane tbdpnlBendras;
    JPanel pnlDuomenys;
    JScrollPane scrlpnLentele;
    JTable tblLentele;
    JLabel lblLentelesPav;
    JLabel lblRedagavimas;
    JLabel lblName;
    JTextField txtfldName;
    JLabel lblPrice;
    JTextField txtfldPrice;
    JLabel lblCalories;
    JTextField txtfldCalories;
    JLabel lblProteins;
    JTextField txtfldProteins;
    JLabel lblFats;
    JTextField txtfldFats;
    JLabel lblCarbohydrates;
    JTextField txtfldCarbohydrates;
    JLabel lblTaste;
    JComboBox cmbbxTaste;
    JButton btnLoad;
    JButton btnNew;
    JButton btnUpdate;
    JButton btnNext1;
    JButton btnDelete;
    JCheckBox chkbxDish;
    JLabel lblDish;
    JLabel JLabel5;
    JLabel JLabel6;
    JLabel JLabel7;
    JLabel JLabel8;
    JLabel JLabelB22; 
    JLabel JLabelB33;
    JLabel JLabelB66;
    JLabel JLabelB122;
    JLabel JLabelPP; 
    JLabel JLabelCa2;
    JLabel JLabelNa2;
    JLabel JLabelS2; 
    JLabel JLabelP2; 
    JLabel JLabelJ2;
    JTextField txtfldVitaminC;
    JTextField txtfldVitaminA;
    JTextField txtfldMineralCa;
    JTextField txtfldMineralNa;
    JPanel pnlPageidavimai;
    JTextField txtfldWeight;
    JLabel lblWeight;
    JButton btnNext2;
    JComboBox cmbbxOptimization;
    JLabel lblOptimization;
    JTextField txtfldVitaB2; 
    JTextField txtfldVitaB3; 
    JTextField txtfldVitaB6;  
    JTextField txtfldVitaB12;  
    JTextField txtfldVitaPP;  
    JTextField txtfldMCA;   
    JTextField txtfldMNa;  
    JTextField txtfldMS;  
    JTextField txtfldMP;  
    JTextField txtfldMJ;     
    JLabel lblImportance;
    JComboBox cmbbxImportance;
    JLabel JLabel9;
    JLabel JLabel10;
    JLabel JLabel11;
    JLabel JLabel12;
    JLabel JLabel13;
    JLabel JLabel14;
    JLabel JLabel15;
    JPanel pnlRezultatai;
    JScrollPane JScrollPane1;
    JTable JTable1;
    JLabel JLabel1;
    JLabel JLabel2;
    JLabel JLabel3;
    JLabel JLabel4;
    JLabel lblCaloriesTotal;
    JLabel lblProteinsTotal;
    JLabel lblFatsTotal;
    JLabel lblCarbohydratesTotal;
    /*Papildomi atsakymai*/
    JLabel lblPriceTTlbl;
    JLabel lblPriceTotal;
    
    JLabel lblVitATotal;
    JLabel lblVitCTotal;
    JLabel lblVitB1Total;
    JLabel lblVitB2Total;
    JLabel lblVitB3Total;
    JLabel lblVitB6Total;
    JLabel lblVitB12Total;
    JLabel lblVitETotal;
    JLabel lblVitPPTotal;
    JLabel lblMinCaTotal;
    JLabel lblMinNaTotal;
    JLabel lblMinSTotal;
    JLabel lblMinPTotal;
    JLabel lblMinJTotal;
   
    JLabel lblVitATTlbl;
    JLabel lblVitB1TTlbl;
    JLabel lblVitB2TTlbl;
    JLabel lblVitB3TTlbl;
    JLabel lblVitB6TTlbl;
    JLabel lblVitB12TTlbl;
    JLabel lblVitCTTlbl;
    JLabel lblVitETTlbl;
    JLabel lblVitPPTTlbl;
    JLabel lblMinCaTTlbl;
    JLabel lblMinNaTTlbl;
    JLabel lblMinSTTlbl;
    JLabel lblMinPTTlbl;
    JLabel lblMinJTTlbl;
   /*end*/
    StringTableModel tblmdlLentele;

    StringComboBoxModel cmbbxmdlTaste;
    StringComboBoxModel cmbbxmdlProteinsW;
    StringComboBoxModel cmbbxmdlfatsW;
    StringComboBoxModel cmbbxmdlCarbohydratesW;
    StringComboBoxModel cmbbxmdlCaloriesW;
    LineBorder lineBorder1;
    StringTableModel tblmdlRezultatai;
    StringComboBoxModel cmbbxmdlOptimize;
    StringComboBoxModel cmbbxmdlBias;
    JLabel lblStatus;
    StringComboBoxModel cmbbxmdlITaste;
    StringComboBoxModel cmbbxmdlIPrice;
    StringComboBoxModel cmbbxmdlImportance;

// NAUJI COMBOBOXAI
    private javax.swing.JTextField ReikiaAngl;
    private javax.swing.JTextField ReikiaBalt;
    private javax.swing.JTextField ReikiaFosf;
    private javax.swing.JTextField ReikiaKal;
    private javax.swing.JTextField ReikiaKalc;
    private javax.swing.JTextField ReikiaNatr;
    private javax.swing.JTextField ReikiaRieb;
    private javax.swing.JTextField ReikiaSer;
    private javax.swing.JTextField ReikiaJ;
    
    private javax.swing.JTextField ReikiaVitA;
    private javax.swing.JTextField ReikiaVitB1;
    private javax.swing.JTextField ReikiaVitB2;
    private javax.swing.JTextField ReikiaVitB3;
    private javax.swing.JTextField ReikiaVitB6;
    private javax.swing.JTextField ReikiaVitB12;    
    private javax.swing.JTextField ReikiaVitC;
    private javax.swing.JTextField ReikiaVitE;
    private javax.swing.JTextField ReikiaVitPP;    
    
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel19;//marijus
    private javax.swing.JLabel jLabel20;//marijus 
    private javax.swing.JLabel jLabel21;//marijus     
    private javax.swing.JLabel jLabel22;//marijus    
    private javax.swing.JLabel jLabe20;
    private javax.swing.JTabbedPane jTabbedPane1;
    /*nauji Marijus*/
    JLabel JLabelAddOnTaste;
    JComboBox cmbbxIAddTaste;
/*******************************************************************************
*
* Privacios klases manipuliacijai su applet objekto elementais
*
*******************************************************************************/
    class SymItem implements ItemListener
    {

        public void itemStateChanged(ItemEvent event)
        {
            Object object = event.getSource();
            if(object == cmbbxOptimization)
                cmbbxOptimization_itemStateChanged(event);
        }

        SymItem()
        {
        }
    }
    /*------------------------------------------------------------*/
    class SymAction implements ActionListener
    {

        public void actionPerformed(ActionEvent event)
        {
            Object object = event.getSource();
            if(object == btnLoad)
                btnLoad_actionPerformed(event);
            else
            if(object == btnNext2)
                btnNext2_actionPerformed(event);
            if(object == btnNext1)
                btnNext1_actionPerformed(event);
            else
            if(object == btnOK)
                btnOK_actionPerformed(event);
            else
            if(object == btnNew)
                btnNew_actionPerformed(event);
            else
            if(object == btnUpdate)
                btnUpdate_actionPerformed(event);
            else
            if(object == btnDelete)
                btnDelete_actionPerformed(event);
        }

        SymAction()
        {
        }
    }
    /*------------------------------------------------------------*/
    class SymMouse extends MouseAdapter
    {

        public void mouseClicked(MouseEvent event)
        {
            Object object = event.getSource();
            if(object == tblLentele)
                tblLentele_mouseClicked(event);
        }

        SymMouse()
        {
        }
    }
/*******************************************************************************
* Metodai: darbas su duomenimis
******************************************************************************/
 
 /* ------------------------------------
 *  metodas Clear isvalo duomenu laukus
 *  ------------------------------------ */
    void Clear()
    {
        txtfldName.setText("");
        txtfldPrice.setText("");
        txtfldCalories.setText("");
        txtfldProteins.setText("");
        txtfldFats.setText("");
        txtfldCarbohydrates.setText("");
        txtfldVitaminC.setText("");
        txtfldVitaminA.setText("");
        txtfldMineralCa.setText("");
        txtfldMineralNa.setText("");
        txtfldVitaB2.setText("");
        txtfldVitaB3.setText("");
        txtfldVitaB6.setText("");
        txtfldVitaB12.setText("");
        txtfldMCA.setText("");
        txtfldMNa.setText("");
        txtfldMS.setText("");
        txtfldVitaPP.setText("");
        txtfldMP.setText("");
        txtfldMJ.setText("");
        cmbbxTaste.setSelectedIndex(-1);
        chkbxDish.setSelected(false);
    }
 /* ------------------------------------
 *  metodas btnDelete_actionPerformed 
 *  istrina viena eilute is duomenu lenteles
 *  ------------------------------------ */
    void btnDelete_actionPerformed(ActionEvent event)
    {
        int nr = tblLentele.getSelectedRow();
        tblmdlLentele.removeRow(nr);
        Clear();
    }
 /* ------------------------------------
 *  metodas btnLoad_actionPerformed 
 *  atidaro duomenu faila ir jo duomenis 
 *  atvaizduoja ekrane
 *  ------------------------------------ */
    void btnLoad_actionPerformed(ActionEvent event)
    {
        D.show();
        URL fileURL = null;
        BufferedReader dataStream = null;
        int n = 0;
        try
        {
            fileURL = new URL(String.valueOf(getCodeBase()) + failas);
        }
        catch(MalformedURLException _ex) { }
        try
        {
            java.io.InputStream input = fileURL.openStream();
            dataStream = new BufferedReader(new InputStreamReader(input));
            lblStatus.setText("File " + fileURL.toString() + " opened");
        }
        catch(IOException _ex)
        {
            lblStatus.setText("Error opening file: " + fileURL.toString());
        }
        try
        {
            String s = dataStream.readLine();
            Integer sk = new Integer(s);
            n = sk.intValue();
        }
        catch(IOException _ex)
        {
            lblStatus.setText("1 Wrong data file.");
        }
        String strduom[] = new String[n];
        try
        {
            for(int i = 0; i < n; i++)
                strduom[i] = dataStream.readLine();

            tblmdlLentele.setItems(strduom);
        }
        catch(IOException _ex)
        {
            lblStatus.setText("2 Wrong data file.");
        }
        try
        {
            dataStream.close();
        }
        catch(IOException _ex)
        {
            lblStatus.setText("File closing failure.");
        }
    }
 /* ------------------------------------
 *  metodas btnNew_actionPerformed 
 *  iveda nauja produkta/patiekala i 
 *  duomenu lentele
 *  ------------------------------------ */
    void btnNew_actionPerformed(ActionEvent event)
    {
        String temp[] = new String[1];
        try
        {
         String tmpPatiekalas;
         if(chkbxDish.isSelected())
            tmpPatiekalas = "1";
         else
            tmpPatiekalas="0";
/******************************************************************************
 *CIA(ZEMIAU) REIKIA SUSUMUOTI VISUS ELEMENTUS IS TEXBOKSU TIKSLIA TVARKA !!!
 *EILE(TVARKA) TOKIA :
 * PRODUKAS,BALTYMAI(PROTEISNS),RIEBALAI(FATS), ANGLIAVANDENIAI(CARBOHYDRAUTES),
 * KALORIJOS,A,E,C,B1,B2,B3,B6,B12,PP,CA,NA,S,FTOR(P),J(JODAS),VAIZDAS,
 * PATIEKALAS,KAINA.
 * Patiekas pridedamas taip : ... + "," + tmpPatiekalas + ","+...
 **Marijus: BUVO pamirsta prideti patiekalo pozymi :))
*******************************************************************************/
        temp[0] = txtfldName.getText() + "," +
        txtfldProteins.getText() + "," + 
        txtfldFats.getText() + "," + 
        txtfldCarbohydrates.getText() + "," + 
        txtfldCalories.getText() + "," +         
        txtfldVitaminC.getText() + "," +
        txtfldVitaminA.getText() + "," +
        txtfldMineralCa.getText() + "," +
        txtfldMineralNa.getText() + "," +
        txtfldVitaB2.getText() + "," +
        txtfldVitaB3.getText() + "," +
        txtfldVitaB6.getText() + "," +
        txtfldVitaB12.getText() + "," +
        txtfldVitaPP.getText() + "," +
        txtfldMCA.getText() + "," +
        txtfldMNa.getText() + "," +
        txtfldMS.getText() + "," +
        txtfldMP.getText() + "," +
        txtfldMJ.getText() + "," +
 
        cmbbxTaste.getSelectedItem().toString() + "," +  
 /*Patiekalas*/       tmpPatiekalas.toString() + "," + 
        txtfldPrice.getText();          
           
            if(tblLentele.getRowCount() == 1)
                tblmdlLentele.setItems(temp);
            else
                tblmdlLentele.addRow(temp[0]);
            Clear();
        }
        catch(NullPointerException _ex)
        {
            lblStatus.setText("Please enter all product fields!!!");
        }
    }
 /* ------------------------------------
 *  metodas btnNext1_actionPerformed 
 *  Atlieka veiksma "Toliau"
 *  1. is duomenu ivedimo lango eina i 
 *  optimizavimo parametru nustatymo langa
 *  ------------------------------------ */
    void btnNext1_actionPerformed(ActionEvent event)
    {
        formProduct(tblmdlLentele);
        if(productCount == 0)
            lblStatus.setText("No data");
        else
        if(!duomenuKlaida)
        {
            lblStatus.setText("");
            pnlPageidavimai.setEnabled(true);
            tbdpnlBendras.setSelectedIndex(1);
        } else
        {
         lblStatus.setText("Wrong data.");
        }
    }
 /* ----------------------------------------------------
 *  Metodas SetProdOnTaste() suformuoja sarasa produktu
 *  kuriu skonis yra didesnis arba 2 dydziais mazesnis
 *  negu pasirinktas skaiciavimams
 *  ----------------------------------------------------*/
    void SetProdOnTaste()
    {
                // productCount >0 (pries kreipiantis buvo patikrinta 
        //atrenka produktus pagal skonio faktorius
        int j=0;
        int sv=cmbbxIAddTaste.getSelectedIndex();
        int sv1=0; 
        float sko=0;
        
        if (sv==0) {sv1=sv;}   //jei skonis nevertinamas maksimalus skonio reiksme
        else
          if (sv==10){sv1=8;} //jei skonis max, sumazinam 2
          else {sv1=sv;};   //kitu atveju imam koks ivestas
          activProdCnt=0;
        for(int i = 0; i < productCount; i++){
            sko=produktai[i].getTaste(); //gauk skoni
            if(sko>=sv1)//ivedam tik tuos jei skonis mus tenkina,
              {
                  j++;
                  produktai1[j-1] = new Product();
                  produktai1[j-1] =produktai[i];
                 }//if
             }//for
               //******pabaiga*******************   
         if (j!=0){
                activProdCnt=j;  //produktu skaicius kurie itraukiami i skaiciavimus
                prodActiv=new Product[activProdCnt];
                for (int i=0; i < activProdCnt; i++){
                    prodActiv[i]= new Product();
                    prodActiv[i]=produktai1[i];
                 }
        } 
       
    }
 /* ------------------------------------
 *  metodas btnNext_actionPerformed 
 *  Atlieka veiksma "Toliau"
 *  2. is nustatymo langu kreipiasi i 
 *  optimizacija ir atlieka veiksmus
 *  bei gauna rezultatus
 *  ------------------------------------ */
    void btnNext2_actionPerformed(ActionEvent event)
    {
       
     if(productCount == 0)
        {
            lblStatus.setText("No data");
            tbdpnlBendras.setSelectedIndex(0);
        } else
        {
         produktai1 = new Product[productCount];
         SetProdOnTaste();
         if(activProdCnt==0){
           //      lblStatus.setText("Su pasirinktu skoniu (-2) produktu nerasta");
                 tbdpnlBendras.setSelectedIndex(0);
         }else{
        
            //int optimize = cmbbxOptimization.getSelectedIndex();
        /*bias - grozio ytaka*/
            double bias =(cmbbxImportance.getSelectedIndex());/*neaisku ka cia daro*/
            double weight = Double.valueOf(txtfldWeight.getText()).doubleValue();
            
            solve lpSolve = new solve();
            lprec lpRec = new lprec(0, activProdCnt);
       /*suformuojam sarasa kur pas mus tik sveiki skaiciai - patiekalai*/     
            short kl = 1;
            for(int i = 0; i < activProdCnt; i++)
                if(prodActiv[i].getDish() == 1)
                    lpSolve.set_int(lpRec, i + 1, kl);
       /*apribojimu suformavimas*/
/* BALTYMAI,RIEBALAI, ANGLIAVANDENIAI,KALORIJOS,A,E,C,B1,B2,B3,B6,B12,
 * PP,CA,NA,S,FTOR(P),J(JODAS),VAIZDAS,KAINA. */
            double data[] = new double[activProdCnt + 1];
            double Cal = Double.valueOf(ReikiaKal.getText()).doubleValue();
            double Fat = Double.valueOf(ReikiaRieb.getText()).doubleValue();
            double Pro = Double.valueOf(ReikiaBalt.getText()).doubleValue();
            double Car = Double.valueOf(ReikiaAngl.getText()).doubleValue();
            double VitC = Double.valueOf(ReikiaVitC.getText()).doubleValue();
            double VitA = Double.valueOf(ReikiaVitA.getText()).doubleValue();
            double MinCa = Double.valueOf(ReikiaKalc.getText()).doubleValue();
            double MinNa = Double.valueOf(ReikiaNatr.getText()).doubleValue(); //Mg=Na pas mumis(Marijus:todel pakeiciau pavadinima)
            //Nauji constraints
            double VitE = Double.valueOf(ReikiaVitE.getText()).doubleValue();
            double VitB1 = Double.valueOf(ReikiaVitB1.getText()).doubleValue();
            double VitB2 = Double.valueOf(ReikiaVitB2.getText()).doubleValue();
            double VitB3 = Double.valueOf(ReikiaVitB3.getText()).doubleValue();            
            double VitB6 = Double.valueOf(ReikiaVitB6.getText()).doubleValue();
            double VitB12 = Double.valueOf(ReikiaVitB12.getText()).doubleValue();
            double VitPP = Double.valueOf(ReikiaVitPP.getText()).doubleValue();
            double Fosf = Double.valueOf(ReikiaFosf.getText()).doubleValue();
            double Siera = Double.valueOf(ReikiaSer.getText()).doubleValue();
            double J = Double.valueOf(ReikiaJ.getText()).doubleValue();
            
        double BeautyFactor =cmbbxImportance.getSelectedIndex();
        double Paklaida =0.1;//-0.1;
        //double C; double X;
         double rhs;
        /*Optimizuojama pagal kaina, ribojimus nusako kalorijos (ju skaiciu galima keisti
         *pagal "grozio" faktoriu), baltymai,riebalai ir kt.  
         *----------------------------------------------------
         *skonio faktorius veikia kaina 10%, juo didesnis skonis tuo daugiau
         * norima uz preke moketi, t.y. kaina mazeja didejant skoniui
         * tikslo funkcija: minx->(sum(ci-si)xi + g(sum(ai1*xi)-b1)
         * tikslo f-ja xi atzvilgiu: minx->(sum((ci-si+g*ai1)xi-g*b1)
         * kur ci - produkto kg/vnt kaina, si - skonio "kaina", g - grozio faktorius,
         * aij - kaloriju kiekis kg, b1 - kaloriju norma
         **/
         double prieX;
         double Cval;
          /** tikslo f-ja xi: sum((ci-si+g*ai1)xi   -g*bi) 
          *  is cia: xi=(g*b1)/(ci-si+g*ai1)
          *  g*b1 - vienodas visiems, randame ji.
          ***/
   		Cval=weight*Cal+weight*Cal*BeautyFactor*0.1;         		
        for(int i = 0; i < activProdCnt; i++){  //90(84) formule vienam produktui
                /*  grozio poveikis, laikant kad jis yra isreikstas procentaliai
                 *  todel dalinama is 100% (ty daugyba is 0.1) 
                 *  procentu kitimo zingsnis -  10
                 *-------------------------------------------------------------*/
             prieX= prodActiv[i].price - prodActiv[i].price*prodActiv[i].Taste*0.1 + BeautyFactor*0.1*prodActiv[i].calories;
             data[i + 1]= Cval/prieX;
         }
            lpSolve.set_obj_fn(lpRec, data);
            lpSolve.set_minim(lpRec);
/*suvienodiname dimensijas tarp sitemoje esanciu reiksmiu ir to ka skaiciuosime*/
/* Reikalaujamos normos 1kg zmogaus mases, todel perskaiciuojame min */
/* apribojimus sudarome su "paklaidos" nukrypimu nuo min ir max*/
/*Calories*/
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].getCalories();
            rhs = (Cal - Cal*Paklaida) * weight;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
            rhs = (Cal + Cal*Paklaida) * weight;
            lpSolve.add_constraint(lpRec, data, LE, rhs);
/*Proteins*/
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].getProteins();
            rhs = (Pro -Pro*Paklaida)* weight;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
            rhs = (Pro + Pro *Paklaida) * weight;
            lpSolve.add_constraint(lpRec, data, LE, rhs);
/*Fats*/
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].getFats();
            rhs = (Fat - Fat * Paklaida)*weight;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
            rhs = (Fat + Fat * Paklaida) * weight;
            lpSolve.add_constraint(lpRec, data, LE, rhs);
/*Carbohydrates*/            
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].getCarbohydrates();
            rhs = (Car -Car * Paklaida)* weight;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
            rhs = (Car + Car * Paklaida) * weight;
            lpSolve.add_constraint(lpRec, data, LE, rhs);
        
/*mikroelementai ir vitaminai pateikiami fiksuota dienos norma zmogui*/

/*vit A*/
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].getVitA();
            rhs = VitA - VitA * Paklaida;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
            rhs = VitA + VitA * Paklaida;
            lpSolve.add_constraint(lpRec, data, LE, rhs);
/*vit B1*/                
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].vitB1;
            rhs = VitB1 - VitB1 * Paklaida;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
            rhs = VitB1 + VitB1 * Paklaida;
            lpSolve.add_constraint(lpRec, data, LE, rhs);            
/*vit B2*/             
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].vitB2;
            rhs = VitB2 - VitB2 * Paklaida;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
            rhs = VitB2 + VitB2 * Paklaida;
            lpSolve.add_constraint(lpRec, data, LE, rhs);            
/*vit B3*/             
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].vitB3;
            rhs = VitB3 - VitB3 * Paklaida;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
            rhs = VitB3 + VitB3 * Paklaida;
            lpSolve.add_constraint(lpRec, data, LE, rhs);            
/*vit B6*/             
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].vitB6;
            rhs = VitB6 - VitB6 * Paklaida;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
            rhs = VitB6 + VitB6 * Paklaida;            
            lpSolve.add_constraint(lpRec, data, LE, rhs);            
/*vit B12*/             
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].vitB12;
            rhs = VitB12 - VitB12 * Paklaida;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
            rhs = VitB12 + VitB12 * Paklaida;
            lpSolve.add_constraint(lpRec, data, LE, rhs);            
/*vit C*/         
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].getVitC();
            rhs = VitC - VitC * Paklaida;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
           
/*vit E*/             
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].vitE;
            rhs = VitE - VitE * Paklaida;
            lpSolve.add_constraint(lpRec, data, GE, rhs);

           
/*vit PP*/             
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].vitPP;
            rhs = VitPP - VitPP * Paklaida;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
            
/*mikrel Ca*/ 
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].getMinCa();
            rhs = MinCa - MinCa * Paklaida;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
            rhs = MinCa + MinCa * Paklaida;
            lpSolve.add_constraint(lpRec, data, LE, rhs);
           
/*mikrel Na*/             
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].getMinNa();//Is tiesu cia Na (Marijus: pakeiciau pavadinima Mg->Na)
            rhs = MinNa - MinNa * Paklaida;
            lpSolve.add_constraint(lpRec, data, GE, rhs);

          
/*mikrel S*/             
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].minS;
            rhs = Siera - Siera * Paklaida;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
            rhs = Siera + Siera * Paklaida;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
           
/*mikrel P*/             
            for(int i = 0; i < activProdCnt; i++)
                data[i + 1] = prodActiv[i].minP;
            rhs = Fosf - Fosf * Paklaida;
            lpSolve.add_constraint(lpRec, data, GE, rhs);
       
            
/************ Solve problem *******************/            
            int rez = lpSolve.solve(lpRec);
            
            if(rez == 0)
            {
                lblStatus.setText("Optimali dieta rasta");
                double nn = 0;
                int sk = 0;
                for(int i = 1; i <= lpSolve.get_lpcolumns(lpRec); i++)
                    if(lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) != nn)
                        sk++;
                String rezai[] = new String[sk];
                double sumcal = 0.0D;
                double sumpro = 0.0D;
                double sumfat = 0.0D;
                double sumcar = 0.0D;
                int nr = 0;
                double sumak = 0.0D;
                double sumagr = 0.0D;
                double sumask = 0.0D;
                double sumakv = 0.0D;
                double mase=0;
                VitC=VitA=MinCa=MinNa=VitE=VitB1=VitB2=VitB3=VitB6=VitB12=VitPP=Fosf=Siera=J=0.0;
                for(int i = 1; i <= lpSolve.get_lpcolumns(lpRec); i++)
                    if(lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) != nn)
                    {
                        rezai[nr] = produktai[i - 1].getName() + "," + Double.toString(lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i));
                        if((lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) > 0.5+Paklaida))
                        {
                            lblStatus.setForeground(new java.awt.Color(204, 102, 0));
                            lblStatus.setText("DEMESIO: virsijote rekomenduojama paros norma");/*Marijus: Pakeiciau warnin i normalia zinute*/
                        }
                        sumcal += lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getCalories();
                        sumpro += lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getProteins();
                        sumfat += lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getFats();
                        sumcar += lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getCarbohydrates();
                        sumak += lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getPrice();
                        sumagr += lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getTaste();
                        VitC += lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getVitC();
                        VitA += lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getVitA();
                        MinCa+= lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getMinCa();
                        MinNa+= lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getMinNa();
                        VitE+= lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getVitE();
                        VitB1+= lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getVitB1();
                        VitB2+= lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getVitB2();
                        VitB3+= lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getVitB3();
                        VitB6+= lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getVitB6();
                        VitB12+= lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getVitB12();
                        VitPP+= lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getVitPP();
                        Fosf+= lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getMinP();
                        Siera+= lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getMinS();
                        J+= lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i) * (double)produktai[i - 1].getMinJ();
                        nr++;
                        mase+=lpSolve.get_lpsolution(lpRec, lpSolve.get_lprows(lpRec) + i);
                    }/*if get solution outerr*/
                tblmdlRezultatai.setItems(rezai);
                String s = "";
                lblCaloriesTotal.setText(Double.toString(sumcal));
                lblProteinsTotal.setText(Double.toString(sumpro));
                lblFatsTotal.setText(Double.toString(sumfat));
                lblCarbohydratesTotal.setText(Double.toString(sumcar));
                lblPriceTotal.setText(Double.toString(sumak));
				lblVitATotal.setText(Double.toString(VitA));
			    lblVitB1Total.setText(Double.toString(VitB1));		
				lblVitB2Total.setText(Double.toString(VitB2));
				lblVitB3Total.setText(Double.toString(VitB3));
				lblVitB6Total.setText(Double.toString(VitB6));
				lblVitB12Total.setText(Double.toString(VitB12));
				lblVitCTotal.setText(Double.toString(VitC));	
				lblVitETotal.setText(Double.toString(VitE));
				lblVitPPTotal.setText(Double.toString(VitPP));
				lblMinCaTotal.setText(Double.toString(MinCa));
				lblMinNaTotal.setText(Double.toString(MinNa));
				lblMinSTotal.setText(Double.toString(Siera));
				lblMinPTotal.setText(Double.toString(Fosf));
				lblMinJTotal.setText(Double.toString(J));
            } else
            {
                String tuscias[] = new String[0];
                tblmdlRezultatai.setItems(tuscias);
                lblCaloriesTotal.setText("");
                lblProteinsTotal.setText("");
                lblFatsTotal.setText("");
                lblCarbohydratesTotal.setText("");
                lblPriceTotal.setText("");
                lblVitATotal.setText("");  lblVitB1Total.setText(""); 
                lblVitB2Total.setText(""); lblVitCTotal.setText("");
                lblVitB3Total.setText(""); lblVitETotal.setText("");
                lblVitB6Total.setText(""); lblVitPPTotal.setText("");
                lblVitB12Total.setText("");lblMinCaTotal.setText("");
                lblMinNaTotal.setText(""); lblMinSTotal.setText("");
                lblMinPTotal.setText("");  lblMinJTotal.setText("");
                lblStatus.setText("Neimanoma patenkinti sanitariniu normu !!!");
            }
            pnlRezultatai.setEnabled(true);
            tbdpnlBendras.setSelectedIndex(2);
        }}
    }
 /* ------------------------------------
 *  metodas btnOK_actionPerformed 
 *  Priskiria duomenu failo nuoroda(handle)
 *  ------------------------------------ */
    void btnOK_actionPerformed(ActionEvent event)
    {
        failas = txtfldFailas.getText();
        D.dispose();
    }
 /* ------------------------------------
 *  metodas btnUpdate_actionPerformed 
 *  Atnaujina egzistuojanti patiekala
 *  Istrina is lenteles ir iraso i gala
 *  su pakeistais duomenimis
 *  ------------------------------------ */
    void btnUpdate_actionPerformed(ActionEvent event)   
    {
       String tmpPatiekalas;
        if(chkbxDish.isSelected())
            tmpPatiekalas = "1";
        else
            tmpPatiekalas="0";
        int nr = tblLentele.getSelectedRow();
        tblmdlLentele.removeRow(nr);
/******************************************************************************
 *CIA(ZEMIAU) REIKIA SUSUMUOTI VISUS ELEMENTUS IS TEXBOKSU TIKSLIA TVARKA !!!
 * EILE(TVARKA) TOKIA : 
 * PRODUKAS,BALTYMAI(PROTEISNS),RIEBALAI(FATS), ANGLIAVANDENIAI(CARBOHYDRAUTES),
 * KALORIJOS,A,E,C,B1,B2,B3,B6,B12,PP,CA,NA,S,FTOR(P), J(JODAS),VAIZDAS,
 * PATIEKALAS,KAINA.
 * Patiekas pridedamas taip : ... + "," + tmpPatiekalas + ","+...
 *****************************************************************************/
        String temp = txtfldName.getText() + "," + 
        txtfldProteins.getText() + "," + 
        txtfldFats.getText() + "," + 
        txtfldCarbohydrates.getText() + "," + 
        txtfldCalories.getText() + "," +         
        txtfldVitaminC.getText() + "," +
        txtfldVitaminA.getText() + "," +
        txtfldMineralCa.getText() + "," +
        txtfldMineralNa.getText() + "," +
        txtfldVitaB2.getText() + "," +
        txtfldVitaB3.getText() + "," +
        txtfldVitaB6.getText() + "," +
        txtfldVitaB12.getText() + "," +
        txtfldVitaPP.getText() + "," +
        txtfldMCA.getText() + "," +
        txtfldMNa.getText() + "," +
        txtfldMS.getText() + "," +
        txtfldMP.getText() + "," +
        txtfldMJ.getText() + "," +
        cmbbxTaste.getSelectedItem().toString() + "," +  
 /*Patiekalas*/       tmpPatiekalas.toString() + "," +               
        txtfldPrice.getText();        
        tblmdlLentele.addRow(temp);
        Clear();
    }
 /* ------------------------------------
 *  metodas cmbbxOptimization_itemStateChanged 
 *  Neaiskus metodas. Tikriausiai buvo 
 *  anksciau naudojamas identifikuoti 
 *  pasikeitusiems duomenims bet dabar
 *  neturi prasmes(?)
 *  ------------------------------------ */
    void cmbbxOptimization_itemStateChanged(ItemEvent itemevent)
    {
    }
 /* ------------------------------------
 *  metodas formProduct 
 *  Suformuoja produkto objekta su visais
 *  jam priklausanciais duomenimis
 *  Perskaiciuoja duomenis vienam produkto
 *  kilogramui jei tai ne patiekalas
 *  ------------------------------------ */
    void formProduct(StringTableModel model)
    {
        duomenuKlaida = false;
        String temp = "";
        productCount = model.getRowCount();
        produktai = new Product[productCount];
        int j;float dg;
        for(int i = 0; i < productCount; i++)
        {
/******************************************************************************
 * EILE(TVARKA) TOKIA : 
 * PRODUKAS,BALTYMAI,RIEBALAI, ANGLIAVANDENIAI,KALORIJOS,A,E,C,B1,B2,B3,B6,B12,
 * PP,CA,NA,S,FTOR(P), J(JODAS),VAIZDAS,PATIEKALAS,KAINA.
 *****************************************************************************/          
            produktai[i] = new Product();
            produktai[i].setName(model.getElementAt(i, 0).toString());
            j=i+1;
            try
            {
                temp = model.getElementAt(i, 20).toString();
                Integer vv = Integer.valueOf(temp);
                if(vv.intValue() == 0 || vv.intValue() == 1)
                {
                    produktai[i].setDish(vv.intValue());
                    
                }
                else
                {
                    duomenuKlaida = true;
                    break;
                }
                if (produktai[i].getDish()==0){
                    dg=10;                  
                }else {
                    dg=1;                   
                }

        /*suvedame produktus perskaiciuodami ju dedamasias kilograme JEI TAI NE PATIEKALAS*/
                temp = model.getElementAt(i, 1).toString();
                Float v = Float.valueOf(temp);
                produktai[i].proteins=dg*v.floatValue();
                
                temp = model.getElementAt(i, 2).toString();
                v = Float.valueOf(temp);
                produktai[i].fats=dg*v.floatValue(); 
                
                temp = model.getElementAt(i, 3).toString();
                v = Float.valueOf(temp);
                produktai[i].carbohydrates=dg*v.floatValue();
                 
                temp = model.getElementAt(i, 4).toString();
                v = Float.valueOf(temp);
                produktai[i].calories=dg*v.floatValue();
                
                temp = model.getElementAt(i, 5).toString();
                v = Float.valueOf(temp);
                produktai[i].vitA=dg*v.floatValue();
                
                temp = model.getElementAt(i, 6).toString();
                v = Float.valueOf(temp);
                produktai[i].vitE=dg*v.floatValue();
                
                temp = model.getElementAt(i, 7).toString();
                v = Float.valueOf(temp);
                produktai[i].vitC=dg*v.floatValue();
                
                temp = model.getElementAt(i, 8).toString();
                v = Float.valueOf(temp);
                produktai[i].vitB1=dg*v.floatValue();
      
                temp = model.getElementAt(i, 9).toString();
                v = Float.valueOf(temp);
                produktai[i].vitB2=dg*v.floatValue();
                
                temp = model.getElementAt(i, 10).toString();
                 v = Float.valueOf(temp);
                produktai[i].vitB3=dg*v.floatValue();
                
                temp = model.getElementAt(i, 11).toString();
                v = Float.valueOf(temp);
                produktai[i].vitB6=dg*v.floatValue();
                
                temp = model.getElementAt(i, 12).toString();
                v = Float.valueOf(temp);
                produktai[i].vitB12=dg*v.floatValue(); 
                
                temp = model.getElementAt(i, 13).toString();
                v = Float.valueOf(temp);
                produktai[i].vitPP=dg*v.floatValue();
                 
                temp = model.getElementAt(i, 14).toString();
                v = Float.valueOf(temp);
                produktai[i].minCa=dg*v.floatValue();
                
                temp = model.getElementAt(i, 15).toString();
                v = Float.valueOf(temp);
                produktai[i].minNa=dg*v.floatValue();/*Marijus : Mg->Na*/
                
                temp = model.getElementAt(i, 16).toString();
                v = Float.valueOf(temp);
                produktai[i].minS=dg*v.floatValue();
                
                temp = model.getElementAt(i, 17).toString();
                v = Float.valueOf(temp);
                produktai[i].minP=dg*v.floatValue();/*Marijus : F->P*/
                
                temp = model.getElementAt(i, 18).toString();
                v = Float.valueOf(temp);
                produktai[i].minJ=dg*v.floatValue();
                
                temp = model.getElementAt(i, 21).toString();
                v = Float.valueOf(temp);
                produktai[i].price=dg*v.floatValue();                
                
                temp = model.getElementAt(i, 19).toString();
                v = Float.valueOf(temp);
                if(v.floatValue() > 0.0F && v.floatValue() < 11F)
                {
                    produktai[i].setTaste(v.floatValue());
                    continue;
                } else
                {
                    duomenuKlaida = true;
                    break;
                }
                               
            }
            catch(NumberFormatException _ex)
            {
                lblStatus.setText("Wrong data file.Error: " +_ex.toString()+"Eror data line: "+j);
                duomenuKlaida = true;
            }
            break;
        }

    }
 /* ------------------------------------
  *  metodas init 
  *  Inicijuoja apleta, paruosia pradinius
  *  laukus ir duomenis, "nupiesia" appleto
  *  elementus
  * ------------------------------------ */
    public void init()
    {
        productCount = 0;
        txtfldVitaB2 = new JTextField();
        txtfldVitaB3 = new JTextField();
        txtfldVitaB6 = new JTextField();
        txtfldVitaB12 = new JTextField(); 
        txtfldVitaPP = new JTextField();
        txtfldMCA = new JTextField(); 
        txtfldMNa = new JTextField();
        txtfldMS = new JTextField(); 
        txtfldMP = new JTextField();
        txtfldMJ = new JTextField(); 
        JLabelB22 = new JLabel();
        JLabelB33 = new JLabel();
        JLabelB66=new JLabel(); //Natali
        JLabelB122=new JLabel();//Natali
        JLabelPP=new JLabel();//Natali
        JLabelCa2=new JLabel();//Natali
        JLabelNa2=new JLabel(); //Natali
        JLabelS2=new JLabel();//Natali
        JLabelP2=new JLabel();//Natali
        JLabelJ2=new JLabel();//Natali    
        duomenuKlaida = false;
        
        failas = "duom";
        D = new JDialog();
        lblFailas = new JLabel("Iveskite duomenu failo varda");
        txtfldFailas = new JTextField("duom");
        btnOK = new JButton("OK");
        tbdpnlBendras = new JTabbedPane();
        pnlDuomenys = new JPanel();
        scrlpnLentele = new JScrollPane();
        tblLentele = new JTable();
        lblLentelesPav = new JLabel();
        lblRedagavimas = new JLabel();
        lblName = new JLabel();
        txtfldName = new JTextField();
        lblPrice = new JLabel();
        txtfldPrice = new JTextField();
        lblCalories = new JLabel();
        txtfldCalories = new JTextField();
        lblProteins = new JLabel();
        txtfldProteins = new JTextField();
        lblFats = new JLabel();
        txtfldFats = new JTextField();
        lblCarbohydrates = new JLabel();
        txtfldCarbohydrates = new JTextField();
        lblTaste = new JLabel();
        cmbbxTaste = new JComboBox();
        btnLoad = new JButton();
        btnNew = new JButton();
        btnUpdate = new JButton();
        btnNext1 = new JButton();
        btnDelete = new JButton();
        chkbxDish = new JCheckBox();
        lblDish = new JLabel();
        JLabel5 = new JLabel();
        JLabel6 = new JLabel();
        JLabel7 = new JLabel();
        JLabel8 = new JLabel();
        txtfldVitaminC = new JTextField();
        txtfldVitaminA = new JTextField();
        txtfldMineralCa = new JTextField();
        txtfldMineralNa = new JTextField();
        pnlPageidavimai = new JPanel();
        txtfldWeight = new JTextField();
        lblWeight = new JLabel();
        btnNext2 = new JButton();
        cmbbxOptimization = new JComboBox();
        lblOptimization = new JLabel();
       

//NEED        
        // 2 panel - kur ko reikia
        initComponents();


//NEED END        
        lblImportance = new JLabel();
        cmbbxImportance = new JComboBox();
        JLabel9 = new JLabel();
        JLabel10 = new JLabel();
        JLabel11 = new JLabel();
        JLabel12 = new JLabel();
        JLabel13 = new JLabel();
        JLabel14 = new JLabel();
        JLabel15 = new JLabel();
        pnlRezultatai = new JPanel();
        JScrollPane1 = new JScrollPane();
        JTable1 = new JTable();
        JLabel1 = new JLabel();
        JLabel2 = new JLabel();
        JLabel3 = new JLabel();
        JLabel4 = new JLabel();
        lblCaloriesTotal = new JLabel();
        lblProteinsTotal = new JLabel();
        lblFatsTotal = new JLabel();
        lblCarbohydratesTotal = new JLabel();
        tblmdlLentele = new StringTableModel();

        cmbbxmdlTaste = new StringComboBoxModel();
        cmbbxmdlTaste = new StringComboBoxModel();
        cmbbxmdlProteinsW = new StringComboBoxModel();
        cmbbxmdlfatsW = new StringComboBoxModel();
        cmbbxmdlCarbohydratesW = new StringComboBoxModel();
        cmbbxmdlCaloriesW = new StringComboBoxModel();
        lineBorder1 = new LineBorder();
        tblmdlRezultatai = new StringTableModel();
        
        cmbbxmdlOptimize = new StringComboBoxModel();
        cmbbxmdlBias = new StringComboBoxModel();
        lblStatus = new JLabel();

        cmbbxmdlITaste = new StringComboBoxModel();
        cmbbxmdlITaste = new StringComboBoxModel();
        cmbbxmdlIPrice = new StringComboBoxModel();
        cmbbxmdlImportance = new StringComboBoxModel();
   //Marijus - nauji
     	cmbbxIAddTaste = new JComboBox();
        JLabelAddOnTaste = new JLabel();
        //end Marijus
         //NAUJI LAUKAI 
        jTabbedPane1 = new javax.swing.JTabbedPane();
//---------------------------------------------        
        Context.setApplet(this);
        getRootPane().putClientProperty("defeatSystemEventQueueCheck", Boolean.TRUE);
        getContentPane().setLayout(null);
        setSize(780, 650);
        getContentPane().add(tbdpnlBendras);
        tbdpnlBendras.setBounds(12, 12, 760, 560);
        pnlDuomenys.setLayout(null);
        tbdpnlBendras.add(pnlDuomenys);
        pnlDuomenys.setBounds(2, 27, 727, 474);
        pnlDuomenys.setVisible(false);
        scrlpnLentele.setVerticalScrollBarPolicy(22);
        scrlpnLentele.setHorizontalScrollBarPolicy(32);
        scrlpnLentele.setOpaque(true);
        pnlDuomenys.add(scrlpnLentele);
        scrlpnLentele.setBounds(10, 33, 708, 168);
        tblLentele.setModel(tblmdlLentele);
        scrlpnLentele.getViewport().add(tblLentele);
        tblLentele.setBounds(0, 0, 690, 0);
        lblLentelesPav.setText("Produktai");
        pnlDuomenys.add(lblLentelesPav);
        lblLentelesPav.setBounds(10, 9, 200, 12);
        
        lblRedagavimas.setText("Duomenu apie produkta ivedimas");
        pnlDuomenys.add(lblRedagavimas);
        lblRedagavimas.setBounds(20, 213, 300, 24);
        lblName.setText("Pavadinimas");
        pnlDuomenys.add(lblName);
        lblName.setForeground(new Color(102, 102, 153));
        lblName.setBounds(240, 249, 100, 24);
        pnlDuomenys.add(txtfldName);
        txtfldName.setBounds(320, 249, 130, 24);
        lblPrice.setText("Kaina");
        pnlDuomenys.add(lblPrice);
        lblPrice.setBounds(22, 280, 100, 24);
        pnlDuomenys.add(txtfldPrice);
        txtfldPrice.setBounds(130, 280, 50, 24);
        lblCalories.setText("Kalorijos");
        pnlDuomenys.add(lblCalories);
        lblCalories.setBounds(22, 370, 96, 24);
        pnlDuomenys.add(txtfldCalories);
        txtfldCalories.setBounds(130, 370, 50, 24);
        lblProteins.setText("Baltymai");/*Marijus: Lietuviu kaba :) ne baltimai bet baltymai*/
        pnlDuomenys.add(lblProteins);
        lblProteins.setBounds(22, 310, 96, 24);
        pnlDuomenys.add(txtfldProteins);
        txtfldProteins.setBounds(130, 310, 50, 24);
        lblFats.setText("Riebalai");
        pnlDuomenys.add(lblFats);
        lblFats.setBounds(22, 340, 96, 24);
        pnlDuomenys.add(txtfldFats);
        txtfldFats.setBounds(130, 340, 50, 24);
        lblCarbohydrates.setText("Angliavandeniai");/*Marijus: daugiskaita ne vienaskaita*/
        pnlDuomenys.add(lblCarbohydrates);
        lblCarbohydrates.setBounds(22, 400, 96, 24);
        pnlDuomenys.add(txtfldCarbohydrates);
        txtfldCarbohydrates.setBounds(130, 400, 50, 24);
        lblTaste.setText("Skonis *");
        pnlDuomenys.add(lblTaste);
        lblTaste.setBounds(530, 400, 110, 24);
        cmbbxTaste.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0","1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }));
        pnlDuomenys.add(cmbbxTaste);
        cmbbxTaste.setBounds(620, 400, 50, 24);
        btnLoad.setText("Duomenu ivedimas is failo");
        btnLoad.setActionCommand("Atidaryti faila");
        pnlDuomenys.add(btnLoad);
        btnLoad.setBounds(10, 500, 200, 24);
        btnNew.setText("Naujas produktas");
        btnNew.setActionCommand("Naujas produktas");
        pnlDuomenys.add(btnNew);
        btnNew.setBounds(215, 500, 150, 24);
        btnUpdate.setText("Atnaujinti/Irasyti");
        btnUpdate.setActionCommand("Atnaujinti produkta");
        pnlDuomenys.add(btnUpdate);
        btnUpdate.setBounds(370, 500, 150, 24);
        btnNext1.setText("Toliau >>");
        btnNext1.setActionCommand("Toliau >>");
        pnlDuomenys.add(btnNext1);
        btnNext1.setBounds(664, 500, 85, 23);
        btnDelete.setText("Istrinti produkta");
        btnDelete.setActionCommand("Istrinti produkta");
        pnlDuomenys.add(btnDelete);
        btnDelete.setBounds(527, 500, 132, 24);
        pnlDuomenys.add(chkbxDish);
        chkbxDish.setForeground(new Color(102, 102, 153));
        chkbxDish.setBounds(340, 450, 72, 19);
        lblDish.setText("Patiekalas ?");
        pnlDuomenys.add(lblDish);
        lblDish.setBounds(240, 450, 90, 19);
        JLabel5.setText("Vitaminas A");
        pnlDuomenys.add(JLabel5);
        JLabel5.setBounds(210, 280, 98, 26);
        JLabel6.setText("Vitaminas E");
        pnlDuomenys.add(JLabel6);
        JLabel6.setBounds(210, 310, 100, 25);
        JLabel7.setText("Vitaminas C");
        pnlDuomenys.add(JLabel7);
        JLabel7.setBounds(210, 340, 107, 26);
        JLabel8.setText("Vitaminas B1");
        pnlDuomenys.add(JLabel8);
        JLabel8.setBounds(210, 370, 99, 27);
        pnlDuomenys.add(txtfldVitaminC);
        txtfldVitaminC.setBounds(300, 280, 50, 24);
        pnlDuomenys.add(txtfldVitaminA);
        txtfldVitaminA.setBounds(300, 310, 50, 24);
        pnlDuomenys.add(txtfldMineralCa);
        txtfldMineralCa.setBounds(300, 340, 50, 24);
        pnlDuomenys.add(txtfldMineralNa);
        txtfldMineralNa.setBounds(300, 370, 50, 24);        
        JLabelB22.setText("Vitaminas B2");
        pnlDuomenys.add(JLabelB22);
        JLabelB22.setBounds(210, 400, 98, 26);
        JLabelB33.setText("Vitaminas B3");
        pnlDuomenys.add(JLabelB33);
        JLabelB33.setBounds(370, 280, 100, 25);
        JLabelB66.setText("Vitaminas B6");
        pnlDuomenys.add(JLabelB66);
        JLabelB66.setBounds(370, 310, 107, 26);
        JLabelB122.setText("Vitaminas B12");
        pnlDuomenys.add(JLabelB122);
        JLabelB122.setBounds(370, 340, 99, 27);
        pnlDuomenys.add(txtfldVitaB2);
        txtfldVitaB2.setBounds(300, 400, 50, 24);
        pnlDuomenys.add(txtfldVitaB3);
        txtfldVitaB3.setBounds(460, 280, 50, 24);
        pnlDuomenys.add(txtfldVitaB6);
        txtfldVitaB6.setBounds(460, 310, 50, 24);
        pnlDuomenys.add(txtfldVitaB12);
        txtfldVitaB12.setBounds(460, 340, 50, 24);        
        JLabelPP.setText("Vitaminas PP");
        pnlDuomenys.add(JLabelPP);
        JLabelPP.setBounds(370, 370, 98, 26);
/*Marijus: Mikroelementas korektiskesnis pavadinimas negu mineralas*/        
        JLabelCa2.setText("Mikroel. Ca");
        pnlDuomenys.add(JLabelCa2);
        JLabelCa2.setBounds(370, 400, 100, 25);
        JLabelNa2.setText("Mikroel. Na");
        pnlDuomenys.add(JLabelNa2);
        JLabelNa2.setBounds(530, 280, 107, 26);
        JLabelS2.setText("Mikroel. S");
        pnlDuomenys.add(JLabelS2);
        JLabelS2.setBounds(530, 310, 99, 27);
        pnlDuomenys.add(txtfldVitaPP);
        txtfldVitaPP.setBounds(460,370, 50, 24);
        pnlDuomenys.add(txtfldMCA);
        txtfldMCA.setBounds(460, 400, 50, 24);
        pnlDuomenys.add(txtfldMNa);
        txtfldMNa.setBounds(620, 280, 50, 24);
        pnlDuomenys.add(txtfldMS);
        txtfldMS.setBounds(620, 310, 50, 24);        

        JLabelP2.setText("Mikroel. P");
        pnlDuomenys.add(JLabelP2);
        JLabelP2.setBounds(530, 340, 98, 26);
        JLabelJ2.setText("Mikroel. J");
        pnlDuomenys.add(JLabelJ2);
        JLabelJ2.setBounds(530, 370, 100, 25);
        pnlDuomenys.add(txtfldMP);
        txtfldMP.setBounds(620, 340, 50, 24);
        pnlDuomenys.add(txtfldMJ);
        txtfldMJ.setBounds(620, 370, 50, 24); 
        pnlPageidavimai.setLayout(null);
        tbdpnlBendras.add(pnlPageidavimai);
        pnlPageidavimai.setEnabled(false);
        pnlPageidavimai.setBounds(2, 27, 727, 474);
        pnlPageidavimai.setVisible(false);
        txtfldWeight.setText("70");
        pnlPageidavimai.add(txtfldWeight);
        txtfldWeight.setBounds(22, 141, 159, 24);
        lblWeight.setText("Zmogaus svoris, kg");
        pnlPageidavimai.add(lblWeight);
        lblWeight.setBounds(22, 116, 140, 35);
        btnNext2.setText("Toliau >>");
        btnNext2.setActionCommand("Toliau >>");
        pnlPageidavimai.add(btnNext2);
        btnNext2.setBounds(634, 441, 90, 24);
        cmbbxOptimization.setModel(cmbbxmdlOptimize);
        cmbbxOptimization.setBounds(22, 69, 161, 24);
        lblOptimization.setText("Optimizacijos parametrai");
        pnlPageidavimai.add(lblOptimization);
        lblOptimization.setBounds(10, 10, 150, 24);
        lblImportance.setText("Grozio Faktorius**"); 
        pnlPageidavimai.add(lblImportance);
        lblImportance.setBounds(22, 199, 240, 24);
        JLabel9.setText("jusu nuoziura");
        pnlPageidavimai.add(JLabel9);
        JLabel9.setBounds(22, 213, 162, 26);
        cmbbxImportance.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }));
        pnlPageidavimai.add(cmbbxImportance);
        cmbbxImportance.setBounds(22, 237, 159, 29);
/*************************************
 * Produktai itraukliami tik pagal skoni
 * start marijus
 *****************************************/
        JLabelAddOnTaste.setText("Itraukti pagal skoni nuo");
        pnlPageidavimai.add(JLabelAddOnTaste);
        JLabelAddOnTaste.setBounds(22, 275, 162, 26);
        cmbbxIAddTaste.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }));
        pnlPageidavimai.add(cmbbxIAddTaste);
        cmbbxIAddTaste.setBounds(22, 300, 159, 29);
 /*end*/
        pnlRezultatai.setLayout(null);
        pnlRezultatai.setEnabled(false);
        tbdpnlBendras.add(pnlRezultatai);
        pnlRezultatai.setBounds(2, 27, 727, 474);
        pnlRezultatai.setVisible(false);
        JScrollPane1.setVerticalScrollBarPolicy(22);
        JScrollPane1.setHorizontalScrollBarPolicy(32);
        JScrollPane1.setOpaque(true);
        pnlRezultatai.add(JScrollPane1);
        JScrollPane1.setBounds(10, 57, 408, 168);
        JTable1.setModel(tblmdlRezultatai);
        JTable1.setAutoResizeMode(4);
        JScrollPane1.getViewport().add(JTable1);
        JTable1.setBounds(0, 0, 390, 0);
        JLabel1.setText("Kaloriju kiekiu suma:");
        pnlRezultatai.add(JLabel1);
        JLabel1.setBounds(15, 249, 150, 25);
        JLabel2.setText("Proteinu kiekiu suma:");
        pnlRezultatai.add(JLabel2);
        JLabel2.setBounds(15, 276, 150, 25);
        JLabel3.setText("Riebalu kieku suma:");
        pnlRezultatai.add(JLabel3);
        JLabel3.setBounds(15, 303, 150, 25);
        JLabel4.setText("Karbohidrato kiekiu suma:");
        pnlRezultatai.add(JLabel4);
        JLabel4.setBounds(15, 330, 150, 25);
        lblCaloriesTotal.setText("0");
        pnlRezultatai.add(lblCaloriesTotal);
        lblCaloriesTotal.setBounds(166, 249, 252, 24);
        lblProteinsTotal.setText("0");
        pnlRezultatai.add(lblProteinsTotal);
        lblProteinsTotal.setBounds(166, 276, 252, 24);
        lblFatsTotal.setText("0");
        pnlRezultatai.add(lblFatsTotal);
        lblFatsTotal.setBounds(166, 303, 252, 24);
        lblCarbohydratesTotal.setText("0");
        pnlRezultatai.add(lblCarbohydratesTotal);
        lblCarbohydratesTotal.setBounds(166, 330, 252, 24);
        tbdpnlBendras.setSelectedComponent(pnlDuomenys);
        tbdpnlBendras.setSelectedIndex(0);
        tbdpnlBendras.setTitleAt(0, "Produktai");
        tbdpnlBendras.setTitleAt(1, "Parametrai");
        tbdpnlBendras.setTitleAt(2, "Optimali dieta");
        tblmdlLentele.setColumnHeaders("Pavadinimas,Baltymai,Riebalai,Angliavandeniai,kCal,A,E,C,B1,B2,B3,B6,B12,PP,Ca,Na,S,P,J,Skonis,Patiekalas,Kaina");
/// NAUJI 
 
        tblmdlRezultatai.setColumnHeaders("Name, Amount");
        lblStatus.setBorder(lineBorder1);
        getContentPane().add(lblStatus);
        lblStatus.setFont(new Font("Dialog", 3, 12));
        lblStatus.setBounds(12, 560, 732, 60);
      
        D.setModal(true);
        D.setBounds(200, 200, 225, 170);
        D.setName("Data file name input");
        D.getContentPane().setLayout(null);
        lblFailas.setBounds(10, 10, 200, 30);
        D.getContentPane().add(lblFailas);
        txtfldFailas.setBounds(10, 40, 200, 30);
        D.getContentPane().add(txtfldFailas);
        btnOK.setBounds(80, 80, 60, 30);
        D.getContentPane().add(btnOK);
        SymMouse aSymMouse = new SymMouse();
        tblLentele.addMouseListener(aSymMouse);
        SymAction lSymAction = new SymAction();
        btnLoad.addActionListener(lSymAction);
        SymItem lSymItem = new SymItem();
        btnNext2.addActionListener(lSymAction);
        btnNext1.addActionListener(lSymAction);
        cmbbxOptimization.addItemListener(lSymItem);
        btnNew.addActionListener(lSymAction);
        btnUpdate.addActionListener(lSymAction);
        btnDelete.addActionListener(lSymAction);
        btnOK.addActionListener(lSymAction);
                // 3 panel 
        initTotals();
    }
 /* ------------------------------------
  *  metodas tblLentele_mouseClicked
  *  atvaizduoja lenteleje pazymeta produkta 
  *  i kitus appleto elementus
  * ------------------------------------ */
    void tblLentele_mouseClicked(MouseEvent event)
    {
        txtfldName.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 0).toString());
        
        txtfldCalories.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 4).toString());
        txtfldProteins.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 1).toString());
        txtfldFats.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 2).toString());
        txtfldCarbohydrates.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 3).toString());
        txtfldVitaminC.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 5).toString());
        txtfldVitaminA.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 6).toString());
        txtfldMineralCa.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 7).toString());
        txtfldMineralNa.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 8).toString());
        txtfldVitaB2.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 9).toString());
        txtfldVitaB3.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 10).toString());
        txtfldVitaB6.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 11).toString());
        txtfldVitaB12.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 12).toString());
        txtfldVitaPP.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 13).toString());
        txtfldMCA.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 14).toString());
        txtfldMNa.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 15).toString());
        txtfldMS.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 16).toString());
        txtfldMP.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 17).toString());
        txtfldMJ.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 18).toString());        
        cmbbxTaste.setSelectedItem(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 19));
        Integer tt = Integer.valueOf(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 20).toString());
        if(tt.intValue() == 1)
            chkbxDish.setSelected(true);
        else
            chkbxDish.setSelected(false);
        txtfldPrice.setText(tblmdlLentele.getValueAt(tblLentele.getSelectedRow(), 21).toString());
 
   }
 //HUJ
   private void initComponents() {
        ReikiaKal = new javax.swing.JTextField();
        ReikiaAngl = new javax.swing.JTextField();
        ReikiaBalt = new javax.swing.JTextField();
        ReikiaRieb = new javax.swing.JTextField();
        ReikiaVitA = new javax.swing.JTextField();
        ReikiaVitB1 = new javax.swing.JTextField();
        ReikiaVitB2 = new javax.swing.JTextField();
        ReikiaVitB3 = new javax.swing.JTextField();
        ReikiaVitB6 = new javax.swing.JTextField();
        ReikiaVitB12 = new javax.swing.JTextField();        
        ReikiaVitC = new javax.swing.JTextField();
        ReikiaVitE = new javax.swing.JTextField();
        ReikiaVitPP = new javax.swing.JTextField();                
        ReikiaFosf = new javax.swing.JTextField();
        ReikiaSer = new javax.swing.JTextField();
        ReikiaNatr = new javax.swing.JTextField();
        ReikiaKalc = new javax.swing.JTextField();
        ReikiaJ = new javax.swing.JTextField();
        
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        jLabel10 = new javax.swing.JLabel();
        jLabel11 = new javax.swing.JLabel();
        jLabel12 = new javax.swing.JLabel();
        jLabel13 = new javax.swing.JLabel();
        jLabel14 = new javax.swing.JLabel();
        jLabel15 = new javax.swing.JLabel();
        jLabel16 = new javax.swing.JLabel();
        jLabel17 = new javax.swing.JLabel();
        jLabel18 = new javax.swing.JLabel();
        jLabel19 = new javax.swing.JLabel();
        jLabel20 = new javax.swing.JLabel();        
        jLabel21 = new javax.swing.JLabel();   
        jLabel22 = new javax.swing.JLabel();   
        getContentPane().setLayout(null);

        pnlPageidavimai.setLayout(null);
/*------------- normos zmogaus mases kilogramui --------------*/
        jLabel17.setText("Zmogui vienam mases kg reikia:");
        pnlPageidavimai.add(jLabel17);
        jLabel17.setBounds(240,50, 240, 20);

        
        jLabel1.setText("Kaloriju kiekis, kCal");
        pnlPageidavimai.add(jLabel1);
        jLabel1.setBounds(240, 70, 120, 20);
        ReikiaKal.setText("34.7");
        pnlPageidavimai.add(ReikiaKal);
        ReikiaKal.setBounds(240, 90, 80, 20);

        jLabel2.setText("Angliavandeniai, g");
        pnlPageidavimai.add(jLabel2);
        jLabel2.setBounds(360, 70, 120, 20);
        ReikiaAngl.setText("6.5");
        pnlPageidavimai.add(ReikiaAngl);
        ReikiaAngl.setBounds(360, 90, 80, 20);

        jLabel4.setText("Baltymu kiekis, g");
        pnlPageidavimai.add(jLabel4);
        jLabel4.setBounds(480, 70, 120, 20);
        ReikiaBalt.setText("1.3");
        pnlPageidavimai.add(ReikiaBalt);
        ReikiaBalt.setBounds(480, 90, 80, 20);
        
        jLabel5.setText("Riebalu kiekis, g");
        pnlPageidavimai.add(jLabel5);
        jLabel5.setBounds(600, 70, 110, 20);
        ReikiaRieb.setText("1.3");
        pnlPageidavimai.add(ReikiaRieb);
        ReikiaRieb.setBounds(600, 90, 80, 20);

/*------------- zmogaus normos parai --------------------------*/

        jLabel18.setText("Zmogaus paros norma:");
        pnlPageidavimai.add(jLabel18);
        jLabel18.setBounds(240,120, 200, 20);
 /*VITAMINAI*/       
        jLabel19.setText("Vitaminai");
        pnlPageidavimai.add(jLabel19);
        jLabel19.setBounds(260,140, 200, 20);
        
/*1*/        jLabel6.setText("Vitaminas A, mg");
        pnlPageidavimai.add(jLabel6);
        jLabel6.setBounds(240, 160, 110, 20);        
        ReikiaVitA.setText("0.8");
        pnlPageidavimai.add(ReikiaVitA);
        ReikiaVitA.setBounds(240, 180, 80, 20);

/*2*/        jLabel9.setText("Vitamimas B1, mg");
        pnlPageidavimai.add(jLabel9);
        jLabel9.setBounds(240, 200, 110, 20);
        ReikiaVitB1.setText("1.5");
        pnlPageidavimai.add(ReikiaVitB1);
        ReikiaVitB1.setBounds(240, 220, 80, 20);
                
/*3*/        jLabel10.setText("Vitaminas B2, mg");
        pnlPageidavimai.add(jLabel10);
        jLabel10.setBounds(240, 240, 110, 20);
        ReikiaVitB2.setText("1.7");
        pnlPageidavimai.add(ReikiaVitB2);
        ReikiaVitB2.setBounds(240, 260, 80, 20);
                
/*4*/        jLabel11.setText("Vitaminas B3, mg");
        pnlPageidavimai.add(jLabel11);
        jLabel11.setBounds(240, 280, 110, 20);
        ReikiaVitB3.setText("1.8");
        pnlPageidavimai.add(ReikiaVitB3);
        ReikiaVitB3.setBounds(240, 300, 80, 20);
                
/*5*/       jLabel12.setText("Vitaminas B6, mg");
        pnlPageidavimai.add(jLabel12);
        jLabel12.setBounds(360, 160, 110, 20);
        ReikiaVitB6.setText("2");
        pnlPageidavimai.add(ReikiaVitB6);
        ReikiaVitB6.setBounds(360, 180, 80, 20);
        
/*6*/        jLabel8.setText("Vitaminas B12, mkrg");
        pnlPageidavimai.add(jLabel8);
        jLabel8.setBounds(360, 200, 120, 20);
        ReikiaVitB12.setText("6");
        pnlPageidavimai.add(ReikiaVitB12);
        ReikiaVitB12.setBounds(360, 220, 80, 20);
        
/*7*/       jLabel7.setText("Vitaminas C, mg");
        pnlPageidavimai.add(jLabel7);
        jLabel7.setBounds(360, 240, 110, 20);
        ReikiaVitC.setText("60");
        pnlPageidavimai.add(ReikiaVitC);
        ReikiaVitC.setBounds(360, 260, 80, 20);                
        
/*8*/        jLabel3.setText("Vitaminas E, mg");
        pnlPageidavimai.add(jLabel3);
        jLabel3.setBounds(360, 280, 110, 20);
        ReikiaVitE.setText("10");
        pnlPageidavimai.add(ReikiaVitE);
        ReikiaVitE.setBounds(360, 300, 80, 20);
    /******papildymai******/        
/*9 PP nebuvo*/        
        jLabel21.setText("Vitaminas PP, mg");
        pnlPageidavimai.add(jLabel21);
        jLabel21.setBounds(240, 320, 110, 20);
        ReikiaVitPP.setText("17");
        pnlPageidavimai.add(ReikiaVitPP);
        ReikiaVitPP.setBounds(240, 340, 80, 20);
        
 /*MIKROELEMENTAI*/ 
        jLabel20.setText("Mikroelementai");
        pnlPageidavimai.add(jLabel20);
        jLabel20.setBounds(500,140, 200, 20);               
/*1*/        jLabel16.setText("Fosforas, mg");
        pnlPageidavimai.add(jLabel16);
        jLabel16.setBounds(490, 160, 110, 20);
        ReikiaFosf.setText("900");
        pnlPageidavimai.add(ReikiaFosf);
        ReikiaFosf.setBounds(490, 180, 80, 20);
        
/*2*/        jLabel15.setText("Mikroel. S, mg");
        pnlPageidavimai.add(jLabel15);
        jLabel15.setBounds(490, 200, 110, 20);
        ReikiaSer.setText("1000");
        pnlPageidavimai.add(ReikiaSer);
        ReikiaSer.setBounds(490, 220, 80, 20);
        
/*3*/        jLabel14.setText("Mikroel. Na, mg");
        pnlPageidavimai.add(jLabel14);
        jLabel14.setBounds(490, 240, 110, 20);
        ReikiaNatr.setText("150");
        pnlPageidavimai.add(ReikiaNatr);
        ReikiaNatr.setBounds(490, 260, 80, 20);
        
/*4*/        jLabel13.setText("Mikroel. Ca, mg");
        pnlPageidavimai.add(jLabel13);
        jLabel13.setBounds(490, 280, 110, 20);
        ReikiaKalc.setText("1000");
        pnlPageidavimai.add(ReikiaKalc);
        ReikiaKalc.setBounds(490, 300, 80, 20);
    /******papildymai******/        
/*5 J nebuvo*/        
        jLabel22.setText("Mikroel. J, mg");
        pnlPageidavimai.add(jLabel22);
        jLabel22.setBounds(610, 160, 110, 20);
        ReikiaJ.setText("17");
        pnlPageidavimai.add(ReikiaJ);
        ReikiaJ.setBounds(610, 180, 80, 20);        
   } 
  /* ------------------------------------
  *  metodas initTotals()
  *  inicijuoja atsakymu laukus
  * ------------------------------------ */  
     private void initTotals() {
       /*Papildomi atsakymai*/
    lblPriceTotal = new JLabel();
    lblPriceTTlbl = new JLabel();
        
	lblVitATotal = new JLabel();
	lblVitCTotal = new JLabel();
	lblVitB1Total = new JLabel();	
	lblVitB2Total = new JLabel();
	lblVitB3Total = new JLabel();
	lblVitB6Total = new JLabel();
	lblVitB12Total = new JLabel();
	lblVitETotal = new JLabel();
	lblVitPPTotal = new JLabel();
	lblMinCaTotal = new JLabel();
	lblMinNaTotal = new JLabel();
	lblMinSTotal = new JLabel();
	lblMinPTotal = new JLabel();
	lblMinJTotal = new JLabel();
	
	lblVitATTlbl = new JLabel();
	lblVitB1TTlbl = new JLabel();
    lblVitB2TTlbl = new JLabel();
    lblVitB3TTlbl = new JLabel();
    lblVitB6TTlbl = new JLabel();
    lblVitB12TTlbl = new JLabel();
    lblVitCTTlbl = new JLabel();
    lblVitETTlbl = new JLabel();
    lblVitPPTTlbl = new JLabel();
    lblMinCaTTlbl = new JLabel();
    lblMinNaTTlbl = new JLabel();
    lblMinSTTlbl = new JLabel();
    lblMinPTTlbl = new JLabel();
    lblMinJTTlbl = new JLabel();
	//---------
	lblPriceTTlbl.setText("Dietos kaina:");
    pnlRezultatai.add(lblPriceTTlbl);
    lblPriceTTlbl.setBounds(15, 357, 252, 24);
    
	lblPriceTotal.setText("0");
    pnlRezultatai.add(lblPriceTotal);
    lblPriceTotal.setBounds(166, 357, 200, 24);
//--------------------------
	lblVitATTlbl.setText("Vitamino A suma:");
    pnlRezultatai.add(lblVitATTlbl);
    lblVitATTlbl.setBounds( 480, 27, 200, 24);
    
    lblVitATotal.setText("0");
    pnlRezultatai.add(lblVitATotal);
    lblVitATotal.setBounds( 600, 27, 200, 24);
//-----    
    lblVitB1TTlbl.setText("Vitamino B1 suma:");
    pnlRezultatai.add(lblVitB1TTlbl);
    lblVitB1TTlbl.setBounds(480, 54, 200, 24);
    
    lblVitB1Total.setText("0");
    pnlRezultatai.add(lblVitB1Total);
    lblVitB1Total.setBounds(600, 54, 252, 24);
//---        
    lblVitB2TTlbl.setText("Vitamino B2 suma:");
    pnlRezultatai.add(lblVitB2TTlbl);
    lblVitB2TTlbl.setBounds(480,81, 200, 24);

    lblVitB2Total.setText("0");
    pnlRezultatai.add(lblVitB2Total);
    lblVitB2Total.setBounds(600,81, 200, 24);
//---
	lblVitB3TTlbl.setText("Vitamino B3 suma:");
    pnlRezultatai.add(lblVitB3TTlbl);
    lblVitB3TTlbl.setBounds(480, 108, 200, 24);
	
	lblVitB3Total.setText("0");
    pnlRezultatai.add(lblVitB3Total);
    lblVitB3Total.setBounds(600, 108, 200, 24);
//---        
	lblVitB6TTlbl.setText("Vitamino B6 suma:");
    pnlRezultatai.add(lblVitB6TTlbl);
    lblVitB6TTlbl.setBounds(480, 135, 200, 24);
    
	lblVitB6Total.setText("0");
    pnlRezultatai.add(lblVitB6Total);
    lblVitB6Total.setBounds(600, 135, 200, 24);
//---    
	lblVitB12TTlbl.setText("Vitamino B12 suma:");
    pnlRezultatai.add(lblVitB12TTlbl);
    lblVitB12TTlbl.setBounds(480, 162, 200, 24);
    
	lblVitB12Total.setText("0");
    pnlRezultatai.add(lblVitB12Total);
    lblVitB12Total.setBounds(600, 162, 200, 24);
//---        
    lblVitCTTlbl.setText("Vitamino C suma:");
    pnlRezultatai.add(lblVitCTTlbl);
    lblVitCTTlbl.setBounds( 480, 189 , 200, 24); 
    
    lblVitCTotal.setText("0");
    pnlRezultatai.add(lblVitCTotal);
    lblVitCTotal.setBounds( 600, 189 , 200, 24);
//---
    lblVitETTlbl.setText("Vitamino E suma:");
    pnlRezultatai.add(lblVitETTlbl);
    lblVitETTlbl.setBounds(480, 216, 200, 24);
    
    lblVitETotal.setText("0");
    pnlRezultatai.add(lblVitETotal);
    lblVitETotal.setBounds(600, 216, 200, 24);
//---        	
	lblVitPPTTlbl.setText("Vitamino PP suma:");
    pnlRezultatai.add(lblVitPPTTlbl);
    lblVitPPTTlbl.setBounds(480, 243, 200, 24);
    
    lblVitPPTotal.setText("0");
    pnlRezultatai.add(lblVitPPTotal);
    lblVitPPTotal.setBounds(600, 243, 200, 24);
//---
    lblMinCaTTlbl.setText("Mineralo Ca suma:");
    pnlRezultatai.add(lblMinCaTTlbl);
    lblMinCaTTlbl.setBounds(480, 270, 200, 24);
    
    lblMinCaTotal.setText("0");
    pnlRezultatai.add(lblMinCaTotal);
    lblMinCaTotal.setBounds(600, 270, 200, 24);    
//---    
	lblMinNaTTlbl.setText("Mineralo Na suma:");
    pnlRezultatai.add(lblMinNaTTlbl);
    lblMinNaTTlbl.setBounds(480, 297, 200, 24);
    
	lblMinNaTotal.setText("0");
    pnlRezultatai.add(lblMinNaTotal);
    lblMinNaTotal.setBounds(600, 297, 200, 24);
//---                 
    lblMinSTTlbl.setText("Mineralo S suma:");
    pnlRezultatai.add(lblMinSTTlbl);
    lblMinSTTlbl.setBounds(480, 324, 200, 24);
    
    lblMinSTotal.setText("0");
    pnlRezultatai.add(lblMinSTotal);
    lblMinSTotal.setBounds(600, 324, 200, 24);
//---        
	lblMinPTTlbl.setText("Mineralo P suma:");
    pnlRezultatai.add(lblMinPTTlbl);
    lblMinPTTlbl.setBounds(480, 351, 200, 24);
    
	lblMinPTotal.setText("0");
    pnlRezultatai.add(lblMinPTotal);
    lblMinPTotal.setBounds(600, 351, 200, 24);
//---    
	lblMinJTTlbl.setText("Mineralo J suma:");
    pnlRezultatai.add(lblMinJTTlbl);
    lblMinJTTlbl.setBounds(480, 378, 200, 24);
    
    lblMinJTotal.setText("0");
    pnlRezultatai.add(lblMinJTotal);
    lblMinJTotal.setBounds(600, 378, 200, 24);        
   /*end*/ 
   }  
}
