﻿const hosturl = "/webapi/silovisitreport";
let lastpage = "N/A", currentpage = "N/A", nextpage = "N/A", screenwidth = "N/A", screenheight = "N/A", browserversion = "N/A", language = "N/A", system = "N/A", browserengine = "N/A", useragent = "N/A", ip = "N/A", visittime = "N/A", leavetime = "N/A";

let date = new Date();
date.setTime(date.getTime());

let seconds = date.getSeconds();
let minutes = date.getMinutes();
let hour = date.getHours();

let year = date.getFullYear();
let month = date.getMonth(); // beware: January = 0; February = 1, etc.
let day = date.getDate();

let dayOfWeek = date.getDay(); // Sunday = 0, Monday = 1, etc.
let milliSeconds = date.getMilliseconds();
let days_in_months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

if (new Date(year, 1, 29).getDate() == 29) {
  days_in_months[1] = 29;
}
if (document.referrer != "") {
  lastpage = document.referrer;
}
currentpage = location.href;
screenwidth = screen.width;
screenheight = screen.height;

if (navigator.appVersion != "") {
  browserversion = navigator.appVersion;
} else {
  browserversion = "unknown";
}
language = navigator.language;
system = navigator.platform;
browserengine = navigator.product;
useragent = navigator.userAgent;
ip = userIp ? userIp : 'N/A';
visittime = year + "-" + (month + 1) + "-" + day + " " + hour + ":" + minutes + ":" + seconds;


const links = document.getElementsByTagName('a');
[...links].forEach(link => {
  link.addEventListener('click', () => {
    nextpage = link.href
  })
})

window.addEventListener('beforeunload', savereports, false);


//window.onunload = function (e) {
//  savereports();
//}

//window.onbeforeunload = function (e) {
//  savereports();
//}

function savereports() {
  var date1 = new Date();
  date1.setTime(date1.getTime());

  var seconds1 = date1.getSeconds();
  var minutes1 = date1.getMinutes();
  var hour1 = date1.getHours();

  var year1 = date1.getFullYear();
  var month1 = date1.getMonth(); // beware: January = 0; February = 1, etc.
  var day1 = date1.getDate();

  if (new Date(year1, 1, 29).getDate() == 29) days_in_months[1] = 29;

  leavetime = year1 + "-" + (month1 + 1) + "-" + day1 + " " + hour1 + ":" + minutes1 + ":" + seconds1;

  if (bizId && bizname && userIp) {
    const data = { lastpage, currentpage, nextpage, screenwidth, screenheight, browserversion, language, system, browserengine, useragent, ip, visittime, leavetime, silono: bizId, bizname, hash, pageType: (typeof pagetype !== "undefined" ? pagetype : "page") };


    var params = "";
    for (var key in data) {
      if (params != "") {
        params += "&";
      }
      params += key + "=" + encodeURIComponent(data[key]);
    }


    if ("sendBeacon" in navigator) {
      var headers = { type: 'application/json' };
      var blob = new Blob([JSON.stringify(data)], headers);
      var status = navigator.sendBeacon(hosturl, blob);
      return status;
    } else {
      fetch(hosturl, { method: 'POST', headers: { "Content-type": "application/json" }, cache: 'no-cache', body: JSON.stringify(data) })
        .catch((err) => console.log(err));
    }
  } else {
    console.log('error');
  }

}

