Could something like XOSL be tweaked to fit these needs? or GAG perhaps? I don't know much about either of these projects, but they're open source and platform independent. Perhaps one of them can be modified enough to suit?