Thanks Chris,
I think I've found the smoking gun, but don't know what it means...
In the html source, all non-functional URLs have 2 additional arguments defined in the <input name="__dnnVariable" element
,tar:\`_new\`
Non-Functional menu example:
{id:\`2251\`,key:\`2251\`,txt:\`Propose a Class\`,ca:\`3\`,url:\`http://heritagehsc.org/BoardOnly/ProposeaClass.aspx\`,tar:\`_new\`,nodes:[]}
Functional menu example. (Doesn't have the tar and new args)
{id:\`2257\`,key:\`2257\`,txt:\`Class Proposals\`,ca:\`3\`,url:\`http://heritagehsc.org/BoardOnly/ClassProposals.aspx\`,nodes:[]
Is this core portal code, or specific to skins? what does TAR and NEW do in this context and what might I look at to troubleshoot further?