    //Input Variables
    var iMailClass = '';
    var iPieceType = '';
    var iPieceWeight = '';
    var iNonprofitRate = '';
    var iPieceCount = '';
    var iMailingCount = '';

    //First Class Rate Table
    //Letter
    var FC1OZLSP = 0.420;
    var FC1OZLPresort = 0.394;
    var FC1OZLMADC = 0.369; 
    var FC1OZLAADC = 0.351; 
    var FC1OZL3DG = 0.346; 
    var FC1OZL5DG = 0.324; 

    var FC2OZLSP = 0.590;
    var FC2OZLPresort = 0.519; 
    var FC2OZLMADC = 0.494; 
    var FC2OZLAADC = 0.476; 
    var FC2OZL3DG = 0.471; 
    var FC2OZL5DG = 0.449; 

    var FC3OZLSP = 0.760;
    var FC3OZLPresort = 0.644; 
    var FC3OZLMADC = 0.619; 
    var FC3OZLAADC = 0.601; 
    var FC3OZL3DG = 0.596; 
    var FC3OZL5DG = 0.574; 

    var FC35OZLSP = 0.930;
    var FC35OZLPresort = 0.769; 
    var FC35OZLMADC = 0.744; 
    var FC35OZLAADC = 0.726; 
    var FC35OZL3DG = 0.721; 
    var FC35OZL5DG = 0.699; 
    //Flats
    var FC1OZFSP = 0.830;
    var FC1OZFPresort = 0.727; 
    var FC1OZFMADC = 0.702; 
    var FC1OZFAADC = 0.570; 
    var FC1OZF3DG = 0.479; 
    var FC1OZF5DG = 0.364; 

    var FC2OZFSP = 1.00;
    var FC2OZFPresort = 0.897; 
    var FC2OZFMADC = 0.872; 
    var FC2OZFAADC = 0.740; 
    var FC2OZF3DG = 0.649; 
    var FC2OZF5DG = 0.534; 

    var FC3OZFSP = 1.170;
    var FC3OZFPresort = 1.067; 
    var FC3OZFMADC = 1.042; 
    var FC3OZFAADC = 0.910; 
    var FC3OZF3DG = 0.819; 
    var FC3OZF5DG = 0.704; 

    var FC4OZFSP = 1.340;
    var FC4OZFPresort = 1.237; 
    var FC4OZFMADC = 1.212; 
    var FC4OZFAADC = 1.080; 
    var FC4OZF3DG = 0.989; 
    var FC4OZF5DG = 0.874; 

    var FC5OZFSP = 1.510;
    var FC5OZFPresort = 1.407; 
    var FC5OZFMADC = 1.382; 
    var FC5OZFAADC = 1.250; 
    var FC5OZF3DG = 1.159; 
    var FC5OZF5DG = 1.044; 

    var FC6OZFSP = 1.680;
    var FC6OZFPresort = 1.577; 
    var FC6OZFMADC = 1.552; 
    var FC6OZFAADC = 1.420; 
    var FC6OZF3DG = 1.329; 
    var FC6OZF5DG = 1.214; 

    var FC7OZFSP = 1.850;
    var FC7OZFPresort = 1.747; 
    var FC7OZFMADC = 1.722; 
    var FC7OZFAADC = 1.590; 
    var FC7OZF3DG = 1.499; 
    var FC7OZF5DG = 1.384; 

    var FC8OZFSP = 2.020;
    var FC8OZFPresort = 1.917; 
    var FC8OZFMADC = 1.892; 
    var FC8OZFAADC = 1.760; 
    var FC8OZF3DG = 1.669; 
    var FC8OZF5DG = 1.554; 

    var FC9OZFSP = 2.190;
    var FC9OZFPresort = 2.087; 
    var FC9OZFMADC = 2.062; 
    var FC9OZFAADC = 1.930; 
    var FC9OZF3DG = 1.839; 
    var FC9OZF5DG = 1.724; 

    var FC10OZFSP = 2.360;
    var FC10OZFPresort = 2.257; 
    var FC10OZFMADC = 2.232; 
    var FC10OZFAADC = 2.100; 
    var FC10OZF3DG = 2.009; 
    var FC10OZF5DG = 1.894; 

    var FC11OZFSP = 2.530;
    var FC11OZFPresort = 2.427; 
    var FC11OZFMADC = 2.402; 
    var FC11OZFAADC = 2.270; 
    var FC11OZF3DG = 2.179; 
    var FC11OZF5DG = 2.064; 

    var FC12OZFSP = 2.700;
    var FC12OZFPresort = 2.597; 
    var FC12OZFMADC = 2.572; 
    var FC12OZFAADC = 2.440; 
    var FC12OZF3DG = 2.349; 
    var FC12OZF5DG = 2.234; 

    var FC13OZFSP = 2.870;
    var FC13OZFPresort = 2.767; 
    var FC13OZFMADC = 2.742; 
    var FC13OZFAADC = 2.610; 
    var FC13OZF3DG = 2.519; 
    var FC13OZF5DG = 2.404; 

    //Standard Mail Rates 
    //Letter
    var SMLNAMADC = 0.257;
    var SMLNAAADC = 0.244;
    var SMLNA3DG = 0.241;
    var SMLNA5DG = 0.225; 
    var SMLNECRB = 0.234; 
    var SMLNECRHD = 0.190; 
    var SMLNECRSAT = 0.179; 

    var SMLBMCAMADC = 0.224;
    var SMLBMCAAADC = 0.211;
    var SMLBMCA3DG = 0.208;
    var SMLBMCA5DG = 0.192; 
    var SMLBMCECRB = 0.201; 
    var SMLBMCECRHD = 0.157; 
    var SMLBMCECRSAT = 0.146; 

    var SMLSCFAAADC = 0.202;
    var SMLSCFA3DG = 0.199;
    var SMLSCFA5DG = 0.183; 
    var SMLSCFECRB = 0.192; 
    var SMLSCFECRHD = 0.148; 
    var SMLSCFECRSAT = 0.137; 

    //Over 3.3 ounces
    var SMLHNAMADC = 0.733;
    var SMLHNAAADC = 0.733;
    var SMLHNA3DG = 0.733;
    var SMLHNA5DG = 0.733; 
    var SMLHNECRB = 0.635; 
    var SMLHNECRHD = 0.604; 
    var SMLHNECRSAT = 0.604; 

    var SMLHBMCAMADC = 0.574;
    var SMLHBMCAAADC = 0.574;
    var SMLHBMCA3DG = 0.574;
    var SMLHBMCA5DG = 0.574; 
    var SMLHBMCECRB = 0.476; 
    var SMLHBMCECRHD = 0.445; 
    var SMLHBMCECRSAT = 0.445; 

    var SMLHSCFAAADC = 0.530;
    var SMLHSCFA3DG = 0.530;
    var SMLHSCFA5DG = 0.530; 
    var SMLHSCFECRB = 0.432; 
    var SMLHSCFECRHD = 0.401; 
    var SMLHSCFECRSAT = 0.401; 

    var SMLPPPAMADC = 0.106;
    var SMLPPPAAADC = 0.106;
    var SMLPPPA3DG = 0.106;
    var SMLPPPA5DG = 0.106;
    var SMLPPPECRB = 0.106;
    var SMLPPPECRHD = 0.106;
    var SMLPPPECRSAT = 0.106;

    var SMLNNNMADC = 0.561;
    var SMLNNNAADC = 0.461;
    var SMLNNN3DG = 0.438;
    var SMLNNN5DG = 0.343;
    var SMLNNMMADC = 0.271;
    var SMLNNMAADC = 0.258;      

    var SMLNBMCNMADC = 0.528;
    var SMLNBMCNAADC = 0.428;
    var SMLNBMCN3DG = 0.405;
    var SMLNBMCN5DG = 0.310;
    var SMLNBMCMMADC = 0.238;
    var SMLNBMCMAADC = 0.225;      

    var SMLNSCFNADC = 0.419;
    var SMLNSCFN3DG = 0.396;
    var SMLNSCFN5DG = 0.301;
    var SMLNSCFMAADC = 0.216;      

    //Flats
    //min
    var SMFLSCF5DG = 0.297;
    //max
    var SMFLOMADC = 0.489;
    //End Flats


    //Nonprofit
    //Letters
    var SMNLNAMADC = 0.159;
    var SMNLNAAADC = 0.146;
    var SMNLNA3DG = 0.143;
    var SMNLNA5DG = 0.127; 
    var SMNLNECRB = 0.159; 
    var SMNLNECRHD = 0.119; 
    var SMNLNECRSAT = 0.108; 

    var SMNLBMCAMADC = 0.126;
    var SMNLBMCAAADC = 0.113;
    var SMNLBMCA3DG = 0.110;
    var SMNLBMCA5DG = 0.094; 
    var SMNLBMCECRB = 0.126; 
    var SMNLBMCECRHD = 0.086; 
    var SMNLBMCECRSAT = 0.075; 

    var SMNLSCFAAADC = 0.104;
    var SMNLSCFA3DG = 0.101;
    var SMNLSCFA5DG = 0.085; 
    var SMNLSCFECRB = 0.117; 
    var SMNLSCFECRHD = 0.077; 
    var SMNLSCFECRSAT = 0.066; 

    //Over 3.3 ounces
    var SMNLHNAMADC = 0.632;
    var SMNLHNAAADC = 0.632;
    var SMNLHNA3DG = 0.632;
    var SMNLHNA5DG = 0.632; 
    var SMNLHNECRB = 0.446; 
    var SMNLHNECRHD = 0.415; 
    var SMNLHNECRSAT = 0.415; 

    var SMNLHBMCAMADC = 0.473;
    var SMNLHBMCAAADC = 0.473;
    var SMNLHBMCA3DG = 0.473;
    var SMNLHBMCA5DG = 0.473; 
    var SMNLHBMCECRB = 0.287; 
    var SMNLHBMCECRHD = 0.256; 
    var SMNLHBMCECRSAT = 0.256; 

    var SMNLHSCFAAADC = 0.429;
    var SMNLHSCFA3DG = 0.429;
    var SMNLHSCFA5DG = 0.429; 
    var SMNLHSCFECRB = 0.243; 
    var SMNLHSCFECRHD = 0.212; 
    var SMNLHSCFECRSAT = 0.212; 

    var SMNLPPPAMADC = 0.029;
    var SMNLPPPAAADC = 0.016;
    var SMNLPPPA3DG = 0.013;
    var SMNLPPPA5DG = 0.-0.003;
    var SMNLPPPECRB = 0.067;
    var SMNLPPPECRHD = 0.033;
    var SMNLPPPECRSAT = 0.022;

    var SMNLNNNMADC = 0.463;
    var SMNLNNNAADC = 0.363;
    var SMNLNNN3DG = 0.340;
    var SMNLNNN5DG = 0.245;
    var SMNLNNMMADC = 0.173;
    var SMNLNNMAADC = 0.160;      

    var SMNLNBMCNMADC = 0.430;
    var SMNLNBMCNAADC = 0.330;
    var SMNLNBMCN3DG = 0.307;
    var SMNLNBMCN5DG = 0.212;
    var SMNLNBMCMMADC = 0.140;
    var SMNLNBMCMAADC = 0.127;      

    var SMNLNSCFNADC = 0.321;
    var SMNLNSCFN3DG = 0.298;
    var SMNLNSCFN5DG = 0.203;
    var SMNLNSCFMAADC = 0.118;      
    //End Letters
    //Flats
    //min
    var SMFNLSCF5DG = 0.164;
    //max
    var SMFNLOMADC = 0.489;
    //End Flats

    //End Flats
    //End Nonprofit

    //Message to display if there is a problem.
    var message='The piece must be mailed at Flat size rates.';
    var mustBeAsFCFlat = false;
    var mustBeAsSMFlat = false;
    function Button1_onclick() 
    {
        var debug = false;
        iMailClass=document.getElementById('MailClass').selectedIndex;
        iPieceType=document.getElementById('PieceType').selectedIndex;
        iPieceWeight=document.getElementById('PieceWeight').value;
        iNonprofitRate=document.getElementById('NonprofitRate').getAttribute("checked");
        iPieceCount=document.getElementById('PieceCount').value;
        iMailingCount=document.getElementById('MailingCount').value;

        var fcError = "FCError"

        //Validate Minimums
        switch(iMailClass)
        {
            case 0:
                if(iPieceCount<200)
                {
                    if((iPieceCount*(iPieceWeight/16))<50)
                    {
                        alert("When mailing at Standard Mail rates with less than 200 pieces you must have at least 50 pounds of mail.");
                        return;
                    }
                    else
                    {
                        break;
                    }
                    alert("When mailing at Standard Mail rates you must have at least 200 mail pieces or 50 pounds of mail.");
                    return;
                }
                break;
            case 1:
                if(iPieceCount<500)
                {
                    alert("When mailing at First Class Mail rates you must have at least 500 mail pieces.");
                    return;
                }
                break;
        }   
        
        //Calculate Full Postage Rates
        mustBeAsFCFlat = false;
        var FCSinglePieceRate = GetRate(1,iPieceType,iPieceWeight,"SinglePiece");
            if(FCSinglePieceRate==null)
                return;
                
        var pieceTotalCost = FCSinglePieceRate;
        var mailingTotalCost = (FCSinglePieceRate*iPieceCount);
        var yearlyTotalCost = (mailingTotalCost*iMailingCount);
        
        if(iPieceCount>0)
            mailingTotalCost = RoundDecimal(mailingTotalCost,2);
            
        if(iMailingCount>0)
            yearlyTotalCost = RoundDecimal(yearlyTotalCost,2)
        
        
        document.getElementById('FCFullPerPieceRate').innerHTML = FormatNumber(pieceTotalCost,"$");
        document.getElementById('PostagePerMailing').innerHTML = FormatNumber(mailingTotalCost,"$");
        document.getElementById('PostagePerYear').innerHTML = FormatNumber(yearlyTotalCost,"$");
        
        //Display Presorted Min Rates
        var minRate = GetRate(iMailClass,iPieceType,iPieceWeight,"min",iNonprofitRate);
        var presortedMailingMinCost = (minRate*iPieceCount);
        var presortedYearlyMinCost = (presortedMailingMinCost*iMailingCount);
        if(minRate==null)
            return;

        //Display Presorted Max Rates
        var maxRate = GetRate(iMailClass,iPieceType,iPieceWeight,"max",iNonprofitRate);
        var presortedMailingMaxCost = (maxRate*iPieceCount);
        var presortedYearlyMaxCost = (presortedMailingMaxCost*iMailingCount);
        
        if(maxRate==null)
            return;
            
        //Display Comparison Figures
        var savingPieceMinAmount = RoundDecimal((FCSinglePieceRate - minRate),3);
        var savingMailingMinCost = (savingPieceMinAmount*iPieceCount);
        var savingYearlyMinCost = ((savingPieceMinAmount*iPieceCount)*iMailingCount);
        var savingPieceMaxAmount = RoundDecimal((FCSinglePieceRate-maxRate),3);    
        var savingMailingMaxCost = (savingPieceMaxAmount*iPieceCount);
        var savingYearlyMaxCost = ((savingPieceMaxAmount*iPieceCount)*iMailingCount);
        
        
        var savingPieceMaxPercent = RoundDecimal(((1-(FCSinglePieceRate - savingPieceMinAmount)/FCSinglePieceRate)*100),0);
        var savingPieceMinPercent = RoundDecimal(((1-(FCSinglePieceRate - savingPieceMaxAmount)/FCSinglePieceRate)*100),0);
                
        if(iPieceCount>0)
            savingMailingMinCost = RoundDecimal(savingMailingMinCost,2);
        if(iMailingCount>0)
            savingYearlyMinCost = RoundDecimal(savingYearlyMinCost,2)
        if(iPieceCount>0)
            savingMailingMaxCost = RoundDecimal(savingMailingMaxCost,2);
        if(iMailingCount>0)
            savingYearlyMaxCost = RoundDecimal(savingYearlyMaxCost,2)
        
        document.getElementById('SavingsPerPieceRange').innerHTML = FormatNumber(RoundDecimal(minRate,3),"$") + " - " + FormatNumber(RoundDecimal(maxRate,3),"$");
        document.getElementById('SavingsPerMailingRange').innerHTML = FormatNumber(savingMailingMaxCost,"$") + " - " + FormatNumber(savingMailingMinCost,"$");
        document.getElementById('SavingsPerYearRange').innerHTML = FormatNumber(savingYearlyMaxCost,"$") + " - " + FormatNumber(savingYearlyMinCost,"$");
        
        var savingmessage = "Using presort software could save you <b>" + savingPieceMinPercent + "</b>-<b>" + savingPieceMaxPercent + "%</b>!";
        document.getElementById('SavingsResultDescription').innerHTML = savingmessage;
                
        if(mustBeAsFCFlat)
        {
            document.getElementById("FCPieceError").innerHTML = message;
        }
        else
        {
            document.getElementById("FCPieceError").innerHTML = "";
        }
        
        if(savingYearlyMaxCost>savingMailingMaxCost)
        {
            var SavingsPerYearCost = document.getElementById( "SavingsPerYearRange");
            SavingsPerYearRange.style.color="#FFFFFF";
        }
        else
        {
            
        }
        
    }

    function GetRate(mailclassindex,piecetypeindex,weight,level,nonprofit)
    { 
        var piecetype='';
        var mailclass='';
        var pieceweight=0;
        
        switch(piecetypeindex)
        {
            case 0:
                piecetype = "Letter";
                break;
            case 1:
                piecetype = "Flat";
                break;
            case 2:
                piecetype = "PostCard";
                break;
        }
            
        switch(mailclassindex)
        {
            case 0:
                mailclass = "StandardMail";
                break;
            case 1:
                mailclass = "FirstClassMail";
                break;
        }    
        
        //alert('Mail Class Index:' + mailclassindex);
        //alert('Mail Class:' + mailclass);
              
        var rate=0.000;
            
        //Get the rounded weight
        if(weight<1.001) pieceweight=1;
        else if(weight>.999 && weight<2.001) pieceweight=2;
        else if(weight>1.999 && weight<3.001) pieceweight=3;
        else if((weight>2.9999 && weight<3.3001)&&(mailclass=="StandardMail")) pieceweight=3.3;
        else if((weight>2.9999 && weight<3.5001)&&(mailclass=="FirstClassMail"))
            { if(piecetype=="Letter") pieceweight=3.5;else pieceweight=4;}
        else if(weight>2.999 && weight<4.001) pieceweight=4;
        else if(weight>3.999 && weight<5.001) pieceweight=5;
        else if(weight>4.999 && weight<6.001) pieceweight=6;
        else if(weight>5.999 && weight<7.001) pieceweight=7;
        else if(weight>6.999 && weight<8.001) pieceweight=8;
        else if(weight>7.999 && weight<9.001) pieceweight=9;
        else if(weight>8.999 && weight<10.001) pieceweight=10;
        else if(weight>9.999 && weight<11.001) pieceweight=11;
        else if(weight>10.999 && weight<12.001) pieceweight=12;
        else if(weight>11.999 && weight<13.001) pieceweight=13;
        else if(weight>12.999 && weight<14.001) pieceweight=14;
        else if(weight>13.999 && weight<15.001) pieceweight=15;
        else if(weight>14.999 && weight<16.001) pieceweight=16;
        else if(weight>16) 
        {
            alert("This calculator does not support weights over 16 ounces");
            return null;
        }
        
        //alert('Piece Weight:' + pieceweight); 
        
        switch(mailclass)
        {
            case "StandardMail":
                if(pieceweight<3.30001)
                {
                    if(piecetype=="Letter")
                    {
                        switch(level)
                        {
                            case "min":
                                if(nonprofit)
                                    return SMNLSCFA5DG;
                                else

                                    return SMLSCFA5DG;    
                            break;
                            
                            case "max":
                                if(nonprofit)
                                    return SMNLNAMADC;
                                else
                                    return SMLNAMADC;
                                break;
                        }
                    }
                    else if(piecetype=="Flat")
                    {
                        switch(level)
                        {
                            case "min":
                                if(nonprofit)
                                    return SMFNLSCF5DG;
                                else
                                    return SMFLSCF5DG;    
                                break;

                            case "max":
                                if(nonprofit)
                                    return SMFNLOMADC;
                                else
                                    return SMFLOMADC;
                                break;
                        }
                    }
                }
                else if((weight>3.300)&&(weight<3.5001))
                {
                    //Calcutae Heavey Letter and Flat Rates
                    if(piecetype=="Letter")
                    {
                        switch(level)
                        {
                            case "min":
                                if(nonprofit)
                                {
                                    //Add piece charge and pound charge
                                    rate = 0.033 + poundrate(weight,0.212);
                                    return rate
                                }
                                else
                                {
                                    //Add piece charge and pound charge
                                    rate = 0.065 + poundrate(weight,0.401);
                                    return rate
                                }
                            break;
                            
                            case "max":
                                if(nonprofit)
                                {
                                    //Add piece charge and pound charge
                                    rate = 0.029 + poundrate(weight,0.632);
                                    return rate
                                }
                                else
                                {
                                    //Add piece charge and pound charge
                                    rate = 0.106 + poundrate(weight,0.733);
                                    return rate
                                }
                                break;
                        }
                    }
                    else if(piecetype=="Flat")
                    {
                        switch(level)
                        {
                            case "min":
                                if(nonprofit)
                                {
                                    //Add piece charge and pound charge
                                    rate = 0.093 + poundrate(weight,0.198);
                                    return rate
                                }
                                else
                                {
                                    //Add piece charge and pound charge
                                    rate = 0.124 + poundrate(weight,0.387);
                                    return rate
                                }
                                break;

                            case "max":
                                if(nonprofit)
                                {
                                    //Add piece charge and pound charge
                                    rate = 0.209 + poundrate(weight,0.632);
                                    return rate
                                }
                                else
                                {
                                    //Add piece charge and pound charge
                                    rate = 0.402 + poundrate(weight,0.733);
                                    return rate
                                }
                                break;
                        }
                    }    
                }
                //Apply Flat Prices
                else if((weight>3.5) && (weight<16.001))
                {
                    if(piecetype=="Letter")
                    {
                        mustBeAsSMFlat = true;
                    }
                    else
                    {
                        mustBeAsSMFlat = false;
                    }
                    
                    switch(level)
                    {
                        case "min":
                            if(nonprofit)
                            {
                                //Add piece charge and pound charge
                                rate = 0.093 + poundrate(weight,0.198);
                                return rate
                            }
                            else
                            {
                                //Add piece charge and pound charge
                                rate = 0.124 + poundrate(weight,0.387);
                                return rate
                            }
                            break;

                        case "max":
                            if(nonprofit)
                            {
                                //Add piece charge and pound charge
                                rate = 0.209 + poundrate(weight,0.632);
                                return rate
                            }
                            else
                            {
                                //Add piece charge and pound charge
                                rate = 0.402 + poundrate(weight,0.733);
                                return rate
                            }
                            break;
                    }
                }
                break;
            case "FirstClassMail":
                switch (pieceweight)
                {
                    case 1:
                        if(piecetype=="Letter")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC1OZLSP;
                                    break;
                                case "max":
                                    return FC1OZLPresort;
                                    break;
                                case "min":
                                    return FC1OZL5DG;
                                    break;
                                case "Presort":
                                    return FC1OZLPresort;
                                    break;
                                case "MADC":
                                    return FC1OZLMADC;
                                    break;
                                case "AADC":
                                    return FC1OZLAADC;
                                    break;
                                case "3DG":
                                    return FC1OZL3DG;
                                    break;
                                case "5DG":
                                    return FC1OZL5DG;
                                    break;
                            }
                        }
                        else if(piecetype=="Flat")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC1OZFSP;
                                    break;
                                case "max":
                                    return FC1OZFPresort;
                                    break;
                                case "min":
                                    return FC1OZF5DG;
                                    break;
                                case "Presort":
                                    return FC1OZFPresort;
                                    break;
                                case "MADC":
                                    return FC1OZFMADC;
                                    break;
                                case "AADC":
                                    return FC1OZFAADC;
                                    break;
                                case "3DG":
                                    return FC1OZF3DG;
                                    break;
                                case "5DG":
                                    return FC1OZF5DG;
                                    break;
                            }
                        }
                        break;
                    case 2:
                        if(piecetype=="Letter")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC2OZLSP;
                                    break;
                                case "max":
                                    return FC2OZLPresort;
                                    break;
                                case "min":
                                    return FC2OZL5DG;
                                    break;
                                case "Presort":
                                    return FC2OZLPresort;
                                    break;
                                case "MADC":
                                    return FC2OZLMADC;
                                    break;
                                case "AADC":
                                    return FC2OZLAADC;
                                    break;
                                case "3DG":
                                    return FC2OZL3DG;
                                    break;
                                case "5DG":
                                    return FC2OZL5DG;
                                    break;
                            }
                        }
                        else if(piecetype=="Flat")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC2OZFSP;
                                    break;
                                case "max":
                                    return FC2OZFPresort;
                                    break;
                                case "min":
                                    return FC2OZF5DG;
                                    break;
                                case "Presort":
                                    return FC2OZFPresort;
                                    break;
                                case "MADC":
                                    return FC2OZFMADC;
                                    break;
                                case "AADC":
                                    return FC2OZFAADC;
                                    break;
                                case "3DG":
                                    return FC2OZF3DG;
                                    break;
                                case "5DG":
                                    return FC2OZF5DG;
                                    break;
                            }
                        }
                        break;    
                    case 3:
                        if(piecetype=="Letter")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC3OZLSP;
                                    break;
                                case "max":
                                    return FC3OZLPresort;
                                    break;
                                case "min":
                                    return FC3OZL5DG;
                                    break;
                                case "Presort":
                                    return FC3OZLPresort;
                                    break;
                                case "MADC":
                                    return FC3OZLMADC;
                                    break;
                                case "AADC":
                                    return FC3OZLAADC;
                                    break;
                                case "3DG":
                                    return FC3OZL3DG;
                                    break;
                                case "5DG":
                                    return FC3OZL5DG;
                                    break;
                            }
                        }
                        else if(piecetype=="Flat")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC3OZFSP;
                                    break;
                                case "max":
                                    return FC3OZFPresort;
                                    break;
                                case "min":
                                    return FC3OZF5DG;
                                    break;
                                case "Presort":
                                    return FC3OZFPresort;
                                    break;
                                case "MADC":
                                    return FC3OZFMADC;
                                    break;
                                case "AADC":
                                    return FC3OZFAADC;
                                    break;
                                case "3DG":
                                    return FC3OZF3DG;
                                    break;
                                case "5DG":
                                    return FC3OZF5DG;
                                    break;
                            }
                        }
                        break; 
                    case 3.5:
                            return FC35OZLSP;
                        break;
                    case 4:
                        if(piecetype=="Letter")
                        {
                            mustBeAsFCFlat=true;
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC4OZFSP;
                                    break;
                                case "max":
                                    return FC4OZFPresort;
                                    break;
                                case "min":
                                    return FC4OZF5DG;
                                    break;
                                case "Presort":
                                    return FC4OZFPresort;
                                    break;
                                case "MADC":
                                    return FC4OZFMADC;
                                    break;
                                case "AADC":
                                    return FC4OZFAADC;
                                    break;
                                case "3DG":
                                    return FC4OZF3DG;
                                    break;
                                case "5DG":
                                    return FC4OZF5DG;
                                    break;
                            }
                        }
                        else if(piecetype=="Flat")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC4OZFSP;
                                    break;
                                case "max":
                                    return FC4OZFPresort;
                                    break;
                                case "min":
                                    return FC4OZF5DG;
                                    break;
                                case "Presort":
                                    return FC4OZFPresort;
                                    break;
                                case "MADC":
                                    return FC4OZFMADC;
                                    break;
                                case "AADC":
                                    return FC4OZFAADC;
                                    break;
                                case "3DG":
                                    return FC4OZF3DG;
                                    break;
                                case "5DG":
                                    return FC4OZF5DG;
                                    break;
                            }
                        }
                        break; 
                    case 5:
                        if(piecetype=="Letter")
                        {
                            mustBeAsFCFlat=true;
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC5OZFSP;
                                    break;
                                case "max":
                                    return FC5OZFPresort;
                                    break;
                                case "min":
                                    return FC5OZF5DG;
                                    break;
                                case "Presort":
                                    return FC5OZFPresort;
                                    break;
                                case "MADC":
                                    return FC5OZFMADC;
                                    break;
                                case "AADC":
                                    return FC5OZFAADC;
                                    break;
                                case "3DG":
                                    return FC5OZF3DG;
                                    break;
                                case "5DG":
                                    return FC5OZF5DG;
                                    break;
                            }
                        }                    
                        else if(piecetype=="Flat")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC5OZFSP;
                                    break;
                                case "max":
                                    return FC5OZFPresort;
                                    break;
                                case "min":
                                    return FC5OZF5DG;
                                    break;
                                case "Presort":
                                    return FC5OZFPresort;
                                    break;
                                case "MADC":
                                    return FC5OZFMADC;
                                    break;
                                case "AADC":
                                    return FC5OZFAADC;
                                    break;
                                case "3DG":
                                    return FC5OZF3DG;
                                    break;
                                case "5DG":
                                    return FC5OZF5DG;
                                    break;
                            }
                        }
                        break; 
                    case 6:
                        if(piecetype=="Letter")
                        {
                            mustBeAsFCFlat=true;
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC6OZFSP;
                                    break;
                                case "max":
                                    return FC6OZFPresort;
                                    break;
                                case "min":
                                    return FC6OZF5DG;
                                    break;
                                case "Presort":
                                    return FC6OZFPresort;
                                    break;
                                case "MADC":
                                    return FC6OZFMADC;
                                    break;
                                case "AADC":
                                    return FC6OZFAADC;
                                    break;
                                case "3DG":
                                    return FC6OZF3DG;
                                    break;
                                case "5DG":
                                    return FC6OZF5DG;
                                    break;
                            }
                        }
                        else if(piecetype=="Flat")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC6OZFSP;
                                    break;
                                case "max":
                                    return FC6OZFPresort;
                                    break;
                                case "min":
                                    return FC6OZF5DG;
                                    break;
                                case "Presort":
                                    return FC6OZFPresort;
                                    break;
                                case "MADC":
                                    return FC6OZFMADC;
                                    break;
                                case "AADC":
                                    return FC6OZFAADC;
                                    break;
                                case "3DG":
                                    return FC6OZF3DG;
                                    break;
                                case "5DG":
                                    return FC6OZF5DG;
                                    break;
                            }
                        }
                        break; 
                    case 7:
                        if(piecetype=="Letter")
                        {
                            mustBeAsFCFlat=true;
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC7OZFSP;
                                    break;
                                case "max":
                                    return FC7OZFPresort;
                                    break;
                                case "min":
                                    return FC7OZF5DG;
                                    break;
                                case "Presort":
                                    return FC7OZFPresort;
                                    break;
                                case "MADC":
                                    return FC7OZFMADC;
                                    break;
                                case "AADC":
                                    return FC7OZFAADC;
                                    break;
                                case "3DG":
                                    return FC7OZF3DG;
                                    break;
                                case "5DG":
                                    return FC7OZF5DG;
                                    break;
                            }
                        }
                        else if(piecetype=="Flat")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC7OZFSP;
                                    break;
                                case "max":
                                    return FC7OZFPresort;
                                    break;
                                case "min":
                                    return FC7OZF5DG;
                                    break;
                                case "Presort":
                                    return FC7OZFPresort;
                                    break;
                                case "MADC":
                                    return FC7OZFMADC;
                                    break;
                                case "AADC":
                                    return FC7OZFAADC;
                                    break;
                                case "3DG":
                                    return FC7OZF3DG;
                                    break;
                                case "5DG":
                                    return FC7OZF5DG;
                                    break;
                            }
                        }
                        break; 
                     case 8:
                     if(piecetype=="Letter")
                        {
                            mustBeAsFCFlat=true;
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC8OZFSP;
                                    break;
                                case "max":
                                    return FC8OZFPresort;
                                    break;
                                case "min":
                                    return FC8OZF5DG;
                                    break;
                                case "Presort":
                                    return FC8OZFPresort;
                                    break;
                                case "MADC":
                                    return FC8OZFMADC;
                                    break;
                                case "AADC":
                                    return FC8OZFAADC;
                                    break;
                                case "3DG":
                                    return FC8OZF3DG;
                                    break;
                                case "5DG":
                                    return FC8OZF5DG;
                                    break;
                            }
                        }
                        else if(piecetype=="Flat")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC8OZFSP;
                                    break;
                                case "max":
                                    return FC8OZFPresort;
                                    break;
                                case "min":
                                    return FC8OZF5DG;
                                    break;
                                case "Presort":
                                    return FC8OZFPresort;
                                    break;
                                case "MADC":
                                    return FC8OZFMADC;
                                    break;
                                case "AADC":
                                    return FC8OZFAADC;
                                    break;
                                case "3DG":
                                    return FC8OZF3DG;
                                    break;
                                case "5DG":
                                    return FC8OZF5DG;
                                    break;
                            }
                        }
                        break; 
                        
                     case 9:
                        if(piecetype=="Letter")
                        {
                            mustBeAsFCFlat=true;
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC9OZFSP;
                                    break;
                                case "max":
                                    return FC9OZFPresort;
                                    break;
                                case "min":
                                    return FC9OZF5DG;
                                    break;
                                case "Presort":
                                    return FC9OZFPresort;
                                    break;
                                case "MADC":
                                    return FC9OZFMADC;
                                    break;
                                case "AADC":
                                    return FC9OZFAADC;
                                    break;
                                case "3DG":
                                    return FC9OZF3DG;
                                    break;
                                case "5DG":
                                    return FC9OZF5DG;
                                    break;
                            }
                        }
                        else if(piecetype=="Flat")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC9OZFSP;
                                    break;
                                case "max":
                                    return FC9OZFPresort;
                                    break;
                                case "min":
                                    return FC9OZF5DG;
                                    break;
                                case "Presort":
                                    return FC9OZFPresort;
                                    break;
                                case "MADC":
                                    return FC9OZFMADC;
                                    break;
                                case "AADC":
                                    return FC9OZFAADC;
                                    break;
                                case "3DG":
                                    return FC9OZF3DG;
                                    break;
                                case "5DG":
                                    return FC9OZF5DG;
                                    break;
                            }
                        }
                        break; 
                    case 10:
                        if(piecetype=="Letter")
                        {
                            mustBeAsFCFlat=true;
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC10OZFSP;
                                    break;
                                case "max":
                                    return FC10OZFPresort;
                                    break;
                                case "min":
                                    return FC10OZF5DG;
                                    break;
                                case "Presort":
                                    return FC10OZFPresort;
                                    break;
                                case "MADC":
                                    return FC10OZFMADC;
                                    break;
                                case "AADC":
                                    return FC10OZFAADC;
                                    break;
                                case "3DG":
                                    return FC10OZF3DG;
                                    break;
                                case "5DG":
                                    return FC10OZF5DG;
                                    break;
                            }
                        }
                        else if(piecetype=="Flat")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC10OZFSP;
                                    break;
                                case "max":
                                    return FC10OZFPresort;
                                    break;
                                case "min":
                                    return FC10OZF5DG;
                                    break;
                                case "Presort":
                                    return FC10OZFPresort;
                                    break;
                                case "MADC":
                                    return FC10OZFMADC;
                                    break;
                                case "AADC":
                                    return FC10OZFAADC;
                                    break;
                                case "3DG":
                                    return FC10OZF3DG;
                                    break;
                                case "5DG":
                                    return FC10OZF5DG;
                                    break;
                            }
                        }
                        break; 
                    case 11:
                        if(piecetype=="Letter")
                        {
                            mustBeAsFCFlat=true;
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC11OZFSP;
                                    break;
                                case "max":
                                    return FC11OZFPresort;
                                    break;
                                case "min":
                                    return FC11OZF5DG;
                                    break;
                                case "Presort":
                                    return FC11OZFPresort;
                                    break;
                                case "MADC":
                                    return FC11OZFMADC;
                                    break;
                                case "AADC":
                                    return FC11OZFAADC;
                                    break;
                                case "3DG":
                                    return FC11OZF3DG;
                                    break;
                                case "5DG":
                                    return FC11OZF5DG;
                                    break;
                            }
                        }
                        else if(piecetype=="Flat")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC11OZFSP;
                                    break;
                                case "max":
                                    return FC11OZFPresort;
                                    break;
                                case "min":
                                    return FC11OZF5DG;
                                    break;
                                case "Presort":
                                    return FC11OZFPresort;
                                    break;
                                case "MADC":
                                    return FC11OZFMADC;
                                    break;
                                case "AADC":
                                    return FC11OZFAADC;
                                    break;
                                case "3DG":
                                    return FC11OZF3DG;
                                    break;
                                case "5DG":
                                    return FC11OZF5DG;
                                    break;
                            }
                        }
                        break; 
                    case 12:
                        if(piecetype=="Letter")
                        {
                            mustBeAsFCFlat=true;
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC12OZFSP;
                                    break;
                                case "max":
                                    return FC12OZFPresort;
                                    break;
                                case "min":
                                    return FC12OZF5DG;
                                    break;
                                case "Presort":
                                    return FC12OZFPresort;
                                    break;
                                case "MADC":
                                    return FC12OZFMADC;
                                    break;
                                case "AADC":
                                    return FC12OZFAADC;
                                    break;
                                case "3DG":
                                    return FC12OZF3DG;
                                    break;
                                case "5DG":
                                    return FC12OZF5DG;
                                    break;
                            }
                        }
                        else if(piecetype=="Flat")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC12OZFSP;
                                    break;
                                case "max":
                                    return FC12OZFPresort;
                                    break;
                                case "min":
                                    return FC12OZF5DG;
                                    break;
                                case "Presort":
                                    return FC12OZFPresort;
                                    break;
                                case "MADC":
                                    return FC12OZFMADC;
                                    break;
                                case "AADC":
                                    return FC12OZFAADC;
                                    break;
                                case "3DG":
                                    return FC12OZF3DG;
                                    break;
                                case "5DG":
                                    return FC12OZF5DG;
                                    break;
                            }
                        }
                        break;  
                    case 13:
                        if(piecetype=="Letter")
                        {
                            mustBeAsFCFlat=true;
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC13OZFSP;
                                    break;
                                case "max":
                                    return FC13OZFPresort;
                                    break;
                                case "min":
                                    return FC13OZF5DG;
                                    break;
                                case "Presort":
                                    return FC13OZFPresort;
                                    break;
                                case "MADC":
                                    return FC13OZFMADC;
                                    break;
                                case "AADC":
                                    return FC13OZFAADC;
                                    break;
                                case "3DG":
                                    return FC13OZF3DG;
                                    break;
                                case "5DG":
                                    return FC13OZF5DG;
                                    break;
                            }
                        }
                        else if(piecetype=="Flat")
                        {
                            switch(level)
                            {
                                case "SinglePiece":
                                    return FC13OZFSP;
                                    break;
                                case "max":
                                    return FC13OZFPresort;
                                    break;
                                case "min":
                                    return FC13OZF5DG;
                                    break;
                                case "Presort":
                                    return FC13OZFPresort;
                                    break;
                                case "MADC":
                                    return FC13OZFMADC;
                                    break;
                                case "AADC":
                                    return FC13OZFAADC;
                                    break;
                                case "3DG":
                                    return FC13OZF3DG;
                                    break;
                                case "5DG":
                                    return FC13OZF5DG;
                                    break;
                            }
                        }
                        break;
                        case 14:
                            return 4.60
                        break;
                        case 15:
                            return 4.60
                        break;
                        case 16:
                            return 4.60
                        break;     
                    }
            break;
        }
        return ;
    }
    function poundrate(ounces,poundrate)
    {
        //convert ounces to pounds
        lbs = (ounces/16);
        return (lbs*poundrate);
    }
    function GetMailClass()
    {
        switch (document.getElementById("MailClass").selectedIndex)
        {
            case 0:
                return "StandardMail";
            break;
            case 1:
                return "FirstClassMail";
            break;
        }
    }

    function GetFirstClassSinglePieceRate(pieceweight,piecetypeindex)
    {
        return GetRate("FirstClassMail",pieceweight,piecetypeindex,false);
    }

    function RoundDecimal(number,places)
    {
        var num = new Number(parseFloat(number));
        return num.toFixed(places);
    }

    function FormatNumber(number,format) 
    {
        var Num = number.toString();
        var newNum = "";
        var newNum2 = "";
        var count = 0;
        
        //check for decimal number
        if (Num.indexOf('.') != -1){  //number ends with a decimal point
            if (Num.indexOf('.') == Num.length-1){
                Num += "00";
            }
            if (Num.indexOf('.') == Num.length-2){ //number ends with a single digit
                Num += "0";
            }
            
            var a = Num.split("."); 
            Num = a[0];   //the part we will commify
            var end = a[1] //the decimal place we will ignore and add back later
        }
        else {var end = "00";}  
     
        //this loop actually adds the commas   
        for (var k = Num.length-1; k >= 0; k--){
          var oneChar = Num.charAt(k);
          if (count == 3){
            newNum += ",";
            newNum += oneChar;
            count = 1;
            continue;
          }
          else {
            newNum += oneChar;
            count ++;
          }
       }  //but now the string is reversed!
       
      //re-reverse the string
      for (var k = newNum.length-1; k >= 0; k--){
          var oneChar = newNum.charAt(k);
          newNum2 += oneChar;
      }
       
       if(format.indexOf("$")>-1)
       {
            newNum2 = "$" + newNum2 + "." + end;
       }
       if(format.indexOf("%")>-1)
       {
            newNum2 = newNum2 + "." + end + "%";
       }
       if(format=="")
       {
            newNum2 = newNum2 + "." + end;
       }
       
       // add dollar sign and decimal ending from above
       return newNum2;
    }
    function ValidateNP()
    {
        var selectedClass = document.getElementById('MailClass').selectedIndex;
        if(selectedClass==0)
        {
            document.getElementById('NonprofitRate').disabled = false;
        }
        else
        {
            document.getElementById('NonprofitRate').disabled = true;
        }
        
    }


// ]]>
