Funny you should ask. Last week I spent some time searching around to try to find a JS abstraction layer, something you could use that to isolate the gadget logic from the underlying framework. I couldn't find one, although it's kind of surprising that's so. There is a tool which apparently will convert a Google Gadget to a Vista one, although not the other way around.
I then had a look at Google Gadgets. The documentation is confusing - they have many things which they call "gadgets".
Anyway, I wrote an abstraction layer and got the gadget running on Google's Desktop API.
I then discovered what I should have read in the documentation first: Google Gadgets won't render html. Well you can render it in a "fly out", but not in the basic gadget, which uses some proprietary technology which looks a bit like HTML/DOM (no CSS), but isn't.
So I was going to have to remove all the HTML/DOM/CSS stuff and replace it with hard coded proprietary Google controls.... That one slipped past the "don't be evil" filter I guess. Add to that the fact that the Google Gadget designer is pitiful, and I lost interest in the project.
Some of the web based Google gadget platforms seem to be more based on web standards; it may be easier to maintain a system across Vista/ Google using those. I may take a look at these.
Otherwise, I think it would be easier to recode the thing from scratch as a Google Desktop Gadget. My abstraction layer was getting to be larger than the whole thing. The reason I didn't do that is that then I'd have two branches of code to maintain, the codebase would probably double in size, and also no one had really pushed for it.
The latest version of the gadget has a bunch of tweaks and fixes plus support for multiple disks and the CH3NAS.