var jsEnabled = undefined;

function checkJsEnabled(){

  var cookies = document.cookie;
  if (cookies.indexOf('jsEnabled=false') != -1){
    return false;
  } else if (cookies.indexOf('jsEnabled=true') != -1){
    return true;
  } else {
    new Ajax.Request('test.html?ajaxTest=true', {
      method:'get',
      onSuccess:function(transport){
        if (transport.responseText == 'true'){
          var now = new Date();
          var expires = 30 * 60 * 1000;
          now.setTime(now.getTime() + expires);
          document.cookie = "jsEnabled=true; expires=" + new Date(now).toGMTString();
        }
      }
    });
  }
}

function markRequest(urlString, elementName){
  if (urlString){
    if ((urlString.indexOf('&') != -1) || (urlString.indexOf('=') != -1) || (urlString.indexOf('?') != -1)){
      urlString += '&isAjaxRequest=true&pane=' + elementName;
    } else {
      urlString += '?isAjaxRequest=true&pane=' + elementName;
    }
  }
  return urlString;
}

function showProgressBar(show){
  var bar = $('progressBar');
  if ((bar) && (show)){
    bar.style.display = 'inline';
  } else {
    bar.style.display = 'none';
  }
}

function setError(text){
  if (text){
    var errorPane = document.getElementById('errorPane');
    if (errorPane){
      errorPane.style.display = 'inline';
    }
    var errorMessage = document.getElementById('errorMessage');
    if (errorMessage){
      errorMessage.innerText = text;
    }
  } else {
    var panes = $$('ul.errorPane','ul.messagePane');
    if (panes){
      var i = 0;
      for (i = 0; i < panes.length; i++){
        if (panes[i]){
          panes[i].style.display = 'none';
        }
      }
    }
    var items = $$('li.errorItem','li.messageItem');
    if (items){
      var i = 0;
      for (i = 0; i < items.length; i++){
        if (items[i]){
          items[i].innerText = '';
        }
      }
    }
  }
}

function refreshPanes(json, transport, elementNamesToReplace){
    if (json){
    var i = 0;
    var panesToRefresh;
    if (elementNamesToReplace){
	   panesToRefresh = elementNamesToReplace.split(',', json.length);
    }
    for (i = 0; i < json.length; i++){
      var descriptor = json[i];
      var paneToUpdate;
      if (descriptor.name == 'document'){
        paneToUpdate = document;
      } else {
	    if (panesToRefresh && panesToRefresh.length > i){
          paneToUpdate = document.getElementById(panesToRefresh[i]);
	    } else {
          paneToUpdate = document.getElementById(descriptor.name);
        }
      }

      if (paneToUpdate){

        if ((descriptor.start != -1) && (descriptor.end != -1)) {
          paneToUpdate.innerHTML = transport.responseText.substring(descriptor.start, descriptor.end);
        }

        if (descriptor.title){
          paneToUpdate.title = descriptor.title;
        }

        if (descriptor.attrs){
          var j = 0;
          for (j = 0; j < descriptor.attrs.length; j++){
            var attr = descriptor.attrs[j];
            paneToUpdate.setAttribute(attr.name, attr.value);
          }
        }
      }
    }
  }
}

function refresh(URL, elementName, formElementName, elementNamesToReplace){
  showProgressBar(true);
  setError();
   dhtmlHistory.add(URL, elementName);

  var formElement = null;
  if (formElementName){
    formElement = $(formElementName);
  }

  var params = null;
  if (formElement){
    params = markRequest(formElement.serialize(), elementName);
  } else {
    params = null;
  }
  var method;
  if (formElement){
    method = 'post';
  } else {
    method = 'get';
  }
  if (params){
    new Ajax.Request(markRequest(URL, elementName), {
      method:method,
      encoding:'windows-1251',
      parameters:params,
      onSuccess: function(transport, json) {
        if ((json) && (json.redirect) && (json.redirect.length > 0)){
          window.location.href = json.redirect;
        } else {
          showProgressBar(false);
          refreshPanes(json,transport);
        }
      },
      onFailure: function(transport, json){
        showProgressBar(false);
        var message = transport.status;
        if (transport.statusText){
          message += transport.statusText;
        }
        setError(message);
      }
    });
  } else {
    new Ajax.Request(markRequest(URL, elementName), {
      method:method,
      onSuccess: function(transport, json) {
        showProgressBar(false);
        refreshPanes(json, transport, elementNamesToReplace);
      },
      onFailure: function(transport, json){
        showProgressBar(false);
        var message = transport.status;
        if (transport.statusText){
          message += transport.statusText;
        }
        setError(message);
      }
    });

  }

}

function openPopup(url, width, height){
  var parameters = 'menubar=0,resizable=1';
  if (width){
    parameters = parameters + ',width=' + width;
  }
  if (height){
    parameters = parameters + ',height=' + height;
  }
  window.open(url,'_blank',parameters);
}

function closePopup(win, refreshOpener){
  if (refreshOpener && win.opener){
    win.opener.location.reload(true);
  }
  win.close();
}
