<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Login</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  <link rel="stylesheet" type="text/css" href="fonts/stylesheet.css">
  <link rel="stylesheet" type="text/css" href="css/normalize.css">
  <link rel="stylesheet" type="text/css" href="css/framework.css">
  <link rel="stylesheet" type="text/css" href="css/axa.min.css">
  <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
  <script type="text/javascript" src="js/index.js"></script>
  <script type="text/javascript" src="js/lib/aes.js"></script>
  <script type="text/javascript" src="js/lib/pbkdf2.js"></script>
  <script type="text/javascript" charset="UTF-8" src="Commondata.js"></script>
  <script type="text/javascript" charset="UTF-8" src="Apiservice.js"></script>
  <script type="text/javascript" charset="UTF-8" src="js/axa-popup.js"></script>
  <script type="text/javascript" src="js/securityCheck.js"></script>
  <script type="text/javascript" src="js/sslpinning.js"></script>
  <style>
  .login-input-form:-moz-placeholder,
  .axa-select:-moz-placeholder {
    color: #fff;
  }
  .login-input-form::-moz-placeholder,
  .axa-select::-moz-placeholder {
    color: #fff;
    opacity: 1;
  }
  .login-input-form:-ms-input-placeholder,
  .axa-select:-ms-input-placeholder {
    color: #fff;
  }
  .login-input-form::-webkit-input-placeholder,
  .axa-select::-webkit-input-placeholder {
    color: #fff;
  }
  </style>
  <script>
  //web font loading
  window.onload = function what()
  {


    
    console.log("onload");
    checkRootdetection();
    $('.loading-mask').addClass('stop-loading');
    // jailbreakdetection.isJailbroken(jainbroken, jainbroken);

//   cordova.plugins.diagnostic.isDeviceRooted(function(rooted){
//     if(rooted)
//    {
//      //rooted Device-->
//      showAlertRoot("Warning: This application is not supported on rooted/jailbroken devices.",false)
//    }
//    else{
//       //Non Rooted Device
//       checkDeviceSecurity();
//       }
//  });
};

function jainbroken(isJailbroken){
			if(isJailbroken)
			{
       //rooted Device-->
       showAlertRoot("Warning: This application is not supported on rooted/jailbroken devices.",false);
			}
     else{
      checkRootdetection();
      }
    }

    function getCertificateInfo() {
    if (cordova && cordova.plugin && cordova.plugin.http) {
        cordova.plugin.http.get(
            'https://smartpolicy.generali.com.my',
            { timestamp: new Date().getTime().toString() }, // Parameters (all values must be strings)
            { 
                'Content-Type': 'application/json',
                'Accept': 'application/json'
            }, // Headers (must be a dictionary-style object with string values)
            function(response) {
                console.log('Certificate info:', response+JSON.stringify(response));

            },
            function(error) {
                console.error('Certificate error:', JSON.stringify(error));
            }
        );
    } else {
        console.error('Cordova or cordova-plugin-http is not available');
    }
}


  if (window.MobileAccessibility) {
    window.MobileAccessibility.usePreferredTextZoom(false);
  }
  var atpos;
  var dotpos;
  var devicemodel;
  var osversion;
  var registereddeviceid;

    //signin function
    function signin() {

    if(checkOnline()){
    registereddeviceid = device.uuid;
    devicemodel =device.model;
    osversion = device.version;
    setItem("osversion",osversion);
    console.log("osversion-----"+osversion);
    var username = document.getElementById("email-field").value;
	var usernameSpceTrim = username.replace(/\s/g, '');
    var userName = usernameSpceTrim.toLowerCase();
    var passWord = document.getElementById("password-field").value;
    var passwordspacetrim = passWord.replace(/\s/g, '');
    atpos = userName.indexOf("@");
    dotpos = userName.lastIndexOf(".");
    if (isEmpty(userName)) {
      showAlert("Please enter your Email ID", false);
    }
    else if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= userName.length) {
      showAlert("Please enter a valid Email ID in the correct format, eg. abc@gmi.com",false);
    }
    else if (isEmpty(passwordspacetrim)) {
      showAlert("Please enter your Password", false);
    }
    else {
      var request = { emailid: userName, password: passEncrypt(passWord), registerdeviceid:registereddeviceid, devicemodel:devicemodel, osversion:osversion};
      console.log("request",request);
      
      loginautenticationcommon(request);
    }
  }
  }
  //empty field
  function isEmpty(value) {
    return typeof value == 'string' && !value.trim() || typeof value == 'undefined' || value === null;
  }
  //dissmiss popup
  function onDismiss(issuccess) {
    if (issuccess) {
      hide('showpop');
      window.location.href = 'dashboard.html';
    }
    else {
      hide('showpop');
    }
  }
  //piamcode isEmpty
  function piamalert(message) {
    $('#showpop').empty();
    $('#showpop').append("<h5>Message</h5><p id='para_messageid'>" + message + "</p><button class='popup-btn' id='comm-dismiss' onclick='onDismiss();'>OK</button>");
    show('showpop');
  }

  //default popup
  function showpasret() {
    var message = getItem("passExpired");
    $('#showpop').empty();
    $('#showpop').append("<div class='big-div'><h5>Message</h5><b><p id='para_messageid'>" + message + "</p></b><form onsubmit='return false'><input class='axa-input input-form' placeholder='Enter your Email id' id='accountlockemail' type='text' name='email' maxlength='50' onkeyup='handlespace(this)' required><input class='axa-input input-form' placeholder='Enter your PIAM code' id='piam-code' type='text' name='piamcode' maxlength='10' onkeyup='handlespace(this)' required><button class='popup-btn' id ='btn_expiredpassword' onclick='reqForgotpassword(1)'>OK</button><button class='popup-btn' id='comm-dismiss' onclick='onDismiss(" + false + ")'>CANCEL</button></form></div>");
    show('showpop');
  }

  //default popup
  function showAlert(message, issuccess) {
    $('#showpop').empty();
    $('#showpop').append("<h5>Message</h5><p id='para_messageid'>" + message + "</p><button class='popup-btn' id='comm-dismiss' onclick='onDismiss(" + issuccess + ")'>OK</button>");
    show('showpop');
  }
  //popup for marketlocation
  function showAlertnewapplication(message, issuccess){
    $('#showpop').empty();
    $('#showpop').append("<h5>Message</h5><p>" + message + "</p><button class='popup-btn' onclick='appstorecall()'>OK</button>");
    show('showpop');
  }

  function appstorecall(appurl){
   var applicationURL=getItem("applicationURL");
   if(applicationURL !== null && applicationURL !== '')
    {
      console.log(applicationURL);
      window.open(getItem("applicationURL"));
   }
   else
   {
       deviceRooted();
   }
  }
  //popup for forgotpassword function
  function getRes(message, issuccess) {
    $('#showpop').empty();
    $('#showpop').append("<h5>Message</h5><p>" + message + "</p><button class='popup-btn' onclick='reqForgotpassword(2)'>OK</button><button class='popup-btn' onclick='onDismiss(" + issuccess + ")'>CANCEL</button>");
    show('showpop');
  }
  //root popup
  function showAlertRoot(message){
    $('#showpop').empty();
    $('#showpop').append("<h5>Message</h5><p>" + message + "</p><button class='popup-btn' onclick='deviceRooted()'>OK</button>");
    show('showpop');
  }

  function deviceRooted() {
      navigator.app.exitApp();
  }
  // popup for forgot password error response for loginprocess
  function geterrorResponse(message) {
    $('#showpop').empty();
    $('#showpop').append("<h5>Message</h5><p>" + message + "</p><button class='popup-btn' onclick='showpasret()'>OK</button><button class='popup-btn' onclick='onDismiss(" + false + ")'>CANCEL</button>");
    show('showpop');
  }

  // popup for forgot password error response
  function geterrorRes(message, issuccess) {
    $('#showpop').empty();
    $('#showpop').append("<h5>Message</h5><p>" + message + "</p><button class='popup-btn' onclick='forgotpassword(2)'>OK</button><button class='popup-btn' onclick='onDismiss(" + issuccess + ")'>CANCEL</button>");
    show('showpop');
  }
  //forgot password invalid popup
  function showVaildAlert(message) {
    $('#showpop').empty();
    $('#showpop').append("<h5>Message</h5><p>" + message + "</p><button class='popup-btn' onclick='onvalidalertDismiss()'>OK</button>");
    show('showpop');
  }

  //forgot password invalid popup for change passWord
  //forgot password invalid popup
  function showEmailAlert(message) {
    $('#showpop').empty();
    $('#showpop').append("<h5>Message</h5><p>" + message + "</p><button class='popup-btn' onclick='showpasret()'>OK</button>");
    show('showpop');
  }
  //firstuserloginpopup
  function firstloginuser() {
    $('#showpop').empty();
    $('#showpop').append("<h5>Message</h5><p>Welcome to AXA! Please change your default password before logging in.</p><button class='popup-btn' onclick='forgotpassword(2)'>OK</button>");
    show('showpop');
  }
  //dismiss popup
  function onvalidalertDismiss() {
    hide('showpop');
    forgotpassword(2);
  }
  //forgot password popup
  function forgotpassword(id) {
  if(checkOnline()){
    var message ="Reset Password / Unlock Account";
    var message2 = "First Time Login";
    $('#showpop').empty();
    $('#showpop').append("<div class='big-div'><form onsubmit='return false'><h5 class='text-center'>" + message + "<br />"+ message2 +"</h5><input class='axa-input input-form' placeholder='Enter your Email id' id='accountlockemail' type='text' name='email' maxlength='50' onkeyup='handlespace(this)'  required><input class='axa-input input-form' placeholder='Enter your PIAM code' id='piam-code' type='text' name='piamcode' maxlength='10' onkeyup='handlespace(this)' required><button class='popup-btn' onclick='reqForgotpassword(" + id + ")'>OK</button><button class='popup-btn' onclick='onDismiss(" + false + ")'>CANCEL</button></form></div>");
    show('showpop');
  }
  }
  //forgot password functiion
  function reqForgotpassword(id) {
    var roleid=0;
    try{
      var accountlockemail = document.getElementById("accountlockemail").value;
      var piamcode = document.getElementById("piam-code").value;
    }catch(err){
      var accountlockemail = getItem("accountlockemail");
      var piamcode = getItem("piam-code");
      roleid=5;
    }
	var acclockspceTrim = accountlockemail.replace(/\s/g, '');
    var atpos = acclockspceTrim.indexOf("@");
    var dotpos = acclockspceTrim.lastIndexOf(".");
    if (isEmpty(acclockspceTrim)) {
    }
    else if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= acclockspceTrim.length) {
      if(id == 1) {
        showEmailAlert("Please enter a valid Email ID in the correct format, eg. abc@axa.com")
        }
    else{
        showVaildAlert("Please enter a valid Email ID in the correct format, eg. abc@axa.com");
        }
    }
    else if (isEmpty(piamcode)) {
    }
    else {
      hide('showpop');
      var accountlockEmail = acclockspceTrim.toLowerCase();
      var request = { emailid: accountlockEmail, piamcode: piamcode, resendMailInd: roleid };
      Apiservicecall(function(result)
      {
        if(result.status==1)
        {
          var response=result.response;
          if (response.status == 1 || response.status == 4  || response.status == 6 || response.status == 7) {
            showAlert(response.message, false);
          }
          else if(response.status == "S01"){
            setItem("accountlockemail", accountlockEmail);
            setItem("piam-code", piamcode);
            getRes(response.message, false);
          }
          else if(id == 1) {
             geterrorResponse(response.message, false);
          }
          else{
            geterrorRes(response.message, false);
          }
        }
        else {
          if(id == 1) {
             geterrorResponse(response.message, false);
          }
          else{
            geterrorRes(response.message, false);
          }
        }
      },forgotpass,request);
    }
  }

  //root detection
  function showRootcheckAlert(message) {
    $('#showpop').empty();
    $('#showpop').append("<h5>Message</h5><p>" + message + "</p><button class='popup-btn' onclick='exit()'>OK</button>");
    show('showpop');
  }

  function exit()
  {
    // navigator.app.exitApp();
    cordova.plugins.exit();
  }

  function appversionChk()
  {
    console.log("app version check");
    cordova.getAppVersion.getVersionNumber(function (version) {
      console.log(version);

         var versionrequest =  { "androindrelversion": "", "iosrelversion":version };
            Apiversioncheck(function(result)
            {
              if(result.status==1)
              {
                if(result.response.status == 0){
                  console.log(result);
                  setItem("applicationURL",result.response.iosredirecturl);
                  showAlertnewapplication(result.response.message, false);
                }
              }
                else {
                  console.log("failure");
                  //showAlert("failure");
                   //showAlert(response.message, false);
                }
            },versioncheck,versionrequest);
      });
      console.log("app version end");

    $('.loading-mask').addClass('stop-loading');
  }

function exitAlertMessage() {
  if (navigator.notification) {
    showemptymsg(
      "This application is not supported on rooted/jailbroken devices.",
      function () {
        cordova.plugins.exit(); // Exits the app
      },
      "Message",
      "Ok"
    );
  } else {
    alert("This application is not supported on rooted/jailbroken devices.");
    cordova.plugins.exit(); // Exits the app
  }
}
function showemptymsg(message) {
  $("#showpop").empty();
  $("#showpop").append(
    "<h5>Message</h5><p>" +
      message +
      "</p><button class='popup-btn' onclick='exit()'>OK</button>"
  );
  show("showpop");
}
  function checkRootdetection()
  {
    IRoot.isRooted(
        function (isRooted) {
            if (isRooted) {
                console.log("Device is rooted/jailbroken.");
                showRootcheckAlert("Warning: This application is not supported on rooted/jailbroken devices.");
            } else {
                console.log("Warning: This application is not supported on rooted/jailbroken devices.");
                console.log("isRooted success");
                appversionChk();
            }
        },
        function (error) {
            console.error("Error checking root status:", error);
        }
    );
  }

function sslchecker() {
  SSLPinning.init()
    .then(() => {
      return SSLPinning.checkSSLPinning("https://smartpolicy.generali.com.my");
    })
    .then(() => { 
      console.log("SSL Pinning check passed");
      // alert("SSL Pinning check passed. Secure connection verified.");
      checkRootdetection()
    })
    .catch((error) => {
      console.error("SSL Pinning check failed:", error);
      showRootcheckAlert("Warning: This application is not supported on rooted/jailbroken devices.");
    });
}
// Add this helper function if you don't already have it
function showRootcheck(message) {
    $('#showpop').empty();
    $('#showpop').append("<h5>Message</h5><p>" + message + "</p><button class='popup-btn' onclick='exit()'>OK</button>");
    show('showpop');
}

 
   function errorCallback(message) {
     showRootcheckAlert("Warning: This application is not supported on rooted/jailbroken devices.");
   }

  //backbutton function
  document.addEventListener("backbutton", onBackKeyDown, false);
  function onBackKeyDown() {
      navigator.app.exitApp();
  }
  //window event listener keypress
  window.addEventListener('keypress', function (e) {
    console.log("keycode========"+e.keyCode);
    if (e.keyCode == 13) {
      signin();
    }
  });
  </script>
  
<!-- <script type="text/javascript">
  document.addEventListener('deviceready', function() {
    SSLPinning.init();
    // Test the connection
    SSLPinning.makeSecureRequest('https://smartpolicy.generali.com.my/')
        .then(response => {
            console.log('Secure connection established:', JSON.stringify(response));
            
        })
        .catch(error => {
            console.error('Secure connection failed:', JSON.stringify(error));
            showRootcheckAlert("Warning: This application is not supported on rooted/jailbroken devices.");
        });
}, false); -->
 

</script>
  <script type="text/javascript">
   document.addEventListener('deviceready', function() {
    window.checkDeviceSecurity()
        .then(result => {
            console.log('Security', JSON.stringify(result));
            console.log('Security check on login page:', JSON.stringify(result));
              var isCompromised = JSON.stringify(result.isCompromised)
              window.securityCheckResult = result;
              console.log("isCompromised++++"+isCompromised);
              console.log("isCompromised typeof++++"+typeof isCompromised);
              if(isCompromised=="true") {
                  console.log("isCompromised-----------"+isCompromised);
                   exitAlertMessage();
              }
              else {
                getCertificateInfo();
                sslchecker();
                console.log("else");
              }
        })
        .catch(error => {
            console.error('Security check failed:', error);
        });
}, false);
  </script>
  
  <script src="js/webfont.js"></script>
  <script>
  WebFont.load({
    google: {
      families: ["Montserrat:400,700"]
    }
  });
  </script>
  <script type="text/javascript" src="js/modernizr.js"></script>
  <link rel="shortcut icon" type="image/x-icon" href="images/logoStandford32.ico">
  <link rel="apple-touch-icon" href="images/logoStandford32.ico">
  <link href="css/ionicons.min.css" rel="stylesheet" type="text/css" />
</head>
<body>
  <section class="axa-section mobile-wrapper login-bg">
    <div class="page-content" id="main-stack" data-scroll="0">
      <div class="bottom-section padding">
        <div class="logo-login"></div>
        <div class="axa-form">
          <form>
            <div>
              <input class="axa-input login-input-form" placeholder="Email Id" id="email-field" type="username" value="Gowtham.cs@kgisl.com" name="username" onkeyup='handlespace(this)'  maxlength="50">
              <div class="separator-fields"></div>
            </div>
            <div>
              <div class="axa-clearfix block-input-combined">
                <input class="axa-input login-input-form left" placeholder="Password" id="password-field"   onpaste="return false" value="Prod@12345" type="password" name="password" maxlength="25" onkeyup='handlespace(this)'>
                <span id="icon_eye" toggle="#password-field" class="icon ion-eye field-icon toggle-password"></span>
              </div>
            </div>
            <input class="axa-button action-button" type="button" id="btn_login" onclick="signin();" value="SIGN IN"><br />
            <div class="separator-button"></div><a class="link-upper b-link" onclick="forgotpassword(2);"> Reset Password / Unlock Account <br/> First Time Login</a>
          </form>
          <div class="axa-form-done">
            <p>Thank you! Your submission has been received!</p>
          </div>
          <div class="axa-form-fail">
            <p>Oops! Something went wrong while submitting the form</p>
          </div>
        </div>
      </div>
    </div>
    <div class="page-content loading-mask stop-loading" id="new-stack">
      <div class="loading-icon">
        <div class="navbar-button-icon icon ion-load-d"></div>
      </div>
    </div>
    <div class="shadow-layer"></div>
    <div id="showpop" class="popup"></div>
  </section>
  <script type="text/javascript" src="js/jquery.min.js"></script>
  <script type="text/javascript" src="js/framework.js"></script>
  <script>
  //password field eye changing function
  $(document).ready(function(){
    $(".toggle-password").click(function() {
      $(this).toggleClass("ion-eye ion-eye-disabled");
      var input = $($(this).attr("toggle"));
      if (input.attr("type") == "password") {
        input.attr("type", "showpassword");
      } else {
        input.attr("type", "password");
      }
    });
  });
  </script>
</body>
</html>
