function resolveUrl(url)
{
 return appPath + url;
}
function Grid1_onSortChange(sender, eventArgs)
{
 var desc = eventArgs.get_descending(); 
 var column = eventArgs.get_column(); 
 var columnIndexForIsFolder = 5;
 Grid1.sortMulti([columnIndexForIsFolder,!desc,column.ColumnNumber,desc]);
}
function resizeTree(sender, eventArgs)
{
 updateSizeBox();
 TreeviewRedraw();
}
function resizeDetails(sender, eventArgs)
{
 updateSizeBox();
 DetailsRedraw();
}
function resizeGrid(sender, eventArgs)
{
 updateSizeBox();
 GridRedraw(isSplitterLoaded);
 if (!isSplitterLoaded)
 {FixGridColumnWidths();Grid1.Render();}
}
function updateSizeBox()
{
 var res;
 var pane = Splitter1.get_panes()[0];
 res = pane.get_width()+'|';
 res = res+pane.get_height()+'|';
 pane = Splitter1.get_panes()[1].get_panes()[0];
 res = res+pane.get_width()+'|';
 res = res+pane.get_height()+'|';
 pane = Splitter1.get_panes()[1].get_panes()[1];
 res = res+pane.get_width()+'|';
 res = res+pane.get_height()+'|';
 res = res+lastSelectedNode+'|';
 res = res+lastSelectedItems+'|';
 document.getElementById(hidStuff).value = res;
}
var _MouseX = 0; var _MouseY = 0; 
var  CA_IE = document.all ? true : false; 
if (!CA_IE) document.captureEvents(Event.MOUSEMOVE); 
function GetMouseCoordinates(e)
{
  if (CA_IE) { _MouseX = event.clientX; _MouseY = event.clientY; } 
  else { _MouseX = e.pageX; _MouseY = e.pageY; } 
if (_MouseX < 0){ _MouseX = 0; } 
if (_MouseY < 0){ _MouseY = 0; } 
return true; 
} 
function LoadTreeViewContextMenu(sender, eventArgs) 
{
 GetMouseCoordinates(eventArgs.get_event());      
 ContextMenuCallBack.Callback(eventArgs.get_node().get_id()); 
}
function LoadGridContextMenu(sender, eventArgs) 
{
 if (sender.getSelectedItems().length == 0) {
  sender.select(eventArgs.get_item(), false);
 } else {
  if (lastSelectedItems[0] != eventArgs.get_item().getMember('EntryId').get_value()) {
   sender.select(eventArgs.get_item(), false);
  }
 }
 GetMouseCoordinates(eventArgs.get_event());
 var tvNode
 if (TreeView1.get_selectedNode()) {
  tvNode = TreeView1.get_selectedNode().get_id();
 } 
 else {
  tvNode = 'ent0';
 }
 var itms = sender.getSelectedItems();
 var ids = new Array();
 for(i=0;i<itms.length;i++)
 {
  ids[ids.length] = 'ent' + itms[i].getMember('EntryId').get_value();
 }
 ContextMenuCallBack.Callback(tvNode, ids); 
}
function OnCallBackError(sender, eventArgs)
{
}
function TreeViewNodeSelect(sender, eventArgs)
{
 if (lastSelectedNode != eventArgs.get_node().get_id()) {
  lastSelectedItems = null;
 }
 lastSelectedNode = eventArgs.get_node().get_id();
 GridRedraw(true);
 MenuCallBack.Callback(eventArgs.get_node().get_id()); 
 DetailsRedraw(true);
 updateSizeBox();
} 
function GridItemSelect(sender, eventArgs)
{
 if (autoSelect) return;
 var tvNode
 if (TreeView1.get_selectedNode()) {
  tvNode = TreeView1.get_selectedNode().get_id();
 } 
 else {
  tvNode = 'ent0';
 }
 var itms = new Array();
 itms = sender.getSelectedItems();
 lastSelectedItems = new Array();
 for(i=0;i<itms.length;i++)
 {
  lastSelectedItems[lastSelectedItems.length] = itms[i].getMember('EntryId').get_value();
 }
 if (itms.length==1) {
  DetailsCallBack.Callback('ent' + itms[0].getMember('EntryId').get_value());
  MenuCallBack.Callback(tvNode, 'ent' + itms[0].getMember('EntryId').get_value());
 }
 else {
  var ids = new Array();
  for(i=0;i<itms.length;i++)
  {
   ids[ids.length] = 'ent' + itms[i].getMember('EntryId').get_value();
  }
  selectionChanged = true;
  selection = ids;
  MenuCallBack.Callback(tvNode, ids);
 }
 updateSizeBox();
}
function MenuBeforeCallback(sender, eventArgs)
{
 selectionChanged = false;
}
function MenuCallbackComplete(sender, eventArgs)
{
 if (selectionChanged) {
  var tvNode
  if (TreeView1.get_selectedNode()) {
   tvNode = TreeView1.get_selectedNode().get_id();
  } 
  else {
   tvNode = 'ent0';
  }
  MenuCallBack.Callback(tvNode, selection);
 }
}
String.prototype.startsWith = function(s) { return this.indexOf(s)==0; }
function GridItemDoubleClick(sender, eventArgs)
{
 if (eventArgs.get_item().getMember('IsCollection').get_value()) {
  if (eventArgs.get_item().getMember('ControlToLoad').get_value()=='Bring2mind/DMX/ViewCollection.ascx') {
  TreeView1.findNodeById('ent' + eventArgs.get_item().getMember('EntryId').get_value()).expand();
  TreeView1.findNodeById('ent' + eventArgs.get_item().getMember('EntryId').get_value()).select();
  if (Grid1) { Grid1.dispose() };
  GridCallBack.Callback('ent' + eventArgs.get_item().getMember('EntryId').get_value()); 
  DetailsCallBack.Callback(eventArgs.get_item().getMember('EntryId').get_value());
   }
  else {
   window.location=baseUrl+baseUrlSuffix+'EntryId=' + eventArgs.get_item().getMember('EntryId').get_value();
   }
  }
 else {
  if (eventArgs.get_item().getMember('EntryType').get_value().startsWith('Hyperlink'))
  {
   window.open(appPath + 'DesktopModules/Bring2mind/DMX/Download.aspx?PortalId=' + portalId + '&EntryId=' + eventArgs.get_item().getMember('EntryId').get_value(), '', '');
  }
  if (eventArgs.get_item().getMember('EntryType').get_value().startsWith('File'))
  {
   window.open(baseUrl+baseUrlSuffix+'Command=Core_Download&EntryId=' + eventArgs.get_item().getMember('EntryId').get_value(),'','');
  }
 }
 updateSizeBox();
}
function CancelContextMenu(evt)
{
 evt = (evt == null) ? window.event : evt;
 evt.cancelBubble = true; 
 evt.returnValue = false; 
 return false; 
}
function GridItemsCommand(command, itemList)
{
 CommandCallBack.Callback(command, itemList);
 var tvNode
 if (TreeView1.get_selectedNode()) {
  tvNode = TreeView1.get_selectedNode().get_id();
 } 
 else {
  tvNode = 'ent0';
 }
 switch (command)
 {
  case 'CopyToCB' :
   MenuCallBack.Callback(tvNode, itemList);
   break;
  case 'CutToCB':
   MenuCallBack.Callback(tvNode, itemList);
   break;
  case 'RemoveFromCB':
   MenuCallBack.Callback(tvNode, itemList);
   break;
  case 'ClearCB' :
   MenuCallBack.Callback(tvNode, itemList);
   break;
  case 'Delete' :
   if (itemList==lastSelectedNode) {
    window.location=baseUrl;
   } else {
    var itms = new Array();
    itms = Grid1.getSelectedItems();
    for(i=0;i<itms.length;i++)
    {
     var nod;
     nod = TreeView1.findNodeById('ent'+itms[i].getMember('EntryId').get_value());
     if (nod) {nod.remove()}
    }
    MenuCallBack.Callback(tvNode, itemList);
    Grid1.dispose();
    GridCallBack.Callback(tvNode);
   }
   break;
  case 'Recover':
   if (lastSelectedNode == 'recyclebin') {
    MenuCallBack.Callback(tvNode, '');
    Grid1.dispose();
    GridCallBack.Callback(tvNode);
    DetailsCallBack.Callback('');
    lastSelectedItems = '';
   } else {
    window.location = baseUrl + baseUrlSuffix + 'EntryId=' + lastSelectedNode;
   }
   break;
  default :
   MenuCallBack.Callback(tvNode, itemList);
   Grid1.dispose();
   GridCallBack.Callback(tvNode);
 }
}
function GridItemsCommandFB(command, itemList)
{
 CommandWithFeedbackCallback.Callback(command, itemList);
 dlgFeedback.Show();
 var tvNode
 if (TreeView1.get_selectedNode()) {
  tvNode = TreeView1.get_selectedNode().get_id();
 } 
 else {
  tvNode = 'ent0';
 }
 switch (command)
 {
  case 'MailMe':
  case 'Move':
  default:
   MenuCallBack.Callback(tvNode, itemList);
   Grid1.dispose();
   GridCallBack.Callback(tvNode);
 }
}
var editEntryId
var editParentId
var lastSelectedNode
var lastSearchedNode
var lastSelectedItems
var selectionChanged
var selection
function editEntry(entryId, parentId, newVersion)
{
 if (entryId=='-1') {
  EditCallBack.Callback('-1', parentId);
 }
 else {
  EditCallBack.Callback(entryId, newVersion);
 }
 editEntryId=entryId;
 editParentId=parentId;
 Dialog1.Show();
}
function closedialog()
{
 Dialog1.close();
 Grid1.dispose();
 GridCallBack.Callback(editParentId); 
 TreeviewCallBack.Callback(editParentId);
 if (editEntryId!='-1')
 {
  DetailsCallBack.Callback(editEntryId); 
 }
}
function formatFileSize(size) {
 if (size > Math.pow(1024,3)) {
  return parseInt(size/Math.pow(1024,3))+' GB'; 
 }
 else {
  if (size > Math.pow(1024,2)) {
   return parseInt(size/Math.pow(1024,2))+' MB'; 
  }
  else {
   if (size > 1024) {
    return parseInt(size/1024)+' KB'; 
   }
   else {
    if (size==0) {
     return ''; 
    }
    else {
     return size+' B'; 
    }
   }
  }
 }
}
function openWord(file) {
 var objword = new ActiveXObject("Word.Application");
 if (objword != null) {
  objword.Visible = true;
  objword.Documents.Open(file);
 }
}
function openExcel(file) {
 var objExcel = new ActiveXObject("Excel.Application");
 if (objExcel != null) {
  objExcel.Visible = true;
  objExcel.workbooks.Open(file);
 }
}
function openPowerPoint(file) {
 var objPowerPoint = new ActiveXObject("PowerPoint.Application");
 if (objPowerPoint != null) {
  objPowerPoint.Visible = true;
  objPowerPoint.Presentations.Open(file);
 }
}
function openInfoPath(file) {
 var objInfoPath = new ActiveXObject("InfoPath.Application");
 if (objInfoPath != null) {
  objInfoPath.Visible = true;
  objInfoPath.XDocuments.NewFromSolution(file);
 }
}
function openPhotoshop(file) {
 var objPhotoshop = new ActiveXObject("Photoshop.Application");
 if (objPhotoshop != null) {
  objPhotoshop.visible = true;
  objPhotoshop.Open(file);
 }
}
function openDAVFolder(file) {
 if (oWebFolder != null) {
  oWebFolder.navigateFrame(file,'_blank');
 }
}
function handleWheel(grid, delta) {
 var pageSize = grid.PageSize;
 var offSet = grid.RecordOffset;
 var recordCount = grid.RecordCount;
 if (recordCount > pageSize) {
  var scrollBy = parseInt(delta * -1 * pageSize / 2);
  if (scrollBy + offSet > recordCount)
   grid.ScrollTo(recordCount - pageSize);
  else
   if (scrollBy + offSet < 0)
   grid.ScrollTo(0);
  else
   grid.ScrollBy(scrollBy);
 }
}
function wheel(e){
 if (!e) e = window.event;
 var t = e.target || e.srcElement;
 t = Grid1;
 var delta = 0;
 if (e.wheelDelta) {
  delta = e.wheelDelta/120; 
  if (window.opera) delta = -delta;
 } else 
  if (e.detail) delta = -e.detail/3;
 if (delta) handleWheel(t, delta);
 if (e.preventDefault) e.preventDefault();
  e.returnValue = false;
}
function enableMouseWheel(grid) {
 var dom = document.getElementById(grid + "_dom");
 if (!dom) return;
 if (dom.addEventListener) {
  dom.removeEventListener("DOMMouseScroll", wheel, false);
  dom.addEventListener("DOMMouseScroll", wheel, false);
 } else 
 dom.onmousewheel = wheel;
}
function enableSelectAll(grid) {
 var dom = document.getElementById(grid + "_dom");
 if (!dom) return;
 if (dom.addEventListener) { 
  dom.removeEventListener("onkeydown", selectAll, false);
  dom.addEventListener("onkeydown", selectAll, false);
 } else if (dom.attachEvent) {
  dom.detachEvent("onkeydown", selectAll);
  dom.attachEvent("onkeydown", selectAll);
 } else
  dome.onkeydown = selectAll;
}
function selectAll(e) {
 if (!e) e = window.event;
 var t = e.target || e.srcElement;
 if (e.ctrlKey && isKeyA(e.keyCode)) {
  t = Grid1;
  if (t.RecordCount > 1000) return false;
  for (var r = 0; r < t.RecordCount; r++) {
   var row = t.Table.GetRow(r);
   if (!row.Selected) t.Select(row, true);     
  }
  return false;
 }
 return true;
}
function isKeyA(keyCode) {
 return keyCode == 97 || keyCode == 65;
}
function openURLWindow(urlLink)
{
 var newwin=window.open('','newwin','resizable=no,width=800,height=100');
 newwin.document.open();
 newwin.document.write("");
 newwin.document.write("<table width=90% align=center><tr><td>");
 newwin.document.write(urlLink);
 newwin.document.write("<br><br><a href=# onClick=window.close();><b>Close</b></a>");
 newwin.document.write("</td></tr></table>");
 newwin.document.close();
 newwin.focus();
}
function TreeviewCallBackComplete(sender, eventArgs)
{
 TreeviewRedraw(false)
}
function TreeviewRedraw(checkSelection)
{
 var sizes = document.getElementById(hidStuff).value.split('|');
 document.getElementById("TreeContainer").style.width = sizes[0] + 'px';
 document.getElementById("TreeContainer").style.height = sizes[1] + 'px';
	if (TreeView1) {TreeView1.render();
 if (checkSelection && lastSelectedNode) {
			var TheNode = TreeView1.findNodeById(lastSelectedNode);
			if (TheNode) {
				TheNode.expand();
  				TheNode.select();
			}
		} 
 }
}
var autoSelect = false;
function GridCallBackComplete(sender, eventArgs)
{
 GridRedraw(false);
 FixGridColumnWidths();
 Grid1.render();
 if (lastSelectedItems) {
  autoSelect=true;
  for(i=0;i<lastSelectedItems.length;i++)
  {
   selectGridRow(lastSelectedItems[i]);
  }
  autoSelect=false;
 }
}
function selectGridRow(selectId)
{
 for(j=0;j<Grid1.get_table().getRowCount();j++)
 {
  if (Grid1.get_table().getRow(j).getMember('EntryId').get_value()==selectId)
  {
   Grid1.select(Grid1.get_table().getRow(j), true);
  }
 }
}
function GridRedraw(checkSelection) {
 var sizes = document.getElementById(hidStuff).value.split('|');
 GridCallBack.element.style.width = sizes[2] + 'px';
 if (CA_IE && document.compatMode=='CSS1Compat') {
  GridCallBack.element.style.height = (sizes[3] - 32) + 'px';
 } else {
  GridCallBack.element.style.height = sizes[3] + 'px';
 }
 if (checkSelection) {
  if (lastSelectedNode) {
   if (Grid1) {
   Grid1.dispose();
   GridCallBack.Callback(lastSelectedNode);
   }
  } else {
   FixGridColumnWidths();
   Grid1.render();
  }
 }
}
function FixGridColumnWidths()
{
 var i;
 var col;        
 var columns = Grid1.get_table().get_columns();        
 for(i = 0; i < columns.length; i++) {
  col = columns[i];
  if (!col.get_fixedWidth())
   col.set_width(0);
 }
}
function DetailsCallBackComplete(sender, eventArgs)
{
 DetailsRedraw(false)
}
function DetailsRedraw(checkSelection)
{
 var sizes = document.getElementById(hidStuff).value.split('|');
 DetailsCallBack.DomElement.style.width = sizes[4] + 'px';
 DetailsCallBack.DomElement.style.height = sizes[5] + 'px';
 if (checkSelection) {
  if (lastSelectedItems) {
  var selItems = lastSelectedItems;	
  DetailsCallBack.Callback(selItems);	
  } else {
   if (lastSelectedNode) {
    DetailsCallBack.Callback(lastSelectedNode);
   } else {
    TabStrip1.Render(); 
   }
  }
 }
}
function loadEvent()
{
 var sizes = document.getElementById(hidStuff).value.split('|');
 if (sizes[6].length>0)
 {if (sizes[6].indexOf('undefined')==-1){ lastSelectedNode = sizes[6];}}  
 if (sizes[7].length>0)
 { if (sizes[7].indexOf('undefined') == -1) { lastSelectedItems = sizes[7].split(','); } }  
}
function clearSearch() {
 txt1Search.value='';
 txt2Search.value='';
 txt3Search.value='';
 txt4Search.value='';
 txtRawSearch.value='';
 txtQuickSearch.value='';
 TabStrip2.selectTabById('tabQuickSearch');
}
function showSearch()
{
 if (lastSelectedNode!='searchresults') {lastSearchedNode = lastSelectedNode};
 switch (TabStrip2.getSelectedTab().get_value())
 {
  case 'regularsearch':
   var scope = '';
   for (i = 0 ; i < rblScope.length ; i++) {
    var el = rblScope[i];
    if (el.type == "radio" && el.checked) {
     scope=el.value;
     break;
    }
   }
   CommandCallBack.Callback('RegularSearch', 
    dd1Field.options[dd1Field.selectedIndex].value, dd1Selection.options[dd1Selection.selectedIndex].value, txt1Search.value, chk1Exact.checked,
    dd2Field.options[dd2Field.selectedIndex].value, dd2Selection.options[dd2Selection.selectedIndex].value, txt2Search.value, chk2Exact.checked, 
    dd3Field.options[dd3Field.selectedIndex].value, dd3Selection.options[dd3Selection.selectedIndex].value, txt3Search.value, chk3Exact.checked,
    dd4Field.options[dd4Field.selectedIndex].value, dd4Selection.options[dd4Selection.selectedIndex].value, txt4Search.value, chk4Exact.checked,
    ddCombination.options[ddCombination.selectedIndex].value, chkAllVersions.checked, scope, lastSearchedNode);
   break;
  case 'rawsearch':
   CommandCallBack.Callback('RawSearch', 
    txtRawSearch.value);
   break;
  default:
   var fields = '';
   for (i = 0 ; i < rblFields.length ; i++) {
    var el = rblFields[i];
    if (el.type == "radio" && el.checked) {
     fields=el.value;
     break;
    }
   }
   var scope = '';
   for (i = 0 ; i < rblScopeQ.length ; i++) {
    var el = rblScopeQ[i];
    if (el.type == "radio" && el.checked) {
     scope=el.value;
     break;
    }
   }
   CommandCallBack.Callback('QuickSearch', 
    txtQuickSearch.value, fields, scope, lastSearchedNode);
 }
 Grid1.dispose();
 setTimeout('GridCallBack.Callback(\'searchresults\');',1500);
 setTimeout('TreeView1.selectNodeById(\'searchresults\');', 1000);
 Dialog2.Close();
}
function checkvalue()
{
 alert(rblScope.length);
}
function GridLoad(sender, eventArgs)
{
 enableMouseWheel(grid1clientId);
 enableSelectAll(grid1clientId);
 isGridLoaded=true;
}
function SplitterLoad(sender, eventArgs)
{
 setTimeout('AfterSplitterLoad();',1500);
}
function AfterSplitterLoad()
{
 TreeviewRedraw(isPostBack);
 GridRedraw(isPostBack);
 DetailsRedraw(isPostBack);
 isSplitterLoaded=true;
}
function Dialog2_onShow()
{
 setTimeout('txtQuickSearch.focus();',500);
}
function captureKeys(eventArgs)
{
 eventArgs = eventArgs || window.event;
 kCode = eventArgs.keyCode || eventArgs.which;
 if (eventArgs.ctrlKey && kCode==70 || eventArgs.ctrlKey && eventArgs.shiftKey && kCode==70) {
  Dialog2.Show();
  eventArgs.cancelBubble = true; 
  eventArgs.returnValue = false;
 }
}
function dragDropNode(sender, eventArgs) {
 var draggedItemId = eventArgs.get_node().get_id();
 var targetItemId = eventArgs.get_newParentNode().get_id();
 GridItemsCommandFB('Move', draggedItemId + ',' + targetItemId);
 setTimeout('GridRedraw(false);', 1000);
}
function dragDropGridItem(sender, eventArgs) {
 var targetControl = eventArgs.get_targetControl().get_id();
 var draggedItem = eventArgs.get_item();
 var draggedItemId = 'ent'+draggedItem.getMember('EntryId').get_text();
 var targetItem = eventArgs.get_target();
 var targetItemId;
 if (endsWith(targetControl, 'Grid1')) {
  targetItemId = 'ent' + targetItem.getMember('EntryId').get_text();
 } else {
  targetItemId = targetItem.get_id();
 }
 if (targetItemId.substr(0, 3) == 'ent') {
  GridItemsCommandFB('Move', draggedItemId + ',' + targetItemId);
  setTimeout('GridRedraw(false);', 1000);
  if (draggedItem.getMember('EntryType').get_text() == 'Collection') {
   var drg = TreeView1.findNodeById(draggedItemId);
   var tr = TreeView1.findNodeById(targetItemId);
   if (drg) {
    drg.remove();
    if (tr) {
     tr.get_nodes().add(drg);
    }
   }
  }
 } else {
  alert(noPermission);
 }
}
function endsWith(testString, endingString) {
 if (endingString.length > testString.length) return false;
 return testString.indexOf(endingString) == (testString.length - endingString.length);
}

