/* 

BLANKOMETR

Skript pro ukazku, jak utikaji penize za velkou stavbu, pokud se protahne a prodrazi.
Pocita prodrazeni na cas, o ktery se stavba prodluzuje a na obyvatele

Hodnoty vypisuje do poli (zpravidla span ) s patricnym id:

blankometr_paid      : dosavadni cena stavby na osobu
blankometr_prodl     : aktualni zpozdeni stavby 
blankometr_total     : aktualni prodrazeni stavby (narusta az do okamziku zadaneho zpozdeni, kdy dosahne 100% prodrazeni)
blankometr_per_obyv  : aktualni prodrazeni stavby na osobu
blankometr_per_total : celkove prodrazeni stavby na osobu
blankometr_from_now  : prodrazeni stavby od okamziku otevreni stranky a spusteni skriptu

Priklad:
Vystavba Blanky se prodlouzila o <span id="blankometr_prodl">&nbsp;</span>

Skript se postara o funkcnost ve staticke strance. Vlozte do hlavicky kod jako:
<script type="text/javascript" src="./blankometr.js"></script>

U aplikaci vyuzivajicich pokrocily Javascript a funkci OnLoad 
je potreba skript doladit, patrne vlozit obsah funkce window.onload do init aplikace. 

Blankometr e i situaci ped prodlouenm stavby, pro odlien text na stejnm mst pouv textov promnn, kter lze pedefinovat stejn jako seln daje o stavbch.

Autor: Auto*Mat, 3.9.2011

*/

// Setting
date_start = "2011/11/01"; // pro ostry provoz plati 2011/11/01
date_end   = "2014/06/30";
cena_orig  = 26.8e9;  // Kc
cena_nova  = 37.9e9;  // Kc, udaj z 6/2011
praha_obyv = 1288696; // ke 14.1.2011

text_pred_prodl = "Do původního termínu otevření Blanky zbývá: ";
text_po_prodl   = "Výstavba Blanky se prodloužila o ";
/*text_pred_prodr = "Na každý den prodloužení výstavby připadá: ";*/
text_pred_prodr = "Každý den avizovaného prodloužení výstavby (do roku 2014) zaplatí Pražané navíc: ";
text_po_prodr   = "Za tu dobu se prodražila o ";
text_pred_prodr2 = "Za každý měsíc prodloužení zaplatí každý Pražan (včetně starců a dětí) ";
text_po_prodr2   = "Od plánovaného otevření připlatil za Blanku každý Pražan (včetnč starců a dětí) ";

/************************************/

dstart  = new Date(date_start);
dend    = new Date(date_end);
dbrowse = new Date();

sstart  = dstart.getTime();
send    = dend.getTime();
sbrowse = dbrowse.getTime();

rate_all  = (cena_nova - cena_orig ) / ( send - sstart );
pertotal  = ((cena_nova - cena_orig ) / praha_obyv).toFixed(2);
pertotal  = add_spaces( pertotal, 2);
paid      = (cena_orig / praha_obyv).toFixed(2);
paid      = add_spaces( paid, 2);



function add_spaces ( number, desetine )
// prida mezery mezi retezec cislic, aby se dal cist, desetine je pocet des. mist cislice
{
  var spacechar = ' ';
  var posun = desetine + 1;
  if (desetine == 0) { posun = 0; }
  var kolo  = 1
  while (4 * kolo + posun <= number.length )
  {
    pozice = number.length - 4 * kolo - posun + 1;
    number = number.substr(0,pozice) + spacechar + number.substr(pozice);
    kolo++;
  }

  return number;
}

function sces_to_timstr ( secs )
{
    var days = Math.floor(secs / 86400);
    var divisor_for_hours = secs % 86400;

    var hours = Math.floor(divisor_for_hours / 3600);
    var divisor_for_minutes = divisor_for_hours % (3600);

    var minutes = Math.floor(divisor_for_minutes / 60);
    var divisor_for_seconds = divisor_for_minutes % 60;

    var seconds = Math.ceil(divisor_for_seconds);
   
    var obj = {
        "d": days,
        "h": hours,
        "m": minutes,
        "s": seconds
    };
    return obj;
}

function clockfmt( number ){
   if( number <= 9 ) { return "0" + number; }
   return number;
}

function update_blankometr ( )
{

  var dnow = new Date();
  var snow = dnow.getTime();

  var total = ( snow - sstart ) * rate_all;
  var total_obyv = total / praha_obyv;

  var actual = ( snow - sbrowse ) * rate_all;

  var prodl = ( snow - sstart );


  if ( sstart > snow ){
	total_obyv = 0; prodl = -prodl; actual = 0;
        blankometr_prodl_text = text_pred_prodl;
        blankometr_prodr_text = text_pred_prodr;
        blankometr_prodr2_text = text_pred_prodr2;
	total = rate_all * 1000 * 86400; // za den
	total_obyv = total / praha_obyv * 365 / 12;  // za den
  }
  else {
        blankometr_prodl_text = text_po_prodl;     
        blankometr_prodr_text = text_po_prodr;  
        blankometr_prodr2_text = text_po_prodr2;  
           
  }
  
  // Compose strings for display
  var stotal  = total.toFixed(0);
  var sactual = actual.toFixed(0);
  var stobyv  = total_obyv.toFixed(2);
 
  stotal = add_spaces( stotal, 0 );
  sactual = add_spaces( sactual, 0 );

  var pt    = sces_to_timstr ( Math.floor(prodl/1000) );
  var zt    = sces_to_timstr ( Math.floor(prodl/1000) );
  var sprodl = pt.d + " dnů, " + pt.h + ":" + clockfmt(pt.m) + ":" + clockfmt(pt.s);
  var szbyva = zt.d + " dnů, " + zt.h + ":" + clockfmt(zt.m) + ":" + clockfmt(zt.s);

  // Update fields
  // Pro vetsi pocet menenych okenek jsou nazvy id menenych okenek vlozeny do pole fields 
  // a patricne hodnoty do pole values, ve stejnem poradi (asociativni pole v js neumim )

  var fields = ["blankometr_prodl", "blankometr_total", "blankometr_from_now", 
                 "blankometr_per_obyv", "blankometr_per_total", "blankometr_paid", "blankometr_zbyva", "blankometr_prodl_text", "blankometr_prodr_text", "blankometr_prodr2_text" ];
  var values = [sprodl, stotal, sactual, stobyv, pertotal, paid, szbyva, blankometr_prodl_text, blankometr_prodr_text, blankometr_prodr2_text ];

  for(var i=0; i < fields.length; i++) {
     if(document.getElementById(fields[i])) {
         document.getElementById(fields[i]).firstChild.nodeValue    = values[i]; 
     }
  }

}


window.onload=function(){
  update_blankometr(); 
  setInterval('update_blankometr()', 500 );
}

