
function getUploadListValue(id, title, name, contextPath) {
	name = getShortFileName(name);
	return '<span>' + title + '&nbsp;' + name + '</span>&nbsp;'
		+ '<a href="javascript:void(0)" onclick="removeUploadListValue(\'' + id 
		+ '\')" title="Удалить из списка"><img src="' 
		+ contextPath + 'img/ico_remove.gif?build=20101009" alt="Удалить из списка" class="icon" /></a>';
}

function getShortFileName(name) {
	if (name.length > 60) {
		name = "..." + name.substring(name.length - 60, name.length);
	}
	return name;
}

function onFileChoose(fileInput, contextPath) {
	var listEl = document.getElementById('multiuploadList');
	var nextId = getNextFileNumber();
	if (nextId == -1) {
		alert('За один раз можно загрузить не более 25 файлов');
		cleanFileInput('uploadFileInput', fileInput);
		return;		
	} else if (listEl.innerHTML.indexOf('Файл:&nbsp;' + getShortFileName(fileInput.value)) != -1) {
		alert('Такой фал уже присутствует в списке');
		cleanFileInput('uploadFileInput', fileInput);
		return;
	}
	fileInput.style.display = 'none';

	var fileContainer = document.createElement('span');
	fileContainer.id = 'file_list_el_' + nextId;
	document.getElementById('uploadFileInput').appendChild(fileContainer);
	fileContainer.innerHTML = '<input type="file" name="file' + nextId + '" maxlength="256" style="' + fileInput.style + '" class="formField3 fileInput" size="' 
		+ fileInput.size + '" onchange="onFileChoose(this, \''+ contextPath + '\');" />';
	
	/* insert new upload list value */	
	addUploadListValue('list_el_' + fileInput.name.substring(4, fileInput.name.length), 'Файл:', fileInput.value, '', contextPath);
}

function getNextFileNumber() {
	var result = -1;
	var fileInputs = document.getElementById('uploadFileInput').innerHTML;
	for (var i = 1; i <= 26; i++) {
		if (fileInputs.indexOf('file_list_el_' + i) == -1) {
			result = i;
			break;
		}
	}
	return result;
}

function onInetChoose(contextPath) {
	var urlInput = document.getElementById("urlToFile");
	if (urlInput == null) {
		urlInput = document.getElementById("urlToVideo");
	}
	var listEl = document.getElementById('multiuploadList');
	
	// trim the url
	urlInput.value = urlInput.value.replace(/^\s+|\s+$/g, '');
	
	if (urlInput.value == '') {
		alert('Выбран пустой адрес (URL)');
		return;
	} else if (listEl.innerHTML.indexOf('Ссылка:&nbsp;' + getShortFileName(urlInput.value).replace('&', '&amp;')) != -1) {
		alert('Такая ссылка уже присутствует в списке');
		return;	
	} else if (!isValidURL(urlInput.value)) {
		alert('Неверный формат адрес (URL)');
		return;
	}	
	addInetUploadListValue(urlInput.value, contextPath);
	/* clean the input */
	urlInput.value = '';
}

function addInetUploadListValue(value, contextPath) {
	var hiddenInput = '<input name="fileUrls" type="hidden" value="' + value + '" />';		
	var id = rand();
	addUploadListValue(id, 'Ссылка:', value, hiddenInput, contextPath);
}

function addUploadListValue(itemId, title, hiddenInputValue, hiddenInputEl, contextPath) {
	var elem = document.createElement('div');
	elem.setAttribute('id', itemId);
	elem.innerHTML = getUploadListValue(itemId, title, hiddenInputValue, contextPath) + hiddenInputEl;
	var multiuploadList = document.getElementById("multiuploadList");
	multiuploadList.appendChild(elem);
	
	showme('multiuploadListTitle');
}

function removeUploadListValue(itemId) {
	var listEl = document.getElementById('multiuploadList');
	var len = listEl.childNodes.length;
	for (var i = 0; i < len; i++) {           
		if (listEl.childNodes[i].id == itemId) {
			listEl.removeChild(listEl.childNodes[i]);	
			if (len == 1) {
				hideme('multiuploadListTitle');
			}
			break;
		}
	}
	listEl = document.getElementById('uploadFileInput');
	len = listEl.childNodes.length;	
	for (var i = 0; i < len; i++) {
		if (listEl.childNodes[i].id == 'file_' + itemId) {
			listEl.removeChild(listEl.childNodes[i]);
			break;
		}
	}	
}

function rand(min, max) {
    var argc = arguments.length;
    if (argc == 0) {
        min = 0;
        max = 2147483647;
    } else if (argc == 1) {
        throw new Error('Warning: rand() expects exactly 2 parameters, 1 given');
    }
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

function isValidURL(url){
    var RegExp = /^(http+:\/\/)([\d\w]+\.){0,2}([\d\w][-\d\w]{0,253}[\d\w]\.)+([\w]{2,4}|travel|museum)(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;
    if(RegExp.test(url)){
        return true;
    }else{
        return false;
    }
} 

function autoSubmitInetUploadForm(contextPath) {
	var urlInput = document.getElementById("urlToFile");
	if (urlInput == null) {
		urlInput = document.getElementById("urlToVideo");
	}
	if (urlInput != null && urlInput.value != '') {
		var listEl = document.getElementById('multiuploadList');
		var searchString = 'Ссылка:&nbsp;' + getShortFileName(urlInput.value).replace('&', '&amp;');
		if (listEl.innerHTML.indexOf(searchString) == -1) {
			addInetUploadListValue(urlInput.value, contextPath);
		}
		urlInput.value = '';
	}
}