//************************************************************************
//*** Парсинг информации о фильме с сайта http://www.kinomania.ru      *** 
//***                                                                  ***
//*** Автор основной версий:  Евгений К. aka "djek-ural"               ***
//*** E-Mail:               -----------------------                    ***
//************************************************************************

Const

	 ufPrefix       = ''	;  // Префикс  для имен пользовательских полей
     ufPostfix      = ''	;	 // Постфикс для имен пользовательских полей (можно добавить ":")
	 OldProg 	  = False	;  // Установите значение в True если используйте старую версию программы
	 beta5        = True	;  // Установите значение в True если вы используйте новую версию программу 0.9.9.5 и включили True у OldProg
	 modeNoPeople = False	;  // Установка тихого режима , что бы включить его замените False на True
	 EnablePoster = True	;  // Отключение загрузки постеров , для выключения установите False , включение True
	 EnableScreen = True	;  // Отключение загрузки скриншотов , для выключения установите False , включение True
	 maxNumPoster = 0   	;  // Максимальное количество загружаемых постеров , если 0 то неограничено
	 maxNumScreen = 0   	;  // Максимальное количество загружаемых кадров , если 0 то неограничено
	 Experiment   = True	;  // Экпериментальная функция для сбора статистики , создает файл "statistic" куда скидывает имена актеров 
							   // для дальнейшего иследования , если вам интересен проводимый мною эксперимент то установите значение в True	
							   // Если значение установлено в 0 , значит этот параметр отключен.
	 WidthPos     = 0		;  // Максимальная ширина постеров для загрузки
	 HeightPos    = 0		;  // Максимальная высота постеров для загрузки
	 MaxSizePos   = 0		;  // Максимальный размер постеров в килобайтах
	 MinSizePos   = 0		;  // Минимальный размер постеров в килобайтах
	 RusPoster    = False	;  // Загрузка только русских постеров для включения установите True
							   
     ufBudget         = ufPrefix + 'Бюджет'               + ufPostfix;    //Короткий текст
     ufFirstWorld     = ufPrefix + 'Премьера (мир)'       + ufPostfix;    //Короткий текст
     ufFirstRUS       = ufPrefix + 'Премьера (РФ)'        + ufPostfix;    //Короткий текст
     ufTime	          = ufPrefix + 'Длительность'         + ufPostfix;    //Короткий текст
     ufDoYouKnow      = ufPrefix + 'Знаете ли Вы, что'    + ufPostfix;    //Memo
     ufSites          = ufPrefix + 'Сайты'                + ufPostfix;    //Memo
     ufReview         = ufPrefix + 'Рецензия'             + ufPostfix;    //Memo
	 ufFirstUSA       = ufPrefix + 'Премьера (США)'       + ufPostfix;    //Короткий Текст


//Some useful constants
const
 // РЕЖИМ отладки
  mDebug = False; // True - включено False - выключено
 
 //Script types
 stMovies = 0;
 stPeople = 1; 
 stPoster = 2;
  
 //Script modes
 smSearch   = 0;
 smSearch2  = 1; 
 smNormal   = 2;
 //Custom modes
 smMnenia  = 3;
 smScreen   = 4;
 smPoster   = 5;
 smFinished = 6;
  
 //Parse results
  prError     = 0; 
  prFinished  = 1;
  prList      = 2;
  prListImage = 3;
  prDownload  = 4;
  
 //Download methods
 dmGET  = 0;
 dmPOST = 1;
  
 //Movie fields
 mfURL         = 0;
 mfTitle       = 1;
 mfOrigTitle   = 2;
 mfAka         = 3;
 mfYear        = 4;
 mfGenre       = 5;
 mfCategory    = 6;
 mfCountry     = 7;
 mfStudio      = 8;
 mfMPAA        = 9;
 mfRating      = 10;
 mfTags        = 11;
 mfTagline     = 12;
 mfDescription = 13;
 mfDuration    = 14;
 mfFeatures    = 15;
  
 //People fields
 pfURL        = 0;
 pfName       = 1;
 pfTransName  = 2;
 pfAltNames   = 3;
 pfBirthday   = 4;
 pfBirthplace = 5;
 pfGenre      = 6;
 pfBio        = 7;
 pfDeathDate  = 8;
  
 //Credits types
 ctActors    = 0;
 ctDirectors = 1;
 ctWriters   = 2;
 ctComposers = 3;
 ctProducers = 4;
  
 //Script data 
 SCRIPT_VERSION = '0.1.0.9';  
 SCRIPT_NAME    = 'KinoMania.ru [RU]';
 SCRIPT_DESC    = '[RU] Get movie information from KinoMania.ru';
 SCRIPT_LANG    = $19; //Russian
 SCRIPT_TYPE    = stMovies;
 
 BASE_URL    = 'http://www.kinomania.ru/';
 RATING_NAME = 'KinoMania.ru';
 
 SEARCH_STR  = 'http://www.kinomania.ru/search4.shtml?text=%s';
 
 CODE_PAGE   = 1251; //Use 0 for Autodetect 
 
 Count = 10;
 Clik = 1; // устанавливает счетчик для заноса параметров в файл
  
//Global variables
var
  Mode : Byte;
  FilmCountry , URLFullMovies , URLPoster , URLScreen , URLMnenia : WideString;
  tagPoster , tagScreen : Boolean ; // флаги для установления что постеры и кадры есть
  NumPoster , NumScreen : Byte; // Счетчики загруженных кадров и постеров
  AllPoster , MaxPosit : Byte; // Обший счетчик анализируемых постеров , + максимальный номер постеров
  Schet : Integer; 
  Post : array [0..255] of Boolean; // массив содержаший правила загрузки постеров
  URLtemp : array [0..255] of WideString; // массив содержаший адреса страниц с постерами
  URLPic : array [0..255] of WideString; // массив адресов картинок

//Functions 
function GetScriptVersion : WideString;
begin
 Result := SCRIPT_VERSION;
end; 
 
function GetScriptName : WideString;
begin
 Result :=  SCRIPT_NAME;
end;

function GetScriptDesc : WideString;
begin
 Result := SCRIPT_DESC;
end;

function GetBaseURL : String;
begin
 Result := BASE_URL;
end;

function GetScriptLang: Cardinal;
begin
 Result := SCRIPT_LANG;
end;

function GetCodePage : Cardinal;
begin
 Result := CODE_PAGE;
end;

function GetScriptType : Byte; 
begin
 Result := SCRIPT_TYPE;
end;

function GetCurrentMode : Byte; 
begin
 Result := Mode;
end;

	// Функция для удаления артиклей
 function DeleteArtic( URLSearch : WideString ; razdelit : WideString ) : WideString ;
 var
 a1 , b1 : Integer;
 artic : WideString; // Строка содержашая список артиклей
 StrP , DelA : WideString;
 begin
 artic := 'the,a,der,die,das,le,la,l`';
 DelA := '';
 a1 := Length(URLSearch);
 b1 := LastPos('=',URLSearch);
 StrP := Copy(URLSearch,b1+1,a1-b1);
 StrP := StringReplace(StrP,','+razdelit,razdelit,True,True,False);
 if mDebug then ShowMessage(StrP,'Поисковый запрос');
 Delete(URLSearch,b1+1,a1-b1);
 if Pos(razdelit,StrP) > 0 then
	begin
	a1 := Pos(razdelit,StrP);
	if a1 > 0 then
	  begin
	  DelA := LowerCase(Copy(StrP,1,a1-1));
	  if mDebug then ShowMessage(DelA,'Артикль');
		if Pos(DelA,artic) > 0 then Delete(StrP,1,4);
	  end;
	b1 := LastPos(razdelit,StrP);
	if (b1 > 0) then 
	  begin
	  DelA := LowerCase(Copy(StrP,b1+1,Length(StrP)-b1));
	  if mDebug then ShowMessage(DelA,'Артикль');
		if Pos(DelA,artic) > 0 then Delete(StrP,b1,Length(StrP)-b1+1);
	  end;
	end;
	Result := URLSearch + StrP;
 end;
 
 // Функция для составления поискового запроса
 function GetSearchString : String;
 var
 Nam1 , Nam2 : WideString;
 Nabor , Nabor1 , RusNabor , Temper : WideString;
 iw , iq , Sovpad1 , Sovpad2 : Integer;
 begin
 Nabor := 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
 RusNabor := 'абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
 Nam1 := GetFieldValue(2); // берем название
 Nam2 := GetFieldValue(3); // берем оригинальное название
 if mDebug then ShowMessage(Nam1+'    '+Nam2,'Извлеченные имена');
 Sovpad1 := 0;
 Sovpad2 := 0;
 for iw := 1 to length(Nam1) do
	begin
	if Pos(Nam1[iw],Nabor) > 0 then Inc(Sovpad1);
	if Pos(Nam1[iw],RusNabor) > 0 then Dec(Sovpad1);
	end;
for iq :=1 to length(Nam2) do
	begin
	if Pos(Nam2[iq],Nabor) > 0 then Inc(Sovpad2);
	if Pos(Nam2[iq],RusNabor) > 0 then Dec(Sovpad2);
	end;
	if mDebug then ShowMessage(IntToStr(Sovpad1)+'---'+IntToStr(Sovpad2),'Информация');
  Nabor1 := '';
	if Sovpad2 > 0 then Nabor1 := Nam2;
	if Sovpad1 > 0 then Nabor1 := Nam1;
	Nabor1 := StringReplace(Nabor1,' ','+',True,True,False); // заменяет пробелы +	
	if Nabor1 = '' then Result := SEARCH_STR
	   else
	   begin
	   Temper := SEARCH_STR;
	   Delete(Temper,length(SEARCH_STR)-1,2);
	   Temper := Temper + Nabor1;
	   Result := DeleteArtic(Temper,'+');
	   end;
 end;

  // Удаляет из строки все, что не является цифрой
function CheckNum(s: widestring): widestring;
var
 st: widestring;
 i: integer;
begin
 for i := 1 to length(s) do
   if (s[i] >= '0') and (s[i] <= '9') then
     st := st + s[i]; 
 i := strtoint(st);
 st := inttostr(i);
 result := st;
end;
 
function GetDownloadURL : String;
begin
if mDebug then ShowMessage('Загрузка работает','Информация');
 if (Mode = smSearch) and (URLFullMovies = '') then 
  begin
  if mDebug then ShowMessage('Загрузка 1 страницы','Информация');
  Result := GetSearchString;
  end else
  begin
  if (Mode = smSearch2) and (URLFullMovies <> '')  then begin 
  if mDebug then ShowMessage('Загрузка 2 страницы','Информация');
  Result := URLFullMovies;
  end else
  begin
  if (URLScreen <> '') and (Mode = smScreen) then 
  begin
  if mDebug then ShowMessage('Загрузка скриншотов','Информация');
  Result := URLScreen ;
  end ;
  if (URLPoster <> '') and (Mode = smPoster) then 
  begin
  if mDebug then ShowMessage('Загрузка постеров','Информация');
  if MaxPosit <> 0 then
  begin
  while (Post[AllPoster] = False) and (AllPoster <= MaxPosit) do
  begin
  Inc(AllPoster); 
  end;
  if mDebug then ShowMessage('Текуший номер-'+IntToStr(AllPoster),'Номер адреса для загрузки');
  if AllPoster > MaxPosit then Result := URLtemp[MaxPosit]
  else begin
  if (OldProg = False) then Result := URLtemp[AllPoster] else
	begin
	if MaxPosit =AllPoster+1 then Result := URLPic[AllPoster] else
	Result := URLtemp[AllPoster];
	end;
	end;
  end;
  if MaxPosit = 0 then Result := URLPoster;
  end;
  end;
  end;
end;
 
 // Текст основного кода
 


// Функция для удаления невоспроизводимых символов
function Replace(inStr: WideString): WideString;
Var
 I: Integer;
 Before, After : array[1..Count] of WideString;
Begin
 Before[1] := '&nbsp;';
 After[1] := ' ';
 Before[2] := '&#151;';
 After[2] := '-'; 
 Before[3] := '&#133;';
 After[3] := '...'; 
 Before[4] := '	';        // табуляция
 After[4] := ''; 
 Before[5] := '&laquo;';
 After[5] := '«'; 
 Before[6] := '&raquo;';
 After[6] := '»'; 
 Before[7] := #13#10+' ';  // пробел в начале абзаца
 After[7] := #13#10;
 Before[8] := '&lt;&lt;';
 After[8] := '<<';
 Before[9] := '&gt;&gt;';
 After[9] := '>>';
 Before[10] := ' target=_blank';
 After[10] := '';
 For I := 1 To Count Do
  Begin 
   While Pos(Before[I], inStr) > 0 do
     begin
      Insert(After[i], inStr, Pos(Before[I], inStr));
      delete(inStr, pos(Before[I], inStr), Length(Before[I]));
     end;
  End;
 Result := inStr;
End;

//****** CorrectTime ****** Отображение времени в виде чч:мм:сс ******
function CorrectTime ( Tmp : WideString ) : WideString ;
Var
 tm , hour , min : Integer;
Begin
 tm := 0 ;
 hour := 0 ;
 min := 0 ;
 Tmp := CheckNum (Tmp);
 tm := StrToInt (Tmp);

 hour := tm div 60;
 min := tm mod 60;

 Result := '';
 if hour < 10 then Result := Result + '0';
 Result := Result + IntToStr (hour) + ':';
 if min < 10 then Result := Result + '0';
 Result := Result + IntToStr (min) + ':00';
end;

// ******** CheckDates ************** Преобразовывает строку с датой в короткий формат ****
function CheckDate(s: widestring): widestring;
var
 months : array[1..12] of widestring;
 num: string;
 st: string;
 day, year: string;
 i, j: integer;
begin
  num := '1234567890';
  months[ 1] := 'нваря';
  months[ 2] := 'евраля';
  months[ 3] := 'арта';
  months[ 4] := 'преля';
  months[ 5] := 'ая';
  months[ 6] := 'юня';
  months[ 7] := 'юля';
  months[ 8] := 'вгуста';
  months[ 9] := 'ентября';
  months[10] := 'ктября';
  months[11] := 'оября';
  months[12] := 'екабря'; 
  day := '';
  st := '';
  i := 1;
  while PosFrom(' ',s,i) > 0 do
  begin
  Delete(s,PosFrom(' ',s,i),1);
  Inc(i);
  end ;
  i := 1;
  while Pos(s[i], num) > 0 do
    begin
    day := day + s[i];
    inc(i);
    end;
  if length (day) = 1 then day := '0' + day;
  while (i < length (s)) And (pos(s[i], num) = 0) do
    begin
    st := st + s[i];
    inc(i);
    end;
  year := copy (s, i, 255);
  for j := 1 to 12 do
    if pos(months[j], st) > 0 then st := inttostr(j);
  if length (st) = 1 then st := '0' + st;
  st := '.'+st+'.';
  result := year + st + day;
end;



//  парсим страницу с результатами поиска
 procedure ParseSearchResults(HTML:WideString); // парсинг результатов поиска
 var
 Tmp, curPos, EndPos, TmpPos : Integer;
 Title, Title1 : WideString;
 Year, URL : WideString;
 begin
 if mDebug then ShowMessage('Собираем информацию по результатам','Информация');
  curPos := Pos('<td class="relise-head">',HTML);
  while curPos <> 0 do
   begin
   TmpPos := PosFrom('</a></h3>',HTML,curPos); 
   EndPos := PrevPos('">',HTML,TmpPos);
   Tmp := PrevPos('<h3><a href="',HTML,EndPos)+13;
   URL := Copy(HTML,Tmp,EndPos-Tmp); //  находим адрес страницы с фильмом
   Delete(URL,1,1);
   URL := BASE_URL+URL;
   Title := Copy(HTML,EndPos+2,TmpPos-EndPos-2) ; // находим название фильма на русском языке
   TmpPos := PosFrom('<p class="details">/',HTML,TmpPos)+20;
   EndPos := PosFrom('/</p>',HTML,TmpPos);
   Title1 := Copy(HTML,TmpPos,EndPos-TmpPos); // находим название фильма на английском
   //Title1 := DeleteArtic(Title1,' ');
   TmpPos := PosFrom('<td class="relise-info">',HTML,EndPos);
   Tmp := PosFrom('<li>',HTML,TmpPos)+4;
   TmpPos := PosFrom('</li>',HTML,Tmp);
   Year := CheckNum(Copy(HTML,Tmp,TmpPos-Tmp)); // находим год выпуска фильма
   AddSearchResult(Title,Title1,Year,URL,''); // заполняем результаты поиска в программу для вывода окна выбора
  if mDebug then 
    begin
    ShowMessage(Title+'='+Title1+'='+Year+'='+URL,'Информация Результаты поиска');
    Wait(1000);
    end ;   
   curPos := PosFrom('<td class="relise-head">',HTML,TmpPos);
   end ;
 end ;
 
 // анализ и выборка файлов для выбора постера
 procedure AnalizeAndSelect(HTML:WideString ; var PosterDB:WideString ; var Qu:Integer);
 var
 naPos , coPos , tmPos , vaPos , pPos , tPos : Integer;
 wid , hei , siz , temp , Seek , peek: WideString;
 tagRepeat : Boolean; // тег устанавливаюший режим повтора
 t0 , t1 , t2: Boolean;
 begin
 tagRepeat := False;
 AllPoster := 1;
 naPos := Pos('wall-film-list poster-list',HTML);
   if naPos > 0 then
	begin
	naPos := Pos('<dd class="details">',HTML);
	  while naPos > 0 do
		begin
		t0 := False;
		t1 := False;
		t2 := False;
		coPos := PosFrom('</dd>',HTML,naPos);
		naPos := naPos + 20;
		temp := Copy(HTML,naPos,coPos-(naPos-1)); // сюда собираются данные для сортировки
		tPos := PrevPos('<dt><a href="',HTML,naPos)+13;
		pPos := PosFrom('"><img',HTML,tPos);
		URLtemp[AllPoster] := Copy(HTML,tPos,pPos-tPos); // сдесь берется адрес страницы с постером для загрузки и парсинга
		peek := URLtemp[AllPoster];
		if mDebug then ShowMessage('Адрес-'+URLtemp[AllPoster],'Адрес Страницы');
		if LastPos('/pos',PosterDB) <> 0 then
		begin
		Delete(PosterDB,LastPos('/pos',PosterDB)+1,25);
		end;
		if mDebug then ShowMessage('Адрес-'+PosterDB,'Урезанный Адрес');
		URLtemp[AllPoster] := PosterDB + peek;
		if mDebug then ShowMessage('Адрес-'+URLtemp[AllPoster],'Полный Адрес');
		if Seek = '' then Seek := URLtemp[AllPoster] // Временная переменная для сравнения адресов
		else begin
		if CompareText(Seek,URLtemp[AllPoster])=0 then tagRepeat := True;
		Seek := URLtemp[AllPoster];
		end;
		if (RusPoster = False) and ((WidthPos = 0) and (HeightPos = 0)) and ((MaxSizePos = 0) and (MinSizePos = 0)) then Post[AllPoster] := True
		else begin
		if Pos('(!) Русский постер',temp) > 0 then
			begin
			if RusPoster then 
				begin
				Post[AllPoster] := True;
				t0 := True;
				end;
			temp := StringReplace(temp,'(!) Русский постер','',False,True,False);
			end;
		tmPos := Pos(' x ',temp);  // разделяет ширину и высоту
		if Pos('<',temp) > 0 then wid := Copy(temp,LastPos('>',temp),tmPos-LastPos('>',temp)) else
		wid := Copy(temp,1,tmPos-1); // определяем ширину
		wid := CheckNum(wid);
		vaPos := Pos(', ',temp); // разделяет размеры в пикселях и размер в кб
		hei := Copy(temp,tmPos+3,vaPos-(tmPos+3)); // определяем высоту
		tmPos := Pos('kb',temp);
		siz := Copy(temp,vaPos+2,tmPos-(vaPos+2)); // определяем размер в килобайтах
		if mDebug then ShowMessage('Ширина-'+wid+'-Высота-'+hei+'-Размер в КБ-'+siz+'-*','Информация');
		if (WidthPos > 0) or (HeightPos > 0) then
		  begin
		  if ((WidthPos > 0) and (StrToInt(wid) <= WidthPos)) and ((HeightPos > 0) and (StrToInt(hei) <= HeightPos)) 
		  then 
		  begin
		  Post[AllPoster] := True;
		  t1 := True;
		  end
		  else begin
			if ((WidthPos > 0) and (StrToInt(wid) <= WidthPos)) and (HeightPos = 0) then 
			  begin
			  Post[AllPoster] := True;
			  t1 := True;
			  end
			  else
				begin
				if (WidthPos = 0) and ((HeightPos > 0) and (StrToInt(hei) <= HeightPos)) then
				begin
				Post[AllPoster] := True;
				t1 := True;
				end
				else
				Post[AllPoster] := False;
				end;
		  end;
		  end;
		if (MaxSizePos > 0) or (MinSizePos > 0) then
		  begin
		  if ((MinSizePos > 0) and (StrToInt(siz) >= MinSizePos)) and ((MaxSizePos > 0) and (StrToInt(siz) <= MaxSizePos)) 
		  then begin
		  t2 := True;
		  Post[AllPoster] := True; 
		  end else begin
			if ((MinSizePos > 0 ) and (StrToInt(siz) >= MinSizePos)) and (MaxSizePos = 0) then 
				begin
				t2 := True;
				Post[AllPoster] := True;
				end else 
				begin
				if (MinSizePos =0) and ((MaxSizePos > 0) and (StrToInt(siz) <= MaxSizePos)) then begin
				t2 := True;
				Post[AllPoster] := True; 
				end else 
				Post[AllPoster] := False;
				end;
			end;
		  end;
		end;
		if ((WidthPos > 0) or (HeightPos > 0)) and ((MinSizePos > 0) or (MaxSizePos > 0)) and (RusPoster = False) then 
		begin
		if (t1 and t2) then Post[AllPoster] := True else Post[AllPoster] := False;
		end;
		if ((WidthPos > 0) or (HeightPos > 0)) and ((MinSizePos > 0) or (MaxSizePos > 0)) and (RusPoster = True) then
		begin
		if (t0 and t1 and t2) then Post[AllPoster] := True else Post[AllPoster] := False;
		end;
		if ((WidthPos > 0) or (HeightPos > 0)) and (RusPoster = True) and ((MinSizePos = 0) or (MaxSizePos = 0)) then
		begin
		if (t0 and t1) then Post[AllPoster] := True else Post[AllPoster] := False;
		end;
		if ((MinSizePos > 0) or (MaxSizePos > 0)) and (RusPoster = True) and ((WidthPos = 0) or (HeightPos = 0)) then
		begin
		if (t0 and t2) then Post[AllPoster] := True else Post[AllPoster] := False;
		end;
		case Post[AllPoster] of
		True : if mDebug then ShowMessage('Проверку прошел '+IntToStr(AllPoster)+' СТАТУС-Истина','Информация');
		False : if mDebug then ShowMessage('Проверку прошел '+IntToStr(AllPoster)+' СТАТУС-Ложь','Информация');
		end;
		naPos := PosFrom('<dd class="details">',HTML,naPos);
		if (tagRepeat = False) then Inc(AllPoster) else tagRepeat := False;
		if naPos = 0 then Dec(AllPoster);
		end;
		MaxPosit := AllPoster;
		if mDebug then ShowMessage('Количество-'+IntToStr(MaxPosit),'Обшее количество адресов');
		AllPoster := 1;
		Qu := 1;
	end;
 end;
 
 // парсим адреса страниц постеров для дальнейшей загрузки
 procedure ParsePoster(HTML:WideString);
 var
 curPos , TmpPos , EndPos , varPos , It , Rep , Qu : Integer ;
 PosterDB : WideString; // динамический массив с постерами
 tagRep : Boolean; // тег режима повтора
 begin
 Qu := 0 ;
 if mDebug then ShowMessage('Собираем информацию по постерам','Информация');
 curPos := Pos ( '<em>постер' , HTML ) ; //  проверка что мы на странице постеров
   if curPos > 0 then
   begin
   curPos := PosFrom ( '<td width="13%"' , HTML , curPos ) ;
   TmpPos := PosFrom ( 'class="cur"' , HTML , curPos ) ;
   EndPos := PosFrom ( '</td>' , HTML , curPos ) ; // еще одна проверка что страница постеров текушая
   if (TmpPos > 0) and (TmpPos < EndPos) then
      begin
	  curPos := PosFrom ( '"wall-film-list poster-list"' , HTML , EndPos ) ;
	    if curPos > 0 then
		  begin
		  curPos := PosFrom ( '<dt><a href="' , HTML , curPos )+13 ; // берем адрес страницы с самым первым постером
		  TmpPos := PosFrom ( '"><img' , HTML , curPos ) ;
		  varPos := Pos ( 'posters.shtml' , URLPoster ) ;
		  Delete ( URLPoster , varPos , 13 ) ;
		  PosterDB := URLPoster + Copy ( HTML , curPos , TmpPos - curPos ) ;
		  URLPoster := PosterDB ;
		  AnalizeAndSelect(HTML,PosterDB,Qu);
		  end 
		else
		  begin
			   varPos := Pos ( 'poster' , URLPoster ); // подготавливаем адрес для картинки
			   EndPos := Length(URLPoster);
			   Delete(URLPoster,varPos,EndPos-varPos+1);
			   PosterDB := URLPoster ;
			   URLPoster := URLtemp[AllPoster] ;
			   curPos := PosFrom ( 'src="' , HTML , TmpPos ) +5;
			   TmpPos := PosFrom ( '"' , HTML , curPos ) ;
			   PosterDB := PosterDB + Copy ( HTML , curPos , TmpPos - curPos ) ;
			   if mDebug then ShowMessage('Адрес='+PosterDB,'Адрес загружаемого постера');
			   if mDebug then ShowMessage('Номер-'+IntToStr(AllPoster),'Номер текушего адреса парсинга');
			   Rep := 0; // счетчик количества повторов
			   for It := 0 to AllPoster do
				begin
				if (CompareText(PosterDB,URLPic[AllPoster]) = 0) and (URLPic[AllPoster] <> '') then Inc(Rep);
				end;
			   if Rep > 0 then tagRep := True;
			   URLPic[AllPoster] := PosterDB;
				if (maxNumPoster = NumPoster) and (maxNumPoster <> 0) then
					begin
						begin
						if (Post[AllPoster]=True) and (OldProg = False) then AddImageURL(0,URLPic[AllPoster]); //последний
						URLPoster := '' ;
						tagPoster := False ;
						if (tagScreen) and (URLScreen <> '') and (OldProg = False) then Mode := smScreen else Mode := smFinished ;
						end;
					end
					else
						begin
						if (Post[AllPoster]=True) and (OldProg = False) then AddImageURL(0,URLPic[AllPoster]);
						Inc(NumPoster);
						if AllPoster = MaxPosit then
						  begin
						  URLPoster := '' ;
						  tagPoster := False ;
						  if (tagScreen) and (URLScreen <> '') and (OldProg = False) then Mode := smScreen else Mode := smFinished ;
						  end;
						end;
		  end ;
	  end ;
   end ;
   tagRep := False;
   if Qu = 0 then Inc(AllPoster);
   if (AllPoster > MaxPosit) and (URLtemp[AllPoster] = '') then
	begin
	URLPoster := '' ;
	tagPoster := False ;
	if (tagScreen) and (URLScreen <> '') and (OldProg = False) then Mode := smScreen else Mode := smFinished ;
	end;
 end ;
 
  // парсим адреса страниц кадров для дальнейшей загрузки
 procedure ParseScreenshot ( HTML : WideString ) ;
 var
 curPos , TmpPos , EndPos , varPos : Integer ;
 ScreenDB : WideString; // динамический массив с сриншотами
 begin
 if mDebug then ShowMessage('Собираем информацию по кадрам','Информация');
 curPos := Pos ( '<em> кадры</em>' , HTML ) ; //  проверка что мы на странице кадров
   if curPos <> 0 then
   begin
   curPos := PosFrom ( '<td width="11%"' , HTML , curPos ) ;
   TmpPos := PosFrom ( 'class="cur"' , HTML , curPos ) ;
   EndPos := PosFrom ( '</td>' , HTML , curPos ) ; // еще одна проверка что страница постеров текушая
   if (TmpPos <> 0) and (TmpPos < EndPos) then
      begin
	  curPos := PosFrom ( '"section news"' , HTML , EndPos ) ;
	    if curPos <> 0 then
		  begin
		  curPos := PosFrom ( '><a href="' , HTML , curPos )+10 ; // берем адрес страницы с самым первым кадром
		  TmpPos := PosFrom ( '"><img src=' , HTML , curPos ) ;
		  varPos := Pos ( 'kadr.shtml' , URLScreen ) ;
		  Delete ( URLScreen , varPos , 10 ) ;
		  ScreenDB := URLScreen + Copy ( HTML , curPos , TmpPos - curPos ) ;
		  URLScreen := ScreenDB ;
		  end 
		else
		  begin
		  curPos := PosFrom ( 'article great-wall' , HTML , EndPos ) ; // берем адрес страницы со 2-ым итд кадром
		  TmpPos := PosFrom ( 'вернуться в галерею' , HTML , curPos ) ;
		  EndPos := PosFrom ( 'следующая' , HTML , TmpPos ) ; 
		    if ((curPos <> 0) and (TmpPos <> 0)) and (EndPos <> 0) then
			   begin
			   curPos := PosFrom ( '<li><a href=''' , HTML , TmpPos ) +13 ;
			   TmpPos := PosFrom ( '''' , HTML , curPos ) ;
			   varPos := LastPos ( '/' , URLScreen );
			   Delete ( URLScreen , varPos + 1 , Length ( URLScreen ) - varPos ) ;
			   ScreenDB := URLScreen ;
			   URLScreen := URLScreen + Copy ( HTML , curPos , TmpPos - curPos ) ;
			   curPos := PosFrom ( '<img src="' , HTML , TmpPos )+10 ;
			   TmpPos := PosFrom ( '"' , HTML , curPos ) ;
			   ScreenDB := ScreenDB + Copy ( HTML , curPos , TmpPos - curPos ) ;
			   if Pos('.shtml',URLScreen) = 0 then
			   begin
			   URLScreen := '' ;
			   tagScreen := False ;
			   if (tagPoster) and (URLPoster <> '') then Mode := smPoster else Mode := smFinished ;
			   end;
			   if maxNumScreen >= NumScreen then 
				begin
				AddImageURL ( 1 , ScreenDB ) ; // загружаем постер с текушей страницы
				if maxNumScreen <> 0 then Inc(NumScreen);
				end else
					begin
					if maxNumScreen = 0 then AddImageURL(1,ScreenDB) else
						begin
						URLScreen := '' ;
						tagScreen := False ;
						if (tagPoster) and (URLPoster <> '') then Mode := smPoster else Mode := smFinished ;
						end;
					end;
			   end
			else
			   begin
			   varPos := LastPos ( '/' , URLScreen );
			   Delete ( URLScreen , varPos + 1 , Length ( URLScreen ) - varPos ) ;
			   ScreenDB := URLScreen ;
			   curPos := PosFrom ( '<img src="' , HTML , TmpPos )+10 ;
			   TmpPos := PosFrom ( '"' , HTML , curPos ) ;
			   ScreenDB := ScreenDB + Copy ( HTML , curPos , TmpPos - curPos ) ;
			   if Pos('.shtml',URLScreen) = 0 then
			   begin
			   URLScreen := '' ;
			   tagScreen := False ;
			   if (tagPoster) and (URLPoster <> '') then Mode := smPoster else Mode := smFinished ;
			   end;
			   if maxNumScreen >= NumScreen then
				begin 
				AddImageURL ( 1 , ScreenDB ) ; // загружаем кадр с последней страницы
				if maxNumScreen <> 0 then
				  begin 
				  URLScreen := '' ;
				  tagScreen := False ;
				  if (tagPoster) and (URLPoster <> '') then Mode := smPoster else Mode := smFinished ;
				  end;
				end else
					begin
					if maxNumScreen = 0 then AddImageURL(1,ScreenDB);
					URLScreen := '' ;
					tagScreen := False ;
					if (tagPoster) and (URLPoster <> '') then Mode := smPoster else Mode := smFinished ;
					end;
			   end ;
		  end ;
	  end ;
   end ;
 end ;
 
 	// Функция для генерации строки с нулями
 function GenerateNull(Kol :Integer):WideString;
 var
 it , Jk : Integer;
 Qt , wdt : WideString;
 begin
 Qt := '';
 wdt := '';
 if Kol > 0 then
 begin
 for it := 1 to Kol do
	begin
	Qt := Qt + '0';
	if (it mod 3) = 0 then Qt := Qt + ' ';
	end;
 it := Length(Qt);
 for Jk := it downto 1 do
	begin
	wdt := wdt + Qt[Jk];
	end;
 end;
 Result :=wdt;
 end;
 
  // корректирует поле бюджет
 function CheckBudjet ( Stroka : WideString ) : WideString ;
 var
 socr , PosT , ind : Integer ;
 flt : Extended ;
 Simvol , StringT , Zif0 : WideString ;
 begin
 Simvol := '';
 if Pos ( 'млн.' , Stroka ) <> 0 then // заменяем милион цифрами
 begin
 socr := Pos ( 'млн.' , Stroka ) ;
 Delete ( Stroka , socr , 4 ) ;
	if Pos('0,',Stroka) > 0 then // если число не целое то переводим его к целому виду
	begin
	  if Pos('$',Stroka) > 0 then
		begin
		socr := Pos('$',Stroka);
		Delete(Stroka,socr,1);
		Simvol := '$';
		flt := StrToFloat(Stroka);
		flt := flt*1E6;
		Stroka := Simvol+' '+FloatToStr(flt);
		end
	  else
		  begin
		  flt := StrToFloat(Stroka);
		  flt := flt*1E6;
		  Stroka :=FloatToStr(flt);
		  end;
	end
	else
	begin
	if Pos('$',Stroka) > 0 then Simvol := '$';
	Stroka := Stroka + '000 000' ;
	end ;
 end ;
	
	StringT := CheckNum(Stroka); // Операция для деления числа на разряды
	socr := Length(StringT);
	zif0 := '';
	for ind := 1 to socr do
		begin
		if StringT[ind] <> '0' then zif0 := zif0 + StringT[ind];
		end;
	PosT := Length(zif0); // определяется длина чисел без нолей
	if (socr = PosT) then Stroka :=Simvol+' '+StringT else Stroka :=Simvol+' '+zif0+GenerateNull(socr-PosT);
 Result := Stroka ;
 end ;
 
// Удаляет из строки все, что является цифрой
function ReCheckNum(s: widestring): widestring;
var
 st , trek : widestring;
 i: integer;
begin
 trek := '0123456789';
 for i := 1 to length(s) do
   if ((s[i] >= '0') and (s[i] <= '9')) then else
   begin
	 if Pos(s[i],trek) = 0 then st := st + s[i];
	 end;
 result := st;
end;
 
	// Извлекает из адреса английское имя
 function ParseURLtoName ( nameURL : WideString ): WideString ;
 var
 urlPos , T : Integer ;
 Stroka , Sim : WideString ;
 Buk : String ;
 begin
	Buk :='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	urlPos := LastPos('/index.shtml',nameURL); // отрезаем конец
	Delete(nameURL,urlPos,12);
	urlPos := LastPos('/',nameURL)+1;
	Stroka := Copy(nameURL,urlPos,(Length(nameURL)-urlPos+1)); // вырезаем имя персоны из УРЛ
	if mDebug then ShowMessage('Имя персоны-'+Stroka,'Информация');
	T :=1;
	if Pos(Stroka[T],Buk) = 0 then 
	begin
	Sim := UpperCase(Stroka[T]);
	Delete(Stroka,T,1);
	Insert(Sim,Stroka,T);
	end;
	urlPos := PosFrom('_',Stroka,T); // удаляем символ подчеркивания и заменяем пробелом плюс возводим символы в верхний регистр
	while urlPos > 0 do
	begin
	Delete(Stroka,urlPos,1);
	Insert(#32,Stroka,urlPos);
	Inc(urlPos);
	if Pos(Stroka[urlPos],Buk) = 0 then
	begin
	Sim := UpperCase(Stroka[urlPos]);
	Delete(Stroka,urlPos,1);
	Insert(Sim,Stroka,urlPos);
	end;
	T := urlPos;
	urlPos := PosFrom('_',Stroka,T);
	end;
	T :=1;
	if Pos(Stroka[T],Buk) = 0 then 
	begin
	Sim := UpperCase(Stroka[T]);
	Delete(Stroka,T,1);
	Insert(Sim,Stroka,T);
	end;
	urlPos := PosFrom('-',Stroka,T); // возводим символы в верхний регистр после тире
	while urlPos > 0 do
	begin
	Inc(urlPos);
	if Pos(Stroka[urlPos],Buk) = 0 then
	begin
	Sim := UpperCase(Stroka[urlPos]);
	Delete(Stroka,urlPos,1);
	Insert(Sim,Stroka,urlPos);
	end;
	T := urlPos;
	urlPos := PosFrom('-',Stroka,T);
	end;
	if mDebug then ShowMessage('Имя персоны-'+Stroka,'Информация');
	Stroka := ReCheckNum(Stroka);
	Result := Stroka;
 end ;
 
 function CheckRus(S: WideString): WideString;
Var
PosRU , PosEN , PosDel , Pol , Len : Integer;
typ , raznoe : WideString;
Strus , Steng : WideString;
Begin
Pol := 1; // счетчик циклов
Len := 0;
typ := '';
Strus := 'россия'; // страны которые являются рускоязычными
Steng := 'сша';    // страны которые являются англоязычными
S := StringReplace(S,' ','',True,False,False);
PosDel := Pos(',',S);
if PosDel > 0 then
	begin
	PosDel := Pos(',',S);
	while PosDel > 0 do
	  begin
	  if Pol =1 then raznoe := Copy(S,1,PosDel-1) else
	    begin
		Len := Len + Length(raznoe) + 1;
		raznoe := LowerCase(Copy(S,Len+1,PosDel-Len-1));
		end;
	  Inc(Pol);
	  PosDel := PosFrom(',',S,PosDel+1);
	  if Pos(raznoe,Strus) > 0 then PosRU := Pos(raznoe,Strus);
	  if Pos(raznoe,Steng) > 0 then PosEN := Pos(raznoe,Steng);
	  end;
	  if (PosRU > 0) and (PosEN = 0) then typ := 'RU';
	  if (PosRU = 0) and (PosEN > 0) then typ := 'EN';
	  if (PosRU > 0) and (PosEN > 0) then typ := '';
	end
	else 
		begin
		S := LowerCase(S);
		if Pos(S,Strus) > 0 then PosRU := Pos(S,Strus);
		if Pos(S,Steng) > 0 then PosEN := Pos(S,Steng);
		if (PosRU > 0) and (PosEN = 0) then typ := 'RU';
		if (PosRU = 0) and (PosEN > 0) then typ := 'EN';
		end;
	if typ = '' then Result := '' else Result := typ;
End;

// функция для очистки текста от мусора
 function ClearText(Badtext : WideString) : WideString ;
 var
 Tm , EnPos , cuPos , TmPos : Integer;
 link1 : WideString;
 begin
		  Badtext := StringReplace(Badtext,#13#10,'',True,False,False);  // удаляет множественные пробелы
		  Badtext := StringReplace(Badtext,'	','',True,False,False);  // удаляет табуляцию из текста
		  Badtext := StringReplace(Badtext,'&nbsp;',' ',True,True,True);  // удаляет заменитель пробела
		  Badtext := StringReplace(Badtext,'  ','',True,False,False);  // удаляет множественные пробелы
		  Badtext := StringReplace(Badtext,'&#151;','-',True,True,True);  // удаляет заменитель прочерка
		  Badtext := StringReplace(Badtext,'&#133;','...',True,True,True);  // удаляет заменитель триточие
		  Badtext := StringReplace(Badtext,'&laquo;','«',True,True,True);  // удаляет заменитель кавычки слева
		  Badtext := StringReplace(Badtext,'&raquo;','»',True,True,True);  // удаляет заменитель кавычки справа
		  Badtext := StringReplace(Badtext,'&lt;','<',True,True,True);  // удаляет заменитель угловая кавычка
		  Badtext := StringReplace(Badtext,'&gt;','>',True,True,True);  // удаляет заменитель угловая кавычка
		  if mDebug then ShowMessage(Badtext,'Текст после очистки');
		  cuPos := Pos('<A href',Badtext); // удаляем ссылки из исходного текста , выдергивая из них текст
		  while cuPos > 0 do
		  begin
		  TmPos := PosFrom('>',Badtext,cuPos);
		  Delete(Badtext,cuPos,TmPos-cuPos+1);
		  EnPos := PosFrom('</A>',Badtext,cuPos);
		  Delete(Badtext,EnPos,4);
		  cuPos := PosFrom('<A href',Badtext,EnPos+4);
		  end;
		  if mDebug then ShowMessage(Badtext,'Текст после удаления ссылок');
		  Badtext := StringReplace(Badtext,'<P>','    ',True,True,False); // вставляется табуляция в начало абзацев
		  Badtext := StringReplace(Badtext,'</P>',#13#10#13#10,True,True,False); // в конце абзацев вставляется разделитель
		  Badtext := StringReplace(Badtext,'<P align=justify>','    ',True,True,False);
		  Badtext := StringReplace(BadText,'<BR><BR>',#13#10#13#10+'    ',True,True,False);
		  Badtext := StringReplace(Badtext,'<BR>-',#13#10#13#10+'    -',True,True,False);
		  Badtext := StringReplace(Badtext,'<BR>',#13#10,True,True,False);
		  Badtext := StringReplace(Badtext,'<DIV align=justify>','    ',True,True,False);
		  Badtext := StringReplace(Badtext,'</DIV>',#13#10+'    ',True,False,False);
		  Badtext := StringReplace(Badtext,#13#10#13#10#13#10,' ',True,False,False);
		  if mDebug then ShowMessage(Badtext,'Текст после разметки');
		  Tm := Pos('<EM>',Badtext);
		  while Tm > 0 do
		  begin
		  cuPos := PosFrom('</EM>',Badtext,Tm);
		  link1 := Copy(Badtext,Tm+4,cuPos-(Tm+4));
		  link1 := UpperCase(link1);
		  Delete(Badtext,Tm,(cuPos+5)-Tm);
		  Insert(link1,Badtext,Tm);
		  Tm := PosFrom('<EM>',Badtext,cuPos+5);
		  end ;
		  if mDebug then ShowMessage(Badtext,'Текст после возведения ВВЕРХНИЙ РЕГИСТР');
		  cuPos := Pos('<',Badtext);  // Цикл для вырезания тегов выделенных <...>
		  while cuPos > 0 do
		  begin
		  EnPos := PosFrom('>',Badtext,cuPos);
		  Delete(Badtext,cuPos,EnPos-cuPos+1);
		  cuPos := Pos('<',Badtext);
		  end ;
		  if mDebug then ShowMessage(Badtext,'Текст после очистки от тегов в кавычках');
		  if Pos('    ',Badtext)<>1 then Insert('    ',Badtext,1); 
		  if Pos('-',Badtext)=1 then Insert('    ',Badtext,1);
		  Badtext := StringReplace(Badtext,'    '+#13#10,'',True,False,False);
		  Badtext := StringReplace(Badtext,'        ','    ',True,False,False);
		  if Pos(#13#10,Badtext) = (Length(Badtext)-1) then Delete(Badtext,(Length(Badtext)-1),2);
		  if mDebug then ShowMessage(Badtext,'Текст результат');
		  Result := Badtext;
 end;
 
 // ФУНКЦИЯ для сброса данных в файл
 procedure SaveStatistic(Info:WideString);
 var
 Date , Time , WordS , Nation : WideString;
 Ext_date : Extended;
 ProvS , Jk : Integer;
 Fact : Boolean ;
 begin
 if Schet = 1 then
   begin
   Ext_date := CurrentDateTime;
   Date := DateToStr(Ext_date);
   Time := TimeToStr(Ext_date);
   case FilmCountry of
	'EN': Nation := 'англоязычный';
	'RU': Nation := 'русскоязычный';
	end;
   if FileExists('Statistic.txt') then Fact := True else Fact := False;
   WordS := 'Начало Записи -'+Date+'-*-'+Time+' '+Nation+' '+#13#10#13#10;
   StringToFile('Statistic.txt',WordS,Fact,False);
   Inc(Schet);
   end;
   ProvS := 0;
   for Jk := 1 to Length(Info) do
	begin
	ProvS := ProvS + Ord(Info[Jk]);
	end;
 StringToFile('Statistic.txt',IntToStr(Schet)+'--'+Info+'-Summa-'+IntToStr(ProvS)+#13#10#13#10,True,False);
 Inc(Schet);
 end;
 
 // парсим основную информацию по фильму
 procedure ParseMovie(MovieURL:WideString;HTML:WideString);
 var
 curPos , TmpPos , EndPos , Tmp : Integer ;
 Title , Title1 , Strana , Name , Name1, URL , Year : WideString ;
 Budjet , Dlina , Data , Data1 : WideString ; 
 link , Text1 , Text2 , Text3 : WideString ;
 DD , MM , YYYY , Stroka : WideString ;
 Shet : Boolean ;
 
 begin
	if mDebug then ShowMessage('Собираем информацию по фильму','Информация');
  if Pos('<!-- ABOUT FILM -->',HTML) = 0 then Exit ;
          if mDebug then 
		  begin
          ShowMessage('Адрес страницы с фильмом :'+MovieURL,'Информация');
          Wait(1000);
          end ;
          AddFieldValue(mfURL,MovieURL);
		// Собираем ссылки для загрузки других страниц
		curPos := Pos('<!-- ABOUT FILM -->',HTML);
		TmpPos := PosFrom('</td>',HTML,curPos);
		EndPos := PosFrom('</table>',HTML,TmpPos);
		Tmp := PosFrom('</td>',HTML,TmpPos);
		if (PosFrom('width="12%"',HTML,TmpPos) <> 0) and (PrevPos('class="desable"',HTML,Tmp) = 0) then
		begin
		curPos := PosFrom('href="',HTML,TmpPos)+6; 
		TmpPos := PosFrom('">Мнения</a>',HTML,curPos);
		Tmp := Pos('index.shtml',MovieURL);
		Delete(MovieURL,Tmp,11);
		URLMnenia := MovieURL+Copy(HTML,curPos,TmpPos-curPos);
		  if mDebug then 
		    begin
            ShowMessage('Адрес страницы с мнениями :'+URLMnenia,'Информация');
            Wait(1000);
            end ;
		end ;
		curPos := PosFrom('<td width="11%"',HTML,TmpPos);
		TmpPos := PosFrom('</td>',HTML,curPos);
		Stroka := Copy(HTML,curPos,(TmpPos+5)-curPos);
		if (Pos('width="11%"',Stroka) <> 0) and (Pos('class="desable"',Stroka) = 0) then
		begin
		curPos := PosFrom('href="',HTML,curPos)+6; 
		TmpPos := PosFrom('">Кадры</a>',HTML,curPos);
		URLScreen := Copy(HTML,curPos,TmpPos-curPos);
		Delete(URLScreen,1,1);
		URLScreen := BASE_URL+URLScreen;
		  if mDebug then 
		    begin
            ShowMessage('Адрес страницы с кадрами :'+URLScreen,'Информация');
            Wait(1000);
            end ;
		if beta5 = True then tagScreen := True else tagScreen := False;
		end 
		else tagScreen := False;
		curPos := PosFrom('<td width="13%"',HTML,TmpPos);
		TmpPos := PosFrom('</td>',HTML,curPos);
		Stroka := Copy(HTML,curPos,(TmpPos+5)-curPos);
		if (Pos('width="13%"',Stroka) <> 0) and (Pos('class="desable"',Stroka) = 0) then
		begin
		curPos := PosFrom('href="',HTML,curPos)+6;
		TmpPos := PosFrom('">Постеры</a>',HTML,curPos);
		URLPoster := Copy(HTML,curPos,TmpPos-curPos);
		Delete(URLPoster,1,1);
		URLPoster := BASE_URL+URLPoster;
		  if mDebug then 
		    begin
            ShowMessage('Адрес страницы с постерами :'+URLPoster,'Информация');
            Wait(1000);
            end ;
		if beta5 = True then tagPoster := True else tagPoster := False;
		end 
		else tagPoster := False ;
 curPos := Pos('<div class="object-info">',HTML);
 if curPos <> 0 then
   begin
   // Сбор информации по русскому названию
   TmpPos := PosFrom('<h2>',HTML,curPos)+4;
   EndPos := PosFrom('</h2>',HTML,TmpPos);
   Title := Copy(HTML,TmpPos,EndPos-TmpPos); // определяем русское название фильма
     if mDebug then 
		  begin
          ShowMessage('Русское название :'+Title,'Информация');
          Wait(1000);
          end ;
   AddFieldValue(mfTitle,Title);
   // Сбор информации по английскому названию
   TmpPos := PosFrom('class="details">/',HTML,EndPos)+17;
   EndPos := PosFrom('/</p>',HTML,TmpPos);
   Title1 := Copy(HTML,TmpPos,EndPos-TmpPos); // определяется английское название фильма
   if Title1 = '-' then Title1 := '';
      if mDebug then 
		  begin
          ShowMessage('Английское название :'+Title1,'Информация');
          Wait(1000);
          end ;
   AddFieldValue(mfOrigTitle,Title1);
		// если нет страницы с постерами загрузить текуший со страницы с фильмом
		if tagPoster <> True then
		begin
		curPos := PosFrom('<div class="poster">',HTML,EndPos);
		curPos := PosFrom('<img src="',HTML,curPos)+10;
		EndPos := PosFrom('" alt="',HTML,curPos);
		URL := Copy(HTML,curPos,EndPos-curPos);
		Delete(URL,1,1);
		URL := BASE_URL+URL;
		if mDebug then 
		  begin
          ShowMessage('Адрес картинки постера :'+URL,'Информация');
          Wait(1000);
          end ;
		if (URL <> '') and (Pos('nopost.jpg',URL) = 0 ) and (EnablePoster) then AddImageURL(0,URL);
		end ;
        // Сбор информации по странам производителям
        TmpPos := PosFrom('<li class="first">',HTML,EndPos);
        if Pos('<strong>Страна:</strong>',HTML) <> 0 then
		  begin
		  Tmp := PosFrom('Страна:</strong> ',HTML,TmpPos)+17;
		  EndPos := PosFrom(#13#10,HTML,Tmp);
		  Strana := Copy(HTML,Tmp,EndPos-Tmp); // Определяется страна производитель
		  if mDebug then 
		    begin
            ShowMessage('Страна производитель :'+Strana,'Информация');
            Wait(1000);
            end ;
          AddFieldValue(mfCountry,Strana);
		  end ;
		if Pos('<strong>Год</strong>',HTML) <> 0 then
		  begin
		  Tmp := PosFrom('Год</strong> ',HTML,EndPos)+13;
		  EndPos := PosFrom(#13#10,HTML,Tmp);
		  Year := Copy(HTML,Tmp,EndPos-Tmp); // Определяется год производства
		  Year := CheckNum(Year);
		  if mDebug then 
		    begin
            ShowMessage('Год производства :'+Year,'Информация');
            Wait(1000);
            end ;
          AddFieldValue(mfYear,Year);
		  end ;
		  FilmCountry := CheckRus(Strana);
		  if FilmCountry = '' then
		  begin
		  FilmCountry := 'EN' ;
		  if Length (Title1) = 0 then FilmCountry := 'RU' else FilmCountry := 'EN' ;
		  end;
	// Начинается сбор информации по персонам	  
	    // Сбор информации по режжисерам
		if Pos('<strong>Режиссер:</strong>',HTML) <> 0 then
		  begin
		  Shet := False;
		  Tmp := PosFrom('Режиссер:</strong> ',HTML,EndPos)+19;
		  EndPos := PosFrom(#13#10,HTML,Tmp);
		  while Tmp < EndPos do
		   begin
		    curPos :=PosFrom('href=''',HTML,Tmp);
			TmpPos :=PosFrom(',',HTML,Tmp);
			if (curPos < TmpPos) and (TmpPos < EndPos) then Shet := True else
			begin
			if (curPos < EndPos) and (curPos < TmpPos) then Shet := True else
			Shet := False;
			end;
		    if (PosFrom('href=''',HTML,Tmp) <> 0) and (Shet = True) then
		      begin
			  curPos := PosFrom('''>',HTML,Tmp);
			  TmpPos := PrevPos('href=''',HTML,curPos)+6;
		      URL := Copy(HTML,TmpPos,curPos-TmpPos);
			  Delete(URL,1,1);
			  URL := BASE_URL+URL;
			  TmpPos := PosFrom('</a>',HTML,curPos);
			  Name := Copy(HTML,curPos+2,TmpPos-(curPos+2));
			  Name1 := ParseURLtoName(URL);
			  if mDebug then 
				begin
				ShowMessage('Режиссер :'+Name+' Адрес :'+URL,'Информация');
				Wait(1000);
				end ;
			  if FilmCountry = 'RU' then AddMoviePerson(Name,Name1,'',URL,ctDirectors)
			  else AddMoviePerson(Name1,Name,'',URL,ctDirectors);
			  if Experiment then
			  begin
			  SaveStatistic(Name);
			  SaveStatistic(Name1);
			  end;
			  Tmp := TmpPos+6;
			  end
			else begin
			  if (PosFrom(', ',HTML,Tmp) <> 0) and (PosFrom(', ',HTML,Tmp) < EndPos) then
			    begin
			      curPos := PosFrom(', ',HTML,Tmp);
				  Name := Copy(HTML,Tmp,curPos-Tmp);
				  if mDebug then 
					begin
					ShowMessage('Режиссер :'+Name,'Информация');
					Wait(1000);
					end ;
				  if FilmCountry = 'RU' then AddMoviePerson(Name,'','','',ctDirectors)
			      else AddMoviePerson('',Name,'','',ctDirectors);
				  if Experiment then SaveStatistic(Name);
				  Tmp := curPos+2;
                end
			  else begin
			       curPos := PosFrom(#13#10,HTML,Tmp);
				   Name := Copy(HTML,Tmp,curPos-Tmp);
				   if Pos('  и др.',Name) <> 0 then
					begin
					Delete(Name,Pos('  и др.',Name),7);
					end;
				   if mDebug then 
					begin
					ShowMessage('Режиссер :'+Name,'Информация');
					Wait(1000);
					end ;
				   if FilmCountry = 'RU' then AddMoviePerson(Name,'','','',ctDirectors)
			       else AddMoviePerson('',Name,'','',ctDirectors);
				   Tmp := curPos+2;
				   if Experiment then SaveStatistic(Name);
			       end ;
			end ;
		   end ;
		  end ;
		  EndPos := Tmp ;
		  // Собирается информация по актерам
		  if Pos('<strong>В ролях:</strong>',HTML) <> 0 then
		  begin
		  Shet := False;
		  Tmp := PosFrom('В ролях:</strong> ',HTML,EndPos)+18;
		  EndPos := PosFrom(#13#10,HTML,Tmp);
		  while Tmp < EndPos do
		   begin
		    curPos :=PosFrom('href=''',HTML,Tmp);
			TmpPos :=PosFrom(',',HTML,Tmp);
			if (curPos < TmpPos) and (TmpPos < EndPos) then Shet := True else
			begin
			if (curPos < EndPos) and (curPos < TmpPos) then Shet := True else
			Shet := False;
			end;
		    if (PosFrom('href=''',HTML,Tmp) <> 0) and (Shet = True) then
		      begin
			  curPos := PosFrom('''>',HTML,Tmp);
			  TmpPos := PrevPos('href=''',HTML,curPos)+6;
		      URL := Copy(HTML,TmpPos,curPos-TmpPos);
			  Delete(URL,1,1);
			  URL := BASE_URL+URL;
			  TmpPos := PosFrom('</a>',HTML,curPos);
			  Name := Copy(HTML,curPos+2,TmpPos-(curPos+2));
			  Name1 := ParseURLtoName(URL);
			  if mDebug then 
				begin
				ShowMessage('Актер :'+Name+' Адрес :'+URL,'Информация');
				Wait(1000);
				end ;
			  if FilmCountry = 'RU' then AddMoviePerson(Name,Name1,'',URL,ctActors)
			  else AddMoviePerson(Name1,Name,'',URL,ctActors);
			  if Experiment then
			  begin
			  SaveStatistic(Name);
			  SaveStatistic(Name1);
			  end;
			  Tmp := TmpPos+6;
			  end
			else begin
			  if (PosFrom(', ',HTML,Tmp) <> 0) and (PosFrom(', ',HTML,Tmp) < EndPos) then
			    begin
			      curPos := PosFrom(', ',HTML,Tmp);
				  Name := Copy(HTML,Tmp,curPos-Tmp);
				  if mDebug then 
					begin
					ShowMessage('Актер :'+Name,'Информация');
					Wait(1000);
					end ;
				  if FilmCountry = 'RU' then AddMoviePerson(Name,'','','',ctActors)
			      else AddMoviePerson('',Name,'','',ctActors);
				  if Experiment then SaveStatistic(Name);
				  Tmp := curPos+2;
                end
			  else begin
						curPos := PosFrom(#13#10,HTML,Tmp);
						Name := Copy(HTML,Tmp,curPos-Tmp);
						if Pos('и др.',Name) <> 0 then
							begin
							Delete(Name,Pos('и др.',Name),7);
							end;
						if mDebug then 
							begin
							ShowMessage('Актер :'+Name,'Информация');
							Wait(1000);
							end ;
						if Length(Name) >= 6 then
						begin
						if FilmCountry = 'RU' then AddMoviePerson(Name,'','','',ctActors)
						else AddMoviePerson('',Name,'','',ctActors);
						if Experiment then SaveStatistic(Name);
						end;
						Tmp := curPos+2;
				   end;
			end ;
		   end ;
		  end ;
		  EndPos := Tmp;
		  //  Собирается информация по сценаристам
		  if Pos('<strong>Сценарий:</strong>',HTML) <> 0 then
		  begin
		  Shet := False;
		  Tmp := PosFrom('Сценарий:</strong> ',HTML,EndPos)+19;
		  EndPos := PosFrom(#13#10,HTML,Tmp);
		  while Tmp < EndPos do
		   begin
		    curPos :=PosFrom('href=''',HTML,Tmp);
			TmpPos :=PosFrom(',',HTML,Tmp);
			if (curPos < TmpPos) and (TmpPos < EndPos) then Shet := True else
			begin
			if (curPos < EndPos) and (curPos < TmpPos) then Shet := True else
			Shet := False;
			end;
		    if (PosFrom('href=''',HTML,Tmp) <> 0) and (Shet = True) then
		      begin
			  curPos := PosFrom('''>',HTML,Tmp);
			  TmpPos := PrevPos('href=''',HTML,curPos)+6;
		      URL := Copy(HTML,TmpPos,curPos-TmpPos);
			  Delete(URL,1,1);
			  URL := BASE_URL+URL;
			  TmpPos := PosFrom('</a>',HTML,curPos);
			  Name := Copy(HTML,curPos+2,TmpPos-(curPos+2));
			  Name1 := ParseURLtoName(URL);
			  if mDebug then 
				begin
				ShowMessage('Сценарист :'+Name+' Адрес :'+URL,'Информация');
				Wait(1000);
				end ;
			  if FilmCountry = 'RU' then AddMoviePerson(Name,Name1,'',URL,ctWriters)
			  else AddMoviePerson(Name1,Name,'',URL,ctWriters);
			  if Experiment then
			  begin
			  SaveStatistic(Name);
			  SaveStatistic(Name1);
			  end;
			  Tmp := TmpPos+6;
			  end
			else begin
			  if (PosFrom(', ',HTML,Tmp) <> 0) and (PosFrom(', ',HTML,Tmp) < EndPos) then
			    begin
			      curPos := PosFrom(', ',HTML,Tmp);
				  Name := Copy(HTML,Tmp,curPos-Tmp);
				  if mDebug then 
					begin
					ShowMessage('Сценарист :'+Name,'Информация');
					Wait(1000);
					end ;
				  if FilmCountry = 'RU' then AddMoviePerson(Name,'','','',ctWriters)
			      else AddMoviePerson('',Name,'','',ctWriters);
				  if Experiment then SaveStatistic(Name);
				  Tmp := curPos+2;
                end
			  else begin
			       curPos := PosFrom(#13#10,HTML,Tmp);
				   Name := Copy(HTML,Tmp,curPos-Tmp);
				   if Pos('  и др.',Name) <> 0 then
					begin
					Delete(Name,Pos('  и др.',Name),7);
					end;
				   if mDebug then 
					begin
					ShowMessage('Сценарист :'+Name,'Информация');
					Wait(1000);
					end ;
				   if FilmCountry = 'RU' then AddMoviePerson(Name,'','','',ctWriters)
			       else AddMoviePerson('',Name,'','',ctWriters);
				   if Experiment then SaveStatistic(Name);
				   Tmp := curPos+2;
			       end ;
			end ;
		   end ;
		  end ;
		  // Собирается информация по бюджету
		  if Pos('<strong>Бюджет:</strong> ',HTML) <> 0 then
		  begin
		  TmpPos := Pos('Бюджет:</strong> ',HTML)+17;
		  EndPos := PosFrom(#13#10,HTML,TmpPos);
		  Budjet := Copy(HTML,TmpPos,EndPos-TmpPos);
		  if Budjet <> '' then
		  begin
		  Budjet := CheckBudjet(Budjet);
		  if mDebug then 
			begin
			ShowMessage('Бюджет :'+Budjet,'Информация');
			Wait(1000);
			end ;
		  AddCustomFieldValueByName(ufBudget,Budjet);
		  Delete(Budjet,1,1);
		  AddFieldValueXML('budget',Budjet);
		  end ;
		  end ;
		  // Собирается информация по длительности
		  if Pos('<strong>Продолжительность:</strong> ',HTML) <> 0 then
		  begin
		  TmpPos := Pos('Продолжительность:</strong> ',HTML)+28;
		  EndPos := PosFrom(#13#10,HTML,TmpPos);
		  if PosFrom('мин.',HTML,EndPos) > 0 then EndPos := PosFrom(#13#10,HTML,EndPos+2);
		  Dlina := Copy(HTML,TmpPos,EndPos-TmpPos);
		  if Pos(#13#10,Dlina) > 0 then Delete(Dlina,Pos(#13#10,Dlina),2);
		  if (Dlina <> '') and (Length(Dlina) > 5) then
		  begin
		  Dlina := CorrectTime(Dlina);
		  if mDebug then 
			begin
			ShowMessage('Продолжительность :'+Dlina,'Информация');
			Wait(1000);
			end ;
		  AddCustomFieldValueByName(ufTime,Dlina);
		  end ;
		  end ;
		  //  Собирается информация по дате выхода в США
		  if Pos('<strong>Премьера в США:</strong> ',HTML) <> 0 then
		  begin
		  TmpPos := Pos('Премьера в США:</strong> ',HTML)+25;
		  EndPos := PosFrom(#13#10,HTML,TmpPos);
		  Data := Copy(HTML,TmpPos,EndPos-TmpPos);
		  if Data <> '' then
		  begin
		  Data := CheckDate(Data);
		  if mDebug then 
			begin
			ShowMessage('Дата выхода в США :'+Data,'Информация');
			Wait(1000);
			end ;
		  YYYY := Copy(Data,1,4); // выбираем значение года
		  MM := Copy(Data,6,2); // выбираем значение месяца
		  DD := Copy(Data,9,2); // выбираем значение дня
		  AddCustomFieldValueByName(ufFirstUSA,DD+'.'+MM+'.'+YYYY);
		  end ;
		  end ;
		  // Собирается информация по дате выхода в России
		  if Pos('<strong>Премьера в России:</strong> ',HTML) <> 0 then
		  begin
		  TmpPos := Pos('Премьера в России:</strong> ',HTML)+28;
		  EndPos := PosFrom(#13#10,HTML,TmpPos);
		  Data1 := Copy(HTML,TmpPos,EndPos-TmpPos);
		  if Data1 <> '' then
		  begin
		  Data1 := CheckDate(Data1);
		  if mDebug then 
			begin
			ShowMessage('Дата выхода в России :'+Data1,'Информация');
			Wait(1000);
			end ;
		  YYYY := Copy(Data1,1,4); // выбираем значение года
		  MM := Copy(Data1,6,2); // выбираем значение месяца
		  DD := Copy(Data1,9,2); // выбираем значение дня
		  AddCustomFieldValueByName(ufFirstRUS,DD+'.'+MM+'.'+YYYY);
		  end ;
		  end ;
		 // Заносится информация в базу в зависимости от поля с датой
		   //Дата должна быть в формате YYYY-MM-DD или как в настройках windows по умолчанию (короткий вариант)
		   if (Length(Data) = 0) and (Length(Data1) <> 0) then AddFieldValueXML('rdate',Data1);
		   if (Length(Data1) = 0) and (Length(Data) <> 0) then AddFieldValueXML('rdate',Data);
		   if (Data <> '') and (Data1 <> '') then 
		   begin
		   if FilmCountry = 'EN' then AddFieldValueXML('rdate',Data) else AddFieldValueXML('rdate',Data1);
		   end;
		  //  Собирается информация с ссылками на другие сайты
		  link := '';
		  if Pos('<strong>Ссылки на фильм:</strong>',HTML) <> 0 then
		  begin
		   Tmp := PosFrom('Ссылки на фильм:</strong>',HTML,EndPos);
		   Tmp := PosFrom('<ul>',HTML,Tmp);
		   EndPos := PosFrom('</ul>',HTML,Tmp);
		   while (Tmp < EndPos) do begin
		    if PosFrom('<li><a',HTML,Tmp) <> 0 then begin
			 curPos := PosFrom('</a></li>',HTML,Tmp);
			 TmpPos := PrevPos('"> ',HTML,curPos);
			 curPos := PrevPos('href="',HTML,curPos)+6;
		     URL := Copy(HTML,curPos,TmpPos-curPos);
			 curPos := PosFrom('</a></li>',HTML,curPos);
			 Name := Copy(HTML,TmpPos+3,curPos-(TmpPos+3));
			 if curPos > 0 then
			  Tmp := curPos+9
			 else
              Tmp := EndPos; 			 
			 if mDebug then 
			  ShowMessage('Адрес сайта : '+URL+' Имя сайта : '+Name, 'Информация');
			 if (Length(URL) <> 0) and (Length(Name) <> 0) then begin
			  if Length(link) <> 0 then 
			   link := link+'<link url="'+URL+'">'+Name+'</link>'+#13#10 
			  else
			   link := '<link url="'+URL+'">'+Name+'</link>'+#13#10;
				if Pos('imdb.com',Name)<>0 then AddFieldValue(mfURL,URL);  // Заполняется программное поле URL
			 end ;
			end else
			 Tmp := EndPos;
		   end ;
		   AddCustomFieldValueByName(ufSites,link);
		  end ;
		  //  Собирается информация по рецензии
		  if Pos('<b>Рецензия:',HTML) <> 0 then
		  begin
		  if mDebug then 
			   begin
			   ShowMessage('Собираются данные по рецензии ','Информация');
			   Wait(1000);
			   end ;
		  curPos := Pos('<b>Рецензия:',HTML);
		  TmpPos := PosFrom('<br>'+#10,HTML,curPos)+5;
		  EndPos := PosFrom('<br>'+#10,HTML,TmpPos);
		  Text1 := Copy(HTML,TmpPos,EndPos-TmpPos);
		  Text1 := ClearText(Text1);
		  if mDebug then 
		   begin
		   ShowMessage('Текст рецензии : '+Text1,'Информация');
		   Wait(1000);
		   end ;
		  AddCustomFieldValueByName(ufReview,Text1); 
		  end ;
		  // Собирается информация по Интересные факты о фильме или Знаете ли выЧто
		  if Pos('<b>Интересные',HTML) <> 0 then
		  begin
		  if mDebug then 
			   begin
			   ShowMessage('Собираются данные по интересным фактам ','Информация');
			   Wait(1000);
			   end ;
		  curPos :=Pos('<b>Интересные',HTML);
		  TmpPos := PosFrom('<br>'+#10,HTML,curPos)+5;
		  EndPos := PosFrom('<br>'+#10,HTML,TmpPos);
		  Text2 := Copy(HTML,TmpPos,EndPos-TmpPos);
		  Text2 := ClearText(Text2);
		  if mDebug then 
		   begin
		   ShowMessage('Текст интересных фактов : '+Text2,'Информация');
		   Wait(1000);
		   end ;
		  AddCustomFieldValueByName(ufDoYouKnow,Text2); 
		  end ;
		  // Собирается информация по превью или Описание
		  if Pos('<b>Превью:',HTML) <> 0 then
		  begin
		  if mDebug then 
			   begin
			   ShowMessage('Собираются данные по превью ','Информация');
			   Wait(1000);
			   end ;
		  curPos := Pos('<b>Превью:',HTML); 
		  TmpPos := PosFrom('<br>'+#10,HTML,curPos)+5;
		  EndPos := PosFrom('<br>'+#10,HTML,TmpPos);
		  Text3 := Copy(HTML,TmpPos,EndPos-TmpPos);
		  Text3 := ClearText(Text3);
		  if mDebug then 
		   begin
		   ShowMessage('Текст превью Описания : '+Text3,'Информация');
		   Wait(1000);
		   end ;
		  AddFieldValue(mfDescription,Text3); 
		  end ;
		  // определяется текуший режим работы скрипта Загрузка постеров или кадров
		  if EnablePoster = False then 
			begin
			tagPoster := False;
			URLPoster := '';
			end;
		  if EnableScreen = False then
			begin
			tagScreen := False;
			URLScreen := '';
			end;
		  if (tagPoster) and (Length(URLPoster) <> 0) then Mode := smPoster;
		  if (tagScreen) and (Length(URLScreen) <> 0) then
		  begin
		  if Mode <> smPoster then Mode := smScreen;
		  end ;
		  if (tagScreen = False) and (tagPoster = False) then Mode := smFinished; 
 end ;
 end ;
 

 
 // основная и главная функция в программе 
 function ParsePage ( HTML : WideString ; URL : String ) : Cardinal ;
 var
 Tmp, curPos, EndPos, TmpPos  : Integer;
 Nomer : WideString;
 begin
  Schet := Clik;
  if (MaxNumPoster <> 0) or (MaxNumScreen <> 0) then  // установка счетчиков загрузки постеров и кадров
	begin
		if (Mode <> smPoster) then NumPoster := 1;
		if (Mode <> smScreen) then NumScreen := 1;
	end;
  if Pos('http://www.kinomania.ru" alt="на главную"',HTML) = 0 then Result := prError ;
  if Pos('2000-2009 :: Kinomania.ru :: E-mail',HTML) = 0 then Result := prError ;
  if mDebug then 
    begin
    ShowMessage ( 'Страница загрузилась полностью' , 'Информация') ;
    Wait(1000);
    end ;
  if (Pos('<h2>Ничего не найдено</h2>',HTML) <> 0) then 
  begin
  Result := prList;
  Exit;
  end;
  if ((Pos('все о фильме</title>',HTML) <> 0) or (Pos('<!-- ABOUT FILM -->',HTML) <> 0)) and ((Mode = smSearch) or (Mode = smSearch2) ) then 
  begin
  Mode := smNormal ;
  ParseMovie(URL,HTML) ;
  end ;
  if Pos('<span>Результаты поиска:',HTML) <> 0 then // определяем страницу с результатами
  begin
    curPos := Pos('<h2>Фильмы (',HTML)+12;
	EndPos := PosFrom(')</h2>',HTML,curPos) ;
	//if (curPos = 0) and (EndPos = 0) then Exit else ShowMessage ( IntToStr(curPos) +' - '+ IntToStr(EndPos) , 'Информация' ) ;
	Tmp := EndPos-curPos;
	Nomer := Copy(HTML,curPos,Tmp);
	//ShowMessage('количество -'+Nomer,'Информация');
	Nomer := CheckNum(Nomer);
	Tmp := StrToInt(Nomer);
	if mDebug then 
		  begin
          ShowMessage('Количество результатов :'+IntToStr(Tmp),'Информация');
          Wait(1000);
          end ;
	  if Tmp <= 4 then begin 
	  if Tmp = 0 then begin
	  Result := prError ;
	  ShowMessage('Неизвестная ошибка','Информация');
	  Exit;
	  end;
	  ParseSearchResults (HTML) ;
	  Result := prList ;
	  Exit;
	  end else
	    begin
		if Mode = smSearch2 then
			begin
			ParseSearchResults (HTML) ;
			Result := prList ;
			Exit;
			end else
		begin
		Mode := smSearch2 ;
	    curPos := Pos('"><b>Посмотреть все (',HTML);
	    TmpPos := PrevPos('<br><a href="',HTML,curPos)+13;
		//if (curPos = 0) and (EndPos = 0) then Exit else ShowMessage ( IntToStr(curPos) +' - '+ IntToStr(TmpPos) , 'Информация' ) ;
	    URLFullMovies := Copy(HTML,TmpPos,curPos-TmpPos);
		//ShowMessage('строка поиска -'+URLFullMovies,'Информация');
		if Pos(' ',URLFullMovies) > 0 then URLFullMovies := StringReplace(URLFullMovies,' ','+',True,True,False);
		URLFullMovies := BASE_URL+URLFullMovies;
		URLFullMovies := DeleteArtic(URLFullMovies,'+');
	    if mDebug then 
		  begin
          ShowMessage('Адрес страницы с полным списком :'+URLFullMovies,'Информация');
          Wait(1000);
          end ;
		 end ;
		end ;
 end ;
  if (tagPoster) and (Pos('<em>постер',HTML) <> 0) then ParsePoster(HTML);
  if (tagScreen) and (Pos('<em> кадры</em>',HTML) <> 0) then ParseScreenshot(HTML) ;
  if Mode = smFinished then Result := prFinished else
  begin
  if (Mode = smSearch2) and (URLFullMovies <> '') then begin 
  if mDebug then ShowMessage('Адрес 2 страницы получен должна идти загрузка','Информация');
  Result := prDownload; 
  end else
  begin
	if (Mode = smScreen) and (URLScreen <> '') then Result := prDownload else 
		if (Mode = smPoster) and (URLPoster <> '') then
		begin
		if (OldProg=True) and (MaxPosit = AllPoster+1) then Result := prFinished else Result := prDownload;
		end;
	end ;
  end ;
end ;
begin
end.