function replaceNode(source, target, call) {
    var delay = 2; // время в секундах, в течении которого показываем баннер загрузки
    var targetEl = document.getElementById(target);
    var sourceEl = document.getElementById(source);
    if (call === undefined) {
        /* Если блок не отобразил текст рекламы, то баннер загрузки вообще не показываем (чтоб зря не беспокоить юзера).
           Так как innerText не работает в файрфоксе, то берем innerHTML и вырезаем из него все скрипты и тэги, то есть оставляем
           только "полезный" текст.
           Я использую stripScripts, stripTags, и strip яваскриптового фреймворка Prototype, но здесь
           достаточно вырезать все скрипты и тег link, например, при помощи регулярных выражений, или просто выкинуть следующие
           4 строки кода, если неохота заморачиваться. */
        var advTxt = sourceEl.innerHTML;
        advTxt = advTxt.stripScripts().stripTags().strip();
        if (!advTxt)
            return;
        targetEl.style.display = 'block';
        // функция вызовет себя через время delay секунд
        window.setTimeout(function (){replaceNode(source, target, 'true');}, delay*1000);
        return;
    }
    // попадаем сюда при повторном вызове
    targetEl.innerHTML = '';
    targetEl.appendChild(sourceEl);
    sourceEl.style.display = 'block';
}