public static void AddNewEntryFromStringArray(
            BankRow entryStrings,
            SortedList kontoEntries,
            SortedList newKontoEntries,
            SortedList newBatchOfKontoEntriesAlreadyRed)
        {
            var newKeyFromHtml = new KontoEntry(entryStrings);
            var key = newKeyFromHtml.KeyForThis;

            if (!kontoEntries.ContainsKey(key) && !newKontoEntries.ContainsKey(key)) // Kollas även senare
            {
                // if (newKontoEntries != null) {// && !newKontoEntries.ContainsKey(key)) {
                if (key != null)
                {
                    newKontoEntries.Add(key, newKeyFromHtml);

                    // }
                    // else {
                    // //Dubblett
                    // }
                }

                // Handle Doubles
            }
            else if (!newBatchOfKontoEntriesAlreadyRed.ContainsKey(key))
            {
                // Om man hade entryn i Excel, innan laddning, och innan man gick igenom nya, så kan man (förutsätter att man då det inte finns saldo (i allkort-kredit), så läses hela listan in i ett svep, det är inte en lista, det kan ev. bli dubblet om två datum hamnar på olika allkort-kredit-fakturor)
                var userDecision = MessageBox.Show(
                    "Found potential double: " + newKeyFromHtml.KeyForThis,
                    "Double, SaveThisEntry?",
                    MessageBoxButtons.YesNo);

                if (userDecision.Equals(DialogResult.Yes))
                {
                    // Detta är en dubblett, men om det finns fler än 2 dubbletter så måste man se till att nyckeln är unik
                    while (newKontoEntries.ContainsKey(newKeyFromHtml.KeyForThis))
                    {
                        // Stega upp saldo, tills en unik nyckel skapats
                        newKeyFromHtml.SaldoOrginal += newKeyFromHtml.KostnadEllerInkomst != 0
                                                           ? newKeyFromHtml.KostnadEllerInkomst
                                                           : 1;
                    }

                    newKontoEntries.Add(newKeyFromHtml.KeyForThis, newKeyFromHtml);
                }

                // För annat än Allkortskredit, så ordnar Detta sig, så länge saldot är med i nyckeln, det är den, så det gäller bara att ha rätt saldo i xls //Om man tagit utt t.ex. 100kr 2 ggr samma dag, från samma bankomat. hm, sätt 1 etta efteråt, men det göller ju bara det som är såna, hm, får ta dem manuellt
            }
        }
        /// <summary>Hjäpfunnktion till CheckAndAddNewItems
        /// SweEnglish rules!
        /// Prestandainfo. Loop i loop...
        /// </summary>
        /// <param name="newKe"></param>
        public static void CheckForSkyddatBeloppMatcherAndGuesseDouble(KontoEntry newKe, SortedList kontoEntries)
        {
            // private
            foreach (KontoEntry entry in kontoEntries.Values)
            {
                // Om entryn inte är av typen regulär skippa jämförelser av den.
                // Det kan t.ex. vara mathandling, som delas upp i hemlagat o hygien, eller Periodens köp, som inte ska räknas med som vanlgt och ej heller jämföras
                if (entry.EntryType != KontoEntryType.Regular)
                {
                    continue;
                }

                if (!KontoEntriesChecker.DidSatKeyForEntry(newKe, entry))
                {
                    return;
                }

            }
        }
        /// <summary>
        /// Sets color if some conditions exists
        /// </summary>
        /// <param name="newKe">Entry to change</param>
        /// <param name="entry">CurrentEntry to read</param>
        /// <returns></returns>
        internal static bool DidSatKeyForEntry(KontoEntry newKe, KontoEntry entry)
        {
            if (entry.Date == newKe.Date && entry.KostnadEllerInkomst.Equals(newKe.KostnadEllerInkomst))
            {
                // Ersätt skb
                if (entry.Info.ToLower() == Skb.ToLower() || entry.Info.ToLower() == Pkk.ToLower())
                {
                    newKe.FontFrontColor = entry.FontFrontColor = Color.DeepSkyBlue;

                    // Ta de gamla saldot
                    newKe.SaldoOrginal = entry.SaldoOrginal;
                    newKe.AckumuleratSaldo = entry.AckumuleratSaldo;

                    // Vid senare ersättande, så kommer typen vara den nya, eftersom det är den som autokattats, och då stämmer det nog bättre än den som kan vara skyddat belopp. Anv. kan ju även alltid sätta själv innan sparning
                    // Är inget autokattat, så ta den gamla, man har säkert gissat rätt
                    if (string.IsNullOrEmpty(newKe.TypAvKostnad))
                    {
                        newKe.TypAvKostnad = entry.TypAvKostnad;
                    }

                    newKe.ReplaceThisKey = entry.KeyForThis;
                }
                else
                {
                    // Det är kanske en dubblett
                    newKe.FontFrontColor = entry.FontFrontColor = Color.Red;
                    newKe.ThisIsDoubleDoNotAdd = true;
                }

                return false; // En entry ska bara kunna ersätta En annan entry
            }

            return true;
        }
        private static LoadOrSaveResult SkapaKontoEntries(
            SortedList saveToTable, Hashtable entriesLoadedFromDataStore, SaldoHolder saldoHolder)
        {
            var loadResult = new LoadOrSaveResult();

            foreach (DictionaryEntry item in entriesLoadedFromDataStore)
            {
                if (item.Value != null)
                {
                    var entryArray = ((ExcelRowEntry)item.Value).Args;

                    // Om det är tomt
                    if (entryArray == null)
                    {
                        continue;
                    }

                    // Om det är kolumnbeskrivning, skippa...
                    if ((string)entryArray[0] == "y")
                    {
                        // var saldoAllkortKreditFakturerat = entryArray.Length > 15 ? entryArray[15] ?? saldoAllkortKreditFakturerat : saldoAllkortKreditFakturerat;
                        var saldoColumnNumber = 11;
                        if (ProgramSettings.BankType == BankType.Swedbank)
                        {
                            foreach (var saldoName in SwedbankSaldonames)
                            {
                                var saldot = entryArray.Length > saldoColumnNumber
                                                 ? entryArray[saldoColumnNumber + 1] ?? string.Empty
                                                 : string.Empty; // Todo, byt empty mot värden i saldon

                                saldoHolder.AddToOrChangeValueInDictionaryForKey(saldoName, (double)saldot);

                                saldoColumnNumber++;
                            }
                        }
                        else if (ProgramSettings.BankType == BankType.Mobilhandelsbanken)
                        {
                            // Spara saldon, använd det gamla värdet om inget nytt hittats från fil.
                            //var saldoLöne = saldoHolder.GetSaldoForName(LönekontoName);
                            //var saldoAllkort = saldoHolder.GetSaldoForName(AllkortName);
                            //var saldoAllkortKreditEjFakturerat = saldoHolder.GetSaldoForName(EjFaktureratEtcName);

                            //var saldoLöne = GetValueIfNotEmpty(entryArray, 12);
                            //var saldoAllkort = (string)(entryArray.Length > 13 ? entryArray[13] ?? saldoAllkort : saldoAllkort);
                            //var saldoAllkortKreditEjFakturerat = (string)(entryArray.Length > 14
                            //                                              ? entryArray[14] ?? saldoAllkortKreditEjFakturerat
                            //                                              : saldoAllkortKreditEjFakturerat);

                            saldoHolder.AddToOrChangeValueInDictionaryForKey(LönekontoName, GetValueIfNotEmpty(entryArray, 12));
                            saldoHolder.AddToOrChangeValueInDictionaryForKey(AllkortName, GetValueIfNotEmpty(entryArray, 13));
                            saldoHolder.AddToOrChangeValueInDictionaryForKey(
                                AllkortEjFaktureratName, GetValueIfNotEmpty(entryArray, 14)

                                // + saldoAllkortKreditFakturerat.GetValueFromEntry()
                                );
                        }

                        // Hoppa över
                        continue;
                    }

                    var newKe = new KontoEntry(entryArray, true);
                    var key = newKe.KeyForThis; // item.Key as string;

                    // Lägg till orginalraden, gör i UI-hanterare
                    if (!saveToTable.ContainsKey(key))
                    {
                        #region old debug

                        // AddToRichTextBox(richTextBox1, newKE.RowToSaveForThis);

                        // test debug
                        // if (_newKontoEntries.Count < 6)
                        // {
                        // if (!_newKontoEntries.ContainsKey(key))
                        // {
                        // _newKontoEntries.Add(key, newKE);
                        // //AddToListview(m_newIitemsListOrg, newKE);
                        // }
                        // }
                        // else
                        #endregion

                        saveToTable.Add(key, newKe); // CreateKE(entryArray, true)

                        loadResult.somethingLoadedOrSaved = true;
                    }
                    else
                    {
                        // Detta ordnar sig, så länge saldot är med i nyckeln, det är den, så det gäller bara att ha rätt saldo i xls //Om man tagit utt t.ex. 100kr 2 ggr samma dag, från samma bankomat. hm, sätt 1 etta efteråt, men det göller ju bara det som är såna, hm, får ta dem manuellt

                        // skulle kunna tillåta någon inläsning här ev.
                        // om man kan förutsätta att xls:en är kollad,
                        // det får bli här man lägger till specialdubbletter manuellt
                        Console.WriteLine("Entry Double found. Key = " + key);

                        // meddela detta till usern, man ser de på skipped...
                        loadResult.skippedOrSaved++;
                    }
                }
            }

            return loadResult;
        }
        internal static void AddToListview(ListView list, KontoEntry entry)
        {
            // Sätt mellanslagstecken ifall en strän i listan kommer att bli tom eller null, så att det finns något att klicka på och så det inte uppstår exception senare.
            entry.ForUi = true;
            var kontoEntryElements = entry.RowToSaveToUiSwitched; // RowToSaveForThis;
            entry.ForUi = false;

            // for (var itemIndex = 0; itemIndex < kontoEntryElements.Length; itemIndex++)//hm, denna kan man nog inte ha här o räkna med bra resultat, men o andra sidan så är det bara för att comboboxen ska dyka upp visuellt, så detta e lugnt
            // {
            // if (string.IsNullOrEmpty(kontoEntryElements[itemIndex])) {
            // kontoEntryElements[itemIndex] = " ";//kanska kan göras på annat ställe
            // }
            // }

            // System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem(new string[] {
            // "Neww"}, -1, System.Drawing.Color.Lime, System.Drawing.Color.Empty, null);

            // byt plats på typavkat och kostnad
            // var kostnad = kontoEntryElements[2];
            // var typAvkostnad = kontoEntryElements[5];

            // kontoEntryElements[2] = typAvkostnad;
            // kontoEntryElements[5] = typAvkostnad;

            list.Items.Add(new ListViewItem(kontoEntryElements, -1, entry.FontFrontColor, Color.Empty, null)).Tag =
                entry;

                // man slipper lite tecken och castningarna o likhetstecknet, iom att detta är en fkn//Overkill? hehe, anal. Trodde jag...nu fick jag ju nytta av det så det så
        }