// индикатор , использовавшийся для операции отмены с помощью метода clearTimeout
var timeoutId = -1;
// запомнить ссылку на объект XMLHttpRequest
var xmlHttpGetObject=createXmlHttpRequestObject();
var formas =  new Object;

var nomtreck=1;
var flagtreck=0;
var buf=Object;
var obj=0;
var maxt=0;
// работа с плей листами
function plionow(n){if(document.getElementById('t'+n).className!='komp2')document.getElementById('t'+n).className='komp3';}
function plionou(n){if(document.getElementById('t'+n).className!='komp2')document.getElementById('t'+n).className='komp';}
function plioncl(n){flagtreck=1;buf.className='komp';document.getElementById('t'+n).className='komp2';buf=document.getElementById('t'+n);nomtreck=n;}
function plionnx(){if(flagtreck==0){nomtreck=nomtreck+1; if(nomtreck>maxt){nomtreck=1;} buf.className='komp';document.getElementById('t'+nomtreck).className='komp2';buf=document.getElementById('t'+nomtreck);}}
function pliclin(n){flagtreck=0;};
function plfs(max){maxt=max;plioncl(1);plionnx();pliclin();}
function rev(s){if(obj!=s){document.getElementById('tr'+s).className='active';if(obj>0){document.getElementById('tr'+obj).className='';}obj=s; }}
// создание объекта XMLHttpRequest
function createXmlHttpRequestObject()
{
    // переменная для хранения ссылки на объект XMLHttpRequest
    var xmlHttp;

    // эта часть кода должна работать во всех браузерах, за искючением
    // IE6 и более старых его версий
    try
    {
        // попытаться создать объект XMLHttpRequest
        xmlHttpGetObject = new XMLHttpRequest();
    }
    catch (e)
    {

        // предполагается, что в качестве браузера используется
        // IE6 или более старая его версия
        var XmlHttpVersions = new Array('MSXML2.XMLHTTP.6.0',
                                        'MSXML2.XMLHTTP.5.0',
                                        'MSXML2.XMLHTTP.4.0',
                                        'MSXML2.XMLHTTP.3.0',
                                        'MSXML2.XMLHTTP',
                                        'Microsoft.XMLHTTP');
        // пытается создать объект наиболее свежей версии
        // пока одна из попыток не увенчается успехом

        for (var i=0; i<XmlHttpVersions.length && !xmlHttpGetObject; i++)
        {
            try
            {
                // попытаться создать объект XMLHttpRequest
                xmlHttpGetObject = new ActiveXObject(XmlHttpVersions[i]);
            }
            catch(e) {} // игнорировать возможные ошибки
        }
    }
    // вернуть созданный объект или вывести сообщение об ошибке
    if(!xmlHttpGetObject)
       alert("Ошибка создания объекта XMLHttpRequest.");
    else
       return xmlHttpGetObject;
}

// выполнить асинхронный запрос HTTP с помощью объекта XMLHttpRequest
function process(key)
{
    // работа возможна если объект xmlHttp не занят
    if(xmlHttpGetObject)
    {
         // пытается установить соединение с сервером
         try
         {
             // если обьект XMLHttpRequest не занят обработкой предыдущего запроса...
              if (xmlHttpGetObject.readyState == 4 ||
                  xmlHttpGetObject.readyState == 0)
              {
                  xmlHttpGetObject.open("GET","/api?"+key,true);
                  xmlHttpGetObject.onreadystatechange = handleServerResponse;
                  xmlHttpGetObject.send(null);
              }
              // если обьект XMLHttpRequest занят...
               else
               {
                  // сбросить все ранее установленные таймауты
                  if(timeoutId != -1)
                     clearTimeout(timeoutId);
                    // повторить попытку через 0.5 секунды
                    timeoutId = setTimeout('process("'+key+'");',500);
                }
         }
         // вывести сообщение об ошибке в случае неудачи
         catch (e)
         {
             alert("Невозможно соединиться с сервером:\n"+e.toString());
         }

     }
 }
// задание цикла процесса
function upproces(key,times,val)
{
   // пытается установить соединение с сервером
   try
         {
            key2=key;
            if(val!=0)
            {
              key2=key+document.getElementById(val).value;
            }
            process(key2);
            setTimeout('upproces("'+key+'",'+times+',"'+val+'");',times);
         }
         catch (e)
         {
            alert("Временные трудности с интерактивной средой:\n"+e.toString());
         }
}

// Вызывается автоматически по прибытии сообщения от сервера
function handleServerResponse()
{
//var formas='';
 if(xmlHttpGetObject.readyState == 4)
    {
       // значение 200 говорит о том, что транзакция прошла спешно
       if(xmlHttpGetObject.status == 200)
       {
          try
          {
             // прочитать ответ сервера

             response = xmlHttpGetObject.responseText;
             var value = eval( "(" + response + ")" );
            // alert("форма"+value.length);
             for(i=0;i<=value.length;i=i+1)
             {
                if(value[i].m=='pu')
                {
                   if(value[i].t=='html')
                   {
                       if(value[i].id)
                       {
                           try
                           {
                              myID = document.getElementById(value[i].id);
                              myID.innerHTML=value[i].code;
                           }
                           catch(e)
                           {
                             //   alert("Системная ошибка объекта: \n"+value[i].id);
                           }

                       }
                   }
                }

                if(value[i].m=='m')
                {
                    try
                    {
                         showm(value[i].code,value[i].w,value[i].h);
                    }
                    catch(e)
                    {
                        //  alert("Возникли проблемы с окном сообщений: \n"+value[i].code+value[i].h+value[i].w);
                    }
                }
               //  alert("форма"+value[i].m);
                if(value[i].m=='f')
                {

                    try
                    {
                     //  alert("форма "+value[i].name);
                       formas[value[i].name] = eval( "(" + value[i].cont + ")" );
                      // t= eval( "(" + value[i].cont + ")" );
                      // formas[i]=t;
                      // alert(formas[value[i].name]);

                    }
                    catch(e)
                    {
                       // alert("возникла проблема с созданием формы");
                    }
                }
                if(value[i].m=='s')
                {
                	 try
                    {
                    	//formas[value[i].name] = eval(value[i].cont);
                    	eval(value[i].code);
                    }
                    catch(e)
                    {
                     //   alert("возникла проблема с инициализацией скрипта:"+"\n" +value[i].code);
                    }
                }

             }
          }
          catch(e)
          {
            //    alert("Возникли проблемы во время получания данных:\n"+xmlHttpGetObject.statusText);
          }
       }
    }
 }
 function showm(code,w,h)
{
  try
  {
  ms=document.getElementById('mess');
  winerm=document.getElementById('winer');
  win=document.getElementById('window');
  cms=document.getElementById('contwntw');
  cms.innerHTML=code;
  //cms.style.height=h-30;
  cms.style.overflow='auto';
  ms.style.visibility='';
  win.style.visibility='';
  winerm.style.width=w+'px';
   /* alert("Попытка задействовать окно сообщений \n");   */
  }
  catch(e)
  {
        alert("Возникли проблемы с окном сообщений: \n"+value[i].id);
  }

}
function closem()
{
try
  {

  //ms=document.getElementById('winer');
  win=document.getElementById('window');
  cms=document.getElementById('contwntw');

  win.style.visibility='hidden';
  cms.innerHTML='';



}
  catch(e)
  {
       alert("Ошибка!!!");
  }
}
function getform(name)
{
var str='';
  try
  {
    var value = formas[name];
    //alert(formas[name]);

   for(i=0;i<value.length;i=i+1)
    {
        if(value[i].type=='text')
        {
            str=str+value[i].id+'='+encodeURIComponent(document.getElementById(value[i].id).value)+'&';
        }
        if(value[i].type=='memo')
        {
            str=str+value[i].id+'='+encodeURIComponent(document.getElementById(value[i].id).value)+'&';
        }
    }
    return str;
    }
    catch(e)
    {
       alert("Ошибка!\n Проблема в получении данных с формы.");
    }
}
function getlod(n,id)
{
	try
	{
		str='<img border="0" src="http://api.farseer.info/image/'+n+'.gif">';
        document.getElementById(id).innerHTML=str;
     }
     catch(e)
     {
     	alert("Ошибка!\n Проблема в отображении загрузчика.");
      }
}
function getfilesize(str,inh)
{
	try
	{
		var fileObject = new ActiveXObject("Scripting.FileSystemObject");
		//var file = fileObject.GetFile(str);
		//document.getElementById(inh).value=file.Size;
		//document.getElementById(inh).value=str;
     }
     catch(e)
     {
     	alert("Не удалось определить размер файла.");
     }
}

