<?php
  ///////////////////////////////////////////////////

  ///////////////////////////////////////////////////
?>
<?php
  //Меняет содержимое файла $FileName1 на содержание файла $FileName2 и наоборот
  function ChangeContent($FileName1, $FileName2)
  {
    $Arr1 = @file($FileName1);
    $Arr2 = @file($FileName2);
    $Str1 = @implode($Arr1);
  	$Str2 = @implode($Arr2);
	  SaveStringInFile($FileName1, $Str2, 'w');
	  SaveStringInFile($FileName2, $Str1, 'w');
    if(filesize($FileName1) == 0)
      unlink($FileName1);
    if(filesize($FileName2) == 0)
      unlink($FileName2);
  }

  //корректирует ввод пользователя
  function CorrectInput($Str)
  {
    $Str = trim($Str);
    $Str = htmlspecialchars($Str);
    $Str = stripslashes($Str);
    $Str = str_replace('&amp;#', '&#', $Str);
    return($Str);
  }

  //выводит гистограмму 1
  function GenJpGraphBar1($VotedArr, $LegendArr, $ImgFile, $VarRGB)
  {
    global $Width, $Height, $BarColor, $ColorMode;
    include_once ("poll/jpgraph/jpgraph.php");
	  include_once ("poll/jpgraph/jpgraph_bar.php");

    // Create the graph. These two calls are always required
	  $graph = new Graph($Width,$Height,"auto");
	  $graph->img->SetMargin(40,30,20,40);
	  $graph->SetScale("textlin");

    $graph->xaxis->SetTickLabels($LegendArr);
	  // Create a bar pot
	  $bplot = new BarPlot($VotedArr);
    if($ColorMode == 'transparent')
      $Col = "";
    if($ColorMode == 'onecolor')
      $Col = $BarColor;
    if($ColorMode == 'manycolors')
      $Col = RGBToHex($VarRGB);
    $bplot -> SetFillColor($Col);
    $graph->Add($bplot);
	  $graph->xaxis->title->Set("X-variants");
	  $graph->yaxis->title->Set("Y-percentage(%)");
    $graph->Stroke($ImgFile);
  }

  //выводит гистограмму 2
  function GenJpGraphBar2($VotedArr, $LegendArr, $ImgFile, $VarRGB)
  {
    global $Width, $Height, $BarColor, $ColorMode;
    include_once ("poll/jpgraph/jpgraph.php");
	  include_once ("poll/jpgraph/jpgraph_bar.php");

    // Create the graph. These two calls are always required
	  $graph = new Graph($Width, $Height,"auto");
	  $graph->img->SetMargin(40,30,20,40);
	  $graph->SetScale("textlin");
    $graph->xaxis->SetTickLabels($LegendArr);
	  // Create a bar pot
	  $bplot = new BarPlot($VotedArr);

    if($ColorMode == 'transparent')
      $Col = "";
    if($ColorMode == 'onecolor')
      $Col = $BarColor;
    if($ColorMode == 'manycolors')
      $Col = RGBToHex($VarRGB);
    $bplot->SetFillColor($Col);
	  $bplot->SetWidth(1);
	  $graph->Add($bplot);

	  $graph->xaxis->title->Set("Variations");
	  $graph->yaxis->title->Set("Percentage(%)");
	  $graph->Stroke($ImgFile);
  }

  //генерирует круговую диаграмму
  function GenPie($VotedArr, $LegendArr, $ColorsArr, $ImgFile)
  {
    global $Width, $Height;
    include_once ("poll/jpgraph/jpgraph.php");
	  include_once ("poll/jpgraph/jpgraph_pie.php");
	  // Create the Pie Graph.
	  $graph = new PieGraph($Width, $Height, "auto");
	  // Set A title for the plot
	  $graph->title->SetFont(FF_FONT1,FS_BOLD);
	  // Create
	  $pie = new PiePlot($VotedArr);
    $pie -> SetSliceColors($ColorsArr);
    $pie -> SetLegends($LegendArr);
	  $graph -> Add($pie);
	  $graph -> Stroke($ImgFile);
  }

  //генерирует 3dдиаграмму
  function GenPiePlot3d($VotedArr, $LegendArr, $ColorsArr, $ImgFile)
  {
    global $Width, $Height;
    include_once ("poll/jpgraph/jpgraph.php");
    include_once ("poll/jpgraph/jpgraph_pie.php");
    include_once ("poll/jpgraph/jpgraph_pie3d.php");
    $graph = new PieGraph($Width, $Height,"pie3d_csimex1");
    $poll3dPies = new PiePlot3D($VotedArr);
    $poll3dPies -> SetLegends($LegendArr);
    $poll3dPies -> SetSliceColors($ColorsArr);
	  $poll3dPies -> SetLabelType(1);
	  $poll3dPies -> SetLabelFormat("%d %%");
	  $poll3dPies -> SetCenter(0.4,0.5);
	  $graph->Add($poll3dPies);
    $graph->Stroke($ImgFile);
    //$graph = '';
    //$poll3dPies = '';
  }

  //генерирует гистограмму 3
  function GenScatterPlot($VotedArr, $LegendArr, $ImgFile)
  {
    global $Width, $Height, $BarColor, $ColorMode;
    include_once ("poll/jpgraph/jpgraph.php");
	  include_once ("poll/jpgraph/jpgraph_scatter.php");
    $graph = new Graph($Width, $Height, "auto");
	  $graph->img->SetMargin(40,40,40,40);
	  $graph->SetScale("textlin");
    $graph->xaxis->SetTickLabels($LegendArr);
    $Col = $BarColor;

    $sp1 = new ScatterPlot($VotedArr);
	  $sp1->mark->SetType(MARK_SQUARE);
    $sp1->mark->SetFillColor($Col);
    $sp1->SetImpuls();

	  $graph->Add($sp1);
	  $graph->Stroke($ImgFile);
  }

  //Выбирает из основного файла вопрос (исходя из параметров - файл пароля и длина вопроса)
  function GetQuestion($PswdFile, $QuestLength, $Prefix='pswds')
  {
    //определяем основной файл голосования
    $PollFile = str_replace($Prefix, 'cp', $PswdFile);
    if(!file_exists($PollFile))
      $PollFile = str_replace($Prefix, 'arch', $PswdFile);
    //выбираем вопрос из основного файла
    $fp = fopen($PollFile, 'r');
    $Question = fread($fp, $QuestLength); //+7 BBCode [quest]

    fclose($fp);
    $Question = StripBBCode($Question);
    $Pos = strpos($Question, '[');
    if($Pos > 0)
      $Question = substr($Question, 0, $Pos);
    return($Question);
  }

  //Осуществляет автоматический переход на динамическую страницу ($Str)
  function Refresh($Str)
  {
    echo "<HTML><HEAD>
            <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?page={$Str}'>
          </HEAD></HTML>";
  }

  //конвертирует RGB цвет в шестнадцатеричный
  function RGBToHex()
  {
    global $VarRGB;
    for($i = 1; $i <= count($VarRGB); $i++)
    {
      $Hex = "#";
      for($b = 0; $b < 3; $b++)
      {
        $Tmp = dechex($VarRGB[$i][$b]);
        if(strlen($Tmp) == 1)
          $Tmp = '0'.$Tmp;
        $Hex .= $Tmp;
      }
      $ColorsArr[] = $Hex;
      $Hex = "";
    }
    return($ColorsArr);
  }
  //Сохраняет строку в выбранном файле (имя файла, строка, 'a'/'w' или чтение/запись)
  function SaveStringInFile($FileName, $Str, $Mode)
  {
    global $Err_Flock, $Err_Fopen;
    $fp=@fopen($FileName, $Mode);
    if($fp)
    {
      if(flock($fp, 2))
      {
        fwrite($fp, $Str);
        flock($fp, 3);
        fclose($fp);
      } else $ErrorMessage = $Err_Flock;
    } else $ErrorMessage = $Err_Fopen;
    return($ErrorMessage);
  }

  //ShowErrors - выводит ошибки
  function ShowErrors($ErrorArray, $TableWidth = '90%', $FieldClass = 'GeneralField')
  {
    global $Cpt_Error;
    if(!empty($ErrorArray))
	  {
	    print "<fieldset class={$FieldClass} align=center>";
	      print "<table align=center class=General cellspacing = 0 cellpadding = 0 width = {$TableWidth}>";
	        print "<tr><td><b>{$Cpt_Error}</b></td></tr>";
	        for($i = 0; $i < count($ErrorArray); $i++)
	          print "<tr><td>{$ErrorArray[$i]}</td></tr>";
	      print "</table>";
	    print "</fieldset>";
	  }
  }

  function ShowMessage($Message, $TableWidth = '90%')
  {
    if(!empty($Message))
    {
    	print "<fieldset class=GeneralField align=center>";
	    print "<table class=General align=center border=0 cellspacing=0 cellpadding=0 width={$TableWidth}>";
	      print "<tr><td>{$Message}</td></tr>";
	    print "</table>" ;
	    print "</fieldset>";
    }
  }

  //освобождает строку от тегов [quest][var1][var1voted]
  function StripBBCode($Str)
  {
    $Str = ereg_replace("\[[/a-z0-9]+\]", "", $Str);
    return($Str);
  }

  function TranslateMonths($Date, $Lng)
  {
    if($Lng=='rus')
      $Months=array('Jan'=>'января', 'Feb'=>'февраля', 'Mar'=>'марта', 'Apr'=>'апреля', 'May'=>'мая', 'Jun'=>'июня', 'Jul'=>'июля', 'Aug'=>'августа', 'Sep'=>'сентября','Oct'=>'октября','Nov'=>'ноября','Dec'=>'декабря');
    elseif($Lng=='fre')
      $Months=array('Jan'=>'janvier', 'Feb'=>'fйvrier', 'Mar'=>'mars', 'Apr'=>'avril', 'May'=>'mai', 'Jun'=>'juin', 'Jul'=>'juillet', 'Aug'=>'aoыt', 'Sep'=>'septembre','Oct'=>'octobre','Nov'=>'novembre','Dec'=>'dйcembre');
    /*elseif($Lng=='ger')
      $Months=array('Jan'=>'Januar', 'Feb'=>'Februar', 'Mar'=>'Mдrz', 'Apr'=>'April', 'May'=>'Mai', 'Jun'=>'Juni', 'Jul'=>'Juli', 'Aug'=>'August', 'Sep'=>'September','Oct'=>'Oktober','Nov'=>'November','Dec'=>'Dezember');
    elseif($Lng=='dut')
      $Months=array('Jan'=>'januari', 'Feb'=>'februari', 'Mar'=>'maart', 'Apr'=>'april', 'May'=>'mei', 'Jun'=>'juni', 'Jul'=>'jule', 'Aug'=>'augustus', 'Sep'=>'september','Oct'=>'oktober','Nov'=>'november','Dec'=>'december');
    elseif($Lng=='spa')
      $Months=array('Jan'=>'enero', 'Feb'=>'fevrero', 'Mar'=>'marzo', 'Apr'=>'abril', 'May'=>'mayo', 'Jun'=>'junio', 'Jul'=>'julio', 'Aug'=>'agosto', 'Sep'=>'septiembre','Oct'=>'oktubre','Nov'=>'noviembre','Dec'=>'diciembre');
    elseif($Lng=='ukr')
      $Months=array('Jan'=>'сiчня', 'Feb'=>'лютого', 'Mar'=>'березня', 'Apr'=>'квiтня', 'May'=>'травня', 'Jun'=>'червня', 'Jul'=>'липня', 'Aug'=>'серпня', 'Sep'=>'вересня','Oct'=>'жовтня','Nov'=>'листопада','Dec'=>'грудня');
    elseif($Lng=='eo')
      $Months=array('Jan'=>'januaro', 'Feb'=>'februaro', 'Mar'=>'marto', 'Apr'=>'aprilo', 'May'=>'majo', 'Jun'=>'junio', 'Jul'=>'julio', 'Aug'=>'a&#365;gusto', 'Sep'=>'septembro','Oct'=>'oktobro','Nov'=>'novembro','Dec'=>'decembro');
    if($Lng != 'eng') */
      foreach($Months as $EngName => $Foreign)
        $Date=str_replace($EngName, $Foreign, $Date);
    return $Date;
  }
?>