GUI Upgrade Problem

Hello all, I am working on a game with upgradable explosions. once one is bought, the next one is available for purchase. this works fine he first time the player buys the upgrade, the next one appears. and is available for purchase. the problem is, after the player exits the upgrade menu to play the game again to earn more money, the upgrade is usable, but in the upgrade menu it resets it so you have to buy the first one again and the next one is unavailable for purchase. here is my upgrade GUI script...

private var FirstPurchased = false;
private var SecondPurchased = false;
private var ThirdPurchased = false;
private var FourthPurchased = false;
private var FifthPurchased = false;
private var SixthPurchased = false;
private var SeventhPurchased = false;
private var EighthPurchased = false;
private var NinethPurchased = false;
private var TenthPurchased = false;
private var EleventhPurchased = false;
private var TwelvethPurchased = false;
private var ThirteenthPurchased = false;
private var FourteenthPurchased = false;

function OnGUI () {
        GUI.Box(Rect(325,10,100,40),"Money:"+MoneyLogic.Money);

            GUI.Box(Rect(925,70,100,20),"Cost: $1,000");
    if (GUI.Button (Rect (325,70,600,20), "Simple")&& MoneyLogic.Money>=1000) {
        DetonationCustom.allowedExp++;
        MoneyLogic.Money-=1000;
    GUI.enabled = false;
    FirstPurchased = true;

    }

    if(FirstPurchased){
        GUI.Box(Rect(925,90,100,20),"Cost: $1,000");
    if (GUI.Button (Rect (325,90,600,20), "Sounds")&& MoneyLogic.Money>=1000) {
        DetonationCustom.allowedExp++;
        MoneyLogic.Money-=1000;
GUI.enabled = false;
SecondPurchased = true;
    }
    if(SecondPurchased)
    {
            GUI.Box(Rect(925,110,100,20),"Cost: $1,000");
        if (GUI.Button (Rect (325,110,600,20), "Base")&& MoneyLogic.Money>=1000) {
        DetonationCustom.allowedExp++;
        MoneyLogic.Money-=1000;
GUI.enabled = false;
ThirdPurchased = true;
    }
    if(ThirdPurchased)
    {
        GUI.Box(Rect(925,130,100,20),"Cost: $1,000");
        if (GUI.Button (Rect (325,130,600,20), "Spray")&& MoneyLogic.Money>=1000) {
        DetonationCustom.allowedExp++;
        MoneyLogic.Money-=1000;
GUI.enabled = false;
FourthPurchased = true;
    }
    if(FourthPurchased)
    {
        GUI.Box(Rect(925,150,100,20),"Cost: $1,000");
        if (GUI.Button (Rect (325,150,600,20), "Ignitor")&& MoneyLogic.Money>=1000) {
        DetonationCustom.allowedExp++;
        MoneyLogic.Money-=1000;
GUI.enabled = false;
FifthPurchased = true;
    }
    if(FifthPurchased)
    {
        GUI.Box(Rect(925,170,100,20),"Cost: $1,000");
        if (GUI.Button (Rect (325,170,600,20), "Heatwave")&& MoneyLogic.Money>=1000) {
        DetonationCustom.allowedExp++;
        MoneyLogic.Money-=1000;
GUI.enabled = false;
SixthPurchased = true;
    }
    if(SixthPurchased)
    {
        GUI.Box(Rect(925,190,100,20),"Cost: $2,000");
    if (GUI.Button (Rect (325,190,600,20), "Multi")&& MoneyLogic.Money>=2000) {
        DetonationCustom.allowedExp++;
        MoneyLogic.Money-=2000;
GUI.enabled = false;
SeventhPurchased = true;
    }
    if(SeventhPurchased)
    {
        GUI.Box(Rect(925,210,100,20),"Cost: $2,000");
    if (GUI.Button (Rect (325,210,600,20), "Upwards")&& MoneyLogic.Money>=2000) {
        DetonationCustom.allowedExp++;
        MoneyLogic.Money-=2000;
GUI.enabled = false;
EighthPurchased = true;
    }
    if(EighthPurchased)
    {
        GUI.Box(Rect(925,230,100,20),"Cost: $2,000");
    if (GUI.Button (Rect (325,230,600,20), "CrazySparks")&& MoneyLogic.Money>=2000) {
        DetonationCustom.allowedExp++;
        MoneyLogic.Money-=2000;
GUI.enabled = false;
NinethPurchased = true;
    }
    if(NinethPurchased)
    {
        GUI.Box(Rect(925,250,100,20),"Cost: $2,000");
    if (GUI.Button (Rect (325,250,600,20), "Wide")&& MoneyLogic.Money>=2000) {
        DetonationCustom.allowedExp++;
        MoneyLogic.Money-=2000;
GUI.enabled = false;
TenthPurchased = true;
    }
    if(TenthPurchased)
    {
        GUI.Box(Rect(925,270,100,20),"Cost: $2,750");
    if (GUI.Button (Rect (325,270,600,20), "Chunks")&& MoneyLogic.Money>=2750) {
        DetonationCustom.allowedExp++;
        MoneyLogic.Money-=2750;
GUI.enabled = false;
EleventhPurchased = true;
    }
    if(EleventhPurchased)
    {
        GUI.Box(Rect(925,290,100,20),"Cost: $2,750");
    if (GUI.Button (Rect (325,290,600,20), "Insanity")&& MoneyLogic.Money>=2750) {
        DetonationCustom.allowedExp++;
        MoneyLogic.Money-=2750;
GUI.enabled = false;
TwelvethPurchased = true;
    }
    if(TwelvethPurchased)
    {
        GUI.Box(Rect(925,340,100,20),"Cost: $2,750");
    if (GUI.Button (Rect (325,340,600,50), "MushroomCloud")&& MoneyLogic.Money>=2750) {
        DetonationCustom.allowedExp++;
        MoneyLogic.Money-=2750;
GUI.enabled = false;
ThirteenthPurchased = true;
    }
    if(ThirteenthPurchased)
    {
        GUI.Box(Rect(925,390,100,20),"Cost: $20,000");
    if (GUI.Button (Rect (325,390,600,50), "NUKE!")&& MoneyLogic.Money>=20000) {
        DetonationCustom.allowedExp++;
        MoneyLogic.Money-=20000;
GUI.enabled = false;
FourteenthPurchased = true;
    }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    if (GUI.Button (Rect (325,550,600,100), "Back")) {
    Application.LoadLevel(2);
    }
}

Thanks For any help!

Most likely it's because you're loading another level for the back button, so all your variables in your script are going to vanish along with the script. What you could try is making all of the variables at the top static. That'll keep them persisted through the level change, though does limit the use of the script to just one player