if (typeof selectm != "undefined") {
	 const metfield = document.createElement("a");
	 metfield.innerHTML = (selectm[0].charAt(selectm[0].length-4) == " "?selectm[0].slice(0,selectm[0].length-4):selectm[0]);
	 metfield.setAttribute("class","");
	 metfield.setAttribute("onclick","metLocSel('" + selectm[1] + "',this.innerHTML)");
	 metfield.setAttribute("title","(from wpts) " + selectm[1].toUpperCase());
//	 document.getElementById("metarlist").appendChild(metfield);
	 document.getElementById("metarlist").insertBefore(metfield,metarlist.lastElementChild);
	}
	if (typeof selectm != "undefined") {document.getElementById("wptstext").setAttribute("class","point ufirst"); wptstext.title = "click \u2799 " + selectm[0]}
}
 // end onLoad()
  function moveObject(e) {
	e = window.event || e;
	return Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));
	}
  function Resize(e) {
	var delta = moveObject(e);
	ct = Math.round(timei/1000) + ioffs + (delta*60);
       if (ct < 3599 && ct >- 3599) {ioffs += (delta*60)}
	ct = Math.floor(timei/1000) + ioffs;
	var d = Math.abs(ct)%60;
	var f = Math.floor(Math.abs(ct)/60);
	txt.value = (ct < 0?"-":"")+checkLead(f)+":"+checkLead(d);
	if (ct > delay*60) {setColor("txt","red",0);} else {setColor("txt","green",0);}
	}
  function Resize1(e) {
	var delta = moveObject(e);
	var exdelay = delay;
	delay+=delta;
       if (delay<2 || delay>59) {delay -= delta;}	//correction des limites
	delay = Math.round(delay*100)/100;	// correction des arrondis
	document.getElementById("dely").innerHTML = delay;
	var title_auto = document.getElementById("reload").title;
	title_auto = title_auto.replace(exdelay,delay);
	document.getElementById("reload").title = title_auto;
	}
  function Resize2(e) {
	var delta = moveObject(e);
	var y = document.getElementById("htime").value;
	var yalt = 5;
	var yshft = 0;
	if (e.altKey) {yalt = 1}
	if (e.shiftKey) {yshft = delta; yalt = 0;}
       if (!y || y.substr(2,1)!=":") {document.getElementById("htime").value = ret_time(); yalt = 0; yshift = 0;} else {
      //var yy = parseInt(y.slice(0,2))*60+(yshft*60)+parseInt(y.slice(2,4))+(delta*yalt);
	var yy = parseInt(y.substr(0,1))*10+parseInt(y.substr(1,1))
	if (yy>23 || isNaN(yy)) {yy=23}
	yy *= 60
	yy += (yshft*60)
	var yz = parseInt(y.substr(3,1))*10+parseInt(y.substr(4,1))
	if (yz>59 || isNaN(yz)) {yz=59}
	yy += yz
	yy += (delta*yalt);
       if (yy >= 24*60) {yy -= 24*60; Resize3(e);}
       if (yy < 0) {yy += 24*60; Resize3(e);}
	var d = Math.abs(yy)%60;
	var f = Math.floor(Math.abs(yy)/60);
	document.getElementById("htime").value = checkLead(f)+":"+checkLead(d);
	}}
  function Resize3(e) {
	var delta = moveObject(e);
	var y = document.getElementById("hdate").value;
       if (!(y) || !(y.substr(4,1) == "-" && y.substr(7,1) == "-" && !y.match(regd))) {document.getElementById("hdate").value = ret_date();} else {
	y=y.replace(/-/ig,"");
	var an = parseInt(y.substr(0,4));	// an
	var mo = parseInt(y.substr(4,1))*10+parseInt(y.substr(5,1));	// mois
	var jo = parseInt(y.substr(6,1))*10+parseInt(y.substr(7,1))//+delta;	// jour
	jo=parseInt(jo+delta);
       if (isNaN(an) || isNaN(mo) || isNaN(jo)) {document.getElementById("hdate").value = ret_date();} else {
       if (jo == 0) {jo=31; mo-=1;
       if (mo == 2 || mo == 4 || mo == 6 || mo == 9 || mo == 11) {jo=30;} if (mo == 2) {jo=28}}
       if (jo == 32 || (jo == 31 && (mo == 4 || mo == 6 || mo == 9 || mo == 11)) || (jo == 29 && mo == 2)) {jo=1; mo+=1;}
       if (mo == 0) {mo=12; an-=1;}
       if (mo == 13) {mo=1; an+=1;}
			var auj = new Date(checkLeads(an),checkLead(mo)-1,checkLead(jo),0,0,0,0);
			var jrSem = auj.getDay();
			hdate.title = wkD[jrSem];
	document.getElementById("hdate").value = checkLeads(an)+"-"+checkLead(mo)+"-"+checkLead(jo); 
	}}}
  function Resize4(e) {
	var delta = moveObject(e);
	var y = parseInt(document.getElementById('zoomval').value);
	y += delta;
	if (!(y>15 || y<1)) {document.getElementById('zoomval').value = y;}
	}
  function Resize5(e) {
	var delta = moveObject(e);
	var y = parseInt(document.getElementById('maxspeed').value); (isNaN(y)?y = 0:"");
	y += (10*delta);
	if (!(y>800 || y<0)) {document.getElementById('maxspeed').value = y;}
	if (minspeed.value.length && parseInt(maxspeed.value) < parseInt(minspeed.value)) {minspeed.value = maxspeed.value;}
	warnFilter();
	}
  function Resize6(e) {
	var delta = moveObject(e);
	var y = parseInt(document.getElementById('minspeed').value); (isNaN(y)?y = 0:"");
	y += (10*delta);
	if (!(y>800 || y<0)) {document.getElementById('minspeed').value = y;}
	if (maxspeed.value.length && parseInt(minspeed.value) > parseInt(maxspeed.value)) {maxspeed.value = minspeed.value;}
	warnFilter();
	}
  function Resize7(e) {
	var delta = moveObject(e);
	var y = parseInt(document.getElementById('maxalt').value); (isNaN(y)?y = 0:"");
	y += (1000*delta);
	if (!(y>altmax || y<0)) {document.getElementById('maxalt').value = y;} else {
	 if (y>altmax) {document.getElementById('maxalt').value = altmax;} else {document.getElementById('maxalt').value = 0;}}
	 if (minalt.value.length && parseInt(maxalt.value) < parseInt(minalt.value)) {minalt.value = maxalt.value;}
	warnFilter();
	}
  function Resize8(e) {
	var delta = moveObject(e);
	var y = parseInt(document.getElementById('minalt').value); (isNaN(y)?y = 0:"");
	y += (1000*delta);
	if (!(y>altmax || y<0)) {document.getElementById('minalt').value = y;} else {
	 if (y>altmax) {document.getElementById('minalt').value = altmax;} else {document.getElementById('minalt').value = 0;}}
	if (maxalt.value.length && parseInt(minalt.value) > parseInt(maxalt.value)) {maxalt.value = minalt.value;}
	warnFilter();
	}
  function baloon() {return (filter_type.value.toLowerCase().includes("ball")?" BALLON ":"") 
	}
  function docTitle(t) {
	document.title = t.replace(/ /g,"");
	}
  function fillvisu(tevisu) {
	if (typeof tevisu == "undefined") {tevisu = "emplacement non défini"}
	document.getElementById("visu").value = tevisu.replace(/ /ig,"");
	dispMessage(tevisu.replace(/ /ig,""),false);
	}
  function zoom(lat,lon,scale,title_text) {	//inutilisée
	new1 = "https://fr24.com/simple?lat="+lat+"&lon="+lon+"&z="+scale;
	document.getElementById("fr").src = new1;
	resetCount();
	var new2 = traf + (filter_type.value.toLowerCase() == "ball"?" BALLON ":"") + text_title[title_text];
	docTitle (new2);
	fillvisu(text_title[title_text]);
	}
  function upd_title(title_text) {
	//if (remember) {title_text = remember;}
	if (typeof selectm == "undefined" || selectm[0] == "") {docTitle(hostid + traf + baloon() + (title_text= wptAptNum) {fillthis.push(12)} else {fillthis.push(10)};
	document.getElementById("latval").value = fillthis[0];
	document.getElementById("longval").value = fillthis[1];
	document.getElementById("zoomval").value = fillthis[2];
	(typeof selectm == "undefined"?"":selectm[2] = "");	// start up variable, no longer useful after loading
	setColor("label_opt","black",0);
	(remember == index?"":setColor("go","red",0));
	upd_title(index);	// update page title
	remember = index;
	colLabel();
	}
  function flash(item,duree) {if (typeof(duree) == "undefined") {duree = 500}; var item1 = document.getElementById(item);
item1.classList.add("txtbg"); setTimeout(function(){item1.classList.remove("txtbg")},duree);
	}
  function subst() {	// no action if anyone of the 3 fields -> empty
	     if (!latval.value || isNaN(latval.value)) {flash(latval);}
	else if (!longval.value || isNaN(longval.value)) {flash (longval);}
	else if (!zoomval.value || isNaN(zoomval.value)) {flash (zoomval);}
	else {
      if (hdate.value!="act"){
	resetCount();
	setColor("go","black",0);
///	upd_title(remember);
	var link = makeLine();
	setColor("checklink",inherit,0);
	if (dt.style.color == "green" && hdate.value && htime.value && !debugOn) {dt.classList.add("dtb"); histo.classList.add("dtb")} else {dt.classList.remove("dtb"); histo.classList.remove("dtb")}
	document.getElementById("checklink").value = link;
////	if (!event.altKey) {flightradar.location.href = link;}	// not working
////	if (evt!=16 && !debugOn) {flightradar.location.href = link;}
	if (evt!=16 && debugOn == 0) {flightradar.location.href = link;}
      } }
	}
	const tabc = " ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜßàáâãäåçèéêëìíîïñòóôõöùúûüýÿ"
  function unicode(utext) {
	var resu = "";
	for (var i=0; i-1) {resu += "%" + tabc.charCodeAt(ma).toString(16).toUpperCase()} else {resu += utext.charAt(i)}
		}
	return resu;
}
  function makeLine() {
	var Latitude = document.getElementById("latval");
	var Longitude = document.getElementById("longval");
	var Zoom = document.getElementById("zoomval");
	var Reg = document.getElementById("regval");
	var Call = document.getElementById("callval");
	var Maxspeed = document.getElementById("maxspeed").value; if (isNaN(Maxspeed)) {Maxspeed=""; document.getElementById("maxspeed").value="";} else {(Maxspeed?Maxspeed="&maxspeed="+Maxspeed:"");}
	var Minspeed = document.getElementById("minspeed").value; if (isNaN(Minspeed)) {Minspeed=""; document.getElementById("minspeed").value="";} else {(Minspeed?Minspeed="&minspeed="+Minspeed:"");}
	var Maxalt = document.getElementById("maxalt").value; if (isNaN(Maxalt)) {Maxalt=""; document.getElementById("maxalt").value="";} else {(Maxalt?Maxalt="&maxalt="+Maxalt:"");}
	var Minalt = document.getElementById("minalt").value; if (isNaN(Minalt)) {Minalt=""; document.getElementById("minalt").value="";} else {(Minalt?Minalt="&minalt="+Minalt:"");}
	var retun = "https://fr24.com/simple"+
		(Latitude.value || Longitude.value || Zoom.value || Reg.value || Call.value?"?":"")+
		(Latitude.value?"lat="+Latitude.value + "&":"")+
		(Longitude.value?"lon="+Longitude.value + "&":"")+
		(Zoom.value?"z="+Zoom.value:"")+
		(document.getElementById("portval").checked == true&&Zoom.value>5?"&airports=1":"")+
		(document.getElementById("sizval").checked == true?build():"")+
		(Call.value?"&callsign="+Call.value.toUpperCase():"")+
		(Reg.value&&!Call.value?"®="+Reg.value.toUpperCase():"")+
		(document.getElementById("solo").checked == true&&(regval.value || callval.value)?"&solo=1":"")+
		(document.getElementById("dt").style.color == "green" && hdate.value && htime.value?"&pb_date="+hdate.value+"&pb_time="+htime.value:"")+
		(filter_type.value?"&filter_type="+removeDuplicate(filter_type.value):"")+
//!		(filter_callsign.value.replace("unknown","")&&!sig_code?"&filter_callsign="+removeDuplicate(filter_callsign.value.replace("unknown",""),"a"):"")+
		(!sig_code?
			(filter_callsign.value.replace("unknown","")?"&filter_callsign="+removeDuplicate(filter_callsign.value.replace("unknown",""),"a"):"")
			:(0?"&filter_callsign="+"":""))+
		Maxspeed+Minspeed+Maxalt+Minalt+
		(document.getElementById("weather").checked?"&weather=1":"")+
		(document.getElementById("clouds").checked?"&clouds=1":"");
	// console.log(unicode(retun)); 
	// retun = retun.replace('undefined', ''); // raison inconnue
	return unicode(retun.replace(/ /g, ''));
	}
  function nempty() {if (document.getElementById("dt").style.color == "green" && hdate.value && htime.value && !filter_type.value && !filter_callsign.value) {return "&filter_type=A,B,D,R,C,G,P,S,T,F,J,E,H,I,L,M,X,V";} else {return "";} // provoque l'envoi d'un filtre bidon si date+heure actifs et aucun filtre pour forcer l'affichage de "fr24.com/simple"
	}
  function InsertContent(d) {
	if (!document.getElementById(d).style.display || document.getElementById(d).style.display == "none") document.getElementById(d).style.display = "inline";
	}
  function RemoveContent(d) {
	if (document.getElementById(d).style.display == "inline") document.getElementById(d).style.display = "none";
	}
  function ToggleContent(d) {
	if (document.getElementById(d).style.display == "none")
	 {document.getElementById(d).style.display = "inline"; return true;} else {document.getElementById(d).style.display = "none"; return false;}
	}
  function copyContent(src,dest) {
	if (document.getElementById(src).value) {document.getElementById(dest).value = document.getElementById(src).value;}
	}
	var flink = document.querySelector("link[rel*=\'icon\']") || document.createElement("flink");
	flink.type = "image/x-icon";
	flink.rel = "shortcut icon";
  function set0(num) {		// if favicon exists, switch according to color of AUTO
	flink.href = "Images/flt"+num+".ico";
	document.getElementsByTagName("head")[0].appendChild(flink);
	}
  function ToggleColor(d,color1,color2,b) {
	if (document.getElementById(d).style.color == color1) {
	 setColor(d,color2,b); setbgcolor(d,"lightgrey"); (d == "reload"?set0(1):"");} else {setColor(d,color1,b); setbgcolor(d,"white"); (d == "reload"?set0(""):"");}
	}
  function ToggleSpace() {ToggleContent("space"); RemoveContent("labelsel");
	if (document.getElementById("space").style.display == "none") {InsertContent("field");} else {RemoveContent("field"); RemoveContent("debug_line");}
	}
  function build() {
	var label1 = reveal("L1");
	var label2 = reveal("L2"); //console.log(label2)
	var label3 = reveal("L3");
	var fulllabel = (label1!="none"?"&label1="+label1:"")+(label2!="none"?"&label2="+label2:"")+(label3!="none"?"&label3="+label3:"");
	return fulllabel;
	}
  function reveal(radio_name) {
	var oRadio = document.forms["labelForm"].elements[radio_name]; //console.log(oRadio)
	for(i = 0; i < oRadio.length; i++) {
	if (oRadio[i].checked)
	{return oRadio[i].value;}
		}
	return 'none';
	}
	const googleMaps = "https://maps.google.com/maps", skyvector = "&chart=";
  function fill_paste() {	// décompte des avions et des types avec filtre actif (select all + copié de l'IFRAME, collé dans le champ "checklink")
	q1 = new Date();	// sauvegarde de l'heure du paste
 /// COPY from checklink and decode URI if nessessary
	var str = decodeURIComponent(document.getElementById("checklink").value);
 /// CLEAN str
	str = str.replace(/[^\x20-\x7F]/g, " "); str = str.replace(/\s+/g," "); // remplace tout sauf unicode par un espace et supprime multi-espaces
	if (str.includes(googleMaps)) {str = str.substr(str.lastIndexOf(googleMaps))}	// if str == googleMap, then suppress the rest
	if (str.includes(skyvector)) {str = str.substr(0,str.indexOf(skyvector))+","+zoomval.value+"z"; checklink.value = str}
	str = str.replace(/Operated by easyJet Europe |Operated by easyJet Switzerland |Florencio Martin Melian |Jose Antonio Ruiz |Fernando Roca |William Verguet |Dutch |Justin St ckel |Sebastian Sowa |Javier Rodriguez - Amics de Son Sant Joan |Flightradar24 |Bianca Renz |Davide Mascheroni |Marco Mochelato |Monica De Guidi |Fabrizio Gandolfo |ukasz Stawiarz |Dominic Hall |Nelson Sousa |Oksana |JakkoFly |Carlos Miguel Seabra |Pierre Pm |Julian S. |B rbara Costa |Rui Marques |Javier Rodriguez - Amics de Son Sant Joan |Tony Goldin |Gianluca Mantellini |Mart n Marrero Hdez |Alexis Boidron |Roberto Falciola |Pampillonia Francesco - Plane Spotters Bari |Benjamin Barbe |FUMAGALLI ANDREA |Kuba Kawczynski |Oliver K hnel |David Oates |Simone Previdi |St phane Mutzenberg |Matteo Lamberts |Matteo Mariani |Not Pauli |mkwia |Jo o Lopes |Stefano R |Matteo Generoso |doguegev |Onat Eronat |Paul Denton |Herv Champain |Kuba Kawczynski |Jo o Lopes |Stefano R |Alexandre Raineau |Mr Szabi |Giutalgen |Cas Schilperoort |Logo /gi,""); // suppress photograph's name, incl. trailing space
	str = str.replace(/Want to view more aviation photos|\? |Visit JetPhotos today to access more than 6 million high-quality photos of all types of aircraft./gi,"").replace(/\s+/g," ");	// new implementation 26.08.24
// since 26 Jul 24 instead of "SCHEDULED","UTC", take "Scheduled","utc"
    if (str.split("Scheduled").length > 2 && str.includes("utc ")) {	// new implementation 21.06.21
	str = str.replace(/ACTUAL/i,"ATD");
	str = str.replace(/ESTIMATED/i,"ETA");
	var str1 = str.split("utc ");
	var str2 = str1[2].split("Scheduled");
	 /*str = str1[0] + "STD" + str2[1] + str1[1] + "STA" + str2[2].slice(0,(str2[2].includes(" -")?13:16));	// old*/
	 /*str = str1[0] + "STD" + str2[1] + str2[2].slice(7,17) + str1[1] + "STA" + str2[2].slice(0,7) + str2[2].slice(16,26)	// new implementation 29.06.23*/
	var str3 = str1[0].split(" "); 
	  if (str3[3].length == 3 && str3[3] == str3[3].toUpperCase()) {str3.splice(2,0,"")}	//correct if aircraft type missing
	  for (i=6; i-1&&str.indexOf("longitude ")>-1?str.indexOf(str.indexOf(" "),str.indexOf("longitude")+1):0);
//	if (n0>-1&&str.length-n0-1&&str.length-n0>posL) {str = str.replace(str.slice(n0,posL)," ")}
//console.log("n0="+n0+" | posL="+posL+" | str.length-n0="+(str.length-n0)+" | 600 car.: "+str.substr(0,600));
	str = str.replace(/TERMS of Use|MAP DATA|Report a map error|Flightradar24.com - Simple version|Google|skyvector/ig,""); // supprime le pied
	str = str.replace(/\s+/g," "); // suppr. multiple espace
	str = str.trim();
  /// CORRECT IF "(UTC " present, then adjust times
	var utcorig = str, utctimes = [], utsplit = [], utcpartres = [], utcslice;
    if (utcorig.includes("(UTC ")) {
		var utcsplit = utcorig.split(" (UTC ");		// 3 parts, considering 2 last
		for (var i = 1; i<3; i++) {var utccor = utcsplit[i].slice(0,3);		// each decode offset (sign and value)
			  if (i<3) {utcsplit[i-1] = utcsplit[i-1].slice(0,utcsplit[i-1].lastIndexOf(" "));}	// suppress type of UTC offset (WEST)
			utcadd = parseInt(utcsplit[i].slice(0,3));	// pick up adders
			utcsplit[i] = utcsplit[i].slice(18);	// take rest at NN:NN XXX NN:NN
			utctimes[0] = parseInt(utcsplit[i].slice(0,2))-utcadd;
			 if (utctimes[0]>23) {utctimes[0] = utctimes[0]-24;}
			 if (utctimes[0]<0) {utctimes[0] = utctimes[0]+24;}
			utctimes[0] = (utctimes[0]>9?utctimes[0]:"0"+utctimes[0]);	// 2 digits
			 if (utcsplit[i].includes(":",4)) {
				utctimes[1] = parseInt(utcsplit[i].slice(10,12))-utcadd; if (utctimes[1]>23) {utctimes[1] = utctimes[1]-24;};; if (utctimes[1]<0) {utctimes[1] = utctimes[1]+24;}
				utctimes[1] = (utctimes[1]>9?utctimes[1]:"0"+utctimes[1]);	// 2 digits
				utcslice = 12;
				} else {utctimes[1] = ""; utcslice = 10;}
			utcpartres[i] = (i == 1?"STD":"STA")
			utcpartres[i] += " "+utctimes[0]+utcsplit[i].slice(2,10)+utctimes[1]+utcsplit[i].slice(utcslice,utcsplit[i].lastIndexOf(" "))+(i == 2&&utcsplit[i].includes(":",4)?utcsplit[i].slice(-3):"");
			}
		utcorig = utcsplit[0]+" "+utcpartres[1]+" "+utcpartres[2];
		str = utcorig;
	}
  /// WRITE back to checklink
    setColor("checklink","red",0);
    document.getElementById("checklink").value = str; // checklink.value.select();
  /// EXTRACT VISIBLE if "type" or "callsign" not empty
    var flag = false;
   if (filter_type.value) 
	{clear_html("scrat"); flag = true; show_fi("filter_type",0);
	}
   if (filter_callsign.value) 
	{if (!flag) {clear_html("scrat");} if (flag&&filter_callsign) {if (lcnt) {document.getElementById("scrat").innerHTML += "
";}} show_fi("filter_callsign",1);
	}
  /// EXTRACT "@z" format
/* Modèle: https://www.google.com/maps/@46.2299744,6.0919941,13z/data=! 
*/
    var n1 = str.indexOf("/@")+2;	// copié du lien "Report a map error", collé dans "checklink" (format Déc 14)
    var n2 = str.indexOf(",",n1);
    var n3 = str.indexOf(",",n2+1);
    var n4 = str.indexOf("z",n3);
   if (n2>n1 && n3>n2 && n4>n3) {
     setColor("checklink","green",0);
     if (!isNaN(str.slice(n1,n2)) && !isNaN(str.slice(n2+1,n3))) {
		document.getElementById("latval").value = Math.round(str.slice(n1,n2)*100)/100;
		document.getElementById("longval").value = Math.round(str.slice(n2+1,n3)*100)/100;
	}
     var zvalue = str.slice(n3+1,n4);
     if (parseInt(zvalue)>=1 && parseInt(zvalue)<16) {document.getElementById("zoomval").value = zvalue;}
     document.getElementById("checklink").value = str.slice(n1-1,n4+1) + "\n" + str.slice(n1,n3);
	colLabel();
	visu.value = str.slice(n4+1).replace(/%20/g," ").substr(0,24); // complete visu field	
	} else {	// copié du tableau de sélection à gauche (champs Latitude à Longitude) [n0: Registration], collé dans "checklink"
     var n0 = str.indexOf("REGISTRATION "); if (n0 > -1) {var na = str.slice(n0+13,str.indexOf(" ",n0+13)); if (na != "N/A") {(document.getElementById("regval").value != ""?clear_f("regval"):""); document.getElementById("regval").value = na} setColor("checklink","green",0);}
     var n1 = str.indexOf("latitude");
     var n2 = str.indexOf("long");
     var n3 = str.indexOf("gitude");
     var n4 = (str.indexOf(" ",n3+7)>n3?str.indexOf(" ")-1:n3+15);
    if (n1>-1 && n2>n1 && n3>n2) {
     setColor("checklink","green",0);
     if (strp_str(str.slice(n1+9,n2-1))) {document.getElementById("latval").value = Lat = Math.round(parseInt(strp_str(str.slice(n1+9,n2-1))*100))/100;}
     if (strp_str(str.slice(n3+7,n4))) {document.getElementById("longval").value = Long = Math.round(parseInt(strp_str(str.slice(n3+7,n4))*100))/100;}
     document.getElementById("checklink").value += "\n@" + Lat + "," + Long + ","+ zoomval.value + "z"	//write "@" format
}
/// EXTRACT GOOGLE format ll
	if (str.search("ll=")>-1) {	// format Google.map
	 setColor("checklink","green",0);
	 var gx = str.match(/\?ll=(.*?)&t/); 
	 gx = gx[1].replace(/&z=/i,","); 
	 checklink.value = "@"+gx+"z";
	 var gx = gx.split(",");
	  if (!isNaN(gx[0]) && !isNaN(gx[1])) {
	   document.getElementById("latval").value = Math.round(gx[0]*100)/100;
	   document.getElementById("longval").value = Math.round(gx[1]*100)/100;
	   document.getElementById("zoomval").value = gx[2];}
	}
	colLabel();
	}
  function elim_dbl(str,orig) { // elimine doublons
	var dbln=0, str1 = str.sort();
	 for (ie=1; ie" + prnt + ": " + sca + (sca>1?" avions visibles":" avion visible") + elim_dbl(scas,orig)+"":"");
	 }
	if (lcnt>1&&dcnt>5) {document.getElementById("scrat").innerHTML += "total ("+_filtre_o[orig]+"): "+dcnt+(dcnt>1?" avions visibles":" avion visible")+"
"}; document.getElementById("scrat").innerHTML += show_res;
	}
/// cas où élément fa est au début de l'array scasx => ajouter un élément non-espace au début de scasx pour permettre le test du caractère précédent !=? espace
  function zearch_false(scasx,fa,tmp1) {if (str1.indexOf(fa) == 0) {scasx.unshift("@")} for (var iz=1; iz-1) {tmp1++} (0?console.log("fa="+fa+" | "+scasx[iz-1].slice(-1).toLowerCase()+fa+" | "+_doute.indexOf(scasx[iz-1].slice(-1).toLowerCase()+fa)+" | tmp1:"+tmp1):""); (0?console.log(fa+" "+scasx[iz-1].lastIndexOf(" ")+" "+(scasx[iz-1].length-1)+" "+scasx[iz-1].substr(scasx[iz-1].lemgth,1)+" "+tmp1):"");} return tmp1
	}
  function strp_str(string) {	// enlève tous les espaces
	return string.replace(/\x20/g,"");
	}
   //setColor("go","red",0); //?
	}
    var varStore = [];
  function clear_f(d) {
	var aaa = document.getElementById(d).value, bbb = (typeof(varStore[d]) == "undefined"?"":varStore[d]), tmp;
	tmp = aaa; aaa = bbb; bbb = tmp;	// swap
	document.getElementById(d).value = aaa; varStore[d] = (aaa === bbb?"":bbb);	// avoid same value in both
	document.getElementById(d).focus();
	if (varStore[d]) {classRed("p"+d);} else {classBlack("p"+d);}
	}
  function classReplace(where) {where1 = document.getElementById(where); where1.classList.toggle("dbfr"); where1.classList.toggle("dbfn") // not used
	}
  function classRed(where) {where1 = document.getElementById(where); where1.classList.remove("dbfn"); where1.classList.add("dbfr")
	}
  function classBlack(where) {where1 = document.getElementById(where); where1.classList.remove("dbfr"); where1.classList.add("dbfn")
	}
  function clear_ff(d) {	// efface double
	varStore[d] = ""; 
	document.getElementById(d).value = "";
	document.getElementById(d).focus();
	}
	var regex = /( |<([^>]+)>)/ig;
  function setColor(d,ncolor,b) {
	if (typeof b === 'undefined') {b = 0}; //console.log("d="+d+" | "+arguments.callee.caller.name+" | "+typeof d);
	if (typeof d == "object") {d="timedCount"}	//{console.log("object d="+d+" | "+arguments.callee.caller.name)}
	document.getElementById(d).style.color = ncolor;
	if (b == 1) {	// b est le paramètre indiquant de changer le tag background (1 ou 0)
		var oldback = document.getElementById(d).innerHTML; 
		var newback = ""+oldback+"";
		if (ncolor == "red" || (d == "dt"&&ncolor == "green")) {document.getElementById(d).innerHTML=newback;} else {document.getElementById(d).innerHTML=oldback.replace(regex, ""); //console.log("oldback="+oldback.replace(regex, ""));
			}
		}
	}
  function setbgcolor (d,color) {if (d == "dt") document.getElementById(d).style.backgroundColor = color
	}
  function clear_html(d) {document.getElementById(d).innerHTML = "";
	}
  function ret_date() {
	var d = new Date(); 
	var mois = checkLead(d.getUTCMonth()+1);
	var jours = checkLead(d.getUTCDate());
	return d.getFullYear()+'-'+mois+'-'+jours;
	}
  function whichKey(e) {
	if (window.event) {
	 evt=event.keyCode;
	} else {
	 evt= e.which;
	 }
	}
  function clrevt() {evt=""}
	var evt="";
	document.onkeydown = whichKey;
	document.onkeyup = clrevt; 
  function ret_time() {
	var d = new Date();
	var min_u = d.getUTCMinutes()-10; // moins 10 min
	if (event.shiftKey || event.altKey || 0) {min_u+=10} // shift ou alt ou API?
	var heur = d.getUTCHours();
	if (min_u<0) {min_u += 60; heur -= 1;}
	if (heur<0) {heur += 24;}
	return checkLead(heur)+':'+checkLead(min_u);
	}
  function svtime() {
	(timeb?document.getElementById("checklink").value += "\nheure précédente: "+timeb:"");	// copy last saved htime into checklink
	}
	var locw = "", trafcnt = 109, loct="";	// position within msg trafic for title (subtract 5 for every "→")
  function stripFirstFig (ftext) {
	for (i=0; i"z" && ftext.substr(0,1) < "0") || ftext.substr(0,1) == "–") {ftext = ftext.substr(1,ftext.length-1)} // strip leading higher than z
	return ftext;
}
  function copyCoord1() {	// when click on text "Waypoints", reset to initial wpts
	if (typeof selectm != "undefined") {copyCoord(selectw1,selectw); document.getElementById("repPoint").selectedIndex = parseInt(selectm[3]); colLabel();}
}
  function copyCoord(line,text) {
	if (typeof text == "undefined") {text = ""};
//if (typeof selectm != "undefined" && evt == 17) {repPoint.selectedIndex = parseInt(selectm[3])} // not useful
	text = stripFirstFig(text); // all before 1st figure
	var cooor = line.split(" ");
	if (line) {
	 var checkl = document.getElementById("checklink");
//	checkl.value = text + " \n" + "LATITUDE " + line.replace(" "," LONGITUDE "); fill_paste();
	document.getElementById("latval").value = cooor[0]; document.getElementById("longval").value = cooor[1];
	checkl.value = "@" + line.replace(" ",",") + ",10z" + unicode(text); checkl.style.color = "black";}	// display @ format in checklink
	locw = (text.match(" ")?text.slice(-3).toLowerCase():""); 
	if (text != "Select coord.") {loct = (text.split(" ").length>1?text.slice(0,-4):text); trafic.title = trafic.title.slice(0,trafcnt) + loct;}
	else {loct = ""}
	docTitle(traf + baloon() + "à " + loct); //	docTitle(traf +  "à " + text.slice(0,-4));
	if (text.split(" ").length > 1 && !event.shiftKey) {fillvisu(loct)} else {fillvisu(text)}	// update visu copycopy
	dispMessage(""+text+"",false);	// show text briefly
	}
  function transfer_(origin,destination) {
	var tor = document.getElementById(origin).value; var tde = document.getElementById(destination).value; document.getElementById(destination).value = tor; document.getElementById(origin).value = tde
	} 
  function putTitle(d,textSup) {
	(evt == 16?textSup="":""); //shift
     if (document.getElementById(d).value) {document.getElementById(d).title=""} else {document.getElementById(d).title="double clic: [UTC]" + textSup;}
	}
  function warnFilter() {
	if (filter_type.value || filter_callsign.value || maxspeed.value || minspeed.value || maxalt.value || minalt.value) {setColor("tit_fil","red",1);} else {setColor("tit_fil",inherit,1);}
	}
  function TogHist() {
	if (document.getElementById("dt").style.color == "green" && document.getElementById("hdate").value && document.getElementById("htime").value) {setColor("histo","red",1);} else {setColor("histo",inherit,1);}
	if (Array.isArray(document.getElementById("hdate").value.match(/[^0-9-]/g))) {document.getElementById("hdate").value = "";}
	if (Array.isArray(document.getElementById("htime").value.match(/[^0-9:]/g))) {document.getElementById("htime").value = "";}
	timeb = document.getElementById("htime").value;	// save present value somewhere
	}
  function FiCheck() {
	if (filter_type.value || filter_callsign.value) {setColor("tit_fil","red",1);} else {setColor("tit_fil",inherit,1);}
	}
  function capt_label() {document.getElementById("capt_lab").innerHTML=""+(document.getElementById("sizval").checked == true?" actives":" inactives");
	}
  var _airl_even = ""; for (var i=3; i<_airl.length; i+=2) {_airl_even += _airl[i]+(i>_airl.length-2?"":",");}
  var _airl_short = _airl_even;
  var _type_even = ""; for (var i=3; i<_type.length; i+=2) {_type_even += _type[i]+(i>_type.length-2?"":",");}
  function fi_all(d) {if (d == "filter_callsign") {document.getElementById(d).value = (event.shiftKey?(sig_code?ficcMod():_airl_short):_airl_even)}
//					     else {document.getElementById(d).value = (event.shiftKey?"A,B,D,R,C,G,P,S,T,F,J,E,H,I,L,M,X,V":_type_even)};
					     else {document.getElementById(d).value = (event.shiftKey?typnog:_type_even)}; // special config without GRND
	}
  function ficcMod() {var fiMo = (filter_callsign.value.search(" ")>-1?filter_callsign.value:" "+filter_callsign.value.replace(/,/g,", ")); return fiMo.replace(/ n/,"|n");;
	}
  function firstFicoAll() {
	if (ficoAll == 2) {filter_callsign.value = (sig_code?" "+_airl_short.replace(/,/g,", ").replace(/ n/,"|n"):_airl_short)} else if (ficoAll == 1) {filter_callsign.value = _airl_short} else {return ""}
	}
  function removeDuplicate(list,remair) {	//http://www.roseindia.net/java/javascript-array/javascript-array-remove-duplicat.shtml
	remair = (remair == "undefined"?"":remair);
	 list = list.replace(/\x20/g,(sig_code&&remair?"¬":"")); // if not CCode => strip spaces, else replace with "¬"
	if (list) {
	 var arrayName = [];
	 arrayName = list.split(",");
	 var newArray = [];
	 label:for(var i=0; i-1) 
	   continue label;
	  }
	 newArray[newArray.length] = arrayName[i].replace(/¬/g," ");
	 }
	 return newArray;
	} else return "";
	}
  function recheck(formul,nameu,val) {
	var f = document.forms[formul]; //console.log("formul="+formul+", nameu="+nameu+", val="+nameu+",f.length="+f.elements.length+", f(3)="+f[3])
	for (var i=0; i new right hand window else floating window
	if (evt == 16) {deletethis(fieldv)}	// if shift -> erase fieldv as last operation
  	}
  function colLabel() {	// check selected coord match the lat&long&zoom and set color accordingly
	var idex = document.getElementById("label_opt").selectedIndex;
	var idey = document.getElementById("repPoint").selectedIndex;
	var coy = document.getElementById("repPoint")[idey].value.split(" ");
	var latvaln = Number(document.getElementById("latval").value), longvaln = Number(document.getElementById("longval").value);
	if (latvaln == _lat[idex] && longvaln == _long[idex] && document.getElementById("zoomval").value == _scale[idex]) {setColor("label_opt",inherit);}
	else {setColor("label_opt","crimson");}
	if (latvaln == coy[0] && longvaln == coy[1] || !idey) {setColor("repPoint",inherit);}
	else {setColor("repPoint","crimson");}
  	}
  function rectz() {	// correct wrong zoom value
	var zv = parseInt(document.getElementById("zoomval").value);
	if (zv>15 || zv<1) {zoomval.value="12";}
	}
  function init_hist() {	// si "&his=act" n'active pas "date+heure"
	if (document.getElementById("hdate").value) {InsertContent("date_"); (hdate.value != "act"?setColor("dt","green",1):""); setColor("histo","red",1); subst();}
  	}
   var copyClick = function() {
	if (event.shiftKey) {var cklval = document.getElementById("checklink").value; htempo.innerHTML = htime.value; var acttime = cklval.slice(cklval.indexOf("ATD ")+4,cklval.indexOf("ATD ")+9); (acttime == "- CDG"?"":htime.value = acttime);} /*si shift -> met l'heure de ATD dans htime*/
	var delta = 0, d = new Date(), y = document.getElementById("htime").value;
	if (!y) {console.warn("hour field empty"); InsertContent('date_'); htime.style.background="pink"; flash("copypos",200); return false} else {
	var th = parseInt(y.substr(0,1))*10+parseInt(y.substr(1,1))
	var tm = parseInt(y.substr(3,1))*10+parseInt(y.substr(4,1))
	th -= d.getTimezoneOffset()/60
       if (th >= 24) {th -= 24; delta = 1;}
       if (th < 0) {th += 24; delta = -1;}
	y = document.getElementById("hdate").value;
	if (!y) {console.warn("date field empty"); InsertContent('date_'); hdate.style.background="pink"; flash("copypos",200); return false} else {
	y = y.replace(/-/ig,"");
	var jo = parseInt(y.substr(6,1))*10+parseInt(y.substr(7.1));	// jour
	var mo = parseInt(y.substr(4,1))*10+parseInt(y.substr(5,1));	// mois
	var an = parseInt(y.substr(0,4));				// an
	jo = parseInt(jo + delta);
       if (jo == 0) {jo=31; mo-=1;
       if (mo == 2 || mo == 4 || mo == 6 || mo == 9 || mo == 11) {jo=30;} if (mo == 2) {jo = 28}}
       if (jo == 32 || (jo == 31 && (mo == 4 || mo == 6 || mo == 9 || mo == 11)) || (jo == 29 && mo == 2)) {jo = 1; mo += 1;}
       if (mo == 0) {mo = 12; an -= 1;}
       if (mo == 13) {mo = 1; an += 1;}
	 var TimeStamp = checkLead(th)+":"+checkLead(tm)+" "+checkLead(jo)+"."+checkLead(mo)+"."+checkLeads(an)+" ";
	 document.getElementById("checklink").value = TimeStamp+document.getElementById("checklink").value; 
	var copyText = document.getElementById("checklink"); 
	copyText.select(); 
	document.execCommand("Copy",false,null); 
	document.getElementById("checklink").focus(); 
	document.getElementById("checklink").select();
	clear_html("scrat");
}}}
	var scratText  = function() {
	if (evt == 16) {
	if (typeof q1 === "undefined") {var q = new Date()} else {var q = q1};
	var containerid = "scrat";
	var n = q.getTimezoneOffset(); n = (n == 0?"":n*-1/60); n = "UTC"+(n>-1?"+":"")+n;
	var DateStamp = checkLead(q.getHours())+":"+checkLead(q.getMinutes())+" "+checkLead(q.getDate())+"."+checkLead(q.getMonth()+1)+"."+q.getFullYear()+" "+n;
	document.getElementById(containerid).innerHTML = ""+DateStamp+"
"+document.getElementById(containerid).innerHTML;
        if (document.selection) {
            var range = document.body.createTextRange();
            range.moveToElementText(document.getElementById(containerid));
            range.select();
	    document.execCommand("Copy",false,null);
	    document.getElementById("adate").outerHTML = "";
	    //range.blur();
        } else if (window.getSelection) {
            var range = document.createRange();
            range.selectNode(document.getElementById(containerid));
            window.getSelection().removeAllRanges();
            window.getSelection().addRange(range);
	    document.execCommand("Copy",false,null);
	    document.getElementById("adate").outerHTML = "";
	    setTimeout(function(){removeselect();},200);
         }
	}
	else if (evt == 17) {clear_html("scrat");}
	else explain();
	}
  function removeselect() {window.getSelection().removeAllRanges(); 
	}
  function explain() {var DateStamp = checkLead(q1.getHours())+":"+checkLead(q1.getMinutes())+" "+checkLead(q1.getDate())+"."+checkLead(q1.getMonth()+1)+"."+q1.getFullYear()
	document.getElementById("scrat1").innerHTML = "shift + click = copy
ctrl + click = clearTime + date = "+DateStamp+"
"; setTimeout(function(){clear_html("scrat1");},6000);
	}
  function cpa() {flightradar.focus(); document.flightradar.select(); document.execCommand("copy",false,null);	//ne fonctionne pas: The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "https". Protocols must match.
	}
	var ary1 = []; var ary2 = [];
  function splitArray(sourceArray) {
	ary1 = []; ary2 = []; 
      for (var i = 2; i"+ary1.length.toString()+""); ary1.push("items");}
//		var listTable = "