var Months = new Array( "Jan", "Feb", "Mar", "Apr", "May", "Jun","Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
var months = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var days = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
function jyear(td) {
    var z, f, a, alpha, b, c, d, e, mm;
    td += 0.5;z = Math.floor(td); f = td - z;
    if (z < 2299161.0) {
        a = z;
    } else {
        alpha = Math.floor((z - 1867216.25) / 36524.25);
        a = z + 1 + alpha - Math.floor(alpha / 4);
    }
    b = a + 1524;
    c = Math.floor((b - 122.1) / 365.25);
    d = Math.floor(365.25 * c);
    e = Math.floor((b - d) / 30.6001);
    mm = Math.floor((e < 14) ? (e - 1) : (e - 13));

    return new Array(
                     Math.floor((mm > 2) ? (c - 4716) : (c - 4715)),
                     mm,
                     Math.floor(b - d - Math.floor(30.6001 * e) + f)
                    );
}
function jhms(j) {
    var ij;

    j += 0.5; 
    ij = (j - Math.floor(j)) * 86400.0;
    document.all.nnnn.value = ij
    return new Array(
                     Math.floor(ij / 3600),
                     Math.floor((ij / 60) % 60),
                     Math.floor(ij % 60));
}
function edate(j) {
    var date, time;
    j += (30.0 / (24 * 60 * 60));
    date = jyear(j);
    time = jhms(j);
    return Months[date[1] - 1] + " " + pad(date[2], 2, " ") + " " +  pad(time[0], 2, " ") + ":" + pad(time[1], 2, "0");
}
function pad(str, howlong, padwith) {
    var s = str.toString();

    while (s.length < howlong) {
        s = padwith + s;
    }
    return s;
}

function gouy() {
pok = document.getElementById("vvvv").value*1
yearZ = jyear(pok)
yearZ = yearZ.toString()
yearZ = yearZ.slice(0,4)

document.getElementById("nnnn").value = yearZ + ", " +edate(pok)
//2455217.3000
//2500000.0
}
function gouyT() {
pok = document.getElementById("vvvv").value*1
document.getElementById("nnnn").value = jyear(pok) +", "+ edate(pok)
document.getElementById("vvvv").value = pok+.0007
timeOut = setTimeout("gouy()",1000)
}
var timeOut
function clearT(){
clearTimeout(timeOut)
}
function calculateJD(calendarDate) {
   cdDate = new Date(calendarDate)

   year = cdDate.getYear()          //added + 1900 10/03/2003
   if (year < 1000 ) {year+=1900}  // modified 10/03/2003
   //year = 1900+cdDate.getYear()
   month = cdDate.getMonth() + 1 //getMonth() returns 0-11
   day = cdDate.getDate()
   hour = cdDate.getHours()
   min = cdDate.getMinutes()
   sec = cdDate.getSeconds()
   univTime = hour+(min/60)+(sec/3600)
   if ((100*year+month-190002.5) >= 0) {sign = 1}
      else {sign = -1}
   with (Math) {
      part1 = 367 * year
      part2 = floor((7*(year+floor((month+9)/12)))/4)
      part3 = day+floor((275*month)/9)
      part4 = 1721013.5+(univTime/24)
      part5 = 0.5*sign
      jd = part1-part2+part3+part4-part5+0.5
   }
   return jd
}
function fixYear(){
x = today.getYear()
x = x.toString()
if(x.length < 4){x = x*1+1900}
return x
}

today = new Date()
function nowTm(){
	var oneMinute = 60 * 1000
	var oneHour = oneMinute * 60
	var oneDay = oneHour * 24
b = new Date(fixYear(),today.getMonth(),today.getDate())
 return  fixYear() + ", " + days[b.getDay()] + ", " + months[today.getMonth()] + ", " + today.getDate()  + ", " + today.getHours()  + ":" + today.getMinutes()  + ":" + today.getSeconds()
}
//http://astronomy.villanova.edu/links/jd.htm#CtoJ

//Draw Options
function drawOptY(){
var Y1opv = "<select ID=Y1op SIZE=10 style=color:blue onChange=adYOpt()>"
var Y2opv = "<select ID=Y2op SIZE=10 style=color:blue onChange=adYOpt()>"
var Y3opv = "<select ID=Y3op SIZE=10 style=color:blue onChange=adYOpt()>"
var Y4opv = "<select ID=Y4op SIZE=10 style=color:blue onChange=adYOpt()>"
for (var i = 0; i < 10; i++) {
Y1opv +="<option value=" + [i] + ">" + [i] + "</option>"
Y2opv +="<option value=" + [i] + ">" + [i] + "</option>"
Y3opv +="<option value=" + [i] + ">" + [i] + "</option>"
Y4opv +="<option value=" + [i] + ">" + [i] + "</option>"
}
Y1opv +="</select>"
Y2opv +="</select>"
Y3opv +="</select>"
Y4opv +="</select>"

document.getElementById("Y1opd").innerHTML=Y1opv
document.getElementById("Y2opd").innerHTML=Y2opv
document.getElementById("Y3opd").innerHTML=Y3opv
document.getElementById("Y4opd").innerHTML=Y4opv
drawOptM()
}
function drawOptM(){
var kop = "<select ID=nop SIZE="+ months.length +" style=color:red onChange=adMOpt()>"
for (var i = 0; i < months.length; i++) {
kop +="<option value=" + [i] + ">" + months[i] + "</option>"
}
kop +="</select>"
document.getElementById("mop").innerHTML=kop

}

var dop
// number of days in the month
function getMonthLen(theYear, theMonth) {
    var oneHour = 1000 * 60 * 60
    var oneDay = oneHour * 24
    var thisMonth = new Date(theYear, theMonth, 1)
    var nextMonth = new Date(theYear, theMonth + 1, 1)
    var len = Math.ceil((nextMonth.getTime() - 
        thisMonth.getTime() - oneHour)/oneDay)
    return len
}
var adY
var dyHld
function adYOpt(){
if(document.getElementById("xop")){
dyHld = document.getElementById("xop").selectedIndex
}
a = document.getElementById("Y1op").selectedIndex
b = document.getElementById("Y2op").selectedIndex
c = document.getElementById("Y3op").selectedIndex
d = document.getElementById("Y4op").selectedIndex
adY = a+""+b+""+c+""+d
document.getElementById("newY").innerHTML = "Year " + adY
if(adY.length == 4){if(document.getElementById("xop")){document.getElementById("xop").selectedIndex = dyHld;drawOptD();}}
}
function adMOpt(){
if(document.getElementById("xop")){
dyHld = document.getElementById("xop").selectedIndex
}
drawOptD()
}
function drawOptD(){
xz =document.getElementById("nop").selectedIndex
x = getMonthLen(adY, xz)
var kop = "<select ID=xop SIZE=12 style=color:green onchange=makeDate()>"
for (var i = 0; i < x; i++) {
dno= i*1+1
kop +="<option value=" + dno + ">" + dno + "</option>"
}
kop +="</select>"
document.getElementById("vop").innerHTML=kop
document.getElementById("xop").selectedIndex = dyHld
makeDate()
}
var xMz
function makeDate(){
document.getElementById("finDateOp").selectedIndex = 0
xz = 0
xMz = document.getElementById("nop").selectedIndex
dy =document.getElementById("xop").selectedIndex*1+1
d = new Date(adY,xMz,dy)
e = days[d.getDay()]
daysUntil = getDaysUntil(xMz,dy,adY)
dt = e +" "+ months[xMz] +" "+ dy + " " + adY
if(xz < 12){
document.getElementById("finDate").value = dt
}
calcJ()
}


function calcJ(){
if(document.getElementById("finDate").value){
a = calculateJD(document.getElementById("finDate").value)
b = calculateJD(today.toString())
c = today.getTime()
document.getElementById("julianDate").value = a
document.getElementById("jsDate").value = c
if(a>b){document.getElementById("direct").innerHTML= daysUntil + " until <BR>" + document.getElementById("finDate").value}
if(b>a){document.getElementById("direct").innerHTML= document.getElementById("finDate").value + "<BR> Date Has Passed "}
} else {
document.getElementById("direct").innerHTML="Please Enter A Date"
document.getElementById("direct").style.color = 'red'
}
}
dayMk = "Days"
function getDaysUntil(a,b,c) {
	var oneMinute = 60 * 1000
	var oneHour = oneMinute * 60
	var oneDay = oneHour * 24
	var today = new Date()
	var nextDate = new Date()
	nextDate.setFullYear(c)
	nextDate.setMonth(a)
	nextDate.setDate(b)
	if ( fixYear() == c && today.getMonth() == a && today.getDate() > b) {
		nextDate.setFullYear(nextDate.getFullYear() + 1)
	}
	var diff = nextDate.getTime() - today.getTime()
	diff = Math.floor(diff/oneDay)-1
            f = today.getHours(); g = 23-f
            h = today.getMinutes(); k = 60-h
if(diff == 0){diff=""; dayMk = ""}else{dayMk = "Days"}
	return diff + " " + dayMk + " " + g +" hrs " + k + " Minutes"
 }
var daysUntil
function finDateCh(){
dayMnt = document.getElementById("finDateOp").options[document.getElementById("finDateOp").selectedIndex].value
if (dayMnt =="Today"){document.getElementById("finDate").value = nowTm()
}else{
b = dayMnt.slice(0,2)
b=b*1
c = dayMnt.slice(3,5)
d = new Date(fixYear(),b,c)
e = days[d.getDay()]
f = fixYear()
document.getElementById("dtest").value = b +"<~"+ today.getMonth() + "~" + today.getDate()  +"~>" + c
	if (b <= today.getMonth() && c <= today.getDate()) {
		f=f*1 + 1
	}
document.getElementById("finDate").value = e + " " + months[b]  + " " + c  + " " +  f
daysUntil = getDaysUntil(b,c,f)
}
calcJ()
}
//http://www.vpcalendar.net/Holiday_Dates/Holiday_Determinations.html
