/// <summary>
        /// transfers actualized data from subTitleFile
        /// </summary>
        public void ReadFromSubTitleFile()
        {
            TimeSpan timOffsetTime;
            string strOffsetTime;

            // reading basic information
            strOffsetTime = this.Description.RightOf("(Offset ").LeftOf(")");
            this.Description = this.Description.Replace("(Offset " + strOffsetTime + ")", string.Empty);

            TimeSpan.TryParse(strOffsetTime, out timOffsetTime);

            this.OffsetTime = timOffsetTime;

            // reading subtitle content
            if (this.URL == string.Empty || !File.Exists(this.URL))
            {
                return;
            }

            using (StreamReader srdSrtFile = new StreamReader(this.URL, Encoding.UTF8))
            {
                Configuration.SrtSubTitleLineType lineType = default(Configuration.SrtSubTitleLineType);
                SrtSubTitleFileEntry srtSubTitleFileEntry = new SrtSubTitleFileEntry();
                lineType = Configuration.SrtSubTitleLineType.EntryNumber;

                while (true)
                {
                    string srtLine = srdSrtFile.ReadLine();

                    // end of file
                    if (srtLine == null)
                    {
                        break;
                    }

                    // additional empty lines (on end); just skipping
                    if (srtLine == string.Empty && lineType == Configuration.SrtSubTitleLineType.EntryNumber)
                    {
                        continue;
                    }

                    srtSubTitleFileEntry.OffsetTime = this.OffsetTime;

                    // end of SubTitleLines
                    if (lineType == Configuration.SrtSubTitleLineType.SubTitles && srtLine == string.Empty)
                    {
                        this.SubTitleEntries.Add(srtSubTitleFileEntry);
                        lineType = Configuration.SrtSubTitleLineType.EmptyLine;
                    }

                    // SubTitleLines
                    if (lineType == Configuration.SrtSubTitleLineType.SubTitles && srtLine != string.Empty)
                    {
                        srtSubTitleFileEntry.SubTitleLines.Add(srtLine);
                        lineType = Configuration.SrtSubTitleLineType.SubTitles;
                    }

                    // second Line -> Times
                    if (lineType == Configuration.SrtSubTitleLineType.Times)
                    {
                        string strStartTime = srtLine.Substring(0, 12).Replace(",", ".");
                        string strEndTime = srtLine.Substring(17, 12).Replace(",", ".");
                        string timeExtentions = string.Empty;
                        if (srtLine.Length > 30)
                        {
                            timeExtentions = srtLine.Substring(30, srtLine.Length);
                        }

                        TimeSpan timStartTime;
                        TimeSpan timEndTime;

                        TimeSpan.TryParse(strStartTime, out timStartTime);
                        TimeSpan.TryParse(strEndTime, out timEndTime);

                        srtSubTitleFileEntry.StartTime = timStartTime;
                        srtSubTitleFileEntry.EndTime = timEndTime;
                        srtSubTitleFileEntry.TimeExtentions = timeExtentions;

                        lineType = Configuration.SrtSubTitleLineType.SubTitles;
                    }

                    // first Line -> EntryNumber
                    if (lineType == Configuration.SrtSubTitleLineType.EntryNumber)
                    {
                        strOffsetTime = srtLine.RightOf("(Offset ").LeftOf(")");
                        srtLine = srtLine.Replace("(Offset " + strOffsetTime + ")", string.Empty);

                        if (strOffsetTime != string.Empty)
                        {
                            TimeSpan.TryParse(strOffsetTime, out timOffsetTime);
                            this.OffsetTime = timOffsetTime;
                        }

                        srtSubTitleFileEntry.EntryNumber = int.Parse(srtLine);
                        lineType = Configuration.SrtSubTitleLineType.Times;
                    }

                    if (lineType == Configuration.SrtSubTitleLineType.EmptyLine)
                    {
                        srtSubTitleFileEntry = new SrtSubTitleFileEntry();
                        lineType = Configuration.SrtSubTitleLineType.EntryNumber;
                    }
                }
            }
        }
        /// <summary>
        /// clones SrtSubTitleFileEntry object completely
        /// </summary>
        /// <returns>new instance of SrtSubTitleFileEntry</returns>
        public SrtSubTitleFileEntry Clone()
        {
            SrtSubTitleFileEntry srtSubTitleFileEntryClone = new SrtSubTitleFileEntry();
            srtSubTitleFileEntryClone.EntryNumber = this.EntryNumber;
            srtSubTitleFileEntryClone.StartTime = this.StartTime;
            srtSubTitleFileEntryClone.EndTime = this.EndTime;
            srtSubTitleFileEntryClone.OffsetTime = this.OffsetTime;
            srtSubTitleFileEntryClone.TimeExtentions = this.TimeExtentions;
            srtSubTitleFileEntryClone.SubTitleLines.AddRange(this.SubTitleLines);

            return srtSubTitleFileEntryClone;
        }