private ControlDetalleServicio DuplicarControl(ControlDetalleServicio detalle)
        {
            CountDetalles = CountDetalles + 1;
            var detalleCiclo = DAOFactory.DetalleCicloDAO.FindById(detalle.IdDetalleCiclo);
            var control      = new ControlDetalleServicio {
                ID = "_" + CountDetalles, ParentControls = ParentControls
            };
            var found    = false;
            var interval = TimeSpan.Zero;
            ControlDetalleServicio prev = null;

            for (var i = 0; i < panelEstados.Controls.Count; i++)
            {
                var current = panelEstados.Controls[i] as ControlDetalleServicio;
                if (current == null)
                {
                    continue;
                }
                if (!found && current != detalle)
                {
                    continue;
                }


                var next = (i + 1 < panelEstados.Controls.Count ? panelEstados.Controls[i + 1] : null) as ControlDetalleServicio;
                var tmp  = next != null?next.GetFirstDate().Subtract(current.GetLastDate()) : TimeSpan.Zero;

                if (panelEstados.Controls[i] == detalle)
                {
                    panelEstados.Controls.AddAt(i + 1, control);
                    control.CreateFromDetalleCiclo(detalleCiclo);
                    control.PanelAddVisible = detalle.PanelAddVisible;
                    detalle.PanelAddVisible = false;

                    control.SetDate(detalle.GetNextDate());
                    i++;
                    current = control;
                    found   = true;
                }
                else
                {
                    current.SetDate(prev.GetLastDate().Add(interval));
                }
                interval = tmp;
                prev     = current;
            }

            UpdateOrders();

            // Reseteo los Id de los controles para que mantengan el orden correcto
            var allControls = GetControls();

            for (var i = 0; i < allControls.Count; i++)
            {
                allControls[i].ID = "_" + i;
            }


            return(control);
        }