// This code is copyright (C)2008 National Business Forms & Printing, Inc.
// All rights reserved.

var upload_id = 0;
var active_id = -1;
var timerID;
var ajax = new Ajax();

// Initialization
window.addEvent('domready', function(){
  newSlot();
});

function getUploads() {
  var total = 0;
  var free = 0;
  var next = -1;
  for (i=0; i<document.forms.length; i++) {
    var prefix = document.forms[i].id.substring(0,6);
    var file_id = document.forms[i].id.replace('upload_', '');
    if (prefix=='upload') {
      total++;
      if (document.forms[i].disabled!=true) {
        if (document.forms[i]["filename"].value=='') {
          free++;
        } else {
          if (next==-1) { next = file_id; }
        }
      }
    }
  }
  return new Array(total, free, next);
}

function setFile(file_id) {
  $('upload_'+file_id).style.display = 'none';
  $('status_'+file_id).style.display = 'block';
  var filename = $('upload_'+file_id)["filename"].value;
  if (filename.indexOf('/') == -1) {
    var basename = filename.split("\\");
  } else {
    var basename = filename.split("/");
  }
  filename = basename[basename.length-1];
  $('status_'+file_id).innerHTML = '<a href=\'javascript:removeSlot('+file_id+')\' class=\'remove_icon\'>&nbsp;</a><div class="filename">'+filename+'</div><div class="statustext">Ready to send</div>';
  newSlot();
  uploadNext();	// Start it automatically!
}

function newSlot() {
  var upstats = getUploads();
  var uploads = upstats[0];
  var free = upstats[1];
  if ((uploads < max_uploads) && (free < 1)) {
    var file_id = upload_id;
    var newdiv = document.createElement('div');
    var divIdName = 'file_'+file_id;
    newdiv.setAttribute('id', divIdName);
    newdiv.innerHTML = "<form id='upload_"+file_id+"' class='file_form' target='uploadForm' method='post' enctype='multipart/form-data' action='/cgi-bin/upload.cgi?sid="+sid+"'><input type='file' name='filename' onChange='setFile("+file_id+");'></form><div id='status_"+file_id+"' style='display: none;'>&nbsp;</div>";
    $('filelist').appendChild(newdiv);
    $('file_'+file_id).addClass('file_box');
    upload_id++;
  }
}

function removeSlot(file_id) {
  var d = document.getElementById('filelist');
  var olddiv = document.getElementById('file_'+file_id);
  d.removeChild(olddiv);
  newSlot();
}

function fileComplete() {
  stopUpdates();
  $('upload_'+active_id).disabled = true;
  bgFader($('file_'+active_id), '#ddffdd', '#f5fff5');
  active_id = -1;
  uploadNext();
}

function uploadNext() {
  $('gobutton').disabled = true;
  stopUpdates();
  var upstats = getUploads();
  var free = upstats[1];
  var next = upstats[2];
  if (next>-1) {
    bgFader($('file_'+next), '#ddddff', '#f5f5ff');
    $('upload_'+next).submit();
    active_id = next;
    progressUpdate(next);
  } else {
    if (free>0) { $('gobutton').disabled = false; }
  }
}

function stopUpdates() {
  ajax.cancel();
  clearTimeout(timerID);
}

function progressUpdate(file_id) {
  var time = new Date();
  var filename = $('upload_'+file_id)["filename"].value;
  var url = "/upload/upload_ajax.php";
  ajax = new Ajax(url, {
    method: 'post',
    data: 'sid='+sid+'&time='+time.getTime()+'&filename='+escape(filename),
    update: $('status_'+file_id),
    evalScripts: true,
    onRequest: function() {
      //cartStatusLoading(true);
    },
    onComplete: function() {
      //bgFader($('file_'+file_id), '#ccffcc', '#f5f5f5');
    },
    onFailure: function() {
      //cartStatusError('getShippingOptions()');
    }
  });
  ajax.request();
  timerID = setTimeout("progressUpdate("+file_id+")", update_interval);
}

function bgFader(obj, start, finish) {
  var fx = new Fx.Style(obj, 'background-color', {
    duration: 1500,
    transition: Fx.Transitions.Quad.easeOut
  }).start(start, finish);
}
