	var l_h1_o =0;
	var l_m1_o =0; 
	var d_s1_o =0.0;
	var l_d1_o = 0;
	var sign1_o='0';
	var l_am1_o =0;
	var d_as1_o =0.0;
	var al_d1_o =0.0;
	var de_d1_o =0.0;
	var al_r1_o =0.0;
	var de_r1_o =0.0;

	var l_h2_o = 0;
	var l_m2_o = 0;
	var d_s2_o = 0.0;
	var l_d2_o = 0;
	var sign2_o='0';
	var l_am2_o = 0;
	var d_as2_o = 0.0;
	var al_d2_o = 0.0;
	var de_d2_o = 0.0;
	var al_r2_o = 0.0;
	var de_r2_o = 0.0;

function setini(form)
{
	l_h1_o =0;
	l_m1_o =0; 
	d_s1_o =0.0;
	l_d1_o = 0;
	sign1_o='0';
	l_am1_o =0;
	d_as1_o =0.0;
	al_d1_o =0.0;
	de_d1_o =0.0;
	al_r1_o =0.0;
	de_r1_o =0.0;

	l_h2_o = 0;
	l_m2_o = 0;
	d_s2_o = 0.0;
	l_d2_o = 0;
	sign2_o='0';
	l_am2_o = 0;
	d_as2_o = 0.0;
	al_d2_o = 0.0;
	de_d2_o = 0.0;
	al_r2_o = 0.0;
	de_r2_o = 0.0;
return;
}

function dates(form)
    {
	var l_h1 = Math.floor(form.inputbox1.value);
	var l_m1 = Math.floor(form.inputbox2.value);
	var d_s1 = parseFloat(form.inputbox3.value);
		d_s1=ring(d_s1,2);
	var l_d1 = Math.floor(form.inputbox5.value);
	var sign=form.inputbox5.value;
		var sign1=sign.charAt(0);
	var l_am1 = Math.floor(form.inputbox6.value);
	var d_as1 = parseFloat(form.inputbox7.value);
		d_as1=ring(d_as1,1);	
	var al_d1 = parseFloat(form.inputbox8.value);
		al_d1=ring(al_d1,6);
	var de_d1 = parseFloat(form.inputbox9.value);
		de_d1=ring(de_d1,6);
	var al_r1 = parseFloat(form.inputbox10.value);
		al_r1=ring(al_r1,7);
	var de_r1 = parseFloat(form.inputbox11.value);
		de_r1=ring(de_r1,7);

	var l_h2 = Math.floor(form.inputbox12.value);
	var l_m2 = Math.floor(form.inputbox13.value);
	var d_s2 = parseFloat(form.inputbox14.value);
		d_s2=ring(d_s2,2);
	var l_d2 = Math.floor(form.inputbox16.value);
	sign=form.inputbox16.value;
		var sign2=sign.charAt(0);
	var l_am2 = Math.floor(form.inputbox17.value);
	var d_as2 = parseFloat(form.inputbox18.value);
		d_as2=ring(d_as2,1);	
	var al_d2 = parseFloat(form.inputbox19.value);
		al_d2=ring(al_d2,6);
	var de_d2 = parseFloat(form.inputbox20.value);
		de_d2=ring(de_d2,6);
	var al_r2 = parseFloat(form.inputbox21.value);
		al_r2=ring(al_r2,7);
	var de_r2 = parseFloat(form.inputbox22.value);
		de_r2=ring(de_r2,7);

if(l_h1<0||l_h1>23){alert("First source RA out of range 0-23 h");return;}	
if(l_m1<0||l_m1>59){alert("First source RA out of range 0-59 m");return;}	
if(d_s1<0||d_s1>=60){alert("First source RA out of range 0-60 s");return;}	
if(l_d1<-90||l_d1>90){alert("First source Dec out of range -90-+90 deg");return;}	
if(l_am1<0||l_am1>59){alert("First source Dec out of range 0-59'");return;}	
if(d_as1<0||d_as1>=60){alert("First source Dec out of range 0-60''");return;}	
if(al_d1<0||al_d1>=360){alert("First source RA out of range 0-360 deg");return;}	
if(de_d1<-90||de_d1>90){alert("First source Dec out of range -90-+90 deg");return;}	
if(al_r1<0||al_r1>=2*Math.PI){alert("First source RA out of range 0-2*PI radians");return;}	
if(de_r1<(-1)*Math.PI/2||de_r1>Math.PI/2){alert("First source Dec out of range -PI/2-+PI/2 radians");return;}	

if(l_h2<0||l_h2>23){alert("Second source RA out of range 0-24 h");return;}	
if(l_m2<0||l_m2>59){alert("Second source RA out of range 0-60 m");return;}	
if(d_s2<0||d_s2>=60){alert("Second source RA out of range 0-60 s");return;}	
if(l_d2<-90||l_d2>90){alert("Second source Dec out of range -90-+90 deg");return;}	
if(l_am2<0||l_am2>59){alert("Second source Dec out of range 0-60'");return;}	
if(d_as2<0||d_as2>=60){alert("Second source Dec out of range 0-60''");return;}	
if(al_d2<0||al_d2>=360){alert("Second source RA out of range 0-360 deg");return;}	
if(de_d2<-90||de_d2>90){alert("Second source Dec out of range -90-+90 deg");return;}	
if(al_r2<0||al_r2>=2*Math.PI){alert("Second source RA out of range 0-2*PI radians");return;}	
if(de_r2<(-1)*Math.PI/2||de_r2>Math.PI/2){alert("Second source Dec out of range -PI/2-+PI/2 radians");return;}	


if(l_h1==l_h1_o&&l_m1==l_m1_o&&d_s1==d_s1_o&&l_d1==l_d1_o&&l_am1==l_am1_o&&d_as1==d_as1_o&&al_d1==al_d1_o&&de_d1==de_d1_o&&al_r1==al_r1_o&&de_r1==de_r1_o&&sign1==sign1_o)
	{
	al_r1=al_r1_o;
	de_r1=de_r1_o;
	}
	else
	{
		if(al_d1!=al_d1_o||de_d1!=de_d1_o||al_r1!=al_r1_o||de_r1!=de_r1_o)
		{
			if(al_d1!=al_d1_o||de_d1!=de_d1_o)
			{
			al_r1 = al_d1*Math.PI/180;
			de_r1 = de_d1*Math.PI/180;
			form.inputbox10.value=ring(al_r1,7);
			form.inputbox11.value=ring(de_r1,7);
			}
			else
			{
			al_d1 = al_r1/Math.PI*180;
			de_d1 = de_r1/Math.PI*180;
			form.inputbox8.value=ring(al_d1,6);
			form.inputbox9.value=ring(de_d1,6);
			}
		l_h1 = Math.floor(al_d1/15.0);
		l_m1 = Math.floor((al_d1/15.0 - l_h1)*60);
		d_s1 = parseFloat((al_d1/15.0 - l_h1 - l_m1/60.0)*3600.0);		
		var de_dd1 = Math.abs(de_d1);
		l_d1 = Math.floor(de_dd1);
		l_am1 = Math.floor((de_dd1 - l_d1)*60);
		d_as1 = parseFloat((de_dd1 - l_d1 - l_am1/60.0)*3600.0);		
		if(de_d1<0.0)
			{
			if(de_d1<=-1.0)l_d1=l_d1*(-1.0);
			else l_d1='-0';
			};
		
		form.inputbox1.value=l_h1;
		form.inputbox2.value=l_m1;
		form.inputbox3.value=ring(d_s1,2);
		form.inputbox6.value=l_am1;
		form.inputbox7.value=ring(d_as1,1);
		if(de_d1<0.0 && l_d1==0) form.inputbox5.value="-0";
		else form.inputbox5.value=l_d1;
		}
		else
		{
		al_d1 = parseFloat((l_h1+l_m1/60.0+d_s1/3600.0)*15.0);
		if(l_d1>=0) {de_d1 = parseFloat(l_d1+l_am1/60.0+d_as1/3600.0);}
		else {de_d1 = parseFloat(l_am1/60.0+d_as1/3600.0-l_d1);}
		if(sign1=='-' || l_d1<0) de_d1 = de_d1*(-1.0);
		
		if(de_d1<-90 || de_d1>90){alert("First source Dec out of range -90-+90 deg");return;}
		al_r1 = al_d1*Math.PI/180;
		de_r1 = de_d1*Math.PI/180;
		form.inputbox8.value=ring(al_d1,6);
		form.inputbox9.value=ring(de_d1,6);
		form.inputbox10.value=ring(al_r1,7);
		form.inputbox11.value=ring(de_r1,7);
		}

	}


	if(l_h2==l_h2_o&&l_m2==l_m2_o&&d_s2==d_s2_o&&l_d2==l_d2_o&&l_am2==l_am2_o&&d_as2==d_as2_o&&al_d2==al_d2_o&&de_d2==de_d2_o&&al_r2==al_r2_o&&de_r2==de_r2_o&&sign2==sign2_o)
	{
	al_r2=al_r2_o;
	de_r2=de_r2_o;
	}
	else
	{
		if(al_d2!=al_d2_o||de_d2!=de_d2_o||al_r2!=al_r2_o||de_r2!=de_r2_o)
		{
			if(al_d2!=al_d2_o||de_d2!=de_d2_o)
			{
			al_r2 = al_d2*Math.PI/180;
			de_r2 = de_d2*Math.PI/180;
			form.inputbox21.value=ring(al_r2,7);
			form.inputbox22.value=ring(de_r2,7);
			}
			else
			{
			al_d2 = al_r2/Math.PI*180;
			de_d2 = de_r2/Math.PI*180;
			form.inputbox19.value=ring(al_d2,6);
			form.inputbox20.value=ring(de_d2,6);
			}
		l_h2 = Math.floor(al_d2/15.0);
		l_m2 = Math.floor((al_d2/15.0 - l_h2)*60);
		d_s2 = parseFloat((al_d2/15.0 - l_h2 - l_m2/60.0)*3600.0);		
		var de_dd2 = Math.abs(de_d2);
		l_d2 = Math.floor(de_dd2);
		l_am2 = Math.floor((de_dd2 - l_d2)*60);
		d_as2 = parseFloat((de_dd2 - l_d2 - l_am2/60.0)*3600.0);		
		if(de_d2<0.0) l_d2=l_d2*(-1.0);
		form.inputbox12.value=l_h2;
		form.inputbox13.value=l_m2;
		form.inputbox14.value=ring(d_s2,2);
		form.inputbox17.value=l_am2;
		form.inputbox18.value=ring(d_as2,1);
		if(de_d2<0.0 && l_d2==0) form.inputbox16.value="-0";
		else form.inputbox16.value=l_d2;
		}
		else
		{
		al_d2 = parseFloat((l_h2+l_m2/60.0+d_s2/3600.0)*15.0);
		if(l_d2>=0) {de_d2 = parseFloat(l_d2+l_am2/60.0+d_as2/3600.0);}
		else {de_d2 = parseFloat(l_am2/60.0+d_as2/3600.0-l_d2);}
		if(sign2=='-' || l_d2<0) de_d2 = de_d2*(-1.0);
		if(de_d2<-90 || de_d2>90){alert("Second source Dec out of range -90-+90 deg");return;}
		al_r2 = al_d2*Math.PI/180;
		de_r2 = de_d2*Math.PI/180;
		form.inputbox19.value=ring(al_d2,6);
		form.inputbox20.value=ring(de_d2,6);
		form.inputbox21.value=ring(al_r2,7);
		form.inputbox22.value=ring(de_r2,7);
		}
	}	
	
	var dist_rad = parseFloat(dist(al_r1,de_r1,al_r2,de_r2));
	var dist_deg = parseFloat(dist_rad/Math.PI*180);
	var ldist_deg = Math.floor(dist_deg);
	var ldist_min = Math.floor((dist_deg - ldist_deg)*60);
	var dist_sec = parseFloat((dist_deg - ldist_deg - ldist_min/60.0)*3600.0);

if(ldist_deg<0||ldist_min<0||dist_sec<0)
	{
	ldist_deg=0;
	ldist_min=0;
	dist_sec=0;
	dist_deg=0;
	dist_rad=0;
	}	

	form.outbox1.value=ldist_deg;
	form.outbox2.value=ldist_min;
	form.outbox3.value=ring(dist_sec,1);
	form.outbox4.value=ring(dist_deg,6);
	form.outbox5.value=ring(dist_rad,7);

	l_h1_o = l_h1;
	l_m1_o = l_m1; 
	d_s1_o = ring(d_s1,2);
	l_d1_o = l_d1;
	sign1_o = sign1;
	l_am1_o = l_am1;
	d_as1_o = ring(d_as1,1);
	al_d1_o = ring(al_d1,6);
	de_d1_o = ring(de_d1,6);
	al_r1_o = ring(al_r1,7);
	de_r1_o = ring(de_r1,7);

	l_h2_o = l_h2;
	l_m2_o = l_m2;
	d_s2_o = ring(d_s2,2);
	l_d2_o = l_d2;
	sign2_o = sign2;
	l_am2_o = l_am2;
	d_as2_o = ring(d_as2,1);
	al_d2_o = ring(al_d2,6);
	de_d2_o = ring(de_d2,6);
	al_r2_o = ring(al_r2,7);
	de_r2_o = ring(de_r2,7);

	return;
     }

function ring(ring_x,ring_k)
{
var ring_y;
ring_y = Math.round(ring_x*Math.pow(10.0,ring_k));
ring_y = parseFloat(ring_y/Math.pow(10.0,ring_k));
return (ring_y);
}

function dist(al1,del1,al2,del2)
{                  
var dal=Math.abs(al2-al1);
if(dal>Math.PI) dal=2.0*Math.PI-dal;
var ddel=Math.abs(del2-del1);
  
if(dal > 0.0029 || ddel > 0.0029)
	{
	var a1=Math.cos(dal);
	var d1=Math.cos(del1);
	var d2=Math.cos(del2);
	var d3=Math.sin(del1);
	var d4=Math.sin(del2);
	var ro=Math.acos(d3*d4+d1*d2*a1);
	}
else
    {
	var d1=Math.cos((del1+del2)/2.0);
      var ro=Math.sqrt(d1*d1*dal*dal+ddel*ddel);
    }
return (ro+0.000000001);
}
