This is what happened:
1. She wasn't into you anymore, and had the guts to end it. No hate. No loathing. Just wasn't into it. Happens all the time. Unless someone cheats, beats the hell out of the other, or dies then this is always the reason for breaking up. JUST NOT FEELING IT.
2. She didn't talk to you for months because that's just the way it goes. If you aren't dating then there's nothing to talk about. She let you off easy too, she could have wanted to be 'friends' meaning you'd still have to talk to her and put up with her bullshit without all the boyfriend perks. Bullshit includes her talking about other guys she wants to fuck. Consider yourself lucky my friend. Clean break, best way.
3. She's going to the prom with your friend because she digs him. Has nothing to do with you. At all. You are merely a complication. Don't take it personal.
You aren't over her. That sucks. You might not have known you weren't over her, then your friend goes to take her to prom and realize you just aren't over her. I feel for you bro.
The only solution is time and another girlfriend. Go get yourself another. You don't have to hate on your old girlfriend, she just moved on way quicker than you, it happens and it always hurts/sucks.
Goddamn I wish I'd known this crap in High School.
You didn't ask or mention it, but this 'friend' that is taking her to prom is no fucking friend at all. He's gotta know it'd hurt your feelings. Unless he's really into her he'd have told her to go fuck herself. So he either really likes her, is a huge fuckwit douche bag, or he's desperate to go to prom.
That's my take. Good luck man. Go find another lady, and try not to be bitter. This shit is going to happen over and over and over and over and over until one day when you stop giving a shit you stop having to worry because you are suddenly married. Life. Sheesh!