﻿

function DoOnChange(controlPrefix, ipAddress)
{   
  //  if(document.getElementById("hidBrokerGuid").value.trim().length > 1)
      //  return;
        
    if (ValidateForm(controlPrefix))    
    {
    
        xmlHttp = GetXmlHttpObject();
        
        if (xmlHttp==null)
        {
            alert ("Your browser does not support AJAX!");
            return;
        } 

        // ======================= build a URL with QueryString =========================================
        //var url         = "http://localhost/expertmatch2/mortgages/mortgageEnquiryConfirm.aspx"; // for local debug
        var url         = "/Insurance/Enquiry/BrokerRequest.aspx";
        var queryString = "";
        
        queryString = queryString + "?Type=Life";
        queryString = queryString + "&CoverAmount=" + document.getElementById(controlPrefix + "_txtCoverRequired").value; 
        
        if (document.getElementById(controlPrefix + "_rblApplicant1Smoker_0").checked)
        {
            queryString = queryString + "&Smoker=1";
        }
        else { queryString = queryString + "&Smoker=0"; }
        
        
        var day = document.getElementById(controlPrefix + "_ddlApplicant1DOBDay").value;
        var month = document.getElementById(controlPrefix + "_ddlApplicant1DOBMonth").value;
        var year = document.getElementById(controlPrefix + "_ddlApplicant1DOBYear").value;
        var age = GetAgeInYearsFromDOB(year,month,day);
        

        queryString = queryString + "&dobDay="+day; 
        queryString = queryString + "&dobMonth="+month; 
        queryString = queryString + "&dobYear="+year; 
       
        if (document.getElementById(controlPrefix + "_rblCriticalIllness_0").checked)
        {
            queryString = queryString + "&CriticalIllness=1";
        }
        else { queryString = queryString + "&CriticalIllness=0"; }        
        
        if (document.getElementById(controlPrefix + "_rblTypeOfCover_JointSingle_0").checked ==true)
        {           
            queryString = queryString + "&TypeOfCover=1";         
        }
        else { queryString = queryString + "&TypeOfCover=2"; }
        
        queryString = queryString + "&PolicyType=" + document.getElementById(controlPrefix + "_ddlPolicyType").value;
        queryString = queryString + "&FormCategory=1"; // full form - 2 used to be
        queryString = queryString + "&Postcode="       + document.getElementById(controlPrefix + "_txtPostcode").value; 
        
        queryString = queryString + "&IPAddress="       + ipAddress;                     
        queryString = queryString + "&affiliateId="       + document.getElementById(controlPrefix + "_hidAffiliateId").value; 
       
        url = url + queryString;
        
        
        // ======================= END build a URL with QueryString =====================================
       
        xmlHttp.onreadystatechange=stateChanged;
        xmlHttp.open("GET",url,true);
        xmlHttp.send(null);
        
   }
}
    
//========================== The stateChanged() function executes every time the state of the XMLHTTP object changes.==============
    function stateChanged() 
    { 
     
     /* ============ XML structure ====================
         <root>
             <strErrorCode>num</strErrorCode>" +
             <strErrorMessage>string</strErrorMessage>" +
             <strSessionId>string</strSessionId>" +
             <strDisplayText>string</strDisplayText>" +
             <strLeadPrice>num<strLeadPrice>
          </root>      
     ============ END XML structure ================= */
    
    // if a response has been received from the server

    if (xmlHttp.readyState==4)
    {   
        if (window.ActiveXObject)
        {
          var doc=new ActiveXObject("Microsoft.XMLDOM");
          doc.async="false";
          doc.loadXML(xmlHttp.responseText);
        }
        // code for Mozilla, Firefox, Opera, etc.
        else
        {
          var parser = new DOMParser();
          var textXml = xmlHttp.responseText;
          var doc=parser.parseFromString(textXml,"text/xml");
        }
  
        // documentElement always represents the root node   
        var xmlDoc = doc.documentElement;
      
        // divResult is closed/hidden before the check
        document.getElementById("divResult").style.display       = "block";
      
        //check the errocode xml node
        if(xmlDoc.childNodes[0].childNodes[0].nodeValue == "0") 
        {
            // display strErrorMessage
            document.getElementById("brokerText").innerHTML          = "Based on your requirements we have selected the FSA regulated broker <strong>" + xmlDoc.childNodes[3].childNodes[0].nodeValue + "</strong> to help you with your enquiry. Click 'Compare' to confirm that you are happy to be contacted by telephone or email regarding your life insurance policy.";
            document.getElementById("divResult").style.display       = "block";
            document.getElementById("ctl00_ContentPlaceHolder1_LifeInsuranceEnquiryForm1_hidBrokerGuid").value           = xmlDoc.childNodes[5].childNodes[0].nodeValue;
            document.getElementById("divShowFakeButton").style.display   = "none";
            document.getElementById("divShowButton").style.display   = "block";
        }
        else
        { 
            // display strDisplayText
            document.getElementById("brokerText").innerHTML          = "There has been a problem trying to find an FSA regulated broker to pass on your life insurance details.";
            document.getElementById("divResult").style.display       = "block";
            document.getElementById("ctl00_ContentPlaceHolder1_LifeInsuranceEnquiryForm1_hidBrokerGuid").value           = xmlDoc.childNodes[5].childNodes[0].nodeValue;
            
            document.getElementById("divShowFakeButton").style.display   = "block";document.getElementById("divShowButton").style.display   = "none";
          
        }        
     }
}


function ValidateForm(controlPrefix)
{

    if (document.getElementById(controlPrefix + "_ddlPolicyType").value=='')
        return false;

    if (isNaN(document.getElementById(controlPrefix + "_txtCoverRequired").value))
        return false;

    var lfeAmount = + document.getElementById(controlPrefix + "_txtCoverRequired").value; 

    if (lfeAmount < 25000)
        return false;
    
    if (lfeAmount > 5000000)
        return false; 
    
    if  (document.getElementById(controlPrefix + "_rblApplicant1Smoker_0").checked == false &&
         document.getElementById(controlPrefix + "_rblApplicant1Smoker_1").checked == false)
    {
        return false;
    }

    if  (document.getElementById(controlPrefix + "_rblCriticalIllness_0").checked == false &&
         document.getElementById(controlPrefix + "_rblCriticalIllness_1").checked == false)
    {
        return false;
    }
    
    if (document.getElementById(controlPrefix + "_ddlApplicant1DOBDay").value == '')
        return false;
    
    if (document.getElementById(controlPrefix + "_ddlApplicant1DOBMonth").value == '')
        return false;
    
    if (document.getElementById(controlPrefix + "_ddlApplicant1DOBYear").value == '')
        return false;

    if (document.getElementById(controlPrefix + "_txtPostcode").value == '')
        return false;
        
    return true;
}


//============================= creates XmlHttp object for different browsers ==================================================
    function GetXmlHttpObject()
    {
      var xmlHttp=null;
      try
        {
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
        }
      catch (e)
        {
        // Internet Explorer
        try
          {
          xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
          }
        catch (e)
          {
          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        }
      return xmlHttp;
  }

  function GetAgeInYearsFromDOB(year, month, day) {
      var now = new Date()
      var dob = new Date(parseInt(year), parseInt(month) - 1, parseInt(day));

      var ms = now.getTime() - dob.getTime();
      var minutes = ms / 1000 / 60;
      var hours = minutes / 60;
      var days = hours / 24;
      var years = days / 365.25;

      return Math.floor(years);
  }