use Irssi;
use vars qw($VERSION %IRSSI); 
$VERSION = "0.1";
%IRSSI = (
    authors	=> "Timo \'cras\' Sirainen",
    contact	=> "tss\@iki.fi",
    name	=> "chan share",
    description	=> "/CHANSHARE - display people who are in more than one channel with you",
    license	=> "Public Domain",
    url		=> "http://irssi.org/",
    changed	=> "2002-03-04T22:47+0100",
    changes	=> "v0.3 - Timo Sirainen tss\@iki.fi: Supports for limiting searches only to specified ircnets and channels. Some cleanups.."
);

sub cmd_countusers {
  my $channels;
  my $servers;
  my $users2;
  my $totaluniq;
  my $totaldupe;
  my %seen;

  foreach my $s (Irssi::servers()) {
    my $mynick = $s->{nick};
    $servers++;
    foreach my $channel ($s->channels()) {
      my $uniques;
      my $dupes;
      $channels++;
      foreach my $nick ($channel->nicks()) {
	next if ($nick->{nick} eq $mynick);
	if ($seen{$nick}) {
          $dupes++;
        } else {
          $uniques++;
        }
        $seen{$nick}++;
      }
      Irssi::print(sprintf("%s: %s", $channel->{name}, $dupes + $uniques));
      $users2 += ($dupes + $uniques) ** 2;
      $totaluniq += $uniques;
      $totaldupe += $dupes;
    }
  }

  $avgusers = sprintf('%.1f', ($totaluniq + $totaldupe) / $channels);

  $avgusers2 = $users2 / $channels;
  $stddev = sprintf('%.1f', sqrt($avgusers2 - ($avgusers * $avgusers)));

  Irssi::print("$totaluniq unique +$totaldupe duplicates on $channels channels ($avgusers/channel, stddev $stddev) on $servers servers");
}

Irssi::command_bind('countusers', 'cmd_countusers');
