var httpRequest = createHttpRequest();
var glob_ajax_resultId = '';
var glob_ajax_callBackFunc = '';
var glob_ajax_callBackAfter = false;
var glob_ajax_ready = true;
var glob_ajax_resultText = '';
var glob_ajax_addResultText = false;
var glob_ajax_max_wait = 30;
var glob_ajax_wait_count = 0;
var glob_ajax_wait_number = 0;
var glob_ajax_current_number = 0;

document.write('<div name="load_ajax" ID="load_ajax" style="display: none; position: absolute; border: 1px solid red;"><img src="./admin_html/images/load_ajax.gif" border="0"></div>');

function showResultText(onlyIfError, clearResultTextIfError) {
  if (onlyIfError == undefined)
    onlyIfError = false;
  if (clearResultTextIfError == undefined)
    clearResultTextIfError = false;
    
  if (glob_ajax_resultText != '') {
    if (onlyIfError) {
      if (glob_ajax_resultText.substring(0,7) == 'Ошибка:') {
        alert(glob_ajax_resultText);
        if (clearResultTextIfError)
          glob_ajax_resultText = '';
      }
    }
    else
      alert(glob_ajax_resultText);
  }
}

function load_ajax(check) {
  var l = parseInt(window.document.body.scrollLeft + (screen.width/2) - 67);
  var t = parseInt(window.document.body.scrollTop + (screen.height/2) - 20);
  document.getElementById('load_ajax').style.left = l; 
  document.getElementById('load_ajax').style.top = t;
  document.getElementById('load_ajax').style.display = check ? 'block' : 'none';
}

function createHttpRequest() {
    if (window.XMLHttpRequest) {
      try {
        return new XMLHttpRequest();
      } catch (e){}
    } else if (window.ActiveXObject) {
      try {
        return new ActiveXObject('Msxml2.XMLHTTP');
      } catch (e){}
      try {
        return new ActiveXObject('Microsoft.XMLHTTP');
      } catch (e){}
    }
    return null;
}

function getRequest() {
  if (httpRequest.readyState == 4) {
    if (httpRequest.status == 200) {
      glob_ajax_resultText = httpRequest.responseText;
      if ((glob_ajax_callBackFunc != '') && (!glob_ajax_callBackAfter))
        eval(glob_ajax_callBackFunc);
      if ((glob_ajax_resultId != '') && (glob_ajax_resultText != ''))  
        if (glob_ajax_addResultText) {
          document.getElementById(glob_ajax_resultId).innerHTML += glob_ajax_resultText;
        }
        else        
          document.getElementById(glob_ajax_resultId).innerHTML = glob_ajax_resultText;
      glob_ajax_ready = true;
      if ((glob_ajax_callBackFunc != '') && (glob_ajax_callBackAfter))
        eval(glob_ajax_callBackFunc);
    }
    else
      if (glob_ajax_resultId != '')
        document.getElementById(glob_ajax_resultId).innerHTML = 'Ошибка при получении данных с сервера: "' + httpRequest.statusText + '". Повторите запрос!';
    glob_ajax_ready = true;
    if (glob_ajax_wait_count == 0)
      load_ajax(false);
  }
}

function sendRequest(url, resultId, req, method, text, callBackFunc, callBackAfter, addResultText, noLoadAjax) {
  if (!glob_ajax_ready) {
    glob_ajax_wait_count++;
    glob_ajax_wait_number++;
    setTimeout('waitForReady("0", "' + glob_ajax_wait_number + '", "' + url + '", "' + resultId + '", "' + req + '", "' + method + '", "' + text + '", "' + callBackFunc + '", "' + callBackAfter + '", "' + addResultText + '", "' + noLoadAjax + '")', 1000);
  }
  else {
    glob_ajax_ready = false;
    if (noLoadAjax != true)
      load_ajax(true);

    glob_ajax_resultId = resultId;
    ((addResultText != undefined) && (addResultText != 'undefined')) ? glob_ajax_addResultText = addResultText : glob_ajax_addResultText = false;   
    ((callBackFunc != undefined) && (callBackFunc != 'undefined')) ? glob_ajax_callBackFunc = callBackFunc : glob_ajax_callBackFunc = '';
    ((callBackAfter != undefined) && (callBackFunc != 'undefined')) ? glob_ajax_callBackAfter = callBackAfter : glob_ajax_callBackAfter = false;
    
    if ((text != '') && (text != undefined) && (text != 'undefined') && (glob_ajax_resultId != '')) {
      document.getElementById(glob_ajax_resultId).innerHTML = text;
    }

    switch (method) {
      case 'POST': {
        httpRequest.open(method, url, true);
        httpRequest.onreadystatechange = getRequest;
        httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
        httpRequest.send(req + '&rand=' + Math.random());
        break;
      }
    }
  }
}

// Функция позволяет ставить вызовы АЯКС в очередь
function waitForReady(waitTime, waitNumber, url, resultId, req, method, text, callBackFunc, callBackAfter, addResultText, noLoadAjax) {
  if (waitTime == glob_ajax_max_wait)
    alert('Ошибка: Истекло время ожидания готовности AJAX!');
  else {
    if (!glob_ajax_ready) {
      setTimeout('waitForReady("' + (waitTime++) + '", "' + waitNumber + '", "' + url + '", "' + resultId + '", "' + req + '", "' + method + '", "' + text + '", "' + callBackFunc + '", "' + callBackAfter + '", "' + addResultText + '", "' + noLoadAjax + '")', 1000);
    }
    else {
      if (glob_ajax_current_number == (waitNumber - 1)) {
        sendRequest(url, resultId, req, method, text, callBackFunc, callBackAfter, addResultText);
        glob_ajax_current_number = waitNumber;
        glob_ajax_wait_count--;
      }
    }
  }
}

function ajax_set_status(url, link, status, _resultId, operation) {
  var req = 'ajax=1&link=' + link + '&operation=' + operation + '&status=' + status;
  sendRequest(url, _resultId, req, 'POST', '');
}

function flippingGalleryFolder(isAdmin, id, link, dir) {
  var element = document.getElementById('div_gallery_'+id); 
  var element2 = document.getElementById('img_gallery_'+id);
  switch (element.getAttribute('flipped')) {
    case '0': {
      if (isAdmin)
        var script = 'admin.php';
      else
        var script = 'index.php'
      sendRequest(script, 'div_gallery_'+id, 'ajax=1&link=' + link + '&operation=get_subfolder&level='+element.getAttribute('level')+'&id='+id, 'POST', '');
      element2.setAttribute('src', dir+'folder_open.gif');
      element2.setAttribute('alt', 'Закрыть папку');
      element2.setAttribute('title', 'Закрыть папку');
      element.setAttribute('flipped','1');
      break;
    }
    case '1': {
      element.innerHTML = '&nbsp;';
      element2.setAttribute('src', dir+'folder_close.gif');
      element2.setAttribute('alt', 'Открыть папку');
      element2.setAttribute('title', 'Открыть папку');
      element.setAttribute('flipped','0');
      break;
    }
  }
}
