

    var WAF_PrgList=new Object;

    function WAF_InitProgress(id, value, maxValue, speed, pwidth){
      var prg=new Object;
      speed=speed.replace(",",".");
      value=value.replace(",",".");
      maxValue=maxValue.replace(",",".");
      prg.startValue=value*1;
      prg.maxValue=maxValue*1;
      prg.speed=speed*1;
      prg.startDate=new Date();
      prg.pwidth=pwidth*1;
      prg.running=true;
      prg.lastSetValue=value*1;
      prg.lastSetTime=new Date();
      WAF_PrgList[id]=prg;
      WAF_ProgressBarPulse(id)
    }
    function WAF_ProgressBarPulse(id){
      prg = WAF_PrgList[id];
      prg.currentValue=prg.startValue+prg.speed*(new Date()-prg.startDate);
      if(prg.currentValue<0) {prg.currentValue=0;prg.speed=0; prg.startValue=prg.currentValue;}
      if(prg.currentValue>prg.maxValue) {prg.currentValue=prg.maxValue; prg.speed=0; prg.startValue=prg.currentValue;}
      var element=document.getElementById(id);
      if(element!=null){ 
          element.style.width=Math.floor(prg.currentValue*prg.pwidth/prg.maxValue) + "px";
          if(prg.currentValue>0){
             element.style.display = "";
          }else{
             element.style.display = "none";
          }
          if(prg.speed!=0){
             window.setTimeout("WAF_ProgressBarPulse('"+id+"');", 50)
          }else{
             prg.running=false;
          }
      }else{
            prg.running=false;
      }
    }

    function WAF_SetProgressValue(id, value){
      prg = WAF_PrgList[id];
      if( (value<prg.lastSetValue && prg.speed>0) || (value>prg.lastSetValue && prg.speed<0)){
        prg.startValue=prg.lastSetValue; 
        prg.startDate=prg.lastSetTime;
      }
      var dt=(new Date() - prg.startDate);
      if(dt>0) {prg.speed = (value-prg.startValue) / dt;}
      prg.lastSetTime=new Date();
      prg.lastSetValue = value;
      if(!prg.running) WAF_ProgressBarPulse(id);
    }
