This code
$('#single_cal1')
is attaching to an element with an "id" of single_cal1. If you view the source of your code do you see any elements with that id? When you use runat=server asp.net might alter the id of the control. If the javascript is on the same aspx\ascx page as the control then use
$('#<%=single_cal1.ClientID%>')
if they're not on the same page then use something other than the id, so add an attribute to the text box like
data-type="datepicker"
and update the js
$('[data-type="datepicker"]')