<html>

<head>
<meta http-equiv="Content-Language" content="ru-ru">
<meta http-equiv="Content-Type" content="text/html; charset=unicode">
<title>Восстановление данных из резервной копии...</title>

<HTA:APPLICATION ID="oHTA"
     BORDER="none"
     CAPTION="no"
     CONTEXTMENU="no"
     Icon="splash.ico"
     INNERBORDER="no"
     NAVIGABLE="yes"
     SHOWINTASKBAR="yes"
     SCROLL="no"
     VERSION="1.0.0.0"/>

<script language="javascript" src="helpers.js"></script>
<script language="javascript" src="main.js"></script>
<script language="javascript">

	// Размер и положение окна по умолчанию.
	var splashWindowWidth  = 490;
	var splashWindowHeight = 350;
	var splashWindowLeft   = 200;
	var splashWindowTop    = 100;
	
	// Инициализация окна
	if (window.screen)
	{
		splashWindowLeft = (window.screen.availWidth - splashWindowWidth) / 2;
		splashWindowTop  = (window.screen.availHeight - splashWindowHeight) / 2;
	}
	window.moveTo(splashWindowLeft, splashWindowTop);
	window.resizeTo(splashWindowWidth, splashWindowHeight);

	// Переменные состояния
    var step = 0;   // Текущий шаг процедуры восстановления базы данных.
	var ret = 0;    // Код возврата предыдущего шага.
    var finish = false;
    var errStep = 0;
   
	// Вывести сообщение о ходе восстановления данных
	function setProgress(statusText)
	{
	    statusText += "...";
        progressText.innerHTML = statusText;
	    log(statusText);
	}

	// Конечный автомат для выполнения шагов процедуры восстановления данных.
	function doStep(step)
	{
	    switch(step)
	    {
	        case 0:
    	        setProgress("Инициализация");
	            break;
	        case 1:
                ret = initialize();
	            break;
	        case 2:
        	    setProgress("Завершение работы пользователей");
	            break;
	        case 3:
	            ret = disconnectAndBlockUsersHTA(); 
	            break;
	        case 4:
                setProgress("Восстановление данных");
	            break;
	        case 5:
	            setProgress("Cоздание резервной копии информационной базы");
	            ret = backupDB(); 
	            break;
	        case 6:
	            setProgress("Ожидание завершения восстановления данных");
	            break;
	        case 7:
	            ret = WaitUntilFinish();
	            break;
	        case 8:
	            setProgress("Разрешение подключений новых соединений");
	            break;
	        case 9:
	            ret = allowConnections(); 
	            break;
	        case 10:
        	    setProgress("Завершение");
	            break;
	        case 11: 

                // Все готово.
                finalize(true);
                runEnterprise();
                self.close();
                ClearTempFiles();
                finish = true;
	            break;
	        default: 
	      	    }
	    return ret;
	}
	
	// Выпонить процедуру восстановления данных
	function main()
	{
        if (finish) 
            return;

        if (ret > 0)   // Если предыдущий шаг завершился неудачно...
        { 
            if (errStep == 0)
            {   
            	
    	        log(format("Завершение с ошибкой. Код ошибки: {0}. Подробности см. в предыдущей записи.", ret), true);
    	        finalize();
    	        runEnterprise();
    	        self.close();
                return;
            }
            finalize(); 
            runEnterprise();
            self.close();
            ClearTempFiles();
            finish = true;
            return; 
        }
        
	    // Последовательное выполнение шагов процедуры восстановления данных
	    if (ret != -1)
            step++;
        doStep(step);
        if (!finish)
            setTimeout("main()", ret != -1 ? 1000 : 18*1000);   // Передача управления IE и повторный вызов main.
	}

function checkClose()
{
    if (!finish)
        event.returnValue = format('Внимание: процесс восстановления данных был прерван, и информационная база осталась заблокированной!\n'+
            'Для разблокирования информационной базы воспользуйтесь консолью кластера серверов или запустите "1С:Предприятие".');
}

function ClearTempFiles()
{
    // Удаляем временные файлы
	try
	{
		oFileSystemObject.DeleteFile(thisFileDir + '\\main.js');
		oFileSystemObject.DeleteFile(thisFileDir + '\\helpers.js');
		oFileSystemObject.DeleteFile(thisFileDir + '\\splash.bmp');
		oFileSystemObject.DeleteFile(thisFileDir + '\\splash.ico');
		oFileSystemObject.DeleteFile(thisFileDir + '\\progress.gif');
		
		if (createBackup) 
			oFileSystemObject.DeleteFile(TempCatalog + '\\1Cv8.1CD');	
	}
	catch(e) {}
}

</script>
</head>

<body  onLoad="window.setTimeout('main()',10);"  background="splash.bmp" style="border: 0px;">

<div id="progressIcon" style="position: absolute; left: 150px; top: 90px;">
  <img src="progress.gif" border=0/>
</div>

<div id="captionText" style="font-size: 10pt; font-family: verdana,arial; font-weight: bold; color: #606060; position: absolute; left: 220px; top: 90px;">
  Пожалуйста, подождите. Выполняется восстановление базы данных из резервной копии. Не рекомендуется останавливать процесс.
</div>

<div id="progressText" style="font-size: 8pt; font-family: verdana,arial; color: #000000; position: absolute; left: 180px; top: 270px;">
  &nbsp;
</div>

</body>

</html>