Just took a quick look at your source, and I don't think you have your LCD initialization routine down. You should just try getting the LCD to work with a simple program first, then you can add all of your other functions when you have it working. Also, you should probably just post a short section of code which will illustrate your problem, rather than the whole enchilada, which people are probably not going to sift through, to find your problem.
It appears you are using LCD status to tell if your LCD is ready (WAITLCD,) but I don't see any calls to this in your init routine. What is, perhaps more common, is to just wait for a short time for the LCD to initialize, and I don't see that in your INITLCD routine.
I think you should take a look at Nigel's tutorials, they may help out. You can find them here:
http://www.winpicprog.co.uk
Regards,
Robert