a simple way to achive this would be separating the map, I mean every state will be a separated image, thus you can even raise the image of the state when the mouse goes over it. then you can control any event by state
.......
DO WHILE .T.
ME.Work()
ENDDO