// _lcid="1033" _version="11.0.5329"
// _localBinding
// Globally visible throughout this file.
var oRetValIssueArgs                = new Object;
var oRetValRiskArgs                 = new Object;
var oRetValTaskArgs                 = new Object;
var bIsNew                          = false;
var bIsEdit                         = false;
var bIsDisp                         = false;
var bIsFirstTasksRequest            = true;
var bIsFirstIssuesRequest           = true;
var bIsFirstRisksRequest            = true;
var sLinkDivLblTasksGeneral         = L_DocLinkDivLblTasks_TXT;
var sLinkDivLblIssues               = L_DocLinkDivLblIssues_TXT;
var sLinkDivLblRisks                = L_DocLinkDivLblRisks_TXT;
var sLinkHrefLblTasksGeneral        = L_DocLinkHrefLblTasksGeneral_TXT;
var sLinkHrefLblIssues              = L_DocLinkHrefLblIssues_TXT;
var sLinkHrefLblRisks               = L_DocLinkHrefLblRisks_TXT;
var const_Sts_AddCollectionNode     = 1;
var const_Sts_RemoveCollectionNode  = 2;

//--------------------------------------------------------------------------------
function InitForPWA()
{
  idPwaHtml.innerHTML += "<IFRAME ID=\"idForPWAIFrame\" NAME=\"idForPWAIFrame\" SCROLLING=\"YES\" STYLE=\"display: none; width: 90%; height: 20%;\"></IFRAME>";

  if(ctx.bIsFolder == 1)
  {
    idPwaOrigGoBackBtnSpan.style.display = "block";
    g_bIsFolder                          = true;
    return;
  }

  nPWATaskId = Number(GetUrlKeyValue("TaskID"));
  nReqPageId = Number(GetUrlKeyValue("ReqPageID"));

  if(bHostedinPWA && (nPWATaskId > 0))
  {
    if(typeof(idPCGoBackToDocListBtnSpan) != "undefined")
    {
      idPCGoBackToDocListBtnSpan.style.display = "block";
    }
  }
  else
  {
    if(typeof(idOrigGoBackBtnSpan) != "undefined")
    {
      idOrigGoBackBtnSpan.style.display = "block";
    }
  }

  switch(ctx.sFileName.toUpperCase())
  {
  case "DISPFORM.ASPX":
     bIsDisp = true;
     break;
  case "UPLOAD.ASPX":
     bIsNew = true;
     document.all.item("urn:schemas-microsoft-com:office:office#GUID").value = ctx.GUID;
     break;
  case "EDITFORM.ASPX":
     bIsEdit = true;
     break;
  }

  if((typeof(ctx.ctxId) != "undefined") && (ctx.ctxId == 1))
  {
    return;
  }

  if(bIsNew)
  {
    SetOwner();
  }

  var aDivLbl     = new Array(sLinkDivLblTasksGeneral, sLinkDivLblIssues, sLinkDivLblRisks);
  var aDivId      = new Array("idGeneralTasksDiv", "idRelatedIssuesDiv", "idRelatedRisksDiv");
  var aHrefLbl    = new Array(sLinkHrefLblTasksGeneral, sLinkHrefLblIssues, sLinkHrefLblRisks);
  var aHrefTarget = new Array
  (
    "javascript: RelatedTasks_OnClick(idGeneralTasksDiv);",
    "javascript: RelatedIssues_OnClick();",
    "javascript: RelatedRisks_OnClick();"
  );
  InsertPwaLinksHtml(aDivLbl, aDivId, aHrefLbl, aHrefTarget);

  oRetValIssueArgs.ID             = new Array();
  oRetValIssueArgs.ListName       = new Array();
  oRetValIssueArgs.Title          = new Array();
  oRetValIssueArgs.Status         = new Array();
  oRetValIssueArgs.AssignedTo     = new Array();
  oRetValIssueArgs.LinkType       = new Array();
  oRetValIssueArgs.PrevLinkType   = new Array();
  oRetValIssueArgs.LinkTypeValue  = const_Sts_LinkTypeGeneral;
  oRetValIssueArgs.LCID           = L_Language_Text;

  oRetValRiskArgs.ID              = new Array();
  oRetValRiskArgs.ListName        = new Array();
  oRetValRiskArgs.Title           = new Array();
  oRetValRiskArgs.Status          = new Array();
  oRetValRiskArgs.AssignedTo      = new Array();
  oRetValRiskArgs.LinkType        = new Array();
  oRetValRiskArgs.PrevLinkType    = new Array();
  oRetValRiskArgs.LinkTypeValue   = const_Sts_LinkTypeGeneral;
  oRetValRiskArgs.LCID            = L_Language_Text;

  oRetValTaskArgs.ID              = new Array();
  oRetValTaskArgs.Title           = new Array();
  oRetValTaskArgs.LinkType        = new Array();
  oRetValTaskArgs.PrevLinkType    = new Array();
  oRetValTaskArgs.IsSummary       = new Array();
  oRetValTaskArgs.ResId           = new Array();
  oRetValTaskArgs.OutlineLevel    = new Array();
  oRetValTaskArgs.TaskID          = new Array();
  oRetValTaskArgs.LinkTypeValue   = const_Sts_LinkTypeGeneral;
  oRetValTaskArgs.LockedTaskId    = 0;
  oRetValTaskArgs.LCID            = L_Language_Text;

  if(nPWATaskId > 0)
  {
    idPwaGoBackToDocListBtnSpan.style.display = "block";
    sDocLibRedirectorUrl = sPWAUrl + "DocLib/DocLibRedirector.asp?NextPageUrl=DocLib/TasksDocList.asp&ProjID=" + sPWAProjId + "&TaskID=" + nPWATaskId + "&ReqPageID=" + nReqPageId;
  }
  else
  {
    if(!bIsDisp)
    {
      idPwaOrigGoBackBtnSpan.style.display = "block";
    }
  }

  if(bIsNew)
  {
    if(nPWATaskId > 0)
    {
      GetProjectTasks();
      bIsFirstTasksRequest = false;
    }
  }
  else
  {
    GetLinkedWSSItems();
  }
} // End of InitForPWA().

//--------------------------------------------------------------------------------
function GetLinkedWSSItems()
{
  var oRoot;
  var oNewNode;
  
  if (!InitXmlHttpObjects())
  {
    return;
  }

  oRoot = oXmlDoc.createNode(1, "Root", "");
  oXmlDoc.appendChild(oRoot);

  oNewNode       = oXmlDoc.createNode(1, "Operation", "");
  oNewNode.text  = "GetLinkedWSSItems";
  oRoot.appendChild(oNewNode);

  oNewNode       = oXmlDoc.createNode(1, "ProjId", "");
  oNewNode.text  = sPWAProjId;
  oRoot.appendChild(oNewNode);

  oNewNode       = oXmlDoc.createNode(1, "ID", "");
  oNewNode.text  = ctx.ID;
  oRoot.appendChild(oNewNode);

  oNewNode       = oXmlDoc.createNode(1, "ObjType", "");
  oNewNode.text  = const_Sts_ObjTypeDocument;
  oRoot.appendChild(oNewNode);

  oNewNode       = oXmlDoc.createNode(1, "ListName", "");
  oNewNode.text  = ctx.listName;
  oRoot.appendChild(oNewNode);

  if(!(oRoot = ExecXmlHttpRequest()))
  {
    return;
  }

  oRetValIssueArgs.sProjName  =
  oRetValRiskArgs.sProjName   =
  oRetValTaskArgs.sProjName   = oRoot.selectSingleNode("ProjName").text;

  var oItemsNode = oRoot.selectSingleNode("TaskItems");
  if(oItemsNode)
  {
    for(var i = 0; i < oItemsNode.childNodes.length; i++)
    {
      var oTempNode                   = oItemsNode.childNodes.item(i);
      oRetValTaskArgs.Title[i]        = oTempNode.selectSingleNode("Title").text;
      oRetValTaskArgs.ID[i]           = Number(oTempNode.selectSingleNode("ID").text);
      oRetValTaskArgs.PrevLinkType[i] = Number(oTempNode.selectSingleNode("Link").text);
      oRetValTaskArgs.LinkType[i]     = Number(oTempNode.selectSingleNode("Link").text);
    }
  }

  oItemsNode = oRoot.selectSingleNode("IssueItems");
  if(oItemsNode)
  {
    for(var i = 0; i < oItemsNode.childNodes.length; i++)
    {
      var oTempNode                     = oItemsNode.childNodes.item(i);
      oRetValIssueArgs.Title[i]         = oTempNode.selectSingleNode("Title").text;
      oRetValIssueArgs.ID[i]            = Number(oTempNode.selectSingleNode("ID").text);
      oRetValIssueArgs.PrevLinkType[i]  = Number(oTempNode.selectSingleNode("Link").text);
      oRetValIssueArgs.LinkType[i]      = Number(oTempNode.selectSingleNode("Link").text);
    }
  }

  oItemsNode = oRoot.selectSingleNode("RiskItems");
  if(oItemsNode)
  {
    for(var i = 0; i < oItemsNode.childNodes.length; i++)
    {
      var oTempNode                    = oItemsNode.childNodes.item(i);
      oRetValRiskArgs.Title[i]         = oTempNode.selectSingleNode("Title").text;
      oRetValRiskArgs.ID[i]            = Number(oTempNode.selectSingleNode("ID").text);
      oRetValRiskArgs.PrevLinkType[i]  = Number(oTempNode.selectSingleNode("Link").text);
      oRetValRiskArgs.LinkType[i]      = Number(oTempNode.selectSingleNode("Link").text);
    }
  }

  idGeneralTasksDiv.innerHTML   = ConstructLinkedItemsTable(oRetValTaskArgs, const_Sts_ObjTypeTask);
  idRelatedIssuesDiv.innerHTML  = ConstructLinkedItemsTable(oRetValIssueArgs, const_Sts_ObjTypeIssue);
  idRelatedRisksDiv.innerHTML   = ConstructLinkedItemsTable(oRetValRiskArgs, const_Sts_ObjTypeRisk);

} // End of GetLinkedWSSItems().

//--------------------------------------------------------------------------------
function GetProjectTasks()
{
  var oRoot;
  var oNewNode;
    
  if (!InitXmlHttpObjects())
  {
    return;
  }

  oRoot = oXmlDoc.createNode(1, "Root", "");
  oXmlDoc.appendChild(oRoot);

  oNewNode       = oXmlDoc.createNode(1, "Operation", "");
  oNewNode.text  = "GetProjectTasks";
  oRoot.appendChild(oNewNode);

  oNewNode       = oXmlDoc.createNode(1, "ProjId", "");
  oNewNode.text  = sPWAProjId;
  oRoot.appendChild(oNewNode);

  oNewNode       = oXmlDoc.createNode(1, "ID", "");
  oNewNode.text  = ctx.ID;
  oRoot.appendChild(oNewNode);

  oNewNode       = oXmlDoc.createNode(1, "ObjType", "");
  oNewNode.text  = const_Sts_ObjTypeDocument;
  oRoot.appendChild(oNewNode);

  oNewNode       = oXmlDoc.createNode(1, "ListName", "");
  oNewNode.text  = ctx.listName;
  oRoot.appendChild(oNewNode);

  if(!(oRoot = ExecXmlHttpRequest()))
  {
    return;
  }

  oRetValTaskArgs.sProjName = oRoot.selectSingleNode("ProjName").text;

  var oItemsNode = oRoot.selectSingleNode("Items");
  if (oItemsNode)
  {
    for(var i = 0; i < oItemsNode.childNodes.length; i++)
    {
      var oTempNode                   = oItemsNode.childNodes.item(i);
      oRetValTaskArgs.Title[i]        = oTempNode.selectSingleNode("Title").text;
      oRetValTaskArgs.ID[i]           = Number(oTempNode.selectSingleNode("ID").text);
      oRetValTaskArgs.PrevLinkType[i] = Number(oTempNode.selectSingleNode("Link").text);
      oRetValTaskArgs.LinkType[i]     = Number(oTempNode.selectSingleNode("Link").text);
      oRetValTaskArgs.IsSummary[i]    = Number(oTempNode.selectSingleNode("IsSummary").text);
      oRetValTaskArgs.ResId[i]        = Number(oTempNode.selectSingleNode("ResID").text);
      oRetValTaskArgs.OutlineLevel[i] = Number(oTempNode.selectSingleNode("OutlineLevel").text);
      oRetValTaskArgs.TaskID[i]       = Number(oTempNode.selectSingleNode("TaskID").text);

      if (bIsNew && (oRetValTaskArgs.ID[i] == nPWATaskId))
      {
        oRetValTaskArgs.LinkType[i]   = 1;
        oRetValTaskArgs.LockedTaskId  = nPWATaskId;
      }
    }
  }

  idGeneralTasksDiv.innerHTML = ConstructLinkedItemsTable(oRetValTaskArgs, const_Sts_ObjTypeTask);

} // End of GetProjectTasks().

//--------------------------------------------------------------------------------
function GetProjectIssues()
{
  var oRoot;
  var oNewNode;
    
  if (!InitXmlHttpObjects())
  {
    return;
  }

  oRoot = oXmlDoc.createNode(1, "Root", "");
  oXmlDoc.appendChild(oRoot);

  oNewNode = oXmlDoc.createNode(1, "Operation", "");
  oNewNode.text = "GetProjectIssues";
  oRoot.appendChild(oNewNode);

  oNewNode = oXmlDoc.createNode(1, "ProjId", "");
  oNewNode.text = sPWAProjId;
  oRoot.appendChild(oNewNode);

  oNewNode = oXmlDoc.createNode(1, "FileName", "");
  oNewNode.text = ctx.sFileName;
  oRoot.appendChild(oNewNode);

  oNewNode = oXmlDoc.createNode(1, "HttpRoot", "");
  oNewNode.text = ctx.HttpRoot;
  oRoot.appendChild(oNewNode);

  oNewNode = oXmlDoc.createNode(1, "ID", "");
  oNewNode.text = ctx.ID;
  oRoot.appendChild(oNewNode);

  oNewNode = oXmlDoc.createNode(1, "bIssues", "");
  oRoot.appendChild(oNewNode);

  oNewNode = oXmlDoc.createNode(1, "ListName", "");
  oRoot.appendChild(oNewNode);

  oNewNode = oXmlDoc.createNode(1, "ThisListName", "");
  oNewNode.text = ctx.listName;
  oRoot.appendChild(oNewNode);

  if(!(oRoot = ExecXmlHttpRequest()))
  {
     return;
  }
  
  oRetValIssueArgs.sProjName = oRoot.selectSingleNode("ProjName").text;

  var oItemsNode = oRoot.selectSingleNode("Items");
  if(oItemsNode)
  {
    for(var i = 0; i < oItemsNode.childNodes.length; i++)
    {
      var oTempNode = oItemsNode.childNodes.item(i);

      oRetValIssueArgs.ID[i]           = Number(oTempNode.selectSingleNode("ID").text);
      oRetValIssueArgs.PrevLinkType[i] = Number(oTempNode.selectSingleNode("Link").text);
      oRetValIssueArgs.LinkType[i]     = Number(oTempNode.selectSingleNode("Link").text);
      oRetValIssueArgs.ListName[i]     = oTempNode.selectSingleNode("ListName").text;
      oRetValIssueArgs.Title[i]        = STSHtmlEncode(oTempNode.selectSingleNode("Title").text);
      oRetValIssueArgs.Status[i]       = oTempNode.selectSingleNode("Status").text;
      oRetValIssueArgs.AssignedTo[i]   = oTempNode.selectSingleNode("AssignedTo").text;
    }
  }
  idRelatedIssuesDiv.innerHTML = ConstructLinkedItemsTable(oRetValIssueArgs, const_Sts_ObjTypeIssue);
} // End of GetProjectIssues().

//--------------------------------------------------------------------------------
function GetProjectRisks()
{
  var oRoot;
  var oNewNode;
    
  if (!InitXmlHttpObjects())
  {
    return;
  }

  oRoot = oXmlDoc.createNode(1, "Root", "");
  oXmlDoc.appendChild(oRoot);

  oNewNode = oXmlDoc.createNode(1, "Operation", "");
  oNewNode.text = "GetProjectIssues";
  oRoot.appendChild(oNewNode);

  oNewNode = oXmlDoc.createNode(1, "ProjId", "");
  oNewNode.text = sPWAProjId;
  oRoot.appendChild(oNewNode);

  oNewNode = oXmlDoc.createNode(1, "FileName", "");
  oNewNode.text = ctx.sFileName;
  oRoot.appendChild(oNewNode);

  oNewNode = oXmlDoc.createNode(1, "HttpRoot", "");
  oNewNode.text = ctx.HttpRoot;
  oRoot.appendChild(oNewNode);

  oNewNode = oXmlDoc.createNode(1, "ID", "");
  oNewNode.text = ctx.ID;
  oRoot.appendChild(oNewNode);

  oNewNode = oXmlDoc.createNode(1, "ListName", "");
  oRoot.appendChild(oNewNode);

  oNewNode = oXmlDoc.createNode(1, "ThisListName", "");
  oNewNode.text = ctx.listName;
  oRoot.appendChild(oNewNode);

  if(!(oRoot = ExecXmlHttpRequest()))
  {
    return;
  }

  oRetValRiskArgs.sProjName = oRoot.selectSingleNode("ProjName").text;

  var oItemsNode = oRoot.selectSingleNode("Items");
  if (oItemsNode)
  {
    for(var i = 0; i < oItemsNode.childNodes.length; i++)
    {
      var oTempNode = oItemsNode.childNodes.item(i);

      oRetValRiskArgs.ID[i]           = Number(oTempNode.selectSingleNode("ID").text);
      oRetValRiskArgs.PrevLinkType[i] = Number(oTempNode.selectSingleNode("Link").text);
      oRetValRiskArgs.LinkType[i]     = Number(oTempNode.selectSingleNode("Link").text);
      oRetValRiskArgs.ListName[i]     = oTempNode.selectSingleNode("ListName").text;
      oRetValRiskArgs.Title[i]        = STSHtmlEncode(oTempNode.selectSingleNode("Title").text);
      oRetValRiskArgs.Status[i]       = oTempNode.selectSingleNode("Status").text;
      oRetValRiskArgs.AssignedTo[i]   = oTempNode.selectSingleNode("AssignedTo").text;
    }
  }

  idRelatedRisksDiv.innerHTML = ConstructLinkedItemsTable(oRetValRiskArgs, const_Sts_ObjTypeRisk);

} // End of GetProjectRisks().

//--------------------------------------------------------------------------------
function RelatedTasks_OnClick(idDiv)
{
  if(bIsFirstTasksRequest)
  {
    GetProjectTasks();
    bIsFirstTasksRequest = false;
  }
  window.showModalDialog(ctx.sPwaIncPath + 'ILnkTask.htm', oRetValTaskArgs, 'dialogHeight: ' + L_DialogWindowHeight_Text + '; dialogWidth: ' + L_DialogWindowWidth_Text + '; center: Yes; help: No; resizable: No; status: No;');
  idDiv.innerHTML = ConstructLinkedItemsTable(oRetValTaskArgs, const_Sts_ObjTypeTask);
} // End of RelatedTasks_OnClick().

//--------------------------------------------------------------------------------
function RelatedIssues_OnClick()
{
  if(bIsFirstIssuesRequest)
  {
    GetProjectIssues();
    bIsFirstIssuesRequest = false;
  }
  window.showModalDialog(ctx.sPwaIncPath + 'ILnkIss.htm', oRetValIssueArgs, 'dialogHeight: ' + L_DialogWindowHeight_Text + '; dialogWidth: ' + L_DialogWindowWidth_Text + '; center: Yes; help: No; resizable: No; status: No;');
  idRelatedIssuesDiv.innerHTML = ConstructLinkedItemsTable(oRetValIssueArgs, const_Sts_ObjTypeIssue);
}

//--------------------------------------------------------------------------------
function RelatedRisks_OnClick()
{
  if(bIsFirstRisksRequest)
  {
    GetProjectRisks();
    bIsFirstRisksRequest = false;
  }
  window.showModalDialog(ctx.sPwaIncPath + 'ILnkRisk.htm', oRetValRiskArgs, 'dialogHeight: ' + L_DialogWindowHeight_Text + '; dialogWidth: ' + L_DialogWindowWidth_Text + '; center: Yes; help: No; resizable: No; status: No;');
  idRelatedRisksDiv.innerHTML = ConstructLinkedItemsTable(oRetValRiskArgs, const_Sts_ObjTypeRisk);
}

//--------------------------------------------------------------------------------
function PSGoBackToDocList_OnClick()
{
  window.parent.location.href = sPWAUrl + "DocLib/DocLibRedirector.asp?NextPageUrl=DocLib/TasksDocList.asp&ProjID=" + sPWAProjId + "&TaskID=" + nPWATaskId + '&ReqPageID=' + '<ows:GetVar Name="ReqPageID"/>';
} // End of PSGoBackToDocList_OnClick().

//--------------------------------------------------------------------------------
function ExecHTML_WaitForUploadComplete_Docs()
{
  if((typeof(document.frames['idForPWAIFrame'].window.location.href) == "unknown") || 
     (document.frames['idForPWAIFrame'].window.location.href.toLowerCase() == "about:blank") ||
     (document.frames['idForPWAIFrame'].window.document.readyState.toLowerCase() != 'complete'))
  {
    return false;
  }

  window.clearInterval(_nExecASPTimerID);
  _nExecASPTimerID = null;

  //
  // If all went well then we need to update Project Web Access database and then 
  // redirect to 'allitems.htm' page. We update Project Web Access DB by calling
  // 'svr_DbDocLib.asp' that lives on Project Web Access server. That ASP file will then
  // pass messege to the provider object that will do the actual update.
  //
  var sNewUrl = document.frames['idForPWAIFrame'].window.location.href.split('?')[0];
  sNewUrl = sNewUrl.substr(sNewUrl.lastIndexOf('/') + 1).toUpperCase();

  if((sNewUrl == "UPLOAD.ASPX") || (sNewUrl == "EDITFORM.ASPX") || (sNewUrl == "OWSSVR.DLL"))
  {
    var oBody = document.frames['idForPWAIFrame'].window.document.getElementsByTagName("body");
    if(!oBody || (typeof(oBody) == "undefined"))
    {
      alert(document.frames['idForPWAIFrame'].window.document.childNodes.item(0).innerText);
    }    
    else
    {
      var sReason = oBody[0].innerText;
      alert(sReason);
    }    
    window.location.reload();
    return;
  }

  if(sPWAUrl == "" || sPWAProjId == "")
  {
    alert(L_DocCantUpdate_ERR);
    return;
  }

  if(Number(sPWAProjId) <= 0)
  {
    window.location.href = document.frames['idForPWAIFrame'].window.location.href;
    return;
  }

  // Create the root node.
  var oRoot;
  var oNewNode;
    
  if (!InitXmlHttpObjects())
  {
    alert(L_DocCantUpdate_ERR);

    // Redirect depending on what page we came here from.
    if(nPWATaskId > 0)
    {
      window.parent.location.href = sDocLibRedirectorUrl;
    }
    else
    {
      window.location.href = document.frames['idForPWAIFrame'].window.location.href;
    }
    
    return;
  }

  var oRoot = oXmlDoc.createNode(1, "XMLFormData", "");
  oXmlDoc.appendChild(oRoot);

  // Create 'ProjID' node.
  oNewNode = oXmlDoc.createNode(1, "ProjectID", "");
  oNewNode.text = sPWAProjId;
  oRoot.appendChild(oNewNode);

  // Create 'Operation' node.
  oNewNode = oXmlDoc.createNode(1, "Operation", "");
  oNewNode.text = "UpdateDocToSTSObjsLinksSTSv2";
  oRoot.appendChild(oNewNode);

  // Create 'ListGUID' node.
  oNewNode = oXmlDoc.createNode(1, "ListGUID", "");
  oNewNode.text = ctx.listName;
  oRoot.appendChild(oNewNode);

  // Create 'FormName' node.
  oNewNode = oXmlDoc.createNode(1, "FormName", "");
  oNewNode.text = ctx.sFileName;
  oRoot.appendChild(oNewNode);

  var oLinkedObjectsNode = oXmlDoc.createNode(1, "LinkedObjects", "");

  // Create 'Tasks' node.
  if(oRetValTaskArgs.ID.length > 0)
  {
    oLinkedObjectsNode = CreateCollectionNode(oLinkedObjectsNode, oRetValTaskArgs, const_Sts_ObjTypeTask, const_Sts_AddCollectionNode);
  }

  // Create 'Issues' node.
  if(oRetValIssueArgs.ID.length > 0)
  {
    oLinkedObjectsNode = CreateCollectionNode(oLinkedObjectsNode, oRetValIssueArgs, const_Sts_ObjTypeIssue, const_Sts_AddCollectionNode);
  }

  // Create 'Risks' node.
  if(oRetValRiskArgs.ID.length > 0)
  {
    oLinkedObjectsNode = CreateCollectionNode(oLinkedObjectsNode, oRetValRiskArgs, const_Sts_ObjTypeRisk, const_Sts_AddCollectionNode);
  }

  // Append the entire 'oLinkedObjectsNode' node to the root.
  oRoot.appendChild(oLinkedObjectsNode);

  // If we came here from EDITFORM.ASPX then we might have some tasks to remove.
  if(ctx.sFileName.toUpperCase() == "EDITFORM.ASPX")
  {
    var oRemovedObjectsNode = oXmlDoc.createNode(1, "RemovedObjects", "");

    // Create 'Tasks' node that need to be unlinked.
    if(oRetValTaskArgs.ID.length > 0)
    {
      oRemovedObjectsNode = CreateCollectionNode(oRemovedObjectsNode, oRetValTaskArgs, const_Sts_ObjTypeTask, const_Sts_RemoveCollectionNode);
    }

    // Create 'Issues' node that need to be unlinked.
    if(oRetValIssueArgs.ID.length > 0)
    {
      oRemovedObjectsNode = CreateCollectionNode(oRemovedObjectsNode, oRetValIssueArgs, const_Sts_ObjTypeIssue, const_Sts_RemoveCollectionNode);
    }

    // Create 'Issues' node that need to be unlinked.
    if(oRetValRiskArgs.ID.length > 0)
    {
      oRemovedObjectsNode = CreateCollectionNode(oRemovedObjectsNode, oRetValRiskArgs, const_Sts_ObjTypeRisk, const_Sts_RemoveCollectionNode);
    }

    // Append the entire 'oRemovedObjectsNode' node to the root.
    oRoot.appendChild(oRemovedObjectsNode);

    // Create 'DocId' node.
    oNewNode = oXmlDoc.createNode(1, "DocID", "");
    oNewNode.text = ctx.ID;
    oRoot.appendChild(oNewNode);
  }
  else if(ctx.sFileName.toUpperCase() == "UPLOAD.ASPX")
  {
    // Create 'DocGuid' node.
    oNewNode = oXmlDoc.createNode(1, "DocGUID", "");
    oNewNode.text = ctx.GUID;
    oRoot.appendChild(oNewNode);
  }

  if(!(oRoot = ExecXmlHttpRequest()))
  {
    alert(L_DocCantUpdate_ERR);
  }
  else if(oRoot.selectSingleNode("Result").text.toUpperCase() == "ERROR")
  {
    alert(oRoot.selectSingleNode("Description").text);
  } 

  // Redirect depending on what page we came here from.
  if(nPWATaskId > 0)
  {
    window.parent.location.href = sDocLibRedirectorUrl;
  }
  else
  {
    window.location.href = document.frames['idForPWAIFrame'].window.location.href;
  }
  
  return;
} // End of ExecHTML_WaitForUploadComplete_Docs().

//--------------------------------------------------------------------------------
function CreateCollectionNode(oReturnNode, oArgsObj, nObjType, nOperation)
{
  var oNewNode;
  var oObjectNode;
  for(var i = 0; i < oArgsObj.ID.length; i++)
  {
    if(((nOperation == const_Sts_AddCollectionNode) && (oArgsObj.LinkType[i] > 0) && (oArgsObj.PrevLinkType[i] == 0)) ||
       ((nOperation == const_Sts_RemoveCollectionNode) && (oArgsObj.PrevLinkType[i] == const_Sts_LinkTypeGeneral) && (oArgsObj.LinkType[i] == 0)))
    {
      oObjectNode = oXmlDoc.createNode(1, "Object", "");

      oNewNode = oXmlDoc.createNode(1, "ObjectId", "");
      oNewNode.text = oArgsObj.ID[i];
      oObjectNode.appendChild(oNewNode);

      oNewNode = oXmlDoc.createNode(1, "ObjectType", "");
      oNewNode.text = nObjType;
      oObjectNode.appendChild(oNewNode);

      if(nObjType != const_Sts_ObjTypeTask)
      {
        oNewNode = oXmlDoc.createNode(1, "TPID", "");
        oNewNode.text = oArgsObj.ID[i];
        oObjectNode.appendChild(oNewNode);

        oNewNode = oXmlDoc.createNode(1, "ListName", "");
        oNewNode.text = oArgsObj.ListName[i];
        oObjectNode.appendChild(oNewNode);
      }
      oReturnNode.appendChild(oObjectNode);
    }
  }

  return oReturnNode;

} // End of CreateCollectionNode().

//--------------------------------------------------------------------------------
function ExecHTML_WaitForComplete_DeleteDocListItem()
{
  if((typeof(document.frames['idForPWAIFrame'].window.location.href) == "unknown") || 
    (document.frames['idForPWAIFrame'].window.location.href.toLowerCase() == "about:blank") ||
    (document.frames['idForPWAIFrame'].window.document.readyState.toLowerCase() != 'complete'))
  {
    return;
  }

  window.clearInterval(_nExecASPTimerID);
  _nExecASPTimerID = null;

  var sNewUrl = document.frames['idForPWAIFrame'].window.location.href.split('?')[0];
  sNewUrl = sNewUrl.substr(sNewUrl.lastIndexOf('/') + 1).toUpperCase();

  if(sNewUrl == "REQACC.ASPX")
  {
    window.location.href = document.frames['idForPWAIFrame'].window.location.href;
    return;
  }

  if(sNewUrl == "OWSSVR.DLL")
  {
    if(document.frames['idForPWAIFrame'].window.document.childNodes.item(0).innerText)
    {
      alert(document.frames['idForPWAIFrame'].window.document.childNodes.item(0).innerText);
    }
    window.location.reload();
    return;
  }

  if(sPWAUrl == "" || sPWAProjId == "")
  {
    alert(L_DocCantUpdate_ERR);
    window.location.reload();
    return;
  }

  if(Number(sPWAProjId) <= 0)
  {
    window.location.href = document.frames['idForPWAIFrame'].window.location.href;
    return;
  }

  // If it was the folder that got deleted then we need to sycnhronize the entire document list.
  if(g_bIsFolder)
  {
    SynchronizeWithPWA(ctx.listName, "", const_Sts_ObjTypeDocument, false, L_DocCantUpdate_ERR)
  }
  else
  {
    InitXmlHttpObjects();

    // Create the root node.
    var oRoot = oXmlDoc.createNode(1, "XMLFormData", "");
    oXmlDoc.appendChild(oRoot);

    // Create 'ProjID' node.
    var oNewNode = oXmlDoc.createNode(1, "ProjectID", "");
    oNewNode.text = sPWAProjId;
    oRoot.appendChild(oNewNode);

    // Create 'Operation' node.
    oNewNode = oXmlDoc.createNode(1, "Operation", "");
    oNewNode.text = "DeleteDocLinksToProjectAndTasks";
    oRoot.appendChild(oNewNode);

    // Create 'DocLibName' node.
    oNewNode = oXmlDoc.createNode(1, "DocLibName", "");
    oNewNode.text = ctx.listName;
    oRoot.appendChild(oNewNode);

    // Create 'DocId' node.
    oNewNode = oXmlDoc.createNode(1, "DocID", "");
    oNewNode.text = ctx.ID;
    oRoot.appendChild(oNewNode);

    // We don't check the result code here because there is not much user can do anyway if the session times out etc.
    ExecXmlHttpRequest();
  }

  // Redirect depending on what page did we come here from.
  if(nPWATaskId > 0)
  {
    window.parent.location.href = sDocLibRedirectorUrl;
  }
  else
  {
    window.location.href = document.frames['idForPWAIFrame'].window.location.href;
  }

  return;
} // End of ExecHTML_WaitForComplete_DeleteDocListItem().

//--------------------------------------------------------------------------------
function PwaGoBackToDocList_OnClick()
{
   window.location.href = sDocLibRedirectorUrl;
}
