var
    delayDL     = 15000,    // миллисекунд
    errorLD     = '',       // ошибка последней операции получения
    statusLD    = -1,       // код ответа. Должно быть 200
    stateLD     = 0,        // Статус запроса (должен быть 4, в случае успешного выполнения)
    req,
    tDL;

/**
* Получение 
*/
function LoadData(url, func) {
    var br = '';
    
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    } else { // для эксплорера это активХ объект
        if (!window.ActiveXObject) return;
        req = new ActiveXObject('Microsoft.XMLHTTP');
        br = 'IE';
    }
    
    req.onreadystatechange = function() {
            stateLD = req.readyState;
            if (stateLD == 4) { // так складывается, что остальные значения и не используются, в принципе... Также можно получить в случае таймаута
                clearTimeout(tDL); // если данные были получены, таймер больше не нужен
                statusLD = req.status; // вполне вероятно, что была получена ошибка 5xx
                if (statusLD == 200) { // только если страница найдена!!!
                    errorLD = '';
                    func(req.responseText); // вызываем функцию
                } errorLD   = "Не удалось получить данные:\n" + req.statusText; // для 404 - Not Found
                req.abort();
            }
        };
    
    req.open('GET', url, true); // выполним запрос в асинхронном режиме
    // заголовки
    req.setRequestHeader('Content-Type', 'text/plain');
    req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    
    if (br == 'IE') req.send();
    else req.send(null);
    
    tDL = window.setTimeout(function() {
            errorLD     = 'Превышен предел ожидания!';
            statusLD    = -1;
            txtLD       = '';
            stateLD     = -1;
            req.abort();
            return false;
        }, delayDL);
}

// загрузка в синхронном режиме
function sLoadData(url) {
    var br = '';
    
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    } else { // для эксплорера это активХ объект
        if (!window.ActiveXObject) return '';
        req = new ActiveXObject('Microsoft.XMLHTTP');
        br = 'IE';
    }
    
    req.open('GET', url, false); // выполним запрос в синхронном режиме
    if (br == 'IE') req.send();
    else req.send(null);
    
    stateLD = req.readyState;
    statusLD = req.status;
    if(stateLD == 4 && statusLD == 200) { // statusLD == 200
        txtLD = req.responseText;
        req.abort();
        return txtLD;
    } else {
        errorLD = "Не удалось получить данные:\n" + req.statusText;
        req.abort();
        return '';
    }
}