/**************************************************************************
 *   Copyright (C) 2006, Paul Lutus                                        *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/

addEvent(window,"load",initialize);
addEvent(window,"unload",write_cookie);

// function to add an event listener

function addEvent(o,e,f) {
  if (o.addEventListener) {
    o.addEventListener(e,f,false);
    return true;
  }
  else if (o.attachEvent) {
    return o.attachEvent("on"+e,f);
  }
  else {
    return false;
  }
}

function get_cookie(path)
{
  var result = "";
  var a = document.cookie.indexOf(path);
  if(a != -1) {
    a += path.length + 1;
    var b = document.cookie.indexOf(";",a);
    if(b == -1) {
      b = document.cookie.length;
    }
    result = unescape(document.cookie.substring(a,b));
  }
  return result;
}

function truth_test(cookie) {
  return cookie.pop() == "true";
}

function read_cookie() {
  data = get_cookie(window.location.pathname);
  if(data != '') {
    cookie = data.split("|");
    document.solar_form.format[1].checked = truth_test(cookie);
    document.solar_form.format[0].checked = truth_test(cookie);
    
    document.solar_form.ampm[1].checked = truth_test(cookie);
    document.solar_form.ampm[0].checked = truth_test(cookie);
    
    document.solar_form.lng_ew[1].checked = truth_test(cookie);
    document.solar_form.lng_ew[0].checked = truth_test(cookie);
    document.solar_form.lng_sec.value = cookie.pop();
    document.solar_form.lng_min.value = cookie.pop();
    document.solar_form.lng_deg.value = cookie.pop();
    
    document.solar_form.lat_ns[1].checked = truth_test(cookie);
    document.solar_form.lat_ns[0].checked = truth_test(cookie);
    document.solar_form.lat_sec.value = cookie.pop();
    document.solar_form.lat_min.value = cookie.pop();
    document.solar_form.lat_deg.value = cookie.pop();
  }
}

function write_cookie() {
  cookie = new Array();
  cookie.push(document.solar_form.lat_deg.value);
  cookie.push(document.solar_form.lat_min.value);
  cookie.push(document.solar_form.lat_sec.value);
  cookie.push(document.solar_form.lat_ns[0].checked);
  cookie.push(document.solar_form.lat_ns[1].checked);
  
  cookie.push(document.solar_form.lng_deg.value);
  cookie.push(document.solar_form.lng_min.value);
  cookie.push(document.solar_form.lng_sec.value);
  cookie.push(document.solar_form.lng_ew[0].checked);
  cookie.push(document.solar_form.lng_ew[1].checked);
  
  cookie.push(document.solar_form.ampm[0].checked);
  cookie.push(document.solar_form.ampm[1].checked);
  
  cookie.push(document.solar_form.format[0].checked);
  cookie.push(document.solar_form.format[1].checked);
  
  cookie = cookie.join("|");
  var duration = new Date(new Date().getTime() + 30 * 24 * 60 * 60 * 1000);
  document.cookie=window.location.pathname+"="+cookie+"; expires=" + duration.toGMTString();
}

function initialize() {
  read_cookie();
  d = new Date();
  document.solar_form.year.value = d.getFullYear();
  document.solar_form.month.value = d.getMonth() + 1;
  document.solar_form.day.value = d.getDate();
  document.solar_form.tz.value = -d.getTimezoneOffset() / 60;
  compute(0);
}

var ampmMode = false;
var sunRefract = true;

var Rad_Deg = 180.0/Math.PI;
var Deg_Rad = Math.PI/180.0;

function radians(v)
{
  return v * Deg_Rad;
}

function degrees(v)
{
  return v * Rad_Deg;
}

var convday = 4.16666666666667E-02;
var convhour = 6.66666666666667E-02;
var convmin = 1.66666666666667E-02;
var convsec = 2.77777777777778E-04;
var convcircle = 2.77777777777778E-03;
var SUNSET = -.833333333333333;
var CIVIL = -6.0;
var NAUTICAL = -12.0;
var ASTRONOMICAL = -18.0;

// BEGIN class sunRTS
function sunRTS() {
}
sunRTS.prototype.jd;
sunRTS.prototype.lat;
sunRTS.prototype.lng;
sunRTS.prototype.gha;
sunRTS.prototype.rise;
sunRTS.prototype.transit;
sunRTS.prototype.set;
sunRTS.prototype.clone = function(o) {
  this.rise = o.rise;
  this.transit = o.transit;
  this.set = o.set;
  this.jd = o.jd;
}
// END class sunRTS

// BEGIN class datim
function datim() {
}
datim.prototype.jd;
datim.prototype.mo;
datim.prototype.da;
datim.prototype.yr;
datim.prototype.dow;
datim.prototype.hh;
datim.prototype.mm;
datim.prototype.ss;
datim.prototype.sgn;
// END class datim

function leadChar(v,c,lead)
{
  s = "" + v;
  while(s.length < lead)
    s = c + s;
  return s;
}

// month 1 - 12, day 1-31 year may be 2 digit by 4 is preferred
function mdy_jd(yr,mo,da,hh,mm,ss)
{
  var a,b,jd,mo,da,yr,hh,mm,ss;
  //var mo = xmo;
  //var da = xda;
  //var yr = xyr;
  //var hh = xhh;
  //var mm = xmm;
  //var ss = xss;
  if(yr < 100.0)
    yr += ((yr > 50)?1900.0:2000.0); // try to cope with date problem
  if(mo < 3.0)
  {
    yr -= 1.0;
    mo += 12.0;
  }
  a = da + (mo * 100.0) + (yr * 10000.0);
  if (a < 15821015.0) /* Julian calendar */
  {
    b = 0.0;
  }
  else /* Gregorian */
  {
    a = Math.floor(yr/100.0);
    b = 2 - a + Math.floor(a/4.0);
  }
  var jd = Math.floor(365.25*(yr+4716.0)) + Math.floor(30.6001*(mo+1)) + da + b - 1524.5;
  jd += (hh/24.0) + (mm/1440.0) + (ss/86400.0);
  return(jd);
}

function jd_mdy(jd)
{
  var z,f,a,b,c,d,e;
  var r = new datim();
  jd += .5;
  z = Math.floor(jd);
  f = jd-z;
  if(z < 2299161) /* Julian calendar */
  {
    a = z;
  }
  else /* Gregorian */
  {
    b = Math.floor((z - 1867216.25)/36524.25);
    a = z + 1 + b - Math.floor(b/4);
  }
  b = a + 1524;
  c = Math.floor((b - 122.1)/365.25);
  d = Math.floor(365.25*c);
  e = Math.floor((b-d)/30.6001);
  r.mo = (e < 14)?e-1:e-13;
  r.da = b - d - Math.floor(30.6001*e) + f;
  r.yr = (r.mo < 3)?c-4715:c-4716;
  /* now get h,m,s */
  a = r.da;
  r.da = Math.floor(r.da);
  r.hh = 24 * (a-r.da);
  a = r.hh;
  r.hh = Math.floor(r.hh);
  r.mm = (60 * (a - r.hh));
  a = r.mm;
  r.mm = Math.floor(r.mm);
  r.ss = 60 * (a - r.mm);
  r.ss = Math.floor(r.ss);
  return(r);
}


function el_dd(sid,lat,decl,ra) // sun azimuth for ra, decl at this loc
{
  var lha;
  var x;
  lat = radians(lat);
  decl = radians(decl);
  lha = radians(sid - ra);
  x = degrees(Math.asin(Math.sin(lat) * Math.sin(decl) + Math.cos(lat) * Math.cos(decl) * Math.cos(lha)));
  /* correct for atmospheric refraction */
  if(sunRefract)
  {
    x = x + (1.92792040346393E-03 + (1.02 / Math.tan(radians(x + (10.3 / (x + 5.11)))))) * convmin;
  }
  return(x);
}

/* azimuth 0 to 360 for object. az_ns allows 0 = south, magdec has local magnetic declination */
function az_dd(sid,lat,decl,ra,magdecl) // sun elevation for ra, decl at this loc
{
  var lha,x,a,b;
  lat = radians(lat);
  decl = radians(decl);
  lha = radians(sid - ra);
  a = Math.sin(lha);
  b = Math.cos(lha) * Math.sin(lat) - Math.tan(decl) * Math.cos(lat);
  x = degrees(Math.atan2(a,b));
  if (x < 0.0)
    x = 360.0 + x;
  x = x + 180.0;
  x = x + magdecl;
  // now force x into 0 - 360 value range
  x = x * convcircle;
  x = x - Math.floor(x);
  x = x * 360.0;
  return(x);
}

function calcsun(jd,hh,mm,ss,tz) // compute sun's position on this date
{
  var s = new sunRTS();
  var h;
  //var jd;
  var t;
  var lo;
  var m;
  var rm;
  var e;
  var c;
  var tl;
  var v;
  var r;
  var nut;
  var al;
  var obliq;
  var sunra;
  var sundecl;
  jd = jd-(tz/24.0); /* convert to GMT */
  h = ((hh) + (mm/60.0) + (ss/3600.0)) * 15.0;
  t = (jd - 2451545) * 2.7378507871321E-05;
  lo = 280.46645 + (36000.76983 * t) + (0.0003032 * t * t);
  m = 357.5291 + (35999.0503 * t) - (0.0001559 * t * t) - (0.00000048 * t * t * t);
  rm = radians(m);
  e = 0.016708617 - (0.000042037 * t) - (0.0000001236 * t * t);
  c = (1.9146 - 0.004817 * t - 0.000014 * t * t) * Math.sin(rm);
  c = c + (0.019993 - 0.000101 * t) * Math.sin(2.0 * rm);
  c = c + 0.00029 * Math.sin(3.0 * rm);
  tl = lo + c;
  v = m + c;
  r = (1.000001018 * (1.0 - e * e)) / (1.0 + (e * Math.cos(radians(v))));
  nut = 125.04 - 1934.136 * t;
  al = radians(tl - 0.00569 - 0.00478 * Math.sin(radians(nut)));
  obliq = 23.4391666666667 - 1.30041666666666E-02 * t - 0.000000163888888 * t * t + 5.03611111111E-08 * t * t * t;
  obliq = radians(obliq + 0.00256 * Math.cos(radians(nut)));
  sunra = degrees(Math.atan2(Math.cos(obliq) * Math.sin(al),Math.cos(al)));
  if (sunra < 0)
    sunra = 360 + sunra;
  sundecl = degrees(Math.asin(Math.sin(obliq) * Math.sin(al)));
  s.lat = sundecl;
  s.lng = sunra;
  return(s);
}

/* sidereal time from Julian Date */
function sidtime(jd,lng)
{
  var t,x;
  t = ((Math.floor(jd) + 0.5) - 2451545.0) *2.73785078713210E-05;
  x = 280.46061837;
  x = x + 360.98564736629 * (jd - 2451545.0);
  x = x + 0.000387933 * t * t;
  x = x - (t * t * t) * 2.583311805734950E-08;
  x = x - lng;
  x = x * convcircle;
  x = x - Math.floor(x);
  x = x * 360.0;
  return(x);
}

function rmstime(jd,lat,lng,timezone,atcr,ra,decl)
{
  var x,gmtsid;
  var r = new sunRTS();
  r.jd = jd;
  timezone *= convday;
  gmtsid = sidtime(Math.floor(jd) + 0.5, 0.0);
  r.transit = ((ra + lng - gmtsid) / 360.0);
  atcr = radians(atcr);
  lat = radians(lat);
  decl = radians(decl);
  x = Math.sin(atcr) - (Math.sin(lat) * Math.sin(decl));
  x = x / (Math.cos(lat) * Math.cos(decl));
  if ((x < 1.0) && (x > -1.0))
  {
    x = degrees(Math.acos(x)) * convcircle;
    r.rise = (mod1((r.transit - x)+timezone)) * 24.0;
    r.set = (mod1((r.transit + x)+timezone)) * 24.0;
    r.transit = (mod1(r.transit+timezone)) * 24.0;
  }
  else
  {
    x = (x >= 0.0)?-100.0:100.0;
    r.rise = x;
    r.transit = x;
    r.set = x;
  }
  return r;
}

function mod1(t)
{
  var ot;
  ot = t;
  t = Math.abs(t);
  t = t - Math.floor(t);
  if(ot < 0.0)
    t = 1-t;
  return(t);
}

function dt_hms(x,amdsp,dst) {
  var h,m,s;
  var sh,sm,ss;
  var ampm;
  var outstr;
  if((x > -100.0) && (x < 100.0)) {
    x = (x < 0.0)?0.0:x;
    h = Math.floor(x);
    x = (x-h) * 60.0;
    if(dst)
      h += 1.0;  // daylight time adjustment
    h %= 24.0;
    m = Math.floor(x);
    x = (x-m) * 60.0;
    s = Math.floor(x);
    if(amdsp) {
      ampm = (h > 11)?"&nbsp;PM":"&nbsp;AM";
      h = h % 12.0;
      h = (h < 1)?12:h;
    }
    else {
      ampm = "";
    }
    sh = leadChar(h,"0",2);
    sm = leadChar(m,"0",2);
    ss = leadChar(s,"0",2);
    outstr = sh + ":" + sm + ":" + ss + ampm;
  }
  else {
    outstr = (x < 0.0)?"[Below]":"[Above]";
  }
  return outstr;
}

function rmsCheck(s, r)
{
  if((r == -100) || (r == 100))
    return r;
  else
    return s-r;
}

function rms_diff(rms) {
  return rmsCheck(rms.set,rms.rise);
}

function compute_current_date(lat,lng,year,month,day,tz) {
  var jd = mdy_jd(year,month,day,0,0,0);
  var sp = new sunRTS();
  var rms = new sunRTS();
  
  sp = calcsun(jd,0,0,0,tz);
  rms = rmstime(jd,lat,lng,tz,SUNSET,sp.lng,sp.lat);
 /*  document.getElementById("data_sun_r").innerHTML = dt_hms(rms.rise,ampmMode,false);
  document.getElementById("data_sun_t").innerHTML = dt_hms(rms.transit,ampmMode,false);
  document.getElementById("data_sun_s").innerHTML = dt_hms(rms.set,ampmMode,false);
  document.getElementById("data_sun_l").innerHTML = dt_hms(rms_diff(rms),false,false); */
  return dt_hms(rms_diff(rms),false,false);
  /* 
  rms = rmstime(jd,lat,lng,tz,CIVIL,sp.lng,sp.lat);
  document.getElementById("data_civ_r").innerHTML = dt_hms(rms.rise,ampmMode,false);
  document.getElementById("data_civ_s").innerHTML = dt_hms(rms.set,ampmMode,false);
  document.getElementById("data_civ_l").innerHTML = dt_hms(rms_diff(rms),false,false);
  
  rms = rmstime(jd,lat,lng,tz,NAUTICAL,sp.lng,sp.lat);
  document.getElementById("data_naut_r").innerHTML = dt_hms(rms.rise,ampmMode,false);
  document.getElementById("data_naut_s").innerHTML = dt_hms(rms.set,ampmMode,false);
  document.getElementById("data_naut_l").innerHTML = dt_hms(rms_diff(rms),false,false);
  
  rms = rmstime(jd,lat,lng,tz,ASTRONOMICAL,sp.lng,sp.lat);
  document.getElementById("data_ast_r").innerHTML = dt_hms(rms.rise,ampmMode,false);
  document.getElementById("data_ast_s").innerHTML = dt_hms(rms.set,ampmMode,false);
  document.getElementById("data_ast_l").innerHTML = dt_hms(rms_diff(rms),false,false);  */
  }

function format_date(date) {
  return date.yr + "-" + leadChar(date.mo,'0',2) + "-" + leadChar(date.da,'0',2);
}

function create_database_record(date,lat,lng,jd,tz,type,long) {
  delim = (type == 1)?"</td><td>":",";
  var sp = new sunRTS();
  sp = calcsun(jd,0,0,0,tz);
  var sol,civ,naut,ast;
  sol = rmstime(jd,lat,lng,tz,SUNSET,sp.lng,sp.lat);
  
  if(sol.rise > latest_sunrise.rise) {
    latest_sunrise.clone(sol);
  }
  if(sol.set > latest_sunset.set) {
    latest_sunset.clone(sol);
  }
  
  if(sol.rise < earliest_sunrise.rise) {
    earliest_sunrise.clone(sol);
  }
  if(sol.set < earliest_sunset.set) {
    earliest_sunset.clone(sol);
  }
  
  var daylen = sol.set - sol.rise;
  if(daylen <  (shortest_day.set - shortest_day.rise)) {
    shortest_day.clone(sol);
  }
  if(daylen > (longest_day.set - longest_day.rise)) {
    longest_day.clone(sol);
  }
  if(long) {
    civ = rmstime(jd,lat,lng,tz,CIVIL,sp.lng,sp.lat);
    naut = rmstime(jd,lat,lng,tz,NAUTICAL,sp.lng,sp.lat);
    ast = rmstime(jd,lat,lng,tz,ASTRONOMICAL,sp.lng,sp.lat);
  }
  var data = (type == 1)?"<tr><td>":"";
  // format record date
  data += format_date(date) + delim;
  // add twilight rise times if long format
  if(long) {
    data += dt_hms(ast.rise,ampmMode,false) + delim;
    data += dt_hms(naut.rise,ampmMode,false) + delim;
    data += dt_hms(civ.rise,ampmMode,false) + delim;
  }
  // add rise, transit, set times
  data += dt_hms(sol.rise,ampmMode,false) + delim;
  data += dt_hms(sol.transit,ampmMode,false) + delim;
  data += dt_hms(sol.set,ampmMode,false) + delim;
  // add twilight set times if long format
  if(long) {
    data += dt_hms(civ.set,ampmMode,false) + delim;
    data += dt_hms(naut.set,ampmMode,false) + delim;
    data += dt_hms(ast.set,ampmMode,false) + delim;
  }
  // add day length
  data += dt_hms(rms_diff(sol),false,false);
  data += (type == 1)?"</td></tr>":"\n";
  return data;
}

var longest_day = new sunRTS();
var shortest_day = new sunRTS();
var latest_sunrise = new sunRTS();
var latest_sunset = new sunRTS();
var earliest_sunrise = new sunRTS();
var earliest_sunset = new sunRTS();

function display_extremes(tz) {
  document.getElementById("earliest_r_d").innerHTML = format_date(jd_mdy(earliest_sunrise.jd));
  document.getElementById("earliest_r_r").innerHTML = dt_hms(earliest_sunrise.rise,ampmMode,false);
  document.getElementById("earliest_r_s").innerHTML = dt_hms(earliest_sunrise.set,ampmMode,false);
  document.getElementById("earliest_r_l").innerHTML = dt_hms(rms_diff(earliest_sunrise),false,false);
  
  document.getElementById("earliest_s_d").innerHTML = format_date(jd_mdy(earliest_sunset.jd));
  document.getElementById("earliest_s_r").innerHTML = dt_hms(earliest_sunset.rise,ampmMode,false);
  document.getElementById("earliest_s_s").innerHTML = dt_hms(earliest_sunset.set,ampmMode,false);
  document.getElementById("earliest_s_l").innerHTML = dt_hms(rms_diff(earliest_sunset),false,false);
  
  document.getElementById("latest_r_d").innerHTML = format_date(jd_mdy(latest_sunrise.jd));
  document.getElementById("latest_r_r").innerHTML = dt_hms(latest_sunrise.rise,ampmMode,false);
  document.getElementById("latest_r_s").innerHTML = dt_hms(latest_sunrise.set,ampmMode,false);
  document.getElementById("latest_r_l").innerHTML = dt_hms(rms_diff(latest_sunrise),false,false);
  
  document.getElementById("latest_s_d").innerHTML = format_date(jd_mdy(latest_sunset.jd));
  document.getElementById("latest_s_r").innerHTML = dt_hms(latest_sunset.rise,ampmMode,false);
  document.getElementById("latest_s_s").innerHTML = dt_hms(latest_sunset.set,ampmMode,false);
  document.getElementById("latest_s_l").innerHTML = dt_hms(rms_diff(latest_sunset),false,false);
  
  document.getElementById("longest_d").innerHTML = format_date(jd_mdy(longest_day.jd));
  document.getElementById("longest_r").innerHTML = dt_hms(longest_day.rise,ampmMode,false);
  document.getElementById("longest_s").innerHTML = dt_hms(longest_day.set,ampmMode,false);
  document.getElementById("longest_l").innerHTML = dt_hms(rms_diff(longest_day),false,false);
  
  document.getElementById("shortest_d").innerHTML = format_date(jd_mdy(shortest_day.jd));
  document.getElementById("shortest_r").innerHTML = dt_hms(shortest_day.rise,ampmMode,false);
  document.getElementById("shortest_s").innerHTML = dt_hms(shortest_day.set,ampmMode,false);
  document.getElementById("shortest_l").innerHTML = dt_hms(rms_diff(shortest_day),false,false);
}

function compute_year(lat,lng,year,tz,type,long) {
  // hack to print "Computing ..." prompt
  document.getElementById("database_pane").innerHTML = "<b>Computing ...</b><p></p>";
  setTimeout('compute_year_data('+lat+','+lng+','+year+','+tz+','+type+','+long +')',100);
}

function compute_year_data(lat,lng,year,tz,type,long) {
  
  longest_day.rise = 25;
  longest_day.set = 0;
  shortest_day.rise = 0;
  shortest_day.set = 25;
  latest_sunrise.rise = 0;
  latest_sunset.set = 0;
  earliest_sunrise.rise = 25;
  earliest_sunset.set = 25;
  
  var jd = mdy_jd(year,1,1,0,0,0);
  var sp = new sunRTS();
  var rms = new sunRTS();
  var cy = year;
  if(long) {
    data = "date,astrise,nautrise,civrise,sunrise,transit,sunset,civset,nautset,astset,daylength\n";
  }
  else {
    data = "date,sunrise,transit,sunset,daylength\n";
    
  }
  if(type == 1) {
    data = "<tr style=\"font-weight:bold;\"><td>" + data.replace(/,/g,"</td><td>") + "</td></tr>";
  }
  while(true) {
    date = jd_mdy(jd);
    if(date.yr != year) {
      break;
    }
    data += create_database_record(date,lat,lng,jd,tz,type,long);
    jd++;
  }
  var out;
  if(type == 1) {
    out = "<table class=\"data_table\">" + data + "</table>";
  }
  else {
    explanation = "To make a copy of this database,<br>Ctrl+A (select all),<br>Ctrl+C (copy).";
    out = "<textarea cols=\"100\" rows=\"367\" style=\"border:none;padding:4px;overflow:visible;\" class=\"floatmaker\" title=\"" + explanation + "\">" + data + "</textarea>"
  }
  document.getElementById("database_pane").innerHTML = out;
  display_extremes(tz);
}

function set_tz(n) {
  if(n == 1) {
    document.solar_form.tz.value = -d.getTimezoneOffset() / 60;
  }
  else {
    var lng = get_lng();
    document.solar_form.tz.value = Math.floor(Math.abs(lng / 15)) * ((lng < 0)?1:-1);
  }
}

function get_lat() {
  /* var lat = parseFloat(document.solar_form.lat_deg.value)
  + (parseFloat(document.solar_form.lat_min.value) / 60.0)
  + (parseFloat(document.solar_form.lat_sec.value) / 3600.0);
  
  lat = Math.abs(lat);
  if(document.solar_form.lat_ns[1].checked) {
    lat = -lat;
  } */
  lat = 43.738889;          /* Latitude des HMC  ADDED */
  return lat;
}

function get_lng() {
 /* var lng = parseFloat(document.solar_form.lng_deg.value)
  + (parseFloat(document.solar_form.lng_min.value) / 60.0)
  + (parseFloat(document.solar_form.lng_sec.value) / 3600.0);
  
  lng = Math.abs(lng);
  if(document.solar_form.lng_ew[1].checked) {
    lng = -lng;
  } */
  lng = -7.401944;          /* Longitude des HMC  ADDED */
  return lng;
}

function sunDiff() {
  type = 0;               /*  Will not create table or database  ADDED */
  /* ampmMode = document.solar_form.ampm[1].checked;  */
  ampmMode = false;       /*  Forces times displayed in long not am-pm  ADDED */
  /* var year = parseInt(document.solar_form.year.value); alert(year);
  var month = parseInt(document.solar_form.month.value); alert(month);
  var day = parseInt(document.solar_form.day.value); alert(day);  */ 
  var today = new Date();
  var year = today.getUTCFullYear();
  var month = today.getUTCMonth() + 1;
  var day = today.getUTCDate(); 
  /*  var tz  = parseFloat(document.solar_form.tz.value);  */
  var tz = +1;               /*  TZ of HMC in winter  to be set to +2 for summer  ADDED */
  
  var lat = get_lat();
  var lng = get_lng();

  /* var long = document.solar_form.format[1].checked; */
    var long = true;
  	today = compute_current_date(lat,lng,year,month,day,tz);
	yesterday = compute_current_date(lat,lng,year,month,day-1,tz);
	// today = '10:16:15';   TESTINGS
	// yesterday = '10:15:15';    TESTINGS

	 timeDif(yesterday ,today);

  /*  if(type > 0) {
    compute_year(lat,lng,year,tz,type,long);
  }  */
}

function getDiff(intSecondsToConvert) {
	var minutes = Math.floor(intSecondsToConvert / 60);
	var hours = Math.floor(minutes / 60);
	var minutes = (Math.floor(intSecondsToConvert / 60)) % 60;
	minutes = (minutes == 60) ? "00" : minutes;
	var seconds = intSecondsToConvert % 60;
	if (hours < "10") {hours = "0" + hours};
	if (minutes < "10") {minutes = "0" + minutes};
	if (seconds < "10") {seconds = "0" + seconds};
	return hours+":"+minutes+":"+seconds;
}

function timeConv(T) { // h:m:s
  var A = T.split(/\D+/) ; return (A[0]*60 + +A[1])*60 + +A[2];
}

function timeDif(today ,yesterday) {
	var time1 = timeConv(today);
	var time2 = timeConv(yesterday);
	if (time2 > time1) {var diff = time2 - time1;  gaining = 1;} else
	if (time2 < time1) {var diff = time1 - time2;  gaining = 0;}
	else {gaining = 2};

	theTime = getDiff(diff).split(':');

	//alert(theTime[0]+" hours\n"+theTime[1]+" minutes\n"+theTime[2]+" seconds");    //  TESTINGS
	if (theTime[1] > 1) {mins = ' minutes ';} else { mins = ' minute ';};
	if (theTime[2] > 1) {secs = ' secondes ';} else { secs = ' seconde ';};
	if (gaining == 0) { document.getElementById('sundifference').innerHTML = 'Ce jour nous perdons ' + theTime[1] + ' ' +  mins + ' ' + theTime[2] + secs + ' de soleil.';};
	if (gaining == 1) { document.getElementById('sundifference').innerHTML = 'Ce jour nous gagnons ' + theTime[1] + ' ' +  mins + ' ' + theTime[2] + secs + ' de soleil.';};
	if (gaining == 2) { document.getElementById('sundifference').innerHTML = 'Ce jour nous ne gagnons ni perdons de minute de soleil. ';};
}

// BEGIN Suntime calculation  //
function suntime() {
  var	sunrise = document.getElementById('sunrise').innerHTML;
  var	sunset = document.getElementById('sunset').innerHTML;
	sunrisestr = sunrise.split(":");
	sunsetstr = sunset.split(":");
	sunriseint = (parseFloat(sunrisestr[0])*60)+parseFloat(sunrisestr[1]);
	sunsetint = (parseFloat(sunsetstr[0])*60)+parseFloat(sunsetstr[1]);
	thesundif = sunsetint - sunriseint;
	sundifsecs = thesundif%60; 
	if (sundifsecs < 10) { sundifsecs = '0'+ sundifsecs }
	suntimestr =  Math.floor(thesundif / 60) + "h" + sundifsecs;
	document.getElementById('suntime').innerHTML = suntimestr ;

}
	
// END Suntime calculation  //
