/// <reference path="LaunchNetClientBase.js"/>
/// <reference path="BrowserServices.js"/>
/// <reference path="ErrorServices.js"/>
/// <reference path="ClientProxyServices.js"/>
/// <reference path="LaunchNetClientContext.js"/>
/// <reference path="PlatformServices.js"/>


//the following are variables for which values are injected
//var __yourVariable;


function SprycelServices()
{
  var commands = new LaunchNetServiceCommands();
  commands.Add("YourCommandName");
  commands.Add("SprycelSplashHCPParticipantSubmit");
  
  this.OnPageLoad = OnPageLoad;
  this.OnPageClick = OnPageClick;
  this.OnValidationRequiredCheck = OnValidationRequiredCheck;
  this.OnValidateLaunchNetElements = OnValidateLaunchNetElements;
  this.SprycelSplashHCPParticipantSubmit = SprycelSplashHCPParticipantSubmit;

  var ficoServices = new FicoServices();
  var platformServices = new PlatformServices();

  this.YourCommandName = YourCommandName;

/* ***********************************************************************************
-  Page Load Event
************************************************************************************ */

  function OnPageLoad()
  {
  
  }

/* ***********************************************************************************
-  Page Click Event
************************************************************************************ */

  function OnPageClick(launchNetElementClicked, pageValid)
  {
 
    commands.HandlePageClick(this, launchNetElementClicked, pageValid);
  }

  function YourCommandName()
  {
    //your functionality here, performed on YourCommandName
  }

/* ***********************************************************************************
-  Page Validation
************************************************************************************ */

  function OnValidationRequiredCheck(launchNetElementClicked) {
  
    return commands.HandleValidationRequiredCheck(launchNetElementClicked);
    //return true if the incoming launchNetElementClicked indicates a need to perform validation
    //note that launchNetElementClicked is of type LaunchNetElement (see LaunchNetClientBase.js)
  }

  function OnValidateLaunchNetElements(validatableLaunchNetElements) {  
    //validate any special elements here; return true if validation successful
      var launchNetElementsValid1 = ficoServices.OnValidateLaunchNetElements(validatableLaunchNetElements);
      var launchNetElementsValid2 = platformServices.OnValidateLaunchNetElements(validatableLaunchNetElements);
      var bValid = true;
     
      if ((document.getElementById("Submit[ParticipantSubmit]") != null)) 
      {
         
            var custerrorcount=0;
            if ((document.getElementById("error_Email<10028050,OPEN>Error") != null) ||
                (document.getElementById("error_ConfirmEmailError") != null) ||
                (document.getElementById("error_prof<10028064,ID>Error") != null) ||
                (document.getElementById("dateErrorid") != null) ||
                (document.getElementById("dateErroridreq") != null)) 
                    {
                    custerrorcount = custerrorcount + 1;          
                    }
          if ((!launchNetElementsValid1)||(custerrorcount>0))
          {       
            
              //document.getElementById("divFieldsValidate").style.display = "block";
          }
          else 
          {
             // document.getElementById("divFieldsValidate").style.display = "none";
          }         
          return launchNetElementsValid1;
      }
        
       //Consumer journey Start
        else if ((document.getElementById("Submit[ParticipantSubmit('35612')]") != null)) 
        {
          var summary = document.getElementById("summarymessage");
   	      var summarysub = document.getElementById("summarymessagesub");
   	      var dob = ValidateDOB();
   	      if (dob == false) 
   	      {
   	        bValid=false;
   	      }
          highlightsummary(summary, launchNetElementsValid1, launchNetElementsValid2, bValid);
          highlightsummary(summarysub, launchNetElementsValid1, launchNetElementsValid2, bValid);
          	
          return launchNetElementsValid1 && launchNetElementsValid2 && bValid ;
        }
      //Consumer journey End 
      
       //"Start sprycel-dasatinib-registration.aspx" summery error message
        else if ((document.getElementById("Submit[ParticipantSubmit('21643')]") != null)) 
        {
          if(ValidateConsumerDasatinibRegistrationCustome())
          {
            bValid=true;
          } 
          else 
          {
            bValid=false;
          }       

          var summary = document.getElementById("summarymessage");
   	      var summarysub = document.getElementById("summarymessagesub");
   	      var dob = ValidateDOB();
   	      if (dob == false) 
   	      {
   	        bValid=false;
   	      }
          highlightsummary(summary, launchNetElementsValid1, launchNetElementsValid2, bValid);
          highlightsummary(summarysub, launchNetElementsValid1, launchNetElementsValid2, bValid);
          	
          return launchNetElementsValid1 && launchNetElementsValid2 && bValid ;
        }
       //"End sprycel-dasatinib-registration.aspx" summery error message 
      
      //Sprycel HCP nd reg page
      
      else if ((document.getElementById("Submit[SprycelSplashHCPParticipantSubmit]") != null)){
       if (!launchNetElementsValid1 || !launchNetElementsValid2) 
          {
              document.getElementById("summsg").style.color = "Red";
          }
          else 
          {
              document.getElementById("summsg").style.color = "#2C2C2C";
          }
          return (launchNetElementsValid1 && launchNetElementsValid2);
      
      }
      //End
      else 
      {
          if (!launchNetElementsValid1 || !launchNetElementsValid2) 
          {
              //document.getElementById("divFieldsValidate").style.display = "block";
          }
          else 
          {
              //document.getElementById("divFieldsValidate").style.display = "none";
          }
          return (launchNetElementsValid1 && launchNetElementsValid2);
      }   
      
      
               
  }
  
  function highlightsummary(tagid, launchNetElementsValid1, launchNetElementsValid2, bValid)
  {
    if (tagid != null)
    {
      if (!(launchNetElementsValid1 && launchNetElementsValid2 && bValid))
      {
          tagid.style.display = "";
          tagid.style.color = "#ff0000";
      }
      else
      {
          tagid.style.display = "none";                
      }
    }
  }
  
  function ValidateConsumerDasatinibRegistrationCustome()
  {
    var diogniseddateerror=document.getElementById("Diagnoseddate<14000399,OPEN>Error");
    var diogniseddatemonth=document.getElementById("dmonth");
    var diogniseddateyear=document.getElementById("dyear");
    
   
    //When were you diagnosed with CML? validation Start
    if((diogniseddatemonth.selectedIndex == 0 && diogniseddateyear.selectedIndex != 0)||
       (diogniseddatemonth.selectedIndex != 0 && diogniseddateyear.selectedIndex == 0))
    {
        diogniseddateerror.style.display = "inline";
        bValid=false;
    }
    else
    {
        diogniseddateerror.style.display = "none";  
        bValid=true;      
    }
    
    //When were you diagnosed with CML? validation End
    
    
     return bValid;   
  }
  
  
  function SprycelSplashHCPParticipantSubmit() {
   
      //obtain data for participant
      var firstName = GetLaunchNetElementById("FirstName").GetValue();
      var lastName = GetLaunchNetElementById("LastName").GetValue();
      var address1 = GetLaunchNetElementById("Address1").GetValue();
      var city = GetLaunchNetElementById("City").GetValue();
      var state = GetLaunchNetElementById("State").GetValue();
      var zip = GetLaunchNetElementById("Zip").GetValue();

      //as some elements are optional, we'll provide an empty string if the apropriate element cannot be found
      var prefixElement = document.getElementById("Prefix");
      var suffixElement = GetLaunchNetElementById("Suffix");
      var middleInitialElement = GetLaunchNetElementById("MiddleInitial");
      var address2Element = GetLaunchNetElementById("Address2");

      var prefix = prefixElement == null ? "" : prefixElement.value;
      var middleInitial = middleInitialElement == null ? "" : middleInitialElement.GetValue();
      var suffix = suffixElement == null ? "" : suffixElement.GetValue();
      var address2 = address2Element == null ? "" : address2Element.GetValue();

        var treatmentCode;
        //get elements for checking whether HCP or patient

        var occupationElement= document.getElementById("prof<10028064,ID>{Required/AutoInject}");
        var selectedOption= occupationElement.options[occupationElement.selectedIndex].value;
        
        if (selectedOption== "10004036"){
        treatmentCode = "2002957";
        }
        else {
        treatmentCode = "21586";
        }
      //var treatmentCode = (typeof treatmentCode == "undefined") ? "" : treatmentCode;

      //submit participant
      var response = __context.GetServiceClientProxy('FicoServices').AddParticipant
      (
      prefix
      , firstName
      , middleInitial
      , lastName
      , suffix
      , address1
      , address2
      , city
      , state
      , zip
      , treatmentCode
      );

      if (response.error != null || response.value == null) {
          __context.RedirectToErrorPage();
          return false;
      }

      //also submit any participant answers on the page
      return ficoServices.ParticipantAnswerSubmit();
  }
}
