Вариантов много Control/WebControl/CompositeControl/DataBoundControl/либо любой из готовых контролов — выбирай в зависимости от потребностей, наледуйся, реализуйте недостающее. Это если вкратце.
Подробнее можно вот в такой книге посмотреть:
Professional ASP .NET 2.0 Server Control And Component Development. Вроде толково написано, хотя и воды хватает на мой взгляд
Насчет скрипта — все просто. Добавляешь его как embeded resource в сборку.
[assembly: WebResource( "MyProject.Web.Scripts.Functions.js", "application/x-javascript" )]
И используешь где надо:
Page.ClientScript.RegisterClientScriptResource( typeof( MyControl ), "MyProject.Web.Scripts.Functions.js" );