use strict;
use warnings;
use Irssi;
use Irssi::Irc;
use Irssi::TextUI;
use vars qw($VERSION %IRSSI);

$VERSION = "0.01";
%IRSSI = (
    authors     => 'Jan Tore Morken',
    contact     => 'http://wobbled.org/contact/',
    name        => 'ctcpversion',
    description => 'Generates CTCP VERSION reply with uptime info on-the-fly',
    license     => 'GNU GPLv2',
    url         => 'http://wobbled.org/',
);

sub GetUptime {
  my $irssistart = Irssi::parse_special('$F');
  my $runtime = time() - $irssistart;
  my $left = $runtime;

  my @left, $output;
  for(60, 60, 24, 365) {
    push(@left, $left % $_);
    $left = int($left / $_);
  }
  return sprintf("%dd %dh %dm %ds", @left[3, 2, 1, 0]);
}

sub catch_ctcp {
  my($server, $data, $nick, $address, $target) = @_;
  my $iJ = Irssi::parse_special('$J');
  my $isysname = Irssi::parse_special('$sysname');
  my $isysarch = Irssi::parse_special('$sysarch');
  my $running = GetUptime();
  if(lc($data) eq "version") {
    $server->command("^NCTCP $nick VERSION irssi v$iJ - running on $isysname $isysarch for $running");
    Irssi::signal_stop();
  }
}

Irssi::signal_add_first('ctcp msg', 'catch_ctcp');

