redmine_apijs 6.6.0 → 6.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9502319f70386b9a6d6bdc113eb0a5b2764cf149c462c6386d84bdd02e476839
4
- data.tar.gz: 67b5e238f20e0188c9b94dd5c67bd12ed805811680594b3047c518eaac7fc758
3
+ metadata.gz: bb0b1eaa81b80a4ddf95d7b27fa59f9c122d427e1342e349c4728b1489c070e6
4
+ data.tar.gz: 2205182b8774d0be0de6a0ad5f2ee958c8a26c63af2a0a4254e86c9c851551fe
5
5
  SHA512:
6
- metadata.gz: ff4462f86fa5c83a8aef9c8f7121291d40e4f3924693e40f166d958531ecd6700df4ecf9bda7b578232cd1b17a37ee6907e1deb5cf48c4e3a092908c18d80c49
7
- data.tar.gz: e2aa564b8f8a395591d162433148fa1fcb3382578d18f5846dc7e57e3f75c6e942bf2eccd3be1ad6c2daa45351111519bf69ff607cb993025d9d2c8cae7d945b
6
+ metadata.gz: 41ef8259ce07a1bdb578b53cfed35df2db2a1cf53b67fbb49858ed7dfb58815b99081836862a3e9f9eed9c548ab838c18e2f5594f1e49cca506145c0e25a80dc
7
+ data.tar.gz: 5c11f2ac49d52c66fa80d381e205a6adbd2537a42599502320cab4a4f900353b68cc34d7e6add573549ed0c994e31519de4d9617f07d30f4fa1f523295168bea
data/README CHANGED
@@ -13,7 +13,7 @@ Copyright : 2008-2021 Fabrice Creuzot (luigifab) <code~luigifab~fr>
13
13
 
14
14
 
15
15
  IF YOU FOUND A MISTAKE OR A BUG, PLEASE, CONTACT ME (IN FRENCH OR IN ENGLISH) AT code~luigifab~fr
16
- CSS AND JS FILES ARE MINIFIED WITH clean-css (github.com/jakubpawlowicz/clean-css) AND uglify-js (github.com/mishoo/UglifyJS).
16
+ CSS AND JS FILES ARE MINIFIED WITH clean-css (github.com/jakubpawlowicz/clean-css) AND uglify-js (github.com/mishoo/uglifyjs).
17
17
  ALL FILES (INCLUDING DOCUMENTATION AND TRANSLATIONS) ARE LICENSED UNDER THE TERMS OF THE GNU GPL 2+ LICENSE.
18
18
  THAT BEING SAID SOME FILES COME FROM OTHER PROJECTS AND ARE UNDER OTHER LICENSES (SEE AT THE END OF THIS FILE).
19
19
 
@@ -63,7 +63,7 @@ If you like, take some of your time to improve the translations, go to https://b
63
63
 
64
64
 
65
65
  File: /lib/useragentparser.rb
66
- Source: https://github.com/donatj/PhpUserAgent + https://gist.github.com/luigifab/19a68d9aa98fa80f2961809d7cec59c0 (1.3.0-fork1)
66
+ Source: https://github.com/donatj/PhpUserAgent + https://gist.github.com/luigifab/19a68d9aa98fa80f2961809d7cec59c0 (1.4.0-fork1)
67
67
  Copyright: 2013-2021 Jesse G. Donat <donatj~gmail~com>
68
68
  Copyright: 2019-2021 Fabrice Creuzot (luigifab) <code~luigifab~fr>
69
69
  License: MIT (https://opensource.org/licenses/mit)
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
3
- * https://www.luigifab.fr/redmine/apijs
3
+ * https://www.luigifab.fr/redmine/apijs - 6.7.0
4
4
  * This program is free software, you can redistribute it or modify
5
5
  * it under the terms of the GNU General Public License (GPL).
6
6
  */
7
- var apijsRedmine=new function(){"use strict";this.start=function(){var e=apijs.i18n.data;e.frca||(e.frca={}),e.cs[250]="Smazat soubor",e.cs[251]="Opravdu chcete tento soubor smazat?[br]Pozor, tuto operaci nelze vrátit zpět.",e.cs[252]="Chyba",e.de[250]="Eine Datei löschen",e.de[251]="Sind Sie sicher, dass Sie diese Datei löschen möchten?[br]Achtung, diese Aktion ist unrückgängig.",e.de[252]="Fehler",e.de[253]="Sie verfügen nicht über die notwendigen Rechte um diese Operation durchzuführen, bitte [a §]aktualisieren Sie die Seite[/a].",e.de[254]="Es tut uns leid, diese Datei existiert nicht mehr, bitte [a §]aktualisieren Sie die Seite[/a].",e.de[255]="Eine Beschreibung bearbeiten",e.de[256]="Bitte geben Sie weiter unten die neue Beschreibung für diese Datei an. Um die Beschreibung zu löschen lassen Sie das Feld leer.",e.en[250]="Remove file",e.en[251]="Are you sure you want to remove this file?[br]Be careful, you can't cancel this operation.",e.en[252]="Error",e.en[253]="You are not authorized to perform this operation, please [a §]refresh the page[/a].",e.en[254]="Sorry, the file no longer exists, please [a §]refresh the page[/a].",e.en[255]="Edit description",e.en[256]="Enter below the new description for the file. To remove the description, leave the field empty.",e.en[257]="Rename file",e.en[258]="Enter below the new name for the file.",e.en[259]="Clear cache",e.en[260]="Are you sure you want to clear the cache?[br]Be careful, you can't cancel this operation.",e.es[250]="Borrar un archivo",e.es[251]="¿Está usted seguro(a) de que desea eliminar este archivo?[br]Atención, pues no podrá cancelar esta operación.",e.es[253]="No está autorizado-a para llevar a cabo esta operación, por favor [a §]actualice la página[/a].",e.es[254]="Disculpe, pero el archivo ya no existe, por favor [a §]actualice la página[/a].",e.es[255]="Editar una descripción",e.es[256]="Introduzca a continuación la nueva descripción para el archivo. Para eliminar la descripción, deje el campo en blanco.",e.es[259]="Vaciar la caché",e.es[260]="¿Está usted seguro(a) de querer vaciar la caché?[br]Cuidado, esta operación no puede ser cancelada.",e.fr[250]="Supprimer le fichier",e.fr[251]="Êtes-vous sûr(e) de vouloir supprimer ce fichier ?[br]Attention, cette opération n'est pas annulable.",e.fr[252]="Erreur",e.fr[253]="Vous n'êtes pas autorisé(e) à effectuer cette opération, veuillez [a §]actualiser la page[/a].",e.fr[254]="Désolé, le fichier n'existe plus, veuillez [a §]actualiser la page[/a].",e.fr[255]="Modifier la description",e.fr[256]="Saisissez ci-dessous la nouvelle description pour ce fichier. Pour supprimer la description, laissez le champ vide.",e.fr[257]="Renommer le fichier",e.fr[258]="Saisissez ci-dessous le nouveau nom pour ce fichier.",e.fr[259]="Vider le cache",e.fr[260]="Êtes-vous certain(e) de vouloir vider le cache ?[br]Attention, cette opération n'est pas annulable.",e.it[250]="Cancella i file",e.it[251]="Sei sicura di voler eliminare il file?[br]Attenzione, questa operazione non può essere annullata.",e.it[252]="Errore",e.it[253]="Non siete autorizzati a eseguire questa operazione, vi preghiamo di [a §]ricaricare la pagina[/a].",e.it[254]="Spiacenti, il file non esiste più, vi preghiamo di [a §]ricaricare la pagina[/a].",e.it[255]="Modificare una descrizione",e.it[256]="Inserire qui sotto la nuova descrizione del file. Per cancellare la descrizione, lasciate lo spazio vuoto.",e.ja[250]="ファイルを削除",e.ja[252]="エラー",e.nl[252]="Fout",e.pl[250]="Usuń plik",e.pl[251]="Jesteś pewny, że chcesz usunąć ten plik?[br]Uwaga! Nie ma odwrotu od tej operacji.",e.pl[252]="Błąd",e.pt[250]="Suprimir um ficheiro",e.pt[251]="Tem certeza de que quer suprimir este ficheiro?[br]Cuidado, não pode cancelar esta operação.",e.pt[252]="Erro",e.pt[253]="Não é autorizado(a) para efetuar esta operação, por favor [a §]atualize a página[/a].",e.pt[254]="Lamento, o ficheiro já não existe, por favor [a §]atualize a página[/a].",e.pt[255]="Modificar uma descrição",e.pt[256]="Digite abaixo a nova descrição para este ficheiro. Para suprimir a descrição, deixe o campo vazio.",e.ru[250]="Удалить файл",e.ru[251]="Вы уверены, что хотите удалить этот файл?[br]Осторожно, вы не сможете отменить эту операцию.",e.ru[252]="Ошибка",e.ru[253]="Вы не авторизованы для выполнения этой операции, пожалуйста [a §]обновите страницу[/a].",e.ru[254]="Извините, но файл не существует, пожалуйста [a §]обновите страницу[/a].",e.ru[255]="Редактировать описание",e.ru[256]="Ниже введите новое описание файла. Оставьте поле пустым, чтобы удалить описание.",e.sk[252]="Chyba",e.tr[252]="Hata",e.uk[252]="Помилка",e.zh[252]="错误信息"},this.error=function(e){"string"==typeof e&&e.indexOf("<!DOCTYPE")<0?apijs.dialog.dialogInformation(apijs.i18n.translate(252),e,"error"):(apijs.dialog.remove("lock"),self.location.reload())},this.editAttachment=function(e,t,a,i){var r=apijs.i18n.translate(255),e=e.parentNode.parentNode.querySelector(".description").textContent.trim(),e='[p][label for="apijsinput"]'+apijs.i18n.translate(256)+'[/label][/p][input type="text" name="description" value="'+e+'" spellcheck="true" id="apijsinput"]';apijs.dialog.dialogFormOptions(r,e,a,apijsRedmine.actionEditAttachment,[t,a,i],"editattach"),apijs.dialog.t1.querySelector("input").select()},this.actionEditAttachment=function(e,t){if("boolean"==typeof e)return!0;var a;"string"==typeof e&&((a=new XMLHttpRequest).open("POST",t[1]+"?id="+t[0]+"&isAjax=true",!0),a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.setRequestHeader("X-CSRF-Token",t[2]),a.onreadystatechange=function(){var e,t;4===a.readyState&&([0,200].has(a.status)?0===a.responseText.indexOf("attachmentId")?(t=a.responseText.slice(0,a.responseText.indexOf(":")),e=a.responseText.slice(a.responseText.indexOf(":")+1),(t=document.getElementById(t)).querySelector(".description").textContent=e,(t=t.querySelector("input"))&&(t.value=t.value.slice(0,t.value.lastIndexOf("|")+1)+e),apijs.dialog.actionClose()):apijsRedmine.error(a.responseText):apijsRedmine.error(a.status))},a.send("desc="+encodeURIComponent(document.getElementById("apijsinput").value)))},this.renameAttachment=function(e,t,a,i){var r=apijs.i18n.translate(257),e=e.parentNode.parentNode.querySelector(".filename").textContent.trim(),e='[p][label for="apijsinput"]'+apijs.i18n.translate(258)+'[/label][/p][input type="text" name="name" value="'+e+'" spellcheck="false" id="apijsinput"]';apijs.dialog.dialogFormOptions(r,e,a,apijsRedmine.actionRenameAttachment,[t,a,i],"editattach")},this.actionRenameAttachment=function(e,t){if("boolean"==typeof e)return!0;var r;"string"==typeof e&&((r=new XMLHttpRequest).open("POST",t[1]+"?id="+t[0]+"&isAjax=true",!0),r.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),r.setRequestHeader("X-CSRF-Token",t[2]),r.onreadystatechange=function(){var e,t,a,i;4===r.readyState&&([0,200].has(r.status)?0===r.responseText.indexOf("attachmentId")?(t=r.responseText.slice(0,r.responseText.indexOf(":")),a=r.responseText.slice(r.responseText.indexOf(":")+1),(i=document.getElementById(t)).querySelector(".filename").textContent=a,(t=i.querySelector("input"))&&(e=t.getAttribute("value"),t.setAttribute("value",a+e.substr(e.indexOf("|")))),(t=i.querySelector("a"))&&(e=t.getAttribute("href"),t.setAttribute("href",e.substr(0,e.lastIndexOf("/")+1)+a)),(t=i.querySelector("button.download"))&&(e=t.getAttribute("onclick"),t.setAttribute("onclick",e.substr(0,e.lastIndexOf("/")+1)+a+"';")),(t=i.querySelector("button.show"))&&(e=t.getAttribute("onclick"),t.setAttribute("onclick",e.substr(0,e.lastIndexOf("/")+1)+a+"';")),apijs.dialog.actionClose()):apijsRedmine.error(r.responseText):apijsRedmine.error(r.status))},r.send("name="+encodeURIComponent(document.getElementById("apijsinput").value)))},this.removeAttachment=function(e,t,a,i){apijs.dialog.dialogConfirmation(apijs.i18n.translate(250),apijs.i18n.translate(251),apijsRedmine.actionRemoveAttachment,[t,a,i])},this.actionRemoveAttachment=function(e){var i=new XMLHttpRequest;i.open("POST",e[1]+"?id="+e[0]+"&isAjax=true",!0),i.setRequestHeader("X-CSRF-Token",e[2]),i.onreadystatechange=function(){var e,t,a;4===i.readyState&&([0,200].has(i.status)?0===i.responseText.indexOf("attachmentId")?(t=(e=document.getElementById(i.responseText)).parentNode,a=0,t.removeChild(e),t.querySelectorAll("dl, li").length<1?t.parentNode.removeChild(t):t.querySelectorAll("a[id][type]").forEach(function(e){e.setAttribute("id",e.getAttribute("id").slice(0,e.getAttribute("id").lastIndexOf(".")+1)+a++)}),apijs.dialog.actionClose()):apijsRedmine.error(i.responseText):apijsRedmine.error(i.status))},i.send()},this.clearCache=function(e){apijs.dialog.dialogConfirmation(apijs.i18n.translate(259),apijs.i18n.translate(260),apijsRedmine.actionClearCache,e)},this.actionClearCache=function(e){apijs.dialog.remove("waiting","lock"),self.location.href=e}};"function"==typeof self.addEventListener&&self.addEventListener("apijsload",apijsRedmine.start.bind(apijsRedmine));
8
- //# sourceMappingURL=app.min.js.map
7
+ var apijsRedmine=new function(){"use strict";this.start=function(){var e=apijs.i18n.data;e.frca||(e.frca={}),e.cs[250]="Smazat soubor",e.cs[251]="Opravdu chcete tento soubor smazat?[br]Pozor, tuto operaci nelze vrátit zpět.",e.cs[252]="Chyba",e.de[250]="Eine Datei löschen",e.de[251]="Sind Sie sicher, dass Sie diese Datei löschen möchten?[br]Achtung, diese Aktion ist unrückgängig.",e.de[252]="Fehler",e.de[253]="Sie verfügen nicht über die notwendigen Rechte um diese Operation durchzuführen, bitte [a §]aktualisieren Sie die Seite[/a].",e.de[254]="Es tut uns leid, diese Datei existiert nicht mehr, bitte [a §]aktualisieren Sie die Seite[/a].",e.de[255]="Eine Beschreibung bearbeiten",e.de[256]="Bitte geben Sie weiter unten die neue Beschreibung für diese Datei an. Um die Beschreibung zu löschen lassen Sie das Feld leer.",e.en[250]="Remove file",e.en[251]="Are you sure you want to remove this file?[br]Be careful, you can't cancel this operation.",e.en[252]="Error",e.en[253]="You are not authorized to perform this operation, please [a §]refresh the page[/a].",e.en[254]="Sorry, the file no longer exists, please [a §]refresh the page[/a].",e.en[255]="Edit description",e.en[256]="Enter below the new description for the file. To remove the description, leave the field empty.",e.en[257]="Rename file",e.en[258]="Enter below the new name for the file.",e.en[259]="Clear cache",e.en[260]="Are you sure you want to clear the cache?[br]Be careful, you can't cancel this operation.",e.es[250]="Borrar un archivo",e.es[251]="¿Está usted seguro(a) de que desea eliminar este archivo?[br]Atención, pues no podrá cancelar esta operación.",e.es[253]="No está autorizado-a para llevar a cabo esta operación, por favor [a §]actualice la página[/a].",e.es[254]="Disculpe, pero el archivo ya no existe, por favor [a §]actualice la página[/a].",e.es[255]="Editar una descripción",e.es[256]="Introduzca a continuación la nueva descripción para el archivo. Para eliminar la descripción, deje el campo en blanco.",e.es[259]="Vaciar la caché",e.es[260]="¿Está usted seguro(a) de querer vaciar la caché?[br]Cuidado, esta operación no puede ser cancelada.",e.fr[250]="Supprimer le fichier",e.fr[251]="Êtes-vous sûr(e) de vouloir supprimer ce fichier ?[br]Attention, cette opération n'est pas annulable.",e.fr[252]="Erreur",e.fr[253]="Vous n'êtes pas autorisé(e) à effectuer cette opération, veuillez [a §]actualiser la page[/a].",e.fr[254]="Désolé, le fichier n'existe plus, veuillez [a §]actualiser la page[/a].",e.fr[255]="Modifier la description",e.fr[256]="Saisissez ci-dessous la nouvelle description pour ce fichier. Pour supprimer la description, laissez le champ vide.",e.fr[257]="Renommer le fichier",e.fr[258]="Saisissez ci-dessous le nouveau nom pour ce fichier.",e.fr[259]="Vider le cache",e.fr[260]="Êtes-vous certain(e) de vouloir vider le cache ?[br]Attention, cette opération n'est pas annulable.",e.it[250]="Cancella i file",e.it[251]="Sei sicura di voler eliminare il file?[br]Attenzione, questa operazione non può essere annullata.",e.it[252]="Errore",e.it[253]="Non siete autorizzati a eseguire questa operazione, vi preghiamo di [a §]ricaricare la pagina[/a].",e.it[254]="Spiacenti, il file non esiste più, vi preghiamo di [a §]ricaricare la pagina[/a].",e.it[255]="Modificare una descrizione",e.it[256]="Inserire qui sotto la nuova descrizione del file. Per cancellare la descrizione, lasciate lo spazio vuoto.",e.ja[250]="ファイルを削除",e.ja[252]="エラー",e.nl[252]="Fout",e.pl[250]="Usuń plik",e.pl[251]="Jesteś pewny, że chcesz usunąć ten plik?[br]Uwaga! Nie ma odwrotu od tej operacji.",e.pl[252]="Błąd",e.pt[250]="Suprimir um ficheiro",e.pt[251]="Tem certeza de que quer suprimir este ficheiro?[br]Cuidado, não pode cancelar esta operação.",e.pt[252]="Erro",e.pt[253]="Não é autorizado(a) para efetuar esta operação, por favor [a §]atualize a página[/a].",e.pt[254]="Lamento, o ficheiro já não existe, por favor [a §]atualize a página[/a].",e.pt[255]="Modificar uma descrição",e.pt[256]="Digite abaixo a nova descrição para este ficheiro. Para suprimir a descrição, deixe o campo vazio.",e.ru[250]="Удалить файл",e.ru[251]="Вы уверены, что хотите удалить этот файл?[br]Осторожно, вы не сможете отменить эту операцию.",e.ru[252]="Ошибка",e.ru[253]="Вы не авторизованы для выполнения этой операции, пожалуйста [a §]обновите страницу[/a].",e.ru[254]="Извините, но файл не существует, пожалуйста [a §]обновите страницу[/a].",e.ru[255]="Редактировать описание",e.ru[256]="Ниже введите новое описание файла. Оставьте поле пустым, чтобы удалить описание.",e.sk[252]="Chyba",e.tr[252]="Hata",e.uk[252]="Помилка",e.zh[252]="错误信息"},this.error=function(e){"string"==typeof e&&e.indexOf("<!DOCTYPE")<0?apijs.dialog.dialogInformation(apijs.i18n.translate(252),e,"error"):(apijs.dialog.remove("lock"),self.location.reload())},this.editAttachment=function(e,t,a,i){var r=apijs.i18n.translate(255),e=e.parentNode.parentNode.querySelector(".description").textContent.trim(),e='[p][label for="apijsinput"]'+apijs.i18n.translate(256)+'[/label][/p][input type="text" name="description" value="'+e+'" spellcheck="true" id="apijsinput"]';apijs.dialog.dialogFormOptions(r,e,a,apijsRedmine.actionEditAttachment,[t,a,i],"editattach"),apijs.dialog.t1.querySelector("input").select()},this.actionEditAttachment=function(e,t){if("boolean"==typeof e)return!0;var a;"string"==typeof e&&((a=new XMLHttpRequest).open("POST",t[1]+"?id="+t[0]+"&isAjax=true",!0),a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.setRequestHeader("X-CSRF-Token",t[2]),a.onreadystatechange=function(){var e,t;4===a.readyState&&([0,200].has(a.status)?0===a.responseText.indexOf("attachmentId")?(t=a.responseText.slice(0,a.responseText.indexOf(":")),e=a.responseText.slice(a.responseText.indexOf(":")+1),(t=document.getElementById(t)).querySelector(".description").textContent=e,(t=t.querySelector("input"))&&(t.value=t.value.slice(0,t.value.lastIndexOf("|")+1)+e),apijs.dialog.actionClose()):apijsRedmine.error(a.responseText):apijsRedmine.error(a.status))},a.send("desc="+encodeURIComponent(document.getElementById("apijsinput").value)))},this.renameAttachment=function(e,t,a,i){var r=apijs.i18n.translate(257),e=e.parentNode.parentNode.querySelector(".filename").textContent.trim(),e='[p][label for="apijsinput"]'+apijs.i18n.translate(258)+'[/label][/p][input type="text" name="name" value="'+e+'" spellcheck="false" id="apijsinput"]';apijs.dialog.dialogFormOptions(r,e,a,apijsRedmine.actionRenameAttachment,[t,a,i],"editattach")},this.actionRenameAttachment=function(e,t){if("boolean"==typeof e)return!0;var r;"string"==typeof e&&((r=new XMLHttpRequest).open("POST",t[1]+"?id="+t[0]+"&isAjax=true",!0),r.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),r.setRequestHeader("X-CSRF-Token",t[2]),r.onreadystatechange=function(){var e,t,a,i;4===r.readyState&&([0,200].has(r.status)?0===r.responseText.indexOf("attachmentId")?(t=r.responseText.slice(0,r.responseText.indexOf(":")),a=r.responseText.slice(r.responseText.indexOf(":")+1),(i=document.getElementById(t)).querySelector(".filename").textContent=a,(t=i.querySelector("input"))&&(e=t.getAttribute("value"),t.setAttribute("value",a+e.substr(e.indexOf("|")))),(t=i.querySelector("a"))&&(e=t.getAttribute("href"),t.setAttribute("href",e.substr(0,e.lastIndexOf("/")+1)+a)),(t=i.querySelector("button.download"))&&(e=t.getAttribute("onclick"),t.setAttribute("onclick",e.substr(0,e.lastIndexOf("/")+1)+a+"';")),(t=i.querySelector("button.show"))&&(e=t.getAttribute("onclick"),t.setAttribute("onclick",e.substr(0,e.lastIndexOf("/")+1)+a+"';")),apijs.dialog.actionClose()):apijsRedmine.error(r.responseText):apijsRedmine.error(r.status))},r.send("name="+encodeURIComponent(document.getElementById("apijsinput").value)))},this.removeAttachment=function(e,t,a,i){apijs.dialog.dialogConfirmation(apijs.i18n.translate(250),apijs.i18n.translate(251),apijsRedmine.actionRemoveAttachment,[t,a,i])},this.actionRemoveAttachment=function(e){var i=new XMLHttpRequest;i.open("POST",e[1]+"?id="+e[0]+"&isAjax=true",!0),i.setRequestHeader("X-CSRF-Token",e[2]),i.onreadystatechange=function(){var e,t,a;4===i.readyState&&([0,200].has(i.status)?0===i.responseText.indexOf("attachmentId")?(t=(e=document.getElementById(i.responseText)).parentNode,a=0,e.remove(),t.querySelectorAll("dl, li").length<1?t.remove():t.querySelectorAll("a[id][type]").forEach(function(e){e.setAttribute("id",e.getAttribute("id").slice(0,e.getAttribute("id").lastIndexOf(".")+1)+a++)}),apijs.dialog.actionClose()):apijsRedmine.error(i.responseText):apijsRedmine.error(i.status))},i.send()},this.clearCache=function(e){apijs.dialog.dialogConfirmation(apijs.i18n.translate(259),apijs.i18n.translate(260),apijsRedmine.actionClearCache,e)},this.actionClearCache=function(e){apijs.dialog.remove("waiting","lock"),self.location.href=e}};"function"==typeof self.addEventListener&&self.addEventListener("apijsload",apijsRedmine.start.bind(apijsRedmine));
8
+ //# sourceMappingURL=apijs-redmine.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["app.js"],"sourcesContent":["/**\n * Created D/15/12/2013\n * Updated S/16/01/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\nvar apijsRedmine = new (function () {\n\n\t\"use strict\";\n\n\tthis.start = function () {\n\n\t\tvar d = apijs.i18n.data;\n\t\tif (!d.frca) d.frca = {};\n\t\t// https://docs.google.com/spreadsheets/d/1UUpKZ-YAAlcfvGHYwt6aUM9io390j0-fIL0vMRh1pW0/edit?usp=sharing\n\t\t// auto start\n\t\td.cs[250] = \"Smazat soubor\";\n\t\td.cs[251] = \"Opravdu chcete tento soubor smazat?[br]Pozor, tuto operaci nelze vrátit zpět.\";\n\t\td.cs[252] = \"Chyba\";\n\t\td.de[250] = \"Eine Datei löschen\";\n\t\td.de[251] = \"Sind Sie sicher, dass Sie diese Datei löschen möchten?[br]Achtung, diese Aktion ist unrückgängig.\";\n\t\td.de[252] = \"Fehler\";\n\t\td.de[253] = \"Sie verfügen nicht über die notwendigen Rechte um diese Operation durchzuführen, bitte [a §]aktualisieren Sie die Seite[/a].\";\n\t\td.de[254] = \"Es tut uns leid, diese Datei existiert nicht mehr, bitte [a §]aktualisieren Sie die Seite[/a].\";\n\t\td.de[255] = \"Eine Beschreibung bearbeiten\";\n\t\td.de[256] = \"Bitte geben Sie weiter unten die neue Beschreibung für diese Datei an. Um die Beschreibung zu löschen lassen Sie das Feld leer.\";\n\t\td.en[250] = \"Remove file\";\n\t\td.en[251] = \"Are you sure you want to remove this file?[br]Be careful, you can't cancel this operation.\";\n\t\td.en[252] = \"Error\";\n\t\td.en[253] = \"You are not authorized to perform this operation, please [a §]refresh the page[/a].\";\n\t\td.en[254] = \"Sorry, the file no longer exists, please [a §]refresh the page[/a].\";\n\t\td.en[255] = \"Edit description\";\n\t\td.en[256] = \"Enter below the new description for the file. To remove the description, leave the field empty.\";\n\t\td.en[257] = \"Rename file\";\n\t\td.en[258] = \"Enter below the new name for the file.\";\n\t\td.en[259] = \"Clear cache\";\n\t\td.en[260] = \"Are you sure you want to clear the cache?[br]Be careful, you can't cancel this operation.\";\n\t\td.es[250] = \"Borrar un archivo\";\n\t\td.es[251] = \"¿Está usted seguro(a) de que desea eliminar este archivo?[br]Atención, pues no podrá cancelar esta operación.\";\n\t\td.es[253] = \"No está autorizado-a para llevar a cabo esta operación, por favor [a §]actualice la página[/a].\";\n\t\td.es[254] = \"Disculpe, pero el archivo ya no existe, por favor [a §]actualice la página[/a].\";\n\t\td.es[255] = \"Editar una descripción\";\n\t\td.es[256] = \"Introduzca a continuación la nueva descripción para el archivo. Para eliminar la descripción, deje el campo en blanco.\";\n\t\td.es[259] = \"Vaciar la caché\";\n\t\td.es[260] = \"¿Está usted seguro(a) de querer vaciar la caché?[br]Cuidado, esta operación no puede ser cancelada.\";\n\t\td.fr[250] = \"Supprimer le fichier\";\n\t\td.fr[251] = \"Êtes-vous sûr(e) de vouloir supprimer ce fichier ?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.fr[252] = \"Erreur\";\n\t\td.fr[253] = \"Vous n'êtes pas autorisé(e) à effectuer cette opération, veuillez [a §]actualiser la page[/a].\";\n\t\td.fr[254] = \"Désolé, le fichier n'existe plus, veuillez [a §]actualiser la page[/a].\";\n\t\td.fr[255] = \"Modifier la description\";\n\t\td.fr[256] = \"Saisissez ci-dessous la nouvelle description pour ce fichier. Pour supprimer la description, laissez le champ vide.\";\n\t\td.fr[257] = \"Renommer le fichier\";\n\t\td.fr[258] = \"Saisissez ci-dessous le nouveau nom pour ce fichier.\";\n\t\td.fr[259] = \"Vider le cache\";\n\t\td.fr[260] = \"Êtes-vous certain(e) de vouloir vider le cache ?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.it[250] = \"Cancella i file\";\n\t\td.it[251] = \"Sei sicura di voler eliminare il file?[br]Attenzione, questa operazione non può essere annullata.\";\n\t\td.it[252] = \"Errore\";\n\t\td.it[253] = \"Non siete autorizzati a eseguire questa operazione, vi preghiamo di [a §]ricaricare la pagina[/a].\";\n\t\td.it[254] = \"Spiacenti, il file non esiste più, vi preghiamo di [a §]ricaricare la pagina[/a].\";\n\t\td.it[255] = \"Modificare una descrizione\";\n\t\td.it[256] = \"Inserire qui sotto la nuova descrizione del file. Per cancellare la descrizione, lasciate lo spazio vuoto.\";\n\t\td.ja[250] = \"ファイルを削除\";\n\t\td.ja[252] = \"エラー\";\n\t\td.nl[252] = \"Fout\";\n\t\td.pl[250] = \"Usuń plik\";\n\t\td.pl[251] = \"Jesteś pewny, że chcesz usunąć ten plik?[br]Uwaga! Nie ma odwrotu od tej operacji.\";\n\t\td.pl[252] = \"Błąd\";\n\t\td.pt[250] = \"Suprimir um ficheiro\";\n\t\td.pt[251] = \"Tem certeza de que quer suprimir este ficheiro?[br]Cuidado, não pode cancelar esta operação.\";\n\t\td.pt[252] = \"Erro\";\n\t\td.pt[253] = \"Não é autorizado(a) para efetuar esta operação, por favor [a §]atualize a página[/a].\";\n\t\td.pt[254] = \"Lamento, o ficheiro já não existe, por favor [a §]atualize a página[/a].\";\n\t\td.pt[255] = \"Modificar uma descrição\";\n\t\td.pt[256] = \"Digite abaixo a nova descrição para este ficheiro. Para suprimir a descrição, deixe o campo vazio.\";\n\t\td.ru[250] = \"Удалить файл\";\n\t\td.ru[251] = \"Вы уверены, что хотите удалить этот файл?[br]Осторожно, вы не сможете отменить эту операцию.\";\n\t\td.ru[252] = \"Ошибка\";\n\t\td.ru[253] = \"Вы не авторизованы для выполнения этой операции, пожалуйста [a §]обновите страницу[/a].\";\n\t\td.ru[254] = \"Извините, но файл не существует, пожалуйста [a §]обновите страницу[/a].\";\n\t\td.ru[255] = \"Редактировать описание\";\n\t\td.ru[256] = \"Ниже введите новое описание файла. Оставьте поле пустым, чтобы удалить описание.\";\n\t\td.sk[252] = \"Chyba\";\n\t\td.tr[252] = \"Hata\";\n\t\td.uk[252] = \"Помилка\";\n\t\td.zh[252] = \"错误信息\";\n\t\t// auto end\n\t};\n\n\tthis.error = function (data) {\n\n\t\tif ((typeof data == 'string') && (data.indexOf('<!DOCTYPE') < 0)) {\n\t\t\tapijs.dialog.dialogInformation(apijs.i18n.translate(252), data, 'error');\n\t\t}\n\t\telse {\n\t\t\tapijs.dialog.remove('lock'); // obligatoire sinon demande de confirmation de quitter la page\n\t\t\tself.location.reload();\n\t\t}\n\t};\n\n\tthis.editAttachment = function (elem, id, action, token) {\n\n\t\tvar desc, text, title = apijs.i18n.translate(255);\n\n\t\tdesc = elem.parentNode.parentNode.querySelector('.description').textContent.trim();\n\t\ttext = '[p][label for=\"apijsinput\"]' + apijs.i18n.translate(256) + '[/label][/p]' +\n\t\t\t\t'[input type=\"text\" name=\"description\" value=\"' + desc + '\" spellcheck=\"true\" id=\"apijsinput\"]';\n\n\t\tapijs.dialog.dialogFormOptions(title, text, action, apijsRedmine.actionEditAttachment, [id, action, token], 'editattach');\n\t\tapijs.dialog.t1.querySelector('input').select();\n\t};\n\n\tthis.actionEditAttachment = function (action, args) {\n\n\t\t// vérification de la nouvelle description\n\t\tif (typeof action == 'boolean') {\n\t\t\treturn true;\n\t\t}\n\t\t// sauvegarde de la nouvelle description\n\t\telse if (typeof action == 'string') {\n\n\t\t\t// args = [id, action, token]\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\t\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\t\txhr.onreadystatechange = function () {\n\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t\t// extrait l'id et la description du fichier enregistré\n\t\t\t\t\t\t\tvar elem, id, text;\n\t\t\t\t\t\t\tid = xhr.responseText.slice(0, xhr.responseText.indexOf(':'));\n\t\t\t\t\t\t\ttext = xhr.responseText.slice(xhr.responseText.indexOf(':') + 1);\n\n\t\t\t\t\t\t\t// description\n\t\t\t\t\t\t\telem = document.getElementById(id);\n\t\t\t\t\t\t\telem.querySelector('.description').textContent = text;\n\n\t\t\t\t\t\t\t// input type hidden\n\t\t\t\t\t\t\telem = elem.querySelector('input');\n\t\t\t\t\t\t\tif (elem)\n\t\t\t\t\t\t\t\telem.value = elem.value.slice(0, elem.value.lastIndexOf('|') + 1) + text;\n\n\t\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send('desc=' + encodeURIComponent(document.getElementById('apijsinput').value));\n\t\t}\n\t};\n\n\tthis.renameAttachment = function (elem, id, action, token) {\n\n\t\tvar name, text, title = apijs.i18n.translate(257);\n\n\t\tname = elem.parentNode.parentNode.querySelector('.filename').textContent.trim();\n\t\ttext = '[p][label for=\"apijsinput\"]' + apijs.i18n.translate(258) + '[/label][/p]' +\n\t\t\t\t'[input type=\"text\" name=\"name\" value=\"' + name + '\" spellcheck=\"false\" id=\"apijsinput\"]';\n\n\t\tapijs.dialog.dialogFormOptions(title, text, action, apijsRedmine.actionRenameAttachment, [id, action, token], 'editattach');\n\t};\n\n\tthis.actionRenameAttachment = function (action, args) {\n\n\t\t// vérification du nouveau nom\n\t\tif (typeof action == 'boolean') {\n\t\t\treturn true;\n\t\t}\n\t\t// sauvegarde du nouveau nom\n\t\telse if (typeof action == 'string') {\n\n\t\t\t// args = [id, action, token]\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\t\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\t\txhr.onreadystatechange = function () {\n\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t\t// extrait l'id et le nom du fichier enregistré\n\t\t\t\t\t\t\tvar elem, id, name, subelem, text;\n\t\t\t\t\t\t\tid = xhr.responseText.slice(0, xhr.responseText.indexOf(':'));\n\t\t\t\t\t\t\tname = xhr.responseText.slice(xhr.responseText.indexOf(':') + 1);\n\n\t\t\t\t\t\t\t// nom\n\t\t\t\t\t\t\telem = document.getElementById(id);\n\t\t\t\t\t\t\telem.querySelector('.filename').textContent = name;\n\n\t\t\t\t\t\t\t// urls sur a/href et input/value et button.download/onclick et button.show/onclick\n\t\t\t\t\t\t\t// pas de maj de src et srcset sur img pour éviter un appel réseau inutile\n\t\t\t\t\t\t\tsubelem = elem.querySelector('input');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('value');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('value', name + text.substr(text.indexOf('|')));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('a');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('href');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('href', text.substr(0, text.lastIndexOf('/') + 1) + name);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('button.download');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('onclick');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('onclick', text.substr(0, text.lastIndexOf('/') + 1) + name + \"';\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('button.show');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('onclick');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('onclick', text.substr(0, text.lastIndexOf('/') + 1) + name + \"';\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send('name=' + encodeURIComponent(document.getElementById('apijsinput').value));\n\t\t}\n\t};\n\n\tthis.removeAttachment = function (elem, id, action, token) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(250), apijs.i18n.translate(251), apijsRedmine.actionRemoveAttachment, [id, action, token]);\n\t};\n\n\tthis.actionRemoveAttachment = function (args) {\n\n\t\t// args = [id, action, token]\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\txhr.onreadystatechange = function () {\n\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t// supprime le fichier de la page grâce à son id\n\t\t\t\t\t\tvar attachment = document.getElementById(xhr.responseText), elems = attachment.parentNode, idx = 0;\n\t\t\t\t\t\telems.removeChild(attachment);\n\n\t\t\t\t\t\t// supprime la liste des fichiers\n\t\t\t\t\t\tif (elems.querySelectorAll('dl, li').length < 1) {\n\t\t\t\t\t\t\telems.parentNode.removeChild(elems);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ou réattribue les ids du diaporama (pas de réinitialisation, on remet juste les ids en place)\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\telems.querySelectorAll('a[id][type]').forEach(function (elem) {\n\t\t\t\t\t\t\t\telem.setAttribute('id', elem.getAttribute('id').slice(0, elem.getAttribute('id').lastIndexOf('.') + 1) + idx++);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\txhr.send();\n\t};\n\n\tthis.clearCache = function (action) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(259), apijs.i18n.translate(260), apijsRedmine.actionClearCache, action);\n\t};\n\n\tthis.actionClearCache = function (args) {\n\t\tapijs.dialog.remove('waiting', 'lock'); // obligatoire sinon demande de confirmation de quitter la page\n\t\tself.location.href = args;\n\t};\n\n})();\n\nif (typeof self.addEventListener == 'function')\n\tself.addEventListener('apijsload', apijsRedmine.start.bind(apijsRedmine));"],"names":["apijsRedmine","this","start","d","apijs","i18n","data","frca","cs","de","en","es","fr","it","ja","nl","pl","pt","ru","sk","tr","uk","zh","error","indexOf","dialog","dialogInformation","translate","remove","self","location","reload","editAttachment","elem","id","action","token","title","desc","parentNode","querySelector","textContent","trim","text","dialogFormOptions","actionEditAttachment","t1","select","args","xhr","XMLHttpRequest","open","setRequestHeader","onreadystatechange","readyState","has","status","responseText","slice","document","getElementById","value","lastIndexOf","actionClose","send","encodeURIComponent","renameAttachment","name","actionRenameAttachment","subelem","getAttribute","setAttribute","substr","removeAttachment","dialogConfirmation","actionRemoveAttachment","attachment","elems","idx","removeChild","querySelectorAll","length","forEach","clearCache","actionClearCache","href","addEventListener","bind"],"mappings":"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"}
1
+ {"version":3,"sources":["app.js"],"sourcesContent":["/**\n * Created D/15/12/2013\n * Updated D/09/05/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\nvar apijsRedmine = new (function () {\n\n\t\"use strict\";\n\n\tthis.start = function () {\n\n\t\tvar d = apijs.i18n.data;\n\t\tif (!d.frca) d.frca = {};\n\t\t// https://docs.google.com/spreadsheets/d/1UUpKZ-YAAlcfvGHYwt6aUM9io390j0-fIL0vMRh1pW0/edit?usp=sharing\n\t\t// auto start\n\t\td.cs[250] = \"Smazat soubor\";\n\t\td.cs[251] = \"Opravdu chcete tento soubor smazat?[br]Pozor, tuto operaci nelze vrátit zpět.\";\n\t\td.cs[252] = \"Chyba\";\n\t\td.de[250] = \"Eine Datei löschen\";\n\t\td.de[251] = \"Sind Sie sicher, dass Sie diese Datei löschen möchten?[br]Achtung, diese Aktion ist unrückgängig.\";\n\t\td.de[252] = \"Fehler\";\n\t\td.de[253] = \"Sie verfügen nicht über die notwendigen Rechte um diese Operation durchzuführen, bitte [a §]aktualisieren Sie die Seite[/a].\";\n\t\td.de[254] = \"Es tut uns leid, diese Datei existiert nicht mehr, bitte [a §]aktualisieren Sie die Seite[/a].\";\n\t\td.de[255] = \"Eine Beschreibung bearbeiten\";\n\t\td.de[256] = \"Bitte geben Sie weiter unten die neue Beschreibung für diese Datei an. Um die Beschreibung zu löschen lassen Sie das Feld leer.\";\n\t\td.en[250] = \"Remove file\";\n\t\td.en[251] = \"Are you sure you want to remove this file?[br]Be careful, you can't cancel this operation.\";\n\t\td.en[252] = \"Error\";\n\t\td.en[253] = \"You are not authorized to perform this operation, please [a §]refresh the page[/a].\";\n\t\td.en[254] = \"Sorry, the file no longer exists, please [a §]refresh the page[/a].\";\n\t\td.en[255] = \"Edit description\";\n\t\td.en[256] = \"Enter below the new description for the file. To remove the description, leave the field empty.\";\n\t\td.en[257] = \"Rename file\";\n\t\td.en[258] = \"Enter below the new name for the file.\";\n\t\td.en[259] = \"Clear cache\";\n\t\td.en[260] = \"Are you sure you want to clear the cache?[br]Be careful, you can't cancel this operation.\";\n\t\td.es[250] = \"Borrar un archivo\";\n\t\td.es[251] = \"¿Está usted seguro(a) de que desea eliminar este archivo?[br]Atención, pues no podrá cancelar esta operación.\";\n\t\td.es[253] = \"No está autorizado-a para llevar a cabo esta operación, por favor [a §]actualice la página[/a].\";\n\t\td.es[254] = \"Disculpe, pero el archivo ya no existe, por favor [a §]actualice la página[/a].\";\n\t\td.es[255] = \"Editar una descripción\";\n\t\td.es[256] = \"Introduzca a continuación la nueva descripción para el archivo. Para eliminar la descripción, deje el campo en blanco.\";\n\t\td.es[259] = \"Vaciar la caché\";\n\t\td.es[260] = \"¿Está usted seguro(a) de querer vaciar la caché?[br]Cuidado, esta operación no puede ser cancelada.\";\n\t\td.fr[250] = \"Supprimer le fichier\";\n\t\td.fr[251] = \"Êtes-vous sûr(e) de vouloir supprimer ce fichier ?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.fr[252] = \"Erreur\";\n\t\td.fr[253] = \"Vous n'êtes pas autorisé(e) à effectuer cette opération, veuillez [a §]actualiser la page[/a].\";\n\t\td.fr[254] = \"Désolé, le fichier n'existe plus, veuillez [a §]actualiser la page[/a].\";\n\t\td.fr[255] = \"Modifier la description\";\n\t\td.fr[256] = \"Saisissez ci-dessous la nouvelle description pour ce fichier. Pour supprimer la description, laissez le champ vide.\";\n\t\td.fr[257] = \"Renommer le fichier\";\n\t\td.fr[258] = \"Saisissez ci-dessous le nouveau nom pour ce fichier.\";\n\t\td.fr[259] = \"Vider le cache\";\n\t\td.fr[260] = \"Êtes-vous certain(e) de vouloir vider le cache ?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.it[250] = \"Cancella i file\";\n\t\td.it[251] = \"Sei sicura di voler eliminare il file?[br]Attenzione, questa operazione non può essere annullata.\";\n\t\td.it[252] = \"Errore\";\n\t\td.it[253] = \"Non siete autorizzati a eseguire questa operazione, vi preghiamo di [a §]ricaricare la pagina[/a].\";\n\t\td.it[254] = \"Spiacenti, il file non esiste più, vi preghiamo di [a §]ricaricare la pagina[/a].\";\n\t\td.it[255] = \"Modificare una descrizione\";\n\t\td.it[256] = \"Inserire qui sotto la nuova descrizione del file. Per cancellare la descrizione, lasciate lo spazio vuoto.\";\n\t\td.ja[250] = \"ファイルを削除\";\n\t\td.ja[252] = \"エラー\";\n\t\td.nl[252] = \"Fout\";\n\t\td.pl[250] = \"Usuń plik\";\n\t\td.pl[251] = \"Jesteś pewny, że chcesz usunąć ten plik?[br]Uwaga! Nie ma odwrotu od tej operacji.\";\n\t\td.pl[252] = \"Błąd\";\n\t\td.pt[250] = \"Suprimir um ficheiro\";\n\t\td.pt[251] = \"Tem certeza de que quer suprimir este ficheiro?[br]Cuidado, não pode cancelar esta operação.\";\n\t\td.pt[252] = \"Erro\";\n\t\td.pt[253] = \"Não é autorizado(a) para efetuar esta operação, por favor [a §]atualize a página[/a].\";\n\t\td.pt[254] = \"Lamento, o ficheiro já não existe, por favor [a §]atualize a página[/a].\";\n\t\td.pt[255] = \"Modificar uma descrição\";\n\t\td.pt[256] = \"Digite abaixo a nova descrição para este ficheiro. Para suprimir a descrição, deixe o campo vazio.\";\n\t\td.ru[250] = \"Удалить файл\";\n\t\td.ru[251] = \"Вы уверены, что хотите удалить этот файл?[br]Осторожно, вы не сможете отменить эту операцию.\";\n\t\td.ru[252] = \"Ошибка\";\n\t\td.ru[253] = \"Вы не авторизованы для выполнения этой операции, пожалуйста [a §]обновите страницу[/a].\";\n\t\td.ru[254] = \"Извините, но файл не существует, пожалуйста [a §]обновите страницу[/a].\";\n\t\td.ru[255] = \"Редактировать описание\";\n\t\td.ru[256] = \"Ниже введите новое описание файла. Оставьте поле пустым, чтобы удалить описание.\";\n\t\td.sk[252] = \"Chyba\";\n\t\td.tr[252] = \"Hata\";\n\t\td.uk[252] = \"Помилка\";\n\t\td.zh[252] = \"错误信息\";\n\t\t// auto end\n\t};\n\n\tthis.error = function (data) {\n\n\t\tif ((typeof data == 'string') && (data.indexOf('<!DOCTYPE') < 0)) {\n\t\t\tapijs.dialog.dialogInformation(apijs.i18n.translate(252), data, 'error');\n\t\t}\n\t\telse {\n\t\t\tapijs.dialog.remove('lock'); // obligatoire sinon demande de confirmation de quitter la page\n\t\t\tself.location.reload();\n\t\t}\n\t};\n\n\tthis.editAttachment = function (elem, id, action, token) {\n\n\t\tvar desc, text, title = apijs.i18n.translate(255);\n\n\t\tdesc = elem.parentNode.parentNode.querySelector('.description').textContent.trim();\n\t\ttext = '[p][label for=\"apijsinput\"]' + apijs.i18n.translate(256) + '[/label][/p]' +\n\t\t\t\t'[input type=\"text\" name=\"description\" value=\"' + desc + '\" spellcheck=\"true\" id=\"apijsinput\"]';\n\n\t\tapijs.dialog.dialogFormOptions(title, text, action, apijsRedmine.actionEditAttachment, [id, action, token], 'editattach');\n\t\tapijs.dialog.t1.querySelector('input').select();\n\t};\n\n\tthis.actionEditAttachment = function (action, args) {\n\n\t\t// vérification de la nouvelle description\n\t\tif (typeof action == 'boolean') {\n\t\t\treturn true;\n\t\t}\n\t\t// sauvegarde de la nouvelle description\n\t\telse if (typeof action == 'string') {\n\n\t\t\t// args = [id, action, token]\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\t\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\t\txhr.onreadystatechange = function () {\n\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t\t// extrait l'id et la description du fichier enregistré\n\t\t\t\t\t\t\tvar elem, id, text;\n\t\t\t\t\t\t\tid = xhr.responseText.slice(0, xhr.responseText.indexOf(':'));\n\t\t\t\t\t\t\ttext = xhr.responseText.slice(xhr.responseText.indexOf(':') + 1);\n\n\t\t\t\t\t\t\t// description\n\t\t\t\t\t\t\telem = document.getElementById(id);\n\t\t\t\t\t\t\telem.querySelector('.description').textContent = text;\n\n\t\t\t\t\t\t\t// input type hidden\n\t\t\t\t\t\t\telem = elem.querySelector('input');\n\t\t\t\t\t\t\tif (elem)\n\t\t\t\t\t\t\t\telem.value = elem.value.slice(0, elem.value.lastIndexOf('|') + 1) + text;\n\n\t\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send('desc=' + encodeURIComponent(document.getElementById('apijsinput').value));\n\t\t}\n\t};\n\n\tthis.renameAttachment = function (elem, id, action, token) {\n\n\t\tvar name, text, title = apijs.i18n.translate(257);\n\n\t\tname = elem.parentNode.parentNode.querySelector('.filename').textContent.trim();\n\t\ttext = '[p][label for=\"apijsinput\"]' + apijs.i18n.translate(258) + '[/label][/p]' +\n\t\t\t\t'[input type=\"text\" name=\"name\" value=\"' + name + '\" spellcheck=\"false\" id=\"apijsinput\"]';\n\n\t\tapijs.dialog.dialogFormOptions(title, text, action, apijsRedmine.actionRenameAttachment, [id, action, token], 'editattach');\n\t};\n\n\tthis.actionRenameAttachment = function (action, args) {\n\n\t\t// vérification du nouveau nom\n\t\tif (typeof action == 'boolean') {\n\t\t\treturn true;\n\t\t}\n\t\t// sauvegarde du nouveau nom\n\t\telse if (typeof action == 'string') {\n\n\t\t\t// args = [id, action, token]\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\t\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\t\txhr.onreadystatechange = function () {\n\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t\t// extrait l'id et le nom du fichier enregistré\n\t\t\t\t\t\t\tvar elem, id, name, subelem, text;\n\t\t\t\t\t\t\tid = xhr.responseText.slice(0, xhr.responseText.indexOf(':'));\n\t\t\t\t\t\t\tname = xhr.responseText.slice(xhr.responseText.indexOf(':') + 1);\n\n\t\t\t\t\t\t\t// nom\n\t\t\t\t\t\t\telem = document.getElementById(id);\n\t\t\t\t\t\t\telem.querySelector('.filename').textContent = name;\n\n\t\t\t\t\t\t\t// urls sur a/href et input/value et button.download/onclick et button.show/onclick\n\t\t\t\t\t\t\t// pas de maj de src et srcset sur img pour éviter un appel réseau inutile\n\t\t\t\t\t\t\tsubelem = elem.querySelector('input');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('value');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('value', name + text.substr(text.indexOf('|')));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('a');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('href');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('href', text.substr(0, text.lastIndexOf('/') + 1) + name);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('button.download');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('onclick');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('onclick', text.substr(0, text.lastIndexOf('/') + 1) + name + \"';\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('button.show');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('onclick');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('onclick', text.substr(0, text.lastIndexOf('/') + 1) + name + \"';\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send('name=' + encodeURIComponent(document.getElementById('apijsinput').value));\n\t\t}\n\t};\n\n\tthis.removeAttachment = function (elem, id, action, token) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(250), apijs.i18n.translate(251), apijsRedmine.actionRemoveAttachment, [id, action, token]);\n\t};\n\n\tthis.actionRemoveAttachment = function (args) {\n\n\t\t// args = [id, action, token]\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\txhr.onreadystatechange = function () {\n\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t// supprime le fichier de la page grâce à son id\n\t\t\t\t\t\tvar attachment = document.getElementById(xhr.responseText), elems = attachment.parentNode, idx = 0;\n\t\t\t\t\t\tattachment.remove();\n\n\t\t\t\t\t\t// supprime la liste des fichiers\n\t\t\t\t\t\tif (elems.querySelectorAll('dl, li').length < 1) {\n\t\t\t\t\t\t\telems.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ou réattribue les ids du diaporama (pas de réinitialisation, on remet juste les ids en place)\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\telems.querySelectorAll('a[id][type]').forEach(function (elem) {\n\t\t\t\t\t\t\t\telem.setAttribute('id', elem.getAttribute('id').slice(0, elem.getAttribute('id').lastIndexOf('.') + 1) + idx++);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\txhr.send();\n\t};\n\n\tthis.clearCache = function (action) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(259), apijs.i18n.translate(260), apijsRedmine.actionClearCache, action);\n\t};\n\n\tthis.actionClearCache = function (args) {\n\t\tapijs.dialog.remove('waiting', 'lock'); // obligatoire sinon demande de confirmation de quitter la page\n\t\tself.location.href = args;\n\t};\n\n})();\n\nif (typeof self.addEventListener == 'function')\n\tself.addEventListener('apijsload', apijsRedmine.start.bind(apijsRedmine));"],"names":["apijsRedmine","this","start","d","apijs","i18n","data","frca","cs","de","en","es","fr","it","ja","nl","pl","pt","ru","sk","tr","uk","zh","error","indexOf","dialog","dialogInformation","translate","remove","self","location","reload","editAttachment","elem","id","action","token","title","desc","parentNode","querySelector","textContent","trim","text","dialogFormOptions","actionEditAttachment","t1","select","args","xhr","XMLHttpRequest","open","setRequestHeader","onreadystatechange","readyState","has","status","responseText","slice","document","getElementById","value","lastIndexOf","actionClose","send","encodeURIComponent","renameAttachment","name","actionRenameAttachment","subelem","getAttribute","setAttribute","substr","removeAttachment","dialogConfirmation","actionRemoveAttachment","attachment","elems","idx","querySelectorAll","length","forEach","clearCache","actionClearCache","href","addEventListener","bind"],"mappings":";;;;;GAkBA;IAAIA,aAAe,IAAI,wBAItBC,KAAKC,MAAQ,WAEZ,IAAIC,EAAIC,MAAMC,KAAKC,KACdH,EAAEI,OAAMJ,EAAEI,KAAO,IAGtBJ,EAAEK,GAAG,KAAO,gBACZL,EAAEK,GAAG,KAAO,gFACZL,EAAEK,GAAG,KAAO,QACZL,EAAEM,GAAG,KAAO,qBACZN,EAAEM,GAAG,KAAO,oGACZN,EAAEM,GAAG,KAAO,SACZN,EAAEM,GAAG,KAAO,+HACZN,EAAEM,GAAG,KAAO,iGACZN,EAAEM,GAAG,KAAO,+BACZN,EAAEM,GAAG,KAAO,kIACZN,EAAEO,GAAG,KAAO,cACZP,EAAEO,GAAG,KAAO,6FACZP,EAAEO,GAAG,KAAO,QACZP,EAAEO,GAAG,KAAO,sFACZP,EAAEO,GAAG,KAAO,sEACZP,EAAEO,GAAG,KAAO,mBACZP,EAAEO,GAAG,KAAO,kGACZP,EAAEO,GAAG,KAAO,cACZP,EAAEO,GAAG,KAAO,yCACZP,EAAEO,GAAG,KAAO,cACZP,EAAEO,GAAG,KAAO,4FACZP,EAAEQ,GAAG,KAAO,oBACZR,EAAEQ,GAAG,KAAO,gHACZR,EAAEQ,GAAG,KAAO,kGACZR,EAAEQ,GAAG,KAAO,kFACZR,EAAEQ,GAAG,KAAO,yBACZR,EAAEQ,GAAG,KAAO,yHACZR,EAAEQ,GAAG,KAAO,kBACZR,EAAEQ,GAAG,KAAO,sGACZR,EAAES,GAAG,KAAO,uBACZT,EAAES,GAAG,KAAO,wGACZT,EAAES,GAAG,KAAO,SACZT,EAAES,GAAG,KAAO,iGACZT,EAAES,GAAG,KAAO,0EACZT,EAAES,GAAG,KAAO,0BACZT,EAAES,GAAG,KAAO,sHACZT,EAAES,GAAG,KAAO,sBACZT,EAAES,GAAG,KAAO,uDACZT,EAAES,GAAG,KAAO,iBACZT,EAAES,GAAG,KAAO,sGACZT,EAAEU,GAAG,KAAO,kBACZV,EAAEU,GAAG,KAAO,oGACZV,EAAEU,GAAG,KAAO,SACZV,EAAEU,GAAG,KAAO,qGACZV,EAAEU,GAAG,KAAO,oFACZV,EAAEU,GAAG,KAAO,6BACZV,EAAEU,GAAG,KAAO,6GACZV,EAAEW,GAAG,KAAO,UACZX,EAAEW,GAAG,KAAO,MACZX,EAAEY,GAAG,KAAO,OACZZ,EAAEa,GAAG,KAAO,YACZb,EAAEa,GAAG,KAAO,qFACZb,EAAEa,GAAG,KAAO,OACZb,EAAEc,GAAG,KAAO,uBACZd,EAAEc,GAAG,KAAO,+FACZd,EAAEc,GAAG,KAAO,OACZd,EAAEc,GAAG,KAAO,wFACZd,EAAEc,GAAG,KAAO,2EACZd,EAAEc,GAAG,KAAO,0BACZd,EAAEc,GAAG,KAAO,qGACZd,EAAEe,GAAG,KAAO,eACZf,EAAEe,GAAG,KAAO,+FACZf,EAAEe,GAAG,KAAO,SACZf,EAAEe,GAAG,KAAO,0FACZf,EAAEe,GAAG,KAAO,0EACZf,EAAEe,GAAG,KAAO,yBACZf,EAAEe,GAAG,KAAO,mFACZf,EAAEgB,GAAG,KAAO,QACZhB,EAAEiB,GAAG,KAAO,OACZjB,EAAEkB,GAAG,KAAO,UACZlB,EAAEmB,GAAG,KAAO,QAIbrB,KAAKsB,MAAQ,SAAUjB,GAEF,iBAARA,GAAsBA,EAAKkB,QAAQ,aAAe,EAC7DpB,MAAMqB,OAAOC,kBAAkBtB,MAAMC,KAAKsB,UAAU,KAAMrB,EAAM,UAGhEF,MAAMqB,OAAOG,OAAO,QACpBC,KAAKC,SAASC,WAIhB9B,KAAK+B,eAAiB,SAAUC,EAAMC,EAAIC,EAAQC,GAEjD,IAAgBC,EAAQjC,MAAMC,KAAKsB,UAAU,KAE7CW,EAAOL,EAAKM,WAAWA,WAAWC,cAAc,gBAAgBC,YAAYC,OAC5EC,EAAO,8BAAgCvC,MAAMC,KAAKsB,UAAU,KAAO,4DACfW,EAAO,uCAE3DlC,MAAMqB,OAAOmB,kBAAkBP,EAAOM,EAAMR,EAAQnC,aAAa6C,qBAAsB,CAACX,EAAIC,EAAQC,GAAQ,cAC5GhC,MAAMqB,OAAOqB,GAAGN,cAAc,SAASO,UAGxC9C,KAAK4C,qBAAuB,SAAUV,EAAQa,GAG7C,GAAqB,kBAAVb,EACV,OAAO,EAGH,IAGAc,EAHqB,iBAAVd,KAGXc,EAAM,IAAIC,gBACVC,KAAK,OAAQH,EAAK,GAAK,OAASA,EAAK,GAAK,gBAAgB,GAC9DC,EAAIG,iBAAiB,eAAgB,qCACrCH,EAAIG,iBAAiB,eAAgBJ,EAAK,IAE1CC,EAAII,mBAAqB,WAExB,IAOGV,EAGAV,EAVoB,IAAnBgB,EAAIK,aACH,CAAC,EAAG,KAAKC,IAAIN,EAAIO,QAC6B,IAA7CP,EAAIQ,aAAajC,QAAQ,iBAI5BU,EAAOe,EAAIQ,aAAaC,MAAM,EAAGT,EAAIQ,aAAajC,QAAQ,MAC1DmB,EAAOM,EAAIQ,aAAaC,MAAMT,EAAIQ,aAAajC,QAAQ,KAAO,IAG9DS,EAAO0B,SAASC,eAAe1B,IAC1BM,cAAc,gBAAgBC,YAAcE,GAGjDV,EAAOA,EAAKO,cAAc,YAEzBP,EAAK4B,MAAQ5B,EAAK4B,MAAMH,MAAM,EAAGzB,EAAK4B,MAAMC,YAAY,KAAO,GAAKnB,GAErEvC,MAAMqB,OAAOsC,eAGb/D,aAAauB,MAAM0B,EAAIQ,cAIxBzD,aAAauB,MAAM0B,EAAIO,UAK1BP,EAAIe,KAAK,QAAUC,mBAAmBN,SAASC,eAAe,cAAcC,UAI9E5D,KAAKiE,iBAAmB,SAAUjC,EAAMC,EAAIC,EAAQC,GAEnD,IAAgBC,EAAQjC,MAAMC,KAAKsB,UAAU,KAE7CwC,EAAOlC,EAAKM,WAAWA,WAAWC,cAAc,aAAaC,YAAYC,OACzEC,EAAO,8BAAgCvC,MAAMC,KAAKsB,UAAU,KAAO,qDACtBwC,EAAO,wCAEpD/D,MAAMqB,OAAOmB,kBAAkBP,EAAOM,EAAMR,EAAQnC,aAAaoE,uBAAwB,CAAClC,EAAIC,EAAQC,GAAQ,eAG/GnC,KAAKmE,uBAAyB,SAAUjC,EAAQa,GAG/C,GAAqB,kBAAVb,EACV,OAAO,EAGH,IAGAc,EAHqB,iBAAVd,KAGXc,EAAM,IAAIC,gBACVC,KAAK,OAAQH,EAAK,GAAK,OAASA,EAAK,GAAK,gBAAgB,GAC9DC,EAAIG,iBAAiB,eAAgB,qCACrCH,EAAIG,iBAAiB,eAAgBJ,EAAK,IAE1CC,EAAII,mBAAqB,WAExB,IAKgCV,EAC7BT,EACAiC,EAGAlC,EAVoB,IAAnBgB,EAAIK,aACH,CAAC,EAAG,KAAKC,IAAIN,EAAIO,QAC6B,IAA7CP,EAAIQ,aAAajC,QAAQ,iBAI5BU,EAAOe,EAAIQ,aAAaC,MAAM,EAAGT,EAAIQ,aAAajC,QAAQ,MAC1D2C,EAAOlB,EAAIQ,aAAaC,MAAMT,EAAIQ,aAAajC,QAAQ,KAAO,IAG9DS,EAAO0B,SAASC,eAAe1B,IAC1BM,cAAc,aAAaC,YAAc0B,GAI9CE,EAAUpC,EAAKO,cAAc,YAE5BG,EAAO0B,EAAQC,aAAa,SAC5BD,EAAQE,aAAa,QAASJ,EAAOxB,EAAK6B,OAAO7B,EAAKnB,QAAQ,SAG/D6C,EAAUpC,EAAKO,cAAc,QAE5BG,EAAO0B,EAAQC,aAAa,QAC5BD,EAAQE,aAAa,OAAQ5B,EAAK6B,OAAO,EAAG7B,EAAKmB,YAAY,KAAO,GAAKK,KAG1EE,EAAUpC,EAAKO,cAAc,sBAE5BG,EAAO0B,EAAQC,aAAa,WAC5BD,EAAQE,aAAa,UAAW5B,EAAK6B,OAAO,EAAG7B,EAAKmB,YAAY,KAAO,GAAKK,EAAO,QAGpFE,EAAUpC,EAAKO,cAAc,kBAE5BG,EAAO0B,EAAQC,aAAa,WAC5BD,EAAQE,aAAa,UAAW5B,EAAK6B,OAAO,EAAG7B,EAAKmB,YAAY,KAAO,GAAKK,EAAO,OAGpF/D,MAAMqB,OAAOsC,eAGb/D,aAAauB,MAAM0B,EAAIQ,cAIxBzD,aAAauB,MAAM0B,EAAIO,UAK1BP,EAAIe,KAAK,QAAUC,mBAAmBN,SAASC,eAAe,cAAcC,UAI9E5D,KAAKwE,iBAAmB,SAAUxC,EAAMC,EAAIC,EAAQC,GACnDhC,MAAMqB,OAAOiD,mBAAmBtE,MAAMC,KAAKsB,UAAU,KAAMvB,MAAMC,KAAKsB,UAAU,KAAM3B,aAAa2E,uBAAwB,CAACzC,EAAIC,EAAQC,KAGzInC,KAAK0E,uBAAyB,SAAU3B,GAGvC,IAAIC,EAAM,IAAIC,eACdD,EAAIE,KAAK,OAAQH,EAAK,GAAK,OAASA,EAAK,GAAK,gBAAgB,GAC9DC,EAAIG,iBAAiB,eAAgBJ,EAAK,IAE1CC,EAAII,mBAAqB,WAExB,IAKOuB,EAAwDC,EAA+BC,EALvE,IAAnB7B,EAAIK,aACH,CAAC,EAAG,KAAKC,IAAIN,EAAIO,QAC6B,IAA7CP,EAAIQ,aAAajC,QAAQ,iBAGgCqD,GAAxDD,EAAajB,SAASC,eAAeX,EAAIQ,eAAkClB,WAAYuC,EAAM,EACjGF,EAAWhD,SAGPiD,EAAME,iBAAiB,UAAUC,OAAS,EAC7CH,EAAMjD,SAINiD,EAAME,iBAAiB,eAAeE,QAAQ,SAAUhD,GACvDA,EAAKsC,aAAa,KAAMtC,EAAKqC,aAAa,MAAMZ,MAAM,EAAGzB,EAAKqC,aAAa,MAAMR,YAAY,KAAO,GAAKgB,OAI3G1E,MAAMqB,OAAOsC,eAGb/D,aAAauB,MAAM0B,EAAIQ,cAIxBzD,aAAauB,MAAM0B,EAAIO,UAK1BP,EAAIe,QAGL/D,KAAKiF,WAAa,SAAU/C,GAC3B/B,MAAMqB,OAAOiD,mBAAmBtE,MAAMC,KAAKsB,UAAU,KAAMvB,MAAMC,KAAKsB,UAAU,KAAM3B,aAAamF,iBAAkBhD,IAGtHlC,KAAKkF,iBAAmB,SAAUnC,GACjC5C,MAAMqB,OAAOG,OAAO,UAAW,QAC/BC,KAAKC,SAASsD,KAAOpC,IAKa,mBAAzBnB,KAAKwD,kBACfxD,KAAKwD,iBAAiB,YAAarF,aAAaE,MAAMoF,KAAKtF"}
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
3
- * https://www.luigifab.fr/apijs - 6.6.0
3
+ * https://www.luigifab.fr/apijs - 6.7.0
4
4
  * This program is free software, you can redistribute it or modify
5
5
  * it under the terms of the GNU General Public License (GPL).
6
6
  */
7
- Array.prototype.has||(Array.prototype.has=function(t,e){if(t instanceof Array){for(e in t)if(t.hasOwnProperty(e)&&this.has(t[e]))return!0}else for(e in this)if(this.hasOwnProperty(e)&&this[e]===t)return!0;return!1}),window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=function(t,e,i){for(e=e||window,i=0;i<this.length;i++)t.call(e,this[i],i,this)});var apijs=new function(){"use strict";this.core={},this.version=660,this.config={lang:"auto",debug:!1,dialog:{closeOnClick:!1,restrictNavigation:!0,player:!0},slideshow:{ids:"slideshow",anchor:!0},upload:{tokenName:"X-CSRF-Token",tokenValue:null}},this.start=function(){var t;if(console.info("APIJS "+this.version.toString().split("").join(".")+" - hello - 1 MB/Mo = 1024 kB/ko"),document.getElementById("oldBrowser"))throw new Error("APIJS canceled, #oldBrowser detected!");(t=document.querySelector('link[href*="apijs/fontello.woff2"]'))&&t.getAttribute("href").indexOf("?a3ab5acff3")<0&&console.error("APIJS warning invalid cachekey for link:fontello.woff2?x, it must be ?a3ab5acff3"),(t=document.querySelector('script[src*="apijs.min.js?v="]'))&&t.getAttribute("src").indexOf("?v="+this.version)<0&&console.error("APIJS warning invalid cachekey for script:apijs.min.js?x, it must be ?v="+this.version),this.i18n=new this.core.i18n,this.dialog=new this.core.dialog,this.upload=new this.core.upload,this.slideshow=new this.core.slideshow,self.dispatchEvent(new CustomEvent("apijsbeforeload")),this.i18n.init(),this.slideshow.init(),document.querySelectorAll("video.apijsplayer[data-src]").forEach(function(t){apijs.startPlayer(t,t.getAttribute("data-src"))}),self.addEventListener("popstate",this.slideshow.onPopState),self.addEventListener("hashchange",this.slideshow.onPopState),this.config.debug&&(console.info("APIJS available languages: "+Object.keys(this.i18n.data).join(" ")),console.info("APIJS language loaded: "+this.config.lang),console.info("APIJS successfully started")),self.dispatchEvent(new CustomEvent("apijsload"))},this.formatNumber=function(e,t){var i,s="number"==typeof t?t:!1===t?0:2;try{i=new Intl.NumberFormat(this.config.lang,{minimumFractionDigits:s,maximumFractionDigits:s}).format(e)}catch(t){i=e.toFixed(s)}return"number"==typeof t?i:i.replace(/[.,]00$/,"")},this.startPlayer=function(t,e){return!0===this.config.dialog.player?(t.videoPlayer=new this.core.player(t,e),!0):"function"==typeof this.config.dialog.player&&(this.config.dialog.player(t,e),!0)},this.toArray=function(t){return Array.prototype.slice.call(t,0)},this.openTab=function(t){t.preventDefault(),0<this.href.length&&self.open(this.href)},this.log=function(t){this.config.debug&&console.info("APIJS "+t)},this.html=function(t,e){return!0===e||0===t.indexOf("#")?document.getElementById(t.replace("#","apijs")):this.dialog.t1?this.dialog.t1.querySelector(t):null},this.requestFullscreen=function(t){document.webkitFullscreenElement?document.webkitCancelFullScreen():document.mozFullScreenElement?document.mozCancelFullScreen():document.fullscreenElement?document.cancelFullScreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.requestFullscreen?t.requestFullscreen():t.mozRequestFullScreen&&t.mozRequestFullScreen()},this.serialize=function(t,i){var s=[];return i="string"==typeof i?i:"",Array.prototype.forEach.call(t.elements,function(t){if(t.name&&!t.disabled&&!["file","reset","submit","button"].has(t.type)&&0===t.name.indexOf(i))if("select-multiple"===t.type)for(var e=0;e<t.options.length;e++)t.options[e].selected&&s.push(encodeURIComponent(t.name)+"="+encodeURIComponent(t.options[e].value));else["checkbox","radio"].has(t.type)&&!t.checked||s.push(encodeURIComponent(t.name)+"="+encodeURIComponent(t.value))}),s.join("&")}};"function"==typeof self.addEventListener&&self.addEventListener("load",apijs.start.bind(apijs)),apijs.core.i18n=function(){"use strict";this.data={cs:{103:"Zrušit",104:"Potvrzení",105:"Zavřít",106:"Předchozí",107:"Následující",132:"video stopa",133:"zvuková stopa",134:"titulky",142:"předchozí/následující",144:"zpět/vpřed",146:"ztlumit",149:"Konec",150:"Esc"},de:{103:"Abbrechen",104:"Bestätigen",105:"Schließen",106:"Vorheriges",107:"Nächstes",108:"Datei wählen",109:"Dateien wählen",124:"Verarbeitung läuft...",132:"videospur",133:"audiospur",134:"untertitel",142:"vorheriges/nächstes",143:"wiedergabe/pause",144:"rückwärts/vorwärts",145:"leiser/lauter",146:"ton aus",147:"vollbild",148:"beenden",149:"Ende",150:"Esc",161:"Alle Dateien wurden akzeptiert.",162:"Akzeptiertes Dateiformat: §.",163:"Akzeptiertes Dateiformate: § und §.",164:"Maximale Größe: § MB.",167:"Unerlaubtes Format",168:"Format zu gross",169:"Leere Datei",181:"§% - § kB/s - Noch § Minuten",182:"§% - § kB/s - Noch § Minute",183:"§% - § kB/s - Noch § Sekunden",185:"§% - bis § kB/s in § Minuten",186:"§% - bis § kB/s in § Minute",187:"§% - bis § kB/s in § Sekunden",188:"§% - bis § kB/s",191:"Abbrechen",192:"Sind Sie sicher? [span]Ja[/span] - Nein",193:"Es ist ein unerwarteter Fehler aufgetreten... Bitte versuchen Sie es noch einmal.",194:"Es ist ein Fehler beim Senden.",195:"Es ist ein Fehler bei der Verarbeitung.",196:"Wir laden Sie ein es erneut zu [a §]versuchen[/a]."},en:{102:"Ok",103:"Cancel",104:"Confirm",105:"Close",106:"Previous",107:"Next",108:"Choose a file",109:"Choose one or multiple files",124:"Operation in progress...",125:"Upload in progress...",126:"Processing file in progress...",131:"video",132:"video track",133:"audio track",134:"subtitles",135:"off",141:"first/last",142:"previous/next",143:"play/pause",144:"backward/forward",145:"decrease/increase the volume",146:"mute",147:"full screen",148:"quit",149:"End",150:"Escape",161:"All files are accepted.",162:"Accepted file format: §.",163:"Accepted file formats: § and §.",164:"Maximum size: § MB.",165:"Maximum size by file: § MB.|Total maximum size: § MB.",166:"§ MB",167:"Format not allowed",168:"Size too large",169:"File empty",181:"§% - § kB/s - § minutes left",182:"§% - § kB/s - § minute left",183:"§% - § kB/s - § seconds left",184:"§% - § kB/s",185:"§% - at § kB/s in § minutes",186:"§% - at § kB/s in § minute",187:"§% - at § kB/s in § seconds",188:"§% - at § kB/s",191:"Interrupt",192:"Are you sure? [span]Yes[/span] - No",193:"It seems that an unlikely mistake just happened... Please try again.",194:"An error occurred while sending.",195:"An error occurred while processing.",196:"We invite you to [a §]try again[/a]."},es:{102:"Aceptar",103:"Cancelar",104:"Confirmar",105:"Cerrar",106:"Anterior",107:"Siguiente",108:"Elegir un fichero",109:"Elegir uno o varios ficheros",124:"Operación en curso...",125:"Envío en progreso...",126:"Tratamiento en curso...",131:"vídeo",132:"pista de vídeo",133:"pista de audio",134:"subtítulos",142:"anterior/siguiente",143:"reproducir/pausa",144:"retroceder/avanzar",145:"bajar/subir volumen",146:"silenciar",147:"pantalla completa",148:"salir",149:"Fin",150:"Esc",161:"Se aceptan todos los archivos.",162:"Formato de archivo aceptado: §.",163:"Formatos de archivos aceptados: § y §.",164:"Tamaño máximo: § MB.",165:"Tamaño máximo por fichero: § Mo.|Tamaño máximo total: § Mo.",167:"Formato no autorizado",168:"Tamaño demasiado importante",169:"Fichero vacío",181:"§% - § kB/s - § minutos restantes",182:"§% - § kB/s - § minuto restantes",183:"§% - § kB/s - § segundos restantes",185:"§% - a § kB/s en § minutos",186:"§% - a § kB/s en § minuto",187:"§% - a § kB/s en § segundos",188:"§% - a § kB/s",191:"Interrumpir",192:"¿Está seguro(a)? [span]Sí[/span] - No",193:"Parece que un error improbable acabo de ocurrir... Por favor, inténtelo de nuevo.",194:"Se produjo un error durante el envío.",195:"Se produjo un error durante el procesamiento.",196:"Le invitamos a [a §]intentar de nuevo[/a]."},fr:{103:"Annuler",104:"Valider",105:"Fermer",106:"Précédent",107:"Suivant",108:"Choisir un fichier",109:"Choisir un ou plusieurs fichiers",124:"Opération en cours...",125:"Envoi en cours...",126:"Traitement en cours...",131:"vidéo",132:"piste vidéo",133:"piste audio",134:"sous-titres",141:"premier/dernier",142:"précédent/suivant",143:"lecture/pause",144:"reculer/avancer",145:"réduire/augmenter le volume",146:"couper le son",147:"plein écran",148:"quitter",149:"Fin",150:"Échap",161:"Tous les fichiers sont acceptés.",162:"Format de fichier accepté : §.",163:"Formats de fichier acceptés : § et §.",164:"Taille maximale : § Mo.",165:"Taille maximale par fichier : § Mo.|Taille maximale total : § Mo.",166:"§ Mo",167:"Format non autorisé",168:"Taille trop importante",169:"Fichier vide",181:"§% - § ko/s - § minutes restantes",182:"§% - § ko/s - § minute restante",183:"§% - § ko/s - § secondes restantes",184:"§% - § ko/s",185:"§% - à § ko/s en § minutes",186:"§% - à § ko/s en § minute",187:"§% - à § ko/s en § secondes",188:"§% - à § ko/s",191:"Interrompre",192:"Êtes-vous sûr(e) ? [span]Oui[/span] - Non",193:"Il semblerait qu'une erreur improbable vient de se produire... Veuillez réessayer.",194:"Une erreur est survenue lors de l'envoi.",195:"Une erreur est survenue lors du traitement.",196:"Nous vous invitons à [a §]réessayer[/a]."},it:{103:"Annulla",104:"Conferma",105:"Chiudi",106:"Precedente",107:"Successivo",108:"Scegli un file",109:"Scegli uno o più file",124:"Operazione in corso...",125:"Invio in corso...",126:"Trattamento in corso...",132:"traccia video",133:"traccia audio",134:"sottotitoli",142:"precedente/successivo",143:"riproduci/pausa",144:"indietro/avanti",145:"riduci/aumenta volume",146:"silenzio",147:"schermo intero",148:"esci",149:"Fine",150:"Esc",161:"Tutti i file sono accettati.",162:"Formato del file accettato: §.",163:"Formati accettati: § et §.",164:"Dimensione massima: § MB.",167:"Formato non autorizzato",168:"Dimensione troppo importante",169:"File vuoto",181:"§% - § kB/s - § minuti rimanenti",182:"§% - § kB/s - § minuto rimanente",183:"§% - § kB/s - § secondi rimanenti",185:"§% - a § kB/s in § minuti",186:"§% - a § kB/s in § minuto",187:"§% - a § kB/s in § secondi",188:"§% - a § kB/s",191:"Interrompere",192:"Sei sicuro? [span]Si[/span] - No",193:"Sembra che un errore inaspettato si sia verificato... Riprova.",194:"Un errore si è verificato durante l'invio.",195:"Un errore si è verificato durante il trattamento.",196:"Vi invitiamo a [a §]riprovare[/a]."},ja:{103:"キャンセル",104:"承認",105:"閉じる",106:"前へ",107:"次へ",131:"ビデオ",132:"ビデオトラック",133:"オーディオトラック",134:"字幕",142:"前へ/次へ",144:"戻る/進む",146:"ミュート",147:"全画面表示",149:"終了",150:"Esc",166:"§ Mo",184:"§% - § Ko/s",192:"よろしいですか?[span]はい[/span] - いいえ"},nl:{103:"Annuleren",104:"Bevestigen",105:"Sluiten",106:"Vorige",107:"Volgende",132:"videospoor",133:"audiospoor",134:"ondertitels",142:"vorige/volgende",144:"achteruit/vooruit",145:"volume omlaag/omhoog",146:"dempen",147:"schermvullend",150:"Esc"},pl:{103:"Anuluj",104:"Potwierdź",105:"Zamknij",106:"Poprzedni",107:"Następny",131:"obraz",132:"ścieżka obrazu",133:"ścieżka dźwiękowa",134:"napisy",142:"poprzedni/następny",144:"wstecz/przodu",145:"ciszej/głośniej",146:"wycisz",147:"pełny ekran",150:"Esc"},pt:{103:"Cancelar",104:"Confirmar",105:"Fechar",106:"Anterior",107:"Seguinte",108:"Escolher um ficheiro",109:"Escolher um ou vários ficheiros",124:"Operação em processo...",125:"Envio em processo...",126:"Tratamento em processo...",131:"vídeo",132:"faixa de vídeo",133:"faixa de áudio",134:"legendas",142:"anterior/seguinte",143:"reprodução/pausa",144:"recuar/avançar",145:"diminuir/aumentar volume",146:"sem som",147:"ecrã completo",148:"sair",149:"Fim",150:"Esc",161:"Todos os ficheiros foram aceites.",162:"Formato do ficheiro aceite: §.",163:"Formatos de ficheiro aceites: § e §.",164:"Tamanho máximo: § MB.",181:"§% - § kB/s - § minutos restantes",182:"§% - § kB/s - § minuto restantes",183:"§% - § kB/s - § segundos restantes",185:"§% - § kB/s em § minutos",186:"§% - § kB/s em § minuto",187:"§% - § kB/s em § segundos",188:"§% - § kB/s",192:"Tem a certeza? [span]Sim[/span] - Não",193:"Parece ter acontecido um erro imprevisto. Por favor, tente novamente.",194:"Ocorreu um erro ao enviar.",195:"Ocorreu um erro ao processar.",196:"Convidamo-lo a [a §]tentar novamente[/a]."},ptbr:{107:"Próximo",124:"Operação em andamento...",125:"Envio em andamento...",126:"Tratamento em andamento...",132:"trilha de vídeo",133:"trilha de áudio",142:"anterior/próximo",144:"retroceder/avançar",146:"sem áudio",147:"tela inteira",149:"Final"},ru:{102:"Ок",103:"Отмена",104:"Подтвердить",105:"Закрыть",106:"Предыдущий",107:"Следующий",108:"Выберите файл",124:"Операция в процессе...",131:"видео",132:"видеодорожка",133:"аудиодорожка",134:"субтитры",142:"предыдущий/следующий",143:"воспроизведение/пауза",144:"назад/вперед",145:"понизить/повысить громкость",146:"выключить звук",147:"полноэкранный режим",148:"выйти",150:"Esc",161:"Все файлы приняты.",162:"Формат файла: §.",163:"Форматы файлов: § и §.",164:"Максимальный размер: § MB.",181:"§% - § kB/s - осталось § минут",182:"§% - § kB/s - осталось § минут",183:"§% - § kB/s - осталось § секунд",185:"§% - § kB/s за § минут",186:"§% - § kB/s за § минут",187:"§% - § kB/s за § секунд",188:"§% - § kB/s",192:"Вы уверены? [span]Да[/span] - нет",193:"Кажется произошла не предусмотренная ошибка... Попробуйте еще раз.",194:"Возникла ошибка при отправке файла.",195:"Возникла ошибка при обработке файла."},sk:{103:"Zrušiť",104:"Potvrdiť",105:"Zavrieť",106:"Dozadu",107:"Ďalej",133:"zvuková stopa",134:"titulky",142:"dozadu/ďalej",144:"dozadu/dopredu",145:"znizit/zvysit hlasitost",146:"stlmiť",150:"Esc"},tr:{103:"İptal",104:"Onayla",105:"Kapat",106:"Önceki",107:"Sonraki",131:"görüntü",132:"görüntü kaydı",133:"ses kaydı",134:"altyazılar",142:"önceki/sonraki",144:"geri/i̇leri",145:"ses kısar/açar",146:"sesi kapatma",147:"tam ekran",149:"Son",150:"Esc",192:"Emin misiniz ? [span]Evet[/span] - Hayır"},uk:{103:"Відмінити",104:"Підтвердити",105:"Закрити",106:"Попередній",107:"Наступний",131:"відео",132:"відеодоріжка",133:"звукова доріжка",134:"субтитри",142:"попередній/наступний",144:"назад/вперед",145:"зменшити/збільшити гучність",146:"вимкнути звук",149:"Кінець",150:"Esc"},zh:{103:"取消",104:"确认",105:"关闭",106:"上一个",107:"下一个",131:"视频",132:"视频轨道",133:"音频轨道",134:"字幕",142:"上一个/下一个",144:"快退/快进",145:"音量减/增",146:"静音",147:"全屏",150:"Esc",192:"您确定吗?[span]是[/span] - 否"}},this.init=function(){var t=apijs.config.lang,e=document.querySelector("html");-1<t.indexOf("auto")&&"string"==typeof(t=e.getAttribute("xml:lang")||e.getAttribute("lang"))&&(t=(t=t.replace(/[-_]/g,"").toLowerCase()).slice(0,4),this.data.hasOwnProperty(t)||(t=t.slice(0,2)),this.data.hasOwnProperty(t)&&(apijs.config.lang=t)),this.data.hasOwnProperty(t)||(apijs.config.lang="en")},this.translate=function(t){var e=apijs.config.lang,i=1,s="";if("string"!=typeof this.data[e][t])if(3<e.length&&"string"==typeof this.data[e.slice(0,2)][t])e=e.slice(0,2);else{if("en"===e||"string"!=typeof this.data.en[t])return t;e="en"}return 1<arguments.length?(this.data[e][t].split("§").forEach(function(t){s+=i<this.length?t+this[i++]:t},arguments),s):this.data[e][t]},this.translateNode=function(){return document.createTextNode(this.translate.apply(this,arguments))},this.changeLang=function(t){if("string"==typeof t){if(-1<t.indexOf("auto"))return apijs.config.lang="auto",this.init(),!0;if(t=t.replace(/[-_]/g,""),this.data.hasOwnProperty(t))return apijs.config.lang=t,!0}return!1}},apijs.core.select=function(){"use strict";this.init=function(){document.querySelectorAll("select").forEach(function(t){t.addEventListener("focus",apijs.select.open)})},this.open=function(t){var e,i=t.target,s=document.createDocumentFragment(),n=document.createElement("div"),t=document.createElement("ul");i.querySelectorAll("option").forEach(function(t){(e=document.createElement("li")).appendChild(document.createTextNode(t.textContent)),Array.prototype.forEach.call(t.attributes,function(t){e.setAttribute(t.name,t.value)}),this.appendChild(e)},t),n.appendChild(t),s.appendChild(n),console.log(s.firstChild.innerHTML),i.parentNode.replaceChild(s.firstChild,i)}},apijs.core.player=function(n,t){"use strict";this.video=n,this.stalled=!1,this.subload=!1,this.autoRun=function(a,t){if(a.removeAttribute("src"),a.removeAttribute("data-src"),a.removeAttribute("controls"),a.classList.add("apijsplayer"),a.onloadedmetadata=function(t){this.stalled=!1,this.onTimeupdate(t),this.onProgress(t),this.onVideotrack(),this.onAudiotrack()}.bind(this),a.onstalled=function(t){this.stalled=!0,this.onWaiting(t)}.bind(this),a.onplaying=this.onPlay.bind(this),a.onpause=this.onPlay.bind(this),a.onended=this.onPlay.bind(this),a.onprogress=this.onProgress.bind(this),a.ontimeupdate=this.onTimeupdate.bind(this),a.onseeking=this.onTimeupdate.bind(this),a.onseeked=this.onWaiting.bind(this),a.onwaiting=this.onWaiting.bind(this),a.onloadstart=this.onWaiting.bind(this),a.oncanplay=this.onWaiting.bind(this),a.onclick=this.actionPlay.bind(this),a.onvolumechange=this.actionVolume.bind(this),a.ondurationchange=apijs.dialog.onMediaLoad,a.onerror=apijs.dialog.onMediaLoad,a.parentNode.appendChild(this.htmlSvgPlayer()),t.indexOf("m3u")<0)return a.appendChild(this.htmlSource(t)),this;var o=new XMLHttpRequest;return o.open("GET",t,!0),o.onreadystatechange=function(){if(4===o.readyState)if(self.dispatchEvent(new CustomEvent("apijsajaxresponse",{detail:{from:"apijsplayer.init",xhr:o}})),!a||0<a.childNodes.length)o.abort();else if([0,200].has(o.status)){for(var t,e,i=0,s=0,n=o.responseText.trim().split("\n");"string"==typeof(t=n.shift());)0===t.indexOf("#APIJS#attr")?(e=t.split("|"),a.setAttribute(e[1],e[2])):0===t.indexOf("#APIJS#track|subtitles")?(e=t.split("|"),this.html(".tracks.texttrack select").appendChild(this.htmlOption(s++,e[3]+" - "+e[2])),a.appendChild(this.htmlTrack(e))):0===t.indexOf("#EXTINF")?e=t.replace(/#EXTINF:[0-9]+,/,""):5<t.length&&"#"!==t[0]&&(this.html(".tracks.video select").appendChild(this.htmlOption(i++,"string"==typeof e?e:i)),a.appendChild(this.htmlSource(t)));this.updateSelect("video",i),"object"==typeof a.textTracks&&this.updateSelect("texttrack",a.textTracks.length||s)}else apijs.dialog.onMediaLoad({type:"error"})}.bind(this),o.send(),this},this.updateSelect=function(t,e){var i="texttrack"===t?1:0;i<e?(this.html(".tracks."+t).removeAttribute("style"),this.html(".tracks."+t+" em").textContent="("+e+")",this.html(".tracks."+t+" select").setAttribute("size",e<10?e+i:10)):(this.html(".tracks."+t).setAttribute("style","display:none;"),this.html(".tracks."+t+" select").innerHTML="")},this.html=function(t){return this.video.parentNode.querySelector(t)},this.onVideotrack=function(){var t,e=this.video.videoTracks,i=this.html(".tracks.videotrack select"),s=apijs.config.lang,n=-1;if("object"==typeof e){if(1<e.length){for(t=0;t<e.length;t++)e[t].language&&0==e[t].language.toLowerCase().replace(/[-_]/g,"").indexOf(s)&&(n=n<0?t:n),i.appendChild(this.htmlOption(t,e[t]));this.updateSelect("videotrack",e.length)}i.selectedIndex=Math.max(0,n),0<=n&&this.actionVideotrack(n)}},this.onAudiotrack=function(){var t,e=this.video.audioTracks,i=this.html(".tracks.audiotrack select"),s=apijs.config.lang,n=-1;if("object"==typeof e){if(1<e.length){for(t=0;t<e.length;t++)e[t].language&&0==e[t].language.toLowerCase().replace(/[-_]/g,"").indexOf(s)&&(n=n<0?t:n),i.appendChild(this.htmlOption(t,e[t]));this.updateSelect("audiotrack",e.length)}i.selectedIndex=Math.max(0,n),0<=n&&this.actionAudiotrack(n)}},this.onTimeupdate=function(t){var e,i,s,n=this.video.currentTime,a=this.video.duration,o="--:--";isNaN(n)||a===1/0||isNaN(a)||(o=(e=0<(e=Math.floor(n/3600))?e+":":"")+(i=(i=Math.floor(n%3600/60))<10?"0"+i:i)+":"+(s=(s=Math.floor(n%60))<10?"0"+s:s),o+=" / "+(e=0<(e=Math.floor(a/3600))?e+":":"")+(i=(i=Math.floor(a%3600/60))<10?"0"+i:i)+":"+(s=(s=Math.floor(a%60))<10?"0"+s:s),this.html("svg.bar rect").style.width=n/a*100+"%"),this.html("span.time").textContent=o,this.stalled&&!this.subload&&(this.stalled=!1,this.onWaiting(t))},this.onProgress=function(){var t,e,i=this.video,s=this.html("svg.bar"),n=i.buffered.length;if(0<n&&i.duration!==1/0&&!isNaN(i.duration))for(s.querySelectorAll(".buffer").forEach(function(t){t.parentNode.removeChild(t)});0<n--;)(e=document.createElement("rect")).setAttribute("class","buffer"),99.8<(t=(i.buffered.end(n)-i.buffered.start(n))/i.duration*100)?e.setAttribute("style","left:0%; width:100%;"):e.setAttribute("style","left:"+i.buffered.start(n)/i.duration*100+"%; width:"+t+"%;"),s.appendChild(e)},this.onPlay=function(){[1,2].has(this.video.networkState)&&(this.video.paused?(this.html("span.play").textContent="",apijs.dialog.remove("playing")):(this.html("span.play").textContent="",apijs.dialog.add("playing")))},this.onWaiting=function(t){apijs.log("player:video:onWaiting:"+t.type+" stalled:"+this.stalled+"/subload:"+this.subload),apijs.dialog[["loadstart","waiting","seeking","stalled"].has(t.type)?"add":"remove"]("loading")},this.actionPlay=function(){var t=this.video;[1,2].has(t.networkState)&&(t.ended||t.paused?t.play():t.pause())},this.actionVolume=function(t){var e=this.video,i=this.html("svg.vol"),s=i.offsetWidth,n=0;if([1,2].has(e.networkState)){if("object"==typeof t&&!isNaN(t.clientX)){for(;n+=i.offsetLeft,i=i.offsetParent;);n=(n=100*(t.clientX-n)/s/100)<=.1?0:.92<n?1:n,e.volume=n,e.muted=!1}this.html("svg.vol rect").style.width=e.muted?0:100*e.volume+"%"}},this.actionPosition=function(t){var e=this.video,i=this.html("svg.bar"),s=i.offsetWidth,n=0;if([1,2].has(e.networkState)&&e.duration!==1/0&&!isNaN(e.duration)&&"object"==typeof t){for(;n+=i.offsetLeft,i=i.offsetParent;);n=(n=e.duration*(t.clientX-n)*100/s/100)<=1?0:n,e.currentTime=n}},this.actionVideotrack=function(t){var e,i=this.video.videoTracks,s="object"==typeof t?t.target.value:t;if([1,2].has(this.video.networkState)){for(e=0;e<i.length;e++)i[e].enabled=e==s;--n.currentTime}"object"==typeof t&&t.target.blur()},this.actionAudiotrack=function(t){var e,i=this.video.audioTracks,s="object"==typeof t?t.target.value:t;if([1,2].has(this.video.networkState)){for(e=0;e<i.length;e++)i[e].enabled=e==s;--n.currentTime}"object"==typeof t&&t.target.blur()},this.actionTexttrack=function(t){var e,i=this.video.textTracks,s="object"==typeof t?t.target.value:t;if([1,2].has(this.video.networkState)){for(e=0;e<i.length;e++)i[e].mode=e==s?"showing":"hidden";this.subload=!0}"object"==typeof t&&t.target.blur()},this.actionVideo=function(t){this.html("svg.bar rect").style.width="0",this.html("svg.bar").querySelectorAll(".buffer").forEach(function(t){t.parentNode.removeChild(t)}),this.html("span.play").textContent="",this.updateSelect("videotrack",0),this.updateSelect("audiotrack",0),this.video.src=this.video.querySelectorAll("source")["object"==typeof t?t.target.value:t].src,"object"==typeof t&&t.target.blur()},this.htmlSvgPlayer=function(){var t,e,i,s=document.createElement("div");return s.setAttribute("class","apijsplayer noplaying"),(i=document.createElement("span")).setAttribute("class","btn play fnt"),i.appendChild(document.createTextNode("")),i.onclick=this.actionPlay.bind(this),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","svg bar"),(e=document.createElement("svg")).setAttribute("class","bar"),e.onclick=this.actionPosition.bind(this),t=document.createElement("rect"),e.appendChild(t),i.appendChild(e),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","time"),i.appendChild(document.createTextNode("--:--")),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","svg vol nomobile"),(e=document.createElement("svg")).setAttribute("class","vol"),e.onclick=this.actionVolume.bind(this),t=document.createElement("rect"),e.appendChild(t),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks audiotrack"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(133)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionAudiotrack.bind(this),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks videotrack"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(132)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionVideotrack.bind(this),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks video"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(131)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionVideo.bind(this),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks texttrack"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(134)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionTexttrack.bind(this),(t=document.createElement("option")).appendChild(apijs.i18n.translateNode(135)),e.appendChild(t),i.appendChild(e),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","btn full fnt nomobile"),i.appendChild(document.createTextNode("")),i.onclick=function(){apijs.requestFullscreen(apijs.dialog.t1||this.video.parentNode)}.bind(this),s.appendChild(i),s},this.htmlTrack=function(t){var e=document.createElement("track");return e.setAttribute("kind",t[1]),e.setAttribute("label",t[2]),e.setAttribute("srclang",t[3]),e.setAttribute("src",t[4]),e.onload=function(t){apijs.log("player:track:onload "+t.target.src.slice(t.target.src.lastIndexOf("/")+1)),"showing"===t.target.track.mode&&(this.onWaiting(t),this.subload=!1)}.bind(this),e.onerror=function(t){apijs.log("player:track:onerror "+t.target.src.slice(t.target.src.lastIndexOf("/")+1)),"showing"===t.target.track.mode&&(this.onWaiting(t),this.subload=!1)}.bind(this),e},this.htmlSource=function(t){var e=document.createElement("source");return e.setAttribute("src",t),e.onerror=apijs.dialog.onMediaLoad,e},this.htmlOption=function(t,e){"object"==typeof e&&(e=""===e.label?e.language.toLowerCase():e.language.toLowerCase()+" - "+e.label);var i=document.createElement("option");return i.setAttribute("value",t),i.appendChild(document.createTextNode(e)),i},this.autoRun(n,t)},apijs.core.dialog=function(){"use strict";this.klass=[],this.height=0,this.scroll=0,this.callback=null,this.args=null,this.xhr=null,this.ft=/information|confirmation|options|upload|progress|waiting|photo|video|iframe|ajax|start|ready|end|reduce|mobile|tiny|fullscreen/g,this.ti="a,area,button,input,textarea,select,object,iframe",this.ns="http://www.w3.org/2000/svg",this.media=null,this.t0=null,this.t1=null,this.t2=null,this.a=null,this.b=null,this.c=null,this.d=null,this.dialogInformation=function(t,e,i){return"string"==typeof t&&"string"==typeof e?this.init("information",i).htmlParent().htmlContent(t,e).htmlBtnOk().show("button.confirm"):(console.error("apijs.dialog.dialogInformation invalid arguments",arguments),!1)},this.dialogConfirmation=function(t,e,i,s,n){return"string"==typeof t&&"string"==typeof e&&"function"==typeof i?(this.callback=i,this.args=s,this.init("confirmation",n).htmlParent().htmlContent(t,e).htmlBtnConfirm("button","apijs.dialog.actionConfirm();").show("button.confirm")):(console.error("apijs.dialog.dialogConfirmation invalid arguments",arguments),!1)},this.dialogFormOptions=function(t,e,i,s,n,a){return"string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"function"==typeof s?(this.callback=s,this.args=n,this.init("options",a).htmlParent(i,"apijs.dialog.actionConfirm();").htmlContent(t,e).htmlBtnConfirm("submit").show(!0)):(console.error("apijs.dialog.dialogFormOptions invalid arguments",arguments),!1)},this.dialogFormUpload=function(t,e,i,s,n,a){return"string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"string"==typeof s?this.init("upload",a).htmlParent(i,"apijs.upload.actionConfirm();").htmlContent(t,e).htmlUpload(s,"boolean"==typeof n&&n).htmlBtnConfirm("submit").show("button.browse"):(console.error("apijs.dialog.dialogFormUpload invalid arguments",arguments),!1)},this.dialogProgress=function(t,e,i){return"string"==typeof t&&"string"==typeof e?this.init("progress",i).htmlParent().htmlContent(t,e).htmlSvgProgress().show():(console.error("apijs.dialog.dialogProgress invalid arguments",arguments),!1)},this.dialogWaiting=function(t,e,i){return"string"==typeof t&&"string"==typeof e?this.init("waiting",i).htmlParent().htmlContent(t,e).htmlSvgLoader(!1).show():(console.error("apijs.dialog.dialogWaiting invalid arguments",arguments),!1)},this.dialogPhoto=function(t,e,i,s,n){var a="string"==typeof n;return n=a?"notransition slideshow loading "+n:"notransition loading","string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"string"==typeof s?this.init("photo",n).htmlParent().htmlMedia(t,e,i,s).htmlHelp(a,!1).htmlBtnClose().htmlBtnNavigation().htmlSvgLoader().show():(console.error("apijs.dialog.dialogPhoto invalid arguments",arguments),!1)},this.dialogVideo=function(t,e,i,s,n){var a="string"==typeof n;return n=a?"notransition slideshow loading "+n:"notransition loading","string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"string"==typeof s?this.init("video",n).htmlParent().htmlMedia(t,e,i,s).htmlHelp(a,t.indexOf("iframe")<0).htmlBtnClose().htmlBtnNavigation().htmlSvgLoader().show():(console.error("apijs.dialog.dialogVideo invalid arguments",arguments),!1)},this.dialogIframe=function(t,e,i){return"string"==typeof t&&"boolean"==typeof e?this.init("iframe","string"==typeof i?i+" loading":"loading",!e).htmlParent().htmlIframe(t).htmlBtnClose(e).htmlSvgLoader(!1).show():(console.error("apijs.dialog.dialogIframe invalid arguments",arguments),!1)},this.dialogAjax=function(t,e,i,s,n){return"string"==typeof t&&"boolean"==typeof e&&"function"==typeof i?(this.callback=i,this.args=s,this.init("ajax","string"==typeof n?n+" loading":"loading",!e).htmlParent().htmlBtnClose(e).htmlSvgLoader(!1).show(),this.xhr=new XMLHttpRequest,this.xhr.open("GET",t,!0),this.xhr.onreadystatechange=function(){4===this.xhr.readyState&&"function"==typeof this.callback&&(this.callback(this.xhr,this.args),this.remove("loading"))}.bind(this),this.xhr.send(),this):(console.error("apijs.dialog.dialogAjax invalid arguments",arguments),!1)},this.update=function(){return this.has("start","ready","end")&&(this.t1&&this.t1.setAttribute("class",this.klass.join(" ")),this.t2&&this.t2.setAttribute("class",this.klass.join(" "))),this},this.add=function(){return Array.prototype.forEach.call(arguments,function(t){"string"!=typeof t&&console.error("apijs.dialog.add argument is not a string",t),this.klass.indexOf(t)<0&&this.klass.push(t)},this),this.update()},this.remove=function(){return Array.prototype.forEach.call(arguments,function(t){"string"!=typeof t&&console.error("apijs.dialog.remove argument is not a string",t),-1<this.klass.indexOf(t)&&this.klass.splice(this.klass.indexOf(t),1)},this),this.update()},this.toggle=function(t,e){return"string"==typeof t&&"string"==typeof e||console.error("apijs.dialog.toggle argument is not a string",t,e),this.has(t)&&this.remove(t),this.has(e)||this.add(e),this.update()},this.has=function(){return this.klass.has(apijs.toArray(arguments))},this.actionClose=function(t){apijs.config.slideshow.anchor&&"function"==typeof history.pushState&&new RegExp("#("+apijs.config.slideshow.ids+"[-\\.]\\d+[-\\.]\\d+)").test(self.location.href)&&history.pushState({},"",self.location.href.slice(0,self.location.href.indexOf("#"))),"object"==typeof t?"apijsDialog"!==t.target.getAttribute("id")||apijs.dialog.has("photo","video","progress","waiting","lock")||apijs.dialog.clear(!0):this.t1&&this.clear(!0)},this.onCloseBrowser=function(t){if(apijs.dialog.has("progress","waiting","lock"))return t.preventDefault(),t.stopPropagation(),t.m=apijs.i18n.translate(124),t.returnValue=t.m,t.m},this.onResizeBrowser=function(){var t=document.querySelector("body").clientWidth<=(apijs.dialog.has("photo","video")?900:460);apijs.dialog[t?"add":"remove"]("mobile"),t=document.querySelector("body").clientWidth<=300,apijs.dialog[t?"add":"remove"]("tiny")},this.onScrollBrowser=function(t){var e=apijs.dialog,i=t.target,s=!1;if(e.has("slideshow")&&!e.has("playing")&&!["OPTION","SELECT"].has(i.nodeName)&&["DOMMouseScroll","mousewheel","panleft","panright"].has(t.type))i=(new Date).getTime()/1e3,(e.scroll<1||i>1+e.scroll)&&(e.scroll=i,s=0<t.detail||t.wheelDelta<0,apijs.slideshow["panleft"===t.type||s?"actionNext":"actionPrev"]());else{if("OPTION"===i.nodeName)i=i.parentNode;else if(!["TEXTAREA","SELECT"].has(i.nodeName))for(;!0!==s&&"HTML"!==i.nodeName;)i.classList.contains("scrollable")?s=!0:i=i.parentNode;if("HTML"!==i.nodeName&&((s=0<t.detail||t.wheelDelta<0)&&i.scrollTop<i.scrollHeight-i.offsetHeight||!s&&0<i.scrollTop))return}t.preventDefault(),t.stopPropagation()},this.onScrollIframe=function(t){for(var e,i=t.target;i.parentNode;)i=i.parentNode;((e=0<t.detail||t.wheelDelta<0)&&i.defaultView.innerHeight+i.defaultView.pageYOffset>=i.body.offsetHeight-1||!e&&i.defaultView.pageYOffset<=0)&&(t.preventDefault(),t.stopPropagation())},this.onKey=function(t){var e=apijs.dialog,i=e.media;e.has("progress","waiting","lock")?(t.ctrlKey&&[81,87,82,115,116].has(t.keyCode)||t.altKey&&115===t.keyCode||[27,116].has(t.keyCode))&&t.preventDefault():e.has("photo","video")&&122===t.keyCode?(t.preventDefault(),apijs.requestFullscreen(e.t1)):e.has("slideshow")?27===t.keyCode?(t.preventDefault(),e.actionClose()):35===t.keyCode?(t.preventDefault(),apijs.slideshow.actionLast()):36===t.keyCode?(t.preventDefault(),apijs.slideshow.actionFirst()):37===t.keyCode?(t.preventDefault(),apijs.slideshow.actionPrev()):39===t.keyCode&&(t.preventDefault(),apijs.slideshow.actionNext()):27===t.keyCode&&(t.preventDefault(),e.actionClose()),e.has("video")&&!e.has("videoiframe")&&(32===t.keyCode||80===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&(i.ended||i.paused?i.play():i.pause())):38===t.keyCode||33===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&i.duration!==1/0&&!isNaN(i.duration)&&i.currentTime<i.duration-10&&(i.currentTime+=10)):40===t.keyCode||34===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&i.duration!==1/0&&!isNaN(i.duration)&&(10<i.currentTime?i.currentTime-=10:i.currentTime=0)):107===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&(i.muted&&(i.muted=!1),i.volume<.8?i.volume+=.2:i.volume=1)):109===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&(i.muted&&(i.muted=!1),.21<i.volume?i.volume-=.2:i.volume=0)):77===t.keyCode&&(t.preventDefault(),[1,2].has(i.networkState)&&(i.muted=!i.muted))),[32,33,34,35,36,38,40].has(t.keyCode)&&(t.target&&["INPUT","TEXTAREA","OPTION","SELECT"].has(t.target.nodeName)||(t.preventDefault(),t.stopPropagation()))},this.onFullscreen=function(t){var e=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement;t&&apijs.log("dialog:onFullscreen:"+(e?"in":"out")),apijs.dialog[e?"add":"remove"]("fullscreen")},this.onIframeLoad=function(t){t.removeAttribute("class"),apijs.dialog.remove("loading"),t.contentWindow.document.addEventListener("keydown",window.parent.apijs.dialog.onKey),t.contentWindow.addEventListener("DOMMouseScroll",window.parent.apijs.dialog.onScrollIframe,{passive:!1}),t.contentWindow.addEventListener("mousewheel",window.parent.apijs.dialog.onScrollIframe,{passive:!1}),t.contentWindow.addEventListener("touchmove",window.parent.apijs.dialog.onScrollIframe,{passive:!1})},this.onMediaLoad=function(t){var e,i,s=apijs.dialog,n=s.media;t&&t.target&&(e=t.target.currentSrc||t.target.src,apijs.log("dialog:onMediaLoad:"+t.type+" "+(e?e.slice(e.lastIndexOf("/")+1):""))),n&&["load","durationchange"].has(t.type)?(s.remove("loading","error"),n.style.visibility="visible",n.hasAttribute("src")||"IMG"!==n.nodeName||n.setAttribute("src",n.imageLoader.src)):n&&"error"===t.type&&(s.toggle("loading","error"),n.removeAttribute("style"),(s=apijs.html(".tracks.video select"))&&t&&t.target&&0<(i=s.querySelectorAll("option")).length&&0<s.value.length&&(i[s.value].setAttribute("disabled","disabled"),s.selectedIndex+=1,"VIDEO"===t.target.nodeName&&""!==s.value&&n.videoPlayer.actionVideo(s)))},this.actionConfirm=function(){return this.has("options")&&!0!==this.callback(!1,this.args)||(this.add("lock","loading"),this.htmlSvgLoader(!1),apijs.html("div.btns").style.visibility="hidden",apijs.html("div.bbcode").style.visibility="hidden",self.setTimeout(function(){this.t2&&"FORM"===this.t2.nodeName?this.callback(this.t2.getAttribute("action"),this.args):this.t2&&this.callback(this.args)}.bind(this),12)),!1},this.init=function(t,e,i){return i=!0===i,"string"==typeof e?e=0<(e=e.replace(this.ft,"").trim()).length?i?e+" lock":e:i?"lock":null:i&&(e="lock"),this.t0&&this.clear(!1),this.klass.push("start"),this.klass.push(t),self.matchMedia("prefers-reduced-motion:reduce").matches&&this.klass.push("reduce"),"string"==typeof e&&(this.klass=this.klass.concat(e.split(" "))),this.t0=document.createDocumentFragment(),document.addEventListener("keydown",this.onKey),self.addEventListener("beforeunload",this.onCloseBrowser),self.addEventListener("DOMMouseScroll",this.onScrollBrowser,{passive:!1}),self.addEventListener("mousewheel",this.onScrollBrowser,{passive:!1}),self.addEventListener("touchmove",this.onScrollBrowser,{passive:!1}),self.addEventListener("resize",this.onResizeBrowser),apijs.config.dialog.restrictNavigation&&document.querySelectorAll(this.ti).forEach(function(t){t.setAttribute("tabindex","-1")}),this},this.show=function(t){this.onResizeBrowser(),this.onFullscreen(),0<this.height&&!this.has("photo","video")&&(this.t2.style.minHeight=this.height+"px");var e=apijs.html("#Dialog");return e?(this.toggle("start","ready"),this.t1=e,this.t1.appendChild(this.t0.firstChild.firstChild),this.t1.setAttribute("class",this.t2.getAttribute("class"))):this.has("notransition")?(this.toggle("start","ready"),document.querySelector("body").appendChild(this.t0)):(document.querySelector("body").appendChild(this.t0),self.setTimeout(function(){apijs.dialog.toggle("start","ready")},12)),apijs.config.dialog.closeOnClick&&!this.has("progress","waiting","lock")&&document.addEventListener("click",this.actionClose),this.has("photo","video")&&(document.webkitFullscreenEnabled?document.addEventListener("webkitfullscreenchange",this.onFullscreen):document.fullscreenEnabled?document.addEventListener("fullscreenchange",this.onFullscreen):document.mozFullScreenEnabled&&document.addEventListener("mozfullscreenchange",this.onFullscreen)),!0===t?self.setTimeout(function(){apijs.html("input:not([readonly]),textarea:not([readonly]),select:not([disabled])").focus()},12):"string"==typeof t&&apijs.html(t).focus(),!0},this.clear=function(t){return t&&this.xhr&&(this.callback=null,this.xhr.abort()),document.removeEventListener("keydown",this.onKey),self.removeEventListener("beforeunload",this.onCloseBrowser),self.removeEventListener("DOMMouseScroll",this.onScrollBrowser,{passive:!1}),self.removeEventListener("mousewheel",this.onScrollBrowser,{passive:!1}),self.removeEventListener("touchmove",this.onScrollBrowser,{passive:!1}),self.removeEventListener("resize",this.onResizeBrowser),apijs.config.dialog.restrictNavigation&&document.querySelectorAll(this.ti).forEach(function(t){t.removeAttribute("tabindex")}),apijs.config.dialog.closeOnClick&&document.removeEventListener("click",this.actionClose),this.has("photo","video")?(this.has("video")&&!this.has("videoiframe")&&this.t2.querySelectorAll("video, source, track").forEach(function(t){for(var e in t)0===e.indexOf("on")&&(t[e]=null);t.removeAttribute("src")}),this.media.videoPlayer=null,this.media.imageLoader=null,document.webkitFullscreenEnabled?document.removeEventListener("webkitfullscreenchange",this.onFullscreen):document.fullscreenEnabled?document.removeEventListener("fullscreenchange",this.onFullscreen):document.mozFullScreenEnabled&&document.removeEventListener("mozfullscreenchange",this.onFullscreen)):this.height=parseFloat(self.getComputedStyle(this.t2).height),t?(this.toggle("ready","end"),document.querySelector("body").removeChild(this.t1)):this.t1.removeChild(this.t2),this.klass=[],t&&(this.height=0,this.scroll=0,this.callback=null,this.args=null,this.xhr=null),this.media=null,this.t0=null,this.t1=null,this.t2=null,this.a=null,this.b=null,this.c=null,!(this.d=null)},this.htmlParent=function(t,e){return this.t1=document.createElement("div"),this.t1.setAttribute("id","apijsDialog"),"string"==typeof t?(this.t2=document.createElement("form"),this.t2.setAttribute("action",t),this.t2.setAttribute("method","post"),this.t2.setAttribute("enctype","multipart/form-data"),this.t2.setAttribute("onsubmit","return "+e)):this.t2=document.createElement("div"),this.t2.setAttribute("id","apijsBox"),this.t1.appendChild(this.t2),this.t0.appendChild(this.t1),this},this.htmlContent=function(t,e){return 0<t.length&&(this.a=document.createElement("h1"),this.a.innerHTML=t.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\[/g,"<").replace(/]/g,">"),this.t2.appendChild(this.a)),0<e.length&&(this.a=document.createElement("div"),this.a.setAttribute("class","bbcode"),"["!==e[0]&&(e="[p]"+e+"[/p]"),this.a.innerHTML=e.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\[/g,"<").replace(/]/g,">"),this.a.querySelectorAll("a.popup").forEach(function(t){t.addEventListener("click",apijs.openTab)}),this.t2.appendChild(this.a)),this},this.htmlBtnOk=function(){return this.a=document.createElement("div"),this.a.setAttribute("class","btns"),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","confirm"),this.b.setAttribute("onclick","apijs.dialog.actionClose();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(102)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlBtnConfirm=function(t,e){return this.a=document.createElement("div"),this.a.setAttribute("class","btns"),this.b=document.createElement("button"),this.b.setAttribute("type",t),this.b.setAttribute("class","confirm"),"submit"!==t&&this.b.setAttribute("onclick",e),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(104)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","cancel"),this.b.setAttribute("onclick","apijs.dialog.actionClose();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(103)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlBtnNavigation=function(){return this.a=document.createElement("div"),this.a.setAttribute("class","navigation noplaying"),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("disabled","disabled"),this.b.setAttribute("class","prev"),this.b.setAttribute("id","apijsPrev"),this.b.setAttribute("onclick","apijs.slideshow.actionPrev();"),this.c=document.createElement("span"),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("disabled","disabled"),this.b.setAttribute("class","next"),this.b.setAttribute("id","apijsNext"),this.b.setAttribute("onclick","apijs.slideshow.actionNext();"),this.c=document.createElement("span"),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlBtnClose=function(t){return!1!==t&&(this.a=document.createElement("div"),this.a.setAttribute("class","close noplaying"),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","close"),this.b.setAttribute("onclick","apijs.dialog.actionClose();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(105)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a)),this},this.htmlUpload=function(t,e){return this.a=document.createElement("div"),this.a.setAttribute("class","btns upload"),this.b=document.createElement("input"),this.b.setAttribute("type","file"),this.b.setAttribute("name",t),this.b.setAttribute("id","apijsFile"),e&&this.b.setAttribute("multiple","multiple"),this.b.setAttribute("onchange","apijs.upload.actionChoose(this);"),this.a.appendChild(this.b),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","browse"),this.b.setAttribute("onclick","this.previousSibling.click();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(e?109:108)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("div"),this.b.setAttribute("class","filenames"),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlSvgProgress=function(){return this.a=document.createElement("span"),this.a.setAttribute("class","info"),this.t2.appendChild(this.a),this.a=document.createElement("svg"),this.a.setAttribute("id","apijsProgress"),this.b=document.createElement("rect"),this.b.setAttribute("class","auto"),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlSvgLoader=function(t){return this.a=document.createElementNS(this.ns,"svg"),this.a.setAttribute("class","loader"),this.b=document.createElementNS(this.ns,"path"),!1!==t&&this.b.setAttribute("style","opacity:0;"),this.b.setAttribute("d","M75.4 126.63a11.43 11.43 0 0 1-2.1-22.65 40.9 40.9 0 0 0 30.5-30.6 11.4 11.4 0 1 1 22.27 4.87h.02a63.77 63.77 0 0 1-47.8 48.05v-.02a11.38 11.38 0 0 1-2.93.37z"),this.c=document.createElementNS(this.ns,"animateTransform"),this.c.setAttribute("attributeName","transform"),this.c.setAttribute("type","rotate"),this.c.setAttribute("from","0 64 64"),this.c.setAttribute("to","360 64 64"),this.c.setAttribute("dur","5s"),this.c.setAttribute("repeatCount","indefinite"),this.b.appendChild(this.c),this.c=document.createElementNS(this.ns,"animate"),this.c.setAttribute("attributeName","opacity"),this.c.setAttribute("to","1"),this.c.setAttribute("dur","0.01s"),this.c.setAttribute("begin","1s"),this.c.setAttribute("fill","freeze"),!1!==t&&this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlMedia=function(t,e,i,s){var n;return this.a=document.createElement("dl"),this.a.setAttribute("class","media"),this.b=document.createElement("dt"),this.has("photo")?(this.media=document.createElement("img"),this.media.setAttribute("alt",s.replace('"',""))):0<t.indexOf("iframe")?(this.media=document.createElement("iframe"),this.media.setAttribute("type","text/html"),this.media.setAttribute("scrolling","no"),this.media.setAttribute("src",t)):(this.media=document.createElement("video"),this.media.setAttribute("controls","controls"),this.media.setAttribute("preload","metadata")),this.media.setAttribute("id","apijsMedia"),this.b.appendChild(this.media),this.a.appendChild(this.b),this.b=document.createElement("dd"),this.b.setAttribute("class","nomobile noplaying"),"false"===e&&"false"===i||(n=t.slice(t.lastIndexOf("/")+1),this.c=document.createElement("span"),"false"!==e&&"auto"!==e&&"false"!==i?this.c.appendChild(document.createTextNode(e+" ("+i+") ")):"false"!==e&&"auto"!==e?this.c.appendChild(document.createTextNode(e+" ")):"auto"===e&&"false"!==i?this.c.appendChild(document.createTextNode(n+" ("+i+") ")):"auto"===e?this.c.appendChild(document.createTextNode(n+" ")):"false"!==i&&this.c.appendChild(document.createTextNode("("+i+") ")),this.b.appendChild(this.c)),this.b.appendChild(document.createTextNode(s)),this.a.appendChild(this.b),this.t2.appendChild(this.a),this.has("photo")?(this.media.imageLoader=new Image,this.media.imageLoader.src=t,this.media.imageLoader.onload=this.onMediaLoad,this.media.imageLoader.onerror=this.onMediaLoad):0<t.indexOf("iframe")?(this.media.onload=function(t){this.onIframeLoad(this.media),this.onMediaLoad(t)}.bind(this),this.add("videoiframe")):apijs.startPlayer(this.media,t)?this.add("videoplayer"):(this.c=document.createElement("source"),this.c.setAttribute("src",t),this.c.onerror=this.onMediaLoad,this.media.appendChild(this.c),this.media.ondurationchange=this.onMediaLoad,this.media.onerror=this.onMediaLoad,this.add("videosource")),this},this.htmlHelp=function(t,e){var i,s,n=[t?["start",149,141]:[],t?["left","right",142]:[],e?["bottom","topk",144]:[],e?["minus","plus",145]:[],e?["M",146]:[],e?["P",143]:[],["F11",147],[150,148]];for(this.a=document.createElement("ul"),this.a.setAttribute("class","kbd nomobile nofullscreen");i=n.shift();)if(0<i.length){for(this.b=document.createElement("li");s=i.shift();)0<i.length?(this.c=document.createElement("kbd"),["M","P","F11"].has(s)?this.c.appendChild(document.createTextNode(s)):"string"==typeof s?this.c.setAttribute("class",s):this.c.appendChild(apijs.i18n.translateNode(s)),this.b.appendChild(this.c)):this.b.appendChild(apijs.i18n.translateNode(s));this.a.appendChild(this.b)}return this.t2.appendChild(this.a),this},this.htmlIframe=function(t){return this.a=document.createElement("iframe"),this.a.setAttribute("src",t),this.a.setAttribute("class","loading"),this.a.setAttribute("onload","apijs.dialog.onIframeLoad(this);"),this.t2.appendChild(this.a),this}},apijs.core.slideshow=function(){"use strict";this.current=null,this.init=function(){for(var t,e,i,s=apijs.config.slideshow.ids,n=0;e=apijs.html(s+"."+n,!0);n++){for(i=e.classList.contains("hoverload"),t=0;e=apijs.html(s+"."+n+"."+t,!0);t++)e.addEventListener("click",this.show),i&&e.addEventListener("mouseover",this.show);(e=apijs.html(s+"."+n+".99999",!0))&&e.addEventListener("click",this.show)}this.onPopState()},this.onPopState=function(){var t;new RegExp("#("+apijs.config.slideshow.ids+"[-\\.]\\d+[-\\.]\\d+)").test(self.location.href)?(t=RegExp.$1.replace(/-/g,"."),apijs.html(t,!0)&&!apijs.dialog.has("slideshow")&&apijs.slideshow.show(t,!1)):apijs.slideshow.current&&apijs.dialog.actionClose()},this.show=function(t,e){var i,s,n,a=!1,o={};if("string"==typeof t)a=!0,i=apijs.html(t,!0),o.id=t;else{for(t.preventDefault(),i=t.target;"A"!==i.nodeName;)i=i.parentNode;if("mouseover"===t.type&&i.classList.contains("current"))return!1;o.id=i.getAttribute("id")}return o.prefix=apijs.config.slideshow.ids+"."+o.id.split(".")[1],o.number=parseInt(o.id.split(".")[2],10),o.gallery=apijs.html(o.prefix+".99999",!0),99999!==o.number&&(t=apijs.html(o.prefix,!0).querySelectorAll("a[id][type]"),n=apijs.html(o.prefix,!0).querySelectorAll("dl"),o.gallery||t.length!==n.length?(t.forEach(function(t){t.classList.remove("current")}),i.setAttribute("class","current")):(n.forEach(function(t){t.classList.remove("current")}),i.parentNode.parentNode.setAttribute("class","current"))),o.gallery?(99999===o.number&&(a=!0,i=o.gallery.hasAttribute("class")?o.gallery.getAttribute("class"):o.prefix+".0",i=apijs.html(i,!0),o.number=parseInt(i.getAttribute("id").split(".")[2],10),o.id=o.id.replace(99999,o.number)),o.config=i.querySelector("input").getAttribute("value").split("|"),0<(n=o.config.shift()).indexOf(";")&&(s=(n=n.split(";"))[1].trim(),n=n[0].trim()),o.gallery.setAttribute("href",i.getAttribute("href")),o.gallery.querySelector("img").setAttribute("src",n),o.gallery.querySelector("img").setAttribute("srcset",s||""),o.gallery.querySelector("img").setAttribute("alt",i.querySelector("img").getAttribute("alt")),o.gallery.setAttribute("class",o.id)):(a=!0,o.config=i.querySelector("input").getAttribute("value").split("|")),o.url=i.getAttribute("href"),o.type=i.getAttribute("type").substr(0,5).replace("image","dialogPhoto").replace("video","dialogVideo"),o.type=0===o.type.indexOf("dialog")?o.type:"dialogPhoto",o.styles=apijs.html(o.prefix,!0).getAttribute("class").replace(/gallery|album/g,"").trim(),a&&(apijs.dialog[o.type](o.url,o.config[0],o.config[1],o.config[2],o.styles),s=apijs.html(o.prefix,!0).querySelectorAll("a[id][type]").length-(o.gallery?2:1),apijs.slideshow.current={number:o.number,first:o.prefix+".0",prev:0<o.number?o.prefix+"."+(o.number-1):null,next:o.number<s?o.prefix+"."+(o.number+1):null,last:o.prefix+"."+s,total:s},apijs.slideshow.current.prev&&apijs.html("#Prev").removeAttribute("disabled"),apijs.slideshow.current.next&&apijs.html("#Next").removeAttribute("disabled"),apijs.config.slideshow.anchor&&"function"==typeof history.pushState&&("boolean"!=typeof e||e)&&(e=0<(e=self.location.href).indexOf("#")?e.slice(0,e.indexOf("#")):e,e+="#"+(o.prefix+"."+(99999===o.number?0:o.number)).replace(/\./g,"-"),history.pushState({},"",e))),a},this.actionFirst=function(){return!!(this.current&&0<this.current.number&&this.current.number<=this.current.total)&&this.show(this.current.first)},this.actionPrev=function(){return!!(this.current&&this.current.prev&&0<this.current.number)&&this.show(this.current.prev)},this.actionNext=function(){return!!(this.current&&this.current.next&&this.current.number<this.current.total)&&this.show(this.current.next)},this.actionLast=function(){return!!(this.current&&0<=this.current.number&&this.current.number<this.current.total)&&this.show(this.current.last)}},apijs.core.upload=function(){"use strict";this.title=null,this.action=null,this.input=null,this.onemax=0,this.allmax=0,this.exts=null,this.callback=null,this.args=null,this.icon=null,this.files=[],this.start=0,this.end=0,this.sendFile=function(t,e,i,s,n,a,o,r){r=this.sendFiles(t,e,i,s,0,n,a,o,r);return r||console.error("apijs.upload.sendFile invalid arguments",arguments),r},this.sendFiles=function(t,e,i,s,n,a,o,r,l){if(this.files=[],!0!==t&&(this.title=t,this.action=e,this.input=i,this.onemax=s,this.allmax=n,this.exts="string"==typeof a?a.split(","):["*"],this.callback=o,this.args=r,this.icon=l),"string"!=typeof this.title||"string"!=typeof this.action||"string"!=typeof this.input||"number"!=typeof this.onemax||"number"!=typeof this.allmax||"function"!=typeof this.callback)return("number"!=typeof this.allmax||0<this.allmax)&&console.error("apijs.upload.sendFiles invalid arguments",arguments),!1;r=0<this.allmax,l="*"===this.exts.join()?apijs.i18n.translate(161):1===this.exts.length?apijs.i18n.translate(162,this.exts.join()):apijs.i18n.translate(163,this.exts.slice(0,-1).join(", "),this.exts.slice(-1));return l+="[br]"+apijs.i18n.translate(r?165:164,apijs.formatNumber(this.onemax),r?apijs.formatNumber(this.allmax):"").replace("|","[br]"),apijs.dialog.dialogFormUpload(this.title,l,this.action,this.input,r,this.icon)},this.actionChoose=function(t){var e,i=[],s=0;this.files=[],this.exts&&(Array.prototype.forEach.call(t.files,function(t){e=t.name+' <span class="sz">'+apijs.i18n.translate(166,apijs.formatNumber(t.size/1048576))+"</span>","*"===this.exts.join()||this.exts.has(t.name.slice(t.name.lastIndexOf(".")+1).toLowerCase())?t.size>1048576*this.onemax?e+=' <span class="ee">'+apijs.i18n.translate(168)+"</span>":t.size<=0?e+=' <span class="ee">'+apijs.i18n.translate(169)+"</span>":this.files.push(t):e+=' <span class="ee">'+apijs.i18n.translate(167)+"</span>",i.push("<div>"+e+"</div>"),s+=t.size/1048576},this),0<this.allmax&&s>=this.allmax&&i.push('<div class="tt"> = <span class="sz">'+apijs.i18n.translate(166,apijs.formatNumber(s))+'</span> <span class="ee">'+apijs.i18n.translate(168)+"</span></div>"),this.files.length===t.files.length?(apijs.html("button.confirm").removeAttribute("disabled"),apijs.html("button.confirm").focus()):apijs.html("button.confirm").setAttribute("disabled","disabled"),apijs.html("div.filenames").innerHTML=i.join(" "))},this.actionConfirm=function(){var s,e,t;return 0<this.files.length?(s=new FormData,(e=new XMLHttpRequest).open("POST",this.action+(0<this.action.indexOf("?")?"&isAjax=true":"?isAjax=true"),!0),"string"==typeof apijs.config.upload.tokenValue&&(e.setRequestHeader(apijs.config.upload.tokenName,apijs.config.upload.tokenValue),s.append(apijs.config.upload.tokenName,apijs.config.upload.tokenValue)),3<(t=apijs.serialize(apijs.dialog.t2)).length&&t.split("&").forEach(function(t){t=t.split("="),s.append(t[0],t[1])}),this.files.forEach(function(t,e,i){s.append(1<i.length&&this.input.indexOf("[")<0?this.input+"_"+e:this.input,t)},this),e.onreadystatechange=function(t){4===e.readyState&&(t=e.responseText.trim(),[0,200].has(e.status)?(self.dispatchEvent(new CustomEvent("apijsajaxresponse",{detail:{from:"apijs.upload.send",xhr:e}})),apijs.log("upload:onreadystatechange status:200 message:"+t),0===t.indexOf("success-")?(this.updateTitle(),this.callback(t.slice(8),this.args)):this.onError(195,t)):(apijs.log("upload:onreadystatechange status:"+e.status+" message: "+t),this.onError(194,e.status)))}.bind(this),e.upload.onloadstart=this.onStart.bind(this),e.upload.onprogress=this.onProgress.bind(this),e.upload.onload=this.onProgress.bind(this),e.upload.onerror=this.onError.bind(this),e.send(s)):apijs.html("button.browse").focus(),!1},this.onStart=function(){this.start=this.end=Math.round((new Date).getTime()/1e3),apijs.dialog.dialogProgress(this.title,apijs.i18n.translate(125),this.icon)},this.onError=function(t,e){this.updateTitle(),"number"==typeof t?e="[p]"+apijs.i18n.translate(t)+"[/p] "+e:"string"!=typeof e&&(e="[p]"+apijs.i18n.translate(193)+"[/p]"),e+="[p]"+apijs.i18n.translate(196,'href="apijs://restart" onclick="apijs.upload.sendFile(true); return false;"')+"[/p]",apijs.dialog.dialogInformation(this.title,e,"string"==typeof this.icon?"upload error "+this.icon:"upload error")},this.onProgress=function(t){var e,i,s,n,a,o,r=Math.round((new Date).getTime()/1e3);t.lengthComputable&&"progress"===t.type&&r>=this.end+2?(this.end=r,0<(e=Math.floor(100*t.loaded/t.total))&&e<100&&(this.updateTitle(e),r=100*(a=r-this.start)/e+10,24<a&&(n=Math.round(r-a),n=10*Math.ceil(n/10),o=Math.ceil(n/60),s=Math.round(t.loaded/a/1024),a<40||r<90?(i=184,n=null):1<o?(i=181,n=o):50<n?(i=182,n=1):i=183),this.updateProgress(e,i,s,n))):"load"===t.type&&(n=Math.round((new Date).getTime()/1e3)-this.start,o=Math.ceil(n/60),0<(s=Math.round(t.loaded/n/1024))&&s!==1/0?1<o?(i=185,n=o):50<n?(i=186,n=1):20<n?i=187:(i=188,n=null):n=s=null,this.updateTitle(100),this.updateProgress(100,i,s,n))},this.updateProgress=function(t,e,i,s){var n,a=apijs.html("rect"),o=apijs.html("span.info");99<t?(n="100%",a.setAttribute("class","end"),a.style.width="",apijs.html("p").textContent=apijs.i18n.translate(126)):(a.style.width=n=t+"%",a.hasAttribute("class")&&a.removeAttribute("class")),"number"==typeof e&&"number"==typeof i&&"number"==typeof s?n=apijs.i18n.translate(e,t,apijs.formatNumber(i,!1),s):"number"==typeof e&&"number"==typeof i&&(n=apijs.i18n.translate(e,t,apijs.formatNumber(i,!1))),o.textContent=n},this.updateTitle=function(t){"number"==typeof t?document.title=/^\d{1,3}% - /.test(document.title)?t+"% - "+document.title.slice(document.title.indexOf(" - ")+3):t+"% - "+document.title:/^\d{1,3}% - /.test(document.title)&&(document.title=document.title.slice(document.title.indexOf(" - ")+3))}};
7
+ Array.prototype.has||(Array.prototype.has=function(t,e){if(t instanceof Array){for(e in t)if(t.hasOwnProperty(e)&&this.has(t[e]))return!0}else for(e in this)if(this.hasOwnProperty(e)&&this[e]===t)return!0;return!1}),window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=function(t,e,i){for(e=e||window,i=0;i<this.length;i++)t.call(e,this[i],i,this)});var apijs=new function(){"use strict";this.core={},this.version=670,this.config={lang:"auto",debug:!1,dialog:{closeOnClick:!1,restrictNavigation:!0,player:!0},slideshow:{ids:"slideshow",anchor:!0},upload:{tokenName:"X-CSRF-Token",tokenValue:null}},this.start=function(){var t;if(console.info("APIJS "+this.version.toString().split("").join(".")+" - hello - 1 MB/Mo = 1024 kB/ko"),document.getElementById("oldBrowser"))throw new Error("APIJS canceled, #oldBrowser detected!");(t=document.querySelector('link[href*="apijs/fontello.woff2"]'))&&t.getAttribute("href").indexOf("?a3ab5acff3")<0&&console.error("APIJS warning invalid cachekey for link:fontello.woff2?x, it must be ?a3ab5acff3"),(t=document.querySelector('script[src*="apijs.min.js?v="]'))&&t.getAttribute("src").indexOf("?v="+this.version)<0&&console.error("APIJS warning invalid cachekey for script:apijs.min.js?x, it must be ?v="+this.version),this.i18n=new this.core.i18n,this.dialog=new this.core.dialog,this.upload=new this.core.upload,this.slideshow=new this.core.slideshow,self.dispatchEvent(new CustomEvent("apijsbeforeload")),this.i18n.init(),this.slideshow.init(),document.querySelectorAll("video.apijsplayer[data-src]").forEach(function(t){apijs.startPlayer(t,t.getAttribute("data-src"))}),self.addEventListener("popstate",this.slideshow.onPopState),self.addEventListener("hashchange",this.slideshow.onPopState),this.config.debug&&(console.info("APIJS available languages: "+Object.keys(this.i18n.data).join(" ")),console.info("APIJS language loaded: "+this.config.lang),console.info("APIJS successfully started")),self.dispatchEvent(new CustomEvent("apijsload"))},this.formatNumber=function(e,t){var i,s="number"==typeof t?t:!1===t?0:2;try{i=new Intl.NumberFormat(this.config.lang,{minimumFractionDigits:s,maximumFractionDigits:s}).format(e)}catch(t){i=e.toFixed(s)}return"number"==typeof t?i:i.replace(/[.,]00$/,"")},this.startPlayer=function(t,e){return!0===this.config.dialog.player?(t.videoPlayer=new this.core.player(t,e),t.parentNode.classList.add("apijsvideoplayer"),!0):"function"==typeof this.config.dialog.player&&(this.config.dialog.player(t,e),!0)},this.toArray=function(t){return Array.prototype.slice.call(t,0)},this.openTab=function(t){t.preventDefault(),0<this.href.length&&self.open(this.href)},this.log=function(t){this.config.debug&&console.info("APIJS "+t)},this.html=function(t,e){return!0===e||0===t.indexOf("#")?document.getElementById(t.replace("#","apijs")):this.dialog.t1?this.dialog.t1.querySelector(t):null},this.requestFullscreen=function(t){document.webkitFullscreenElement?document.webkitCancelFullScreen():document.mozFullScreenElement?document.mozCancelFullScreen():document.fullscreenElement?document.cancelFullScreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.requestFullscreen?t.requestFullscreen():t.mozRequestFullScreen&&t.mozRequestFullScreen()},this.serialize=function(t,i){var s=[];return i="string"==typeof i?i:"",Array.prototype.forEach.call(t.elements,function(t,e){if(t.name&&!t.disabled&&!["file","reset","submit","button"].has(t.type)&&0===t.name.indexOf(i))if("select-multiple"===t.type)for(e=0;e<t.options.length;e++)t.options[e].selected&&s.push(encodeURIComponent(t.name)+"="+encodeURIComponent(t.options[e].value));else["checkbox","radio"].has(t.type)&&!t.checked||s.push(encodeURIComponent(t.name)+"="+encodeURIComponent(t.value))}),s.join("&")}};"function"==typeof self.addEventListener&&self.addEventListener("load",apijs.start.bind(apijs)),apijs.core.i18n=function(){"use strict";this.data={cs:{103:"Zrušit",104:"Potvrzení",105:"Zavřít",106:"Předchozí",107:"Následující",132:"video stopa",133:"zvuková stopa",134:"titulky",142:"předchozí/následující",144:"zpět/vpřed",146:"ztlumit",149:"Konec",150:"Esc"},de:{103:"Abbrechen",104:"Bestätigen",105:"Schließen",106:"Vorheriges",107:"Nächstes",108:"Datei wählen",109:"Dateien wählen",124:"Verarbeitung läuft...",132:"videospur",133:"audiospur",134:"untertitel",142:"vorheriges/nächstes",143:"wiedergabe/pause",144:"rückwärts/vorwärts",145:"leiser/lauter",146:"ton aus",147:"vollbild",148:"beenden",149:"Ende",150:"Esc",161:"Alle Dateien wurden akzeptiert.",162:"Akzeptiertes Dateiformat: §.",163:"Akzeptiertes Dateiformate: § und §.",164:"Maximale Größe: § MB.",167:"Unerlaubtes Format",168:"Format zu gross",169:"Leere Datei",181:"§% - § kB/s - Noch § Minuten",182:"§% - § kB/s - Noch § Minute",183:"§% - § kB/s - Noch § Sekunden",185:"§% - bis § kB/s in § Minuten",186:"§% - bis § kB/s in § Minute",187:"§% - bis § kB/s in § Sekunden",188:"§% - bis § kB/s",191:"Abbrechen",192:"Sind Sie sicher? [span]Ja[/span] - Nein",193:"Es ist ein unerwarteter Fehler aufgetreten... Bitte versuchen Sie es noch einmal.",194:"Es ist ein Fehler beim Senden.",195:"Es ist ein Fehler bei der Verarbeitung.",196:"Wir laden Sie ein es erneut zu [a §]versuchen[/a]."},en:{102:"Ok",103:"Cancel",104:"Confirm",105:"Close",106:"Previous",107:"Next",108:"Choose a file",109:"Choose one or multiple files",124:"Operation in progress...",125:"Upload in progress...",126:"Processing file in progress...",127:"Drag and drop your files here",131:"video",132:"video track",133:"audio track",134:"subtitles",135:"off",141:"first/last",142:"previous/next",143:"play/pause",144:"backward/forward",145:"decrease/increase the volume",146:"mute",147:"full screen",148:"quit",149:"End",150:"Escape",161:"All files are accepted.",162:"Accepted file format: §.",163:"Accepted file formats: § and §.",164:"Maximum size: § MB.",165:"Maximum size by file: § MB.|Total maximum size: § MB.",166:"§ MB",167:"Format not allowed",168:"Size too large",169:"File empty",181:"§% - § kB/s - § minutes left",182:"§% - § kB/s - § minute left",183:"§% - § kB/s - § seconds left",184:"§% - § kB/s",185:"§% - at § kB/s in § minutes",186:"§% - at § kB/s in § minute",187:"§% - at § kB/s in § seconds",188:"§% - at § kB/s",191:"Interrupt",192:"Are you sure? [span]Yes[/span] - No",193:"It seems that an unlikely mistake just happened... Please try again.",194:"An error occurred while sending.",195:"An error occurred while processing.",196:"We invite you to [a §]try again[/a]."},es:{102:"Aceptar",103:"Cancelar",104:"Confirmar",105:"Cerrar",106:"Anterior",107:"Siguiente",108:"Elegir un fichero",109:"Elegir uno o varios ficheros",124:"Operación en curso...",125:"Envío en progreso...",126:"Tratamiento en curso...",131:"vídeo",132:"pista de vídeo",133:"pista de audio",134:"subtítulos",142:"anterior/siguiente",143:"reproducir/pausa",144:"retroceder/avanzar",145:"bajar/subir volumen",146:"silenciar",147:"pantalla completa",148:"salir",149:"Fin",150:"Esc",161:"Se aceptan todos los archivos.",162:"Formato de archivo aceptado: §.",163:"Formatos de archivos aceptados: § y §.",164:"Tamaño máximo: § MB.",165:"Tamaño máximo por fichero: § Mo.|Tamaño máximo total: § Mo.",167:"Formato no autorizado",168:"Tamaño demasiado importante",169:"Fichero vacío",181:"§% - § kB/s - § minutos restantes",182:"§% - § kB/s - § minuto restantes",183:"§% - § kB/s - § segundos restantes",185:"§% - a § kB/s en § minutos",186:"§% - a § kB/s en § minuto",187:"§% - a § kB/s en § segundos",188:"§% - a § kB/s",191:"Interrumpir",192:"¿Está seguro(a)? [span]Sí[/span] - No",193:"Parece que un error improbable acabo de ocurrir... Por favor, inténtelo de nuevo.",194:"Se produjo un error durante el envío.",195:"Se produjo un error durante el procesamiento.",196:"Le invitamos a [a §]intentar de nuevo[/a]."},fr:{103:"Annuler",104:"Valider",105:"Fermer",106:"Précédent",107:"Suivant",108:"Choisir un fichier",109:"Choisir un ou plusieurs fichiers",124:"Opération en cours...",125:"Envoi en cours...",126:"Traitement en cours...",127:"Faites glisser et déposez vos fichiers ici",131:"vidéo",132:"piste vidéo",133:"piste audio",134:"sous-titres",141:"premier/dernier",142:"précédent/suivant",143:"lecture/pause",144:"reculer/avancer",145:"réduire/augmenter le volume",146:"couper le son",147:"plein écran",148:"quitter",149:"Fin",150:"Échap",161:"Tous les fichiers sont acceptés.",162:"Format de fichier accepté : §.",163:"Formats de fichier acceptés : § et §.",164:"Taille maximale : § Mo.",165:"Taille maximale par fichier : § Mo.|Taille maximale total : § Mo.",166:"§ Mo",167:"Format non autorisé",168:"Taille trop importante",169:"Fichier vide",181:"§% - § ko/s - § minutes restantes",182:"§% - § ko/s - § minute restante",183:"§% - § ko/s - § secondes restantes",184:"§% - § ko/s",185:"§% - à § ko/s en § minutes",186:"§% - à § ko/s en § minute",187:"§% - à § ko/s en § secondes",188:"§% - à § ko/s",191:"Interrompre",192:"Êtes-vous sûr(e) ? [span]Oui[/span] - Non",193:"Il semblerait qu'une erreur improbable vient de se produire... Veuillez réessayer.",194:"Une erreur est survenue lors de l'envoi.",195:"Une erreur est survenue lors du traitement.",196:"Nous vous invitons à [a §]réessayer[/a]."},it:{103:"Annulla",104:"Conferma",105:"Chiudi",106:"Precedente",107:"Successivo",108:"Scegli un file",109:"Scegli uno o più file",124:"Operazione in corso...",125:"Invio in corso...",126:"Trattamento in corso...",132:"traccia video",133:"traccia audio",134:"sottotitoli",142:"precedente/successivo",143:"riproduci/pausa",144:"indietro/avanti",145:"riduci/aumenta volume",146:"silenzio",147:"schermo intero",148:"esci",149:"Fine",150:"Esc",161:"Tutti i file sono accettati.",162:"Formato del file accettato: §.",163:"Formati accettati: § et §.",164:"Dimensione massima: § MB.",167:"Formato non autorizzato",168:"Dimensione troppo importante",169:"File vuoto",181:"§% - § kB/s - § minuti rimanenti",182:"§% - § kB/s - § minuto rimanente",183:"§% - § kB/s - § secondi rimanenti",185:"§% - a § kB/s in § minuti",186:"§% - a § kB/s in § minuto",187:"§% - a § kB/s in § secondi",188:"§% - a § kB/s",191:"Interrompere",192:"Sei sicuro? [span]Si[/span] - No",193:"Sembra che un errore inaspettato si sia verificato... Riprova.",194:"Un errore si è verificato durante l'invio.",195:"Un errore si è verificato durante il trattamento.",196:"Vi invitiamo a [a §]riprovare[/a]."},ja:{103:"キャンセル",104:"承認",105:"閉じる",106:"前へ",107:"次へ",131:"ビデオ",132:"ビデオトラック",133:"オーディオトラック",134:"字幕",142:"前へ/次へ",144:"戻る/進む",146:"ミュート",147:"全画面表示",149:"終了",150:"Esc",166:"§ Mo",184:"§% - § Ko/s",192:"よろしいですか?[span]はい[/span] - いいえ"},nl:{103:"Annuleren",104:"Bevestigen",105:"Sluiten",106:"Vorige",107:"Volgende",132:"videospoor",133:"audiospoor",134:"ondertitels",142:"vorige/volgende",144:"achteruit/vooruit",145:"volume omlaag/omhoog",146:"dempen",147:"schermvullend",150:"Esc"},pl:{103:"Anuluj",104:"Potwierdź",105:"Zamknij",106:"Poprzedni",107:"Następny",131:"obraz",132:"ścieżka obrazu",133:"ścieżka dźwiękowa",134:"napisy",142:"poprzedni/następny",144:"wstecz/przodu",145:"ciszej/głośniej",146:"wycisz",147:"pełny ekran",150:"Esc"},pt:{103:"Cancelar",104:"Confirmar",105:"Fechar",106:"Anterior",107:"Seguinte",108:"Escolher um ficheiro",109:"Escolher um ou vários ficheiros",124:"Operação em processo...",125:"Envio em processo...",126:"Tratamento em processo...",131:"vídeo",132:"faixa de vídeo",133:"faixa de áudio",134:"legendas",142:"anterior/seguinte",143:"reprodução/pausa",144:"recuar/avançar",145:"diminuir/aumentar volume",146:"sem som",147:"ecrã completo",148:"sair",149:"Fim",150:"Esc",161:"Todos os ficheiros foram aceites.",162:"Formato do ficheiro aceite: §.",163:"Formatos de ficheiro aceites: § e §.",164:"Tamanho máximo: § MB.",181:"§% - § kB/s - § minutos restantes",182:"§% - § kB/s - § minuto restantes",183:"§% - § kB/s - § segundos restantes",185:"§% - § kB/s em § minutos",186:"§% - § kB/s em § minuto",187:"§% - § kB/s em § segundos",188:"§% - § kB/s",192:"Tem a certeza? [span]Sim[/span] - Não",193:"Parece ter acontecido um erro imprevisto. Por favor, tente novamente.",194:"Ocorreu um erro ao enviar.",195:"Ocorreu um erro ao processar.",196:"Convidamo-lo a [a §]tentar novamente[/a]."},ptbr:{107:"Próximo",124:"Operação em andamento...",125:"Envio em andamento...",126:"Tratamento em andamento...",132:"trilha de vídeo",133:"trilha de áudio",142:"anterior/próximo",144:"retroceder/avançar",146:"sem áudio",147:"tela inteira",149:"Final"},ru:{102:"Ок",103:"Отмена",104:"Подтвердить",105:"Закрыть",106:"Предыдущий",107:"Следующий",108:"Выберите файл",124:"Операция в процессе...",131:"видео",132:"видеодорожка",133:"аудиодорожка",134:"субтитры",142:"предыдущий/следующий",143:"воспроизведение/пауза",144:"назад/вперед",145:"понизить/повысить громкость",146:"выключить звук",147:"полноэкранный режим",148:"выйти",150:"Esc",161:"Все файлы приняты.",162:"Формат файла: §.",163:"Форматы файлов: § и §.",164:"Максимальный размер: § MB.",181:"§% - § kB/s - осталось § минут",182:"§% - § kB/s - осталось § минут",183:"§% - § kB/s - осталось § секунд",185:"§% - § kB/s за § минут",186:"§% - § kB/s за § минут",187:"§% - § kB/s за § секунд",188:"§% - § kB/s",192:"Вы уверены? [span]Да[/span] - нет",193:"Кажется произошла не предусмотренная ошибка... Попробуйте еще раз.",194:"Возникла ошибка при отправке файла.",195:"Возникла ошибка при обработке файла."},sk:{103:"Zrušiť",104:"Potvrdiť",105:"Zavrieť",106:"Dozadu",107:"Ďalej",133:"zvuková stopa",134:"titulky",142:"dozadu/ďalej",144:"dozadu/dopredu",145:"znizit/zvysit hlasitost",146:"stlmiť",150:"Esc"},tr:{103:"İptal",104:"Onayla",105:"Kapat",106:"Önceki",107:"Sonraki",131:"görüntü",132:"görüntü kaydı",133:"ses kaydı",134:"altyazılar",142:"önceki/sonraki",144:"geri/i̇leri",145:"ses kısar/açar",146:"sesi kapatma",147:"tam ekran",149:"Son",150:"Esc",192:"Emin misiniz ? [span]Evet[/span] - Hayır"},uk:{103:"Відмінити",104:"Підтвердити",105:"Закрити",106:"Попередній",107:"Наступний",131:"відео",132:"відеодоріжка",133:"звукова доріжка",134:"субтитри",142:"попередній/наступний",144:"назад/вперед",145:"зменшити/збільшити гучність",146:"вимкнути звук",149:"Кінець",150:"Esc"},zh:{103:"取消",104:"确认",105:"关闭",106:"上一个",107:"下一个",131:"视频",132:"视频轨道",133:"音频轨道",134:"字幕",142:"上一个/下一个",144:"快退/快进",145:"音量减/增",146:"静音",147:"全屏",150:"Esc",192:"您确定吗?[span]是[/span] - 否"}},this.init=function(){var t=apijs.config.lang,e=document.querySelector("html");-1<t.indexOf("auto")&&"string"==typeof(t=e.getAttribute("xml:lang")||e.getAttribute("lang"))&&(t=(t=t.replace(/[-_]/g,"").toLowerCase()).slice(0,4),this.data.hasOwnProperty(t)||(t=t.slice(0,2)),this.data.hasOwnProperty(t)&&(apijs.config.lang=t)),this.data.hasOwnProperty(t)||(apijs.config.lang="en")},this.translate=function(t){var e=apijs.config.lang,i=1,s="";if("string"!=typeof this.data[e][t])if(3<e.length&&"string"==typeof this.data[e.slice(0,2)][t])e=e.slice(0,2);else{if("en"===e||"string"!=typeof this.data.en[t])return t;e="en"}return 1<arguments.length?(this.data[e][t].split("§").forEach(function(t){s+=i<this.length?t+this[i++]:t},arguments),s):this.data[e][t]},this.translateNode=function(){return document.createTextNode(this.translate.apply(this,arguments))},this.changeLang=function(t){if("string"==typeof t){if(-1<t.indexOf("auto"))return apijs.config.lang="auto",this.init(),!0;if(t=t.replace(/[-_]/g,""),this.data.hasOwnProperty(t))return apijs.config.lang=t,!0}return!1}},apijs.core.dialog=function(){"use strict";this.klass=[],this.height=0,this.scroll=0,this.callback=null,this.args=null,this.xhr=null,this.ft=/information|confirmation|options|upload|progress|waiting|photo|video|iframe|ajax|start|ready|end|reduce|mobile|tiny|fullscreen/g,this.ti="a,area,button,input,textarea,select,object,iframe",this.ns="http://www.w3.org/2000/svg",this.media=null,this.t0=null,this.t1=null,this.t2=null,this.a=null,this.b=null,this.c=null,this.d=null,this.dialogInformation=function(t,e,i){return"string"==typeof t&&"string"==typeof e?this.init("information",i).htmlParent().htmlContent(t,e).htmlBtnOk().show("button.confirm"):(console.error("apijs.dialog.dialogInformation invalid arguments",arguments),!1)},this.dialogConfirmation=function(t,e,i,s,a){return"string"==typeof t&&"string"==typeof e&&"function"==typeof i?(this.callback=i,this.args=s,this.init("confirmation",a).htmlParent().htmlContent(t,e).htmlBtnConfirm("button","apijs.dialog.actionConfirm();").show("button.confirm")):(console.error("apijs.dialog.dialogConfirmation invalid arguments",arguments),!1)},this.dialogFormOptions=function(t,e,i,s,a,n){return"string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"function"==typeof s?(this.callback=s,this.args=a,this.init("options",n).htmlParent(i,"apijs.dialog.actionConfirm();").htmlContent(t,e).htmlBtnConfirm("submit").show(!0)):(console.error("apijs.dialog.dialogFormOptions invalid arguments",arguments),!1)},this.dialogFormUpload=function(t,e,i,s,a,n){return"string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"string"==typeof s?this.init("upload",n).htmlParent(i,"apijs.upload.actionConfirm();","apijs.upload.actionDrag(event);").htmlContent(t,e).htmlUpload(s,"boolean"==typeof a&&a).htmlBtnConfirm("submit").show("button.browse"):(console.error("apijs.dialog.dialogFormUpload invalid arguments",arguments),!1)},this.dialogProgress=function(t,e,i){return"string"==typeof t&&"string"==typeof e?this.init("progress",i).htmlParent().htmlContent(t,e).htmlSvgProgress().show():(console.error("apijs.dialog.dialogProgress invalid arguments",arguments),!1)},this.dialogWaiting=function(t,e,i){return"string"==typeof t&&"string"==typeof e?this.init("waiting",i).htmlParent().htmlContent(t,e).htmlSvgLoader(!1).show():(console.error("apijs.dialog.dialogWaiting invalid arguments",arguments),!1)},this.dialogPhoto=function(t,e,i,s,a){var n="string"==typeof a;return a=n?"notransition slideshow loading "+a:"notransition loading","string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"string"==typeof s?this.init("photo",a).htmlParent().htmlMedia(t,e,i,s).htmlHelp(n,!1).htmlBtnClose().htmlBtnNavigation().htmlSvgLoader().show():(console.error("apijs.dialog.dialogPhoto invalid arguments",arguments),!1)},this.dialogVideo=function(t,e,i,s,a){var n="string"==typeof a;return a=n?"notransition slideshow loading "+a:"notransition loading","string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"string"==typeof s?this.init("video",a).htmlParent().htmlMedia(t,e,i,s).htmlHelp(n,t.indexOf("iframe")<0).htmlBtnClose().htmlBtnNavigation().htmlSvgLoader().show():(console.error("apijs.dialog.dialogVideo invalid arguments",arguments),!1)},this.dialogIframe=function(t,e,i){return"string"==typeof t&&"boolean"==typeof e?this.init("iframe","string"==typeof i?i+" loading":"loading",!e).htmlParent().htmlIframe(t).htmlBtnClose(e).htmlSvgLoader(!1).show():(console.error("apijs.dialog.dialogIframe invalid arguments",arguments),!1)},this.dialogAjax=function(t,e,i,s,a){return"string"==typeof t&&"boolean"==typeof e&&"function"==typeof i?(this.callback=i,this.args=s,this.init("ajax","string"==typeof a?a+" loading":"loading",!e).htmlParent().htmlBtnClose(e).htmlSvgLoader(!1).show(),this.xhr=new XMLHttpRequest,this.xhr.open("GET",t,!0),this.xhr.onreadystatechange=function(){4===this.xhr.readyState&&"function"==typeof this.callback&&(this.callback(this.xhr,this.args),this.remove("loading"))}.bind(this),this.xhr.send(),this):(console.error("apijs.dialog.dialogAjax invalid arguments",arguments),!1)},this.update=function(){return this.has("start","ready","end")&&(this.t1&&this.t1.setAttribute("class",this.klass.join(" ")),this.t2&&this.t2.setAttribute("class",this.klass.join(" "))),this},this.add=function(){return Array.prototype.forEach.call(arguments,function(t){"string"!=typeof t&&console.error("apijs.dialog.add argument is not a string",t),this.klass.indexOf(t)<0&&this.klass.push(t)},this),this.update()},this.remove=function(){return Array.prototype.forEach.call(arguments,function(t){"string"!=typeof t&&console.error("apijs.dialog.remove argument is not a string",t),-1<this.klass.indexOf(t)&&this.klass.splice(this.klass.indexOf(t),1)},this),this.update()},this.toggle=function(t,e){return"string"==typeof t&&"string"==typeof e||console.error("apijs.dialog.toggle argument is not a string",t,e),this.has(t)&&this.remove(t),this.has(e)||this.add(e),this.update()},this.has=function(){return this.klass.has(apijs.toArray(arguments))},this.actionClose=function(t){apijs.config.slideshow.anchor&&"function"==typeof history.pushState&&new RegExp("#("+apijs.config.slideshow.ids+"[-\\.]\\d+[-\\.]\\d+)").test(self.location.href)&&history.pushState({},"",self.location.href.slice(0,self.location.href.indexOf("#"))),"object"==typeof t?"apijsDialog"!==t.target.getAttribute("id")||apijs.dialog.has("photo","video","progress","waiting","lock")||apijs.dialog.clear(!0):this.t1&&this.clear(!0)},this.onCloseBrowser=function(t){if(apijs.dialog.has("progress","waiting","lock"))return t.preventDefault(),t.stopPropagation(),t.m=apijs.i18n.translate(124),t.returnValue=t.m,t.m},this.onResizeBrowser=function(){var t=document.querySelector("body"),e=t.clientWidth<=(apijs.dialog.has("photo","video")?900:460);apijs.dialog[e?"add":"remove"]("mobile"),e=t.clientWidth<=300,apijs.dialog[e?"add":"remove"]("tiny")},this.onScrollBrowser=function(t){var e=apijs.dialog,i=t.target,s=!1;if(e.has("slideshow")&&!e.has("playing")&&!["OPTION","SELECT"].has(i.nodeName)&&["DOMMouseScroll","mousewheel","panleft","panright"].has(t.type))i=(new Date).getTime()/1e3,(e.scroll<1||i>1+e.scroll)&&(e.scroll=i,s=0<t.detail||t.wheelDelta<0,apijs.slideshow["panleft"===t.type||s?"actionNext":"actionPrev"]());else{if("OPTION"===i.nodeName)i=i.parentNode;else if(!["TEXTAREA","SELECT"].has(i.nodeName))for(;!0!==s&&"HTML"!==i.nodeName;)i.classList.contains("scrollable")?s=!0:i=i.parentNode;if("HTML"!==i.nodeName&&((s=0<t.detail||t.wheelDelta<0)&&i.scrollTop<i.scrollHeight-i.offsetHeight||!s&&0<i.scrollTop))return}t.preventDefault(),t.stopPropagation()},this.onScrollIframe=function(t){for(var e,i=t.target;i.parentNode;)i=i.parentNode;((e=0<t.detail||t.wheelDelta<0)&&i.defaultView.innerHeight+i.defaultView.pageYOffset>=i.body.offsetHeight-1||!e&&i.defaultView.pageYOffset<=0)&&(t.preventDefault(),t.stopPropagation())},this.onKey=function(t){var e=apijs.dialog,i=e.media;e.has("progress","waiting","lock")?(t.ctrlKey&&[81,87,82,115,116].has(t.keyCode)||t.altKey&&115===t.keyCode||[27,116].has(t.keyCode))&&t.preventDefault():e.has("photo","video")&&122===t.keyCode?(t.preventDefault(),apijs.requestFullscreen(e.t1)):e.has("slideshow")?27===t.keyCode?(t.preventDefault(),e.actionClose()):35===t.keyCode?(t.preventDefault(),apijs.slideshow.actionLast()):36===t.keyCode?(t.preventDefault(),apijs.slideshow.actionFirst()):37===t.keyCode?(t.preventDefault(),apijs.slideshow.actionPrev()):39===t.keyCode&&(t.preventDefault(),apijs.slideshow.actionNext()):27===t.keyCode&&(t.preventDefault(),e.actionClose()),e.has("video")&&!e.has("videoiframe")&&(32===t.keyCode||80===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&(i.ended||i.paused?i.play():i.pause())):38===t.keyCode||33===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&i.duration!==1/0&&!isNaN(i.duration)&&i.currentTime<i.duration-10&&(i.currentTime+=10)):40===t.keyCode||34===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&i.duration!==1/0&&!isNaN(i.duration)&&(10<i.currentTime?i.currentTime-=10:i.currentTime=0)):107===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&(i.muted&&(i.muted=!1),i.volume<.8?i.volume+=.2:i.volume=1)):109===t.keyCode?(t.preventDefault(),[1,2].has(i.networkState)&&(i.muted&&(i.muted=!1),.21<i.volume?i.volume-=.2:i.volume=0)):77===t.keyCode&&(t.preventDefault(),[1,2].has(i.networkState)&&(i.muted=!i.muted))),[32,33,34,35,36,38,40].has(t.keyCode)&&(t.target&&(["INPUT","TEXTAREA","OPTION","SELECT"].has(t.target.nodeName)||t.target.classList.contains("scrollable"))||(t.preventDefault(),t.stopPropagation()))},this.onFullscreen=function(t){var e=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement;t&&apijs.log("dialog:onFullscreen:"+(e?"in":"out")),apijs.dialog[e?"add":"remove"]("fullscreen")},this.onIframeLoad=function(t){t.removeAttribute("class"),apijs.dialog.remove("loading"),t.contentWindow.document.addEventListener("keydown",window.parent.apijs.dialog.onKey),t.contentWindow.addEventListener("DOMMouseScroll",window.parent.apijs.dialog.onScrollIframe,{passive:!1}),t.contentWindow.addEventListener("mousewheel",window.parent.apijs.dialog.onScrollIframe,{passive:!1}),t.contentWindow.addEventListener("touchmove",window.parent.apijs.dialog.onScrollIframe,{passive:!1})},this.onMediaLoad=function(t){var e,i,s=apijs.dialog,a=s.media;t&&t.target&&(e=t.target.currentSrc||t.target.src,apijs.log("dialog:onMediaLoad:"+t.type+" "+(e?e.slice(e.lastIndexOf("/")+1):""))),a&&["load","durationchange"].has(t.type)?(s.remove("loading","error"),a.style.visibility="visible",a.hasAttribute("src")||"IMG"!==a.nodeName||a.setAttribute("src",a.imageLoader.src)):a&&"error"===t.type&&(s.toggle("loading","error"),a.removeAttribute("style"),(s=apijs.html(".tracks.video select"))&&t&&t.target&&0<(i=s.querySelectorAll("option")).length&&0<s.value.length&&(i[s.value].setAttribute("disabled","disabled"),s.selectedIndex+=1,"VIDEO"===t.target.nodeName&&""!==s.value&&a.videoPlayer.actionVideo(s)))},this.actionConfirm=function(){return this.has("options")&&!0!==this.callback(!1,this.args)||(this.add("lock","loading"),this.htmlSvgLoader(!1),apijs.html("div.btns").style.visibility="hidden",apijs.html("div.bbcode").style.visibility="hidden",self.setTimeout(function(){this.t2&&"FORM"===this.t2.nodeName?this.callback(this.t2.getAttribute("action"),this.args):this.t2&&this.callback(this.args)}.bind(this),12)),!1},this.init=function(t,e,i){return i=!0===i,"string"==typeof e?e=0<(e=e.replace(this.ft,"").trim()).length?i?e+" lock":e:i?"lock":null:i&&(e="lock"),this.t0&&this.clear(!1),this.klass.push("start"),this.klass.push(t),self.matchMedia("prefers-reduced-motion:reduce").matches&&this.klass.push("reduce"),"string"==typeof e&&(this.klass=this.klass.concat(e.split(" "))),this.t0=document.createDocumentFragment(),document.addEventListener("keydown",this.onKey),self.addEventListener("beforeunload",this.onCloseBrowser),self.addEventListener("DOMMouseScroll",this.onScrollBrowser,{passive:!1}),self.addEventListener("mousewheel",this.onScrollBrowser,{passive:!1}),self.addEventListener("touchmove",this.onScrollBrowser,{passive:!1}),self.addEventListener("resize",this.onResizeBrowser),apijs.config.dialog.restrictNavigation&&document.querySelectorAll(this.ti).forEach(function(t){t.setAttribute("tabindex","-1")}),this},this.show=function(t){this.onResizeBrowser(),this.onFullscreen(),0<this.height&&!this.has("photo","video")&&(this.t2.style.minHeight=this.height+"px");var e=apijs.html("#Dialog");return e?(this.toggle("start","ready"),this.t1=e,this.t1.appendChild(this.t0.firstChild.firstChild),this.t1.setAttribute("class",this.t2.getAttribute("class"))):this.has("notransition")?(this.toggle("start","ready"),document.querySelector("body").appendChild(this.t0)):(document.querySelector("body").appendChild(this.t0),self.setTimeout(function(){apijs.dialog.toggle("start","ready")},12)),apijs.config.dialog.closeOnClick&&!this.has("progress","waiting","lock")&&document.addEventListener("click",this.actionClose),this.has("photo","video")&&(document.webkitFullscreenEnabled?document.addEventListener("webkitfullscreenchange",this.onFullscreen):document.fullscreenEnabled?document.addEventListener("fullscreenchange",this.onFullscreen):document.mozFullScreenEnabled&&document.addEventListener("mozfullscreenchange",this.onFullscreen)),!0===t?self.setTimeout(function(){apijs.html("input:not([readonly]),textarea:not([readonly]),select:not([disabled])").focus()},12):"string"==typeof t&&apijs.html(t).focus(),!0},this.clear=function(t){if(t&&this.xhr&&(this.callback=null,this.xhr.abort()),document.removeEventListener("keydown",this.onKey),self.removeEventListener("beforeunload",this.onCloseBrowser),self.removeEventListener("DOMMouseScroll",this.onScrollBrowser,{passive:!1}),self.removeEventListener("mousewheel",this.onScrollBrowser,{passive:!1}),self.removeEventListener("touchmove",this.onScrollBrowser,{passive:!1}),self.removeEventListener("resize",this.onResizeBrowser),apijs.config.dialog.restrictNavigation&&document.querySelectorAll(this.ti).forEach(function(t){t.removeAttribute("tabindex")}),apijs.config.dialog.closeOnClick&&document.removeEventListener("click",this.actionClose),this.has("photo","video")?(this.has("video")&&!this.has("videoiframe")&&this.t2.querySelectorAll("video, source, track").forEach(function(t){for(var e in t)0===e.indexOf("on")&&(t[e]=null);t.removeAttribute("src")}),this.media.videoPlayer=null,this.media.imageLoader=null,document.webkitFullscreenEnabled?document.removeEventListener("webkitfullscreenchange",this.onFullscreen):document.fullscreenEnabled?document.removeEventListener("fullscreenchange",this.onFullscreen):document.mozFullScreenEnabled&&document.removeEventListener("mozfullscreenchange",this.onFullscreen)):this.height=parseFloat(self.getComputedStyle(this.t2).height),t)this.toggle("ready","end"),this.t1.remove();else for(;this.t1.firstChild;)this.t1.firstChild.remove();return this.klass=[],t&&(this.height=0,this.scroll=0,this.callback=null,this.args=null,this.xhr=null),this.media=null,this.t0=null,this.t1=null,this.t2=null,this.a=null,this.b=null,this.c=null,!(this.d=null)},this.htmlParent=function(t,e,i){return this.t1=document.createElement("div"),this.t1.setAttribute("id","apijsDialog"),"string"==typeof i&&(this.t1.setAttribute("ondragenter",i),this.t1.setAttribute("ondragleave",i),this.t1.setAttribute("ondragover",i),this.t1.setAttribute("ondrop",i),this.a=document.createElement("p"),this.a.setAttribute("class","drag"),this.a.appendChild(apijs.i18n.translateNode(127)),this.t1.appendChild(this.a)),"string"==typeof t?(this.t2=document.createElement("form"),this.t2.setAttribute("action",t),this.t2.setAttribute("method","post"),this.t2.setAttribute("enctype","multipart/form-data"),this.t2.setAttribute("onsubmit","return "+e)):this.t2=document.createElement("div"),this.t2.setAttribute("id","apijsBox"),this.t1.appendChild(this.t2),this.t0.appendChild(this.t1),this},this.htmlContent=function(t,e){return 0<t.length&&(this.a=document.createElement("h1"),this.a.innerHTML=t.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\[/g,"<").replace(/]/g,">"),this.t2.appendChild(this.a)),0<e.length&&(this.a=document.createElement("div"),this.a.setAttribute("class","bbcode"),"["!==e[0]&&(e="[p]"+e+"[/p]"),this.a.innerHTML=e.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\[/g,"<").replace(/]/g,">"),this.a.querySelectorAll("a.popup").forEach(function(t){t.addEventListener("click",apijs.openTab)}),this.t2.appendChild(this.a)),this},this.htmlBtnOk=function(){return this.a=document.createElement("div"),this.a.setAttribute("class","btns"),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","confirm"),this.b.setAttribute("onclick","apijs.dialog.actionClose();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(102)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlBtnConfirm=function(t,e){return this.a=document.createElement("div"),this.a.setAttribute("class","btns"),this.b=document.createElement("button"),this.b.setAttribute("type",t),this.b.setAttribute("class","confirm"),"submit"!==t&&this.b.setAttribute("onclick",e),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(104)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","cancel"),this.b.setAttribute("onclick","apijs.dialog.actionClose();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(103)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlBtnNavigation=function(){return this.a=document.createElement("div"),this.a.setAttribute("class","navigation noplaying"),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("disabled","disabled"),this.b.setAttribute("class","prev"),this.b.setAttribute("id","apijsPrev"),this.b.setAttribute("onclick","apijs.slideshow.actionPrev();"),this.c=document.createElement("span"),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("disabled","disabled"),this.b.setAttribute("class","next"),this.b.setAttribute("id","apijsNext"),this.b.setAttribute("onclick","apijs.slideshow.actionNext();"),this.c=document.createElement("span"),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlBtnClose=function(t){return!1!==t&&(this.a=document.createElement("div"),this.a.setAttribute("class","close noplaying"),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","close"),this.b.setAttribute("onclick","apijs.dialog.actionClose();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(105)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a)),this},this.htmlUpload=function(t,e){return this.a=document.createElement("div"),this.a.setAttribute("class","btns upload"),this.b=document.createElement("input"),this.b.setAttribute("type","file"),this.b.setAttribute("name",t),this.b.setAttribute("id","apijsFile"),e&&this.b.setAttribute("multiple","multiple"),this.b.setAttribute("onchange","apijs.upload.actionChoose(this);"),this.a.appendChild(this.b),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","browse"),this.b.setAttribute("onclick","this.previousSibling.click();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(e?109:108)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("div"),this.b.setAttribute("class","filenames scrollable"),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlSvgProgress=function(){return this.a=document.createElement("span"),this.a.setAttribute("class","info"),this.t2.appendChild(this.a),this.a=document.createElement("svg"),this.a.setAttribute("id","apijsProgress"),this.b=document.createElement("rect"),this.b.setAttribute("class","auto"),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlSvgLoader=function(t){return this.a=document.createElementNS(this.ns,"svg"),this.a.setAttribute("class","loader"),this.b=document.createElementNS(this.ns,"path"),!1!==t&&this.b.setAttribute("style","opacity:0;"),this.b.setAttribute("d","M75.4 126.63a11.43 11.43 0 0 1-2.1-22.65 40.9 40.9 0 0 0 30.5-30.6 11.4 11.4 0 1 1 22.27 4.87h.02a63.77 63.77 0 0 1-47.8 48.05v-.02a11.38 11.38 0 0 1-2.93.37z"),this.c=document.createElementNS(this.ns,"animateTransform"),this.c.setAttribute("attributeName","transform"),this.c.setAttribute("type","rotate"),this.c.setAttribute("from","0 64 64"),this.c.setAttribute("to","360 64 64"),this.c.setAttribute("dur","5s"),this.c.setAttribute("repeatCount","indefinite"),this.b.appendChild(this.c),this.c=document.createElementNS(this.ns,"animate"),this.c.setAttribute("attributeName","opacity"),this.c.setAttribute("to","1"),this.c.setAttribute("dur","0.01s"),this.c.setAttribute("begin","1s"),this.c.setAttribute("fill","freeze"),!1!==t&&this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlMedia=function(t,e,i,s){var a;return this.a=document.createElement("dl"),this.a.setAttribute("class","media"),this.b=document.createElement("dt"),this.has("photo")?(this.media=document.createElement("img"),this.media.setAttribute("alt",s.replace('"',""))):0<t.indexOf("iframe")?(this.media=document.createElement("iframe"),this.media.setAttribute("type","text/html"),this.media.setAttribute("scrolling","no"),this.media.setAttribute("src",t)):(this.media=document.createElement("video"),this.media.setAttribute("controls","controls"),this.media.setAttribute("preload","metadata")),this.media.setAttribute("id","apijsMedia"),this.b.appendChild(this.media),this.a.appendChild(this.b),this.b=document.createElement("dd"),this.b.setAttribute("class","nomobile noplaying"),"false"===e&&"false"===i||(a=t.slice(t.lastIndexOf("/")+1),this.c=document.createElement("span"),"false"!==e&&"auto"!==e&&"false"!==i?this.c.appendChild(document.createTextNode(e+" ("+i+") ")):"false"!==e&&"auto"!==e?this.c.appendChild(document.createTextNode(e+" ")):"auto"===e&&"false"!==i?this.c.appendChild(document.createTextNode(a+" ("+i+") ")):"auto"===e?this.c.appendChild(document.createTextNode(a+" ")):"false"!==i&&this.c.appendChild(document.createTextNode("("+i+") ")),this.b.appendChild(this.c)),this.b.appendChild(document.createTextNode(s)),this.a.appendChild(this.b),this.t2.appendChild(this.a),this.has("photo")?(this.media.imageLoader=new Image,this.media.imageLoader.src=t,this.media.imageLoader.onload=this.onMediaLoad,this.media.imageLoader.onerror=this.onMediaLoad):0<t.indexOf("iframe")?(this.media.onload=function(t){this.onIframeLoad(this.media),this.onMediaLoad(t)}.bind(this),this.add("videoiframe")):apijs.startPlayer(this.media,t)?this.add("apijsvideoplayer"):(this.c=document.createElement("source"),this.c.setAttribute("src",t),this.c.onerror=this.onMediaLoad,this.media.appendChild(this.c),this.media.ondurationchange=this.onMediaLoad,this.media.onerror=this.onMediaLoad,this.add("videosource")),this},this.htmlHelp=function(t,e){var i,s,a=[t?["start",149,141]:[],t?["left","right",142]:[],e?["bottom","topk",144]:[],e?["minus","plus",145]:[],e?["M",146]:[],e?["P",143]:[],["F11",147],[150,148]];for(this.a=document.createElement("ul"),this.a.setAttribute("class","kbd nomobile nofullscreen");i=a.shift();)if(0<i.length){for(this.b=document.createElement("li");s=i.shift();)0<i.length?(this.c=document.createElement("kbd"),["M","P","F11"].has(s)?this.c.appendChild(document.createTextNode(s)):"string"==typeof s?this.c.setAttribute("class",s):this.c.appendChild(apijs.i18n.translateNode(s)),this.b.appendChild(this.c)):this.b.appendChild(apijs.i18n.translateNode(s));this.a.appendChild(this.b)}return this.t2.appendChild(this.a),this},this.htmlIframe=function(t){return this.a=document.createElement("iframe"),this.a.setAttribute("src",t),this.a.setAttribute("class","loading"),this.a.setAttribute("onload","apijs.dialog.onIframeLoad(this);"),this.t2.appendChild(this.a),this}},apijs.core.player=function(a,t){"use strict";this.video=a,this.stalled=!1,this.subload=!1,this.autoRun=function(n,t){if(n.removeAttribute("src"),n.removeAttribute("data-src"),n.removeAttribute("controls"),n.classList.add("apijsplayer"),n.onloadedmetadata=function(t){this.stalled=!1,this.onTimeupdate(t),this.onProgress(t),this.onVideotrack(),this.onAudiotrack()}.bind(this),n.onstalled=function(t){this.stalled=!0,this.onWaiting(t)}.bind(this),n.onplaying=this.onPlay.bind(this),n.onpause=this.onPlay.bind(this),n.onended=this.onPlay.bind(this),n.onprogress=this.onProgress.bind(this),n.ontimeupdate=this.onTimeupdate.bind(this),n.onseeking=this.onTimeupdate.bind(this),n.onseeked=this.onWaiting.bind(this),n.onwaiting=this.onWaiting.bind(this),n.onloadstart=this.onWaiting.bind(this),n.oncanplay=this.onWaiting.bind(this),n.onclick=this.actionPlay.bind(this),n.onvolumechange=this.actionVolume.bind(this),n.ondurationchange=apijs.dialog.onMediaLoad,n.onerror=apijs.dialog.onMediaLoad,n.parentNode.appendChild(this.htmlSvgPlayer()),t.indexOf("m3u")<0)return n.appendChild(this.htmlSource(t)),this;var o=new XMLHttpRequest;return o.open("GET",t,!0),o.onreadystatechange=function(){if(4===o.readyState)if(self.dispatchEvent(new CustomEvent("apijsajaxresponse",{detail:{from:"apijsplayer.init",xhr:o}})),!n||0<n.childNodes.length)o.abort();else if([0,200].has(o.status)){for(var t,e,i=0,s=0,a=o.responseText.trim().split("\n");"string"==typeof(t=a.shift());)0===t.indexOf("#APIJS#attr")?(e=t.split("|"),n.setAttribute(e[1],e[2])):0===t.indexOf("#APIJS#track|subtitles")?(e=t.split("|"),this.html(".tracks.texttrack select").appendChild(this.htmlOption(s++,e[3]+" - "+e[2])),n.appendChild(this.htmlTrack(e))):0===t.indexOf("#EXTINF")?e=t.replace(/#EXTINF:[0-9]+,/,""):5<t.length&&"#"!==t[0]&&(this.html(".tracks.video select").appendChild(this.htmlOption(i++,"string"==typeof e?e:i)),n.appendChild(this.htmlSource(t)));this.updateSelect("video",i),"object"==typeof n.textTracks&&this.updateSelect("texttrack",n.textTracks.length||s)}else apijs.dialog.onMediaLoad({type:"error"})}.bind(this),o.send(),this},this.updateSelect=function(t,e){var i="texttrack"===t?1:0;i<e?(this.html(".tracks."+t).removeAttribute("style"),this.html(".tracks."+t+" em").textContent="("+e+")",this.html(".tracks."+t+" select").setAttribute("size",e<10?e+i:10)):(this.html(".tracks."+t).setAttribute("style","display:none;"),this.html(".tracks."+t+" select").innerHTML="")},this.html=function(t){return this.video.parentNode.querySelector(t)},this.onVideotrack=function(){var t,e=this.video.videoTracks,i=this.html(".tracks.videotrack select"),s=apijs.config.lang,a=-1;if("object"==typeof e){if(1<e.length){for(t=0;t<e.length;t++)e[t].language&&0==e[t].language.toLowerCase().replace(/[-_]/g,"").indexOf(s)&&(a=a<0?t:a),i.appendChild(this.htmlOption(t,e[t]));this.updateSelect("videotrack",e.length)}i.selectedIndex=Math.max(0,a),0<=a&&this.actionVideotrack(a)}},this.onAudiotrack=function(){var t,e=this.video.audioTracks,i=this.html(".tracks.audiotrack select"),s=apijs.config.lang,a=-1;if("object"==typeof e){if(1<e.length){for(t=0;t<e.length;t++)e[t].language&&0==e[t].language.toLowerCase().replace(/[-_]/g,"").indexOf(s)&&(a=a<0?t:a),i.appendChild(this.htmlOption(t,e[t]));this.updateSelect("audiotrack",e.length)}i.selectedIndex=Math.max(0,a),0<=a&&this.actionAudiotrack(a)}},this.onTimeupdate=function(t){var e,i,s,a=this.video.currentTime,n=this.video.duration,o="--:--";isNaN(a)||n===1/0||isNaN(n)||(o=(e=0<(e=Math.floor(a/3600))?e+":":"")+(i=(i=Math.floor(a%3600/60))<10?"0"+i:i)+":"+(s=(s=Math.floor(a%60))<10?"0"+s:s),o+=" / "+(e=0<(e=Math.floor(n/3600))?e+":":"")+(i=(i=Math.floor(n%3600/60))<10?"0"+i:i)+":"+(s=(s=Math.floor(n%60))<10?"0"+s:s),this.html("svg.bar rect").style.width=a/n*100+"%"),this.html("span.time").textContent=o,this.stalled&&!this.subload&&(this.stalled=!1,this.onWaiting(t))},this.onProgress=function(){var t,e,i=this.video,s=this.html("svg.bar"),a=i.buffered.length;if(0<a&&i.duration!==1/0&&!isNaN(i.duration))for(s.querySelectorAll(".buffer").forEach(function(t){t.remove()});0<a--;)(e=document.createElement("rect")).setAttribute("class","buffer"),99.8<(t=(i.buffered.end(a)-i.buffered.start(a))/i.duration*100)?e.setAttribute("style","left:0%; width:100%;"):e.setAttribute("style","left:"+i.buffered.start(a)/i.duration*100+"%; width:"+t+"%;"),s.appendChild(e)},this.onPlay=function(){[1,2].has(this.video.networkState)&&(this.video.paused?(this.html("span.play").textContent="",(apijs.dialog.t1?apijs.dialog:this.video.parentNode.classList).remove("playing")):(this.html("span.play").textContent="",(apijs.dialog.t1?apijs.dialog:this.video.parentNode.classList).add("playing")))},this.onWaiting=function(t){apijs.log("player:video:onWaiting:"+t.type+" stalled:"+this.stalled+"/subload:"+this.subload),apijs.dialog[["loadstart","waiting","seeking","stalled"].has(t.type)?"add":"remove"]("loading")},this.actionPlay=function(){var t=this.video;[1,2].has(t.networkState)&&(t.ended||t.paused?t.play():t.pause())},this.actionVolume=function(t){var e=this.video,i=this.html("svg.vol"),s=i.offsetWidth,a=0;if([1,2].has(e.networkState)){if("object"==typeof t&&!isNaN(t.clientX)){for(;a+=i.offsetLeft,i=i.offsetParent;);a=100*(t.clientX-a)/s/100,e.volume=a=a<=.1?0:.92<a?1:a,e.muted=!1}this.html("svg.vol rect").style.width=e.muted?0:100*e.volume+"%"}},this.actionPosition=function(t){var e=this.video,i=this.html("svg.bar"),s=i.offsetWidth,a=0;if([1,2].has(e.networkState)&&e.duration!==1/0&&!isNaN(e.duration)&&"object"==typeof t){for(;a+=i.offsetLeft,i=i.offsetParent;);a=e.duration*(t.clientX-a)*100/s/100,e.currentTime=a=a<=1?0:a}},this.actionVideotrack=function(t){var e,i=this.video.videoTracks,s="object"==typeof t?t.target.value:t;if([1,2].has(this.video.networkState)){for(e=0;e<i.length;e++)i[e].enabled=e==s;--a.currentTime}"object"==typeof t&&t.target.blur()},this.actionAudiotrack=function(t){var e,i=this.video.audioTracks,s="object"==typeof t?t.target.value:t;if([1,2].has(this.video.networkState)){for(e=0;e<i.length;e++)i[e].enabled=e==s;--a.currentTime}"object"==typeof t&&t.target.blur()},this.actionTexttrack=function(t){var e,i=this.video.textTracks,s="object"==typeof t?t.target.value:t;if([1,2].has(this.video.networkState)){for(e=0;e<i.length;e++)i[e].mode=e==s?"showing":"hidden";this.subload=!0}"object"==typeof t&&t.target.blur()},this.actionVideo=function(t){this.html("svg.bar rect").style.width="0",this.html("svg.bar").querySelectorAll(".buffer").forEach(function(t){t.remove()}),this.html("span.play").textContent="",this.updateSelect("videotrack",0),this.updateSelect("audiotrack",0),this.video.src=this.video.querySelectorAll("source")["object"==typeof t?t.target.value:t].src,"object"==typeof t&&t.target.blur()},this.actionFullscreen=function(){var t=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement;this.video.parentNode.classList[t?"add":"remove"]("fullscreen")},this.htmlSvgPlayer=function(){var t,e,i,s=document.createElement("div");return s.setAttribute("class","apijsplayer noplaying"),(i=document.createElement("span")).setAttribute("class","btn play fnt"),i.appendChild(document.createTextNode("")),i.onclick=this.actionPlay.bind(this),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","svg bar"),(e=document.createElement("svg")).setAttribute("class","bar"),e.onclick=this.actionPosition.bind(this),t=document.createElement("rect"),e.appendChild(t),i.appendChild(e),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","time"),i.appendChild(document.createTextNode("--:--")),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","svg vol nomobile"),(e=document.createElement("svg")).setAttribute("class","vol"),e.onclick=this.actionVolume.bind(this),t=document.createElement("rect"),e.appendChild(t),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks audiotrack"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(133)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionAudiotrack.bind(this),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks videotrack"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(132)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionVideotrack.bind(this),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks video"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(131)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionVideo.bind(this),i.appendChild(e),s.appendChild(i),(i=document.createElement("label")).setAttribute("class","tracks texttrack"),i.setAttribute("style","display:none;"),i.appendChild(apijs.i18n.translateNode(134)),(e=document.createElement("em")).setAttribute("class","nomobile"),i.appendChild(e),(e=document.createElement("select")).setAttribute("lang","mul"),e.onchange=this.actionTexttrack.bind(this),(t=document.createElement("option")).appendChild(apijs.i18n.translateNode(135)),e.appendChild(t),i.appendChild(e),s.appendChild(i),(i=document.createElement("span")).setAttribute("class","btn full fnt nomobile"),i.appendChild(document.createTextNode("")),i.onclick=function(){apijs.dialog.t1?apijs.requestFullscreen(apijs.dialog.t1):(document.webkitFullscreenEnabled?document.addEventListener("webkitfullscreenchange",this.actionFullscreen.bind(this)):document.fullscreenEnabled?document.addEventListener("fullscreenchange",this.actionFullscreen.bind(this)):document.mozFullScreenEnabled&&document.addEventListener("mozfullscreenchange",this.actionFullscreen.bind(this)),apijs.requestFullscreen(this.video.parentNode))}.bind(this),s.appendChild(i),s},this.htmlTrack=function(t){var e=document.createElement("track");return e.setAttribute("kind",t[1]),e.setAttribute("label",t[2]),e.setAttribute("srclang",t[3]),e.setAttribute("src",t[4]),e.onload=function(t){apijs.log("player:track:onload "+t.target.src.slice(t.target.src.lastIndexOf("/")+1)),"showing"===t.target.track.mode&&(this.onWaiting(t),this.subload=!1)}.bind(this),e.onerror=function(t){apijs.log("player:track:onerror "+t.target.src.slice(t.target.src.lastIndexOf("/")+1)),"showing"===t.target.track.mode&&(this.onWaiting(t),this.subload=!1)}.bind(this),e},this.htmlSource=function(t){var e=document.createElement("source");return e.setAttribute("src",t),e.onerror=apijs.dialog.onMediaLoad,e},this.htmlOption=function(t,e){"object"==typeof e&&(e=""===e.label?e.language.toLowerCase():e.language.toLowerCase()+" - "+e.label);var i=document.createElement("option");return i.setAttribute("value",t),i.appendChild(document.createTextNode(e)),i},this.autoRun(a,t)},apijs.core.slideshow=function(){"use strict";this.current=null,this.init=function(){for(var t,e,i,s=apijs.config.slideshow.ids,a=0;e=apijs.html(s+"."+a,!0);a++){for(i=e.classList.contains("hoverload"),t=0;e=apijs.html(s+"."+a+"."+t,!0);t++)e.addEventListener("click",this.show),i&&e.addEventListener("mouseover",this.show);(e=apijs.html(s+"."+a+".99999",!0))&&e.addEventListener("click",this.show)}this.onPopState()},this.onPopState=function(){var t;new RegExp("#("+apijs.config.slideshow.ids+"[-\\.]\\d+[-\\.]\\d+)").test(self.location.href)?(t=RegExp.$1.replace(/-/g,"."),apijs.html(t,!0)&&!apijs.dialog.has("slideshow")&&apijs.slideshow.show(t,!1)):apijs.slideshow.current&&apijs.dialog.actionClose()},this.show=function(t,e){var i,s,a,n=!1,o={};if("string"==typeof t)i=apijs.html(t,n=!0),o.id=t;else{for(t.preventDefault(),i=t.target;"A"!==i.nodeName;)i=i.parentNode;if("mouseover"===t.type&&i.classList.contains("current"))return!1;o.id=i.getAttribute("id")}return o.prefix=apijs.config.slideshow.ids+"."+o.id.split(".")[1],o.number=parseInt(o.id.split(".")[2],10),o.gallery=apijs.html(o.prefix+".99999",!0),99999!==o.number&&(t=apijs.html(o.prefix,!0).querySelectorAll("a[id][type]"),a=apijs.html(o.prefix,!0).querySelectorAll("dl"),o.gallery||t.length!==a.length?(t.forEach(function(t){t.classList.remove("current")}),i.setAttribute("class","current")):(a.forEach(function(t){t.classList.remove("current")}),i.parentNode.parentNode.setAttribute("class","current"))),o.gallery?(99999===o.number&&(n=!0,i=o.gallery.hasAttribute("class")?o.gallery.getAttribute("class"):o.prefix+".0",i=apijs.html(i,!0),o.number=parseInt(i.getAttribute("id").split(".")[2],10),o.id=o.id.replace(99999,o.number)),o.config=i.querySelector("input").getAttribute("value").split("|"),0<(a=o.config.shift()).indexOf(";")&&(s=(a=a.split(";"))[1].trim(),a=a[0].trim()),o.gallery.setAttribute("href",i.getAttribute("href")),o.gallery.querySelector("img").setAttribute("src",a),o.gallery.querySelector("img").setAttribute("srcset",s||""),o.gallery.querySelector("img").setAttribute("alt",i.querySelector("img").getAttribute("alt")),o.gallery.setAttribute("class",o.id)):(n=!0,o.config=i.querySelector("input").getAttribute("value").split("|")),o.url=i.getAttribute("href"),o.type=i.getAttribute("type").substr(0,5).replace("image","dialogPhoto").replace("video","dialogVideo"),o.type=0===o.type.indexOf("dialog")?o.type:"dialogPhoto",o.styles=apijs.html(o.prefix,!0).getAttribute("class").replace(/gallery|album/g,"").trim(),n&&(apijs.dialog[o.type](o.url,o.config[0],o.config[1],o.config[2],o.styles),s=apijs.html(o.prefix,!0).querySelectorAll("a[id][type]").length-(o.gallery?2:1),apijs.slideshow.current={number:o.number,first:o.prefix+".0",prev:0<o.number?o.prefix+"."+(o.number-1):null,next:o.number<s?o.prefix+"."+(o.number+1):null,last:o.prefix+"."+s,total:s},apijs.slideshow.current.prev&&apijs.html("#Prev").removeAttribute("disabled"),apijs.slideshow.current.next&&apijs.html("#Next").removeAttribute("disabled"),apijs.config.slideshow.anchor&&"function"==typeof history.pushState&&("boolean"!=typeof e||e)&&(e=0<(e=self.location.href).indexOf("#")?e.slice(0,e.indexOf("#")):e,e+="#"+(o.prefix+"."+(99999===o.number?0:o.number)).replace(/\./g,"-"),history.pushState({},"",e))),n},this.actionFirst=function(){return!!(this.current&&0<this.current.number&&this.current.number<=this.current.total)&&this.show(this.current.first)},this.actionPrev=function(){return!!(this.current&&this.current.prev&&0<this.current.number)&&this.show(this.current.prev)},this.actionNext=function(){return!!(this.current&&this.current.next&&this.current.number<this.current.total)&&this.show(this.current.next)},this.actionLast=function(){return!!(this.current&&0<=this.current.number&&this.current.number<this.current.total)&&this.show(this.current.last)}},apijs.core.upload=function(){"use strict";this.title=null,this.action=null,this.input=null,this.onemax=0,this.allmax=0,this.exts=null,this.callback=null,this.args=null,this.icon=null,this.files=[],this.start=0,this.end=0,this.sendFile=function(t,e,i,s,a,n,o,r){r=this.sendFiles(t,e,i,s,0,a,n,o,r);return r||console.error("apijs.upload.sendFile invalid arguments",arguments),r},this.sendFiles=function(t,e,i,s,a,n,o,r,l){if(this.files=[],!0!==t&&(this.title=t,this.action=e,this.input=i,this.onemax=s,this.allmax=a,this.exts="string"==typeof n?n.split(","):["*"],this.callback=o,this.args=r,this.icon=l),"string"!=typeof this.title||"string"!=typeof this.action||"string"!=typeof this.input||"number"!=typeof this.onemax||"number"!=typeof this.allmax||"function"!=typeof this.callback)return("number"!=typeof this.allmax||0<this.allmax)&&console.error("apijs.upload.sendFiles invalid arguments",arguments),!1;r=0<this.allmax,l="*"===this.exts.join()?apijs.i18n.translate(161):1===this.exts.length?apijs.i18n.translate(162,this.exts.join()):apijs.i18n.translate(163,this.exts.slice(0,-1).join(", "),this.exts.slice(-1));return l+="[br]"+apijs.i18n.translate(r?165:164,apijs.formatNumber(this.onemax),r?apijs.formatNumber(this.allmax):"").replace("|","[br]"),apijs.dialog.dialogFormUpload(this.title,l,this.action,this.input,r,this.icon)},this.actionDrag=function(t){"dragenter"==t.type?apijs.dialog.add("drag"):"dragleave"==t.type?apijs.dialog.remove("drag"):t.dataTransfer&&t.dataTransfer.files&&0<t.dataTransfer.files.length&&(this.actionChoose(t.dataTransfer),apijs.dialog.remove("drag")),t.stopPropagation(),t.preventDefault()},this.actionChoose=function(t){var i,s=[],a=0,n=!1,e=apijs.html("button.confirm");this.files=[],this.exts&&(Array.prototype.forEach.call(0<this.allmax?t.files:Array.prototype.slice.call(t.files,0,1),function(t,e){i=t.size/1048576,i=apijs.formatNumber(i<.01?.01:i),i=(0<this.allmax?'<td class="nb">'+(e+1)+"</td>":"")+'<td class="name">'+t.name+'</td><td class="size">'+apijs.i18n.translate(166,i)+"</td>","*"===this.exts.join()||this.exts.has(t.name.slice(t.name.lastIndexOf(".")+1).toLowerCase())?t.size>1048576*this.onemax?(i+='<td class="err">'+apijs.i18n.translate(168)+"</td>",n=!0):t.size<=0?(i+='<td class="err">'+apijs.i18n.translate(169)+"</td>",n=!0):(i+="<td></td>",this.files.push(t)):(i+='<td class="err">'+apijs.i18n.translate(167)+"</td>",n=!0),s.push("<tr>"+i+"</tr>"),a+=t.size/1048576},this),0<this.allmax&&a>=this.allmax&&(s.push('<tr class="tt"><td></td><td></td><td class="size">'+apijs.i18n.translate(166,apijs.formatNumber(a))+'</td><td class="err">'+apijs.i18n.translate(168)+"</td></tr>"),n=!0),n?e.setAttribute("disabled","disabled"):(e.removeAttribute("disabled"),e.focus()),apijs.html("div.filenames").innerHTML="<table>"+s.join("")+"</table>")},this.actionConfirm=function(){var s,e,t;return 0<this.files.length?(s=new FormData,(e=new XMLHttpRequest).open("POST",this.action+(0<this.action.indexOf("?")?"&isAjax=true":"?isAjax=true"),!0),"string"==typeof apijs.config.upload.tokenValue&&(e.setRequestHeader(apijs.config.upload.tokenName,apijs.config.upload.tokenValue),s.append(apijs.config.upload.tokenName,apijs.config.upload.tokenValue)),3<(t=apijs.serialize(apijs.dialog.t2)).length&&t.split("&").forEach(function(t){t=t.split("="),s.append(t[0],t[1])}),this.files.forEach(function(t,e,i){s.append(1<i.length&&this.input.indexOf("[")<0?this.input+"_"+e:this.input,t)},this),e.onreadystatechange=function(t){4===e.readyState&&(t=e.responseText.trim(),[0,200].has(e.status)?(self.dispatchEvent(new CustomEvent("apijsajaxresponse",{detail:{from:"apijs.upload.send",xhr:e}})),apijs.log("upload:onreadystatechange status:200 message:"+t),0===t.indexOf("success-")?(this.updateTitle(),this.callback(t.slice(8),this.args)):this.onError(195,t)):(apijs.log("upload:onreadystatechange status:"+e.status+" message: "+t),this.onError(194,e.status)))}.bind(this),e.upload.onloadstart=this.onStart.bind(this),e.upload.onprogress=this.onProgress.bind(this),e.upload.onload=this.onProgress.bind(this),e.upload.onerror=this.onError.bind(this),e.send(s)):apijs.html("button.browse").focus(),!1},this.onStart=function(){this.start=this.end=Math.round((new Date).getTime()/1e3),apijs.dialog.dialogProgress(this.title,apijs.i18n.translate(125),this.icon)},this.onError=function(t,e){this.updateTitle(),"number"==typeof t?e="[p]"+apijs.i18n.translate(t)+"[/p] "+e:"string"!=typeof e&&(e="[p]"+apijs.i18n.translate(193)+"[/p]"),e+="[p]"+apijs.i18n.translate(196,'href="apijs://restart" onclick="apijs.upload.sendFile(true); return false;"')+"[/p]",apijs.dialog.dialogInformation(this.title,e,"string"==typeof this.icon?"upload error "+this.icon:"upload error")},this.onProgress=function(t){var e,i,s,a,n,o,r=Math.round((new Date).getTime()/1e3);t.lengthComputable&&"progress"===t.type&&r>=this.end+2?(this.end=r,0<(e=Math.floor(100*t.loaded/t.total))&&e<100&&(this.updateTitle(e),r=100*(n=r-this.start)/e+10,24<n&&(a=Math.round(r-n),a=10*Math.ceil(a/10),o=Math.ceil(a/60),s=Math.round(t.loaded/n/1024),n<40||r<90?(i=184,a=null):1<o?(i=181,a=o):50<a?(i=182,a=1):i=183),this.updateProgress(e,i,s,a))):"load"===t.type&&(a=Math.round((new Date).getTime()/1e3)-this.start,o=Math.ceil(a/60),0<(s=Math.round(t.loaded/a/1024))&&s!==1/0?1<o?(i=185,a=o):50<a?(i=186,a=1):20<a?i=187:(i=188,a=null):a=s=null,this.updateTitle(100),this.updateProgress(100,i,s,a))},this.updateProgress=function(t,e,i,s){var a,n,o=apijs.html("rect"),r=apijs.html("span.info");99<t?(a="100%",o.setAttribute("class","end"),o.style.width="",(n=apijs.html("p")).setAttribute("data-old",n.textContent),n.setAttribute("data-new",apijs.i18n.translate(126)),n.setAttribute("class","anim"),n.textContent=""):(o.style.width=a=t+"%",o.hasAttribute("class")&&o.removeAttribute("class")),"number"==typeof e&&"number"==typeof i&&"number"==typeof s?a=apijs.i18n.translate(e,t,apijs.formatNumber(i,!1),s):"number"==typeof e&&"number"==typeof i&&(a=apijs.i18n.translate(e,t,apijs.formatNumber(i,!1))),r.textContent=a},this.updateTitle=function(t){"number"==typeof t?document.title=/^\d{1,3}% - /.test(document.title)?t+"% - "+document.title.slice(document.title.indexOf(" - ")+3):t+"% - "+document.title:/^\d{1,3}% - /.test(document.title)&&(document.title=document.title.slice(document.title.indexOf(" - ")+3))}};
8
8
  //# sourceMappingURL=apijs.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../code/apijs/src/javascripts/main.js","../code/apijs/src/javascripts/i18n.js","../code/apijs/src/javascripts/select.js","../code/apijs/src/javascripts/player.js","../code/apijs/src/javascripts/dialog.js","../code/apijs/src/javascripts/slideshow.js","../code/apijs/src/javascripts/upload.js"],"sourcesContent":["/**\n * Created J/03/12/2009\n * Updated V/08/01/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\nif (!Array.prototype.has) {\n\tArray.prototype.has = function (needle, key) {\n\t\tif (needle instanceof Array) {\n\t\t\tfor (key in needle) if (needle.hasOwnProperty(key)) {\n\t\t\t\tif (this.has(needle[key]))\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor (key in this) if (this.hasOwnProperty(key)) {\n\t\t\t\tif (this[key] === needle)\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n}\n\nif (window.NodeList && !NodeList.prototype.forEach) {\n\tNodeList.prototype.forEach = function (callback, that, i) {\n\t\tthat = that || window;\n\t\tfor (i = 0; i < this.length; i++)\n\t\t\tcallback.call(that, this[i], i, this);\n\t};\n}\n\nvar apijs = new (function () {\n\n\t\"use strict\";\n\tthis.core = {};\n\tthis.version = 660;\n\n\tthis.config = {\n\t\tlang: 'auto',\n\t\tdebug: false,\n\t\t//select: { },\n\t\tdialog: {\n\t\t\tcloseOnClick: false,\n\t\t\trestrictNavigation: true,\n\t\t\tplayer: true\n\t\t},\n\t\tslideshow: {\n\t\t\tids: 'slideshow',\n\t\t\tanchor: true\n\t\t},\n\t\tupload: {\n\t\t\ttokenName: 'X-CSRF-Token',\n\t\t\ttokenValue: null\n\t\t}\n\t};\n\n\tthis.start = function () {\n\n\t\tvar elem;\n\n\t\t// bonjour\n\t\tconsole.info('APIJS ' + this.version.toString().split('').join('.') + ' - hello - 1 MB/Mo = 1024 kB/ko');\n\t\tif (document.getElementById('oldBrowser'))\n\t\t\tthrow new Error('APIJS canceled, #oldBrowser detected!');\n\n\t\tif (elem = document.querySelector('link[href*=\"apijs/fontello.woff2\"]')) {\n\t\t\tif (elem.getAttribute('href').indexOf('?a3ab5acff3') < 0)\n\t\t\t\tconsole.error('APIJS warning invalid cachekey for link:fontello.woff2?x, it must be ?a3ab5acff3');\n\t\t}\n\t\tif (elem = document.querySelector('script[src*=\"apijs.min.js?v=\"]')) {\n\t\t\tif (elem.getAttribute('src').indexOf('?v=' + this.version) < 0)\n\t\t\t\tconsole.error('APIJS warning invalid cachekey for script:apijs.min.js?x, it must be ?v=' + this.version);\n\t\t}\n\n\t\t// instancie\n\t\tthis.i18n = new this.core.i18n();\n\t\t//this.select = new this.core.select();\n\t\tthis.dialog = new this.core.dialog();\n\t\tthis.upload = new this.core.upload();\n\t\tthis.slideshow = new this.core.slideshow();\n\t\tself.dispatchEvent(new CustomEvent('apijsbeforeload'));\n\n\t\t// démarre\n\t\tthis.i18n.init();\n\t\tthis.slideshow.init();\n\t\t//this.select.init();\n\t\tdocument.querySelectorAll('video.apijsplayer[data-src]').forEach(function (elem) {\n\t\t\tapijs.startPlayer(elem, elem.getAttribute('data-src'));\n\t\t});\n\n\t\tself.addEventListener('popstate', this.slideshow.onPopState);\n\t\tself.addEventListener('hashchange', this.slideshow.onPopState);\n\n\t\tif (this.config.debug) {\n\t\t\tconsole.info('APIJS available languages: ' + Object.keys(this.i18n.data).join(' '));\n\t\t\tconsole.info('APIJS language loaded: ' + this.config.lang);\n\t\t\tconsole.info('APIJS successfully started');\n\t\t}\n\n\t\t// événement\n\t\tself.dispatchEvent(new CustomEvent('apijsload'));\n\t};\n\n\tthis.formatNumber = function (nb, dec) {\n\n\t\t// par défaut 2 chiffres\n\t\tvar dgt = (typeof dec == 'number') ? dec : ((dec === false) ? 0 : 2), str;\n\n\t\t// Firefox 29+ pas 27+, (iOS) Safari 10+ pas 9+\n\t\ttry {\n\t\t\tstr = new Intl.NumberFormat(this.config.lang, { minimumFractionDigits: dgt, maximumFractionDigits: dgt }).format(nb);\n\t\t}\n\t\tcatch (e) {\n\t\t\tstr = nb.toFixed(dgt);\n\t\t}\n\n\t\t// conserve 00 si on veut vraiment 2 chiffres\n\t\treturn (typeof dec == 'number') ? str : str.replace(/[.,]00$/, '');\n\t};\n\n\tthis.startPlayer = function (elem, url) {\n\n\t\tif (this.config.dialog.player === true) {\n\t\t\telem.videoPlayer = new this.core.player(elem, url);\n\t\t\treturn true;\n\t\t}\n\n\t\tif (typeof this.config.dialog.player == 'function') {\n\t\t\tthis.config.dialog.player(elem, url);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tthis.toArray = function (data) {\n\t\treturn Array.prototype.slice.call(data, 0);\n\t};\n\n\tthis.openTab = function (ev) {\n\t\tev.preventDefault();\n\t\tif (this.href.length > 0)\n\t\t\tself.open(this.href);\n\t};\n\n\tthis.log = function (txt) {\n\t\tif (this.config.debug)\n\t\t\tconsole.info('APIJS ' + txt);\n\t};\n\n\tthis.html = function (selector, id) {\n\t\tif ((id === true) || (selector.indexOf('#') === 0))\n\t\t\treturn document.getElementById(selector.replace('#', 'apijs'));\n\t\telse if (this.dialog.t1)\n\t\t\treturn this.dialog.t1.querySelector(selector);\n\t\telse\n\t\t\treturn null;\n\t};\n\n\tthis.requestFullscreen = function (elem) {\n\t\tif (document.webkitFullscreenElement)\n\t\t\tdocument.webkitCancelFullScreen();\n\t\telse if (document.mozFullScreenElement)\n\t\t\tdocument.mozCancelFullScreen();\n\t\telse if (document.fullscreenElement)\n\t\t\tdocument.cancelFullScreen();\n\t\telse if (elem.webkitRequestFullscreen)\n\t\t\telem.webkitRequestFullscreen();\n\t\telse if (elem.requestFullscreen)\n\t\t\telem.requestFullscreen();\n\t\telse if (elem.mozRequestFullScreen)\n\t\t\telem.mozRequestFullScreen();\n\t};\n\n\tthis.serialize = function (form, filter) {\n\n\t\tvar data = [];\n\t\tfilter = (typeof filter == 'string') ? filter : '';\n\n\t\t// https://gomakethings.com/how-to-serialize-form-data-with-vanilla-js/\n\t\tArray.prototype.forEach.call(form.elements, function (elem) {\n\n\t\t\tif (!elem.name || elem.disabled || ['file', 'reset', 'submit', 'button'].has(elem.type) || (elem.name.indexOf(filter) !== 0))\n\t\t\t\treturn;\n\n\t\t\tif (elem.type === 'select-multiple') {\n\t\t\t\tfor (var n = 0; n < elem.options.length; n++) {\n\t\t\t\t\tif (elem.options[n].selected)\n\t\t\t\t\t\tdata.push(encodeURIComponent(elem.name) + '=' + encodeURIComponent(elem.options[n].value));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (!['checkbox', 'radio'].has(elem.type) || elem.checked) {\n\t\t\t\tdata.push(encodeURIComponent(elem.name) + '=' + encodeURIComponent(elem.value));\n\t\t\t}\n\t\t});\n\n\t\treturn data.join('&');\n\t};\n\n})();\n\nif (typeof self.addEventListener == 'function')\n\tself.addEventListener('load', apijs.start.bind(apijs));\n","/**\n * Created S/05/06/2010\n * Updated V/01/01/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.i18n = function () {\n\n\t\"use strict\";\n\tthis.data = {\n\t\t// https://docs.google.com/spreadsheets/d/1UUpKZ-YAAlcfvGHYwt6aUM9io390j0-fIL0vMRh1pW0/edit?usp=sharing\n\t\t// auto start\n\t\tcs: {\n\t\t\t103: \"Zrušit\",\n\t\t\t104: \"Potvrzení\",\n\t\t\t105: \"Zavřít\",\n\t\t\t106: \"Předchozí\",\n\t\t\t107: \"Následující\",\n\t\t\t132: \"video stopa\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t142: \"předchozí/následující\",\n\t\t\t144: \"zpět/vpřed\",\n\t\t\t146: \"ztlumit\",\n\t\t\t149: \"Konec\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tde: {\n\t\t\t103: \"Abbrechen\",\n\t\t\t104: \"Bestätigen\",\n\t\t\t105: \"Schließen\",\n\t\t\t106: \"Vorheriges\",\n\t\t\t107: \"Nächstes\",\n\t\t\t108: \"Datei wählen\",\n\t\t\t109: \"Dateien wählen\",\n\t\t\t124: \"Verarbeitung läuft...\",\n\t\t\t132: \"videospur\",\n\t\t\t133: \"audiospur\",\n\t\t\t134: \"untertitel\",\n\t\t\t142: \"vorheriges/nächstes\",\n\t\t\t143: \"wiedergabe/pause\",\n\t\t\t144: \"rückwärts/vorwärts\",\n\t\t\t145: \"leiser/lauter\",\n\t\t\t146: \"ton aus\",\n\t\t\t147: \"vollbild\",\n\t\t\t148: \"beenden\",\n\t\t\t149: \"Ende\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Alle Dateien wurden akzeptiert.\",\n\t\t\t162: \"Akzeptiertes Dateiformat: §.\",\n\t\t\t163: \"Akzeptiertes Dateiformate: § und §.\",\n\t\t\t164: \"Maximale Größe: § MB.\",\n\t\t\t167: \"Unerlaubtes Format\",\n\t\t\t168: \"Format zu gross\",\n\t\t\t169: \"Leere Datei\",\n\t\t\t181: \"§% - § kB/s - Noch § Minuten\",\n\t\t\t182: \"§% - § kB/s - Noch § Minute\",\n\t\t\t183: \"§% - § kB/s - Noch § Sekunden\",\n\t\t\t185: \"§% - bis § kB/s in § Minuten\",\n\t\t\t186: \"§% - bis § kB/s in § Minute\",\n\t\t\t187: \"§% - bis § kB/s in § Sekunden\",\n\t\t\t188: \"§% - bis § kB/s\",\n\t\t\t191: \"Abbrechen\",\n\t\t\t192: \"Sind Sie sicher? [span]Ja[/span] - Nein\",\n\t\t\t193: \"Es ist ein unerwarteter Fehler aufgetreten... Bitte versuchen Sie es noch einmal.\",\n\t\t\t194: \"Es ist ein Fehler beim Senden.\",\n\t\t\t195: \"Es ist ein Fehler bei der Verarbeitung.\",\n\t\t\t196: \"Wir laden Sie ein es erneut zu [a §]versuchen[/a].\"\n\t\t},\n\t\ten: {\n\t\t\t102: \"Ok\",\n\t\t\t103: \"Cancel\",\n\t\t\t104: \"Confirm\",\n\t\t\t105: \"Close\",\n\t\t\t106: \"Previous\",\n\t\t\t107: \"Next\",\n\t\t\t108: \"Choose a file\",\n\t\t\t109: \"Choose one or multiple files\",\n\t\t\t124: \"Operation in progress...\",\n\t\t\t125: \"Upload in progress...\",\n\t\t\t126: \"Processing file in progress...\",\n\t\t\t131: \"video\",\n\t\t\t132: \"video track\",\n\t\t\t133: \"audio track\",\n\t\t\t134: \"subtitles\",\n\t\t\t135: \"off\",\n\t\t\t141: \"first/last\",\n\t\t\t142: \"previous/next\",\n\t\t\t143: \"play/pause\",\n\t\t\t144: \"backward/forward\",\n\t\t\t145: \"decrease/increase the volume\",\n\t\t\t146: \"mute\",\n\t\t\t147: \"full screen\",\n\t\t\t148: \"quit\",\n\t\t\t149: \"End\",\n\t\t\t150: \"Escape\",\n\t\t\t161: \"All files are accepted.\",\n\t\t\t162: \"Accepted file format: §.\",\n\t\t\t163: \"Accepted file formats: § and §.\",\n\t\t\t164: \"Maximum size: § MB.\",\n\t\t\t165: \"Maximum size by file: § MB.|Total maximum size: § MB.\",\n\t\t\t166: \"§ MB\",\n\t\t\t167: \"Format not allowed\",\n\t\t\t168: \"Size too large\",\n\t\t\t169: \"File empty\",\n\t\t\t181: \"§% - § kB/s - § minutes left\",\n\t\t\t182: \"§% - § kB/s - § minute left\",\n\t\t\t183: \"§% - § kB/s - § seconds left\",\n\t\t\t184: \"§% - § kB/s\",\n\t\t\t185: \"§% - at § kB/s in § minutes\",\n\t\t\t186: \"§% - at § kB/s in § minute\",\n\t\t\t187: \"§% - at § kB/s in § seconds\",\n\t\t\t188: \"§% - at § kB/s\",\n\t\t\t191: \"Interrupt\",\n\t\t\t192: \"Are you sure? [span]Yes[/span] - No\",\n\t\t\t193: \"It seems that an unlikely mistake just happened... Please try again.\",\n\t\t\t194: \"An error occurred while sending.\",\n\t\t\t195: \"An error occurred while processing.\",\n\t\t\t196: \"We invite you to [a §]try again[/a].\"\n\t\t},\n\t\tes: {\n\t\t\t102: \"Aceptar\",\n\t\t\t103: \"Cancelar\",\n\t\t\t104: \"Confirmar\",\n\t\t\t105: \"Cerrar\",\n\t\t\t106: \"Anterior\",\n\t\t\t107: \"Siguiente\",\n\t\t\t108: \"Elegir un fichero\",\n\t\t\t109: \"Elegir uno o varios ficheros\",\n\t\t\t124: \"Operación en curso...\",\n\t\t\t125: \"Envío en progreso...\",\n\t\t\t126: \"Tratamiento en curso...\",\n\t\t\t131: \"vídeo\",\n\t\t\t132: \"pista de vídeo\",\n\t\t\t133: \"pista de audio\",\n\t\t\t134: \"subtítulos\",\n\t\t\t142: \"anterior/siguiente\",\n\t\t\t143: \"reproducir/pausa\",\n\t\t\t144: \"retroceder/avanzar\",\n\t\t\t145: \"bajar/subir volumen\",\n\t\t\t146: \"silenciar\",\n\t\t\t147: \"pantalla completa\",\n\t\t\t148: \"salir\",\n\t\t\t149: \"Fin\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Se aceptan todos los archivos.\",\n\t\t\t162: \"Formato de archivo aceptado: §.\",\n\t\t\t163: \"Formatos de archivos aceptados: § y §.\",\n\t\t\t164: \"Tamaño máximo: § MB.\",\n\t\t\t165: \"Tamaño máximo por fichero: § Mo.|Tamaño máximo total: § Mo.\",\n\t\t\t167: \"Formato no autorizado\",\n\t\t\t168: \"Tamaño demasiado importante\",\n\t\t\t169: \"Fichero vacío\",\n\t\t\t181: \"§% - § kB/s - § minutos restantes\",\n\t\t\t182: \"§% - § kB/s - § minuto restantes\",\n\t\t\t183: \"§% - § kB/s - § segundos restantes\",\n\t\t\t185: \"§% - a § kB/s en § minutos\",\n\t\t\t186: \"§% - a § kB/s en § minuto\",\n\t\t\t187: \"§% - a § kB/s en § segundos\",\n\t\t\t188: \"§% - a § kB/s\",\n\t\t\t191: \"Interrumpir\",\n\t\t\t192: \"¿Está seguro(a)? [span]Sí[/span] - No\",\n\t\t\t193: \"Parece que un error improbable acabo de ocurrir... Por favor, inténtelo de nuevo.\",\n\t\t\t194: \"Se produjo un error durante el envío.\",\n\t\t\t195: \"Se produjo un error durante el procesamiento.\",\n\t\t\t196: \"Le invitamos a [a §]intentar de nuevo[/a].\"\n\t\t},\n\t\tfr: {\n\t\t\t103: \"Annuler\",\n\t\t\t104: \"Valider\",\n\t\t\t105: \"Fermer\",\n\t\t\t106: \"Précédent\",\n\t\t\t107: \"Suivant\",\n\t\t\t108: \"Choisir un fichier\",\n\t\t\t109: \"Choisir un ou plusieurs fichiers\",\n\t\t\t124: \"Opération en cours...\",\n\t\t\t125: \"Envoi en cours...\",\n\t\t\t126: \"Traitement en cours...\",\n\t\t\t131: \"vidéo\",\n\t\t\t132: \"piste vidéo\",\n\t\t\t133: \"piste audio\",\n\t\t\t134: \"sous-titres\",\n\t\t\t141: \"premier/dernier\",\n\t\t\t142: \"précédent/suivant\",\n\t\t\t143: \"lecture/pause\",\n\t\t\t144: \"reculer/avancer\",\n\t\t\t145: \"réduire/augmenter le volume\",\n\t\t\t146: \"couper le son\",\n\t\t\t147: \"plein écran\",\n\t\t\t148: \"quitter\",\n\t\t\t149: \"Fin\",\n\t\t\t150: \"Échap\",\n\t\t\t161: \"Tous les fichiers sont acceptés.\",\n\t\t\t162: \"Format de fichier accepté : §.\",\n\t\t\t163: \"Formats de fichier acceptés : § et §.\",\n\t\t\t164: \"Taille maximale : § Mo.\",\n\t\t\t165: \"Taille maximale par fichier : § Mo.|Taille maximale total : § Mo.\",\n\t\t\t166: \"§ Mo\",\n\t\t\t167: \"Format non autorisé\",\n\t\t\t168: \"Taille trop importante\",\n\t\t\t169: \"Fichier vide\",\n\t\t\t181: \"§% - § ko/s - § minutes restantes\",\n\t\t\t182: \"§% - § ko/s - § minute restante\",\n\t\t\t183: \"§% - § ko/s - § secondes restantes\",\n\t\t\t184: \"§% - § ko/s\",\n\t\t\t185: \"§% - à § ko/s en § minutes\",\n\t\t\t186: \"§% - à § ko/s en § minute\",\n\t\t\t187: \"§% - à § ko/s en § secondes\",\n\t\t\t188: \"§% - à § ko/s\",\n\t\t\t191: \"Interrompre\",\n\t\t\t192: \"Êtes-vous sûr(e) ? [span]Oui[/span] - Non\",\n\t\t\t193: \"Il semblerait qu'une erreur improbable vient de se produire... Veuillez réessayer.\",\n\t\t\t194: \"Une erreur est survenue lors de l'envoi.\",\n\t\t\t195: \"Une erreur est survenue lors du traitement.\",\n\t\t\t196: \"Nous vous invitons à [a §]réessayer[/a].\"\n\t\t},\n\t\tit: {\n\t\t\t103: \"Annulla\",\n\t\t\t104: \"Conferma\",\n\t\t\t105: \"Chiudi\",\n\t\t\t106: \"Precedente\",\n\t\t\t107: \"Successivo\",\n\t\t\t108: \"Scegli un file\",\n\t\t\t109: \"Scegli uno o più file\",\n\t\t\t124: \"Operazione in corso...\",\n\t\t\t125: \"Invio in corso...\",\n\t\t\t126: \"Trattamento in corso...\",\n\t\t\t132: \"traccia video\",\n\t\t\t133: \"traccia audio\",\n\t\t\t134: \"sottotitoli\",\n\t\t\t142: \"precedente/successivo\",\n\t\t\t143: \"riproduci/pausa\",\n\t\t\t144: \"indietro/avanti\",\n\t\t\t145: \"riduci/aumenta volume\",\n\t\t\t146: \"silenzio\",\n\t\t\t147: \"schermo intero\",\n\t\t\t148: \"esci\",\n\t\t\t149: \"Fine\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Tutti i file sono accettati.\",\n\t\t\t162: \"Formato del file accettato: §.\",\n\t\t\t163: \"Formati accettati: § et §.\",\n\t\t\t164: \"Dimensione massima: § MB.\",\n\t\t\t167: \"Formato non autorizzato\",\n\t\t\t168: \"Dimensione troppo importante\",\n\t\t\t169: \"File vuoto\",\n\t\t\t181: \"§% - § kB/s - § minuti rimanenti\",\n\t\t\t182: \"§% - § kB/s - § minuto rimanente\",\n\t\t\t183: \"§% - § kB/s - § secondi rimanenti\",\n\t\t\t185: \"§% - a § kB/s in § minuti\",\n\t\t\t186: \"§% - a § kB/s in § minuto\",\n\t\t\t187: \"§% - a § kB/s in § secondi\",\n\t\t\t188: \"§% - a § kB/s\",\n\t\t\t191: \"Interrompere\",\n\t\t\t192: \"Sei sicuro? [span]Si[/span] - No\",\n\t\t\t193: \"Sembra che un errore inaspettato si sia verificato... Riprova.\",\n\t\t\t194: \"Un errore si è verificato durante l'invio.\",\n\t\t\t195: \"Un errore si è verificato durante il trattamento.\",\n\t\t\t196: \"Vi invitiamo a [a §]riprovare[/a].\"\n\t\t},\n\t\tja: {\n\t\t\t103: \"キャンセル\",\n\t\t\t104: \"承認\",\n\t\t\t105: \"閉じる\",\n\t\t\t106: \"前へ\",\n\t\t\t107: \"次へ\",\n\t\t\t131: \"ビデオ\",\n\t\t\t132: \"ビデオトラック\",\n\t\t\t133: \"オーディオトラック\",\n\t\t\t134: \"字幕\",\n\t\t\t142: \"前へ/次へ\",\n\t\t\t144: \"戻る/進む\",\n\t\t\t146: \"ミュート\",\n\t\t\t147: \"全画面表示\",\n\t\t\t149: \"終了\",\n\t\t\t150: \"Esc\",\n\t\t\t166: \"§ Mo\",\n\t\t\t184: \"§% - § Ko/s\",\n\t\t\t192: \"よろしいですか?[span]はい[/span] - いいえ\"\n\t\t},\n\t\tnl: {\n\t\t\t103: \"Annuleren\",\n\t\t\t104: \"Bevestigen\",\n\t\t\t105: \"Sluiten\",\n\t\t\t106: \"Vorige\",\n\t\t\t107: \"Volgende\",\n\t\t\t132: \"videospoor\",\n\t\t\t133: \"audiospoor\",\n\t\t\t134: \"ondertitels\",\n\t\t\t142: \"vorige/volgende\",\n\t\t\t144: \"achteruit/vooruit\",\n\t\t\t145: \"volume omlaag/omhoog\",\n\t\t\t146: \"dempen\",\n\t\t\t147: \"schermvullend\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tpl: {\n\t\t\t103: \"Anuluj\",\n\t\t\t104: \"Potwierdź\",\n\t\t\t105: \"Zamknij\",\n\t\t\t106: \"Poprzedni\",\n\t\t\t107: \"Następny\",\n\t\t\t131: \"obraz\",\n\t\t\t132: \"ścieżka obrazu\",\n\t\t\t133: \"ścieżka dźwiękowa\",\n\t\t\t134: \"napisy\",\n\t\t\t142: \"poprzedni/następny\",\n\t\t\t144: \"wstecz/przodu\",\n\t\t\t145: \"ciszej/głośniej\",\n\t\t\t146: \"wycisz\",\n\t\t\t147: \"pełny ekran\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tpt: {\n\t\t\t103: \"Cancelar\",\n\t\t\t104: \"Confirmar\",\n\t\t\t105: \"Fechar\",\n\t\t\t106: \"Anterior\",\n\t\t\t107: \"Seguinte\",\n\t\t\t108: \"Escolher um ficheiro\",\n\t\t\t109: \"Escolher um ou vários ficheiros\",\n\t\t\t124: \"Operação em processo...\",\n\t\t\t125: \"Envio em processo...\",\n\t\t\t126: \"Tratamento em processo...\",\n\t\t\t131: \"vídeo\",\n\t\t\t132: \"faixa de vídeo\",\n\t\t\t133: \"faixa de áudio\",\n\t\t\t134: \"legendas\",\n\t\t\t142: \"anterior/seguinte\",\n\t\t\t143: \"reprodução/pausa\",\n\t\t\t144: \"recuar/avançar\",\n\t\t\t145: \"diminuir/aumentar volume\",\n\t\t\t146: \"sem som\",\n\t\t\t147: \"ecrã completo\",\n\t\t\t148: \"sair\",\n\t\t\t149: \"Fim\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Todos os ficheiros foram aceites.\",\n\t\t\t162: \"Formato do ficheiro aceite: §.\",\n\t\t\t163: \"Formatos de ficheiro aceites: § e §.\",\n\t\t\t164: \"Tamanho máximo: § MB.\",\n\t\t\t181: \"§% - § kB/s - § minutos restantes\",\n\t\t\t182: \"§% - § kB/s - § minuto restantes\",\n\t\t\t183: \"§% - § kB/s - § segundos restantes\",\n\t\t\t185: \"§% - § kB/s em § minutos\",\n\t\t\t186: \"§% - § kB/s em § minuto\",\n\t\t\t187: \"§% - § kB/s em § segundos\",\n\t\t\t188: \"§% - § kB/s\",\n\t\t\t192: \"Tem a certeza? [span]Sim[/span] - Não\",\n\t\t\t193: \"Parece ter acontecido um erro imprevisto. Por favor, tente novamente.\",\n\t\t\t194: \"Ocorreu um erro ao enviar.\",\n\t\t\t195: \"Ocorreu um erro ao processar.\",\n\t\t\t196: \"Convidamo-lo a [a §]tentar novamente[/a].\"\n\t\t},\n\t\tptbr: {\n\t\t\t107: \"Próximo\",\n\t\t\t124: \"Operação em andamento...\",\n\t\t\t125: \"Envio em andamento...\",\n\t\t\t126: \"Tratamento em andamento...\",\n\t\t\t132: \"trilha de vídeo\",\n\t\t\t133: \"trilha de áudio\",\n\t\t\t142: \"anterior/próximo\",\n\t\t\t144: \"retroceder/avançar\",\n\t\t\t146: \"sem áudio\",\n\t\t\t147: \"tela inteira\",\n\t\t\t149: \"Final\"\n\t\t},\n\t\tru: {\n\t\t\t102: \"Ок\",\n\t\t\t103: \"Отмена\",\n\t\t\t104: \"Подтвердить\",\n\t\t\t105: \"Закрыть\",\n\t\t\t106: \"Предыдущий\",\n\t\t\t107: \"Следующий\",\n\t\t\t108: \"Выберите файл\",\n\t\t\t124: \"Операция в процессе...\",\n\t\t\t131: \"видео\",\n\t\t\t132: \"видеодорожка\",\n\t\t\t133: \"аудиодорожка\",\n\t\t\t134: \"субтитры\",\n\t\t\t142: \"предыдущий/следующий\",\n\t\t\t143: \"воспроизведение/пауза\",\n\t\t\t144: \"назад/вперед\",\n\t\t\t145: \"понизить/повысить громкость\",\n\t\t\t146: \"выключить звук\",\n\t\t\t147: \"полноэкранный режим\",\n\t\t\t148: \"выйти\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Все файлы приняты.\",\n\t\t\t162: \"Формат файла: §.\",\n\t\t\t163: \"Форматы файлов: § и §.\",\n\t\t\t164: \"Максимальный размер: § MB.\",\n\t\t\t181: \"§% - § kB/s - осталось § минут\",\n\t\t\t182: \"§% - § kB/s - осталось § минут\",\n\t\t\t183: \"§% - § kB/s - осталось § секунд\",\n\t\t\t185: \"§% - § kB/s за § минут\",\n\t\t\t186: \"§% - § kB/s за § минут\",\n\t\t\t187: \"§% - § kB/s за § секунд\",\n\t\t\t188: \"§% - § kB/s\",\n\t\t\t192: \"Вы уверены? [span]Да[/span] - нет\",\n\t\t\t193: \"Кажется произошла не предусмотренная ошибка... Попробуйте еще раз.\",\n\t\t\t194: \"Возникла ошибка при отправке файла.\",\n\t\t\t195: \"Возникла ошибка при обработке файла.\"\n\t\t},\n\t\tsk: {\n\t\t\t103: \"Zrušiť\",\n\t\t\t104: \"Potvrdiť\",\n\t\t\t105: \"Zavrieť\",\n\t\t\t106: \"Dozadu\",\n\t\t\t107: \"Ďalej\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t142: \"dozadu/ďalej\",\n\t\t\t144: \"dozadu/dopredu\",\n\t\t\t145: \"znizit/zvysit hlasitost\",\n\t\t\t146: \"stlmiť\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\ttr: {\n\t\t\t103: \"İptal\",\n\t\t\t104: \"Onayla\",\n\t\t\t105: \"Kapat\",\n\t\t\t106: \"Önceki\",\n\t\t\t107: \"Sonraki\",\n\t\t\t131: \"görüntü\",\n\t\t\t132: \"görüntü kaydı\",\n\t\t\t133: \"ses kaydı\",\n\t\t\t134: \"altyazılar\",\n\t\t\t142: \"önceki/sonraki\",\n\t\t\t144: \"geri/i̇leri\",\n\t\t\t145: \"ses kısar/açar\",\n\t\t\t146: \"sesi kapatma\",\n\t\t\t147: \"tam ekran\",\n\t\t\t149: \"Son\",\n\t\t\t150: \"Esc\",\n\t\t\t192: \"Emin misiniz ? [span]Evet[/span] - Hayır\"\n\t\t},\n\t\tuk: {\n\t\t\t103: \"Відмінити\",\n\t\t\t104: \"Підтвердити\",\n\t\t\t105: \"Закрити\",\n\t\t\t106: \"Попередній\",\n\t\t\t107: \"Наступний\",\n\t\t\t131: \"відео\",\n\t\t\t132: \"відеодоріжка\",\n\t\t\t133: \"звукова доріжка\",\n\t\t\t134: \"субтитри\",\n\t\t\t142: \"попередній/наступний\",\n\t\t\t144: \"назад/вперед\",\n\t\t\t145: \"зменшити/збільшити гучність\",\n\t\t\t146: \"вимкнути звук\",\n\t\t\t149: \"Кінець\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tzh: {\n\t\t\t103: \"取消\",\n\t\t\t104: \"确认\",\n\t\t\t105: \"关闭\",\n\t\t\t106: \"上一个\",\n\t\t\t107: \"下一个\",\n\t\t\t131: \"视频\",\n\t\t\t132: \"视频轨道\",\n\t\t\t133: \"音频轨道\",\n\t\t\t134: \"字幕\",\n\t\t\t142: \"上一个/下一个\",\n\t\t\t144: \"快退/快进\",\n\t\t\t145: \"音量减/增\",\n\t\t\t146: \"静音\",\n\t\t\t147: \"全屏\",\n\t\t\t150: \"Esc\",\n\t\t\t192: \"您确定吗?[span]是[/span] - 否\"\n\t\t}\n\t\t// auto end\n\t};\n\n\tthis.init = function () {\n\n\t\tvar value = apijs.config.lang, html = document.querySelector('html');\n\n\t\tif (value.indexOf('auto') > -1) {\n\t\t\tvalue = html.getAttribute('xml:lang') || html.getAttribute('lang'); // pt-BR fr-FR\n\t\t\tif (typeof value == 'string') {\n\t\t\t\tvalue = value.replace(/[-_]/g, '').toLowerCase();\n\t\t\t\tvalue = value.slice(0, 4); // ptbr frfr\n\t\t\t\tif (!this.data.hasOwnProperty(value))\n\t\t\t\t\tvalue = value.slice(0, 2); // pt fr\n\t\t\t\tif (this.data.hasOwnProperty(value))\n\t\t\t\t\tapijs.config.lang = value;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.data.hasOwnProperty(value))\n\t\t\tapijs.config.lang = 'en';\n\t};\n\n\n\t// TRADUIT (public return string|domelement|boolean)\n\n\tthis.translate = function (word) {\n\n\t\tvar lang = apijs.config.lang, idx = 1, translation = '';\n\n\t\t// mot clef inexistant dans la langue configurée\n\t\t// test avec la langue par défaut pour éventuellement continuer\n\t\tif (typeof this.data[lang][word] != 'string') {\n\t\t\tif ((lang.length > 3) && (typeof this.data[lang.slice(0, 2)][word] == 'string'))\n\t\t\t\tlang = lang.slice(0, 2);\n\t\t\telse if ((lang !== 'en') && (typeof this.data.en[word] == 'string'))\n\t\t\t\tlang = 'en';\n\t\t\telse\n\t\t\t\treturn word;\n\t\t}\n\n\t\t// chaîne de caractères configurable\n\t\tif (arguments.length > 1) {\n\t\t\tthis.data[lang][word].split('§').forEach(function (data) {\n\t\t\t\ttranslation += (idx < this.length) ? data + this[idx++] : data;\n\t\t\t}, arguments); // pour que ci-dessus this = arguments\n\t\t\treturn translation;\n\t\t}\n\n\t\t// chaîne de caractères simple\n\t\treturn this.data[lang][word];\n\t};\n\n\tthis.translateNode = function () {\n\n\t\t// apply fait une copie des arguments\n\t\t// c'est comme si on avait appelé this.translate directement\n\t\treturn document.createTextNode(this.translate.apply(this, arguments));\n\t};\n\n\tthis.changeLang = function (lang) {\n\n\t\tif (typeof lang == 'string') {\n\n\t\t\tif (lang.indexOf('auto') > -1) {\n\t\t\t\tapijs.config.lang = 'auto';\n\t\t\t\tthis.init();\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tlang = lang.replace(/[-_]/g, '');\n\n\t\t\tif (this.data.hasOwnProperty(lang)) {\n\t\t\t\tapijs.config.lang = lang;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n};","/**\n * Created L/02/03/2020\n * Updated J/19/11/2020\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.select = function () {\n\n\t\"use strict\";\n\n\tthis.init = function () {\n\n\t\tdocument.querySelectorAll('select').forEach(function (elem) {\n\t\t\telem.addEventListener('focus', apijs.select.open);\n\t\t});\n\t};\n\n\tthis.open = function (ev) {\n\n\t\tvar root = ev.target, t, a, b, c, d;\n\n\t\tt = document.createDocumentFragment();\n\n\t\t\ta = document.createElement('div');\n\n\t\t\t\tb = document.createElement('ul');\n\t\t\t\troot.querySelectorAll('option').forEach(function (elem) {\n\t\t\t\t\tc = document.createElement('li');\n\t\t\t\t\tc.appendChild(document.createTextNode(elem.textContent));\n\t\t\t\t\tArray.prototype.forEach.call(elem.attributes, function (attribute) {\n\t\t\t\t\t\tc.setAttribute(attribute.name, attribute.value);\n\t\t\t\t\t});\n\t\t\t\t\tthis.appendChild(c);\n\t\t\t\t}, b); // pour que ci-dessus this = b\n\n\t\t\ta.appendChild(b);\n\n\t\tt.appendChild(a);\n\n\t\tconsole.log(t.firstChild.innerHTML);\n\t\troot.parentNode.replaceChild(t.firstChild, root);\n\t};\n};","/**\n * Created D/11/01/2015\n * Updated W/03/03/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.player = function (video, url) {\n\n\t\"use strict\";\n\tthis.video = video;\n\tthis.stalled = false;\n\tthis.subload = false;\n\n\n\t// GÉNÉRATION DES ÉLÉMENTS (private return this|void|domelement)\n\n\tthis.autoRun = function (video, url) { // todo\n\n\t\tvideo.removeAttribute('src');\n\t\tvideo.removeAttribute('data-src');\n\t\tvideo.removeAttribute('controls');\n\t\tvideo.classList.add('apijsplayer');\n\n\t\t// https://developer.mozilla.org/fr/docs/Web/Guide/DOM/Events/evenement_medias\n\t\tvideo.onloadedmetadata = function (ev) {\n\t\t\tthis.stalled = false;\n\t\t\tthis.onTimeupdate(ev);\n\t\t\tthis.onProgress(ev);\n\t\t\tthis.onVideotrack();\n\t\t\tthis.onAudiotrack();\n\t\t}.bind(this);\n\t\tvideo.onstalled = function (ev) {\n\t\t\tthis.stalled = true;\n\t\t\tthis.onWaiting(ev);\n\t\t}.bind(this);\n\t\tvideo.onplaying = this.onPlay.bind(this);\n\t\tvideo.onpause = this.onPlay.bind(this);\n\t\tvideo.onended = this.onPlay.bind(this);\n\t\tvideo.onprogress = this.onProgress.bind(this);\n\t\tvideo.ontimeupdate = this.onTimeupdate.bind(this);\n\t\tvideo.onseeking = this.onTimeupdate.bind(this);\n\t\tvideo.onseeked = this.onWaiting.bind(this);\n\t\tvideo.onwaiting = this.onWaiting.bind(this);\n\t\tvideo.onloadstart = this.onWaiting.bind(this);\n\t\tvideo.oncanplay = this.onWaiting.bind(this);\n\t\tvideo.onclick = this.actionPlay.bind(this);\n\t\tvideo.onvolumechange = this.actionVolume.bind(this);\n\t\tvideo.ondurationchange = apijs.dialog.onMediaLoad;\n\t\tvideo.onerror = apijs.dialog.onMediaLoad;\n\n\t\t// ajoute les contrôles\n\t\tvideo.parentNode.appendChild(this.htmlSvgPlayer());\n\n\t\t// charge les sources\n\t\tif (url.indexOf('m3u') < 0) {\n\t\t\tvideo.appendChild(this.htmlSource(url));\n\t\t\treturn this;\n\t\t}\n\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', url, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tself.dispatchEvent(new CustomEvent('apijsajaxresponse', { detail: { from: 'apijsplayer.init', xhr: xhr } }));\n\t\t\t\tif (!video || (video.childNodes.length > 0)) {\n\t\t\t\t\txhr.abort();\n\t\t\t\t}\n\t\t\t\telse if ([0, 200].has(xhr.status)) {\n\n\t\t\t\t\tvar url, txt, nbv = 0, nbt = 0, data = xhr.responseText.trim().split(\"\\n\");\n\t\t\t\t\twhile (typeof (url = data.shift()) == 'string') {\n\n\t\t\t\t\t\t// #APIJS#attr|name|value\n\t\t\t\t\t\tif (url.indexOf('#APIJS#attr') === 0) {\n\t\t\t\t\t\t\ttxt = url.split('|');\n\t\t\t\t\t\t\tvideo.setAttribute(txt[1], txt[2]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// #APIJS#track|kind|label|srclang|src\n\t\t\t\t\t\telse if (url.indexOf('#APIJS#track|subtitles') === 0) {\n\t\t\t\t\t\t\ttxt = url.split('|');\n\t\t\t\t\t\t\tthis.html('.tracks.texttrack select').appendChild(this.htmlOption(nbt++, txt[3] + ' - ' + txt[2]));\n\t\t\t\t\t\t\tvideo.appendChild(this.htmlTrack(txt));\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// #EXTINF: Text\n\t\t\t\t\t\telse if (url.indexOf('#EXTINF') === 0) {\n\t\t\t\t\t\t\ttxt = url.replace(/#EXTINF:[0-9]+,/, '');\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// http\n\t\t\t\t\t\telse if ((url.length > 5) && (url[0] !== '#')) {\n\t\t\t\t\t\t\tthis.html('.tracks.video select').appendChild(this.htmlOption(nbv++, (typeof txt == 'string') ? txt : nbv));\n\t\t\t\t\t\t\tvideo.appendChild(this.htmlSource(url));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.updateSelect('video', nbv);\n\t\t\t\t\tif (typeof video.textTracks == 'object')\n\t\t\t\t\t\tthis.updateSelect('texttrack', video.textTracks.length || nbt);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tapijs.dialog.onMediaLoad({ type: 'error' });\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(this);\n\t\txhr.send();\n\n\t\treturn this;\n\t};\n\n\tthis.updateSelect = function (css, total) {\n\n\t\t// s'il y une seule option on affiche pas, sauf pour les sous titres\n\t\tvar adjust = (css === 'texttrack') ? 1 : 0;\n\t\tif (total > adjust) {\n\t\t\tthis.html('.tracks.' + css).removeAttribute('style');\n\t\t\tthis.html('.tracks.' + css + ' em').textContent = '(' + total + ')';\n\t\t\tthis.html('.tracks.' + css + ' select').setAttribute('size', (total < 10) ? total + adjust : 10);\n\t\t}\n\t\telse {\n\t\t\tthis.html('.tracks.' + css).setAttribute('style', 'display:none;');\n\t\t\tthis.html('.tracks.' + css + ' select').innerHTML = '';\n\t\t}\n\t};\n\n\tthis.html = function (selector) {\n\t\treturn this.video.parentNode.querySelector(selector);\n\t};\n\n\n\t// GESTION DES ÉVÉNEMENTS (private return void)\n\n\tthis.onVideotrack = function () {\n\n\t\tvar tracks = this.video.videoTracks, select = this.html('.tracks.videotrack select'), lang = apijs.config.lang, auto = -1, idx;\n\n\t\tif (typeof tracks == 'object') {\n\n\t\t\t// si la vidéo contient plusieurs pistes vidéo\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack\n\t\t\tif (tracks.length > 1) {\n\t\t\t\tfor (idx = 0; idx < tracks.length; idx++) {\n\t\t\t\t\tif (tracks[idx].language && (tracks[idx].language.toLowerCase().replace(/[-_]/g, '').indexOf(lang) == 0))\n\t\t\t\t\t\tauto = (auto < 0) ? idx : auto;\n\t\t\t\t\tselect.appendChild(this.htmlOption(idx, tracks[idx]));\n\t\t\t\t}\n\t\t\t\tthis.updateSelect('videotrack', tracks.length);\n\t\t\t}\n\n\t\t\t// sélectionne éventuellement la piste dans la bonne langue\n\t\t\tselect.selectedIndex = Math.max(0, auto);\n\t\t\tif (auto >= 0)\n\t\t\t\tthis.actionVideotrack(auto);\n\t\t}\n\t};\n\n\tthis.onAudiotrack = function () {\n\n\t\tvar tracks = this.video.audioTracks, select = this.html('.tracks.audiotrack select'), lang = apijs.config.lang, auto = -1, idx;\n\n\t\tif (typeof tracks == 'object') {\n\n\t\t\t// si la vidéo contient plusieurs pistes audio\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack\n\t\t\tif (tracks.length > 1) {\n\t\t\t\tfor (idx = 0; idx < tracks.length; idx++) {\n\t\t\t\t\tif (tracks[idx].language && (tracks[idx].language.toLowerCase().replace(/[-_]/g, '').indexOf(lang) == 0))\n\t\t\t\t\t\tauto = (auto < 0) ? idx : auto;\n\t\t\t\t\tselect.appendChild(this.htmlOption(idx, tracks[idx]));\n\t\t\t\t}\n\t\t\t\tthis.updateSelect('audiotrack', tracks.length);\n\t\t\t}\n\n\t\t\t// sélectionne éventuellement la piste dans la bonne langue\n\t\t\tselect.selectedIndex = Math.max(0, auto);\n\t\t\tif (auto >= 0)\n\t\t\t\tthis.actionAudiotrack(auto);\n\t\t}\n\t};\n\n\tthis.onTimeupdate = function (ev) {\n\n\t\tvar time = this.video.currentTime, duration = this.video.duration, text = '--:--', hh, mm, ss;\n\n\t\tif (!isNaN(time) && (duration !== Infinity) && !isNaN(duration)) {\n\n\t\t\thh = Math.floor(time / 3600);\n\t\t\tmm = Math.floor((time % 3600) / 60);\n\t\t\tss = Math.floor(time % 60);\n\t\t\tif (ss < 10) ss = '0' + ss;\n\t\t\tif (mm < 10) mm = '0' + mm;\n\n\t\t\thh = (hh > 0) ? hh + ':' : '';\n\t\t\ttext = hh + mm + ':' + ss;\n\n\t\t\thh = Math.floor(duration / 3600);\n\t\t\tmm = Math.floor((duration % 3600) / 60);\n\t\t\tss = Math.floor(duration % 60);\n\t\t\tif (ss < 10) ss = '0' + ss;\n\t\t\tif (mm < 10) mm = '0' + mm;\n\n\t\t\thh = (hh > 0) ? hh + ':' : '';\n\t\t\ttext += ' / ' + hh + mm + ':' + ss;\n\n\t\t\tthis.html('svg.bar rect').style.width = (time / duration * 100) + '%';\n\t\t}\n\n\t\tthis.html('span.time').textContent = text;\n\n\t\t// loader stalled sauf par les tracks\n\t\tif (this.stalled && !this.subload) {\n\t\t\tthis.stalled = false;\n\t\t\tthis.onWaiting(ev);\n\t\t}\n\t};\n\n\tthis.onProgress = function () {\n\n\t\tvar video = this.video, elem = this.html('svg.bar'), idx = video.buffered.length, width, buffer;\n\n\t\tif ((idx > 0) && (video.duration !== Infinity) && !isNaN(video.duration)) {\n\n\t\t\telem.querySelectorAll('.buffer').forEach(function (node) { node.parentNode.removeChild(node); });\n\t\t\twhile (idx-- > 0) {\n\n\t\t\t\tbuffer = document.createElement('rect');\n\t\t\t\tbuffer.setAttribute('class', 'buffer');\n\n\t\t\t\twidth = (video.buffered.end(idx) - video.buffered.start(idx)) / video.duration * 100;\n\t\t\t\tif (width > 99.8)\n\t\t\t\t\tbuffer.setAttribute('style', 'left:0%; width:100%;');\n\t\t\t\telse\n\t\t\t\t\tbuffer.setAttribute('style', 'left:' + (video.buffered.start(idx) / video.duration * 100) + '%; width:' + width + '%;');\n\n\t\t\t\telem.appendChild(buffer);\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.onPlay = function () { // todo\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tif (this.video.paused) {\n\t\t\t\tthis.html('span.play').textContent = '\\uE810';\n\t\t\t\tapijs.dialog.remove('playing');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.html('span.play').textContent = '\\uE811';\n\t\t\t\tapijs.dialog.add('playing');\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.onWaiting = function (ev) { // todo\n\t\tapijs.log('player:video:onWaiting:' + ev.type + ' stalled:' + this.stalled + '/subload:' + this.subload);\n\t\tapijs.dialog[['loadstart', 'waiting', 'seeking', 'stalled'].has(ev.type) ? 'add' : 'remove']('loading');\n\t};\n\n\n\t// GESTION DES INTERACTIONS (private return void)\n\n\tthis.actionPlay = function () {\n\n\t\tvar video = this.video;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(video.networkState)) {\n\t\t\tif (video.ended || video.paused)\n\t\t\t\tvideo.play();\n\t\t\telse\n\t\t\t\tvideo.pause();\n\t\t}\n\t};\n\n\tthis.actionVolume = function (ev) {\n\n\t\tvar video = this.video, elem = this.html('svg.vol'), width = elem.offsetWidth, value = 0;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(video.networkState)) {\n\n\t\t\tif ((typeof ev == 'object') && !isNaN(ev.clientX)) {\n\n\t\t\t\tdo { value += elem.offsetLeft; }\n\t\t\t\twhile (elem = elem.offsetParent);\n\n\t\t\t\tvalue = ((ev.clientX - value) * 100 / width) / 100;\n\t\t\t\tvalue = (value <= 0.1) ? 0 : ((value > 0.92) ? 1 : value);\n\n\t\t\t\t//if (self.getComputedStyle(this.html('svg.vol')).direction === 'rtl')\n\t\t\t\t//\tvalue = 1 - value;\n\n\t\t\t\tvideo.volume = value;\n\t\t\t\tvideo.muted = false;\n\t\t\t}\n\n\t\t\tthis.html('svg.vol rect').style.width = video.muted ? 0 : (video.volume * 100) + '%';\n\t\t}\n\t};\n\n\tthis.actionPosition = function (ev) {\n\n\t\tvar video = this.video, elem = this.html('svg.bar'), width = elem.offsetWidth, value = 0;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif (([1,2].has(video.networkState)) && (video.duration !== Infinity) && !isNaN(video.duration) && (typeof ev == 'object')) {\n\n\t\t\tdo { value += elem.offsetLeft; }\n\t\t\twhile (elem = elem.offsetParent);\n\n\t\t\tvalue = (video.duration * (ev.clientX - value) * 100 / width) / 100;\n\t\t\tvalue = (value <= 1) ? 0 : value;\n\n\t\t\t//if (self.getComputedStyle(this.html('svg.vol')).direction === 'rtl')\n\t\t\t//\tvalue = video.duration - value;\n\n\t\t\tvideo.currentTime = value;\n\t\t}\n\t};\n\n\tthis.actionVideotrack = function (ev) {\n\n\t\tvar tracks = this.video.videoTracks, value = (typeof ev == 'object') ? ev.target.value : ev, idx;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tfor (idx = 0; idx < tracks.length; idx++)\n\t\t\t\ttracks[idx].enabled = (idx == value);\n\n\t\t\tvideo.currentTime -= 1;\n\t\t}\n\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\tthis.actionAudiotrack = function (ev) {\n\n\t\tvar tracks = this.video.audioTracks, value = (typeof ev == 'object') ? ev.target.value : ev, idx;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tfor (idx = 0; idx < tracks.length; idx++)\n\t\t\t\ttracks[idx].enabled = (idx == value);\n\n\t\t\tvideo.currentTime -= 1;\n\t\t}\n\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\tthis.actionTexttrack = function (ev) {\n\n\t\tvar tracks = this.video.textTracks, value = (typeof ev == 'object') ? ev.target.value : ev, idx;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tfor (idx = 0; idx < tracks.length; idx++)\n\t\t\t\ttracks[idx].mode = (idx == value) ? 'showing' : 'hidden';\n\n\t\t\tthis.subload = true;\n\t\t}\n\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\tthis.actionVideo = function (ev) {\n\n\t\tthis.html('svg.bar rect').style.width = '0';\n\t\tthis.html('svg.bar').querySelectorAll('.buffer').forEach(function (node) { node.parentNode.removeChild(node); });\n\t\tthis.html('span.play').textContent = '\\uE810';\n\n\t\tthis.updateSelect('videotrack', 0);\n\t\tthis.updateSelect('audiotrack', 0);\n\n\t\tthis.video.src = this.video.querySelectorAll('source')[(typeof ev == 'object') ? ev.target.value : ev].src;\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\n\t// GÉNÉRATION DES ÉLÉMENTS (private return domelement)\n\n\tthis.htmlSvgPlayer = function () {\n\n\t\tvar d, c, b, a = document.createElement('div');\n\t\ta.setAttribute('class', 'apijsplayer noplaying');\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'btn play fnt');\n\t\t\tb.appendChild(document.createTextNode('\\uE810'));\n\t\t\tb.onclick = this.actionPlay.bind(this);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'svg bar');\n\n\t\t\t\tc = document.createElement('svg');\n\t\t\t\tc.setAttribute('class', 'bar');\n\t\t\t\tc.onclick = this.actionPosition.bind(this);\n\n\t\t\t\t\td = document.createElement('rect');\n\n\t\t\t\tc.appendChild(d);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'time');\n\t\t\tb.appendChild(document.createTextNode('--:--'));\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'svg vol nomobile');\n\n\t\t\t\tc = document.createElement('svg');\n\t\t\t\tc.setAttribute('class', 'vol');\n\t\t\t\tc.onclick = this.actionVolume.bind(this);\n\n\t\t\t\t\td = document.createElement('rect');\n\n\t\t\t\tc.appendChild(d);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks audiotrack');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(133));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionAudiotrack.bind(this);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks videotrack');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(132));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionVideotrack.bind(this);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks video');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(131));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionVideo.bind(this);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks texttrack');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(134));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionTexttrack.bind(this);\n\n\t\t\t\t\td = document.createElement('option');\n\t\t\t\t\td.appendChild(apijs.i18n.translateNode(135)); // off\n\n\t\t\t\tc.appendChild(d);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'btn full fnt nomobile');\n\t\t\tb.appendChild(document.createTextNode('\\uE80F'));\n\t\t\tb.onclick = function () {\n\t\t\t\tapijs.requestFullscreen(apijs.dialog.t1 ? apijs.dialog.t1 : this.video.parentNode);\n\t\t\t}.bind(this);\n\n\t\ta.appendChild(b);\n\n\t\treturn a;\n\t};\n\n\tthis.htmlTrack = function (data) { // todo\n\n\t\tvar a = document.createElement('track');\n\t\ta.setAttribute('kind', data[1]);\n\t\ta.setAttribute('label', data[2]);\n\t\ta.setAttribute('srclang', data[3]);\n\t\ta.setAttribute('src', data[4]);\n\n\t\ta.onload = function (ev) {\n\t\t\tapijs.log('player:track:onload ' + ev.target.src.slice(ev.target.src.lastIndexOf('/') + 1));\n\t\t\tif (ev.target.track.mode === 'showing') {\n\t\t\t\tthis.onWaiting(ev);\n\t\t\t\tthis.subload = false;\n\t\t\t}\n\t\t}.bind(this);\n\n\t\ta.onerror = function (ev) {\n\t\t\tapijs.log('player:track:onerror ' + ev.target.src.slice(ev.target.src.lastIndexOf('/') + 1));\n\t\t\tif (ev.target.track.mode === 'showing') {\n\t\t\t\tthis.onWaiting(ev);\n\t\t\t\tthis.subload = false;\n\t\t\t}\n\t\t}.bind(this);\n\n\t\treturn a;\n\t};\n\n\tthis.htmlSource = function (url) {\n\n\t\tvar a = document.createElement('source');\n\t\ta.setAttribute('src', url);\n\t\ta.onerror = apijs.dialog.onMediaLoad;\n\n\t\treturn a;\n\t};\n\n\tthis.htmlOption = function (idx, txt) {\n\n\t\tif (typeof txt == 'object')\n\t\t\ttxt = (txt.label === '') ? txt.language.toLowerCase() : txt.language.toLowerCase() + ' - ' + txt.label;\n\n\t\tvar a = document.createElement('option');\n\t\ta.setAttribute('value', idx);\n\t\ta.appendChild(document.createTextNode(txt));\n\n\t\treturn a;\n\t};\n\n\n\tthis.autoRun(video, url);\n};","/**\n * Created D/12/04/2009\n * Updated W/03/03/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.dialog = function () {\n\n\t\"use strict\";\n\tthis.klass = [];\n\tthis.height = 0;\n\tthis.scroll = 0; // time\n\tthis.callback = null;\n\tthis.args = null;\n\tthis.xhr = null;\n\n\tthis.ft = /information|confirmation|options|upload|progress|waiting|photo|video|iframe|ajax|start|ready|end|reduce|mobile|tiny|fullscreen/g;\n\tthis.ti = 'a,area,button,input,textarea,select,object,iframe';\n\tthis.ns = 'http://www.w3.org/2000/svg';\n\n\tthis.media = null;\n\tthis.t0 = null; // fragment\n\tthis.t1 = null; // div id=apijsDialog\n\tthis.t2 = null; // div/form id=apijsBox\n\tthis.a = null;\n\tthis.b = null;\n\tthis.c = null;\n\tthis.d = null;\n\n\n\t// GÉNÉRATION DES BOÎTES DE DIALOGUE (public return boolean)\n\n\tthis.dialogInformation = function (title, text, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string')) {\n\t\t\treturn this.init('information', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlBtnOk()\n\t\t\t\t.show('button.confirm');\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogInformation invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogConfirmation = function (title, text, callback, args, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string') && (typeof callback == 'function')) {\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\treturn this.init('confirmation', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlBtnConfirm('button', 'apijs.dialog.actionConfirm();')\n\t\t\t\t.show('button.confirm');\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogConfirmation invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogFormOptions = function (title, text, action, callback, args, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string') && (typeof action == 'string') && (typeof callback == 'function')) {\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\treturn this.init('options', icon)\n\t\t\t\t.htmlParent(action, 'apijs.dialog.actionConfirm();')\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlBtnConfirm('submit')\n\t\t\t\t.show(true);\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogFormOptions invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogFormUpload = function (title, text, action, input, multiple, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string') && (typeof action == 'string') && (typeof input == 'string')) {\n\t\t\treturn this.init('upload', icon)\n\t\t\t\t.htmlParent(action, 'apijs.upload.actionConfirm();')\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlUpload(input, (typeof multiple == 'boolean') ? multiple : false)\n\t\t\t\t.htmlBtnConfirm('submit')\n\t\t\t\t.show('button.browse');\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogFormUpload invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogProgress = function (title, text, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string')) {\n\t\t\treturn this.init('progress', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlSvgProgress()\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogProgress invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogWaiting = function (title, text, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string')) {\n\t\t\treturn this.init('waiting', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlSvgLoader(false)\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogWaiting invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogPhoto = function (url, name, date, legend, icon) {\n\n\t\tvar slideshow = (typeof icon == 'string');\n\t\ticon = slideshow ? 'notransition slideshow loading ' + icon : 'notransition loading';\n\n\t\tif ((typeof url == 'string') && (typeof name == 'string') && (typeof date == 'string') && (typeof legend == 'string')) {\n\t\t\treturn this.init('photo', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlMedia(url, name, date, legend)\n\t\t\t\t.htmlHelp(slideshow, false)\n\t\t\t\t.htmlBtnClose()\n\t\t\t\t.htmlBtnNavigation()\n\t\t\t\t.htmlSvgLoader()\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogPhoto invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogVideo = function (url, name, date, legend, icon) {\n\n\t\tvar slideshow = (typeof icon == 'string');\n\t\ticon = slideshow ? 'notransition slideshow loading ' + icon : 'notransition loading';\n\n\t\tif ((typeof url == 'string') && (typeof name == 'string') && (typeof date == 'string') && (typeof legend == 'string')) {\n\t\t\treturn this.init('video', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlMedia(url, name, date, legend)\n\t\t\t\t.htmlHelp(slideshow, url.indexOf('iframe') < 0) // true si pas iframe\n\t\t\t\t.htmlBtnClose()\n\t\t\t\t.htmlBtnNavigation()\n\t\t\t\t.htmlSvgLoader()\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogVideo invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogIframe = function (url, close, icon) {\n\n\t\tif ((typeof url == 'string') && (typeof close == 'boolean')) {\n\t\t\treturn this.init('iframe', (typeof icon == 'string') ? icon + ' loading' : 'loading', !close)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlIframe(url)\n\t\t\t\t.htmlBtnClose(close)\n\t\t\t\t.htmlSvgLoader(false)\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogIframe invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogAjax = function (url, close, callback, args, icon) {\n\n\t\tif ((typeof url == 'string') && (typeof close == 'boolean') && (typeof callback == 'function')) {\n\t\t\t// dialogue\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\tthis.init('ajax', (typeof icon == 'string') ? icon + ' loading' : 'loading', !close)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlBtnClose(close)\n\t\t\t\t.htmlSvgLoader(false)\n\t\t\t\t.show();\n\t\t\t// ajax\n\t\t\tthis.xhr = new XMLHttpRequest();\n\t\t\tthis.xhr.open('GET', url, true);\n\t\t\tthis.xhr.onreadystatechange = function () {\n\t\t\t\tif ((this.xhr.readyState === 4) && (typeof this.callback == 'function')) {\n\t\t\t\t\tthis.callback(this.xhr, this.args);\n\t\t\t\t\tthis.remove('loading');\n\t\t\t\t}\n\t\t\t}.bind(this); // pour que ci-dessus this = this\n\t\t\tthis.xhr.send();\n\t\t\treturn this;\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogAjax invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\n\t// GESTION DES CLASSES CSS (public sauf update private, return this sauf has return true)\n\n\tthis.update = function () {\n\n\t\t// il n'est pas question de mettre à jour les attributs class sans l'une des 3 classes de base\n\t\tif (this.has('start', 'ready', 'end')) {\n\t\t\tif (this.t1)\n\t\t\t\tthis.t1.setAttribute('class', this.klass.join(' '));\n\t\t\tif (this.t2)\n\t\t\t\tthis.t2.setAttribute('class', this.klass.join(' '));\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.add = function () {\n\n\t\tArray.prototype.forEach.call(arguments, function (css) {\n\t\t\tif (typeof css != 'string')\n\t\t\t\tconsole.error('apijs.dialog.add argument is not a string', css);\n\t\t\tif (this.klass.indexOf(css) < 0)\n\t\t\t\tthis.klass.push(css);\n\t\t}, this); // pour que ci-dessus this = this\n\n\t\treturn this.update();\n\t};\n\n\tthis.remove = function () {\n\n\t\tArray.prototype.forEach.call(arguments, function (css) {\n\t\t\tif (typeof css != 'string')\n\t\t\t\tconsole.error('apijs.dialog.remove argument is not a string', css);\n\t\t\tif (this.klass.indexOf(css) > -1)\n\t\t\t\tthis.klass.splice(this.klass.indexOf(css), 1);\n\t\t}, this); // pour que ci-dessus this = this\n\n\t\treturn this.update();\n\t};\n\n\tthis.toggle = function (search, replace) {\n\n\t\tif ((typeof search != 'string') || (typeof replace != 'string'))\n\t\t\tconsole.error('apijs.dialog.toggle argument is not a string', search, replace);\n\n\t\tif (this.has(search))\n\t\t\tthis.remove(search);\n\t\tif (!this.has(replace))\n\t\t\tthis.add(replace);\n\n\t\treturn this.update();\n\t};\n\n\tthis.has = function () {\n\t\treturn this.klass.has(apijs.toArray(arguments)); // true if one found\n\t};\n\n\n\t// GESTION DES INTERACTIONS (private sauf actionClose)\n\n\tthis.actionClose = function (ev) {\n\n\t\t// \\\\ au lieu de \\ sinon Bad or unnecessary escaping\n\t\tif (apijs.config.slideshow.anchor && (typeof history.pushState == 'function')) {\n\t\t\tif (new RegExp('#(' + apijs.config.slideshow.ids + '[\\-\\\\.]\\\\d+[\\-\\\\.]\\\\d+)').test(self.location.href))\n\t\t\t\thistory.pushState({}, '', self.location.href.slice(0, self.location.href.indexOf('#')));\n\t\t}\n\n\t\tif (typeof ev == 'object') {\n\t\t\tif ((ev.target.getAttribute('id') === 'apijsDialog') && !apijs.dialog.has('photo', 'video', 'progress', 'waiting', 'lock'))\n\t\t\t\tapijs.dialog.clear(true);\n\t\t}\n\t\telse if (this.t1) {\n\t\t\tthis.clear(true);\n\t\t}\n\t};\n\n\tthis.onCloseBrowser = function (ev) {\n\n\t\tif (apijs.dialog.has('progress', 'waiting', 'lock')) {\n\t\t\tev.preventDefault();\n\t\t\tev.stopPropagation();\n\t\t\tev.m = apijs.i18n.translate(124);\n\t\t\tev.returnValue = ev.m; // Gecko, Trident, Chrome 34+\n\t\t\treturn ev.m; // Gecko, WebKit, Chrome\n\t\t}\n\t};\n\n\tthis.onResizeBrowser = function () {\n\n\t\tvar add = document.querySelector('body').clientWidth <= (apijs.dialog.has('photo', 'video') ? 900 : 460);\n\t\tapijs.dialog[add ? 'add' : 'remove']('mobile');\n\n\t\tadd = document.querySelector('body').clientWidth <= 300;\n\t\tapijs.dialog[add ? 'add' : 'remove']('tiny');\n\t};\n\n\tthis.onScrollBrowser = function (ev) {\n\n\t\tvar that = apijs.dialog, elem = ev.target, brk = false;\n\n\t\t// dialogues du diaporama (suivant/précédent)\n\t\tif (that.has('slideshow') && !that.has('playing') &&\n\t\t !['OPTION', 'SELECT'].has(elem.nodeName) && ['DOMMouseScroll','mousewheel','panleft','panright'].has(ev.type)) {\n\n\t\t\telem = new Date().getTime() / 1000;\n\t\t\tif ((that.scroll < 1) || (elem > (1 + that.scroll))) {\n\t\t\t\tthat.scroll = elem;\n\t\t\t\t// ev.detail > 0 si vers le bas avec Firefox\n\t\t\t\t// ev.wheelDelta < 0 si vers le bas avec Chromium/Opera/Edge...\n\t\t\t\tbrk = (ev.detail > 0) || (ev.wheelDelta < 0); // true si vers le bas\n\t\t\t\tapijs.slideshow[((ev.type === 'panleft') || brk) ? 'actionNext' : 'actionPrev']();\n\t\t\t}\n\t\t}\n\t\t// autorise éventuellement le défilement\n\t\t// recherche l'éventuel élément scrollable\n\t\telse {\n\t\t\tif (elem.nodeName === 'OPTION') {\n\t\t\t\telem = elem.parentNode;\n\t\t\t}\n\t\t\telse if (!['TEXTAREA', 'SELECT'].has(elem.nodeName)) {\n\t\t\t\twhile ((brk !== true) && (elem.nodeName !== 'HTML')) {\n\t\t\t\t\tif (elem.classList.contains('scrollable'))\n\t\t\t\t\t\tbrk = true;\n\t\t\t\t\telse\n\t\t\t\t\t\telem = elem.parentNode;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// elem = select | textarea | scrollable\n\t\t\tif (elem.nodeName !== 'HTML') {\n\t\t\t\t// ev.detail > 0 si vers le bas avec Firefox\n\t\t\t\t// ev.wheelDelta < 0 si vers le bas avec Chromium/Opera/Edge...\n\t\t\t\tbrk = (ev.detail > 0) || (ev.wheelDelta < 0); // true si vers le bas\n\t\t\t\tif ((brk && (elem.scrollTop < (elem.scrollHeight - elem.offsetHeight))) || (!brk && (elem.scrollTop > 0)))\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// empèche le défilement\n\t\tev.preventDefault();\n\t\tev.stopPropagation();\n\t};\n\n\tthis.onScrollIframe = function (ev) {\n\n\t\tvar elem = ev.target, brk;\n\t\twhile (elem.parentNode)\n\t\t\telem = elem.parentNode;\n\n\t\t// ev.detail > 0 si vers le bas avec Firefox\n\t\t// ev.wheelDelta < 0 si vers le bas avec Chromium/Opera/Edge...\n\t\tbrk = (ev.detail > 0) || (ev.wheelDelta < 0); // true si vers le bas\n\n\t\t// empèche le défilement (elem = iframe document)\n\t\tif (\n\t\t\t(brk && ((elem.defaultView.innerHeight + elem.defaultView.pageYOffset) >= (elem.body.offsetHeight - 1))) ||\n\t\t\t(!brk && (elem.defaultView.pageYOffset <= 0))\n\t\t) {\n\t\t\tev.preventDefault();\n\t\t\tev.stopPropagation();\n\t\t}\n\t};\n\n\tthis.onKey = function (ev) {\n\n\t\tvar that = apijs.dialog, elem = that.media;\n\n\t\t// dialogues d'attente et de progresssion ou tout autre dialogue verrouillé\n\t\t// ctrl + q | ctrl + w | ctrl + r | ctrl + f4 | ctrl + f5 // alt + f4 // échap | f5\n\t\tif (that.has('progress', 'waiting', 'lock')) {\n\n\t\t\tif ((ev.ctrlKey && [81, 87, 82, 115, 116].has(ev.keyCode)) || (ev.altKey && (ev.keyCode === 115)) || [27, 116].has(ev.keyCode))\n\t\t\t\tev.preventDefault();\n\t\t}\n\t\t// dialogues photo et vidéo\n\t\t// f11 (ne fonctionne plus sur Opera 74 Windows)\n\t\telse if (that.has('photo', 'video') && (ev.keyCode === 122)) {\n\t\t\tev.preventDefault();\n\t\t\tapijs.requestFullscreen(that.t1);\n\t\t}\n\t\t// dialogues photo et vidéo du diaporama\n\t\t// échap // fin // début // gauche // droite\n\t\telse if (that.has('slideshow')) {\n\n\t\t\tif (ev.keyCode === 27) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tthat.actionClose();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 35) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionLast();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 36) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionFirst();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 37) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionPrev();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 39) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionNext();\n\t\t\t}\n\t\t}\n\t\t// pour tous les autres\n\t\t// échap\n\t\telse if (ev.keyCode === 27) {\n\t\t\tev.preventDefault();\n\t\t\tthat.actionClose();\n\t\t}\n\n\t\t// dialogue vidéo\n\t\t// espace | p // haut | page haut // bas | page bas // + // - // m\n\t\tif (that.has('video') && !that.has('videoiframe')) {\n\n\t\t\t// espace | p\n\t\t\tif ((ev.keyCode === 32) || (ev.keyCode === 80)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\tif (elem.ended || elem.paused)\n\t\t\t\t\t\telem.play();\n\t\t\t\t\telse\n\t\t\t\t\t\telem.pause();\n\t\t\t\t}\n\t\t\t}\n\t\t\t// haut | page haut\n\t\t\telse if ((ev.keyCode === 38) || (ev.keyCode === 33)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif (([1,2].has(elem.networkState)) && (elem.duration !== Infinity) && !isNaN(elem.duration)) {\n\t\t\t\t\tif (elem.currentTime < (elem.duration - 10))\n\t\t\t\t\t\telem.currentTime += 10;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// bas | page bas\n\t\t\telse if ((ev.keyCode === 40) || (ev.keyCode === 34)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif (([1,2].has(elem.networkState)) && (elem.duration !== Infinity) && !isNaN(elem.duration)) {\n\t\t\t\t\tif (elem.currentTime > 10)\n\t\t\t\t\t\telem.currentTime -= 10;\n\t\t\t\t\telse\n\t\t\t\t\t\telem.currentTime = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// +\n\t\t\telse if (ev.keyCode === 107) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\tif (elem.muted)\n\t\t\t\t\t\telem.muted = false;\n\t\t\t\t\tif (elem.volume < 0.8)\n\t\t\t\t\t\telem.volume += 0.2;\n\t\t\t\t\telse\n\t\t\t\t\t\telem.volume = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// -\n\t\t\telse if (ev.keyCode === 109) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\tif (elem.muted)\n\t\t\t\t\t\telem.muted = false;\n\t\t\t\t\tif (elem.volume > 0.21)\n\t\t\t\t\t\telem.volume -= 0.2;\n\t\t\t\t\telse\n\t\t\t\t\t\telem.volume = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// m\n\t\t\telse if (ev.keyCode === 77) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\telem.muted = !elem.muted; // inverse\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// défilement de la page pour tous (renvoi sur actionScrollBrowser)\n\t\t// espace | page haut | page bas | fin | début | haut | bas\n\t\tif ([32, 33, 34, 35, 36, 38, 40].has(ev.keyCode)) {\n\n\t\t\t// empèche le défilement\n\t\t\tif (!ev.target || !['INPUT', 'TEXTAREA', 'OPTION', 'SELECT'].has(ev.target.nodeName)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tev.stopPropagation();\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.onFullscreen = function (ev) {\n\n\t\tvar res = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;\n\t\tif (ev) apijs.log('dialog:onFullscreen:' + (res ? 'in' : 'out'));\n\n\t\tapijs.dialog[res ? 'add' : 'remove']('fullscreen');\n\t};\n\n\tthis.onIframeLoad = function (elem) { // todo\n\n\t\telem.removeAttribute('class');\n\t\tapijs.dialog.remove('loading');\n\n\t\telem.contentWindow.document.addEventListener('keydown', window.parent.apijs.dialog.onKey);\n\t\telem.contentWindow.addEventListener('DOMMouseScroll', window.parent.apijs.dialog.onScrollIframe, { passive: false });\n\t\telem.contentWindow.addEventListener('mousewheel', window.parent.apijs.dialog.onScrollIframe, { passive: false });\n\t\telem.contentWindow.addEventListener('touchmove', window.parent.apijs.dialog.onScrollIframe, { passive: false });\n\t};\n\n\tthis.onMediaLoad = function (ev) { // todo\n\n\t\tvar that = apijs.dialog, media = that.media, src, elem, elems;\n\t\tif (ev && ev.target) {\n\t\t\tsrc = ev.target.currentSrc || ev.target.src;\n\t\t\tapijs.log('dialog:onMediaLoad:' + ev.type + ' ' + (src ? src.slice(src.lastIndexOf('/') + 1) : ''));\n\t\t}\n\n\t\tif (media && ['load', 'durationchange'].has(ev.type)) {\n\t\t\tthat.remove('loading', 'error');\n\t\t\tmedia.style.visibility = 'visible';\n\t\t\tif (!media.hasAttribute('src') && (media.nodeName === 'IMG'))\n\t\t\t\tmedia.setAttribute('src', media.imageLoader.src);\n\t\t}\n\t\telse if (media && (ev.type === 'error')) {\n\t\t\tthat.toggle('loading', 'error');\n\t\t\tmedia.removeAttribute('style');\n\t\t\t// player vidéo (désactive l'option et active la suivante)\n\t\t\telem = apijs.html('.tracks.video select');\n\t\t\tif (elem && ev && ev.target) {\n\t\t\t\telems = elem.querySelectorAll('option');\n\t\t\t\tif ((elems.length > 0) && (elem.value.length > 0)) {\n\t\t\t\t\telems[elem.value].setAttribute('disabled', 'disabled');\n\t\t\t\t\telem.selectedIndex += 1;\n\t\t\t\t\t// charge la vidéo suivante (si erreur au clic sur le select)\n\t\t\t\t\tif ((ev.target.nodeName === 'VIDEO') && (elem.value !== ''))\n\t\t\t\t\t\tmedia.videoPlayer.actionVideo(elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.actionConfirm = function () { // todo\n\n\t\t// vérifie le dialogue d'options\n\t\t// arrêt du traitement si c'est pas bon\n\t\tif (this.has('options')) {\n\t\t\tif (this.callback(false, this.args) !== true)\n\t\t\t\treturn false;\n\t\t}\n\n\t\t// verrouille le dialogue et affiche le loader\n\t\tthis.add('lock', 'loading');\n\t\tthis.htmlSvgLoader(false);\n\n\t\t// masque les boutons et le texte du dialogue\n\t\tapijs.html('div.btns').style.visibility = 'hidden';\n\t\tapijs.html('div.bbcode').style.visibility = 'hidden';\n\n\t\t// appelle la fonction de rappel\n\t\t// ne déverrouille pas le dialogue\n\t\tself.setTimeout(function () {\n\t\t\tif ((this.t2) && (this.t2.nodeName === 'FORM'))\n\t\t\t\tthis.callback(this.t2.getAttribute('action'), this.args);\n\t\t\telse if (this.t2)\n\t\t\t\tthis.callback(this.args);\n\t\t}.bind(this), 12); // pour que ci-dessus this = this\n\n\t\treturn false; // très important\n\t};\n\n\n\t// GESTION DES CONTENEURS (private return this|boolean)\n\n\tthis.init = function (type, icon, isLocked) { // todo\n\n\t\tisLocked = (isLocked === true);\n\t\tif (typeof icon == 'string') {\n\t\t\ticon = icon.replace(this.ft, '').trim();\n\t\t\ticon = (icon.length > 0) ? (isLocked ? icon + ' lock' : icon) : (isLocked ? 'lock' : null);\n\t\t}\n\t\telse if (isLocked) {\n\t\t\ticon = 'lock';\n\t\t}\n\n\t\t// préparation\n\t\tif (this.t0)\n\t\t\tthis.clear(false);\n\n\t\t// css\n\t\tthis.klass.push('start');\n\t\tthis.klass.push(type);\n\n\t\tif (self.matchMedia('prefers-reduced-motion:reduce').matches)\n\t\t\tthis.klass.push('reduce');\n\n\t\tif (typeof icon == 'string')\n\t\t\tthis.klass = this.klass.concat(icon.split(' '));\n\n\t\t// création du fragment\n\t\tthis.t0 = document.createDocumentFragment();\n\n\t\t// surveillance des touches et du navigateur\n\t\tdocument.addEventListener('keydown', this.onKey);\n\t\tself.addEventListener('beforeunload', this.onCloseBrowser);\n\t\tself.addEventListener('DOMMouseScroll', this.onScrollBrowser, { passive: false });\n\t\tself.addEventListener('mousewheel', this.onScrollBrowser, { passive: false });\n\t\tself.addEventListener('touchmove', this.onScrollBrowser, { passive: false });\n\t\tself.addEventListener('resize', this.onResizeBrowser);\n\n\t\t// restriction de la navigation\n\t\tif (apijs.config.dialog.restrictNavigation)\n\t\t\tdocument.querySelectorAll(this.ti).forEach(function (elem) { elem.setAttribute('tabindex', '-1'); });\n\n\t\treturn this;\n\t};\n\n\tthis.show = function (focus) { // todo\n\n\t\t// design\n\t\tthis.onResizeBrowser();\n\t\tthis.onFullscreen();\n\n\t\tif ((this.height > 0) && !this.has('photo', 'video'))\n\t\t\tthis.t2.style.minHeight = this.height + 'px';\n\n\t\t// affichage du dialogue sans/sans/avec transitions CSS\n\t\tvar old = apijs.html('#Dialog');\n\t\tif (old) {\n\t\t\tthis.toggle('start', 'ready');\n\t\t\tthis.t1 = old;\n\t\t\tthis.t1.appendChild(this.t0.firstChild.firstChild);\n\t\t\tthis.t1.setAttribute('class', this.t2.getAttribute('class'));\n\t\t}\n\t\telse if (this.has('notransition')) {\n\t\t\tthis.toggle('start', 'ready');\n\t\t\tdocument.querySelector('body').appendChild(this.t0);\n\t\t}\n\t\telse {\n\t\t\tdocument.querySelector('body').appendChild(this.t0);\n\t\t\tself.setTimeout(function () { apijs.dialog.toggle('start', 'ready'); }, 12);\n\t\t}\n\n\t\t// fermeture des popups au clic\n\t\tif (apijs.config.dialog.closeOnClick && !this.has('progress', 'waiting', 'lock'))\n\t\t\tdocument.addEventListener('click', this.actionClose);\n\n\t\t// passage en plein écran\n\t\tif (this.has('photo', 'video')) {\n\n\t\t\tif (document.webkitFullscreenEnabled)\n\t\t\t\tdocument.addEventListener('webkitfullscreenchange', this.onFullscreen);\n\t\t\telse if (document.fullscreenEnabled)\n\t\t\t\tdocument.addEventListener('fullscreenchange', this.onFullscreen);\n\t\t\telse if (document.mozFullScreenEnabled)\n\t\t\t\tdocument.addEventListener('mozfullscreenchange', this.onFullscreen);\n\t\t}\n\n\t\t// auto-focus\n\t\tif (focus === true)\n\t\t\tself.setTimeout(function () { apijs.html('input:not([readonly]),textarea:not([readonly]),select:not([disabled])').focus(); }, 12);\n\t\telse if (typeof focus == 'string')\n\t\t\tapijs.html(focus).focus();\n\n\t\treturn true;\n\t};\n\n\tthis.clear = function (isAll) { // todo\n\n\t\tif (isAll && this.xhr) {\n\t\t\tthis.callback = null; // très important\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\t// surveillance des touches et du navigateur (depuis initDialog)\n\t\tdocument.removeEventListener('keydown', this.onKey);\n\t\tself.removeEventListener('beforeunload', this.onCloseBrowser);\n\t\tself.removeEventListener('DOMMouseScroll', this.onScrollBrowser, { passive: false });\n\t\tself.removeEventListener('mousewheel', this.onScrollBrowser, { passive: false });\n\t\tself.removeEventListener('touchmove', this.onScrollBrowser, { passive: false });\n\t\tself.removeEventListener('resize', this.onResizeBrowser);\n\n\t\t// restriction de la navigation (depuis initDialog)\n\t\tif (apijs.config.dialog.restrictNavigation)\n\t\t\tdocument.querySelectorAll(this.ti).forEach(function (elem) { elem.removeAttribute('tabindex'); });\n\n\t\t// fermeture des popups au clic (depuis showDialog)\n\t\tif (apijs.config.dialog.closeOnClick)\n\t\t\tdocument.removeEventListener('click', this.actionClose);\n\n\t\t// spécial\n\t\tif (this.has('photo', 'video')) {\n\n\t\t\t// pour ne pas déclencher les fonctions\n\t\t\t// supprime tous les ontruc et les src\n\t\t\tif (this.has('video') && !this.has('videoiframe')) {\n\t\t\t\tthis.t2.querySelectorAll('video, source, track').forEach(function (elem) {\n\t\t\t\t\tfor (var name in elem) {\n\t\t\t\t\t\tif (name.indexOf('on') === 0)\n\t\t\t\t\t\t\telem[name] = null;\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute('src');\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.media.videoPlayer = null;\n\t\t\tthis.media.imageLoader = null;\n\n\t\t\t// passage en plein écran (depuis showDialog)\n\t\t\tif (document.webkitFullscreenEnabled)\n\t\t\t\tdocument.removeEventListener('webkitfullscreenchange', this.onFullscreen);\n\t\t\telse if (document.fullscreenEnabled)\n\t\t\t\tdocument.removeEventListener('fullscreenchange', this.onFullscreen);\n\t\t\telse if (document.mozFullScreenEnabled)\n\t\t\t\tdocument.removeEventListener('mozfullscreenchange', this.onFullscreen);\n\t\t}\n\t\t// mémorise la hauteur du dialogue\n\t\telse {\n\t\t\tthis.height = parseFloat(self.getComputedStyle(this.t2).height);\n\t\t}\n\n\t\t// supprime le dialogue\n\t\tif (isAll) {\n\t\t\tthis.toggle('ready', 'end');\n\t\t\tdocument.querySelector('body').removeChild(this.t1);\n\t\t}\n\t\telse {\n\t\t\tthis.t1.removeChild(this.t2);\n\t\t}\n\n\t\t// réinitialise toutes les variables (sauf ft/ti/ns)\n\t\tthis.klass = [];\n\t\tif (isAll) {\n\t\t\tthis.height = 0;\n\t\t\tthis.scroll = 0; // time\n\t\t\tthis.callback = null;\n\t\t\tthis.args = null;\n\t\t\tthis.xhr = null;\n\t\t}\n\t\tthis.media = null;\n\t\tthis.t0 = null; // fragment\n\t\tthis.t1 = null; // div id=apijsDialog\n\t\tthis.t2 = null; // div/form id=apijsBox\n\t\tthis.a = null;\n\t\tthis.b = null;\n\t\tthis.c = null;\n\t\tthis.d = null;\n\n\t\treturn true;\n\t};\n\n\n\t// GÉNÉRATION DES ÉLÉMENTS (private return this)\n\n\tthis.htmlParent = function (action, submit) {\n\n\t\tthis.t1 = document.createElement('div');\n\t\tthis.t1.setAttribute('id', 'apijsDialog');\n\n\t\tif (typeof action == 'string') {\n\t\t\tthis.t2 = document.createElement('form');\n\t\t\tthis.t2.setAttribute('action', action);\n\t\t\tthis.t2.setAttribute('method', 'post');\n\t\t\tthis.t2.setAttribute('enctype', 'multipart/form-data');\n\t\t\tthis.t2.setAttribute('onsubmit', 'return ' + submit);\n\t\t}\n\t\telse {\n\t\t\tthis.t2 = document.createElement('div');\n\t\t}\n\n\t\tthis.t2.setAttribute('id', 'apijsBox');\n\t\tthis.t1.appendChild(this.t2);\n\t\tthis.t0.appendChild(this.t1);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlContent = function (title, text) {\n\n\t\tif (title.length > 0) {\n\t\t\tthis.a = document.createElement('h1');\n\t\t\tthis.a.innerHTML = title.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\\[/g, '<').replace(/]/g, '>');\n\t\t\tthis.t2.appendChild(this.a);\n\t\t}\n\n\t\tif (text.length > 0) {\n\t\t\tthis.a = document.createElement('div');\n\t\t\tthis.a.setAttribute('class', 'bbcode');\n\t\t\tif (text[0] !== '[') text = '[p]' + text + '[/p]';\n\t\t\tthis.a.innerHTML = text.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\\[/g, '<').replace(/]/g, '>');\n\t\t\tthis.a.querySelectorAll('a.popup').forEach(function (elem) { elem.addEventListener('click', apijs.openTab); });\n\t\t\tthis.t2.appendChild(this.a);\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnOk = function () {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns');\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('class', 'confirm');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.dialog.actionClose();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(102));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnConfirm = function (type, click) {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns');\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', type);\n\t\t\tthis.b.setAttribute('class', 'confirm');\n\t\t\tif (type !== 'submit') this.b.setAttribute('onclick', click);\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(104));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('class', 'cancel');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.dialog.actionClose();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(103));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnNavigation = function () {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'navigation noplaying');\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('disabled', 'disabled');\n\t\t\tthis.b.setAttribute('class', 'prev');\n\t\t\tthis.b.setAttribute('id', 'apijsPrev');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.slideshow.actionPrev();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\t//this.c.appendChild(apijs.i18n.translateNode(106));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('disabled', 'disabled');\n\t\t\tthis.b.setAttribute('class', 'next');\n\t\t\tthis.b.setAttribute('id', 'apijsNext');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.slideshow.actionNext();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\t//this.c.appendChild(apijs.i18n.translateNode(107));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnClose = function (close) {\n\n\t\tif (close !== false) {\n\n\t\t\tthis.a = document.createElement('div');\n\t\t\tthis.a.setAttribute('class', 'close noplaying');\n\n\t\t\t\tthis.b = document.createElement('button');\n\t\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\t\tthis.b.setAttribute('class', 'close');\n\t\t\t\tthis.b.setAttribute('onclick', 'apijs.dialog.actionClose();');\n\n\t\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(105));\n\n\t\t\t\tthis.b.appendChild(this.c);\n\n\t\t\tthis.a.appendChild(this.b);\n\t\t\tthis.t2.appendChild(this.a);\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.htmlUpload = function (input, isMultiple) {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns upload');\n\n\t\t\tthis.b = document.createElement('input');\n\t\t\tthis.b.setAttribute('type', 'file');\n\t\t\tthis.b.setAttribute('name', input);\n\t\t\tthis.b.setAttribute('id', 'apijsFile');\n\t\t\tif (isMultiple) this.b.setAttribute('multiple', 'multiple');\n\t\t\tthis.b.setAttribute('onchange', 'apijs.upload.actionChoose(this);');\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('class', 'browse');\n\t\t\tthis.b.setAttribute('onclick', 'this.previousSibling.click();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(isMultiple ? 109 : 108));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('div');\n\t\t\tthis.b.setAttribute('class', 'filenames');\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlSvgProgress = function () {\n\n\t\tthis.a = document.createElement('span');\n\t\tthis.a.setAttribute('class', 'info');\n\t\tthis.t2.appendChild(this.a);\n\n\t\tthis.a = document.createElement('svg');\n\t\tthis.a.setAttribute('id', 'apijsProgress');\n\n\t\t\tthis.b = document.createElement('rect');\n\t\t\tthis.b.setAttribute('class', 'auto');\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlSvgLoader = function (isDelayed) {\n\n\t\tthis.a = document.createElementNS(this.ns, 'svg');\n\t\tthis.a.setAttribute('class', 'loader');\n\n\t\t\tthis.b = document.createElementNS(this.ns, 'path');\n\t\t\tif (isDelayed !== false) this.b.setAttribute('style', 'opacity:0;');\n\t\t\tthis.b.setAttribute('d', 'M75.4 126.63a11.43 11.43 0 0 1-2.1-22.65 40.9 40.9 0 0 0 30.5-30.6 11.4 11.4 0 1 1 22.27 4.87h.02a63.77 63.77 0 0 1-47.8 48.05v-.02a11.38 11.38 0 0 1-2.93.37z');\n\n\t\t\t\tthis.c = document.createElementNS(this.ns, 'animateTransform');\n\t\t\t\tthis.c.setAttribute('attributeName', 'transform');\n\t\t\t\tthis.c.setAttribute('type', 'rotate');\n\t\t\t\tthis.c.setAttribute('from', '0 64 64');\n\t\t\t\tthis.c.setAttribute('to', '360 64 64');\n\t\t\t\tthis.c.setAttribute('dur', '5s');\n\t\t\t\tthis.c.setAttribute('repeatCount', 'indefinite');\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\t\t\tthis.c = document.createElementNS(this.ns, 'animate');\n\t\t\t\tthis.c.setAttribute('attributeName', 'opacity');\n\t\t\t\tthis.c.setAttribute('to', '1');\n\t\t\t\tthis.c.setAttribute('dur', '0.01s');\n\t\t\t\tthis.c.setAttribute('begin', '1s');\n\t\t\t\tthis.c.setAttribute('fill', 'freeze');\n\n\t\t\tif (isDelayed !== false) this.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlMedia = function (url, name, date, legend) {\n\n\t\tthis.a = document.createElement('dl');\n\t\tthis.a.setAttribute('class', 'media');\n\n\t\t\tthis.b = document.createElement('dt');\n\n\t\t\tif (this.has('photo')) {\n\t\t\t\tthis.media = document.createElement('img');\n\t\t\t\tthis.media.setAttribute('alt', legend.replace('\"', ''));\n\t\t\t}\n\t\t\telse if (url.indexOf('iframe') > 0) {\n\t\t\t\tthis.media = document.createElement('iframe');\n\t\t\t\tthis.media.setAttribute('type', 'text/html');\n\t\t\t\tthis.media.setAttribute('scrolling', 'no');\n\t\t\t\tthis.media.setAttribute('src', url);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.media = document.createElement('video');\n\t\t\t\tthis.media.setAttribute('controls', 'controls');\n\t\t\t\tthis.media.setAttribute('preload', 'metadata');\n\t\t\t}\n\n\t\t\tthis.media.setAttribute('id', 'apijsMedia');\n\t\t\tthis.b.appendChild(this.media);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('dd');\n\t\t\tthis.b.setAttribute('class', 'nomobile noplaying');\n\n\t\t\tif ((name !== 'false') || (date !== 'false')) {\n\n\t\t\t\tvar fileid = url.slice(url.lastIndexOf('/') + 1);\n\t\t\t\tthis.c = document.createElement('span');\n\n\t\t\t\t// name + date\n\t\t\t\tif ((name !== 'false') && (name !== 'auto') && (date !== 'false'))\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(name + ' (' + date + ') '));\n\t\t\t\t// name\n\t\t\t\telse if ((name !== 'false') && (name !== 'auto'))\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(name + ' '));\n\t\t\t\t// auto name + date\n\t\t\t\telse if ((name === 'auto') && (date !== 'false'))\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(fileid + ' (' + date + ') '));\n\t\t\t\t// auto name\n\t\t\t\telse if (name === 'auto')\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(fileid + ' '));\n\t\t\t\t// date\n\t\t\t\telse if (date !== 'false')\n\t\t\t\t\tthis.c.appendChild(document.createTextNode('(' + date + ') '));\n\n\t\t\t\tthis.b.appendChild(this.c);\n\t\t\t}\n\n\t\t\tthis.b.appendChild(document.createTextNode(legend));\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\t// au choix : photo / vidéo avec iframe / vidéo avec lecteur / vidéo simple\n\t\t// lecteur créé v5.2 / supprimé v5.3 / refait v6.0 / extrait v6.6\n\t\tif (this.has('photo')) {\n\t\t\tthis.media.imageLoader = new Image();\n\t\t\tthis.media.imageLoader.src = url;\n\t\t\tthis.media.imageLoader.onload = this.onMediaLoad;\n\t\t\tthis.media.imageLoader.onerror = this.onMediaLoad;\n\t\t}\n\t\telse if (url.indexOf('iframe') > 0) {\n\t\t\tthis.media.onload = function (ev) {\n\t\t\t\tthis.onIframeLoad(this.media);\n\t\t\t\tthis.onMediaLoad(ev);\n\t\t\t}.bind(this); // pour que ci-dessus this = this\n\t\t\tthis.add('videoiframe');\n\t\t}\n\t\telse if (apijs.startPlayer(this.media, url)) {\n\t\t\tthis.add('videoplayer');\n\t\t}\n\t\telse {\n\t\t\tthis.c = document.createElement('source');\n\t\t\tthis.c.setAttribute('src', url);\n\t\t\tthis.c.onerror = this.onMediaLoad;\n\t\t\tthis.media.appendChild(this.c);\n\t\t\tthis.media.ondurationchange = this.onMediaLoad;\n\t\t\tthis.media.onerror = this.onMediaLoad;\n\t\t\tthis.add('videosource');\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.htmlHelp = function (isSlideshow, isVideo) {\n\n\t\tvar items, item, keys = [\n\t\t\tisSlideshow ? ['start', 149, 141] : [], // début/fin\n\t\t\tisSlideshow ? ['left', 'right', 142] : [],\n\t\t\tisVideo ? ['bottom', 'topk', 144] : [],\n\t\t\tisVideo ? ['minus', 'plus', 145] : [],\n\t\t\tisVideo ? ['M', 146] : [],\n\t\t\tisVideo ? ['P', 143] : [],\n\t\t\t['F11', 147],\n\t\t\t[150, 148] // échap\n\t\t];\n\n\t\tthis.a = document.createElement('ul');\n\t\tthis.a.setAttribute('class', 'kbd nomobile nofullscreen');\n\n\t\twhile (items = keys.shift()) {\n\n\t\t\tif (items.length > 0) {\n\n\t\t\t\tthis.b = document.createElement('li');\n\n\t\t\t\twhile (item = items.shift()) {\n\t\t\t\t\tif (items.length > 0) {\n\t\t\t\t\t\tthis.c = document.createElement('kbd');\n\t\t\t\t\t\tif (['M', 'P', 'F11'].has(item))\n\t\t\t\t\t\t\tthis.c.appendChild(document.createTextNode(item));\n\t\t\t\t\t\telse if (typeof item == 'string')\n\t\t\t\t\t\t\tthis.c.setAttribute('class', item);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(item));\n\t\t\t\t\t\tthis.b.appendChild(this.c);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.b.appendChild(apijs.i18n.translateNode(item));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.a.appendChild(this.b);\n\t\t\t}\n\t\t}\n\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlIframe = function (url) {\n\n\t\tthis.a = document.createElement('iframe');\n\t\tthis.a.setAttribute('src', url);\n\t\tthis.a.setAttribute('class', 'loading');\n\t\tthis.a.setAttribute('onload', 'apijs.dialog.onIframeLoad(this);');\n\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n};","/**\n * Created J/13/05/2010\n * Updated V/01/01/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.slideshow = function () {\n\n\t\"use strict\";\n\tthis.current = null;\n\n\n\t// AFFICHAGE DE LA BOÎTE DE DIALOGUE (public return void|boolean)\n\n\tthis.init = function () {\n\n\t\tvar i, j, elem, ids = apijs.config.slideshow.ids, hoverload = false;\n\n\t\tfor (i = 0; elem = apijs.html(ids + '.' + i, true); i++) {\n\n\t\t\thoverload = elem.classList.contains('hoverload');\n\n\t\t\tfor (j = 0; elem = apijs.html(ids + '.' + i + '.' + j, true); j++) {\n\t\t\t\telem.addEventListener('click', this.show);\n\t\t\t\tif (hoverload)\n\t\t\t\t\telem.addEventListener('mouseover', this.show);\n\t\t\t}\n\n\t\t\tif (elem = apijs.html(ids + '.' + i + '.99999', true))\n\t\t\t\telem.addEventListener('click', this.show);\n\t\t}\n\n\t\tthis.onPopState();\n\t};\n\n\tthis.onPopState = function () {\n\n\t\t// \\\\ au lieu de \\ sinon Bad or unnecessary escaping\n\t\tif (new RegExp('#(' + apijs.config.slideshow.ids + '[\\-\\\\.]\\\\d+[\\-\\\\.]\\\\d+)').test(self.location.href)) {\n\t\t\tvar id = RegExp.$1.replace(/-/g, '.');\n\t\t\tif (apijs.html(id, true) && !apijs.dialog.has('slideshow')) // Chrome 31 et Opera 19 passent 2 fois sans le !has\n\t\t\t\tapijs.slideshow.show(id, false);\n\t\t}\n\t\telse if (apijs.slideshow.current) {\n\t\t\tapijs.dialog.actionClose();\n\t\t}\n\t};\n\n\tthis.show = function (ev, push) { // todo\n\n\t\tvar source, show = false, media = {}, src, srcset, total, hash;\n\n\t\t// recherche de la source (élément a)\n\t\t// recherche des informations du média (1/4, id)\n\t\t// la source est soit une miniature (ev=click/mouseover/stringId) soit l'image principale (ev=click)\n\t\tif (typeof ev == 'string') {\n\t\t\tshow = true;\n\t\t\tsource = apijs.html(ev, true);\n\t\t\tmedia.id = ev;\n\t\t}\n\t\telse {\n\t\t\tev.preventDefault();\n\t\t\tsource = ev.target;\n\t\t\twhile (source.nodeName !== 'A')\n\t\t\t\tsource = source.parentNode;\n\n\t\t\t// stop sur miniature déjà à jour en mode gallery\n\t\t\tif ((ev.type === 'mouseover') && source.classList.contains('current'))\n\t\t\t\treturn false;\n\n\t\t\tmedia.id = source.getAttribute('id');\n\t\t}\n\n\t\t// recherche des informations du média (2/4, prefix|number|gallery)\n\t\tmedia.prefix = apijs.config.slideshow.ids + '.' + media.id.split('.')[1];\n\t\tmedia.number = parseInt(media.id.split('.')[2], 10);\n\t\tmedia.gallery = apijs.html(media.prefix + '.99999', true);\n\n\t\t// SI SOURCE N'EST PAS L'IMAGE PRINCIPALE DU MODE GALLERY\n\t\t// marque la source avec la class current\n\t\t// prend soin de supprimer les anciennes class current\n\t\t// v5.1 soit sur le lien (avant sur l'image elle même), soit sur le dl\n\t\tif (media.number !== 99999) {\n\n\t\t\tvar links = apijs.html(media.prefix, true).querySelectorAll('a[id][type]'),\n\t\t\t conts = apijs.html(media.prefix, true).querySelectorAll('dl');\n\n\t\t\tif (media.gallery || (links.length !== conts.length)) {\n\t\t\t\tlinks.forEach(function (elem) { elem.classList.remove('current'); });\n\t\t\t\tsource.setAttribute('class', 'current');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconts.forEach(function (elem) { elem.classList.remove('current'); });\n\t\t\t\tsource.parentNode.parentNode.setAttribute('class', 'current');\n\t\t\t}\n\t\t}\n\n\t\t// UNIQUEMENT EN MODE GALLERY\n\t\t// recherche des informations du média (3/4, [number]|config)\n\t\t// réaffecte la source sur la miniature et non sur l'image principale SI SOURCE = IMAGE PRINCIPALE\n\t\t// réaffecte le numéro du média sur la miniature et non sur l'image principale SI SOURCE = IMAGE PRINCIPALE\n\t\t// supprime l'adresse de l'image principale de la configuration du média (media.config = url|name|date|legend)\n\t\t// met à jour l'image principale SAUF SI SOURCE = IMAGE PRINCIPALE (puisque tout est déjà correct)\n\t\tif (media.gallery) {\n\n\t\t\tif (media.number === 99999) {\n\t\t\t\tshow = true;\n\t\t\t\tsource = (media.gallery.hasAttribute('class')) ? media.gallery.getAttribute('class') : media.prefix + '.0';\n\t\t\t\tsource = apijs.html(source, true);\n\t\t\t\tmedia.number = parseInt(source.getAttribute('id').split('.')[2], 10);\n\t\t\t\tmedia.id = media.id.replace(99999, media.number);\n\t\t\t}\n\n\t\t\tmedia.config = source.querySelector('input').getAttribute('value').split('|');\n\n\t\t\tsrc = media.config.shift();\n\t\t\tif (src.indexOf(';') > 0) {\n\t\t\t\tsrc = src.split(';');\n\t\t\t\tsrcset = src[1].trim();\n\t\t\t\tsrc = src[0].trim();\n\t\t\t}\n\n\t\t\tmedia.gallery.setAttribute('href', source.getAttribute('href'));\n\t\t\tmedia.gallery.querySelector('img').setAttribute('src', src);\n\t\t\tmedia.gallery.querySelector('img').setAttribute('srcset', srcset ? srcset : '');\n\t\t\tmedia.gallery.querySelector('img').setAttribute('alt', source.querySelector('img').getAttribute('alt'));\n\t\t\tmedia.gallery.setAttribute('class', media.id);\n\t\t}\n\t\t// UNIQUEMENT EN MODE ALBUM\n\t\t// recherche des informations du média (3/4, config)\n\t\telse {\n\t\t\tshow = true;\n\t\t\tmedia.config = source.querySelector('input').getAttribute('value').split('|');\n\t\t}\n\n\t\t// recherche des informations du média (4/4, url|type|styles)\n\t\t// défini le type de dialogue à partir du mimetype du lien de la source si cela est possible\n\t\tmedia.url = source.getAttribute('href');\n\t\tmedia.type = source.getAttribute('type').substr(0, 5).replace('image', 'dialogPhoto').replace('video', 'dialogVideo');\n\t\tmedia.type = (media.type.indexOf('dialog') === 0) ? media.type : 'dialogPhoto';\n\t\tmedia.styles = apijs.html(media.prefix, true).getAttribute('class').replace(/gallery|album/g, '').trim();\n\n\t\t// demande l'affichage du dialogue\n\t\t// lors d'un clic sur l'image principale du mode gallery\n\t\t// ou lors d'un clic sur les miniatures en mode album\n\t\t// ou lors d'un appel direct\n\t\tif (show) {\n\n\t\t\tapijs.dialog[media.type](media.url, media.config[0], media.config[1], media.config[2], media.styles);\n\n\t\t\ttotal = apijs.html(media.prefix, true).querySelectorAll('a[id][type]').length - (media.gallery ? 2 : 1);\n\t\t\tapijs.slideshow.current = {\n\t\t\t\tnumber: media.number,\n\t\t\t\tfirst: media.prefix + '.0',\n\t\t\t\tprev: (media.number > 0) ? media.prefix + '.' + (media.number - 1) : null,\n\t\t\t\tnext: (media.number < total) ? media.prefix + '.' + (media.number + 1) : null,\n\t\t\t\tlast: media.prefix + '.' + total,\n\t\t\t\ttotal: total\n\t\t\t};\n\n\t\t\t// boutons précédent et suivant\n\t\t\tif (apijs.slideshow.current.prev)\n\t\t\t\tapijs.html('#Prev').removeAttribute('disabled');\n\t\t\tif (apijs.slideshow.current.next)\n\t\t\t\tapijs.html('#Next').removeAttribute('disabled');\n\n\t\t\t// gestion de l'historique\n\t\t\t// met à jour l'ancre uniquement si l'utilisateur ne joue pas avec son historique\n\t\t\tif (apijs.config.slideshow.anchor && (typeof history.pushState == 'function') && ((typeof push == 'boolean') ? push : true)) {\n\t\t\t\thash = self.location.href;\n\t\t\t\thash = (hash.indexOf('#') > 0) ? hash.slice(0, hash.indexOf('#')) : hash;\n\t\t\t\thash += '#' + (media.prefix + '.' + ((media.number === 99999) ? 0 : media.number)).replace(/\\./g,'-');\n\t\t\t\thistory.pushState({}, '', hash);\n\t\t\t}\n\t\t}\n\n\t\treturn show;\n\t};\n\n\n\t// GESTION DES INTERACTIONS (public return boolean)\n\n\tthis.actionFirst = function () {\n\n\t\tif (this.current && (this.current.number > 0) && (this.current.number <= this.current.total))\n\t\t\treturn this.show(this.current.first);\n\n\t\treturn false;\n\t};\n\n\tthis.actionPrev = function () {\n\n\t\tif (this.current && this.current.prev && (this.current.number > 0))\n\t\t\treturn this.show(this.current.prev);\n\n\t\treturn false;\n\t};\n\n\tthis.actionNext = function () {\n\n\t\tif (this.current && this.current.next && (this.current.number < this.current.total))\n\t\t\treturn this.show(this.current.next);\n\n\t\treturn false;\n\t};\n\n\tthis.actionLast = function () {\n\n\t\tif (this.current && (this.current.number >= 0) && (this.current.number < this.current.total))\n\t\t\treturn this.show(this.current.last);\n\n\t\treturn false;\n\t};\n};","/**\n * Created L/13/04/2009\n * Updated D/03/01/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.upload = function () {\n\n\t\"use strict\";\n\tthis.title = null;\n\tthis.action = null;\n\tthis.input = null;\n\tthis.onemax = 0; // taille d'un seul fichier\n\tthis.allmax = 0; // taille de tous les fichiers\n\tthis.exts = null;\n\tthis.callback = null;\n\tthis.args = null;\n\tthis.icon = null;\n\n\tthis.files = [];\n\tthis.start = 0; // time\n\tthis.end = 0; // time\n\n\n\t// AFFICHAGE DE LA BOÎTE DE DIALOGUE (public return boolean)\n\n\tthis.sendFile = function (title, action, input, onemax, exts, callback, args, icon) {\n\n\t\tvar res = this.sendFiles(title, action, input, onemax, 0, exts, callback, args, icon);\n\t\tif (!res) console.error('apijs.upload.sendFile invalid arguments', arguments);\n\n\t\treturn res;\n\t};\n\n\tthis.sendFiles = function (title, action, input, onemax, allmax, exts, callback, args, icon) {\n\n\t\tthis.files = [];\n\t\tif (title !== true) {\n\t\t\tthis.title = title;\n\t\t\tthis.action = action;\n\t\t\tthis.input = input;\n\t\t\tthis.onemax = onemax;\n\t\t\tthis.allmax = allmax;\n\t\t\tthis.exts = (typeof exts == 'string') ? exts.split(',') : ['*'];\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\tthis.icon = icon;\n\t\t}\n\n\t\tif ((typeof this.title == 'string') && (typeof this.action == 'string') && (typeof this.input == 'string') &&\n\t\t (typeof this.onemax == 'number') && (typeof this.allmax == 'number') && (typeof this.callback == 'function')) {\n\n\t\t\tvar text, multiple = this.allmax > 0;\n\n\t\t\tif (this.exts.join() === '*')\n\t\t\t\ttext = apijs.i18n.translate(161);\n\t\t\telse if (this.exts.length === 1)\n\t\t\t\ttext = apijs.i18n.translate(162, this.exts.join());\n\t\t\telse\n\t\t\t\ttext = apijs.i18n.translate(163, this.exts.slice(0, -1).join(', '), this.exts.slice(-1));\n\n\t\t\ttext += '[br]' + apijs.i18n.translate(\n\t\t\t\tmultiple ? 165 : 164, // clef de traduction\n\t\t\t\tapijs.formatNumber(this.onemax), // taille d'un fichier\n\t\t\t\tmultiple ? apijs.formatNumber(this.allmax) : '' // taille de tous les fichiers\n\t\t\t).replace('|', '[br]');\n\n\t\t\treturn apijs.dialog.dialogFormUpload(this.title, text, this.action, this.input, multiple, this.icon);\n\t\t}\n\n\t\tif ((typeof this.allmax != 'number') || (this.allmax > 0))\n\t\t\tconsole.error('apijs.upload.sendFiles invalid arguments', arguments);\n\n\t\treturn false;\n\t};\n\n\n\t// GESTION DES INTERACTIONS (private return void)\n\n\tthis.actionChoose = function (elem) {\n\n\t\tvar html = [], size = 0, text;\n\t\tthis.files = [];\n\n\t\tif (this.exts) {\n\n\t\t\t// 1048576 octet = 1 Mo\n\t\t\tArray.prototype.forEach.call(elem.files, function (file) {\n\n\t\t\t\ttext = file.name + ' <span class=\"sz\">' + apijs.i18n.translate(166, apijs.formatNumber(file.size / 1048576)) + '</span>';\n\n\t\t\t\tif ((this.exts.join() !== '*') && !this.exts.has(file.name.slice(file.name.lastIndexOf('.') + 1).toLowerCase()))\n\t\t\t\t\ttext += ' <span class=\"ee\">' + apijs.i18n.translate(167) + '</span>';\n\t\t\t\telse if (file.size > (this.onemax * 1048576))\n\t\t\t\t\ttext += ' <span class=\"ee\">' + apijs.i18n.translate(168) + '</span>';\n\t\t\t\telse if (file.size <= 0)\n\t\t\t\t\ttext += ' <span class=\"ee\">' + apijs.i18n.translate(169) + '</span>';\n\t\t\t\telse\n\t\t\t\t\tthis.files.push(file);\n\n\t\t\t\thtml.push('<div>' + text + '</div>');\n\t\t\t\tsize += file.size / 1048576;\n\n\t\t\t}, this); // pour que ci-dessus this = this\n\n\t\t\t// multiple\n\t\t\tif ((this.allmax > 0) && (size >= this.allmax)) {\n\t\t\t\thtml.push('<div class=\"tt\"> = <span class=\"sz\">' + apijs.i18n.translate(166, apijs.formatNumber(size)) + '</span> <span class=\"ee\">' + apijs.i18n.translate(168) + '</span></div>');\n\t\t\t}\n\n\t\t\t// ok ou ko\n\t\t\tif (this.files.length === elem.files.length) {\n\t\t\t\tapijs.html('button.confirm').removeAttribute('disabled');\n\t\t\t\tapijs.html('button.confirm').focus();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tapijs.html('button.confirm').setAttribute('disabled', 'disabled');\n\t\t\t}\n\n\t\t\tapijs.html('div.filenames').innerHTML = html.join(' ');\n\t\t}\n\t};\n\n\tthis.actionConfirm = function () {\n\n\t\tif (this.files.length > 0) {\n\n\t\t\tvar form = new FormData(), xhr = new XMLHttpRequest(), tmp;\n\t\t\txhr.open('POST', this.action + ((this.action.indexOf('?') > 0) ? '&isAjax=true' : '?isAjax=true'), true);\n\n\t\t\t// token\n\t\t\tif (typeof apijs.config.upload.tokenValue == 'string') {\n\t\t\t\txhr.setRequestHeader(apijs.config.upload.tokenName, apijs.config.upload.tokenValue);\n\t\t\t\tform.append(apijs.config.upload.tokenName, apijs.config.upload.tokenValue);\n\t\t\t}\n\n\t\t\t// champs supplémentaires\n\t\t\ttmp = apijs.serialize(apijs.dialog.t2);\n\t\t\tif (tmp.length > 3) {\n\t\t\t\ttmp.split('&').forEach(function (data) {\n\t\t\t\t\tdata = data.split('=');\n\t\t\t\t\tform.append(data[0], data[1]);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// fichier(s)\n\t\t\tthis.files.forEach(function (file, idx, files) {\n\t\t\t\tform.append(((files.length > 1) && (this.input.indexOf('[') < 0)) ? this.input + '_' + idx : this.input, file);\n\t\t\t}, this); // pour que ci-dessus this = this\n\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=637002\n\t\t\t// https://stackoverflow.com/a/15491086\n\t\t\t// loadstart - When the request starts\n\t\t\t// progress - While sending and loading data\n\t\t\t// load - When the request has successfully completed even if the server hasn't responded that it finished\n\t\t\t// loadend - When the request has completed even if the server hasn't responded that it finished processing the request\n\t\t\t// error - When the request has failed\n\t\t\t// abort - When the request has been aborted (by invoking the abort method)\n\t\t\t// timeout - When the author specified timeout has passed before the request could complete\n\t\t\txhr.onreadystatechange = function (text) {\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\ttext = xhr.responseText.trim();\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tself.dispatchEvent(new CustomEvent('apijsajaxresponse', { detail: { from: 'apijs.upload.send', xhr: xhr } }));\n\t\t\t\t\t\tapijs.log('upload:onreadystatechange status:200 message:' + text);\n\t\t\t\t\t\tif (text.indexOf('success-') === 0) {\n\t\t\t\t\t\t\tthis.updateTitle();\n\t\t\t\t\t\t\tthis.callback(text.slice(8), this.args);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.onError(195, text);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijs.log('upload:onreadystatechange status:' + xhr.status + ' message: ' + text);\n\t\t\t\t\t\tthis.onError(194, xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(this); // pour que ci-dessus this = this\n\n\t\t\txhr.upload.onloadstart = this.onStart.bind(this);\n\t\t\txhr.upload.onprogress = this.onProgress.bind(this);\n\t\t\txhr.upload.onload = this.onProgress.bind(this);\n\t\t\txhr.upload.onerror = this.onError.bind(this);\n\t\t\txhr.send(form);\n\t\t}\n\t\telse {\n\t\t\tapijs.html('button.browse').focus();\n\t\t}\n\n\t\treturn false; // très important\n\t};\n\n\tthis.onStart = function () {\n\n\t\tthis.start = this.end = Math.round(new Date().getTime() / 1000);\n\t\tapijs.dialog.dialogProgress(this.title, apijs.i18n.translate(125), this.icon);\n\t};\n\n\tthis.onError = function (key, txt) {\n\n\t\tthis.updateTitle();\n\n\t\tif (typeof key == 'number')\n\t\t\ttxt = '[p]' + apijs.i18n.translate(key) + '[/p] ' + txt;\n\t\telse if (typeof txt != 'string')\n\t\t\ttxt = '[p]' + apijs.i18n.translate(193) + '[/p]';\n\n\t\ttxt += '[p]' + apijs.i18n.translate(196, 'href=\"apijs://restart\" onclick=\"apijs.upload.sendFile(true); return false;\"') + '[/p]';\n\t\tapijs.dialog.dialogInformation(this.title, txt, (typeof this.icon == 'string') ? 'upload error ' + this.icon : 'upload error');\n\t};\n\n\tthis.onProgress = function (ev) {\n\n\t\tvar percent, key, rate, time, elapsedTime, totalTime, currentTime = Math.round(new Date().getTime() / 1000), mins;\n\n\t\t// Cherche à actualiser la barre de progression toutes les 2 secondes (uniquement de 1 à 99%)\n\t\t// affiche le pourcentage, la vitesse à partir de 25 secondes, le temps restant à partir de 40 secondes ET 90 secondes de temps total\n\t\tif (ev.lengthComputable && (ev.type === 'progress') && (currentTime >= (this.end + 2))) {\n\n\t\t\tthis.end = currentTime;\n\n\t\t\t// Math.floor = entier inférieur, Math.ceil = entier supérieur, Math.round = au mieux\n\t\t\t// ev.loaded = nombre d'octet envoyé sur le serveur\n\t\t\t// ev.total = nombre d'octet à envoyer sur le serveur\n\t\t\t// pourcentage = nombre d'octet envoyé * 100 / nombre d'octet à envoyer\n\t\t\tpercent = Math.floor((ev.loaded * 100) / ev.total);\n\n\t\t\tif ((percent > 0) && (percent < 100)) {\n\n\t\t\t\tthis.updateTitle(percent);\n\n\t\t\t\t// temps écoulé = maintenant - départ\n\t\t\t\t// temps total = temps écoulé * 100 / pourcentage + 10 secondes\n\t\t\t\telapsedTime = currentTime - this.start;\n\t\t\t\ttotalTime = elapsedTime * 100 / percent + 10;\n\n\t\t\t\tif (elapsedTime > 24) {\n\n\t\t\t\t\t// temps restant = temps total - temps écoulé\n\t\t\t\t\ttime = Math.round(totalTime - elapsedTime);\n\t\t\t\t\ttime = Math.ceil(time / 10) * 10;\n\t\t\t\t\tmins = Math.ceil(time / 60);\n\n\t\t\t\t\t// vitesse = taille téléchargé / temps écoulé / 1024\n\t\t\t\t\trate = Math.round(ev.loaded / elapsedTime / 1024);\n\n\t\t\t\t\tif ((elapsedTime < 40) || (totalTime < 90)) { key = 184; time = null; } // \"§% - § ko/s\"\n\t\t\t\t\telse if (mins > 1) { key = 181; time = mins; } // \"§% - § ko/s - § minutes restantes\"\n\t\t\t\t\telse if (time > 50) { key = 182; time = 1; } // \"§% - § ko/s - § minute restante\"\n\t\t\t\t\telse { key = 183; } // \"§% - § ko/s - § secondes restantes\"\n\t\t\t\t}\n\n\t\t\t\tthis.updateProgress(percent, key, rate, time);\n\t\t\t}\n\t\t}\n\t\t// Cherche à actualiser la barre de progression lorsque l'envoi du fichier est terminé (donc à 100%)\n\t\t// affiche le pourcentage, le temps total à partir de 20 secondes, la vitesse si possible\n\t\telse if (ev.type === 'load') {\n\n\t\t\t// temps total = temps actuel - temps du départ\n\t\t\ttime = Math.round(new Date().getTime() / 1000) - this.start;\n\t\t\tmins = Math.ceil(time / 60);\n\n\t\t\t// vitesse = taille total / temps total / 1024\n\t\t\trate = Math.round(ev.loaded / time / 1024);\n\n\t\t\tif ((rate > 0) && (rate !== Infinity)) {\n\t\t\t\tif (mins > 1) { key = 185; time = mins; } // \"§% - à § ko/s en § minutes\"\n\t\t\t\telse if (time > 50) { key = 186; time = 1; } // \"§% - à § ko/s en § minute\"\n\t\t\t\telse if (time > 20) { key = 187; } // \"§% - à § ko/s en § secondes\"\n\t\t\t\telse { key = 188; time = null; } // \"§% - à § ko/s\"\n\t\t\t}\n\t\t\telse {\n\t\t\t\trate = null; time = null; // 100%\n\t\t\t}\n\n\t\t\tthis.updateTitle(100);\n\t\t\tthis.updateProgress(100, key, rate, time);\n\t\t}\n\t};\n\n\tthis.updateProgress = function (percent, key, rate, time) {\n\n\t\tvar rect = apijs.html('rect'), text = apijs.html('span.info'), data;\n\n\t\tif (percent > 99) {\n\t\t\tdata = '100%';\n\t\t\trect.setAttribute('class', 'end');\n\t\t\trect.style.width = '';\n\t\t\tapijs.html('p').textContent = apijs.i18n.translate(126);\n\t\t}\n\t\telse {\n\t\t\trect.style.width = data = percent + '%';\n\t\t\tif (rect.hasAttribute('class'))\n\t\t\t\trect.removeAttribute('class');\n\t\t}\n\n\t\tif ((typeof key == 'number') && (typeof rate == 'number') && (typeof time == 'number'))\n\t\t\tdata = apijs.i18n.translate(key, percent, apijs.formatNumber(rate, false), time);\n\t\telse if ((typeof key == 'number') && (typeof rate == 'number'))\n\t\t\tdata = apijs.i18n.translate(key, percent, apijs.formatNumber(rate, false));\n\n\t\ttext.textContent = data;\n\t};\n\n\tthis.updateTitle = function (percent) {\n\n\t\tif (typeof percent == 'number') {\n\t\t\tdocument.title = (/^\\d{1,3}% - /.test(document.title)) ?\n\t\t\t\tpercent + '% - ' + document.title.slice(document.title.indexOf(' - ') + 3) : percent + '% - ' + document.title;\n\t\t}\n\t\telse if (/^\\d{1,3}% - /.test(document.title)) {\n\t\t\tdocument.title = document.title.slice(document.title.indexOf(' - ') + 3);\n\t\t}\n\t};\n};"],"names":["Array","prototype","has","needle","key","hasOwnProperty","this","window","NodeList","forEach","callback","that","i","length","call","apijs","core","version","config","lang","debug","dialog","closeOnClick","restrictNavigation","player","slideshow","ids","anchor","upload","tokenName","tokenValue","start","elem","console","info","toString","split","join","document","getElementById","Error","querySelector","getAttribute","indexOf","error","i18n","self","dispatchEvent","CustomEvent","init","querySelectorAll","startPlayer","addEventListener","onPopState","Object","keys","data","formatNumber","nb","dec","str","dgt","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","format","e","toFixed","replace","url","videoPlayer","toArray","slice","openTab","ev","preventDefault","href","open","log","txt","html","selector","id","t1","requestFullscreen","webkitFullscreenElement","webkitCancelFullScreen","mozFullScreenElement","mozCancelFullScreen","fullscreenElement","cancelFullScreen","webkitRequestFullscreen","mozRequestFullScreen","serialize","form","filter","elements","name","disabled","type","n","options","selected","push","encodeURIComponent","value","checked","bind","cs","103","104","105","106","107","132","133","134","142","144","146","149","150","de","108","109","124","143","145","147","148","161","162","163","164","167","168","169","181","182","183","185","186","187","188","191","192","193","194","195","196","en","102","125","126","131","135","141","165","166","184","es","fr","it","ja","nl","pl","pt","ptbr","ru","sk","tr","uk","zh","toLowerCase","translate","word","idx","translation","arguments","translateNode","createTextNode","apply","changeLang","select","c","root","target","t","createDocumentFragment","a","createElement","b","appendChild","textContent","attributes","attribute","setAttribute","firstChild","innerHTML","parentNode","replaceChild","video","stalled","subload","autoRun","removeAttribute","classList","add","onloadedmetadata","onTimeupdate","onProgress","onVideotrack","onAudiotrack","onstalled","onWaiting","onplaying","onPlay","onpause","onended","onprogress","ontimeupdate","onseeking","onseeked","onwaiting","onloadstart","oncanplay","onclick","actionPlay","onvolumechange","actionVolume","ondurationchange","onMediaLoad","onerror","htmlSvgPlayer","htmlSource","xhr","XMLHttpRequest","onreadystatechange","readyState","detail","from","childNodes","abort","status","nbv","nbt","responseText","trim","shift","htmlOption","htmlTrack","updateSelect","textTracks","send","css","total","adjust","tracks","videoTracks","auto","language","selectedIndex","Math","max","actionVideotrack","audioTracks","actionAudiotrack","hh","mm","ss","time","currentTime","duration","text","isNaN","Infinity","floor","style","width","buffer","buffered","node","removeChild","end","networkState","paused","remove","ended","play","pause","offsetWidth","clientX","offsetLeft","offsetParent","volume","muted","actionPosition","enabled","blur","actionTexttrack","mode","actionVideo","src","d","onchange","onload","lastIndexOf","track","label","klass","height","scroll","args","ft","ti","ns","media","t0","t2","dialogInformation","title","icon","htmlParent","htmlContent","htmlBtnOk","show","dialogConfirmation","htmlBtnConfirm","dialogFormOptions","action","dialogFormUpload","input","multiple","htmlUpload","dialogProgress","htmlSvgProgress","dialogWaiting","htmlSvgLoader","dialogPhoto","date","legend","htmlMedia","htmlHelp","htmlBtnClose","htmlBtnNavigation","dialogVideo","dialogIframe","close","htmlIframe","dialogAjax","update","splice","toggle","search","actionClose","history","pushState","RegExp","test","location","clear","onCloseBrowser","stopPropagation","m","returnValue","onResizeBrowser","clientWidth","onScrollBrowser","brk","nodeName","Date","getTime","wheelDelta","contains","scrollTop","scrollHeight","offsetHeight","onScrollIframe","defaultView","innerHeight","pageYOffset","body","onKey","ctrlKey","keyCode","altKey","actionLast","actionFirst","actionPrev","actionNext","onFullscreen","res","onIframeLoad","contentWindow","parent","passive","elems","currentSrc","visibility","hasAttribute","imageLoader","actionConfirm","setTimeout","isLocked","matchMedia","matches","concat","focus","minHeight","old","webkitFullscreenEnabled","fullscreenEnabled","mozFullScreenEnabled","isAll","removeEventListener","parseFloat","getComputedStyle","submit","click","isMultiple","isDelayed","createElementNS","fileid","Image","isSlideshow","isVideo","items","item","current","j","hoverload","$1","source","conts","prefix","number","parseInt","gallery","links","srcset","substr","styles","first","prev","next","last","hash","onemax","allmax","exts","files","sendFile","sendFiles","actionChoose","size","file","tmp","FormData","setRequestHeader","append","updateTitle","onError","onStart","round","percent","rate","elapsedTime","mins","lengthComputable","loaded","totalTime","ceil","updateProgress","rect"],"mappings":"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"}
1
+ {"version":3,"sources":["../javascripts/main.js","../javascripts/i18n.js","../javascripts/dialog.js","../javascripts/player.js","../javascripts/slideshow.js","../javascripts/upload.js"],"sourcesContent":["/**\n * Created J/03/12/2009\n * Updated L/24/05/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\nif (!Array.prototype.has) {\n\tArray.prototype.has = function (needle, key) {\n\t\tif (needle instanceof Array) {\n\t\t\tfor (key in needle) if (needle.hasOwnProperty(key)) {\n\t\t\t\tif (this.has(needle[key]))\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor (key in this) if (this.hasOwnProperty(key)) {\n\t\t\t\tif (this[key] === needle)\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n}\n\nif (window.NodeList && !NodeList.prototype.forEach) {\n\tNodeList.prototype.forEach = function (callback, that, i) {\n\t\tthat = that || window;\n\t\tfor (i = 0; i < this.length; i++)\n\t\t\tcallback.call(that, this[i], i, this);\n\t};\n}\n\nvar apijs = new (function () {\n\n\t\"use strict\";\n\tthis.core = {};\n\tthis.version = 670;\n\n\tthis.config = {\n\t\tlang: 'auto',\n\t\tdebug: false,\n\t\t//select: { },\n\t\tdialog: {\n\t\t\tcloseOnClick: false,\n\t\t\trestrictNavigation: true,\n\t\t\tplayer: true\n\t\t},\n\t\tslideshow: {\n\t\t\tids: 'slideshow',\n\t\t\tanchor: true\n\t\t},\n\t\tupload: {\n\t\t\ttokenName: 'X-CSRF-Token',\n\t\t\ttokenValue: null\n\t\t}\n\t};\n\n\tthis.start = function () {\n\n\t\tvar elem;\n\n\t\t// bonjour\n\t\tconsole.info('APIJS ' + this.version.toString().split('').join('.') + ' - hello - 1 MB/Mo = 1024 kB/ko');\n\t\tif (document.getElementById('oldBrowser'))\n\t\t\tthrow new Error('APIJS canceled, #oldBrowser detected!');\n\n\t\tif (elem = document.querySelector('link[href*=\"apijs/fontello.woff2\"]')) {\n\t\t\tif (elem.getAttribute('href').indexOf('?a3ab5acff3') < 0)\n\t\t\t\tconsole.error('APIJS warning invalid cachekey for link:fontello.woff2?x, it must be ?a3ab5acff3');\n\t\t}\n\t\tif (elem = document.querySelector('script[src*=\"apijs.min.js?v=\"]')) {\n\t\t\tif (elem.getAttribute('src').indexOf('?v=' + this.version) < 0)\n\t\t\t\tconsole.error('APIJS warning invalid cachekey for script:apijs.min.js?x, it must be ?v=' + this.version);\n\t\t}\n\n\t\t// instancie\n\t\tthis.i18n = new this.core.i18n();\n\t\t//this.select = new this.core.select();\n\t\tthis.dialog = new this.core.dialog();\n\t\tthis.upload = new this.core.upload();\n\t\tthis.slideshow = new this.core.slideshow();\n\t\tself.dispatchEvent(new CustomEvent('apijsbeforeload'));\n\n\t\t// démarre\n\t\tthis.i18n.init();\n\t\tthis.slideshow.init();\n\t\t//this.select.init();\n\t\tdocument.querySelectorAll('video.apijsplayer[data-src]').forEach(function (elem) {\n\t\t\tapijs.startPlayer(elem, elem.getAttribute('data-src'));\n\t\t});\n\n\t\tself.addEventListener('popstate', this.slideshow.onPopState);\n\t\tself.addEventListener('hashchange', this.slideshow.onPopState);\n\n\t\tif (this.config.debug) {\n\t\t\tconsole.info('APIJS available languages: ' + Object.keys(this.i18n.data).join(' '));\n\t\t\tconsole.info('APIJS language loaded: ' + this.config.lang);\n\t\t\tconsole.info('APIJS successfully started');\n\t\t}\n\n\t\t// événement\n\t\tself.dispatchEvent(new CustomEvent('apijsload'));\n\t};\n\n\tthis.formatNumber = function (nb, dec) {\n\n\t\t// par défaut 2 chiffres\n\t\tvar dgt = (typeof dec == 'number') ? dec : ((dec === false) ? 0 : 2), str;\n\n\t\t// Firefox 29+ pas 27+, (iOS) Safari 10+ pas 9+\n\t\ttry {\n\t\t\tstr = new Intl.NumberFormat(this.config.lang, { minimumFractionDigits: dgt, maximumFractionDigits: dgt }).format(nb);\n\t\t}\n\t\tcatch (ignore) {\n\t\t\tstr = nb.toFixed(dgt);\n\t\t}\n\n\t\t// conserve 00 si on veut vraiment 2 chiffres\n\t\treturn (typeof dec == 'number') ? str : str.replace(/[.,]00$/, '');\n\t};\n\n\tthis.startPlayer = function (elem, url) {\n\n\t\tif (this.config.dialog.player === true) {\n\t\t\telem.videoPlayer = new this.core.player(elem, url);\n\t\t\telem.parentNode.classList.add('apijsvideoplayer');\n\t\t\treturn true;\n\t\t}\n\n\t\tif (typeof this.config.dialog.player == 'function') {\n\t\t\tthis.config.dialog.player(elem, url);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tthis.toArray = function (data) {\n\t\treturn Array.prototype.slice.call(data, 0);\n\t};\n\n\tthis.openTab = function (ev) {\n\t\tev.preventDefault();\n\t\tif (this.href.length > 0)\n\t\t\tself.open(this.href);\n\t};\n\n\tthis.log = function (txt) {\n\t\tif (this.config.debug)\n\t\t\tconsole.info('APIJS ' + txt);\n\t};\n\n\tthis.html = function (selector, id) {\n\t\tif ((id === true) || (selector.indexOf('#') === 0))\n\t\t\treturn document.getElementById(selector.replace('#', 'apijs'));\n\t\telse if (this.dialog.t1)\n\t\t\treturn this.dialog.t1.querySelector(selector);\n\t\telse\n\t\t\treturn null;\n\t};\n\n\tthis.requestFullscreen = function (elem) {\n\t\tif (document.webkitFullscreenElement)\n\t\t\tdocument.webkitCancelFullScreen();\n\t\telse if (document.mozFullScreenElement)\n\t\t\tdocument.mozCancelFullScreen();\n\t\telse if (document.fullscreenElement)\n\t\t\tdocument.cancelFullScreen();\n\t\telse if (elem.webkitRequestFullscreen)\n\t\t\telem.webkitRequestFullscreen();\n\t\telse if (elem.requestFullscreen)\n\t\t\telem.requestFullscreen();\n\t\telse if (elem.mozRequestFullScreen)\n\t\t\telem.mozRequestFullScreen();\n\t};\n\n\tthis.serialize = function (form, filter) {\n\n\t\tvar data = [];\n\t\tfilter = (typeof filter == 'string') ? filter : '';\n\n\t\t// https://gomakethings.com/how-to-serialize-form-data-with-vanilla-js/\n\t\tArray.prototype.forEach.call(form.elements, function (elem, idx) {\n\n\t\t\tif (!elem.name || elem.disabled || ['file', 'reset', 'submit', 'button'].has(elem.type) || (elem.name.indexOf(filter) !== 0))\n\t\t\t\treturn;\n\n\t\t\tif (elem.type === 'select-multiple') {\n\t\t\t\tfor (idx = 0; idx < elem.options.length; idx++) {\n\t\t\t\t\tif (elem.options[idx].selected)\n\t\t\t\t\t\tdata.push(encodeURIComponent(elem.name) + '=' + encodeURIComponent(elem.options[idx].value));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (!['checkbox', 'radio'].has(elem.type) || elem.checked) {\n\t\t\t\tdata.push(encodeURIComponent(elem.name) + '=' + encodeURIComponent(elem.value));\n\t\t\t}\n\t\t});\n\n\t\treturn data.join('&');\n\t};\n\n})();\n\nif (typeof self.addEventListener == 'function')\n\tself.addEventListener('load', apijs.start.bind(apijs));","/**\n * Created S/05/06/2010\n * Updated V/01/01/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.i18n = function () {\n\n\t\"use strict\";\n\tthis.data = {\n\t\t// https://docs.google.com/spreadsheets/d/1UUpKZ-YAAlcfvGHYwt6aUM9io390j0-fIL0vMRh1pW0/edit?usp=sharing\n\t\t// auto start\n\t\tcs: {\n\t\t\t103: \"Zrušit\",\n\t\t\t104: \"Potvrzení\",\n\t\t\t105: \"Zavřít\",\n\t\t\t106: \"Předchozí\",\n\t\t\t107: \"Následující\",\n\t\t\t132: \"video stopa\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t142: \"předchozí/následující\",\n\t\t\t144: \"zpět/vpřed\",\n\t\t\t146: \"ztlumit\",\n\t\t\t149: \"Konec\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tde: {\n\t\t\t103: \"Abbrechen\",\n\t\t\t104: \"Bestätigen\",\n\t\t\t105: \"Schließen\",\n\t\t\t106: \"Vorheriges\",\n\t\t\t107: \"Nächstes\",\n\t\t\t108: \"Datei wählen\",\n\t\t\t109: \"Dateien wählen\",\n\t\t\t124: \"Verarbeitung läuft...\",\n\t\t\t132: \"videospur\",\n\t\t\t133: \"audiospur\",\n\t\t\t134: \"untertitel\",\n\t\t\t142: \"vorheriges/nächstes\",\n\t\t\t143: \"wiedergabe/pause\",\n\t\t\t144: \"rückwärts/vorwärts\",\n\t\t\t145: \"leiser/lauter\",\n\t\t\t146: \"ton aus\",\n\t\t\t147: \"vollbild\",\n\t\t\t148: \"beenden\",\n\t\t\t149: \"Ende\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Alle Dateien wurden akzeptiert.\",\n\t\t\t162: \"Akzeptiertes Dateiformat: §.\",\n\t\t\t163: \"Akzeptiertes Dateiformate: § und §.\",\n\t\t\t164: \"Maximale Größe: § MB.\",\n\t\t\t167: \"Unerlaubtes Format\",\n\t\t\t168: \"Format zu gross\",\n\t\t\t169: \"Leere Datei\",\n\t\t\t181: \"§% - § kB/s - Noch § Minuten\",\n\t\t\t182: \"§% - § kB/s - Noch § Minute\",\n\t\t\t183: \"§% - § kB/s - Noch § Sekunden\",\n\t\t\t185: \"§% - bis § kB/s in § Minuten\",\n\t\t\t186: \"§% - bis § kB/s in § Minute\",\n\t\t\t187: \"§% - bis § kB/s in § Sekunden\",\n\t\t\t188: \"§% - bis § kB/s\",\n\t\t\t191: \"Abbrechen\",\n\t\t\t192: \"Sind Sie sicher? [span]Ja[/span] - Nein\",\n\t\t\t193: \"Es ist ein unerwarteter Fehler aufgetreten... Bitte versuchen Sie es noch einmal.\",\n\t\t\t194: \"Es ist ein Fehler beim Senden.\",\n\t\t\t195: \"Es ist ein Fehler bei der Verarbeitung.\",\n\t\t\t196: \"Wir laden Sie ein es erneut zu [a §]versuchen[/a].\"\n\t\t},\n\t\ten: {\n\t\t\t102: \"Ok\",\n\t\t\t103: \"Cancel\",\n\t\t\t104: \"Confirm\",\n\t\t\t105: \"Close\",\n\t\t\t106: \"Previous\",\n\t\t\t107: \"Next\",\n\t\t\t108: \"Choose a file\",\n\t\t\t109: \"Choose one or multiple files\",\n\t\t\t124: \"Operation in progress...\",\n\t\t\t125: \"Upload in progress...\",\n\t\t\t126: \"Processing file in progress...\",\n\t\t\t127: \"Drag and drop your files here\",\n\t\t\t131: \"video\",\n\t\t\t132: \"video track\",\n\t\t\t133: \"audio track\",\n\t\t\t134: \"subtitles\",\n\t\t\t135: \"off\",\n\t\t\t141: \"first/last\",\n\t\t\t142: \"previous/next\",\n\t\t\t143: \"play/pause\",\n\t\t\t144: \"backward/forward\",\n\t\t\t145: \"decrease/increase the volume\",\n\t\t\t146: \"mute\",\n\t\t\t147: \"full screen\",\n\t\t\t148: \"quit\",\n\t\t\t149: \"End\",\n\t\t\t150: \"Escape\",\n\t\t\t161: \"All files are accepted.\",\n\t\t\t162: \"Accepted file format: §.\",\n\t\t\t163: \"Accepted file formats: § and §.\",\n\t\t\t164: \"Maximum size: § MB.\",\n\t\t\t165: \"Maximum size by file: § MB.|Total maximum size: § MB.\",\n\t\t\t166: \"§ MB\",\n\t\t\t167: \"Format not allowed\",\n\t\t\t168: \"Size too large\",\n\t\t\t169: \"File empty\",\n\t\t\t181: \"§% - § kB/s - § minutes left\",\n\t\t\t182: \"§% - § kB/s - § minute left\",\n\t\t\t183: \"§% - § kB/s - § seconds left\",\n\t\t\t184: \"§% - § kB/s\",\n\t\t\t185: \"§% - at § kB/s in § minutes\",\n\t\t\t186: \"§% - at § kB/s in § minute\",\n\t\t\t187: \"§% - at § kB/s in § seconds\",\n\t\t\t188: \"§% - at § kB/s\",\n\t\t\t191: \"Interrupt\",\n\t\t\t192: \"Are you sure? [span]Yes[/span] - No\",\n\t\t\t193: \"It seems that an unlikely mistake just happened... Please try again.\",\n\t\t\t194: \"An error occurred while sending.\",\n\t\t\t195: \"An error occurred while processing.\",\n\t\t\t196: \"We invite you to [a §]try again[/a].\"\n\t\t},\n\t\tes: {\n\t\t\t102: \"Aceptar\",\n\t\t\t103: \"Cancelar\",\n\t\t\t104: \"Confirmar\",\n\t\t\t105: \"Cerrar\",\n\t\t\t106: \"Anterior\",\n\t\t\t107: \"Siguiente\",\n\t\t\t108: \"Elegir un fichero\",\n\t\t\t109: \"Elegir uno o varios ficheros\",\n\t\t\t124: \"Operación en curso...\",\n\t\t\t125: \"Envío en progreso...\",\n\t\t\t126: \"Tratamiento en curso...\",\n\t\t\t131: \"vídeo\",\n\t\t\t132: \"pista de vídeo\",\n\t\t\t133: \"pista de audio\",\n\t\t\t134: \"subtítulos\",\n\t\t\t142: \"anterior/siguiente\",\n\t\t\t143: \"reproducir/pausa\",\n\t\t\t144: \"retroceder/avanzar\",\n\t\t\t145: \"bajar/subir volumen\",\n\t\t\t146: \"silenciar\",\n\t\t\t147: \"pantalla completa\",\n\t\t\t148: \"salir\",\n\t\t\t149: \"Fin\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Se aceptan todos los archivos.\",\n\t\t\t162: \"Formato de archivo aceptado: §.\",\n\t\t\t163: \"Formatos de archivos aceptados: § y §.\",\n\t\t\t164: \"Tamaño máximo: § MB.\",\n\t\t\t165: \"Tamaño máximo por fichero: § Mo.|Tamaño máximo total: § Mo.\",\n\t\t\t167: \"Formato no autorizado\",\n\t\t\t168: \"Tamaño demasiado importante\",\n\t\t\t169: \"Fichero vacío\",\n\t\t\t181: \"§% - § kB/s - § minutos restantes\",\n\t\t\t182: \"§% - § kB/s - § minuto restantes\",\n\t\t\t183: \"§% - § kB/s - § segundos restantes\",\n\t\t\t185: \"§% - a § kB/s en § minutos\",\n\t\t\t186: \"§% - a § kB/s en § minuto\",\n\t\t\t187: \"§% - a § kB/s en § segundos\",\n\t\t\t188: \"§% - a § kB/s\",\n\t\t\t191: \"Interrumpir\",\n\t\t\t192: \"¿Está seguro(a)? [span]Sí[/span] - No\",\n\t\t\t193: \"Parece que un error improbable acabo de ocurrir... Por favor, inténtelo de nuevo.\",\n\t\t\t194: \"Se produjo un error durante el envío.\",\n\t\t\t195: \"Se produjo un error durante el procesamiento.\",\n\t\t\t196: \"Le invitamos a [a §]intentar de nuevo[/a].\"\n\t\t},\n\t\tfr: {\n\t\t\t103: \"Annuler\",\n\t\t\t104: \"Valider\",\n\t\t\t105: \"Fermer\",\n\t\t\t106: \"Précédent\",\n\t\t\t107: \"Suivant\",\n\t\t\t108: \"Choisir un fichier\",\n\t\t\t109: \"Choisir un ou plusieurs fichiers\",\n\t\t\t124: \"Opération en cours...\",\n\t\t\t125: \"Envoi en cours...\",\n\t\t\t126: \"Traitement en cours...\",\n\t\t\t127: \"Faites glisser et déposez vos fichiers ici\",\n\t\t\t131: \"vidéo\",\n\t\t\t132: \"piste vidéo\",\n\t\t\t133: \"piste audio\",\n\t\t\t134: \"sous-titres\",\n\t\t\t141: \"premier/dernier\",\n\t\t\t142: \"précédent/suivant\",\n\t\t\t143: \"lecture/pause\",\n\t\t\t144: \"reculer/avancer\",\n\t\t\t145: \"réduire/augmenter le volume\",\n\t\t\t146: \"couper le son\",\n\t\t\t147: \"plein écran\",\n\t\t\t148: \"quitter\",\n\t\t\t149: \"Fin\",\n\t\t\t150: \"Échap\",\n\t\t\t161: \"Tous les fichiers sont acceptés.\",\n\t\t\t162: \"Format de fichier accepté : §.\",\n\t\t\t163: \"Formats de fichier acceptés : § et §.\",\n\t\t\t164: \"Taille maximale : § Mo.\",\n\t\t\t165: \"Taille maximale par fichier : § Mo.|Taille maximale total : § Mo.\",\n\t\t\t166: \"§ Mo\",\n\t\t\t167: \"Format non autorisé\",\n\t\t\t168: \"Taille trop importante\",\n\t\t\t169: \"Fichier vide\",\n\t\t\t181: \"§% - § ko/s - § minutes restantes\",\n\t\t\t182: \"§% - § ko/s - § minute restante\",\n\t\t\t183: \"§% - § ko/s - § secondes restantes\",\n\t\t\t184: \"§% - § ko/s\",\n\t\t\t185: \"§% - à § ko/s en § minutes\",\n\t\t\t186: \"§% - à § ko/s en § minute\",\n\t\t\t187: \"§% - à § ko/s en § secondes\",\n\t\t\t188: \"§% - à § ko/s\",\n\t\t\t191: \"Interrompre\",\n\t\t\t192: \"Êtes-vous sûr(e) ? [span]Oui[/span] - Non\",\n\t\t\t193: \"Il semblerait qu'une erreur improbable vient de se produire... Veuillez réessayer.\",\n\t\t\t194: \"Une erreur est survenue lors de l'envoi.\",\n\t\t\t195: \"Une erreur est survenue lors du traitement.\",\n\t\t\t196: \"Nous vous invitons à [a §]réessayer[/a].\"\n\t\t},\n\t\tit: {\n\t\t\t103: \"Annulla\",\n\t\t\t104: \"Conferma\",\n\t\t\t105: \"Chiudi\",\n\t\t\t106: \"Precedente\",\n\t\t\t107: \"Successivo\",\n\t\t\t108: \"Scegli un file\",\n\t\t\t109: \"Scegli uno o più file\",\n\t\t\t124: \"Operazione in corso...\",\n\t\t\t125: \"Invio in corso...\",\n\t\t\t126: \"Trattamento in corso...\",\n\t\t\t132: \"traccia video\",\n\t\t\t133: \"traccia audio\",\n\t\t\t134: \"sottotitoli\",\n\t\t\t142: \"precedente/successivo\",\n\t\t\t143: \"riproduci/pausa\",\n\t\t\t144: \"indietro/avanti\",\n\t\t\t145: \"riduci/aumenta volume\",\n\t\t\t146: \"silenzio\",\n\t\t\t147: \"schermo intero\",\n\t\t\t148: \"esci\",\n\t\t\t149: \"Fine\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Tutti i file sono accettati.\",\n\t\t\t162: \"Formato del file accettato: §.\",\n\t\t\t163: \"Formati accettati: § et §.\",\n\t\t\t164: \"Dimensione massima: § MB.\",\n\t\t\t167: \"Formato non autorizzato\",\n\t\t\t168: \"Dimensione troppo importante\",\n\t\t\t169: \"File vuoto\",\n\t\t\t181: \"§% - § kB/s - § minuti rimanenti\",\n\t\t\t182: \"§% - § kB/s - § minuto rimanente\",\n\t\t\t183: \"§% - § kB/s - § secondi rimanenti\",\n\t\t\t185: \"§% - a § kB/s in § minuti\",\n\t\t\t186: \"§% - a § kB/s in § minuto\",\n\t\t\t187: \"§% - a § kB/s in § secondi\",\n\t\t\t188: \"§% - a § kB/s\",\n\t\t\t191: \"Interrompere\",\n\t\t\t192: \"Sei sicuro? [span]Si[/span] - No\",\n\t\t\t193: \"Sembra che un errore inaspettato si sia verificato... Riprova.\",\n\t\t\t194: \"Un errore si è verificato durante l'invio.\",\n\t\t\t195: \"Un errore si è verificato durante il trattamento.\",\n\t\t\t196: \"Vi invitiamo a [a §]riprovare[/a].\"\n\t\t},\n\t\tja: {\n\t\t\t103: \"キャンセル\",\n\t\t\t104: \"承認\",\n\t\t\t105: \"閉じる\",\n\t\t\t106: \"前へ\",\n\t\t\t107: \"次へ\",\n\t\t\t131: \"ビデオ\",\n\t\t\t132: \"ビデオトラック\",\n\t\t\t133: \"オーディオトラック\",\n\t\t\t134: \"字幕\",\n\t\t\t142: \"前へ/次へ\",\n\t\t\t144: \"戻る/進む\",\n\t\t\t146: \"ミュート\",\n\t\t\t147: \"全画面表示\",\n\t\t\t149: \"終了\",\n\t\t\t150: \"Esc\",\n\t\t\t166: \"§ Mo\",\n\t\t\t184: \"§% - § Ko/s\",\n\t\t\t192: \"よろしいですか?[span]はい[/span] - いいえ\"\n\t\t},\n\t\tnl: {\n\t\t\t103: \"Annuleren\",\n\t\t\t104: \"Bevestigen\",\n\t\t\t105: \"Sluiten\",\n\t\t\t106: \"Vorige\",\n\t\t\t107: \"Volgende\",\n\t\t\t132: \"videospoor\",\n\t\t\t133: \"audiospoor\",\n\t\t\t134: \"ondertitels\",\n\t\t\t142: \"vorige/volgende\",\n\t\t\t144: \"achteruit/vooruit\",\n\t\t\t145: \"volume omlaag/omhoog\",\n\t\t\t146: \"dempen\",\n\t\t\t147: \"schermvullend\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tpl: {\n\t\t\t103: \"Anuluj\",\n\t\t\t104: \"Potwierdź\",\n\t\t\t105: \"Zamknij\",\n\t\t\t106: \"Poprzedni\",\n\t\t\t107: \"Następny\",\n\t\t\t131: \"obraz\",\n\t\t\t132: \"ścieżka obrazu\",\n\t\t\t133: \"ścieżka dźwiękowa\",\n\t\t\t134: \"napisy\",\n\t\t\t142: \"poprzedni/następny\",\n\t\t\t144: \"wstecz/przodu\",\n\t\t\t145: \"ciszej/głośniej\",\n\t\t\t146: \"wycisz\",\n\t\t\t147: \"pełny ekran\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tpt: {\n\t\t\t103: \"Cancelar\",\n\t\t\t104: \"Confirmar\",\n\t\t\t105: \"Fechar\",\n\t\t\t106: \"Anterior\",\n\t\t\t107: \"Seguinte\",\n\t\t\t108: \"Escolher um ficheiro\",\n\t\t\t109: \"Escolher um ou vários ficheiros\",\n\t\t\t124: \"Operação em processo...\",\n\t\t\t125: \"Envio em processo...\",\n\t\t\t126: \"Tratamento em processo...\",\n\t\t\t131: \"vídeo\",\n\t\t\t132: \"faixa de vídeo\",\n\t\t\t133: \"faixa de áudio\",\n\t\t\t134: \"legendas\",\n\t\t\t142: \"anterior/seguinte\",\n\t\t\t143: \"reprodução/pausa\",\n\t\t\t144: \"recuar/avançar\",\n\t\t\t145: \"diminuir/aumentar volume\",\n\t\t\t146: \"sem som\",\n\t\t\t147: \"ecrã completo\",\n\t\t\t148: \"sair\",\n\t\t\t149: \"Fim\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Todos os ficheiros foram aceites.\",\n\t\t\t162: \"Formato do ficheiro aceite: §.\",\n\t\t\t163: \"Formatos de ficheiro aceites: § e §.\",\n\t\t\t164: \"Tamanho máximo: § MB.\",\n\t\t\t181: \"§% - § kB/s - § minutos restantes\",\n\t\t\t182: \"§% - § kB/s - § minuto restantes\",\n\t\t\t183: \"§% - § kB/s - § segundos restantes\",\n\t\t\t185: \"§% - § kB/s em § minutos\",\n\t\t\t186: \"§% - § kB/s em § minuto\",\n\t\t\t187: \"§% - § kB/s em § segundos\",\n\t\t\t188: \"§% - § kB/s\",\n\t\t\t192: \"Tem a certeza? [span]Sim[/span] - Não\",\n\t\t\t193: \"Parece ter acontecido um erro imprevisto. Por favor, tente novamente.\",\n\t\t\t194: \"Ocorreu um erro ao enviar.\",\n\t\t\t195: \"Ocorreu um erro ao processar.\",\n\t\t\t196: \"Convidamo-lo a [a §]tentar novamente[/a].\"\n\t\t},\n\t\tptbr: {\n\t\t\t107: \"Próximo\",\n\t\t\t124: \"Operação em andamento...\",\n\t\t\t125: \"Envio em andamento...\",\n\t\t\t126: \"Tratamento em andamento...\",\n\t\t\t132: \"trilha de vídeo\",\n\t\t\t133: \"trilha de áudio\",\n\t\t\t142: \"anterior/próximo\",\n\t\t\t144: \"retroceder/avançar\",\n\t\t\t146: \"sem áudio\",\n\t\t\t147: \"tela inteira\",\n\t\t\t149: \"Final\"\n\t\t},\n\t\tru: {\n\t\t\t102: \"Ок\",\n\t\t\t103: \"Отмена\",\n\t\t\t104: \"Подтвердить\",\n\t\t\t105: \"Закрыть\",\n\t\t\t106: \"Предыдущий\",\n\t\t\t107: \"Следующий\",\n\t\t\t108: \"Выберите файл\",\n\t\t\t124: \"Операция в процессе...\",\n\t\t\t131: \"видео\",\n\t\t\t132: \"видеодорожка\",\n\t\t\t133: \"аудиодорожка\",\n\t\t\t134: \"субтитры\",\n\t\t\t142: \"предыдущий/следующий\",\n\t\t\t143: \"воспроизведение/пауза\",\n\t\t\t144: \"назад/вперед\",\n\t\t\t145: \"понизить/повысить громкость\",\n\t\t\t146: \"выключить звук\",\n\t\t\t147: \"полноэкранный режим\",\n\t\t\t148: \"выйти\",\n\t\t\t150: \"Esc\",\n\t\t\t161: \"Все файлы приняты.\",\n\t\t\t162: \"Формат файла: §.\",\n\t\t\t163: \"Форматы файлов: § и §.\",\n\t\t\t164: \"Максимальный размер: § MB.\",\n\t\t\t181: \"§% - § kB/s - осталось § минут\",\n\t\t\t182: \"§% - § kB/s - осталось § минут\",\n\t\t\t183: \"§% - § kB/s - осталось § секунд\",\n\t\t\t185: \"§% - § kB/s за § минут\",\n\t\t\t186: \"§% - § kB/s за § минут\",\n\t\t\t187: \"§% - § kB/s за § секунд\",\n\t\t\t188: \"§% - § kB/s\",\n\t\t\t192: \"Вы уверены? [span]Да[/span] - нет\",\n\t\t\t193: \"Кажется произошла не предусмотренная ошибка... Попробуйте еще раз.\",\n\t\t\t194: \"Возникла ошибка при отправке файла.\",\n\t\t\t195: \"Возникла ошибка при обработке файла.\"\n\t\t},\n\t\tsk: {\n\t\t\t103: \"Zrušiť\",\n\t\t\t104: \"Potvrdiť\",\n\t\t\t105: \"Zavrieť\",\n\t\t\t106: \"Dozadu\",\n\t\t\t107: \"Ďalej\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t142: \"dozadu/ďalej\",\n\t\t\t144: \"dozadu/dopredu\",\n\t\t\t145: \"znizit/zvysit hlasitost\",\n\t\t\t146: \"stlmiť\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\ttr: {\n\t\t\t103: \"İptal\",\n\t\t\t104: \"Onayla\",\n\t\t\t105: \"Kapat\",\n\t\t\t106: \"Önceki\",\n\t\t\t107: \"Sonraki\",\n\t\t\t131: \"görüntü\",\n\t\t\t132: \"görüntü kaydı\",\n\t\t\t133: \"ses kaydı\",\n\t\t\t134: \"altyazılar\",\n\t\t\t142: \"önceki/sonraki\",\n\t\t\t144: \"geri/i̇leri\",\n\t\t\t145: \"ses kısar/açar\",\n\t\t\t146: \"sesi kapatma\",\n\t\t\t147: \"tam ekran\",\n\t\t\t149: \"Son\",\n\t\t\t150: \"Esc\",\n\t\t\t192: \"Emin misiniz ? [span]Evet[/span] - Hayır\"\n\t\t},\n\t\tuk: {\n\t\t\t103: \"Відмінити\",\n\t\t\t104: \"Підтвердити\",\n\t\t\t105: \"Закрити\",\n\t\t\t106: \"Попередній\",\n\t\t\t107: \"Наступний\",\n\t\t\t131: \"відео\",\n\t\t\t132: \"відеодоріжка\",\n\t\t\t133: \"звукова доріжка\",\n\t\t\t134: \"субтитри\",\n\t\t\t142: \"попередній/наступний\",\n\t\t\t144: \"назад/вперед\",\n\t\t\t145: \"зменшити/збільшити гучність\",\n\t\t\t146: \"вимкнути звук\",\n\t\t\t149: \"Кінець\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\tzh: {\n\t\t\t103: \"取消\",\n\t\t\t104: \"确认\",\n\t\t\t105: \"关闭\",\n\t\t\t106: \"上一个\",\n\t\t\t107: \"下一个\",\n\t\t\t131: \"视频\",\n\t\t\t132: \"视频轨道\",\n\t\t\t133: \"音频轨道\",\n\t\t\t134: \"字幕\",\n\t\t\t142: \"上一个/下一个\",\n\t\t\t144: \"快退/快进\",\n\t\t\t145: \"音量减/增\",\n\t\t\t146: \"静音\",\n\t\t\t147: \"全屏\",\n\t\t\t150: \"Esc\",\n\t\t\t192: \"您确定吗?[span]是[/span] - 否\"\n\t\t}\n\t\t// auto end\n\t};\n\n\tthis.init = function () {\n\n\t\tvar value = apijs.config.lang, html = document.querySelector('html');\n\n\t\tif (value.indexOf('auto') > -1) {\n\t\t\tvalue = html.getAttribute('xml:lang') || html.getAttribute('lang'); // pt-BR fr-FR\n\t\t\tif (typeof value == 'string') {\n\t\t\t\tvalue = value.replace(/[-_]/g, '').toLowerCase();\n\t\t\t\tvalue = value.slice(0, 4); // ptbr frfr\n\t\t\t\tif (!this.data.hasOwnProperty(value))\n\t\t\t\t\tvalue = value.slice(0, 2); // pt fr\n\t\t\t\tif (this.data.hasOwnProperty(value))\n\t\t\t\t\tapijs.config.lang = value;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.data.hasOwnProperty(value))\n\t\t\tapijs.config.lang = 'en';\n\t};\n\n\n\t// TRADUIT (public return string|domelement|boolean)\n\n\tthis.translate = function (word) {\n\n\t\tvar lang = apijs.config.lang, idx = 1, translation = '';\n\n\t\t// mot clef inexistant dans la langue configurée\n\t\t// test avec la langue par défaut pour éventuellement continuer\n\t\tif (typeof this.data[lang][word] != 'string') {\n\t\t\tif ((lang.length > 3) && (typeof this.data[lang.slice(0, 2)][word] == 'string'))\n\t\t\t\tlang = lang.slice(0, 2);\n\t\t\telse if ((lang !== 'en') && (typeof this.data.en[word] == 'string'))\n\t\t\t\tlang = 'en';\n\t\t\telse\n\t\t\t\treturn word;\n\t\t}\n\n\t\t// chaîne de caractères configurable\n\t\tif (arguments.length > 1) {\n\t\t\tthis.data[lang][word].split('§').forEach(function (data) {\n\t\t\t\ttranslation += (idx < this.length) ? data + this[idx++] : data;\n\t\t\t}, arguments); // pour que ci-dessus this = arguments\n\t\t\treturn translation;\n\t\t}\n\n\t\t// chaîne de caractères simple\n\t\treturn this.data[lang][word];\n\t};\n\n\tthis.translateNode = function () {\n\n\t\t// apply fait une copie des arguments\n\t\t// c'est comme si on avait appelé this.translate directement\n\t\treturn document.createTextNode(this.translate.apply(this, arguments));\n\t};\n\n\tthis.changeLang = function (lang) {\n\n\t\tif (typeof lang == 'string') {\n\n\t\t\tif (lang.indexOf('auto') > -1) {\n\t\t\t\tapijs.config.lang = 'auto';\n\t\t\t\tthis.init();\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tlang = lang.replace(/[-_]/g, '');\n\n\t\t\tif (this.data.hasOwnProperty(lang)) {\n\t\t\t\tapijs.config.lang = lang;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n};","/**\n * Created D/12/04/2009\n * Updated L/24/05/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.dialog = function () {\n\n\t\"use strict\";\n\tthis.klass = [];\n\tthis.height = 0;\n\tthis.scroll = 0; // time\n\tthis.callback = null;\n\tthis.args = null;\n\tthis.xhr = null;\n\n\tthis.ft = /information|confirmation|options|upload|progress|waiting|photo|video|iframe|ajax|start|ready|end|reduce|mobile|tiny|fullscreen/g;\n\tthis.ti = 'a,area,button,input,textarea,select,object,iframe';\n\tthis.ns = 'http://www.w3.org/2000/svg';\n\n\tthis.media = null;\n\tthis.t0 = null; // fragment\n\tthis.t1 = null; // div id=apijsDialog\n\tthis.t2 = null; // div/form id=apijsBox\n\tthis.a = null;\n\tthis.b = null;\n\tthis.c = null;\n\tthis.d = null;\n\n\n\t// GÉNÉRATION DES BOÎTES DE DIALOGUE (public return boolean)\n\n\tthis.dialogInformation = function (title, text, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string')) {\n\t\t\treturn this.init('information', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlBtnOk()\n\t\t\t\t.show('button.confirm');\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogInformation invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogConfirmation = function (title, text, callback, args, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string') && (typeof callback == 'function')) {\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\treturn this.init('confirmation', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlBtnConfirm('button', 'apijs.dialog.actionConfirm();')\n\t\t\t\t.show('button.confirm');\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogConfirmation invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogFormOptions = function (title, text, action, callback, args, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string') && (typeof action == 'string') && (typeof callback == 'function')) {\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\treturn this.init('options', icon)\n\t\t\t\t.htmlParent(action, 'apijs.dialog.actionConfirm();')\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlBtnConfirm('submit')\n\t\t\t\t.show(true);\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogFormOptions invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogFormUpload = function (title, text, action, input, multiple, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string') && (typeof action == 'string') && (typeof input == 'string')) {\n\t\t\treturn this.init('upload', icon)\n\t\t\t\t.htmlParent(action, 'apijs.upload.actionConfirm();', 'apijs.upload.actionDrag(event);')\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlUpload(input, (typeof multiple == 'boolean') ? multiple : false)\n\t\t\t\t.htmlBtnConfirm('submit')\n\t\t\t\t.show('button.browse');\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogFormUpload invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogProgress = function (title, text, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string')) {\n\t\t\treturn this.init('progress', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlSvgProgress()\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogProgress invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogWaiting = function (title, text, icon) {\n\n\t\tif ((typeof title == 'string') && (typeof text == 'string')) {\n\t\t\treturn this.init('waiting', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlContent(title, text)\n\t\t\t\t.htmlSvgLoader(false)\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogWaiting invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogPhoto = function (url, name, date, legend, icon) {\n\n\t\tvar slideshow = (typeof icon == 'string');\n\t\ticon = slideshow ? 'notransition slideshow loading ' + icon : 'notransition loading';\n\n\t\tif ((typeof url == 'string') && (typeof name == 'string') && (typeof date == 'string') && (typeof legend == 'string')) {\n\t\t\treturn this.init('photo', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlMedia(url, name, date, legend)\n\t\t\t\t.htmlHelp(slideshow, false)\n\t\t\t\t.htmlBtnClose()\n\t\t\t\t.htmlBtnNavigation()\n\t\t\t\t.htmlSvgLoader()\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogPhoto invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogVideo = function (url, name, date, legend, icon) {\n\n\t\tvar slideshow = (typeof icon == 'string');\n\t\ticon = slideshow ? 'notransition slideshow loading ' + icon : 'notransition loading';\n\n\t\tif ((typeof url == 'string') && (typeof name == 'string') && (typeof date == 'string') && (typeof legend == 'string')) {\n\t\t\treturn this.init('video', icon)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlMedia(url, name, date, legend)\n\t\t\t\t.htmlHelp(slideshow, url.indexOf('iframe') < 0) // true si pas iframe\n\t\t\t\t.htmlBtnClose()\n\t\t\t\t.htmlBtnNavigation()\n\t\t\t\t.htmlSvgLoader()\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogVideo invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogIframe = function (url, close, icon) {\n\n\t\tif ((typeof url == 'string') && (typeof close == 'boolean')) {\n\t\t\treturn this.init('iframe', (typeof icon == 'string') ? icon + ' loading' : 'loading', !close)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlIframe(url)\n\t\t\t\t.htmlBtnClose(close)\n\t\t\t\t.htmlSvgLoader(false)\n\t\t\t\t.show();\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogIframe invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\tthis.dialogAjax = function (url, close, callback, args, icon) {\n\n\t\tif ((typeof url == 'string') && (typeof close == 'boolean') && (typeof callback == 'function')) {\n\t\t\t// dialogue\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\tthis.init('ajax', (typeof icon == 'string') ? icon + ' loading' : 'loading', !close)\n\t\t\t\t.htmlParent()\n\t\t\t\t.htmlBtnClose(close)\n\t\t\t\t.htmlSvgLoader(false)\n\t\t\t\t.show();\n\t\t\t// ajax\n\t\t\tthis.xhr = new XMLHttpRequest();\n\t\t\tthis.xhr.open('GET', url, true);\n\t\t\tthis.xhr.onreadystatechange = function () {\n\t\t\t\tif ((this.xhr.readyState === 4) && (typeof this.callback == 'function')) {\n\t\t\t\t\tthis.callback(this.xhr, this.args);\n\t\t\t\t\tthis.remove('loading');\n\t\t\t\t}\n\t\t\t}.bind(this); // pour que ci-dessus this = this\n\t\t\tthis.xhr.send();\n\t\t\treturn this;\n\t\t}\n\n\t\tconsole.error('apijs.dialog.dialogAjax invalid arguments', arguments);\n\t\treturn false;\n\t};\n\n\n\t// GESTION DES CLASSES CSS (public sauf update private, return this sauf has return true)\n\n\tthis.update = function () {\n\n\t\t// il n'est pas question de mettre à jour les attributs class sans l'une des 3 classes de base\n\t\tif (this.has('start', 'ready', 'end')) {\n\t\t\tif (this.t1)\n\t\t\t\tthis.t1.setAttribute('class', this.klass.join(' '));\n\t\t\tif (this.t2)\n\t\t\t\tthis.t2.setAttribute('class', this.klass.join(' '));\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.add = function () {\n\n\t\tArray.prototype.forEach.call(arguments, function (css) {\n\t\t\tif (typeof css != 'string')\n\t\t\t\tconsole.error('apijs.dialog.add argument is not a string', css);\n\t\t\tif (this.klass.indexOf(css) < 0)\n\t\t\t\tthis.klass.push(css);\n\t\t}, this); // pour que ci-dessus this = this\n\n\t\treturn this.update();\n\t};\n\n\tthis.remove = function () {\n\n\t\tArray.prototype.forEach.call(arguments, function (css) {\n\t\t\tif (typeof css != 'string')\n\t\t\t\tconsole.error('apijs.dialog.remove argument is not a string', css);\n\t\t\tif (this.klass.indexOf(css) > -1)\n\t\t\t\tthis.klass.splice(this.klass.indexOf(css), 1);\n\t\t}, this); // pour que ci-dessus this = this\n\n\t\treturn this.update();\n\t};\n\n\tthis.toggle = function (search, replace) {\n\n\t\tif ((typeof search != 'string') || (typeof replace != 'string'))\n\t\t\tconsole.error('apijs.dialog.toggle argument is not a string', search, replace);\n\n\t\tif (this.has(search))\n\t\t\tthis.remove(search);\n\t\tif (!this.has(replace))\n\t\t\tthis.add(replace);\n\n\t\treturn this.update();\n\t};\n\n\tthis.has = function () {\n\t\treturn this.klass.has(apijs.toArray(arguments)); // true if one found\n\t};\n\n\n\t// GESTION DES INTERACTIONS (private sauf actionClose)\n\n\tthis.actionClose = function (ev) {\n\n\t\t// \\\\ au lieu de \\ sinon Bad or unnecessary escaping\n\t\tif (apijs.config.slideshow.anchor && (typeof history.pushState == 'function')) {\n\t\t\tif (new RegExp('#(' + apijs.config.slideshow.ids + '[\\-\\\\.]\\\\d+[\\-\\\\.]\\\\d+)').test(self.location.href))\n\t\t\t\thistory.pushState({}, '', self.location.href.slice(0, self.location.href.indexOf('#')));\n\t\t}\n\n\t\tif (typeof ev == 'object') {\n\t\t\tif ((ev.target.getAttribute('id') === 'apijsDialog') && !apijs.dialog.has('photo', 'video', 'progress', 'waiting', 'lock'))\n\t\t\t\tapijs.dialog.clear(true);\n\t\t}\n\t\telse if (this.t1) {\n\t\t\tthis.clear(true);\n\t\t}\n\t};\n\n\tthis.onCloseBrowser = function (ev) {\n\n\t\tif (apijs.dialog.has('progress', 'waiting', 'lock')) {\n\t\t\tev.preventDefault();\n\t\t\tev.stopPropagation();\n\t\t\tev.m = apijs.i18n.translate(124);\n\t\t\tev.returnValue = ev.m; // Gecko, Trident, Chrome 34+\n\t\t\treturn ev.m; // Gecko, WebKit, Chrome\n\t\t}\n\t};\n\n\tthis.onResizeBrowser = function () {\n\n\t\tvar add, body = document.querySelector('body');\n\n\t\tadd = body.clientWidth <= (apijs.dialog.has('photo', 'video') ? 900 : 460);\n\t\tapijs.dialog[add ? 'add' : 'remove']('mobile');\n\n\t\tadd = body.clientWidth <= 300;\n\t\tapijs.dialog[add ? 'add' : 'remove']('tiny');\n\t};\n\n\tthis.onScrollBrowser = function (ev) {\n\n\t\tvar that = apijs.dialog, elem = ev.target, brk = false;\n\n\t\t// dialogues du diaporama (suivant/précédent)\n\t\tif (that.has('slideshow') && !that.has('playing') &&\n\t\t !['OPTION', 'SELECT'].has(elem.nodeName) && ['DOMMouseScroll','mousewheel','panleft','panright'].has(ev.type)) {\n\n\t\t\telem = new Date().getTime() / 1000;\n\t\t\tif ((that.scroll < 1) || (elem > (1 + that.scroll))) {\n\t\t\t\tthat.scroll = elem;\n\t\t\t\t// ev.detail > 0 si vers le bas avec Firefox\n\t\t\t\t// ev.wheelDelta < 0 si vers le bas avec Chromium/Opera/Edge...\n\t\t\t\tbrk = (ev.detail > 0) || (ev.wheelDelta < 0); // true si vers le bas\n\t\t\t\tapijs.slideshow[((ev.type === 'panleft') || brk) ? 'actionNext' : 'actionPrev']();\n\t\t\t}\n\t\t}\n\t\t// autorise éventuellement le défilement\n\t\t// recherche l'éventuel élément scrollable\n\t\telse {\n\t\t\tif (elem.nodeName === 'OPTION') {\n\t\t\t\telem = elem.parentNode;\n\t\t\t}\n\t\t\telse if (!['TEXTAREA', 'SELECT'].has(elem.nodeName)) {\n\t\t\t\twhile ((brk !== true) && (elem.nodeName !== 'HTML')) {\n\t\t\t\t\tif (elem.classList.contains('scrollable'))\n\t\t\t\t\t\tbrk = true;\n\t\t\t\t\telse\n\t\t\t\t\t\telem = elem.parentNode;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// elem = select | textarea | scrollable\n\t\t\tif (elem.nodeName !== 'HTML') {\n\t\t\t\t// ev.detail > 0 si vers le bas avec Firefox\n\t\t\t\t// ev.wheelDelta < 0 si vers le bas avec Chromium/Opera/Edge...\n\t\t\t\tbrk = (ev.detail > 0) || (ev.wheelDelta < 0); // true si vers le bas\n\t\t\t\tif ((brk && (elem.scrollTop < (elem.scrollHeight - elem.offsetHeight))) || (!brk && (elem.scrollTop > 0)))\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// empèche le défilement\n\t\tev.preventDefault();\n\t\tev.stopPropagation();\n\t};\n\n\tthis.onScrollIframe = function (ev) {\n\n\t\tvar elem = ev.target, brk;\n\t\twhile (elem.parentNode)\n\t\t\telem = elem.parentNode;\n\n\t\t// ev.detail > 0 si vers le bas avec Firefox\n\t\t// ev.wheelDelta < 0 si vers le bas avec Chromium/Opera/Edge...\n\t\tbrk = (ev.detail > 0) || (ev.wheelDelta < 0); // true si vers le bas\n\n\t\t// empèche le défilement (elem = iframe document)\n\t\tif (\n\t\t\t(brk && ((elem.defaultView.innerHeight + elem.defaultView.pageYOffset) >= (elem.body.offsetHeight - 1))) ||\n\t\t\t(!brk && (elem.defaultView.pageYOffset <= 0))\n\t\t) {\n\t\t\tev.preventDefault();\n\t\t\tev.stopPropagation();\n\t\t}\n\t};\n\n\tthis.onKey = function (ev) {\n\n\t\tvar that = apijs.dialog, elem = that.media;\n\n\t\t// dialogues d'attente et de progresssion ou tout autre dialogue verrouillé\n\t\t// ctrl + q | ctrl + w | ctrl + r | ctrl + f4 | ctrl + f5 // alt + f4 // échap | f5\n\t\tif (that.has('progress', 'waiting', 'lock')) {\n\n\t\t\tif ((ev.ctrlKey && [81, 87, 82, 115, 116].has(ev.keyCode)) || (ev.altKey && (ev.keyCode === 115)) || [27, 116].has(ev.keyCode))\n\t\t\t\tev.preventDefault();\n\t\t}\n\t\t// dialogues photo et vidéo\n\t\t// f11 (ne fonctionne plus sur Opera 74 Windows)\n\t\telse if (that.has('photo', 'video') && (ev.keyCode === 122)) {\n\t\t\tev.preventDefault();\n\t\t\tapijs.requestFullscreen(that.t1);\n\t\t}\n\t\t// dialogues photo et vidéo du diaporama\n\t\t// échap // fin // début // gauche // droite\n\t\telse if (that.has('slideshow')) {\n\n\t\t\tif (ev.keyCode === 27) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tthat.actionClose();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 35) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionLast();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 36) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionFirst();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 37) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionPrev();\n\t\t\t}\n\t\t\telse if (ev.keyCode === 39) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tapijs.slideshow.actionNext();\n\t\t\t}\n\t\t}\n\t\t// pour tous les autres\n\t\t// échap\n\t\telse if (ev.keyCode === 27) {\n\t\t\tev.preventDefault();\n\t\t\tthat.actionClose();\n\t\t}\n\n\t\t// dialogue vidéo\n\t\t// espace | p // haut | page haut // bas | page bas // + // - // m\n\t\tif (that.has('video') && !that.has('videoiframe')) {\n\n\t\t\t// espace | p\n\t\t\tif ((ev.keyCode === 32) || (ev.keyCode === 80)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\tif (elem.ended || elem.paused)\n\t\t\t\t\t\telem.play();\n\t\t\t\t\telse\n\t\t\t\t\t\telem.pause();\n\t\t\t\t}\n\t\t\t}\n\t\t\t// haut | page haut\n\t\t\telse if ((ev.keyCode === 38) || (ev.keyCode === 33)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif (([1,2].has(elem.networkState)) && (elem.duration !== Infinity) && !isNaN(elem.duration)) {\n\t\t\t\t\tif (elem.currentTime < (elem.duration - 10))\n\t\t\t\t\t\telem.currentTime += 10;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// bas | page bas\n\t\t\telse if ((ev.keyCode === 40) || (ev.keyCode === 34)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif (([1,2].has(elem.networkState)) && (elem.duration !== Infinity) && !isNaN(elem.duration)) {\n\t\t\t\t\tif (elem.currentTime > 10)\n\t\t\t\t\t\telem.currentTime -= 10;\n\t\t\t\t\telse\n\t\t\t\t\t\telem.currentTime = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// +\n\t\t\telse if (ev.keyCode === 107) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\tif (elem.muted)\n\t\t\t\t\t\telem.muted = false;\n\t\t\t\t\tif (elem.volume < 0.8)\n\t\t\t\t\t\telem.volume += 0.2;\n\t\t\t\t\telse\n\t\t\t\t\t\telem.volume = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// -\n\t\t\telse if (ev.keyCode === 109) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\tif (elem.muted)\n\t\t\t\t\t\telem.muted = false;\n\t\t\t\t\tif (elem.volume > 0.21)\n\t\t\t\t\t\telem.volume -= 0.2;\n\t\t\t\t\telse\n\t\t\t\t\t\telem.volume = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// m\n\t\t\telse if (ev.keyCode === 77) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tif ([1,2].has(elem.networkState)) {\n\t\t\t\t\telem.muted = !elem.muted; // inverse\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// défilement de la page pour tous (renvoi sur actionScrollBrowser)\n\t\t// espace | page haut | page bas | fin | début | haut | bas\n\t\tif ([32, 33, 34, 35, 36, 38, 40].has(ev.keyCode)) {\n\n\t\t\t// empèche le défilement\n\t\t\tif (!ev.target || (!['INPUT','TEXTAREA','OPTION','SELECT'].has(ev.target.nodeName) && !ev.target.classList.contains('scrollable'))) {\n\t\t\t\tev.preventDefault();\n\t\t\t\tev.stopPropagation();\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.onFullscreen = function (ev) {\n\n\t\tvar res = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;\n\t\tif (ev) apijs.log('dialog:onFullscreen:' + (res ? 'in' : 'out'));\n\n\t\tapijs.dialog[res ? 'add' : 'remove']('fullscreen');\n\t};\n\n\tthis.onIframeLoad = function (elem) { // todo\n\n\t\telem.removeAttribute('class');\n\t\tapijs.dialog.remove('loading');\n\n\t\telem.contentWindow.document.addEventListener('keydown', window.parent.apijs.dialog.onKey);\n\t\telem.contentWindow.addEventListener('DOMMouseScroll', window.parent.apijs.dialog.onScrollIframe, { passive: false });\n\t\telem.contentWindow.addEventListener('mousewheel', window.parent.apijs.dialog.onScrollIframe, { passive: false });\n\t\telem.contentWindow.addEventListener('touchmove', window.parent.apijs.dialog.onScrollIframe, { passive: false });\n\t};\n\n\tthis.onMediaLoad = function (ev) { // todo\n\n\t\tvar that = apijs.dialog, media = that.media, src, elem, elems;\n\t\tif (ev && ev.target) {\n\t\t\tsrc = ev.target.currentSrc || ev.target.src;\n\t\t\tapijs.log('dialog:onMediaLoad:' + ev.type + ' ' + (src ? src.slice(src.lastIndexOf('/') + 1) : ''));\n\t\t}\n\n\t\tif (media && ['load', 'durationchange'].has(ev.type)) {\n\t\t\tthat.remove('loading', 'error');\n\t\t\tmedia.style.visibility = 'visible';\n\t\t\tif (!media.hasAttribute('src') && (media.nodeName === 'IMG'))\n\t\t\t\tmedia.setAttribute('src', media.imageLoader.src);\n\t\t}\n\t\telse if (media && (ev.type === 'error')) {\n\t\t\tthat.toggle('loading', 'error');\n\t\t\tmedia.removeAttribute('style');\n\t\t\t// player vidéo (désactive l'option et active la suivante)\n\t\t\telem = apijs.html('.tracks.video select');\n\t\t\tif (elem && ev && ev.target) {\n\t\t\t\telems = elem.querySelectorAll('option');\n\t\t\t\tif ((elems.length > 0) && (elem.value.length > 0)) {\n\t\t\t\t\telems[elem.value].setAttribute('disabled', 'disabled');\n\t\t\t\t\telem.selectedIndex += 1;\n\t\t\t\t\t// charge la vidéo suivante (si erreur au clic sur le select)\n\t\t\t\t\tif ((ev.target.nodeName === 'VIDEO') && (elem.value !== ''))\n\t\t\t\t\t\tmedia.videoPlayer.actionVideo(elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.actionConfirm = function () { // todo\n\n\t\t// vérifie le dialogue d'options\n\t\t// arrêt du traitement si c'est pas bon\n\t\tif (this.has('options')) {\n\t\t\tif (this.callback(false, this.args) !== true)\n\t\t\t\treturn false;\n\t\t}\n\n\t\t// verrouille le dialogue et affiche le loader\n\t\tthis.add('lock', 'loading');\n\t\tthis.htmlSvgLoader(false);\n\n\t\t// masque les boutons et le texte du dialogue\n\t\tapijs.html('div.btns').style.visibility = 'hidden';\n\t\tapijs.html('div.bbcode').style.visibility = 'hidden';\n\n\t\t// appelle la fonction de rappel\n\t\t// ne déverrouille pas le dialogue\n\t\tself.setTimeout(function () {\n\t\t\tif ((this.t2) && (this.t2.nodeName === 'FORM'))\n\t\t\t\tthis.callback(this.t2.getAttribute('action'), this.args);\n\t\t\telse if (this.t2)\n\t\t\t\tthis.callback(this.args);\n\t\t}.bind(this), 12); // pour que ci-dessus this = this\n\n\t\treturn false; // très important\n\t};\n\n\n\t// GESTION DES CONTENEURS (private return this|boolean)\n\n\tthis.init = function (type, icon, isLocked) { // todo\n\n\t\tisLocked = (isLocked === true);\n\t\tif (typeof icon == 'string') {\n\t\t\ticon = icon.replace(this.ft, '').trim();\n\t\t\ticon = (icon.length > 0) ? (isLocked ? icon + ' lock' : icon) : (isLocked ? 'lock' : null);\n\t\t}\n\t\telse if (isLocked) {\n\t\t\ticon = 'lock';\n\t\t}\n\n\t\t// préparation\n\t\tif (this.t0)\n\t\t\tthis.clear(false);\n\n\t\t// css\n\t\tthis.klass.push('start');\n\t\tthis.klass.push(type);\n\n\t\tif (self.matchMedia('prefers-reduced-motion:reduce').matches)\n\t\t\tthis.klass.push('reduce');\n\n\t\tif (typeof icon == 'string')\n\t\t\tthis.klass = this.klass.concat(icon.split(' '));\n\n\t\t// création du fragment\n\t\tthis.t0 = document.createDocumentFragment();\n\n\t\t// surveillance des touches et du navigateur\n\t\tdocument.addEventListener('keydown', this.onKey);\n\t\tself.addEventListener('beforeunload', this.onCloseBrowser);\n\t\tself.addEventListener('DOMMouseScroll', this.onScrollBrowser, { passive: false });\n\t\tself.addEventListener('mousewheel', this.onScrollBrowser, { passive: false });\n\t\tself.addEventListener('touchmove', this.onScrollBrowser, { passive: false });\n\t\tself.addEventListener('resize', this.onResizeBrowser);\n\n\t\t// restriction de la navigation\n\t\tif (apijs.config.dialog.restrictNavigation)\n\t\t\tdocument.querySelectorAll(this.ti).forEach(function (elem) { elem.setAttribute('tabindex', '-1'); });\n\n\t\treturn this;\n\t};\n\n\tthis.show = function (focus) { // todo\n\n\t\t// design\n\t\tthis.onResizeBrowser();\n\t\tthis.onFullscreen();\n\n\t\tif ((this.height > 0) && !this.has('photo', 'video'))\n\t\t\tthis.t2.style.minHeight = this.height + 'px';\n\n\t\t// affichage du dialogue sans/sans/avec transitions CSS\n\t\tvar old = apijs.html('#Dialog');\n\t\tif (old) {\n\t\t\tthis.toggle('start', 'ready');\n\t\t\tthis.t1 = old;\n\t\t\tthis.t1.appendChild(this.t0.firstChild.firstChild);\n\t\t\tthis.t1.setAttribute('class', this.t2.getAttribute('class'));\n\t\t}\n\t\telse if (this.has('notransition')) {\n\t\t\tthis.toggle('start', 'ready');\n\t\t\tdocument.querySelector('body').appendChild(this.t0);\n\t\t}\n\t\telse {\n\t\t\tdocument.querySelector('body').appendChild(this.t0);\n\t\t\tself.setTimeout(function () { apijs.dialog.toggle('start', 'ready'); }, 12);\n\t\t}\n\n\t\t// fermeture des popups au clic\n\t\tif (apijs.config.dialog.closeOnClick && !this.has('progress', 'waiting', 'lock'))\n\t\t\tdocument.addEventListener('click', this.actionClose);\n\n\t\t// passage en plein écran\n\t\tif (this.has('photo', 'video')) {\n\n\t\t\tif (document.webkitFullscreenEnabled)\n\t\t\t\tdocument.addEventListener('webkitfullscreenchange', this.onFullscreen);\n\t\t\telse if (document.fullscreenEnabled)\n\t\t\t\tdocument.addEventListener('fullscreenchange', this.onFullscreen);\n\t\t\telse if (document.mozFullScreenEnabled)\n\t\t\t\tdocument.addEventListener('mozfullscreenchange', this.onFullscreen);\n\t\t}\n\n\t\t// auto-focus\n\t\tif (focus === true)\n\t\t\tself.setTimeout(function () { apijs.html('input:not([readonly]),textarea:not([readonly]),select:not([disabled])').focus(); }, 12);\n\t\telse if (typeof focus == 'string')\n\t\t\tapijs.html(focus).focus();\n\n\t\treturn true;\n\t};\n\n\tthis.clear = function (isAll) { // todo\n\n\t\tif (isAll && this.xhr) {\n\t\t\tthis.callback = null; // très important\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\t// surveillance des touches et du navigateur (depuis initDialog)\n\t\tdocument.removeEventListener('keydown', this.onKey);\n\t\tself.removeEventListener('beforeunload', this.onCloseBrowser);\n\t\tself.removeEventListener('DOMMouseScroll', this.onScrollBrowser, { passive: false });\n\t\tself.removeEventListener('mousewheel', this.onScrollBrowser, { passive: false });\n\t\tself.removeEventListener('touchmove', this.onScrollBrowser, { passive: false });\n\t\tself.removeEventListener('resize', this.onResizeBrowser);\n\n\t\t// restriction de la navigation (depuis initDialog)\n\t\tif (apijs.config.dialog.restrictNavigation)\n\t\t\tdocument.querySelectorAll(this.ti).forEach(function (elem) { elem.removeAttribute('tabindex'); });\n\n\t\t// fermeture des popups au clic (depuis showDialog)\n\t\tif (apijs.config.dialog.closeOnClick)\n\t\t\tdocument.removeEventListener('click', this.actionClose);\n\n\t\t// spécial\n\t\tif (this.has('photo', 'video')) {\n\n\t\t\t// pour ne pas déclencher les fonctions\n\t\t\t// supprime tous les ontruc et les src\n\t\t\tif (this.has('video') && !this.has('videoiframe')) {\n\t\t\t\tthis.t2.querySelectorAll('video, source, track').forEach(function (elem) {\n\t\t\t\t\tfor (var name in elem) {\n\t\t\t\t\t\tif (name.indexOf('on') === 0)\n\t\t\t\t\t\t\telem[name] = null;\n\t\t\t\t\t}\n\t\t\t\t\telem.removeAttribute('src');\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.media.videoPlayer = null;\n\t\t\tthis.media.imageLoader = null;\n\n\t\t\t// passage en plein écran (depuis showDialog)\n\t\t\tif (document.webkitFullscreenEnabled)\n\t\t\t\tdocument.removeEventListener('webkitfullscreenchange', this.onFullscreen);\n\t\t\telse if (document.fullscreenEnabled)\n\t\t\t\tdocument.removeEventListener('fullscreenchange', this.onFullscreen);\n\t\t\telse if (document.mozFullScreenEnabled)\n\t\t\t\tdocument.removeEventListener('mozfullscreenchange', this.onFullscreen);\n\t\t}\n\t\t// mémorise la hauteur du dialogue\n\t\telse {\n\t\t\tthis.height = parseFloat(self.getComputedStyle(this.t2).height);\n\t\t}\n\n\t\t// supprime le dialogue\n\t\tif (isAll) {\n\t\t\tthis.toggle('ready', 'end');\n\t\t\tthis.t1.remove();\n\t\t}\n\t\telse {\n\t\t\twhile (this.t1.firstChild)\n\t\t\t\tthis.t1.firstChild.remove();\n\t\t}\n\n\t\t// réinitialise toutes les variables (sauf ft/ti/ns)\n\t\tthis.klass = [];\n\t\tif (isAll) {\n\t\t\tthis.height = 0;\n\t\t\tthis.scroll = 0; // time\n\t\t\tthis.callback = null;\n\t\t\tthis.args = null;\n\t\t\tthis.xhr = null;\n\t\t}\n\t\tthis.media = null;\n\t\tthis.t0 = null; // fragment\n\t\tthis.t1 = null; // div id=apijsDialog\n\t\tthis.t2 = null; // div/form id=apijsBox\n\t\tthis.a = null;\n\t\tthis.b = null;\n\t\tthis.c = null;\n\t\tthis.d = null;\n\n\t\treturn true;\n\t};\n\n\n\t// GÉNÉRATION DES ÉLÉMENTS (private return this)\n\n\tthis.htmlParent = function (action, submit, drag) {\n\n\t\tthis.t1 = document.createElement('div');\n\t\tthis.t1.setAttribute('id', 'apijsDialog');\n\n\t\tif (typeof drag == 'string') {\n\n\t\t\tthis.t1.setAttribute('ondragenter', drag);\n\t\t\tthis.t1.setAttribute('ondragleave', drag);\n\t\t\tthis.t1.setAttribute('ondragover', drag);\n\t\t\tthis.t1.setAttribute('ondrop', drag);\n\n\t\t\tthis.a = document.createElement('p');\n\t\t\tthis.a.setAttribute('class', 'drag');\n\t\t\tthis.a.appendChild(apijs.i18n.translateNode(127));\n\t\t\tthis.t1.appendChild(this.a);\n\t\t}\n\n\t\tif (typeof action == 'string') {\n\t\t\tthis.t2 = document.createElement('form');\n\t\t\tthis.t2.setAttribute('action', action);\n\t\t\tthis.t2.setAttribute('method', 'post');\n\t\t\tthis.t2.setAttribute('enctype', 'multipart/form-data');\n\t\t\tthis.t2.setAttribute('onsubmit', 'return ' + submit);\n\t\t}\n\t\telse {\n\t\t\tthis.t2 = document.createElement('div');\n\t\t}\n\n\t\tthis.t2.setAttribute('id', 'apijsBox');\n\t\tthis.t1.appendChild(this.t2);\n\t\tthis.t0.appendChild(this.t1);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlContent = function (title, text) {\n\n\t\tif (title.length > 0) {\n\t\t\tthis.a = document.createElement('h1');\n\t\t\tthis.a.innerHTML = title.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\\[/g, '<').replace(/]/g, '>');\n\t\t\tthis.t2.appendChild(this.a);\n\t\t}\n\n\t\tif (text.length > 0) {\n\t\t\tthis.a = document.createElement('div');\n\t\t\tthis.a.setAttribute('class', 'bbcode');\n\t\t\tif (text[0] !== '[') text = '[p]' + text + '[/p]';\n\t\t\tthis.a.innerHTML = text.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\\[/g, '<').replace(/]/g, '>');\n\t\t\tthis.a.querySelectorAll('a.popup').forEach(function (elem) { elem.addEventListener('click', apijs.openTab); });\n\t\t\tthis.t2.appendChild(this.a);\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnOk = function () {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns');\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('class', 'confirm');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.dialog.actionClose();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(102));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnConfirm = function (type, click) {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns');\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', type);\n\t\t\tthis.b.setAttribute('class', 'confirm');\n\t\t\tif (type !== 'submit') this.b.setAttribute('onclick', click);\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(104));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('class', 'cancel');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.dialog.actionClose();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(103));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnNavigation = function () {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'navigation noplaying');\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('disabled', 'disabled');\n\t\t\tthis.b.setAttribute('class', 'prev');\n\t\t\tthis.b.setAttribute('id', 'apijsPrev');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.slideshow.actionPrev();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\t//this.c.appendChild(apijs.i18n.translateNode(106));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('disabled', 'disabled');\n\t\t\tthis.b.setAttribute('class', 'next');\n\t\t\tthis.b.setAttribute('id', 'apijsNext');\n\t\t\tthis.b.setAttribute('onclick', 'apijs.slideshow.actionNext();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\t//this.c.appendChild(apijs.i18n.translateNode(107));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlBtnClose = function (close) {\n\n\t\tif (close !== false) {\n\n\t\t\tthis.a = document.createElement('div');\n\t\t\tthis.a.setAttribute('class', 'close noplaying');\n\n\t\t\t\tthis.b = document.createElement('button');\n\t\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\t\tthis.b.setAttribute('class', 'close');\n\t\t\t\tthis.b.setAttribute('onclick', 'apijs.dialog.actionClose();');\n\n\t\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(105));\n\n\t\t\t\tthis.b.appendChild(this.c);\n\n\t\t\tthis.a.appendChild(this.b);\n\t\t\tthis.t2.appendChild(this.a);\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.htmlUpload = function (input, isMultiple) {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns upload');\n\n\t\t\tthis.b = document.createElement('input');\n\t\t\tthis.b.setAttribute('type', 'file');\n\t\t\tthis.b.setAttribute('name', input);\n\t\t\tthis.b.setAttribute('id', 'apijsFile');\n\t\t\tif (isMultiple) this.b.setAttribute('multiple', 'multiple');\n\t\t\tthis.b.setAttribute('onchange', 'apijs.upload.actionChoose(this);');\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('button');\n\t\t\tthis.b.setAttribute('type', 'button');\n\t\t\tthis.b.setAttribute('class', 'browse');\n\t\t\tthis.b.setAttribute('onclick', 'this.previousSibling.click();');\n\n\t\t\t\tthis.c = document.createElement('span');\n\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(isMultiple ? 109 : 108));\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('div');\n\t\t\tthis.b.setAttribute('class', 'filenames scrollable');\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlSvgProgress = function () {\n\n\t\tthis.a = document.createElement('span');\n\t\tthis.a.setAttribute('class', 'info');\n\t\tthis.t2.appendChild(this.a);\n\n\t\tthis.a = document.createElement('svg');\n\t\tthis.a.setAttribute('id', 'apijsProgress');\n\n\t\t\tthis.b = document.createElement('rect');\n\t\t\tthis.b.setAttribute('class', 'auto');\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlSvgLoader = function (isDelayed) {\n\n\t\tthis.a = document.createElementNS(this.ns, 'svg');\n\t\tthis.a.setAttribute('class', 'loader');\n\n\t\t\tthis.b = document.createElementNS(this.ns, 'path');\n\t\t\tif (isDelayed !== false) this.b.setAttribute('style', 'opacity:0;');\n\t\t\tthis.b.setAttribute('d', 'M75.4 126.63a11.43 11.43 0 0 1-2.1-22.65 40.9 40.9 0 0 0 30.5-30.6 11.4 11.4 0 1 1 22.27 4.87h.02a63.77 63.77 0 0 1-47.8 48.05v-.02a11.38 11.38 0 0 1-2.93.37z');\n\n\t\t\t\tthis.c = document.createElementNS(this.ns, 'animateTransform');\n\t\t\t\tthis.c.setAttribute('attributeName', 'transform');\n\t\t\t\tthis.c.setAttribute('type', 'rotate');\n\t\t\t\tthis.c.setAttribute('from', '0 64 64');\n\t\t\t\tthis.c.setAttribute('to', '360 64 64');\n\t\t\t\tthis.c.setAttribute('dur', '5s');\n\t\t\t\tthis.c.setAttribute('repeatCount', 'indefinite');\n\n\t\t\tthis.b.appendChild(this.c);\n\n\t\t\t\tthis.c = document.createElementNS(this.ns, 'animate');\n\t\t\t\tthis.c.setAttribute('attributeName', 'opacity');\n\t\t\t\tthis.c.setAttribute('to', '1');\n\t\t\t\tthis.c.setAttribute('dur', '0.01s');\n\t\t\t\tthis.c.setAttribute('begin', '1s');\n\t\t\t\tthis.c.setAttribute('fill', 'freeze');\n\n\t\t\tif (isDelayed !== false) this.b.appendChild(this.c);\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlMedia = function (url, name, date, legend) {\n\n\t\tthis.a = document.createElement('dl');\n\t\tthis.a.setAttribute('class', 'media');\n\n\t\t\tthis.b = document.createElement('dt');\n\n\t\t\tif (this.has('photo')) {\n\t\t\t\tthis.media = document.createElement('img');\n\t\t\t\tthis.media.setAttribute('alt', legend.replace('\"', ''));\n\t\t\t}\n\t\t\telse if (url.indexOf('iframe') > 0) {\n\t\t\t\tthis.media = document.createElement('iframe');\n\t\t\t\tthis.media.setAttribute('type', 'text/html');\n\t\t\t\tthis.media.setAttribute('scrolling', 'no');\n\t\t\t\tthis.media.setAttribute('src', url);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.media = document.createElement('video');\n\t\t\t\tthis.media.setAttribute('controls', 'controls');\n\t\t\t\tthis.media.setAttribute('preload', 'metadata');\n\t\t\t}\n\n\t\t\tthis.media.setAttribute('id', 'apijsMedia');\n\t\t\tthis.b.appendChild(this.media);\n\n\t\tthis.a.appendChild(this.b);\n\n\t\t\tthis.b = document.createElement('dd');\n\t\t\tthis.b.setAttribute('class', 'nomobile noplaying');\n\n\t\t\tif ((name !== 'false') || (date !== 'false')) {\n\n\t\t\t\tvar fileid = url.slice(url.lastIndexOf('/') + 1);\n\t\t\t\tthis.c = document.createElement('span');\n\n\t\t\t\t// name + date\n\t\t\t\tif ((name !== 'false') && (name !== 'auto') && (date !== 'false'))\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(name + ' (' + date + ') '));\n\t\t\t\t// name\n\t\t\t\telse if ((name !== 'false') && (name !== 'auto'))\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(name + ' '));\n\t\t\t\t// auto name + date\n\t\t\t\telse if ((name === 'auto') && (date !== 'false'))\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(fileid + ' (' + date + ') '));\n\t\t\t\t// auto name\n\t\t\t\telse if (name === 'auto')\n\t\t\t\t\tthis.c.appendChild(document.createTextNode(fileid + ' '));\n\t\t\t\t// date\n\t\t\t\telse if (date !== 'false')\n\t\t\t\t\tthis.c.appendChild(document.createTextNode('(' + date + ') '));\n\n\t\t\t\tthis.b.appendChild(this.c);\n\t\t\t}\n\n\t\t\tthis.b.appendChild(document.createTextNode(legend));\n\n\t\tthis.a.appendChild(this.b);\n\t\tthis.t2.appendChild(this.a);\n\n\t\t// au choix : photo / vidéo avec iframe / vidéo avec lecteur / vidéo simple\n\t\t// lecteur créé v5.2 / supprimé v5.3 / refait v6.0 / extrait v6.6\n\t\tif (this.has('photo')) {\n\t\t\tthis.media.imageLoader = new Image();\n\t\t\tthis.media.imageLoader.src = url;\n\t\t\tthis.media.imageLoader.onload = this.onMediaLoad;\n\t\t\tthis.media.imageLoader.onerror = this.onMediaLoad;\n\t\t}\n\t\telse if (url.indexOf('iframe') > 0) {\n\t\t\tthis.media.onload = function (ev) {\n\t\t\t\tthis.onIframeLoad(this.media);\n\t\t\t\tthis.onMediaLoad(ev);\n\t\t\t}.bind(this); // pour que ci-dessus this = this\n\t\t\tthis.add('videoiframe');\n\t\t}\n\t\telse if (apijs.startPlayer(this.media, url)) {\n\t\t\tthis.add('apijsvideoplayer');\n\t\t}\n\t\telse {\n\t\t\tthis.c = document.createElement('source');\n\t\t\tthis.c.setAttribute('src', url);\n\t\t\tthis.c.onerror = this.onMediaLoad;\n\t\t\tthis.media.appendChild(this.c);\n\t\t\tthis.media.ondurationchange = this.onMediaLoad;\n\t\t\tthis.media.onerror = this.onMediaLoad;\n\t\t\tthis.add('videosource');\n\t\t}\n\n\t\treturn this;\n\t};\n\n\tthis.htmlHelp = function (isSlideshow, isVideo) {\n\n\t\tvar items, item, keys = [\n\t\t\tisSlideshow ? ['start', 149, 141] : [], // début/fin\n\t\t\tisSlideshow ? ['left', 'right', 142] : [],\n\t\t\tisVideo ? ['bottom', 'topk', 144] : [],\n\t\t\tisVideo ? ['minus', 'plus', 145] : [],\n\t\t\tisVideo ? ['M', 146] : [],\n\t\t\tisVideo ? ['P', 143] : [],\n\t\t\t['F11', 147],\n\t\t\t[150, 148] // échap\n\t\t];\n\n\t\tthis.a = document.createElement('ul');\n\t\tthis.a.setAttribute('class', 'kbd nomobile nofullscreen');\n\n\t\twhile (items = keys.shift()) {\n\n\t\t\tif (items.length > 0) {\n\n\t\t\t\tthis.b = document.createElement('li');\n\n\t\t\t\twhile (item = items.shift()) {\n\t\t\t\t\tif (items.length > 0) {\n\t\t\t\t\t\tthis.c = document.createElement('kbd');\n\t\t\t\t\t\tif (['M', 'P', 'F11'].has(item))\n\t\t\t\t\t\t\tthis.c.appendChild(document.createTextNode(item));\n\t\t\t\t\t\telse if (typeof item == 'string')\n\t\t\t\t\t\t\tthis.c.setAttribute('class', item);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthis.c.appendChild(apijs.i18n.translateNode(item));\n\t\t\t\t\t\tthis.b.appendChild(this.c);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.b.appendChild(apijs.i18n.translateNode(item));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.a.appendChild(this.b);\n\t\t\t}\n\t\t}\n\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n\n\tthis.htmlIframe = function (url) {\n\n\t\tthis.a = document.createElement('iframe');\n\t\tthis.a.setAttribute('src', url);\n\t\tthis.a.setAttribute('class', 'loading');\n\t\tthis.a.setAttribute('onload', 'apijs.dialog.onIframeLoad(this);');\n\n\t\tthis.t2.appendChild(this.a);\n\n\t\treturn this;\n\t};\n};","/**\n * Created D/11/01/2015\n * Updated L/24/05/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.player = function (video, url) {\n\n\t\"use strict\";\n\tthis.video = video;\n\tthis.stalled = false;\n\tthis.subload = false;\n\n\n\t// GÉNÉRATION DES ÉLÉMENTS (private return this|void|domelement)\n\n\tthis.autoRun = function (video, url) { // todo\n\n\t\tvideo.removeAttribute('src');\n\t\tvideo.removeAttribute('data-src');\n\t\tvideo.removeAttribute('controls');\n\t\tvideo.classList.add('apijsplayer');\n\n\t\t// https://developer.mozilla.org/fr/docs/Web/Guide/DOM/Events/evenement_medias\n\t\tvideo.onloadedmetadata = function (ev) {\n\t\t\tthis.stalled = false;\n\t\t\tthis.onTimeupdate(ev);\n\t\t\tthis.onProgress(ev);\n\t\t\tthis.onVideotrack();\n\t\t\tthis.onAudiotrack();\n\t\t}.bind(this);\n\t\tvideo.onstalled = function (ev) {\n\t\t\tthis.stalled = true;\n\t\t\tthis.onWaiting(ev);\n\t\t}.bind(this);\n\t\tvideo.onplaying = this.onPlay.bind(this);\n\t\tvideo.onpause = this.onPlay.bind(this);\n\t\tvideo.onended = this.onPlay.bind(this);\n\t\tvideo.onprogress = this.onProgress.bind(this);\n\t\tvideo.ontimeupdate = this.onTimeupdate.bind(this);\n\t\tvideo.onseeking = this.onTimeupdate.bind(this);\n\t\tvideo.onseeked = this.onWaiting.bind(this);\n\t\tvideo.onwaiting = this.onWaiting.bind(this);\n\t\tvideo.onloadstart = this.onWaiting.bind(this);\n\t\tvideo.oncanplay = this.onWaiting.bind(this);\n\t\tvideo.onclick = this.actionPlay.bind(this);\n\t\tvideo.onvolumechange = this.actionVolume.bind(this);\n\t\tvideo.ondurationchange = apijs.dialog.onMediaLoad;\n\t\tvideo.onerror = apijs.dialog.onMediaLoad;\n\n\t\t// ajoute les contrôles\n\t\tvideo.parentNode.appendChild(this.htmlSvgPlayer());\n\n\t\t// charge les sources\n\t\tif (url.indexOf('m3u') < 0) {\n\t\t\tvideo.appendChild(this.htmlSource(url));\n\t\t\treturn this;\n\t\t}\n\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', url, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tself.dispatchEvent(new CustomEvent('apijsajaxresponse', { detail: { from: 'apijsplayer.init', xhr: xhr } }));\n\t\t\t\tif (!video || (video.childNodes.length > 0)) {\n\t\t\t\t\txhr.abort();\n\t\t\t\t}\n\t\t\t\telse if ([0, 200].has(xhr.status)) {\n\n\t\t\t\t\tvar url, txt, nbv = 0, nbt = 0, data = xhr.responseText.trim().split(\"\\n\");\n\t\t\t\t\twhile (typeof (url = data.shift()) == 'string') {\n\n\t\t\t\t\t\t// #APIJS#attr|name|value\n\t\t\t\t\t\tif (url.indexOf('#APIJS#attr') === 0) {\n\t\t\t\t\t\t\ttxt = url.split('|');\n\t\t\t\t\t\t\tvideo.setAttribute(txt[1], txt[2]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// #APIJS#track|kind|label|srclang|src\n\t\t\t\t\t\telse if (url.indexOf('#APIJS#track|subtitles') === 0) {\n\t\t\t\t\t\t\ttxt = url.split('|');\n\t\t\t\t\t\t\tthis.html('.tracks.texttrack select').appendChild(this.htmlOption(nbt++, txt[3] + ' - ' + txt[2]));\n\t\t\t\t\t\t\tvideo.appendChild(this.htmlTrack(txt));\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// #EXTINF: Text\n\t\t\t\t\t\telse if (url.indexOf('#EXTINF') === 0) {\n\t\t\t\t\t\t\ttxt = url.replace(/#EXTINF:[0-9]+,/, '');\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// http\n\t\t\t\t\t\telse if ((url.length > 5) && (url[0] !== '#')) {\n\t\t\t\t\t\t\tthis.html('.tracks.video select').appendChild(this.htmlOption(nbv++, (typeof txt == 'string') ? txt : nbv));\n\t\t\t\t\t\t\tvideo.appendChild(this.htmlSource(url));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.updateSelect('video', nbv);\n\t\t\t\t\tif (typeof video.textTracks == 'object')\n\t\t\t\t\t\tthis.updateSelect('texttrack', video.textTracks.length || nbt);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tapijs.dialog.onMediaLoad({ type: 'error' });\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(this);\n\t\txhr.send();\n\n\t\treturn this;\n\t};\n\n\tthis.updateSelect = function (css, total) {\n\n\t\t// s'il y une seule option on affiche pas, sauf pour les sous titres\n\t\tvar adjust = (css === 'texttrack') ? 1 : 0;\n\t\tif (total > adjust) {\n\t\t\tthis.html('.tracks.' + css).removeAttribute('style');\n\t\t\tthis.html('.tracks.' + css + ' em').textContent = '(' + total + ')';\n\t\t\tthis.html('.tracks.' + css + ' select').setAttribute('size', (total < 10) ? total + adjust : 10);\n\t\t}\n\t\telse {\n\t\t\tthis.html('.tracks.' + css).setAttribute('style', 'display:none;');\n\t\t\tthis.html('.tracks.' + css + ' select').innerHTML = '';\n\t\t}\n\t};\n\n\tthis.html = function (selector) {\n\t\treturn this.video.parentNode.querySelector(selector);\n\t};\n\n\n\t// GESTION DES ÉVÉNEMENTS (private return void)\n\n\tthis.onVideotrack = function () {\n\n\t\tvar tracks = this.video.videoTracks, select = this.html('.tracks.videotrack select'), lang = apijs.config.lang, auto = -1, idx;\n\n\t\tif (typeof tracks == 'object') {\n\n\t\t\t// si la vidéo contient plusieurs pistes vidéo\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack\n\t\t\tif (tracks.length > 1) {\n\t\t\t\tfor (idx = 0; idx < tracks.length; idx++) {\n\t\t\t\t\tif (tracks[idx].language && (tracks[idx].language.toLowerCase().replace(/[-_]/g, '').indexOf(lang) == 0))\n\t\t\t\t\t\tauto = (auto < 0) ? idx : auto;\n\t\t\t\t\tselect.appendChild(this.htmlOption(idx, tracks[idx]));\n\t\t\t\t}\n\t\t\t\tthis.updateSelect('videotrack', tracks.length);\n\t\t\t}\n\n\t\t\t// sélectionne éventuellement la piste dans la bonne langue\n\t\t\tselect.selectedIndex = Math.max(0, auto);\n\t\t\tif (auto >= 0)\n\t\t\t\tthis.actionVideotrack(auto);\n\t\t}\n\t};\n\n\tthis.onAudiotrack = function () {\n\n\t\tvar tracks = this.video.audioTracks, select = this.html('.tracks.audiotrack select'), lang = apijs.config.lang, auto = -1, idx;\n\n\t\tif (typeof tracks == 'object') {\n\n\t\t\t// si la vidéo contient plusieurs pistes audio\n\t\t\t// https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack\n\t\t\tif (tracks.length > 1) {\n\t\t\t\tfor (idx = 0; idx < tracks.length; idx++) {\n\t\t\t\t\tif (tracks[idx].language && (tracks[idx].language.toLowerCase().replace(/[-_]/g, '').indexOf(lang) == 0))\n\t\t\t\t\t\tauto = (auto < 0) ? idx : auto;\n\t\t\t\t\tselect.appendChild(this.htmlOption(idx, tracks[idx]));\n\t\t\t\t}\n\t\t\t\tthis.updateSelect('audiotrack', tracks.length);\n\t\t\t}\n\n\t\t\t// sélectionne éventuellement la piste dans la bonne langue\n\t\t\tselect.selectedIndex = Math.max(0, auto);\n\t\t\tif (auto >= 0)\n\t\t\t\tthis.actionAudiotrack(auto);\n\t\t}\n\t};\n\n\tthis.onTimeupdate = function (ev) {\n\n\t\tvar time = this.video.currentTime, duration = this.video.duration, text = '--:--', hh, mm, ss;\n\n\t\tif (!isNaN(time) && (duration !== Infinity) && !isNaN(duration)) {\n\n\t\t\thh = Math.floor(time / 3600);\n\t\t\tmm = Math.floor((time % 3600) / 60);\n\t\t\tss = Math.floor(time % 60);\n\t\t\tif (ss < 10) ss = '0' + ss;\n\t\t\tif (mm < 10) mm = '0' + mm;\n\n\t\t\thh = (hh > 0) ? hh + ':' : '';\n\t\t\ttext = hh + mm + ':' + ss;\n\n\t\t\thh = Math.floor(duration / 3600);\n\t\t\tmm = Math.floor((duration % 3600) / 60);\n\t\t\tss = Math.floor(duration % 60);\n\t\t\tif (ss < 10) ss = '0' + ss;\n\t\t\tif (mm < 10) mm = '0' + mm;\n\n\t\t\thh = (hh > 0) ? hh + ':' : '';\n\t\t\ttext += ' / ' + hh + mm + ':' + ss;\n\n\t\t\tthis.html('svg.bar rect').style.width = (time / duration * 100) + '%';\n\t\t}\n\n\t\tthis.html('span.time').textContent = text;\n\n\t\t// loader stalled sauf par les tracks\n\t\tif (this.stalled && !this.subload) {\n\t\t\tthis.stalled = false;\n\t\t\tthis.onWaiting(ev);\n\t\t}\n\t};\n\n\tthis.onProgress = function () {\n\n\t\tvar video = this.video, elem = this.html('svg.bar'), idx = video.buffered.length, width, buffer;\n\n\t\tif ((idx > 0) && (video.duration !== Infinity) && !isNaN(video.duration)) {\n\n\t\t\telem.querySelectorAll('.buffer').forEach(function (node) { node.remove(); });\n\t\t\twhile (idx-- > 0) {\n\n\t\t\t\tbuffer = document.createElement('rect');\n\t\t\t\tbuffer.setAttribute('class', 'buffer');\n\n\t\t\t\twidth = (video.buffered.end(idx) - video.buffered.start(idx)) / video.duration * 100;\n\t\t\t\tif (width > 99.8)\n\t\t\t\t\tbuffer.setAttribute('style', 'left:0%; width:100%;');\n\t\t\t\telse\n\t\t\t\t\tbuffer.setAttribute('style', 'left:' + (video.buffered.start(idx) / video.duration * 100) + '%; width:' + width + '%;');\n\n\t\t\t\telem.appendChild(buffer);\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.onPlay = function () { // todo\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tif (this.video.paused) {\n\t\t\t\tthis.html('span.play').textContent = '\\uE810';\n\t\t\t\t// via un dialogue ou en direct\n\t\t\t\tif (apijs.dialog.t1)\n\t\t\t\t\tapijs.dialog.remove('playing');\n\t\t\t\telse\n\t\t\t\t\tthis.video.parentNode.classList.remove('playing');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.html('span.play').textContent = '\\uE811';\n\t\t\t\t// via un dialogue ou en direct\n\t\t\t\tif (apijs.dialog.t1)\n\t\t\t\t\tapijs.dialog.add('playing');\n\t\t\t\telse\n\t\t\t\t\tthis.video.parentNode.classList.add('playing');\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.onWaiting = function (ev) { // todo\n\t\tapijs.log('player:video:onWaiting:' + ev.type + ' stalled:' + this.stalled + '/subload:' + this.subload);\n\t\tapijs.dialog[['loadstart', 'waiting', 'seeking', 'stalled'].has(ev.type) ? 'add' : 'remove']('loading');\n\t};\n\n\n\t// GESTION DES INTERACTIONS (private return void)\n\n\tthis.actionPlay = function () {\n\n\t\tvar video = this.video;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(video.networkState)) {\n\t\t\tif (video.ended || video.paused)\n\t\t\t\tvideo.play();\n\t\t\telse\n\t\t\t\tvideo.pause();\n\t\t}\n\t};\n\n\tthis.actionVolume = function (ev) {\n\n\t\tvar video = this.video, elem = this.html('svg.vol'), width = elem.offsetWidth, value = 0;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(video.networkState)) {\n\n\t\t\tif ((typeof ev == 'object') && !isNaN(ev.clientX)) {\n\n\t\t\t\tdo { value += elem.offsetLeft; }\n\t\t\t\twhile (elem = elem.offsetParent);\n\n\t\t\t\tvalue = ((ev.clientX - value) * 100 / width) / 100;\n\t\t\t\tvalue = (value <= 0.1) ? 0 : ((value > 0.92) ? 1 : value);\n\n\t\t\t\t//if (self.getComputedStyle(this.html('svg.vol')).direction === 'rtl')\n\t\t\t\t//\tvalue = 1 - value;\n\n\t\t\t\tvideo.volume = value;\n\t\t\t\tvideo.muted = false;\n\t\t\t}\n\n\t\t\tthis.html('svg.vol rect').style.width = video.muted ? 0 : (video.volume * 100) + '%';\n\t\t}\n\t};\n\n\tthis.actionPosition = function (ev) {\n\n\t\tvar video = this.video, elem = this.html('svg.bar'), width = elem.offsetWidth, value = 0;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif (([1,2].has(video.networkState)) && (video.duration !== Infinity) && !isNaN(video.duration) && (typeof ev == 'object')) {\n\n\t\t\tdo { value += elem.offsetLeft; }\n\t\t\twhile (elem = elem.offsetParent);\n\n\t\t\tvalue = (video.duration * (ev.clientX - value) * 100 / width) / 100;\n\t\t\tvalue = (value <= 1) ? 0 : value;\n\n\t\t\t//if (self.getComputedStyle(this.html('svg.vol')).direction === 'rtl')\n\t\t\t//\tvalue = video.duration - value;\n\n\t\t\tvideo.currentTime = value;\n\t\t}\n\t};\n\n\tthis.actionVideotrack = function (ev) {\n\n\t\tvar tracks = this.video.videoTracks, value = (typeof ev == 'object') ? ev.target.value : ev, idx;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tfor (idx = 0; idx < tracks.length; idx++)\n\t\t\t\ttracks[idx].enabled = (idx == value);\n\n\t\t\tvideo.currentTime -= 1;\n\t\t}\n\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\tthis.actionAudiotrack = function (ev) {\n\n\t\tvar tracks = this.video.audioTracks, value = (typeof ev == 'object') ? ev.target.value : ev, idx;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tfor (idx = 0; idx < tracks.length; idx++)\n\t\t\t\ttracks[idx].enabled = (idx == value);\n\n\t\t\tvideo.currentTime -= 1;\n\t\t}\n\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\tthis.actionTexttrack = function (ev) {\n\n\t\tvar tracks = this.video.textTracks, value = (typeof ev == 'object') ? ev.target.value : ev, idx;\n\n\t\t// NETWORK_IDLE, NETWORK_LOADING\n\t\tif ([1,2].has(this.video.networkState)) {\n\n\t\t\tfor (idx = 0; idx < tracks.length; idx++)\n\t\t\t\ttracks[idx].mode = (idx == value) ? 'showing' : 'hidden';\n\n\t\t\tthis.subload = true;\n\t\t}\n\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\tthis.actionVideo = function (ev) {\n\n\t\tthis.html('svg.bar rect').style.width = '0';\n\t\tthis.html('svg.bar').querySelectorAll('.buffer').forEach(function (node) { node.remove(); });\n\t\tthis.html('span.play').textContent = '\\uE810';\n\n\t\tthis.updateSelect('videotrack', 0);\n\t\tthis.updateSelect('audiotrack', 0);\n\n\t\tthis.video.src = this.video.querySelectorAll('source')[(typeof ev == 'object') ? ev.target.value : ev].src;\n\t\tif (typeof ev == 'object')\n\t\t\tev.target.blur();\n\t};\n\n\tthis.actionFullscreen = function () {\n\n\t\t// en direct\n\t\tvar res = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;\n\t\tthis.video.parentNode.classList[res ? 'add' : 'remove']('fullscreen');\n\t},\n\n\n\t// GÉNÉRATION DES ÉLÉMENTS (private return domelement)\n\n\tthis.htmlSvgPlayer = function () {\n\n\t\tvar d, c, b, a = document.createElement('div');\n\t\ta.setAttribute('class', 'apijsplayer noplaying');\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'btn play fnt');\n\t\t\tb.appendChild(document.createTextNode('\\uE810'));\n\t\t\tb.onclick = this.actionPlay.bind(this);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'svg bar');\n\n\t\t\t\tc = document.createElement('svg');\n\t\t\t\tc.setAttribute('class', 'bar');\n\t\t\t\tc.onclick = this.actionPosition.bind(this);\n\n\t\t\t\t\td = document.createElement('rect');\n\n\t\t\t\tc.appendChild(d);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'time');\n\t\t\tb.appendChild(document.createTextNode('--:--'));\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'svg vol nomobile');\n\n\t\t\t\tc = document.createElement('svg');\n\t\t\t\tc.setAttribute('class', 'vol');\n\t\t\t\tc.onclick = this.actionVolume.bind(this);\n\n\t\t\t\t\td = document.createElement('rect');\n\n\t\t\t\tc.appendChild(d);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks audiotrack');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(133));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionAudiotrack.bind(this);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks videotrack');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(132));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionVideotrack.bind(this);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks video');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(131));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionVideo.bind(this);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('label');\n\t\t\tb.setAttribute('class', 'tracks texttrack');\n\t\t\tb.setAttribute('style', 'display:none;');\n\t\t\tb.appendChild(apijs.i18n.translateNode(134));\n\n\t\t\t\tc = document.createElement('em');\n\t\t\t\tc.setAttribute('class', 'nomobile');\n\n\t\t\tb.appendChild(c);\n\n\t\t\t\tc = document.createElement('select');\n\t\t\t\tc.setAttribute('lang', 'mul');\n\t\t\t\tc.onchange = this.actionTexttrack.bind(this);\n\n\t\t\t\t\td = document.createElement('option');\n\t\t\t\t\td.appendChild(apijs.i18n.translateNode(135)); // off\n\n\t\t\t\tc.appendChild(d);\n\n\t\t\tb.appendChild(c);\n\n\t\ta.appendChild(b);\n\n\t\t\tb = document.createElement('span');\n\t\t\tb.setAttribute('class', 'btn full fnt nomobile');\n\t\t\tb.appendChild(document.createTextNode('\\uE80F'));\n\t\t\tb.onclick = function () {\n\t\t\t\t// via un dialogue ou en direct\n\t\t\t\tif (apijs.dialog.t1) {\n\t\t\t\t\tapijs.requestFullscreen(apijs.dialog.t1);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (document.webkitFullscreenEnabled)\n\t\t\t\t\t\tdocument.addEventListener('webkitfullscreenchange', this.actionFullscreen.bind(this));\n\t\t\t\t\telse if (document.fullscreenEnabled)\n\t\t\t\t\t\tdocument.addEventListener('fullscreenchange', this.actionFullscreen.bind(this));\n\t\t\t\t\telse if (document.mozFullScreenEnabled)\n\t\t\t\t\t\tdocument.addEventListener('mozfullscreenchange', this.actionFullscreen.bind(this));\n\t\t\t\t\tapijs.requestFullscreen(this.video.parentNode);\n\t\t\t\t}\n\n\t\t\t}.bind(this);\n\n\t\ta.appendChild(b);\n\n\t\treturn a;\n\t};\n\n\tthis.htmlTrack = function (data) { // todo\n\n\t\tvar a = document.createElement('track');\n\t\ta.setAttribute('kind', data[1]);\n\t\ta.setAttribute('label', data[2]);\n\t\ta.setAttribute('srclang', data[3]);\n\t\ta.setAttribute('src', data[4]);\n\n\t\ta.onload = function (ev) {\n\t\t\tapijs.log('player:track:onload ' + ev.target.src.slice(ev.target.src.lastIndexOf('/') + 1));\n\t\t\tif (ev.target.track.mode === 'showing') {\n\t\t\t\tthis.onWaiting(ev);\n\t\t\t\tthis.subload = false;\n\t\t\t}\n\t\t}.bind(this);\n\n\t\ta.onerror = function (ev) {\n\t\t\tapijs.log('player:track:onerror ' + ev.target.src.slice(ev.target.src.lastIndexOf('/') + 1));\n\t\t\tif (ev.target.track.mode === 'showing') {\n\t\t\t\tthis.onWaiting(ev);\n\t\t\t\tthis.subload = false;\n\t\t\t}\n\t\t}.bind(this);\n\n\t\treturn a;\n\t};\n\n\tthis.htmlSource = function (url) {\n\n\t\tvar a = document.createElement('source');\n\t\ta.setAttribute('src', url);\n\t\ta.onerror = apijs.dialog.onMediaLoad;\n\n\t\treturn a;\n\t};\n\n\tthis.htmlOption = function (idx, txt) {\n\n\t\tif (typeof txt == 'object')\n\t\t\ttxt = (txt.label === '') ? txt.language.toLowerCase() : txt.language.toLowerCase() + ' - ' + txt.label;\n\n\t\tvar a = document.createElement('option');\n\t\ta.setAttribute('value', idx);\n\t\ta.appendChild(document.createTextNode(txt));\n\n\t\treturn a;\n\t};\n\n\n\tthis.autoRun(video, url);\n};","/**\n * Created J/13/05/2010\n * Updated V/01/01/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.slideshow = function () {\n\n\t\"use strict\";\n\tthis.current = null;\n\n\n\t// AFFICHAGE DE LA BOÎTE DE DIALOGUE (public return void|boolean)\n\n\tthis.init = function () {\n\n\t\tvar i, j, elem, ids = apijs.config.slideshow.ids, hoverload = false;\n\n\t\tfor (i = 0; elem = apijs.html(ids + '.' + i, true); i++) {\n\n\t\t\thoverload = elem.classList.contains('hoverload');\n\n\t\t\tfor (j = 0; elem = apijs.html(ids + '.' + i + '.' + j, true); j++) {\n\t\t\t\telem.addEventListener('click', this.show);\n\t\t\t\tif (hoverload)\n\t\t\t\t\telem.addEventListener('mouseover', this.show);\n\t\t\t}\n\n\t\t\tif (elem = apijs.html(ids + '.' + i + '.99999', true))\n\t\t\t\telem.addEventListener('click', this.show);\n\t\t}\n\n\t\tthis.onPopState();\n\t};\n\n\tthis.onPopState = function () {\n\n\t\t// \\\\ au lieu de \\ sinon Bad or unnecessary escaping\n\t\tif (new RegExp('#(' + apijs.config.slideshow.ids + '[\\-\\\\.]\\\\d+[\\-\\\\.]\\\\d+)').test(self.location.href)) {\n\t\t\tvar id = RegExp.$1.replace(/-/g, '.');\n\t\t\tif (apijs.html(id, true) && !apijs.dialog.has('slideshow')) // Chrome 31 et Opera 19 passent 2 fois sans le !has\n\t\t\t\tapijs.slideshow.show(id, false);\n\t\t}\n\t\telse if (apijs.slideshow.current) {\n\t\t\tapijs.dialog.actionClose();\n\t\t}\n\t};\n\n\tthis.show = function (ev, push) { // todo\n\n\t\tvar source, show = false, media = {}, src, srcset, total, hash;\n\n\t\t// recherche de la source (élément a)\n\t\t// recherche des informations du média (1/4, id)\n\t\t// la source est soit une miniature (ev=click/mouseover/stringId) soit l'image principale (ev=click)\n\t\tif (typeof ev == 'string') {\n\t\t\tshow = true;\n\t\t\tsource = apijs.html(ev, true);\n\t\t\tmedia.id = ev;\n\t\t}\n\t\telse {\n\t\t\tev.preventDefault();\n\t\t\tsource = ev.target;\n\t\t\twhile (source.nodeName !== 'A')\n\t\t\t\tsource = source.parentNode;\n\n\t\t\t// stop sur miniature déjà à jour en mode gallery\n\t\t\tif ((ev.type === 'mouseover') && source.classList.contains('current'))\n\t\t\t\treturn false;\n\n\t\t\tmedia.id = source.getAttribute('id');\n\t\t}\n\n\t\t// recherche des informations du média (2/4, prefix|number|gallery)\n\t\tmedia.prefix = apijs.config.slideshow.ids + '.' + media.id.split('.')[1];\n\t\tmedia.number = parseInt(media.id.split('.')[2], 10);\n\t\tmedia.gallery = apijs.html(media.prefix + '.99999', true);\n\n\t\t// SI SOURCE N'EST PAS L'IMAGE PRINCIPALE DU MODE GALLERY\n\t\t// marque la source avec la class current\n\t\t// prend soin de supprimer les anciennes class current\n\t\t// v5.1 soit sur le lien (avant sur l'image elle même), soit sur le dl\n\t\tif (media.number !== 99999) {\n\n\t\t\tvar links = apijs.html(media.prefix, true).querySelectorAll('a[id][type]'),\n\t\t\t conts = apijs.html(media.prefix, true).querySelectorAll('dl');\n\n\t\t\tif (media.gallery || (links.length !== conts.length)) {\n\t\t\t\tlinks.forEach(function (elem) { elem.classList.remove('current'); });\n\t\t\t\tsource.setAttribute('class', 'current');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconts.forEach(function (elem) { elem.classList.remove('current'); });\n\t\t\t\tsource.parentNode.parentNode.setAttribute('class', 'current');\n\t\t\t}\n\t\t}\n\n\t\t// UNIQUEMENT EN MODE GALLERY\n\t\t// recherche des informations du média (3/4, [number]|config)\n\t\t// réaffecte la source sur la miniature et non sur l'image principale SI SOURCE = IMAGE PRINCIPALE\n\t\t// réaffecte le numéro du média sur la miniature et non sur l'image principale SI SOURCE = IMAGE PRINCIPALE\n\t\t// supprime l'adresse de l'image principale de la configuration du média (media.config = url|name|date|legend)\n\t\t// met à jour l'image principale SAUF SI SOURCE = IMAGE PRINCIPALE (puisque tout est déjà correct)\n\t\tif (media.gallery) {\n\n\t\t\tif (media.number === 99999) {\n\t\t\t\tshow = true;\n\t\t\t\tsource = (media.gallery.hasAttribute('class')) ? media.gallery.getAttribute('class') : media.prefix + '.0';\n\t\t\t\tsource = apijs.html(source, true);\n\t\t\t\tmedia.number = parseInt(source.getAttribute('id').split('.')[2], 10);\n\t\t\t\tmedia.id = media.id.replace(99999, media.number);\n\t\t\t}\n\n\t\t\tmedia.config = source.querySelector('input').getAttribute('value').split('|');\n\n\t\t\tsrc = media.config.shift();\n\t\t\tif (src.indexOf(';') > 0) {\n\t\t\t\tsrc = src.split(';');\n\t\t\t\tsrcset = src[1].trim();\n\t\t\t\tsrc = src[0].trim();\n\t\t\t}\n\n\t\t\tmedia.gallery.setAttribute('href', source.getAttribute('href'));\n\t\t\tmedia.gallery.querySelector('img').setAttribute('src', src);\n\t\t\tmedia.gallery.querySelector('img').setAttribute('srcset', srcset ? srcset : '');\n\t\t\tmedia.gallery.querySelector('img').setAttribute('alt', source.querySelector('img').getAttribute('alt'));\n\t\t\tmedia.gallery.setAttribute('class', media.id);\n\t\t}\n\t\t// UNIQUEMENT EN MODE ALBUM\n\t\t// recherche des informations du média (3/4, config)\n\t\telse {\n\t\t\tshow = true;\n\t\t\tmedia.config = source.querySelector('input').getAttribute('value').split('|');\n\t\t}\n\n\t\t// recherche des informations du média (4/4, url|type|styles)\n\t\t// défini le type de dialogue à partir du mimetype du lien de la source si cela est possible\n\t\tmedia.url = source.getAttribute('href');\n\t\tmedia.type = source.getAttribute('type').substr(0, 5).replace('image', 'dialogPhoto').replace('video', 'dialogVideo');\n\t\tmedia.type = (media.type.indexOf('dialog') === 0) ? media.type : 'dialogPhoto';\n\t\tmedia.styles = apijs.html(media.prefix, true).getAttribute('class').replace(/gallery|album/g, '').trim();\n\n\t\t// demande l'affichage du dialogue\n\t\t// lors d'un clic sur l'image principale du mode gallery\n\t\t// ou lors d'un clic sur les miniatures en mode album\n\t\t// ou lors d'un appel direct\n\t\tif (show) {\n\n\t\t\tapijs.dialog[media.type](media.url, media.config[0], media.config[1], media.config[2], media.styles);\n\n\t\t\ttotal = apijs.html(media.prefix, true).querySelectorAll('a[id][type]').length - (media.gallery ? 2 : 1);\n\t\t\tapijs.slideshow.current = {\n\t\t\t\tnumber: media.number,\n\t\t\t\tfirst: media.prefix + '.0',\n\t\t\t\tprev: (media.number > 0) ? media.prefix + '.' + (media.number - 1) : null,\n\t\t\t\tnext: (media.number < total) ? media.prefix + '.' + (media.number + 1) : null,\n\t\t\t\tlast: media.prefix + '.' + total,\n\t\t\t\ttotal: total\n\t\t\t};\n\n\t\t\t// boutons précédent et suivant\n\t\t\tif (apijs.slideshow.current.prev)\n\t\t\t\tapijs.html('#Prev').removeAttribute('disabled');\n\t\t\tif (apijs.slideshow.current.next)\n\t\t\t\tapijs.html('#Next').removeAttribute('disabled');\n\n\t\t\t// gestion de l'historique\n\t\t\t// met à jour l'ancre uniquement si l'utilisateur ne joue pas avec son historique\n\t\t\tif (apijs.config.slideshow.anchor && (typeof history.pushState == 'function') && ((typeof push == 'boolean') ? push : true)) {\n\t\t\t\thash = self.location.href;\n\t\t\t\thash = (hash.indexOf('#') > 0) ? hash.slice(0, hash.indexOf('#')) : hash;\n\t\t\t\thash += '#' + (media.prefix + '.' + ((media.number === 99999) ? 0 : media.number)).replace(/\\./g,'-');\n\t\t\t\thistory.pushState({}, '', hash);\n\t\t\t}\n\t\t}\n\n\t\treturn show;\n\t};\n\n\n\t// GESTION DES INTERACTIONS (public return boolean)\n\n\tthis.actionFirst = function () {\n\n\t\tif (this.current && (this.current.number > 0) && (this.current.number <= this.current.total))\n\t\t\treturn this.show(this.current.first);\n\n\t\treturn false;\n\t};\n\n\tthis.actionPrev = function () {\n\n\t\tif (this.current && this.current.prev && (this.current.number > 0))\n\t\t\treturn this.show(this.current.prev);\n\n\t\treturn false;\n\t};\n\n\tthis.actionNext = function () {\n\n\t\tif (this.current && this.current.next && (this.current.number < this.current.total))\n\t\t\treturn this.show(this.current.next);\n\n\t\treturn false;\n\t};\n\n\tthis.actionLast = function () {\n\n\t\tif (this.current && (this.current.number >= 0) && (this.current.number < this.current.total))\n\t\t\treturn this.show(this.current.last);\n\n\t\treturn false;\n\t};\n};","/**\n * Created L/13/04/2009\n * Updated V/18/06/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\napijs.core.upload = function () {\n\n\t\"use strict\";\n\tthis.title = null;\n\tthis.action = null;\n\tthis.input = null;\n\tthis.onemax = 0; // taille d'un seul fichier\n\tthis.allmax = 0; // taille de tous les fichiers\n\tthis.exts = null;\n\tthis.callback = null;\n\tthis.args = null;\n\tthis.icon = null;\n\n\tthis.files = [];\n\tthis.start = 0; // time\n\tthis.end = 0; // time\n\n\n\t// AFFICHAGE DE LA BOÎTE DE DIALOGUE (public return boolean)\n\n\tthis.sendFile = function (title, action, input, onemax, exts, callback, args, icon) {\n\n\t\tvar res = this.sendFiles(title, action, input, onemax, 0, exts, callback, args, icon);\n\t\tif (!res) console.error('apijs.upload.sendFile invalid arguments', arguments);\n\n\t\treturn res;\n\t};\n\n\tthis.sendFiles = function (title, action, input, onemax, allmax, exts, callback, args, icon) {\n\n\t\tthis.files = [];\n\t\tif (title !== true) {\n\t\t\tthis.title = title;\n\t\t\tthis.action = action;\n\t\t\tthis.input = input;\n\t\t\tthis.onemax = onemax;\n\t\t\tthis.allmax = allmax;\n\t\t\tthis.exts = (typeof exts == 'string') ? exts.split(',') : ['*'];\n\t\t\tthis.callback = callback;\n\t\t\tthis.args = args;\n\t\t\tthis.icon = icon;\n\t\t}\n\n\t\tif ((typeof this.title == 'string') && (typeof this.action == 'string') && (typeof this.input == 'string') &&\n\t\t (typeof this.onemax == 'number') && (typeof this.allmax == 'number') && (typeof this.callback == 'function')) {\n\n\t\t\tvar text, multiple = this.allmax > 0;\n\n\t\t\tif (this.exts.join() === '*')\n\t\t\t\ttext = apijs.i18n.translate(161);\n\t\t\telse if (this.exts.length === 1)\n\t\t\t\ttext = apijs.i18n.translate(162, this.exts.join());\n\t\t\telse\n\t\t\t\ttext = apijs.i18n.translate(163, this.exts.slice(0, -1).join(', '), this.exts.slice(-1));\n\n\t\t\ttext += '[br]' + apijs.i18n.translate(\n\t\t\t\tmultiple ? 165 : 164, // clef de traduction\n\t\t\t\tapijs.formatNumber(this.onemax), // taille d'un fichier\n\t\t\t\tmultiple ? apijs.formatNumber(this.allmax) : '' // taille de tous les fichiers\n\t\t\t).replace('|', '[br]');\n\n\t\t\treturn apijs.dialog.dialogFormUpload(this.title, text, this.action, this.input, multiple, this.icon);\n\t\t}\n\n\t\tif ((typeof this.allmax != 'number') || (this.allmax > 0))\n\t\t\tconsole.error('apijs.upload.sendFiles invalid arguments', arguments);\n\n\t\treturn false;\n\t};\n\n\n\t// GESTION DES INTERACTIONS (private return void)\n\n\tthis.actionDrag = function (ev) {\n\n\t\tif (ev.type == 'dragenter') {\n\t\t\tapijs.dialog.add('drag');\n\t\t}\n\t\telse if (ev.type == 'dragleave') {\n\t\t\tapijs.dialog.remove('drag');\n\t\t}\n\t\telse if (ev.dataTransfer && ev.dataTransfer.files && (ev.dataTransfer.files.length > 0)) {\n\t\t\tthis.actionChoose(ev.dataTransfer);\n\t\t\tapijs.dialog.remove('drag');\n\t\t}\n\n\t\tev.stopPropagation();\n\t\tev.preventDefault();\n\t};\n\n\tthis.actionChoose = function (elem) {\n\n\t\tvar html = [], size = 0, error = false, btn = apijs.html('button.confirm'), text;\n\t\tthis.files = [];\n\n\t\tif (this.exts) {\n\n\t\t\t// 1048576 octet = 1 Mo\n\t\t\tArray.prototype.forEach.call((this.allmax > 0) ? elem.files : Array.prototype.slice.call(elem.files, 0, 1), function (file, idx) {\n\n\t\t\t\ttext = file.size / 1048576;\n\t\t\t\ttext = apijs.formatNumber((text < 0.01) ? 0.01 : text);\n\t\t\t\ttext = ((this.allmax > 0) ? '<td class=\"nb\">' + (idx + 1) + '</td>' : '') +\n\t\t\t\t\t'<td class=\"name\">' + file.name + '</td><td class=\"size\">' + apijs.i18n.translate(166, text) + '</td>';\n\n\t\t\t\tif ((this.exts.join() !== '*') && !this.exts.has(file.name.slice(file.name.lastIndexOf('.') + 1).toLowerCase())) {\n\t\t\t\t\ttext += '<td class=\"err\">' + apijs.i18n.translate(167) + '</td>';\n\t\t\t\t\terror = true;\n\t\t\t\t}\n\t\t\t\telse if (file.size > (this.onemax * 1048576)) {\n\t\t\t\t\ttext += '<td class=\"err\">' + apijs.i18n.translate(168) + '</td>';\n\t\t\t\t\terror = true;\n\t\t\t\t}\n\t\t\t\telse if (file.size <= 0) {\n\t\t\t\t\ttext += '<td class=\"err\">' + apijs.i18n.translate(169) + '</td>';\n\t\t\t\t\terror = true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttext += '<td></td>';\n\t\t\t\t\tthis.files.push(file);\n\t\t\t\t}\n\n\t\t\t\thtml.push('<tr>' + text + '</tr>');\n\t\t\t\tsize += file.size / 1048576;\n\n\t\t\t}, this); // pour que ci-dessus this = this\n\n\t\t\t// multiple\n\t\t\tif ((this.allmax > 0) && (size >= this.allmax)) {\n\t\t\t\thtml.push('<tr class=\"tt\"><td></td><td></td><td class=\"size\">' + apijs.i18n.translate(166, apijs.formatNumber(size)) + '</td><td class=\"err\">' + apijs.i18n.translate(168) + '</td></tr>');\n\t\t\t\terror = true;\n\t\t\t}\n\n\t\t\t// ok ou ko\n\t\t\tif (error) {\n\t\t\t\tbtn.setAttribute('disabled', 'disabled');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbtn.removeAttribute('disabled');\n\t\t\t\tbtn.focus();\n\t\t\t}\n\n\t\t\tapijs.html('div.filenames').innerHTML = '<table>' + html.join('') + '</table>';\n\t\t}\n\t};\n\n\tthis.actionConfirm = function () {\n\n\t\tif (this.files.length > 0) {\n\n\t\t\tvar form = new FormData(), xhr = new XMLHttpRequest(), tmp;\n\t\t\txhr.open('POST', this.action + ((this.action.indexOf('?') > 0) ? '&isAjax=true' : '?isAjax=true'), true);\n\n\t\t\t// token\n\t\t\tif (typeof apijs.config.upload.tokenValue == 'string') {\n\t\t\t\txhr.setRequestHeader(apijs.config.upload.tokenName, apijs.config.upload.tokenValue);\n\t\t\t\tform.append(apijs.config.upload.tokenName, apijs.config.upload.tokenValue);\n\t\t\t}\n\n\t\t\t// champs supplémentaires\n\t\t\ttmp = apijs.serialize(apijs.dialog.t2);\n\t\t\tif (tmp.length > 3) {\n\t\t\t\ttmp.split('&').forEach(function (data) {\n\t\t\t\t\tdata = data.split('=');\n\t\t\t\t\tform.append(data[0], data[1]);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// fichier(s)\n\t\t\tthis.files.forEach(function (file, idx, files) {\n\t\t\t\tform.append(((files.length > 1) && (this.input.indexOf('[') < 0)) ? this.input + '_' + idx : this.input, file);\n\t\t\t}, this); // pour que ci-dessus this = this\n\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=637002\n\t\t\t// https://stackoverflow.com/a/15491086\n\t\t\t// loadstart - When the request starts\n\t\t\t// progress - While sending and loading data\n\t\t\t// load - When the request has successfully completed even if the server hasn't responded that it finished\n\t\t\t// loadend - When the request has completed even if the server hasn't responded that it finished processing the request\n\t\t\t// error - When the request has failed\n\t\t\t// abort - When the request has been aborted (by invoking the abort method)\n\t\t\t// timeout - When the author specified timeout has passed before the request could complete\n\t\t\txhr.onreadystatechange = function (text) {\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\ttext = xhr.responseText.trim();\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tself.dispatchEvent(new CustomEvent('apijsajaxresponse', { detail: { from: 'apijs.upload.send', xhr: xhr } }));\n\t\t\t\t\t\tapijs.log('upload:onreadystatechange status:200 message:' + text);\n\t\t\t\t\t\tif (text.indexOf('success-') === 0) {\n\t\t\t\t\t\t\tthis.updateTitle();\n\t\t\t\t\t\t\tthis.callback(text.slice(8), this.args);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.onError(195, text);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijs.log('upload:onreadystatechange status:' + xhr.status + ' message: ' + text);\n\t\t\t\t\t\tthis.onError(194, xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}.bind(this); // pour que ci-dessus this = this\n\n\t\t\txhr.upload.onloadstart = this.onStart.bind(this);\n\t\t\txhr.upload.onprogress = this.onProgress.bind(this);\n\t\t\txhr.upload.onload = this.onProgress.bind(this);\n\t\t\txhr.upload.onerror = this.onError.bind(this);\n\t\t\txhr.send(form);\n\t\t}\n\t\telse {\n\t\t\tapijs.html('button.browse').focus();\n\t\t}\n\n\t\treturn false; // très important\n\t};\n\n\tthis.onStart = function () {\n\n\t\tthis.start = this.end = Math.round(new Date().getTime() / 1000);\n\t\tapijs.dialog.dialogProgress(this.title, apijs.i18n.translate(125), this.icon);\n\t};\n\n\tthis.onError = function (key, txt) {\n\n\t\tthis.updateTitle();\n\n\t\tif (typeof key == 'number')\n\t\t\ttxt = '[p]' + apijs.i18n.translate(key) + '[/p] ' + txt;\n\t\telse if (typeof txt != 'string')\n\t\t\ttxt = '[p]' + apijs.i18n.translate(193) + '[/p]';\n\n\t\ttxt += '[p]' + apijs.i18n.translate(196, 'href=\"apijs://restart\" onclick=\"apijs.upload.sendFile(true); return false;\"') + '[/p]';\n\t\tapijs.dialog.dialogInformation(this.title, txt, (typeof this.icon == 'string') ? 'upload error ' + this.icon : 'upload error');\n\t};\n\n\tthis.onProgress = function (ev) {\n\n\t\tvar percent, key, rate, time, elapsedTime, totalTime, currentTime = Math.round(new Date().getTime() / 1000), mins;\n\n\t\t// Cherche à actualiser la barre de progression toutes les 2 secondes (uniquement de 1 à 99%)\n\t\t// affiche le pourcentage, la vitesse à partir de 25 secondes, le temps restant à partir de 40 secondes ET 90 secondes de temps total\n\t\tif (ev.lengthComputable && (ev.type === 'progress') && (currentTime >= (this.end + 2))) {\n\n\t\t\tthis.end = currentTime;\n\n\t\t\t// Math.floor = entier inférieur, Math.ceil = entier supérieur, Math.round = au mieux\n\t\t\t// ev.loaded = nombre d'octet envoyé sur le serveur\n\t\t\t// ev.total = nombre d'octet à envoyer sur le serveur\n\t\t\t// pourcentage = nombre d'octet envoyé * 100 / nombre d'octet à envoyer\n\t\t\tpercent = Math.floor((ev.loaded * 100) / ev.total);\n\n\t\t\tif ((percent > 0) && (percent < 100)) {\n\n\t\t\t\tthis.updateTitle(percent);\n\n\t\t\t\t// temps écoulé = maintenant - départ\n\t\t\t\t// temps total = temps écoulé * 100 / pourcentage + 10 secondes\n\t\t\t\telapsedTime = currentTime - this.start;\n\t\t\t\ttotalTime = elapsedTime * 100 / percent + 10;\n\n\t\t\t\tif (elapsedTime > 24) {\n\n\t\t\t\t\t// temps restant = temps total - temps écoulé\n\t\t\t\t\ttime = Math.round(totalTime - elapsedTime);\n\t\t\t\t\ttime = Math.ceil(time / 10) * 10;\n\t\t\t\t\tmins = Math.ceil(time / 60);\n\n\t\t\t\t\t// vitesse = taille téléchargé / temps écoulé / 1024\n\t\t\t\t\trate = Math.round(ev.loaded / elapsedTime / 1024);\n\n\t\t\t\t\tif ((elapsedTime < 40) || (totalTime < 90)) { key = 184; time = null; } // \"§% - § ko/s\"\n\t\t\t\t\telse if (mins > 1) { key = 181; time = mins; } // \"§% - § ko/s - § minutes restantes\"\n\t\t\t\t\telse if (time > 50) { key = 182; time = 1; } // \"§% - § ko/s - § minute restante\"\n\t\t\t\t\telse { key = 183; } // \"§% - § ko/s - § secondes restantes\"\n\t\t\t\t}\n\n\t\t\t\tthis.updateProgress(percent, key, rate, time);\n\t\t\t}\n\t\t}\n\t\t// Cherche à actualiser la barre de progression lorsque l'envoi du fichier est terminé (donc à 100%)\n\t\t// affiche le pourcentage, le temps total à partir de 20 secondes, la vitesse si possible\n\t\telse if (ev.type === 'load') {\n\n\t\t\t// temps total = temps actuel - temps du départ\n\t\t\ttime = Math.round(new Date().getTime() / 1000) - this.start;\n\t\t\tmins = Math.ceil(time / 60);\n\n\t\t\t// vitesse = taille total / temps total / 1024\n\t\t\trate = Math.round(ev.loaded / time / 1024);\n\n\t\t\tif ((rate > 0) && (rate !== Infinity)) {\n\t\t\t\tif (mins > 1) { key = 185; time = mins; } // \"§% - à § ko/s en § minutes\"\n\t\t\t\telse if (time > 50) { key = 186; time = 1; } // \"§% - à § ko/s en § minute\"\n\t\t\t\telse if (time > 20) { key = 187; } // \"§% - à § ko/s en § secondes\"\n\t\t\t\telse { key = 188; time = null; } // \"§% - à § ko/s\"\n\t\t\t}\n\t\t\telse {\n\t\t\t\trate = null; time = null; // 100%\n\t\t\t}\n\n\t\t\tthis.updateTitle(100);\n\t\t\tthis.updateProgress(100, key, rate, time);\n\t\t}\n\t};\n\n\tthis.updateProgress = function (percent, key, rate, time) {\n\n\t\tvar rect = apijs.html('rect'), text = apijs.html('span.info'), data;\n\n\t\tif (percent > 99) {\n\t\t\tdata = '100%';\n\t\t\trect.setAttribute('class', 'end');\n\t\t\trect.style.width = '';\n\t\t\tvar elem = apijs.html('p');\n\t\t\telem.setAttribute('data-old', elem.textContent);\n\t\t\telem.setAttribute('data-new', apijs.i18n.translate(126));\n\t\t\telem.setAttribute('class', 'anim');\n\t\t\telem.textContent = '';\n\t\t}\n\t\telse {\n\t\t\trect.style.width = data = percent + '%';\n\t\t\tif (rect.hasAttribute('class'))\n\t\t\t\trect.removeAttribute('class');\n\t\t}\n\n\t\tif ((typeof key == 'number') && (typeof rate == 'number') && (typeof time == 'number'))\n\t\t\tdata = apijs.i18n.translate(key, percent, apijs.formatNumber(rate, false), time);\n\t\telse if ((typeof key == 'number') && (typeof rate == 'number'))\n\t\t\tdata = apijs.i18n.translate(key, percent, apijs.formatNumber(rate, false));\n\n\t\ttext.textContent = data;\n\t};\n\n\tthis.updateTitle = function (percent) {\n\n\t\tif (typeof percent == 'number') {\n\t\t\tdocument.title = (/^\\d{1,3}% - /.test(document.title)) ?\n\t\t\t\tpercent + '% - ' + document.title.slice(document.title.indexOf(' - ') + 3) : percent + '% - ' + document.title;\n\t\t}\n\t\telse if (/^\\d{1,3}% - /.test(document.title)) {\n\t\t\tdocument.title = document.title.slice(document.title.indexOf(' - ') + 3);\n\t\t}\n\t};\n};"],"names":["Array","prototype","has","needle","key","hasOwnProperty","this","window","NodeList","forEach","callback","that","i","length","call","apijs","core","version","config","lang","debug","dialog","closeOnClick","restrictNavigation","player","slideshow","ids","anchor","upload","tokenName","tokenValue","start","elem","console","info","toString","split","join","document","getElementById","Error","querySelector","getAttribute","indexOf","error","i18n","self","dispatchEvent","CustomEvent","init","querySelectorAll","startPlayer","addEventListener","onPopState","Object","keys","data","formatNumber","nb","dec","str","dgt","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","format","ignore","toFixed","replace","url","videoPlayer","parentNode","classList","add","toArray","slice","openTab","ev","preventDefault","href","open","log","txt","html","selector","id","t1","requestFullscreen","webkitFullscreenElement","webkitCancelFullScreen","mozFullScreenElement","mozCancelFullScreen","fullscreenElement","cancelFullScreen","webkitRequestFullscreen","mozRequestFullScreen","serialize","form","filter","elements","idx","name","disabled","type","options","selected","push","encodeURIComponent","value","checked","bind","cs","103","104","105","106","107","132","133","134","142","144","146","149","150","de","108","109","124","143","145","147","148","161","162","163","164","167","168","169","181","182","183","185","186","187","188","191","192","193","194","195","196","en","102","125","126","127","131","135","141","165","166","184","es","fr","it","ja","nl","pl","pt","ptbr","ru","sk","tr","uk","zh","toLowerCase","translate","word","translation","arguments","translateNode","createTextNode","apply","changeLang","klass","height","scroll","args","xhr","ft","ti","ns","media","t0","t2","a","b","c","d","dialogInformation","title","text","icon","htmlParent","htmlContent","htmlBtnOk","show","dialogConfirmation","htmlBtnConfirm","dialogFormOptions","action","dialogFormUpload","input","multiple","htmlUpload","dialogProgress","htmlSvgProgress","dialogWaiting","htmlSvgLoader","dialogPhoto","date","legend","htmlMedia","htmlHelp","htmlBtnClose","htmlBtnNavigation","dialogVideo","dialogIframe","close","htmlIframe","dialogAjax","XMLHttpRequest","onreadystatechange","readyState","remove","send","update","setAttribute","css","splice","toggle","search","actionClose","history","pushState","RegExp","test","location","target","clear","onCloseBrowser","stopPropagation","m","returnValue","onResizeBrowser","body","clientWidth","onScrollBrowser","brk","nodeName","Date","getTime","detail","wheelDelta","contains","scrollTop","scrollHeight","offsetHeight","onScrollIframe","defaultView","innerHeight","pageYOffset","onKey","ctrlKey","keyCode","altKey","actionLast","actionFirst","actionPrev","actionNext","networkState","ended","paused","play","pause","duration","Infinity","isNaN","currentTime","muted","volume","onFullscreen","res","onIframeLoad","removeAttribute","contentWindow","parent","passive","onMediaLoad","src","elems","currentSrc","lastIndexOf","style","visibility","hasAttribute","imageLoader","selectedIndex","actionVideo","actionConfirm","setTimeout","isLocked","trim","matchMedia","matches","concat","createDocumentFragment","focus","minHeight","old","appendChild","firstChild","webkitFullscreenEnabled","fullscreenEnabled","mozFullScreenEnabled","isAll","abort","removeEventListener","parseFloat","getComputedStyle","submit","drag","createElement","innerHTML","click","isMultiple","isDelayed","createElementNS","fileid","Image","onload","onerror","ondurationchange","isSlideshow","isVideo","items","item","shift","video","stalled","subload","autoRun","onloadedmetadata","onTimeupdate","onProgress","onVideotrack","onAudiotrack","onstalled","onWaiting","onplaying","onPlay","onpause","onended","onprogress","ontimeupdate","onseeking","onseeked","onwaiting","onloadstart","oncanplay","onclick","actionPlay","onvolumechange","actionVolume","htmlSvgPlayer","htmlSource","from","childNodes","status","nbv","nbt","responseText","htmlOption","htmlTrack","updateSelect","textTracks","total","adjust","textContent","tracks","videoTracks","select","auto","language","Math","max","actionVideotrack","audioTracks","actionAudiotrack","hh","mm","ss","time","floor","width","buffer","buffered","node","end","offsetWidth","clientX","offsetLeft","offsetParent","actionPosition","enabled","blur","actionTexttrack","mode","actionFullscreen","onchange","track","label","current","j","hoverload","$1","source","conts","prefix","number","parseInt","gallery","links","srcset","substr","styles","first","prev","next","last","hash","onemax","allmax","exts","files","sendFile","sendFiles","actionDrag","dataTransfer","actionChoose","size","btn","file","tmp","FormData","setRequestHeader","append","updateTitle","onError","onStart","round","percent","rate","elapsedTime","mins","lengthComputable","loaded","totalTime","ceil","updateProgress","rect"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Created D/15/12/2013
3
- * Updated S/16/01/2021
3
+ * Updated D/09/05/2021
4
4
  *
5
5
  * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
6
6
  * https://www.luigifab.fr/redmine/apijs
@@ -276,11 +276,11 @@ var apijsRedmine = new (function () {
276
276
 
277
277
  // supprime le fichier de la page grâce à son id
278
278
  var attachment = document.getElementById(xhr.responseText), elems = attachment.parentNode, idx = 0;
279
- elems.removeChild(attachment);
279
+ attachment.remove();
280
280
 
281
281
  // supprime la liste des fichiers
282
282
  if (elems.querySelectorAll('dl, li').length < 1) {
283
- elems.parentNode.removeChild(elems);
283
+ elems.remove();
284
284
  }
285
285
  // ou réattribue les ids du diaporama (pas de réinitialisation, on remet juste les ids en place)
286
286
  else {
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
3
- * https://www.luigifab.fr/apijs - 6.6.0
3
+ * https://www.luigifab.fr/apijs - 6.7.0
4
4
  * This program is free software, you can redistribute it or modify
5
5
  * it under the terms of the GNU General Public License (GPL).
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../tmp/uOtXL8","../code/apijs/src/styles/print.css"],"names":[],"mappings":"AAAA;;;;;;ACmBa,UAAb,YAAyB,UAAU,MAClB,cAAjB,gBAAiC,QAAQ,MAAO,OAAO,KAAM,SAAS,OAAQ,MAAM,YACrB,kBAAzC,mBAAoB,oBAA1C,qBAAmF,QAAQ,KAE3F,YAAc,QAAQ,aACtB,cAAgB,QAAQ,aAAc,gBAAgB,KACtD,eAAiB,OAAO,EAAG,QAAQ,EAAG,WAAW,KACjD,eAAiB,QAAQ,aAAc,OAAO,EAAG,QAAQ,EAAG,eAAe,OAC3E,iBAAmB,QAAQ,MAAO,OAAO,KACzC,yBAA2B,aAAa,KAExC,UAAY,WAAW,OACvB,aAAe,QAAQ,aAAc,OAAO,KAAM,KAAO,eAAe,IACxE,eAAiB,QAAQ,MAAO,gBAAgB,KAChD,aAAe,OAAO,KAAM,EAAE,EAE9B,aAAe,QAAQ","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs - 6.6.0\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created J/20/06/2013\n * Updated L/08/07/2019\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv.gallery, div.album { font-size:0.85em; }\ndiv.gallery img, div.album img { display:block; margin:auto; overflow:hidden; color:transparent; }\ndiv.gallery a:before, div.album a:before, div.gallery a:after, div.album a:after { display:none; }\n\ndiv.gallery { display:inline-block; }\ndiv.gallery a { display:inline-block; text-decoration:none; }\ndiv.gallery ul { margin:0; padding:0; list-style:none; }\ndiv.gallery li { display:inline-block; margin:0; padding:0; vertical-align:middle; }\ndiv.gallery li a { display:block; margin:0.2em; }\ndiv.gallery li a.current { border-color:gray; }\n\ndiv.album { text-align:center; }\ndiv.album dl { display:inline-block; margin:0.5em 0.4em; vertical-align:top; }\ndiv.album dt a { display:block; text-decoration:none; }\ndiv.album dd { margin:0.4em 0 0; }\n\n#apijsDialog { display:none; }"]}
1
+ {"version":3,"sources":["../../../../../../../tmp/XHvw6N","../styles/print.css"],"names":[],"mappings":"AAAA;;;;;;ACmBa,UAAb,YAAyB,UAAU,MAClB,cAAjB,gBAAiC,QAAQ,MAAO,OAAO,KAAM,SAAS,OAAQ,MAAM,YACrB,kBAAzC,mBAAoB,oBAA1C,qBAAmF,QAAQ,KAE3F,YAAc,QAAQ,aACtB,cAAgB,QAAQ,aAAc,gBAAgB,KACtD,eAAiB,OAAO,EAAG,QAAQ,EAAG,WAAW,KACjD,eAAiB,QAAQ,aAAc,OAAO,EAAG,QAAQ,EAAG,eAAe,OAC3E,iBAAmB,QAAQ,MAAO,OAAO,KACzC,yBAA2B,aAAa,KAExC,UAAY,WAAW,OACvB,aAAe,QAAQ,aAAc,OAAO,KAAM,KAAO,eAAe,IACxE,eAAiB,QAAQ,MAAO,gBAAgB,KAChD,aAAe,OAAO,KAAM,EAAE,EAE9B,aAAe,QAAQ","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs - 6.7.0\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created J/20/06/2013\n * Updated L/08/07/2019\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv.gallery, div.album { font-size:0.85em; }\ndiv.gallery img, div.album img { display:block; margin:auto; overflow:hidden; color:transparent; }\ndiv.gallery a:before, div.album a:before, div.gallery a:after, div.album a:after { display:none; }\n\ndiv.gallery { display:inline-block; }\ndiv.gallery a { display:inline-block; text-decoration:none; }\ndiv.gallery ul { margin:0; padding:0; list-style:none; }\ndiv.gallery li { display:inline-block; margin:0; padding:0; vertical-align:middle; }\ndiv.gallery li a { display:block; margin:0.2em; }\ndiv.gallery li a.current { border-color:gray; }\n\ndiv.album { text-align:center; }\ndiv.album dl { display:inline-block; margin:0.5em 0.4em; vertical-align:top; }\ndiv.album dt a { display:block; text-decoration:none; }\ndiv.album dd { margin:0.4em 0 0; }\n\n#apijsDialog { display:none; }"]}
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
3
- * https://www.luigifab.fr/redmine/apijs
3
+ * https://www.luigifab.fr/redmine/apijs - 6.7.0
4
4
  * This program is free software, you can redistribute it or modify
5
5
  * it under the terms of the GNU General Public License (GPL).
6
6
  */
7
7
  #apijsDialog{margin:0}#apijsBox{font-size:.8rem;border:0}#apijsBox a{color:#00f}#apijsBox button{height:auto}#apijsBox.options.editattach input[type=text]{display:block;padding:.3em;width:calc(100% - 4px - .6em);border:1px solid #888;background-color:#eee}body div.attachments.album{margin:1em 0;text-align:right}body div.attachments.album dd{position:relative;margin:.5em 0 0 0;width:202px;min-height:1.8em}body div.attachments.album dd.big{min-height:5em}body div.attachments.album dd div{float:left}body div.attachments.album dd span.author{clear:both}body div.attachments.album dd span{display:block;line-height:16px;overflow:hidden;font-size:inherit;color:inherit;white-space:nowrap;text-overflow:ellipsis}body div.attachments.album dd span:first-child{margin-left:60px}body ul.attachments{margin:1em 0;padding:0;list-style:none}body ul.attachments li{padding:.25em .5em;transition:background-color .3s}body ul.attachments li:hover{background-color:#efefef}body ul.attachments li a{vertical-align:middle}body ul.attachments li strong{padding:0 .3em}body ul.attachments li span{padding:0 .1em}body ul.attachments li span.size{color:gray}body ul.attachments li span.date{color:gray}body button.attachment,body ul.attachments a[id^=slideshow]{display:inline-block;margin:0;padding:0;width:16px;height:16px;vertical-align:middle;text-decoration:none!important;border:0;background-color:transparent;cursor:pointer;opacity:.75}body button.attachment.show,body ul.attachments a[id^=slideshow]{background-image:url("../../../images/magnifier.png")}body button.attachment.download{background-image:url("../../../images/attachment.png")}body button.attachment.delete{background-image:url("../../../images/delete.png")}body button.attachment.rename{background-image:url("../../../images/wiki_edit.png")}body button.attachment.edit{background-image:url("../../../images/edit.png")}body fieldset.apijs.tabular.settings{margin:1em;padding:.5em;border:1px solid #ccc}body fieldset.apijs.tabular.settings p span.cmd{white-space:pre-wrap}body fieldset.apijs.tabular.settings p em.info{margin:.2em 0;line-height:140%}body fieldset.apijs.tabular.settings p a+em.info{margin:0}body fieldset.apijs.tabular.settings p label.bis{margin-right:1px;margin-left:.7em;width:auto;min-width:5.5em;text-align:right}body fieldset.apijs.tabular.settings p label.bis input{margin:0}body .flash.error.apijs{margin:0;border:0;border-radius:0;font-size:11px}
8
- /*# sourceMappingURL=styles-rtl.min.css.map */
8
+ /*# sourceMappingURL=apijs-redmine-rtl.min.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../tmp/ZxShYX","styles-rtl.css"],"names":[],"mappings":"AAAA;;;;;;ACmBA,aAAe,OAAO,EAEtB,UAAY,UAAU,MAAQ,OAAO,EACrC,YAAc,MAAM,KACpB,iBAAmB,OAAO,KAE1B,8CACC,QAAQ,MAAO,QAAQ,KAAO,MAAM,wBACpC,OAAO,IAAI,MAAM,KAAM,iBAAiB,KAIzC,2BAA6B,OAAO,IAAI,EAAG,WAAW,MACtD,8BAAgC,SAAS,SAAU,OAAO,KAAM,EAAE,EAAE,EAAG,MAAM,MAAO,WAAW,MAC/F,kCAAoC,WAAW,IAC/C,kCAAoC,MAAM,KAC1C,0CAA4C,MAAM,KAElD,mCACC,QAAQ,MAAO,YAAY,KAAM,SAAS,OAC1C,UAAU,QAAS,MAAM,QAAS,YAAY,OAAQ,cAAc,SAGrE,+CAAiD,YAAY,KAE7D,oBAAsB,OAAO,IAAI,EAAG,QAAQ,EAAG,WAAW,KAC1D,uBAAyB,QAAQ,MAAO,KAAO,WAAW,iBAAiB,IAC3E,6BAA+B,iBAAiB,QAEhD,yBAA2B,eAAe,OAC1C,8BAAgC,QAAQ,EAAE,KAC1C,4BAA8B,QAAQ,EAAE,KACxC,iCAAmC,MAAM,KACzC,iCAAmC,MAAM,KAGzC,uBAAwB,qCACvB,QAAQ,aAAc,OAAO,EAAG,QAAQ,EAAG,MAAM,KAAM,OAAO,KAAM,eAAe,OACnF,gBAAgB,eAAiB,OAAO,EAAG,iBAAiB,YAAa,OAAO,QAAS,QAAQ,IAGlG,4BAA6B,qCAAyC,iBAAiB,qCACvF,gCAAkC,iBAAiB,sCACnD,8BAAgC,iBAAiB,kCACjD,8BAAgC,iBAAiB,qCACjD,4BAA8B,iBAAiB,gCAG/C,qCAAuC,OAAO,IAAK,QAAQ,KAAO,OAAO,IAAI,MAAM,KACnF,gDAAkD,YAAY,SAC9D,+CAAiD,OAAO,KAAM,EAAG,YAAY,KAC7E,iDAAqD,OAAO,EAC5D,iDAAmD,aAAa,IAAK,YAAY,KAAO,MAAM,KAAM,UAAU,MAAO,WAAW,MAChI,uDAAyD,OAAO,EAGhE,wBAA0B,OAAO,EAAG,OAAO,EAAG,cAAc,EAAG,UAAU","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs - 6.7.0\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created D/15/12/2013\n * Updated M/16/02/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues &&& */\n#apijsDialog { margin:0; }\n\n#apijsBox { font-size:0.8rem; border:0; }\n#apijsBox a { color:blue; }\n#apijsBox button { height:auto; }\n\n#apijsBox.options.editattach input[type=\"text\"] {\n\tdisplay:block; padding:0.3em; width:calc(100% - 4px - 0.6em);\n\tborder:1px solid #888; background-color:#EEE;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& albums et listes &&& */\nbody div.attachments.album { margin:1em 0; text-align:right; }\nbody div.attachments.album dd { position:relative; margin:0.5em 0 0 0; width:202px; min-height:1.8em; }\nbody div.attachments.album dd.big { min-height:5em; }\nbody div.attachments.album dd div { float:left; }\nbody div.attachments.album dd span.author { clear:both; }\n\nbody div.attachments.album dd span {\n\tdisplay:block; line-height:16px; overflow:hidden;\n\tfont-size:inherit; color:inherit; white-space:nowrap; text-overflow:ellipsis;\n}\n\nbody div.attachments.album dd span:first-child { margin-left:60px; }\n\nbody ul.attachments { margin:1em 0; padding:0; list-style:none; }\nbody ul.attachments li { padding:0.25em 0.5em; transition:background-color 0.3s; }\nbody ul.attachments li:hover { background-color:#EFEFEF; }\n\nbody ul.attachments li a { vertical-align:middle; }\nbody ul.attachments li strong { padding:0 0.3em; }\nbody ul.attachments li span { padding:0 0.1em; }\nbody ul.attachments li span.size { color:gray; }\nbody ul.attachments li span.date { color:gray; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\nbody button.attachment, body ul.attachments a[id^=\"slideshow\"] {\n\tdisplay:inline-block; margin:0; padding:0; width:16px; height:16px; vertical-align:middle;\n\ttext-decoration:none !important; border:0; background-color:transparent; cursor:pointer; opacity:0.75;\n}\n\nbody button.attachment.show, body ul.attachments a[id^=\"slideshow\"] { background-image:url(\"../../../images/magnifier.png\"); }\nbody button.attachment.download { background-image:url(\"../../../images/attachment.png\"); }\nbody button.attachment.delete { background-image:url(\"../../../images/delete.png\"); }\nbody button.attachment.rename { background-image:url(\"../../../images/wiki_edit.png\"); }\nbody button.attachment.edit { background-image:url(\"../../../images/edit.png\"); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& configuration &&& */\nbody fieldset.apijs.tabular.settings { margin:1em; padding:0.5em; border:1px solid #CCC; }\nbody fieldset.apijs.tabular.settings p span.cmd { white-space:pre-wrap; }\nbody fieldset.apijs.tabular.settings p em.info { margin:0.2em 0; line-height:140%; }\nbody fieldset.apijs.tabular.settings p a + em.info { margin:0; }\nbody fieldset.apijs.tabular.settings p label.bis { margin-right:1px; margin-left:0.7em; width:auto; min-width:5.5em; text-align:right; }\nbody fieldset.apijs.tabular.settings p label.bis input { margin:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& navigateur &&& */\nbody .flash.error.apijs { margin:0; border:0; border-radius:0; font-size:11px; }"]}
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
3
- * https://www.luigifab.fr/redmine/apijs
3
+ * https://www.luigifab.fr/redmine/apijs - 6.7.0
4
4
  * This program is free software, you can redistribute it or modify
5
5
  * it under the terms of the GNU General Public License (GPL).
6
6
  */
7
7
  #apijsDialog{margin:0}#apijsBox{font-size:.8rem;border:0}#apijsBox a{color:#00f}#apijsBox button{height:auto}#apijsBox.options.editattach input[type=text]{display:block;padding:.3em;width:calc(100% - 4px - .6em);border:1px solid #888;background-color:#eee}body div.attachments.album{margin:1em 0;text-align:left}body div.attachments.album dd{position:relative;margin:.5em 0 0 0;width:202px;min-height:1.8em}body div.attachments.album dd.big{min-height:5em}body div.attachments.album dd div{float:right}body div.attachments.album dd span.author{clear:both}body div.attachments.album dd span{display:block;line-height:16px;overflow:hidden;font-size:inherit;color:inherit;white-space:nowrap;text-overflow:ellipsis}body div.attachments.album dd span:first-child{margin-right:60px}body ul.attachments{margin:1em 0;padding:0;list-style:none}body ul.attachments li{padding:.25em .5em;transition:background-color .3s}body ul.attachments li:hover{background-color:#efefef}body ul.attachments li a{vertical-align:middle}body ul.attachments li strong{padding:0 .3em}body ul.attachments li span{padding:0 .1em}body ul.attachments li span.size{color:gray}body ul.attachments li span.date{color:gray}body button.attachment,body ul.attachments a[id^=slideshow]{display:inline-block;margin:0;padding:0;width:16px;height:16px;vertical-align:middle;text-decoration:none!important;border:0;background-color:transparent;cursor:pointer;opacity:.75}body button.attachment.show,body ul.attachments a[id^=slideshow]{background-image:url("../../../images/magnifier.png")}body button.attachment.download{background-image:url("../../../images/attachment.png")}body button.attachment.delete{background-image:url("../../../images/delete.png")}body button.attachment.rename{background-image:url("../../../images/wiki_edit.png")}body button.attachment.edit{background-image:url("../../../images/edit.png")}body fieldset.apijs.tabular.settings{margin:1em;padding:.5em;border:1px solid #ccc}body fieldset.apijs.tabular.settings p span.cmd{white-space:pre-wrap}body fieldset.apijs.tabular.settings p em.info{margin:.2em 0;line-height:140%}body fieldset.apijs.tabular.settings p a+em.info{margin:0}body fieldset.apijs.tabular.settings p label.bis{margin-left:1px;margin-right:.7em;width:auto;min-width:5.5em;text-align:left}body fieldset.apijs.tabular.settings p label.bis input{margin:0}body .flash.error.apijs{margin:0;border:0;border-radius:0;font-size:11px}
8
- /*# sourceMappingURL=styles.min.css.map */
8
+ /*# sourceMappingURL=apijs-redmine.min.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../tmp/blNRk1","styles.css"],"names":[],"mappings":"AAAA;;;;;;ACmBA,aAAe,OAAO,EAEtB,UAAY,UAAU,MAAQ,OAAO,EACrC,YAAc,MAAM,KACpB,iBAAmB,OAAO,KAE1B,8CACC,QAAQ,MAAO,QAAQ,KAAO,MAAM,wBACpC,OAAO,IAAI,MAAM,KAAM,iBAAiB,KAIzC,2BAA6B,OAAO,IAAI,EAAG,WAAW,KACtD,8BAAgC,SAAS,SAAU,OAAO,KAAM,EAAE,EAAE,EAAG,MAAM,MAAO,WAAW,MAC/F,kCAAoC,WAAW,IAC/C,kCAAoC,MAAM,MAC1C,0CAA4C,MAAM,KAElD,mCACC,QAAQ,MAAO,YAAY,KAAM,SAAS,OAC1C,UAAU,QAAS,MAAM,QAAS,YAAY,OAAQ,cAAc,SAGrE,+CAAiD,aAAa,KAE9D,oBAAsB,OAAO,IAAI,EAAG,QAAQ,EAAG,WAAW,KAC1D,uBAAyB,QAAQ,MAAO,KAAO,WAAW,iBAAiB,IAC3E,6BAA+B,iBAAiB,QAEhD,yBAA2B,eAAe,OAC1C,8BAAgC,QAAQ,EAAE,KAC1C,4BAA8B,QAAQ,EAAE,KACxC,iCAAmC,MAAM,KACzC,iCAAmC,MAAM,KAGzC,uBAAwB,qCACvB,QAAQ,aAAc,OAAO,EAAG,QAAQ,EAAG,MAAM,KAAM,OAAO,KAAM,eAAe,OACnF,gBAAgB,eAAiB,OAAO,EAAG,iBAAiB,YAAa,OAAO,QAAS,QAAQ,IAGlG,4BAA6B,qCAAyC,iBAAiB,qCACvF,gCAAkC,iBAAiB,sCACnD,8BAAgC,iBAAiB,kCACjD,8BAAgC,iBAAiB,qCACjD,4BAA8B,iBAAiB,gCAG/C,qCAAuC,OAAO,IAAK,QAAQ,KAAO,OAAO,IAAI,MAAM,KACnF,gDAAkD,YAAY,SAC9D,+CAAiD,OAAO,KAAM,EAAG,YAAY,KAC7E,iDAAqD,OAAO,EAC5D,iDAAmD,YAAY,IAAK,aAAa,KAAO,MAAM,KAAM,UAAU,MAAO,WAAW,KAChI,uDAAyD,OAAO,EAGhE,wBAA0B,OAAO,EAAG,OAAO,EAAG,cAAc,EAAG,UAAU","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs - 6.7.0\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created D/15/12/2013\n * Updated M/16/02/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues &&& */\n#apijsDialog { margin:0; }\n\n#apijsBox { font-size:0.8rem; border:0; }\n#apijsBox a { color:blue; }\n#apijsBox button { height:auto; }\n\n#apijsBox.options.editattach input[type=\"text\"] {\n\tdisplay:block; padding:0.3em; width:calc(100% - 4px - 0.6em);\n\tborder:1px solid #888; background-color:#EEE;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& albums et listes &&& */\nbody div.attachments.album { margin:1em 0; text-align:left; }\nbody div.attachments.album dd { position:relative; margin:0.5em 0 0 0; width:202px; min-height:1.8em; }\nbody div.attachments.album dd.big { min-height:5em; }\nbody div.attachments.album dd div { float:right; }\nbody div.attachments.album dd span.author { clear:both; }\n\nbody div.attachments.album dd span {\n\tdisplay:block; line-height:16px; overflow:hidden;\n\tfont-size:inherit; color:inherit; white-space:nowrap; text-overflow:ellipsis;\n}\n\nbody div.attachments.album dd span:first-child { margin-right:60px; }\n\nbody ul.attachments { margin:1em 0; padding:0; list-style:none; }\nbody ul.attachments li { padding:0.25em 0.5em; transition:background-color 0.3s; }\nbody ul.attachments li:hover { background-color:#EFEFEF; }\n\nbody ul.attachments li a { vertical-align:middle; }\nbody ul.attachments li strong { padding:0 0.3em; }\nbody ul.attachments li span { padding:0 0.1em; }\nbody ul.attachments li span.size { color:gray; }\nbody ul.attachments li span.date { color:gray; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\nbody button.attachment, body ul.attachments a[id^=\"slideshow\"] {\n\tdisplay:inline-block; margin:0; padding:0; width:16px; height:16px; vertical-align:middle;\n\ttext-decoration:none !important; border:0; background-color:transparent; cursor:pointer; opacity:0.75;\n}\n\nbody button.attachment.show, body ul.attachments a[id^=\"slideshow\"] { background-image:url(\"../../../images/magnifier.png\"); }\nbody button.attachment.download { background-image:url(\"../../../images/attachment.png\"); }\nbody button.attachment.delete { background-image:url(\"../../../images/delete.png\"); }\nbody button.attachment.rename { background-image:url(\"../../../images/wiki_edit.png\"); }\nbody button.attachment.edit { background-image:url(\"../../../images/edit.png\"); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& configuration &&& */\nbody fieldset.apijs.tabular.settings { margin:1em; padding:0.5em; border:1px solid #CCC; }\nbody fieldset.apijs.tabular.settings p span.cmd { white-space:pre-wrap; }\nbody fieldset.apijs.tabular.settings p em.info { margin:0.2em 0; line-height:140%; }\nbody fieldset.apijs.tabular.settings p a + em.info { margin:0; }\nbody fieldset.apijs.tabular.settings p label.bis { margin-left:1px; margin-right:0.7em; width:auto; min-width:5.5em; text-align:left; }\nbody fieldset.apijs.tabular.settings p label.bis input { margin:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& navigateur &&& */\nbody .flash.error.apijs { margin:0; border:0; border-radius:0; font-size:11px; }"]}
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
3
- * https://www.luigifab.fr/apijs - 6.6.0
3
+ * https://www.luigifab.fr/apijs - 6.7.0
4
4
  * This program is free software, you can redistribute it or modify
5
5
  * it under the terms of the GNU General Public License (GPL).
6
6
  */
7
- div.album img,div.gallery img{display:block;margin:auto;overflow:hidden;color:transparent;background-color:#efefef;transition:background-color .3s}div.album a:after,div.album a:before,div.gallery a:after,div.gallery a:before{display:none;content:""}div.gallery{display:inline-flex;flex-direction:column;padding:.5em;vertical-align:top}div.gallery a{display:block;text-decoration:none;border:1px solid transparent}div.gallery ul{display:flex;flex-wrap:wrap;justify-content:space-around;margin:.3em 0 0;padding:0;list-style:none}div.gallery li{margin:.1em 0;padding:0}div.gallery li a{opacity:.7}div.gallery li a.current{border:1px solid #fff;opacity:1}div.album{padding:.4em;text-align:center}div.album dl{display:inline-block;margin:.3em .1em;padding:.5em .5em .45em;vertical-align:top;border:1px solid #efefef;border-radius:.6em;background-color:transparent;transition:border-color .3s,background-color .3s}div.album dl.current{border:1px solid #fff;background-color:#efefef}div.album dt a{display:block;text-decoration:none;border:1px solid transparent}div.album dd{margin:.5em .5em 0;overflow:hidden;font-size:.8em;white-space:nowrap;text-overflow:ellipsis;transition:color .3s}div.album dl:hover{border-color:#ccc;background-color:#efefef}div.album dl.current img,div.album dl:hover img{background-color:#fff}div[id=apijsDialog] *{margin:0;padding:0}#apijsDialog button,#apijsDialog label{cursor:pointer}#apijsDialog{position:fixed;top:0;left:0;bottom:0;right:0;width:100%;height:100%;text-align:center;direction:rtl;z-index:99000;transition:background-color .5s,opacity .25s;opacity:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none}#apijsDialog.ready{background-color:rgba(0,0,0,.65);opacity:1}#apijsDialog.loading,#apijsDialog.progress,#apijsDialog.waiting{cursor:progress}#apijsBox{position:relative;top:21%;display:inline-block;padding:.6em .8em 2.4em;width:26rem;max-width:26rem;min-height:9em;overflow:hidden;text-align:right;color:#000;border-radius:.8em;background-color:#fff;box-shadow:0 0 2.5em #111}#apijsBox.photo,#apijsBox.video{display:flex;flex-direction:column;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;width:auto;max-width:inherit;min-height:inherit;text-align:center;border-radius:0;background-color:rgba(0,0,0,.8);box-shadow:none}#apijsBox.video{background-color:#000}#apijsBox.photo.error,#apijsBox.video.error{background-image:url("../images/apijs/tv.gif");background-repeat:repeat}#apijsBox.options,#apijsBox.progress,#apijsBox.upload{min-height:15em}#apijsBox.ajax,#apijsBox.iframe{padding:2.5em .8em 1em}#apijsBox div.bbcode{user-select:text;-ms-user-select:text;-moz-user-select:text;-webkit-user-select:text}#apijsBox h1{margin:.15em 0 .7em;height:32px;line-height:32px;font-size:1.49em;font-weight:700}#apijsBox pre{margin:1em auto;line-height:1.42857143;font-size:.7rem;white-space:pre-wrap}#apijsBox p{margin:1em auto;line-height:1.42857143;font-size:1em}#apijsBox ul{margin:-.4em auto 1em}#apijsBox iframe{display:block;width:100%;border:0}#apijsBox.progress span.info{position:absolute;left:1em;bottom:.8em}#apijsBox.progress svg{position:relative;display:block;margin:18px auto;width:80%;height:20px;overflow:hidden;outline:1px solid #333;background-color:#aaa}#apijsBox.progress rect{position:absolute;top:0;bottom:0;right:0;display:block;background:#03ff00 repeating-linear-gradient(45deg,#03ff00 0,#03ff00 10px,#00ef00 10px,#00ef00 20px);background-size:28px 100%}#apijsBox.progress rect.auto{width:20%;-webkit-animation:apijsProgress 10s infinite linear;animation:apijsProgress 10s infinite linear}#apijsBox.progress rect.end{width:100%;-webkit-animation:apijsProgress 10s infinite 3s linear;animation:apijsProgress 10s infinite 3s linear}#apijsBox svg.loader{position:absolute;display:none;margin:auto;width:128px;height:128px;pointer-events:none}#apijsBox svg.loader path{fill:gray}#apijsBox.loading svg.loader,#apijsBox.waiting svg.loader{display:block;left:-40px;bottom:-40px;transform:scale(.2);-webkit-transform:scale(.2)}#apijsBox.photo svg.loader,#apijsBox.video svg.loader{left:0;bottom:calc(50% - 64px);right:0;transform:none;-webkit-transform:none}#apijsBox.ajax svg.loader,#apijsBox.iframe svg.loader{left:0;bottom:calc(50% - 64px);right:0}#apijsBox button{font-size:.85em;text-decoration:none;border:0;transition:color .4s,border-color .4s,background-color .4s,opacity .4s}#apijsBox button::-moz-focus-inner{padding:0;outline:0;border:0}#apijsBox button:active,#apijsBox button:focus,#apijsBox button:hover{outline:0}#apijsBox div.btns{position:absolute;left:.8em;bottom:.6em}#apijsBox div.btns.upload{position:relative;left:inherit;right:inherit}#apijsBox div.btns.upload input{display:none}#apijsBox div.btns.upload div.filenames{white-space:nowrap}#apijsBox div.btns.upload span.sz{color:#676767}#apijsBox div.btns.upload span.ee{color:#e41101}#apijsBox div.btns button{padding:0 .7em;height:auto;line-height:24px;color:#000;border:1px solid #bbb;border-radius:.4em;background-color:#e2e2e2}#apijsBox div.btns button:disabled{opacity:.5}#apijsBox div.btns button.cancel{float:right;margin:0 .5em}#apijsBox div.btns button.browse{display:inline-block;margin:.5em 0}#apijsBox div.btns button:active,#apijsBox div.btns button:focus,#apijsBox div.btns button:hover{border-color:#555;background-color:#f4f4f4}#apijsBox div.btns button:focus:not(:hover){-webkit-animation:apijsFocus 1s infinite;animation:apijsFocus 1s infinite}#apijsBox dl.media{display:flex;flex-direction:column-reverse;flex:1;overflow:hidden;color:#fff}#apijsBox dl.media dt{display:flex;flex-direction:column;flex:1;overflow:hidden}#apijsBox dl.media dt iframe,#apijsBox dl.media dt img,#apijsBox dl.media dt video{flex:1 1 auto;height:100%;visibility:hidden}#apijsBox dl.media dt img{image-rendering:optimizeQuality;image-rendering:-moz-crisp-edges;object-fit:scale-down}#apijsBox dl.media dt video{outline:0;cursor:pointer}#apijsBox dl.media dd{line-height:1.5rem;font-size:.85em;background-color:#666}#apijsBox dl.media dd span{margin:0 .6em;font-size:.9em;font-style:italic}#apijsBox div.close{position:absolute;top:-2px;left:-2px;padding:0 3em 3em 0;z-index:99600}#apijsBox div.close button{padding:0 1.4em;line-height:2.6em;font-size:.8em;font-weight:700;text-transform:uppercase;color:#fff;border:2px solid #fff;border-radius:0 0 .8em 0;background-color:#000;opacity:.8}#apijsBox div.close button:active,#apijsBox div.close button:focus,#apijsBox div.close button:hover{opacity:1}#apijsBox div.navigation button{position:absolute;top:20%;bottom:20%;padding:0 2em;background-color:transparent;opacity:.5}#apijsBox div.navigation button:active,#apijsBox div.navigation button:focus,#apijsBox div.navigation button:hover{opacity:1}#apijsBox div.navigation button:disabled{opacity:0;cursor:default}#apijsBox div.navigation button span{display:block;width:2em;height:2em;border-top:2px solid #fff;border-right:2px solid #fff}#apijsBox div.navigation button.prev{right:0}#apijsBox div.navigation button.prev span{transform:rotate(45deg);-webkit-transform:rotate(45deg)}#apijsBox div.navigation button.next{left:0}#apijsBox div.navigation button.next span{transform:rotate(225deg);-webkit-transform:rotate(225deg)}#apijsBox ul.kbd{display:flex;justify-content:center;margin:0;text-align:center;font-size:.8em;white-space:nowrap;list-style:none;background-color:#666}#apijsBox ul.kbd li{margin:0 .5em;line-height:1.2rem}#apijsBox ul.kbd li kbd:last-child{margin-left:.4em}#apijsBox kbd{margin-left:.2em;padding:0 .21em;font-size:inherit;font-weight:700;text-transform:uppercase;border:0;background-color:#888}#apijsDialog.reduce *{transition:none!important}#apijsBox.fullscreen .nofullscreen{display:none!important}#apijsBox.fullscreen.playing video{cursor:none}#apijsBox.mobile:not(.photo):not(.video){position:absolute;top:1.5em;right:.5em;left:.5em;width:auto;min-height:inherit}#apijsBox.mobile .nomobile{display:none!important}#apijsBox.fullscreen.playing .noplaying,#apijsBox.mobile.playing .noplaying{transition:opacity .5s;opacity:0}#apijsBox.fullscreen.playing .noplaying:hover,#apijsBox.mobile.playing .noplaying:hover{opacity:1!important}#apijsBox.tiny div.apijsplayer label{position:initial}#apijsBox.tiny div.apijsplayer label select{right:0;left:0;width:100%}#apijsBox.tiny div.navigation button{padding:0 1em}@font-face{src:url("../fonts/apijs/fontello.woff2") format("woff2"),url("../fonts/apijs/fontello.woff") format("woff");font-family:apijsFontello;font-weight:400;font-style:normal}#apijsBox div.btns button span:before,#apijsBox h1:before,#apijsBox kbd:before,div.apijsplayer span.fnt{font-family:apijsFontello;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-decoration:inherit;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#apijsBox h1:before{float:right;width:1.3em;text-align:center;font-size:1.5em}#apijsBox.information h1:before{content:"\E80B\0000A0"}#apijsBox.confirmation h1:before{content:"\E80C\0000A0"}#apijsBox.options h1:before{content:"\E80E\0000A0"}#apijsBox.upload h1:before{content:"\F15B\0000A0"}#apijsBox.progress h1:before{content:"\F1D8\0000A0"}#apijsBox.waiting h1:before{content:"\F1D8\0000A0"}#apijsBox.download h1:before{content:"\F15B\0000A0"}#apijsBox.print h1:before{content:"\E80D\0000A0"}#apijsBox.error h1:before{content:"\E80A\0000A0"}#apijsBox.warning h1:before{content:"\E80A\0000A0"}#apijsBox div.btns button span:before{float:right}#apijsBox div.btns button.cancel span:before{content:"\E801\0000A0"}#apijsBox div.btns button.confirm span:before{content:"\E800\0000A0"}#apijsBox div.btns button.browse span:before{content:"\E802\0000A0"}#apijsBox kbd.start:before{content:"\E807";display:inline-block;transform:rotate(45deg);-webkit-transform:rotate(45deg)}#apijsBox kbd.bottom:before{content:"\E804"}#apijsBox kbd.left:before{content:"\E805"}#apijsBox kbd.right:before{content:"\E806"}#apijsBox kbd.topk:before{content:"\E807"}#apijsBox kbd.plus:before{content:"\E809"}#apijsBox kbd.minus:before{content:"\E808"}@keyframes apijsProgress{0%{width:20%}50%{transform:translate(-400%,0)}100%{width:20%}}@-webkit-keyframes apijsProgress{0%{width:20%}50%{right:80%}100%{width:20%}}@keyframes apijsFocus{50%{border-color:#bbb}}@-webkit-keyframes apijsFocus{50%{border-color:#bbb}}
7
+ div.album img,div.gallery img{display:block;margin:auto;overflow:hidden;color:transparent;background-color:#efefef;transition:background-color .3s}div.album a:after,div.album a:before,div.gallery a:after,div.gallery a:before{display:none;content:""}div.gallery{display:inline-flex;flex-direction:column;padding:.5em;vertical-align:top}div.gallery a{display:block;text-decoration:none;border:1px solid transparent}div.gallery ul{display:flex;flex-wrap:wrap;justify-content:space-around;margin:.3em 0 0;padding:0;list-style:none}div.gallery li{margin:.1em 0;padding:0}div.gallery li a{opacity:.7}div.gallery li a.current{border:1px solid #fff;opacity:1}div.album{padding:.4em;text-align:center}div.album dl{display:inline-block;margin:.3em .1em;padding:.5em .5em .45em;vertical-align:top;border:1px solid #efefef;border-radius:.6em;background-color:transparent;transition:border-color .3s,background-color .3s}div.album dl.current{border:1px solid #fff;background-color:#efefef}div.album dt a{display:block;text-decoration:none;border:1px solid transparent}div.album dd{margin:.5em .5em 0;overflow:hidden;font-size:.8em;white-space:nowrap;text-overflow:ellipsis;transition:color .3s}div.album dl:hover{border-color:#ccc;background-color:#efefef}div.album dl.current img,div.album dl:hover img{background-color:#fff}div[id=apijsDialog] *{margin:0;padding:0}#apijsDialog button,#apijsDialog label{cursor:pointer}#apijsDialog{position:fixed;top:0;left:0;bottom:0;right:0;width:100%;height:100%;text-align:center;direction:rtl;z-index:99000;transition:background-color .5s,opacity .25s;opacity:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none}#apijsDialog.ready{background-color:rgba(0,0,0,.65);opacity:1}#apijsDialog.loading,#apijsDialog.progress,#apijsDialog.waiting{cursor:progress}#apijsDialog.reduce,#apijsDialog.reduce *{transition:none!important}#apijsBox{position:relative;top:21%;display:inline-block;padding:.6em .8em 2.4em;width:26rem;max-width:26rem;min-height:9em;overflow:hidden;text-align:right;color:#000;border-radius:.8em;background-color:#fff;box-shadow:0 0 2.5em #111}#apijsBox.photo,#apijsBox.video{display:flex;flex-direction:column;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;width:auto;max-width:inherit;min-height:inherit;text-align:center;border-radius:0;background-color:rgba(0,0,0,.8);box-shadow:none}#apijsBox.video{background-color:#000}#apijsBox.photo.error,#apijsBox.video.error{background-image:url("../images/apijs/tv.gif");background-repeat:repeat}#apijsBox.options,#apijsBox.progress,#apijsBox.upload{min-height:15em}#apijsBox.ajax,#apijsBox.iframe{padding:2.5em .8em 1em}#apijsBox.mobile:not(.photo):not(.video){position:absolute;top:1.5em;right:.5em;left:.5em;width:auto;min-height:inherit}#apijsBox.tiny div.navigation button{padding:0 1em}#apijsDialog.drag:before{position:absolute;top:1em;left:1em;bottom:1em;right:1em;content:"";border:2px dashed #fff}#apijsDialog p.drag{position:absolute;left:0;bottom:0;margin:1.5em;font-size:1.3em;color:#fff}#apijsBox div.bbcode{user-select:text;-ms-user-select:text;-moz-user-select:text;-webkit-user-select:text}#apijsBox h1{margin:.15em 0 .7em;height:32px;line-height:32px;font-size:1.49em;font-weight:700}#apijsBox pre{margin:1em auto;line-height:1.42857143;font-size:.7rem;white-space:pre-wrap}#apijsBox p{margin:1em auto;line-height:1.42857143;font-size:1em}#apijsBox ul{margin:-.4em auto 1em}#apijsBox iframe{display:block;width:100%;border:0}#apijsBox.progress p.anim:before{content:attr(data-old);-webkit-animation:apijsReplace 1s linear 2s forwards;animation:apijsReplace 1s linear 2s forwards}#apijsBox.progress span.info{position:absolute;left:1em;bottom:.8em}#apijsBox.progress svg{position:relative;display:block;margin:18px auto;width:80%;height:20px;overflow:hidden;outline:1px solid #333;background-color:#aaa}#apijsBox.progress rect{position:absolute;top:0;bottom:0;right:0;display:block;background:#03ff00 repeating-linear-gradient(45deg,#03ff00 0,#03ff00 10px,#00ef00 10px,#00ef00 20px);background-size:28px 100%}#apijsBox.progress rect.auto{width:20%;-webkit-animation:apijsProgress 10s infinite linear;animation:apijsProgress 10s infinite linear}#apijsBox.progress rect.end{width:100%;-webkit-animation:apijsProgress 10s infinite 3s linear;animation:apijsProgress 10s infinite 3s linear}#apijsBox svg.loader{position:absolute;display:none;margin:auto;width:128px;height:128px;pointer-events:none}#apijsBox svg.loader path{fill:gray}#apijsBox.loading svg.loader,#apijsBox.waiting svg.loader{display:block;left:-40px;bottom:-40px;transform:scale(.2);-webkit-transform:scale(.2)}#apijsBox.photo svg.loader,#apijsBox.video svg.loader{left:0;bottom:calc(50% - 64px);right:0;transform:none;-webkit-transform:none}#apijsBox.ajax svg.loader,#apijsBox.iframe svg.loader{left:0;bottom:calc(50% - 64px);right:0}#apijsBox button{font-size:.85em;text-decoration:none;border:0;transition:color .4s,border-color .4s,background-color .4s,opacity .4s}#apijsBox button::-moz-focus-inner{padding:0;outline:0;border:0}#apijsBox button:active,#apijsBox button:focus,#apijsBox button:hover{outline:0}#apijsBox div.btns{position:absolute;left:.8em;bottom:.6em}#apijsBox div.btns.upload{position:relative;left:inherit;right:inherit}#apijsBox div.btns.upload input{display:none}#apijsBox div.btns.upload div.filenames{max-height:11em;overflow-y:auto}#apijsBox div.btns.upload table{border-spacing:0}#apijsBox div.btns.upload td+td{padding-right:.6em}#apijsBox div.btns.upload td.nb{font-size:.85em;color:#676767}#apijsBox div.btns.upload td.size{color:#676767}#apijsBox div.btns.upload td.err{color:#e41101}#apijsBox div.btns button{padding:0 .7em;height:auto;line-height:24px;color:#000;border:1px solid #bbb;border-radius:.4em;background-color:#e2e2e2}#apijsBox div.btns button:disabled{opacity:.5}#apijsBox div.btns button.cancel{float:right;margin:0 .5em}#apijsBox div.btns button.browse{display:inline-block;margin:.5em 0}#apijsBox div.btns button:active,#apijsBox div.btns button:focus,#apijsBox div.btns button:hover{border-color:#555;background-color:#f4f4f4}#apijsBox div.btns button:focus:not(:hover){-webkit-animation:apijsFocus 1s infinite;animation:apijsFocus 1s infinite}#apijsBox dl.media{display:flex;flex-direction:column-reverse;flex:1;overflow:hidden;color:#fff}#apijsBox dl.media dt{display:flex;flex-direction:column;flex:1;overflow:hidden}#apijsBox dl.media dt iframe,#apijsBox dl.media dt img,#apijsBox dl.media dt video{flex:1 1 auto;height:100%;visibility:hidden}#apijsBox dl.media dt img{image-rendering:optimizeQuality;image-rendering:-moz-crisp-edges;object-fit:scale-down}#apijsBox dl.media dt video{z-index:50;outline:0;cursor:pointer}#apijsBox dl.media dd{line-height:1.5rem;font-size:.85em;background-color:#666}#apijsBox dl.media dd span{margin:0 .6em;font-size:.9em;font-style:italic}#apijsBox div.close{position:absolute;top:-2px;left:-2px;padding:0 3em 3em 0;z-index:99600}#apijsBox div.close button{padding:0 1.4em;line-height:2.6em;font-size:.8em;font-weight:700;text-transform:uppercase;color:#fff;border:2px solid #fff;border-radius:0 0 .8em 0;background-color:#000;opacity:.8}#apijsBox div.close button:active,#apijsBox div.close button:focus,#apijsBox div.close button:hover{opacity:1}#apijsBox div.navigation button{position:absolute;top:20%;bottom:20%;padding:0 2em;background-color:transparent;opacity:.5}#apijsBox div.navigation button:active,#apijsBox div.navigation button:focus,#apijsBox div.navigation button:hover{opacity:1}#apijsBox div.navigation button:disabled{opacity:0;cursor:default}#apijsBox div.navigation button span{display:block;width:2em;height:2em;border-top:2px solid #fff;border-right:2px solid #fff}#apijsBox div.navigation button.prev{right:0}#apijsBox div.navigation button.prev span{transform:rotate(45deg);-webkit-transform:rotate(45deg)}#apijsBox div.navigation button.next{left:0}#apijsBox div.navigation button.next span{transform:rotate(225deg);-webkit-transform:rotate(225deg)}#apijsBox ul.kbd{display:flex;justify-content:center;margin:0;text-align:center;font-size:.8em;white-space:nowrap;list-style:none;background-color:#666}#apijsBox ul.kbd li{margin:0 .5em;line-height:1.2rem}#apijsBox ul.kbd li kbd:last-child{margin-left:.4em}#apijsBox kbd{margin-left:.2em;padding:0 .21em;font-size:inherit;font-weight:700;text-transform:uppercase;border:0;background-color:#888}@font-face{src:url("../fonts/apijs/fontello.woff2") format("woff2"),url("../fonts/apijs/fontello.woff") format("woff");font-family:apijsFontello;font-weight:400;font-style:normal}#apijsBox div.btns button span:before,#apijsBox h1:before,#apijsBox kbd:before,div.apijsplayer span.fnt{font-family:apijsFontello;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-decoration:inherit;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#apijsBox h1:before{float:right;width:1.3em;text-align:center;font-size:1.5em}#apijsBox.information h1:before{content:"\E80B\0000A0"}#apijsBox.confirmation h1:before{content:"\E80C\0000A0"}#apijsBox.options h1:before{content:"\E80E\0000A0"}#apijsBox.upload h1:before{content:"\F15B\0000A0"}#apijsBox.progress h1:before{content:"\F1D8\0000A0"}#apijsBox.waiting h1:before{content:"\F1D8\0000A0"}#apijsBox.download h1:before{content:"\F15B\0000A0"}#apijsBox.print h1:before{content:"\E80D\0000A0"}#apijsBox.error h1:before{content:"\E80A\0000A0"}#apijsBox.warning h1:before{content:"\E80A\0000A0"}#apijsBox div.btns button span:before{float:right}#apijsBox div.btns button.cancel span:before{content:"\E801\0000A0"}#apijsBox div.btns button.confirm span:before{content:"\E800\0000A0"}#apijsBox div.btns button.browse span:before{content:"\E802\0000A0"}#apijsBox kbd.start:before{content:"\E807";display:inline-block;transform:rotate(45deg);-webkit-transform:rotate(45deg)}#apijsBox kbd.bottom:before{content:"\E804"}#apijsBox kbd.left:before{content:"\E805"}#apijsBox kbd.right:before{content:"\E806"}#apijsBox kbd.topk:before{content:"\E807"}#apijsBox kbd.plus:before{content:"\E809"}#apijsBox kbd.minus:before{content:"\E808"}@keyframes apijsProgress{0%{width:20%}50%{transform:translate(-400%,0)}100%{width:20%}}@-webkit-keyframes apijsProgress{0%{width:20%}50%{right:80%}100%{width:20%}}@keyframes apijsFocus{50%{border-color:#bbb}}@-webkit-keyframes apijsFocus{50%{border-color:#bbb}}@keyframes apijsReplace{50%{color:transparent}100%{content:attr(data-new)}}@-webkit-keyframes apijsReplace{50%{color:transparent}100%{content:attr(data-new)}}
8
8
  /*# sourceMappingURL=apijs-screen-rtl.min.css.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../tmp/sn0qZ9","../code/apijs/src/styles/album-rtl.css","../code/apijs/src/styles/dialog-rtl.css"],"names":[],"mappings":"AAAA;;;;;;ACmBiB,cAAjB,gBACC,QAAQ,MAAO,OAAO,KAAM,SAAS,OACrC,MAAM,YAAa,iBAAiB,QAAS,WAAW,iBAAiB,IAGX,kBAApB,mBAArB,oBAAtB,qBAAmF,QAAQ,KAAM,QAAQ,GAGzG,YAAc,QAAQ,YAAa,eAAe,OAAQ,QAAQ,KAAO,eAAe,IAExF,cAAgB,QAAQ,MAAO,gBAAgB,KAAM,OAAO,IAAI,MAAM,YACtE,eAAiB,QAAQ,KAAM,UAAU,KAAM,gBAAgB,aAAc,OAAO,KAAM,EAAE,EAAG,QAAQ,EAAG,WAAW,KACrH,eAAiB,OAAO,KAAM,EAAG,QAAQ,EACzC,iBAAmB,QAAQ,GAC3B,yBAA2B,OAAO,IAAI,MAAM,KAAO,QAAQ,EAG3D,UAAY,QAAQ,KAAO,WAAW,OAEtC,aACC,QAAQ,aAAc,OAAO,KAAM,KAAO,QAAQ,KAAM,KAAM,MAAQ,eAAe,IACrF,OAAO,IAAI,MAAM,QAAS,cAAc,KAAO,iBAAiB,YAAa,WAAW,aAAa,GAAI,CAAE,iBAAiB,IAG7H,qBAAuB,OAAO,IAAI,MAAM,KAAO,iBAAiB,QAChE,eAAiB,QAAQ,MAAO,gBAAgB,KAAM,OAAO,IAAI,MAAM,YAEvE,aACC,OAAO,KAAM,KAAM,EAAG,SAAS,OAC/B,UAAU,KAAO,YAAY,OAAQ,cAAc,SAAU,WAAW,MAAM,IAG/E,mBAAqB,aAAa,KAAM,iBAAiB,QACjC,yBAAxB,uBAAmD,iBAAiB,KCjCpE,sBAA0B,OAAO,EAAG,QAAQ,EAC5C,oBAAqB,mBAAqB,OAAO,QAEjD,aACC,SAAS,MAAO,IAAI,EAAG,KAAK,EAAG,OAAO,EAAG,MAAM,EAAG,MAAM,KAAM,OAAO,KAAM,WAAW,OAAQ,UAAU,IAAK,QAAQ,MACrH,WAAW,iBAAiB,GAAI,CAAE,QAAQ,KAAO,QAAQ,EACzD,YAAY,KAAM,gBAAgB,KAAM,iBAAiB,KAAM,oBAAoB,KAGpF,mBAAqB,iBAAiB,gBAAqB,QAAQ,EACtB,qBAA7C,sBAAuB,qBAA6C,OAAO,SAE3E,UACC,SAAS,SAAU,IAAI,IAAK,QAAQ,aAAc,QAAQ,KAAM,KAAM,MAAO,MAAM,MAAO,UAAU,MAAO,WAAW,IAAK,SAAS,OACpI,WAAW,MAAO,MAAM,KAAO,cAAc,KAAO,iBAAiB,KAAO,WAAW,EAAE,EAAE,MAAM,KAGlG,gBAAiB,gBAChB,QAAQ,KAAM,eAAe,OAC7B,SAAS,SAAU,IAAI,EAAG,KAAK,EAAG,OAAO,EAAG,MAAM,EAAG,QAAQ,EAAG,MAAM,KAAM,UAAU,QAAS,WAAW,QAAS,WAAW,OAC9H,cAAc,EAAG,iBAAiB,eAAoB,WAAW,KAGlE,gBAAkB,iBAAiB,KACnC,sBAAuB,sBAAwB,iBAAiB,8BAA+B,kBAAkB,OACjH,kBAAqC,mBAAlB,iBAAuC,WAAW,KACnD,eAAlB,iBAAmC,QAAQ,MAAM,KAAM,IAGvD,qBAAuB,YAAY,KAAM,gBAAgB,KAAM,iBAAiB,KAAM,oBAAoB,KAE1G,aAAgB,OAAO,MAAO,EAAE,KAAO,OAAO,KAAM,YAAY,KAAM,UAAU,OAAQ,YAAY,IACpG,cAAgB,OAAO,IAAI,KAAM,YAAY,WAAY,UAAU,MAAQ,YAAY,SACvF,YAAgB,OAAO,IAAI,KAAM,YAAY,WAAY,UAAU,IACnE,aAAgB,OAAO,MAAO,KAAK,IACnC,iBAAmB,QAAQ,MAAO,MAAM,KAAM,OAAO,EAErD,6BAA+B,SAAS,SAAU,KAAK,IAAK,OAAO,KAGnE,uBACC,SAAS,SAAU,QAAQ,MAAO,OAAO,KAAK,KAAM,MAAM,IAAK,OAAO,KAAM,SAAS,OACrF,QAAQ,IAAI,MAAM,KAAM,iBAAiB,KAG1C,wBACC,SAAS,SAAU,IAAI,EAAG,OAAO,EAAG,MAAM,EAAG,QAAQ,MACrD,WAAW,QAAQ,kFAAuF,gBAAgB,KAAK,KAGhI,6BAA+B,MAAM,IAAK,kBAAkB,cAAc,IAAI,SAAS,OAAQ,UAAU,cAAc,IAAI,SAAS,OACpI,4BAA8B,MAAM,KAAM,kBAAkB,cAAc,IAAI,SAAS,GAAG,OAAQ,UAAU,cAAc,IAAI,SAAS,GAAG,OAI1I,qBAAuB,SAAS,SAAU,QAAQ,KAAM,OAAO,KAAM,MAAM,MAAO,OAAO,MAAO,eAAe,KAC/G,0BAA4B,KAAK,KAEjC,6BAA8B,6BAC7B,QAAQ,MAAO,KAAK,MAAO,OAAO,MAClC,UAAU,UAAY,kBAAkB,UAGzC,2BAA4B,2BAA6B,KAAK,EAAG,OAAO,iBAAkB,MAAM,EAAG,UAAU,KAAM,kBAAkB,KACxG,0BAA7B,4BAAyD,KAAK,EAAG,OAAO,iBAAkB,MAAM,EAGhG,iBACC,UAAU,MAAQ,gBAAgB,KAAM,OAAO,EAC/C,WAAW,MAAM,GAAI,CAAE,aAAa,GAAI,CAAE,iBAAiB,GAAI,CAAE,QAAQ,IAG1E,mCAAqC,QAAQ,EAAG,QAAQ,EAAG,OAAO,EAC1C,wBAAyB,uBAAjD,uBAA0E,QAAQ,EAElF,mBAAqB,SAAS,SAAU,KAAK,KAAO,OAAO,KAC3D,0BAA4B,SAAS,SAAU,KAAK,QAAS,MAAM,QACnE,gCAAkC,QAAQ,KAC1C,wCAA0C,YAAY,OACtD,kCAAoC,MAAM,QAC1C,kCAAoC,MAAM,QAE1C,0BACC,QAAQ,EAAE,KAAO,OAAO,KAAM,YAAY,KAC1C,MAAM,KAAO,OAAO,IAAI,MAAM,KAAM,cAAc,KAAO,iBAAiB,QAG3E,mCAAqC,QAAQ,GAC7C,iCAAmC,MAAM,MAAO,OAAO,EAAE,KACzD,iCAAmC,QAAQ,aAAc,OAAO,KAAM,EAErC,iCACjC,gCADA,gCACkC,aAAa,KAAM,iBAAiB,QACtE,4CAA8C,kBAAkB,WAAW,GAAG,SAAU,UAAU,WAAW,GAAG,SAGhH,mBAAqB,QAAQ,KAAM,eAAe,eAAgB,KAAK,EAAG,SAAS,OAAQ,MAAM,KAEjG,sBAAwB,QAAQ,KAAM,eAAe,OAAQ,KAAK,EAAG,SAAS,OACtB,6BAAxD,0BAA2B,4BAA4D,KAAK,EAAE,EAAE,KAAM,OAAO,KAAM,WAAW,OAC9H,0BAA4B,gBAAgB,gBAAiB,gBAAgB,iBAAkB,WAAW,WAC1G,4BAA8B,QAAQ,EAAG,OAAO,QAEhD,sBAAwB,YAAY,OAAQ,UAAU,MAAQ,iBAAiB,KAC/E,2BAA6B,OAAO,EAAE,KAAO,UAAU,KAAO,WAAW,OAGzE,oBAAsB,SAAS,SAAU,IAAI,KAAM,KAAK,KAAM,QAAQ,EAAE,IAAI,IAAI,EAAG,QAAQ,MAE3F,2BACC,QAAQ,EAAE,MAAO,YAAY,MAC7B,UAAU,KAAO,YAAY,IAAK,eAAe,UACjD,MAAM,KAAO,OAAO,IAAI,MAAM,KAAO,cAAc,EAAE,EAAE,KAAM,EAAG,iBAAiB,KAAO,QAAQ,GAG/D,kCAAmC,iCAArE,iCAAwG,QAAQ,EAGhH,gCAAkC,SAAS,SAAU,IAAI,IAAK,OAAO,IAAK,QAAQ,EAAE,IAAK,iBAAiB,YAAa,QAAQ,GACxF,uCAAwC,sCAA/E,sCAAuH,QAAQ,EAC/H,yCAA2C,QAAQ,EAAG,OAAO,QAE7D,qCACC,QAAQ,MAAO,MAAM,IAAK,OAAO,IACjC,WAAW,IAAI,MAAM,KAAO,aAAa,IAAI,MAAM,KAGpD,qCAAuC,MAAM,EAC7C,0CAA4C,UAAU,cAAe,kBAAkB,cACvF,qCAAuC,KAAK,EAC5C,0CAA4C,UAAU,eAAgB,kBAAkB,eAGxF,iBACC,QAAQ,KAAM,gBAAgB,OAAQ,OAAO,EAAG,WAAW,OAC3D,UAAU,KAAO,YAAY,OAAQ,WAAW,KAAM,iBAAiB,KAGxE,oBAAsB,OAAO,EAAE,KAAO,YAAY,OAClD,mCAAqC,YAAY,KAEjD,cACC,YAAY,KAAO,QAAQ,EAAE,MAC7B,UAAU,QAAS,YAAY,IAAK,eAAe,UAAW,OAAO,EAAG,iBAAiB,KAI1F,sBAAwB,WAAW,eAEnC,mCAAqC,QAAQ,eAC7C,mCAAqC,OAAO,KAC5C,yCAA2C,SAAS,SAAU,IAAI,MAAO,MAAM,KAAO,KAAK,KAAO,MAAM,KAAM,WAAW,QACzH,2BAA6B,QAAQ,eACA,wCAArC,oCAA+E,WAAW,QAAQ,IAAM,QAAQ,EACrE,8CAA3C,0CAA2F,QAAQ,YAEnG,qCAAuC,SAAS,QAChD,4CAA8C,MAAM,EAAG,KAAK,EAAG,MAAM,KACrE,qCAAuC,QAAQ,EAAE,IAGjD,WACC,IAAI,qCAAqC,eAAe,CAAE,oCAAoC,eAC9F,YAAY,cAAe,YAAY,IAAK,WAAW,OAGnC,sCAArB,oBAA4D,qBAAsB,yBACjF,YAAY,cAAe,WAAW,OAAQ,YAAY,IAAK,aAAa,OAAQ,eAAe,KAAM,gBAAgB,QACzH,wBAAwB,UAAW,uBAAuB,YAG3D,oBAAsB,MAAM,MAAO,MAAM,MAAO,WAAW,OAAQ,UAAU,MAC7E,gCAAmC,QAAQ,eAC3C,iCAAmC,QAAQ,eAC3C,4BAAmC,QAAQ,eAC3C,2BAAmC,QAAQ,eAC3C,6BAAmC,QAAQ,eAC3C,4BAAmC,QAAQ,eAC3C,6BAAmC,QAAQ,eAC3C,0BAAmC,QAAQ,eAC3C,0BAAmC,QAAQ,eAC3C,4BAAmC,QAAQ,eAE3C,sCAAwC,MAAM,MAC9C,6CAAgD,QAAQ,eACxD,8CAAgD,QAAQ,eACxD,6CAAgD,QAAQ,eAExD,2BAA8B,QAAQ,QAAS,QAAQ,aAAc,UAAU,cAAe,kBAAkB,cAChH,4BAA8B,QAAQ,QACtC,0BAA8B,QAAQ,QACtC,2BAA8B,QAAQ,QACtC,0BAA8B,QAAQ,QACtC,0BAA8B,QAAQ,QACtC,2BAA8B,QAAQ,QAGtC,yBAAoC,GAAK,MAAM,IAAO,IAAM,UAAU,mBAAuB,KAAO,MAAM,KAC1G,iCAAoC,GAAK,MAAM,IAAO,IAAM,MAAM,IAAO,KAAO,MAAM,KACtF,sBAAmC,IAAM,aAAa,MACtD,8BAAmC,IAAM,aAAa","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs - 6.6.0\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created V/08/05/2009\n * Updated J/12/09/2019\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv.gallery img, div.album img {\n\tdisplay:block; margin:auto; overflow:hidden;\n\tcolor:transparent; background-color:#EFEFEF; transition:background-color 0.3s;\n}\n\ndiv.gallery a:before, div.gallery a:after, div.album a:before, div.album a:after { display:none; content:\"\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& gallery &&& */\ndiv.gallery { display:inline-flex; flex-direction:column; padding:0.5em; vertical-align:top; }\n\ndiv.gallery a { display:block; text-decoration:none; border:1px solid transparent; }\ndiv.gallery ul { display:flex; flex-wrap:wrap; justify-content:space-around; margin:0.3em 0 0; padding:0; list-style:none; }\ndiv.gallery li { margin:0.1em 0; padding:0; }\ndiv.gallery li a { opacity:0.7; }\ndiv.gallery li a.current { border:1px solid white; opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& album &&& */\ndiv.album { padding:0.4em; text-align:center; }\n\ndiv.album dl {\n\tdisplay:inline-block; margin:0.3em 0.1em; padding:0.5em 0.5em 0.45em; vertical-align:top;\n\tborder:1px solid #EFEFEF; border-radius:0.6em; background-color:transparent; transition:border-color 0.3s, background-color 0.3s;\n}\n\ndiv.album dl.current { border:1px solid white; background-color:#EFEFEF; }\ndiv.album dt a { display:block; text-decoration:none; border:1px solid transparent; }\n\ndiv.album dd {\n\tmargin:0.5em 0.5em 0; overflow:hidden;\n\tfont-size:0.8em; white-space:nowrap; text-overflow:ellipsis; transition:color 0.3s;\n}\n\ndiv.album dl:hover { border-color:#CCC; background-color:#EFEFEF; }\ndiv.album dl:hover img, div.album dl.current img { background-color:white; }","/**\n * Created V/08/05/2009\n * Updated W/03/03/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv[id=\"apijsDialog\"] * { margin:0; padding:0; }\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n\n#apijsDialog {\n\tposition:fixed; top:0; left:0; bottom:0; right:0; width:100%; height:100%; text-align:center; direction:rtl; z-index:99000;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n\tuser-select:none; -ms-user-select:none; -moz-user-select:none; -webkit-user-select:none;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.progress, #apijsDialog.waiting, #apijsDialog.loading { cursor:progress; }\n\n#apijsBox {\n\tposition:relative; top:21%; display:inline-block; padding:0.6em 0.8em 2.4em; width:26rem; max-width:26rem; min-height:9em; overflow:hidden;\n\ttext-align:right; color:black; border-radius:0.8em; background-color:white; box-shadow:0 0 2.5em #111;\n}\n\n#apijsBox.photo, #apijsBox.video {\n\tdisplay:flex; flex-direction:column;\n\tposition:absolute; top:0; left:0; bottom:0; right:0; padding:0; width:auto; max-width:inherit; min-height:inherit; text-align:center;\n\tborder-radius:0; background-color:rgba(0, 0, 0, 0.8); box-shadow:none;\n}\n\n#apijsBox.video { background-color:black; }\n#apijsBox.photo.error, #apijsBox.video.error { background-image:url(\"../images/apijs/tv.gif\"); background-repeat:repeat; }\n#apijsBox.options, #apijsBox.upload, #apijsBox.progress { min-height:15em; }\n#apijsBox.iframe, #apijsBox.ajax { padding:2.5em 0.8em 1em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& texte &&& */\n#apijsBox div.bbcode { user-select:text; -ms-user-select:text; -moz-user-select:text; -webkit-user-select:text; }\n\n#apijsBox h1 { margin:0.15em 0 0.7em; height:32px; line-height:32px; font-size:1.49em; font-weight:700; }\n#apijsBox pre { margin:1em auto; line-height:1.42857143; font-size:0.7rem; white-space:pre-wrap; }\n#apijsBox p { margin:1em auto; line-height:1.42857143; font-size:1em; }\n#apijsBox ul { margin:-0.4em auto 1em; }\n#apijsBox iframe { display:block; width:100%; border:0; }\n\n#apijsBox.progress span.info { position:absolute; left:1em; bottom:0.8em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& barre de progression &&& */\n#apijsBox.progress svg {\n\tposition:relative; display:block; margin:18px auto; width:80%; height:20px; overflow:hidden;\n\toutline:1px solid #333; background-color:#AAA;\n}\n\n#apijsBox.progress rect {\n\tposition:absolute; top:0; bottom:0; right:0; display:block;\n\tbackground:#03FF00 repeating-linear-gradient(45deg, #03FF00 0, #03FF00 10px, #00EF00 10px, #00EF00 20px); background-size:28px 100%;\n}\n\n#apijsBox.progress rect.auto { width:20%; -webkit-animation:apijsProgress 10s infinite linear; animation:apijsProgress 10s infinite linear; }\n#apijsBox.progress rect.end { width:100%; -webkit-animation:apijsProgress 10s infinite 3s linear; animation:apijsProgress 10s infinite 3s linear; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& image d'attente &&& **\n * (loading) waiting photo video iframe ajax */\n#apijsBox svg.loader { position:absolute; display:none; margin:auto; width:128px; height:128px; pointer-events:none; }\n#apijsBox svg.loader path { fill:gray; }\n\n#apijsBox.loading svg.loader, #apijsBox.waiting svg.loader {\n\tdisplay:block; left:-40px; bottom:-40px;\n\ttransform:scale(0.2); -webkit-transform:scale(0.2);\n}\n\n#apijsBox.photo svg.loader, #apijsBox.video svg.loader { left:0; bottom:calc(50% - 64px); right:0; transform:none; -webkit-transform:none; }\n#apijsBox.iframe svg.loader, #apijsBox.ajax svg.loader { left:0; bottom:calc(50% - 64px); right:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\n#apijsBox button {\n\tfont-size:0.85em; text-decoration:none; border:0;\n\ttransition:color 0.4s, border-color 0.4s, background-color 0.4s, opacity 0.4s;\n}\n\n#apijsBox button::-moz-focus-inner { padding:0; outline:0; border:0; }\n#apijsBox button:hover, #apijsBox button:active, #apijsBox button:focus { outline:0; }\n\n#apijsBox div.btns { position:absolute; left:0.8em; bottom:0.6em; }\n#apijsBox div.btns.upload { position:relative; left:inherit; right:inherit; }\n#apijsBox div.btns.upload input { display:none; }\n#apijsBox div.btns.upload div.filenames { white-space:nowrap; }\n#apijsBox div.btns.upload span.sz { color:#676767; }\n#apijsBox div.btns.upload span.ee { color:#E41101; }\n\n#apijsBox div.btns button {\n\tpadding:0 0.7em; height:auto; line-height:24px;\n\tcolor:black; border:1px solid #BBB; border-radius:0.4em; background-color:#E2E2E2;\n}\n\n#apijsBox div.btns button:disabled { opacity:0.5; }\n#apijsBox div.btns button.cancel { float:right; margin:0 0.5em; }\n#apijsBox div.btns button.browse { display:inline-block; margin:0.5em 0; }\n\n#apijsBox div.btns button:hover, #apijsBox div.btns button:active,\n#apijsBox div.btns button:focus { border-color:#555; background-color:#F4F4F4; }\n#apijsBox div.btns button:focus:not(:hover) { -webkit-animation:apijsFocus 1s infinite; animation:apijsFocus 1s infinite; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues photo et vidéo &&& */\n#apijsBox dl.media { display:flex; flex-direction:column-reverse; flex:1; overflow:hidden; color:white; }\n\n#apijsBox dl.media dt { display:flex; flex-direction:column; flex:1; overflow:hidden; }\n#apijsBox dl.media dt img, #apijsBox dl.media dt video, #apijsBox dl.media dt iframe { flex:1 1 auto; height:100%; visibility:hidden; }\n#apijsBox dl.media dt img { image-rendering:optimizeQuality; image-rendering:-moz-crisp-edges; object-fit:scale-down; }\n#apijsBox dl.media dt video { outline:0; cursor:pointer; }\n\n#apijsBox dl.media dd { line-height:1.5rem; font-size:0.85em; background-color:#666; }\n#apijsBox dl.media dd span { margin:0 0.6em; font-size:0.9em; font-style:italic; }\n\n/* &&&&&&&&&&&&&&&&&&&& bouton de fermeture &&& */\n#apijsBox div.close { position:absolute; top:-2px; left:-2px; padding:0 3em 3em 0; z-index:99600; }\n\n#apijsBox div.close button {\n\tpadding:0 1.4em; line-height:2.6em;\n\tfont-size:0.8em; font-weight:700; text-transform:uppercase;\n\tcolor:white; border:2px solid white; border-radius:0 0 0.8em 0; background-color:black; opacity:0.8;\n}\n\n#apijsBox div.close button:hover, #apijsBox div.close button:active, #apijsBox div.close button:focus { opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:20%; bottom:20%; padding:0 2em; background-color:transparent; opacity:0.5; }\n#apijsBox div.navigation button:hover, #apijsBox div.navigation button:active, #apijsBox div.navigation button:focus { opacity:1; }\n#apijsBox div.navigation button:disabled { opacity:0; cursor:default; }\n\n#apijsBox div.navigation button span {\n\tdisplay:block; width:2em; height:2em;\n\tborder-top:2px solid white; border-right:2px solid white;\n}\n\n#apijsBox div.navigation button.prev { right:0; }\n#apijsBox div.navigation button.prev span { transform:rotate(45deg); -webkit-transform:rotate(45deg); }\n#apijsBox div.navigation button.next { left:0; }\n#apijsBox div.navigation button.next span { transform:rotate(225deg); -webkit-transform:rotate(225deg); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& clavier &&& */\n#apijsBox ul.kbd {\n\tdisplay:flex; justify-content:center; margin:0; text-align:center;\n\tfont-size:0.8em; white-space:nowrap; list-style:none; background-color:#666;\n}\n\n#apijsBox ul.kbd li { margin:0 0.5em; line-height:1.2rem; }\n#apijsBox ul.kbd li kbd:last-child { margin-left:0.4em; }\n\n#apijsBox kbd {\n\tmargin-left:0.2em; padding:0 0.21em;\n\tfont-size:inherit; font-weight:700; text-transform:uppercase; border:0; background-color:#888;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& media queries (via js) &&& */\n#apijsDialog.reduce * { transition:none !important; }\n\n#apijsBox.fullscreen .nofullscreen { display:none !important; }\n#apijsBox.fullscreen.playing video { cursor:none; }\n#apijsBox.mobile:not(.photo):not(.video) { position:absolute; top:1.5em; right:0.5em; left:0.5em; width:auto; min-height:inherit; }\n#apijsBox.mobile .nomobile { display:none !important; }\n#apijsBox.mobile.playing .noplaying, #apijsBox.fullscreen.playing .noplaying { transition:opacity 0.5s; opacity:0; }\n#apijsBox.mobile.playing .noplaying:hover, #apijsBox.fullscreen.playing .noplaying:hover { opacity:1 !important; }\n\n#apijsBox.tiny div.apijsplayer label { position:initial; }\n#apijsBox.tiny div.apijsplayer label select { right:0; left:0; width:100%; }\n#apijsBox.tiny div.navigation button { padding:0 1em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& images &&& */\n@font-face {\n\tsrc:url(\"../fonts/apijs/fontello.woff2\") format(\"woff2\"), url(\"../fonts/apijs/fontello.woff\") format(\"woff\");\n\tfont-family:apijsFontello; font-weight:400; font-style:normal;\n}\n\n#apijsBox h1:before, #apijsBox div.btns button span:before, #apijsBox kbd:before, div.apijsplayer span.fnt {\n\tfont-family:apijsFontello; font-style:normal; font-weight:400; font-variant:normal; text-transform:none; text-decoration:inherit;\n\t-moz-osx-font-smoothing:grayscale; -webkit-font-smoothing:antialiased;\n}\n\n#apijsBox h1:before { float:right; width:1.3em; text-align:center; font-size:1.5em; }\n#apijsBox.information h1:before { content:\"\\E80B\\0000A0\"; }\n#apijsBox.confirmation h1:before { content:\"\\E80C\\0000A0\"; }\n#apijsBox.options h1:before { content:\"\\E80E\\0000A0\"; }\n#apijsBox.upload h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.progress h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.waiting h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.download h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.print h1:before { content:\"\\E80D\\0000A0\"; }\n#apijsBox.error h1:before { content:\"\\E80A\\0000A0\"; }\n#apijsBox.warning h1:before { content:\"\\E80A\\0000A0\"; }\n\n#apijsBox div.btns button span:before { float:right; }\n#apijsBox div.btns button.cancel span:before { content:\"\\E801\\0000A0\"; }\n#apijsBox div.btns button.confirm span:before { content:\"\\E800\\0000A0\"; }\n#apijsBox div.btns button.browse span:before { content:\"\\E802\\0000A0\"; }\n\n#apijsBox kbd.start:before { content:\"\\E807\"; display:inline-block; transform:rotate(45deg); -webkit-transform:rotate(45deg); }\n#apijsBox kbd.bottom:before { content:\"\\E804\"; }\n#apijsBox kbd.left:before { content:\"\\E805\"; }\n#apijsBox kbd.right:before { content:\"\\E806\"; }\n#apijsBox kbd.topk:before { content:\"\\E807\"; }\n#apijsBox kbd.plus:before { content:\"\\E809\"; }\n#apijsBox kbd.minus:before { content:\"\\E808\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& animations &&& */\n@keyframes apijsProgress { 0% { width:20%; } 50% { transform:translate(-400%, 0); } 100% { width:20%; } }\n@-webkit-keyframes apijsProgress { 0% { width:20%; } 50% { right:80%; } 100% { width:20%; } }\n@keyframes apijsFocus { 50% { border-color:#BBB; } }\n@-webkit-keyframes apijsFocus { 50% { border-color:#BBB; } }"]}
1
+ {"version":3,"sources":["../../../../../../../tmp/RLijtM","../styles/album-rtl.css","../styles/dialog-rtl.css"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs - 6.7.0\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created V/08/05/2009\n * Updated J/12/09/2019\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv.gallery img, div.album img {\n\tdisplay:block; margin:auto; overflow:hidden;\n\tcolor:transparent; background-color:#EFEFEF; transition:background-color 0.3s;\n}\n\ndiv.gallery a:before, div.gallery a:after, div.album a:before, div.album a:after { display:none; content:\"\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& gallery &&& */\ndiv.gallery { display:inline-flex; flex-direction:column; padding:0.5em; vertical-align:top; }\n\ndiv.gallery a { display:block; text-decoration:none; border:1px solid transparent; }\ndiv.gallery ul { display:flex; flex-wrap:wrap; justify-content:space-around; margin:0.3em 0 0; padding:0; list-style:none; }\ndiv.gallery li { margin:0.1em 0; padding:0; }\ndiv.gallery li a { opacity:0.7; }\ndiv.gallery li a.current { border:1px solid white; opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& album &&& */\ndiv.album { padding:0.4em; text-align:center; }\n\ndiv.album dl {\n\tdisplay:inline-block; margin:0.3em 0.1em; padding:0.5em 0.5em 0.45em; vertical-align:top;\n\tborder:1px solid #EFEFEF; border-radius:0.6em; background-color:transparent; transition:border-color 0.3s, background-color 0.3s;\n}\n\ndiv.album dl.current { border:1px solid white; background-color:#EFEFEF; }\ndiv.album dt a { display:block; text-decoration:none; border:1px solid transparent; }\n\ndiv.album dd {\n\tmargin:0.5em 0.5em 0; overflow:hidden;\n\tfont-size:0.8em; white-space:nowrap; text-overflow:ellipsis; transition:color 0.3s;\n}\n\ndiv.album dl:hover { border-color:#CCC; background-color:#EFEFEF; }\ndiv.album dl:hover img, div.album dl.current img { background-color:white; }","/**\n * Created V/08/05/2009\n * Updated V/18/06/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv[id=\"apijsDialog\"] * { margin:0; padding:0; }\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n\n#apijsDialog {\n\tposition:fixed; top:0; left:0; bottom:0; right:0; width:100%; height:100%; text-align:center; direction:rtl; z-index:99000;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n\tuser-select:none; -ms-user-select:none; -moz-user-select:none; -webkit-user-select:none;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.progress, #apijsDialog.waiting, #apijsDialog.loading { cursor:progress; }\n#apijsDialog.reduce, #apijsDialog.reduce * { transition:none !important; }\n\n#apijsBox {\n\tposition:relative; top:21%; display:inline-block; padding:0.6em 0.8em 2.4em; width:26rem; max-width:26rem; min-height:9em; overflow:hidden;\n\ttext-align:right; color:black; border-radius:0.8em; background-color:white; box-shadow:0 0 2.5em #111;\n}\n\n#apijsBox.photo, #apijsBox.video {\n\tdisplay:flex; flex-direction:column;\n\tposition:absolute; top:0; left:0; bottom:0; right:0; padding:0; width:auto; max-width:inherit; min-height:inherit; text-align:center;\n\tborder-radius:0; background-color:rgba(0, 0, 0, 0.8); box-shadow:none;\n}\n\n#apijsBox.video { background-color:black; }\n#apijsBox.photo.error, #apijsBox.video.error { background-image:url(\"../images/apijs/tv.gif\"); background-repeat:repeat; }\n#apijsBox.options, #apijsBox.upload, #apijsBox.progress { min-height:15em; }\n#apijsBox.iframe, #apijsBox.ajax { padding:2.5em 0.8em 1em; }\n\n#apijsBox.mobile:not(.photo):not(.video) { position:absolute; top:1.5em; right:0.5em; left:0.5em; width:auto; min-height:inherit; }\n#apijsBox.tiny div.navigation button { padding:0 1em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& glisser/déposer &&& */\n#apijsDialog.drag:before {\n\tposition:absolute; top:1em; left:1em; bottom:1em; right:1em; content:\"\";\n\tborder: 2px dashed white;\n}\n\n#apijsDialog p.drag { position:absolute; left:0; bottom:0; margin:1.5em; font-size:1.3em; color:white; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& texte &&& */\n#apijsBox div.bbcode { user-select:text; -ms-user-select:text; -moz-user-select:text; -webkit-user-select:text; }\n\n#apijsBox h1 { margin:0.15em 0 0.7em; height:32px; line-height:32px; font-size:1.49em; font-weight:700; }\n#apijsBox pre { margin:1em auto; line-height:1.42857143; font-size:0.7rem; white-space:pre-wrap; }\n#apijsBox p { margin:1em auto; line-height:1.42857143; font-size:1em; }\n#apijsBox ul { margin:-0.4em auto 1em; }\n#apijsBox iframe { display:block; width:100%; border:0; }\n\n#apijsBox.progress p.anim:before {\n\tcontent:attr(data-old);\n\t-webkit-animation:apijsReplace 1s linear 2s forwards; animation:apijsReplace 1s linear 2s forwards;\n}\n\n#apijsBox.progress span.info { position:absolute; left:1em; bottom:0.8em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& barre de progression &&& */\n#apijsBox.progress svg {\n\tposition:relative; display:block; margin:18px auto; width:80%; height:20px; overflow:hidden;\n\toutline:1px solid #333; background-color:#AAA;\n}\n\n#apijsBox.progress rect {\n\tposition:absolute; top:0; bottom:0; right:0; display:block;\n\tbackground:#03FF00 repeating-linear-gradient(45deg, #03FF00 0, #03FF00 10px, #00EF00 10px, #00EF00 20px); background-size:28px 100%;\n}\n\n#apijsBox.progress rect.auto { width:20%; -webkit-animation:apijsProgress 10s infinite linear; animation:apijsProgress 10s infinite linear; }\n#apijsBox.progress rect.end { width:100%; -webkit-animation:apijsProgress 10s infinite 3s linear; animation:apijsProgress 10s infinite 3s linear; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& image d'attente &&& **\n * (loading) waiting photo video iframe ajax */\n#apijsBox svg.loader { position:absolute; display:none; margin:auto; width:128px; height:128px; pointer-events:none; }\n#apijsBox svg.loader path { fill:gray; }\n\n#apijsBox.loading svg.loader, #apijsBox.waiting svg.loader {\n\tdisplay:block; left:-40px; bottom:-40px;\n\ttransform:scale(0.2); -webkit-transform:scale(0.2);\n}\n\n#apijsBox.photo svg.loader, #apijsBox.video svg.loader { left:0; bottom:calc(50% - 64px); right:0; transform:none; -webkit-transform:none; }\n#apijsBox.iframe svg.loader, #apijsBox.ajax svg.loader { left:0; bottom:calc(50% - 64px); right:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\n#apijsBox button {\n\tfont-size:0.85em; text-decoration:none; border:0;\n\ttransition:color 0.4s, border-color 0.4s, background-color 0.4s, opacity 0.4s;\n}\n\n#apijsBox button::-moz-focus-inner { padding:0; outline:0; border:0; }\n#apijsBox button:hover, #apijsBox button:active, #apijsBox button:focus { outline:0; }\n\n#apijsBox div.btns { position:absolute; left:0.8em; bottom:0.6em; }\n#apijsBox div.btns.upload { position:relative; left:inherit; right:inherit; }\n#apijsBox div.btns.upload input { display:none; }\n#apijsBox div.btns.upload div.filenames { max-height:11em; overflow-y:auto; }\n#apijsBox div.btns.upload table { border-spacing:0; }\n#apijsBox div.btns.upload td + td { padding-right:0.6em; }\n#apijsBox div.btns.upload td.nb { font-size:0.85em; color:#676767; }\n#apijsBox div.btns.upload td.size { color:#676767; }\n#apijsBox div.btns.upload td.err { color:#E41101; }\n\n#apijsBox div.btns button {\n\tpadding:0 0.7em; height:auto; line-height:24px;\n\tcolor:black; border:1px solid #BBB; border-radius:0.4em; background-color:#E2E2E2;\n}\n\n#apijsBox div.btns button:disabled { opacity:0.5; }\n#apijsBox div.btns button.cancel { float:right; margin:0 0.5em; }\n#apijsBox div.btns button.browse { display:inline-block; margin:0.5em 0; }\n\n#apijsBox div.btns button:hover, #apijsBox div.btns button:active,\n#apijsBox div.btns button:focus { border-color:#555; background-color:#F4F4F4; }\n#apijsBox div.btns button:focus:not(:hover) { -webkit-animation:apijsFocus 1s infinite; animation:apijsFocus 1s infinite; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues photo et vidéo &&& */\n#apijsBox dl.media { display:flex; flex-direction:column-reverse; flex:1; overflow:hidden; color:white; }\n\n#apijsBox dl.media dt { display:flex; flex-direction:column; flex:1; overflow:hidden; }\n#apijsBox dl.media dt img, #apijsBox dl.media dt video, #apijsBox dl.media dt iframe { flex:1 1 auto; height:100%; visibility:hidden; }\n#apijsBox dl.media dt img { image-rendering:optimizeQuality; image-rendering:-moz-crisp-edges; object-fit:scale-down; }\n#apijsBox dl.media dt video { z-index:50; outline:0; cursor:pointer; }\n\n#apijsBox dl.media dd { line-height:1.5rem; font-size:0.85em; background-color:#666; }\n#apijsBox dl.media dd span { margin:0 0.6em; font-size:0.9em; font-style:italic; }\n\n/* &&&&&&&&&&&&&&&&&&&& bouton de fermeture &&& */\n#apijsBox div.close { position:absolute; top:-2px; left:-2px; padding:0 3em 3em 0; z-index:99600; }\n\n#apijsBox div.close button {\n\tpadding:0 1.4em; line-height:2.6em;\n\tfont-size:0.8em; font-weight:700; text-transform:uppercase;\n\tcolor:white; border:2px solid white; border-radius:0 0 0.8em 0; background-color:black; opacity:0.8;\n}\n\n#apijsBox div.close button:hover, #apijsBox div.close button:active, #apijsBox div.close button:focus { opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:20%; bottom:20%; padding:0 2em; background-color:transparent; opacity:0.5; }\n#apijsBox div.navigation button:hover, #apijsBox div.navigation button:active, #apijsBox div.navigation button:focus { opacity:1; }\n#apijsBox div.navigation button:disabled { opacity:0; cursor:default; }\n\n#apijsBox div.navigation button span {\n\tdisplay:block; width:2em; height:2em;\n\tborder-top:2px solid white; border-right:2px solid white;\n}\n\n#apijsBox div.navigation button.prev { right:0; }\n#apijsBox div.navigation button.prev span { transform:rotate(45deg); -webkit-transform:rotate(45deg); }\n#apijsBox div.navigation button.next { left:0; }\n#apijsBox div.navigation button.next span { transform:rotate(225deg); -webkit-transform:rotate(225deg); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& clavier &&& */\n#apijsBox ul.kbd {\n\tdisplay:flex; justify-content:center; margin:0; text-align:center;\n\tfont-size:0.8em; white-space:nowrap; list-style:none; background-color:#666;\n}\n\n#apijsBox ul.kbd li { margin:0 0.5em; line-height:1.2rem; }\n#apijsBox ul.kbd li kbd:last-child { margin-left:0.4em; }\n\n#apijsBox kbd {\n\tmargin-left:0.2em; padding:0 0.21em;\n\tfont-size:inherit; font-weight:700; text-transform:uppercase; border:0; background-color:#888;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& images &&& */\n@font-face {\n\tsrc:url(\"../fonts/apijs/fontello.woff2\") format(\"woff2\"), url(\"../fonts/apijs/fontello.woff\") format(\"woff\");\n\tfont-family:apijsFontello; font-weight:400; font-style:normal;\n}\n\n#apijsBox h1:before, #apijsBox div.btns button span:before, #apijsBox kbd:before, div.apijsplayer span.fnt {\n\tfont-family:apijsFontello; font-style:normal; font-weight:400; font-variant:normal; text-transform:none; text-decoration:inherit;\n\t-moz-osx-font-smoothing:grayscale; -webkit-font-smoothing:antialiased;\n}\n\n#apijsBox h1:before { float:right; width:1.3em; text-align:center; font-size:1.5em; }\n#apijsBox.information h1:before { content:\"\\E80B\\0000A0\"; }\n#apijsBox.confirmation h1:before { content:\"\\E80C\\0000A0\"; }\n#apijsBox.options h1:before { content:\"\\E80E\\0000A0\"; }\n#apijsBox.upload h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.progress h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.waiting h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.download h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.print h1:before { content:\"\\E80D\\0000A0\"; }\n#apijsBox.error h1:before { content:\"\\E80A\\0000A0\"; }\n#apijsBox.warning h1:before { content:\"\\E80A\\0000A0\"; }\n\n#apijsBox div.btns button span:before { float:right; }\n#apijsBox div.btns button.cancel span:before { content:\"\\E801\\0000A0\"; }\n#apijsBox div.btns button.confirm span:before { content:\"\\E800\\0000A0\"; }\n#apijsBox div.btns button.browse span:before { content:\"\\E802\\0000A0\"; }\n\n#apijsBox kbd.start:before { content:\"\\E807\"; display:inline-block; transform:rotate(45deg); -webkit-transform:rotate(45deg); }\n#apijsBox kbd.bottom:before { content:\"\\E804\"; }\n#apijsBox kbd.left:before { content:\"\\E805\"; }\n#apijsBox kbd.right:before { content:\"\\E806\"; }\n#apijsBox kbd.topk:before { content:\"\\E807\"; }\n#apijsBox kbd.plus:before { content:\"\\E809\"; }\n#apijsBox kbd.minus:before { content:\"\\E808\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& animations &&& */\n@keyframes apijsProgress { 0% { width:20%; } 50% { transform:translate(-400%, 0); } 100% { width:20%; } }\n@-webkit-keyframes apijsProgress { 0% { width:20%; } 50% { right:80%; } 100% { width:20%; } }\n@keyframes apijsFocus { 50% { border-color:#BBB; } }\n@-webkit-keyframes apijsFocus { 50% { border-color:#BBB; } }\n@keyframes apijsReplace { 50% { color:transparent; } 100% { content:attr(data-new); } }\n@-webkit-keyframes apijsReplace { 50% { color:transparent; } 100% { content:attr(data-new); } }"]}
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
3
- * https://www.luigifab.fr/apijs - 6.6.0
3
+ * https://www.luigifab.fr/apijs - 6.7.0
4
4
  * This program is free software, you can redistribute it or modify
5
5
  * it under the terms of the GNU General Public License (GPL).
6
6
  */
7
- div.album img,div.gallery img{display:block;margin:auto;overflow:hidden;color:transparent;background-color:#efefef;transition:background-color .3s}div.album a:after,div.album a:before,div.gallery a:after,div.gallery a:before{display:none;content:""}div.gallery{display:inline-flex;flex-direction:column;padding:.5em;vertical-align:top}div.gallery a{display:block;text-decoration:none;border:1px solid transparent}div.gallery ul{display:flex;flex-wrap:wrap;justify-content:space-around;margin:.3em 0 0;padding:0;list-style:none}div.gallery li{margin:.1em 0;padding:0}div.gallery li a{opacity:.7}div.gallery li a.current{border:1px solid #fff;opacity:1}div.album{padding:.4em;text-align:center}div.album dl{display:inline-block;margin:.3em .1em;padding:.5em .5em .45em;vertical-align:top;border:1px solid #efefef;border-radius:.6em;background-color:transparent;transition:border-color .3s,background-color .3s}div.album dl.current{border:1px solid #fff;background-color:#efefef}div.album dt a{display:block;text-decoration:none;border:1px solid transparent}div.album dd{margin:.5em .5em 0;overflow:hidden;font-size:.8em;white-space:nowrap;text-overflow:ellipsis;transition:color .3s}div.album dl:hover{border-color:#ccc;background-color:#efefef}div.album dl.current img,div.album dl:hover img{background-color:#fff}div[id=apijsDialog] *{margin:0;padding:0}#apijsDialog button,#apijsDialog label{cursor:pointer}#apijsDialog{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;text-align:center;direction:ltr;z-index:99000;transition:background-color .5s,opacity .25s;opacity:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none}#apijsDialog.ready{background-color:rgba(0,0,0,.65);opacity:1}#apijsDialog.loading,#apijsDialog.progress,#apijsDialog.waiting{cursor:progress}#apijsBox{position:relative;top:21%;display:inline-block;padding:.6em .8em 2.4em;width:26rem;max-width:26rem;min-height:9em;overflow:hidden;text-align:left;color:#000;border-radius:.8em;background-color:#fff;box-shadow:0 0 2.5em #111}#apijsBox.photo,#apijsBox.video{display:flex;flex-direction:column;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;width:auto;max-width:inherit;min-height:inherit;text-align:center;border-radius:0;background-color:rgba(0,0,0,.8);box-shadow:none}#apijsBox.video{background-color:#000}#apijsBox.photo.error,#apijsBox.video.error{background-image:url("../images/apijs/tv.gif");background-repeat:repeat}#apijsBox.options,#apijsBox.progress,#apijsBox.upload{min-height:15em}#apijsBox.ajax,#apijsBox.iframe{padding:2.5em .8em 1em}#apijsBox div.bbcode{user-select:text;-ms-user-select:text;-moz-user-select:text;-webkit-user-select:text}#apijsBox h1{margin:.15em 0 .7em;height:32px;line-height:32px;font-size:1.49em;font-weight:700}#apijsBox pre{margin:1em auto;line-height:1.42857143;font-size:.7rem;white-space:pre-wrap}#apijsBox p{margin:1em auto;line-height:1.42857143;font-size:1em}#apijsBox ul{margin:-.4em auto 1em}#apijsBox iframe{display:block;width:100%;border:0}#apijsBox.progress span.info{position:absolute;right:1em;bottom:.8em}#apijsBox.progress svg{position:relative;display:block;margin:18px auto;width:80%;height:20px;overflow:hidden;outline:1px solid #333;background-color:#aaa}#apijsBox.progress rect{position:absolute;top:0;bottom:0;left:0;display:block;background:#03ff00 repeating-linear-gradient(-45deg,#03ff00 0,#03ff00 10px,#00ef00 10px,#00ef00 20px);background-size:28px 100%}#apijsBox.progress rect.auto{width:20%;-webkit-animation:apijsProgress 10s infinite linear;animation:apijsProgress 10s infinite linear}#apijsBox.progress rect.end{width:100%;-webkit-animation:apijsProgress 10s infinite 3s linear;animation:apijsProgress 10s infinite 3s linear}#apijsBox svg.loader{position:absolute;display:none;margin:auto;width:128px;height:128px;pointer-events:none}#apijsBox svg.loader path{fill:gray}#apijsBox.loading svg.loader,#apijsBox.waiting svg.loader{display:block;right:-40px;bottom:-40px;transform:scale(.2);-webkit-transform:scale(.2)}#apijsBox.photo svg.loader,#apijsBox.video svg.loader{right:0;bottom:calc(50% - 64px);left:0;transform:none;-webkit-transform:none}#apijsBox.ajax svg.loader,#apijsBox.iframe svg.loader{right:0;bottom:calc(50% - 64px);left:0}#apijsBox button{font-size:.85em;text-decoration:none;border:0;transition:color .4s,border-color .4s,background-color .4s,opacity .4s}#apijsBox button::-moz-focus-inner{padding:0;outline:0;border:0}#apijsBox button:active,#apijsBox button:focus,#apijsBox button:hover{outline:0}#apijsBox div.btns{position:absolute;right:.8em;bottom:.6em}#apijsBox div.btns.upload{position:relative;right:inherit;left:inherit}#apijsBox div.btns.upload input{display:none}#apijsBox div.btns.upload div.filenames{white-space:nowrap}#apijsBox div.btns.upload span.sz{color:#676767}#apijsBox div.btns.upload span.ee{color:#e41101}#apijsBox div.btns button{padding:0 .7em;height:auto;line-height:24px;color:#000;border:1px solid #bbb;border-radius:.4em;background-color:#e2e2e2}#apijsBox div.btns button:disabled{opacity:.5}#apijsBox div.btns button.cancel{float:left;margin:0 .5em}#apijsBox div.btns button.browse{display:inline-block;margin:.5em 0}#apijsBox div.btns button:active,#apijsBox div.btns button:focus,#apijsBox div.btns button:hover{border-color:#555;background-color:#f4f4f4}#apijsBox div.btns button:focus:not(:hover){-webkit-animation:apijsFocus 1s infinite;animation:apijsFocus 1s infinite}#apijsBox dl.media{display:flex;flex-direction:column-reverse;flex:1;overflow:hidden;color:#fff}#apijsBox dl.media dt{display:flex;flex-direction:column;flex:1;overflow:hidden}#apijsBox dl.media dt iframe,#apijsBox dl.media dt img,#apijsBox dl.media dt video{flex:1 1 auto;height:100%;visibility:hidden}#apijsBox dl.media dt img{image-rendering:optimizeQuality;image-rendering:-moz-crisp-edges;object-fit:scale-down}#apijsBox dl.media dt video{outline:0;cursor:pointer}#apijsBox dl.media dd{line-height:1.5rem;font-size:.85em;background-color:#666}#apijsBox dl.media dd span{margin:0 .6em;font-size:.9em;font-style:italic}#apijsBox div.close{position:absolute;top:-2px;right:-2px;padding:0 0 3em 3em;z-index:99600}#apijsBox div.close button{padding:0 1.4em;line-height:2.6em;font-size:.8em;font-weight:700;text-transform:uppercase;color:#fff;border:2px solid #fff;border-radius:0 0 0 .8em;background-color:#000;opacity:.8}#apijsBox div.close button:active,#apijsBox div.close button:focus,#apijsBox div.close button:hover{opacity:1}#apijsBox div.navigation button{position:absolute;top:20%;bottom:20%;padding:0 2em;background-color:transparent;opacity:.5}#apijsBox div.navigation button:active,#apijsBox div.navigation button:focus,#apijsBox div.navigation button:hover{opacity:1}#apijsBox div.navigation button:disabled{opacity:0;cursor:default}#apijsBox div.navigation button span{display:block;width:2em;height:2em;border-top:2px solid #fff;border-left:2px solid #fff}#apijsBox div.navigation button.prev{left:0}#apijsBox div.navigation button.prev span{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}#apijsBox div.navigation button.next{right:0}#apijsBox div.navigation button.next span{transform:rotate(-225deg);-webkit-transform:rotate(-225deg)}#apijsBox ul.kbd{display:flex;justify-content:center;margin:0;text-align:center;font-size:.8em;white-space:nowrap;list-style:none;background-color:#666}#apijsBox ul.kbd li{margin:0 .5em;line-height:1.2rem}#apijsBox ul.kbd li kbd:last-child{margin-right:.4em}#apijsBox kbd{margin-right:.2em;padding:0 .21em;font-size:inherit;font-weight:700;text-transform:uppercase;border:0;background-color:#888}#apijsDialog.reduce *{transition:none!important}#apijsBox.fullscreen .nofullscreen{display:none!important}#apijsBox.fullscreen.playing video{cursor:none}#apijsBox.mobile:not(.photo):not(.video){position:absolute;top:1.5em;left:.5em;right:.5em;width:auto;min-height:inherit}#apijsBox.mobile .nomobile{display:none!important}#apijsBox.fullscreen.playing .noplaying,#apijsBox.mobile.playing .noplaying{transition:opacity .5s;opacity:0}#apijsBox.fullscreen.playing .noplaying:hover,#apijsBox.mobile.playing .noplaying:hover{opacity:1!important}#apijsBox.tiny div.apijsplayer label{position:initial}#apijsBox.tiny div.apijsplayer label select{left:0;right:0;width:100%}#apijsBox.tiny div.navigation button{padding:0 1em}@font-face{src:url("../fonts/apijs/fontello.woff2") format("woff2"),url("../fonts/apijs/fontello.woff") format("woff");font-family:apijsFontello;font-weight:400;font-style:normal}#apijsBox div.btns button span:before,#apijsBox h1:before,#apijsBox kbd:before,div.apijsplayer span.fnt{font-family:apijsFontello;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-decoration:inherit;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#apijsBox h1:before{float:left;width:1.3em;text-align:center;font-size:1.5em}#apijsBox.information h1:before{content:"\E80B\0000A0"}#apijsBox.confirmation h1:before{content:"\E80C\0000A0"}#apijsBox.options h1:before{content:"\E80E\0000A0"}#apijsBox.upload h1:before{content:"\F15B\0000A0"}#apijsBox.progress h1:before{content:"\F1D8\0000A0"}#apijsBox.waiting h1:before{content:"\F1D8\0000A0"}#apijsBox.download h1:before{content:"\F15B\0000A0"}#apijsBox.print h1:before{content:"\E80D\0000A0"}#apijsBox.error h1:before{content:"\E80A\0000A0"}#apijsBox.warning h1:before{content:"\E80A\0000A0"}#apijsBox div.btns button span:before{float:left}#apijsBox div.btns button.cancel span:before{content:"\E801\0000A0"}#apijsBox div.btns button.confirm span:before{content:"\E800\0000A0"}#apijsBox div.btns button.browse span:before{content:"\E802\0000A0"}#apijsBox kbd.start:before{content:"\E807";display:inline-block;transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}#apijsBox kbd.bottom:before{content:"\E804"}#apijsBox kbd.left:before{content:"\E805"}#apijsBox kbd.right:before{content:"\E806"}#apijsBox kbd.topk:before{content:"\E807"}#apijsBox kbd.plus:before{content:"\E809"}#apijsBox kbd.minus:before{content:"\E808"}@keyframes apijsProgress{0%{width:20%}50%{transform:translate(400%,0)}100%{width:20%}}@-webkit-keyframes apijsProgress{0%{width:20%}50%{left:80%}100%{width:20%}}@keyframes apijsFocus{50%{border-color:#bbb}}@-webkit-keyframes apijsFocus{50%{border-color:#bbb}}video.apijsplayer{display:block;margin:auto;width:100%;height:calc(100% - 1.8rem)!important;background-color:#000;cursor:pointer}div.apijsplayer *{margin:0;padding:0}div.apijsplayer{position:relative;display:flex;align-items:center;z-index:99600;margin-top:-10vh;padding-top:10vh;height:1.8rem;line-height:1.8rem;font-size:.85em;color:#fff;text-align:center;direction:ltr}div.apijsplayer span{padding:0 .4em;height:1.8rem;background-color:#070707}div.apijsplayer span.btn{padding:0;min-width:2.6em;cursor:pointer}div.apijsplayer span.svg{display:flex;align-items:center;height:100%}div.apijsplayer span.bar{flex:1}div.apijsplayer span.vol{width:7em}div.apijsplayer label{position:relative;height:1.8rem;padding:0 .4em;background-color:#070707}div.apijsplayer label option{padding:.2em .4em}div.apijsplayer label option:checked{font-weight:700}div.apijsplayer label option:disabled{font-style:italic;color:#aaa}div.apijsplayer label em{padding-left:.25em;font-style:normal}div.apijsplayer label select{display:none;position:absolute;right:0;bottom:1.8rem;min-width:20em;overflow-y:scroll;color:#000;outline:0;border:0;background:#fff;appearance:none;-moz-appearance:none;-webkit-appearance:none}div.apijsplayer label:hover,div.apijsplayer span.btn:hover{color:#000;background-color:#fff}div.apijsplayer label:hover select{display:block}div.apijsplayer svg{position:relative;flex:1;height:30%;overflow:hidden;border-radius:.4em;background-color:#222;cursor:pointer}div.apijsplayer rect{position:absolute;top:0;bottom:0;left:0;display:block;z-index:99460;background-color:#00b6f0}div.apijsplayer rect.buffer{z-index:99440;background-color:#515151}div.apijsplayer svg.vol rect{width:100%;background-color:#fff}
7
+ div.album img,div.gallery img{display:block;margin:auto;overflow:hidden;color:transparent;background-color:#efefef;transition:background-color .3s}div.album a:after,div.album a:before,div.gallery a:after,div.gallery a:before{display:none;content:""}div.gallery{display:inline-flex;flex-direction:column;padding:.5em;vertical-align:top}div.gallery a{display:block;text-decoration:none;border:1px solid transparent}div.gallery ul{display:flex;flex-wrap:wrap;justify-content:space-around;margin:.3em 0 0;padding:0;list-style:none}div.gallery li{margin:.1em 0;padding:0}div.gallery li a{opacity:.7}div.gallery li a.current{border:1px solid #fff;opacity:1}div.album{padding:.4em;text-align:center}div.album dl{display:inline-block;margin:.3em .1em;padding:.5em .5em .45em;vertical-align:top;border:1px solid #efefef;border-radius:.6em;background-color:transparent;transition:border-color .3s,background-color .3s}div.album dl.current{border:1px solid #fff;background-color:#efefef}div.album dt a{display:block;text-decoration:none;border:1px solid transparent}div.album dd{margin:.5em .5em 0;overflow:hidden;font-size:.8em;white-space:nowrap;text-overflow:ellipsis;transition:color .3s}div.album dl:hover{border-color:#ccc;background-color:#efefef}div.album dl.current img,div.album dl:hover img{background-color:#fff}div[id=apijsDialog] *{margin:0;padding:0}#apijsDialog button,#apijsDialog label{cursor:pointer}#apijsDialog{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;text-align:center;direction:ltr;z-index:99000;transition:background-color .5s,opacity .25s;opacity:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none}#apijsDialog.ready{background-color:rgba(0,0,0,.65);opacity:1}#apijsDialog.loading,#apijsDialog.progress,#apijsDialog.waiting{cursor:progress}#apijsDialog.reduce,#apijsDialog.reduce *{transition:none!important}#apijsBox{position:relative;top:21%;display:inline-block;padding:.6em .8em 2.4em;width:26rem;max-width:26rem;min-height:9em;overflow:hidden;text-align:left;color:#000;border-radius:.8em;background-color:#fff;box-shadow:0 0 2.5em #111}#apijsBox.photo,#apijsBox.video{display:flex;flex-direction:column;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;width:auto;max-width:inherit;min-height:inherit;text-align:center;border-radius:0;background-color:rgba(0,0,0,.8);box-shadow:none}#apijsBox.video{background-color:#000}#apijsBox.photo.error,#apijsBox.video.error{background-image:url("../images/apijs/tv.gif");background-repeat:repeat}#apijsBox.options,#apijsBox.progress,#apijsBox.upload{min-height:15em}#apijsBox.ajax,#apijsBox.iframe{padding:2.5em .8em 1em}#apijsBox.mobile:not(.photo):not(.video){position:absolute;top:1.5em;left:.5em;right:.5em;width:auto;min-height:inherit}#apijsBox.tiny div.navigation button{padding:0 1em}#apijsDialog.drag:before{position:absolute;top:1em;right:1em;bottom:1em;left:1em;content:"";border:2px dashed #fff}#apijsDialog p.drag{position:absolute;right:0;bottom:0;margin:1.5em;font-size:1.3em;color:#fff}#apijsBox div.bbcode{user-select:text;-ms-user-select:text;-moz-user-select:text;-webkit-user-select:text}#apijsBox h1{margin:.15em 0 .7em;height:32px;line-height:32px;font-size:1.49em;font-weight:700}#apijsBox pre{margin:1em auto;line-height:1.42857143;font-size:.7rem;white-space:pre-wrap}#apijsBox p{margin:1em auto;line-height:1.42857143;font-size:1em}#apijsBox ul{margin:-.4em auto 1em}#apijsBox iframe{display:block;width:100%;border:0}#apijsBox.progress p.anim:before{content:attr(data-old);-webkit-animation:apijsReplace 1s linear 2s forwards;animation:apijsReplace 1s linear 2s forwards}#apijsBox.progress span.info{position:absolute;right:1em;bottom:.8em}#apijsBox.progress svg{position:relative;display:block;margin:18px auto;width:80%;height:20px;overflow:hidden;outline:1px solid #333;background-color:#aaa}#apijsBox.progress rect{position:absolute;top:0;bottom:0;left:0;display:block;background:#03ff00 repeating-linear-gradient(-45deg,#03ff00 0,#03ff00 10px,#00ef00 10px,#00ef00 20px);background-size:28px 100%}#apijsBox.progress rect.auto{width:20%;-webkit-animation:apijsProgress 10s infinite linear;animation:apijsProgress 10s infinite linear}#apijsBox.progress rect.end{width:100%;-webkit-animation:apijsProgress 10s infinite 3s linear;animation:apijsProgress 10s infinite 3s linear}#apijsBox svg.loader{position:absolute;display:none;margin:auto;width:128px;height:128px;pointer-events:none}#apijsBox svg.loader path{fill:gray}#apijsBox.loading svg.loader,#apijsBox.waiting svg.loader{display:block;right:-40px;bottom:-40px;transform:scale(.2);-webkit-transform:scale(.2)}#apijsBox.photo svg.loader,#apijsBox.video svg.loader{right:0;bottom:calc(50% - 64px);left:0;transform:none;-webkit-transform:none}#apijsBox.ajax svg.loader,#apijsBox.iframe svg.loader{right:0;bottom:calc(50% - 64px);left:0}#apijsBox button{font-size:.85em;text-decoration:none;border:0;transition:color .4s,border-color .4s,background-color .4s,opacity .4s}#apijsBox button::-moz-focus-inner{padding:0;outline:0;border:0}#apijsBox button:active,#apijsBox button:focus,#apijsBox button:hover{outline:0}#apijsBox div.btns{position:absolute;right:.8em;bottom:.6em}#apijsBox div.btns.upload{position:relative;right:inherit;left:inherit}#apijsBox div.btns.upload input{display:none}#apijsBox div.btns.upload div.filenames{max-height:11em;overflow-y:auto}#apijsBox div.btns.upload table{border-spacing:0}#apijsBox div.btns.upload td+td{padding-left:.6em}#apijsBox div.btns.upload td.nb{font-size:.85em;color:#676767}#apijsBox div.btns.upload td.size{color:#676767}#apijsBox div.btns.upload td.err{color:#e41101}#apijsBox div.btns button{padding:0 .7em;height:auto;line-height:24px;color:#000;border:1px solid #bbb;border-radius:.4em;background-color:#e2e2e2}#apijsBox div.btns button:disabled{opacity:.5}#apijsBox div.btns button.cancel{float:left;margin:0 .5em}#apijsBox div.btns button.browse{display:inline-block;margin:.5em 0}#apijsBox div.btns button:active,#apijsBox div.btns button:focus,#apijsBox div.btns button:hover{border-color:#555;background-color:#f4f4f4}#apijsBox div.btns button:focus:not(:hover){-webkit-animation:apijsFocus 1s infinite;animation:apijsFocus 1s infinite}#apijsBox dl.media{display:flex;flex-direction:column-reverse;flex:1;overflow:hidden;color:#fff}#apijsBox dl.media dt{display:flex;flex-direction:column;flex:1;overflow:hidden}#apijsBox dl.media dt iframe,#apijsBox dl.media dt img,#apijsBox dl.media dt video{flex:1 1 auto;height:100%;visibility:hidden}#apijsBox dl.media dt img{image-rendering:optimizeQuality;image-rendering:-moz-crisp-edges;object-fit:scale-down}#apijsBox dl.media dt video{z-index:50;outline:0;cursor:pointer}#apijsBox dl.media dd{line-height:1.5rem;font-size:.85em;background-color:#666}#apijsBox dl.media dd span{margin:0 .6em;font-size:.9em;font-style:italic}#apijsBox div.close{position:absolute;top:-2px;right:-2px;padding:0 0 3em 3em;z-index:99600}#apijsBox div.close button{padding:0 1.4em;line-height:2.6em;font-size:.8em;font-weight:700;text-transform:uppercase;color:#fff;border:2px solid #fff;border-radius:0 0 0 .8em;background-color:#000;opacity:.8}#apijsBox div.close button:active,#apijsBox div.close button:focus,#apijsBox div.close button:hover{opacity:1}#apijsBox div.navigation button{position:absolute;top:20%;bottom:20%;padding:0 2em;background-color:transparent;opacity:.5}#apijsBox div.navigation button:active,#apijsBox div.navigation button:focus,#apijsBox div.navigation button:hover{opacity:1}#apijsBox div.navigation button:disabled{opacity:0;cursor:default}#apijsBox div.navigation button span{display:block;width:2em;height:2em;border-top:2px solid #fff;border-left:2px solid #fff}#apijsBox div.navigation button.prev{left:0}#apijsBox div.navigation button.prev span{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}#apijsBox div.navigation button.next{right:0}#apijsBox div.navigation button.next span{transform:rotate(-225deg);-webkit-transform:rotate(-225deg)}#apijsBox ul.kbd{display:flex;justify-content:center;margin:0;text-align:center;font-size:.8em;white-space:nowrap;list-style:none;background-color:#666}#apijsBox ul.kbd li{margin:0 .5em;line-height:1.2rem}#apijsBox ul.kbd li kbd:last-child{margin-right:.4em}#apijsBox kbd{margin-right:.2em;padding:0 .21em;font-size:inherit;font-weight:700;text-transform:uppercase;border:0;background-color:#888}@font-face{src:url("../fonts/apijs/fontello.woff2") format("woff2"),url("../fonts/apijs/fontello.woff") format("woff");font-family:apijsFontello;font-weight:400;font-style:normal}#apijsBox div.btns button span:before,#apijsBox h1:before,#apijsBox kbd:before,div.apijsplayer span.fnt{font-family:apijsFontello;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-decoration:inherit;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#apijsBox h1:before{float:left;width:1.3em;text-align:center;font-size:1.5em}#apijsBox.information h1:before{content:"\E80B\0000A0"}#apijsBox.confirmation h1:before{content:"\E80C\0000A0"}#apijsBox.options h1:before{content:"\E80E\0000A0"}#apijsBox.upload h1:before{content:"\F15B\0000A0"}#apijsBox.progress h1:before{content:"\F1D8\0000A0"}#apijsBox.waiting h1:before{content:"\F1D8\0000A0"}#apijsBox.download h1:before{content:"\F15B\0000A0"}#apijsBox.print h1:before{content:"\E80D\0000A0"}#apijsBox.error h1:before{content:"\E80A\0000A0"}#apijsBox.warning h1:before{content:"\E80A\0000A0"}#apijsBox div.btns button span:before{float:left}#apijsBox div.btns button.cancel span:before{content:"\E801\0000A0"}#apijsBox div.btns button.confirm span:before{content:"\E800\0000A0"}#apijsBox div.btns button.browse span:before{content:"\E802\0000A0"}#apijsBox kbd.start:before{content:"\E807";display:inline-block;transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}#apijsBox kbd.bottom:before{content:"\E804"}#apijsBox kbd.left:before{content:"\E805"}#apijsBox kbd.right:before{content:"\E806"}#apijsBox kbd.topk:before{content:"\E807"}#apijsBox kbd.plus:before{content:"\E809"}#apijsBox kbd.minus:before{content:"\E808"}@keyframes apijsProgress{0%{width:20%}50%{transform:translate(400%,0)}100%{width:20%}}@-webkit-keyframes apijsProgress{0%{width:20%}50%{left:80%}100%{width:20%}}@keyframes apijsFocus{50%{border-color:#bbb}}@-webkit-keyframes apijsFocus{50%{border-color:#bbb}}@keyframes apijsReplace{50%{color:transparent}100%{content:attr(data-new)}}@-webkit-keyframes apijsReplace{50%{color:transparent}100%{content:attr(data-new)}}div.apijsvideoplayer{background-color:#000}div.apijsvideoplayer.fullscreen{margin:0!important;padding:0!important;height:100vh!important}div.apijsvideoplayer.fullscreen .nofullscreen{display:none!important}div.apijsvideoplayer.fullscreen.playing video{cursor:none}div.apijsvideoplayer.mobile .nomobile{display:none!important}div.apijsvideoplayer.fullscreen.playing .noplaying,div.apijsvideoplayer.mobile.playing .noplaying{transition:opacity .5s;opacity:0}div.apijsvideoplayer.fullscreen.playing .noplaying:hover,div.apijsvideoplayer.mobile.playing .noplaying:hover{opacity:1!important}div.apijsvideoplayer.tiny label{position:initial}div.apijsvideoplayer.tiny label select{left:0;right:0;width:100%}video.apijsplayer{display:block;margin:auto;width:100%;height:calc(100% - 1.8rem)!important;cursor:pointer}div.apijsplayer *{margin:0;padding:0}div.apijsplayer{position:relative;display:flex;align-items:center;z-index:99600;margin-top:-10vh;padding-top:10vh;height:1.8rem;line-height:1.8rem;font-size:.85em;color:#fff;text-align:center;direction:ltr}div.apijsplayer span{padding:0 .4em;height:1.8rem;background-color:#070707}div.apijsplayer span.btn{padding:0;min-width:2.6em;cursor:pointer}div.apijsplayer span.svg{display:flex;align-items:center;height:100%}div.apijsplayer span.bar{flex:1}div.apijsplayer span.vol{width:7em}div.apijsplayer label{position:relative;height:1.8rem;padding:0 .4em;background-color:#070707}div.apijsplayer label option{padding:.2em .4em}div.apijsplayer label option:checked{font-weight:700}div.apijsplayer label option:disabled{font-style:italic;color:#aaa}div.apijsplayer label em{padding-left:.25em;font-style:normal}div.apijsplayer label select{display:none;position:absolute;right:0;bottom:1.8rem;min-width:20em;overflow-y:scroll;color:#000;outline:0;border:0;background:#fff;appearance:none;-moz-appearance:none;-webkit-appearance:none}div.apijsplayer label:hover,div.apijsplayer span.btn:hover{color:#000;background-color:#fff}div.apijsplayer label:hover select{display:block}div.apijsplayer svg{position:relative;flex:1;height:30%;overflow:hidden;border-radius:.4em;background-color:#222;cursor:pointer}div.apijsplayer rect{position:absolute;top:0;bottom:0;left:0;display:block;z-index:99460;background-color:#00b6f0}div.apijsplayer rect.buffer{z-index:99440;background-color:#515151}div.apijsplayer svg.vol rect{width:100%;background-color:#fff}
8
8
  /*# sourceMappingURL=apijs-screen.min.css.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../tmp/UJxE4R","../code/apijs/src/styles/album.css","../code/apijs/src/styles/dialog.css","../code/apijs/src/styles/player.css"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs - 6.6.0\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created V/08/05/2009\n * Updated J/12/09/2019\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv.gallery img, div.album img {\n\tdisplay:block; margin:auto; overflow:hidden;\n\tcolor:transparent; background-color:#EFEFEF; transition:background-color 0.3s;\n}\n\ndiv.gallery a:before, div.gallery a:after, div.album a:before, div.album a:after { display:none; content:\"\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& gallery &&& */\ndiv.gallery { display:inline-flex; flex-direction:column; padding:0.5em; vertical-align:top; }\n\ndiv.gallery a { display:block; text-decoration:none; border:1px solid transparent; }\ndiv.gallery ul { display:flex; flex-wrap:wrap; justify-content:space-around; margin:0.3em 0 0; padding:0; list-style:none; }\ndiv.gallery li { margin:0.1em 0; padding:0; }\ndiv.gallery li a { opacity:0.7; }\ndiv.gallery li a.current { border:1px solid white; opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& album &&& */\ndiv.album { padding:0.4em; text-align:center; }\n\ndiv.album dl {\n\tdisplay:inline-block; margin:0.3em 0.1em; padding:0.5em 0.5em 0.45em; vertical-align:top;\n\tborder:1px solid #EFEFEF; border-radius:0.6em; background-color:transparent; transition:border-color 0.3s, background-color 0.3s;\n}\n\ndiv.album dl.current { border:1px solid white; background-color:#EFEFEF; }\ndiv.album dt a { display:block; text-decoration:none; border:1px solid transparent; }\n\ndiv.album dd {\n\tmargin:0.5em 0.5em 0; overflow:hidden;\n\tfont-size:0.8em; white-space:nowrap; text-overflow:ellipsis; transition:color 0.3s;\n}\n\ndiv.album dl:hover { border-color:#CCC; background-color:#EFEFEF; }\ndiv.album dl:hover img, div.album dl.current img { background-color:white; }","/**\n * Created V/08/05/2009\n * Updated W/03/03/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv[id=\"apijsDialog\"] * { margin:0; padding:0; }\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n\n#apijsDialog {\n\tposition:fixed; top:0; right:0; bottom:0; left:0; width:100%; height:100%; text-align:center; direction:ltr; z-index:99000;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n\tuser-select:none; -ms-user-select:none; -moz-user-select:none; -webkit-user-select:none;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.progress, #apijsDialog.waiting, #apijsDialog.loading { cursor:progress; }\n\n#apijsBox {\n\tposition:relative; top:21%; display:inline-block; padding:0.6em 0.8em 2.4em; width:26rem; max-width:26rem; min-height:9em; overflow:hidden;\n\ttext-align:left; color:black; border-radius:0.8em; background-color:white; box-shadow:0 0 2.5em #111;\n}\n\n#apijsBox.photo, #apijsBox.video {\n\tdisplay:flex; flex-direction:column;\n\tposition:absolute; top:0; right:0; bottom:0; left:0; padding:0; width:auto; max-width:inherit; min-height:inherit; text-align:center;\n\tborder-radius:0; background-color:rgba(0, 0, 0, 0.8); box-shadow:none;\n}\n\n#apijsBox.video { background-color:black; }\n#apijsBox.photo.error, #apijsBox.video.error { background-image:url(\"../images/apijs/tv.gif\"); background-repeat:repeat; }\n#apijsBox.options, #apijsBox.upload, #apijsBox.progress { min-height:15em; }\n#apijsBox.iframe, #apijsBox.ajax { padding:2.5em 0.8em 1em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& texte &&& */\n#apijsBox div.bbcode { user-select:text; -ms-user-select:text; -moz-user-select:text; -webkit-user-select:text; }\n\n#apijsBox h1 { margin:0.15em 0 0.7em; height:32px; line-height:32px; font-size:1.49em; font-weight:700; }\n#apijsBox pre { margin:1em auto; line-height:1.42857143; font-size:0.7rem; white-space:pre-wrap; }\n#apijsBox p { margin:1em auto; line-height:1.42857143; font-size:1em; }\n#apijsBox ul { margin:-0.4em auto 1em; }\n#apijsBox iframe { display:block; width:100%; border:0; }\n\n#apijsBox.progress span.info { position:absolute; right:1em; bottom:0.8em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& barre de progression &&& */\n#apijsBox.progress svg {\n\tposition:relative; display:block; margin:18px auto; width:80%; height:20px; overflow:hidden;\n\toutline:1px solid #333; background-color:#AAA;\n}\n\n#apijsBox.progress rect {\n\tposition:absolute; top:0; bottom:0; left:0; display:block;\n\tbackground:#03FF00 repeating-linear-gradient(-45deg, #03FF00 0, #03FF00 10px, #00EF00 10px, #00EF00 20px); background-size:28px 100%;\n}\n\n#apijsBox.progress rect.auto { width:20%; -webkit-animation:apijsProgress 10s infinite linear; animation:apijsProgress 10s infinite linear; }\n#apijsBox.progress rect.end { width:100%; -webkit-animation:apijsProgress 10s infinite 3s linear; animation:apijsProgress 10s infinite 3s linear; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& image d'attente &&& **\n * (loading) waiting photo video iframe ajax */\n#apijsBox svg.loader { position:absolute; display:none; margin:auto; width:128px; height:128px; pointer-events:none; }\n#apijsBox svg.loader path { fill:gray; }\n\n#apijsBox.loading svg.loader, #apijsBox.waiting svg.loader {\n\tdisplay:block; right:-40px; bottom:-40px;\n\ttransform:scale(0.2); -webkit-transform:scale(0.2);\n}\n\n#apijsBox.photo svg.loader, #apijsBox.video svg.loader { right:0; bottom:calc(50% - 64px); left:0; transform:none; -webkit-transform:none; }\n#apijsBox.iframe svg.loader, #apijsBox.ajax svg.loader { right:0; bottom:calc(50% - 64px); left:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\n#apijsBox button {\n\tfont-size:0.85em; text-decoration:none; border:0;\n\ttransition:color 0.4s, border-color 0.4s, background-color 0.4s, opacity 0.4s;\n}\n\n#apijsBox button::-moz-focus-inner { padding:0; outline:0; border:0; }\n#apijsBox button:hover, #apijsBox button:active, #apijsBox button:focus { outline:0; }\n\n#apijsBox div.btns { position:absolute; right:0.8em; bottom:0.6em; }\n#apijsBox div.btns.upload { position:relative; right:inherit; left:inherit; }\n#apijsBox div.btns.upload input { display:none; }\n#apijsBox div.btns.upload div.filenames { white-space:nowrap; }\n#apijsBox div.btns.upload span.sz { color:#676767; }\n#apijsBox div.btns.upload span.ee { color:#E41101; }\n\n#apijsBox div.btns button {\n\tpadding:0 0.7em; height:auto; line-height:24px;\n\tcolor:black; border:1px solid #BBB; border-radius:0.4em; background-color:#E2E2E2;\n}\n\n#apijsBox div.btns button:disabled { opacity:0.5; }\n#apijsBox div.btns button.cancel { float:left; margin:0 0.5em; }\n#apijsBox div.btns button.browse { display:inline-block; margin:0.5em 0; }\n\n#apijsBox div.btns button:hover, #apijsBox div.btns button:active,\n#apijsBox div.btns button:focus { border-color:#555; background-color:#F4F4F4; }\n#apijsBox div.btns button:focus:not(:hover) { -webkit-animation:apijsFocus 1s infinite; animation:apijsFocus 1s infinite; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues photo et vidéo &&& */\n#apijsBox dl.media { display:flex; flex-direction:column-reverse; flex:1; overflow:hidden; color:white; }\n\n#apijsBox dl.media dt { display:flex; flex-direction:column; flex:1; overflow:hidden; }\n#apijsBox dl.media dt img, #apijsBox dl.media dt video, #apijsBox dl.media dt iframe { flex:1 1 auto; height:100%; visibility:hidden; }\n#apijsBox dl.media dt img { image-rendering:optimizeQuality; image-rendering:-moz-crisp-edges; object-fit:scale-down; }\n#apijsBox dl.media dt video { outline:0; cursor:pointer; }\n\n#apijsBox dl.media dd { line-height:1.5rem; font-size:0.85em; background-color:#666; }\n#apijsBox dl.media dd span { margin:0 0.6em; font-size:0.9em; font-style:italic; }\n\n/* &&&&&&&&&&&&&&&&&&&& bouton de fermeture &&& */\n#apijsBox div.close { position:absolute; top:-2px; right:-2px; padding:0 0 3em 3em; z-index:99600; }\n\n#apijsBox div.close button {\n\tpadding:0 1.4em; line-height:2.6em;\n\tfont-size:0.8em; font-weight:700; text-transform:uppercase;\n\tcolor:white; border:2px solid white; border-radius:0 0 0 0.8em; background-color:black; opacity:0.8;\n}\n\n#apijsBox div.close button:hover, #apijsBox div.close button:active, #apijsBox div.close button:focus { opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:20%; bottom:20%; padding:0 2em; background-color:transparent; opacity:0.5; }\n#apijsBox div.navigation button:hover, #apijsBox div.navigation button:active, #apijsBox div.navigation button:focus { opacity:1; }\n#apijsBox div.navigation button:disabled { opacity:0; cursor:default; }\n\n#apijsBox div.navigation button span {\n\tdisplay:block; width:2em; height:2em;\n\tborder-top:2px solid white; border-left:2px solid white;\n}\n\n#apijsBox div.navigation button.prev { left:0; }\n#apijsBox div.navigation button.prev span { transform:rotate(-45deg); -webkit-transform:rotate(-45deg); }\n#apijsBox div.navigation button.next { right:0; }\n#apijsBox div.navigation button.next span { transform:rotate(-225deg); -webkit-transform:rotate(-225deg); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& clavier &&& */\n#apijsBox ul.kbd {\n\tdisplay:flex; justify-content:center; margin:0; text-align:center;\n\tfont-size:0.8em; white-space:nowrap; list-style:none; background-color:#666;\n}\n\n#apijsBox ul.kbd li { margin:0 0.5em; line-height:1.2rem; }\n#apijsBox ul.kbd li kbd:last-child { margin-right:0.4em; }\n\n#apijsBox kbd {\n\tmargin-right:0.2em; padding:0 0.21em;\n\tfont-size:inherit; font-weight:700; text-transform:uppercase; border:0; background-color:#888;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& media queries (via js) &&& */\n#apijsDialog.reduce * { transition:none !important; }\n\n#apijsBox.fullscreen .nofullscreen { display:none !important; }\n#apijsBox.fullscreen.playing video { cursor:none; }\n#apijsBox.mobile:not(.photo):not(.video) { position:absolute; top:1.5em; left:0.5em; right:0.5em; width:auto; min-height:inherit; }\n#apijsBox.mobile .nomobile { display:none !important; }\n#apijsBox.mobile.playing .noplaying, #apijsBox.fullscreen.playing .noplaying { transition:opacity 0.5s; opacity:0; }\n#apijsBox.mobile.playing .noplaying:hover, #apijsBox.fullscreen.playing .noplaying:hover { opacity:1 !important; }\n\n#apijsBox.tiny div.apijsplayer label { position:initial; }\n#apijsBox.tiny div.apijsplayer label select { left:0; right:0; width:100%; }\n#apijsBox.tiny div.navigation button { padding:0 1em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& images &&& */\n@font-face {\n\tsrc:url(\"../fonts/apijs/fontello.woff2\") format(\"woff2\"), url(\"../fonts/apijs/fontello.woff\") format(\"woff\");\n\tfont-family:apijsFontello; font-weight:400; font-style:normal;\n}\n\n#apijsBox h1:before, #apijsBox div.btns button span:before, #apijsBox kbd:before, div.apijsplayer span.fnt {\n\tfont-family:apijsFontello; font-style:normal; font-weight:400; font-variant:normal; text-transform:none; text-decoration:inherit;\n\t-moz-osx-font-smoothing:grayscale; -webkit-font-smoothing:antialiased;\n}\n\n#apijsBox h1:before { float:left; width:1.3em; text-align:center; font-size:1.5em; }\n#apijsBox.information h1:before { content:\"\\E80B\\0000A0\"; }\n#apijsBox.confirmation h1:before { content:\"\\E80C\\0000A0\"; }\n#apijsBox.options h1:before { content:\"\\E80E\\0000A0\"; }\n#apijsBox.upload h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.progress h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.waiting h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.download h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.print h1:before { content:\"\\E80D\\0000A0\"; }\n#apijsBox.error h1:before { content:\"\\E80A\\0000A0\"; }\n#apijsBox.warning h1:before { content:\"\\E80A\\0000A0\"; }\n\n#apijsBox div.btns button span:before { float:left; }\n#apijsBox div.btns button.cancel span:before { content:\"\\E801\\0000A0\"; }\n#apijsBox div.btns button.confirm span:before { content:\"\\E800\\0000A0\"; }\n#apijsBox div.btns button.browse span:before { content:\"\\E802\\0000A0\"; }\n\n#apijsBox kbd.start:before { content:\"\\E807\"; display:inline-block; transform:rotate(-45deg); -webkit-transform:rotate(-45deg); }\n#apijsBox kbd.bottom:before { content:\"\\E804\"; }\n#apijsBox kbd.left:before { content:\"\\E805\"; }\n#apijsBox kbd.right:before { content:\"\\E806\"; }\n#apijsBox kbd.topk:before { content:\"\\E807\"; }\n#apijsBox kbd.plus:before { content:\"\\E809\"; }\n#apijsBox kbd.minus:before { content:\"\\E808\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& animations &&& */\n@keyframes apijsProgress { 0% { width:20%; } 50% { transform:translate(400%, 0); } 100% { width:20%; } }\n@-webkit-keyframes apijsProgress { 0% { width:20%; } 50% { left:80%; } 100% { width:20%; } }\n@keyframes apijsFocus { 50% { border-color:#BBB; } }\n@-webkit-keyframes apijsFocus { 50% { border-color:#BBB; } }","/**\n * Created V/01/01/2021\n * Updated W/03/03/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& player &&& */\nvideo.apijsplayer {\n\tdisplay:block; margin:auto; width:100%; height:calc(100% - 1.8rem) !important;\n\tbackground-color:black; cursor:pointer;\n}\n\n/*rtl:begin:ignore*/\ndiv.apijsplayer * { margin:0; padding:0; }\n\ndiv.apijsplayer {\n\tposition:relative; display:flex; align-items:center; z-index:99600;\n\tmargin-top:-10vh; padding-top:10vh; height:1.8rem; line-height:1.8rem;\n\tfont-size:0.85em; color:white; text-align:center; direction:ltr;\n}\n\ndiv.apijsplayer span { padding:0 0.4em; height:1.8rem; background-color:#070707; }\ndiv.apijsplayer span.btn { padding:0; min-width:2.6em; cursor:pointer; }\ndiv.apijsplayer span.svg { display:flex; align-items:center; height:100%; }\ndiv.apijsplayer span.bar { flex:1; }\ndiv.apijsplayer span.vol { width:7em; }\ndiv.apijsplayer label { position:relative; height:1.8rem; padding:0 0.4em; background-color:#070707; }\ndiv.apijsplayer label option { padding:0.2em 0.4em; }\ndiv.apijsplayer label option:checked { font-weight:700; }\ndiv.apijsplayer label option:disabled { font-style:italic; color:#AAA; }\ndiv.apijsplayer label em { padding-left:0.25em; font-style:normal; }\n\ndiv.apijsplayer label select {\n\tdisplay:none; position:absolute; right:0; bottom:1.8rem; min-width:20em; overflow-y:scroll;\n\tcolor:black; outline:0; border:0; background:white; appearance:none; -moz-appearance:none; -webkit-appearance:none;\n}\n\ndiv.apijsplayer label:hover, div.apijsplayer span.btn:hover { color:black; background-color:white; }\ndiv.apijsplayer label:hover select { display:block; }\n\ndiv.apijsplayer svg { position:relative; flex:1; height:30%; overflow:hidden; border-radius:0.4em; background-color:#222; cursor:pointer; }\ndiv.apijsplayer rect { position:absolute; top:0; bottom:0; left:0; display:block; z-index:99460; background-color:#00B6F0; }\ndiv.apijsplayer rect.buffer { z-index:99440; background-color:#515151; }\ndiv.apijsplayer svg.vol rect { width:100%; background-color:white; }\n/*rtl:end:ignore*/\n/*rtl:raw:div.apijsplayer label { direction:rtl; }*/"]}
1
+ {"version":3,"sources":["../../../../../../../tmp/61tI5M","../styles/album.css","../styles/dialog.css","../styles/player.css"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs - 6.7.0\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created V/08/05/2009\n * Updated J/12/09/2019\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv.gallery img, div.album img {\n\tdisplay:block; margin:auto; overflow:hidden;\n\tcolor:transparent; background-color:#EFEFEF; transition:background-color 0.3s;\n}\n\ndiv.gallery a:before, div.gallery a:after, div.album a:before, div.album a:after { display:none; content:\"\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& gallery &&& */\ndiv.gallery { display:inline-flex; flex-direction:column; padding:0.5em; vertical-align:top; }\n\ndiv.gallery a { display:block; text-decoration:none; border:1px solid transparent; }\ndiv.gallery ul { display:flex; flex-wrap:wrap; justify-content:space-around; margin:0.3em 0 0; padding:0; list-style:none; }\ndiv.gallery li { margin:0.1em 0; padding:0; }\ndiv.gallery li a { opacity:0.7; }\ndiv.gallery li a.current { border:1px solid white; opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& album &&& */\ndiv.album { padding:0.4em; text-align:center; }\n\ndiv.album dl {\n\tdisplay:inline-block; margin:0.3em 0.1em; padding:0.5em 0.5em 0.45em; vertical-align:top;\n\tborder:1px solid #EFEFEF; border-radius:0.6em; background-color:transparent; transition:border-color 0.3s, background-color 0.3s;\n}\n\ndiv.album dl.current { border:1px solid white; background-color:#EFEFEF; }\ndiv.album dt a { display:block; text-decoration:none; border:1px solid transparent; }\n\ndiv.album dd {\n\tmargin:0.5em 0.5em 0; overflow:hidden;\n\tfont-size:0.8em; white-space:nowrap; text-overflow:ellipsis; transition:color 0.3s;\n}\n\ndiv.album dl:hover { border-color:#CCC; background-color:#EFEFEF; }\ndiv.album dl:hover img, div.album dl.current img { background-color:white; }","/**\n * Created V/08/05/2009\n * Updated V/18/06/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& conteneurs &&& */\ndiv[id=\"apijsDialog\"] * { margin:0; padding:0; }\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n\n#apijsDialog {\n\tposition:fixed; top:0; right:0; bottom:0; left:0; width:100%; height:100%; text-align:center; direction:ltr; z-index:99000;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n\tuser-select:none; -ms-user-select:none; -moz-user-select:none; -webkit-user-select:none;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.progress, #apijsDialog.waiting, #apijsDialog.loading { cursor:progress; }\n#apijsDialog.reduce, #apijsDialog.reduce * { transition:none !important; }\n\n#apijsBox {\n\tposition:relative; top:21%; display:inline-block; padding:0.6em 0.8em 2.4em; width:26rem; max-width:26rem; min-height:9em; overflow:hidden;\n\ttext-align:left; color:black; border-radius:0.8em; background-color:white; box-shadow:0 0 2.5em #111;\n}\n\n#apijsBox.photo, #apijsBox.video {\n\tdisplay:flex; flex-direction:column;\n\tposition:absolute; top:0; right:0; bottom:0; left:0; padding:0; width:auto; max-width:inherit; min-height:inherit; text-align:center;\n\tborder-radius:0; background-color:rgba(0, 0, 0, 0.8); box-shadow:none;\n}\n\n#apijsBox.video { background-color:black; }\n#apijsBox.photo.error, #apijsBox.video.error { background-image:url(\"../images/apijs/tv.gif\"); background-repeat:repeat; }\n#apijsBox.options, #apijsBox.upload, #apijsBox.progress { min-height:15em; }\n#apijsBox.iframe, #apijsBox.ajax { padding:2.5em 0.8em 1em; }\n\n#apijsBox.mobile:not(.photo):not(.video) { position:absolute; top:1.5em; left:0.5em; right:0.5em; width:auto; min-height:inherit; }\n#apijsBox.tiny div.navigation button { padding:0 1em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& glisser/déposer &&& */\n#apijsDialog.drag:before {\n\tposition:absolute; top:1em; right:1em; bottom:1em; left:1em; content:\"\";\n\tborder: 2px dashed white;\n}\n\n#apijsDialog p.drag { position:absolute; right:0; bottom:0; margin:1.5em; font-size:1.3em; color:white; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& texte &&& */\n#apijsBox div.bbcode { user-select:text; -ms-user-select:text; -moz-user-select:text; -webkit-user-select:text; }\n\n#apijsBox h1 { margin:0.15em 0 0.7em; height:32px; line-height:32px; font-size:1.49em; font-weight:700; }\n#apijsBox pre { margin:1em auto; line-height:1.42857143; font-size:0.7rem; white-space:pre-wrap; }\n#apijsBox p { margin:1em auto; line-height:1.42857143; font-size:1em; }\n#apijsBox ul { margin:-0.4em auto 1em; }\n#apijsBox iframe { display:block; width:100%; border:0; }\n\n#apijsBox.progress p.anim:before {\n\tcontent:attr(data-old);\n\t-webkit-animation:apijsReplace 1s linear 2s forwards; animation:apijsReplace 1s linear 2s forwards;\n}\n\n#apijsBox.progress span.info { position:absolute; right:1em; bottom:0.8em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& barre de progression &&& */\n#apijsBox.progress svg {\n\tposition:relative; display:block; margin:18px auto; width:80%; height:20px; overflow:hidden;\n\toutline:1px solid #333; background-color:#AAA;\n}\n\n#apijsBox.progress rect {\n\tposition:absolute; top:0; bottom:0; left:0; display:block;\n\tbackground:#03FF00 repeating-linear-gradient(-45deg, #03FF00 0, #03FF00 10px, #00EF00 10px, #00EF00 20px); background-size:28px 100%;\n}\n\n#apijsBox.progress rect.auto { width:20%; -webkit-animation:apijsProgress 10s infinite linear; animation:apijsProgress 10s infinite linear; }\n#apijsBox.progress rect.end { width:100%; -webkit-animation:apijsProgress 10s infinite 3s linear; animation:apijsProgress 10s infinite 3s linear; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& image d'attente &&& **\n * (loading) waiting photo video iframe ajax */\n#apijsBox svg.loader { position:absolute; display:none; margin:auto; width:128px; height:128px; pointer-events:none; }\n#apijsBox svg.loader path { fill:gray; }\n\n#apijsBox.loading svg.loader, #apijsBox.waiting svg.loader {\n\tdisplay:block; right:-40px; bottom:-40px;\n\ttransform:scale(0.2); -webkit-transform:scale(0.2);\n}\n\n#apijsBox.photo svg.loader, #apijsBox.video svg.loader { right:0; bottom:calc(50% - 64px); left:0; transform:none; -webkit-transform:none; }\n#apijsBox.iframe svg.loader, #apijsBox.ajax svg.loader { right:0; bottom:calc(50% - 64px); left:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\n#apijsBox button {\n\tfont-size:0.85em; text-decoration:none; border:0;\n\ttransition:color 0.4s, border-color 0.4s, background-color 0.4s, opacity 0.4s;\n}\n\n#apijsBox button::-moz-focus-inner { padding:0; outline:0; border:0; }\n#apijsBox button:hover, #apijsBox button:active, #apijsBox button:focus { outline:0; }\n\n#apijsBox div.btns { position:absolute; right:0.8em; bottom:0.6em; }\n#apijsBox div.btns.upload { position:relative; right:inherit; left:inherit; }\n#apijsBox div.btns.upload input { display:none; }\n#apijsBox div.btns.upload div.filenames { max-height:11em; overflow-y:auto; }\n#apijsBox div.btns.upload table { border-spacing:0; }\n#apijsBox div.btns.upload td + td { padding-left:0.6em; }\n#apijsBox div.btns.upload td.nb { font-size:0.85em; color:#676767; }\n#apijsBox div.btns.upload td.size { color:#676767; }\n#apijsBox div.btns.upload td.err { color:#E41101; }\n\n#apijsBox div.btns button {\n\tpadding:0 0.7em; height:auto; line-height:24px;\n\tcolor:black; border:1px solid #BBB; border-radius:0.4em; background-color:#E2E2E2;\n}\n\n#apijsBox div.btns button:disabled { opacity:0.5; }\n#apijsBox div.btns button.cancel { float:left; margin:0 0.5em; }\n#apijsBox div.btns button.browse { display:inline-block; margin:0.5em 0; }\n\n#apijsBox div.btns button:hover, #apijsBox div.btns button:active,\n#apijsBox div.btns button:focus { border-color:#555; background-color:#F4F4F4; }\n#apijsBox div.btns button:focus:not(:hover) { -webkit-animation:apijsFocus 1s infinite; animation:apijsFocus 1s infinite; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues photo et vidéo &&& */\n#apijsBox dl.media { display:flex; flex-direction:column-reverse; flex:1; overflow:hidden; color:white; }\n\n#apijsBox dl.media dt { display:flex; flex-direction:column; flex:1; overflow:hidden; }\n#apijsBox dl.media dt img, #apijsBox dl.media dt video, #apijsBox dl.media dt iframe { flex:1 1 auto; height:100%; visibility:hidden; }\n#apijsBox dl.media dt img { image-rendering:optimizeQuality; image-rendering:-moz-crisp-edges; object-fit:scale-down; }\n#apijsBox dl.media dt video { z-index:50; outline:0; cursor:pointer; }\n\n#apijsBox dl.media dd { line-height:1.5rem; font-size:0.85em; background-color:#666; }\n#apijsBox dl.media dd span { margin:0 0.6em; font-size:0.9em; font-style:italic; }\n\n/* &&&&&&&&&&&&&&&&&&&& bouton de fermeture &&& */\n#apijsBox div.close { position:absolute; top:-2px; right:-2px; padding:0 0 3em 3em; z-index:99600; }\n\n#apijsBox div.close button {\n\tpadding:0 1.4em; line-height:2.6em;\n\tfont-size:0.8em; font-weight:700; text-transform:uppercase;\n\tcolor:white; border:2px solid white; border-radius:0 0 0 0.8em; background-color:black; opacity:0.8;\n}\n\n#apijsBox div.close button:hover, #apijsBox div.close button:active, #apijsBox div.close button:focus { opacity:1; }\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:20%; bottom:20%; padding:0 2em; background-color:transparent; opacity:0.5; }\n#apijsBox div.navigation button:hover, #apijsBox div.navigation button:active, #apijsBox div.navigation button:focus { opacity:1; }\n#apijsBox div.navigation button:disabled { opacity:0; cursor:default; }\n\n#apijsBox div.navigation button span {\n\tdisplay:block; width:2em; height:2em;\n\tborder-top:2px solid white; border-left:2px solid white;\n}\n\n#apijsBox div.navigation button.prev { left:0; }\n#apijsBox div.navigation button.prev span { transform:rotate(-45deg); -webkit-transform:rotate(-45deg); }\n#apijsBox div.navigation button.next { right:0; }\n#apijsBox div.navigation button.next span { transform:rotate(-225deg); -webkit-transform:rotate(-225deg); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& clavier &&& */\n#apijsBox ul.kbd {\n\tdisplay:flex; justify-content:center; margin:0; text-align:center;\n\tfont-size:0.8em; white-space:nowrap; list-style:none; background-color:#666;\n}\n\n#apijsBox ul.kbd li { margin:0 0.5em; line-height:1.2rem; }\n#apijsBox ul.kbd li kbd:last-child { margin-right:0.4em; }\n\n#apijsBox kbd {\n\tmargin-right:0.2em; padding:0 0.21em;\n\tfont-size:inherit; font-weight:700; text-transform:uppercase; border:0; background-color:#888;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& images &&& */\n@font-face {\n\tsrc:url(\"../fonts/apijs/fontello.woff2\") format(\"woff2\"), url(\"../fonts/apijs/fontello.woff\") format(\"woff\");\n\tfont-family:apijsFontello; font-weight:400; font-style:normal;\n}\n\n#apijsBox h1:before, #apijsBox div.btns button span:before, #apijsBox kbd:before, div.apijsplayer span.fnt {\n\tfont-family:apijsFontello; font-style:normal; font-weight:400; font-variant:normal; text-transform:none; text-decoration:inherit;\n\t-moz-osx-font-smoothing:grayscale; -webkit-font-smoothing:antialiased;\n}\n\n#apijsBox h1:before { float:left; width:1.3em; text-align:center; font-size:1.5em; }\n#apijsBox.information h1:before { content:\"\\E80B\\0000A0\"; }\n#apijsBox.confirmation h1:before { content:\"\\E80C\\0000A0\"; }\n#apijsBox.options h1:before { content:\"\\E80E\\0000A0\"; }\n#apijsBox.upload h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.progress h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.waiting h1:before { content:\"\\F1D8\\0000A0\"; }\n#apijsBox.download h1:before { content:\"\\F15B\\0000A0\"; }\n#apijsBox.print h1:before { content:\"\\E80D\\0000A0\"; }\n#apijsBox.error h1:before { content:\"\\E80A\\0000A0\"; }\n#apijsBox.warning h1:before { content:\"\\E80A\\0000A0\"; }\n\n#apijsBox div.btns button span:before { float:left; }\n#apijsBox div.btns button.cancel span:before { content:\"\\E801\\0000A0\"; }\n#apijsBox div.btns button.confirm span:before { content:\"\\E800\\0000A0\"; }\n#apijsBox div.btns button.browse span:before { content:\"\\E802\\0000A0\"; }\n\n#apijsBox kbd.start:before { content:\"\\E807\"; display:inline-block; transform:rotate(-45deg); -webkit-transform:rotate(-45deg); }\n#apijsBox kbd.bottom:before { content:\"\\E804\"; }\n#apijsBox kbd.left:before { content:\"\\E805\"; }\n#apijsBox kbd.right:before { content:\"\\E806\"; }\n#apijsBox kbd.topk:before { content:\"\\E807\"; }\n#apijsBox kbd.plus:before { content:\"\\E809\"; }\n#apijsBox kbd.minus:before { content:\"\\E808\"; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& animations &&& */\n@keyframes apijsProgress { 0% { width:20%; } 50% { transform:translate(400%, 0); } 100% { width:20%; } }\n@-webkit-keyframes apijsProgress { 0% { width:20%; } 50% { left:80%; } 100% { width:20%; } }\n@keyframes apijsFocus { 50% { border-color:#BBB; } }\n@-webkit-keyframes apijsFocus { 50% { border-color:#BBB; } }\n@keyframes apijsReplace { 50% { color:transparent; } 100% { content:attr(data-new); } }\n@-webkit-keyframes apijsReplace { 50% { color:transparent; } 100% { content:attr(data-new); } }","/**\n * Created V/01/01/2021\n * Updated V/18/06/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& player &&& */\ndiv.apijsvideoplayer { background-color:black; }\ndiv.apijsvideoplayer.fullscreen { margin:0 !important; padding:0 !important; height:100vh !important; }\n\ndiv.apijsvideoplayer.fullscreen .nofullscreen { display:none !important; }\ndiv.apijsvideoplayer.fullscreen.playing video { cursor:none; }\n\ndiv.apijsvideoplayer.mobile .nomobile { display:none !important; }\ndiv.apijsvideoplayer.mobile.playing .noplaying, div.apijsvideoplayer.fullscreen.playing .noplaying { transition:opacity 0.5s; opacity:0; }\ndiv.apijsvideoplayer.mobile.playing .noplaying:hover, div.apijsvideoplayer.fullscreen.playing .noplaying:hover { opacity:1 !important; }\n\ndiv.apijsvideoplayer.tiny label { position:initial; }\ndiv.apijsvideoplayer.tiny label select { left:0; right:0; width:100%; }\n\nvideo.apijsplayer { display:block; margin:auto; width:100%; height:calc(100% - 1.8rem) !important; cursor:pointer; }\n\n/*rtl:begin:ignore*/\ndiv.apijsplayer * { margin:0; padding:0; }\n\ndiv.apijsplayer {\n\tposition:relative; display:flex; align-items:center; z-index:99600;\n\tmargin-top:-10vh; padding-top:10vh; height:1.8rem; line-height:1.8rem;\n\tfont-size:0.85em; color:white; text-align:center; direction:ltr;\n}\n\ndiv.apijsplayer span { padding:0 0.4em; height:1.8rem; background-color:#070707; }\ndiv.apijsplayer span.btn { padding:0; min-width:2.6em; cursor:pointer; }\ndiv.apijsplayer span.svg { display:flex; align-items:center; height:100%; }\ndiv.apijsplayer span.bar { flex:1; }\ndiv.apijsplayer span.vol { width:7em; }\ndiv.apijsplayer label { position:relative; height:1.8rem; padding:0 0.4em; background-color:#070707; }\ndiv.apijsplayer label option { padding:0.2em 0.4em; }\ndiv.apijsplayer label option:checked { font-weight:700; }\ndiv.apijsplayer label option:disabled { font-style:italic; color:#AAA; }\ndiv.apijsplayer label em { padding-left:0.25em; font-style:normal; }\n\ndiv.apijsplayer label select {\n\tdisplay:none; position:absolute; right:0; bottom:1.8rem; min-width:20em; overflow-y:scroll;\n\tcolor:black; outline:0; border:0; background:white; appearance:none; -moz-appearance:none; -webkit-appearance:none;\n}\n\ndiv.apijsplayer label:hover, div.apijsplayer span.btn:hover { color:black; background-color:white; }\ndiv.apijsplayer label:hover select { display:block; }\n\ndiv.apijsplayer svg { position:relative; flex:1; height:30%; overflow:hidden; border-radius:0.4em; background-color:#222; cursor:pointer; }\ndiv.apijsplayer rect { position:absolute; top:0; bottom:0; left:0; display:block; z-index:99460; background-color:#00B6F0; }\ndiv.apijsplayer rect.buffer { z-index:99440; background-color:#515151; }\ndiv.apijsplayer svg.vol rect { width:100%; background-color:white; }\n/*rtl:end:ignore*/\n/*rtl:raw:div.apijsplayer label { direction:rtl; }*/"]}
data/init.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # encoding: utf-8
2
2
  # Created L/21/05/2012
3
- # Updated S/12/12/2020
3
+ # Updated V/18/06/2021
4
4
  #
5
5
  # Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
6
6
  # https://www.luigifab.fr/redmine/apijs
@@ -25,8 +25,8 @@ Redmine::Plugin.register :redmine_apijs do
25
25
 
26
26
  name 'Redmine Apijs plugin'
27
27
  author 'Fabrice Creuzot'
28
- description 'Integrate the apijs javascript library into Redmine.'
29
- version '6.6.0-gem'
28
+ description 'Integrate the apijs JavaScript library into Redmine. Provides a gallery for image and video attachments.'
29
+ version '6.7.0-gem'
30
30
  url 'https://www.luigifab.fr/redmine/apijs'
31
31
  author_url 'https://www.luigifab.fr/'
32
32
 
data/lib/image.py CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/python3
2
2
  # -*- coding: utf8 -*-
3
3
  # Created J/26/12/2013
4
- # Updated J/18/02/2021
4
+ # Updated M/11/05/2021
5
5
  #
6
6
  # Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
7
7
  # Copyright 2020-2021 | Fabrice Creuzot <fabrice~cellublue~com>
@@ -35,11 +35,14 @@ except:
35
35
  if not os.path.exists(os.path.dirname(fileout)):
36
36
  os.makedirs(os.path.dirname(fileout))
37
37
 
38
+ fileout = fileout + '.save'
38
39
 
39
- def versiontuple(v):
40
+
41
+ # tools
42
+ def versionTuple(v):
40
43
  return tuple(map(int, (v.split('.'))))
41
44
 
42
- def calcsize(source, size):
45
+ def calcSize(source, size):
43
46
 
44
47
  if size[1] == 0 and size[0] == 0:
45
48
  return source.size
@@ -50,12 +53,12 @@ def calcsize(source, size):
50
53
 
51
54
  return size
52
55
 
53
- def createthumb(source, size, fixed, new=False):
56
+ def createThumb(source, size, fixed, new=False):
54
57
 
55
58
  # https://pillow.readthedocs.io/en/latest/reference/Image.html#PIL.Image.Image.thumbnail
56
59
  # https://pillow.readthedocs.io/en/latest/handbook/concepts.html#filters-comparison-table
57
60
  # https://pillow.readthedocs.io/en/latest/reference/Image.html#PIL.Image.Image.paste
58
- if hasattr(Image, '__version__') and versiontuple(Image.__version__) > (7,0,0):
61
+ if hasattr(Image, '__version__') and versionTuple(Image.__version__) > (7,0,0):
59
62
  source.thumbnail(size, Image.LANCZOS, 4)
60
63
  else:
61
64
  source.thumbnail(size, Image.ANTIALIAS)
@@ -96,7 +99,7 @@ def resizeAnimatedGif(source, size, fixed):
96
99
 
97
100
  frame = Image.new('RGBA', source.size, (255,255,255,1))
98
101
  frame.paste(source, (0,0), source.convert('RGBA'))
99
- dest.append(createthumb(frame, size, fixed))
102
+ dest.append(createThumb(frame, size, fixed))
100
103
 
101
104
  idx = source.tell()
102
105
  source.seek(idx + 1)
@@ -117,7 +120,7 @@ def resizeAnimatedPng(source, size, fixed):
117
120
  while True:
118
121
  frame = Image.new('RGBA', source.size, (255,255,255,1))
119
122
  frame.paste(source, (0,0), source.convert('RGBA'))
120
- dest.append(createthumb(frame, size, fixed))
123
+ dest.append(createThumb(frame, size, fixed))
121
124
 
122
125
  idx = source.tell()
123
126
  source.seek(idx + 1)
@@ -138,7 +141,7 @@ def resizeAnimatedWebp(source, size, fixed):
138
141
  while True:
139
142
  frame = Image.new('RGBA', source.size, (255,255,255,1))
140
143
  frame.paste(source, (0,0), source.convert('RGBA'))
141
- dest.append(createthumb(frame, size, fixed))
144
+ dest.append(createThumb(frame, size, fixed))
142
145
 
143
146
  idx = source.tell()
144
147
  source.seek(idx + 1)
@@ -213,7 +216,7 @@ def saveJpg(dest, fileout, quality):
213
216
 
214
217
  # python-scour
215
218
  if ".svg" in fileout:
216
- from scour.scour import (sanitizeOptions, start)
219
+ from scour.scour import sanitizeOptions, start
217
220
  options = sanitizeOptions()
218
221
  options.strip_xml_prolog = True # --strip-xml-prolog
219
222
  options.remove_metadata = True # --remove-metadata
@@ -225,7 +228,7 @@ if ".svg" in fileout:
225
228
  else:
226
229
  from PIL import Image, ImageSequence
227
230
  source = Image.open(filein)
228
- size = calcsize(source, size)
231
+ size = calcSize(source, size)
229
232
 
230
233
  if source.format == 'GIF' and ".gif" in fileout:
231
234
  dest = resizeAnimatedGif(source, size, fixed)
@@ -237,7 +240,10 @@ else:
237
240
  dest = resizeAnimatedWeb(source, size, fixed)
238
241
  saveWebp(dest, fileout, quality)
239
242
  else:
240
- dest = createthumb(source, size, fixed, True)
243
+ dest = createThumb(source, size, fixed, True)
241
244
  saveJpg(dest, fileout, quality)
242
245
 
246
+ if os.path.isfile(fileout):
247
+ os.rename(fileout, fileout.replace('.save', ''))
248
+
243
249
  exit(0)
@@ -4,7 +4,7 @@
4
4
  # https://github.com/donatj/PhpUserAgent
5
5
  #
6
6
  # Copyright 2019-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
7
- # https://gist.github.com/luigifab/19a68d9aa98fa80f2961809d7cec59c0 (1.3.0-fork1)
7
+ # https://gist.github.com/luigifab/19a68d9aa98fa80f2961809d7cec59c0 (1.4.0-fork1)
8
8
  #
9
9
  # Parses a user agent string into its important parts
10
10
  # Licensed under the MIT License
@@ -49,7 +49,7 @@ class Useragentparser
49
49
  end
50
50
 
51
51
  result = userAgent.to_enum(:scan, # ["browser" => ["Firefox"...], "version" => ["45.0"...]]
52
- /(?<browser>Camino|Kindle(\ Fire)?|Firefox|Iceweasel|IceCat|Safari|MSIE|Trident|AppleWebKit|TizenBrowser|(?:Headless)?Chrome|YaBrowser|Vivaldi|IEMobile|Opera|OPR|Silk|Midori|Edge|Edg|CriOS|UCBrowser|Puffin|OculusBrowser|SamsungBrowser|SailfishBrowser|XiaoMi\/MiuiBrowser|Baiduspider|Applebot|Googlebot|YandexBot|bingbot|Lynx|Version|Wget|curl|Valve\ Steam\ Tenfoot|NintendoBrowser|PLAYSTATION\ (\d|Vita)+) (?:\)?;?) (?:(?:[:\/ ])(?<version>[0-9A-Z.]+)|\/(?:[A-Z]*))/ix
52
+ /(?<browser>Camino|Kindle(\ Fire)?|Firefox|Iceweasel|IceCat|Safari|MSIE|Trident|AppleWebKit|TizenBrowser|(?:Headless)?Chrome|YaBrowser|Vivaldi|IEMobile|Opera|OPR|Silk|Midori|Edge|Edg|CriOS|UCBrowser|Puffin|OculusBrowser|SamsungBrowser|SailfishBrowser|XiaoMi\/MiuiBrowser|Baiduspider|Applebot|Facebot|Googlebot|YandexBot|bingbot|Lynx|Version|Wget|curl|Valve\ Steam\ Tenfoot|NintendoBrowser|PLAYSTATION\ (\d|Vita)+) (?:\)?;?) (?:(?:[:\/ ])(?<version>[0-9A-Z.]+)|\/(?:[A-Z]*))/ix
53
53
  ).map { Regexp.last_match.names.collect{ |x| {x => $~[x]} }.reduce({}, :merge) }
54
54
  .reduce({}) { |h,pairs| pairs.each {|k,v| (h[k] ||= []) << v}; h }
55
55
 
@@ -80,9 +80,9 @@ class Useragentparser
80
80
  refpla = [platform]
81
81
  refval = ['']
82
82
 
83
- if findt(lowerBrowser, {'OPR' => 'Opera', 'UCBrowser' => 'UC Browser', 'YaBrowser' => 'Yandex', 'Iceweasel' => 'Firefox', 'Icecat' => 'Firefox', 'CriOS' => 'Chrome', 'Edg' => 'Edge', 'XiaoMi/MiuiBrowser' => 'MiuiBrowser'}, refkey, refbro)
83
+ if findt(lowerBrowser, {'OPR' => 'Opera', 'Facebot' => 'iMessageBot', 'UCBrowser' => 'UC Browser', 'YaBrowser' => 'Yandex', 'Iceweasel' => 'Firefox', 'Icecat' => 'Firefox', 'CriOS' => 'Chrome', 'Edg' => 'Edge', 'XiaoMi/MiuiBrowser' => 'MiuiBrowser'}, refkey, refbro)
84
84
  browser = refbro[0]
85
- version = result['version'][refkey[0]]
85
+ version = result['version'][refkey[0]][0] =~ /[0-9]/ ? result['version'][refkey[0]] : nil
86
86
  elsif find(lowerBrowser, 'Playstation Vita', refkey, platform)
87
87
  platform = 'PlayStation Vita'
88
88
  browser = 'Browser'
@@ -1,9 +1,9 @@
1
1
  # coding: utf-8
2
2
  Gem::Specification.new do |s|
3
3
  s.name = 'redmine_apijs'
4
- s.version = '6.6.0'
4
+ s.version = '6.7.0'
5
5
  s.summary = 'Redmine Apijs plugin'
6
- s.description = 'Integrate the apijs javascript library into Redmine.'
6
+ s.description = 'Integrate the apijs JavaScript library into Redmine. Provides a gallery for image and video attachments.'
7
7
  s.homepage = 'https://github.com/luigifab/redmine-apijs'
8
8
  s.license = 'GPL-2.0-or-later'
9
9
  s.authors = ['Fabrice Creuzot']
@@ -28,21 +28,21 @@ Gem::Specification.new do |s|
28
28
  assets/images/apijs/player-white-400.png
29
29
  assets/images/apijs/tv.gif
30
30
  assets/javascripts/apijs-redmine.min.js
31
+ assets/javascripts/apijs-redmine.min.js.map
31
32
  assets/javascripts/apijs.min.js
32
33
  assets/javascripts/apijs.min.js.map
33
34
  assets/javascripts/app.js
34
- assets/javascripts/app.min.js.map
35
35
  assets/stylesheets/apijs-print.min.css
36
36
  assets/stylesheets/apijs-print.min.css.map
37
37
  assets/stylesheets/apijs-redmine-rtl.min.css
38
+ assets/stylesheets/apijs-redmine-rtl.min.css.map
38
39
  assets/stylesheets/apijs-redmine.min.css
40
+ assets/stylesheets/apijs-redmine.min.css.map
39
41
  assets/stylesheets/apijs-screen-rtl.min.css
40
42
  assets/stylesheets/apijs-screen-rtl.min.css.map
41
43
  assets/stylesheets/apijs-screen.min.css
42
44
  assets/stylesheets/apijs-screen.min.css.map
43
- assets/stylesheets/styles-rtl.min.css.map
44
45
  assets/stylesheets/styles.css
45
- assets/stylesheets/styles.min.css.map
46
46
  config/locales/cs.yml
47
47
  config/locales/de.yml
48
48
  config/locales/en.yml
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine_apijs
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.6.0
4
+ version: 6.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fabrice Creuzot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-03 00:00:00.000000000 Z
11
+ date: 2021-07-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Integrate the apijs javascript library into Redmine.
13
+ description: Integrate the apijs JavaScript library into Redmine. Provides a gallery
14
+ for image and video attachments.
14
15
  email: code@luigifab.fr
15
16
  executables: []
16
17
  extensions: []
@@ -32,21 +33,21 @@ files:
32
33
  - assets/images/apijs/player-white-400.png
33
34
  - assets/images/apijs/tv.gif
34
35
  - assets/javascripts/apijs-redmine.min.js
36
+ - assets/javascripts/apijs-redmine.min.js.map
35
37
  - assets/javascripts/apijs.min.js
36
38
  - assets/javascripts/apijs.min.js.map
37
39
  - assets/javascripts/app.js
38
- - assets/javascripts/app.min.js.map
39
40
  - assets/stylesheets/apijs-print.min.css
40
41
  - assets/stylesheets/apijs-print.min.css.map
41
42
  - assets/stylesheets/apijs-redmine-rtl.min.css
43
+ - assets/stylesheets/apijs-redmine-rtl.min.css.map
42
44
  - assets/stylesheets/apijs-redmine.min.css
45
+ - assets/stylesheets/apijs-redmine.min.css.map
43
46
  - assets/stylesheets/apijs-screen-rtl.min.css
44
47
  - assets/stylesheets/apijs-screen-rtl.min.css.map
45
48
  - assets/stylesheets/apijs-screen.min.css
46
49
  - assets/stylesheets/apijs-screen.min.css.map
47
- - assets/stylesheets/styles-rtl.min.css.map
48
50
  - assets/stylesheets/styles.css
49
- - assets/stylesheets/styles.min.css.map
50
51
  - config/locales/cs.yml
51
52
  - config/locales/de.yml
52
53
  - config/locales/en.yml
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../../../tmp/9r9f0y","styles-rtl.css"],"names":[],"mappings":"AAAA;;;;;;ACmBA,aAAe,OAAO,EAEtB,UAAY,UAAU,MAAQ,OAAO,EACrC,YAAc,MAAM,KACpB,iBAAmB,OAAO,KAE1B,8CACC,QAAQ,MAAO,QAAQ,KAAO,MAAM,wBACpC,OAAO,IAAI,MAAM,KAAM,iBAAiB,KAIzC,2BAA6B,OAAO,IAAI,EAAG,WAAW,MACtD,8BAAgC,SAAS,SAAU,OAAO,KAAM,EAAE,EAAE,EAAG,MAAM,MAAO,WAAW,MAC/F,kCAAoC,WAAW,IAC/C,kCAAoC,MAAM,KAC1C,0CAA4C,MAAM,KAElD,mCACC,QAAQ,MAAO,YAAY,KAAM,SAAS,OAC1C,UAAU,QAAS,MAAM,QAAS,YAAY,OAAQ,cAAc,SAGrE,+CAAiD,YAAY,KAE7D,oBAAsB,OAAO,IAAI,EAAG,QAAQ,EAAG,WAAW,KAC1D,uBAAyB,QAAQ,MAAO,KAAO,WAAW,iBAAiB,IAC3E,6BAA+B,iBAAiB,QAEhD,yBAA2B,eAAe,OAC1C,8BAAgC,QAAQ,EAAE,KAC1C,4BAA8B,QAAQ,EAAE,KACxC,iCAAmC,MAAM,KACzC,iCAAmC,MAAM,KAGzC,uBAAwB,qCACvB,QAAQ,aAAc,OAAO,EAAG,QAAQ,EAAG,MAAM,KAAM,OAAO,KAAM,eAAe,OACnF,gBAAgB,eAAiB,OAAO,EAAG,iBAAiB,YAAa,OAAO,QAAS,QAAQ,IAGlG,4BAA6B,qCAAyC,iBAAiB,qCACvF,gCAAkC,iBAAiB,sCACnD,8BAAgC,iBAAiB,kCACjD,8BAAgC,iBAAiB,qCACjD,4BAA8B,iBAAiB,gCAG/C,qCAAuC,OAAO,IAAK,QAAQ,KAAO,OAAO,IAAI,MAAM,KACnF,gDAAkD,YAAY,SAC9D,+CAAiD,OAAO,KAAM,EAAG,YAAY,KAC7E,iDAAqD,OAAO,EAC5D,iDAAmD,aAAa,IAAK,YAAY,KAAO,MAAM,KAAM,UAAU,MAAO,WAAW,MAChI,uDAAyD,OAAO,EAGhE,wBAA0B,OAAO,EAAG,OAAO,EAAG,cAAc,EAAG,UAAU","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created D/15/12/2013\n * Updated M/16/02/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues &&& */\n#apijsDialog { margin:0; }\n\n#apijsBox { font-size:0.8rem; border:0; }\n#apijsBox a { color:blue; }\n#apijsBox button { height:auto; }\n\n#apijsBox.options.editattach input[type=\"text\"] {\n\tdisplay:block; padding:0.3em; width:calc(100% - 4px - 0.6em);\n\tborder:1px solid #888; background-color:#EEE;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& albums et listes &&& */\nbody div.attachments.album { margin:1em 0; text-align:right; }\nbody div.attachments.album dd { position:relative; margin:0.5em 0 0 0; width:202px; min-height:1.8em; }\nbody div.attachments.album dd.big { min-height:5em; }\nbody div.attachments.album dd div { float:left; }\nbody div.attachments.album dd span.author { clear:both; }\n\nbody div.attachments.album dd span {\n\tdisplay:block; line-height:16px; overflow:hidden;\n\tfont-size:inherit; color:inherit; white-space:nowrap; text-overflow:ellipsis;\n}\n\nbody div.attachments.album dd span:first-child { margin-left:60px; }\n\nbody ul.attachments { margin:1em 0; padding:0; list-style:none; }\nbody ul.attachments li { padding:0.25em 0.5em; transition:background-color 0.3s; }\nbody ul.attachments li:hover { background-color:#EFEFEF; }\n\nbody ul.attachments li a { vertical-align:middle; }\nbody ul.attachments li strong { padding:0 0.3em; }\nbody ul.attachments li span { padding:0 0.1em; }\nbody ul.attachments li span.size { color:gray; }\nbody ul.attachments li span.date { color:gray; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\nbody button.attachment, body ul.attachments a[id^=\"slideshow\"] {\n\tdisplay:inline-block; margin:0; padding:0; width:16px; height:16px; vertical-align:middle;\n\ttext-decoration:none !important; border:0; background-color:transparent; cursor:pointer; opacity:0.75;\n}\n\nbody button.attachment.show, body ul.attachments a[id^=\"slideshow\"] { background-image:url(\"../../../images/magnifier.png\"); }\nbody button.attachment.download { background-image:url(\"../../../images/attachment.png\"); }\nbody button.attachment.delete { background-image:url(\"../../../images/delete.png\"); }\nbody button.attachment.rename { background-image:url(\"../../../images/wiki_edit.png\"); }\nbody button.attachment.edit { background-image:url(\"../../../images/edit.png\"); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& configuration &&& */\nbody fieldset.apijs.tabular.settings { margin:1em; padding:0.5em; border:1px solid #CCC; }\nbody fieldset.apijs.tabular.settings p span.cmd { white-space:pre-wrap; }\nbody fieldset.apijs.tabular.settings p em.info { margin:0.2em 0; line-height:140%; }\nbody fieldset.apijs.tabular.settings p a + em.info { margin:0; }\nbody fieldset.apijs.tabular.settings p label.bis { margin-right:1px; margin-left:0.7em; width:auto; min-width:5.5em; text-align:right; }\nbody fieldset.apijs.tabular.settings p label.bis input { margin:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& navigateur &&& */\nbody .flash.error.apijs { margin:0; border:0; border-radius:0; font-size:11px; }"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../../../tmp/iCXibM","styles.css"],"names":[],"mappings":"AAAA;;;;;;ACmBA,aAAe,OAAO,EAEtB,UAAY,UAAU,MAAQ,OAAO,EACrC,YAAc,MAAM,KACpB,iBAAmB,OAAO,KAE1B,8CACC,QAAQ,MAAO,QAAQ,KAAO,MAAM,wBACpC,OAAO,IAAI,MAAM,KAAM,iBAAiB,KAIzC,2BAA6B,OAAO,IAAI,EAAG,WAAW,KACtD,8BAAgC,SAAS,SAAU,OAAO,KAAM,EAAE,EAAE,EAAG,MAAM,MAAO,WAAW,MAC/F,kCAAoC,WAAW,IAC/C,kCAAoC,MAAM,MAC1C,0CAA4C,MAAM,KAElD,mCACC,QAAQ,MAAO,YAAY,KAAM,SAAS,OAC1C,UAAU,QAAS,MAAM,QAAS,YAAY,OAAQ,cAAc,SAGrE,+CAAiD,aAAa,KAE9D,oBAAsB,OAAO,IAAI,EAAG,QAAQ,EAAG,WAAW,KAC1D,uBAAyB,QAAQ,MAAO,KAAO,WAAW,iBAAiB,IAC3E,6BAA+B,iBAAiB,QAEhD,yBAA2B,eAAe,OAC1C,8BAAgC,QAAQ,EAAE,KAC1C,4BAA8B,QAAQ,EAAE,KACxC,iCAAmC,MAAM,KACzC,iCAAmC,MAAM,KAGzC,uBAAwB,qCACvB,QAAQ,aAAc,OAAO,EAAG,QAAQ,EAAG,MAAM,KAAM,OAAO,KAAM,eAAe,OACnF,gBAAgB,eAAiB,OAAO,EAAG,iBAAiB,YAAa,OAAO,QAAS,QAAQ,IAGlG,4BAA6B,qCAAyC,iBAAiB,qCACvF,gCAAkC,iBAAiB,sCACnD,8BAAgC,iBAAiB,kCACjD,8BAAgC,iBAAiB,qCACjD,4BAA8B,iBAAiB,gCAG/C,qCAAuC,OAAO,IAAK,QAAQ,KAAO,OAAO,IAAI,MAAM,KACnF,gDAAkD,YAAY,SAC9D,+CAAiD,OAAO,KAAM,EAAG,YAAY,KAC7E,iDAAqD,OAAO,EAC5D,iDAAmD,YAAY,IAAK,aAAa,KAAO,MAAM,KAAM,UAAU,MAAO,WAAW,KAChI,uDAAyD,OAAO,EAGhE,wBAA0B,OAAO,EAAG,OAAO,EAAG,cAAc,EAAG,UAAU","sourcesContent":["/*!\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL).\n */\n","/**\n * Created D/15/12/2013\n * Updated M/16/02/2021\n *\n * Copyright 2008-2021 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://www.luigifab.fr/redmine/apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues &&& */\n#apijsDialog { margin:0; }\n\n#apijsBox { font-size:0.8rem; border:0; }\n#apijsBox a { color:blue; }\n#apijsBox button { height:auto; }\n\n#apijsBox.options.editattach input[type=\"text\"] {\n\tdisplay:block; padding:0.3em; width:calc(100% - 4px - 0.6em);\n\tborder:1px solid #888; background-color:#EEE;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& albums et listes &&& */\nbody div.attachments.album { margin:1em 0; text-align:left; }\nbody div.attachments.album dd { position:relative; margin:0.5em 0 0 0; width:202px; min-height:1.8em; }\nbody div.attachments.album dd.big { min-height:5em; }\nbody div.attachments.album dd div { float:right; }\nbody div.attachments.album dd span.author { clear:both; }\n\nbody div.attachments.album dd span {\n\tdisplay:block; line-height:16px; overflow:hidden;\n\tfont-size:inherit; color:inherit; white-space:nowrap; text-overflow:ellipsis;\n}\n\nbody div.attachments.album dd span:first-child { margin-right:60px; }\n\nbody ul.attachments { margin:1em 0; padding:0; list-style:none; }\nbody ul.attachments li { padding:0.25em 0.5em; transition:background-color 0.3s; }\nbody ul.attachments li:hover { background-color:#EFEFEF; }\n\nbody ul.attachments li a { vertical-align:middle; }\nbody ul.attachments li strong { padding:0 0.3em; }\nbody ul.attachments li span { padding:0 0.1em; }\nbody ul.attachments li span.size { color:gray; }\nbody ul.attachments li span.date { color:gray; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */\nbody button.attachment, body ul.attachments a[id^=\"slideshow\"] {\n\tdisplay:inline-block; margin:0; padding:0; width:16px; height:16px; vertical-align:middle;\n\ttext-decoration:none !important; border:0; background-color:transparent; cursor:pointer; opacity:0.75;\n}\n\nbody button.attachment.show, body ul.attachments a[id^=\"slideshow\"] { background-image:url(\"../../../images/magnifier.png\"); }\nbody button.attachment.download { background-image:url(\"../../../images/attachment.png\"); }\nbody button.attachment.delete { background-image:url(\"../../../images/delete.png\"); }\nbody button.attachment.rename { background-image:url(\"../../../images/wiki_edit.png\"); }\nbody button.attachment.edit { background-image:url(\"../../../images/edit.png\"); }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& configuration &&& */\nbody fieldset.apijs.tabular.settings { margin:1em; padding:0.5em; border:1px solid #CCC; }\nbody fieldset.apijs.tabular.settings p span.cmd { white-space:pre-wrap; }\nbody fieldset.apijs.tabular.settings p em.info { margin:0.2em 0; line-height:140%; }\nbody fieldset.apijs.tabular.settings p a + em.info { margin:0; }\nbody fieldset.apijs.tabular.settings p label.bis { margin-left:1px; margin-right:0.7em; width:auto; min-width:5.5em; text-align:left; }\nbody fieldset.apijs.tabular.settings p label.bis input { margin:0; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& navigateur &&& */\nbody .flash.error.apijs { margin:0; border:0; border-radius:0; font-size:11px; }"]}