/* 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;


if ( !selectedFiles || !fileSelect || !fileSelectedStatus ) throw 'Error! Could not find all the objects required.';

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 = 33;
	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 ( 'dp' );
	sFile.relatedElement = inputField;
	inputField.relatedElement = sFile;
	sFile.innerHTML = '<div style="float:left; width:90%;background: #F0FFD2" title="'+ inputField.value + '"><img src="templates/default2/images/file.gif" alt="" /> ' + basename (inputField.value) + '</div>';
	sFile.innerHTML += '<div style="float:right; width:10%;background: #F0FFD2" onclick="removeSelectedFiles(this.parentNode.relatedElement);">Remove</div>';
	selectedFiles.appendChild(sFile);
	fileSelectedStatus.style.display='block';
	fileSelectedStatus.innerHTML = fileSelected + ' files selected.';
	alternateRowColor ( getObj('selectedFiles'), 'dp', '#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'), 'dp', '#fafafa', '#ffffff' );
	checkFileExists();
}

fileSelect.appendChild ( newFileInput ( ) );