/* You may edit these */
var maxFileSelectable = 25;
var selectedFiles   = getObj ( 'selectedFiles' );
var fileSelect    = getObj ( 'fileSelect' );
var fileSelectedStatus = getObj ( 'fileSelectedStatus' );
var uploadTo     = getObj ( 'upload_to' );
var fileExistWarn  = getObj ( 'fileExistsWarning' );
var fileNum     = 0;
var fileSelected  = 0;


function newFileInput ( )
{
  var n = document.createElement ( 'input' );
  var i = 'file' + fileNum++;
  n.type = 'file';
  n.name = n.id = i;
  n.className = 'input_file';
  n.size = 55;
  n.onchange = function ( )
  {
    updateSelectedFiles(this);
    checkFileExists();
    this.style.display='none';
    if ( fileSelected < maxFileSelectable )
    {
      fileSelect.appendChild(newFileInput());
    }
  }
  return n;
}

function isSelected ( f )
{
  for ( var i = 0; i < fileNum-1; i++ )
  {
    var x = getObj ( 'file' + i );
    if ( x  && x.value == f ) return true;
  }
  return false;
}

function checkFileExists ( )
{
  if ( !fileExistWarn ) return false;
  if ( !uploadTo ) return false;

  var files = fileSelect.getElementsByTagName ( 'input' );
  var fileNames = new Array();

  for ( i = 0; i < files.length; i++ )
  {
    if ( files[i].type == 'file' && files[i].value != '' )
    {
      fileNames['files['+i+']'] = basename ( files[i].value );
    }
    // folder
    fileNames['folder'] = uploadTo.value;
  }
  var checkFunc = function ( result )
  {
    if ( result != '' )
    {
      fileExistWarn.style.display = 'block';
      fileExistWarn.innerHTML = result;
    }
    else fileExistWarn.style.display = 'none';
  }
  xmlhttpPost(fileNames,'upload.php?action=check_file_exists',checkFunc);
}

function updateSelectedFiles ( inputField )
{
  fileSelected++;
  if ( isSelected ( inputField.value ) )
  {
    alert ( 'You have already selected this file. It will be removed.' );
    removeSelectedFiles ( inputField );
    return false;
  }

  var sFile = document.createElement ( 'li' );
  sFile.relatedElement = inputField;
  inputField.relatedElement = sFile;
  sFile.innerHTML = '<span class="left" title="'+ inputField.value + '"><img src="templates/default2/images/file.gif" alt="" class="img1" /> ' + basename (inputField.value) + '</span>';
  sFile.innerHTML += '<span class="right link" onclick="removeSelectedFiles(this.parentNode.relatedElement);">Remove</span><div class="spacer"></div>';
  selectedFiles.appendChild(sFile);
  fileSelectedStatus.style.display='block';
  fileSelectedStatus.innerHTML = fileSelected + ' files selected.';
  alternateRowColor ( getObj('selectedFiles'), 'li', '#fafafa', '#ffffff' );
}

function removeSelectedFiles ( inputField )
{
  fileSelect.removeChild ( inputField );
  if ( inputField.relatedElement ) selectedFiles.removeChild ( inputField.relatedElement );
  fileSelected--;
  if ( fileSelected > 0 )
    fileSelectedStatus.innerHTML = fileSelected + ' files selected.';
  else
    fileSelectedStatus.innerHTML = 'No files selected.';
  alternateRowColor ( getObj('selectedFiles'), 'li', '#fafafa', '#ffffff' );
  checkFileExists();
}

if ( !selectedFiles || !fileSelect || !fileSelectedStatus ) 
{
  //throw 'Error! Could not find all the objects required.';
} else
{
  fileSelect.appendChild ( newFileInput ( ) );
}