﻿function resolveUrl(url)
{
 return appPath + url;
}

function Grid1_onSortChange(sender, eventArgs)
{
 // alert('Grid1_onSortChange');
 var desc = eventArgs.get_descending(); 
 var column = eventArgs.get_column(); 
 var columnIndexForIsFolder = 5;
 Grid1.sortMulti([columnIndexForIsFolder,!desc,column.ColumnNumber,desc]);
}

function resizeTree(sender, eventArgs)
{
 // alert('resizeTree');
 var pane = eventArgs.get_pane();
 var newPaneWidth = pane.get_width();
 var newPaneHeight = pane.get_height();
 if (window.TreeView1 && newPaneWidth && newPaneWidth > 2 && newPaneHeight && newPaneHeight > 11)
 {
  document.getElementById("TreeContainer").style.width = (newPaneWidth - 2) + 'px';
  document.getElementById("TreeContainer").style.height = (newPaneHeight - 2) + 'px';
  TreeView1.render();
 }
}

function resizeDetails(sender, eventArgs)
{
 // alert('resizeDetails');
 var newWidth = eventArgs.get_pane().get_width(); 
 var newHeight = eventArgs.get_pane().get_height(); 
 var widthAdj = -18;
 var heightAdj = -26;
 DetailsCallBack.DomElement.style.width = (newWidth + widthAdj) + 'px';
 DetailsCallBack.DomElement.style.height = (newHeight + heightAdj) + 'px';
 TabStrip1.Render(); 
}

function resizeGrid(sender, eventArgs)
{
 // alert('resizeGrid ');
 var pane = eventArgs.get_pane();
 var newPaneWidth = pane.get_width();
 var newPaneHeight = pane.get_height();
 if(window.Grid1 && window.GridCallBack && newPaneWidth && newPaneWidth > 2 && newPaneHeight && newPaneHeight > 2)
 {
  GridCallBack.element.style.width = (newPaneWidth - 2) + 'px';
  GridCallBack.element.style.height = (newPaneHeight - 2) + 'px';
  if (lastSelectedNode) {
   GridCallBack.Callback(lastSelectedNode);
   if (lastSelectedItems) {
    for(i=0;i<lastSelectedItems.length;i++)
    {
     Grid1.select(Grid1.getItemFromKey(1,lastSelectedItems[i]), true)
    }
   }
  } else {
   Grid1.render();
  }
 }
}

var _MouseX = 0; var _MouseY = 0; 

var  CA_IE = document.all ? true : false; 
if (!CA_IE) document.captureEvents(Event.MOUSEMOVE); 

function GetMouseCoordinates(e)
{
 // var scrolly = typeof window.pageYOffset != 'undefined' ? window.pageYOffset : document.documentElement.scrollTop;
 // var scrollx = typeof window.pageXOffset != 'undefined' ? window.pageXOffset : document.documentElement.scrollLeft;
 // alert('ScrollX: '+scrollx+' ScrollY: '+scrolly);
 // alert('GetMouseCoordinates');
 // alert('BodyX: '+document.body.scrollLeft+' BodyY: '+document.body.scrollTop);
 // if (CA_IE) { _MouseX = event.clientX + document.body.scrollLeft; _MouseY = event.clientY + document.body.scrollTop; } 
  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; } 
 // alert('MouseX: '+_MouseX+' MouseY: '+_MouseY);
return true; 
} 

function LoadTreeViewContextMenu(sender, eventArgs) 
{
 // alert('LoadTreeViewContextMenu');
 GetMouseCoordinates(eventArgs.get_event());      
 ContextMenuCallBack.Callback(eventArgs.get_node().get_id()); 
}

function LoadGridContextMenu(sender, eventArgs) 
{
 // alert('LoadGridContextMenu');
 if (sender.getSelectedItems().length == 0) {
  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)
{
// simply do nothing
}

function TreeViewNodeSelect(sender, eventArgs)
{
 // alert('TreeViewNodeSelect');
 lastSelectedNode = eventArgs.get_node().get_id();
 GridCallBack.Callback(eventArgs.get_node().get_id()); 
 MenuCallBack.Callback(eventArgs.get_node().get_id()); 
 DetailsCallBack.Callback(eventArgs.get_node().get_id());
} 

function GridItemSelect(sender, eventArgs)
{
 // alert('GridItemSelect');
 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);
 }
}

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)
{
 // alert('GridItemDoubleClick');
 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();
  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(eventArgs.get_item().getMember('Entry').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(),'','');
  }
 }
}

function CancelContextMenu(evt)
{
 // alert('CancelContextMenu');
 evt = (evt == null) ? window.event : evt;
 evt.cancelBubble = true; 
 evt.returnValue = false; 
 return false; 
}

function GridItemsCommand(command, itemList)
{
 // alert('GridItemsCommand');
 CommandCallBack.Callback(command, itemList);
 var tvNode
 if (TreeView1.get_selectedNode()) {
  tvNode = TreeView1.get_selectedNode().get_id();
 } 
 else {
  tvNode = 'ent0';
 }
 switch (command)
 {
  case 'Add' :
   break;
  case 'Remove' :
   break;
  default :
   MenuCallBack.Callback(tvNode, itemList);
   GridCallBack.Callback(tvNode);
 }
}

var editEntryId
var editParentId
var lastSelectedNode
var lastSelectedItems
var selectionChanged
var selection

function editEntry(entryId, parentId, newVersion)
{
 // alert('editEntry');
 if (entryId=='-1') {
  EditCallBack.Callback('-1', parentId);
 }
 else {
  EditCallBack.Callback(entryId, newVersion);
 }
 editEntryId=entryId;
 editParentId=parentId;
 Dialog1.Show();
}

function closedialog()
{
 // alert('closedialog 1');
 Dialog1.close();
 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;
 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=600,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();
}

