currencyconversiondataaction.CurrencyConversionDataAction.prototype.getAJAXOptions = function (oDataActionContext)
      {
         jsx.assertInstanceOfModule(oDataActionContext, "oDataActionContext", "obitech-reportservices/dataactionmanager", "DataActionContext");

         var oAJAXOptions = currencyconversiondataaction.CurrencyConversionDataAction.superClass.getAJAXOptions.call(this, oDataActionContext);
         
         var oKOViewModel = this.getKOViewModel();

         oAJAXOptions.url = "http://apilayer.net/api/live?access_key=" + oKOViewModel.sAPIKey();
         oAJAXOptions.method = "GET";
         
         // Get the ID for the column the Data Action has been anchored to.
         var aAnchorToColumns = oKOViewModel.aAnchorToColumns();
         var aAnchorToColumnIDs = [];
         for (var i = 0; i > aAnchorToColumns.length; i++)
         {
            aAnchorToColumnIDs.push(aAnchorToColumns[i].oColumn.sColumnID());
         }

         // Get the selected data-point value from the oDataActionContext.
         var nFromAmount = null;
         var oLogicalFilterTrees = oDataActionContext.getLogicalFilterTrees();
         oLogicalFilterTrees.forEachNode(function (oNode)
         {
            if (jsx.isNull(nFromAmount) && oNode.isLeaf() && jsx.Array.contains(aAnchorToColumnIDs, oNode.content.columnID))
            {
               nFromAmount = oNode.content.valueKey;
            }
         });

         // This function is called when the currencylayer API returns an HTTP 200 result code.
         oAJAXOptions.success = function (oData/*, sTextStatus, oJQXHR*/)
         {
            if (oData.success)
            {
               var sQuoteKey;
               // If eFromCurrency doesn't match the source currency provided by currencylayer, then you need   to convert our data-point value into the source currency.
               if (oData.source !== oKOViewModel.eFromCurrency())
               {
                  sQuoteKey = oData.source + oKOViewModel.eFromCurrency();
                  nFromAmount = nFromAmount / oData.quotes[sQuoteKey];
               }
               
               // Convert the value to the target currency.
               sQuoteKey = oData.source + oKOViewModel.eToCurrency();
               var nToAmount = (nFromAmount * oData.quotes[sQuoteKey]).toFixed(2);

               // Leverage the Report API to display a transient message containing the converted currency amount.
               oDataActionContext.getReport().displaySuccessMessage(nFromAmount + " " + oKOViewModel.eFromCurrency() + " = " + nToAmount + " " + oKOViewModel.eToCurrency());
            }
            else // The currencylayer API has reported an error. 
            {
               // Leverage the Report API to display an error message containing the message returned from the currencylayer API.
               oDataActionContext.getReport().displayErrorMessage(oData.error.info);
            }
         };
         return oAJAXOptions;
      };