// Создаем новый XMLHttpRequest object
var xmlHttp = createXmlHttpRequestObject();
// Генерим XMLHttpRequest object в зависимости от браузера IE6+, Firefox 1.5+, Opera 7.5+

 function detectIE7()
 {
  var userAgent=navigator.userAgent;
  if (userAgent.indexOf('MSIE 7.0')!=-1)
   {
   return true;
   }
   else
   {
   return false;
   }
 }

 function copyValue(from,to)
 {
  if (document.getElementById(from).value!='0')
  {
  document.getElementById(to).value=document.getElementById(from).options[document.getElementById(from).selectedIndex].text;
  //getIndexFrom(document.getElementById(from).options[document.getElementById(from).selectedIndex].text,'selRoot')
  }
 }


function createXmlHttpRequestObject()
{
  var xmlHttp;
  try
  {
    // Если норм.браузер, не IE 6+
    xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    // Если IE6+, подбираем самую последнюю версию MSXML
    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 && !xmlHttp; i++)
    {
      try

      {
        // Пытаемся создать XMLHttpRequest object
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
        //alert(XmlHttpVersions[i]);
      }
      catch (e) {}
    }
  }
  if (detectIE7())
  {
  xmlHttp = new ActiveXObject("MSXML2.XMLHTTP.6.0");
  }
  // Возвращаем объект или выдаем сообщение об ошибке
  if (!xmlHttp)
  {
    alert("Ваш браузер не поддерживает технологию AJAX,\nРабота не возможна.");
  }
  else
  {
    return xmlHttp;
  }
}

function hideSuggest(s)
{
 document.getElementById(s).innerHTML="";
}

function handleKeyUp(e,type)
{
  // get the event
  e = (!e) ? window.event : e;
  // get the event's target
  target = (!e.target) ? e.srcElement : e.target;
  if (target.nodeType == 3)
    target = target.parentNode;
  // get the character code of the pressed button
  code = (e.charCode) ? e.charCode :
       ((e.keyCode) ? e.keyCode :
       ((e.which) ? e.which : 0));
  // check to see if the event was keyup

   if (type==1)
   {
    field='Region';
    field_n='City';
   }
   else if (type==2)
   {
    field='City';
    field_n='Street';
   }
   else if (type==3)
   {
    field='Street';
    field_n='selHome';
   }
   else if (type==4)
   {
    field='District';
    field_n='Street';
   }
  /*
  else if (manual==1)
  {
   if (type==1)
   {
    field='Region';
    field_n='District';
   }
   else if (type==2)
   {
    field='City';
    field_n='CityType';
   }
   else if (type==3)
   {
    field='Street';
    field_n='StreetType';
   }
   else if (type==4)
   {
    field='District';
    field_n='City';
   }
  }
  */
  if (type==10)
  {
   field='Namr';
   field_n='Otchr';
  }

  if (type==11)
  {
   field='Otchr';
   field_n='Gender';
  }

  if (type==14)
  {
   field='TelCode';
   field_n='Tel';
  }

  if (type==15)
  {
   field='MobTelCode';
   field_n='MobTel';
  }

  if (e.type == "keyup")
  {   // if the down arrow is pressed we go to the next suggestion
      if(code == 27)
      {
       //alert('down');
       document.getElementById(field+'s').innerHTML='';
       document.getElementById(field).focus();
      }
      if(code == 40)
      {
       //alert('down');
      }
      // if the up arrow is pressed we go to the previous suggestion
      else if(code == 38)
      {
       //alert('up');
      }
      else if(code == 13)
      {
       //alert('ent');

       if (document.getElementById(field+'List').value!='err')
       {
        if (type==2)
        {
         full_str=document.getElementById(field+'List').value;
         full_str_a=full_str.split("###");
         document.getElementById('sel'+field).value=full_str_a[0];
         if (full_str_a[1]!='000')
         {
         document.getElementById('TelCode').value=full_str_a[1];
         }

         if (full_str_a[2]==0)
         {
          document.getElementById('StreetFlag').click();
         }

         document.getElementById('City').value=document.getElementById('CityList').options[document.getElementById('CityList').selectedIndex].text;
         check_city(document.getElementById('City').value);
        }
        if (type!=2)
        {
        copyValue(field+'List',field);
        }
        if (type!=10 && type!=11 && type!=2 && document.getElementById('sel'+field)!=undefined)
        {
        document.getElementById('sel'+field).value=document.getElementById(field+'List').value;
        }
        if (type==10)
        {
        document.getElementById('Gender').value=document.getElementById(field+'List').value;
        }

        //setSession(document.getElementById(field+'List').value,document.getElementById(field).value,'sess_sel'+field,'sess_'+field);
        //document.getElementById(field+'List').focus();
        document.getElementById(field+'s').innerHTML='';
         if (document.getElementById(field_n)!=undefined)
         {
         	document.getElementById(field_n).focus();
         }
       }
       else
       {
       	document.getElementById('Manual').value=1;
       	document.getElementById('subm').value=2;
        document.getElementById('myForm').submit();
       }
      }
   }

}

function handleClick(type)
{
   if (type==1)
   {
    field='Region';
    field_n='City';
   }
   else if (type==2)
   {
    field='City';
    field_n='Street';
   }
   else if (type==3)
   {
    field='Street';
    field_n='selHome';
   }
   else if (type==4)
   {
    field='District';
    field_n='Street';
   }

  if (type==10)
  {
   field='Namr';
   field_n='Otchr';
  }

  if (type==11)
  {
   field='Otchr';
   field_n='Gender';
  }

  if (type==14)
  {
   field='TelCode';
   field_n='Tel';
  }

  if (type==15)
  {
   field='MobTelCode';
   field_n='MobTel';
  }

       if (document.getElementById(field+'List').value!='err')
       {
        if (type==2)
        {
         full_str=document.getElementById(field+'List').value;
         full_str_a=full_str.split("###");
         document.getElementById('sel'+field).value=full_str_a[0];
         if (full_str_a[1]!='000')
         {
         document.getElementById('TelCode').value=full_str_a[1];
         }

         if (full_str_a[2]==0)
         {
          document.getElementById('StreetFlag').click();
         }

         document.getElementById('City').value=document.getElementById('CityList').options[document.getElementById('CityList').selectedIndex].text;
         check_city(document.getElementById('City').value);
        }
        if (type!=2)
        {
        copyValue(field+'List',field);
        }
        if (type!=10 && type!=11 && type!=2 && document.getElementById('sel'+field)!=undefined)
        {
        document.getElementById('sel'+field).value=document.getElementById(field+'List').value;
        }
        if (type==10)
        {
        document.getElementById('Gender').value=document.getElementById(field+'List').value;
        }

        document.getElementById(field+'s').innerHTML='';
         if (document.getElementById(field_n)!=undefined)
         {
         	document.getElementById(field_n).focus();
         }
       }
       else
       {
       	document.getElementById('Manual').value=1;
       	document.getElementById('subm').value=2;
        document.getElementById('myForm').submit();
       }
      }


 function setSession(field1,field2,sess_name1,sess_name2)
 {
  var timeoutId;

  if (field1!='' && sess_name1!='' && field2!='' && sess_name2!='')
  {
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
  {
   clearTimeout(timeoutId);
   var url="../inc/sess.php";
   url=url+"?region_id="+encodeURIComponent(field1);
   url=url+"&session_rid="+encodeURIComponent(sess_name1);
   url=url+"&region_name="+encodeURIComponent(field2);
   url=url+"&session_rname="+encodeURIComponent(sess_name2);
   url=url+"&sid="+Math.random();
  //Вызываем функцию обратного вызова stateChanged
   xmlHttp.onreadystatechange=stateSessChanged;
   xmlHttp.open("GET",url,true);
   xmlHttp.send(null);
  }
  else
  {
   timeoutId = setTimeout("setSession('"+field1+"','"+field2+"','"+sess_name1+"','"+sess_name2+"');", 500);
  }
  }
 }

function stateSessChanged()
{

}

function ShowRegion(pat)
{
  //document.getElementById('Regions').innerHTML='';
  //document.getElementById('City').innerHTML='';
  //document.getElementById('Street').innerHTML='';
  //document.getElementById('addrReg').value='0';
  if (pat=='')
  {
  return;
  }
// Если запрос выполнен или не иницилизирован - выполниям асинхронный запрос к серверу
 if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
 {
 var url="../inc/region.php";
 url=url+"?pattern="+pat;
 url=url+"&sid="+Math.random();
//Вызываем функцию обратного вызова stateChanged
 xmlHttp.onreadystatechange=stateRegionChanged;
 xmlHttp.open("GET",url,true);
 xmlHttp.send(null);
 }
}
//Функция обратного вызова, которая обрабатывает полученные данные в формате XML и выводит в DIV
function stateRegionChanged()
{ //Чтобы IE+ не выдавал JS ошибку
  if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
  {    //test
    //alert(xmlHttp.responseText);
  // получаем данные
  var xmlResponse = xmlHttp.responseXML;
  // Отлавливаем ошибки в IE и Opera
  if (!xmlResponse || !xmlResponse.documentElement)
    throw("Invalid XML structure:\n" + xmlHttp.responseText);
  // Отлавливаем ошибки в Firefox
  var rootNodeName = xmlResponse.documentElement.nodeName;
  if (rootNodeName == "parsererror") throw("Invalid XML structure");

  xmlRoot = xmlResponse.documentElement;

  // Генерируем массивы данных
  //nameId = xmlRoot.getElementsByTagName("id");
  nameArray = xmlRoot.getElementsByTagName("name");
  codeArray = xmlRoot.getElementsByTagName("code");
  //indexArray = xmlRoot.getElementsByTagName("index");
  //answerVal = xmlRoot.getElementsByTagName("query");

  var html = "<select class='slt_2_jx' name='RegionList' size='15' id='RegionList' onkeyup='handleKeyUp(event,1)' onBlur=\"hideSuggest('Regions')\">";
  // Генерируем вывод HTML
  for (var i=0; i<nameArray.length; i++)
  {
    html +="<option value='"+codeArray.item(i).firstChild.data+"'>"+nameArray.item(i).firstChild.data+"</option>";
  }
  //html +="<option value='err'><не найдено></option></select>";
  // Выводим данные в DIV
  myDiv = document.getElementById("Regions");
  if (nameArray.length>0)
  {
  myDiv.innerHTML = html;
  }
  document.getElementById('City').readOnly=null;
 }
}

function ShowDistrict(reg,pat)
{
  //document.getElementById('Regions').innerHTML='';
  //document.getElementById('City').innerHTML='';
  //document.getElementById('Street').innerHTML='';
  //document.getElementById('addrReg').value='0';
  if (pat=='')
  {
  return;
  }
// Если запрос выполнен или не иницилизирован - выполниям асинхронный запрос к серверу
 if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
 {
 var url="../inc/district.php";
 url=url+"?pattern="+pat;
 url=url+"&region="+reg;
 url=url+"&sid="+Math.random();

//Вызываем функцию обратного вызова stateChanged
 xmlHttp.onreadystatechange=stateDistrictChanged;
 xmlHttp.open("GET",url,true);
 xmlHttp.send(null);
 }
}
//Функция обратного вызова, которая обрабатывает полученные данные в формате XML и выводит в DIV
function stateDistrictChanged()
{ //Чтобы IE+ не выдавал JS ошибку
  if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
  {    //test
    //alert(xmlHttp.responseText);
  // получаем данные
  var xmlResponse = xmlHttp.responseXML;
  // Отлавливаем ошибки в IE и Opera
  if (!xmlResponse || !xmlResponse.documentElement)
    throw("Invalid XML structure:\n" + xmlHttp.responseText);
  // Отлавливаем ошибки в Firefox
  var rootNodeName = xmlResponse.documentElement.nodeName;
  if (rootNodeName == "parsererror") throw("Invalid XML structure");

  xmlRoot = xmlResponse.documentElement;

  // Генерируем массивы данных
  //nameId = xmlRoot.getElementsByTagName("id");
  nameArray = xmlRoot.getElementsByTagName("name");
  codeArray = xmlRoot.getElementsByTagName("code");
  //indexArray = xmlRoot.getElementsByTagName("index");
  //answerVal = xmlRoot.getElementsByTagName("query");

  var html = "<select name='DistrictList' size='15' id='DistrictList' onclick='handleClick(4)' onkeyup='handleKeyUp(event,4)' onBlur=\"hideSuggest('Districts')\">";

  // Генерируем вывод HTML
  for (var i=0; i<nameArray.length; i++)
  {
    html +="<option value='"+codeArray.item(i).firstChild.data+"'>"+nameArray.item(i).firstChild.data+"</option>";
  }
  html +="</select>";
  // Выводим данные в DIV
  myDiv = document.getElementById("Districts");
  if (nameArray.length>0)
  {
      myDiv.innerHTML = html;
      //SetField(event,1);
      //document.getElementById("RegionList").focus();
  }
  else
  {
  //myDiv.innerHTML = "<br /><не найдено>";
  }
  //myAnswer = document.getElementById("Answer");
  //myAnswer.value = answerVal.item(0).firstChild.data;
  }
}


function ShowCity(region,pat)
{
  //document.getElementById('City').innerHTML='';
  //document.getElementById('Street').innerHTML='';
  //document.getElementById('addrReg').value='0';
  if (region=='0')
  {
  return;
  }
//document.getElementById('srch1').setAttribute('disabled','disabled');
//document.getElementById('City').innerHTML="Населенный пункт <select name='Cities' id='Cities' disabled='true'><option>Идет получение данных...</option></select>"
// Если запрос выполнен или не иницилизирован - выполниям асинхронный запрос к серверу
 if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
 {
 var url="../inc/city.php";
 url=url+"?region="+region+"&pattern="+pat;
 url=url+"&sid="+Math.random();

//Вызываем функцию обратного вызова stateChanged
 xmlHttp.onreadystatechange=stateChanged;
 xmlHttp.open("GET",url,true);
 xmlHttp.send(null);
 }
}
//Функция обратного вызова, которая обрабатывает полученные данные в формате XML и выводит в DIV
function stateChanged()
{ //Чтобы IE+ не выдавал JS ошибку
  if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
  {    //test
    //alert(xmlHttp.responseText);
  // получаем данные
  var xmlResponse = xmlHttp.responseXML;
  // Отлавливаем ошибки в IE и Opera
  if (!xmlResponse || !xmlResponse.documentElement)
    throw("Invalid XML structure:\n" + xmlHttp.responseText);
  // Отлавливаем ошибки в Firefox
  var rootNodeName = xmlResponse.documentElement.nodeName;
  if (rootNodeName == "parsererror") throw("Invalid XML structure");

  xmlRoot = xmlResponse.documentElement;

  nameArray = xmlRoot.getElementsByTagName("name");
  codeArray = xmlRoot.getElementsByTagName("code");
  telcodeArray = xmlRoot.getElementsByTagName("telcode");
  hasstreetArray = xmlRoot.getElementsByTagName("hasstreet");

  var html = "<select class='slt_2_jx' name='CityList' size='15' id='CityList' onclick='handleClick(2)' onkeyup='handleKeyUp(event,2)' onBlur=\"hideSuggest('Citys')\">";

  // Генерируем вывод HTML
  for (var i=0; i<nameArray.length; i++)
  {
    html +="<option value='"+codeArray.item(i).firstChild.data+"###"+telcodeArray.item(i).firstChild.data+"###"+hasstreetArray.item(i).firstChild.data+"'>"+nameArray.item(i).firstChild.data+"</option>";
  }
  //html +="<option value='err'><не найдено></option></select>";
  html +="</select>";

  // Выводим данные в DIV
  //document.getElementById('Region').disabled=false;
   myDiv = document.getElementById("Citys");
  if (nameArray.length>0)
  {
  myDiv.innerHTML = html;
  }
   document.getElementById('Street').readOnly=null;
  }
  //document.getElementById('srch1').removeAttribute('disabled');
}


function ShowStreet(city,pat)
{
  //document.getElementById('addrReg').value='0';
  if (city=='0')
  {
  return;
  }
//document.getElementById('srch2').setAttribute('disabled','disabled');
//document.getElementById('Street').innerHTML="Улица <select name='Streets' id='Streets' disabled='true'><option>Идет получение данных...</option></select>";
// Если запрос выполнен или не иницилизирован - выполниям асинхронный запрос к серверу
 if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
 {
 var url="../inc/street.php";
 url=url+"?region="+city+"&pattern="+pat;
 url=url+"&sid="+Math.random();
//Вызываем функцию обратного вызова stateChanged
 xmlHttp.onreadystatechange=stateChangedStr;
 xmlHttp.open("GET",url,true);
 xmlHttp.send(null);
 }
}
//Функция обратного вызова, которая обрабатывает полученные данные в формате XML и выводит в DIV
function stateChangedStr()
{
  //Чтобы IE+ не выдавал JS ошибку
  if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
  {    //test
   //alert(xmlHttp.responseText);
  // получаем данные
  var xmlResponse = xmlHttp.responseXML;
  // Отлавливаем ошибки в IE и Opera
  if (!xmlResponse || !xmlResponse.documentElement)
    throw("Invalid XML structure:\n" + xmlHttp.responseText);
  // Отлавливаем ошибки в Firefox
  var rootNodeName = xmlResponse.documentElement.nodeName;
  if (rootNodeName == "parsererror") throw("Invalid XML structure");

  xmlRoot = xmlResponse.documentElement;

  // Генерируем массивы данных
  nameArray = xmlRoot.getElementsByTagName("name");
  codeArray = xmlRoot.getElementsByTagName("code");
  var html = "<select class='slt_2_jx' name='StreetList' size='15' id='StreetList' onclick='handleClick(3)' onkeyup='handleKeyUp(event,3)' onBlur=\"hideSuggest('Streets')\">";
  // Генерируем вывод HTML
  for (var i=0; i<nameArray.length; i++)
  {
    //html += "<a href='index.php?selectStreet=" + codeArray.item(i).firstChild.data + "&treeId=" + nameId.item(i).firstChild.data + "'>" + nameArray.item(i).firstChild.data + (indexArray.item(i).firstChild.data!='000000' ? " [ " + indexArray.item(i).firstChild.data + " ]" : "") + "</a> <br/>";
    html +="<option value='"+codeArray.item(i).firstChild.data+"'>"+nameArray.item(i).firstChild.data+"</option>";
  }
  //html +="<option value='err'><не найдено></option></select>";
  // Выводим данные в DIV
  //document.getElementById('Cities').disabled=false;
  myDiv = document.getElementById("Streets");
  if (nameArray.length>0)
  {
  myDiv.innerHTML = html;
  }
  document.getElementById('StrType').readOnly=null;
  //document.getElementById("StreetList").focus();
 }
}


function CheckIndex(ind)
{
  //document.getElementById('addrReg').value='0';
  if (ind=='0')
  {
  return;
  }
//document.getElementById('indStat').innerHTML="Идет проверка индекса";
// Если запрос выполнен или не иницилизирован - выполниям асинхронный запрос к серверу
 if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
 {
 var url="../inc/checki.php";
 url=url+"?c_ind="+ind;
 url=url+"&sid="+Math.random();
//Вызываем функцию обратного вызова stateChanged
 xmlHttp.onreadystatechange=stateChangedInd;
 xmlHttp.open("GET",url,true);
 xmlHttp.send(null);
 }
}
//Функция обратного вызова, которая обрабатывает полученные данные в формате XML и выводит в DIV
function stateChangedInd()
{
  //Чтобы IE+ не выдавал JS ошибку
  if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
  {    //test
   //alert(xmlHttp.responseText);
  // получаем данные
  var xmlResponse = xmlHttp.responseXML;
  // Отлавливаем ошибки в IE и Opera
  if (!xmlResponse || !xmlResponse.documentElement)
    throw("Invalid XML structure:\n" + xmlHttp.responseText);
  // Отлавливаем ошибки в Firefox
  var rootNodeName = xmlResponse.documentElement.nodeName;
  if (rootNodeName == "parsererror") throw("Invalid XML structure");

  xmlRoot = xmlResponse.documentElement;

  // Генерируем массивы данных

  res1=xmlRoot.getElementsByTagName("res").item(0).firstChild.data;
  ind1=xmlRoot.getElementsByTagName("ind").item(0).firstChild.data;
  idreg1=xmlRoot.getElementsByTagName("idreg").item(0).firstChild.data;
  idcity1=xmlRoot.getElementsByTagName("idcity").item(0).firstChild.data;
  region1=xmlRoot.getElementsByTagName("region").item(0).firstChild.data;
  city1=xmlRoot.getElementsByTagName("city").item(0).firstChild.data;
  telcode1=xmlRoot.getElementsByTagName("telcode").item(0).firstChild.data;
  hasstreet1=xmlRoot.getElementsByTagName("hasstreet").item(0).firstChild.data;


  stat="";

  switch (res1)
  {
   case '1':
   stat="Индекс корректный";
   break;

   case '2':
   stat="Это старый индекс, новый индекс был подставлен в форму";
   document.getElementById('selIndex').value=ind1;
   break;

   case '-1':
   stat="Ошибка, нет такого МРП";
   break;

   case '-2':
   stat="Ошибка, есть уже другой индекс в этом городе с этим номером отд.связи";
   break;

   case '0':
   stat="Новый индекс, его нет в базе данных, но он корректный";
   break;
  }
  //alert(stat);
  document.getElementById("Index").value = ind1;
  //setSession(ind1,ind1,'sess_Index','sess_Index');
  document.getElementById("statIndex").innerHTML = stat+"<br>";
   if (res1>=0)
   {
     if (idreg1!=0 && idcity1!=0)
     {
      //setSession(idreg1,region1,'sess_Region','sess_Region');
      //setSession(idcity1,city1,'sess_selCity','sess_City');
      document.getElementById("Region").value=region1;
      document.getElementById("City").value=city1;
      document.getElementById("Region").value=idreg1;
      document.getElementById("selCity").value=idcity1;
      document.getElementById('Region').readOnly=null;
      document.getElementById('City').readOnly=null;
      document.getElementById('Street').readOnly=null;
      document.getElementById("Street").focus();
     }

     else if (idreg1!=0)
     {
      //setSession(idreg1,reg1,'sess_Region','sess_Region');
      //setSession(idreg1,region1,'sess_Region','sess_Region');
      document.getElementById('Region').readOnly=null;
      document.getElementById('City').readOnly=null;
      document.getElementById("Region").value=region1;
      document.getElementById("Region").value=idreg1;
      document.getElementById("City").focus();
     }

     if (hasstreet1==0)
     {
      document.getElementById("StreetFlag").click();
     }

     if (telcode1!=0)
     {
      document.getElementById("TelCode").value=telcode1;
     }

   }

  }
}

function ShowFamr(pat)
{
// Если запрос выполнен или не иницилизирован - выполниям асинхронный запрос к серверу
 if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
 {
 var url="../inc/famr.php";
 url=url+"?pattern="+pat;
 url=url+"&sid="+Math.random();
//Вызываем функцию обратного вызова stateChanged
 xmlHttp.onreadystatechange=famrChanged;
 xmlHttp.open("GET",url,true);
 xmlHttp.send(null);
 }
}
//Функция обратного вызова, которая обрабатывает полученные данные в формате XML и выводит в DIV
function famrChanged()
{
  //Чтобы IE+ не выдавал JS ошибку
  if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
  {    //test
   //alert(xmlHttp.responseText);
  // получаем данные
  var xmlResponse = xmlHttp.responseXML;
  // Отлавливаем ошибки в IE и Opera
  if (!xmlResponse || !xmlResponse.documentElement)
    throw("Invalid XML structure:\n" + xmlHttp.responseText);
  // Отлавливаем ошибки в Firefox
  var rootNodeName = xmlResponse.documentElement.nodeName;
  if (rootNodeName == "parsererror") throw("Invalid XML structure");

  xmlRoot = xmlResponse.documentElement;

  // Генерируем массивы данных
  stat = xmlRoot.getElementsByTagName("stat").item(0).firstChild.data;
  gender = xmlRoot.getElementsByTagName("gender").item(0).firstChild.data;
  famr = xmlRoot.getElementsByTagName("famr").item(0).firstChild.data;
  document.getElementById('Gender').value = gender;
  //setSession(famr,gender,'sess_Famr','sess_selGender');
 }
}

function ShowNamr(gender,pat)
{
//document.getElementById('srch2').setAttribute('disabled','disabled');
//document.getElementById('Street').innerHTML="Улица <select name='Streets' id='Streets' disabled='true'><option>Идет получение данных...</option></select>";
// Если запрос выполнен или не иницилизирован - выполниям асинхронный запрос к серверу
 if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
 {
 var url="../inc/namer.php";
 url=url+"?gender="+gender+"&pattern="+pat;
 url=url+"&sid="+Math.random();
//Вызываем функцию обратного вызова stateChanged
 xmlHttp.onreadystatechange=namerChanged;
 xmlHttp.open("GET",url,true);
 xmlHttp.send(null);
 }
}
//Функция обратного вызова, которая обрабатывает полученные данные в формате XML и выводит в DIV
function namerChanged()
{
  //Чтобы IE+ не выдавал JS ошибку
  if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
  {    //test
   //alert(xmlHttp.responseText);
  // получаем данные
  var xmlResponse = xmlHttp.responseXML;
  // Отлавливаем ошибки в IE и Opera
  if (!xmlResponse || !xmlResponse.documentElement)
    throw("Invalid XML structure:\n" + xmlHttp.responseText);
  // Отлавливаем ошибки в Firefox
  var rootNodeName = xmlResponse.documentElement.nodeName;
  if (rootNodeName == "parsererror") throw("Invalid XML structure");

  xmlRoot = xmlResponse.documentElement;

  // Генерируем массивы данных
  nameArray = xmlRoot.getElementsByTagName("namer");
  genderArray = xmlRoot.getElementsByTagName("gender");
  var html = "<select name='NamrList' size='15' id='NamrList' onkeyup='handleKeyUp(event,10)' onBlur=\"hideSuggest('Namrs')\">";
  // Генерируем вывод HTML
  if (nameArray.length>0)
  {
  for (var i=0; i<nameArray.length; i++)
  {
    html +="<option value='"+genderArray.item(i).firstChild.data+"'>"+nameArray.item(i).firstChild.data+"</option>";
  }
  html +="</select>";
  // Выводим данные в DIV
  //document.getElementById('Cities').disabled=false;
  myDiv = document.getElementById("Namrs");
  myDiv.innerHTML = html;
  //document.getElementById("StreetList").focus();
  }
 }
}

function ShowOtchr(gender,pat)
{
//document.getElementById('srch2').setAttribute('disabled','disabled');
//document.getElementById('Street').innerHTML="Улица <select name='Streets' id='Streets' disabled='true'><option>Идет получение данных...</option></select>";
// Если запрос выполнен или не иницилизирован - выполниям асинхронный запрос к серверу
 if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
 {
 var url="../inc/otchr.php";
 url=url+"?gender="+gender+"&pattern="+pat;
 url=url+"&sid="+Math.random();
//Вызываем функцию обратного вызова stateChanged
 xmlHttp.onreadystatechange=otchrChanged;
 xmlHttp.open("GET",url,true);
 xmlHttp.send(null);
 }
}
//Функция обратного вызова, которая обрабатывает полученные данные в формате XML и выводит в DIV
function otchrChanged()
{
  //Чтобы IE+ не выдавал JS ошибку
  if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
  {    //test
   //alert(xmlHttp.responseText);
  // получаем данные
  var xmlResponse = xmlHttp.responseXML;
  // Отлавливаем ошибки в IE и Opera
  if (!xmlResponse || !xmlResponse.documentElement)
    throw("Invalid XML structure:\n" + xmlHttp.responseText);
  // Отлавливаем ошибки в Firefox
  var rootNodeName = xmlResponse.documentElement.nodeName;
  if (rootNodeName == "parsererror") throw("Invalid XML structure");

  xmlRoot = xmlResponse.documentElement;

  // Генерируем массивы данных
  nameArray = xmlRoot.getElementsByTagName("otchr");
  var html = "<select name='OtchrList' size='15' id='OtchrList' onkeyup='handleKeyUp(event,11)' onBlur=\"hideSuggest('Otchrs')\">";
  // Генерируем вывод HTML
  if (nameArray.length>0)
  {
  for (var i=0; i<nameArray.length; i++)
  {
    html +="<option value='"+nameArray.item(i).firstChild.data+"'>"+nameArray.item(i).firstChild.data+"</option>";
  }
  html +="</select>";
  // Выводим данные в DIV
  //document.getElementById('Cities').disabled=false;
  myDiv = document.getElementById("Otchrs");
  myDiv.innerHTML = html;
  }
  //document.getElementById("StreetList").focus();
 }
}

function TelCodes(pat,type)
{
 if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
 {
 var url="../inc/telcodes.php";
 url=url+"?type="+type+"&pattern="+pat;
 url=url+"&sid="+Math.random();
//Вызываем функцию обратного вызова stateChanged

 xmlHttp.onreadystatechange= function() { TelCodesChanged(type); };
 /*
 if (type==1)
 {
 xmlHttp.onreadystatechange=TelCodesChanged;
 }
 else if (type==2)
 {
 xmlHttp.onreadystatechange=MobTelCodesChanged;
 }
 */
 xmlHttp.open("GET",url,true);
 xmlHttp.send(null);
 }
}
//Функция обратного вызова, которая обрабатывает полученные данные в формате XML и выводит в DIV
function TelCodesChanged(type)
{
  //Чтобы IE+ не выдавал JS ошибку
  if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
  {    //test
   //alert(xmlHttp.responseText);
  // получаем данные
  var xmlResponse = xmlHttp.responseXML;
  // Отлавливаем ошибки в IE и Opera
  if (!xmlResponse || !xmlResponse.documentElement)
    throw("Invalid XML structure:\n" + xmlHttp.responseText);
  // Отлавливаем ошибки в Firefox
  var rootNodeName = xmlResponse.documentElement.nodeName;
  if (rootNodeName == "parsererror") throw("Invalid XML structure");

  xmlRoot = xmlResponse.documentElement;

  // Генерируем массивы данных
  nameArray = xmlRoot.getElementsByTagName("code");

  var html = "<select class='nxt_f' name='TelCodeList' size='15' id='TelCodeList' onkeyup='handleKeyUp(event,14)' onBlur=\"hideSuggest('TelCodes')\">";
  var myDiv = document.getElementById("TelCodes");
  if (type==2)
  {
  var html = "<select class='nxt_f' name='MobTelCodeList' size='15' id='MobTelCodeList' onkeyup='handleKeyUp(event,15)' onBlur=\"hideSuggest('MobTelCodes')\">";
  var myDiv = document.getElementById("MobTelCodes");
  }

  // Генерируем вывод HTML
  if (nameArray.length>0)
  {
  for (var i=0; i<nameArray.length; i++)
  {
    html +="<option value='"+nameArray.item(i).firstChild.data+"'>"+nameArray.item(i).firstChild.data+"</option>";
  }
  html +="</select>";
  // Выводим данные в DIV
  //document.getElementById('Cities').disabled=false;
  myDiv.innerHTML = html;
  }
  //document.getElementById("StreetList").focus();
 }
}

function autoSearch(t)
{
 return;
 /*
 if (document.getElementById('Search'+t).value==0 || t==3)
 {
  document.getElementById('Search'+t).value=1;
  var sFAMR = document.getElementById('Famr').value;
  var sNAMER = document.getElementById('Namr').value;
  var sOTCHR = document.getElementById('Otchr').value;
  var sIDCITY = document.getElementById('selCity').value;
  var sCITY = document.getElementById('City').value;
  var sIDSTREET = document.getElementById('selStreet').value;
  var sSTREET = document.getElementById('Street').value;
  //var sIDHOUSE = document.getElementById('Famr').value;
  var sIDHOUSE="";
  var sNUMH = document.getElementById('selHome').value;
  var sNUMF = document.getElementById('selFlat').value;
  var sEMAIL = document.getElementById('Email').value;
  var cid1 = document.getElementById('C_ID').value;
  var ncid1 = document.getElementById('NC_ID').value;

  var sTEL = document.getElementById('Tel').value;
  var sTELCODE = document.getElementById('TelCode').value;
  var sMOBTEL = document.getElementById('MobTel').value;
  var sMOBTELCODE = document.getElementById('MobTelCode').value;

  if (t==3)
  {
   var sTEL = String(document.getElementById('caller_n').innerHTML);
  }
   cid=0;
   ncid="null";

   if (document.getElementById('Nvalid').checked)
   {
    cid="null";
    ncid=0;
   }

   if (cid1!="")
   {
    cid=cid1;
    ncid="null";
   }

   if (ncid1!="")
   {
    ncid=ncid1;
    cid="null";
   }


  if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
  {
  var params="C_ID="+cid+"&NC_ID="+ncid+"&sFAMR="+sFAMR+"&sNAMER="+sNAMER+"&sOTCHR="+sOTCHR+"&sIDCITY="+sIDCITY+"&sCITY="+sCITY+"&sSTREET="+sSTREET+"&sIDSTREET="+sIDSTREET+"&sIDHOUSE="+sIDHOUSE+"&sNUMH="+sNUMH+"&sNUMF="+sNUMF+"&sTELCODE="+sTELCODE+"&sTEL="+sTEL+"&sMOBTELCODE="+sMOBTELCODE+"&sMOBTEL="+sMOBTEL+"&sEMAIL="+sEMAIL;
  var url="../inc/autosearch.php?"+params+"&sid="+Math.random();
 //Вызываем функцию обратного вызова stateChanged
  xmlHttp.onreadystatechange=function() {searchChanged(params,t);};
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
  }
 }
 */
}
//Функция обратного вызова, которая обрабатывает полученные данные в формате XML и выводит в DIV
function searchChanged(params,t)
{
  if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
  {
   if (xmlHttp.responseText>0)
   {
   alert('Найдены контакты с такими данными');
   openWindow('search1.php?'+params,'','width=950,height=650,resizable=no,scrollbars=yes')
   }
   else if (t==3)
   {
   	alert('Не найдено!');
   }
  }
}

 function historyUser(cid,ncid,task,hl)
{
//document.getElementById('srch2').setAttribute('disabled','disabled');
//document.getElementById('Street').innerHTML="Улица <select name='Streets' id='Streets' disabled='true'><option>Идет получение данных...</option></select>";
// Если запрос выполнен или не иницилизирован - выполниям асинхронный запрос к серверу
 if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
 {
 var url="../inc/history.php";
 url=url+"?cid="+cid+"&ncid="+ncid+"&task="+task+"&hl="+hl;
 url=url+"&sid="+Math.random();
//Вызываем функцию обратного вызова stateChanged
 xmlHttp.onreadystatechange=historyUserChanged;
 xmlHttp.open("GET",url,true);
 xmlHttp.send(null);
 }
}

function historyUserChanged()
{
  //Чтобы IE+ не выдавал JS ошибку
  if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
  {    //test
   //alert(xmlHttp.responseText);
  // получаем данные
  var xmlResponse = xmlHttp.responseXML;
  // Отлавливаем ошибки в IE и Opera
  if (!xmlResponse || !xmlResponse.documentElement)
    throw("Invalid XML structure:\n" + xmlHttp.responseText);
  // Отлавливаем ошибки в Firefox
  var rootNodeName = xmlResponse.documentElement.nodeName;
  if (rootNodeName == "parsererror") throw("Invalid XML structure");

  xmlRoot = xmlResponse.documentElement;

  // Генерируем массивы данных
  resplistArray = xmlRoot.getElementsByTagName("resplist");
  petlistArray = xmlRoot.getElementsByTagName("petlist");
  contactlistArray = xmlRoot.getElementsByTagName("contactlist");
  prizelistArray = xmlRoot.getElementsByTagName("prizelist");
  histstatus = xmlRoot.getElementsByTagName("status");

  var html = "<table width='90%' border='0' cellspacing='0' cellpadding='0' align='center'>";
  var html1 = "";

  if (resplistArray.length>0)
  {
   resplistname = xmlRoot.getElementsByTagName("resplistname");
   respid   = xmlRoot.getElementsByTagName("respid");
   respdate  = xmlRoot.getElementsByTagName("respdate");
   crmproject  = xmlRoot.getElementsByTagName("crmproject");
   rctype = xmlRoot.getElementsByTagName("rctype");
   resptype = xmlRoot.getElementsByTagName("resptype");


   html +="<tr><td bgcolor='#CCCCCC' colspan='5'>"+resplistname.item(0).firstChild.data+"</td></tr>";

   for (var i=0; i<respid.length; i++)
   {
    html +="<tr><td>"+(respid.item(i).firstChild.data!='empt' ? respid.item(i).firstChild.data : '&nbsp;')+"</td><td>"+(respdate.item(i).firstChild.data!='empt' ? respdate.item(i).firstChild.data : '&nbsp;')+"</td><td>"+(crmproject.item(i).firstChild.data!='empt' ? crmproject.item(i).firstChild.data : '&nbsp;')+"</td><td>"+(rctype.item(i).firstChild.data!='empt' ? rctype.item(i).firstChild.data : '&nbsp;')+"</td><td>"+(resptype.item(i).firstChild.data!='empt' ? resptype.item(i).firstChild.data : '&nbsp;')+"</td></tr>";
   }

  }

  if (petlistArray.length>0)
  {
   petlistname = xmlRoot.getElementsByTagName("petlistname");
   petid   = xmlRoot.getElementsByTagName("petid");
   species  = xmlRoot.getElementsByTagName("species");
   petname  = xmlRoot.getElementsByTagName("petname");
   petpol = xmlRoot.getElementsByTagName("petpol");
   petdr = xmlRoot.getElementsByTagName("petdr");

   html1 ="<table width='90%' border='0' cellspacing='0' cellpadding='0' align='center'><tr bgcolor='#CCCCCC'><td>ID</td><td>Вид</td><td>Кличка</td><td>Пол</td><td>Дата рождения</td></tr>";

   for (var i=0; i<petid.length; i++)
   {
    html1 +="<tr><td>"+(petid.item(i).firstChild.data!='empt' ? petid.item(i).firstChild.data : '&nbsp;')+"</td><td>"+(species.item(i).firstChild.data!='empt' ? species.item(i).firstChild.data : '&nbsp;')+"</td><td>"+(petname.item(i).firstChild.data!='empt' ? petname.item(i).firstChild.data : '&nbsp;')+"</td><td>"+(petpol.item(i).firstChild.data!='empt' ? petpol.item(i).firstChild.data : '&nbsp;')+"</td><td>"+(petdr.item(i).firstChild.data!='empt' ? petdr.item(i).firstChild.data : '&nbsp;')+"</td></tr>";
   }
   html1 +="</table>";
  }

  if (contactlistArray.length>0)
  {
   contactlistname = xmlRoot.getElementsByTagName("contactlistname");
   contid  = xmlRoot.getElementsByTagName("contid");
   contdate  = xmlRoot.getElementsByTagName("contdate");
   contcrmproject = xmlRoot.getElementsByTagName("contcrmproject");
   conttype = xmlRoot.getElementsByTagName("conttype");
   ctp = xmlRoot.getElementsByTagName("ctp");

   html +="<tr><td bgcolor='#CCCCCC' colspan='5'>"+contactlistname.item(0).firstChild.data+"</td></tr>";

   for (var i=0; i<contid.length; i++)
   {
    html +="<tr><td>"+(contid.item(i).firstChild.data!='empt' ? contid.item(i).firstChild.data : '&nbsp;')+"</td><td>"+(contdate.item(i).firstChild.data!='empt' ? contdate.item(i).firstChild.data : '&nbsp;')+"</td><td>"+(contcrmproject.item(i).firstChild.data!='empt' ? contcrmproject.item(i).firstChild.data : '&nbsp;')+"</td><td>"+(conttype.item(i).firstChild.data!='empt' ? conttype.item(i).firstChild.data : '&nbsp;')+"</td><td>"+(ctp.item(i).firstChild.data!='empt' ? ctp.item(i).firstChild.data : '&nbsp;')+"</td></tr>";
   }

  }

  if (prizelistArray.length>0)
  {
   prizelistname = xmlRoot.getElementsByTagName("prizelistname");
   consprizeid   = xmlRoot.getElementsByTagName("consprizeid");
   prize  = xmlRoot.getElementsByTagName("prize");
   prizecrmproject  = xmlRoot.getElementsByTagName("prizecrmproject");
   prizeid = xmlRoot.getElementsByTagName("prizeid");
   prizestatus = xmlRoot.getElementsByTagName("prizestatus");

   html +="<tr><td bgcolor='#CCCCCC' colspan='5'>"+prizelistname.item(0).firstChild.data+"</td></tr>";

   for (var i=0; i<consprizeid.length; i++)
   {
    html +="<tr><td>"+(consprizeid.item(i).firstChild.data!='empt' ? consprizeid.item(i).firstChild.data : '&nbsp;')+"</td><td>"+(prize.item(i).firstChild.data!='empt' ? prize.item(i).firstChild.data : '&nbsp;')+"</td><td>"+(prizecrmproject.item(i).firstChild.data!='empt' ? prizecrmproject.item(i).firstChild.data : '&nbsp;')+"</td><td>&nbsp;</td><td>"+(prizestatus.item(i).firstChild.data!='empt' ? prizestatus.item(i).firstChild.data : '&nbsp;')+"</td></tr>";
   }
  }
   if (histstatus.length>0 && histstatus.item(0).firstChild.data!='empt')
   {
    br_stat=histstatus.item(0).firstChild.data.replace("[BR]","<br/>");
   html +="<tr><td bgcolor='#CCCCCC' colspan='5'>Статус</td></tr><tr><td colspan='5'>"+br_stat+"</td></tr>";
   }
   html +="</table>";

   showblock_ss('cur_act');
   showblock_ss('cur_act_c');
   document.getElementById("cur_act_cc").innerHTML=html;

   if (html1!='')
   {
   showblock_ss('jiv_c');
   showblock_ss('jiv_cc');
   document.getElementById("jiv").innerHTML=html1;
   }
 }
}
