﻿var CD_DLG=null;
var CD_CatDLG=null;
var CD_CatDLG2=null;
var CD_ViewDlg;
var CD_CompanyID;
var CD_CategoryID;
var CD_Redirect=false;
var CD_CurrCategories=null;

function CD_Initialise()
{
  CD_ViewDlg=document.getElementById(CD_Prefix+"SelectedCompanyDialog");
  __ShowDialog(CD_ViewDlg);
}

function CD_ShowCompanyDlg()
{
  if(!__EntityExists("CompanyInfo"))
  {
    if(!__ReqMade)
    {
      __ReqMade=true;
      CD_GetCompanyXML();
    }
    else
    {
      CD_ReqFailure();
    }    
  }
  else
  {
    if(CD_DLG==null)
    {
      CD_DLG=document.getElementById("CompanyPropertiesDialog");    
    }
    var paramNames=new Array();
    var paramVals=new Array();
    paramNames.push("itemId");
    paramVals.push(CD_CompanyID);
    __Transform(CD_DLG,__dataXml,CD_XSL_PATH+"EditCompany.xsl",paramNames,paramVals);
    CD_ShowAssingedCategories();
    __ShowDialog(CD_DLG); 
  }  
}

function CD_ShowAssingedCategories()
{
  var paramNames=new Array();
  var paramVals=new Array();
  __Transform(document.getElementById("Edit_AssignedCategories"),__dataXml,CD_XSL_PATH+"OutputAssignedCategories.xsl",paramNames,paramVals);
}

function CD_AddOrUpdateCompany()
{
  __FormErrorCount=0;
  __ValidateNotEmpty("Edit_CompanyNameTextBox");
  if(!__IsEmpty("Edit_WebSiteURLTextBox"))
  {
    __ValidateURL("Edit_WebSiteURLTextBox");
  }
  if(!__IsEmpty("Edit_EmailTextBox"))
  {
    __ValidateEmailAddress("Edit_EmailTextBox");
  }
  if(__FormErrorCount==0)
  {
    var companyNode=__SelectSingleNode(__dataXml,"CompanyInfo");
    if(companyNode)
    {
      __SetNodeValue(companyNode,"CompanyName",__GetValue("Edit_CompanyNameTextBox"));
      __SetNodeValue(companyNode,"Address1",__GetValue("Edit_Address1TextBox"));
      __SetNodeValue(companyNode,"Address2",__GetValue("Edit_Address2TextBox"));
      __SetNodeValue(companyNode,"Address3",__GetValue("Edit_Address3TextBox"));
      __SetNodeValue(companyNode,"Town",__GetValue("Edit_TownTextBox"));
      __SetNodeValue(companyNode,"PostCode",__GetValue("Edit_PostCodeTextBox"));
      __SetNodeValue(companyNode,"Telephone1",__GetValue("Edit_Telephone1Box"));
      __SetNodeValue(companyNode,"Telephone2",__GetValue("Edit_Telephone2Box"));
      __SetNodeValue(companyNode,"Fax",__GetValue("Edit_FaxTextBox"));
      __SetNodeValue(companyNode,"WebSiteURL",__GetURLValue("Edit_WebSiteURLTextBox"));
      __SetNodeValue(companyNode,"Email",__GetValue("Edit_EmailTextBox"));
      CD_UpdateCompany(__GetXML(companyNode));
    }
  }
}

function CD_PromptDeleteCompany()
{
  __ShowMessage("Warning","Are you sure?",2,null,"Yes","No",null,CD_DeleteCompany,null);
}

function CD_HideCompanyDialog()
{
  if(CD_Redirect)
  {
    __OutputWaitScreen();
    window.location=window.location;
  }
  else
  {
    __RemoveEntity("CompanyInfo");  
    __HideDialog(CD_DLG);
  }
}

function CD_OutputCategoriesAssignmentDlg()
{
  if(CD_CurrCategories==null)
  {
    CD_CurrCategories=__GetXML(__SelectSingleNode(__dataXml,"CompanyInfo/Categories"));
  }
  if(CD_CatDLG==null)
  {
    CD_CatDLG=document.getElementById("CategoriesDialog");    
  }
  var paramNames=new Array();
  var paramVals=new Array();
  paramNames.push("itemId");
  paramVals.push(CD_CompanyID);
  __Transform(CD_CatDLG,__dataXml,CD_XSL_PATH+"AssignCategories.xsl",paramNames,paramVals);
  __ShowDialog(CD_CatDLG);
}

function CD_MoveCategories(adding,all)
{
  var categoriesNode=__SelectSingleNode(__dataXml,"CompanyInfo/Categories");
  if(categoriesNode!=null)
  {
    var list=(adding==true?document.getElementById("SourceList"):document.getElementById("DestList"));
    var opts=list.options;
    if(opts)
    {
      if(adding)
      {
        for(var i=0;i<opts.length;i++)
        {
          if(opts[i].selected||all)
          {
            __AddEntityToDomFromString(categoriesNode,"<CompanyCategoryInfo><ItemId>"+opts[i].getAttribute("value")+"</ItemId><CategoryName><![CDATA["+opts[i].innerHTML+"]]></CategoryName></CompanyCategoryInfo>");
          }
        }
      }
      else
      {
        for(var i=0;i<opts.length;i++)
        {
          var catId=opts[i].getAttribute("value");
          var categoryNodes=__SelectNodes(categoriesNode,"CompanyCategoryInfo");
          if(categoryNodes!=null)
          {
            for(var x=categoryNodes.length-1;x>=0;x--)
            {
              if(all||(__NodeValue(categoryNodes[x],"ItemId")==catId&&opts[i].selected))
              {
                __RemoveEntityByRef(categoryNodes[x]);
              }
            }
          }
        }
      }
    }
  }
  CD_OutputCategoriesAssignmentDlg();
}

function CD_ResetCategories()
{
  var companyNode=__SelectSingleNode(__dataXml,"CompanyInfo");
  if(companyNode!=null)
  {
    var categoriesNode=__SelectSingleNode(companyNode,"Categories");
    if(categoriesNode!=null)
    {
      __RemoveEntityByRef(categoriesNode);
    }
    if(CD_CurrCategories!="")
    {
      __AddEntityToDomFromString(companyNode,CD_CurrCategories);
    }
  }
  CD_CloseCategoriesDialog();
}

function CD_CloseCategoriesDialog()
{
  CD_CurrCategories=null;
  __HideDialog(CD_CatDLG);
  CD_ShowAssingedCategories();
}

function CD_ShowCategoryDlg()
{
  if(!__EntityExists("categories"))
  {
    if(!__ReqMade)
    {
      __ReqMade=true;
      CD_GetCategoryXML();
    }
    else
    {
      CD_ReqFailure();
    }    
  }
  else
  {
    if(CD_CatDLG2==null)
    {
      CD_CatDLG2=document.getElementById("CategoriesDialog2");    
    }
    var paramNames=new Array();
    var paramVals=new Array();
    paramNames.push("itemId");
    paramVals.push(CD_CategoryID);
    __Transform(CD_CatDLG2,__dataXml,CD_XSL_PATH+"EditCategory.xsl",paramNames,paramVals);
    __ShowDialog(CD_CatDLG2);
  } 
}

function CD_AddOrUpdateCategory()
{
  __FormErrorCount=0;
  __ValidateNotEmpty("Edit_CategoryNameTextBox");
  if(__FormErrorCount==0)
  {
    var categoryName=__GetValue("Edit_CategoryNameTextBox");
    var categoryNode=__SelectSingleNode(__dataXml,"categories");
    if(categoryNode)
    {
      var nodeToUpdate=null;
      var categoryNodes=__SelectNodes(categoryNode,"CompanyCategoryInfo");
      if(CD_CategoryID==0)
      {
        var found=false;
        if(categoryNodes!=null)
        {
          for(var i=0;i<categoryNodes.length&&!found;i++)
          {
            var currCategoryName=__NodeValue(categoryNodes[i],"CategoryName");
            if(currCategoryName==categoryName)
            {
              found=true;
            }
          }
        }
        if(!found)
        {
          nodeToUpdate=__AddEntityToDomFromString(categoryNode,"<CompanyCategoryInfo><ItemId>0</ItemId><CategoryName><![CDATA["+categoryName+"]]></CategoryName></CompanyCategoryInfo>");
        }
      }
      else
      {
        if(categoryNodes!=null)
        {
          for(var i=0;i<categoryNodes.length;i++)
          {
            var currCategoryId=__NodeValue(categoryNodes[i],"ItemId");
            if(currCategoryId==CD_CategoryID)
            {
              nodeToUpdate=categoryNodes[i];
              __SetNodeValue(nodeToUpdate,"CategoryName",categoryName);
            }
          }
        }
      }
      if(nodeToUpdate!=null)
      {
        CD_UpdateCategory(__GetXML(nodeToUpdate));
      }
    }
  }
}

function CD_PromptDeleteCategory()
{
  __ShowMessage("Warning","Are you sure?",2,null,"Yes","No",null,CD_DeleteCategory,null);
}

function CD_HideCategoryDialog()
{
  if(CD_Redirect)
  {
    __OutputWaitScreen();
    window.location=window.location;
  }
  else
  {
    __HideDialog(CD_CatDLG2);
  }
}

function CD_GetCompanyXML()
{
  var reqData="<getCompany categories='"+(!__EntityExists("categories")).toString()+"'>"+CD_CompanyID+"</getCompany>";
  __MakeRequest(CD_ID,reqData,CD_ReturnFromGettingCompanyXML,CD_ReqFailure);
}

function CD_ReturnFromGettingCompanyXML()
{
  __AddEntity(__SelectSingleNode(__Resp,"CompanyInfo"));
  if(!__EntityExists("categories"))
  {
    __AddEntity(__SelectSingleNode(__Resp,"categories"));  
  }
  CD_ShowCompanyDlg();
}

function CD_UpdateCompany(companyXml)
{
  CD_Redirect=true;
  var reqData="<updateCompany>"+companyXml+"</updateCompany>";
  __MakeRequest(CD_ID,reqData,CD_HideCompanyDialog,CD_ReqFailure);
}

function CD_DeleteCompany()
{
  CD_Redirect=true;
  var reqData="<deleteCompany>"+CD_CompanyID+"</deleteCompany>";
  __MakeRequest(CD_ID,reqData,CD_HideCompanyDialog,CD_ReqFailure);
}

function CD_GetCategoryXML()
{
  var reqData="<getCategories />";
  __MakeRequest(CD_ID,reqData,CD_ReturnFromGettingCategoryXML,CD_ReqFailure);
}

function CD_ReturnFromGettingCategoryXML()
{
  __AddEntity(__SelectSingleNode(__Resp,"categories"));
  CD_ShowCategoryDlg();
}

function CD_UpdateCategory(categoryXml)
{
  CD_Redirect=true;
  var reqData="<updateCategory>"+categoryXml+"</updateCategory>";
  __MakeRequest(CD_ID,reqData,CD_HideCategoryDialog,CD_ReqFailure);
}

function CD_DeleteCategory()
{
  CD_Redirect=true;
  var reqData="<deleteCategory>"+CD_CategoryID+"</deleteCategory>";
  __MakeRequest(CD_ID,reqData,CD_HideCategoryDialog,CD_ReqFailure);
}

function CD_ReqFailure()
{
  var errorMessage=""
  try
  {
    errorMessage=__NodeValue(__Resp,"responseText");
  }
  catch(e){}
  if(errorMessage=="")
  {
    errorMessage="An unexpected error has occurred.";
  }
  __ShowMessage("Error",errorMessage,0,"Okay");
}
