messier -- ¸Þ½Ã¿¡ °üÃøÁ¤º¸(¿À´ÃÀüü)

... Loading ...

¼Ò½º´Ý±â | 24Àý±â °è»ê | À½¾ç·Âº¯È­, º°ÀÚ¸®, ÀÏ¿ù½Ä °è»ê | ¸Þ½Ã¿¡ °üÃøÁ¤º¸(½Ç½Ã°£) | ¸Þ½Ã¿¡ °üÃøÁ¤º¸(¿À´ÃÀüü) | deltaT °è»ê | ºÎÈ°Àý ³¯Â¥ °è»ê
<?php
##
## same as calendar::hms2h()
##
function hm2h($hm)
{
  list(
$h,$m) = explode(':',$hm);

  return (
$h+$m/60);
}

function 
mrskey($rs$sunrt$sunst$twrt$twst)
{
  if(
$rs 12$k = ($rs $sunst) ? : (($rs $twst) ? 4);
  else 
$k = ($rs $twrt) ? : (($rs $sunrt) ? 10);

  return 
$k;
}

//if(preg_match('/gzip/',$_SERVER['HTTP_ACCEPT_ENCODING']) && !headers_sent()) @ini_set('zlib.output_compression','On');

require_once '_lib/class.calendar.php'// new class
require_once '_lib/class.solar.php'// new class
require_once '_lib/class.lunar.php'// new class
require_once 'class.stellar.php'// new class
require_once 'class.moonrise.php'// new class

$_js_utils_php 1;
$_js_jquery_min_php 1;
$_js_jquery_tablesorter_min_php 1;
$_js_jquery_metadata_php 1;

$_uri $_SERVER['REQUEST_URI'];
$_self basename($_SERVER['SCRIPT_NAME']);
$_baseurl 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['SCRIPT_NAME']).'/';

$_tablewidth 740// px

if($_SERVER['PATH_INFO'])
{
  
$_datetime str_replace('/','',$_SERVER['PATH_INFO']);
  list(
$_date,$_time) = explode('.',$_datetime);

  
$_d substr($_date,-2);
  
$_m substr($_date,-4,2);
  
$_y preg_replace("/${_m}${_d}$/",'',$_date);
  
$_h substr($_time,0,2);
  
$_i substr($_time,2,2);
}

$title 'messier -- ¸Þ½Ã¿¡ °üÃøÁ¤º¸(¿À´ÃÀüü)';

## locations
##
$_locs calendar::location_kr(NULL);
unset(
$_locs[1],$_locs[2],$_locs[3]);
$_locs array_values($_locs);

$seluloc $seldloc $loc = array();
$uidx $didx 0;
if(
$uloc $_COOKIE['uloc'])
{
  list(
$uidx,$uloc) = explode('|',trim(urldecode($uloc)));
  if(
$uidx == 0)
  {
    
$didx $uloc;
    
$loc $_locs[$uloc];
  } else
  {
    list(
$ulon,$ulat) = explode(',',$uloc);
    
$loc[0] = $ulondeg calendar::dms2deg($ulon,2);
    
$loc[1] = $ulatdeg calendar::dms2deg($ulat,2);
    
$loc[2] = '»ç¿ëÀÚÀÔ·Â';
  }
}
else 
$loc $_locs[0];

$seluloc[$uidx] = 'CHECKED';
$seldloc[$didx] = 'SELECTED';

## set location
##
list($lon,$lat) = $loc;

$_locsp '';
foreach(
$_locs AS $k=>$arr)
{
  
$_locsp .= "<option value='$k$seldloc[$k]>$arr[0]$arr[1] ($arr[2])</option>\n";
}

$html stellar::today($loc,TRUE);

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE><?=$title?></TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<base href="<?=$_baseurl?>" />
<SCRIPT LANGUAGE="JavaScript" type="text/JavaScript">
<!--
var starttime = (new Date()).getTime();
//-->
</SCRIPT>
<STYLE TYPE="text/css">
<!--
  * { font-family:NanumGothic,'³ª´®°íµñ','Malgun Gothic',Dotum,'µ¸¿ò',Gulim,'±¼¸²',Helvetica,Apple-Gothic; }
  body { font-size:10pt; /* background: url(/images/_N8D20.jpg) no-repeat 100% 0% fixed; */ }

  .ttcl, .tbcl, .tim { font-size:8pt; text-align:center; border-collapse:collapse; width:<?=$_tablewidth?>px; }
  .tbcl td, .tbclt td { border:1px solid #cccccc; vertical-align:middle; height:30px; }
  .thcl { font-weight:bold; height:40px; /* background-color:#cccccc; */ }
  .tbclt { font-size:8pt; text-align:center; border-collapse:collapse; width:<?=$_tablewidth?>px; }
  .ttcl td, .tim td { border:1px solid #cccccc; vertical-align:middle; height:20px; }

  .warn { border: 1px solid #ff0000; }
  .smallfont { font-size:8pt; }
  .vtfcolor { color:#333366; }
  .grey {  background-color:#cccccc; }
  .dark, .good {  background-color:#000000; color:#cccccc; }
  .better { background-color:#330000; color:#cccccc; }
  .some { background-color:#993300; }
  .bad { color:#ffffff; background-color:#990099; }

  th.header { background-image: url(/images/sort.default4.gif);
    background-repeat:no-repeat;
    background-position:100% 50%;
    cursor:pointer;
    border:1px solid #cccccc;
    padding-left:2px; /* 1px */
    padding-right:2px; } /* 5px */
  th.headerSortUp { background-image: url(/images/sort.desc4.gif);
    background-repeat:no-repeat; color:#ff00ff; }
  th.headerSortDown { background-image: url(/images/sort.asc4.gif);
    background-repeat:no-repeat; color:#ff00ff; }

  .tohide { color:#ffffff; font-size:0em; }
  .comment { color:#666699; font-size:11px; font-weight:normal; padding-left:0.1em; }
  .pointer { cursor:pointer; }

  input, select { font-size:9pt;
    font-weight:normal;
    background-color:#ffffff;
    /* border-color:336699; */
    /* border:solid 2px #4f7292; */
    border:solid 1px #4f7292;
    padding:0px;
    /* color:#1f476a; */
    /* text-align:baseline; */
    ime-mode:disabled; }

  #setto, #reset, #currto { width:119px; } /* button */

  /*
  .margenta { color:#ff00ff; }
  .markwarn { color:#ffffff; background-color:#990099; }
  */

  .easy { font-weight:bold; } /* background-color:#ffcc00 */
  .normal { font-weight:bold; } /* background-color:#006600 */
  .difficult { font-weight:bold; color:#999999; } /* background-color:#cc0000 */
  .challenge { font-weight:bold; color:#999999; } /* background-color:#990099 */
  .notfind, .notview { font-weight:bold; color:#999999; } /* background-color:#000000 */

  .pagewait { position:absolute; text-align:center; vertical-align:middle;
    width:400; height:200; border:0; background-color:transparent;
    left:200; top:185; color:#0000ff; }

  #box { position:absolute;
    width:350px; height:250px; text-align:center; vertical-align:middle;
    margin:0px; padding:0px;
    left:200; top:100;
    border:1px solid #4f7292; font-family:Tahoma; font-size:11px; background-color:#ffffff; }
  #box td { font-size:11px; }
  span#box:hover { text-decoration:underline; }

  #boxclose { cursor:pointer; text-align:right; padding-right:15px; padding-top:8px; color:#0000ff; }

  #setloc, .totop, .showhide { cursor:pointer; font-size:11px; color:#0000ff; text-decoration:underline; }
  .tbloc { font-size:8pt; border-collapse:collapse; }
  .tbloc td { border:1px solid #cccccc; vertical-align:middle; height:50px; }
  .radio { border:0; vertical-align:middle; }
  .toactive { cursor:pointer; }
  #errmsg { color:#ff0000; }
  .viewlimg { cursor:pointer; }
  #viewlimg { position:absolute; text-align:center; vertical-align:middle;
    left:150; width:750; height:800; border:0; }

-->
</STYLE>
<SCRIPT LANGUAGE="JavaScript" type="text/JavaScript" SRC='/_lib/js.utils.php'></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" type="text/JavaScript" SRC='/_lib/js.jquery.min.php'></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" type="text/JavaScript" SRC='/_lib/js.jquery.tablesorter.min.php'></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" type="text/JavaScript" SRC='/_lib/js.jquery.metadata.php'></SCRIPT>
<SCRIPT LANGUAGE="JavaScript" type="text/JavaScript">
<!--
function enable_sortable(tid)
{
  var trnum = $('#'+tid+' tbody > tr').length;
  if(trnum < 2) return;

  $("#"+tid).tablesorter
  ({
    headers:
    {
        0: { sorter: "toint" },        // 
        1: { sorter: "text" },        // 
        2: { sorter: "numberic" },      // 
        3: { sorter: "text" },        // 
        4: { sorter: "text" },        // 
        5: { sorter: "numberic" },    // 
        6: { sorter: "text" },        // 
        7: { sorter: "text" },        // 
        8: { sorter: "text" },        // 
        9: { sorter: "text" },        // 
        10: { sorter: "text" },        // 
        11: { sorter: "text" },        // 
        12: { sorter: "text" }        //
    },
    sortMultiSortKey: 'altKey'
  });

  return;
}

function echo(s)
{
  document.write(s);
}

function mkjd(y, m, d, h, i, s)
{
  var a, b, jc, JD;

  if(m < 3) { m += 12; y -= 1; }

  jc = (y*10000.0) + (m*100.0) + d;
  d = d + (h/24.0) + (i/1440.0) + (s/86400.0);
  a = Math.floor(y/100);
  b = (jc < 15821015) ? 0 : (2.0 - a + Math.floor(a/4.0));
  JD = Math.floor(365.25*(y+4716.0)) + Math.floor(30.6001*(m+1.0)) + d + b - 1524.5; // error

  return JD;
}

function days_in_month(y, m)
{
  var n;
  var months = new Array(31,0,31,30,31,30,31,31,30,31,30,31);

  //if(y+''+m == 158210) return 21; // 1582-10-01 ~ 31 == 21 days

  n = months[(m-1)];
  n = n ? n : (isleap(y) ? 29 : 28);

  return n; // integer
}

function isleap(y)
{
  if(y < 1582) return (y%4) ? false : true; // for julian calendar

  // for gregorian calendar
  if(y % 4) return false;
  else if(y % 100) return true;
  else if(y % 400) return false;

  return true; // else 400*Y
}

function dms2deg(dms)
{
  dms = dms.replace(/[^\d.+-]+/g,' ',dms);
  dms = dms.replace(/^\s+/,'').replace(/\s+$/,''); // trim()
  var d = dms.split(' '); // Array

  if(!d[0]) d[0] = 0;
  if(!d[1]) d[1] = 0;
  if(!d[2]) d[2] = 0;

  if(d[0].match(/^-/)) var deg = Number(d[0]) - Number(d[1]/60) - Number(d[2]/3600);
  else var deg = Number(d[0]) + Number(d[1]/60) + Number(d[2]/3600);

  deg = Math.round(deg*100) / 100;

  return deg;
}

function days_back()
{
  var n;
  var y = Number($('#_y').val());
  var m = Number($('#_m').val());
  var d = Number($('#_d').val());

  d--;

  if(d < 1)
  {
    m--;
    if(m < 1)
    {
        m = 12;
        y--;
        $('#_y').val(y);
    }
    if(m < 10) m = '0' + m;
    $('#_m').val(m);
    d = days_in_month(y,m);
  }

  if(d < 10) d = '0' + d;
  $('#_d').val(d);

  return;
}

function days_forward()
{
  var n;
  var y = Number($('#_y').val());
  var m = Number($('#_m').val());
  var d = Number($('#_d').val());

  d++;

  n = days_in_month(y,m);

  if(d > n) // next month
  {
    d = 1;
    m++;
    if(m > 12)
    {
        m = 1;
        y++;
        $('#_y').val(y);
    }
    if(m < 10) m = '0' + m;
    $('#_m').val(m);
  }

  if(d < 10) d = '0' + d;
  $('#_d').val(d);

  return;
}

function hours_back()
{
  var h = Number($('#_h').val());

  h--;

  if(h < 0)
  {
    h = 23;
    days_back();
  }

  if(h < 10) h = '0' + h;

  $('#_h').val(h);

  return;
}

function hours_forward()
{
  var h = Number($('#_h').val());

  h++;

  if(h > 23)
  {
    h = 0;
    days_forward();
  }

  if(h < 10) h = '0' + h;

  $('#_h').val(h);

  return;
}

function focus2end(id)
{
  $(id).focus();
  $(id).val($(id).val()+''); // focus end

  return;
}

$(window).bind('load',function()
{
  $('img').each(function()
  {
    if((typeof this.naturalWidth != "undefined" && this.naturalWidth == 0 ) || this.readyState == 'uninitialized')
    {
        //$(this).attr('src', '/images/n.gif');
        this.src = '/images/n.gif';
        this.border = 1;
        this.width = 28;
        this.height = 30;
        this.alt = 'no image';
    }
  });
});

$(document).ready(function()
{
  $.tablesorter.addParser
  ({
    id: "toint",
    is: function(s)
    {
        return true;
    },
    format: function(s)
    {
        s = s.replace(/[^\d]+/,'');
        if(s == '') s = 100;
        return s;
    },
    type: "numeric"
  });

  enable_sortable('tsortNW');
  enable_sortable('tsortW');
  enable_sortable('tsortSW');
  enable_sortable('tsortS');
  enable_sortable('tsortSE');
  enable_sortable('tsortE');
  enable_sortable('tsortNE');
  enable_sortable('tsortN');
  enable_sortable('tsortyet');

  $('#setto').click(function()
  {
    var date = $('#_y').val() + $('#_m').val() + $('#_d').val();
    var time = $('#_h').val() + $('#_i').val();

    var datetime = date + '.' + time;

    var ruri = location.href.replace(/\.php.+$/,'.php');
    location.href = ruri + '/' + datetime;
    //window.location = ruri + '/' + datetime;

    return false;
  });

  $('#currto').click(function()
  {
    location.href =    location.href.replace(/\.php.+$/,'.php');
    return false;
  });

  var boxshow = 0;
  $('#setloc, #boxclose').click(function()
  {
    if(boxshow) $('#box').hide();
    else $('#box').show();

    boxshow ^= 1;
    return;
  });

  $('#dback').click(function()
  {
    days_back();
    return;
  });

  $('#dforward').click(function()
  {
    days_forward();
    return;
  });

  $('#hback').click(function()
  {
    hours_back();
    return;
  });

  $('#hforward').click(function()
  {
    hours_forward();
    return;
  });

  var showhides = new Array();

  $('.showhide').click(function()
  {
    var tid = this.id.replace(/close$/,'');

    if(!showhides[tid])
    {
        $('#'+tid).hide();
        $('#'+tid+'close').html('&laquo;º¸±â');
    } else
    {
        $('#'+tid).show();
        $('#'+tid+'close').html('&laquo;´Ý±â');
    }

    showhides[tid] ^= 1;
    return;
  });

  $('.totop').click(function()
  {
    window.scrollTo(0,0);
    return;
  });

  $('#saveuloc').click(function()
  {
    var loc = v = p = '';
    var t = $(':input:radio[name=radiouloc]:checked').val();

    if(t == 1)
    {
        var warnclass = $('#ulon').attr('class') + $('#ulat').attr('class');
        if(warnclass.match(/warn/)) return false;

        var lon = $('#ulon').val();
        var lat = $('#ulat').val();
        v = 1 + '|' + lon + ',' + lat;
        p = dms2deg(lon) + ', ' + dms2deg(lat) + ' (»ç¿ëÀÚÀÔ·Â)';
    } else
    {
        v = 0 + '|' + $('#ploc').val();
        p = $('#ploc').text();
    }

    $('#loc').text(p);
    //setcookie('uloc',encodeURI(v)); // save cookie
    setcookie('uloc',encodeURI(v),365); // save cookie
    //$('#errmsg').html('<font color=blue>OK</font>');

    $('#box').hide();
    boxshow = 0;

    return;
  });

  $('.toactive, .radio').click(function()
  {
    var tofocus = 0;
    var v = '';
    var idn = this.id.replace(/(to|uloc)/,'');

    //$(':input:radio[name=radiouloc]').filter('input[value='+idn+']').attr("checked", "checked"); // ok
    $('#uloc'+idn).attr("checked", "checked");

    if(idn > 0)
    {
        v = $('#ulon').val();
        if(v.length>0 && v.match(/^[\d\s+-.'"dms]+$/))
        {
            $('#ulon').removeClass('warn');
            $('#ulondeg').text(dms2deg(v));
        } else
        {
            $('#ulon').addClass('warn');
            focus2end('#ulon');
            tofocus = 1;
        }

        v = $('#ulat').val();
        if(v.length>0 && v.match(/^[\d\s+-.'"dms]+$/))
        {
            $('#ulat').removeClass('warn');
            $('#ulatdeg').text(dms2deg(v));
        } else
        {
            $('#ulat').addClass('warn');
            if(!tofocus) focus2end('#ulat');
        }
    } else
    {
        $('#ulon, #ulat').removeClass('warn');
        $('#errmsg').text('');
    }

    return;
  });

  $('#ulon, #ulat').bind("keydown keyup click focus blur",function(e)
  {
    var errmsg = '';
    $('#uloc1').attr("checked", "checked");

    var v = $('#ulon').val();
    if(v.length>0 && v.match(/^[\d\s+-.'"dms]+$/))
    {
        $('#ulon').removeClass('warn');
        if(this.id == 'ulon') $('#ulondeg').text(dms2deg(v));
    } else
    {
        $('#ulon').addClass('warn');
        if(v.length > 0) errmsg = '°æµµ';
    }

    var v = $('#ulat').val();
    if(v.length && v.match(/^[\d\s+-.'"dms]+$/))
    {
        $('#ulat').removeClass('warn');
        if(this.id == 'ulat') $('#ulatdeg').text(dms2deg(v));
    } else
    {
        $('#ulat').addClass('warn');
        if(v.length > 0) errmsg += ' À§µµ';
    }

    if(errmsg) errmsg = errmsg.replace(/^\s+/,'') + ' ÀԷ ¿¡·¯';
    $('#errmsg').text(errmsg);

    return;
  });

  $('#viewlimg').click(function()
  {
    $('#viewlimg').hide();
    //alert(this.src);
  });

  $('.viewlimg').click(function()
  {
    var imgsrc = $(this).attr('SRC').replace(/-s\.gif/,'.jpg');

    if(imgsrc.match(/n\.gif$/)) return false;

    if(imgsrc.match(/G[\d]+\.jpg$/))
    {
        imgsrc = imgsrc.replace(/G([\d]+\.jpg)/,"NGC$1");
        //alert(imgsrc);
    }

    var cpos = $(window).scrollTop() + 10; // current scroll position
    $('#viewlimg').css('top',cpos);
    $('#viewlimg').html('<img src='+imgsrc+' border=0 alt="click to close">');
    $('#viewlimg').fadeIn(1500);
  });

  $('#pagewait').hide(); // last

});

//-->
</SCRIPT>
</HEAD>
<BODY>
<H2><?=$title?></H2>
<div id='pagewait' class='pagewait'><H1>... Loading ...</H1></div>
<div id='box' style='display:none'>
<div align=right id=boxclose>[close]</div>
<br>
°üÃøÁö ¼³Á¤/º¯°æÇϱâ
<table width=97% class=tbloc>
<form name=ploc>
<tr><td valign=middle width=80><input type=radio name=radiouloc class=radio id=uloc0 value=0 <?=$seluloc[0]?>>
<span class=toactive id=to0>±âº»°ª</span></td>
<td><select id=ploc><?=$_locsp?></select></td></tr>
<tr><td valign=middle>
<input type=radio name=radiouloc class=radio value=1 id=uloc1 <?=$seluloc[1]?>>
<span class=toactive id=to1>Á÷Á¢ÀÔ·Â</span>
</td><td>
<input type=text value='<?=$ulon?>' id=ulon> °æµµ <span id=ulondeg><?=$ulondeg?></span><br>
<input type=text value='<?=$ulat?>' id=ulat> À§µµ <span id=ulatdeg><?=$ulatdeg?></span>
</td></tr>
<tr><td colspan=2 align=center><input type=button id=saveuloc value=' ÀúÀå(Cookie) '><br><span id=errmsg></span></td></tr>
</form>
</table>
</div>
<div id='viewlimg' style='display:none'></div>
<?php
$_menuindex 
= array
(
  
'solar.php'  => '24Àý±â °è»ê',
  
'lunar.php'  => 'À½¾ç·Âº¯È­, º°ÀÚ¸®, ÀÏ¿ù½Ä °è»ê',
  
'messier.php'=> '¸Þ½Ã¿¡ °üÃøÁ¤º¸(½Ç½Ã°£)',
  
'messier.today.php'=>'¸Þ½Ã¿¡ °üÃøÁ¤º¸(¿À´ÃÀüü)',
  
'deltat.php' => 'deltaT °è»ê',
  
'easter.php' => 'ºÎÈ°Àý ³¯Â¥ °è»ê'
);

$menu '';
foreach(
$_menuindex AS $k=>$v)  $menu .= " | <A HREF='$k'>$v</A>";

if(
$_GET['view'])
{
  echo 
'<A HREF="'.$_self.'">¼Ò½º´Ý±â</A>'.$menu.'<HR>'."\n";
  
highlight_file(basename($_self));
  return;
}

echo 
'<A HREF="'.$_self.'?view=1">¼Ò½ºº¸±â</A>'.$menu.'<HR>'."\n";
echo 
"<H2>ÄÚµùÁßÀÔ´Ï´Ù. ¤Ð¤Ð.</H2>\n";

print_r($html);
exit;


## date time and location
##
if($_datetime) list($JD) = calendar::_getjd($_y,$_m,$_d,$_h,$_i,0); // JD or input UTC time
else list($JD) = calendar::_getjd(NULL); // current UTC time

list($_y,$_m,$_d,$_h,$_i) = calendar::_todate($JD);
$_i floor($_i/5) * 5// rewrite

## sun rise/set/tw
##
$sun solar::sunrise_sunset($_y,$_m,$_d,$loc,3);
list(
$sunr,$suns) = $sun[0];
list(
$twr,$tws) = $sun[3]; // today TWR/TWS

## moon rise/set
##
$mrst moonrise::riseset($_y,$_m,$_d,$loc,1);
$mrise =  $mrst[1] ? $mrst[1] : $mrst[4];
$mset $mrst[0] ? $mrst[0] : $mrst[3];
$mcul $mrst[2]."($mrst[5])";

if(
$_h 7)
{
  
$bdate '0½Ã ±âÁØ';
  
$addday = -1;

  
$mrsy moonrise::riseset($_y,$_m,$_d-1,$loc,1);
  
$mry =  $mrsy[1] ? $mrsy[1] : $mrsy[4];
  
$msy $mrsy[0] ? $mrsy[0] : $mrsy[3];
  if(
preg_match('/=/',$mcul)) $mcul '-'.$mrsy[2]."($mrsy[5])";

  if(
$mry && hm2h($mry)>12) { $mrp '-'$mrise $mry; } // chane
  
if($mry && hm2h($msy)>12) { $msp '-'$mset $msy; } // change

  
$sun solar::sunrise_sunset($_y,$_m,$_d-1,$loc,3);
  list(,
$suns) = $sun[0];
  list(,
$tws) = $sun[3];
}
else
{
  
$bdate '´ÙÀ½³¯ 0½Ã ±âÁØ';
  
$addday 1;

  
$mrsm moonrise::riseset($_y,$_m,$_d+1,$loc,1);
  
$mrm =  $mrsm[1] ? $mrsm[1] : $mrsm[4];
  
$msm $mrsm[0] ? $mrsm[0] : $mrsm[3];
  if(
preg_match('/=/',$mcul)) $mcul '+'.$mrsm[2]."($mrsm[5])";

  if(
$mrm && hm2h($mrm)<12) { $mrp '+'$mrise $mrm; } // chane
  
if($msm && hm2h($msm)<12) { $msp '+'$mset $msm; } // change

  
$sun solar::sunrise_sunset($_y,$_m,$_d+1,$loc,3);
  list(
$sunr) = $sun[0];
  list(
$twr) = $sun[3];
}

$lunar lunar::tolunar($_y,$_m,$_d+$addday);
$moonage calendar::mkjd(0,0,0,$_m,$_d+$addday,$_y) - calendar::_utime2jd($lunar[2][2]);
$moonage = ($moonage<0) ? 30.0 sprintf('%.1f',$moonage);
$moonagep = (int)$moonage;

## convert hm 2 h
##
$mriset hm2h($mrise);
$msett hm2h($mset);
$twrt hm2h($twr);
$twst hm2h($tws);
$sunrt hm2h($sunr);
$sunst hm2h($suns);

$dark = (24 $twst) + $twrt// total dark time
$darkh calendar::h2hm($dark);
$mdark 0;

## initial of group sun/moon rise/set
##
$vt[1] = array($suns,'Àϸô');
$vt[3] = array($tws,'õ¹®¹Ú¸í');
$vt[5] = array('00:00','ÀÚÁ¤');
$vt[7] = array($twr,'õ¹®¹Ú¸í');
$vt[9] = array($sunr,'ÀÏÃâ');

$mrkey mrskey($mriset$sunrt$sunst$twrt$twst);
$mskey mrskey($msett$sunrt$sunst$twrt$twst);

$cc = array();
$mdark 0;
for(
$i=3$i<=7$i++) $cc[$i] = 'class=dark';

if(
$mriset 12.0// ¿ÀÈÄ~ÀÚÁ¤ »çÀÌ¿¡ ¿ùÃâÀΠ°æ¿ì
{
  for(
$i=($mrkey+1); $i<$mskey$i++) $cc[$i] = 'class=grey';
  
$mdark = ($mrkey == 4) ? ($mriset-$twst) : 0;
  
$mdark += ($mskey == 6) ? ($twrt-$msett) : 0;
}
else 
// ÀÚÁ¤~¿ÀÀü »çÀÌ¿¡ ¿ùÃâÀΠ°æ¿ì
{
  if(
$mrkey $mskey)
  {
    for(
$i=($mrkey+1); $i<$mskey$i++) $cc[$i] = 'class=grey';
    
$mdark = ($mrkey == 6) ? $mriset $twrt;
    
$mdark += 24.0 $twst;
  } else 
// ¿ù¸ô ~ ¿ùÃâ
  
{
    for(
$i=($mrkey+1); $i<=7$i++) $cc[$i] = 'class=grey';
    for(
$j=1$j<$mskey$j++) $cc[$j] = 'class=grey';
    
$mdark = ($mskey == 6) ? ($twrt $msett) : (24.0 max($msett,$twst) + min($mriset,$twrt));
  }
}

// override
$cc[0] = $cc[10] = ''// white
$cc[1] = $cc[2] = $cc[8] = $cc[9] = 'class=grey';

$vt[$mrkey] = array($mrise);
$vt[$mskey] = array($mset);
$vtm[$mrkey] = '¿ùÃâ';
$vtm[$mskey] = '¿ù¸ô';
$vtm[5] = '¿ù·É';
$vta[5] = $moonage;

$mdarkh calendar::h2hm($mdark);
$mdarkp sprintf('%d',($mdark*100)/$dark);
$mdarkpclass = array('bad','some','better','good');
$mdarkpclass $mdarkpclass[floor($mdarkp/25)-1];

## moon current pos
##
list($malt,$mpos) = moonrise::moon_pos($JD,$lon,$lat);
if(
$malt < (8/60)) $mpos '-'// yet rise, 8/60 == moon_zenith
else $maltp .= round($malt);

$addmore = array('ufind','uview','tele');
$r stellar::messier_current_pos($JD,$loc,'messier/%s-s.gif',$addmore);

$mooninfo = array
(
  
'Moon',        // messier
  
"<img src=moonage/moonage-$moonagep.gif>",
  
0,            // marathon
  
'-',            // º°ÀÚ¸®
  
'À§¼º',        // type
  
'-',            // ¹à±â
  
$mpos.$maltp,        // ÇöÀç À§Ä¡/°íµµ
  
$mrp.$mrise.'(E00)',    // rise
  
$mcul,        // ³²Áß
  
$msp.$mset.'(W00)',    // set
  
'',
  
'',
);

$r['pos'][$mpos] = array_merge(array($mooninfo),$r['pos'][$mpos]); // add to first
list($poss,$s) = stellar::messier_current_pos2simple($r,1);

$vpos "$loc[0]$loc[1] ($loc[2])";
$vtime $r['loc'][1];
$selm[(int)$_m] = $seld[(int)$_d] = $selh[(int)$_h] = $seli[(int)$_i] = 'SELECTED';

echo 
"- °üÃø À§Ä¡: <span id=loc>$vpos</span> <span id=setloc>[&laquo;º¯°æÇϱâ] <img src=/images/acc1.gif border=0 align=middle></span><BR>\n";
echo 
"- °üÃø ½Ã°¢: $vtime\n";
echo 
"<FORM METHOD=get>- ½Ã°¢ ¼³Á¤: ";
echo 
"<INPUT TYPE=text NAME='_y' id=_y VALUE='$_y' SIZE=5 MAXLENGTH=5>³â\n";

echo 
"<SELECT NAME='_m' id=_m>\n";
for(
$i=1$i<=12$i++) printf("<OPTION VALUE=%02d $selm[$i]>%02d</OPTION>",$i,$i);

echo 
"</SELECT>¿ù <SELECT NAME='_d' id=_d>\n";
for(
$i=1$i<=31$i++) printf("<OPTION VALUE=%02d $seld[$i]>%02d</OPTION>",$i,$i);

echo 
"</SELECT>ÀÏ <SELECT NAME='_h' id=_h>\n";
for(
$i=0$i<=23$i++) printf("<OPTION VALUE=%02d $selh[$i]>%02d</OPTION>",$i,$i);

echo 
"</SELECT>½Ã <SELECT NAME='_i' id=_i>\n";
for(
$i=0$i<=55$i+=5)  printf("<OPTION VALUE=%02d $seli[$i]>%02d</OPTION>",$i,$i);
echo 
"</SELECT>ºÐ\n";

echo 
"<INPUT TYPE=button id=setto class=pointer VALUE='ÀÌ ½Ã°¢À¸·Î °è»ê'>&nbsp;";
echo 
"<INPUT TYPE=reset id=reset class=pointer VALUE='ÃʱâÈ­(Reset)'>&nbsp;";
echo 
"<INPUT TYPE=button id=currto class=pointer VALUE='ÇöÀ砽ð¢À¸·Î °è»ê'><BR>\n";
?>
- ¹Ì¼¼ ¼³Á¤: <img id='dback' class=pointer src=/images/control_back.png border=0 align=middle
>ÀÏ<img id='dforward' class=pointer src=/images/control_forward.png border=0 align=middle>
&nbsp;&nbsp;<img id='hback' class=pointer src=/images/control_back.png border=0 align=middle
>½Ã°£<img id='hforward' class=pointer src=/images/control_forward.png border=0 align=middle><BR>
</FORM>

<?php
echo "<P>- ÀÏÃâ¸ô/¹Ú¸í/¿ùÃâ¸ô½Ã°¢($bdate)<BR>\n";

echo 
"<TABLE BORDER=1 class=tim>\n";
echo 
"<TR class=smallfont>\n";
for(
$i=0$i<=10$i++) echo '<TD width=44>'.$vt[$i][1].'</TD>';
echo 
"<TD width=100>&nbsp;</TD>";
echo 
"</TR>\n";

echo 
"<TR class=vtfcolor>\n";
for(
$i=0$i<=10$i++) echo '<TD width=44 '.$cc[$i].'>'.$vt[$i][0].'</TD>';
echo 
"<TD>dark time: $mdarkh</TD>";
echo 
"</TR>\n";

echo 
"<TR class=smallfont>\n";
for(
$i=0$i<=10$i++) echo '<TD width=44>'.$vtm[$i].'</TD>';
echo 
"<TD class=$mdarkpclass>{$mdarkp}% (dark)</TD>";
echo 
"</TR>\n";

echo 
"<TR class=smallfont>\n";
for(
$i=0$i<=10$i++) echo '<TD width=44>'.$vta[$i].'</TD>';
echo 
"<TD><img src=moonage/moonage-$moonagep.gif width=20 height=20 alt='¿ù·É $moonage'></TD>";
echo 
"</TR>\n";
echo 
"</TABLE><P>\n";

$possp = array();
foreach(
$poss AS $v)
{
  if(
$v == '-'$v 'yet';
  
$possp[] = "<A HREF='{$_uri}#tsort{$v}'>$v</A>";
}

$tdw floor($_tablewidth/sizeof($possp));
echo 
'[ÇϴàÀüü -- '.$vtime."] <span id=allskyclose class=showhide>&laquo;´Ý±â</span><BR>\n";
echo 
"<TABLE BORDER=1 WIDTH=$_tablewidth class=ttcl id=allsky>\n";
echo 
"<TR class=thcl><TD width=${tdw}>".implode("</TD><TD width=${tdw}>",$possp)."</TD></TR>\n";
foreach(
$s AS $arr) echo '<TR><TD>'.implode("</TD><TD>",$arr)."</TD></TR>\n";
echo 
"</TABLE>\n";
echo 
"<P>\n";
?>

¹æÇ⺰ ¸Þ½Ã¿¡ ¸ñ·Ï

<ul class=comment>
<li> *ÁÖ) <span id=cmtclose class=showhide>&laquo;´Ý±â</span>
<span id=cmt>
<li> Object: Mxx(¸Þ½Ã¿¡ ¸ñ·Ï), Gxxxx(NGC ¸ñ·Ï)
<li> ufind: µµ½Ã¿¡¼­ 6x50 ÆÄÀδõ·Î Ã£À» °æ¿ì
<li> uview: µµ½Ã¿¡¼­ 8" ¹Ý»ç¸Á¿ø°æÀÇ 36¹èÀ²·Î º¼ °æ¿ì
<li> tele: "Atlas of Messier Objects-Highlights of the deep sky" ±âÁØ
<li> *½Ã°¢: ÁöÆò¼± À§¿¡ Ç×»ó ¶° Àִ °æ¿ì
<li> +½Ã°¢: ´ÙÀ½³¯ ½Ã°¢
<li> -½Ã°¢: ÀÌÀü³¯ ½Ã°¢
</span>
</ul>
<P>

<?php
$tsize 
sizeof($r['pos_header']);
$bsize $tsize sizeof($addmore);

$thw floor($_tablewidth/$tsize);
$posh "<TR class=thcl><TH width=${thw}>".implode("</TH><TH width=${thw}>",$r['pos_header'])."</TH></TR>\n";

$nfinds = array
(
  
=> array('<span class=tohide>0</span>½¬¿ò','easy'),
  
=> array('<span class=tohide>1</span>º¸Åë','normal'),
  
=> array('<span class=tohide>2</span>¾î·Á¿ò','difficult'),
  
=> array('<span class=tohide>3</span>µµÀü','challenge'),
  
=> array('<span class=tohide>4</span>¸øãÀ½','notfind'),
  
'' => array('<span class=tohide>99</span>-','notfind')
);

$nviews = array
(
  
=> array('<span class=tohide>0</span>Àߺ¸ÀÓ','easy'),
  
=> array('<span class=tohide>1</span>º¸Åë','normal'),
  
=> array('<span class=tohide>2</span>ÇüŸ¸','difficult'),
  
=> array('<span class=tohide>3</span>¾Èº¸ÀÓ','notview'),
  
'' => array('<span class=tohide>99</span>-','notview')
);

foreach(
$r['pos'] AS $pos=>$arr)
{
  if(
$pos == '-')
  {
    
$tid 'tsortyet';
    
$ptext '[À̹̠Áö°Å³ª ¾ÆÁ÷ ¾È¶ä]';
  } else
  {
    
$tid 'tsort'.$pos;
    
$ptext "[$pos ¹æÇâ] ¸Þ½Ã¿¡ ¸ñ·Ï";
  }

  echo 
"\n<a name=$tid>$ptext</a>&nbsp;&nbsp;";
  echo 
"<span id='{$tid}close' class=showhide>&laquo;´Ý±â</span>&nbsp;&nbsp;<span class=totop>[top]</span><BR>\n";

  echo 
"<TABLE BORDER=1 class=tbcl id='$tid'>\n";
  echo 
"<THEAD>$posh</THEAD>\n<TBODY>";
  
//foreach($arr AS $v) echo '<TR><TD>'.implode("</TD><TD nowrap>",$v)."</TD></TR>\n";
  
foreach($arr AS $posv)
  {
    echo 
"<TR>";
    for(
$i=0$i<$bsize$i++) echo "<TD nowrap>$posv[$i]</TD>";
    foreach(
$addmore AS $name// addmore
    
{
        
$k $posv[$i];
        list(
$v,$class) = ($name == 'ufind') ? $nfinds[$k] : $nviews[$k];
        echo 
"<TD class='$class' nowrap>$v</TD>";
        
$i++;
    }
    echo 
"</TR>\n";
  }
  echo 
"</TBODY>\n</TABLE>\n";
  echo 
"<P>\n";
}

echo 
"\n</BODY>\n</HTML>";

return;
?>

Page loading: 0.11(server) + (network) + (browser) seconds