Witam. Kolega napisał z zapytaniem czy nie mógłbym coś mu poradzić. Luknąłem, potestowałem a problem dalej jest, teraz cały czas chodzi mi po głowie co to może być.
Mianowicie, pasek wgrywania plików, w IE chodzi bardzo ładnie, pliki sie wgrywaja akcja zakonczona pomyslnie. W FF i Operze zatrzymuje się (nie ma reguły) i uploadowanie jakby stopuje, kiedy użyje opcji "wyłącz animacje postępu wgrywania" dalej uploaduje w tle, no ale nie ma fajniutkiej animacji... Proszę o jakas wskazówke, może ktoś się już spotkał z podobnym problemem.

Kod
<script language="JavaScript">
var doc = document;
var totalsize=<TMPL_VAR data_total_dgt>;
var dat = new Array(<TMPL_VAR nbars>);
var xstop=0;
for(i=0;i<dat.length;i++)dat[i]=0;
function changeValue(id,value)
{
  if(!id)return;
  if(doc.getElementById(id))
  {
      doc.getElementById(id).innerHTML = value;
  }
}
function SP(cursize,time,speed,files,left)
{
    var percent = parseInt(100*parseFloat(cursize)/parseFloat(totalsize));
    if(doc.getElementById('upload_status'))doc.getElementById('upload_status').style.width = percent+'%';
    changeValue('percent', percent+'%' );
    changeValue('current',cursize);
    changeValue('speed',speed);
    changeValue('files',files);
    changeValue('time', convertSeconds(time) );
    changeValue('left', convertSeconds(left) );
    PB(speed);
}
function convertSeconds(seconds)
{
    hours = parseInt(seconds/3600);
    mins  = parseInt((seconds-hours*3600)/60);
    secs  = seconds - hours*3600 - mins*60;
    if(hours<10){ hours = '0'+hours; }
    if(mins<10){ mins  = '0'+mins; }
    if(secs<10){ secs  = '0'+secs; }
    return hours+':'+mins+':'+secs;
}
function Message(msg)
{
    if(!doc.getElementById('message'))return;
    doc.getElementById('message').innerHTML += msg+'<br>';
    window.scrollBy(0,550);
    doc.getElementById('message').scrollTop+=50;
}
function ClosePopUp()
{
    if(doc.getElementById('close_finished') && document.getElementById('close_finished').checked==true)self.close();
}
function PB(val)
{
   if(!doc.getElementById('curr_speed'))return;
   for(i=0;i<dat.length;i++)
   {
     dat[i] = dat[i+1];
   }
   dat[dat.length-1] = val;
   if(doc.getElementById('curr_speed'))doc.getElementById('curr_speed').innerHTML = val;
   setBarValues();
}
function setBarValues()
{
  var bar_height = doc.getElementById('bar_table').style.height;
  bar_height = bar_height.replace(/px/,'');
  max_value=1;
  for(i=0;i<dat.length;i++){if(parseInt(dat[i])>max_value)max_value=dat[i];}
  for(i=1;i<=dat.length;i++)
  {
     if(dat[i-1]=='' || !dat[i-1])dat[i-1]=0;
     newh = bar_height*(1 - dat[i-1]/max_value);
     if(newh<0)alert(i+':'+dat[i-1]+':'+max_value);
     doc.getElementById("b"+i).style.height = newh+'px';
  }
}
function updateFileStatus(id,classname,text,size)
{
    if(doc.getElementById('fs'+id))
    {
        doc.getElementById('fs'+id).className=classname;
        doc.getElementById('fs'+id).innerHTML=text;
        doc.getElementById('fss'+id).innerHTML=size;
    }
}
function jahDone(url)
{
    if (req.readyState == 4)
    {
        if (req.status == 200)
        {
            window.clearTimeout(timeoutId);
            results = req.responseText;
            if(!xstop)eval(results);
        }
    }
}
function callInProgress (xmlhttp) {
switch (xmlhttp.readyState) {
case 1: case 2: case 3:
return true;
break;
// Case 4 and 0
default:
return false;
break;
}
}

var timeoutId;
function jah(url)
{
    url = url+'&rnd='+Math.random();
    if (window.XMLHttpRequest)
    {
        req = new XMLHttpRequest();
        req.onreadystatechange = function() {if(window.jahDone)jahDone(url);};
        req.open("GET", url, true);
        req.send(null);
    }
    else if (window.ActiveXObject)
    {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req)
        {
            req.onreadystatechange = function() {if(window.jahDone)jahDone(url);};
            req.open("GET", url, true);
            req.send();
            
        }
    }
    timeoutId = window.setTimeout(
    function()
    {
        if ( callInProgress(req) )
        {
            req.abort();
            window.clearTimeout(timeoutId);
            jah(url);
        }
    },
    19000
    );
}
</Script>


solved, problem nie tkwił w skypcie js