function hErr(m,u,l)
{
    alert(m + " at " + l + " u= " + u);
    return true;
}
self.onerror = hErr;

var req;
var timeoutId;
var tgt = 'popupContentDiv';


function postAjaxData(f, url)
{
    var query = 'ajax=1';
    for (var i=0; i < f.length; i++)
    {
        if (f.elements[i].name)
        {
            if(f.elements[i].type == 'checkbox' && f.elements[i].checked == false) continue;
            if(f.elements[i].type == 'radio'    && f.elements[i].checked == false) continue;
            if(f.elements[i].type == 'select-one')
            {
                query = query + '&' + f.elements[i].name + '=' + f.elements[i].options[f.elements[i].selectedIndex].value;
            }
            else
            {
                query = query + '&' + f.elements[i].name + '=' + f.elements[i].value;
            }
        }
    }
    //alert(query);
    sendAjaxRequest(query, url);
}

function sendAjaxRequest(postdata, ajax_url)
{
    if(window.XMLHttpRequest)
    {
       req = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
       req=new ActiveXObject("Msxml2.XMLHTTP");
       if (!req)
       {
          req=new ActiveXObject("Microsoft.XMLHTTP");
       }
    }
    if(req)
    {
       //alert('req=' + ajax_url + ' params=' + postdata);
       req.open("POST", ajax_url, true);
       timeoutId = setTimeout(timesUp,10000);  // 10 сек на запрос
       req.onreadystatechange = CallbackAjax;
       req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
       req.send(postdata);
    }
    else
    {
        alert("Ваш броузер не разрешает использовать возможности приложения! Воспользуйтесь Internet Explorer, Mozilla-подобным броузером!");
    }
}

/* Ф-я обработчик ответов сервера на AJAX-запрос*/
function CallbackAjax()
{
    try
    {
       if (req.readyState == 4)
       {
           clearTimeout(timeoutId);
           if (req.status == 200)
           {
               req.onreadystatechange = Callback(req);
           }
           else
           {
               alert("Ошибка запроса AJAX:" + req.status + " " + req.statusText);
           }
       }
       else
       {

           if(req.readyState > 0)
           {
               document.getElementById("loaderDiv").style.display = 'block';
           }
       }

    }
    catch(err)
    {
       //alert("It does not appear that the server is available for this application. Please try again very soon. \\nError: " + err.message);
    }
}

function Callback(httpRequest)
{
    try
    {
      //alert(httpRequest.responseText);
      document.getElementById("loaderDiv").style.display = 'none';
      var content = document.getElementById(tgt);
      content.innerHTML = httpRequest.responseText;
    }
    catch (err)
    {
       alert(err.message);
    }
}


function timesUp()
{
    req.abort();
    alert("Проблемы при соединением с серверной программой. Пожалуйста убедитесь в соединеии с Internet и попытайтесь снова позднее.");
}

function openPopup(url, q, w, h, t)
{
   if (winList['popupDiv'])
   {
      tgt = 'popupContentDiv';
      var loader = document.getElementById('loaderDiv');
      winList['popupDiv'].clientArea.innerHTML = loader.innerHTML;
      winList['popupDiv'].titleBarText.innerHTML = t;
      winList['popupDiv'].open();
      winList['popupDiv'].resize(w,h);
      var postData = (q) ? "pd=" + q : "";
      sendAjaxRequest(postData, url);
   }
   else alert('Не инициализировано окно');
}

function closePopup()
{
    winList['popupDiv'].close();
    var content = document.getElementById('popupContentDiv');
    content.innerHTML = "";
}

