/// <summary>
        /// Vytvaranie profilov novych pouzivatelov
        /// </summary>
        private void MenuItem_Click_NovyPouzivatel(object paSender, RoutedEventArgs paE)
        {
            AddUser pridavanie = new AddUser {
                WindowStartupLocation = WindowStartupLocation.CenterOwner
            };

            pridavanie.ShowDialog();
            if (pridavanie.PodariloSa && !Logika.ContainsPouzivatel(pridavanie.GetMeno()))
            {
                string     sol         = Logika.GenerujSol();
                string     hesloSolene = Logika.GenerujPosolenuHashku(pridavanie.GetHeslo(), sol);
                Pouzivatel novy        = new Pouzivatel(pridavanie.GetMeno(), hesloSolene, pridavanie.GetTyp(),
                                                        pridavanie.GetEmail(), pridavanie.GetTelefon(), pridavanie.GetPoznamka(), false)
                {
                    Sol = sol
                };
                Logika.VytvorNovehoPouzivatela(novy);
                // Email notifikacia
                EmailClient notifikacia = new EmailClient(novy.Email,
                                                          "NOTIFIKACIA KANGO", "<b> Práve ste sa registrovali do systému Kango. " +
                                                          "<br> Vitajte " + novy.Meno + "! </b> <br> Vaše osobné údaje sú:<br>" +
                                                          "Email: <b>" + novy.Email + "</b><br>" +
                                                          "Telefón: <b>" + novy.Telefon + "</b><br>" +
                                                          "Poznámka: <b>" + novy.Poznamka + "</b><br>", Nastavenia);
                notifikacia.PoslatEmail();
                MessageBox.Show("Nový používateľ vytvorený!", "Oznámenie", MessageBoxButton.OK, MessageBoxImage.Information);
                VypisPouzivatelia();
                PotrebaUlozit = true;
            }
            pridavanie.Close();
        }
        /// <summary>
        /// Vytvaranie novych skupin
        /// </summary>
        private void MenuItem_Click_NovaSkupina(object paSender, RoutedEventArgs paE)
        {
            AddGroup pridavanie = new AddGroup {
                WindowStartupLocation = WindowStartupLocation.CenterOwner
            };

            pridavanie.ShowDialog();
            if (PrihlasenyStav && pridavanie.PodariloSa && !Logika.ContainsSkupina(pridavanie.GetMeno()))
            {
                Skupina nova = new Skupina(pridavanie.GetMeno(), pridavanie.GetTyp(), pridavanie.GetPoznamka(), PrihlasenyMeno);
                Logika.VytvorNovuSkupinu(nova);

                // Email notifikacia
                Pouzivatel  konkretny   = Logika.GetPouzivatel(PrihlasenyMeno);
                EmailClient notifikacia = new EmailClient(konkretny.Email,
                                                          "NOTIFIKACIA KANGO", "<b> Práve ste vytvorili skupinu. <br></b>" +
                                                          "Údaje skupiny sú:<br>" +
                                                          "Meno: <b>" + nova.Meno + "</b><br>" +
                                                          "Typ: <b>" + nova.Typ.ToString() + "</b><br>" +
                                                          "Poznámka: <b>" + nova.Poznamka + "</b><br>", Nastavenia);
                notifikacia.PoslatEmail();
                MessageBox.Show("Vytvorená nová skupina!", "Oznámenie", MessageBoxButton.OK, MessageBoxImage.Information);
                PotrebaUlozit = true;
                VypisSkupiny();
            }
            pridavanie.Close();
        }
        /// <summary>
        /// Obnova a generovanie noveho hesla
        /// </summary>
        private void MenuRenewPass_OnClick(object paSender, RoutedEventArgs paE)
        {
            RenewPass obnova = new RenewPass(PrihlasenyStav)
            {
                WindowStartupLocation = WindowStartupLocation
            };

            obnova.ShowDialog();
            if (PrihlasenyStav && obnova.VstupOkna != "")
            {
                string     heslo      = obnova.VstupOkna;
                string     sol        = Logika.GenerujSol();
                Pouzivatel zabudlivec = Logika.GetPouzivatel(PrihlasenyMeno);
                zabudlivec.Heslo = Logika.GenerujPosolenuHashku(heslo, sol);
                zabudlivec.Sol   = sol;
                //EMAIL -> HESLO
                EmailClient notifikacia = new EmailClient(zabudlivec.Email,
                                                          "NOTIFIKACIA KANGO", "<b>Práve ste zmenili heslo do systému Kango.</b><br>" +
                                                          "Vaše osobné údaje sú:<br>" +
                                                          "Meno: <b>" + zabudlivec.Meno + "</b><br>" +
                                                          "Heslo: <b>" + heslo + "</b><br>" +
                                                          "Email: <b>" + zabudlivec.Email + "</b><br>" +
                                                          "Telefón: <b>" + zabudlivec.Telefon + "</b><br>", Nastavenia);
                notifikacia.PoslatEmail();
                MenuItem_Click_Save(this, paE);
            }
            if (!PrihlasenyStav && obnova.VstupOkna != "")
            {
                foreach (Pouzivatel polozka in Logika.GetPouzivatalia())
                {
                    if (polozka.Meno == obnova.VstupOkna)
                    {
                        string heslo = Logika.GenerujSol();
                        string sol   = Logika.GenerujSol();
                        polozka.Heslo = Logika.GenerujPosolenuHashku(heslo, sol);
                        polozka.Sol   = sol;
                        // EMAIL -> HESLO
                        EmailClient notifikacia = new EmailClient(polozka.Email,
                                                                  "NOTIFIKACIA KANGO", "<b>Práve ste zmenili heslo do systému Kango.</b><br>" +
                                                                  "Vaše osobné údaje sú:<br>" +
                                                                  "Meno: <b>" + polozka.Meno + "</b><br>" +
                                                                  "Heslo: <b>" + heslo + "</b><br>" +
                                                                  "Email: <b>" + polozka.Email + "</b><br>" +
                                                                  "Telefón: <b>" + polozka.Telefon + "</b><br>", Nastavenia);
                        notifikacia.PoslatEmail();
                        break;
                    }
                }
                MenuItem_Click_Save(this, paE);
            }
            obnova.Close();
        }
        /// <summary>
        /// Pridanie noveho clena alebo novej podskupiny
        /// </summary>
        private void BtnPridajPodClick(object sender, RoutedEventArgs e)
        {
            if (PravoZmeny && cbDG_NovPod.SelectedValue != null)
            {
                string obsah = cbDG_NovPod.SelectedValue.ToString();
                if (DgSwitch)
                {
                    Skupina novaPod = ((MainWindow)Owner).Logika.GetSkupina(obsah);
                    if (novaPod != null)
                    {
                        _podskupiny.Add(novaPod);
                        _aktSkupina.Podskupiny.Add(novaPod.Meno);
                        //DataGridPod.Items.Add(novaPod);

                        NaplnPodskupin();
                        VypisPodskupin();

                        // Email notifikacia
                        Pouzivatel  adresat     = ((MainWindow)Owner).Logika.GetPouzivatel(_aktSkupina.VeduciSkupiny);
                        EmailClient notifikacia = new EmailClient(adresat.Email, "NOTIFIKACIA KANGO", "<b> Práve ste pridali novú podskupinu. </b><br>" +
                                                                  "Meno podskupiny: <b>" + novaPod.Meno + "</b><br>" +
                                                                  "Typ: <b>" + novaPod.Typ.ToString() + "</b><br>", ((MainWindow)Owner).Nastavenia);
                        notifikacia.PoslatEmail();
                    }
                }
                if (!DgSwitch)
                {
                    Pouzivatel novyClen = ((MainWindow)Owner).Logika.GetPouzivatel(obsah);
                    if (novyClen != null)
                    {
                        novyClen.Skupiny.Add(_nMeno);
                        _clenovia.Add(novyClen);
                        _aktSkupina.Clenovia.Add(novyClen.Meno);
                        //DataGridPod.Items.Add(novyClen);

                        NaplnClenov();
                        VypisClenov();

                        // Email notifikacia
                        Pouzivatel  adresat     = ((MainWindow)Owner).Logika.GetPouzivatel(_aktSkupina.VeduciSkupiny);
                        EmailClient notifikacia = new EmailClient(novyClen.Email, "NOTIFIKACIA KANGO", "<b> Práve ste boli zaradený do novej skupiny.</b><br>" +
                                                                  "Meno skupiny: <b>" + _aktSkupina.Meno + "</b><br>" +
                                                                  "Typ: <b>" + _aktSkupina.Typ.ToString() + "</b><br>", ((MainWindow)Owner).Nastavenia, adresat);
                        notifikacia.PoslatEmail();
                    }
                }
                BoloPridanie = true;
            }
        }
        /// <summary>
        /// Odstranenie clena alebo podskupiny zo skupiny
        /// </summary>
        private void BtnDelete_Click(object paSender, RoutedEventArgs paE)
        {
            try
            {
                if (DgSwitch)
                {
                    if (PravoZmeny)
                    {
                        Skupina dataRowView = (Skupina)((Button)paE.Source).DataContext;

                        string tMenoOdchod = dataRowView.Meno;
                        foreach (Skupina polozka in _podskupiny)
                        {
                            if (polozka.Meno == tMenoOdchod)
                            {
                                _podskupiny.Remove(polozka);
                                _aktSkupina.Podskupiny.Remove(polozka.Meno);

                                // Email notifikacia
                                Pouzivatel  odosielatel = ((MainWindow)Owner).Logika.GetPouzivatel(_aktSkupina.VeduciSkupiny);
                                Pouzivatel  adresat     = ((MainWindow)Owner).Logika.GetPouzivatel(polozka.VeduciSkupiny);
                                EmailClient notifikacia = new EmailClient(adresat.Email, "NOTIFIKACIA KANGO", "<b> Vaša skupina bola práve odstránená zo skupiny.</b><br>" +
                                                                          "Meno skupiny: <b>" + _aktSkupina.Meno + "</b><br>" +
                                                                          "Typ: <b>" + _aktSkupina.Typ.ToString() + "</b><br>", ((MainWindow)Owner).Nastavenia, odosielatel);
                                notifikacia.PoslatEmail();

                                break;
                            }
                        }
                        VypisPodskupin();
                        NaplnPodskupin();
                        DelPravo();
                        MessageBox.Show("Zo skupiny odišla podskupina: " + tMenoOdchod);
                        BoloPridanie = true;
                    }
                    else
                    {
                        MessageBox.Show("Nemáte právo editácie.");
                    }
                }
                else
                {
                    if (PravoZmeny)
                    {
                        Pouzivatel dataRowView = (Pouzivatel)((Button)paE.Source).DataContext;
                        string     tMenoOdchod = dataRowView.Meno;
                        foreach (Pouzivatel polozka in _clenovia)
                        {
                            if (polozka.Meno == tMenoOdchod)
                            {
                                _clenovia.Remove(polozka);
                                _aktSkupina.Clenovia.Remove(polozka.Meno);
                                Pouzivatel uzivatelOdchod = ((MainWindow)Owner).Logika.GetPouzivatel(polozka.Meno);
                                uzivatelOdchod.Skupiny.Remove(_nMeno);

                                // Email notifikacia
                                Pouzivatel  adresat     = ((MainWindow)Owner).Logika.GetPouzivatel(_aktSkupina.VeduciSkupiny);
                                EmailClient notifikacia = new EmailClient(polozka.Email, "NOTIFIKACIA KANGO", "<b> Práve ste boli odstránený zo skupiny.</b><br>" +
                                                                          "Meno skupiny: <b>" + _aktSkupina.Meno + "</b><br>" +
                                                                          "Typ: <b>" + _aktSkupina.Typ.ToString() + "</b><br>", ((MainWindow)Owner).Nastavenia, adresat);
                                notifikacia.PoslatEmail();
                                break;
                            }
                        }
                        VypisClenov();
                        NaplnClenov();
                        DelPravo();
                        MessageBox.Show("Zo skupiny odišiel člen: " + tMenoOdchod);
                        BoloPridanie = true;
                    }
                    else
                    {
                        MessageBox.Show("Nemáte právo editácie.");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }
 /// <summary>
 /// Zobrazenie detailov o používateľovi
 /// </summary>
 private void BtnDetailUser_OnClick(object paSender, RoutedEventArgs paE)
 {
     try
     {
         Pouzivatel        dataRowView = (Pouzivatel)((Button)paE.Source).DataContext;
         string            tMeno       = dataRowView.Meno;
         Pouzivatel        konkretny   = Logika.GetPouzivatel(tMeno);
         HashSet <Skupina> zaclenenie  = null;
         if (konkretny.Skupiny.Count != 0)
         {
             zaclenenie = Logika.GetZaclenenie(tMeno);
         }
         bool povolenie = false;
         if (PrihlasenyStav)
         {
             povolenie = (PrihlasenyMeno == tMeno || Logika.GetPouzivatel(PrihlasenyMeno).Typ == FTyp.Administrátor) ? true : false;
         }
         DetailUser editovanie = new DetailUser(povolenie, konkretny, zaclenenie)
         {
             WindowStartupLocation = WindowStartupLocation.CenterOwner
         };
         editovanie.ShowDialog();
         if (PrihlasenyStav && editovanie.BolaZmena)
         {
             dataRowView.Meno    = konkretny.Meno;
             dataRowView.Typ     = konkretny.Typ;
             dataRowView.Email   = konkretny.Email;
             dataRowView.Telefon = konkretny.Telefon;
             dataRowView.Aktivny = konkretny.Aktivny;
             // Email notifikacia
             EmailClient notifikacia = new EmailClient(konkretny.Email, "NOTIFIKACIA KANGO", "<b> Práve ste editovali osobné údaje. <br></b>" +
                                                       "Vaše osobné údaje sú:<br>" +
                                                       "Meno: <b>" + konkretny.Meno + "</b><br>" +
                                                       "Email: <b>" + konkretny.Email + "</b><br>" +
                                                       "Telefón: <b>" + konkretny.Telefon + "</b><br>" +
                                                       "Poznámka: <b>" + konkretny.Poznamka + "</b><br>", Nastavenia);
             notifikacia.PoslatEmail();
             if (konkretny.Meno != tMeno)
             {
                 foreach (Skupina polozka in Logika.GetSkupiny())
                 {
                     if (konkretny.Skupiny.Contains(polozka.Meno))
                     {
                         polozka.Clenovia.Remove(tMeno);
                         polozka.Clenovia.Add(konkretny.Meno);
                     }
                     if (polozka.VeduciSkupiny == tMeno)
                     {
                         polozka.VeduciSkupiny = konkretny.Meno;
                     }
                 }
             }
             MessageBox.Show("Editovali ste používateľa : " + tMeno, "Oznámenie", MessageBoxButton.OK, MessageBoxImage.Information);
             PotrebaUlozit = true;
             VypisPouzivatelia();
         }
         editovanie.Close();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message.ToString());
     }
 }
 /// <summary>
 /// Zobrazenie detailov o skupine
 /// </summary>
 private void BtnDetailGroup_OnClick(object paSender, RoutedEventArgs paE)
 {
     try
     {
         Skupina dataRowView = (Skupina)((Button)paE.Source).DataContext;
         string  tMeno       = dataRowView.Meno;
         FTyp    tTyp        = dataRowView.Typ;
         string  tVeduci     = dataRowView.VeduciSkupiny;
         // EDIT
         Skupina           tSkupina       = Logika.GetSkupina(tMeno);
         HashSet <Skupina> tPodskupiny    = Logika.GetPodskupiny(tMeno);
         List <Pouzivatel> tPodUzivatelia = Logika.GetPodPouzivatelov(tMeno);
         bool povolenie = false;
         if (PrihlasenyStav)
         {
             povolenie = (PrihlasenyMeno == tVeduci || Logika.GetPouzivatel(PrihlasenyMeno).Typ == FTyp.Administrátor) ? true : false;
         }
         DetailGroup editovanie =
             new DetailGroup(povolenie, tSkupina.Meno, tSkupina, tPodUzivatelia, tPodskupiny, this)
         {
             WindowStartupLocation = WindowStartupLocation.CenterOwner
         };
         editovanie.ShowDialog();
         if (editovanie.BoloPridanie)
         {
             PotrebaUlozit = true;
         }
         if (PrihlasenyStav && editovanie.BolaZmena)
         {
             dataRowView.Meno          = tSkupina.Meno;
             dataRowView.Typ           = tSkupina.Typ;
             dataRowView.VeduciSkupiny = tSkupina.VeduciSkupiny;
             dataRowView.Poznamka      = tSkupina.Poznamka;
             // Email notifikacia
             Pouzivatel  konkretny   = Logika.GetPouzivatel(tSkupina.VeduciSkupiny);
             EmailClient notifikacia = new EmailClient(konkretny.Email, "NOTIFIKACIA KANGO", "<b> Práve ste editovali údaje skupiny. <br></b>" +
                                                       "Údaje skupiny sú:<br>" +
                                                       "Meno: <b>" + tSkupina.Meno + "</b><br>" +
                                                       "Typ: <b>" + tSkupina.Typ.ToString() + "</b><br>" +
                                                       "Poznámka: <b>" + tSkupina.Poznamka + "</b><br>" +
                                                       "Podskupiny: <b>" + tSkupina.GetPodskupiny() + "</b><br>" +
                                                       "Členovia: <b>" + tSkupina.GetClenov() + "</b><br>", Nastavenia);
             notifikacia.PoslatEmail();
             if (tSkupina.Meno != tMeno)
             {
                 foreach (Pouzivatel polozka in Logika.GetPouzivatalia())
                 {
                     if (polozka.Skupiny.Contains(tMeno))
                     {
                         polozka.Skupiny.Remove(tMeno);
                         polozka.Skupiny.Add(tSkupina.Meno);
                     }
                 }
             }
             MessageBox.Show("Editovali ste skupinu : " + tMeno, "Oznámenie", MessageBoxButton.OK, MessageBoxImage.Information);
             PotrebaUlozit = true;
             VypisSkupiny();
         }
         editovanie.Close();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message.ToString());
     }
 }