
var ProgressBar = {
  
  
  start: function(progressId, options)
  {
    ProgressBar.progressId = progressId;
    
    //process options
    ProgressBar.update_callback = typeof options.onUpdate === 'undefined' ? null : options.onUpdate;
    ProgressBar.finish_callback = typeof options.onFinish === 'undefined' ? null : options.onFinish;
    ProgressBar.refresh = typeof options.refresh === 'undefined' ? 1000 : options.refresh;
    
    setTimeout(ProgressBar.upload, ProgressBar.refresh);
  },
  
  
  upload: function()
  {
    $.ajax(
    {
      type: 'GET',
      url: '/ajax/progress-bar/?progress_id=' + ProgressBar.progressId,
      success: function(feedback)
      {
        var percent = parseInt(feedback);
        
        if (percent < 100)
        {
          if (ProgressBar.update_callback && typeof ProgressBar.update_callback =='function')
          {
            ProgressBar.update_callback( percent );
          }
          else if ( $('#progress_bar').length )
          {
            $('#progress_bar').html(feedback);
          }
          
          setTimeout(ProgressBar.upload, ProgressBar.refresh);
        }
        else
        {
          if (ProgressBar.finish_callback && typeof ProgressBar.finish_callback === 'function')
          {
            ProgressBar.finish_callback( 100 ); // in case ProgressBar.update_callback === ProgressBar.finish_callback
          }
          else if (ProgressBar.finish_callback && typeof ProgressBar.finish_callback === 'string')
          {
            window.location = ProgressBar.finish_callback;
          }
          else if (ProgressBar.update_callback && typeof ProgressBar.update_callback =='function')
          {
            ProgressBar.update_callback( 100 );
          }
        }
      }
    });
  }
  
  
};