quick help -- button pressing and timing

While it may not make a major difference in terms of functionality, it's good form to use int's and the HIGH, LOW constants when dealing with digitalRead and digitalWrite.

You shouldn't be reading you pin again because the value could change in between, you should be reading it into a variable, and using that as the comparison and assignment value.

Depending on the button, you may need to implement a debounce.