<?xml version="1.0"?>
<chat>
/*plugin*/
//var chain = client.Initialise;
//client.Initialise = function()
{
  var ok = 1;
  if( !client.Colours )
  {
    if( 0 ) /* we have no dependencies right now */ 
    {
      /* XMLRequest( dependency's URL ) */
      ok = 0;
    }
    else
    {
      /* install ourselves */
      client.Colours = new Array();
      client.currentColour = 180;
      client.colourStep = 360;
      client.colourOffset = Math.floor(Math.random() * 360);
      var oldGotServerText = client.GotServerText;

      client.GetColour = function( _hue )
      {
        var hue = parseInt(''+(_hue + client.colourOffset)) % 360;
        var hi = parseInt(''+(hue / 60)) % 6;
	var f = (hue / 60) - hi;
	var q = 0.5 * (1 - f);
	var t = 0.5 * f;
	var r;
	var g;
	var b;
	switch(hi)
	{
	  case 0:
	     r = 0.5;
	     g = t;
	     b = 0;
	    break;

	  case 1:
	     r = q;
	     g = 0.5;
	     b = 0;
	    break;

	  case 2:
	     r = 0;
	     g = 0.5;
	     b = t;
	    break;

	  case 3:
	     r = 0;
	     g = q;
	     b = 0.5;
	    break;

	  case 4:
	     r = t;
	     g = 0;
	     b = 0.5;
	    break;
	    
	  case 5:
	     r = 0.5;
	     g = 0;
	     b = q;
	    break;
	}
	
	r = parseInt( ''+(r * 255) );
	g = parseInt( ''+(g * 255) );
	b = parseInt( ''+(b * 255) );
	
	return 'rgb(' + r + ',' + g + ',' + b + ')';
      }

      client.GetColourForName = function( _name )
      {
        if( !client.Colours[ _name ] )
	{
	  client.Colours[ _name ] = client.GetColour( client.currentColour ); 
	  client.currentColour += client.colourStep;
	  if( client.currentColour >= 360 )
	  {
	    client.colourStep = parseInt(''+(client.colourStep/2));
	    client.currentColour = parseInt(''+(client.colourStep/2));
	  }
	}

	return client.Colours[ _name ];
      }
      
      client.GotServerText = function( _text )
      {
        var text = _text;
	var nameIdx = _text.indexOf(':');
	var i2 = _text.indexOf('[');
	var i3 = _text.indexOf(']');
	var name;
	if( (nameIdx > -1) &amp;&amp; (nameIdx &lt; i2) &amp;&amp; (i2 &lt; i3) )
	{
	  name = _text.substring( 0, nameIdx );
	  text = _text.substring( nameIdx, _text.length );
	  text = name + '&lt;span style="color: ' + client.GetColourForName( name ) + ';"&gt;' + text + '&lt;/span&gt;';
	}
        oldGotServerText( text );
      }
    }
  }

  if( 0 ) //ok ) // either we installed successfully or we were already installed
  {
    client.Initialise = chain;
    if( client.Initialise )
    {
      client.Initialise();
    }
  }
}
// client.Initialise();
</chat>
