<HTML><HEAD><TITLE>North52 Formula Manager Notifications</TITLE>
<SCRIPT src="ClientGlobalContext.js.aspx"></SCRIPT>

<SCRIPT type=text/javascript src="north52_/javascript/jquery"></SCRIPT>

<SCRIPT type=text/javascript src="north52_/javascript/north52_dialog_helper"></SCRIPT>

<SCRIPT type=text/javascript src="north52_/javascript/JSON2">
</SCRIPT>
<LINK rel=stylesheet type=text/css href="/_common/styles/fonts.css.aspx?lcid=1033"><LINK rel=stylesheet type=text/css href="/_common/styles/global.css.aspx?lcid=1033"><LINK rel=stylesheet type=text/css href="/_common/styles/select.css.aspx?lcid=1033">
<SCRIPT type=text/javascript>


function getQuerystring(key)
{
    var work = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regex = new RegExp("[\\?&]"+work+"=([^&#]*)");
    var qs = regex.exec(window.location.href);
    if (qs == null) return null;
    return qs[1];
}


function PerformCalculation(formula) {

        var serverUrl = N52.DialogHelpers.GetServerUrl();
       
         ODataPath = serverUrl + "/XRMServices/2011/OrganizationData.svc";


    //Calls the REST endpoint to Create a new North52 Config
    var jsonNorth52Config = window.JSON.stringify(CreateNorth52FormulaCalculation(formula));

    $.ajax({ type: "POST",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        url: ODataPath + "/north52_formulacalculationSet",
        data: jsonNorth52Config,
        beforeSend: function (XMLHttpRequest) {XMLHttpRequest.setRequestHeader("Accept", "application/json");
        },
        success: function (data, textStatus, XmlHttpRequest) {
           result = data.d.north52_Result;
           formulatype = data.d.north52_FormulaType;
         
            if ((result != 'False') && (result != 'NoOp') )
            {        
           
            if (formulatype == '217890010')
              DisplayMessage(result, 'info');
            else if (formulatype == '217890008')
                DisplayMessage(result, 'warn');
            else
                DisplayMessage(result, 'error');
            }

        },
        error: function (XmlHttpRequest, textStatus, errorThrown) {
            var calculatednotifications = document.getElementById("calculatednotifications");
            calculatednotifications.value = "??";
        }
    });  




}

function DisplayMessage(message, mode) {

var boxId = "n52formulamanager";    


if (!message || message=="") {return;}

var messagedisplay = document.createElement("DIV");
messagedisplay.style.height = "16px";
messagedisplay.style.display = "table-cell";
messagedisplay.style.verticalAlign = "middle";
messagedisplay.id = boxId;
messagedisplay.style.border = "1px solid #f1c43f ";

if (N52.DialogHelpers.IsUR12Plus() == false)
   messagedisplay.style.width = "100%";
else
   messagedisplay.style.width = "2500px";


var colour = "#000000";


switch (mode) {

case "info":
messagedisplay.style.background = "#ffffae url('/_imgs/error/notif_icn_info16.png') 16px 55% no-repeat";
messagedisplay.style.borderColor = "#f1c43f ";
break;

case "warn":
messagedisplay.style.background = "#ffffae url('/_imgs/error/notif_icn_warn16.png') 16px 55% no-repeat";
messagedisplay.style.borderColor = "#f1c43f ";
break;

default:
messagedisplay.style.background = "#ffffae url('/_imgs/error/notif_icn_crit16.png') 16px 55% no-repeat";
messagedisplay.style.borderColor = "#f1c43f ";
break;

}

messagedisplay.innerHTML = "<table cellpadding=0 cellspacing=0 border=0 width=100% height=100%><tr width=100% height=100%><td width=100% height=100% valign=middle style=\"font-size: 14px; color: " + colour + ";\">     " + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + message + "</td></tr></table>";

parent.document.getElementById("crmFormTabContainer").insertBefore(messagedisplay, parent.document.getElementById("crmFormTabContainer").firstChild);

}

function CreateNorth52FormulaCalculation(formula)
 {

    var north52FormulaCalculation = new Object();

    north52FormulaCalculation.north52_name = formula;
    north52FormulaCalculation.north52_TargetEntityID = parent.Xrm.Page.data.entity.getId();
        
    return north52FormulaCalculation ;

}

function onLoad()
{

  if ((parent != null) && (parent.Xrm.Page != null) && (parent.Xrm.Page.ui != null) )
   {
           var childNodesCount = parent.document.getElementById("crmNotifications").childNodes.length;

           if (childNodesCount == 0)
           { 
             if  ( (parent.Xrm.Page.ui.getFormType() == 2)  || (parent.Xrm.Page.ui.getFormType() == 3) || (parent.Xrm.Page.ui.getFormType() == 4) )
             { 
                  RetrieveExecuteFormulas();
             }
           }
   
        var calculatednotifications = parent.Xrm.Page.getControl("WebResource_Notifications").getObject().contentWindow.document.getElementById("calculatednotifications");
        if (calculatednotifications.value != "??")
        {
          var controlname = self.self.frameElement.id;
          var control = parent.Xrm.Page.ui.controls.get(controlname); 
          control.setVisible(false);
         }
   } 
}

function RetrieveExecuteFormulas()
 {   //Get the any query string parameters and load them
            //into the vals array


            var  formula = "";
            var vals = new Array();
            if (location.search != "")
            {
                vals = location.search.substr(1).split("&");
                for (var i in vals)
                {
                    vals[i] = vals[i].replace(/\+/g, " ").split("=");
                }
                //look for the parameter named 'data'
                var found = false;
                for (var i in vals)
                {
                    if (vals[i][0].toLowerCase() == "data")
                    {
                       
                         datavalue =  vals[i][1];

                          vals = decodeURIComponent(datavalue).split("&");
                          for (var i in vals)
                         {
                                vals[i] = vals[i].replace(/\+/g, " ").split("=");
                     
                                formula = vals[i][0];
                                formula  = formula.replace("[","");
                                formula  = formula.replace("]","");
                                PerformCalculation(formula);
                          }
                       
                        found = true;
                        break;
                    }
                }
           
            }
        
         }

</SCRIPT>

<META charset=utf-8></HEAD>
<BODY onload=onLoad();>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD id=calculatednotifications_td><INPUT style="WIDTH: 100%; IME-MODE: auto" id=calculatednotifications class=ms-crm-Text req="0"> </TD></TR></TBODY></TABLE></BODY></HTML>