Hi,
I maintain several dozen Asterisk, FreePBX and Elastix servers, so I think I can help you, however your description is not clear enough. First you are saying "I want the calls coming into the inbound trunk (not DIDs)" and after that you say "I want to route inbound trunks to outbound trunks based on dialed number" which is contradictory, because DID is the number that was dialed before it reached your inbound trunk.
Secondly, in order to send a call via outbound trunk you must dial something that the other end can recognize and route further. You say there are Cisco Gateways on the other end, so you must dial something that those gateways would recognize and route elsewhere. This should be closely related to your wish on having outgoing Invite field with DID and CID (however, you did not mention which one should be assigned to "to" and "from" fields), so those Cisco Gateways should be adjusted to properly recognize the DID and CID and route them further.
This should be fairly simple using plain Asterisk and not FreePBX, however we can create some custom extensions in FreePBX and let them all the routing from inbound to outbound trunk.
Regards,
Janko