Charlie Sheen is a fantastic father who dotes over his children and is always there for them ... this according to Denise Richards.
TMZ has obtained a document submitted to the L.A. County Dept. of Children and Family Services, written by Denise Richards. The title is "Visitation Log." Denise outlines Charlie's involvement with Sam and Lola -- the kids they had together, as well as Bob and Max -- the twins he had with Brooke Mueller.
The document -- which Denise was required to keep because she was Charlie's monitor when he visited the twins -- was included in her documents to show DCFS Charlie has been a capable, even excellent parent, whereas Brooke has been a disaster.
Here's the outline of Charlie's involvement:
-- Sept. 22 We all had dinner together. Charlie stayed until bedtime
-- Sept 25 Visit after school till after dinner
-- Sept. 29 We all went to watch our daughters ride, petting zoo, and dinner with friends
-- Oct 2 Boys and their dad and I took the girls to their dance class after school. Bob and Lola put on a dance show for all of us before bed. Their father stayed until bedtime
-- Oct 4 Boys field trip for school. We all went together. Spent the morning until 1:30 PM
-- Oct 6 Charlie was with us for the boys' drum lesson. Watched them play and went to play ball with boys. His friend and sons met us as well
-- Oct 9 I had friends and their children over for a dinner party. Charlie was with us. He left right after bedtime
-- Oct 16 The kids all came to my set at work. Charlie met us there. At my dinner break we all ate together
-- Oct 20 Charlie and his chef came over and she made brunch for us. Sam had a big project for school he spent time working on that. And also did art with boys
-- Oct 23 Dinner/homework with girls. Read stories to the kids
-- Oct 27 Spent late afternoon into evening with us
-- Oct 31 Went trick or treating with us, afterwards came back to my house to help me put everyone to bed
TMZ broke the story ... Denise has sent material to DCFS explaining how it has become impossible to care for Bob and Max -- she's the temporary guardian -- because of Brooke's interference.
We're told Brooke tried to get the judge to strip Denise of guardianship Wednesday but failed.