FR.utils.reloadGrid = function() {
	FR.UI.grid.load(FR.currentPath);
}
FR.utils.getFileExtension = function(filename) {
	return filename.substr(filename.lastIndexOf(".") + 1).toLowerCase();
}
FR.UI.grid.getSelectedFiles = function() {
	var s = FR.UI.grid.panel.getSelectionModel().getSelections();
	var list = [];
	for(var i = 0, len = s.length; i < len; i++){
		var data = s[i].data;
		data.id = s[i].id;
		list.push(data);
	}
	return list;
}

FR.actions.downloadSelectedFolder = function() {
	if (FR.UI.tree.contextMenuVisible) {
		var treeNode = FR.UI.tree.contextMenuSelectedNode;
	} else {
		var treeNode = FR.UI.tree.currentSelectedNode;
	}
	var path = treeNode.getPath('pathname');
	var renameTo = FR.T(treeNode.attributes.text+'.zip');
	FR.UI.feedback(FR.T('Please wait while the selected folder is being zipped...'));
	FR.actions.zipSelectedFolder(path, renameTo, 'forDownload=1', function(response) {
		if (response.rs) {
			FR.UI.feedback(response.msg+'<br>'+FR.T('Downloading zip file...'));
			FR.actions.downloadOneFile(FR.currentPath, renameTo, false, false, false, renameTo, 'afterZip=1');
		}
	});
}

FR.actions.downloadSelected = function(cnfirm, openInBrowser) {
	if (!User.perms.download) {return false;}
	var selected = FR.UI.grid.panel.getSelectionModel().getSelections();
	if (selected.length > 0) {
		if (selected.length > 10) {
			if (!cnfirm) {
				FR.UI.confirm(FR.T('Are you sure you want to start %1 downloads?').replace('%1', selected.length), function() {
					FR.actions.downloadSelected(true);
				}, function() {});
				return false;
			}
		}
		selected.each(function(sel) {
			FR.actions.downloadOneFile(FR.currentPath, sel.data.filename, sel.data.share_id, (selected.length > 1), openInBrowser);
		});
	}
}
FR.actions.downloadOneFile = function(path, filename, shareId, popup, openInBrowser, renameTo, additionalParameters, noIEhelp) {
	var pars = '&path='+encodeURIComponent(path);
	if (shareId) {
		pars += '&sid='+encodeURIComponent(shareId);
	} else {
		pars += '&filename='+encodeURIComponent(filename);
	}
	if (renameTo) {
		pars += '&renameTo='+encodeURIComponent(renameTo);
	}	if (additionalParameters) {
		pars += '&'+additionalParameters;
	}	var downloadURL = FR.myfilesBaseURL+'&page=download'+pars;
	if (openInBrowser) {
		downloadURL += '&open_in_browser=1';
	}
	if (popup || openInBrowser) {
		FR.UI.feedback(FR.T('Opening popup window... <br>Click <a href="%1" target="_blank">here</a> if the browser prevents it from opening.').replace('%1', downloadURL));
		window.setTimeout(function() {window.open(downloadURL);}, 50);
	} else {
		window.setTimeout(function() {
			document.location.href = downloadURL;
			if (Ext.isIE && !noIEhelp) {
				FR.UI.feedback(FR.T('Internet Explorer is blocking the download?<br>Click <a href="%1" target="_blank">here</a> to download the file without reloading this page.').replace('%1', downloadURL));
			}
		}, 50);
	}
}
FR.actions.downloadZipped = function() {
	var filename = '-';
	var renameTo = FR.T('Selected Files.zip');
	FR.UI.feedback(FR.T('Please wait while the selected files are being zipped...'));
	FR.actions.zipSelected(filename, 'forDownload=1', function(response) {
		if (response.rs) {
			FR.UI.feedback(response.msg+'<br>'+FR.T('Downloading zip file...'));
			FR.actions.downloadOneFile(FR.currentPath, filename, false, false, false, renameTo, 'afterZip=1', true);
		}
	});
}
FR.actions.deleteSelected = function(cnfirm) {
	var s = FR.UI.grid.getSelectedFiles();
	FR.deletingFiles = s;
	if (!cnfirm) {
		if (!FR.UI.delConfirmWin) {
			FR.UI.delConfirmWin = new Ext.Window({
				title:  FR.T('Confirmation'),
				layout : 'table',
				width: 380,	height: 130,
				closable : false,closeAction: 'close', resizable: false, border: false,
				html : '<div style="font-size:12px;margin:5px;margin-top:10px;" align="center">'+FR.T('Are you sure you want to delete the selected file(s)?')+'</div><table style="margin-top:5px;margin-bottom:5px;font-size:11px;color:gray" align="center"><tr><td><input type="checkbox" value="1" id="delConfWinPerm"></td><td><label for="delConfWinPerm">'+FR.T('Permanent deletion')+'</label></td></tr></table>',
				buttonAlign: 'center',
				buttons: [{
					text : FR.T('Ok'),
					handler: function() {
						FR.UI.delConfirmWin.hide();
						FR.actions.deleteSelected(true);
					}
				}, {
					text : FR.T('Cancel'),
					handler : function() {
						FR.UI.delConfirmWin.hide();
					}
				}]
			});
		}
		FR.UI.delConfirmWin.show();
		if (FR.currentSection != 'trash') {
			$('delConfWinPerm').checked = false;
			$('delConfWinPerm').readonly = false;
			$('delConfWinPerm').disabled = false;
		} else {
			$('delConfWinPerm').checked = true;
			$('delConfWinPerm').readonly = true;
			$('delConfWinPerm').disabled = true;
		}
		return true;
	}
	if (FR.currentSection == 'trash') {
		var pars = '';
		for(var i = 0, len = s.length; i < len; i++){
			pars += '&ids[]='+encodeURIComponent(s[i].uniqid);
		}
		var url = FR.baseURL+'/?module=trash&section=ajax&page=grid_action_delete';
	} else {
		var pars = 'path='+encodeURIComponent(FR.currentPath);
		for(var i = 0, len = s.length; i < len; i++){
			var filename = s[i].filename;
			pars += '&filenames[]='+encodeURIComponent(filename);
		}
		var url = FR.myfilesBaseURL+'&page=grid_action_delete';
		if ($('delConfWinPerm').checked) {
			url += '&permanent=true';
		}
	}
	FR.UI.showLoading(FR.T('Deleting file(s)...'));
	var myAjax = new Ajax.Request(
		url, {
		method: 'post',
		parameters: pars,
		onComplete: function(originalRequest){
			FR.UI.doneLoading();
			response = eval('('+originalRequest.responseText+')');
			if (response.rs) {
				FR.deletingFiles.each(function(aItem) {
					var store = FR.UI.grid.panel.getStore();
					store.remove(store.getById(aItem.id));
				});
				if (FR.currentSection != 'trash' && !$('delConfWinPerm').checked) {
					FR.UI.tree.trashNode.getUI().show();
				} else {
					if (response.trashCount < 1) {
						FR.UI.tree.trashNode.getUI().hide();
						FR.UI.tree.homeFolderNode.select();
					}
				}
				FR.deletingFiles = false;
				FR.UI.slidePane.collapse();
				FR.UI.reloadStatusBar();
			}
		FR.UI.feedback(response.msg);
		}
	});
}

FR.actions.restoreSelectedFromTrash = function() {
	var s = FR.UI.grid.getSelectedFiles();
	FR.restoringFiles = s;
	var pars = '';
	for (var i = 0, len = s.length; i < len; i++){
		pars += '&ids[]='+encodeURIComponent(s[i].uniqid);
	}
	FR.UI.showLoading(FR.T('Restoring file(s)...'));
	var url = FR.baseURL+'/?module=trash&section=ajax&page=grid_action_restore';
	var myAjax = new Ajax.Request(
		url, {
		method: 'post',
		parameters: pars,
		onComplete: function(originalRequest){
			FR.UI.doneLoading();
			response = eval('('+originalRequest.responseText+')');
			if (response.rs) {
				FR.restoringFiles.each(function(aItem) {
					var store = FR.UI.grid.panel.getStore();
					store.remove(store.getById(aItem.id));
				});
				if (response.trashCount < 1) {
					FR.UI.tree.trashNode.getUI().hide();
					if (FR.currentSection == 'trash') {
						FR.UI.tree.homeFolderNode.select();
					}
				}
				FR.UI.tree.root.eachChild(function(node) {if (node.loaded && node.expanded) {FR.UI.tree.reloadNode(node);}})
				FR.restoringFiles = false;
				FR.UI.slidePane.collapse();
			}
		FR.UI.feedback(response.msg);
		}
	});
	return true;
}

FR.actions.copySelected = function(folder) {
	if (folder) {
		if (FR.UI.tree.contextMenuVisible) {
			var treeNode = FR.UI.tree.contextMenuSelectedNode;
		} else {
			var treeNode = FR.UI.tree.currentSelectedNode;
		}
		FR.copyingFolderNode = treeNode;
		FR.copyingFolder = treeNode.getPath('pathname');
		FR.copyingFiles = false;
	} else {
		FR.copyingFilesFrom = FR.currentPath;
		FR.copyingFiles = FR.UI.grid.getSelectedFiles();
		FR.copyingFolder = false;
		FR.copyingFolderNode = false;
	}
	return true;
}
FR.actions.pasteCopied = function(treePath, folder) {
	if (!treePath) {
		if (FR.UI.tree.contextMenuVisible) {
			var treePath = FR.UI.tree.contextMenuSelectedNode.getPath('pathname');
			FR.copyToFolderNode = FR.UI.tree.contextMenuSelectedNode;
		} else {
			FR.copyToFolderNode = FR.UI.tree.currentSelectedNode;
			var treePath = FR.currentPath;
		}
	}
	var pars = 'path_to='+encodeURIComponent(treePath);
	if (folder) {
		pars += '&path_from='+encodeURIComponent(FR.copyingFolder);
		FR.UI.showLoading(FR.T('Copying folder...'), 1);
		var url = FR.myfilesBaseURL+'&page=tree_action_copy';
	} else {
		pars += '&path_from='+encodeURIComponent(FR.copyingFilesFrom);
		for (var i = 0, len = FR.copyingFiles.length; i < len; i++){
			var filename = FR.copyingFiles[i].filename;
			pars += '&filenames[]='+encodeURIComponent(filename);
		}
		FR.UI.showLoading(FR.T('Copying file(s)...'));
		var url = FR.myfilesBaseURL+'&page=grid_action_copy';
	}
	var myAjax = new Ajax.Request(
		url, {
		method: 'post',
		parameters: pars,
		onComplete: function(originalRequest){
			FR.UI.doneLoading();
			var folder = FR.copyingFolder;
			var treeNode = FR.copyToFolderNode;
			FR.copyingFolder = false;
			FR.copyingFolderNode = false;
			FR.copyingFiles = false;
			FR.copyToFolderNode = false;
			if (originalRequest.responseText.substring(0,1) != '{') {
				alert('Error: '+originalRequest.responseText);
				return false;
			}
			response = eval('('+originalRequest.responseText+')');
			if (response.rs) {
				if (folder) {
					FR.UI.tree.reloadNode(treeNode);
				} else {
					if (response.path == FR.currentPath) {
						FR.utils.reloadGrid();
					}
				}
				FR.UI.reloadStatusBar();
			}
			FR.UI.feedback(response.msg);
		}
	});
	return true;
}
FR.actions.deleteFolder = function(cnfirm, treeNode) {
	if (!treeNode) {
		if (FR.UI.tree.contextMenuVisible) {
			FR.deletingTreeNode = FR.UI.tree.contextMenuSelectedNode;
		} else {
			FR.deletingTreeNode = FR.UI.tree.currentSelectedNode;
		}
		var treeNode = FR.deletingTreeNode;
	}
	if (!cnfirm) {
		if (!FR.UI.folderDelConfirmWin) {
			FR.UI.folderDelConfirmWin = new Ext.Window({
				title:  FR.T('Confirmation'),
				layout : 'table',
				width: 430,	height: 130, border: false,
				closable : false, resizable: false, closeAction: 'close', stateful: false,
				html : '<div style="font-size:12px;margin:5px;margin-top:10px;">'+FR.T('Are you sure you want to delete the selected folder and all its contents?')+'</div><table style="margin-top:5px;margin-bottom:5px;font-size:11px;color:gray" align="center"><tr><td><input type="checkbox" value="1" id="folderDelConfWinPerm"></td><td><label for="folderDelConfWinPerm">'+FR.T('Permanent deletion')+'</label></td></tr></table>',
				buttonAlign: 'center',
				buttons: [{
					text : FR.T('Ok'),
					handler: function() {
						FR.UI.folderDelConfirmWin.hide();
						FR.actions.deleteFolder(true, treeNode);
					}
				}, {
					text : FR.T('Cancel'),
					handler : function() {
						FR.UI.folderDelConfirmWin.hide();
					}
				}]
			});
		}
		FR.UI.folderDelConfirmWin.show();
		$('folderDelConfWinPerm').checked = false;
		return true;
	}
	var pars = 'path='+encodeURIComponent(FR.deletingTreeNode.getPath('pathname'));
	var url = FR.myfilesBaseURL+'&page=tree_action_delete';
	if ($('folderDelConfWinPerm').checked) {
		url += '&permanent=true';
	}
	FR.UI.showLoading(FR.T('Deleting folder...'), 1);
	var myAjax = new Ajax.Request(
		url, {
		method: 'post',
		parameters: pars,
		onComplete: function(originalRequest){
			FR.UI.doneLoading();
			response = eval('('+originalRequest.responseText+')');
			if (response.rs) {
				var node = FR.deletingTreeNode;
				if (node == FR.UI.tree.currentSelectedNode) {
					FR.UI.tree.homeFolderNode.select();
				}
				if (node.attributes.section == 'myfiles') {
					FR.UI.reloadStatusBar();
				}
				if (FR.currentSection != 'trash') {
					FR.UI.tree.trashNode.getUI().show();
				}
				node.parentNode.removeChild(node);
				FR.deletingTreeNode = false;
			}
		FR.UI.feedback(response.msg);
		}
	});
}
FR.actions.newFolder = function(noContext) {
	FR.creatingNewFolder = true;
	var selectedTreeNode = FR.UI.tree.currentSelectedNode;
	if (!noContext && FR.UI.tree.contextMenuSelectedNode) {
		var selectedTreeNode = FR.UI.tree.contextMenuSelectedNode;
	}
	if (!selectedTreeNode) {return false;}
	selectedTreeNode.expand(false, true, function() {
		var node = selectedTreeNode.appendChild(new Ext.tree.AsyncTreeNode({
            text: FR.T('New folder'),  expanded: true,
			cls: 'album-node', iconCls: 'folder',
            allowDrag: true, allowDrop: true,
			pathname: 'New folder',
			section: selectedTreeNode.attributes.section,
			loader: selectedTreeNode.attributes.loader,
			perms: selectedTreeNode.attributes.perms,
			loaded: true
        }));
		node.attributes.loader.on('beforeload', function(loader, node){
			loader.baseParams.path = node.getPath('pathname');
		});
		setTimeout(function(){
			FR.UI.tree.treeEditor.editNode = node;
			FR.UI.tree.treeEditor.startEdit(node.ui.textNode);
		}, 10);
	});
}
FR.UI.grid.rename = function() {
	var selected = FR.UI.grid.panel.getSelectionModel().getSelections()[0];
	var rowIndex = selected.store.indexOfId(selected.id);
	if (FR.UI.grid.currentView == 'thumbnails') {
		FR.UI.prompt('', function(newValue) {
			if (newValue) {
				FR.actions.renameSelected(false, selected.data.filename, newValue);
			}
		}, function() {}, selected.data.filename);
	} else {
		FR.UI.grid.editGridFlag = true;
		FR.UI.grid.panel.startEditing(rowIndex, 0);
		FR.UI.grid.editGridFlag = false;
	}
}
FR.actions.renameSelected = function(edit, originalValue, newValue) {
	if (edit) {
		originalValue = edit.originalValue;
		newValue = edit.value;
		FR.currentlyRenaming = edit;
	}
	var pars = 'path='+encodeURIComponent(FR.currentPath);
	pars += '&oldfilename='+encodeURIComponent(originalValue);
	pars += '&newfilename='+encodeURIComponent(newValue);
	FR.UI.showLoading(FR.T('Renaming file...'));
	var myAjax = new Ajax.Request(
		FR.myfilesBaseURL+'&page=grid_action_rename', {
		method: 'post',
		parameters: pars,
		onComplete: function(originalRequest){
			FR.UI.doneLoading();
			response = eval('('+originalRequest.responseText+')');
			if (FR.UI.grid.currentView == 'thumbnails') {
				FR.UI.grid.load(FR.currentPath);
			} else {
				if (response.rs) {
					FR.currentlyRenaming.record.data.filename = FR.currentlyRenaming.value;
					if (FR.UI.slidePaneIsOpen) {
						FR.UI.showComments();
					}
				} else {
					FR.currentlyRenaming.record.data.filename = FR.currentlyRenaming.originalValue;
				}
				FR.currentlyRenaming.record.commit();
			}
			FR.UI.feedback(response.msg);
		}
	});
}
FR.actions.changeLocking = function(lock) {
	var selection = FR.UI.grid.panel.getSelectionModel().getSelections();
	var pars = 'path='+encodeURIComponent(FR.currentPath);
	pars += '&filename='+encodeURIComponent(selection[0].data.filename);
	FR.UI.showLoading(FR.T(lock?'Locking file...':'Unlocking file...'));
	var myAjax = new Ajax.Request(
		FR.baseURL+'/?module=versioning&section=ajax&page=locking&action='+(lock?'lock':'unlock'), {
		method: 'post',
		parameters: pars,
		onComplete: function(originalRequest){
			FR.UI.doneLoading();
			response = eval('('+originalRequest.responseText+')');
			FR.UI.feedback(response.msg);
		}
	});
}

FR.actions.zipSelected = function(zipName, additionalParameters, callback) {
	var s = FR.UI.grid.getSelectedFiles();
	if (!zipName) {
		FR.UI.prompt(FR.T('Please type a name for the zip file:'), function(text) {
			FR.actions.zipSelected(text, additionalParameters, callback);
		}, function() {}, FR.T('New Archive.zip'));
		return true;
	}
	var pars = 'path='+encodeURIComponent(FR.currentPath);
	for (var i = 0, len = s.length; i < len; i++){
		var filename = s[i].filename;
		pars += '&filenames[]='+encodeURIComponent(filename);
	}
	FR.actions.abstractZip(zipName, pars, additionalParameters, callback);
}
FR.actions.zipSelectedFolder = function(path, zipName, additionalParameters, callback) {
	if (!path) {
		if (FR.UI.tree.contextMenuVisible) {
			path = FR.UI.tree.contextMenuSelectedNode.getPath('pathname');
		} else {
			path = FR.currentPath;
		}
	}
	if (!zipName) {
		FR.UI.prompt(FR.T('Please type a name for the zip file:'), function(text) {
			FR.actions.zipSelectedFolder(path, text, additionalParameters, callback);
		}, function() {}, FR.T('New Archive.zip'));
		return true;
	}
	var pars = 'path='+encodeURIComponent(FR.currentPath);
	pars += '&folder='+encodeURIComponent(path);
	FR.actions.abstractZip(zipName, pars, additionalParameters, callback);
}
FR.actions.abstractZip = function(zipName, pars, additionalParameters, callback)  {
	pars += '&zipName='+encodeURIComponent(zipName);
	if (additionalParameters && additionalParameters.length > 0) {
		pars += '&'+additionalParameters;
	}
	FR.zipCallback = callback;
	FR.UI.showLoading(FR.T('Zipping file(s)...'));
	var myAjax = new Ajax.Request(
		FR.myfilesBaseURL+'&page=grid_action_zip', {
		method: 'post',
		parameters: pars,
		onComplete: function(originalRequest){
			FR.UI.doneLoading();
			response = eval('('+originalRequest.responseText+')');
			if (response.rs) {
				if (FR.zipCallback) {
					return FR.zipCallback(response);
				}
				FR.utils.reloadGrid();
				FR.UI.slidePane.collapse()
				FR.UI.reloadStatusBar();
			}
			FR.UI.feedback(response.msg);
			FR.zipCallback = false;
		}
	});
}
FR.actions.unzipSelected = function(folderName) {
	var s = FR.UI.grid.getSelectedFiles();
	if (!folderName) {
		FR.UI.prompt(FR.T('Please type a folder name for the zip contents:'), function(text) {
			FR.actions.unzipSelected(text);
		}, function() {}, FR.T('Unzipped Files'));
		return true;
	}
	var pars = 'path='+encodeURIComponent(FR.currentPath);
	pars += '&filename='+encodeURIComponent(FR.UI.grid.getOneSel().filename);
	pars += '&folderName='+encodeURIComponent(folderName);
	FR.UI.showLoading(FR.T('Unzipping file...'));
	var myAjax = new Ajax.Request(
		FR.myfilesBaseURL+'&page=grid_action_unzip', {
		method: 'post',
		parameters: pars,
		onComplete: function(originalRequest){
			FR.UI.doneLoading();
			response = eval('('+originalRequest.responseText+')');
			if (response.rs) {
				FR.UI.tree.reloadNode(FR.UI.tree.currentSelectedNode);
				FR.UI.reloadStatusBar();
			}
		FR.UI.feedback(response.msg);
		}
	});
	return true;
}
FR.actions.search = function(path) {
	if (!path) {
		if (FR.UI.tree.contextMenuVisible) {
			var path = FR.UI.tree.contextMenuSelectedNode.getPath('pathname');
		} else {
			var path = FR.currentPath;
		}
	}
	FR.searching = {path: path};
	if (!FR.UI.searchPopup) {
		FR.UI.searchPopup = FR.UI.popup({src:FR.baseURL+'/?module=search', width:500, height:350, title:FR.T('File Search')});
		Ext.get(FR.UI.searchPopup.getLayout().container.body.dom).mask(FR.T('Initializing search panel...'));
	} else {
		$(FR.UI.searchPopup.frameId).contentWindow.setLookInValue();
		FR.UI.searchPopup.show();
	}
}
FR.actions.share = function(treeNode) {
	if (FR.UI.tree.contextMenuVisible) {
		var treeNode = FR.UI.tree.contextMenuSelectedNode;
	} else {
		var treeNode = FR.UI.tree.currentSelectedNode;
	}
	var path = treeNode.getPath('pathname');
	FR.sharing = {
		path: path
	}
	FR.UI.tree.sharingNode = treeNode;
	var wTitle = FR.T('Sharing')+': "'+treeNode.text+'"';
	if (!FR.UI.sharingPopup) {
		FR.UI.sharingPopup = FR.UI.popup({src:FR.baseURL+'/?module=fileman_myfiles_share',
		post: [
			{name:'path', value: path}
		],
		width:500, height:300, title:wTitle});
		Ext.get(FR.UI.sharingPopup.getLayout().container.body.dom).mask(FR.T('Initializing sharing panel...'));
	} else {
		FR.UI.sharingPopup.setTitle(wTitle);
		FR.UI.sharingPopup.show();
		$(FR.UI.sharingPopup.frameId).contentWindow.getInfo();
	}
}

FR.actions.folderOptions = function() {
	if (FR.UI.tree.contextMenuVisible) {
		var treeNode = FR.UI.tree.contextMenuSelectedNode;
	} else {
		var treeNode = FR.UI.tree.currentSelectedNode;
	}
	var path = treeNode.getPath('pathname');
	FR.currentFolderOptionsPath = path;
	FR.UI.tree.sharingNode = treeNode;
	var wTitle = FR.T('Properties')+': "'+treeNode.attributes.text+'"';
	if (!FR.UI.folderOptionsPopup) {
		FR.UI.folderOptionsPopup = FR.UI.popup({src:FR.baseURL+'/?module=folder_options',
		post: [
			{name:'path', value: path}
		],
		width:300, height:300, title: wTitle});
		Ext.get(FR.UI.folderOptionsPopup.getLayout().container.body.dom).mask(FR.T('Initializing folder properties panel...'));
	} else {
		FR.UI.folderOptionsPopup.setTitle(wTitle);
		FR.UI.folderOptionsPopup.show();
		$(FR.UI.folderOptionsPopup.frameId).contentWindow.FR.getInfo();
	}
}

FR.actions.emailSelectedFiles = function() {
	FR.UI.persistentWindow({
		id: 'emailFiles',
		src: FR.baseURL+'/?module=email',
		width: 385,
		height: 395,
		title: FR.T('E-mail Files'),
		iconCls: 'headerIcons-email',
		initMsg: FR.T('Initializing e-mail panel...')
	});
}

FR.actions.WebLink = function(itemType, email) {
	FR.WebLinking = {type: itemType};
	if (itemType == 'folder') {
		if (FR.UI.tree.contextMenuVisible) {
			FR.WebLinking.item = FR.UI.tree.contextMenuSelectedNode;
		} else {
			FR.WebLinking.item = FR.UI.tree.currentSelectedNode;
		}
		FR.WebLinking.path = FR.WebLinking.item.getPath('pathname');
	} else {
		FR.WebLinking.item = FR.UI.grid.getOneSel();
		FR.WebLinking.path = FR.currentPath+'/'+FR.WebLinking.item.filename;
	}
	
	FR.UI.persistentWindow({
		id: 'webLink',
		src: FR.baseURL+'/?module=weblinks&itemType='+itemType+(email ? '&email=1' : ''),
		width: 395,
		height: 310,
		title: FR.T('Web Link'),
		iconCls: 'headerIcons-weblink',
		initMsg: FR.T('Initializing WebLink panel...'),
		email: email
	});
}

FR.actions.openVersions = function() {
	var sel = FR.UI.grid.panel.getSelectionModel().getSelections();
	FR.UI.popup({
		title: FR.T('File Versions'),
		width: 350,	height: 250,
		src: FR.baseURL+'/?module=versioning',
		post: [
			{name: 'filename', value: sel[0].data.filename},
			{name: 'path', value: FR.currentPath}
		],
		autoDestroy: true
	});
}
FR.actions.openMetadata = function() {
	var sel = FR.UI.grid.panel.getSelectionModel().getSelections();
	var pars = '&filename='+encodeURIComponent(sel[0].data.filename)+'&path='+encodeURIComponent(FR.currentPath);
	FR.UI.popup({
		title: FR.T('Metadata'),
		width: 400, height: 300,
		src: FR.baseURL+'/?module=metadata'+pars,
		autoDestroy: true
	});
}
FR.actions.openEmailImport = function () {
	if (!FR.UI.popImporterWindow) {
		FR.UI.popImporterWindow = FR.UI.popup({
			title: FR.T('Import e-mail attachments'),
			src: FR.baseURL+'/?module=pop_importer&page=index',
			width: 500, height: 350,
			resizable: true
		});
	}
	FR.UI.popImporterWindow.show();
}
FR.actions.customAction = function(opt) {
	var sel = FR.UI.grid.panel.getSelectionModel().getSelections();
	if (opt.popup) {
		FR.UI.popup({
			title: FR.T(opt.title),
			width: opt.popup.width || 500,
			height: opt.popup.height || 400,
			src: FR.baseURL+'/?module=custom_actions&action='+opt.actionName,
			post: [
				{name:'filename', value: sel[0].data.filename},
				{name:'path', value: FR.currentPath}
			],
			autoDestroy: true, resizable: true, maximizable: true
		});
	} else {
		eval(opt.fn);
	}
	return true;
}