oh yes. thanks, i never noticed that!
I made that change and changed the order in which each point is created and processed to a clockwise order. Everything seems to look better but there still seems to be a problem.
Screenshot The code used to process each triangle along with their texture and normals can be downloaded
Here. That code is located within 2 for loops, each for 'xm' and 'zm'. 'height' is the starting bottom left vertex, 'heightOpp' is the opposite, 'heightZ' is half way between 'height' and 'heightfZ' which is the next position on the z axis.
Im not sure why i didn't just include that with the code. I guess i just forgot

The CalculateNormals function can be seen above along with the change suggested by ZbuffeR.
Any help would be apreciated as i have no idea what the problem is!
Thanks in advance