last_uploaded = 0;
delay = 2000;
timeout_id = null;

function initProgressBar()
{
  $("#progressBar", $("#extend_upload") ).toggle();
  $("#fields", $("#extend_upload") ).toggle();

  var fileName = $("#file", $("#extend_upload") ).val();
  if (fileName.indexOf('/') > -1) {
    fileName = fileName.substring(fileName.lastIndexOf('/')+1, fileName.length);
  }	else {
    fileName = fileName.substring(fileName.lastIndexOf('\\')+1, fileName.length);
  }

  $( "#fileName" ).text( fileName );

  last_uploaded = 0;

  setNullProgressState();
  timeout_id = setInterval( progressLoop, delay );

}
//{"uploaded":"246148","total":"59436331","timeDelta":"13556"}

function setNullProgressState( ) {
  $("#progressView").attr( "style", "width:0px;" );
  $("#progressView").text( "0%" );
  $("#uploadSpeed").text( "0" );
  $("#uploadedKB").text( "0" );
  $("#uploadTotalSize").text( "0" );
}

function setProgressState( state )
{
  if( typeof state.total == "undefined" || !state.total ) {
    return;
  }


  $("#progressView").attr( "style", "width:" + ( state.uploaded * ( 400 / state.total ) ).toFixed(2) + "px;" );

  $("#progressView").text( ( state.uploaded / (  state.total/100 ) ).toFixed(0) + "%" );

  //speed in bytes
  var speed = (state.uploaded - last_uploaded ) / ( state.timeDelta/1000 );

  $("#uploadSpeed").text( formatInfoMass( speed, true ) );
  $("#uploadedKB").text( formatInfoMass( state.uploaded, false ) );
  $("#uploadTotalSize").text( formatInfoMass( state.total, false ) );
}

function formatInfoMass( bytes, speed )
{
  var res = bytes/1024;
  var l = speed ? 'Kb/s' : 'Kb';
  if( res > 1024 ){
    res = res / 1024;
    l = speed ? 'Mb/s' :'Mb';
  }
  return res.toFixed(2)+l;
}

function progressLoop()
{
  //clearTimeout(timeout_id);
  
  $.ajax({
    dataType: 'jsonp',
    url: "http://"+uploadHost+"/progress",
    type: "GET",
    data: "ses="+sesForProgress,
    cache: false,
    success: function(responce, status) {
      setProgressState( responce );
      //setTimeout( progressLoop, delay );
      
    },
    error: function ( XMLHttpRequest, textStatus, errorThrown ) {
      //setTimeout( progressLoop, delay );
    }
  });


}


