Hi,
Sorry to hear about your dilemma. The supported method of reducing the size of the database is to script the objects & permissions, bcp the data out of the tables. Then drop and recreate the database, recreate the tables, stored procs and views, bcp the data in, create the index and then the triggers.
By correctly allocating space on the devices you will sort out your mixed up segments as well.
Potentially there are methods of doing this without dropping the database but they are not recommended for the faint hearted because it involves hacking the system tables after performing what amounts to a large amount of system administration. Considering this it is probably quicker and easier to perform the drop and recreate above.
Sorry to be the bringer of bad news.
Richard