if (typeof (N52) == "undefined")
{ N52 = {}; } 

N52.Schedule =
{    
 Load: function ()
 {
  try{

         N52.Schedule.SetVisibilityForFrequencyType();
         N52.Schedule.SetVisibilityForScheduleType();
         
         window.top.moveTo(0,0);
         window.top.resizeTo(screen.availWidth, screen.availHeight);
       
         Xrm.Page.ui.controls.get('north52_name').setFocus();
  
         if ((typeof Xrm.Page.ui.clearFormNotification  == "undefined") && (Xrm.Page.ui.formSelector.getCurrentItem().getLabel() == "CRM2011") )
         {     
                 Xrm.Page.ui.tabs.get("tab_query").setVisible(true);
                 var finalUrl = N52.DialogHelpers.GetServerUrl() + "/main.aspx?extraqs=&pagetype=advancedfind";
                 Xrm.Page.ui.controls.get("IFRAME_advancedfind").setVisible(true);
                 Xrm.Page.getControl("IFRAME_advancedfind").setSrc(finalUrl);
         }

           //Only on creates
          if (Xrm.Page.ui.getFormType() == 1) 
           {
                 Xrm.Page.getAttribute("north52_startdatetime").setValue(new Date());
                 Xrm.Page.getAttribute("north52_querydelayinterval").setValue(0);
                 Xrm.Page.getAttribute("north52_queryrecordlimit").setValue(250);
                 Xrm.Page.getAttribute("north52_currentexecutioncount").setValue(0);
                 Xrm.Page.getAttribute("north52_currentpagecount").setValue(0);
                 Xrm.Page.getAttribute("north52_minpagecount").setValue(1);
                 Xrm.Page.getAttribute("north52_maxinfiniteloopdepth").setValue(8);
                 Xrm.Page.getAttribute("north52_mininactiveseconds").setValue(3600);
                 Xrm.Page.getAttribute("north52_fetchxmlquerylimit").setValue(5000);
           }

         
       Xrm.Page.getAttribute("north52_query").setSubmitMode("always");
       Xrm.Page.getAttribute("north52_layout").setSubmitMode("always");
       Xrm.Page.getAttribute("north52_savedviewid").setSubmitMode("always");
       
     }
  catch(ex)
  {
    alert("North52 Formula Manager Exception:: " + ex.message);
  } 

 },


SetProperty: function(name, value) 
{

      try{
        var attribute = Xrm.Page.data.entity.attributes.get(name);
         attribute.setValue(value);
       }
       catch(ex)
        {
             alert("North52 Formula Manager Exception: " + ex.message);
        } 

},

SetVisibilityForScheduleType: function()
 {
    var scheduletype = Xrm.Page.data.entity.attributes.get("north52_scheduletype").getValue();
   Xrm.Page.getAttribute("north52_query").setRequiredLevel('required');

     if (scheduletype == 217890000)   
     {
         Xrm.Page.getAttribute("north52_workflowid").setRequiredLevel('required');
         Xrm.Page.ui.controls.get("north52_workflowid").setVisible(true);
         Xrm.Page.ui.tabs.get("FetchXmlQuery").setVisible(true);
     }
     else if (scheduletype == 217890002) 
      {
          Xrm.Page.getAttribute("north52_query").setRequiredLevel('none');
          Xrm.Page.getAttribute("north52_workflowid").setRequiredLevel('required');
          Xrm.Page.ui.controls.get("north52_workflowid").setVisible(true);
          Xrm.Page.ui.tabs.get("FetchXmlQuery").setVisible(false);
     }
     else if (scheduletype == 217890001) 
      {
         Xrm.Page.getAttribute("north52_workflowid").setRequiredLevel('none');
         Xrm.Page.ui.controls.get("north52_workflowid").setVisible(false);
         Xrm.Page.ui.tabs.get("FetchXmlQuery").setVisible(true);
     }
     else
        Xrm.Page.ui.controls.get("north52_workflowid").setVisible(false);

},

 SetVisibilityForFrequencyType: function ()
 {
   var frequency = Xrm.Page.data.entity.attributes.get("north52_frequency").getValue();
    Xrm.Page.getAttribute("north52_everyx").setRequiredLevel('none');


     if (frequency  == 217890000)   
         Xrm.Page.ui.controls.get("north52_everyx").setVisible(false);
     else if (frequency  == 217890002) 
         Xrm.Page.ui.controls.get("north52_everyx").setVisible(false);
     else if (frequency  == 217890003) 
         Xrm.Page.ui.controls.get("north52_everyx").setVisible(false);
     else if (frequency  == 217890004) 
         Xrm.Page.ui.controls.get("north52_everyx").setVisible(false);
     else if (frequency  == 217890005) 
         Xrm.Page.ui.controls.get("north52_everyx").setVisible(false);
     else if (frequency  == 217890006) 
         Xrm.Page.ui.controls.get("north52_everyx").setVisible(false);
     else if (frequency  == 217890007) 
         Xrm.Page.ui.controls.get("north52_everyx").setVisible(false);
     else
     {
        Xrm.Page.getAttribute("north52_everyx").setRequiredLevel('required');
        Xrm.Page.ui.controls.get("north52_everyx").setVisible(true);
     }
 },

AdvancedToggle: function ()
 {        

    try
    {          
        if ( Xrm.Page.ui.tabs.get("General").sections.get("PagingSettings").getVisible() ) {
               Xrm.Page.ui.tabs.get("General").sections.get("PagingSettings").setVisible(false);
               Xrm.Page.ui.tabs.get("General").sections.get("DescriptionSettings").setVisible(false);
               Xrm.Page.ui.controls.get("north52_maxexecutioncount").setVisible(false);
                Xrm.Page.ui.controls.get("north52_currentexecutioncount").setVisible(false);
                Xrm.Page.ui.controls.get("north52_stopschedule").setVisible(false);
                Xrm.Page.ui.controls.get("north52_mininactiveseconds").setVisible(false);
                Xrm.Page.ui.controls.get("north52_scheduleparentid").setVisible(false);
                Xrm.Page.ui.controls.get("north52_category").setVisible(false);
                Xrm.Page.ui.controls.get("north52_subcategory").setVisible(false);
                Xrm.Page.ui.controls.get("north52_description").setVisible(false);
                Xrm.Page.ui.controls.get("north52_queryrecordlimit").setVisible(false);
                Xrm.Page.ui.controls.get("north52_querydelayinterval").setVisible(false);
                Xrm.Page.ui.controls.get("north52_executeworkflowactiononce").setVisible(false);
                Xrm.Page.ui.controls.get("north52_originalexecutionstartdatetime").setVisible(false);
                Xrm.Page.ui.controls.get("north52_daystarttime").setVisible(false);
                Xrm.Page.ui.controls.get("north52_dayendtime").setVisible(false);

        }
        else {
                 Xrm.Page.ui.controls.get("north52_stopschedule").setVisible(true);
                 Xrm.Page.ui.tabs.get("General").sections.get("PagingSettings").setVisible(true);
                 Xrm.Page.ui.tabs.get("General").sections.get("DescriptionSettings").setVisible(true);
                 Xrm.Page.ui.controls.get("north52_maxexecutioncount").setVisible(true);
                 Xrm.Page.ui.controls.get("north52_currentexecutioncount").setVisible(true);
                 Xrm.Page.ui.controls.get("north52_stopschedule").setVisible(true);
                 Xrm.Page.ui.controls.get("north52_mininactiveseconds").setVisible(true);
                 Xrm.Page.ui.controls.get("north52_scheduleparentid").setVisible(true);
                 Xrm.Page.ui.controls.get("north52_category").setVisible(true);
                Xrm.Page.ui.controls.get("north52_subcategory").setVisible(true);
                Xrm.Page.ui.controls.get("north52_description").setVisible(true);
                Xrm.Page.ui.controls.get("north52_queryrecordlimit").setVisible(true);
                Xrm.Page.ui.controls.get("north52_querydelayinterval").setVisible(true);
                Xrm.Page.ui.controls.get("north52_executeworkflowactiononce").setVisible(true);
                Xrm.Page.ui.controls.get("north52_originalexecutionstartdatetime").setVisible(true);
                Xrm.Page.ui.controls.get("north52_daystarttime").setVisible(true);
                Xrm.Page.ui.controls.get("north52_dayendtime").setVisible(true);

              }

   }
   catch(ex)
   { alert(ex.message);}

  },

NonInternetExplorerVersion: function ()
 {                  
        
    Xrm.Page.ui.controls.get("north52_pipelineevent").setVisible(false);
    Xrm.Page.ui.controls.get("WebResource_html_sourceentity").setVisible(false);
    Xrm.Page.ui.controls.get("WebResource_html_metadata_sourceproperty").setVisible(false);
    Xrm.Page.ui.controls.get("WebResource_html_sourcerelationship").setVisible(false);
    Xrm.Page.ui.controls.get("WebResource_html_targetentity").setVisible(false);
    Xrm.Page.ui.controls.get("WebResource_html_metadata_targetproperty").setVisible(false);
    Xrm.Page.ui.controls.get("north52_displayformat").setVisible(false);
    Xrm.Page.ui.controls.get("north52_validationmessage").setVisible(false);
    Xrm.Page.ui.controls.get("north52_autonumbervalue").setVisible(false);
    Xrm.Page.ui.controls.get("north52_name").setVisible(false);
    Xrm.Page.ui.controls.get("north52_formulatype").setVisible(false);
      
      Xrm.Page.ui.tabs.forEach(function (control, index) {
          control.setVisible(false);

       });

     Xrm.Page.ui.tabs.get('N52NonIEMessage').setVisible(true);
     Xrm.Page.ui.controls.get("WebResource_html_formula_nonie").setVisible(true);

  },


SetFetchXmlQuery: function(ExecutionObj)
{


   try
 {

   var eventArgs = ExecutionObj.getEventArgs();

   if (eventArgs.getSaveMode() == 70)
   {
        eventArgs.preventDefault();
        return;
   }

  
 
  if  (Xrm.Page.ui.formSelector.getCurrentItem().getLabel() == "CRM2011") 
  {
 
        Xrm.Page.data.entity.attributes.get("north52_name").setSubmitMode("always");
        var query = Xrm.Page.data.entity.attributes.get("north52_query").getValue();  
        var paramContent = "contentIFrame";

        if (document.getElementById("IFRAME_advancedfind") == null) return;
        var exists = document.getElementById("IFRAME_advancedfind").contentWindow.document.getElementById(paramContent);

        if ((exists == null) || (typeof(exists ) == 'undefined') ) paramContent = "contentIFrame0";

        var fetchxml = document.getElementById("IFRAME_advancedfind").contentWindow.document.getElementById(paramContent).contentWindow.document.getElementById("resultRender").FetchXml.value;
        var layoutxml = document.getElementById("IFRAME_advancedfind").contentWindow.document.getElementById(paramContent).contentWindow.document.getElementById("resultRender").LayoutXml.value;

       if ((fetchxml != null) && (fetchxml.length  != 0))
       {
           N52.Schedule.SetProperty("north52_query", fetchxml);
           N52.Schedule.SetProperty("north52_layout", layoutxml);
        } 
        else if ((query == null) || (query .length  == 0))
         {
          alert('North52 Formula Manager::: You must build an Advanced Find Query & Execute it by, clicking the red exclamation button before you can save this record.' );

            if (ExecutionObj != null)
            { 
               ExecutionObj.getEventArgs().preventDefault();
            } 
        }

    }
   
  }
  catch(ex)
  {
    alert("North52 Formula Manager Exception: " + ex.message);
  }       


} //End functions   

}