А в каком браузере Вы проверяете?
top.document.getElementById('frame_tariff')
может и не сработать по требованиям безопасности, потому что не сработает top.document
попробуйте так:
document.getElementById('frame_tariff')
или с учетом того, что имя фрейма "fr" так:
top.fr
перед тем как делать
setAttribute('width',width);
убедитесь, что фрейм существует, например так:
var f=document.getElementById('frame_tariff');
if (!f)
alert('АВАРИЯ!!!');
else
{
f.setAttribute('width',width);
}