That has to be one of the strangest partition layouts I've ever seen. In fact, if you could explain to me how it got that way I'd love to know. Perhaps you had other extended partitions that were deleted?

NOW you do realize that NTFS has a nasty habit of just leaving bits and bytes lying about wherever it wants right? (hmmm sounds alot like M$- I wonder why??)

SO you need to defrag the disc before resizing it. NO not just once or even twice but over and over again until it shows absolutely no change in file placement on the disc. (yes NTFS really is that bad of a file system and no there is no such thing as defrag in LInux but I digress...).
Even if M$ says the disc doesn't need to be defragged do it again!
REMEMBER: Never trust Microsoft!

anyway.....

Then you might be able to resize your partition(s). Again, I would prefer my partitions to be logical in numerical order but that's just me.

Personally (and realize I have never used XP but for 2 or 3 minutes at a time on a handful of occasions) I would copy your programs somewhere else and delete all of your partitions save /dev/hda1.

Please also stop rebooting no matter what you decide to do. Just have a look at your partition table w/ a very simple application called cfdisk. NO it isn't pretty and has nothing you can click but we don't care about that do we? We want functionality!!!

Open a terminal and start typing.....
Code:
sudo cfdisk /dev/hda
PLEASE post back if you have any questions at all OR you can also find FREE REALTIME help and alot of good people in #knoppix and/or #kanotix