string BANKTOKEN_1MILL = "banktoken1000000";
string BANKTOKEN_250K = "banktoken250000";
string BANKTOKEN_100K = "banktoken100000";
string BANKTOKEN_10K = "banktoken10000";
string BANKTOKEN_1K = "banktoken1000";

string FormatMoneyString(string Money)
{
    string sFormated = Money;
    int    iLen      = GetStringLength(Money);
    int    iPos      = 3;
    int    iOff      = 0;

    while (iPos<iLen)
    {
        sFormated = GetStringLeft(sFormated, GetStringLength(Money)-iPos) + "," + GetStringRight(sFormated, (iPos + iOff));
        iOff++;
        iPos = iPos + 3;
    }

    return sFormated;
}

int TokenToGold(string Token)
{
    int iGold = 0;

    if      (Token == BANKTOKEN_1MILL) iGold = 1000000;
    else if (Token == BANKTOKEN_250K) iGold = 250000;
    else if (Token == BANKTOKEN_100K) iGold = 100000;
    else if (Token == BANKTOKEN_10K) iGold = 10000;
    else if (Token == BANKTOKEN_1K) iGold = 1000;
    else iGold = 0;

    return iGold;
}

int HasItemInInventory(string ItemResRef, object PC, int DestroyItem)
{
    object oItem     = GetFirstItemInInventory(PC);
    int    iFound    = FALSE;

    // check for normal items
    while (oItem != OBJECT_INVALID && iFound == FALSE)
    {
        if (GetResRef(oItem) == ItemResRef)
        {
            if (DestroyItem == TRUE)
            {
                DestroyObject(oItem, 0.0f);
            }
            iFound = TRUE;
        }
        else
        {
            oItem = GetNextItemInInventory(PC);
        }
    }
    return iFound;
}

void ExchangeAllGoldForTokens(object PC)
{
    while (GetGold(PC)>= 1000000)
    {
        TakeGoldFromCreature(1000000, PC);
        CreateItemOnObject(BANKTOKEN_1MILL, PC);
    }

    while (GetGold(PC)>= 250000)
    {
        TakeGoldFromCreature(250000, PC);
        CreateItemOnObject(BANKTOKEN_250K, PC);
    }

    while (GetGold(PC)>= 100000)
    {
        TakeGoldFromCreature(100000, PC);
        CreateItemOnObject(BANKTOKEN_100K, PC);
    }

    while (GetGold(PC)>= 10000)
    {
        TakeGoldFromCreature(10000, PC);
        CreateItemOnObject(BANKTOKEN_10K, PC);
    }

    while (GetGold(PC)>= 1000)
    {
        TakeGoldFromCreature(1000, PC);
        CreateItemOnObject(BANKTOKEN_1K, PC);
    }
}

void GetSingleToken(object oPC, string Token)
{
    int iGold = TokenToGold(Token);

    if (iGold>0)
    {
        TakeGoldFromCreature(iGold, oPC);
        CreateItemOnObject(Token, oPC);
    }
}


void ExchangeTokenForGold(object PC, string Token)
{
    int iGold = TokenToGold(Token);

    if (HasItemInInventory(Token, PC, TRUE))
    {
        GiveGoldToCreature(PC, iGold);
    }
}

void ExampleSwitch()
{
/*    int iTest = 3;

    switch (iTest)
    {
        case 1:
            ExchangeAllTokensForGold(OBJECT_INVALID);
            break;
        default:
            ExchangeAllTokensForGold(OBJECT_INVALID);
            break;
    }
*/
}