var referrer = encodeURI (document.referrer);
var query_string = window.location.search;

var currentUri = window.location.pathname + query_string;
var currentUriParams = new URL (window.location.href);
var currentUriEncode = encodeURI (window.location.pathname + query_string);
var scriptParams = Object.fromEntries (currentUriParams.searchParams);
var currentUriJS = new URL (document.currentScript.getAttribute ('src'));
var scriptParamsJs = Object.fromEntries (currentUriJS.searchParams);
var dom_id = '', ser_id = '', dep_id = '', dep_code = '';
var url = 'https://up2seo.com/set-crawltrack.php?referer=' + referrer + '&uri=' + escape (currentUriEncode) + '&width=' + screen.width + '&height=' + screen.height;
var tab = ['dom_id', 'ser_id', 'dep_id', 'ip'];

//console.log ("url", url);
tab.forEach (field => {
	if (scriptParamsJs && scriptParamsJs[field] && scriptParamsJs[field] != '') {
		url += '&' + field + '=' + scriptParamsJs[field];
		if (field == 'dom_id') dom_id = scriptParamsJs[field]; else if (field == 'dep_code') dep_code = scriptParamsJs[field];
	}
})

if (scriptParams && scriptParams['from_ad'] && scriptParams['from_ad'] != '') sessionStorage.setItem ('sessionFromAd', scriptParams['from_ad']);
if (scriptParams && scriptParams['from_keyword'] && scriptParams['from_keyword'] != '') sessionStorage.setItem ('sessionFromKeyword', scriptParams['from_keyword']);
if (scriptParams && scriptParams['from_campaign'] && scriptParams['from_campaign'] != '') sessionStorage.setItem ('sessionFromCampaign', scriptParams['from_campaign']);
if (scriptParams && scriptParams['dep_code'] && scriptParams['dep_code'] != '') {
	dep_code = scriptParams['dep_code'];
	sessionStorage.setItem ('sessionDepCode', dep_code);
}
var fromSessionAd = sessionStorage.getItem ('sessionFromAd');
var fromSessionKeyword = sessionStorage.getItem ('sessionFromKeyword');
var fromSessionCampaign = sessionStorage.getItem ('sessionFromCampaign');
//console.log ('dep_code2', dep_code);

var xhr = new XMLHttpRequest ();
xhr.open ("GET", url, true);
xhr.onload = (data) => {
	// Request finished. Do processing here.
	//console.log ('data', data);
	if (xhr.readyState == 4 && xhr.status == 200) {
		const data = xhr.response;
		//console.log (data);
	}else {
		console.log (`Error: ${xhr.status}`);
	}
};
//xhr.overrideMimeType ("text/plain");
xhr.send (null);

//let session_id = getSessionId ();
//if (session_id == '' && !session_id) session_id = getSessionStorage ();
//console.log ('sessionIDLMDC ', sessionIDLMDC);

function sendFormExt (formTarget, draft = false) {
	let sessionIDLMDC = getSessionStorage ();
	let sessionFromAd = sessionStorage.getItem ('sessionFromAd');
	let sessionFromKeyword = sessionStorage.getItem ('sessionFromKeyword');
	let sessionFromCampaign = sessionStorage.getItem ('sessionFromCampaign');
	/*console.log ('sessionIDLMDC ', sessionIDLMDC);
	console.log ('sessionFromAd ', sessionFromAd);*/
	//console.log ('formTarget2', formTarget);
	if (formTarget && formTarget.tagName != 'HTML') {

		let data = Array.from (new FormData (formTarget), function (e) {
			return e.map (encodeURIComponent).join ('=');
		}).join ('&');

		const url = 'https://up2seo.com/log-data.php';
		//const url = 'http://dev.local.up2-seo.com/site/log-data.php?display_errors=1';

		var xhr = new XMLHttpRequest ();
		xhr.open ("POST", url, true);
		xhr.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
		xhr.onreadystatechange = function () { //Appelle une fonction au changement d'état.
			if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
				//console.log (xhr.response);

			}
		}

		var formName = '';
		var formId = '';
		if (typeof formTarget.getAttribute != 'undefined') {
			formName = formTarget.getAttribute ('name');
			formId = formTarget.getAttribute ('id');
			formName = formId && formId != '' ? formId : formName;
		}
		formName = formName ? formName : '';
		sessionFromAd = sessionFromAd ? sessionFromAd : '';
		sessionIDLMDC = sessionIDLMDC ? sessionIDLMDC : '';
		draft = draft ? '1' : '0';
		data += '&form_name=' + formName + '&dom_id=' + dom_id + '&referer=' + referrer + '&uri=' + escape (currentUriEncode) + '&width=' + screen.width + '&height=' + screen.height + '&draft=' + draft + '&session_id=' + sessionIDLMDC + '&from_ad=' + sessionFromAd + '&from_keyword=' + sessionFromKeyword + '&from_campaign=' + sessionFromCampaign;
		xhr.send (data);

		if (draft == '0') {
			sessionStorage.removeItem ('sessionIdLMDC');
		}
	}
}

function logSubmitExt (event) {
	const formTarget = event.target;
	sendFormExt (formTarget)
}


function mktime () {
	var no, ma = 0, mb = 0, i = 0, d = new Date (), argv = arguments, argc = argv.length;
	if (argc > 0) {
		d.setHours (0, 0, 0);
		d.setDate (1);
		d.setMonth (1);
		d.setYear (1972);
	}

	var dateManip = {
		0: function (tt) {
			return d.setHours (tt);
		}, 1: function (tt) {
			return d.setMinutes (tt);
		}, 2: function (tt) {
			var set = d.setSeconds (tt);
			mb = d.getDate () - 1;
			return set;
		}, 3: function (tt) {
			var set = d.setMonth (parseInt (tt) - 1);
			ma = d.getFullYear () - 1972;
			return set;
		}, 4: function (tt) {
			return d.setDate (tt + mb);
		}, 5: function (tt) {
			return d.setYear (tt + ma);
		}
	};

	for (i = 0; i < argc; i++) {
		no = parseInt (argv[i] * 1);
		if (isNaN (no)) {
			return false;
		}else {
			// arg is number, let's manipulate date object
			if (!dateManip[i] (no)) {
				// failed
				return false;
			}
		}
	}
	return Math.floor (d.getTime () / 1000);
}

function getSessionStorage (name = 'sessionIdLMDC') {
	let sessionId = sessionStorage.getItem (name);
	if (sessionId == '' || !sessionId) {
		let seconds = mktime ();
		sessionId = 'session_' + seconds + '_' + (Math.floor (Math.random () * 100000));
		sessionStorage.setItem (name, sessionId);
	}
	return sessionId;
}


function logDraftExt (event) {
	let formTarget = getParentByTagName (event.target, 'form');
	if (formTarget) sendFormExt (formTarget, true);
}

function getParentByTagName (node, tagname) {
	var parent;
	if (node === null || tagname === '') return;
	parent = node.parentNode;
	tagname = tagname.toUpperCase ();
	while (parent.tagName !== "HTML") {
		if (parent.tagName === tagname) {
			return parent;
		}
		parent = parent.parentNode;
	}
	return parent;
}

function executeWhenDocumentIsReady (callback) {
	// Vérifie si le document est déjà chargé ou en état interactif
	if (document.readyState === "complete" || document.readyState === "interactive") {
		// Exécute le callback immédiatement
		callback ();
	}else {
		// Sinon, attend l'événement DOMContentLoaded avant d'exécuter le callback
		document.addEventListener ("DOMContentLoaded", callback);
	}
}

executeWhenDocumentIsReady (function () {
	//console.log ('LOADING STATS');
	var formsExt = document.getElementsByTagName ('form');
	if (formsExt && formsExt.length) {
		for (var i = 0; i < formsExt.length; i++) {
			formsExt[i].addEventListener ('submit', logSubmitExt);
		}
	}

	formsExt = document.querySelectorAll ('input,textarea,select');
	//console.log ('nb elements', formsExt.length);
	if (formsExt && formsExt.length) {
		for (var i = 0; i < formsExt.length; i++) {
			let el = formsExt[i];
			formsExt[i].addEventListener ('blur', logDraftExt);
			if (el.type == 'select-one') formsExt[i].addEventListener ('change', logDraftExt);
		}
	}
	var elementsA = document.querySelectorAll ('a[href*=tel]');
	if (elementsA && elementsA.length) {
		var numberPhone = false;
		var spanNumber = document.querySelector ('span[class*=dexem-dni]');
		if (spanNumber) {
			numberPhone = spanNumber.innerHTML.trim ().replaceAll (' ', '');
		}
		for (var i = 0; i < elementsA.length; i++) {
			let el = elementsA[i];
			let href = el.href.trim ().replaceAll (' ', '');
			href = href.replaceAll ('%20', '');
			el.href = href;
			if (numberPhone) el.href = 'tel:' + numberPhone;
		}
	}

	//gestion des exceptions par domaine
	switch (dom_id) {
		case '4715':
			//france-coffre.fr
			var phoneToReplace = '01 79 73 62 62';
			if (fromSessionAd || fromSessionKeyword || fromSessionCampaign) {
				if (!dep_code) dep_code = sessionStorage.getItem ('sessionDepCode');

				let phone = getPhoneByDepCode (dep_code);
				let elements = document.querySelectorAll ('a[href*=tel]');
				//console.log ('phone2', phone)

				//return;
				if (elements) {
					for (let i = 0; i < elements.length; i++) {
						let el = elements[i];
						el.innerHTML = el.innerHTML.replace (phoneToReplace, phone);
						el.innerHTML = el.innerHTML.replace ('01 89 43 07 11', phone);
						el.innerHTML = el.innerHTML.replace ('01 89 43 07 12', phone);
						el.innerHTML = el.innerHTML.replace ('01 89 43 07 13', phone);
						el.href = 'tel:' + phone.trim ().replaceAll (' ', '');
					}
				}
				if (typeof dexem_dni_33892b0abcd54f4a95e0d499e17e5a9a != 'undefined') dexem_dni_33892b0abcd54f4a95e0d499e17e5a9a.init ();

			}
			break;
		case '4709':
			//my-sfer.fr
			(function (w, d, s, l, i) {
				w[l] = w[l] || [];
				w[l].push ({
					'gtm.start': new Date ().getTime (), event: 'gtm.js'
				});
				var f = d.getElementsByTagName (s)[0], j = d.createElement (s), dl = l != 'dataLayer' ? '&l=' + l : '';
				j.async = true;
				j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
				f.parentNode.insertBefore (j, f);

			}) (window, document, 'script', 'dataLayer', 'GTM-T6J6MZ8H');
			break;
		case '4713':
			//greense
			//show if ads
			//replace phone
			var phoneToReplace = '01 49 48 14 56';
			/*if (fromSessionAd) {
				if (!dep_code) dep_code = sessionStorage.getItem ('sessionDepCode');

				let phone = getPhoneByDepCode (dep_code);
				let elements = document.querySelectorAll ('a[class*=contact_telephone]');
				if (elements) {
					for (let i = 0; i < elements.length; i++) {
						let el = elements[i];
						el.innerHTML = phone;
						el.href = 'tel:' + phone.trim ().replaceAll (' ', '');
					}
				}

				elements = document.querySelectorAll ('div[class*=paragraph_container],div[class*=bannertitledata_data],div[class*=duocontactform_informations_list_paragraph]');
				if (elements) {
					for (let i = 0; i < elements.length; i++) {
						elements[i].innerHTML = elements[i].innerHTML.replaceAll (phoneToReplace, phone);
					}
				}
				if (typeof dexem_dni_33892b0abcd54f4a95e0d499e17e5a9a != 'undefined') dexem_dni_33892b0abcd54f4a95e0d499e17e5a9a.init ();

				let divPdu = document.querySelector ('div[class*=pdu-row]');
				if (divPdu) {
					divPdu.style.display = 'none';
				}
				//checked pdu
				let field = document.querySelector ('span[class*=field_pdu] input[type=checkbox]');
				if (field) field.checked = true;
			}*/


			break;
	}


});


function getPhoneByDepCode (code) {
	/*let departments = [{
		'codes': ['75', '77', '78', '91', '92', '93', '94', '95'], 'phone': '01 89 43 17 61', 'code': '01'
	}, {
		'codes': ['14', '18', '22', '27', '28', '29', '35', '36', '37', '41', '44', '45', '49', '50', '53', '56', '61', '72', '76', '85', '974', '976'], 'phone': '02 52 56 85 41', 'code': '02'
	}, {
		'codes': ['01', '03', '04', '05', '06', '07', '11', '13', '15', '2A', '2B', '26', '30', '34', '38', '42', '43', '48', '63', '66', '69', '73', '74', '83', '84'], 'phone': '03 59 28 71 86', 'code': '03'
	}, {
		'codes': ['02', '08', '10', '21', '25', '39', '51', '52', '54', '55', '57', '58', '59', '60', '62', '67', '68', '70', '71', '80', '88', '89', '90'], 'phone': '04 82 29 60 09', 'code': '04'
	}, {'codes': ['09', '12', '16', '17', '19', '23', '24', '31', '32', '33', '40', '46', '47', '64', '65', '79', '81', '82', '86', '87', '971', '972', '973', '975', '977', '978'], 'phone': '01 89 43 17 61', 'code': '05'}
	];*/
	let departments = [{
		'codes': ['75', '77', '78', '91', '92', '93', '94', '95'], 'phone': '01 85 53 90 05', 'code': '01'
	}, {
		'codes': ['14', '22', '27', '28', '35', '45', '76'], 'phone': '02 52 56 46 37', 'code': '02'
	}, {
		'codes': ['02', '54', '55', '57', '59', '60', '67', '88', '89'], 'phone': '03 59 28 81 86', 'code': '03'
	}];
	let phone = departments[0]['phone'];
	for (let i = 0; i < departments.length; i++) {
		let department = departments[i];
		let codes = department['codes'];
		if (codes.includes (code)) {
			phone = department['phone'];
			break;
		}
	}
	return phone;
}





