-- Formular for Polaris
adj=-0 -- Rotation adj
adjfix=0.75 --Polaries adj

TZ=8 -- Timezone

LO=TZ+adj

--! AMBIENT SCRIPT
--! AMBIENT VARIABLE DEFAULTS
var_ambT = 3
var_ambL = 65
tweens.fade_text = 0
--/ AMBIENT VARIABLE DEFAULTS

--! AMBIENT ACTIVATION TIME
function on_millisecond(dt)

tweens.ambM = 
not {abright} and var_ambT == 1  and ({dtp}>{wssp} or {dtp}<{wsrp}) and 100 or
var_ambT == 2 and ({dtp}>{wssp} or {dtp}<{wsrp}) and 100 or
not {abright} and var_ambT == 3 and 100 or
var_ambT == 4 and 100

tweens.ambL = 
not {abright} and var_ambT == 1 and ({dtp}>{wssp} or {dtp}<{wsrp}) and var_ambL or
var_ambT == 2 and ({dtp}>{wssp} or {dtp}<{wsrp}) and var_ambL or
not {abright} and var_ambT == 3 and var_ambL or
var_ambT == 4 and var_ambL

end
--/ AMBIENT ACTIVATION TIME

--! TAP ACTIONS
function tap_ambT()
if var_ambT == 4 then
   var_ambT =  0 else
   var_ambT =  var_ambT + 1
end end
--/ AMBIENT SCRIPT

----Dim Mode Text Fade 

function tap_fade_text()
wm_schedule { 
action='tween', 
tween='fade_text', 
from=0, 
to=100, 
duration=1, 
easing=linear 
}
wm_schedule { 
action='tween', 
tween='fade_text',
start_offset=1, 
from=100, 
to=0, 
duration=1, 
easing=linear 
}
end

function tap_fade_texta()
wm_schedule { 
action='tween', 
tween='fade_texta', 
from=0, 
to=100, 
duration=1, 
easing=linear 
}
wm_schedule { 
action='tween', 
tween='fade_texta',
start_offset=1, 
from=100, 
to=0, 
duration=1, 
easing=linear 
}
end

function tap_fade_sw()
wm_schedule { 
action='tween', 
tween='fade_sw', 
from=0, 
to=100, 
duration=1, 
easing=linear 
}
wm_schedule { 
action='tween', 
tween='fade_sw',
start_offset=1, 
from=100, 
to=0, 
duration=1, 
easing=linear 
}
end

--/Change type of watch
var_DZ = 3
function DZchange()
if var_DZ==4 then
    var_DZ=0
    else
    var_DZ=var_DZ+1
    end
end

-- 月運行程式本身
-- counting start new moon day & time
-- 修改高雄大約月升的時刻，月落誤差較大
-- Get from www.timeanddate.com/moon/phases/?year=2017
-- @2017, Dec, 18

based=31+28+31+30+31+30+31+31+30+31+30+18
basey=2017
baseyf=2016
baseya=2018

-- offset time 14:30-12:00, set -(12:00-time) if before 12:00

var_mpshift = 2.30  
-- hour.min difference from 12:00 o clock and new moon time on basedate (14:30 at Kaohsiung, TW)
tshiftr=0
dshiftr=0
tshifts=0
dshifts=0
rds=0.2475
sds=0.745

-- 修改部份固定值為容易修改的
-- no of days since basedate
function wmpd(y,ddy,dtp)
   mpc = (math.floor(var_mpshift) + var_mpshift%1/.6)/24
   dbase = y>basey and ((y-baseya)*365 + math.floor((y-baseyf)/4) + (365-based)) or -based+1  
-- no of days since basedate to 1-1 current year
   return (dbase + ddy + dtp - mpc -.5)
end

-- moon rise time %24h
function wmrp(y,ddy)
   return (wmpp(y,ddy,0.5)+rds)%1
end

-- moon set time %24h
function wmsp(y,ddy)
   return (wmpp(y,ddy,0.5)+sds)%1
end

function moonrise(y,m,d) 
   mr = moonrp(y,m,d+dshiftr)
   return math.floor(24*mr)..":".. string.format("%02d", math.floor(24*mr%1*60+tshiftr))
end

function moonset(y,m,d) 
   ms = moonsp(y,m,d+dshifts)
   return math.floor(24*ms)..":".. string.format("%02d", math.floor(24*ms%1*60+tshifts))
end

--AllenDoc Testing --Displays MoonRise Time --<Layer type="text" x="-95" y="-40" gyro="0" rotation="0" skew_x="0" skew_y="0" opacity="100" alignment="cc" text="moonrise(var_ms_year,var_ms_month,var_ms_day)" text_size="22" anim_scale_x="100" anim_scale_y="100" font="Roboto-Regular" transform="n" color_dim="ffffff" color="ffffff" display="bd"/> --Displays MoonSet Time --<Layer type="text" x="95" y="-42" gyro="0" rotation="0" skew_x="0" skew_y="0" opacity="100" alignment="cc" text="moonset(var_ms_year,var_ms_month,var_ms_day)" text_size="22" anim_scale_x="100" anim_scale_y="100" font="Roboto-Regular" transform="n" color_dim="ffffff" color="ffffff" display="bd"/> --Moves Moon (image .img802.png) around watch with rise at MoonRise verse 180 off Sun, also is in correct phase. -- <Layer type="image_cond" x="(205*math.cos(math.pi*((((-{wsrp}-moonrp(var_ms_year,var_ms_month,var_ms_day))+{dtp})*360)-270)/180))" y="(205*math.sin(math.pi*(((({wsrp}-moonrp(var_ms_year,var_ms_month,var_ms_day))+{dtp})*360)-270)/180))" gyro="0" rotation="55" skew_x="0" skew_y="0" opacity="100" alignment="cc" path=".img802.png" width="50" height="50" color="ffffff" cond_value="{wmp}" cond_grid="3x3" display="b"/>

--Key Formulas --((({wsrp}-moonrp(var_ms_year,var_ms_month,var_ms_day))+{dtp})*360) = Degrees of Moon at anytime during the day --{wsrp}	= Sunrise time (% 24 hours) --{dtp} = Time (% 24 hours) --moonrp = moonrise (% 24 hours) --END AllenDoc Testing

-- vars and functions to test

var_synmonth = 29.5306 -- synodic month or moon phase period between 29.2 to 29.9 days average 29.5306 xx 29.5922

-- % of moon phase cycle 0 to 1; 0.5 - full moon  
function wmpp(y,ddy,dtp)
   return (wmpd(y,ddy,dtp)/var_synmonth)%1
end

-- John Conway moon phase algorithm
function jcmd(y,m,d,h)
   d = d + h/24
   p = y%100
   p = p%19
   p = p - (p>9 and 19 or 0)
   p = (p*11)%30 + m + d
   p = p + (m<3 and 2 or 0)
   p = p - (y<2000 and 4 or 8.3)
--   p = math.floor(p+0.5) % 30
   p = p%30
   p = p + (p<0 and 30 or 0)
   p = p/.295306
   return p
end 

-- needed for demo watch and animation
var_ms_year = {dyy}
var_ms_month = {dn}
var_ms_day = {dd}
var_ms_hour = 12
var_ms_anim = 0
var_ms_hb = 0

function datecheck() -- check date values
   y = var_ms_year
   m = var_ms_month
   d = var_ms_day
   if m < 1 then 
      m = 12
      y = y - 1
   end
   if d > nodmonth(y,m) then
      m = m + 1
      d = 1
   elseif d<1 then
      m = m>1 and (m - 1) or 12
      d = nodmonth(y,m)
      y = y - (m==12 and 1 or 0)
   end
   if m > 12 then
      m = 1
      y = y + 1
   end
   var_ms_year = y
   var_ms_month = m
   var_ms_day = d
end

function nodmonth(y,m) -- no of days in month
   ly = (y%4)==0 and 1 or 0
   return (m==4 or m==6 or m==9 or m==11) and 30 or m==2 and ly==1 and 29 or m==2 and ly==0 and 28 or 31
end

function cddy(y,m,d)  -- day in year
   ly = (y%4)==0 and m>2 and 1 or 0
   ddy = ly + d + (m==2 and 31 or m==3 and 59 or m==4 and 90 or m==5 and 120 or m==6 and 151
   or m==7 and 181 or m==8 and 212 or m==9 and 243 or m==10 and 273 or m==11 and 304 or m==12 and 334 or 0)
   return ddy
end

function moonphase(y,m,d,h) 
   ddy = cddy(y,m,d)
   dtp = h/24
   return wmpp(y,ddy,dtp)
end

function moondays(y,m,d,h) 
   ddy = cddy(y,m,d)
   dtp = h/24
   return wmpd(y,ddy,dtp)
end

function moonh(y,m,d,h)
   return h - moonphase(y,m,d,h)*24
end

function moonrp(y,m,d) 
   ddy = cddy(y,m,d)
   return wmrp(y,ddy)
end

function moonsp(y,m,d) 
   ddy = cddy(y,m,d)
   return wmsp(y,ddy)
end

function on_millisecond()
   if var_ms_anim > 0 then
      k = 2
      h = {swsst}/ 1000 * k
      var_ms_hour = h%24
      if var_ms_hb > var_ms_hour then
         var_ms_day = var_ms_day + 1
         datecheck()
      end
      var_ms_hb = var_ms_hour
   end
end

-- 4捨5入
function get2(l2d)       
       l2d = math.floor(math.abs(l2d)*100+0.5)/100

l2ds = tostring(l2d)
return  l2ds
end