Adding server controls via javascript instead of just dom elements may not be simple to do, but it is possible. I'd suggest you go NC01's route unless you have a specific reason to do otherwise.
That said, the best way to do exactly what you are asking is to use JSON objects/AJAX. You basicly have a mirror of your serverside objects (at least the parts you care about) in the javascript side. Do a google search on IScriptControl to see how you can pass down information to the javascript object.
Look into System.Web.Script.Serialization.JavaScriptSerializer for methods on how to pass data back and forth. You can use this to directly create objects from javascript to serverside and vice versa (there's a javascript version of this). This way you don't have to worry about manually setting every property.
Once you have the objects passed back and forth, it's only a matter of dynamicly creating controls serverside based on the data given from the javascript.
As an alterantive, if you want to create dyanmic serverside objects and update panels aren't fast enough, you may want to look into javascript webrequests. With these you can send only the data you care about and update a single dom element. A good trick is to simply create a page that handles only the bits you want to update and override render so you don't have extranious head tags sent.
edit: Almost didn't notice your second question. A quick google search should help with the mouseover part. Look for the keywords onmouseover and onmouseout. If you want to go the ajax/json route so you can add things dynamicly, look up addhandler and clearhandler. Just remember to use delegates so you can access the "this" member.