public Chapters(Chapters old)
 {
     this.index      = old.index;
     this.is_chapter = old.is_chapter;
     this.number     = old.number;
     this.link       = old.link;
     if (old.tome != null)
     {
         this.tome = new Tome(old.tome);
     }
     else
     {
         this.tome = null;
     }
     this.title      = old.title;
     this.total_page = old.total_page;
     this.date       = old.date;
 }
        private void ButtonStart_Click(object sender, RoutedEventArgs e)
        {
            String textpath = textPath.Text;

            if (textpath == "")
            {
                return;
            }
            isStart = true;
            ButtonStart.IsEnabled = false;
            Buttonstop.IsEnabled  = true;
            new Thread(() =>
            {
                Thread.CurrentThread.IsBackground = true;

                while (listDownload.Count > 0 && isStart == true)
                {
                    Download d  = listDownload[0];
                    d.name      = d.name.Replace("/", "-");
                    d.name      = d.name.Replace("\\", "-");
                    d.name      = d.name.Replace(":", "-");
                    d.name      = d.name.Replace("*", ".");
                    d.name      = d.name.Replace("?", "!");
                    d.name      = d.name.Replace("\"", "-");
                    d.name      = d.name.Replace("<", "-");
                    d.name      = d.name.Replace(">", "-");
                    d.name      = d.name.Replace("|", "-");
                    String path = textpath + d.name + "\\";
                    System.IO.Directory.CreateDirectory(path);
                    while (d.chapters.Count > 0 && isStart == true)
                    {
                        Chapters c   = d.chapters[0];
                        String path2 = path;
                        if (c.getTome() != null && isStart == true)
                        {
                            if (c.getTome().getTitle() != null && c.getTome().getTitle() != "" && isStart == true)
                            {
                                c.getTome().title = c.getTome().title.Replace(":", "-");
                                c.getTome().title = c.getTome().title.Replace("*", ".");
                                c.getTome().title = c.getTome().title.Replace("?", "!");
                                c.getTome().title = c.getTome().title.Replace("<", "-");
                                c.getTome().title = c.getTome().title.Replace(">", "-");
                                c.getTome().title = c.getTome().title.Replace("|", "-");

                                path2 = path2 + "Tome " + c.getTome().getNumber() + " - " + c.getTome().getTitle() + "\\";
                            }
                            else if (isStart == true)
                            {
                                path2 = path2 + "Tome " + c.getTome().getNumber() + "\\";
                            }

                            System.IO.Directory.CreateDirectory(path2);
                        }

                        List <String> pages_link = null;
                        int error = 0;

                        pages_link = allSites[d.site - 1].prepareDownload(c);

                        if (error == 0)
                        {
                            int nb_page_real = 0;
                            int nb_page_max  = c.getMax();

                            foreach (String l in pages_link)
                            {
                                int nb_try = 0;

                                while (nb_try < 3)
                                {
                                    try
                                    {
                                        if (nb_try == 0)
                                        {
                                            nb_page_real++;
                                        }
                                        allSites[d.site - 1].downloadScan(l, nb_page_real - 1, c, path2);
                                        pg1Val = (int)((double)((double)(nb_page_real) / (double)(nb_page_max)) * 100.0);
                                        nb_try = 3;
                                    }
                                    catch (Exception g)
                                    {
                                        Debug.WriteLine("Error : " + d.name + " " + c.getNumber() + " page " + nb_page_real);
                                        //listBoxErrors.Items.Add("Error : " + d.name + " " + c.getNumber() + " page " + nb_page_real);
                                        nb_try++;
                                    }
                                }
                            }
                        }
                        d.total_to_dl_real++;
                        pg2Val = (int)((double)((double)(d.total_to_dl_real) / (double)(d.total_to_dl)) * 100.0);
                        if (d.chapters[0].is_chapter)
                        {
                            d.nb_chapter--;
                        }
                        else
                        {
                            d.nb_tome--;
                        }
                        dl_text_val   = d.nb_tome + " Tomes - " + d.nb_chapter + " Chapitres";
                        isTextRefresh = true;
                        d.chapters.RemoveAt(0);
                        saveDownload();
                    }

                    if (listDownload[0].chapters.Count <= 0)
                    {
                        pg1Val = 0;
                        pg2Val = 0;
                        listDownload.RemoveAt(0);
                    }

                    saveDownload();
                    isDownloadRefresh = true;
                }
                isStart = false;
            }).Start();
        }