Don:
If you search on the SAS site for "ODS HTML Javascript", you should find some Tech Support notes that talk about inserting JavaScript into ODS output (which would mean that you would not have to code all the HTML yourself):
http://support.sas.com/kb/23/645.html
http://support.sas.com/kb/23/381.html
http://support.sas.com/kb/?qm=3&la=en&ct=51012&qt=subject:%22javascript_1%22+
You can use a custom CSS file with ODS HTML -- either in or outside of EG -- EG just uses the STYLESHEET= option. The trick would be to make sure that your custom CSS file is in the right place on the server so it could be used when you want it to be used. You'd have this same issue (where does the style template live) if you used SAS style templates to insert the JavaScript (instead of CSS), as described here:
http://support.sas.com/kb/4/773.html
Also as far as popups go, you can use the FLYOVER style attribute with ODS HTML to turn on popup windows. When you hover your mouse over the F or M, you should see a popup window with extra text.
[pre]
proc format;
value $gend 'M' = 'Something for male students'
'F' = 'Different for female students';
run;
title; footnote;
options nodate nonumber;
ods listing close;
ods html file="c:\temp\show_flyover.html" style=sasweb;
proc print data=sashelp.class;
title 'Use FLYOVER in variable cells based on variable value';
var name age height;
var sex / style(data)={flyover=$gend.};
run;
ods html close;
[/pre]
To see an example of using CSS and lots of popup windows, look at this example:
[pre]
ods markup tagset=style_popup path='c:\temp' (url=none)
file='popup.html' style=sasweb
stylesheet='popup.css';
proc report data=sashelp.shoes nowd;
column region sales inventory returns;
define region / group;
rbreak after / summarize;
title 'Using style popup tagset template';
run;
ods markup close;
[/pre]
The style_popup tagset template uses JavaScript to change the color of the page element when you hover your mouse over it and when you double click after the cell turns salmon-orange, then a popup window appears with all the style information relevant to that table cell. That tagset template and custom CSS file were written by the developers as a diagnostic tool to help users figure out what style attributes were used in an ODS HTML table cells. But the coding/application of the different technologies (HTML, JavaScript, CSS) all happens within ODS. (when you use the simple STYLESHEET= option, SAS/ODS is MAKING a CSS file; when you use the STYLESHEET=(URL=...) option, SAS/ODS will use an EXISTING CSS file.)
That example may be overkill for what you want to do, but it shows the breadth of what is possible in Base SAS.
Also, if you go down the SP road, there are only certain client apps that can "receive" HTML from an SP. EG is one of them -- but WRS is not. So if you built your SP to gen some custom HTML, you'd be limiting where the SP could run. (...which might be OK for your purposes...)
cynthia