make the bmapOn image which is displayed if the user clicks it complete black,i think it should be transparent then. I also recommend you to use some kind of boolean var to check if the functionOn has already been executed.

( button(x, y, bmapOn, bmapOff, bmapOver, functionOn, functionOff, functionOver); )