You're in a bind there because when you click the same date, the SelectionChanged event doesn't fire (the value isn't changing). Though it doesn't immediately appear to be supported, you could do something like handle a click event on the calendar or its container, but then you don't really want to close the control when the user is just trying to navigate through the years or months. The good news is that clicking on the same date does a postback no matter what, so it's going through your page events, and you can catch it and handle it there. So while there may be a better way to do it, adding this code to your Page_Load accomplishes the goal:
If Request.Params("__EVENTTARGET") IsNot Nothing AndAlso Request.Params("__EVENTTARGET").EndsWith(cdrcalendar.ID) Then
If Session("CALENDAR_LASTCLICK") = Request.Params("__EVENTARGUMENT") Then
cdrcalendar.Visible = False
Else
Session("CALENDAR_LASTCLICK") = Request.Params("__EVENTARGUMENT")
End If
End If