<?
class captcha
{
  var $str;
  var $x = 100;
  var $y = 40;
  var $img;
  var $gif=false;
  var $png=false;
  var $jpg=false;

  function __construct($str)
  {
    if (!function_exists('gd_info'))
    {
      header('Location: /style/errors/gd_err.gif');
      exit;
    }
    if (imagetypes() & IMG_PNG)$this->png=true;
    if (imagetypes() & IMG_GIF)$this->gif=true;
    if (imagetypes() & IMG_JPG)$this->jpg=true;
    $this->str=$str;

    $this->img=imagecreatetruecolor($this->x, $this->y);
    imagefill($this->img, 0, 0, imagecolorallocate ($this->img, 255, 255, 255));
  }

  function create()
  {
    for ($i=0; $i<5 ;$i++ )
    {
      $n = $this->str[$i];
      if ($this->png)$num[$n]=imagecreatefrompng(H.'/style/captcha/'.$n.'.png');
      elseif ($this->gif)$num[$n]=imagecreatefromgif(H.'/style/captcha/'.$n.'.gif');
      elseif ($this->jpg)$num[$n]=imagecreatefromjpeg(H.'/style/captcha/'.$n.'.jpg');
      imagecopy($this->img, $num[$n], $i*15+10, 8, 0, 0, 15, 20);
    }
  }

  function MultiWave()
  {
    include_once H.'sys/inc/MultiWave.php';
    $this->img=MultiWave($this->img);
  }

  function colorize($value=90)
  {
    if (function_exists('imagefilter'))
      imagefilter($this->img, IMG_FILTER_COLORIZE, mt_rand(0, $value), mt_rand(0, $value), mt_rand(0, $value));
  }

  function output($q=50)
  {
    @ob_end_clean();
    if ($this->jpg)
    {
      header("Content-type: image/jpeg");
      imagejpeg($this->img,null,$q);
    }
    elseif ($this->png)
    {
      header("Content-type: image/png");
      imagepng($this->img);
    }
    elseif ($this->gif)
    {
      header("Content-type: image/gif");
      imagegif($this->img);
    }
    exit;
  }
}

