You can try this here.
The overall code makes sense and i have been able to get it to show an items availability in the product view as ITEM FOR PRE-ORDER. But for some reason i am having trouble changing the label of the add to cart button in category view.
Maybe you will have more luck, If you do get it working on the button title, do let me know how you did it.
For more info on my issue, and how to set up the code to at least show availability in the product view as Pre Order, look at my thread here.
EDIT : Got it solved :D Just make sure that the value for “Used in Product Listing” while creating the attribute has to be set to “Yes”.