The AJAX Control Toolkit has a CalenderExtender extender control that pops up a calendar whenever the user clicks on the target control, or a popup control. The extender is commonly used to popup a calendar for a TextBox , like in an airline reservation system when selecting the from and to dates. The calendar extender can work by targeting a TextBox control directly, like so:
<asp:TextBox ID="txt1" runat="server" />
<ajax:CalendarExtender ID="cal1" runat="server" PopupButtonID="txt1" TargetControlID="txt1" />
In this mode, the calendar extender appears when the TextBox is clicked on. Clicking out of the TextBox hides it. (Note: This inexplicably annoying behavior was corrected with AJAX version 3. Clicking a date now hides the calendar.)
The extender also can take a PopupButtonID reference to a button that can be clicked. When the button is clicked, it shows the calendar; clicking on the button again hides it.
The calendar extender can switch to year/decade view by clicking on the header. Clicking the first time brings up a list of months; clicking again brings up a list of years. The left and right arrow buttons also page through the months or years.
The Calendar Extendar supports localization ,and you can localize it by setting the EnableScriptGlobalization Script Manager property to true , this way the calendar extendar will display its contents based on the current page culture.
Calendar extendar Live Demo.