<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
    <meta content="IE=edge" http-equiv="X-UA-Compatible" />

    <script type="text/javascript">
      window.headerstarttime = new Date();
    </script>

    <script
      src="https://code.jquery.com/jquery-3.4.0.min.js"
      integrity="sha256-BJeo0qm959uMBGb65z40ejJYGSgR7REI4+CW1fNKwOg="
      crossorigin="anonymous"
    ></script>
    <script
      src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.min.js"
      integrity="sha256-fLSBoJcwrE9XDsN3AvL6cM4Ze+yBEAVlxoF+sTZmp5Y="
      crossorigin="anonymous"
    ></script>
    <link
      rel="stylesheet"
      href="https://cdn.jsdelivr.net/npm/sweetalert2@8.14.0/dist/sweetalert2.min.css"
      integrity="sha384-YsmGiKlWaq3sIUC9UrvhWjrYU2tMXFSQh1IuJjFZSmeSzFOplGnWcZ2+u1LVb89d"
      crossorigin="anonymous"
    />
    <script
      src="https://cdn.jsdelivr.net/npm/promise-polyfill@7.1.0/dist/promise.min.js"
      integrity="sha384-005PDAIqkqwXU+AXeML/eBA7l58lCjKhvbg8P8ty+qjZmefaAmsHhAPffBPB2eHh"
      crossorigin="anonymous"
    ></script>
    <script
      type="text/javascript"
      src="https://cdn.jsdelivr.net/npm/sweetalert2@8.14.0/dist/sweetalert2.min.js"
    ></script>
    <script
      src="https://cdn.jsdelivr.net/npm/sweetalert2@8.14.0/dist/sweetalert2.min.js"
      integrity="sha384-fhb7KkIYTlZ6oSbA5ltLBiFEdKahM2KP27zu2aXQ8d5TqwNegpWNm/XPTCy+ggjC"
      crossorigin="anonymous"
    ></script>
    <script type="text/javascript" src="custom_ActOnLib.js"></script>
    <title>Home - MS Dynamics (Act-On Software)</title>

    <script type="text/javascript">
      var doEachPart,
        hbtHpRow = null,
        iMax = Number.MIN_VALUE,
        iMin = Number.MAX_VALUE;

      function getHotProspects(oData) {
        $(".selPeriod, .btnRefresh").removeAttr("disabled");
        $(".spProgress").hide();
        if (oData.status === "error") {
          $(".tblHP").hide();
          $(".dvNoHotProspects").show();
          alert("An error occurred\n" + oData.message);
        } else {
          var $tbl = $(".tblHP"),
            oa = oData.hotProspects,
            i,
            sTR;
          $(".tblHP tr:nth-child(n+2)").remove();
          if (!hbtHpRow) {
            hbtHpRow = Handlebars.compile($("#hbt-hprow").html());
          }
          if (oa.length > 0) {
            for (i = 0; i < oa.length; i++) {
              iScore = oa[i].score * 1;
              if (iMin > iScore) {
                iMin = iScore;
              }
              if (iMax < iScore) {
                iMax = iScore;
              }
            }
            doEachPart = (iMax - iMin) / 4;

            $(".tblHP").show();
            $(".dvNoHotProspects").hide();
            for (i = 0; i < oa.length; i++) {
              $tbl.append(hbtHpRow(oa[i]));
            }
          } else {
            $(".tblHP").hide();
            $(".dvNoHotProspects").show();
          }
        }
      }

      function viewContact(contactId, module) {
        parent.window.Xrm.Utility.openEntityForm(module, contactId);
      }

      function composeEmail(contactId, module) {
        SendEmail(module, null, contactId);
      }

      function viewHistory(
        contactId,
        module,
        emailAddress,
        firstName,
        lastName
      ) {
        var ssoData = fetchSSO(userId),
          e = encodeURIComponent,
          param =
            "fn=" +
            e(firstName) +
            "&ln=" +
            e(lastName) +
            "&email=" +
            e(emailAddress) +
            "&recId=" +
            e(contactId) +
            "&module=" +
            e(module.toLowerCase()) +
            "&extkey=" +
            e(ssoData["ssoid"]) +
            "&extkey1=" +
            e(ssoData["ssoextid"]) +
            "&sid=" +
            e(ssoData["sid"]) +
            "&user=" +
            e(ssoData["aologin"]) +
            "&org=" +
            e(parent.window.Xrm.Page.context.getOrgUniqueName());
			
		// 365 cloud view history truncation
		let ActOnUrlArray = ActOnUrl.split("/");
		//var ActOnUrlProspectHistory;
		if (ActOnUrlArray != null && ActOnUrlArray.length > 0) {
			ActOnUrl = "https://" + ActOnUrlArray[ActOnUrlArray.length - 1];
		}

        window.open(
          ActOnUrl + "/acton/msdynamics/extActivityHistory.jsp?" + param
        );
      }

      var ActOnUrl;
      function authenticateViaSSO() {
        var ssoData = fetchSSO(userId);
        ActOnUrl = ssoData.aoUrl;
        return {
          userId: userId,
          sid: ssoData.sid,
          extkey: ssoData.ssoid,
          extkey1: ssoData.ssoextid,
          user: ssoData.aologin,
          fn: ssoData.firstname,
          ln: ssoData.lastname
        };
      }

      function retrieve() {
        $(".selPeriod, .btnRefresh").attr("disabled", "disabled");
        $(".spProgress").show();
        var ssoData = JSON.stringify(authenticateViaSSO());
        var urlEncodedSsoData = encodeURIComponent(ssoData);
        var hotProspectsUrl =
          "https://" +
          ActOnUrl +
          "/acton/msdynamics/extProspects.jsp?data=" +
          urlEncodedSsoData +
          "&days=" +
          $(".selPeriod").val();
        $.ajax({
          url: hotProspectsUrl,
          dataType: "jsonp",
          jsonpCallback: "getHotProspects"
        })
          .always(function() {
            $(".selPeriod, .btnRefresh").removeAttr("disabled");
            $(".spProgress").hide();
          })
          .fail(function(jqXHR, textStatus, errorThrown) {
            console.log(errorThrown);
          });
      }

      /**
       * Utility function to make text title case
       */
      function makeFirstUpper(sValue) {
        return sValue
          ? sValue.charAt(0).toUpperCase() + sValue.substring(1)
          : sValue;
      }

      function jsEncode(sValue) {
        return sValue;
      }

      function scoreGroup(sScore) {
        var group =
          doEachPart === 0 ? 4 : Math.ceil((sScore * 1 - iMin) / doEachPart);
        if (group <= 0) group = 1;
        return group;
      }

      $(document).ready(function() {
        Handlebars.registerHelper("makeFirstUpper", makeFirstUpper);
        Handlebars.registerHelper("jsEncode", jsEncode);
        Handlebars.registerHelper("scoreGroup", scoreGroup);
        Init();
        retrieve();
      });
    </script>

    <!-- HANDLEBAR TEMPLATE TO RENDER ONE ROW OF HOT PROSPECTS -->
    <script id="hbt-hprow" type="text/x-handlebars-template">
      <tr>
        <td class="dollars{{scoreGroup score}}"></td>
        <td><a href="javascript:void(0)" onclick="viewContact('{{jsEncode externalId}}', '{{jsEncode type}}')">{{{firstName}}} {{{lastName}}}</a></td>
        <td class="user-{{type}}">{{{makeFirstUpper type}}}</td>
        <td><a href="javascript:void(0)" onclick="composeEmail('{{jsEncode externalId}}', '{{jsEncode type}}')">{{{emailAddress}}}</a></td>
        <td>{{{company}}}</td>
        <td>{{{score}}}</td>
        <td>{{{lastActivity}}}</td>
        <td><a href="javascript:void(0)" onclick="viewHistory('{{jsEncode externalId}}', '{{jsEncode type}}', '{{jsEncode emailAddress}}', '{{jsEncode firstName}}', '{{jsEncode lastName}}')">history</a></td>
      </tr>
    </script>

    <style>
      td,
      div,
      select,
      button {
        font-family: Verdana, Arial, Helvetica;
        font-size: 11px;
      }

      .tblHP tr th {
        text-align: left;
        font-size: 13px;
        font-weight: bold;
        color: #2880bb;
        white-space: nowrap;
        border-bottom: 1px solid #ddd;
      }

      .tblHP tr td,
      .tblHP tr th {
        padding: 5px 25px 5px 0px;
      }

      .tblHP tr td:nth-child(3) {
        background-repeat: no-repeat;
        padding-left: 20px;
        background-position-y: 3px;
      }

      .user-lead {
        background-image: url(custom_lead.png);
      }

      .user-contact {
        background-image: url(custom_contact.png);
      }

      .user-opportunity {
        background-image: url(custom_opportunity.png);
      }

      .tblHP tr td:nth-child(4) {
        background-image: url(custom_email.png);
        background-repeat: no-repeat;
        padding-left: 20px;
        background-position-y: 3px;
      }

      .tblHP tr td:nth-child(6) {
        text-align: center;
      }

      .tblHP tr td:nth-child(7) {
        text-align: right;
      }

      .dvNoHotProspects {
        padding: 10px 15px 0px 0px;
        color: red;
      }

      .spTitle {
        color: #ff6600;
        font-family: Arial, Verdana, Helvetica;
        font-size: 18px;
        font-weight: bold;
        white-space: nowrap;
        margin-right: 20px;
      }

      .dvDescription {
        color: #666;
        width: 700px;
        text-align: left;
      }

      .dollars0,
      .dollars1,
      .dollars2,
      .dollars3,
      .dollars4 {
        background-repeat: no-repeat, no-repeat, no-repeat, no-repeat;
        background-position: 0px center, 15px center, 30px center, 45px center;
      }

      .dollars4 {
        background-image: url(custom_dollar.png), url(custom_dollar.png),
          url(custom_dollar.png), url(custom_dollar.png);
      }
      .dollars3 {
        background-image: url(custom_dollar.png), url(custom_dollar.png),
          url(custom_dollar.png), url(custom_nodollar.png);
      }
      .dollars2 {
        background-image: url(custom_dollar.png), url(custom_dollar.png),
          url(custom_nodollar.png), url(custom_nodollar.png);
      }
      .dollars1 {
        background-image: url(custom_dollar.png), url(custom_nodollar.png),
          url(custom_nodollar.png), url(custom_nodollar.png);
      }
      .dollars0 {
        background-image: url(custom_nodollar.png), url(custom_nodollar.png),
          url(custom_nodollar.png), url(custom_nodollar.png);
      }

      a:hover {
        color: red;
      }

      .btnRefresh {
        background-image: url(custom_arrow_refresh.png);
        background-repeat: no-repeat;
        padding: 5px 5px 5px 25px;
        background-position: 4px center;
        margin-left: 5px;
      }

      .spProgress {
        background-image: url(custom_dotdotdot_rotating_arrow.gif);
        background-repeat: no-repeat;
        background-position: 4px center;
        padding: 20px;
        display: none;
      }
    </style>
    <meta />
  </head>
  <body style="overflow-wrap: break-word;">
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tbody>
        <tr>
          <td>
            <table border="0" cellspacing="0" cellpadding="0" width="100%">
              <tbody>
                <tr>
                  <td valign="top">
                    <table
                      border="0"
                      class="table_fields"
                      cellspacing="0"
                      cellpadding="0"
                      data-colnumber="1"
                    >
                      <tbody>
                        <tr>
                          <td colspan="2" class="text">
                            <span id="custpage_main_val">
                              <div
                                style="height: 100%; width: 100%; padding-top: 15px; padding-left: 10px"
                              >
                                <div
                                  style="padding-left:10px;padding-right: 10px;"
                                >
                                  <div style="vertical-align: middle">
                                    <span class="spTitle">Hot Prospects</span>
                                    <select
                                      class="selPeriod"
                                      onchange="retrieve()"
                                    >
                                      <option value="1">Last 1 day</option>
                                      <option value="3">Last 3 days</option>
                                      <option value="7" selected="selected"
                                        >Last 7 days</option
                                      >
                                      <option value="10">Last 10 days</option>
                                      <option value="15">Last 15 days</option>
                                      <option value="30">Last 30 days</option>
                                      <option value="60">Last 60 days</option>
                                      <option value="90">Last 90 days</option>
                                    </select>
                                    <button
                                      class="btnRefresh"
                                      onclick="retrieve()"
                                    >
                                      Refresh
                                    </button>
                                    <span class="spProgress"></span>
                                  </div>
                                  <br />
                                  <div class="dvDescription">
                                    This is a prioritized list of your currently
                                    most active and engaged leads and contacts,
                                    based on the types of activities and scores
                                    outlined in your score sheet.
                                  </div>
                                  <br />
                                  <table class="tblHP">
                                    <thead>
                                      <tr>
                                        <th>Priority</th>
                                        <th>Name</th>
                                        <th>Type</th>
                                        <th>Email Address</th>
                                        <th>Company</th>
                                        <th>Lead Score</th>
                                        <th>Last Activity</th>
                                        <th></th>
                                      </tr>
                                    </thead>
                                    <tbody></tbody>
                                  </table>
                                  <div class="dvNoHotProspects">
                                    No hot prospects were found.<br />
                                    Select a different date range and try again?
                                  </div>
                                </div>
                              </div></span
                            >
                          </td>
                        </tr>
                      </tbody>
                    </table>
                  </td>
                </tr>
              </tbody>
            </table>
          </td>
        </tr>
      </tbody>
    </table>
  </body>
</html>
