var UploadInfo
var i = 0;

function AddUpload(){
	
  i++
  
	var Div = $('Files')
	var P = document.createElement('p')
  P.id = 'pcontent'+i
	
	var In = document.createElement('input')
	In.type = 'file'
	In.size = '40'
	In.name = 'Content[]'
  In.id = 'content'+i
  
	P.appendChild(In)
	Div.appendChild(P)
	
}

function getElementbyClass(rootobj, classname){
  var temparray=new Array()
  var inc=0
  var rootlength=rootobj.length
  for (i=0; i<rootlength; i++){
    if (rootobj[i].className==classname)
    temparray[inc++]=rootobj[i]
  }
  return temparray
}

function BeginUpload(){
	
  /* Validate they have checked the agreement option */
	if(document.getElementById('Agree').checked == false){
		Success = false;
		alert('Please check on the agreement.')
		return false;
	}
  
	/* Loop through all of the file uploads and get a sum of the filename lengths */
 
  var fileName = new Array();
  var fileToRemove = new Array();
 
	var Files = new Array();//document.getElementsByName('Content[]')
	
	for (loop = 0; loop <= i; loop++) {
    Files[loop] = document.getElementById( 'content'+loop );
  }
  
  
  
	var Uploads = 0;
  var fileExists = false;
  
	for (i = 0; i < Files.length; i++) {
    fileExists = false;
    Uploads += Files[i].value.length
    
    for (j = 0; j < fileName.length; j++) {
      if (fileName[j] == Files[i].value) {
        fileExists = true;
      }
    }
    
    if(fileExists){
      fileToRemove[fileToRemove.length] = Files[i];
    }else{
      fileName[fileName.length] = Files[i].value;
    }
  }
  
  for (i = 0; i < fileToRemove.length; i++) {
    $('p'+fileToRemove[i].id).remove();
  }
	
	/* If the sum of filename lengths = 0, alert user no file(s) chosen */
	if(! Uploads){
		Success = false;
		alert('Please select a file to upload.')
		return false;
	}
	
	
	
	/* Display the "uploading" overlay */
	document.getElementById('Primary').className = 'Hidden';
	document.getElementById('Secondary').className = 'Visible'
	
  lastTime = new Date().getTime();
  lastRead = 0;
  
	UploadInfo = setTimeout(UpdateUploadInfo,2000)
	return true;
}

var lastTime;
var lastRead;

function UpdateUploadInfo(){
  
  
  var currentTime = new Date().getTime();
  
	i++
	if(i == 10){
	  clearInterval(UploadInfo)
	  setTimeout(UpdateUploadInfo,5000)
	}else{
    setTimeout(UpdateUploadInfo,2000)
  }
	
	$('Loading').src = 'http://www.limelinx.com/shared/images/loading.gif';
  
	new Ajax.Request('/upload_info_xhr.php',
		{
			method:'get',
			onSuccess: function(t){
			Response = t.responseText.evalJSON()
      
      
      /*
       * array(6) { 
       *   ["total"]=>  int(257437369) 
       *   ["current"]=>  int(80722025) 
       *   ["filename"]=>  string(20) "Unearthed Arcana.pdf" 
       *   ["name"]=>  string(9) "Content[]" 
       *   ["done"]=>  int(0) 
       *   ["start_time"]=>  float(1254407708.8705) }
       */

      if(Response.total == 0)
       return;
      
      var strSpeed = "";
      var strUploaded = "";
      var strTotal = "";
      var secRemaining = 0;
      var percent = 0;
      var strEstTime = "";
      var timeDifference = currentTime - lastTime;
      var uploadedSinceLast = Response.current - lastRead;
      var speed = 0;
  
      
      var timeDifference_sec = timeDifference/1000;//convert interval in millis to sec
      var uploadedSinceLast_kb = uploadedSinceLast/1024;//convert data read until now to kilobytes      
      
      if(timeDifference_sec > 0)
        speed = uploadedSinceLast_kb/timeDifference_sec;
  
      
      //change global variable before alter data format
      lastRead = Response.current;
			lastTime = new Date().getTime();
      
      
      
      
      var currentRead = Math.round(Response.current/1024);
      var total = Math.round(Response.total/1024);
      speed = Math.round(speed/1.024);
      
      
      var divide = (currentRead < 1024 && total < 1024);

      percent = currentRead / total;
  
      if (speed < 1024)
    		strSpeed = Math.round((speed)*10)/10 + ' KB/s';
    	else
    		strSpeed = Math.round((speed / 1024)*10)/10 + ' MB/s';
    	
    	if (divide) {
        strUploaded = Math.round((currentRead) * 10) / 10 + ' KB';
        strTotal = Math.round((total)*10)/10 + ' KB';
      }
      else {
        strUploaded = Math.round((currentRead / 1024) * 10) / 10 + ' MB';
        strTotal = Math.round((total / 1024)*10)/10 + ' MB';
      }
      
      percent = Math.min(Math.round(percent * 1000)/10, 100);
      
      if(speed > 0)
        secRemaining = (total - currentRead) / speed;
      
    	
      
      var minutes = Math.max(Math.floor(secRemaining/60),0);
      var secondes = Math.round(Math.max(secRemaining % 60,0));
      var strSec = "" + secondes;
      if(strSec.length < 2)
        strSec = "0" + strSec;
      
    	strEstTime = minutes + ':' +  strSec;
      
      
      $('CurrentSpeed').innerHTML = strSpeed
    	$('EstTime').innerHTML = strEstTime
    	$('Progress').innerHTML = strUploaded + ' (' + strTotal + ' total)'
    	$('ProgressBarText').innerHTML = percent + '%'
    	$('InnerProgressBar').style.width = percent + '%'
      
			/*
			$('CurrentSpeed').innerHTML = Response.Speed

			$('EstTime').innerHTML = Response.Time
			$('Progress').innerHTML = Response.Uploaded + ' (' + Response.total + ' total)'
			$('ProgressBarText').innerHTML = Response.Percent + '%'
			$('InnerProgressBar').style.width = Response.Percent + '%'
      */
      
			}
		})
}
