
function getPageSize() {

    if (self.innerHeight)
        return { width: self.innerWidth, height: self.innerHeight }
    else
    if (document.documentElement && document.documentElement.clientHeight)
        return { width: document.documentElement.clientWidth, height: document.documentElement.clientHeight }
    else
    if (document.body)
        return { width: document.body.clientWidth, height: document.body.clientHeight }

    return { width: 0, height: 0 };
}

function getPageScroll() {

    if (self.pageYOffset)
        return { x: self.pageXOffset, y: self.pageYOffset }
    else
    if (document.documentElement && document.documentElement.scrollTop)
        return { x: document.documentElement.scrollLeft, y: document.documentElement.scrollTop }
    else
    if (document.body)
        return { x: document.body.scrollLeft, y: document.body.scrollTop }

    return { x: 0, y: 0 };
}


function smrAJAX() {

    this.enabled = true;
    this.ajaxId = 'ajaxLoader';

    this.objects = [];
    this.results = [];

}

smrAJAX.prototype = {

    createNewObject: function(id) {

        var newAjaxObject;

        try {
            newAjaxObject = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e) { try {
            newAjaxObject = new ActiveXObject('Microsoft.XMLHTTP');
        } catch (e) { try {
            newAjaxObject = new XMLHttpRequest();
        } catch (e) {
            this.enabled = false;
            return null;
        } } }

        if (id)
            this.objects[id] = newAjaxObject;

        return this.objects[id];
    },

    query: function(id, URL, method, data, todo) {

        this.ajaxLoader();

        method = method.toUpperCase();

        if (this.createNewObject(id)) {

            dataString = 'ajax=1';
            for (i in data)
                 dataString += '&' + i + "=" + escape(data[i]);

            if (method == 'POST') {
                this.objects[id].open('POST', URL, true);
                this.objects[id].setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                this.objects[id].send(dataString);
            } else {
                this.objects[id].open('GET', URL + ((URL.indexOf('?') == -1) ? '?' : '&') + dataString, true);
                this.objects[id].send(null);
            }

            this.objects[id].onreadystatechange = function() {
                smrAJAX.handleRSC(id, todo);
            }
        }
    },

    ajaxLoader: function() {


    if (_get(this.ajaxId) != null) {

     document.body.removeChild(_get(this.ajaxId));

    }else{


        var pageSize   = getPageSize();
        var pageScroll = getPageScroll();

        var entry = document.createElement('DIV').appendChild(document.createElement('DIV'));
        entry.className = 'entry';
        entry.parentNode.id = this.ajaxId;
        entry.parentNode.style.marginTop = pageScroll.y + 'px';
        entry.innerHTML = '<h1 align="center">Заргрузка данных<br /><img src="/images/progressbar-microsoft.gif" alt="loading" /></h1>';
        document.body.appendChild(entry.parentNode);

    }


    },

    handleRSC: function(id, todo) {

        if (this.objects[id].readyState == 4) {

            if (this.objects[id].status == 200)
                AJAXOutput = this.objects[id].responseText;
            else
                AJAXOutput = '';

            eval(todo);
              document.body.removeChild(_get('ajaxLoader'));
        }
    }
}

smrAJAX = new smrAJAX();

function displayError(HTML) {

    if (_get('error-box') != null)
        return;

    var pageSize   = getPageSize();
    var pageScroll = getPageScroll();

    var entry = document.createElement('DIV').appendChild(document.createElement('DIV'));
    entry.className = 'entry';

    entry.parentNode.id = 'error-box';
    entry.parentNode.style.marginTop = pageScroll.y + 'px';

    entry.innerHTML = '<h1>Ошибка</h1>' + HTML;

    var closer = entry.appendChild(document.createElement('A'));
    closer.href      = 'javascript:void(0);';
    closer.title     = 'закрыть сообщение об ошибке';
    closer.innerHTML = 'закрыть';
    closer.className = 'closer';

    closer.onclick = function() {
        document.body.removeChild(this.parentNode.parentNode);
    }

    document.body.appendChild(entry.parentNode);
    return 0;
}