/* refresh (reload) the page
   with varying frequency depending on day and time
   defaulting to comex operating hours
   and local work day

include in <head> with:
  <script type="text/javascript" src="/mods/qsparms.js"></script>
  <script type="text/javascript" src="/mods/refresh2.js"></script>
*/


// options
qsHelp("refresh=n","for automatic refresh in n minute(s)");
qsHelp("dayStart=n","n is hour the day starts");
qsHelp("workStart=n","n is hour that work starts");
qsHelp("workEnd=n","n is hour that work ends");
qsHelp("dayEnd=n","n is hour that day ends");
qsHelp("dayMultiplier=n","n is factor to multiply refresh during non-work day");
qsHelp("Multiplier=n","n is factor to multiply refresh during night");

// defaults
var rMins = 0;
var rForce = 0;
var dayStart = 6;
var workStart = 8;
var workEnd = 17;
var dayEnd = 22;
var dayMult = 5;
var nightMult = 10;
var weekFirst = 1;
var weekLast  = 5;
var NYOpen  =  8;
var NYClose = 14;
var SydOpen  = 19;
var SydClose = 1;
var HKOpen  = 20;
var HKClose = 6;
var LonOpen  = 5;
var LonClose = 11;
var rto = 0;

// override defaults with parameters
if (qsParm['refresh'])          rMins           =qsParm['refresh'];
if (qsParm['dayStart'])         dayStart        =qsParm['dayStart'];
if (qsParm['workStart'])        workStart       =qsParm['workStart'];
if (qsParm['workEnd'])          workEnd         =qsParm['workEnd'];
if (qsParm['dayEnd'])           dayEnd          =qsParm['dayEnd'];
if (qsParm['dayMultiplier'])    dayMult         =qsParm['dayMultiplier'];
if (qsParm['Multiplier'])       nightMult       =qsParm['Multiplier'];
if (qsParm['rforce'] && ! qsParm['refresh'])
                                rMins           =qsParm['rforce'];
if (qsParm['rforce'])           rForce          =rMins;

var date = new Date();
var hours = date.getHours();

if ( hours >= dayStart && hours < workStart ) {
    document.write("Good morning,")
    rMins*=dayMult;
} else if ( hours >= workStart && hours < workEnd ) {
    document.write("Good day,");
    rMins*=1;
} else if ( hours >= workEnd && hours < dayEnd ) {
    document.write("Good evening,");
    rMins*=dayMult;
} else {
    document.write("Good night,");
    rMins*=nightMult;
}

if (rForce) rMins=2*rForce;


// convert to NY time
// what about summer time???  Hopefully it will be the same on the client as in NY
var NYhour = hours + (date.getTimezoneOffset()/60) - 4;
var day = date.getDay();
//document.write("<br/>Day:",day," - hour:",hours," - offset:", date.getTimezoneOffset()/60," - NYhour:",NYhour,"<br/>");

// what about restart the next day???
if ( rMins > 0 ) {
  if ((day < weekFirst || day > weekLast  ||  NYhour < NYOpen || NYhour > NYClose) && !rForce) {
    document.write(" <small>(NY closed, must manually refresh)</small>");
    //var str=new String(document.location).replace(/refresh=[0-9]*/, "refresh=0");
    //setTimeout('document.location=str',1000);
  } else {
    if (rForce) document.write(" <small>(forced refresh)</small><br/>");
    var now=new Date()
    var s='';
    if ( rMins > 1 ) s='s';
    document.write(
    "<small><div style=\"text-align:left; float:left\">(automatic refresh about every ",rMins," minute",s,")</div>"
    ,"<div style=\"text-align:right; float:right\">last: ",now,"</div>"
    ,"</small><br/>\n");
    // The time out value is set in milli-seconds
    rto=setTimeout('document.location=document.location',rMins*60000+5000);
  }
} else {
  document.write(" <small>(I'm asleep, must manually refresh)</small>");
}

