


//                                        updated: 05-31-2009
//              JS_BestDebtClockUSA.js
//          ©2007, Steve Conover
//
//  by Steve Conover, Sr. with major, big-time ghost-writing
//  assistance from Steve Conover, Jr., April 2006.   

UPDATE_INTERVAL_MILLIS = 499;
 var currdate = new Date();    
    var startdate = currdate.getTime();
function updateForever() {
  DebtClockSnapshot();
  setTimeout(function() {updateForever();}, UPDATE_INTERVAL_MILLIS);
}

function DebtClockSnapshot() {

//========================================================
//    This section to be updated with new data each month,
//    as soon as the BEA releases the latest GDP
//    estimates, and the 2-quarter GDP growth model
//    is run to generate GDP growth per quarter.
//    (Each month's BEA estimate of recent-quarter GDP 
//    yields a new estimate of quarterly GDP growth.)
//
//    Note: When the Public Debt is published for the
//    end of a new month, the "LastBEA" date will be 
//    advanced to that date, and the GDP will be estimated
//    for that date using the most recent growth rate.
//========================================================
//    var currdate = new Date();    
//    var startdate = currdate.getTime();
//        
//    var test = 1249663358509;
      
 
    
    var LastBEA= startdate;
//window.alert(startdate);


      var LastNominalGdpBillion= 14036.8;
      var LastNominalGdpPctGrowthPerQuarter= -1.127;

      var LastTotDebtBillion= .009;
      var LastTotDebtPctGrowthPerQuarter= 5.205;

      var LastPubHeldDebtBillion= 6930.8;
      var LastPubHeldDebtPctGrowthPerQuarter= 8.135;
//========================================================
//    Calculations and output
//========================================================
      // "BEAmilliTime" is the millisecond date of the 
      // last official GDP estimate by the BEA.  The most 
      // recent quarter GDP was forecasted forward to 
      // that date, and the Debt numbers (Gross and 
      // Publicly-held) are as of that date, from the 
      // Bureau of Public Debt.

      var lbrk= "<br>";
      var BEAmilliTime= 1 + LastBEA;// LastBEA;
      
      var NowData= new Date();

      var LNGB= LastNominalGdpBillion;
      var LNGPG= LastNominalGdpPctGrowthPerQuarter;
      var LTDB= LastTotDebtBillion;
      var LTDPG= LastTotDebtPctGrowthPerQuarter;
      var LPDB= LastPubHeldDebtBillion;
      var LPDPG= LastPubHeldDebtPctGrowthPerQuarter;
      var DaysPerQtr= 91.25;

      var LastNominalGdp= LNGB*1000000000;
      var GdpPerQtr= LastNominalGdp*(LNGPG/100);
      var GdpPerMillisec= GdpPerQtr/DaysPerQtr/24/60/60/1000;

      var LastTotDebt= LTDB;
      var TdebtPerQtr= LastTotDebt*(LTDPG/100);
      var TdebtPerMillisec= .02257;

      var LastPubDebt= LPDB*1000000000;
      var PdebtPerQtr= LastPubDebt*(LPDPG/100);
      var PdebtPerMillisec= PdebtPerQtr/DaysPerQtr/24/60/60/1000;

      var LNG= LastNominalGdp;
      var LTD= LastTotDebt;
      var LPD= LastPubDebt;

      var TDPMs= TdebtPerMillisec;
      var PDPMs= PdebtPerMillisec;

      var NowMilliTime= NowData.getTime();
      var MilliSinceLastGdp= NowMilliTime-BEAmilliTime;
// window.alert(NowMilliTime);
//window.alert(BEAmilliTime );
      var GPMs= GdpPerMillisec;
      var GdpNow= LNG+(GPMs*MilliSinceLastGdp);
      var TdebtNow= LTD+(TDPMs*MilliSinceLastGdp);
      var TdebtGdpRatio= 100*TdebtNow/GdpNow;
      var PdebtNow= LPD+(PDPMs*MilliSinceLastGdp);
      var PdebtGdpRatio= 100*PdebtNow/GdpNow;

      var GdpTril= GdpNow/1000000000000;
      var TdebtTril= TdebtNow/1000000000000;
      var PdebtTril= PdebtNow/1000000000000;
      var ClockTitle= "dollars gained from tourism in St. Johns County as you read this page!";
      var ClockTitle2= "";
      var ClockTitle3= "";
     var cAuthor= "";
//    var Divider1= "Tot.Debt =";
//    var Divider2= "GDP =";
//    var Divider3= "TotDebt-to-GDP Ratio";
//    var Divider4= "Pub.Debt =";
//    var Divider5= "PubDebt-to-GDP Ratio";

//    document.getElementById("divide").innerHTML = Divider1;
//    document.getElementById("divide2").innerHTML = Divider2;
//    document.getElementById("divide3").innerHTML = Divider3;
//    document.getElementById("divide4").innerHTML = Divider4;
//    document.getElementById("divide5").innerHTML = Divider5;
      document.getElementById("CTitle").innerHTML = ClockTitle;
      document.getElementById("CTitle2").innerHTML = ClockTitle2;
      document.getElementById("CTitle3").innerHTML = ClockTitle3;
      document.getElementById("cSO").innerHTML = cAuthor;
//    document.getElementById("gdp_now").innerHTML =
//          to2TDollars(GdpNow);
      document.getElementById("tdebt_now").innerHTML =
            to1TDollars(TdebtNow);
//    document.getElementById("tdebt_to_gdp").innerHTML =
//          toPercent(TdebtGdpRatio);
//    document.getElementById("pdebt_now").innerHTML =
//          to1TDollars(PdebtNow);
//    document.getElementById("pdebt_to_gdp").innerHTML =
//          toPercent(PdebtGdpRatio);
      }
//--------------------------------------
function to2TDollars(number) {
     var str = "" + number.toFixed(2);
     var integerPart = str.split(".")[0];
     var decimalPart = str.split(".")[1];
     var integerPartWithCommas = "";
     var len = integerPart.length;

  for (var i=len-1; i>=0; i--) {
       var positionLeftFromDecimalPoint = (len-1-i);
       if (positionLeftFromDecimalPoint > 0 &&

    positionLeftFromDecimalPoint % 3 == 0) {
         integerPartWithCommas = "," + integerPartWithCommas;
    }

       integerPartWithCommas = integerPart.charAt(i) + integerPartWithCommas;
  }

     return "$" + integerPartWithCommas + "." + decimalPart;
}
//--------------------------------------
function to1TDollars(number) {
     var str = "" + number.toFixed(2);
     var integerPart = str.split(".")[0];
     var decimalPart = str.split(".")[1];
     var integerPartWithCommas = "";
     var len = integerPart.length;

  for (var i=len-1; i>=0; i--) {
       var positionLeftFromDecimalPoint = (len-1-i);
       if (positionLeftFromDecimalPoint > 0 &&

    positionLeftFromDecimalPoint % 3 == 0) {
         integerPartWithCommas = "," + integerPartWithCommas;
    }

       integerPartWithCommas = integerPart.charAt(i) + integerPartWithCommas;
  }

     return "$ " + integerPartWithCommas + "." + decimalPart;
}
//--------------------------------------
function toPercent(number) {
     var str = "" + number.toFixed(8);
     var integerPart = str.split(".")[0];
     var decimalPart = str.split(".")[1];
     var integerPartWithCommas = "";
     var len = integerPart.length;

  for (var i=len-1; i>=0; i--) {
       var positionLeftFromDecimalPoint = (len-1-i);
       if (positionLeftFromDecimalPoint > 0 &&

    positionLeftFromDecimalPoint % 3 == 0) {
         integerPartWithCommas = "" + integerPartWithCommas;
    }

       integerPartWithCommas = integerPart.charAt(i) + integerPartWithCommas;
  }

     return "= "+integerPartWithCommas+"."+decimalPart+"%";
}
//========================================================

