/* JavaScript Document
	Gizmo 4: National Accounts:
*/
var GNDwhen = "2009:08:24:11"; //<==Data. Starting time. Interpretted as Washington DC time.
var GND = 11719258192538.99; //<==Data.>>Gross National Debt:			Starting amount
var GNDrate = 1600; //<==Data. Change in $ billion / year
var SSTwhen = "2009:07:31"; //<==Data. 
var SST = 2514242761000; //<==Data.>>Social Security Trust:		Starting amount
var SSTrate = 150.3; //<==Data. Change in $ billion / year
var DHPwhen = "2009:08:24:11"; //<==Data. 
var DHP = 7385460451439.75; //<==Data.>>Debt Held by the Public:	Starting amount
var DHPrate = 1755; //<==Data. Change in $ billion / year
var FRSwhen = "2009:08:20"; //<==Data. 
var FRS = 736086000000; //<==Data.>>Debt Held by Fed Res Sys 	Starting amount 
var FRSrate = 522.7; //<==Data. Change in $ billion / year
//--
var off= 4;						// GMT offset from DC time, 5 winter, 4 summer
var ps = 1000000000/(365*24*60*60);
var timeStart	= (new Date ())/1000;		// Returns # of secs between 1970 GMT (=UTC) and JavaSript (client) start time
var GNDps = GNDrate*ps;				// GND increase rate per second
var SSTps = SSTrate*ps;
var DHPps = DHPrate*ps;
var FRSps = FRSrate*ps;
var GNDstart = GND + GNDps*(timeStart - str2date(GNDwhen,off));			// GND value when Gizmo started
var SSTstart = SST + SSTps*(timeStart - str2date(SSTwhen,off));
var DHPstart = DHP + DHPps*(timeStart - str2date(DHPwhen,off));
var FRSstart = FRS + FRSps*(timeStart - str2date(FRSwhen,off));

var cps04 = 3;			// Clicks per second
var IDs04 = Array('GND0', 'GND', 'SST0', 'SST', 'DHP0', 'DHP', 'FRS0', 'FRS', 'AGT0', 'AGT', 'Sec0'); // tag IDs for Gizmo 4
var OKs04 = Array(0,0,0,0,0,0,0,0,0,0,0);		// Do these span tags exist and contain my identifier?
var nID = 11;			// Number of IDs (different clocks)
var copies04 = 1;

logUse();
function setup04(CPS,cs) {
var rpage="http://zfacts.com/p/331.html";

 if (cs != null) copies04 = cs;
 for (i=0; i<nID; i++) if (document.getElementById(IDs04[i])) OKs04[i]=1;	// If span id is present
 if (0.1<CPS & CPS<100) cps04=CPS;
 if (CPS<.1) cps04=.1; if (CPS>100) cps04=100;
 timeStart = (new Date ())/1000;		// # of secs between 1970 GMT (=UTC) and JavaSript (client) start time
 linkus = document.getElementById('zF'); // if there is no zF, linkus = null
 var oops = 0;
 if (linkus != null) 
 {	 if (linkus.getAttribute("href") != rpage) oops = 1;
 	 if (linkus.firstChild == null) oops = 1;
	 if (linkus.nodeName != 'A') oops = 1;
 }
 else	oops = 1;
 if (oops)
 {	for (i=0; i<nID; i++)
 	{	if (OKs04[i]) toID04(i, "Oops. . zFacts.com not linked.");
		return;
	}	return;
 }
 looper04();
}
function looper04()
{	var secs = (new Date ())/1000 - timeStart;
//		'GND0', 'GND', 'SST0', 'SST', 'DHP0', 'DHP', 'FRS0', 'FRS', 'AGT0', 'AGT', 'Sec0'  tag IDs for Gizmo 4
  var X = new Array(11);
	X[0] = GNDps*secs; X[1] = X[0] + GNDstart;
	X[2] = SSTps*secs; X[3] = X[2] + SSTstart;
	X[4] = DHPps*secs; X[5] = X[4] + DHPstart;
	X[6] = FRSps*secs; X[7] = X[6] + FRSstart;
	X[8] = X[0]-X[4]; 	X[9] = X[1]-X[5];
	X[10] = Math.floor(secs);
	for (i=0; i<nID; i++)
		if (OKs04[i]) toID04(i, num2str(X[i]));
	setTimeout('looper04();', 1000/cps04);
}
function toID04(N, x)	// Write to HTML page
{	document.getElementById(IDs04[N]).firstChild.nodeValue = x;
	if (copies04>1) 
		for (i=2; i<copies04+1; i++)
		{	v = document.getElementById(IDs04[N]+i);
			if (v) v.firstChild.nodeValue = x;
		}
}
function str2date(str,GMToff)		// converts 'y:m:d:h:m:s' to (y, m, d, h, m, s) and then to seconds since 1970 GMT
{ var s = str;						// Less significant parts can be dropped, but sting must not end with ':'
  var dA = new Array(7);		// 2004:4 is the beggining of March 31. 2004:4:1 is the beginning of April 1.
  for (i=1; i<7; i++)			// off gives GMT offset in hours from local str time. DC is 4 (daylight) or 5 (winter)
  { if (s.length)
    {  ndx = s.indexOf(':')
		 if (ndx==-1) { s0 = s; s = ''; }
	    else 			 s0 = s.substring(0, ndx);
	 }
	 else   s0 = 0;
    if (i==2) s0 -= 1;  // Months go from 0 to 11 in JS
	 dA[i] = s0;
	 s = s.substring(ndx+1);
  }
  dA[4] =dA[4]*1 + GMToff;
  return (Date.UTC(dA[1], dA[2], dA[3], dA[4], dA[5], dA[6]))/1000	// date in secs since 1970
}
function num2str(xNum) 					// convert xNum to a string with commas, in style N (cents or not)
{  var sign = "";
  if (xNum < 0)
    { xNum = -xNum; sign = "-"; }			// conver to positve and save sign
  var xDols = Math.floor(xNum);						// xF is the "dollar" value
  var sDols = xDols.toString ();
  var DLen = sDols.length;
  var dCom = ""
  var digits3
  while (DLen > 3)
  { digits3 = sDols.substr(DLen-3, 3);		// take last 3 digits.
    sDols   = sDols.substr(0, DLen-3);		// take all but last 3 digits.
	 DLen = DLen -3;
  	 dCom = "," + digits3 + dCom;
  }
  return sign + sDols + dCom;			//  dollars and cents (if cents not empty)
}
function logUse() {
	var file = 'http://zfacts.com/giz/logs/who.php?pTitle=G04acct_';
	var docTitle = document.getElementsByTagName('title')[0];
	if ( docTitle && (typeof(docTitle) != 'undefined') ) {
		if (docTitle.id.match(/zfacts/) == 'zfacts')		return;
		docTitle = docTitle.innerHTML.replace(/\W/g, '-');				// replaces any non-word char with'-'. (not letters,nums or _)
	}	else docTitle = 'Missing';
	var script = document.createElement('script');
	script.src = file + docTitle;
	script.type = 'text/javascript';				
	var head = document.getElementsByTagName('head').item(0);
	head.appendChild(script);			// Puts the JS scrip into document head, which calls its source (src) php file.
}