Понимаете ли вы, что ваш вызов ajax никогда не использует данные, возвращаемые AJAX? Вы должны быть в состоянии заменить все это на
$('div#tab1').empty().html('<img src="Loading.gif">');
$('div#tab1').load('external.html');
Если вас беспокоит кэширование, добавьте метку времени в конец аргумента загрузки.
Готовый документ должен сработать, когда данные успешно записаны в DOM. Ergo, ваш Ajax должен выглядеть так:
$('div#tab1').empty().html('<img src="Loading.gif">');
$.ajax({
url: "external.html",
cache: false,
success: function(html){
$('div#tab1').html( html );
}
});