
const __id = "rdmage";
const __maj_version = 0
const __min_version = 1
const __description = "Prints my age.";

const msinaweek = 604800000;
const msinaday = 86400000;
const msinahour = 3600000;
const msinaminute = 60000;

// Sep 11 1988, 1:45pm
const rbirthyear = 1988;
const rbirthmonth = 9;
const rbirthdate = 11;
const rbirthhour = 13;
const rbirthmin = 45;

function initPlugin(glob)
{
    plugin.id = __id;
    plugin.major = __maj_version;
    plugin.minor = __min_version;    
    plugin.version = __maj_version + "." + __min_version
    plugin.description = __description;

    plugin.cmdary =
        [
         ["age", cmdRDMAge, CMD_NEED_CHAN, "[<channel-name>]"],

        ];  
    
    client.commandManager.defineCommands(plugin.cmdary);

    display(__id + " loaded from url " + plugin.url);
}

function disablePlugin(status)
{
    display("disabling " + __id);
}

function enablePlugin(status)
{
    display("enabling " + __id);
}

function cmdRDMAge(e)
{
    var channel;
    
    if (!e.channelName)
    {
        if (!e.channel)
            return;
        e.channelName = e.channel.name;
    }
     

rbirth = new Date(rbirthyear, rbirthmonth - 1, rbirthdate, rbirthhour, rbirthmin, 0);
rightnow = new Date(); // Now!

rbirthdaythisyear = new Date(rightnow.getFullYear(), rbirthmonth - 1, rbirthdate, rbirthhour, rbirthmin, 0);

if(rbirthdaythisyear.getTime() > rightnow.getTime())
{
rlastbirthday = new Date(rightnow.getFullYear() - 1, rbirthmonth - 1, rbirthdate, rbirthhour, rbirthmin, 0);
rnextbirthday = rbirthdaythisyear;
}
else
{
rlastbirthday = rbirthdaythisyear;
rnextbirthday = new Date(rightnow.getFullYear() + 1, rbirthmonth - 1, rbirthdate, rbirthhour, rbirthmin, 0);
}

rcurrentage = Math.floor((rightnow - rbirth) / 31536000000);

rtimesincelastbirthday = rightnow - rlastbirthday;
rtimeuntilnextbirthday = rnextbirthday - rightnow;
   
dispatch("me is " + rcurrentage + " years old. It's " + rposhtimeperiod(rtimesincelastbirthday) + " since my last birthday, and " + rposhtimeperiod(rtimeuntilnextbirthday) + " until my next birthday.");

}

function rposhtimeperiod(ms)
{
numweeks = Math.floor(ms / msinaweek);
numdays = Math.floor((ms - (msinaweek * numweeks)) / msinaday);
numhours = Math.floor((ms - (msinaweek * numweeks) - (msinaday * numdays)) / msinahour);
numminutes = Math.round((ms - (msinaweek * numweeks) - (msinaday * numdays) - (msinahour * numhours)) / msinaminute);

return numweeks + " weeks, " + numdays + " days, " + numhours + " hours, and " + numminutes + " minutes";
}
