You can use gparted to do what you need.
http://gparted.sourceforge.net/livecd.php
You would essentially put gparted live on a cd or USB stick, boot into it's operating system (linux), and then resize all partitions outside of mac OSx.
It would give you full control over all disks connected to the system. it is also free, handles HFS and HFS+(case sensitive and non) as well as NTFS.
However if you have a newer mac there may be some compatibility issues with bluetooth peripherals and wifi (when booting into the linux kernel on the live cd).