#!/usr/bin/perl -w

use Irssi;
use strict;
use vars qw($VERSION %IRSSI);
use Encode;

$VERSION = "1.00";
%IRSSI = (
	authors => 'elly, rbraun',
	name => '',
	description => 'Rainbow text for the World Cup, now updated for 2018',
	license => 'Public Domain',
	changed => '2018-06-15',
);

sub rainbowize {
my %cflags = (
	# Group A
	russia => [0, 12, 4],
	uruguay => [8, 0, 12],
	egypt => [4, 0, 8, 14],
	saudiarabia => [3, 3, 0],

	# Group B
	iran => [9, 0, 0, 4],
	portugal => [3, 3, 8, 4, 4, 4],
	spain => [4, 8, 8, 4],
	morocco => [4, 4, 3, 4, 4],

	# Group C
	france => [12, 0, 4],
	australia => [0, 4, 12, 0, 12, 12],
	peru => [4, 0, 4],
	denmark => [4, 0, 4, 4],

	# Group D
	argentina => [11, 11, 0, 8, 0, 11, 11],
	iceland => [12, 0, 4, 0, 12],
	croatia => [4, 0, 2],
	nigeria => [9, 0, 9],

	# Group E
	brazil => [9, 8, 12],
	switzerland => [5, 5, 0],
	costarica => [12, 0, 4, 4, 0, 12],
	serbia => [4, 12, 0],
	
	# Group F
	germany => [14, 4, 8],
	mexico => [9, 0, 4],
	sweden => [12, 8, 12],
	korea => [0, 4, 12, 14],
	southkorea => [0, 4, 12, 14],

	# Group G
	belgium => [14, 8, 4],
	panama => [0, 12, 4, 0],
	tunisia => [4, 4, 0, 4],
	england => [0, 4, 0],

	# Group H
	poland => [0, 4],
	senegal => [9, 8, 4],
	colombia => [8, 8, 12, 4],
	japan => [0, 4, 4, 0],

	# Everything below this line is not a 2018 contender
	# Teams from 2014 not in 2018
	cameroon => [3, 4, 8],
	netherlands => [4, 0, 12],
	holland => [4, 0, 12],
	chile => [12, 0, 4, 4],
	cotedivoire => [4, 0, 9],
	greece => [12, 0],
	italy => [9, 0, 4],
	ecuador => [8, 8, 12, 4],
	honduras => [12, 0, 12],
	bosnia => [12, 8, 0],
	ghana => [4, 8, 3],
	unitedstates => [4, 0, 12], # eliminated lol
	usa => [4, 0, 12],          # eliminated lol
	america => [4, 0, 12],      # eliminated lol
	algeria => [9, 9, 5, 0, 0],

	# Other
	westvirginia => [8, 12],
	louisiana => [13, 8],
        mardigras => [13, 8, 9],
);

	my ($t) = @_;
	my ($country) = split(/  */, $t);
	$t =~ s/^[^ ]* *//;
	my @p = split(//,$t);
	my $k = 0;
	my $cref = $cflags{$country};
	my @colors = @$cref;
	my @colorstr = map { sprintf('%02d', $_) } @colors;
	foreach my $q (@p) {
		if ($q ne " ") {
			$q = "\x03" . $colorstr[$k++ % @colorstr] . $q;
		}
	}
	return join('',@p);
}

sub cmd_wcupbow {
	eval {
		my ($t,$s,$w) = @_;
		$t = decode('UTF-8',$t);
		my $r = rainbowize($t);
		if ($w && ($w->{type} eq 'CHANNEL' or $w->{type} eq 'QUERY')) {
			$w->command("MSG " . $w->{name} . " " . $r);
		}
		return;
	};

	if ($@) {
		my $erc = $@;
		$erc =~ s/\n*$//;
		Irssi::print("Oh no, something went wrong! $erc");
	}
}

Irssi::command_bind('worldcup', 'cmd_wcupbow');

