/* Miscellaneous functions */

function FNp (x)
{
	if (x < 0)
	{
		sgn=-1
	}
	else
	{
		sgn=1
	}
	return sgn * ((Math.abs(x) / M) / 360 - Math.floor((Math.abs(x) / M) / 360)) * 360
	
}

function FNu (x)
{
	return x - (Math.floor(x / 360) * 360)
}

function FNr(x)
{
	return Math.PI / 180 * x
}

function  FNs(x)
{
	return  Math.sin(Math.PI / 180 * x)
}

/* Main calculation here! 
These are based on the public domain utilites published by
Michael Erlwine in Manual of Computer Programming for Astrologers,1980
*/

function calculate()
/* Get the local variables from the form, and check bounds
and make sure they are valid numbers. If theres a problem, reset
to the default vaulue
*/
{
	d=Number(document.getElementById("inputform").selectday.value)
	if (d<1 || d>31 || isNaN(d) )
	{
		d=1
		document.getElementById("inputform").selectday.value=1
	}

	m=Number(document.getElementById("inputform").selectmonth.value)
	if (m<1 || m>12 || isNaN(m) )
	{
		m=1
		document.getElementById("inputform").selectmonth.value=1
	}
	
	y=Number(document.getElementById("inputform").selectyear.value)
	if (y<1900 || y>2020 || isNaN(y) )
	{
		y=2000
		document.getElementById("inputform").selectyear.value=2000
	}
	
	hr=Number(document.getElementById("inputform").selecthour.value)
	if (hr<1 || hr>12 || isNaN(hr) )
	{
		hr=0
		document.getElementById("inputform").selecthour.value=0
	}
	
	mi=Number(document.getElementById("inputform").selectminute.value)
	if (mi<0 || mi>59 || isNaN(mi) )
	{
		mi=0
		document.getElementById("inputform").selectminute.value=0
	}

	am=Number(document.getElementById("inputform").ampm.value)
	zone=Number(document.getElementById("inputform").zone.value)
	f=am+hr+(mi/60)-zone
	
	im = 12 * (y + 4800) + m - 3
	j = (2 * (im - Math.floor(im / 12) * 12) + 7 + 365 * im) / 12
	j = Math.floor(j) + d + Math.floor(im / 48) - 32083
	jd = j + Math.floor(im / 4800) - Math.floor(im / 1200) + 38
	T = ((jd - 2415020) + f / 24 - .5) / 36525
	ob = FNr(23.452294 - .0130125 * T) 
	
	ll = 973563 + 1732564379 * T - 4 * T * T
	g = 1012395 + 6189 * T
	n = 933060 - 6962911 * T + 7.5 * T * T
	g1 = 1203586 + 14648523 * T - 37 * T * T
	d = 1262655 + 1602961611 * T - 5 * T * T
	M = 3600
	l = (ll - g1) / M
	l1 = ((ll - d) - g) / M
	f = (ll - n) / M
	d = d / M
	y = 2 * d
	ml = 22639.6 * FNs(l) - 4586.4 * FNs(l - y)
	ml = ml + 2369.9 * FNs(y) + 769 * FNs(2 * l) - 669 * FNs(l1)
	ml = ml - 411.6 * FNs(2 * f) - 212 * FNs(2 * l - y)
	ml = ml - 206 * FNs(l + l1 - y) + 192 * FNs(l + y)
	ml = ml - 165 * FNs(l1 - y) + 148 * FNs(l - l1) - 125 * FNs(d)
	ml = ml - 110 * FNs(l + l1) - 55 * FNs(2 * f - y)
	ml = ml - 45 * FNs(l + 2 * f) + 40 * FNs(l - 2 * f)
	tn = n + 5392 * FNs(2 * f - y) - 541 * FNs(l1) - 442 * FNs(y)
	tn = tn + 423 * FNs(2 * f) - 291 * FNs(2 * l - 2 * f)
    g = FNu(FNp(ll + ml))
	
	sign= Math.floor(g / 30)
	degree = (g-(sign*30))
	sign=sign+1
	
/* for debugging only	
	document.getElementById("inputform").textfield4.value=degree
	document.getElementById("inputform").textfield5.value=sign
*/		

/* We now have the sign as 1 to 12 for the zodiac signs. 
Grab the appropriate file and display it
*/
	switch (sign)
	{
		case 1:
			parent.document.getElementById("Interp").src="aries.html"
			break
		case 2:
			parent.document.getElementById("Interp").src="taurus.html"
			break
		case 3:
			parent.document.getElementById("Interp").src="gemini.html"
			break
		case 4:
			parent.document.getElementById("Interp").src="cancer.html"
			break
		case 5:
			parent.document.getElementById("Interp").src="leo.html"
			break
		case 6:
			parent.document.getElementById("Interp").src="virgo.html"
			break
		case 7:
			parent.document.getElementById("Interp").src="libra.html"
			break
		case 8:
			parent.document.getElementById("Interp").src="scorpio.html"
			break
		case 9:
			parent.document.getElementById("Interp").src="sagitarius.html"
			break
		case 10:
			parent.document.getElementById("Interp").src="capricorn.html"
			break
		case 11:
			parent.document.getElementById("Interp").src="aquarius.html"
			break
		case 12:
			parent.document.getElementById("Interp").src="pisces.html"
			break
		default:
			parent.document.getElementById("Interp").src="pisces.html"
	}
}





