/*
  Name:      Auto-refreshing civilian date with time, julian date calculation
  Author:    Roman Riska
  License:   BSD License
  JD Source: http://www.physics.sfasu.edu/astro/javascript/julianday.html

  * Copyright (c) 2008, Roman Riska
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
  *     * Redistributions of source code must retain the above copyright
  *       notice, this list of conditions and the following disclaimer.
  *     * Redistributions in binary form must reproduce the above copyright
  *       notice, this list of conditions and the following disclaimer in the
  *       documentation and/or other materials provided with the distribution.
  *     * Neither the name of the <organization> nor the
  *       names of its contributors may be used to endorse or promote products
  *       derived from this software without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY <copyright holder> ``AS IS'' AND ANY
  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  * DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

function fix(num) {
  if (num < 10) { return '0' + num; }
  else { return num }
}

function getJulianDate() {
  var now = new Date();

  MM=eval(now.getUTCMonth() + 1);
  DD=eval(now.getUTCDate());
  YY=eval(now.getUTCFullYear());
  HR=eval(now.getUTCHours());
  MN=eval(now.getUTCMinutes());
  SC=eval(now.getUTCSeconds());

  with (Math) {
    HR = HR + (MN / 60) + (SC/3600);
	  GGG = 1;
	  if (YY <= 1585) GGG = 0;
	  JD = -1 * floor(7 * (floor((MM + 9) / 12) + YY) / 4);
	  S = 1;
	  if ((MM - 9)<0) S=-1;
	  A = abs(MM - 9);
	  J1 = floor(YY + S * floor(A / 7));
	  J1 = -1 * floor((floor(J1 / 100) + 1) * 3 / 4);
	  JD = JD + floor(275 * MM / 9) + DD + (GGG * J1);
	  JD = JD + 1721027 + 2 * GGG + 367 * YY - 0.5;
	  JD = JD + (HR / 24);
	}

	return JD.toFixed(2);
}

function getDateNow() {
  var now = new Date();
  MM=eval(now.getUTCMonth() + 1);
  DD=eval(now.getUTCDate());
  YY=eval(now.getUTCFullYear());

  return fix(DD) + '. ' + fix(MM) + '. ' + YY;
}

function getTimeNow() {
  var now = new Date();
  HR=eval(now.getUTCHours());
  MN=eval(now.getUTCMinutes());
  SC=eval(now.getUTCSeconds());

  return fix(HR) + ':' + fix(MN) + ':' + fix(SC);
}

function datesRefresh() {
  document.getElementById('dates-jd').innerHTML = 'Juliánsky dátum (JD): ' + getJulianDate();
  document.getElementById('dates-now').innerHTML = 'Občiansky dátum (UTC): ' + getDateNow();
  document.getElementById('dates-time').innerHTML = 'UTC Čas: ' + getTimeNow();

  setTimeout("datesRefresh()", 1000);
}