//占断する為の基本ルーチン
//jQuery.cookie.js ///////////////////////////////////////////////////////////////////////////////////////////////////////////

jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options.expires=-1}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000))}else{date=options.expires}expires='; expires='+date.toUTCString()}var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('')}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break}}}return cookieValue}};

//common.js //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function id_check() {
  $.ajax({
    url: '/shared/include/charapla-id.php',
    type: 'GET',
    dataType: 'text/html',
    timeout: 1000,
    error: function(){},
    success: function(xml){}
  });
}
function data_save(myVal) {
  $.ajax({
    url: '/shared/include/data-save.php',
    type: 'POST',
    data: "bd="+myVal,
    dataType: 'text/html',
    timeout: 1000,
    error: function(){},
    success: function(xml){}
  });
}


//planet.js //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 北海道〜沖縄の経度・緯度
var pLon=[0,8481,8445,8469,8453,8406,8422,8428,8429,8393,8344,8379,8408,8386,8379,8342,8233,8200,8173,8314,8291,8204,8303,8215,
     8191,8152,8146,8131,8111,8150,8110,8054,7983,8036,7948,7889,8074,8043,7966,8012,7825,7818,7793,7845,7897,7886,7834,7661];
var pLat=[0,2584,2449,2382,2296,2383,2294,2265,2182,2194,2183,2151,2136,2140,2127,2274,2202,2194,2164,2140,2199,2123,2098,2111,
     2084,2100,2101,2081,2081,2081,2053,2130,2128,2079,2064,2051,2044,2060,2030,2013,2016,1995,1964,1967,1994,1914,1896,1572];
//角度記号 (nil,0,30,45,60,72,90,120,135,150,180,Para)
var tAsp=["　","♂","∨","∠","＊","Ｑ","□","△","Φ","∧","∞","∥"];
// 星座名
var tSgn=["おひつじ座","おうし座","ふたご座","かに座","しし座","おとめ座","てんびん座","さそり座","いて座","やぎ座","みずがめ座","うお座"];
/* planet parameter */
var lon_mon,ano_mon,lat_mon,elo_mon,alo_mon,lon_sun,ano_sun,lon_mer,ano_mer,lat_mer,
    lon_ven,ano_ven,lat_ven,lon_mar,ano_mar,lat_mar,lon_jup,ano_jup,lat_jup,
	lon_sat,ano_sat,lat_sat,lon_ura,ano_ura,lat_ura,lon_nep,ano_nep,lat_nep,
    lon_plu,ano_plu,lat_plu, p99, time_prm; /* planet parameter */
var cl,cb,rv; /* planet position work */

function floor_pi(n) {return (n - Math.floor(n)) * 2 * Math.PI;}
function Sind(x){return Math.sin((x)*Math.PI/180);}
function Cosd(x){return Math.cos((x)*Math.PI/180);}
function Ary_contains(ary, val) {
	if (ary instanceof Array) {
		for (var i=0; i<ary.length; i++) {
			if (ary[i] === val)
				return i;
		}
	}
	return -1;
}
function Ary_clone(ary) {
	if (ary instanceof Array) {
		return ary.slice(0);
	}
	return null;
}
function Ary_isEmpty(ary) {
	if (ary instanceof Array) {
		for (var i=0; i<ary.length; i++) {
			if (ary[i] && ary[i].length > 0)
				return false;
		}
	}
	return true;
}
/*******************************************
* current time set sub                     *
*   input  : nothing                       *
*   output : nothing                       *
*******************************************/
function nowSet() {
	var today=new Date();
	var iYear=today.getFullYear();
	if(iYear<2000) iYear+=1900;
	$("#yearType").val(0);
	$("#iYear").val(iYear);
	$("#iMonth").val(today.getMonth()+1);
	$("#iDay").val(today.getDate());
	$("#iHour").val(today.getHours());
	$("#iMinute").val(today.getMinutes());
}
/*******************************************
* append options into select tag           *
*******************************************/
function appendOption(select_id, start, end, step) {
	for (var i=start; i<=end; i+=step) {
		var elem = document.createElement("option");
		elem.appendChild(document.createTextNode(i));
		elem.value = zeroPad(i, (""+end).length);
		$("#" + select_id).append(elem);
	}
}
function zeroPad(n, keta) {
	return ("0000000000"+n).slice(-keta);
}
/****************************************************
* planet parameter cal sub                          *
*   input  : jd = julian day                        *
*   output : lon_mon-lat_plu,p99 = planet parameter *
*            time_prm = time parameter              *
****************************************************/
function Get_pr1(jd) {
	var tt=jd-2451545;
	time_prm=tt/36525+1;

	lon_mon=floor_pi(0.606434+0.03660110129*tt); /* mean longitude of moon */
	ano_mon=floor_pi(0.374897+0.03629164709*tt); /* mean anomary of moon */
	lat_mon=floor_pi(0.259091+0.03674819520*tt); /* argument of latitude of moon */
	elo_mon=floor_pi(0.827362+0.03386319198*tt); /* mean elongation of moon from sun */
	alo_mon=floor_pi(0.347343-0.00014709391*tt); /* longitude of moon ascending node */
	lon_sun=floor_pi(0.779072+0.00273790931*tt); /* mean longitude of sun */
	ano_sun=floor_pi(0.993126+0.00273777850*tt); /* mean anomary of sun */
	lon_mer=floor_pi(0.700695+0.01136771400*tt); /* mean longitude of mercury */
	ano_mer=floor_pi(0.485541+0.01136759566*tt); /* mean anomary of mercury */
	lat_mer=floor_pi(0.566441+0.01136762384*tt); /* argument of latitude of mercury */
	lon_ven=floor_pi(0.505498+0.00445046867*tt); /* mean longitude of venus */
	ano_ven=floor_pi(0.140023+0.00445036173*tt); /* mean anomary of venus */
	lat_ven=floor_pi(0.292498+0.00445040017*tt); /* argument of latitude of venus */
	lon_mar=floor_pi(0.987353+0.00145575328*tt); /* mean longitude of mars */
	ano_mar=floor_pi(0.053856+0.00145561327*tt); /* mean anomary of mars */
	lat_mar=floor_pi(0.849694+0.00145569465*tt); /* argument of latitude of mars */
	lon_jup=floor_pi(0.089608+0.00023080893*tt); /* mean longitude of jupiter */
	ano_jup=floor_pi(0.056531+0.00023080893*tt); /* mean anomary of jupiter */
	lat_jup=floor_pi(0.814794+0.00023080893*tt); /* argument of latitude of jupiter */
	lon_sat=floor_pi(0.133295+0.00009294371*tt); /* mean longitude of saturn */
	ano_sat=floor_pi(0.882987+0.00009294371*tt); /* mean anomary of saturn */
	lat_sat=floor_pi(0.821218+0.00009294371*tt); /* argument of latitude of saturn */
	lon_ura=floor_pi(0.870169+0.00003269438*tt); /* mean longitude of uranus */
	ano_ura=floor_pi(0.400589+0.00003269438*tt); /* mean anomary of uranus */
	lat_ura=floor_pi(0.664614+0.00003265562*tt); /* argument of latitude of uranus */
	lon_nep=floor_pi(0.846912+0.00001672092*tt); /* mean longitude of neptune */
	ano_nep=floor_pi(0.725368+0.00001672092*tt); /* mean anomary of neptune */
	lat_nep=floor_pi(0.480856+0.00001663715*tt); /* argument of latitude of neptune */
	lon_plu=floor_pi(0.663854+0.00001115482*tt); /* mean longitude of pluto */
	ano_plu=floor_pi(0.041020+0.00001104864*tt); /* mean anomary of pluto */
	lat_plu=floor_pi(0.357355+0.00001104864*tt); /* argument of latitude of pluto */

	p99=floor_pi((1934*time_prm-1789)/360);
}

/*************************************
* sun position caliculate sub 1      *
*   (geocentric ecliptic)            *
*  output : cl = longitude [sec,deg] *
*           cb = latitude  [sec,deg] *
*           rv = radius    [AU]      *
*************************************/
function Sun_cal1() {
	cl =1296000*lon_sun/Math.PI/2;
	cl+=   6910*Math.sin(ano_sun);
	cl+=     72*Math.sin(2*ano_sun);
	cl-=     17*time_prm*Math.sin(ano_sun);
	cl-=      7*Math.cos(ano_sun-ano_jup);
	cl+=      6*Math.sin(lon_mon-lon_sun);
	cl+=      5*Math.sin(4*ano_sun-8*ano_mar+3*ano_jup);
	cl-=      5*Math.cos(2*ano_sun-2*ano_ven);
	cl-=      4*Math.sin(ano_sun-ano_ven);
	cl+=      4*Math.cos(4*ano_sun-8*ano_mar+3*ano_jup);
	cl+=      3*Math.sin(2*ano_sun-2*ano_ven);
	cl-=      3*Math.sin(ano_jup);
	cl-=      3*Math.sin(2*ano_sun-2*ano_jup);

	cb=0;

	rv =1.00014;
	rv-=0.01675*Math.cos(ano_sun);
	rv-=0.00014*Math.cos(2*ano_sun);
}

/**************************
* moon position cal sub 1 *
*   (geocentric ecliptic) *
**************************/
function Moon_cal1() {
	cl =1296000*lon_mon/Math.PI/2;
	cl+=  22640*Math.sin(ano_mon);
	cl-=   4586*Math.sin(ano_mon-2*elo_mon);
	cl+=   2370*Math.sin(2*elo_mon);
	cl+=    769*Math.sin(2*ano_mon);
	cl-=    668*Math.sin(ano_sun);
	cl-=    412*Math.sin(2*lat_mon);
	cl-=    212*Math.sin(2*ano_mon-2*elo_mon);
	cl-=    206*Math.sin(ano_mon-2*elo_mon+ano_sun);
	cl+=    192*Math.sin(ano_mon+2*elo_mon);
	cl+=    165*Math.sin(2*elo_mon-ano_sun);
	cl+=    148*Math.sin(ano_mon-ano_sun);
	cl-=    125*Math.sin(elo_mon);
	cl-=    110*Math.sin(ano_mon+ano_sun);
	cl-=     55*Math.sin(2*lat_mon-2*elo_mon);
	cl-=     45*Math.sin(ano_mon+2*lat_mon);
	cl+=     40*Math.sin(ano_mon-2*lat_mon);
	cl-=     38*Math.sin(ano_mon-4*elo_mon);
	cl+=     36*Math.sin(3*ano_mon);
	cl-=     31*Math.sin(2*ano_mon-4*elo_mon);
	cl+=     28*Math.sin(ano_mon-2*elo_mon-ano_sun);
	cl-=     24*Math.sin(2*elo_mon+ano_sun);
	cl+=     19*Math.sin(ano_mon-elo_mon);
	cl+=     18*Math.sin(elo_mon+ano_sun);
	cl+=     15*Math.sin(ano_mon+2*elo_mon-ano_sun);
	cl+=     14*Math.sin(2*ano_mon+2*elo_mon);
	cl+=     14*Math.sin(4*elo_mon);
	cl-=     13*Math.sin(3*ano_mon-2*elo_mon);
	cl-=     11*Math.sin(ano_mon+16*lon_sun-18*lon_ven);
	cl+=     10*Math.sin(2*ano_mon-ano_sun);
	cl+=      9*Math.sin(ano_mon-2*lat_mon-2*elo_mon);
	cl+=      9*Math.cos(ano_mon+16*lon_sun-18*lon_ven);
	cl-=      9*Math.sin(2*ano_mon-2*elo_mon+ano_sun);
	cl-=      8*Math.sin(ano_mon+elo_mon);
	cl+=      8*Math.sin(2*elo_mon-2*ano_sun);
	cl-=      8*Math.sin(2*ano_mon+ano_sun);
	cl-=      7*Math.sin(2*ano_sun);
	cl-=      7*Math.sin(ano_mon-2*elo_mon+2*ano_sun);
	cl+=      7*Math.sin(alo_mon);
	cl-=      6*Math.sin(ano_mon-2*lat_mon+2*elo_mon);
	cl-=      6*Math.sin(2*lat_mon+2*elo_mon);
	cl-=      4*Math.sin(ano_mon-4*elo_mon+ano_sun);
	cl+=      4*time_prm*Math.cos(ano_mon+16*lon_sun-18*lon_ven);
	cl-=      4*Math.sin(2*ano_mon+2*lat_mon);
	cl+=      4*time_prm*Math.sin(ano_mon+16*lon_sun-18*lon_ven);
	cl+=      3*Math.sin(ano_mon-3*elo_mon);
	cl-=      3*Math.sin(ano_mon+2*elo_mon+ano_sun);
	cl-=      3*Math.sin(2*ano_mon-4*elo_mon+ano_sun);
	cl+=      3*Math.sin(ano_mon-2*ano_sun);
	cl+=      3*Math.sin(ano_mon-2*elo_mon-2*ano_sun);
	cl-=      2*Math.sin(2*ano_mon-2*elo_mon-ano_sun);
	cl-=      2*Math.sin(2*lat_mon-2*elo_mon+ano_sun);
	cl+=      2*Math.sin(ano_mon+4*elo_mon);
	cl+=      2*Math.sin(4*ano_mon);
	cl+=      2*Math.sin(4*elo_mon-ano_sun);
	cl+=      2*Math.sin(2*ano_mon-elo_mon);

	cb =18461*Math.sin(lat_mon);
	cb+= 1010*Math.sin(ano_mon+lat_mon);
	cb+= 1000*Math.sin(ano_mon-lat_mon);
	cb-=  624*Math.sin(lat_mon-2*elo_mon);
	cb-=  199*Math.sin(ano_mon-lat_mon-2*elo_mon);
	cb-=  167*Math.sin(ano_mon+lat_mon-2*elo_mon);
	cb+=  117*Math.sin(lat_mon+2*elo_mon);
	cb+=   62*Math.sin(2*ano_mon+lat_mon);
	cb+=   33*Math.sin(ano_mon-lat_mon+2*elo_mon);
	cb+=   32*Math.sin(2*ano_mon-lat_mon);
	cb-=   30*Math.sin(lat_mon-2*elo_mon+ano_sun);
	cb-=   16*Math.sin(2*ano_mon+lat_mon-2*elo_mon);
	cb+=   15*Math.sin(ano_mon+lat_mon+2*elo_mon);
	cb+=   12*Math.sin(lat_mon-2*elo_mon-ano_sun);
	cb-=    9*Math.sin(ano_mon-lat_mon-2*elo_mon+ano_sun);
	cb-=    8*Math.sin(lat_mon+alo_mon);
	cb+=    8*Math.sin(lat_mon+2*elo_mon-ano_sun);
	cb-=    7*Math.sin(ano_mon+lat_mon-2*elo_mon+ano_sun);
	cb+=    7*Math.sin(ano_mon+lat_mon-ano_sun);
	cb-=    7*Math.sin(ano_mon+lat_mon-4*elo_mon);
	cb-=    6*Math.sin(lat_mon+ano_sun);
	cb-=    6*Math.sin(3*lat_mon);
	cb+=    6*Math.sin(ano_mon-lat_mon-ano_sun);
	cb-=    5*Math.sin(lat_mon+elo_mon);
	cb-=    5*Math.sin(ano_mon+lat_mon+ano_sun);
	cb-=    5*Math.sin(ano_mon-lat_mon+ano_sun);
	cb+=    5*Math.sin(lat_mon-ano_sun);
	cb+=    5*Math.sin(lat_mon-elo_mon);
	cb+=    4*Math.sin(3*ano_mon+lat_mon);
	cb-=    4*Math.sin(lat_mon-4*elo_mon);
	cb-=    3*Math.sin(ano_mon-lat_mon-4*elo_mon);
	cb+=    3*Math.sin(ano_mon-3*lat_mon);
	cb-=    2*Math.sin(2*ano_mon-lat_mon-4*elo_mon);
	cb-=    2*Math.sin(3*lat_mon-2*elo_mon);
	cb+=    2*Math.sin(2*ano_mon-lat_mon+2*elo_mon);
	cb+=    2*Math.sin(ano_mon-lat_mon+2*elo_mon-ano_sun);
	cb+=    2*Math.sin(2*ano_mon-lat_mon-2*elo_mon);
	cb+=    2*Math.sin(3*ano_mon-lat_mon);
}

/*****************************
* mercury position cal sub 1 *
*   (heriocentric ecliptic)  *
*****************************/
function Mercury_cal1() {
	cl =1296000*lon_mer/Math.PI/2;
	cl+=  84378*Math.sin(ano_mer);
	cl+=  10733*Math.sin(2*ano_mer);
	cl+=   1892*Math.sin(3*ano_mer);
	cl-=    646*Math.sin(2*lat_mer);
	cl+=    381*Math.sin(4*ano_mer);
	cl-=    306*Math.sin(ano_mer-2*lat_mer);
	cl-=    274*Math.sin(ano_mer+2*lat_mer);
	cl-=     92*Math.sin(2*ano_mer+2*lat_mer);
	cl+=     83*Math.sin(5*ano_mer);
	cl-=     28*Math.sin(3*ano_mer+2*lat_mer);
	cl+=     25*Math.sin(2*ano_mer-2*lat_mer);
	cl+=     19*Math.sin(6*ano_mer);
	cl-=      9*Math.sin(4*ano_mer+2*lat_mer);
	cl+=      8*time_prm*Math.sin(ano_mer);
	cl+=      7*Math.cos(2*ano_mer-5*ano_ven);

	cb =24134*Math.sin(lat_mer);
	cb+= 5180*Math.sin(ano_mer-lat_mer);
	cb+= 4910*Math.sin(ano_mer+lat_mer);
	cb+= 1124*Math.sin(2*ano_mer+lat_mer);
	cb+=  271*Math.sin(3*ano_mer+lat_mer);
	cb+=  132*Math.sin(2*ano_mer-lat_mer);
	cb+=   67*Math.sin(4*ano_mer+lat_mer);
	cb+=   18*Math.sin(3*ano_mer-lat_mer);
	cb+=   17*Math.sin(5*ano_mer+lat_mer);
	cb-=   10*Math.sin(3*lat_mer);
	cb-=    9*Math.sin(ano_mer-3*lat_mer);

	rv =0.39528;
	rv-=0.07834*Math.cos(ano_mer);
	rv-=0.00795*Math.cos(2*ano_mer);
	rv-=0.00121*Math.cos(3*ano_mer);
	rv-=0.00022*Math.cos(4*ano_mer);
}

/***************************
* venus position cal sub 1 *
***************************/
function Venus_cal1() {
	cl =1296000*lon_ven/Math.PI/2;
	cl+=   2814*Math.sin(ano_ven);
	cl-=    181*Math.sin(2*lat_ven);
	cl-=     20*time_prm*Math.sin(ano_ven);
	cl+=     12*Math.sin(2*ano_ven);
	cl-=     10*Math.cos(2*ano_sun-2*ano_ven);
	cl+=      7*Math.cos(3*ano_sun-3*ano_ven);

	cb =12215*Math.sin(lat_ven);
	cb+=   83*Math.sin(ano_ven+lat_ven);
	cb+=   83*Math.sin(ano_ven-lat_ven);

	rv =0.72335;
	rv-=0.00493*Math.cos(ano_ven);
}

/**************************
* mars position cal sub 1 *
**************************/
function Mars_cal1() {
	cl =1296000*lon_mar/Math.PI/2;
	cl+=  38451*Math.sin(ano_mar);
	cl+=   2238*Math.sin(2*ano_mar);
	cl+=    181*Math.sin(3*ano_mar);
	cl-=     52*Math.sin(2*lat_mar);
	cl+=     37*time_prm*Math.sin(ano_mar);
	cl-=     22*Math.cos(ano_mar-2*ano_jup);
	cl-=     19*Math.sin(ano_mar-ano_jup);
	cl+=     17*Math.cos(ano_mar-ano_jup);
	cl+=     17*Math.sin(4*ano_mar);
	cl-=     16*Math.cos(2*ano_mar-2*ano_jup);
	cl+=     13*Math.cos(ano_sun-2*ano_mar);
	cl-=     10*Math.sin(ano_mar-2*lat_mar);
	cl-=     10*Math.sin(ano_mar+2*lat_mar);
	cl+=      7*Math.cos(ano_sun-ano_mar);
	cl-=      7*Math.cos(2*ano_sun-3*ano_mar);
	cl-=      5*Math.sin(ano_ven-3*ano_mar);
	cl-=      5*Math.sin(ano_sun-ano_mar);
	cl-=      5*Math.sin(ano_sun-2*ano_mar);
	cl-=      4*Math.cos(2*ano_sun-4*ano_mar);
	cl+=      4*time_prm*Math.sin(2*ano_mar);
	cl+=      4*Math.cos(ano_jup);
	cl+=      3*Math.cos(ano_ven-3*ano_mar);
	cl+=      3*Math.sin(2*ano_mar-2*ano_jup);

	cb =6603*Math.sin(lat_mar);
	cb+= 622*Math.sin(ano_mar-lat_mar);
	cb+= 615*Math.sin(ano_mar+lat_mar);
	cb+=  64*Math.sin(2*ano_mar+lat_mar);

	rv =1.53031;
	rv-=0.14170*Math.cos(ano_mar);
	rv-=0.00660*Math.cos(2*ano_mar);
	rv-=0.00047*Math.cos(3*ano_mar);
}

/*****************************
* jupiter position cal sub 1 *
*****************************/
function Jupiter_cal1() {
	cl =1296000*lon_jup/Math.PI/2;
	cl+=  19934*Math.sin(ano_jup);
	cl+=   5023*time_prm;
	cl+=   2511;
	cl+=   1093*Math.cos(2*ano_jup-5*ano_sat);
	cl+=    601*Math.sin(2*ano_jup);
	cl-=    479*Math.sin(2*ano_jup-5*ano_sat);
	cl-=    185*Math.sin(2*ano_jup-2*ano_sat);
	cl+=    137*Math.sin(3*ano_jup-5*ano_sat);
	cl-=    131*Math.sin(ano_jup-2*ano_sat);
	cl+=     79*Math.cos(ano_jup-ano_sat);
	cl-=     76*Math.cos(2*ano_jup-2*ano_sat);
	cl-=     74*time_prm*Math.cos(ano_jup);
	cl+=     68*time_prm*Math.sin(ano_jup);
	cl+=     66*Math.cos(2*ano_jup-3*ano_sat);
	cl+=     63*Math.cos(3*ano_jup-5*ano_sat);
	cl+=     53*Math.cos(ano_jup-5*ano_sat);
	cl+=     49*Math.sin(2*ano_jup-3*ano_sat);
	cl-=     43*time_prm*Math.sin(2*ano_jup-5*ano_sat);
	cl-=     37*Math.cos(ano_jup);
	cl+=     25*Math.sin(2*lon_jup);
	cl+=     25*Math.sin(3*ano_jup);
	cl-=     23*Math.sin(ano_jup-5*ano_sat);
	cl-=     19*time_prm*Math.cos(2*ano_jup-5*ano_sat);
	cl+=     17*Math.cos(2*ano_jup-4*ano_sat);
	cl+=     17*Math.cos(3*ano_jup-3*ano_sat);
	cl-=     14*Math.sin(ano_jup-ano_sat);
	cl-=     13*Math.sin(3*ano_jup-4*ano_sat);
	cl-=      9*Math.cos(2*lon_jup);
	cl+=      9*Math.cos(ano_sat);
	cl-=      9*Math.sin(ano_sat);
	cl-=      9*Math.sin(3*ano_jup-2*ano_sat);
	cl+=      9*Math.sin(4*ano_jup-5*ano_sat);
	cl+=      9*Math.sin(2*ano_jup-6*ano_sat+3*ano_ura);
	cl-=      8*Math.cos(4*ano_jup-10*ano_sat);
	cl+=      7*Math.cos(3*ano_jup-4*ano_sat);
	cl-=      7*Math.cos(ano_jup-3*ano_sat);
	cl-=      7*Math.sin(4*ano_jup-10*ano_sat);
	cl-=      7*Math.sin(ano_jup-3*ano_sat);
	cl+=      6*Math.cos(4*ano_jup-5*ano_sat);
	cl-=      6*Math.sin(3*ano_jup-3*ano_sat);
	cl+=      5*Math.cos(2*ano_sat);
	cl-=      4*Math.sin(4*ano_jup-4*ano_sat);
	cl-=      4*Math.cos(3*ano_sat);
	cl+=      4*Math.cos(2*ano_jup-ano_sat);
	cl-=      4*Math.cos(3*ano_jup-2*ano_sat);
	cl-=      4*time_prm*Math.cos(2*ano_jup);
	cl+=      3*time_prm*Math.sin(2*ano_jup);
	cl+=      3*Math.cos(5*ano_sat);
	cl+=      3*Math.cos(5*ano_jup-10*ano_sat);
	cl+=      3*Math.sin(2*ano_sat);
	cl-=      2*Math.sin(2*lon_jup-ano_jup);
	cl+=      2*Math.sin(2*lon_jup+ano_jup);
	cl-=      2*time_prm*Math.sin(3*ano_jup-5*ano_sat);
	cl-=      2*time_prm*Math.sin(ano_jup-5*ano_sat);

	cb =-4692*Math.cos(ano_jup);
	cb+=  259*Math.sin(ano_jup);
	cb+=  227;
	cb-=  227*Math.cos(2*ano_jup);
	cb+=   30*time_prm*Math.sin(ano_jup);
	cb+=   21*time_prm*Math.cos(ano_jup);
	cb+=   16*Math.sin(3*ano_jup-5*ano_sat);
	cb-=   13*Math.sin(ano_jup-5*ano_sat);
	cb-=   12*Math.cos(3*ano_jup);
	cb+=   12*Math.sin(2*ano_jup);
	cb+=    7*Math.cos(3*ano_jup-5*ano_sat);
	cb-=    5*Math.cos(ano_jup-5*ano_sat);

	rv =5.20883;
	rv-=0.25122*Math.cos(ano_jup);
	rv-=0.00604*Math.cos(2*ano_jup);
	rv+=0.00260*Math.cos(2*ano_jup-2*ano_sat);
	rv-=0.00170*Math.cos(3*ano_jup-5*ano_sat);
	rv-=0.00106*Math.sin(2*ano_jup-2*ano_sat);
	rv-=0.00091*time_prm*Math.sin(ano_jup);
	rv-=0.00084*time_prm*Math.cos(ano_jup);
	rv+=0.00069*Math.sin(2*ano_jup-3*ano_sat);
	rv-=0.00067*Math.sin(ano_jup-5*ano_sat);
	rv+=0.00066*Math.sin(3*ano_jup-5*ano_sat);
	rv+=0.00063*Math.sin(ano_jup-ano_sat);
	rv-=0.00051*Math.cos(2*ano_jup-3*ano_sat);
	rv-=0.00046*Math.sin(ano_jup);
	rv-=0.00029*Math.cos(ano_jup-5*ano_sat);
	rv+=0.00027*Math.cos(ano_jup-2*ano_sat);
	rv-=0.00022*Math.cos(3*ano_jup);
	rv-=0.00021*Math.sin(2*ano_jup-5*ano_sat);
}

/****************************
* saturn position cal sub 1 *
****************************/
function Saturn_cal1() {
	cl =1296000*lon_sat/Math.PI/2;
	cl+=  23045*Math.sin(ano_sat);
	cl+=   5014*time_prm;
	cl-=   2689*Math.cos(2*ano_jup-5*ano_sat);
	cl+=   2507;
	cl+=   1177*Math.sin(2*ano_jup-5*ano_sat);
	cl-=    826*Math.cos(2*ano_jup-4*ano_sat);
	cl+=    802*Math.sin(2*ano_sat);
	cl+=    425*Math.sin(ano_jup-2*ano_sat);
	cl-=    229*time_prm*Math.cos(ano_sat);
	cl-=    153*Math.cos(2*ano_jup-6*ano_sat);
	cl-=    142*time_prm*Math.sin(ano_sat);
	cl-=    114*Math.cos(ano_sat);
	cl+=    101*time_prm*Math.sin(2*ano_jup-5*ano_sat);
	cl-=     70*Math.cos(2*lon_sat);
	cl+=     67*Math.sin(2*lon_sat);
	cl+=     66*Math.sin(2*ano_jup-6*ano_sat);
	cl+=     60*time_prm*Math.cos(2*ano_jup-5*ano_sat);
	cl+=     41*Math.sin(ano_jup-3*ano_sat);
	cl+=     39*Math.sin(3*ano_sat);
	cl+=     31*Math.sin(ano_jup-ano_sat);
	cl+=     31*Math.sin(2*ano_jup-2*ano_sat);
	cl-=     29*Math.cos(2*ano_jup-3*ano_sat);
	cl-=     28*Math.sin(2*ano_jup-6*ano_sat+3*ano_ura);
	cl+=     28*Math.cos(ano_jup-3*ano_sat);
	cl+=     22*time_prm*Math.sin(2*ano_jup-4*ano_sat);
	cl-=     22*Math.sin(ano_sat-3*ano_ura);
	cl+=     20*Math.sin(2*ano_jup-3*ano_sat);
	cl+=     20*Math.cos(4*ano_jup-10*ano_sat);
	cl+=     19*Math.cos(2*ano_sat-3*ano_ura);
	cl+=     19*Math.sin(4*ano_jup-10*ano_sat);
	cl-=     17*time_prm*Math.cos(2*ano_sat);
	cl-=     16*Math.cos(ano_sat-3*ano_ura);
	cl-=     12*Math.sin(2*ano_jup-4*ano_sat);
	cl+=     12*Math.cos(ano_jup);
	cl-=     12*Math.sin(2*ano_sat-2*ano_ura);
	cl-=     11*time_prm*Math.sin(2*ano_sat);
	cl-=     11*Math.cos(2*ano_jup-7*ano_sat);
	cl+=     10*Math.sin(2*ano_sat-3*ano_ura);
	cl+=     10*Math.cos(2*ano_jup-2*ano_sat);
	cl+=      9*Math.sin(4*ano_jup-9*ano_sat);
	cl-=      8*Math.sin(ano_sat-2*ano_ura);
	cl-=      8*Math.cos(2*lon_sat+ano_sat);
	cl+=      8*Math.cos(2*lon_sat-ano_sat);
	cl+=      8*Math.cos(ano_sat-ano_ura);
	cl-=      8*Math.sin(2*lon_sat-ano_sat);
	cl+=      7*Math.sin(2*lon_sat+ano_sat);
	cl-=      7*Math.cos(ano_jup-2*ano_sat);
	cl-=      7*Math.cos(2*ano_sat);
	cl-=      6*time_prm*Math.sin(4*ano_jup-10*ano_sat);
	cl+=      6*time_prm*Math.cos(4*ano_jup-10*ano_sat);
	cl+=      6*time_prm*Math.sin(2*ano_jup-6*ano_sat);
	cl-=      5*Math.sin(3*ano_jup-7*ano_sat);
	cl-=      5*Math.cos(3*ano_jup-3*ano_sat);
	cl-=      5*Math.cos(2*ano_sat-2*ano_ura);
	cl+=      5*Math.sin(3*ano_jup-4*ano_sat);
	cl+=      5*Math.sin(2*ano_jup-7*ano_sat);
	cl+=      4*Math.sin(3*ano_jup-3*ano_sat);
	cl+=      4*Math.sin(3*ano_jup-5*ano_sat);
	cl+=      4*time_prm*Math.cos(ano_jup-2*ano_sat);
	cl+=      3*time_prm*Math.cos(2*ano_jup-4*ano_sat);
	cl+=      3*Math.cos(2*ano_jup-6*ano_sat+3*ano_ura);
	cl-=      3*time_prm*Math.sin(2*lon_sat);
	cl+=      3*time_prm*Math.cos(2*ano_jup-6*ano_sat);
	cl-=      3*time_prm*Math.cos(2*lon_sat);
	cl+=      3*Math.cos(3*ano_jup-7*ano_sat);
	cl+=      3*Math.cos(4*ano_jup-9*ano_sat);
	cl+=      3*Math.sin(3*ano_jup-6*ano_sat);
	cl+=      3*Math.sin(2*ano_jup-ano_sat);
	cl+=      3*Math.sin(ano_jup-4*ano_sat);
	cl+=      2*Math.cos(3*ano_sat-3*ano_ura);
	cl+=      2*time_prm*Math.sin(ano_jup-2*ano_sat);
	cl+=      2*Math.sin(4*ano_sat);
	cl-=      2*Math.cos(3*ano_jup-4*ano_sat);
	cl-=      2*Math.cos(2*ano_jup-ano_sat);
	cl-=      2*Math.sin(2*ano_jup-7*ano_sat+3*ano_ura);
	cl+=      2*Math.cos(ano_jup-4*ano_sat);
	cl+=      2*Math.cos(4*ano_jup-11*ano_sat);
	cl-=      2*Math.sin(ano_sat-ano_ura);

	cb =8297*Math.sin(ano_sat);
	cb-=3346*Math.cos(ano_sat);
	cb+= 462*Math.sin(2*ano_sat);
	cb-= 189*Math.cos(2*ano_sat);
	cb+= 185;
	cb+=  79*time_prm*Math.cos(ano_sat);
	cb-=  71*Math.cos(2*ano_jup-4*ano_sat);
	cb+=  46*Math.sin(2*ano_jup-6*ano_sat);
	cb-=  45*Math.cos(2*ano_jup-6*ano_sat);
	cb+=  29*Math.sin(3*ano_sat);
	cb-=  20*Math.cos(2*ano_jup-3*ano_sat);
	cb+=  18*time_prm*Math.sin(ano_sat);
	cb-=  14*Math.cos(2*ano_jup-5*ano_sat);
	cb-=  11*Math.cos(3*ano_sat);
	cb-=  10*time_prm;
	cb+=   9*Math.sin(ano_jup-3*ano_sat);
	cb+=   8*Math.sin(ano_jup-ano_sat);
	cb-=   6*Math.sin(2*ano_jup-3*ano_sat);
	cb+=   5*Math.sin(2*ano_jup-7*ano_sat);
	cb-=   5*Math.cos(2*ano_jup-7*ano_sat);
	cb+=   4*Math.sin(2*ano_jup-5*ano_sat);
	cb-=   4*time_prm*Math.sin(2*ano_sat);
	cb-=   3*Math.cos(ano_jup-ano_sat);
	cb+=   3*Math.cos(ano_jup-3*ano_sat);
	cb+=   3*time_prm*Math.sin(2*ano_jup-4*ano_sat);
	cb+=   3*Math.sin(ano_jup-2*ano_sat);
	cb+=   2*Math.sin(4*ano_sat);
	cb-=   2*Math.cos(2*ano_jup-2*ano_sat);

	rv =9.55774;
	rv-=0.53252*Math.cos(ano_sat);
	rv-=0.01878*Math.sin(2*ano_jup-4*ano_sat);
	rv-=0.01482*Math.cos(2*ano_sat);
	rv+=0.00817*Math.sin(ano_jup-ano_sat);
	rv-=0.00539*Math.cos(ano_jup-2*ano_sat);
	rv-=0.00524*time_prm*Math.sin(ano_sat);
	rv+=0.00349*Math.sin(2*ano_jup-5*ano_sat);
	rv+=0.00347*Math.sin(2*ano_jup-6*ano_sat);
	rv+=0.00328*time_prm*Math.cos(ano_sat);
	rv-=0.00225*Math.sin(ano_sat);
	rv+=0.00149*Math.cos(2*ano_jup-6*ano_sat);
	rv-=0.00126*Math.cos(2*ano_jup-2*ano_sat);
	rv+=0.00104*Math.cos(ano_jup-ano_sat);
	rv+=0.00101*Math.cos(2*ano_jup-5*ano_sat);
	rv+=0.00098*Math.cos(ano_jup-3*ano_sat);
	rv-=0.00073*Math.cos(2*ano_jup-3*ano_sat);
	rv-=0.00062*Math.cos(3*ano_sat);
	rv+=0.00042*Math.sin(2*ano_sat-3*ano_ura);
	rv+=0.00041*Math.sin(2*ano_jup-2*ano_sat);
	rv-=0.00040*Math.sin(ano_jup-3*ano_sat);
	rv+=0.00040*Math.cos(2*ano_jup-4*ano_sat);
	rv-=0.00028*time_prm;
	rv-=0.00023*Math.sin(ano_jup);
	rv+=0.00020*Math.sin(2*ano_jup-7*ano_sat);
}

/****************************
* uranus position cal sub 1 *
****************************/
function Uranus_cal1() {
	cl =1296000*lon_ura/Math.PI/2;
	cl+=  19397*Math.sin(ano_ura);
	cl+=    570*Math.sin(2*ano_ura);
	cl-=    536*time_prm*Math.cos(ano_ura);
	cl+=    143*Math.sin(ano_sat-2*ano_ura);
	cl+=    110*time_prm*Math.sin(ano_ura);
	cl+=    102*Math.sin(ano_sat-3*ano_ura);
	cl+=     76*Math.cos(ano_sat-3*ano_ura);
	cl-=     49*Math.sin(ano_jup-ano_ura);
	cl+=     32*time_prm*time_prm;
	cl-=     30*time_prm*Math.cos(2*ano_ura);
	cl+=     29*Math.sin(2*ano_jup-6*ano_sat+3*ano_ura);
	cl+=     29*Math.cos(2*ano_ura-2*ano_nep);
	cl-=     28*Math.cos(ano_ura-ano_nep);
	cl+=     23*Math.sin(3*ano_ura);
	cl-=     21*Math.cos(ano_jup-ano_ura);
	cl+=     20*Math.sin(ano_ura-ano_nep);
	cl+=     20*Math.cos(ano_sat-2*ano_ura);
	cl-=     19*Math.cos(ano_sat-ano_ura);
	cl+=     17*Math.sin(2*ano_ura-3*ano_nep);
	cl+=     14*Math.sin(3*ano_ura-3*ano_nep);
	cl+=     13*Math.sin(ano_sat-ano_ura);
	cl-=     12*time_prm*time_prm*Math.cos(ano_ura);
	cl-=     12*Math.cos(ano_ura);
	cl+=     10*Math.sin(2*ano_ura-2*ano_nep);
	cl-=      9*Math.sin(2*lat_ura);
	cl-=      9*time_prm*time_prm*Math.sin(ano_ura);
	cl+=      9*Math.cos(2*ano_ura-3*ano_nep);
	cl+=      8*time_prm*Math.cos(ano_sat-2*ano_ura);
	cl+=      7*time_prm*Math.cos(ano_sat-3*ano_ura);
	cl-=      7*time_prm*Math.sin(ano_sat-3*ano_ura);
	cl+=      7*time_prm*Math.sin(2*ano_ura);
	cl+=      6*Math.sin(2*ano_jup-6*ano_sat+2*ano_ura);
	cl+=      6*Math.cos(2*ano_jup-6*ano_sat+2*ano_ura);
	cl+=      5*Math.sin(ano_sat-4*ano_ura);
	cl-=      4*Math.sin(3*ano_ura-4*ano_nep);
	cl+=      4*Math.cos(3*ano_ura-3*ano_nep);
	cl-=      3*Math.cos(ano_nep);
	cl-=      2*Math.sin(ano_nep);

	cb =2775*Math.sin(lat_ura);
	cb+= 131*Math.sin(ano_ura-lat_ura);
	cb+= 130*Math.sin(ano_ura+lat_ura);

	rv =19.21216;
	rv-= 0.90154*Math.cos(ano_ura);
	rv-= 0.02488*time_prm*Math.sin(ano_ura);
	rv-= 0.02121*Math.cos(2*ano_ura);
	rv-= 0.00585*Math.cos(ano_sat-2*ano_ura);
	rv-= 0.00508*time_prm*Math.cos(ano_ura);
	rv-= 0.00451*Math.cos(ano_jup-ano_ura);
	rv+= 0.00336*Math.sin(ano_sat-ano_ura);
	rv+= 0.00198*Math.sin(ano_jup-ano_ura);
	rv+= 0.00118*Math.cos(ano_sat-3*ano_ura);
	rv+= 0.00107*Math.sin(ano_sat-2*ano_ura);
	rv-= 0.00103*time_prm*Math.sin(2*ano_ura);
	rv-= 0.00081*Math.cos(3*ano_ura-3*ano_nep);
}

/*****************************
* neptune position cal sub 1 *
*****************************/
function Neptune_cal1() {
	cl =1296000*lon_nep/Math.PI/2;
	cl+=   3523*Math.sin(ano_nep);
	cl-=     50*Math.sin(2*lat_nep);
	cl-=     43*time_prm*Math.cos(ano_nep);
	cl+=     29*Math.sin(ano_jup-ano_nep);
	cl+=     19*Math.sin(2*ano_nep);
	cl-=     18*Math.cos(ano_jup-ano_nep);
	cl+=     13*Math.cos(ano_sat-ano_nep);
	cl+=     13*Math.sin(ano_sat-ano_nep);
	cl-=      9*Math.sin(2*ano_ura-3*ano_nep);
	cl+=      9*Math.cos(2*ano_ura-2*ano_nep);
	cl-=      5*Math.cos(2*ano_ura-3*ano_nep);
	cl-=      4*time_prm*Math.sin(ano_nep);
	cl+=      4*Math.cos(ano_ura-2*ano_nep);
	cl+=      4*time_prm*time_prm*Math.sin(ano_nep);

	cb =6404*Math.sin(lat_nep);
	cb+=  55*Math.sin(ano_nep+lat_nep);
	cb+=  55*Math.sin(ano_nep-lat_nep);
	cb-=  33*time_prm*Math.sin(lat_nep);

	rv =30.07175;
	rv-= 0.25701*Math.cos(ano_nep);
	rv-= 0.00787*Math.cos(2*lon_ura-ano_ura-2*lon_nep);
	rv+= 0.00409*Math.cos(ano_jup-ano_nep);
	rv-= 0.00314*time_prm*Math.sin(ano_nep);
	rv+= 0.00250*Math.sin(ano_jup-ano_nep);
	rv-= 0.00194*Math.sin(ano_sat-ano_nep);
	rv+= 0.00185*Math.cos(ano_sat-ano_nep);
}

/***************************
* Pluto position cal sub 1 *
***************************/
function Pluto_cal1() {
	cl =1296000*lon_plu/Math.PI/2;
	cl+= 101577*Math.sin(ano_plu);
	cl+=  15517*Math.sin(2*ano_plu);
	cl-=   3593*Math.sin(2*lat_plu);
	cl+=   3414*Math.sin(3*ano_plu);
	cl-=   2201*Math.sin(ano_plu-2*lat_plu);
	cl-=   1871*Math.sin(ano_plu+2*lat_plu);
	cl+=    839*Math.sin(4*ano_plu);
	cl-=    757*Math.sin(2*ano_plu+2*lat_plu);
	cl-=    285*Math.sin(3*ano_plu+2*lat_plu);
	cl+=    227*time_prm*time_prm*Math.sin(ano_plu);
	cl+=    218*Math.sin(2*ano_plu-2*lat_plu);
	cl+=    200*time_prm*Math.sin(ano_plu);

	cb =57726*Math.sin(lat_plu);
	cb+=15257*Math.sin(ano_plu-lat_plu);
	cb+=14102*Math.sin(ano_plu+lat_plu);
	cb+= 3870*Math.sin(2*ano_plu+lat_plu);
	cb+= 1138*Math.sin(3*ano_plu+lat_plu);
	cb+=  472*Math.sin(2*ano_plu-lat_plu);
	cb+=  353*Math.sin(4*ano_plu+lat_plu);
	cb-=  144*Math.sin(ano_plu-3*lat_plu);
	cb-=  119*Math.sin(3*lat_plu);
	cb-=  111*Math.sin(ano_plu+3*lat_plu);

	rv =40.74638;
	rv-= 9.58235*Math.cos(ano_plu);
	rv-= 1.16703*Math.cos(2*ano_plu);
	rv-= 0.22649*Math.cos(3*ano_plu);
	rv-= 0.04996*Math.cos(4*ano_plu);
}

/**************************************
* pluto position cal sub 2            *
*   input  : jd = julian day          *
*   output : cl = longitude [sec,deg] *
*            cb = latitude  [sec,deg] *
*            rv = radius    [AU]      *
**************************************/
function Pluto_cal2(jd) {
	var t=(jd-2451545.0)/36525;

	cl =241.82574;
	cl+=179.09519*t;
	cl+= 15.81087*Cosd( 246.556453*t+298.348019);
	cl+=  1.18379*Cosd( 551.34710 *t+351.67676);
	cl+=  0.07886*Cosd( 941.622   *t+ 41.989);
	cl+=  0.00861*Cosd(2836.46    *t+ 60.35);
	cl+=  0.00590*Cosd(1306.75    *t+112.91);
	cl+=  0.00145*Cosd(2488.14    *t+ 19.01);
	cl+=  0.00022*Cosd(5861.8     *t+ 77.9);
	cl+=  0.00013*Cosd(3288.8     *t+293.0);
	cl*= 3600;

	cb =17.04550*Cosd( 172.554318*t+ 42.574982);
	cb+= 2.45310*Cosd( 415.60630 *t+ 66.15350);
	cb-= 2.30285;
	cb+= 0.26775*Cosd( 713.1227  *t+105.0840);
	cb+= 0.01855*Cosd(1089.202   *t+146.660);
	cb+= 0.00119*Cosd(2658.22    *t+293.06);
	cb+= 0.00098*Cosd(3055.6     *t+ 18.8);
	cb+= 0.00090*Cosd(1532.6     *t+213.7);
	cb+= 0.00042*Cosd(2342.3     *t+254.2);
	cb*=3600;

	rv =38.662489;
	rv+= 8.670489  *Cosd( 181.3383*t+198.4973);
	rv+= 0.333884  *Cosd( 475.963 *t+228.717);
	rv+= 0.008426  *Cosd( 909.8   *t+252.9);
	rv+= 0.007619*t*Cosd(1425.9   *t+ 31.0);
	rv+= 0.004902  *Cosd(2831.6   *t+149.4);
	rv+= 0.002543*t*Cosd(2196.1   *t+199.5);
	rv+= 0.001188  *Cosd(1748.0   *t+114.1);
	rv+= 0.000390  *Cosd(3188     *t+ 15);
	rv+= 0.000116  *Cosd(5860     *t+169);
}

var pcl=new Array(22); /* planet & casp celestial longitude */
var pcb=new Array(10); /* planet celestial latitude */

var c=new Array(8);
c[0]=0.0035; /* mercury */
c[1]=0.0048; /* venus */
c[2]=0.0071; /* mars */
c[3]=0.0129; /* jupiter */
c[4]=0.0174; /* saturn */
c[5]=0.0249; /* uranus */
c[6]=0.0312; /* neptune */
c[7]=0.0347; /* pluto */

/******************************************************
* planet geocentric ecliptic position calculate sub   *
*   input  : jd    = julian day                       *
*   output : pcl[] = planet celestial longitude [rad] *
*            pcb[] = planet celestial latitude  [rad] *
******************************************************/
function Planet_cal(jd) {
	var gcl,gcb,grv, sl,sr, sx,sy, x,y,z, i;

	Get_pr1(jd); /* planet parameter cal */

	for(i=0; i<10; i++) {
		if(i==0) { /* sun position cal */
			Sun_cal1();
			gcl=cl/1296000;
			gcl=(gcl-Math.floor(gcl))*Math.PI*2;
			gcb=cb;
			sl=gcl;
			sr=rv;
			sx=rv*Math.cos(gcl);
			sy=rv*Math.sin(gcl);
			gcl-=0.0057*Math.PI/180; /* apparent longitude of sun */
		} else if(i==1) { /* moon position cal */
			Moon_cal1();
			gcl=cl*Math.PI/648000;
			gcb=cb*Math.PI/648000;
		} else { /* planet position cal */
			if(i==2)      Mercury_cal1();
			else if(i==3) Venus_cal1();
			else if(i==4) Mars_cal1();
			else if(i==5) Jupiter_cal1();
			else if(i==6) Saturn_cal1();
			else if(i==7) Uranus_cal1();
			else if(i==8) Neptune_cal1();
			else {
				if((jd>2432384.28546) && (jd<2479514.98634))
					Pluto_cal2(jd);  /* 1947 - 2076 */
				else
					Pluto_cal1();
			}
			cl/=1296000;
			cl =(cl-Math.floor(cl))*Math.PI*2;
			cb*=Math.PI/648000;

			/* change geoocentric */
			x=rv*Math.cos(cb)*Math.cos(cl)+sx;
			y=rv*Math.cos(cb)*Math.sin(cl)+sy;
			z=rv*Math.sin(cb);
			grv=Math.sqrt(x*x+y*y+z*z);
			gcb=Math.asin(z/grv);
			gcl=Math.atan2(y,x);
			gcl-=(0.0057*Math.PI/180)/sr*Math.cos(gcl-sl)
			+(c[i-2]*Math.PI/180)/rv*Math.cos(gcl-cl);
		}
		gcl/=Math.PI*2; /* longitude normalize */
		pcl[i]=(gcl-Math.floor(gcl))*Math.PI*2;
		pcb[i]=gcb;
	}
}

function toInt(num) {
	var n = parseInt(num,10);
	if (n) {
		return n;
	} else if (isNaN(n)) {
		return 0;
	}
	return 0;
}
function toFloat(num) {
	var n = parseFloat(num,10);
	if (n) {
		return n;
	} else if (isNaN(n)) {
		return 0;
	}
	return 0;
}
function setDate() {
	if ($.cookie("birth_day")) {
		var ymd_hm = $.cookie("birth_day").split(" ");
		var ymd = ymd_hm[0].split("-");
		$("#iYear").val(ymd[0]);
		$("#iMonth").val(ymd[1]);
		$("#iDay").val(ymd[2]);
		var hm  = ymd_hm[1].split(":");
		$("#iHour").val(hm[0]);
		$("#iMinute").val(hm[1]);
	}
}
function julianDate() {
	var yearOffset = {"0":0, "1":1867, "2":1911, "3":1925, "4":1988};
	/************************
	* Get birth date & time *
	************************/
	var yearType = $("#yearType").val();
	var iYear = toInt($("#iYear").val());
	iYear += yearOffset[yearType];
	var iMonth = toInt($("#iMonth").val());
	var iDay = toInt($("#iDay").val());
	var iHour = toInt($("#iHour").val());
	var iMinute = toInt($("#iMinute").val());
	this.birthDay = zeroPad(iYear,4) + "-" + zeroPad(iMonth,2)  + "-" + zeroPad(iDay,2)  + " " + zeroPad(iHour,2) + ":" + zeroPad(iMinute,2);

	/*****************
	* julian day cal *
	*****************/
	if (iMonth < 3) {
		iYear -= 1;
		iMonth += 12;
	}
	var t =  Math.floor(iYear / 100);
	var jd = Math.floor(iYear * 365.25) - t + Math.floor(t / 4);
	jd += Math.floor(30.6001 * (iMonth + 1)) + iDay + 1720996.5;
	jd += iHour / 24 + iMinute / 1440;
	jd -= 9.0 / 24.0;
	this.t  = t;
	this.jd = jd;
}
/**************************************
* Get birthplace longitude & latitude *
**************************************/
function bornLocale() {
	var lon, lat;
	var iPlace = $("#iPlace").val();
	if (iPlace == 0) {
		var iLonsgn = toInt($("#iLonsgn").val());
		var iLondeg = toInt($("#iLondeg").val());
		var iLonmin = toInt($("#iLonmin").val());
		lon = (iLondeg + iLonmin / 60) / 180 * Math.PI * iLonsgn;
		var iLatsgn = toInt($("#iLatsgn").val());
		var iLatdeg = toInt($("#iLatdeg").val());
		var iLatmin = toInt($("#iLatmin").val());
		lat = (iLatdeg + iLatmin / 60) / 180 * Math.PI * iLatsgn;
	} else {
		lon = pLon[iPlace] / 10800 * Math.PI;
		lat = pLat[iPlace] / 10800 * Math.PI;
	}
	this.lon = lon;
	this.lat = lat;
}
/**************************************
* Set birthday to cookie              *
**************************************/
function cookieBirthday(birth_day) {
	if ($.cookie("birth_day") != birth_day) {
		$.cookie("birth_day", birth_day, {expires:3650});
		data_save(birth_day);
	}
}

var asp_def = [0.0,5.0,1.5,1.5,3.0,1.5,3.0,3.0,1.5,1.5,3.0,1.0];
/*********************
**   Main routine   **
*********************/
function planet_calc() {
	var _juliusDate = new julianDate();
	var jd = _juliusDate.jd; /* julian day [day] */
	var t  = _juliusDate.t;

	/*************************
	* Set birthday to cookie *
	**************************/
	cookieBirthday(_juliusDate.birthDay);

	var _bornLocale = new bornLocale();
	var lon = _bornLocale.lon; /* birthplace longitude [rad] */
	var lat = _bornLocale.lat; /* birthplace latitude [rad] */

	/******************
	* Get aspect orbs *
	******************/
	var iAsp=new Array(12); /* aspect orbs value [deg,min] */
	var idx = 0;
	if ($(".Aspect")) {
		iAsp[idx] = 0;
		$(".Aspect").each(function(){
			idx++;
			iAsp[idx] = Math.floor(toFloat($(this).val())*60);
		});
	} else {
		iAsp = asp_def.slice(0);
		for (idx=0;idx<iAsp.length;idx++) {
			iAsp[idx] = Math.floor(iAsp[idx]*60);
		}
	}

	/********************************
	* obliquity of the ecliptic cal *
	********************************/
	t=(jd-2451545)/36525;
	var e =23.43928-0.01301*t; /* obliquity of the ecliptic [rad] */
	e+=0.00256*Cosd( 1934*t + 235);
	e+=0.00016*Cosd(72002*t + 201);
	e*=Math.PI/180; /* e value [rad] */

	/*************************
	* local sideral time cal *
	*************************/
	t =jd-2442412.5; /* from 1975 jan/0 0:0 */
	var tt=t-Math.floor(t);
	t/=365.25;

	/* local sideral time [rad] */
	var st =99.0361+360.00770*t+360*tt; /* greenwich sideral time get */
	st+=0.0044*Sind(-19.3*t+68.6);
	st+=0.0003*Sind(720  *t+18);
	st =st*Math.PI/180+lon; /* local sideral time get */
	st/=Math.PI*2; /* value normalize */
	st-=Math.floor(st);
	st*=Math.PI*2; /* local sideral time value [rad] */

	/****************
	* ascendant cal *
	****************/
	var x, y, z;
	x=Math.cos(st+Math.PI/2)*Math.cos(e)+Math.sin(e)/Math.tan(lat+Math.PI/2);
	y=Math.sin(st+Math.PI/2);
	var asc=Math.atan2(y,x); /* ascendant celestial position [rad] */
	if(asc<0) asc+=Math.PI*2;

	var i,j,k;
	/*****************
	* house casp cal *
	*****************/
	pcl[10]=asc; /* ascendant set */
	pcl[16]=asc+Math.PI; /* descandant set */

	var ra; /* right ascension [rad] */
	var dc; /* declination [rad] */
	var ha; /* house angle [rad] */
	var ct,ccl1,ccl2,ccle;
	for(i=1; i<6; i++) {
		ccl1=pcl[i+9]; /* min angle set */
		ccl2=asc+Math.PI; /* max angle */
		ccle=i*Math.PI/6; /* target angle */

		while(true) {
			cl=(ccl1+ccl2)/2;

			/* translate ecliptic to equatorial */
			x=Math.cos(cl);
			y=Math.sin(cl)*Math.cos(e);
			z=Math.sin(cl)*Math.sin(e);
			ra=Math.atan2(y,x);
			if(ra<0)
				ra+=Math.PI*2;
			dc=Math.asin(z);

			/* translate equatorial to placidus house angle */
			ct=-Math.tan(lat)*Math.tan(dc);
			if((ct<-1)||(ct>1)) {
				cl=null; /* cal impossible */
				break;
			}
			tt=Math.acos(ct); /* rise & set cal */
			t=st-ra; /* hour angle cal */
			if(t<-Math.PI)
				t+=Math.PI*2;
			else if(t>Math.PI)
				t-=Math.PI*2;
			if((t>=-tt)&&(t<=tt)) { /* above the horison */
				ha=Math.PI/2*(3-t/tt);
			} else { /* below the horison */
				t+=Math.PI;
				if(t>Math.PI) t-=Math.PI*2;
				ha=(1-t/(Math.PI-tt))*Math.PI/2;
			}
			if(ha<0)
				ha+=Math.PI*2; /* house angle normalize */
			else if(ha>=Math.PI*2)
				ha-=Math.PI*2;
			ha-=ccle;
			if(ha>0)
				ccl2=cl;
			else
				ccl1=cl;
			if(Math.abs(ha) < 0.000001)
				break;
		}

		pcl[i+10]=cl;
		pcl[i+16]=cl+Math.PI;
	}
	for(i=10; i<22; i++) {
		if (pcl[i]>=Math.PI*2)
			pcl[i]-=Math.PI*2;
		pcl[i]=Math.floor(pcl[i]*10800/Math.PI);
	}

	/***************************
	* planets dairy motion cal *
	***************************/
	var pdm=new Array(10); /* planet dairy motion */
	Planet_cal(jd+0.5);
	for (i=0; i<10; i++) {
		pdm[i]=pcl[i];
	}
	Planet_cal(jd-0.5);
	for(i=0; i<10; i++) {
		pdm[i]-=pcl[i];
		if (pdm[i]>Math.PI)
			pdm[i]-=Math.PI*2;
		else if(pdm[i]< -Math.PI)
			pdm[i]+=Math.PI*2;
	}

	/***********************
	* planets position cal *
	***********************/
	var pdc=new Array(10); /* planet declination */
	Planet_cal(jd);
	for(i=0; i<10; i++)	{
		cl=pcl[i];
		cb=pcb[i];

		/* translate ecliptic to equatorial */
		z =Math.sin(cb)*Math.cos(e)+Math.cos(cb)*Math.sin(cl)*Math.sin(e);
		dc=Math.asin(z);

		pcl[i]=Math.floor(cl*10800/Math.PI);
		pdc[i]=Math.floor(dc*10800/Math.PI);
	}

	/****************
	* result output *
	****************/
	resultPrint(pcl);
}
