
var divFileVistaControl;var divLeftPane,divRightPane,divPaneSeparator;var divToolbar,divFolderInfo,divGrid,divGridClick;var infoFolderImage,infoFolderName,infoSubfoldersText,infoFilesText,infoSize;var frameDownload;var separatorDrag;var language;var toolbar;var tree;var grid,nameColumn,groupColumn;var menus;var currentFolder,contextFolder,contextParentFolder;var controlUrl="";var controlLoadCompleteEvent=null;var controlDebug=false;var controlFullscreen=false;var controlUploadMethod="";var controlShowFileExtensions=false;var fctv=true;var FOLDERGROUP=1,FILEGROUP=2;function onControlLoad(){divFileVistaControl=document.getElementById("divFileVistaControl");addEvent(divFileVistaControl,"contextmenu",cancelEventExceptForTextInput);addEvent(divFileVistaControl,"selectstart",cancelEventExceptForTextInput);addEvent(divFileVistaControl,"dragstart",cancelEventExceptForTextInput);divLeftPane=document.getElementById("divLeftPane");divRightPane=document.getElementById("divRightPane");divPaneSeparator=document.getElementById("divPaneSeparator");divToolbar=document.getElementById("divToolbar");divGrid=document.getElementById("divGrid");divFolderInfo=document.getElementById("divFolderInfo");addEvent(divGrid,"contextmenu",onDivGridContextMenu);addEvent(divGrid,"mousedown",onDivGridMouseDown);addEvent(divGrid,"mouseup",onDivGridMouseUp);infoFolderImage=document.getElementById("infoFolderImage");infoFolderName=document.getElementById("infoFolderName");infoSubfoldersText=document.getElementById("infoSubfoldersText");infoFilesText=document.getElementById("infoFilesText");infoSize=document.getElementById("infoSize");frameDownload=document.getElementById("frameDownload");currentFolder=new FolderInfo();contextFolder=new FolderInfo();contextParentFolder=new FolderInfo();var paneSeparator=new PaneSeparator(divFileVistaControl,divLeftPane,divPaneSeparator,divRightPane,2);ModalDialog.iconClose=resolveControlUrl("images/close.png");ModalDialog.iconPrompt=resolveControlUrl("images/prompt.png");ModalDialog.parent=divLeftPane.parentNode;loadLanguage();}
function onControlResize(){var callback=function(element){var controlWidth=element.offsetWidth;var controlHeight=element.offsetHeight;if(controlWidth<550){percentageIndex=element.style.width.lastIndexOf("%");if(percentageIndex>0){var currentPercentage=(+element.style.width.substr(0,percentageIndex));if(currentPercentage>100)currentPercentage=100;element.style.width=550*currentPercentage/controlWidth+"%";if(element.offsetWidth<540)element.style.width="550px";}else
element.style.width="550px";controlWidth=550;}
if(controlHeight<400){percentageIndex=element.style.height.lastIndexOf("%");if(percentageIndex>0){var currentPercentage=(+element.style.height.substr(0,percentageIndex));if(currentPercentage>100)currentPercentage=100;element.style.height=400*currentPercentage/controlHeight+"%";if(element.offsetHeight<390)element.style.height="400px";}else
element.style.height="400px";controlHeight=400;}
var controlMargin=2;var internalWidth=controlWidth-(controlMargin*2);var internalHeight=controlHeight-(controlMargin*3);divLeftPane.parentNode.style.width=internalWidth+"px";divLeftPane.parentNode.style.height=internalHeight+controlMargin+"px";divLeftPane.style.height=internalHeight+"px";tree.setHeight(internalHeight);divPaneSeparator.style.height=internalHeight+"px";divRightPane.style.height=internalHeight+"px";var gridHeight=divRightPane.offsetHeight-divToolbar.offsetHeight-divFolderInfo.offsetHeight;divGrid.style.height=gridHeight+"px";divRightPane.style.width=(internalWidth-divLeftPane.offsetWidth-divPaneSeparator.offsetWidth)+"px";}
calculateDimensions(divFileVistaControl,callback);}
function onBrowserWindowResize(){var pageWidth=Viewport.getWidth()-4;var pageHeight=Viewport.getHeight()-4;divFileVistaControl.style.width=pageWidth+"px";divFileVistaControl.style.height=pageHeight+"px";onControlResize();}
function loadLanguage(){XmlRequest("POST",resolveControlUrl("filevista.asmx/GetLanguageFile"),"",onLanguageXmlComplete,onLanguageXmlError,controlDebug);}
function loadToolbar(){toolbar=new Toolbar();toolbar.setButtonSize(28,34);toolbar.onButtonClick=onButtonClick;toolbar.setImagesPath(resolveControlUrl("images/toolbar/"));var parameters;parameters="fileName="+encodeURIComponent("default.toolbar.xml");XmlRequest("POST",resolveControlUrl("filevista.asmx/GetDataFile"),parameters,onToolbarXmlComplete,onXmlError,controlDebug);}
function loadTree(){tree=new Tree();tree.setSignIcons(resolveControlUrl("images/plus.png"),resolveControlUrl("images/minus.png"));tree.setNodeIcons("F",resolveControlUrl("images/menu/folder.png"),resolveControlUrl("images/menu/openfolder.png"));tree.setNodeIcons("RF",resolveControlUrl("images/menu/rootfolder.png"));tree.setLoadingIcon(resolveControlUrl("images/loading.gif"));tree.onTreeNodeSelect=onTreeNodeSelect;tree.onTreeNodeExpand=onTreeNodeExpand;tree.onTreeNodeContextMenu=onTreeNodeContextMenu;tree.createRoot("The Root");tree.hideRoot=true;tree.render(divLeftPane);tree.setTitle(language.getString("200"));tree.textLoading=language.getString("209");XmlRequest("POST",resolveControlUrl("filevista.asmx/GetRootFolders"),"",function(xmlHttp){onTreeXmlComplete(xmlHttp,tree.root);},function(statusText){onTreeXmlError(statusText,tree.root);},controlDebug);}
function loadGrid(){grid=new Grid();grid.imgAscending.src=resolveControlUrl("images/ascending.png");grid.imgDescending.src=resolveControlUrl("images/descending.png");grid.setIconSize(16,16);grid.onColumnClick=onColumnClick;grid.onRowDoubleClick=onRowDoubleClick;grid.onRowContextMenu=onRowContextMenu;grid.onSelectionComplete=onSelectionComplete;grid.render(divGrid);}
function loadMenu(){Menu.imgPopup.src=resolveControlUrl("images/menu.png");Menu.imgPopup.width=5;Menu.imgPopup.height=9;Menu.imgPopupHover.src=resolveControlUrl("images/menuhover.png");Menu.imgPopupHover.width=5;Menu.imgPopupHover.height=9;Menu.iconsPath=resolveControlUrl("images/menu/");Menu.container=divLeftPane.parentNode;var parameters;parameters="fileName="+encodeURIComponent("default.menus.xml");XmlRequest("POST",resolveControlUrl("filevista.asmx/GetDataFile"),parameters,onMenusXmlComplete,onXmlError,controlDebug);}
function onLanguageXmlComplete(xmlHttp){var xmlDoc=xmlHttp.responseXML;var stringsNode=xmlDoc.getElementsByTagName("Strings")[0];var stringNodes=stringsNode.getElementsByTagName("String");language=new Language();for(var i=0;i<stringNodes.length;i++)
language.addString(stringNodes[i].getAttribute("key"),stringNodes[i].firstChild.nodeValue);ModalDialog.okButtonText=language.getString("220");ModalDialog.cancelButtonText=language.getString("221");ModalDialog.promptTitleText=language.getString("222");loadToolbar();}
function onToolbarXmlComplete(xmlHttp){var xmlDoc=xmlHttp.responseXML;var toolbarNode=xmlDoc.getElementsByTagName("Toolbar")[0];var items=toolbarNode.getElementsByTagName("Item");for(var i=0;i<items.length;i++){var command=items[i].getAttribute("command");if(command=="[Separator]")
toolbar.addSeparator();else{var toolbarButton=toolbar.addButton(command,language.getString(items[i].getAttribute("description")),items[i].getAttribute("image"));toolbarButton.parentPermissions=items[i].getAttribute("parentPermissions");toolbarButton.permissions=items[i].getAttribute("permissions");}}
toolbar.render(divToolbar);setToolbarState();toolbar.buttons["UpOneLevel"].disable();loadMenu();}
function onMenusXmlComplete(xmlHttp){var xmlDoc=xmlHttp.responseXML;menus=Menu.parseXML(xmlDoc,onMenuItemClick);loadGrid();loadTree();if(controlFullscreen){divFileVistaControl.style.position="absolute";divFileVistaControl.style.left="0px";divFileVistaControl.style.right="0px";onBrowserWindowResize();addEvent(window,"resize",onBrowserWindowResize);}
else{onControlResize();addEvent(window,"resize",onControlResize);}
divFileVistaControl.style.visibility="inherit";if(controlLoadCompleteEvent)controlLoadCompleteEvent();}
function onTreeXmlComplete(xmlHttp,treeNode){appBusy(false);var xmlDoc=xmlHttp.responseXML;if(checkResultXml(xmlDoc)){treeNode.hideLoadingNode();return;}
var folderNode=xmlDoc.getElementsByTagName("Folder")[0];var subnodes=folderNode.getElementsByTagName("Subfolder");for(var i=0;i<subnodes.length;i++){var childNode=treeNode.addChildNode(subnodes[i].getAttribute("name"),((subnodes[i].getAttribute("expandable")=="1")?true:false),((treeNode.id=="root")?"RF":"F"),subnodes[i].getAttribute("id"));var permissions=subnodes[i].getAttribute("permissions");if(permissions)
childNode.permissions=permissions;else
childNode.permissions=treeNode.permissions;}
treeNode.sortChildren();treeNode.loadChildren();if(treeNode==tree.root&&treeNode.childNodes.length>0){treeNode.childNodes[0].select();}}
function onTreeXmlError(statusText,treeNode){appBusy(false);treeNode.hideLoadingNode();alert(language.getString("301")+"\n\n"+statusText);}
function onGridXmlComplete(xmlHttp,treeNode){appBusy(false);var xmlDoc=xmlHttp.responseXML;if(checkResultXml(xmlDoc)){treeNode.hideLoadingNode();return;}
var sizeColumnIndex=2;var folderListNode=xmlDoc.getElementsByTagName("FolderList")[0];currentFolder.name=folderListNode.getAttribute("name");currentFolder.fullPath=folderListNode.getAttribute("fullPath");currentFolder.setRootFolderID(folderListNode.getAttribute("rootFolderID"));currentFolder.relativePath=folderListNode.getAttribute("relativePath");currentFolder.setPermission(folderListNode.getAttribute("permissions"));var selectTree=(folderListNode.getAttribute("selectTree")=="1");var folderSize=0;var treeNodeFirstLoad=!treeNode.loaded&&currentFolder.permission["Traverse"];if(treeNodeFirstLoad)treeNode.unloadChildren();grid.clear();groupColumn=grid.addColumn("Group","Number");groupColumn.hidden=true;var columnsNode=folderListNode.getElementsByTagName("Columns")[0];var columnNodes=columnsNode.getElementsByTagName("Column");for(var i=0;i<columnNodes.length;i++)
grid.addColumn(language.getString(columnNodes[i].getAttribute("text")),columnNodes[i].getAttribute("type"),(columnNodes[i].getAttribute("align")=="1"?true:false),columnNodes[i].getAttribute("format"),columnNodes[i].getAttribute("size"));nameColumn=grid.columns[1];grid.rowTitleColumn=nameColumn;if(!controlShowFileExtensions)
nameColumn.formatFunction=function(name,format,row){if(row.cells[groupColumn.index]!=FOLDERGROUP)
return getNameWithoutExtension(name);else
return name;};grid.columns[sizeColumnIndex].formatFunction=formatSize;grid.iconsPath=resolveControlUrl("images/menu/folder.png");var subfoldersNode=folderListNode.getElementsByTagName("Subfolders")[0];var subfolderNodes=subfoldersNode.getElementsByTagName("Subfolder");for(var j=0;j<subfolderNodes.length;j++){var cellArray=new Array(columnNodes.length+1);cellArray[groupColumn.index]=FOLDERGROUP;for(var i=1;i<cellArray.length;i++)
cellArray[i]=subfolderNodes[j].attributes[i-1].value;var subfolderRow=grid.addRow(cellArray,"");var permissions=subfolderNodes[j].getAttribute("permissions");if(permissions)
subfolderRow.permissions=permissions;else
subfolderRow.permissions=currentFolder.permissions;if(treeNodeFirstLoad){var childNode=treeNode.addChildNode(subfolderNodes[j].attributes[0].value,((subfolderNodes[j].getAttribute("expandable")=="1")?true:false),"F");childNode.permissions=subfolderRow.permissions;}}
if(treeNodeFirstLoad){treeNode.sortChildren();treeNode.loadChildren();}
treeNode.hideLoadingNode();grid.iconsPath=resolveControlUrl("images/fileicons/");var filesNode=folderListNode.getElementsByTagName("Files")[0];var fileNodes=filesNode.getElementsByTagName("File");for(var j=0;j<fileNodes.length;j++){var cellArray=new Array(columnNodes.length+1);var icon=fileNodes[j].attributes[0].value;cellArray[groupColumn.index]=FILEGROUP;for(var i=1;i<cellArray.length;i++)
cellArray[i]=fileNodes[j].attributes[i].value;grid.addRow(cellArray,icon);folderSize+=(+cellArray[sizeColumnIndex]);}
setToolbarState();if(selectTree)tree.selectNode(currentFolder.rootFolderID,currentFolder.relativePath);infoFolderName.firstChild.nodeValue=currentFolder.name;infoFolderName.title=currentFolder.fullPath;infoFolderImage.title=currentFolder.fullPath;infoSubfoldersText.innerHTML=language.getString("201","<b>"+subfolderNodes.length+"</b>");infoFilesText.innerHTML=language.getString("202","<b>"+fileNodes.length+"</b>");infoSize.firstChild.nodeValue=(folderSize==0)?formatSize("0"):formatSize(folderSize);divFolderInfo.style.visibility="inherit";grid.sort(groupColumn,nameColumn);grid.render(divGrid);}
function onGridXmlError(statusText,treeNode){appBusy(false);treeNode.hideLoadingNode();alert(language.getString("301")+"\n\n"+statusText);}
function onFileOperationXmlComplete(xmlHttp,operationFolder){appBusy(false);var xmlDoc=xmlHttp.responseXML;var onNextCommand=function(parameter){switch(operationFolder.sourceCommand){case"CompressAndDownload":var values=parameter.split("?");downloadZipFile(operationFolder.rootFolderID,operationFolder.relativePath,values[0],values[1]);break;case"Paste":var fromRootFolderID=operationFolder.sourceParameter2;var fromRelativePath=operationFolder.sourceParameter3;executeCommand("Refresh",tree.getNode(operationFolder.rootFolderID,operationFolder.relativePath));executeCommand("Refresh",tree.getNode(fromRootFolderID,fromRelativePath));break;default:executeCommand("Refresh",tree.getNode(operationFolder.rootFolderID,operationFolder.relativePath));}}
checkResultXml(xmlDoc,onNextCommand);}
function onXmlError(statusText){appBusy(false);alert(language.getString("301")+"\n\n"+statusText);}
function onLanguageXmlError(statusText){alert("There was a problem retrieving the language file:\n\n"+statusText);}
function onTreeNodeSelect(treeNode){if(treeNode.expandable)treeNode.showLoadingNode();exploreFolder(treeNode.getRootValue(),treeNode.getRelativePath(),false,treeNode);}
function onTreeNodeExpand(treeNode){if(treeNode.loaded)return;treeNode.showLoadingNode();var parameters;parameters="rootFolderID="+encodeURIComponent(treeNode.getRootValue());parameters+="&relativePath="+encodeURIComponent(treeNode.getRelativePath());XmlRequest("POST",resolveControlUrl("filevista.asmx/GetFolders"),parameters,function(xmlHttp){onTreeXmlComplete(xmlHttp,treeNode);},function(statusText){onTreeXmlError(statusText,treeNode);},controlDebug);appBusy(true);}
function onTreeNodeContextMenu(e,treeNode){if(treeNode.type=="F"){contextParentFolder.setPermission(treeNode.parent.permissions);contextFolder.setPermission(treeNode.permissions);setMenuState(menus[4],contextParentFolder,contextFolder);if(treeNode.expanded){menus[4].menuItems["Expand"].hide();menus[4].menuItems["Collapse"].show();menus[4].setDefault(menus[4].menuItems["Collapse"]);}else{menus[4].menuItems["Expand"].show();menus[4].menuItems["Collapse"].hide();menus[4].setDefault(menus[4].menuItems["Expand"]);if(treeNode.expandable)
menus[4].menuItems["Expand"].enable();else
menus[4].menuItems["Expand"].disable();}
if(Clipboard.command=="")
menus[4].menuItems["Paste"].disable();else if(contextFolder.permission["Paste"])
menus[4].menuItems["Paste"].enable();menus[4].popup(e,treeNode);}else if(treeNode.type=="RF"){contextFolder.setPermission(treeNode.permissions);setMenuState(menus[5],contextFolder,contextFolder);if(treeNode.expanded){menus[5].menuItems["Expand"].hide();menus[5].menuItems["Collapse"].show();menus[5].setDefault(menus[5].menuItems["Collapse"]);}else{menus[5].menuItems["Expand"].show();menus[5].menuItems["Collapse"].hide();menus[5].setDefault(menus[5].menuItems["Expand"]);if(treeNode.expandable)
menus[5].menuItems["Expand"].enable();else
menus[5].menuItems["Expand"].disable();}
if(Clipboard.command=="")
menus[5].menuItems["Paste"].disable();else if(contextFolder.permission["Paste"])
menus[5].menuItems["Paste"].enable();menus[5].popup(e,treeNode);}}
function onColumnClick(e,column){if(column.index==this.sortColumn.index){this.reverse();}else{this.sort(groupColumn,column,nameColumn);this.sortColumn=column;}
this.refresh();}
function onRowDoubleClick(e,row){if(row.cells[groupColumn.index]==FOLDERGROUP){if(currentFolder.permission["Traverse"])
executeCommand("Explore",row);}else{if(currentFolder.permission["Download"])
executeCommand("Download",row);}}
function onRowContextMenu(e,row){if(row.grid.selectedCount==1){if(row.cells[groupColumn.index]==FOLDERGROUP){if(row.permissions){contextFolder.setPermission(row.permissions);setMenuState(menus[1],currentFolder,contextFolder);}
else
setMenuState(menus[1],currentFolder,currentFolder);if(Clipboard.command=="")
menus[1].menuItems["Paste"].disable();else if(contextFolder.permission["Paste"])
menus[1].menuItems["Paste"].enable();menus[1].popup(e,row);}else{setMenuState(menus[0],currentFolder,currentFolder);var fileName=row.cells[nameColumn.index];var fileExtension=getExtension(fileName);if(fileExtension.toUpperCase()=="ZIP"){menus[0].menuItems["CompressAndDownload"].hide();menus[0].menuItems["Compress"].hide();menus[0].menuItems["ExtractAll"].show();menus[0].menuItems["ExtractHere"].show();}else{menus[0].menuItems["CompressAndDownload"].show();menus[0].menuItems["Compress"].show();menus[0].menuItems["ExtractAll"].hide();menus[0].menuItems["ExtractHere"].hide();}
menus[0].popup(e,row);}}else if(row.grid.selectedCount>1){var containsFolders=false;var combinedPermissions=-1;for(var key in grid.selectedRows){var row=grid.selectedRows[key];if(row.cells[groupColumn.index]==FOLDERGROUP){containsFolders=true;if(combinedPermissions==-1)
combinedPermissions=row.permissions;else
combinedPermissions&=row.permissions;}}
if(containsFolders){contextFolder.setPermission(combinedPermissions);setMenuState(menus[2],currentFolder,contextFolder);}else{setMenuState(menus[2],currentFolder);}
menus[2].popup(e,row);}}
function onDivGridContextMenu(e){if(!e)var e=window.event;var targetElement;if(e.target)targetElement=e.target;else if(e.srcElement)targetElement=e.srcElement;if(targetElement==divGrid&&!divGridClick){var row=grid.getSelectedLastRow();if(row)
return onRowContextMenu(e,row);else
return;}
setMenuState(menus[3],currentFolder,currentFolder);if(Clipboard.command=="")
menus[3].menuItems["Paste"].disable();else if(currentFolder.permission["Paste"])
menus[3].menuItems["Paste"].enable();grid.unselectAllRows();menus[3].popup(e);}
function onDivGridMouseDown(e){if(!e)var e=window.event;var targetElement;if(e.target)targetElement=e.target;else if(e.srcElement)targetElement=e.srcElement;divGridClick=(targetElement==divGrid);}
function onDivGridMouseUp(e){if(!e)var e=window.event;var targetElement;if(e.target)targetElement=e.target;else if(e.srcElement)targetElement=e.srcElement;if(divGridClick&&targetElement==divGrid)
grid.unselectAllRows();}
function onButtonClick(e,button){executeCommand(button.command,button);}
function onMenuItemClick(e,menuItem){executeCommand(menuItem.command,menuItem.menu.target);}
function onSelectionComplete(e){var downloadButtonState=false;var downloadCommand="Download";if(grid.selectedCount==1){var row=grid.getSelectedFirstRow();if(row.cells[groupColumn.index]==FOLDERGROUP){contextFolder.setPermission(row.permissions);downloadButtonState=currentFolder.permission["Download"]&&contextFolder.permission["Traverse"]&&contextFolder.permission["List"];downloadCommand="CompressAndDownload";}else
downloadButtonState=currentFolder.permission["Download"];}else if(grid.selectedCount>1){var containsFolders=false;var combinedPermissions=-1;for(var key in grid.selectedRows){var row=grid.selectedRows[key];if(row.cells[groupColumn.index]==FOLDERGROUP){containsFolders=true;if(combinedPermissions==-1)
combinedPermissions=row.permissions;else
combinedPermissions&=row.permissions;}}
if(containsFolders){contextFolder.setPermission(combinedPermissions);downloadButtonState=currentFolder.permission["Download"]&&contextFolder.permission["Traverse"]&&contextFolder.permission["List"];}else{downloadButtonState=currentFolder.permission["Download"];}
downloadCommand="CompressAndDownload";}
toolbar.buttons["Download"].command=downloadCommand;if(downloadButtonState)
toolbar.buttons["Download"].enable();else
toolbar.buttons["Download"].disable();}
function executeCommand(command,parameter){switch(command){case"UpOneLevel":var re,match;var relativePath;re=new RegExp("(.+)(/|\\\\)(.+)$");match=re.exec(currentFolder.relativePath);relativePath=match?match[1]:"";exploreFolder(currentFolder.rootFolderID,relativePath,true);break;case"Refresh":var refreshCurrentFolder=true;if(parameter!=undefined&&parameter.isTreeNode){var treeNode=parameter;var operationFolder=new OperationFolder();operationFolder.rootFolderID=treeNode.getRootValue();operationFolder.relativePath=treeNode.getRelativePath();var isTreeNodeCurrentFolder=(currentFolder.rootFolderID==operationFolder.rootFolderID&&currentFolder.relativePath==operationFolder.relativePath);if(!isTreeNodeCurrentFolder){refreshCurrentFolder=false;var folderToRefresh=new FolderInfo();folderToRefresh.setPermission(treeNode.permissions);if(folderToRefresh.permission["Traverse"]){treeNode.unloadChildren();onTreeNodeExpand(treeNode);}}}
if(refreshCurrentFolder){var currentTreeNode=tree.getNode(currentFolder.rootFolderID,currentFolder.relativePath);currentTreeNode.loaded=false;exploreFolder(currentFolder.rootFolderID,currentFolder.relativePath,false,currentTreeNode,true);}
break;case"SelectAll":grid.selectAllRows();break;case"SelectNone":grid.unselectAllRows();break;case"InvertSelection":grid.invertSelectedRows();break;case"Expand":var treeNode=parameter;treeNode.expand();break;case"Collapse":var treeNode=parameter;treeNode.collapse();break;case"NewFolder":var suggestedName=language.getString("211");var operationFolder=new OperationFolder();if(parameter==undefined){operationFolder.rootFolderID=currentFolder.rootFolderID;operationFolder.relativePath=currentFolder.relativePath;}else if(parameter.isRow){var row=parameter;var relativePath=currentFolder.relativePath;if(relativePath!="")relativePath+="/";relativePath+=row.cells[nameColumn.index];operationFolder.rootFolderID=currentFolder.rootFolderID;operationFolder.relativePath=relativePath;}else if(parameter.isTreeNode){var treeNode=parameter;operationFolder.rootFolderID=treeNode.getRootValue();operationFolder.relativePath=treeNode.getRelativePath();}else{operationFolder.rootFolderID=currentFolder.rootFolderID;operationFolder.relativePath=currentFolder.relativePath;}
var validateFunction=function(input){input=fileNameTrim(input);if(input=="")
return false;else if(!isFileNameValid(input)){alert(language.getString("206")+"\n\n\t\t \\ / : * ? \" < > |");return false;}else
return true;}
var returnFunction=function(input){if(input)
fileOperation(command,input,operationFolder);}
ModalDialog.prompt(language.getString("210"),suggestedName,returnFunction,validateFunction);break;case"Explore":if(parameter.isRow){var row=parameter;var relativePath=currentFolder.relativePath;if(relativePath!="")relativePath+="/";relativePath+=row.cells[nameColumn.index];exploreFolder(currentFolder.rootFolderID,relativePath,true);}else if(parameter.isTreeNode){var treeNode=parameter;treeNode.select();if(treeNode.loaded)treeNode.expand();}
break;case"Download":var row;if(parameter.isRow)
row=parameter;else
row=grid.getSelectedFirstRow();var fileName=row.cells[nameColumn.index];downloadFile(currentFolder.rootFolderID,currentFolder.relativePath,fileName);break;case"Cut":case"Copy":var operationFolder=new OperationFolder();var selection;if(parameter.isRow){var row=parameter;selection=getSelectedItemNames();operationFolder.rootFolderID=currentFolder.rootFolderID;operationFolder.relativePath=currentFolder.relativePath;}else if(parameter.isTreeNode){var treeNode=parameter;selection=treeNode.text;operationFolder.rootFolderID=treeNode.getRootValue();operationFolder.relativePath=treeNode.parent.getRelativePath();}
Clipboard.command=command;Clipboard.rootFolderID=operationFolder.rootFolderID;Clipboard.relativePath=operationFolder.relativePath;Clipboard.itemNames=selection;break;case"Paste":var operationFolder=new OperationFolder();operationFolder.sourceCommand=command;operationFolder.sourceParameter=parameter;operationFolder.sourceParameter2=Clipboard.rootFolderID;operationFolder.sourceParameter3=Clipboard.relativePath;if(parameter==undefined){operationFolder.rootFolderID=currentFolder.rootFolderID;operationFolder.relativePath=currentFolder.relativePath;}else if(parameter.isRow){var row=parameter;var relativePath=currentFolder.relativePath;if(relativePath!="")relativePath+="/";relativePath+=row.cells[nameColumn.index];operationFolder.rootFolderID=currentFolder.rootFolderID;operationFolder.relativePath=relativePath;}else if(parameter.isTreeNode){var treeNode=parameter;operationFolder.rootFolderID=treeNode.getRootValue();operationFolder.relativePath=treeNode.getRelativePath();}
fileOperation("Paste",Clipboard.toString(),operationFolder);if(Clipboard.command=="Cut"){Clipboard.clear();}
break;case"Delete":var operationFolder=new OperationFolder();operationFolder.sourceCommand=command;operationFolder.sourceParameter=parameter;var selection,selectionCount;if(parameter.isRow){var row=parameter;selection=getSelectedItemNames();operationFolder.rootFolderID=currentFolder.rootFolderID;operationFolder.relativePath=currentFolder.relativePath;selectionCount=grid.selectedCount;}else if(parameter.isTreeNode){var treeNode=parameter;selection=treeNode.text;operationFolder.rootFolderID=treeNode.getRootValue();operationFolder.relativePath=treeNode.parent.getRelativePath();selectionCount=1;}
var text;if(selectionCount==1)
text=language.getString("203",selection);else if(grid.selectedCount>1)
text=language.getString("204",grid.selectedCount);if(confirm(text))
fileOperation(command,selection,operationFolder);break;case"Rename":var operationFolder=new OperationFolder();var selection,suggestedName,oldName;var isFolder;if(parameter.isRow){var row=parameter;oldName=row.cells[nameColumn.index];suggestedName=oldName;operationFolder.rootFolderID=currentFolder.rootFolderID;operationFolder.relativePath=currentFolder.relativePath;isFolder=(row.cells[groupColumn.index]==FOLDERGROUP);}else if(parameter.isTreeNode){var treeNode=parameter;oldName=treeNode.text;suggestedName=oldName;operationFolder.rootFolderID=treeNode.getRootValue();operationFolder.relativePath=treeNode.parent.getRelativePath();isFolder=true;}
var extension="";var dotIndex=suggestedName.lastIndexOf(".");var selectionEnd=suggestedName.length;if(!isFolder&&dotIndex>0){if(controlShowFileExtensions)
selectionEnd=dotIndex;else{extension=suggestedName.substr(dotIndex,suggestedName.length);suggestedName=suggestedName.substr(0,dotIndex);selectionEnd=suggestedName.length;}}
var validateFunction=function(input){input=fileNameTrim(input);if(input==""||input==suggestedName)
return false;else if(!isFileNameValid(input)){alert(language.getString("206")+"\n\n\t\t \\ / : * ? \" < > |");return false;}else
return true;}
var returnFunction=function(input){if(input){if(!controlShowFileExtensions)input+=extension;fileOperation(command,oldName+"?"+input,operationFolder);}}
ModalDialog.prompt(language.getString("205"),suggestedName,returnFunction,validateFunction,false,0,selectionEnd);break;case"Compress":var operationFolder=new OperationFolder();var selection,suggestedName;if(parameter.isRow){var row=parameter;selection=getSelectedItemNames();suggestedName=suggestZipFileName(row.cells[nameColumn.index]);operationFolder.rootFolderID=currentFolder.rootFolderID;operationFolder.relativePath=currentFolder.relativePath;}else if(parameter.isTreeNode){var treeNode=parameter;selection=treeNode.text;suggestedName=suggestZipFileName(treeNode.text);operationFolder.rootFolderID=treeNode.getRootValue();operationFolder.relativePath=treeNode.parent.getRelativePath();}
var extension="";var dotIndex=suggestedName.lastIndexOf(".");var selectionEnd=suggestedName.length;if(dotIndex>0){if(controlShowFileExtensions)
selectionEnd=dotIndex;else{extension=suggestedName.substr(dotIndex,suggestedName.length);suggestedName=suggestedName.substr(0,dotIndex);selectionEnd=suggestedName.length;}}
var validateFunction=function(input){input=fileNameTrim(input);if(input=="")
return false;else if(!isFileNameValid(input)){alert(language.getString("206")+"\n\n\t\t \\ / : * ? \" < > |");return false;}else
return true;}
var returnFunction=function(input){if(input){if(!controlShowFileExtensions)input+=extension;fileOperation(command,input+"?"+selection,operationFolder);}}
ModalDialog.prompt(language.getString("207"),suggestedName,returnFunction,validateFunction,false,0,selectionEnd);break;case"CompressAndDownload":var operationFolder=new OperationFolder();operationFolder.sourceCommand=command;operationFolder.sourceParameter=parameter;var selection,suggestedName;if(parameter.isRow){var row=parameter;selection=getSelectedItemNames();suggestedName=suggestZipFileName(row.cells[nameColumn.index]);operationFolder.rootFolderID=currentFolder.rootFolderID;operationFolder.relativePath=currentFolder.relativePath;}else if(parameter.isTreeNode){var treeNode=parameter;selection=treeNode.text;suggestedName=suggestZipFileName(treeNode.text);operationFolder.rootFolderID=treeNode.getRootValue();operationFolder.relativePath=treeNode.parent.getRelativePath();}else{var row=grid.getSelectedLastRow();selection=getSelectedItemNames();suggestedName=suggestZipFileName(row.cells[nameColumn.index]);operationFolder.rootFolderID=currentFolder.rootFolderID;operationFolder.relativePath=currentFolder.relativePath;}
fileOperation(command,suggestedName+"?"+selection,operationFolder);break;case"ExtractAll":var zipName=grid.getSelectedFirstRow().cells[nameColumn.index];var suggestedName;suggestedName=getNameWithoutExtension(zipName);var validateFunction=function(input){input=fileNameTrim(input);if(input=="")
return false;else if(!isFileNameValid(input)){alert(language.getString("206")+"\n\n\t\t \\ / : * ? \" < > |");return false;}else
return true;}
var returnFunction=function(input){if(input)
fileOperation(command,zipName+"?"+input,currentFolder);}
ModalDialog.prompt(language.getString("208"),suggestedName,returnFunction,validateFunction);break;case"ExtractHere":var zipName=grid.getSelectedFirstRow().cells[nameColumn.index];fileOperation("ExtractAll",zipName+"?",currentFolder);break;case"Upload":var operationFolder=new OperationFolder();var refresh;if(parameter==undefined){operationFolder.rootFolderID=currentFolder.rootFolderID;operationFolder.relativePath=currentFolder.relativePath;refresh="1";}else if(parameter.isRow){var row=parameter;var relativePath=currentFolder.relativePath;if(relativePath!="")relativePath+="/";relativePath+=row.cells[nameColumn.index];operationFolder.rootFolderID=currentFolder.rootFolderID;operationFolder.relativePath=relativePath;refresh="0";}else if(parameter.isTreeNode){var treeNode=parameter;operationFolder.rootFolderID=treeNode.getRootValue();operationFolder.relativePath=treeNode.getRelativePath();refresh="0";}else{operationFolder.rootFolderID=currentFolder.rootFolderID;operationFolder.relativePath=currentFolder.relativePath;refresh="1";}
var parameters;parameters="?rootFolderID="+encodeURIComponent(operationFolder.rootFolderID);parameters+="&relativePath="+encodeURIComponent(operationFolder.relativePath);parameters+="&refresh="+encodeURIComponent(refresh);ModalDialog.show(resolveControlUrl("upload.aspx")+parameters,500,280,language.getString("103"));break;case"OpenWithWebBrowser":var row=(getClassName(parameter)=="Row")?parameter:grid.getSelectedFirstRow();var fileName=row.cells[nameColumn.index];downloadFile(currentFolder.rootFolderID,currentFolder.relativePath,fileName,true);break;}}
function exploreFolder(rootFolderID,relativePath,selectTree,treeNode,isRefresh){if(!treeNode)treeNode=tree.getNode(rootFolderID,relativePath);var parameters;parameters="rootFolderID="+encodeURIComponent(rootFolderID);parameters+="&relativePath="+encodeURIComponent(relativePath);parameters+="&selectTree="+(selectTree?"1":"0");parameters+="&isRefresh="+(isRefresh?"1":"0");XmlRequest("POST",resolveControlUrl("filevista.asmx/GetList"),parameters,function(xmlHttp){onGridXmlComplete(xmlHttp,treeNode);},function(statusText){onGridXmlError(statusText,treeNode);},controlDebug);appBusy(true);}
function fileOperation(command,commandData,operationFolder){var parameters;parameters="command="+encodeURIComponent(command);parameters+="&rootFolderID="+encodeURIComponent(operationFolder.rootFolderID);parameters+="&relativePath="+encodeURIComponent(operationFolder.relativePath);parameters+="&commandData="+encodeURIComponent(commandData);XmlRequest("POST",resolveControlUrl("filevista.asmx/FileOperation"),parameters,function(xmlHttp){onFileOperationXmlComplete(xmlHttp,operationFolder);},onXmlError,controlDebug);appBusy(true);}
function downloadFile(rootFolderID,relativePath,fileName,inline,temporary,cancel,downloadFileName){var page;var parameters="";page=resolveControlUrl("download.ashx");if(inline)parameters="inline=1&";if(temporary)parameters="temporary=1&";if(cancel)parameters+="cancel=1&";parameters+="rootFolderID="+encodeURIComponent(rootFolderID);parameters+="&relativePath="+encodeURIComponent(relativePath);parameters+="&fileName="+encodeURIComponent(fileName);if(downloadFileName)parameters+="&downloadFileName="+encodeURIComponent(downloadFileName);page+="?"+parameters;if(inline)
window.open(page,"_blank");else
frameDownload.src=page;}
function appBusy(isBusy){if(isBusy){divFileVistaControl.style.cursor="progress";if(grid.table)grid.table.style.cursor="progress";}else{divFileVistaControl.style.cursor="default";if(grid.table)grid.table.style.cursor="default";}}
function getSelectedItemNames(){var strBuffer=new StringBuffer;strBuffer.separator="|";for(var key in grid.selectedRows)
strBuffer.writeToken(grid.selectedRows[key].cells[nameColumn.index]);return strBuffer.toString();}
function OperationFolder(){this.rootFolderID=-1;this.relativePath="";this.sourceCommand="";this.sourceParameter="";}
function FolderInfo(){this.name="";this.fullPath="";this.rootFolderID="";this.previousRootFolderID="";this.relativePath="";this.permission=new Object();this.permissions=-1;this.previousPermissions=-1;}
FolderInfo.prototype.setRootFolderID=function(rootFolderID){this.previousRootFolderID=this.rootFolderID;this.rootFolderID=rootFolderID;}
FolderInfo.prototype.setPermission=function(permissions){this.previousPermissions=this.permissions;this.permissions=(+permissions);if(this.permissions==this.previousPermissions)
return false;var permissionConstants=[["Traverse",1],["List",2],["Create",4],["Delete",8],["Rename",16],["Edit",32],["Upload",64],["Download",128],["Compress",256],["Extract",512],["Cut",1024],["Copy",2048],["Paste",4096]];for(var i=0;i<permissionConstants.length;i++)
this.permission[permissionConstants[i][0]]=((this.permissions&permissionConstants[i][1])==permissionConstants[i][1]);return true;}
function Clipboard(){}
Clipboard.command="";Clipboard.rootFolderID=0;Clipboard.relativePath="";Clipboard.itemNames="";Clipboard.clear=function(){Clipboard.command="";Clipboard.rootFolderID=0;Clipboard.relativePath="";Clipboard.itemNames="";}
Clipboard.toString=function(){var str;str=Clipboard.command;str+="?"+Clipboard.rootFolderID;str+="?"+Clipboard.relativePath;str+="?"+Clipboard.itemNames;return str;}
function setMenuState(menu,parentFolderInfo,folderInfo){if(parentFolderInfo&&folderInfo&&menu.currentParentPermissions==parentFolderInfo.permissions&&menu.currentPermissions==folderInfo.permissions)
return;menu.currentParentPermissions=parentFolderInfo?parentFolderInfo.permissions:-1;menu.currentPermissions=folderInfo?folderInfo.permissions:-1;for(var i=0;i<menu.items.length;i++){var menuItem=menu.items[i];if(menuItem.isSeparator)continue;var enable=true;if(menuItem.parentPermissions&&parentFolderInfo){var permissionStrings=menuItem.parentPermissions.split(",");for(var j=0;j<permissionStrings.length;j++){enable=parentFolderInfo.permission[permissionStrings[j]];if(!enable)break;}}
if(enable&&menuItem.permissions&&folderInfo){var permissionStrings=menuItem.permissions.split(",");for(var j=0;j<permissionStrings.length;j++){enable=folderInfo.permission[permissionStrings[j]];if(!enable)break;}}
if(enable)
menuItem.enable();else
menuItem.disable();if(menuItem.submenu)
setMenuState(menuItem.submenu,parentFolderInfo,folderInfo);}}
function setToolbarState(){for(var i=0;i<toolbar.items.length;i++){var toolbarButton=toolbar.items[i];if(toolbarButton.parentPermissions){var permissionStrings=toolbarButton.parentPermissions.split(",");var enable;for(var j=0;j<permissionStrings.length;j++){enable=currentFolder.permission[permissionStrings[j]];if(!enable)break;}
if(enable)
toolbarButton.enable();else
toolbarButton.disable();}}
if(currentFolder.relativePath=="")
toolbar.buttons["UpOneLevel"].disable();else
toolbar.buttons["UpOneLevel"].enable();toolbar.buttons["Download"].disable();}
function StringBuffer(){this.text=new Array();this.separator="";this.write=function(str){this.text[this.text.length]=str;}
this.writeln=function(str){this.text[this.text.length]=str+"\n";}
this.writeToken=function(str){if(this.text.length>0)
this.text[this.text.length]=this.separator+str;else
this.text[this.text.length]=str;}
this.toString=function(){return this.text.join("");}
this.clear=function(){delete this.text;this.text=null;this.text=new Array;}}
function isFileNameValid(fileName){var re=/[\/:\*\?"<>|\\]/;return!re.test(fileName);}
function fileNameTrim(s){while((s.substring(0,1)==' ')||(s.substring(0,1)=='.')||(s.substring(0,1)=='\n')||(s.substring(0,1)=='\r'))
s=s.substring(1,s.length);while((s.substring(s.length-1,s.length)==' ')||(s.substring(s.length-1,s.length)=='.')||(s.substring(s.length-1,s.length)=='\n')||(s.substring(s.length-1,s.length)=='\r'))
s=s.substring(0,s.length-1);return s;}
function suggestZipFileName(fileName){var suggestedName;var extension="";var re,match;var fileIndex;re=/(\.\w+)$/;match=re.exec(fileName);if(match){extension=match[1].toLowerCase();fileName=fileName.replace(re,extension);}
if(extension=="")
suggestedName=fileName+".zip";else if(extension==".zip"){re=/\((\d+)\)\.zip$/;match=re.exec(fileName);fileIndex=match?parseInt(match[1]):0;fileIndex++;if(fileIndex==1)
suggestedName=fileName.replace(/\.zip$/," ("+fileIndex+").zip");else
suggestedName=fileName.replace(re," ("+fileIndex+").zip");}
else
suggestedName=fileName.replace(re,".zip")
return suggestedName;}
function resolveControlUrl(url){return controlUrl+url;}
function checkResultXml(xmlDoc,onNextCommand){var resultNode=xmlDoc.getElementsByTagName("Result")[0];if(!resultNode)return false;var error,message,command;error=(+resultNode.getAttribute("error"));message=resultNode.getAttribute("message");command=resultNode.getAttribute("command");parameter=resultNode.getAttribute("parameter");if(error==0){if(command=="RefreshPage"){window.location.reload(true);return true;}
if(onNextCommand)
onNextCommand(parameter);if(message)alert(message);return false;}else{if(message)alert(language.getString("300")+"\n\n"+message);return true;}}
function downloadZipFile(rootFolderID,relativePath,fileName,downloadFileName){var validateFunction=function(input){return true;}
var returnFunction=function(input){var cancel=(input==null);downloadFile(rootFolderID,relativePath,fileName,false,true,cancel,downloadFileName);}
var promptFileName;if(!controlShowFileExtensions)
promptFileName=getNameWithoutExtension(downloadFileName);else
promptFileName=downloadFileName;ModalDialog.prompt(language.getString("313"),promptFileName,returnFunction,validateFunction,true);}