From 2cd838ff0ed541f2158a9d06b5b5f314ee683d84 Mon Sep 17 00:00:00 2001 From: Fabrice Creuzot Date: Sun, 1 Jan 2023 20:00:00 +0000 Subject: [PATCH] Version 6.9.3 --- README.md | 4 +- composer.json | 2 +- .../Apijs/Block/Adminhtml/Config/Help.php | 5 +- .../Luigifab/Apijs/Block/Adminhtml/Demo.php | 10 ++-- .../Block/Adminhtml/Rewrite/Additional.php | 4 +- .../Block/Adminhtml/Rewrite/Categoryimg.php | 4 +- .../Block/Adminhtml/Rewrite/Configimg.php | 4 +- .../Apijs/Block/Adminhtml/Rewrite/Gallery.php | 44 ++++++++------- .../Block/Adminhtml/Rewrite/Productimg.php | 4 +- .../Luigifab/Apijs/Block/Browser.php | 4 +- .../community/Luigifab/Apijs/Helper/Data.php | 12 ++-- .../Luigifab/Apijs/Helper/Rewrite/Image.php | 55 ++++++++++++------- .../Luigifab/Apijs/Model/Observer.php | 4 +- .../community/Luigifab/Apijs/Model/Python.php | 47 ++++++++++++---- .../Apijs/Model/Rewrite/Categoryimg.php | 6 +- .../Luigifab/Apijs/Model/Rewrite/Media.php | 6 +- .../Luigifab/Apijs/Model/Rewrite/Mediares.php | 6 +- .../Apijs/Model/Rewrite/Productimg.php | 6 +- .../Luigifab/Apijs/Model/Rewrite/Storage.php | 4 +- .../Apijs/Model/Rewrite/Validator.php | 4 +- .../Apijs/Model/Rewrite/Varienimg.php | 30 ++++++++++ .../controllers/Apijs/CacheController.php | 6 +- .../controllers/Apijs/MediaController.php | 13 +++-- .../controllers/Apijs/WysiwygController.php | 6 +- .../Luigifab/Apijs/etc/adminhtml.xml | 4 +- .../community/Luigifab/Apijs/etc/config.xml | 13 +++-- .../community/Luigifab/Apijs/etc/system.xml | 12 +++- .../community/Luigifab/Apijs/lib/image.py | 6 +- src/app/code/community/Luigifab/Apijs/readme | 9 +-- .../Apijs/sql/apijs_setup/install-6.9.0.php | 14 ++--- .../default/default/layout/luigifab/apijs.xml | 4 +- .../template/luigifab/apijs/browser.phtml | 4 +- .../template/luigifab/apijs/content.phtml | 4 +- .../template/luigifab/apijs/demo.phtml | 4 +- .../template/luigifab/apijs/files.phtml | 6 +- .../template/luigifab/apijs/gallery.phtml | 6 +- .../base/default/layout/luigifab/apijs.xml | 4 +- .../template/luigifab/apijs/browser.phtml | 4 +- .../template/luigifab/apijs/demo.phtml | 4 +- .../template/luigifab/apijs/media.phtml | 4 +- src/app/etc/modules/Luigifab_Apijs.xml | 6 +- .../css/luigifab/apijs/apijs-openmage.css | 10 ++-- .../css/luigifab/apijs/apijs-openmage.min.css | 4 +- .../luigifab/apijs/apijs-openmage.min.css.map | 2 +- .../css/luigifab/apijs/apijs-print.min.css | 4 +- .../luigifab/apijs/apijs-print.min.css.map | 2 +- .../luigifab/apijs/apijs-screen-rtl.min.css | 4 +- .../apijs/apijs-screen-rtl.min.css.map | 2 +- .../css/luigifab/apijs/apijs-screen.min.css | 4 +- .../luigifab/apijs/apijs-screen.min.css.map | 2 +- .../js/luigifab/apijs/apijs-openmage.js | 4 +- .../js/luigifab/apijs/apijs-openmage.min.js | 6 +- .../luigifab/apijs/apijs-openmage.min.js.map | 2 +- .../default/js/luigifab/apijs/apijs.min.js | 6 +- .../js/luigifab/apijs/apijs.min.js.map | 2 +- .../css/luigifab/apijs/apijs-openmage.css | 8 +-- .../css/luigifab/apijs/apijs-openmage.min.css | 4 +- .../luigifab/apijs/apijs-openmage.min.css.map | 2 +- .../css/luigifab/apijs/apijs-print.min.css | 4 +- .../luigifab/apijs/apijs-print.min.css.map | 2 +- .../luigifab/apijs/apijs-screen-rtl.min.css | 4 +- .../apijs/apijs-screen-rtl.min.css.map | 2 +- .../css/luigifab/apijs/apijs-screen.min.css | 4 +- .../luigifab/apijs/apijs-screen.min.css.map | 2 +- .../default/js/luigifab/apijs/apijs.min.js | 6 +- .../js/luigifab/apijs/apijs.min.js.map | 2 +- 66 files changed, 296 insertions(+), 196 deletions(-) create mode 100644 src/app/code/community/Luigifab/Apijs/Model/Rewrite/Varienimg.php diff --git a/README.md b/README.md index e796f3f..21e3e8b 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@ For more information, go to https://www.luigifab.fr/apijs and https://www.luigif This repository is a releases mirror. To install the module, please use the composer key available in the documentation. -- Current version: 6.9.2 (10/10/2022) -- Compatibility: OpenMage 19.x / 20.x / 21.x, PHP 7.2 / 7.3 / 7.4 / 8.0 / 8.1, Python 3.3+ +- Current version: 6.9.3 (01/01/2023) +- Compatibility: OpenMage 19.x / 20.x / 21.x, PHP 7.2 / 7.3 / 7.4 / 8.0 / 8.1 / 8.2, Python 3.3+ - Client compatibility: Firefox 36+, Chrome 32+, Opera 19+, Edge 16+, Safari 9+ - Translations: English (en), French (fr-FR/fr-CA), German (de), Italian (it), Portuguese (pt-PT/pt-BR), Spanish (es) / Chinese (zh), Czech (cs), Dutch (nl), Greek (el), Hungarian (hu), Japanese (ja), Polish (pl), Romanian (ro), Russian (ru), Slovak (sk), Turkish (tr), Ukrainian (uk) - License: GNU GPL 2+ diff --git a/composer.json b/composer.json index 4607972..54562cf 100644 --- a/composer.json +++ b/composer.json @@ -87,4 +87,4 @@ ["src/skin/frontend/base/default/js/luigifab/apijs/", "skin/frontend/base/default/js/luigifab/apijs/"] ] } -} +} \ No newline at end of file diff --git a/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Config/Help.php b/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Config/Help.php index 13b2e30..7040cae 100644 --- a/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Config/Help.php +++ b/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Config/Help.php @@ -3,8 +3,8 @@ * Created V/23/05/2014 * Updated V/20/05/2022 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published @@ -47,6 +47,7 @@ protected function checkRewrites() { ['model' => 'catalog_resource/product_attribute_backend_media'], ['model' => 'cms/wysiwyg_images_storage'], ['model' => 'core/file_validator_image'], + ['model' => 'varien/image'], ]; foreach ($rewrites as $rewrite) { diff --git a/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Demo.php b/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Demo.php index 2a941c8..6535aab 100644 --- a/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Demo.php +++ b/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Demo.php @@ -1,10 +1,10 @@ - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published @@ -22,6 +22,8 @@ class Luigifab_Apijs_Block_Adminhtml_Demo extends Mage_Adminhtml_Block_Abstract protected $_template = 'luigifab/apijs/demo.phtml'; public function render(Varien_Data_Form_Element_Abstract $element) { - return ''.$this->toHtml().''; + // getPath PR 2774 + $isDefault = !$element->getCanUseWebsiteValue() && !$element->getCanUseDefaultValue(); + return ''.$this->toHtml().''; } } \ No newline at end of file diff --git a/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Additional.php b/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Additional.php index b52abe8..ab2b551 100644 --- a/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Additional.php +++ b/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Additional.php @@ -3,8 +3,8 @@ * Created M/06/10/2020 * Updated M/06/10/2020 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Categoryimg.php b/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Categoryimg.php index 7e38ced..adc70d0 100644 --- a/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Categoryimg.php +++ b/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Categoryimg.php @@ -3,8 +3,8 @@ * Created L/30/03/2020 * Updated J/23/12/2021 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Configimg.php b/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Configimg.php index 5735758..d8f5043 100644 --- a/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Configimg.php +++ b/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Configimg.php @@ -3,8 +3,8 @@ * Created L/26/10/2015 * Updated J/23/12/2021 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Gallery.php b/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Gallery.php index acd309b..6f88637 100644 --- a/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Gallery.php +++ b/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Gallery.php @@ -1,10 +1,10 @@ - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published @@ -23,13 +23,23 @@ protected function _construct() { $this->setModuleName('Mage_Adminhtml'); } - public function __construct() { + public function setTemplate($template) { - parent::__construct(); $product = Mage::registry('current_product'); - if (!empty($product) && !empty($product->getId()) && Mage::getStoreConfigFlag('apijs/general/backend')) - $this->setTemplate('luigifab/apijs/gallery.phtml'); // catalog/product/helper/gallery.phtml + $template = 'luigifab/apijs/gallery.phtml'; // catalog/product/helper/gallery.phtml + + return parent::setTemplate($template); + } + + public function getScopeLabel(object $attribute) { + + if ($attribute->isScopeGlobal()) + return $this->__('[GLOBAL]'); + if ($attribute->isScopeWebsite()) + return $this->__('[WEBSITE]'); + + return $this->__('[STORE VIEW]'); } public function getImages(bool $sortByStore) { @@ -93,7 +103,7 @@ public function getImages(bool $sortByStore) { } } - $storeValues[$code] = $product->getResource()->getAttributeRawValue($productId, $code, $storeId); + $storeValues[$code] = $product->getResource()->getAttributeRawValue($productId, $code, $storeId); } } @@ -106,17 +116,13 @@ public function getImages(bool $sortByStore) { } } - return ['images' => $images, 'counts' => $counts, 'defaultValues' => $defaultValues, 'storeValues' => $storeValues, 'globalValues' => $globalValues]; - } - - public function getScopeLabel(object $attribute) { - - if ($attribute->isScopeGlobal()) - return $this->__('[GLOBAL]'); - if ($attribute->isScopeWebsite()) - return $this->__('[WEBSITE]'); - - return $this->__('[STORE VIEW]'); + return [ + 'images' => $images, + 'counts' => $counts, + 'defaultValues' => $defaultValues, + 'storeValues' => $storeValues, + 'globalValues' => $globalValues, + ]; } public function isUseGlobal(object $image, string $field, string $value) { diff --git a/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Productimg.php b/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Productimg.php index a7fdc6a..20b64f8 100644 --- a/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Productimg.php +++ b/src/app/code/community/Luigifab/Apijs/Block/Adminhtml/Rewrite/Productimg.php @@ -3,8 +3,8 @@ * Created J/27/05/2021 * Updated J/23/12/2021 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/app/code/community/Luigifab/Apijs/Block/Browser.php b/src/app/code/community/Luigifab/Apijs/Block/Browser.php index 4378c8b..95b3e5e 100644 --- a/src/app/code/community/Luigifab/Apijs/Block/Browser.php +++ b/src/app/code/community/Luigifab/Apijs/Block/Browser.php @@ -3,8 +3,8 @@ * Created V/11/10/2019 * Updated V/11/10/2019 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/app/code/community/Luigifab/Apijs/Helper/Data.php b/src/app/code/community/Luigifab/Apijs/Helper/Data.php index 2b24828..15f7e3b 100644 --- a/src/app/code/community/Luigifab/Apijs/Helper/Data.php +++ b/src/app/code/community/Luigifab/Apijs/Helper/Data.php @@ -1,10 +1,10 @@ - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published @@ -19,7 +19,11 @@ class Luigifab_Apijs_Helper_Data extends Mage_Core_Helper_Abstract { + // singleton protected $_usePython; + protected $_baseMediaPath; + protected $_baseWysiwygPath; + protected $_filesToRemove; public function getVersion() { @@ -114,7 +118,7 @@ public function getUsername() { $user = $action->getFullActionName(); // frontend else - $user = sprintf('frontend %d', Mage::app()->getStore()->getData('code')); + $user = sprintf('frontend %s', Mage::app()->getStore()->getData('code')); return $user; } diff --git a/src/app/code/community/Luigifab/Apijs/Helper/Rewrite/Image.php b/src/app/code/community/Luigifab/Apijs/Helper/Rewrite/Image.php index c28ddad..caee77e 100644 --- a/src/app/code/community/Luigifab/Apijs/Helper/Rewrite/Image.php +++ b/src/app/code/community/Luigifab/Apijs/Helper/Rewrite/Image.php @@ -1,11 +1,11 @@ - * Copyright 2019-2022 | Fabrice Creuzot - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * Copyright 2019-2023 | Fabrice Creuzot + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published @@ -20,15 +20,26 @@ class Luigifab_Apijs_Helper_Rewrite_Image extends Mage_Catalog_Helper_Image { + // singleton protected $_usePython; protected $_cacheConfig; protected $_cacheUrls; + protected $_webp; + protected $_processor; + protected $_helper; + protected $_modelImg; + protected $_cleanUrl; + protected $_storeId; + protected $_svg; + protected $_fixed; + protected $_imageFile; + public function __construct() { $this->_usePython = Mage::getStoreConfigFlag('apijs/general/python'); } - public function init($product, $attribute, $path = null, $fixed = true, $webp = false) { + public function init($object, $attribute, $path = null, $fixed = true, $webp = false) { $this->_reset(); $this->_webp = $webp; @@ -63,9 +74,16 @@ public function init($product, $attribute, $path = null, $fixed = true, $webp = $path = '../../'.$dir.'/'.mb_substr($path, mb_stripos($path, '/'.$dir.'/') + mb_strlen('/'.$dir.'/')); } else if ($attribute == 'category') { + if (empty($path) && !empty($object->getId())) + $path = $object->getResource()->getAttributeRawValue($object->getId(), $attribute, $object->getStoreId()); // xyz.jpg => ../category/xyz.jpg $path = '../category/'.$path; } + else if (empty($path)) { + $path = $object->getData($attribute); + if (empty($path) && !empty($object->getId())) + $path = $object->getResource()->getAttributeRawValue($object->getId(), $attribute, $object->getStoreId()); + } $model = clone $this->_modelImg; $model->setDestinationSubdir($attribute); @@ -81,7 +99,7 @@ public function init($product, $attribute, $path = null, $fixed = true, $webp = if (empty($this->_cacheConfig) || !is_array($this->_cacheConfig)) { $this->_cacheConfig = [ - 'date' => date('Y-m-d H:i:s \U\T\C'), + 'date' => date('c'), 'apijs/general/python' => $this->_usePython, 'apijs/general/remove_store_id' => Mage::getStoreConfigFlag('apijs/general/remove_store_id'), 'list_search' => [], @@ -91,23 +109,23 @@ public function init($product, $attribute, $path = null, $fixed = true, $webp = if (Mage::getStoreConfigFlag('apijs/general/use_link')) { $dir = Mage::getBaseDir('media'); - $all = ['wysiwyg/cache', 'catalog/category/cache']; + $tmp = ['wysiwyg/cache', 'catalog/category/cache']; $attrs = Mage::getModel('catalog/product')->getMediaAttributes(); if ($this->_cacheConfig['apijs/general/remove_store_id']) { foreach ($attrs as $attrCode => $attr) - $all[] = 'catalog/product/cache/'.$attrCode; + $tmp[] = 'catalog/product/cache/'.$attrCode; } else { $storeIds = Mage::getResourceModel('core/store_collection')->getAllIds(); foreach ($attrs as $attrCode => $attr) { - $all[] = 'catalog/product/cache/'.$attrCode; + $tmp[] = 'catalog/product/cache/'.$attrCode; foreach ($storeIds as $storeId) - $all[] = 'catalog/product/cache/'.$storeId.'/'.$attrCode; + $tmp[] = 'catalog/product/cache/'.$storeId.'/'.$attrCode; } } - foreach ($all as $full) { + foreach ($tmp as $full) { $short = ''; $key = crc32($full); @@ -119,7 +137,9 @@ public function init($product, $attribute, $path = null, $fixed = true, $webp = while (in_array('/media/'.$short.'/', $this->_cacheConfig['list_replace'])) $short .= substr($word.$key, ++$idx, 1); - if (!file_exists($dir.'/'.$short)) + // $dir $short => /var/www/xyz/web/media wc + // $dir $full => /var/www/xyz/web/media wysiwyg/cache + if (!file_exists($dir.'/'.$full)) @mkdir($dir.'/'.$full, 0755, true); if (!file_exists($dir.'/'.$short)) @symlink($full, $dir.'/'.$short); @@ -133,7 +153,7 @@ public function init($product, $attribute, $path = null, $fixed = true, $webp = $this->_cacheUrls = Mage::app()->useCache('block_html') ? @json_decode(Mage::app()->loadCache('apijs_urls'), true) : null; if (empty($this->_cacheUrls) || !is_array($this->_cacheUrls)) { $this->_cacheUrls = [ - 'date' => date('Y-m-d H:i:s \U\T\C'), + 'date' => date('c'), ]; } } @@ -152,9 +172,6 @@ public function init($product, $attribute, $path = null, $fixed = true, $webp = $this->setWatermarkSize($this->_cacheConfig['design/watermark/'.$attribute.'_size']); } - if (empty($path)) - $path = $product->getData($attribute); - $this->_svg = !empty($path) && (mb_substr($path, -4) == '.svg'); $this->_fixed = $fixed; $this->_imageFile = $path; @@ -208,7 +225,7 @@ public function setBaseFile() { //$go = microtime(true); $model = $this->_getModel(); - $file = $this->_helper->getCatalogProductImageDir().trim($this->_imageFile, '/'); + $file = $this->_imageFile ? $this->_helper->getCatalogProductImageDir().trim($this->_imageFile, '/') : false; if ($this->_cacheConfig['apijs/general/python']) { $this->_processor->setFilename($file)->setFixed($this->_fixed); @@ -219,7 +236,7 @@ public function setBaseFile() { // essaye le fichier source ou le placeholder // setWatermarkFile pour avoir une url unique // par exemple, en cas de suppression de l'image a.jpg, puis de l'ajout de l'image a.jpg, même nom mais contenu différent - if (is_file($file)) { + if (!empty($file) && is_file($file)) { $old = $model->getWatermarkFile(); $model->setWatermarkFile($old.filemtime($file)); $model->setBaseFile($this->_imageFile); @@ -255,7 +272,7 @@ public function setBaseFile() { public function cleanUrl(string $url) { - $url = $this->_cleanUrl ? mb_substr($url, strpos($url, '/', 9)) : $url; + $url = $this->_cleanUrl ? mb_substr($url, mb_strpos($url, '/', 9)) : $url; if ($this->_cacheConfig['apijs/general/remove_store_id']) $url = str_replace('/cache/'.$this->_storeId.'/', '/cache/', $url); diff --git a/src/app/code/community/Luigifab/Apijs/Model/Observer.php b/src/app/code/community/Luigifab/Apijs/Model/Observer.php index 76a6811..1789f7b 100644 --- a/src/app/code/community/Luigifab/Apijs/Model/Observer.php +++ b/src/app/code/community/Luigifab/Apijs/Model/Observer.php @@ -3,8 +3,8 @@ * Created S/13/06/2015 * Updated D/18/09/2022 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/app/code/community/Luigifab/Apijs/Model/Python.php b/src/app/code/community/Luigifab/Apijs/Model/Python.php index deebcf5..e78ba28 100644 --- a/src/app/code/community/Luigifab/Apijs/Model/Python.php +++ b/src/app/code/community/Luigifab/Apijs/Model/Python.php @@ -1,10 +1,10 @@ - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published @@ -21,22 +21,49 @@ class Luigifab_Apijs_Model_Python extends Varien_Image { // singleton protected $_python; - protected $_quality = 100; - protected $_imageSize = []; protected $_files = []; protected $_pids = []; protected $_core = 1; + protected $_imageSize = []; + protected $_isVarienRewrite = false; + protected $_quality = 100; + protected $_rotateAngle; + protected $_resizeWidth; + protected $_resizeHeight; + protected $_cropTop; + protected $_cropLeft; + protected $_cropRight; + protected $_cropBottom; + protected $_watermarkImage; + protected $_watermarkPositionX; + protected $_watermarkPositionY; + protected $_watermarkOpacity; + protected $_watermarkRepeat; + protected $_keepAspectRatio; + protected $_keepFrame; + protected $_keepTransparency; + protected $_constrainOnly; + protected $_backgroundColor; + protected $_watermarkPosition; + protected $_watermarkImageOpacity; + protected $_watermarkWidth; + protected $_watermarkHeigth; + protected $_fileName; protected $_svg; + protected $_resizeFixed; + // model public function __construct($file = null, $adapter = null) { - // nothing + + if ($this->_isVarienRewrite && !empty($file)) + $this->setFilename($file); } public function __destruct() { $this->waitThreads(); } - private function initCommands() { + protected function initCommands() { if (empty($this->_python)) { @@ -158,7 +185,7 @@ public function save($destination = null, $newFilename = null, $immediate = fals } catch (Throwable $t) { Mage::logException($t); - throw $t; + Mage::throwException($t); } return $this; @@ -182,7 +209,6 @@ public function display() { } // getter - public function getOriginalWidth() { if ($this->isSvg()) @@ -233,7 +259,6 @@ public function isSvg() { } // setter - public function rotate($angle) { $this->_rotateAngle = $angle; return $this; @@ -320,7 +345,7 @@ public function setWatermarkHeigth($value) { } public function setFilename($value) { - $this->_fileName = $value; + $this->_fileName = $value; $this->_imageSize = []; $this->_svg = null; return $this; diff --git a/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Categoryimg.php b/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Categoryimg.php index 067282d..97849ba 100644 --- a/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Categoryimg.php +++ b/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Categoryimg.php @@ -3,9 +3,9 @@ * Created J/27/05/2021 * Updated M/26/10/2021 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * Copyright 2019-2022 | Fabrice Creuzot - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * Copyright 2019-2023 | Fabrice Creuzot + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Media.php b/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Media.php index e9a1a9c..fb487d0 100644 --- a/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Media.php +++ b/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Media.php @@ -3,9 +3,9 @@ * Created J/29/08/2019 * Updated J/21/04/2022 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * Copyright 2019-2022 | Fabrice Creuzot - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * Copyright 2019-2023 | Fabrice Creuzot + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Mediares.php b/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Mediares.php index 72c92eb..edd7368 100644 --- a/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Mediares.php +++ b/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Mediares.php @@ -3,9 +3,9 @@ * Created J/29/08/2019 * Updated S/19/02/2022 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * Copyright 2019-2022 | Fabrice Creuzot - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * Copyright 2019-2023 | Fabrice Creuzot + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Productimg.php b/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Productimg.php index c63cf82..e39c796 100644 --- a/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Productimg.php +++ b/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Productimg.php @@ -3,9 +3,9 @@ * Created J/27/05/2021 * Updated M/26/10/2021 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * Copyright 2019-2022 | Fabrice Creuzot - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * Copyright 2019-2023 | Fabrice Creuzot + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Storage.php b/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Storage.php index 9585d61..fd87bd9 100644 --- a/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Storage.php +++ b/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Storage.php @@ -3,8 +3,8 @@ * Created S/09/10/2021 * Updated S/09/10/2021 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Validator.php b/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Validator.php index 38b1827..c146887 100644 --- a/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Validator.php +++ b/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Validator.php @@ -3,8 +3,8 @@ * Created S/09/05/2020 * Updated D/26/06/2022 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Varienimg.php b/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Varienimg.php new file mode 100644 index 0000000..b1ac791 --- /dev/null +++ b/src/app/code/community/Luigifab/Apijs/Model/Rewrite/Varienimg.php @@ -0,0 +1,30 @@ + + * https://github.com/luigifab/openmage-apijs + * + * This program is free software, you can redistribute it or modify + * it under the terms of the GNU General Public License (GPL) as published + * by the free software foundation, either version 2 of the license, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but without any warranty, without even the implied warranty of + * merchantability or fitness for a particular purpose. See the + * GNU General Public License (GPL) for more details. + */ + +if (Mage::getStoreConfigFlag('apijs/general/python')) { + // this allow to use OpenMage without PHP-GD (with PR 2666) + class Luigifab_Apijs_Model_Rewrite_Varienimg extends Luigifab_Apijs_Model_Python { + protected $_isVarienRewrite = true; + } +} +else { + class Luigifab_Apijs_Model_Rewrite_Varienimg extends Varien_Image { + protected $_isVarienRewrite = false; + } +} \ No newline at end of file diff --git a/src/app/code/community/Luigifab/Apijs/controllers/Apijs/CacheController.php b/src/app/code/community/Luigifab/Apijs/controllers/Apijs/CacheController.php index f8eeb06..62402f7 100644 --- a/src/app/code/community/Luigifab/Apijs/controllers/Apijs/CacheController.php +++ b/src/app/code/community/Luigifab/Apijs/controllers/Apijs/CacheController.php @@ -3,9 +3,9 @@ * Created M/07/01/2020 * Updated V/18/06/2021 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * Copyright 2019-2022 | Fabrice Creuzot - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * Copyright 2019-2023 | Fabrice Creuzot + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/app/code/community/Luigifab/Apijs/controllers/Apijs/MediaController.php b/src/app/code/community/Luigifab/Apijs/controllers/Apijs/MediaController.php index 37a83e7..ee65d65 100644 --- a/src/app/code/community/Luigifab/Apijs/controllers/Apijs/MediaController.php +++ b/src/app/code/community/Luigifab/Apijs/controllers/Apijs/MediaController.php @@ -1,11 +1,11 @@ - * Copyright 2019-2022 | Fabrice Creuzot - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * Copyright 2019-2023 | Fabrice Creuzot + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published @@ -24,15 +24,17 @@ class Luigifab_Apijs_Apijs_MediaController extends Mage_Adminhtml_Catalog_Produc protected function disableAllBuffer() { - // désactivation des tampons + // désactivation des tampons (sauf si zlib.output_compression) // cela permet d'afficher 100% dans la barre de progression // https://stackoverflow.com/a/25835968 header('Content-Encoding: chunked'); + header('Connection: Keep-Alive'); header('Content-Type: text/plain; charset=utf-8'); header('Cache-Control: no-cache, must-revalidate'); ini_set('output_buffering', 0); ini_set('implicit_flush', 1); ob_implicit_flush(); + ignore_user_abort(true); try { for ($i = 0; $i < ob_get_level(); $i++) @@ -41,6 +43,7 @@ protected function disableAllBuffer() { catch (Throwable $t) { } echo ' '; + return $this; } protected function formatResult($success, $errors, $data) { diff --git a/src/app/code/community/Luigifab/Apijs/controllers/Apijs/WysiwygController.php b/src/app/code/community/Luigifab/Apijs/controllers/Apijs/WysiwygController.php index ed3135c..a761a83 100644 --- a/src/app/code/community/Luigifab/Apijs/controllers/Apijs/WysiwygController.php +++ b/src/app/code/community/Luigifab/Apijs/controllers/Apijs/WysiwygController.php @@ -3,9 +3,9 @@ * Created M/10/09/2019 * Updated V/24/06/2022 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * Copyright 2019-2022 | Fabrice Creuzot - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * Copyright 2019-2023 | Fabrice Creuzot + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/app/code/community/Luigifab/Apijs/etc/adminhtml.xml b/src/app/code/community/Luigifab/Apijs/etc/adminhtml.xml index f6c3309..b50de5f 100644 --- a/src/app/code/community/Luigifab/Apijs/etc/adminhtml.xml +++ b/src/app/code/community/Luigifab/Apijs/etc/adminhtml.xml @@ -3,8 +3,8 @@ * Created D/26/02/2012 * Updated D/09/02/2020 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/app/code/community/Luigifab/Apijs/etc/config.xml b/src/app/code/community/Luigifab/Apijs/etc/config.xml index 2f36004..2ba8c34 100644 --- a/src/app/code/community/Luigifab/Apijs/etc/config.xml +++ b/src/app/code/community/Luigifab/Apijs/etc/config.xml @@ -1,10 +1,10 @@ + https://www.luigifab.fr/openmage/rss.xml diff --git a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-openmage.css b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-openmage.css index 7c3a7eb..517ca2c 100644 --- a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-openmage.css +++ b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-openmage.css @@ -1,9 +1,9 @@ /** * Created D/15/12/2013 - * Updated J/11/08/2022 + * Updated V/28/10/2022 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published @@ -27,7 +27,7 @@ #apijsBox .left, #apijsBox .right, #apijsBox button :before { float:inherit !important; } @font-face { - /* apijsFontelloOpenMage sinon erreur 404, voir https://stackoverflow.com/a/35034674 */ + /* apijsFontelloOpenMage to avoid 404, https://stackoverflow.com/a/35034674 */ src:url("../../../fonts/luigifab/apijs/fontello.woff2") format("woff2"), url("../../../fonts/luigifab/apijs/fontello.woff") format("woff"); font-family:apijsFontelloOpenMage; font-weight:400; font-style:normal; } @@ -147,4 +147,4 @@ body.adminhtml-apijs-wysiwyg-index .main-col .filecnt .filename, body #browser_w overflow:hidden; white-space:nowrap; text-overflow:ellipsis; } -body.adminhtml-apijs-wysiwyg-index #button_delete_files, body #browser_window #button_delete_files { display:none; } +body.adminhtml-apijs-wysiwyg-index #button_delete_files, body #browser_window #button_delete_files { display:none; } \ No newline at end of file diff --git a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-openmage.min.css b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-openmage.min.css index 09ea7d3..6639256 100644 --- a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-openmage.min.css +++ b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-openmage.min.css @@ -1,6 +1,6 @@ /*! - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL). */ diff --git a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-openmage.min.css.map b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-openmage.min.css.map index 2fdd8e0..b6aca76 100644 --- a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-openmage.min.css.map +++ b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-openmage.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["5a85a","apijs-openmage.css"],"names":[],"mappings":"AAAA;;;;;;ACmBA,UAAY,KAAK,OAAO,WACxB,gBAAkB,YAAY,cAAmB,MAAM,eACvD,sBAAuB,sBAAwB,iBAAiB,6CAEhE,iBAAmB,YAAY,WAAY,YAAY,IAAK,iBAAiB,KAC7E,6BAA8B,6BAA+B,QAAQ,EAAG,WAAW,IAEnF,gBAAiB,iBAAkB,yBAA2B,MAAM,kBAEpE,WAEC,IAAI,oDAAoD,eAAe,CAAE,mDAAmD,eAC5H,YAAY,sBAAuB,YAAY,IAAK,WAAW,OAG3C,sCAArB,oBAA4D,qBAAsB,+BACjF,YAAY,sBAGb,4CACC,QAAQ,MAAO,QAAQ,KAAO,MAAM,wBACpC,OAAO,IAAI,MAAM,KAAM,iBAAiB,KAGzC,oBAAsB,eAAe,OAGrC,aACC,QAAQ,OAAQ,OAAO,EAAG,QAAQ,EAAE,EAAE,IAAK,YAAY,EACvD,YAAY,IAAK,gBAAgB,UAAW,MAAM,QAAS,OAAO,EAAG,WAAW,IAGjF,oBAAsB,MAAM,IAE5B,qBACC,QAAQ,aAAc,QAAQ,IAC9B,aAAa,IAAK,aAAa,MAAO,aAAa,KAAK,QAAQ,QAAQ,KAAM,iBAAiB,KAGhG,2BAA6B,UAAU,KAAM,OAAO,EAAG,WAAW,KAClE,uBAAyB,QAAQ,MAAO,OAAO,IAAI,KAAK,IAGxD,eAAiB,OAAO,mBAExB,2BADA,+CAAgD,wDACnB,eAAe,KAAM,QAAQ,GAE1D,4BAA8B,MAAM,KACpC,+BAAiC,WAAW,OAAQ,eAAe,IAAK,YAAY,OAEpF,iDACC,SAAS,OAAQ,IAAI,KAAM,QAAQ,IAAI,IAAK,YAAY,KAAM,WAAW,OAAQ,eAAe,OAChG,WAAW,uCAAuC,EAAE,IAAI,SAGzD,+CACC,SAAS,OAAQ,IAAI,KAAM,QAAQ,IAAI,IAAI,IAAK,YAAY,KAAM,WAAW,OAAQ,eAAe,OACpG,YAAY,IAAK,WAAW,yCAAyC,SAAS,QAG/E,wCAA0C,QAAQ,OAAQ,MAAM,eAChE,uCAAyC,UAAU,KAAM,YAAY,IAAK,YAAY,KAEtF,qCAAuC,SAAS,OAAQ,OAAO,EAC/D,oCAAsC,OAAO,KAAO,YAAY,KAAM,WAAW,KACjF,yCAA2C,SAAS,SAAU,MAAM,MAAO,OAAO,IAAI,EAAE,EAAE,IAAK,QAAQ,EAAG,OAAO,QAEjH,2CACC,kBAAkB,KAAM,uBAAuB,KAC/C,YAAY,KAAM,iBAAiB,KAAM,gBAAgB,KAAM,oBAAoB,KAGpF,8CAAgD,iBAAiB,eAAiB,OAAO,QACzF,kDAAoD,iBAAiB,kBAAoB,OAAO,QAAS,eAAe,UACxH,0CAA4C,iBAAiB,kBAE7D,qCAAuC,eAAe,OACtD,yCAA2C,QAAQ,IAAK,MAAM,MAC9D,yCAA2C,YAAY,MAAO,MAAM,KACpE,0CAA4C,YAAY,QACxD,kDAAoD,QAAQ,MAE5D,wCAA0C,UAAU,KAAM,OAAO,QACjE,4CAA8C,QAAQ,OAEtD,iDAAmD,iBAAiB,QACpE,8CAAgD,OAAO,KAAM,KAAM,OAAO,QAC1E,mDAAqD,cAAc,IAAK,MAAM,eAAiB,WAAW,WAAY,gBAAgB,WACtI,kDAAoD,OAAO,EAAE,KAAK,KAGlE,6CAA+C,YAAY,KAAM,eAAe,EAAG,WAAW,KAAM,SAAS,KAC7G,6DAA+D,QAAQ,EAAE,EAAE,MAC3E,uDAAyD,OAAO,QAAS,SAAS,QAChC,wDAAlD,iDAA4G,QAAQ,KAGpH,sCAAwC,SAAS,OACjD,+BAAiC,WAAW,KAAM,eAAe,EACjE,+BAAiC,YAAY,MAAO,QAAQ,EAC5D,+CAAiD,YAAY,OAAQ,SAAS,OAAQ,YAAY,OAC5D,yCAAtC,qCAAiF,OAAO,MAAO,oBAAoB,KAG1C,0DAAzE,wEACC,WAAW,KAAM,aAAa,KAC9B,WAAW,iDAAiD,UAAU,KAAK,OAG3B,kCAAjD,gDAAqF,QAAQ,EAAE,IAC1C,sCAArD,oDAA6F,QAAQ,EAAG,WAAW,KAC/D,qCAApD,mDAA2F,OAAO,KAAM,EAAE,KAAO,WAAW,KAErE,wCAAvD,sDACC,MAAM,kBAAoB,QAAQ,uBAAyB,MAAM,gBAAkB,OAAO,kBAG3B,iDAAhE,+DACC,aAAa,eAAiB,iBAAiB,eAGY,6CAA5D,2DACC,QAAQ,KAAM,cAAc,KAAO,MAAM,MAAO,OAAO,MAAO,gBAAgB,OAAQ,YAAY,OAClG,gBAAgB,KAAM,iBAAiB,QAGyB,kDAAjE,gEACC,SAAS,OAAQ,YAAY,OAAQ,cAAc,SAGK,0CAAzD,wDAAqG,QAAQ","sourcesContent":["/*!\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \n * https://www.luigifab.fr/openmage/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 J/11/08/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \n * https://www.luigifab.fr/openmage/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#apijsBox { font:0.8rem sans-serif; }\n#apijsBox.error { font-weight:normal !important; color:black !important; }\n#apijsBox.photo.error, #apijsBox.video.error { background-image:url(\"../../../images/luigifab/apijs/tv.gif\"); }\n\n#apijsBox button { font-family:sans-serif; font-weight:400; background-image:none; }\n#apijsBox button.cancel span, #apijsBox button.delete span { padding:0; background:none; }\n\n#apijsBox .left, #apijsBox .right, #apijsBox button :before { float:inherit !important; }\n\n@font-face {\n\t/* apijsFontelloOpenMage sinon erreur 404, voir https://stackoverflow.com/a/35034674 */\n\tsrc:url(\"../../../fonts/luigifab/apijs/fontello.woff2\") format(\"woff2\"), url(\"../../../fonts/luigifab/apijs/fontello.woff\") format(\"woff\");\n\tfont-family:apijsFontelloOpenMage; font-weight:400; font-style:normal;\n}\n\n#apijsBox h1:before, #apijsBox div.btns button span:before, #apijsBox kbd:before, #apijsBox span.player span.fnt {\n\tfont-family:apijsFontelloOpenMage;\n}\n\n#apijsBox.options.editname 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#apijsBox.upload h1 { letter-spacing:-0.05em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& global &&& */\nbutton.slink {\n\tdisplay:inline; margin:0; padding:0 0 1px; line-height:1;\n\tfont-weight:400; text-decoration:underline; color:#EA7601; border:0; background:none;\n}\n\nbutton.slink.remove { color:red; }\n\ntd div.image.preview {\n\tdisplay:inline-block; padding:3px;\n\tborder-width:1px; border-style:solid; border-color:#AAA #C8C8C8 #C8C8C8 #AAA; background-color:white;\n}\n\ntd div.image.preview input { font-size:12px; border:0; background:white; }\ntd div.image.preview a { display:block; margin:4px 25px 3px; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& galerie photo &&& */\nbody.fabload * { cursor:progress !important; }\nbody.fabload div.content-header p.form-buttons, body.fabload div.content-header-floating p.form-buttons,\nbody.fabload #apijsGallery { pointer-events:none; opacity:0.5; }\n\n#apijsGallery table.gallery { width:100%; }\n#apijsGallery table.gallery td { text-align:center; vertical-align:top; white-space:nowrap; }\n\n#apijsGallery table.gallery thead tr.headings th {\n\tposition:sticky; top:37px; padding:2px 5px; line-height:130%; text-align:center; vertical-align:middle;\n\tbackground:url(\"../../../images/sort_row_bg.gif\") 0 50% repeat-x;\n}\n\n#apijsGallery table.gallery thead tr.filter th {\n\tposition:sticky; top:72px; padding:8px 5px 6px; line-height:130%; text-align:center; vertical-align:middle;\n\tfont-weight:400; background:url(\"../../../images/filter_row_bg.gif\") repeat-x #E3EFF1;\n}\n\n#apijsGallery table.gallery thead input { display:inline; width:35px !important; }\n#apijsGallery table.gallery thead span { font-size:10px; font-weight:400; line-height:150%; }\n\n#apijsGallery table.gallery tfoot td { position:sticky; bottom:0; }\n#apijsGallery table.gallery tfoot p { margin:0.4em; line-height:130%; text-align:left; }\n#apijsGallery table.gallery tfoot button { position:relative; float:right; margin:2px 0 0 8px; z-index:1; cursor:pointer; }\n\n#apijsGallery table.gallery tbody tr.separ {\n\tscroll-margin-top:10em; scroll-snap-margin-top:10em;\n\tuser-select:none; -moz-user-select:none; -ms-user-select:none; -webkit-user-select:none;\n}\n\n#apijsGallery table.gallery tbody tr.separ td { background-color:#EEE !important; cursor:pointer; }\n#apijsGallery table.gallery tbody tr.separ.inf td { background-color:#F7F7F7 !important; cursor:pointer; text-transform:lowercase; }\n#apijsGallery table.gallery tbody td.mark { background-color:#DEFFDE !important; }\n\n#apijsGallery table.gallery tbody td { vertical-align:middle; }\n#apijsGallery table.gallery tbody td.img { padding:3px; width:200px; }\n#apijsGallery table.gallery tbody td.hgt { line-height:150px; color:gray; }\n#apijsGallery table.gallery tbody td.last { white-space:inherit; }\n#apijsGallery table.gallery tbody td:not(.last) * { display:block; }\n\n#apijsGallery table.gallery tbody label { font-size:10px; cursor:pointer; }\n#apijsGallery table.gallery tbody input.inl { display:inline; }\n\n#apijsGallery table.gallery tbody input:disabled { background-color:#EFEFEF; }\n#apijsGallery table.gallery tbody input.check { margin:0.3em auto; cursor:pointer; }\n#apijsGallery table.gallery tbody input.input-text { margin-bottom:1em; width:100% !important; box-sizing:border-box; -moz-box-sizing:border-box; }\n#apijsGallery table.gallery tbody div input.check { margin:0 auto 0.1em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& apijs/wysiwyg/index &&& */\nbody.adminhtml-apijs-wysiwyg-index .side-col { padding-top:39px; padding-bottom:0; max-height:75vh; overflow:auto; }\nbody.adminhtml-apijs-wysiwyg-index .main-col .content-header { padding:0 0 0.25em; }\nbody.adminhtml-apijs-wysiwyg-index .main-col #contents { height:inherit; overflow:visible; }\nbody.adminhtml-apijs-wysiwyg-index #loading-mask, body.adminhtml-apijs-wysiwyg-index #button_insert_files { display:none; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& browser window &&& */\nbody #browser_window .magento_content { overflow:hidden; }\nbody #browser_window .side-col { margin-top:48px; padding-bottom:0; }\nbody #browser_window .main-col { margin-left:240px; padding:0; }\nbody #browser_window .main-col .content-header { margin-left:-220px; overflow:hidden; white-space:nowrap; }\nbody #browser_window .side-col #tree, body #browser_window .main-col #contents { height:500px; overscroll-behavior:none; }\n\n/* &&&&&&&&&&&&& apijs/wysiwyg/index & browser window &&& */\nbody.adminhtml-apijs-wysiwyg-index .main-col .content-header .icon-head, body #browser_window .main-col .content-header .icon-head {\n\tmin-height:19px; padding-left:22px;\n\tbackground:url(\"../../../images/application_view_tile.gif\") no-repeat left center;\n}\n\nbody.adminhtml-apijs-wysiwyg-index .main-col h4, body #browser_window .main-col h4 { padding:0 3px; }\nbody.adminhtml-apijs-wysiwyg-index .main-col .album, body #browser_window .main-col .album { padding:0; text-align:left; }\nbody.adminhtml-apijs-wysiwyg-index .main-col .desc, body #browser_window .main-col .desc { margin:0.3em 0 0.1em; text-align:left; }\n\nbody.adminhtml-apijs-wysiwyg-index .main-col .filecnt, body #browser_window .main-col .filecnt {\n\tfloat:inherit !important; display:inline-block !important; width:200px !important; cursor:default !important;\n}\n\nbody.adminhtml-apijs-wysiwyg-index .main-col .filecnt.selected, body #browser_window .main-col .filecnt.selected {\n\tborder-color:#CCC !important; background-color:white !important;\n}\n\nbody.adminhtml-apijs-wysiwyg-index .main-col .filecnt .img, body #browser_window .main-col .filecnt .img {\n\tdisplay:flex; margin-bottom:0.5em; width:200px; height:150px; justify-content:center; align-items:center;\n\ttext-decoration:none; background-color:#EFEFEF;\n}\n\nbody.adminhtml-apijs-wysiwyg-index .main-col .filecnt .filename, body #browser_window .main-col .filecnt .filename {\n\toverflow:hidden; white-space:nowrap; text-overflow:ellipsis;\n}\n\nbody.adminhtml-apijs-wysiwyg-index #button_delete_files, body #browser_window #button_delete_files { display:none; }\n"]} \ No newline at end of file +{"version":3,"sources":["5a85a","apijs-openmage.css"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/openmage-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 V/28/10/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/openmage-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#apijsBox { font:0.8rem sans-serif; }\n#apijsBox.error { font-weight:normal !important; color:black !important; }\n#apijsBox.photo.error, #apijsBox.video.error { background-image:url(\"../../../images/luigifab/apijs/tv.gif\"); }\n\n#apijsBox button { font-family:sans-serif; font-weight:400; background-image:none; }\n#apijsBox button.cancel span, #apijsBox button.delete span { padding:0; background:none; }\n\n#apijsBox .left, #apijsBox .right, #apijsBox button :before { float:inherit !important; }\n\n@font-face {\n\t/* apijsFontelloOpenMage to avoid 404, https://stackoverflow.com/a/35034674 */\n\tsrc:url(\"../../../fonts/luigifab/apijs/fontello.woff2\") format(\"woff2\"), url(\"../../../fonts/luigifab/apijs/fontello.woff\") format(\"woff\");\n\tfont-family:apijsFontelloOpenMage; font-weight:400; font-style:normal;\n}\n\n#apijsBox h1:before, #apijsBox div.btns button span:before, #apijsBox kbd:before, #apijsBox span.player span.fnt {\n\tfont-family:apijsFontelloOpenMage;\n}\n\n#apijsBox.options.editname 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#apijsBox.upload h1 { letter-spacing:-0.05em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& global &&& */\nbutton.slink {\n\tdisplay:inline; margin:0; padding:0 0 1px; line-height:1;\n\tfont-weight:400; text-decoration:underline; color:#EA7601; border:0; background:none;\n}\n\nbutton.slink.remove { color:red; }\n\ntd div.image.preview {\n\tdisplay:inline-block; padding:3px;\n\tborder-width:1px; border-style:solid; border-color:#AAA #C8C8C8 #C8C8C8 #AAA; background-color:white;\n}\n\ntd div.image.preview input { font-size:12px; border:0; background:white; }\ntd div.image.preview a { display:block; margin:4px 25px 3px; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& galerie photo &&& */\nbody.fabload * { cursor:progress !important; }\nbody.fabload div.content-header p.form-buttons, body.fabload div.content-header-floating p.form-buttons,\nbody.fabload #apijsGallery { pointer-events:none; opacity:0.5; }\n\n#apijsGallery table.gallery { width:100%; }\n#apijsGallery table.gallery td { text-align:center; vertical-align:top; white-space:nowrap; }\n\n#apijsGallery table.gallery thead tr.headings th {\n\tposition:sticky; top:37px; padding:2px 5px; line-height:130%; text-align:center; vertical-align:middle;\n\tbackground:url(\"../../../images/sort_row_bg.gif\") 0 50% repeat-x;\n}\n\n#apijsGallery table.gallery thead tr.filter th {\n\tposition:sticky; top:72px; padding:8px 5px 6px; line-height:130%; text-align:center; vertical-align:middle;\n\tfont-weight:400; background:url(\"../../../images/filter_row_bg.gif\") repeat-x #E3EFF1;\n}\n\n#apijsGallery table.gallery thead input { display:inline; width:35px !important; }\n#apijsGallery table.gallery thead span { font-size:10px; font-weight:400; line-height:150%; }\n\n#apijsGallery table.gallery tfoot td { position:sticky; bottom:0; }\n#apijsGallery table.gallery tfoot p { margin:0.4em; line-height:130%; text-align:left; }\n#apijsGallery table.gallery tfoot button { position:relative; float:right; margin:2px 0 0 8px; z-index:1; cursor:pointer; }\n\n#apijsGallery table.gallery tbody tr.separ {\n\tscroll-margin-top:10em; scroll-snap-margin-top:10em;\n\tuser-select:none; -moz-user-select:none; -ms-user-select:none; -webkit-user-select:none;\n}\n\n#apijsGallery table.gallery tbody tr.separ td { background-color:#EEE !important; cursor:pointer; }\n#apijsGallery table.gallery tbody tr.separ.inf td { background-color:#F7F7F7 !important; cursor:pointer; text-transform:lowercase; }\n#apijsGallery table.gallery tbody td.mark { background-color:#DEFFDE !important; }\n\n#apijsGallery table.gallery tbody td { vertical-align:middle; }\n#apijsGallery table.gallery tbody td.img { padding:3px; width:200px; }\n#apijsGallery table.gallery tbody td.hgt { line-height:150px; color:gray; }\n#apijsGallery table.gallery tbody td.last { white-space:inherit; }\n#apijsGallery table.gallery tbody td:not(.last) * { display:block; }\n\n#apijsGallery table.gallery tbody label { font-size:10px; cursor:pointer; }\n#apijsGallery table.gallery tbody input.inl { display:inline; }\n\n#apijsGallery table.gallery tbody input:disabled { background-color:#EFEFEF; }\n#apijsGallery table.gallery tbody input.check { margin:0.3em auto; cursor:pointer; }\n#apijsGallery table.gallery tbody input.input-text { margin-bottom:1em; width:100% !important; box-sizing:border-box; -moz-box-sizing:border-box; }\n#apijsGallery table.gallery tbody div input.check { margin:0 auto 0.1em; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& apijs/wysiwyg/index &&& */\nbody.adminhtml-apijs-wysiwyg-index .side-col { padding-top:39px; padding-bottom:0; max-height:75vh; overflow:auto; }\nbody.adminhtml-apijs-wysiwyg-index .main-col .content-header { padding:0 0 0.25em; }\nbody.adminhtml-apijs-wysiwyg-index .main-col #contents { height:inherit; overflow:visible; }\nbody.adminhtml-apijs-wysiwyg-index #loading-mask, body.adminhtml-apijs-wysiwyg-index #button_insert_files { display:none; }\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& browser window &&& */\nbody #browser_window .magento_content { overflow:hidden; }\nbody #browser_window .side-col { margin-top:48px; padding-bottom:0; }\nbody #browser_window .main-col { margin-left:240px; padding:0; }\nbody #browser_window .main-col .content-header { margin-left:-220px; overflow:hidden; white-space:nowrap; }\nbody #browser_window .side-col #tree, body #browser_window .main-col #contents { height:500px; overscroll-behavior:none; }\n\n/* &&&&&&&&&&&&& apijs/wysiwyg/index & browser window &&& */\nbody.adminhtml-apijs-wysiwyg-index .main-col .content-header .icon-head, body #browser_window .main-col .content-header .icon-head {\n\tmin-height:19px; padding-left:22px;\n\tbackground:url(\"../../../images/application_view_tile.gif\") no-repeat left center;\n}\n\nbody.adminhtml-apijs-wysiwyg-index .main-col h4, body #browser_window .main-col h4 { padding:0 3px; }\nbody.adminhtml-apijs-wysiwyg-index .main-col .album, body #browser_window .main-col .album { padding:0; text-align:left; }\nbody.adminhtml-apijs-wysiwyg-index .main-col .desc, body #browser_window .main-col .desc { margin:0.3em 0 0.1em; text-align:left; }\n\nbody.adminhtml-apijs-wysiwyg-index .main-col .filecnt, body #browser_window .main-col .filecnt {\n\tfloat:inherit !important; display:inline-block !important; width:200px !important; cursor:default !important;\n}\n\nbody.adminhtml-apijs-wysiwyg-index .main-col .filecnt.selected, body #browser_window .main-col .filecnt.selected {\n\tborder-color:#CCC !important; background-color:white !important;\n}\n\nbody.adminhtml-apijs-wysiwyg-index .main-col .filecnt .img, body #browser_window .main-col .filecnt .img {\n\tdisplay:flex; margin-bottom:0.5em; width:200px; height:150px; justify-content:center; align-items:center;\n\ttext-decoration:none; background-color:#EFEFEF;\n}\n\nbody.adminhtml-apijs-wysiwyg-index .main-col .filecnt .filename, body #browser_window .main-col .filecnt .filename {\n\toverflow:hidden; white-space:nowrap; text-overflow:ellipsis;\n}\n\nbody.adminhtml-apijs-wysiwyg-index #button_delete_files, body #browser_window #button_delete_files { display:none; }"]} \ No newline at end of file diff --git a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-print.min.css b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-print.min.css index d36119b..110d450 100644 --- a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-print.min.css +++ b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-print.min.css @@ -1,6 +1,6 @@ /*! - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/apijs - 6.9.2 + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/apijs - 6.9.3 * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL). */ diff --git a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-print.min.css.map b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-print.min.css.map index 42a3cd5..9506d53 100644 --- a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-print.min.css.map +++ b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-print.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["349df","../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-2022 | Fabrice Creuzot (luigifab) \n * https://www.luigifab.fr/apijs - 6.9.2\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-2022 | Fabrice Creuzot (luigifab) \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; }"]} \ No newline at end of file +{"version":3,"sources":["349df","../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-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/apijs - 6.9.3\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-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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; }"]} \ No newline at end of file diff --git a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen-rtl.min.css b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen-rtl.min.css index 99f5fc0..4ab9002 100644 --- a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen-rtl.min.css +++ b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen-rtl.min.css @@ -1,6 +1,6 @@ /*! - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/apijs - 6.9.2 + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/apijs - 6.9.3 * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL). */ diff --git a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen-rtl.min.css.map b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen-rtl.min.css.map index 1e3895f..961fdc6 100644 --- a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen-rtl.min.css.map +++ b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen-rtl.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["dceca","../code/apijs/src/styles/album-rtl.css","../code/apijs/src/styles/dialog-rtl.css"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \n * https://www.luigifab.fr/apijs - 6.9.2\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-2022 | Fabrice Creuzot (luigifab) \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 S/02/07/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n#apijsDialog button:disabled { cursor:default; }\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\tuser-select:none; -moz-user-select:none; -ms-user-select:none; -webkit-user-select:none;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.fullscreen .nofullscreen { display:none !important; }\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; 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; 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; -moz-user-select:text; -ms-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\n#apijsBox iframe { display:block; width:100%; border:0; }\n#apijsBox iframe.loading { pointer-events:none; }\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; vertical-align:bottom; }\n#apijsBox div.btns.upload td.size { white-space:nowrap; 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:not(:disabled), #apijsBox div.btns button:active:not(:disabled),\n#apijsBox div.btns button:focus:not(:disabled) { 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 { position:relative; 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#apijsBox dl.media dt div.apijsplayer { position:absolute; left:0; bottom:0; right:0; }\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;\n}\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:5rem; bottom:5rem; 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; padding:0 2em 0 20%; }\n#apijsBox div.navigation button.prev span { transform:rotate(45deg); -webkit-transform:rotate(45deg); }\n#apijsBox div.navigation button.next { left:0; padding:0 20% 0 2em; }\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:#777;\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); } }"]} \ No newline at end of file +{"version":3,"sources":["dceca","../code/apijs/src/styles/album-rtl.css","../code/apijs/src/styles/dialog-rtl.css"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/apijs - 6.9.3\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-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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 S/02/07/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n#apijsDialog button:disabled { cursor:default; }\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\tuser-select:none; -moz-user-select:none; -ms-user-select:none; -webkit-user-select:none;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.fullscreen .nofullscreen { display:none !important; }\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; 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; 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; -moz-user-select:text; -ms-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\n#apijsBox iframe { display:block; width:100%; border:0; }\n#apijsBox iframe.loading { pointer-events:none; }\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; vertical-align:bottom; }\n#apijsBox div.btns.upload td.size { white-space:nowrap; 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:not(:disabled), #apijsBox div.btns button:active:not(:disabled),\n#apijsBox div.btns button:focus:not(:disabled) { 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 { position:relative; 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#apijsBox dl.media dt div.apijsplayer { position:absolute; left:0; bottom:0; right:0; }\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;\n}\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:5rem; bottom:5rem; 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; padding:0 2em 0 20%; }\n#apijsBox div.navigation button.prev span { transform:rotate(45deg); -webkit-transform:rotate(45deg); }\n#apijsBox div.navigation button.next { left:0; padding:0 20% 0 2em; }\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:#777;\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); } }"]} \ No newline at end of file diff --git a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen.min.css b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen.min.css index 816627e..0ff98ec 100644 --- a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen.min.css +++ b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen.min.css @@ -1,6 +1,6 @@ /*! - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/apijs - 6.9.2 + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/apijs - 6.9.3 * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL). */ diff --git a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen.min.css.map b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen.min.css.map index a21944d..ca21b33 100644 --- a/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen.min.css.map +++ b/src/skin/adminhtml/default/default/css/luigifab/apijs/apijs-screen.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["cc8bb","../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-2022 | Fabrice Creuzot (luigifab) \n * https://www.luigifab.fr/apijs - 6.9.2\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-2022 | Fabrice Creuzot (luigifab) \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 S/02/07/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n#apijsDialog button:disabled { cursor:default; }\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\tuser-select:none; -moz-user-select:none; -ms-user-select:none; -webkit-user-select:none;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.fullscreen .nofullscreen { display:none !important; }\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; 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; 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; -moz-user-select:text; -ms-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\n#apijsBox iframe { display:block; width:100%; border:0; }\n#apijsBox iframe.loading { pointer-events:none; }\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; vertical-align:bottom; }\n#apijsBox div.btns.upload td.size { white-space:nowrap; 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:not(:disabled), #apijsBox div.btns button:active:not(:disabled),\n#apijsBox div.btns button:focus:not(:disabled) { 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 { position:relative; 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#apijsBox dl.media dt div.apijsplayer { position:absolute; right:0; bottom:0; left:0; }\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;\n}\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:5rem; bottom:5rem; 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; padding:0 20% 0 2em; }\n#apijsBox div.navigation button.prev span { transform:rotate(-45deg); -webkit-transform:rotate(-45deg); }\n#apijsBox div.navigation button.next { right:0; padding:0 2em 0 20%; }\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:#777;\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 S/02/07/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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; }\ndiv.apijsvideoplayer.fullscreen.playing video { cursor:none !important; }\n\ndiv.apijsvideoplayer.fullscreen .nofullscreen { display:none !important; }\n\ndiv.apijsvideoplayer.playing.fullscreen .nofullplaying,\ndiv.apijsvideoplayer.fullscreen.playing .noplaying,\ndiv.apijsvideoplayer.playing .noplaying { transition:opacity 0.5s; opacity:0; }\n\ndiv.apijsvideoplayer.playing.fullscreen .nofullplaying:hover,\ndiv.apijsvideoplayer.fullscreen.playing .noplaying:hover,\ndiv.apijsvideoplayer.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:-9vh; padding-top:9vh; 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\toverscroll-behavior: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; }*/"]} \ No newline at end of file +{"version":3,"sources":["cc8bb","../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-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/apijs - 6.9.3\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-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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 S/02/07/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n#apijsDialog button:disabled { cursor:default; }\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\tuser-select:none; -moz-user-select:none; -ms-user-select:none; -webkit-user-select:none;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.fullscreen .nofullscreen { display:none !important; }\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; 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; 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; -moz-user-select:text; -ms-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\n#apijsBox iframe { display:block; width:100%; border:0; }\n#apijsBox iframe.loading { pointer-events:none; }\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; vertical-align:bottom; }\n#apijsBox div.btns.upload td.size { white-space:nowrap; 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:not(:disabled), #apijsBox div.btns button:active:not(:disabled),\n#apijsBox div.btns button:focus:not(:disabled) { 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 { position:relative; 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#apijsBox dl.media dt div.apijsplayer { position:absolute; right:0; bottom:0; left:0; }\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;\n}\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:5rem; bottom:5rem; 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; padding:0 20% 0 2em; }\n#apijsBox div.navigation button.prev span { transform:rotate(-45deg); -webkit-transform:rotate(-45deg); }\n#apijsBox div.navigation button.next { right:0; padding:0 2em 0 20%; }\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:#777;\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 S/02/07/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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; }\ndiv.apijsvideoplayer.fullscreen.playing video { cursor:none !important; }\n\ndiv.apijsvideoplayer.fullscreen .nofullscreen { display:none !important; }\n\ndiv.apijsvideoplayer.playing.fullscreen .nofullplaying,\ndiv.apijsvideoplayer.fullscreen.playing .noplaying,\ndiv.apijsvideoplayer.playing .noplaying { transition:opacity 0.5s; opacity:0; }\n\ndiv.apijsvideoplayer.playing.fullscreen .nofullplaying:hover,\ndiv.apijsvideoplayer.fullscreen.playing .noplaying:hover,\ndiv.apijsvideoplayer.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:-9vh; padding-top:9vh; 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\toverscroll-behavior: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; }*/"]} \ No newline at end of file diff --git a/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs-openmage.js b/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs-openmage.js index 36d3009..3d67a3a 100644 --- a/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs-openmage.js +++ b/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs-openmage.js @@ -2,8 +2,8 @@ * Created D/15/12/2013 * Updated J/11/08/2022 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published diff --git a/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs-openmage.min.js b/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs-openmage.min.js index 1d6766e..202bbac 100644 --- a/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs-openmage.min.js +++ b/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs-openmage.min.js @@ -1,8 +1,8 @@ /*! - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL). */ -var apijsOpenMage=new function(){"use strict";this.init=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.cs[259]="Vymazat všechny soubory",e.cs[260]="Opravdu chcete smazat všechny soubory?[br]Pozor, tuto operaci nelze vrátit zpět.",e.cs[261]="Potvrďte zaškrtnutím políčka:",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[259]="Alle Daten löschen",e.de[261]="Zur Bestätigung das Kontrollkästchen bestätigen:",e.el[252]="Σφάλμα",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]="Clear cache",e.en[256]="Are you sure you want to clear the cache?[br]Be careful, you can't cancel this operation.",e.en[257]="Rename file",e.en[258]="Enter below the new name for the file.",e.en[259]="Remove all files",e.en[260]="Are you sure you want to remove all files?[br]Be careful, you can't cancel this operation.",e.en[261]="To confirm, check the checkbox:",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]="Vaciar la caché",e.es[256]="¿Está usted seguro(a) de querer vaciar la caché?[br]Cuidado, esta operación no puede ser cancelada.",e.frca[251]="Êtes-vous sûr(e) de vouloir supprimer ce fichier?[br]Attention, cette opération n'est pas annulable.",e.frca[256]="Êtes-vous certain(e) de vouloir vider le cache?[br]Attention, cette opération n'est pas annulable.",e.frca[260]="Êtes-vous sûr(e) de vouloir supprimer tous les fichiers?[br]Attention, cette opération n'est pas annulable.",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]="Vider le cache",e.fr[256]="Êtes-vous certain(e) de vouloir vider le cache ?[br]Attention, cette opération n'est pas annulable.",e.fr[257]="Renommer le fichier",e.fr[258]="Saisissez ci-dessous le nouveau nom pour ce fichier.",e.fr[259]="Supprimer tous les fichiers",e.fr[260]="Êtes-vous sûr(e) de vouloir supprimer tous les fichiers ?[br]Attention, cette opération n'est pas annulable.",e.fr[261]="Pour confirmer, cochez la case :",e.hu[252]="Hiba",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[259]="Cancella tutti i file",e.it[260]="Sei sicura di voler cancellare tutti i file?[br]Attenzione, questa operazione non può essere annullata.",e.it[261]="Per confermare, seleziona la casella:",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.pl[259]="Usuń wszystkie pliki",e.pl[260]="Jesteś pewny, że chcesz usunąć ten plik?[br]Uwaga! Nie ma odwrotu od tej operacji.",e.pl[261]="Potwierdź twój wybór:",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.ro[252]="Eroare",e.ru[250]="Удалить файл",e.ru[251]="Вы уверены, что хотите удалить этот файл?[br]Осторожно, вы не сможете отменить эту операцию.",e.ru[252]="Ошибка",e.ru[253]="Вы не авторизованы для выполнения этой операции, пожалуйста [a §]обновите страницу[/a].",e.ru[254]="Извините, но файл не существует, пожалуйста [a §]обновите страницу[/a].",e.sk[252]="Chyba",e.tr[252]="Hata",e.tr[255]="Önbelleği temizle",e.uk[252]="Помилка",e.zh[252]="错误信息"},this.error=function(e){"string"==typeof e&&e.indexOf(" '+r+"",apijs.dialog.t2.appendChild(e))},this.updateForm=function(e,t,a){-1
  • "+e.text+"
  • "}))})}),MediabrowserInstance.renameFileUrl=MediabrowserInstance.deleteFilesUrl.replace(/[a-z_]+\/deleteFiles\//,"apijs_wysiwyg/renameFile/"),MediabrowserInstance.deleteFilesUrl=MediabrowserInstance.deleteFilesUrl.replace(/[a-z_]+\/deleteFiles\//,"apijs_wysiwyg/deleteFiles/"),MediabrowserInstance.deleteFolderUrl=MediabrowserInstance.deleteFolderUrl.replace(/[a-z_]+\/deleteFolder\//,"apijs_wysiwyg/deleteFolder/")},this.clearCache=function(e){apijs.dialog.dialogConfirmation(apijs.i18n.translate(255),apijs.i18n.translate(256),apijsOpenMage.actionClearCache,e)},this.actionClearCache=function(e){apijs.dialog.remove("waiting","lock"),self.location.href=e}};"function"==typeof self.addEventListener&&self.addEventListener("apijsload",apijsOpenMage.init.bind(apijsOpenMage)); +var apijsOpenMage=new function(){"use strict";this.init=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.cs[259]="Vymazat všechny soubory",e.cs[260]="Opravdu chcete smazat všechny soubory?[br]Pozor, tuto operaci nelze vrátit zpět.",e.cs[261]="Potvrďte zaškrtnutím políčka:",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[259]="Alle Daten löschen",e.de[261]="Zur Bestätigung das Kontrollkästchen bestätigen:",e.el[252]="Σφάλμα",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]="Clear cache",e.en[256]="Are you sure you want to clear the cache?[br]Be careful, you can't cancel this operation.",e.en[257]="Rename file",e.en[258]="Enter below the new name for the file.",e.en[259]="Remove all files",e.en[260]="Are you sure you want to remove all files?[br]Be careful, you can't cancel this operation.",e.en[261]="To confirm, check the checkbox:",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]="Vaciar la caché",e.es[256]="¿Está usted seguro(a) de querer vaciar la caché?[br]Cuidado, esta operación no puede ser cancelada.",e.frca[251]="Êtes-vous sûr(e) de vouloir supprimer ce fichier?[br]Attention, cette opération n'est pas annulable.",e.frca[256]="Êtes-vous certain(e) de vouloir vider le cache?[br]Attention, cette opération n'est pas annulable.",e.frca[260]="Êtes-vous sûr(e) de vouloir supprimer tous les fichiers?[br]Attention, cette opération n'est pas annulable.",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]="Vider le cache",e.fr[256]="Êtes-vous certain(e) de vouloir vider le cache ?[br]Attention, cette opération n'est pas annulable.",e.fr[257]="Renommer le fichier",e.fr[258]="Saisissez ci-dessous le nouveau nom pour ce fichier.",e.fr[259]="Supprimer tous les fichiers",e.fr[260]="Êtes-vous sûr(e) de vouloir supprimer tous les fichiers ?[br]Attention, cette opération n'est pas annulable.",e.fr[261]="Pour confirmer, cochez la case :",e.hu[252]="Hiba",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[259]="Cancella tutti i file",e.it[260]="Sei sicura di voler cancellare tutti i file?[br]Attenzione, questa operazione non può essere annullata.",e.it[261]="Per confermare, seleziona la casella:",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.pl[259]="Usuń wszystkie pliki",e.pl[260]="Jesteś pewny, że chcesz usunąć ten plik?[br]Uwaga! Nie ma odwrotu od tej operacji.",e.pl[261]="Potwierdź twój wybór:",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.ro[252]="Eroare",e.ru[250]="Удалить файл",e.ru[251]="Вы уверены, что хотите удалить этот файл?[br]Осторожно, вы не сможете отменить эту операцию.",e.ru[252]="Ошибка",e.ru[253]="Вы не авторизованы для выполнения этой операции, пожалуйста [a §]обновите страницу[/a].",e.ru[254]="Извините, но файл не существует, пожалуйста [a §]обновите страницу[/a].",e.sk[252]="Chyba",e.tr[252]="Hata",e.tr[255]="Önbelleği temizle",e.uk[252]="Помилка",e.zh[252]="错误信息"},this.error=function(e){"string"==typeof e&&e.indexOf(" '+r+"",apijs.dialog.t2.appendChild(e))},this.updateForm=function(e,t,a){-1
  • "+e.text+"
  • "}))})}),MediabrowserInstance.renameFileUrl=MediabrowserInstance.deleteFilesUrl.replace(/[a-z_]+\/deleteFiles\//,"apijs_wysiwyg/renameFile/"),MediabrowserInstance.deleteFilesUrl=MediabrowserInstance.deleteFilesUrl.replace(/[a-z_]+\/deleteFiles\//,"apijs_wysiwyg/deleteFiles/"),MediabrowserInstance.deleteFolderUrl=MediabrowserInstance.deleteFolderUrl.replace(/[a-z_]+\/deleteFolder\//,"apijs_wysiwyg/deleteFolder/")},this.clearCache=function(e){apijs.dialog.dialogConfirmation(apijs.i18n.translate(255),apijs.i18n.translate(256),apijsOpenMage.actionClearCache,e)},this.actionClearCache=function(e){apijs.dialog.remove("waiting","lock"),self.location.href=e}};"function"==typeof self.addEventListener&&self.addEventListener("apijsload",apijsOpenMage.init.bind(apijsOpenMage)); //# sourceMappingURL=apijs-openmage.min.js.map \ No newline at end of file diff --git a/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs-openmage.min.js.map b/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs-openmage.min.js.map index c2aa346..3b9bb64 100644 --- a/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs-openmage.min.js.map +++ b/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs-openmage.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["apijs-openmage.js"],"sourcesContent":["/**\n * Created D/15/12/2013\n * Updated J/11/08/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \n * https://www.luigifab.fr/openmage/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 apijsOpenMage = new (function () {\n\n\t\"use strict\";\n\n\tthis.init = 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.cs[259] = \"Vymazat všechny soubory\";\n\t\td.cs[260] = \"Opravdu chcete smazat všechny soubory?[br]Pozor, tuto operaci nelze vrátit zpět.\";\n\t\td.cs[261] = \"Potvrďte zaškrtnutím políčka:\";\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[259] = \"Alle Daten löschen\";\n\t\td.de[261] = \"Zur Bestätigung das Kontrollkästchen bestätigen:\";\n\t\td.el[252] = \"Σφάλμα\";\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] = \"Clear cache\";\n\t\td.en[256] = \"Are you sure you want to clear the cache?[br]Be careful, you can't cancel this operation.\";\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] = \"Remove all files\";\n\t\td.en[260] = \"Are you sure you want to remove all files?[br]Be careful, you can't cancel this operation.\";\n\t\td.en[261] = \"To confirm, check the checkbox:\";\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] = \"Vaciar la caché\";\n\t\td.es[256] = \"¿Está usted seguro(a) de querer vaciar la caché?[br]Cuidado, esta operación no puede ser cancelada.\";\n\t\td.frca[251] = \"Êtes-vous sûr(e) de vouloir supprimer ce fichier?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.frca[256] = \"Êtes-vous certain(e) de vouloir vider le cache?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.frca[260] = \"Êtes-vous sûr(e) de vouloir supprimer tous les fichiers?[br]Attention, cette opération n'est pas annulable.\";\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] = \"Vider le cache\";\n\t\td.fr[256] = \"Êtes-vous certain(e) de vouloir vider le cache ?[br]Attention, cette opération n'est pas annulable.\";\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] = \"Supprimer tous les fichiers\";\n\t\td.fr[260] = \"Êtes-vous sûr(e) de vouloir supprimer tous les fichiers ?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.fr[261] = \"Pour confirmer, cochez la case :\";\n\t\td.hu[252] = \"Hiba\";\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[259] = \"Cancella tutti i file\";\n\t\td.it[260] = \"Sei sicura di voler cancellare tutti i file?[br]Attenzione, questa operazione non può essere annullata.\";\n\t\td.it[261] = \"Per confermare, seleziona la casella:\";\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.pl[259] = \"Usuń wszystkie pliki\";\n\t\td.pl[260] = \"Jesteś pewny, że chcesz usunąć ten plik?[br]Uwaga! Nie ma odwrotu od tej operacji.\";\n\t\td.pl[261] = \"Potwierdź twój wybór:\";\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.ro[252] = \"Eroare\";\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.sk[252] = \"Chyba\";\n\t\td.tr[252] = \"Hata\";\n\t\td.tr[255] = \"Önbelleği temizle\";\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(' ' + extra + '';\n\t\t\tapijs.dialog.t2.appendChild(elem);\n\t\t}\n\t};\n\n\tthis.updateForm = function (data, indicator, elem) {\n\n\t\t// success-{json[result, bbcode]}\n\t\tif (data.indexOf('{') > -1) {\n\t\t\tdata = JSON.parse(data.slice(data.indexOf('{')));\n\t\t\tif (data.bbcode)\n\t\t\t\tapijsOpenMage.error(data.bbcode);\n\t\t}\n\n\t\t// produit ou widget cms\n\t\tif (elem = document.getElementById('apijsGallery')) {\n\n\t\t\tif (data.filter = document.getElementById('apijsFilter'))\n\t\t\t\tdata.filter = parseInt(data.filter.value, 10);\n\n\t\t\telem.parentNode.innerHTML = data.html;\n\t\t\telem.querySelectorAll('input[type=\"checkbox\"], input[type=\"radio\"]').forEach(function (elem) {\n\t\t\t\telem.checked = elem.hasAttribute('checked');\n\t\t\t\tif (elem.hasAttribute('onchange'))\n\t\t\t\t\tapijsOpenMage.checkVal(elem);\n\t\t\t});\n\n\t\t\tapijs.slideshow.init();\n\t\t\tif (!apijs.dialog.has('error')) // ferme sauf en cas d'erreur\n\t\t\t\tapijs.dialog.actionClose();\n\n\t\t\tif (data.filter > 0) {\n\t\t\t\telem = document.getElementById('apijsFilter');\n\t\t\t\telem.value = data.filter;\n\t\t\t\telem.dispatchEvent(new Event('change'));\n\t\t\t}\n\n\t\t\tif (indicator) {\n\t\t\t\tindicator.classList.remove('changed');\n\t\t\t\tvarienWindowOnload(true);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tMediabrowserInstance.selectFolder(MediabrowserInstance.currentNode);\n\t\t}\n\t};\n\n\t// product\n\tthis.actionSave = function (action) {\n\n\t\tdocument.querySelector('body').classList.add('fabload');\n\n\t\tvar xhr = new XMLHttpRequest(), indicator = document.querySelector('.tab-item-link.active');\n\t\txhr.open('POST', action + '?isAjax=true', true);\n\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\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('success-') === 0)\n\t\t\t\t\t\tapijsOpenMage.updateForm(xhr.responseText, indicator);\n\t\t\t\t\telse\n\t\t\t\t\t\tapijsOpenMage.error(xhr.responseText);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tapijsOpenMage.error(xhr.status);\n\t\t\t\t}\n\t\t\t\tdocument.querySelector('body').classList.remove('fabload');\n\t\t\t}\n\t\t};\n\n\t\txhr.send(apijs.serialize(document.getElementById('product_edit_form'), 'apijs'));\n\t};\n\n\tthis.removeAttachment = function (action) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(250), apijs.i18n.translate(251), apijsOpenMage.actionRemoveAttachment, action);\n\t};\n\n\tthis.removeAllAttachments = function (action) {\n\t\tapijs.dialog.dialogFormOptions(apijs.i18n.translate(259), apijs.i18n.translate(260) + '[p][label]' + apijs.i18n.translate(261) + ' [input type=\"checkbox\"][/label]', action, apijsOpenMage.actionRemoveAllAttachments);\n\t};\n\n\tthis.actionRemoveAttachment = function (args) {\n\n\t\t// args = action\n\t\tvar xhr = new XMLHttpRequest(), indicator = document.querySelector('.tab-item-link.active');\n\t\txhr.open('GET', args, true);\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('success-') === 0)\n\t\t\t\t\t\tapijsOpenMage.updateForm(xhr.responseText, indicator);\n\t\t\t\t\telse\n\t\t\t\t\t\tapijsOpenMage.error(xhr.responseText);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tapijsOpenMage.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.actionRemoveAllAttachments = function (action) {\n\n\t\tif (typeof action == 'boolean')\n\t\t\treturn apijs.html('input').checked;\n\n\t\tapijsOpenMage.actionRemoveAttachment(action);\n\t};\n\n\tthis.checkVal = function (root) {\n\n\t\tvar elem = root;\n\t\twhile ((elem.nodeName !== 'BODY') && !elem.querySelector('.val'))\n\t\t\telem = elem.parentNode;\n\n\t\tif (elem = elem.querySelector('.val')) {\n\t\t\tif (root.checked)\n\t\t\t\telem.setAttribute('disabled', 'disabled');\n\t\t\telse\n\t\t\t\telem.removeAttribute('disabled');\n\t\t}\n\t};\n\n\tthis.filter = function (root) {\n\n\t\tvar word, text, show;\n\t\tif (typeof root == 'string') {\n\t\t\tshow = root;\n\t\t\troot = document.getElementById('apijsFilter');\n\t\t\tif (((root.value === show) && (show !== 'all')) || ((root.value === 'all') && (show === 'all')))\n\t\t\t\tshow = 'none';\n\t\t\troot.value = show;\n\t\t}\n\t\tif (root.nodeName === 'BUTTON') {\n\t\t\ttext = root.getAttribute('data-text');\n\t\t\troot.setAttribute('data-text', root.textContent);\n\t\t\troot.textContent = text;\n\t\t\troot.setAttribute('data-state', (root.getAttribute('data-state') == '0') ? '1' : '0');\n\t\t}\n\n\t\tdocument.getElementById('apijsGallery').querySelectorAll('tbody tr[id]').forEach(function (line) {\n\n\t\t\tshow = [];\n\n\t\t\t// pour chaque colonne (car toutes les colonnes peuvent avoir un filtre)\n\t\t\t// word = ce qu'on cherche dans la colonne courante\n\t\t\t// text = ce qu'il y a dans la cellule de la colonne de la ligne courante\n\t\t\tdocument.getElementById('apijsGallery').querySelectorAll('tr.filter th').forEach(function (col, idx) {\n\n\t\t\t\tcol = col.querySelector('.filter');\n\t\t\t\tif (!col) {\n\t\t\t\t\tshow.push(true);\n\t\t\t\t}\n\t\t\t\telse if (col.nodeName === 'SELECT') {\n\t\t\t\t\tword = Math.floor(parseInt(col.value, 10) / 100); // ce qu'on cherche\n\t\t\t\t\ttext = Math.floor(parseInt(line.querySelectorAll('td')[idx].querySelector('input.position').value, 10) / 100); //dans quoi\n\t\t\t\t\tshow.push((col.value === 'all') || (text == word));\n\t\t\t\t}\n\t\t\t\telse if (col.nodeName === 'BUTTON') {\n\t\t\t\t\tword = col.getAttribute('data-state') == '1'; // ce qu'on cherche\n\t\t\t\t\ttext = line.querySelectorAll('td')[idx].querySelector('input.check:not(.def)').checked; // dans quoi on cherche\n\t\t\t\t\tif (col.hasAttribute('data-reverse')) text = !text;\n\t\t\t\t\tshow.push(!word || (word && (word !== text)));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// maintenant que chaque colonne de la ligne a été vérifiée\n\t\t\t// si aucune colonne indique qu'il ne faut pas afficher la ligne, on affiche la ligne\n\t\t\tline.setAttribute('style', (show.indexOf(false) > -1) ? 'display:none;' : '');\n\t\t\tline.removeAttribute('title');\n\t\t});\n\n\t\t// s'assure que le séparateur est visible\n\t\tif ((root.nodeName === 'SELECT') && !isNaN(root.value) && (root = document.querySelector('tr.grp' + root.value))) {\n\t\t\tvar rect = root.getBoundingClientRect();\n\t\t\tif ((rect.top < 0) && (rect.bottom <= window.innerHeight))\n\t\t\t\troot.scrollIntoView();\n\t\t}\n\t};\n\n\t// wysiwyg\n\tthis.renameMedia = function (elem) {\n\n\t\telem = elem.parentNode.parentNode;\n\t\telem.click();\n\t\tif (!elem.classList.contains('selected'))\n\t\t\telem.click();\n\n\t\tvar name = elem.querySelector('.filename').textContent.trim(),\n\t\t text = '[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(apijs.i18n.translate(257), text, 'action.php', apijsOpenMage.actionRenameMedia, elem.id, 'editname');\n\t\tapijs.dialog.t1.querySelector('input').select();\n\t};\n\n\tthis.actionRenameMedia = 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 du nouveau nom\n\t\telse if (typeof action == 'string') {\n\n\t\t\t// args = id\n\t\t\t// copie de MediabrowserInstance.deleteFiles(); ou presque\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open('POST', MediabrowserInstance.renameFileUrl + '?isAjax=true', true);\n\t\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\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\ttry {\n\t\t\t\t\t\t\tMediabrowserInstance.onAjaxSuccess(xhr);\n\t\t\t\t\t\t\tMediabrowserInstance.selectFolder(MediabrowserInstance.currentNode);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tapijsOpenMage.error(e.message);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send('form_key=' + FORM_KEY + '&file=' + encodeURIComponent(args) + '&name=' + encodeURIComponent(document.getElementById('apijsinput').value));\n\t\t}\n\t};\n\n\tthis.removeMedia = function (elem) {\n\n\t\telem = elem.parentNode.parentNode;\n\t\telem.click();\n\t\tif (!elem.classList.contains('selected'))\n\t\t\telem.click();\n\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(250), apijs.i18n.translate(251), apijsOpenMage.actionRemoveMedia, elem.id);\n\t};\n\n\tthis.actionRemoveMedia = function (args) {\n\n\t\t// args = id\n\t\t// copie de MediabrowserInstance.deleteFiles(); ou presque\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('POST', MediabrowserInstance.deleteFilesUrl + '?isAjax=true', true);\n\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\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\ttry {\n\t\t\t\t\t\tMediabrowserInstance.onAjaxSuccess(xhr);\n\t\t\t\t\t\tMediabrowserInstance.selectFolder(MediabrowserInstance.currentNode);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\tapijsOpenMage.error(e.message);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\txhr.send('form_key=' + FORM_KEY + '&file=' + encodeURIComponent(args));\n\t};\n\n\tthis.overloadMediabrowser = function () {\n\n\t\tvar elem, objs = [];\n\t\tif (typeof Mediabrowser == 'function')\n\t\t\tobjs.push(Mediabrowser);\n\t\tif (typeof MediabrowserInstance == 'object')\n\t\t\tobjs.push(MediabrowserInstance);\n\n\t\tobjs.forEach(function (obj) {\n\n\t\t\tif (typeof obj.origHideElement != 'function') {\n\n\t\t\t\tobj.origHideElement = obj.hideElement;\n\t\t\t\tobj.hideElement = function (name) {\n\t\t\t\t\tthis.origHideElement(name);\n\t\t\t\t\tif (name === 'loading-mask') {\n\t\t\t\t\t\tdocument.getElementById('loading-mask').classList.add('no-display');\n\t\t\t\t\t\tdocument.getElementById('contents').classList.remove('no-display');\n\t\t\t\t\t\tdocument.getElementById('contents-loader').classList.add('no-display');\n\t\t\t\t\t\tif (elem = document.querySelector('.main-col-inner .form-buttons'))\n\t\t\t\t\t\t\telem.removeAttribute('style');\n\t\t\t\t\t\tif (elem = document.querySelector('.content-header-floating .form-buttons'))\n\t\t\t\t\t\t\telem.removeAttribute('style');\n\t\t\t\t\t\tif (!apijs.dialog.has('error')) // ferme sauf en cas d'erreur\n\t\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tobj.origShowElement = obj.showElement;\n\t\t\t\tobj.showElement = function (name) {\n\t\t\t\t\tthis.origShowElement(name);\n\t\t\t\t\tif (name === 'loading-mask') {\n\t\t\t\t\t\tdocument.getElementById('loading-mask').classList.add('no-display');\n\t\t\t\t\t\tdocument.getElementById('contents').classList.add('no-display');\n\t\t\t\t\t\tdocument.getElementById('contents-loader').classList.remove('no-display');\n\t\t\t\t\t\tif (elem = document.querySelector('.main-col-inner .form-buttons'))\n\t\t\t\t\t\t\telem.style.visibility = 'hidden';\n\t\t\t\t\t\tif (elem = document.querySelector('.content-header-floating .form-buttons'))\n\t\t\t\t\t\t\telem.style.visibility = 'hidden';\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tobj.origDrawBreadcrumbs = obj.drawBreadcrumbs;\n\t\t\t\tobj.drawBreadcrumbs = function (node) {\n\t\t\t\t\tthis.origDrawBreadcrumbs(node);\n\t\t\t\t\tif (!document.getElementById('breadcrumbs')) {\n\t\t\t\t\t\tnode = this.tree.getNodeById('root');\n\t\t\t\t\t\tdocument.getElementById('content_header').insert({ after: '' });\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\n\t\tMediabrowserInstance.renameFileUrl = MediabrowserInstance.deleteFilesUrl.replace(/[a-z_]+\\/deleteFiles\\//, 'apijs_wysiwyg/renameFile/');\n\t\tMediabrowserInstance.deleteFilesUrl = MediabrowserInstance.deleteFilesUrl.replace(/[a-z_]+\\/deleteFiles\\//, 'apijs_wysiwyg/deleteFiles/');\n\t\tMediabrowserInstance.deleteFolderUrl = MediabrowserInstance.deleteFolderUrl.replace(/[a-z_]+\\/deleteFolder\\//, 'apijs_wysiwyg/deleteFolder/');\n\t};\n\n\t// cache\n\tthis.clearCache = function (action) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(255), apijs.i18n.translate(256), apijsOpenMage.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', apijsOpenMage.init.bind(apijsOpenMage));"],"names":["apijsOpenMage","this","init","d","apijs","i18n","data","frca","cs","de","el","en","es","fr","hu","it","ja","nl","pl","pt","ro","ru","sk","tr","uk","zh","error","indexOf","dialog","has","upload","onError","dialogInformation","translate","remove","self","location","reload","sendFiles","title","action","onemax","allmax","exts","extra","updateForm","elem","document","createElement","innerHTML","t2","appendChild","indicator","JSON","parse","slice","bbcode","getElementById","filter","parseInt","value","parentNode","html","querySelectorAll","forEach","checked","hasAttribute","checkVal","slideshow","actionClose","dispatchEvent","Event","classList","varienWindowOnload","MediabrowserInstance","selectFolder","currentNode","actionSave","querySelector","add","xhr","XMLHttpRequest","open","setRequestHeader","onreadystatechange","readyState","status","responseText","send","serialize","removeAttachment","dialogConfirmation","actionRemoveAttachment","removeAllAttachments","dialogFormOptions","actionRemoveAllAttachments","args","root","nodeName","setAttribute","removeAttribute","word","text","show","rect","getAttribute","textContent","line","col","idx","Math","floor","push","isNaN","getBoundingClientRect","top","bottom","window","innerHeight","scrollIntoView","renameMedia","click","contains","name","trim","actionRenameMedia","id","t1","select","renameFileUrl","onAjaxSuccess","e","message","FORM_KEY","encodeURIComponent","removeMedia","actionRemoveMedia","deleteFilesUrl","overloadMediabrowser","objs","Mediabrowser","obj","origHideElement","hideElement","origShowElement","showElement","style","visibility","origDrawBreadcrumbs","drawBreadcrumbs","node","tree","getNodeById","insert","after","replace","deleteFolderUrl","clearCache","actionClearCache","href","addEventListener","bind"],"mappings":";;;;;GAkBA;IAAIA,cAAgB,IAAI,WAEvB,aAEAC,KAAKC,KAAO,WAEX,IAAIC,EAAIC,MAAMC,KAAKC,KACdH,EAAEI,OAAMJ,EAAEI,KAAO,IAGtBJ,EAAEK,GAAG,KAAO,gBACZL,EAAEK,GAAG,KAAO,gFACZL,EAAEK,GAAG,KAAO,QACZL,EAAEK,GAAG,KAAO,0BACZL,EAAEK,GAAG,KAAO,mFACZL,EAAEK,GAAG,KAAO,gCACZL,EAAEM,GAAG,KAAO,qBACZN,EAAEM,GAAG,KAAO,oGACZN,EAAEM,GAAG,KAAO,SACZN,EAAEM,GAAG,KAAO,+HACZN,EAAEM,GAAG,KAAO,iGACZN,EAAEM,GAAG,KAAO,qBACZN,EAAEM,GAAG,KAAO,mDACZN,EAAEO,GAAG,KAAO,SACZP,EAAEQ,GAAG,KAAO,cACZR,EAAEQ,GAAG,KAAO,6FACZR,EAAEQ,GAAG,KAAO,QACZR,EAAEQ,GAAG,KAAO,sFACZR,EAAEQ,GAAG,KAAO,sEACZR,EAAEQ,GAAG,KAAO,cACZR,EAAEQ,GAAG,KAAO,4FACZR,EAAEQ,GAAG,KAAO,cACZR,EAAEQ,GAAG,KAAO,yCACZR,EAAEQ,GAAG,KAAO,mBACZR,EAAEQ,GAAG,KAAO,6FACZR,EAAEQ,GAAG,KAAO,kCACZR,EAAES,GAAG,KAAO,oBACZT,EAAES,GAAG,KAAO,gHACZT,EAAES,GAAG,KAAO,kGACZT,EAAES,GAAG,KAAO,kFACZT,EAAES,GAAG,KAAO,kBACZT,EAAES,GAAG,KAAO,sGACZT,EAAEI,KAAK,KAAO,uGACdJ,EAAEI,KAAK,KAAO,qGACdJ,EAAEI,KAAK,KAAO,8GACdJ,EAAEU,GAAG,KAAO,uBACZV,EAAEU,GAAG,KAAO,wGACZV,EAAEU,GAAG,KAAO,SACZV,EAAEU,GAAG,KAAO,iGACZV,EAAEU,GAAG,KAAO,0EACZV,EAAEU,GAAG,KAAO,iBACZV,EAAEU,GAAG,KAAO,sGACZV,EAAEU,GAAG,KAAO,sBACZV,EAAEU,GAAG,KAAO,uDACZV,EAAEU,GAAG,KAAO,8BACZV,EAAEU,GAAG,KAAO,+GACZV,EAAEU,GAAG,KAAO,mCACZV,EAAEW,GAAG,KAAO,OACZX,EAAEY,GAAG,KAAO,kBACZZ,EAAEY,GAAG,KAAO,oGACZZ,EAAEY,GAAG,KAAO,SACZZ,EAAEY,GAAG,KAAO,qGACZZ,EAAEY,GAAG,KAAO,oFACZZ,EAAEY,GAAG,KAAO,wBACZZ,EAAEY,GAAG,KAAO,0GACZZ,EAAEY,GAAG,KAAO,wCACZZ,EAAEa,GAAG,KAAO,UACZb,EAAEa,GAAG,KAAO,MACZb,EAAEc,GAAG,KAAO,OACZd,EAAEe,GAAG,KAAO,YACZf,EAAEe,GAAG,KAAO,qFACZf,EAAEe,GAAG,KAAO,OACZf,EAAEe,GAAG,KAAO,uBACZf,EAAEe,GAAG,KAAO,qFACZf,EAAEe,GAAG,KAAO,wBACZf,EAAEgB,GAAG,KAAO,uBACZhB,EAAEgB,GAAG,KAAO,+FACZhB,EAAEgB,GAAG,KAAO,OACZhB,EAAEgB,GAAG,KAAO,wFACZhB,EAAEgB,GAAG,KAAO,2EACZhB,EAAEiB,GAAG,KAAO,SACZjB,EAAEkB,GAAG,KAAO,eACZlB,EAAEkB,GAAG,KAAO,+FACZlB,EAAEkB,GAAG,KAAO,SACZlB,EAAEkB,GAAG,KAAO,0FACZlB,EAAEkB,GAAG,KAAO,0EACZlB,EAAEmB,GAAG,KAAO,QACZnB,EAAEoB,GAAG,KAAO,OACZpB,EAAEoB,GAAG,KAAO,oBACZpB,EAAEqB,GAAG,KAAO,UACZrB,EAAEsB,GAAG,KAAO,MAEb,EAEAxB,KAAKyB,MAAQ,SAAUpB,GAEF,UAAf,OAAOA,GAAsBA,EAAKqB,QAAQ,WAAW,EAAI,EACzDvB,MAAMwB,OAAOC,IAAI,QAAQ,EAC5BzB,MAAM0B,OAAOC,QAAQ,CAAA,EAAOzB,CAAI,EAEhCF,MAAMwB,OAAOI,kBAAkB5B,MAAMC,KAAK4B,UAAU,GAAG,EAAG3B,EAAM,OAAO,GAGxEF,MAAMwB,OAAOM,OAAO,MAAM,EAC1BC,KAAKC,SAASC,OAAO,EAEvB,EAEApC,KAAKqC,UAAY,SAAUC,EAAOC,EAAQC,EAAQC,EAAQC,EAAMC,GAE/DxC,MAAM0B,OAAOQ,UAAUC,EAAOC,EAAQ,UAAWC,EAAQC,EAAQC,EAAM3C,cAAc6C,UAAU,EAE3E,UAAhB,OAAOD,KACNE,EAAOC,SAASC,cAAc,GAAG,GAChCC,UAAY,mDAAqDL,EAAQ,WAC9ExC,MAAMwB,OAAOsB,GAAGC,YAAYL,CAAI,EAElC,EAEA7C,KAAK4C,WAAa,SAAUvC,EAAM8C,EAAWN,GAGpB,CAAC,EAArBxC,EAAKqB,QAAQ,GAAG,IACnBrB,EAAO+C,KAAKC,MAAMhD,EAAKiD,MAAMjD,EAAKqB,QAAQ,GAAG,CAAC,CAAC,GACtC6B,QACRxD,cAAc0B,MAAMpB,EAAKkD,MAAM,GAI7BV,EAAOC,SAASU,eAAe,cAAc,KAE5CnD,EAAKoD,OAASX,SAASU,eAAe,aAAa,KACtDnD,EAAKoD,OAASC,SAASrD,EAAKoD,OAAOE,MAAO,EAAE,GAE7Cd,EAAKe,WAAWZ,UAAY3C,EAAKwD,KACjChB,EAAKiB,iBAAiB,6CAA6C,EAAEC,QAAQ,SAAUlB,GACtFA,EAAKmB,QAAUnB,EAAKoB,aAAa,SAAS,EACtCpB,EAAKoB,aAAa,UAAU,GAC/BlE,cAAcmE,SAASrB,CAAI,CAC7B,CAAC,EAED1C,MAAMgE,UAAUlE,KAAK,EAChBE,MAAMwB,OAAOC,IAAI,OAAO,GAC5BzB,MAAMwB,OAAOyC,YAAY,EAER,EAAd/D,EAAKoD,UACRZ,EAAOC,SAASU,eAAe,aAAa,GACvCG,MAAQtD,EAAKoD,OAClBZ,EAAKwB,cAAc,IAAIC,MAAM,QAAQ,CAAC,GAGnCnB,IACHA,EAAUoB,UAAUtC,OAAO,SAAS,EACpCuC,mBAAmB,CAAA,CAAI,IAIxBC,qBAAqBC,aAAaD,qBAAqBE,WAAW,CAEpE,EAGA3E,KAAK4E,WAAa,SAAUrC,GAE3BO,SAAS+B,cAAc,MAAM,EAAEN,UAAUO,IAAI,SAAS,EAEtD,IAAIC,EAAM,IAAIC,eAAkB7B,EAAYL,SAAS+B,cAAc,uBAAuB,EAC1FE,EAAIE,KAAK,OAAQ1C,EAAS,eAAgB,CAAA,CAAI,EAC9CwC,EAAIG,iBAAiB,eAAgB,mCAAmC,EAExEH,EAAII,mBAAqB,WAED,IAAnBJ,EAAIK,aACH,CAAC,EAAG,KAAKxD,IAAImD,EAAIM,MAAM,EACmB,IAAzCN,EAAIO,aAAa5D,QAAQ,UAAU,EACtC3B,cAAc6C,WAAWmC,EAAIO,aAAcnC,CAAS,EAEpDpD,cAAc0B,MAAMsD,EAAIO,YAAY,EAGrCvF,cAAc0B,MAAMsD,EAAIM,MAAM,EAE/BvC,SAAS+B,cAAc,MAAM,EAAEN,UAAUtC,OAAO,SAAS,EAE3D,EAEA8C,EAAIQ,KAAKpF,MAAMqF,UAAU1C,SAASU,eAAe,mBAAmB,EAAG,OAAO,CAAC,CAChF,EAEAxD,KAAKyF,iBAAmB,SAAUlD,GACjCpC,MAAMwB,OAAO+D,mBAAmBvF,MAAMC,KAAK4B,UAAU,GAAG,EAAG7B,MAAMC,KAAK4B,UAAU,GAAG,EAAGjC,cAAc4F,uBAAwBpD,CAAM,CACnI,EAEAvC,KAAK4F,qBAAuB,SAAUrD,GACrCpC,MAAMwB,OAAOkE,kBAAkB1F,MAAMC,KAAK4B,UAAU,GAAG,EAAG7B,MAAMC,KAAK4B,UAAU,GAAG,EAAI,aAAe7B,MAAMC,KAAK4B,UAAU,GAAG,EAAI,mCAAoCO,EAAQxC,cAAc+F,0BAA0B,CACtN,EAEA9F,KAAK2F,uBAAyB,SAAUI,GAGvC,IAAIhB,EAAM,IAAIC,eAAkB7B,EAAYL,SAAS+B,cAAc,uBAAuB,EAC1FE,EAAIE,KAAK,MAAOc,EAAM,CAAA,CAAI,EAE1BhB,EAAII,mBAAqB,WAED,IAAnBJ,EAAIK,aACH,CAAC,EAAG,KAAKxD,IAAImD,EAAIM,MAAM,EACmB,IAAzCN,EAAIO,aAAa5D,QAAQ,UAAU,EACtC3B,cAAc6C,WAAWmC,EAAIO,aAAcnC,CAAS,EAEpDpD,cAAc0B,MAAMsD,EAAIO,YAAY,EAGrCvF,cAAc0B,MAAMsD,EAAIM,MAAM,EAGjC,EAEAN,EAAIQ,KAAK,CACV,EAEAvF,KAAK8F,2BAA6B,SAAUvD,GAE3C,GAAqB,WAAjB,OAAOA,EACV,OAAOpC,MAAM0D,KAAK,OAAO,EAAEG,QAE5BjE,cAAc4F,uBAAuBpD,CAAM,CAC5C,EAEAvC,KAAKkE,SAAW,SAAU8B,GAGzB,IADA,IAAInD,EAAOmD,EACe,SAAlBnD,EAAKoD,UAAwB,CAACpD,EAAKgC,cAAc,MAAM,GAC9DhC,EAAOA,EAAKe,YAETf,EAAOA,EAAKgC,cAAc,MAAM,KAC/BmB,EAAKhC,QACRnB,EAAKqD,aAAa,WAAY,UAAU,EAExCrD,EAAKsD,gBAAgB,UAAU,EAElC,EAEAnG,KAAKyD,OAAS,SAAUuC,GAEvB,IAAII,EAAMC,EAAMC,EAiDXC,EAhDc,UAAf,OAAOP,IACVM,EAAON,IACPA,EAAOlD,SAASU,eAAe,aAAa,GACjCG,QAAU2C,GAAmB,QAATA,GAAqC,QAAfN,EAAKrC,OAA8B,QAAT2C,KAC9EA,EAAO,QACRN,EAAKrC,MAAQ2C,GAEQ,WAAlBN,EAAKC,WACRI,EAAOL,EAAKQ,aAAa,WAAW,EACpCR,EAAKE,aAAa,YAAaF,EAAKS,WAAW,EAC/CT,EAAKS,YAAcJ,EACnBL,EAAKE,aAAa,aAAkD,KAAnCF,EAAKQ,aAAa,YAAY,EAAY,IAAM,GAAG,GAGrF1D,SAASU,eAAe,cAAc,EAAEM,iBAAiB,cAAc,EAAEC,QAAQ,SAAU2C,GAE1FJ,EAAO,GAKPxD,SAASU,eAAe,cAAc,EAAEM,iBAAiB,cAAc,EAAEC,QAAQ,SAAU4C,EAAKC,IAE/FD,EAAMA,EAAI9B,cAAc,SAAS,GAIP,WAAjB8B,EAAIV,UACZG,EAAOS,KAAKC,MAAMpD,SAASiD,EAAIhD,MAAO,EAAE,EAAI,GAAG,EAC/C0C,EAAOQ,KAAKC,MAAMpD,SAASgD,EAAK5C,iBAAiB,IAAI,EAAE8C,GAAK/B,cAAc,gBAAgB,EAAElB,MAAO,EAAE,EAAI,GAAG,EAC5G2C,EAAKS,KAAoB,QAAdJ,EAAIhD,OAAqB0C,GAAQD,CAAK,GAExB,WAAjBO,EAAIV,WACZG,EAAyC,KAAlCO,EAAIH,aAAa,YAAY,EACpCH,EAAOK,EAAK5C,iBAAiB,IAAI,EAAE8C,GAAK/B,cAAc,uBAAuB,EAAEb,QAC3E2C,EAAI1C,aAAa,cAAc,IAAGoC,EAAO,CAACA,GAC9CC,EAAKS,KAAK,CAACX,GAAkBA,IAASC,CAAM,GAX5CC,EAAKS,KAAK,CAAA,CAAI,CAahB,CAAC,EAIDL,EAAKR,aAAa,QAAgC,CAAC,EAAvBI,EAAK5E,QAAQ,CAAA,CAAK,EAAU,gBAAkB,EAAE,EAC5EgF,EAAKP,gBAAgB,OAAO,CAC7B,CAAC,EAGsB,WAAlBH,EAAKC,UAA2Be,CAAAA,MAAMhB,EAAKrC,KAAK,IAAMqC,EAAOlD,SAAS+B,cAAc,SAAWmB,EAAKrC,KAAK,KACzG4C,EAAOP,EAAKiB,sBAAsB,GAC5BC,IAAM,GAAOX,EAAKY,QAAUC,OAAOC,aAC5CrB,EAAKsB,eAAe,CAEvB,EAGAtH,KAAKuH,YAAc,SAAU1E,IAE5BA,EAAOA,EAAKe,WAAWA,YAClB4D,MAAM,EACN3E,EAAK0B,UAAUkD,SAAS,UAAU,GACtC5E,EAAK2E,MAAM,EAEZ,IAAIE,EAAO7E,EAAKgC,cAAc,WAAW,EAAE4B,YAAYkB,KAAK,EACxDtB,EAAO,8BAAgClG,MAAMC,KAAK4B,UAAU,GAAG,EACjE,qDAA2C0F,EAAO,wCAEpDvH,MAAMwB,OAAOkE,kBAAkB1F,MAAMC,KAAK4B,UAAU,GAAG,EAAGqE,EAAM,aAActG,cAAc6H,kBAAmB/E,EAAKgF,GAAI,UAAU,EAClI1H,MAAMwB,OAAOmG,GAAGjD,cAAc,OAAO,EAAEkD,OAAO,CAC/C,EAEA/H,KAAK4H,kBAAoB,SAAUrF,EAAQwD,GAG1C,GAAqB,WAAjB,OAAOxD,EACV,MAAO,CAAA,EAGH,IAIAwC,EAJqB,UAAjB,OAAOxC,KAIXwC,EAAM,IAAIC,gBACVC,KAAK,OAAQR,qBAAqBuD,cAAgB,eAAgB,CAAA,CAAI,EAC1EjD,EAAIG,iBAAiB,eAAgB,mCAAmC,EAExEH,EAAII,mBAAqB,WAExB,GAAuB,IAAnBJ,EAAIK,YACH,CAAC,EAAG,KAAKxD,IAAImD,EAAIM,MAAM,EAC1B,IACCZ,qBAAqBwD,cAAclD,CAAG,EACtCN,qBAAqBC,aAAaD,qBAAqBE,WAAW,CAInE,CAFA,MAAOuD,GACNnI,cAAc0B,MAAMyG,EAAEC,OAAO,CAC9B,CAGH,EAEApD,EAAIQ,KAAK,YAAc6C,SAAW,SAAWC,mBAAmBtC,CAAI,EAAI,SAAWsC,mBAAmBvF,SAASU,eAAe,YAAY,EAAEG,KAAK,CAAC,EAEpJ,EAEA3D,KAAKsI,YAAc,SAAUzF,IAE5BA,EAAOA,EAAKe,WAAWA,YAClB4D,MAAM,EACN3E,EAAK0B,UAAUkD,SAAS,UAAU,GACtC5E,EAAK2E,MAAM,EAEZrH,MAAMwB,OAAO+D,mBAAmBvF,MAAMC,KAAK4B,UAAU,GAAG,EAAG7B,MAAMC,KAAK4B,UAAU,GAAG,EAAGjC,cAAcwI,kBAAmB1F,EAAKgF,EAAE,CAC/H,EAEA7H,KAAKuI,kBAAoB,SAAUxC,GAIlC,IAAIhB,EAAM,IAAIC,eACdD,EAAIE,KAAK,OAAQR,qBAAqB+D,eAAiB,eAAgB,CAAA,CAAI,EAC3EzD,EAAIG,iBAAiB,eAAgB,mCAAmC,EAExEH,EAAII,mBAAqB,WAExB,GAAuB,IAAnBJ,EAAIK,YACH,CAAC,EAAG,KAAKxD,IAAImD,EAAIM,MAAM,EAC1B,IACCZ,qBAAqBwD,cAAclD,CAAG,EACtCN,qBAAqBC,aAAaD,qBAAqBE,WAAW,CAInE,CAFA,MAAOuD,GACNnI,cAAc0B,MAAMyG,EAAEC,OAAO,CAC9B,CAGH,EAEApD,EAAIQ,KAAK,YAAc6C,SAAW,SAAWC,mBAAmBtC,CAAI,CAAC,CACtE,EAEA/F,KAAKyI,qBAAuB,WAE3B,IAAI5F,EAAM6F,EAAO,GACU,YAAvB,OAAOC,cACVD,EAAK3B,KAAK4B,YAAY,EACY,UAA/B,OAAOlE,sBACViE,EAAK3B,KAAKtC,oBAAoB,EAE/BiE,EAAK3E,QAAQ,SAAU6E,GAEY,YAA9B,OAAOA,EAAIC,kBAEdD,EAAIC,gBAAkBD,EAAIE,YAC1BF,EAAIE,YAAc,SAAUpB,GAC3B1H,KAAK6I,gBAAgBnB,CAAI,EACZ,iBAATA,IACH5E,SAASU,eAAe,cAAc,EAAEe,UAAUO,IAAI,YAAY,EAClEhC,SAASU,eAAe,UAAU,EAAEe,UAAUtC,OAAO,YAAY,EACjEa,SAASU,eAAe,iBAAiB,EAAEe,UAAUO,IAAI,YAAY,GACjEjC,EAAOC,SAAS+B,cAAc,+BAA+B,IAChEhC,EAAKsD,gBAAgB,OAAO,GACzBtD,EAAOC,SAAS+B,cAAc,wCAAwC,IACzEhC,EAAKsD,gBAAgB,OAAO,EACxBhG,MAAMwB,OAAOC,IAAI,OAAO,GAC5BzB,MAAMwB,OAAOyC,YAAY,EAE5B,EAEAwE,EAAIG,gBAAkBH,EAAII,YAC1BJ,EAAII,YAAc,SAAUtB,GAC3B1H,KAAK+I,gBAAgBrB,CAAI,EACZ,iBAATA,IACH5E,SAASU,eAAe,cAAc,EAAEe,UAAUO,IAAI,YAAY,EAClEhC,SAASU,eAAe,UAAU,EAAEe,UAAUO,IAAI,YAAY,EAC9DhC,SAASU,eAAe,iBAAiB,EAAEe,UAAUtC,OAAO,YAAY,GACpEY,EAAOC,SAAS+B,cAAc,+BAA+B,KAChEhC,EAAKoG,MAAMC,WAAa,WACrBrG,EAAOC,SAAS+B,cAAc,wCAAwC,KACzEhC,EAAKoG,MAAMC,WAAa,UAE3B,EAEAN,EAAIO,oBAAsBP,EAAIQ,gBAC9BR,EAAIQ,gBAAkB,SAAUC,GAC/BrJ,KAAKmJ,oBAAoBE,CAAI,EACxBvG,SAASU,eAAe,aAAa,IACzC6F,EAAOrJ,KAAKsJ,KAAKC,YAAY,MAAM,EACnCzG,SAASU,eAAe,gBAAgB,EAAEgG,OAAO,CAAEC,MAAO,6GAA+GJ,EAAKxB,GAAK,SAAWwB,EAAKhD,KAAO,gBAAiB,CAAC,EAE9N,EAEF,CAAC,EAED5B,qBAAqBuD,cAAkBvD,qBAAqB+D,eAAekB,QAAQ,yBAA0B,2BAA2B,EACxIjF,qBAAqB+D,eAAkB/D,qBAAqB+D,eAAekB,QAAQ,yBAA0B,4BAA4B,EACzIjF,qBAAqBkF,gBAAkBlF,qBAAqBkF,gBAAgBD,QAAQ,0BAA2B,6BAA6B,CAC7I,EAGA1J,KAAK4J,WAAa,SAAUrH,GAC3BpC,MAAMwB,OAAO+D,mBAAmBvF,MAAMC,KAAK4B,UAAU,GAAG,EAAG7B,MAAMC,KAAK4B,UAAU,GAAG,EAAGjC,cAAc8J,iBAAkBtH,CAAM,CAC7H,EAEAvC,KAAK6J,iBAAmB,SAAU9D,GACjC5F,MAAMwB,OAAOM,OAAO,UAAW,MAAM,EACrCC,KAAKC,SAAS2H,KAAO/D,CACtB,CAEA,EAEmC,YAAhC,OAAO7D,KAAK6H,kBACf7H,KAAK6H,iBAAiB,YAAahK,cAAcE,KAAK+J,KAAKjK,aAAa,CAAC"} \ No newline at end of file +{"version":3,"sources":["apijs-openmage.js"],"sourcesContent":["/**\n * Created D/15/12/2013\n * Updated J/11/08/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/openmage-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 apijsOpenMage = new (function () {\n\n\t\"use strict\";\n\n\tthis.init = 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.cs[259] = \"Vymazat všechny soubory\";\n\t\td.cs[260] = \"Opravdu chcete smazat všechny soubory?[br]Pozor, tuto operaci nelze vrátit zpět.\";\n\t\td.cs[261] = \"Potvrďte zaškrtnutím políčka:\";\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[259] = \"Alle Daten löschen\";\n\t\td.de[261] = \"Zur Bestätigung das Kontrollkästchen bestätigen:\";\n\t\td.el[252] = \"Σφάλμα\";\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] = \"Clear cache\";\n\t\td.en[256] = \"Are you sure you want to clear the cache?[br]Be careful, you can't cancel this operation.\";\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] = \"Remove all files\";\n\t\td.en[260] = \"Are you sure you want to remove all files?[br]Be careful, you can't cancel this operation.\";\n\t\td.en[261] = \"To confirm, check the checkbox:\";\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] = \"Vaciar la caché\";\n\t\td.es[256] = \"¿Está usted seguro(a) de querer vaciar la caché?[br]Cuidado, esta operación no puede ser cancelada.\";\n\t\td.frca[251] = \"Êtes-vous sûr(e) de vouloir supprimer ce fichier?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.frca[256] = \"Êtes-vous certain(e) de vouloir vider le cache?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.frca[260] = \"Êtes-vous sûr(e) de vouloir supprimer tous les fichiers?[br]Attention, cette opération n'est pas annulable.\";\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] = \"Vider le cache\";\n\t\td.fr[256] = \"Êtes-vous certain(e) de vouloir vider le cache ?[br]Attention, cette opération n'est pas annulable.\";\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] = \"Supprimer tous les fichiers\";\n\t\td.fr[260] = \"Êtes-vous sûr(e) de vouloir supprimer tous les fichiers ?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.fr[261] = \"Pour confirmer, cochez la case :\";\n\t\td.hu[252] = \"Hiba\";\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[259] = \"Cancella tutti i file\";\n\t\td.it[260] = \"Sei sicura di voler cancellare tutti i file?[br]Attenzione, questa operazione non può essere annullata.\";\n\t\td.it[261] = \"Per confermare, seleziona la casella:\";\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.pl[259] = \"Usuń wszystkie pliki\";\n\t\td.pl[260] = \"Jesteś pewny, że chcesz usunąć ten plik?[br]Uwaga! Nie ma odwrotu od tej operacji.\";\n\t\td.pl[261] = \"Potwierdź twój wybór:\";\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.ro[252] = \"Eroare\";\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.sk[252] = \"Chyba\";\n\t\td.tr[252] = \"Hata\";\n\t\td.tr[255] = \"Önbelleği temizle\";\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(' ' + extra + '';\n\t\t\tapijs.dialog.t2.appendChild(elem);\n\t\t}\n\t};\n\n\tthis.updateForm = function (data, indicator, elem) {\n\n\t\t// success-{json[result, bbcode]}\n\t\tif (data.indexOf('{') > -1) {\n\t\t\tdata = JSON.parse(data.slice(data.indexOf('{')));\n\t\t\tif (data.bbcode)\n\t\t\t\tapijsOpenMage.error(data.bbcode);\n\t\t}\n\n\t\t// produit ou widget cms\n\t\tif (elem = document.getElementById('apijsGallery')) {\n\n\t\t\tif (data.filter = document.getElementById('apijsFilter'))\n\t\t\t\tdata.filter = parseInt(data.filter.value, 10);\n\n\t\t\telem.parentNode.innerHTML = data.html;\n\t\t\telem.querySelectorAll('input[type=\"checkbox\"], input[type=\"radio\"]').forEach(function (elem) {\n\t\t\t\telem.checked = elem.hasAttribute('checked');\n\t\t\t\tif (elem.hasAttribute('onchange'))\n\t\t\t\t\tapijsOpenMage.checkVal(elem);\n\t\t\t});\n\n\t\t\tapijs.slideshow.init();\n\t\t\tif (!apijs.dialog.has('error')) // ferme sauf en cas d'erreur\n\t\t\t\tapijs.dialog.actionClose();\n\n\t\t\tif (data.filter > 0) {\n\t\t\t\telem = document.getElementById('apijsFilter');\n\t\t\t\telem.value = data.filter;\n\t\t\t\telem.dispatchEvent(new Event('change'));\n\t\t\t}\n\n\t\t\tif (indicator) {\n\t\t\t\tindicator.classList.remove('changed');\n\t\t\t\tvarienWindowOnload(true);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tMediabrowserInstance.selectFolder(MediabrowserInstance.currentNode);\n\t\t}\n\t};\n\n\t// product\n\tthis.actionSave = function (action) {\n\n\t\tdocument.querySelector('body').classList.add('fabload');\n\n\t\tvar xhr = new XMLHttpRequest(), indicator = document.querySelector('.tab-item-link.active');\n\t\txhr.open('POST', action + '?isAjax=true', true);\n\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\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('success-') === 0)\n\t\t\t\t\t\tapijsOpenMage.updateForm(xhr.responseText, indicator);\n\t\t\t\t\telse\n\t\t\t\t\t\tapijsOpenMage.error(xhr.responseText);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tapijsOpenMage.error(xhr.status);\n\t\t\t\t}\n\t\t\t\tdocument.querySelector('body').classList.remove('fabload');\n\t\t\t}\n\t\t};\n\n\t\txhr.send(apijs.serialize(document.getElementById('product_edit_form'), 'apijs'));\n\t};\n\n\tthis.removeAttachment = function (action) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(250), apijs.i18n.translate(251), apijsOpenMage.actionRemoveAttachment, action);\n\t};\n\n\tthis.removeAllAttachments = function (action) {\n\t\tapijs.dialog.dialogFormOptions(apijs.i18n.translate(259), apijs.i18n.translate(260) + '[p][label]' + apijs.i18n.translate(261) + ' [input type=\"checkbox\"][/label]', action, apijsOpenMage.actionRemoveAllAttachments);\n\t};\n\n\tthis.actionRemoveAttachment = function (args) {\n\n\t\t// args = action\n\t\tvar xhr = new XMLHttpRequest(), indicator = document.querySelector('.tab-item-link.active');\n\t\txhr.open('GET', args, true);\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('success-') === 0)\n\t\t\t\t\t\tapijsOpenMage.updateForm(xhr.responseText, indicator);\n\t\t\t\t\telse\n\t\t\t\t\t\tapijsOpenMage.error(xhr.responseText);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tapijsOpenMage.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.actionRemoveAllAttachments = function (action) {\n\n\t\tif (typeof action == 'boolean')\n\t\t\treturn apijs.html('input').checked;\n\n\t\tapijsOpenMage.actionRemoveAttachment(action);\n\t};\n\n\tthis.checkVal = function (root) {\n\n\t\tvar elem = root;\n\t\twhile ((elem.nodeName !== 'BODY') && !elem.querySelector('.val'))\n\t\t\telem = elem.parentNode;\n\n\t\tif (elem = elem.querySelector('.val')) {\n\t\t\tif (root.checked)\n\t\t\t\telem.setAttribute('disabled', 'disabled');\n\t\t\telse\n\t\t\t\telem.removeAttribute('disabled');\n\t\t}\n\t};\n\n\tthis.filter = function (root) {\n\n\t\tvar word, text, show;\n\t\tif (typeof root == 'string') {\n\t\t\tshow = root;\n\t\t\troot = document.getElementById('apijsFilter');\n\t\t\tif (((root.value === show) && (show !== 'all')) || ((root.value === 'all') && (show === 'all')))\n\t\t\t\tshow = 'none';\n\t\t\troot.value = show;\n\t\t}\n\t\tif (root.nodeName === 'BUTTON') {\n\t\t\ttext = root.getAttribute('data-text');\n\t\t\troot.setAttribute('data-text', root.textContent);\n\t\t\troot.textContent = text;\n\t\t\troot.setAttribute('data-state', (root.getAttribute('data-state') == '0') ? '1' : '0');\n\t\t}\n\n\t\tdocument.getElementById('apijsGallery').querySelectorAll('tbody tr[id]').forEach(function (line) {\n\n\t\t\tshow = [];\n\n\t\t\t// pour chaque colonne (car toutes les colonnes peuvent avoir un filtre)\n\t\t\t// word = ce qu'on cherche dans la colonne courante\n\t\t\t// text = ce qu'il y a dans la cellule de la colonne de la ligne courante\n\t\t\tdocument.getElementById('apijsGallery').querySelectorAll('tr.filter th').forEach(function (col, idx) {\n\n\t\t\t\tcol = col.querySelector('.filter');\n\t\t\t\tif (!col) {\n\t\t\t\t\tshow.push(true);\n\t\t\t\t}\n\t\t\t\telse if (col.nodeName === 'SELECT') {\n\t\t\t\t\tword = Math.floor(parseInt(col.value, 10) / 100); // ce qu'on cherche\n\t\t\t\t\ttext = Math.floor(parseInt(line.querySelectorAll('td')[idx].querySelector('input.position').value, 10) / 100); //dans quoi\n\t\t\t\t\tshow.push((col.value === 'all') || (text == word));\n\t\t\t\t}\n\t\t\t\telse if (col.nodeName === 'BUTTON') {\n\t\t\t\t\tword = col.getAttribute('data-state') == '1'; // ce qu'on cherche\n\t\t\t\t\ttext = line.querySelectorAll('td')[idx].querySelector('input.check:not(.def)').checked; // dans quoi on cherche\n\t\t\t\t\tif (col.hasAttribute('data-reverse')) text = !text;\n\t\t\t\t\tshow.push(!word || (word && (word !== text)));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// maintenant que chaque colonne de la ligne a été vérifiée\n\t\t\t// si aucune colonne indique qu'il ne faut pas afficher la ligne, on affiche la ligne\n\t\t\tline.setAttribute('style', (show.indexOf(false) > -1) ? 'display:none;' : '');\n\t\t\tline.removeAttribute('title');\n\t\t});\n\n\t\t// s'assure que le séparateur est visible\n\t\tif ((root.nodeName === 'SELECT') && !isNaN(root.value) && (root = document.querySelector('tr.grp' + root.value))) {\n\t\t\tvar rect = root.getBoundingClientRect();\n\t\t\tif ((rect.top < 0) && (rect.bottom <= window.innerHeight))\n\t\t\t\troot.scrollIntoView();\n\t\t}\n\t};\n\n\t// wysiwyg\n\tthis.renameMedia = function (elem) {\n\n\t\telem = elem.parentNode.parentNode;\n\t\telem.click();\n\t\tif (!elem.classList.contains('selected'))\n\t\t\telem.click();\n\n\t\tvar name = elem.querySelector('.filename').textContent.trim(),\n\t\t text = '[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(apijs.i18n.translate(257), text, 'action.php', apijsOpenMage.actionRenameMedia, elem.id, 'editname');\n\t\tapijs.dialog.t1.querySelector('input').select();\n\t};\n\n\tthis.actionRenameMedia = 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 du nouveau nom\n\t\telse if (typeof action == 'string') {\n\n\t\t\t// args = id\n\t\t\t// copie de MediabrowserInstance.deleteFiles(); ou presque\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open('POST', MediabrowserInstance.renameFileUrl + '?isAjax=true', true);\n\t\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\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\ttry {\n\t\t\t\t\t\t\tMediabrowserInstance.onAjaxSuccess(xhr);\n\t\t\t\t\t\t\tMediabrowserInstance.selectFolder(MediabrowserInstance.currentNode);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tapijsOpenMage.error(e.message);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send('form_key=' + FORM_KEY + '&file=' + encodeURIComponent(args) + '&name=' + encodeURIComponent(document.getElementById('apijsinput').value));\n\t\t}\n\t};\n\n\tthis.removeMedia = function (elem) {\n\n\t\telem = elem.parentNode.parentNode;\n\t\telem.click();\n\t\tif (!elem.classList.contains('selected'))\n\t\t\telem.click();\n\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(250), apijs.i18n.translate(251), apijsOpenMage.actionRemoveMedia, elem.id);\n\t};\n\n\tthis.actionRemoveMedia = function (args) {\n\n\t\t// args = id\n\t\t// copie de MediabrowserInstance.deleteFiles(); ou presque\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('POST', MediabrowserInstance.deleteFilesUrl + '?isAjax=true', true);\n\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\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\ttry {\n\t\t\t\t\t\tMediabrowserInstance.onAjaxSuccess(xhr);\n\t\t\t\t\t\tMediabrowserInstance.selectFolder(MediabrowserInstance.currentNode);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\tapijsOpenMage.error(e.message);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\txhr.send('form_key=' + FORM_KEY + '&file=' + encodeURIComponent(args));\n\t};\n\n\tthis.overloadMediabrowser = function () {\n\n\t\tvar elem, objs = [];\n\t\tif (typeof Mediabrowser == 'function')\n\t\t\tobjs.push(Mediabrowser);\n\t\tif (typeof MediabrowserInstance == 'object')\n\t\t\tobjs.push(MediabrowserInstance);\n\n\t\tobjs.forEach(function (obj) {\n\n\t\t\tif (typeof obj.origHideElement != 'function') {\n\n\t\t\t\tobj.origHideElement = obj.hideElement;\n\t\t\t\tobj.hideElement = function (name) {\n\t\t\t\t\tthis.origHideElement(name);\n\t\t\t\t\tif (name === 'loading-mask') {\n\t\t\t\t\t\tdocument.getElementById('loading-mask').classList.add('no-display');\n\t\t\t\t\t\tdocument.getElementById('contents').classList.remove('no-display');\n\t\t\t\t\t\tdocument.getElementById('contents-loader').classList.add('no-display');\n\t\t\t\t\t\tif (elem = document.querySelector('.main-col-inner .form-buttons'))\n\t\t\t\t\t\t\telem.removeAttribute('style');\n\t\t\t\t\t\tif (elem = document.querySelector('.content-header-floating .form-buttons'))\n\t\t\t\t\t\t\telem.removeAttribute('style');\n\t\t\t\t\t\tif (!apijs.dialog.has('error')) // ferme sauf en cas d'erreur\n\t\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tobj.origShowElement = obj.showElement;\n\t\t\t\tobj.showElement = function (name) {\n\t\t\t\t\tthis.origShowElement(name);\n\t\t\t\t\tif (name === 'loading-mask') {\n\t\t\t\t\t\tdocument.getElementById('loading-mask').classList.add('no-display');\n\t\t\t\t\t\tdocument.getElementById('contents').classList.add('no-display');\n\t\t\t\t\t\tdocument.getElementById('contents-loader').classList.remove('no-display');\n\t\t\t\t\t\tif (elem = document.querySelector('.main-col-inner .form-buttons'))\n\t\t\t\t\t\t\telem.style.visibility = 'hidden';\n\t\t\t\t\t\tif (elem = document.querySelector('.content-header-floating .form-buttons'))\n\t\t\t\t\t\t\telem.style.visibility = 'hidden';\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tobj.origDrawBreadcrumbs = obj.drawBreadcrumbs;\n\t\t\t\tobj.drawBreadcrumbs = function (node) {\n\t\t\t\t\tthis.origDrawBreadcrumbs(node);\n\t\t\t\t\tif (!document.getElementById('breadcrumbs')) {\n\t\t\t\t\t\tnode = this.tree.getNodeById('root');\n\t\t\t\t\t\tdocument.getElementById('content_header').insert({ after: '' });\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\n\t\tMediabrowserInstance.renameFileUrl = MediabrowserInstance.deleteFilesUrl.replace(/[a-z_]+\\/deleteFiles\\//, 'apijs_wysiwyg/renameFile/');\n\t\tMediabrowserInstance.deleteFilesUrl = MediabrowserInstance.deleteFilesUrl.replace(/[a-z_]+\\/deleteFiles\\//, 'apijs_wysiwyg/deleteFiles/');\n\t\tMediabrowserInstance.deleteFolderUrl = MediabrowserInstance.deleteFolderUrl.replace(/[a-z_]+\\/deleteFolder\\//, 'apijs_wysiwyg/deleteFolder/');\n\t};\n\n\t// cache\n\tthis.clearCache = function (action) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(255), apijs.i18n.translate(256), apijsOpenMage.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', apijsOpenMage.init.bind(apijsOpenMage));"],"names":["apijsOpenMage","this","init","d","apijs","i18n","data","frca","cs","de","el","en","es","fr","hu","it","ja","nl","pl","pt","ro","ru","sk","tr","uk","zh","error","indexOf","dialog","has","upload","onError","dialogInformation","translate","remove","self","location","reload","sendFiles","title","action","onemax","allmax","exts","extra","updateForm","elem","document","createElement","innerHTML","t2","appendChild","indicator","JSON","parse","slice","bbcode","getElementById","filter","parseInt","value","parentNode","html","querySelectorAll","forEach","checked","hasAttribute","checkVal","slideshow","actionClose","dispatchEvent","Event","classList","varienWindowOnload","MediabrowserInstance","selectFolder","currentNode","actionSave","querySelector","add","xhr","XMLHttpRequest","open","setRequestHeader","onreadystatechange","readyState","status","responseText","send","serialize","removeAttachment","dialogConfirmation","actionRemoveAttachment","removeAllAttachments","dialogFormOptions","actionRemoveAllAttachments","args","root","nodeName","setAttribute","removeAttribute","word","text","show","rect","getAttribute","textContent","line","col","idx","Math","floor","push","isNaN","getBoundingClientRect","top","bottom","window","innerHeight","scrollIntoView","renameMedia","click","contains","name","trim","actionRenameMedia","id","t1","select","renameFileUrl","onAjaxSuccess","e","message","FORM_KEY","encodeURIComponent","removeMedia","actionRemoveMedia","deleteFilesUrl","overloadMediabrowser","objs","Mediabrowser","obj","origHideElement","hideElement","origShowElement","showElement","style","visibility","origDrawBreadcrumbs","drawBreadcrumbs","node","tree","getNodeById","insert","after","replace","deleteFolderUrl","clearCache","actionClearCache","href","addEventListener","bind"],"mappings":"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"} \ No newline at end of file diff --git a/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs.min.js b/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs.min.js index 4f2a8b2..ca94593 100644 --- a/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs.min.js +++ b/src/skin/adminhtml/default/default/js/luigifab/apijs/apijs.min.js @@ -1,8 +1,8 @@ /*! - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/apijs - 6.9.2 + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/apijs - 6.9.3 * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL). */ -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;ie.scroll+1)&&(e.scroll=i,s=0i.offsetHeight&&"HTML"!==i.nodeName&&((s=0=i.body.offsetHeight-1||!e&&i.defaultView.scrollY<=0)&&(t.preventDefault(),t.stopPropagation())},this.onKey=function(t){var e,i=apijs.dialog,s=i.media;i.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():i.has("photo","video")&&122===t.keyCode?(t.preventDefault(),apijs.requestFullscreen(i.t1)):i.has("slideshow")?27===t.keyCode?(t.preventDefault(),i.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(),i.actionClose()),i.has("video")&&!i.has("videoiframe")&&([32,80].has(t.keyCode)?(t.preventDefault(),[1,2].has(s.networkState)&&(s.ended||s.paused?s.play():s.pause())):[38,33].has(t.keyCode)?(t.preventDefault(),e=38===t.keyCode?10:60,[1,2].has(s.networkState)&&s.duration!==1/0&&!isNaN(s.duration)&&(s.currentTime>e?s.currentTime-=e:s.currentTime=0)):[40,34].has(t.keyCode)?(t.preventDefault(),[1,2].has(s.networkState)&&s.duration!==1/0&&!isNaN(s.duration)&&(e=40===t.keyCode?10:60,s.currentTime/g,">").replace(/\[/g,"<").replace(/]/g,">"),this.t2.appendChild(this.a)),0/g,">").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),"function"==typeof Hammer&&(this.hammer=new Hammer(this.t2),this.hammer.get("swipe").set({direction:Hammer.DIRECTION_ALL}),this.hammer.on("swiperight swipedown swipeleft swipeup",apijs.dialog.onSlideshowSwipe)),this},this.htmlBtnClose=function(t){return!1!==t&&(this.a=document.createElement("div"),this.a.setAttribute("class","close nofullplaying"),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,i){return this.a=document.createElement("div"),this.a.setAttribute("class","btns upload"),this.t3=document.createElement("input"),this.t3.setAttribute("type","file"),this.t3.setAttribute("name",e?t+"[]":t),this.t3.setAttribute("id","apijsFile"),e&&this.t3.setAttribute("multiple","multiple"),this.t3.setAttribute("onchange",i),this.a.appendChild(this.t3),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'+(s?(new Date).toTimeString().substring(0,8):e+1)+"":"")+''+t.name+''+apijs.i18n.translate(166,i)+"","*"===this.exts.join()||this.exts.has(t.name.slice(t.name.lastIndexOf(".")+1).toLowerCase())?t.size>1048576*this.onemax?i+=''+apijs.i18n.translate(168)+"":t.size<=0?i+=''+apijs.i18n.translate(169)+"":i+="":i+=''+apijs.i18n.translate(167)+"",a.push(""+i+""),n+=t.size/1048576},this),0=this.allmax&&a.push(''+apijs.i18n.translate(166,apijs.formatNumber(n))+''+apijs.i18n.translate(168)+""),apijs.html("div.filenames").innerHTML=""+a.join("")+"
    ",apijs.html("div.filenames .err"))?e.setAttribute("disabled","disabled"):(e.removeAttribute("disabled"),e.focus())},this.actionConfirm=function(){var t,e;return 0=this.end+2?(this.end=r,0<(e=Math.floor(100*t.loaded/t.total))&&e<100&&(this.updateTitle(e),n=100*(r=r-this.start)/e+10,24e.scroll+1)&&(e.scroll=i,s=0i.offsetHeight&&"HTML"!==i.nodeName&&((s=0=i.body.offsetHeight-1||!e&&i.defaultView.scrollY<=0)&&(t.preventDefault(),t.stopPropagation())},this.onKey=function(t){var e,i=apijs.dialog,s=i.media;i.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():i.has("photo","video")&&122===t.keyCode?(t.preventDefault(),apijs.requestFullscreen(i.t1)):i.has("slideshow")?27===t.keyCode?(t.preventDefault(),i.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(),i.actionClose()),i.has("video")&&!i.has("videoiframe")&&([32,80].has(t.keyCode)?(t.preventDefault(),[1,2].has(s.networkState)&&(s.ended||s.paused?s.play():s.pause())):[38,33].has(t.keyCode)?(t.preventDefault(),e=38===t.keyCode?10:60,[1,2].has(s.networkState)&&s.duration!==1/0&&!isNaN(s.duration)&&(s.currentTime>e?s.currentTime-=e:s.currentTime=0)):[40,34].has(t.keyCode)?(t.preventDefault(),[1,2].has(s.networkState)&&s.duration!==1/0&&!isNaN(s.duration)&&(e=40===t.keyCode?10:60,s.currentTime/g,">").replace(/\[/g,"<").replace(/]/g,">"),this.t2.appendChild(this.a)),0/g,">").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),"function"==typeof Hammer&&(this.hammer=new Hammer(this.t2),this.hammer.get("swipe").set({direction:Hammer.DIRECTION_ALL}),this.hammer.on("swiperight swipedown swipeleft swipeup",apijs.dialog.onSlideshowSwipe)),this},this.htmlBtnClose=function(t){return!1!==t&&(this.a=document.createElement("div"),this.a.setAttribute("class","close nofullplaying"),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,i){return this.a=document.createElement("div"),this.a.setAttribute("class","btns upload"),this.t3=document.createElement("input"),this.t3.setAttribute("type","file"),this.t3.setAttribute("name",e?t+"[]":t),this.t3.setAttribute("id","apijsFile"),e&&this.t3.setAttribute("multiple","multiple"),this.t3.setAttribute("onchange",i),this.a.appendChild(this.t3),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'+(s?(new Date).toTimeString().substring(0,8):e+1)+"":"")+''+t.name+''+apijs.i18n.translate(166,i)+"","*"===this.exts.join()||this.exts.has(t.name.slice(t.name.lastIndexOf(".")+1).toLowerCase())?t.size>1048576*this.onemax?i+=''+apijs.i18n.translate(168)+"":t.size<=0?i+=''+apijs.i18n.translate(169)+"":i+="":i+=''+apijs.i18n.translate(167)+"",a.push(""+i+""),n+=t.size/1048576},this),0=this.allmax&&a.push(''+apijs.i18n.translate(166,apijs.formatNumber(n))+''+apijs.i18n.translate(168)+""),apijs.html("div.filenames").innerHTML=""+a.join("")+"
    ",apijs.html("div.filenames .err"))?e.setAttribute("disabled","disabled"):(e.removeAttribute("disabled"),e.focus())},this.actionConfirm=function(){var t,e;return 0=this.end+2?(this.end=r,0<(e=Math.floor(100*t.loaded/t.total))&&e<100&&(this.updateTitle(e),n=100*(r=r-this.start)/e+10,24\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 = 692;\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, max) {\n\t\treturn Array.prototype.slice.call(data, 0, max);\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 S/03/07/2021\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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\t108: \"Vybrat soubor\",\n\t\t\t132: \"video stopa\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t135: \"vypnuto\",\n\t\t\t142: \"předchozí/následující\",\n\t\t\t143: \"přehrát/pozastavit\",\n\t\t\t144: \"zpět/vpřed\",\n\t\t\t145: \"snížit/zvýšit hlasitost\",\n\t\t\t146: \"ztlumit\",\n\t\t\t148: \"ukončit\",\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\t135: \"aus\",\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\tel: {\n\t\t\t102: \"Εντάξει\",\n\t\t\t103: \"Ακύρωση\",\n\t\t\t105: \"Κλείσιμο\",\n\t\t\t106: \"Προηγούμενο\",\n\t\t\t107: \"Επόμενο\",\n\t\t\t108: \"Επιλέξτε ένα αρχείο\",\n\t\t\t131: \"βίντεο\",\n\t\t\t132: \"κομμάτι βίντεο\",\n\t\t\t133: \"κομμάτι ήχου\",\n\t\t\t134: \"υπότιτλοι\",\n\t\t\t135: \"απενεργοποίηση\",\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\t149: \"Τέλος\",\n\t\t\t150: \"Esc\"\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\t135: \"desactivar\",\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\thu: {\n\t\t\t103: \"Mégsem\",\n\t\t\t104: \"Megerősít\",\n\t\t\t105: \"Bezár\",\n\t\t\t106: \"Előző\",\n\t\t\t107: \"Következő\",\n\t\t\t108: \"Válasszon fájlt\",\n\t\t\t131: \"videó\",\n\t\t\t132: \"videosáv\",\n\t\t\t133: \"hangsáv\",\n\t\t\t134: \"feliratok\",\n\t\t\t135: \"ki\",\n\t\t\t142: \"előző/következő\",\n\t\t\t143: \"lejátszás/szünet\",\n\t\t\t144: \"vissza/előre\",\n\t\t\t145: \"hangerő csökkentés/növelése\",\n\t\t\t146: \"némítás\",\n\t\t\t147: \"teljes képernyő\",\n\t\t\t148: \"kilépés\",\n\t\t\t149: \"Befejezés\",\n\t\t\t150: \"Esc\"\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\t135: \"inattivo\",\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\t108: \"ファイルを選択する\",\n\t\t\t131: \"ビデオ\",\n\t\t\t132: \"ビデオトラック\",\n\t\t\t133: \"オーディオトラック\",\n\t\t\t134: \"字幕\",\n\t\t\t135: \"オフ\",\n\t\t\t142: \"前へ/次へ\",\n\t\t\t143: \"再生/一時停止\",\n\t\t\t144: \"戻る/進む\",\n\t\t\t146: \"ミュート\",\n\t\t\t147: \"全画面表示\",\n\t\t\t148: \"終了\",\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\t108: \"Kies een bestand\",\n\t\t\t132: \"videospoor\",\n\t\t\t133: \"audiospoor\",\n\t\t\t134: \"ondertitels\",\n\t\t\t135: \"uit\",\n\t\t\t142: \"vorige/volgende\",\n\t\t\t143: \"afspelen/pauzeren\",\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\t148: \"afsluiten\",\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\t108: \"Wybierz plik\",\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\t135: \"wyłączone\",\n\t\t\t142: \"poprzedni/następny\",\n\t\t\t143: \"odtwarzaj/wstrzymaj\",\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\t148: \"zakończ\",\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: \"Escolha um ficheiro\",\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\t135: \"não\",\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\t108: \"Escolher um arquivo\",\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\t135: \"desligado\",\n\t\t\t142: \"anterior/próximo\",\n\t\t\t143: \"reproduzir/pausar\",\n\t\t\t144: \"retroceder/avançar\",\n\t\t\t146: \"sem áudio\",\n\t\t\t147: \"tela inteira\",\n\t\t\t148: \"fechar\",\n\t\t\t149: \"Final\"\n\t\t},\n\t\tro: {\n\t\t\t103: \"Anuleaza\",\n\t\t\t104: \"Confirmare\",\n\t\t\t105: \"Inchide\",\n\t\t\t106: \"Anteriorul\",\n\t\t\t107: \"Urmatorul\",\n\t\t\t108: \"Alege un fișier\",\n\t\t\t132: \"pistă video\",\n\t\t\t133: \"pistă audio\",\n\t\t\t134: \"subtitluri\",\n\t\t\t135: \"oprit\",\n\t\t\t142: \"anteriorul/urmatorul\",\n\t\t\t143: \"redare/pauză\",\n\t\t\t144: \"înapoi/înaintează\",\n\t\t\t145: \"scade/crește volumul\",\n\t\t\t146: \"mut\",\n\t\t\t147: \"pe tot ecranul\",\n\t\t\t148: \"ieșire\",\n\t\t\t149: \"Sfârșit\",\n\t\t\t150: \"Esc\"\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\t135: \"выключено\",\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: \"Максимальный размер: § Мб.\",\n\t\t\t166: \"§ Мб\",\n\t\t\t181: \"§% - § Кб/s - осталось § минут\",\n\t\t\t182: \"§% - § Кб/s - осталось § минут\",\n\t\t\t183: \"§% - § Кб/s - осталось § секунд\",\n\t\t\t184: \"§% - § Кб/s\",\n\t\t\t185: \"§% - § Кб/s за § минут\",\n\t\t\t186: \"§% - § Кб/s за § минут\",\n\t\t\t187: \"§% - § Кб/s за § секунд\",\n\t\t\t188: \"§% - § Кб/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\t108: \"Zvoľte si súbor\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t135: \"vypnuté\",\n\t\t\t142: \"dozadu/ďalej\",\n\t\t\t143: \"prehrať/pozastaviť\",\n\t\t\t144: \"dozadu/dopredu\",\n\t\t\t145: \"znizit/zvysit hlasitost\",\n\t\t\t146: \"stlmiť\",\n\t\t\t148: \"koniec\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\ttr: {\n\t\t\t102: \"Tamam\",\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\t108: \"Bir dosya seçin\",\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\t135: \"kapalı\",\n\t\t\t142: \"önceki/sonraki\",\n\t\t\t143: \"duraklatma/oynatma\",\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\t148: \"çıkış\",\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\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\t131: \"відео\",\n\t\t\t132: \"відеодоріжка\",\n\t\t\t133: \"звукова доріжка\",\n\t\t\t134: \"субтитри\",\n\t\t\t135: \"вимкнено\",\n\t\t\t142: \"попередній/наступний\",\n\t\t\t143: \"відтворити/призупинити\",\n\t\t\t144: \"назад/вперед\",\n\t\t\t145: \"зменшити/збільшити гучність\",\n\t\t\t146: \"вимкнути звук\",\n\t\t\t148: \"вийти\",\n\t\t\t149: \"Кінець\",\n\t\t\t150: \"Esc\",\n\t\t\t166: \"§ МБ\",\n\t\t\t184: \"§% - § кБ/s\"\n\t\t},\n\t\tzh: {\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\t131: \"视频\",\n\t\t\t132: \"视频轨道\",\n\t\t\t133: \"音频轨道\",\n\t\t\t134: \"字幕\",\n\t\t\t135: \"关\",\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\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 L/02/03/2020\n *\n * Copyright 2008-2020 | Fabrice Creuzot (luigifab) \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};\n};","/**\n * Created D/11/01/2015\n * Updated S/02/07/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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 = 0, 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:\\d+,/, '');\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// ignore le clic du swipe en mode slideshow\n\t\tif (apijs.dialog.swipe)\n\t\t\treturn false;\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.2) ? 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');\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\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\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\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\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');\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 D/12/04/2009\n * Updated S/02/07/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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.swipe = false;\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.t3 = null; // input file\n\tthis.a = null;\n\tthis.b = null;\n\tthis.c = 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, 'apijs.upload.actionChoose(this);')\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 width = document.querySelector('body').clientWidth;\n\n\t\tapijs.dialog[(width <= (apijs.dialog.has('photo', 'video') ? 900 : 460)) ? 'add' : 'remove']('mobile');\n\t\tapijs.dialog[(width <= 300) ? '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\t// https://github.com/hammerjs/hammer.js\n\t\t// https://github.com/john-doherty/swiped-events\n\t\tif (\n\t\t\tthat.has('slideshow') && !that.has('playing') &&\n\t\t\t!['OPTION', 'SELECT'].has(elem.nodeName) && ['DOMMouseScroll', 'mousewheel', 'swipeleft', 'swiperight', 'swipeup', 'swipedown', 'swiped-left', 'swiped-right', 'swiped-up', 'swiped-down'].has(ev.type)\n\t\t) {\n\t\t\telem = new Date().getTime() / 1000;\n\t\t\tif ((that.scroll < 1) || (elem > (that.scroll + 1))) {\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[(['swipeleft', 'swipeup', 'swiped-left', 'swiped-up'].has(ev.type) || 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.scrollHeight > elem.offsetHeight) && (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 - 1))) || (!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.scrollY) >= (elem.body.offsetHeight - 1))) ||\n\t\t\t(!brk && (elem.defaultView.scrollY <= 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, time;\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 ([32, 80].has(ev.keyCode)) {\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 ([38, 33].has(ev.keyCode)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\ttime = (ev.keyCode === 38) ? 10 : 60;\n\t\t\t\tif (([1, 2].has(elem.networkState)) && (elem.duration !== Infinity) && !isNaN(elem.duration)) {\n\t\t\t\t\tif (elem.currentTime > time)\n\t\t\t\t\t\telem.currentTime -= time;\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// bas | page bas\n\t\t\telse if ([40, 34].has(ev.keyCode)) {\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\ttime = (ev.keyCode === 40) ? 10 : 60;\n\t\t\t\t\tif (elem.currentTime < (elem.duration - time))\n\t\t\t\t\t\telem.currentTime += time;\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.onSlideshowSwipe = function (ev) {\n\n\t\tapijs.dialog.swipe = true;\n\t\tself.setTimeout(function () { apijs.dialog.swipe = false; }, 150);\n\n\t\tif (['swiperight', 'swipedown', 'swiped-right', 'swiped-down'].has(ev.type))\n\t\t\tapijs.slideshow.actionPrev();\n\t\telse // swipeleft swipeup swiped-left swiped-up\n\t\t\tapijs.slideshow.actionNext();\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\t// this.t1.appendChild(this.t0.firstChild.firstChild);\n\t\t\t// https://stackoverflow.com/a/24775765/2980105\n\t\t\tapijs.toArray(this.t0.firstChild.childNodes).forEach(function (node) {\n\t\t\t\tthis.t1.appendChild(node);\n\t\t\t}, this); // pour que ci-dessus this = this\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\t\t// copier coller\n\t\telse if (this.has('upload')) {\n\t\t\twindow.addEventListener('paste', apijs.upload.actionDrag);\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\tif (this.hammer) { // (depuis htmlBtnNavigation)\n\t\t\tthis.hammer.off('swiperight swipedown swipeleft swipeup', apijs.dialog.onSlideshowSwipe).destroy();\n\t\t\tdelete this.hammer;\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\telse {\n\t\t\t// copier coller\n\t\t\tif (this.has('upload'))\n\t\t\t\twindow.removeEventListener('paste', apijs.upload.actionDrag);\n\n\t\t\t// mémorise la hauteur du dialogue\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 et swipe)\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.t3 = null; // input file\n\t\tthis.a = null;\n\t\tthis.b = null;\n\t\tthis.c = 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\t\t\tthis.t1.setAttribute('onpaste', drag); // Firefox\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\t\telse {\n\t\t\tthis.t1.setAttribute('ondragstart', 'return false;');\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, '>').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, '>').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\tif (typeof Hammer == 'function') {\n\t\t\tthis.hammer = new Hammer(this.t2);\n\t\t\tthis.hammer.get('swipe').set({ direction: Hammer.DIRECTION_ALL });\n\t\t\tthis.hammer.on('swiperight swipedown swipeleft swipeup', apijs.dialog.onSlideshowSwipe);\n\t\t}\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 nofullplaying');\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, change) {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns upload');\n\n\t\t\tthis.t3 = document.createElement('input');\n\t\t\tthis.t3.setAttribute('type', 'file');\n\t\t\tthis.t3.setAttribute('name', isMultiple ? input + '[]' : input);\n\t\t\tthis.t3.setAttribute('id', 'apijsFile');\n\t\t\tif (isMultiple) this.t3.setAttribute('multiple', 'multiple');\n\t\t\tthis.t3.setAttribute('onchange', change);\n\n\t\tthis.a.appendChild(this.t3);\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', 'nofullplaying');\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\t// pas d'aide en mobile car pas de clavier\n\t\tif (('ontouchstart' in window) && (navigator.userAgent.toLowerCase().indexOf('mobi') > 0))\n\t\t\treturn this;\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 ? ['topk', 'bottom', 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 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 J/11/08/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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').substring(0, 5).replace('image', 'dialogPhoto').replace('video', 'dialogVideo').replace('audio', '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/24/06/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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.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\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\tvar elem = apijs.dialog.t3, stop = true;\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\t// drag and drop\n\t\telse if (ev.dataTransfer && ev.dataTransfer.files && (ev.dataTransfer.files.length > 0)) {\n\n\t\t\ttry {\n\t\t\t\telem.files = ev.dataTransfer.files; // Firefox 57+\n\t\t\t\tapijs.upload.actionChoose(elem);\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t\tapijs.html('.drag').remove();\n\t\t\t}\n\n\t\t\tapijs.dialog.remove('drag');\n\t\t}\n\t\t// copy and paste\n\t\telse if (ev.clipboardData && ev.clipboardData.files && (ev.clipboardData.files.length > 0)) {\n\n\t\t\t// Firefox 22+, Chrome 58+, Opera 45+, Safari 10.1+\n\t\t\ttry {\n\t\t\t\telem.files = ev.clipboardData.files; // Firefox 57+\n\t\t\t\tapijs.upload.actionChoose(elem, true);\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t\tapijs.html('.drag').remove();\n\t\t\t}\n\t\t}\n\t\telse if (ev.clipboardData) {\n\t\t\tstop = false;\n\t\t}\n\n\t\tif (stop) {\n\t\t\tev.stopPropagation();\n\t\t\tev.preventDefault();\n\t\t}\n\t};\n\n\tthis.actionChoose = function (elem, paste) {\n\n\t\tvar html = [], size = 0, btn = apijs.html('button.confirm');\n\n\t\tif (this.exts) {\n\n\t\t\t// 1048576 octet = 1 Mo\n\t\t\t// https://stackoverflow.com/a/24775765/2980105\n\t\t\tapijs.toArray(elem.files, (this.allmax > 0) ? 999 : 1).forEach(function (file, idx) {\n\n\t\t\t\tvar txt = file.size / 1048576;\n\t\t\t\ttxt = apijs.formatNumber((txt < 0.01) ? 0.01 : txt);\n\t\t\t\ttxt = ((paste || (this.allmax > 0)) ?\n\t\t\t\t\t'' + (paste ? (new Date()).toTimeString().substring(0, 8) : idx + 1) + '' : '') +\n\t\t\t\t\t'' + file.name + '' +\n\t\t\t\t\t'' + apijs.i18n.translate(166, txt) + '';\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\ttxt += '' + apijs.i18n.translate(167) + '';\n\t\t\t\t}\n\t\t\t\telse if (file.size > (this.onemax * 1048576)) {\n\t\t\t\t\ttxt += '' + apijs.i18n.translate(168) + '';\n\t\t\t\t}\n\t\t\t\telse if (file.size <= 0) {\n\t\t\t\t\ttxt += '' + apijs.i18n.translate(169) + '';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttxt += '';\n\t\t\t\t}\n\n\t\t\t\thtml.push('' + txt + '');\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('' + apijs.i18n.translate(166, apijs.formatNumber(size)) + '' + apijs.i18n.translate(168) + '');\n\t\t\t}\n\n\t\t\t// ok ou ko\n\t\t\tapijs.html('div.filenames').innerHTML = '' + html.join('') + '
    ';\n\t\t\tif (apijs.html('div.filenames .err')) {\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\t\t}\n\t\telse {\n\t\t\tbtn.setAttribute('disabled', 'disabled');\n\t\t}\n\t};\n\n\tthis.actionConfirm = function () {\n\n\t\tif (apijs.dialog.t3.files.length > 0) {\n\n\t\t\tvar form = new FormData(apijs.dialog.t2), xhr = new XMLHttpRequest();\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// 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","max","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","108","132","133","134","135","142","143","144","145","146","148","149","150","de","109","124","147","161","162","163","164","167","168","169","181","182","183","185","186","187","188","191","192","193","194","195","196","el","102","131","en","125","126","127","141","165","166","184","es","fr","hu","it","ja","nl","pl","pt","ptbr","ro","ru","sk","tr","uk","zh","toLowerCase","translate","word","translation","arguments","translateNode","createTextNode","apply","changeLang","select","video","stalled","subload","autoRun","xhr","removeAttribute","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","appendChild","htmlSvgPlayer","htmlSource","XMLHttpRequest","onreadystatechange","readyState","detail","from","childNodes","abort","status","nbv","nbt","responseText","trim","shift","setAttribute","htmlOption","htmlTrack","updateSelect","textTracks","send","css","total","adjust","textContent","innerHTML","tracks","videoTracks","auto","language","selectedIndex","Math","actionVideotrack","audioTracks","actionAudiotrack","hh","mm","ss","time","currentTime","duration","text","isNaN","Infinity","floor","style","width","buffer","buffered","node","remove","createElement","end","networkState","paused","swipe","ended","play","pause","offsetWidth","clientX","offsetLeft","offsetParent","volume","muted","actionPosition","target","enabled","blur","actionTexttrack","mode","actionVideo","src","actionFullscreen","res","d","c","b","a","onchange","webkitFullscreenEnabled","fullscreenEnabled","mozFullScreenEnabled","onload","lastIndexOf","track","label","klass","height","scroll","args","ft","ti","ns","media","t0","t2","t3","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","scrollHeight","offsetHeight","scrollTop","onScrollIframe","defaultView","innerHeight","scrollY","body","onKey","ctrlKey","keyCode","altKey","actionLast","actionFirst","actionPrev","actionNext","onFullscreen","onIframeLoad","contentWindow","parent","passive","currentSrc","visibility","hasAttribute","imageLoader","elems","onSlideshowSwipe","setTimeout","actionConfirm","isLocked","matchMedia","matches","concat","createDocumentFragment","focus","minHeight","old","firstChild","actionDrag","isAll","hammer","off","destroy","removeEventListener","parseFloat","getComputedStyle","submit","drag","click","Hammer","get","set","direction","DIRECTION_ALL","on","isMultiple","change","isDelayed","createElementNS","fileid","Image","isSlideshow","isVideo","navigator","userAgent","items","item","current","j","hoverload","$1","source","srcset","conts","prefix","number","parseInt","gallery","links","substring","styles","first","prev","next","last","hash","onemax","allmax","exts","sendFile","sendFiles","stop","dataTransfer","files","actionChoose","e","clipboardData","paste","size","btn","file","toTimeString","FormData","setRequestHeader","append","updateTitle","onError","onStart","round","percent","rate","totalTime","mins","lengthComputable","loaded","elapsedTime","ceil","updateProgress","rect"],"mappings":"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"} \ No newline at end of file +{"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 L/10/10/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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 = 693;\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, max) {\n\t\treturn Array.prototype.slice.call(data, 0, max);\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 S/03/07/2021\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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\t108: \"Vybrat soubor\",\n\t\t\t132: \"video stopa\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t135: \"vypnuto\",\n\t\t\t142: \"předchozí/následující\",\n\t\t\t143: \"přehrát/pozastavit\",\n\t\t\t144: \"zpět/vpřed\",\n\t\t\t145: \"snížit/zvýšit hlasitost\",\n\t\t\t146: \"ztlumit\",\n\t\t\t148: \"ukončit\",\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\t135: \"aus\",\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\tel: {\n\t\t\t102: \"Εντάξει\",\n\t\t\t103: \"Ακύρωση\",\n\t\t\t105: \"Κλείσιμο\",\n\t\t\t106: \"Προηγούμενο\",\n\t\t\t107: \"Επόμενο\",\n\t\t\t108: \"Επιλέξτε ένα αρχείο\",\n\t\t\t131: \"βίντεο\",\n\t\t\t132: \"κομμάτι βίντεο\",\n\t\t\t133: \"κομμάτι ήχου\",\n\t\t\t134: \"υπότιτλοι\",\n\t\t\t135: \"απενεργοποίηση\",\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\t149: \"Τέλος\",\n\t\t\t150: \"Esc\"\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\t135: \"desactivar\",\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\thu: {\n\t\t\t103: \"Mégsem\",\n\t\t\t104: \"Megerősít\",\n\t\t\t105: \"Bezár\",\n\t\t\t106: \"Előző\",\n\t\t\t107: \"Következő\",\n\t\t\t108: \"Válasszon fájlt\",\n\t\t\t131: \"videó\",\n\t\t\t132: \"videosáv\",\n\t\t\t133: \"hangsáv\",\n\t\t\t134: \"feliratok\",\n\t\t\t135: \"ki\",\n\t\t\t142: \"előző/következő\",\n\t\t\t143: \"lejátszás/szünet\",\n\t\t\t144: \"vissza/előre\",\n\t\t\t145: \"hangerő csökkentés/növelése\",\n\t\t\t146: \"némítás\",\n\t\t\t147: \"teljes képernyő\",\n\t\t\t148: \"kilépés\",\n\t\t\t149: \"Befejezés\",\n\t\t\t150: \"Esc\"\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\t135: \"inattivo\",\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\t108: \"ファイルを選択する\",\n\t\t\t131: \"ビデオ\",\n\t\t\t132: \"ビデオトラック\",\n\t\t\t133: \"オーディオトラック\",\n\t\t\t134: \"字幕\",\n\t\t\t135: \"オフ\",\n\t\t\t142: \"前へ/次へ\",\n\t\t\t143: \"再生/一時停止\",\n\t\t\t144: \"戻る/進む\",\n\t\t\t146: \"ミュート\",\n\t\t\t147: \"全画面表示\",\n\t\t\t148: \"終了\",\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\t108: \"Kies een bestand\",\n\t\t\t132: \"videospoor\",\n\t\t\t133: \"audiospoor\",\n\t\t\t134: \"ondertitels\",\n\t\t\t135: \"uit\",\n\t\t\t142: \"vorige/volgende\",\n\t\t\t143: \"afspelen/pauzeren\",\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\t148: \"afsluiten\",\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\t108: \"Wybierz plik\",\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\t135: \"wyłączone\",\n\t\t\t142: \"poprzedni/następny\",\n\t\t\t143: \"odtwarzaj/wstrzymaj\",\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\t148: \"zakończ\",\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: \"Escolha um ficheiro\",\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\t135: \"não\",\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\t108: \"Escolher um arquivo\",\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\t135: \"desligado\",\n\t\t\t142: \"anterior/próximo\",\n\t\t\t143: \"reproduzir/pausar\",\n\t\t\t144: \"retroceder/avançar\",\n\t\t\t146: \"sem áudio\",\n\t\t\t147: \"tela inteira\",\n\t\t\t148: \"fechar\",\n\t\t\t149: \"Final\"\n\t\t},\n\t\tro: {\n\t\t\t103: \"Anuleaza\",\n\t\t\t104: \"Confirmare\",\n\t\t\t105: \"Inchide\",\n\t\t\t106: \"Anteriorul\",\n\t\t\t107: \"Urmatorul\",\n\t\t\t108: \"Alege un fișier\",\n\t\t\t132: \"pistă video\",\n\t\t\t133: \"pistă audio\",\n\t\t\t134: \"subtitluri\",\n\t\t\t135: \"oprit\",\n\t\t\t142: \"anteriorul/urmatorul\",\n\t\t\t143: \"redare/pauză\",\n\t\t\t144: \"înapoi/înaintează\",\n\t\t\t145: \"scade/crește volumul\",\n\t\t\t146: \"mut\",\n\t\t\t147: \"pe tot ecranul\",\n\t\t\t148: \"ieșire\",\n\t\t\t149: \"Sfârșit\",\n\t\t\t150: \"Esc\"\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\t135: \"выключено\",\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: \"Максимальный размер: § Мб.\",\n\t\t\t166: \"§ Мб\",\n\t\t\t181: \"§% - § Кб/s - осталось § минут\",\n\t\t\t182: \"§% - § Кб/s - осталось § минут\",\n\t\t\t183: \"§% - § Кб/s - осталось § секунд\",\n\t\t\t184: \"§% - § Кб/s\",\n\t\t\t185: \"§% - § Кб/s за § минут\",\n\t\t\t186: \"§% - § Кб/s за § минут\",\n\t\t\t187: \"§% - § Кб/s за § секунд\",\n\t\t\t188: \"§% - § Кб/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\t108: \"Zvoľte si súbor\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t135: \"vypnuté\",\n\t\t\t142: \"dozadu/ďalej\",\n\t\t\t143: \"prehrať/pozastaviť\",\n\t\t\t144: \"dozadu/dopredu\",\n\t\t\t145: \"znizit/zvysit hlasitost\",\n\t\t\t146: \"stlmiť\",\n\t\t\t148: \"koniec\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\ttr: {\n\t\t\t102: \"Tamam\",\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\t108: \"Bir dosya seçin\",\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\t135: \"kapalı\",\n\t\t\t142: \"önceki/sonraki\",\n\t\t\t143: \"duraklatma/oynatma\",\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\t148: \"çıkış\",\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\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\t131: \"відео\",\n\t\t\t132: \"відеодоріжка\",\n\t\t\t133: \"звукова доріжка\",\n\t\t\t134: \"субтитри\",\n\t\t\t135: \"вимкнено\",\n\t\t\t142: \"попередній/наступний\",\n\t\t\t143: \"відтворити/призупинити\",\n\t\t\t144: \"назад/вперед\",\n\t\t\t145: \"зменшити/збільшити гучність\",\n\t\t\t146: \"вимкнути звук\",\n\t\t\t148: \"вийти\",\n\t\t\t149: \"Кінець\",\n\t\t\t150: \"Esc\",\n\t\t\t166: \"§ МБ\",\n\t\t\t184: \"§% - § кБ/s\"\n\t\t},\n\t\tzh: {\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\t131: \"视频\",\n\t\t\t132: \"视频轨道\",\n\t\t\t133: \"音频轨道\",\n\t\t\t134: \"字幕\",\n\t\t\t135: \"关\",\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\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 L/02/03/2020\n *\n * Copyright 2008-2020 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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};\n};","/**\n * Created D/11/01/2015\n * Updated S/02/07/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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 = 0, 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:\\d+,/, '');\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// ignore le clic du swipe en mode slideshow\n\t\tif (apijs.dialog.swipe)\n\t\t\treturn false;\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.2) ? 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');\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\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\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\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\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');\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 D/12/04/2009\n * Updated S/02/07/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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.swipe = false;\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.t3 = null; // input file\n\tthis.a = null;\n\tthis.b = null;\n\tthis.c = 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, 'apijs.upload.actionChoose(this);')\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 width = document.querySelector('body').clientWidth;\n\n\t\tapijs.dialog[(width <= (apijs.dialog.has('photo', 'video') ? 900 : 460)) ? 'add' : 'remove']('mobile');\n\t\tapijs.dialog[(width <= 300) ? '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\t// https://github.com/hammerjs/hammer.js\n\t\t// https://github.com/john-doherty/swiped-events\n\t\tif (\n\t\t\tthat.has('slideshow') && !that.has('playing') &&\n\t\t\t!['OPTION', 'SELECT'].has(elem.nodeName) && ['DOMMouseScroll', 'mousewheel', 'swipeleft', 'swiperight', 'swipeup', 'swipedown', 'swiped-left', 'swiped-right', 'swiped-up', 'swiped-down'].has(ev.type)\n\t\t) {\n\t\t\telem = new Date().getTime() / 1000;\n\t\t\tif ((that.scroll < 1) || (elem > (that.scroll + 1))) {\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[(['swipeleft', 'swipeup', 'swiped-left', 'swiped-up'].has(ev.type) || 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.scrollHeight > elem.offsetHeight) && (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 - 1))) || (!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.scrollY) >= (elem.body.offsetHeight - 1))) ||\n\t\t\t(!brk && (elem.defaultView.scrollY <= 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, time;\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 ([32, 80].has(ev.keyCode)) {\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 ([38, 33].has(ev.keyCode)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\ttime = (ev.keyCode === 38) ? 10 : 60;\n\t\t\t\tif (([1, 2].has(elem.networkState)) && (elem.duration !== Infinity) && !isNaN(elem.duration)) {\n\t\t\t\t\tif (elem.currentTime > time)\n\t\t\t\t\t\telem.currentTime -= time;\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// bas | page bas\n\t\t\telse if ([40, 34].has(ev.keyCode)) {\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\ttime = (ev.keyCode === 40) ? 10 : 60;\n\t\t\t\t\tif (elem.currentTime < (elem.duration - time))\n\t\t\t\t\t\telem.currentTime += time;\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.onSlideshowSwipe = function (ev) {\n\n\t\tapijs.dialog.swipe = true;\n\t\tself.setTimeout(function () { apijs.dialog.swipe = false; }, 150);\n\n\t\tif (['swiperight', 'swipedown', 'swiped-right', 'swiped-down'].has(ev.type))\n\t\t\tapijs.slideshow.actionPrev();\n\t\telse // swipeleft swipeup swiped-left swiped-up\n\t\t\tapijs.slideshow.actionNext();\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\t// this.t1.appendChild(this.t0.firstChild.firstChild);\n\t\t\t// https://stackoverflow.com/a/24775765/2980105\n\t\t\tapijs.toArray(this.t0.firstChild.childNodes).forEach(function (node) {\n\t\t\t\tthis.t1.appendChild(node);\n\t\t\t}, this); // pour que ci-dessus this = this\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\t\t// copier coller\n\t\telse if (this.has('upload')) {\n\t\t\twindow.addEventListener('paste', apijs.upload.actionDrag);\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\tif (this.hammer) { // (depuis htmlBtnNavigation)\n\t\t\tthis.hammer.off('swiperight swipedown swipeleft swipeup', apijs.dialog.onSlideshowSwipe).destroy();\n\t\t\tdelete this.hammer;\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\telse {\n\t\t\t// copier coller\n\t\t\tif (this.has('upload'))\n\t\t\t\twindow.removeEventListener('paste', apijs.upload.actionDrag);\n\n\t\t\t// mémorise la hauteur du dialogue\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 et swipe)\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.t3 = null; // input file\n\t\tthis.a = null;\n\t\tthis.b = null;\n\t\tthis.c = 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\t\t\tthis.t1.setAttribute('onpaste', drag); // Firefox\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\t\telse {\n\t\t\tthis.t1.setAttribute('ondragstart', 'return false;');\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, '>').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, '>').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\tif (typeof Hammer == 'function') {\n\t\t\tthis.hammer = new Hammer(this.t2);\n\t\t\tthis.hammer.get('swipe').set({ direction: Hammer.DIRECTION_ALL });\n\t\t\tthis.hammer.on('swiperight swipedown swipeleft swipeup', apijs.dialog.onSlideshowSwipe);\n\t\t}\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 nofullplaying');\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, change) {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns upload');\n\n\t\t\tthis.t3 = document.createElement('input');\n\t\t\tthis.t3.setAttribute('type', 'file');\n\t\t\tthis.t3.setAttribute('name', isMultiple ? input + '[]' : input);\n\t\t\tthis.t3.setAttribute('id', 'apijsFile');\n\t\t\tif (isMultiple) this.t3.setAttribute('multiple', 'multiple');\n\t\t\tthis.t3.setAttribute('onchange', change);\n\n\t\tthis.a.appendChild(this.t3);\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', 'nofullplaying');\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\t// pas d'aide en mobile car pas de clavier\n\t\tif (('ontouchstart' in window) && (navigator.userAgent.toLowerCase().indexOf('mobi') > 0))\n\t\t\treturn this;\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 ? ['topk', 'bottom', 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 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 J/11/08/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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').substring(0, 5).replace('image', 'dialogPhoto').replace('video', 'dialogVideo').replace('audio', '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/24/06/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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.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\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\tvar elem = apijs.dialog.t3, stop = true;\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\t// drag and drop\n\t\telse if (ev.dataTransfer && ev.dataTransfer.files && (ev.dataTransfer.files.length > 0)) {\n\n\t\t\ttry {\n\t\t\t\telem.files = ev.dataTransfer.files; // Firefox 57+\n\t\t\t\tapijs.upload.actionChoose(elem);\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t\tapijs.html('.drag').remove();\n\t\t\t}\n\n\t\t\tapijs.dialog.remove('drag');\n\t\t}\n\t\t// copy and paste\n\t\telse if (ev.clipboardData && ev.clipboardData.files && (ev.clipboardData.files.length > 0)) {\n\n\t\t\t// Firefox 22+, Chrome 58+, Opera 45+, Safari 10.1+\n\t\t\ttry {\n\t\t\t\telem.files = ev.clipboardData.files; // Firefox 57+\n\t\t\t\tapijs.upload.actionChoose(elem, true);\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t\tapijs.html('.drag').remove();\n\t\t\t}\n\t\t}\n\t\telse if (ev.clipboardData) {\n\t\t\tstop = false;\n\t\t}\n\n\t\tif (stop) {\n\t\t\tev.stopPropagation();\n\t\t\tev.preventDefault();\n\t\t}\n\t};\n\n\tthis.actionChoose = function (elem, paste) {\n\n\t\tvar html = [], size = 0, btn = apijs.html('button.confirm');\n\n\t\tif (this.exts) {\n\n\t\t\t// 1048576 octet = 1 Mo\n\t\t\t// https://stackoverflow.com/a/24775765/2980105\n\t\t\tapijs.toArray(elem.files, (this.allmax > 0) ? 999 : 1).forEach(function (file, idx) {\n\n\t\t\t\tvar txt = file.size / 1048576;\n\t\t\t\ttxt = apijs.formatNumber((txt < 0.01) ? 0.01 : txt);\n\t\t\t\ttxt = ((paste || (this.allmax > 0)) ?\n\t\t\t\t\t'' + (paste ? (new Date()).toTimeString().substring(0, 8) : idx + 1) + '' : '') +\n\t\t\t\t\t'' + file.name + '' +\n\t\t\t\t\t'' + apijs.i18n.translate(166, txt) + '';\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\ttxt += '' + apijs.i18n.translate(167) + '';\n\t\t\t\t}\n\t\t\t\telse if (file.size > (this.onemax * 1048576)) {\n\t\t\t\t\ttxt += '' + apijs.i18n.translate(168) + '';\n\t\t\t\t}\n\t\t\t\telse if (file.size <= 0) {\n\t\t\t\t\ttxt += '' + apijs.i18n.translate(169) + '';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttxt += '';\n\t\t\t\t}\n\n\t\t\t\thtml.push('' + txt + '');\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('' + apijs.i18n.translate(166, apijs.formatNumber(size)) + '' + apijs.i18n.translate(168) + '');\n\t\t\t}\n\n\t\t\t// ok ou ko\n\t\t\tapijs.html('div.filenames').innerHTML = '' + html.join('') + '
    ';\n\t\t\tif (apijs.html('div.filenames .err')) {\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\t\t}\n\t\telse {\n\t\t\tbtn.setAttribute('disabled', 'disabled');\n\t\t}\n\t};\n\n\tthis.actionConfirm = function () {\n\n\t\tif (apijs.dialog.t3.files.length > 0) {\n\n\t\t\tvar form = new FormData(apijs.dialog.t2), xhr = new XMLHttpRequest();\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// 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","max","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","108","132","133","134","135","142","143","144","145","146","148","149","150","de","109","124","147","161","162","163","164","167","168","169","181","182","183","185","186","187","188","191","192","193","194","195","196","el","102","131","en","125","126","127","141","165","166","184","es","fr","hu","it","ja","nl","pl","pt","ptbr","ro","ru","sk","tr","uk","zh","toLowerCase","translate","word","translation","arguments","translateNode","createTextNode","apply","changeLang","select","video","stalled","subload","autoRun","xhr","removeAttribute","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","appendChild","htmlSvgPlayer","htmlSource","XMLHttpRequest","onreadystatechange","readyState","detail","from","childNodes","abort","status","nbv","nbt","responseText","trim","shift","setAttribute","htmlOption","htmlTrack","updateSelect","textTracks","send","css","total","adjust","textContent","innerHTML","tracks","videoTracks","auto","language","selectedIndex","Math","actionVideotrack","audioTracks","actionAudiotrack","hh","mm","ss","time","currentTime","duration","text","isNaN","Infinity","floor","style","width","buffer","buffered","node","remove","createElement","end","networkState","paused","swipe","ended","play","pause","offsetWidth","clientX","offsetLeft","offsetParent","volume","muted","actionPosition","target","enabled","blur","actionTexttrack","mode","actionVideo","src","actionFullscreen","res","d","c","b","a","onchange","webkitFullscreenEnabled","fullscreenEnabled","mozFullScreenEnabled","onload","lastIndexOf","track","label","klass","height","scroll","args","ft","ti","ns","media","t0","t2","t3","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","scrollHeight","offsetHeight","scrollTop","onScrollIframe","defaultView","innerHeight","scrollY","body","onKey","ctrlKey","keyCode","altKey","actionLast","actionFirst","actionPrev","actionNext","onFullscreen","onIframeLoad","contentWindow","parent","passive","currentSrc","visibility","hasAttribute","imageLoader","elems","onSlideshowSwipe","setTimeout","actionConfirm","isLocked","matchMedia","matches","concat","createDocumentFragment","focus","minHeight","old","firstChild","actionDrag","isAll","hammer","off","destroy","removeEventListener","parseFloat","getComputedStyle","submit","drag","click","Hammer","get","set","direction","DIRECTION_ALL","on","isMultiple","change","isDelayed","createElementNS","fileid","Image","isSlideshow","isVideo","navigator","userAgent","items","item","current","j","hoverload","$1","source","srcset","conts","prefix","number","parseInt","gallery","links","substring","styles","first","prev","next","last","hash","onemax","allmax","exts","sendFile","sendFiles","stop","dataTransfer","files","actionChoose","e","clipboardData","paste","size","btn","file","toTimeString","FormData","setRequestHeader","append","updateTitle","onError","onStart","round","percent","rate","totalTime","mins","lengthComputable","loaded","elapsedTime","ceil","updateProgress","rect"],"mappings":"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"} \ No newline at end of file diff --git a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-openmage.css b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-openmage.css index e78a49b..d7f5af0 100644 --- a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-openmage.css +++ b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-openmage.css @@ -1,9 +1,9 @@ /** * Created D/15/12/2013 - * Updated V/29/01/2021 + * Updated V/28/10/2022 * - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL) as published @@ -27,7 +27,7 @@ #apijsBox .left, #apijsBox .right, #apijsBox button :before { float:inherit !important; } @font-face { - /* apijsFontelloOpenMage sinon erreur 404, voir https://stackoverflow.com/a/35034674 */ + /* apijsFontelloOpenMage to avoid 404, https://stackoverflow.com/a/35034674 */ src:url("../../../fonts/luigifab/apijs/fontello.woff2") format("woff2"), url("../../../fonts/luigifab/apijs/fontello.woff") format("woff"); font-family:apijsFontelloOpenMage; font-weight:400; font-style:normal; } diff --git a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-openmage.min.css b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-openmage.min.css index dedbf45..c542fa9 100644 --- a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-openmage.min.css +++ b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-openmage.min.css @@ -1,6 +1,6 @@ /*! - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/openmage/apijs + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/openmage-apijs * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL). */ diff --git a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-openmage.min.css.map b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-openmage.min.css.map index eb1a4c2..8879a36 100644 --- a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-openmage.min.css.map +++ b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-openmage.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["65028","apijs-openmage.css"],"names":[],"mappings":"AAAA;;;;;;ACmBA,UAAY,KAAK,OAAO,WACxB,gBAAkB,YAAY,cAAmB,MAAM,eACvD,sBAAuB,sBAAwB,iBAAiB,6CAEhE,iBAAmB,YAAY,WAAY,YAAY,IAAK,iBAAiB,KAC7E,6BAA8B,6BAA+B,QAAQ,EAAG,WAAW,IAEnF,gBAAiB,iBAAkB,yBAA2B,MAAM,kBAEpE,WAEC,IAAI,oDAAoD,eAAe,CAAE,mDAAmD,eAC5H,YAAY,sBAAuB,YAAY,IAAK,WAAW,OAG3C,sCAArB,oBAA4D,qBAAsB,+BACjF,YAAY,sBAIb,kDAAoD,QAAQ,KAAM,IAAI,KAAO,MAAM,KAAO,iBAAiB,IAC3G,oDAAsD,MAAM,KAAO,gBAAgB,UACnF,qDAAuD,QAAQ","sourcesContent":["/*!\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \n * https://www.luigifab.fr/openmage/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 V/29/01/2021\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \n * https://www.luigifab.fr/openmage/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#apijsBox { font:0.8rem sans-serif; }\n#apijsBox.error { font-weight:normal !important; color:black !important; }\n#apijsBox.photo.error, #apijsBox.video.error { background-image:url(\"../../../images/luigifab/apijs/tv.gif\"); }\n\n#apijsBox button { font-family:sans-serif; font-weight:400; background-image:none; }\n#apijsBox button.cancel span, #apijsBox button.delete span { padding:0; background:none; }\n\n#apijsBox .left, #apijsBox .right, #apijsBox button :before { float:inherit !important; }\n\n@font-face {\n\t/* apijsFontelloOpenMage sinon erreur 404, voir https://stackoverflow.com/a/35034674 */\n\tsrc:url(\"../../../fonts/luigifab/apijs/fontello.woff2\") format(\"woff2\"), url(\"../../../fonts/luigifab/apijs/fontello.woff\") format(\"woff\");\n\tfont-family:apijsFontelloOpenMage; font-weight:400; font-style:normal;\n}\n\n#apijsBox h1:before, #apijsBox div.btns button span:before, #apijsBox kbd:before, #apijsBox span.player span.fnt {\n\tfont-family:apijsFontelloOpenMage;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& navigateur &&& */\ndiv.notification-global.notification-global-apijs { padding:0.5em 1em 0.4em; color:white; background-color:red; }\ndiv.notification-global.notification-global-apijs a { color:white; text-decoration:underline; }\ndiv.notification-global.notification-global-apijs em { display:block; }"]} \ No newline at end of file +{"version":3,"sources":["65028","apijs-openmage.css"],"names":[],"mappings":"AAAA;;;;;;ACmBA,UAAY,KAAK,OAAO,WACxB,gBAAkB,YAAY,cAAmB,MAAM,eACvD,sBAAuB,sBAAwB,iBAAiB,6CAEhE,iBAAmB,YAAY,WAAY,YAAY,IAAK,iBAAiB,KAC7E,6BAA8B,6BAA+B,QAAQ,EAAG,WAAW,IAEnF,gBAAiB,iBAAkB,yBAA2B,MAAM,kBAEpE,WAEC,IAAI,oDAAoD,eAAe,CAAE,mDAAmD,eAC5H,YAAY,sBAAuB,YAAY,IAAK,WAAW,OAG3C,sCAArB,oBAA4D,qBAAsB,+BACjF,YAAY,sBAIb,kDAAoD,QAAQ,KAAM,IAAI,KAAO,MAAM,KAAO,iBAAiB,IAC3G,oDAAsD,MAAM,KAAO,gBAAgB,UACnF,qDAAuD,QAAQ","sourcesContent":["/*!\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/openmage-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 V/28/10/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/openmage-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#apijsBox { font:0.8rem sans-serif; }\n#apijsBox.error { font-weight:normal !important; color:black !important; }\n#apijsBox.photo.error, #apijsBox.video.error { background-image:url(\"../../../images/luigifab/apijs/tv.gif\"); }\n\n#apijsBox button { font-family:sans-serif; font-weight:400; background-image:none; }\n#apijsBox button.cancel span, #apijsBox button.delete span { padding:0; background:none; }\n\n#apijsBox .left, #apijsBox .right, #apijsBox button :before { float:inherit !important; }\n\n@font-face {\n\t/* apijsFontelloOpenMage to avoid 404, https://stackoverflow.com/a/35034674 */\n\tsrc:url(\"../../../fonts/luigifab/apijs/fontello.woff2\") format(\"woff2\"), url(\"../../../fonts/luigifab/apijs/fontello.woff\") format(\"woff\");\n\tfont-family:apijsFontelloOpenMage; font-weight:400; font-style:normal;\n}\n\n#apijsBox h1:before, #apijsBox div.btns button span:before, #apijsBox kbd:before, #apijsBox span.player span.fnt {\n\tfont-family:apijsFontelloOpenMage;\n}\n\n/* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& navigateur &&& */\ndiv.notification-global.notification-global-apijs { padding:0.5em 1em 0.4em; color:white; background-color:red; }\ndiv.notification-global.notification-global-apijs a { color:white; text-decoration:underline; }\ndiv.notification-global.notification-global-apijs em { display:block; }"]} \ No newline at end of file diff --git a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-print.min.css b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-print.min.css index d36119b..110d450 100644 --- a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-print.min.css +++ b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-print.min.css @@ -1,6 +1,6 @@ /*! - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/apijs - 6.9.2 + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/apijs - 6.9.3 * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL). */ diff --git a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-print.min.css.map b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-print.min.css.map index 42a3cd5..9506d53 100644 --- a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-print.min.css.map +++ b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-print.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["349df","../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-2022 | Fabrice Creuzot (luigifab) \n * https://www.luigifab.fr/apijs - 6.9.2\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-2022 | Fabrice Creuzot (luigifab) \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; }"]} \ No newline at end of file +{"version":3,"sources":["349df","../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-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/apijs - 6.9.3\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-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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; }"]} \ No newline at end of file diff --git a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen-rtl.min.css b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen-rtl.min.css index 99f5fc0..4ab9002 100644 --- a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen-rtl.min.css +++ b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen-rtl.min.css @@ -1,6 +1,6 @@ /*! - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/apijs - 6.9.2 + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/apijs - 6.9.3 * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL). */ diff --git a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen-rtl.min.css.map b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen-rtl.min.css.map index 1e3895f..961fdc6 100644 --- a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen-rtl.min.css.map +++ b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen-rtl.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["dceca","../code/apijs/src/styles/album-rtl.css","../code/apijs/src/styles/dialog-rtl.css"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \n * https://www.luigifab.fr/apijs - 6.9.2\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-2022 | Fabrice Creuzot (luigifab) \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 S/02/07/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n#apijsDialog button:disabled { cursor:default; }\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\tuser-select:none; -moz-user-select:none; -ms-user-select:none; -webkit-user-select:none;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.fullscreen .nofullscreen { display:none !important; }\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; 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; 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; -moz-user-select:text; -ms-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\n#apijsBox iframe { display:block; width:100%; border:0; }\n#apijsBox iframe.loading { pointer-events:none; }\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; vertical-align:bottom; }\n#apijsBox div.btns.upload td.size { white-space:nowrap; 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:not(:disabled), #apijsBox div.btns button:active:not(:disabled),\n#apijsBox div.btns button:focus:not(:disabled) { 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 { position:relative; 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#apijsBox dl.media dt div.apijsplayer { position:absolute; left:0; bottom:0; right:0; }\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;\n}\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:5rem; bottom:5rem; 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; padding:0 2em 0 20%; }\n#apijsBox div.navigation button.prev span { transform:rotate(45deg); -webkit-transform:rotate(45deg); }\n#apijsBox div.navigation button.next { left:0; padding:0 20% 0 2em; }\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:#777;\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); } }"]} \ No newline at end of file +{"version":3,"sources":["dceca","../code/apijs/src/styles/album-rtl.css","../code/apijs/src/styles/dialog-rtl.css"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/apijs - 6.9.3\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-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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 S/02/07/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n#apijsDialog button:disabled { cursor:default; }\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\tuser-select:none; -moz-user-select:none; -ms-user-select:none; -webkit-user-select:none;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.fullscreen .nofullscreen { display:none !important; }\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; 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; 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; -moz-user-select:text; -ms-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\n#apijsBox iframe { display:block; width:100%; border:0; }\n#apijsBox iframe.loading { pointer-events:none; }\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; vertical-align:bottom; }\n#apijsBox div.btns.upload td.size { white-space:nowrap; 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:not(:disabled), #apijsBox div.btns button:active:not(:disabled),\n#apijsBox div.btns button:focus:not(:disabled) { 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 { position:relative; 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#apijsBox dl.media dt div.apijsplayer { position:absolute; left:0; bottom:0; right:0; }\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;\n}\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:5rem; bottom:5rem; 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; padding:0 2em 0 20%; }\n#apijsBox div.navigation button.prev span { transform:rotate(45deg); -webkit-transform:rotate(45deg); }\n#apijsBox div.navigation button.next { left:0; padding:0 20% 0 2em; }\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:#777;\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); } }"]} \ No newline at end of file diff --git a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen.min.css b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen.min.css index 816627e..0ff98ec 100644 --- a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen.min.css +++ b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen.min.css @@ -1,6 +1,6 @@ /*! - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/apijs - 6.9.2 + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/apijs - 6.9.3 * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL). */ diff --git a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen.min.css.map b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen.min.css.map index a21944d..ca21b33 100644 --- a/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen.min.css.map +++ b/src/skin/frontend/base/default/css/luigifab/apijs/apijs-screen.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["cc8bb","../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-2022 | Fabrice Creuzot (luigifab) \n * https://www.luigifab.fr/apijs - 6.9.2\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-2022 | Fabrice Creuzot (luigifab) \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 S/02/07/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n#apijsDialog button:disabled { cursor:default; }\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\tuser-select:none; -moz-user-select:none; -ms-user-select:none; -webkit-user-select:none;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.fullscreen .nofullscreen { display:none !important; }\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; 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; 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; -moz-user-select:text; -ms-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\n#apijsBox iframe { display:block; width:100%; border:0; }\n#apijsBox iframe.loading { pointer-events:none; }\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; vertical-align:bottom; }\n#apijsBox div.btns.upload td.size { white-space:nowrap; 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:not(:disabled), #apijsBox div.btns button:active:not(:disabled),\n#apijsBox div.btns button:focus:not(:disabled) { 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 { position:relative; 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#apijsBox dl.media dt div.apijsplayer { position:absolute; right:0; bottom:0; left:0; }\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;\n}\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:5rem; bottom:5rem; 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; padding:0 20% 0 2em; }\n#apijsBox div.navigation button.prev span { transform:rotate(-45deg); -webkit-transform:rotate(-45deg); }\n#apijsBox div.navigation button.next { right:0; padding:0 2em 0 20%; }\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:#777;\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 S/02/07/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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; }\ndiv.apijsvideoplayer.fullscreen.playing video { cursor:none !important; }\n\ndiv.apijsvideoplayer.fullscreen .nofullscreen { display:none !important; }\n\ndiv.apijsvideoplayer.playing.fullscreen .nofullplaying,\ndiv.apijsvideoplayer.fullscreen.playing .noplaying,\ndiv.apijsvideoplayer.playing .noplaying { transition:opacity 0.5s; opacity:0; }\n\ndiv.apijsvideoplayer.playing.fullscreen .nofullplaying:hover,\ndiv.apijsvideoplayer.fullscreen.playing .noplaying:hover,\ndiv.apijsvideoplayer.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:-9vh; padding-top:9vh; 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\toverscroll-behavior: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; }*/"]} \ No newline at end of file +{"version":3,"sources":["cc8bb","../code/apijs/src/styles/album.css","../code/apijs/src/styles/dialog.css","../code/apijs/src/styles/player.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,EAE5C,oBAAqB,mBAAqB,OAAO,QACjD,6BAA+B,OAAO,QAEtC,aACC,SAAS,MAAO,IAAI,EAAG,MAAM,EAAG,OAAO,EAAG,KAAK,EAAG,MAAM,KAAM,OAAO,KAAM,WAAW,OAAQ,UAAU,IAAK,QAAQ,MACrH,YAAY,KAAM,iBAAiB,KAAM,gBAAgB,KAAM,oBAAoB,KACnF,WAAW,iBAAiB,GAAI,CAAE,QAAQ,KAAO,QAAQ,EAG1D,mBAAqB,iBAAiB,gBAAqB,QAAQ,EACnE,sCAAwC,QAAQ,eACH,qBAA7C,sBAAuB,qBAA6C,OAAO,SAC3E,oBAAqB,sBAAwB,WAAW,eAExD,UACC,SAAS,SAAU,IAAI,IAAK,QAAQ,aAAc,QAAQ,KAAM,KAAM,MAAO,MAAM,MAAO,UAAU,MAAO,WAAW,IAAK,SAAS,OACpI,WAAW,KAAM,MAAM,KAAO,cAAc,KAAO,iBAAiB,KAAO,WAAW,EAAE,EAAE,MAAM,KAGjG,gBAAiB,gBAChB,QAAQ,KAAM,eAAe,OAC7B,SAAS,SAAU,IAAI,EAAG,MAAM,EAAG,OAAO,EAAG,KAAK,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,IAEvD,yCAA2C,SAAS,SAAU,IAAI,MAAO,MAAM,KAAO,KAAK,KAAO,MAAM,KAAM,WAAW,QACzH,qCAAuC,QAAQ,EAAE,IAGjD,yBACC,SAAS,SAAU,IAAI,IAAK,MAAM,IAAK,OAAO,IAAK,KAAK,IAAK,QAAQ,GACrE,OAAQ,IAAI,OAAO,KAGpB,oBAAsB,SAAS,SAAU,MAAM,EAAG,OAAO,EAAG,OAAO,MAAO,UAAU,MAAO,MAAM,KAGjG,qBAAuB,YAAY,KAAM,iBAAiB,KAAM,gBAAgB,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,IAEnC,iBAAmB,QAAQ,MAAO,MAAM,KAAM,OAAO,EACrD,yBAA2B,eAAe,KAE1C,iCACC,QAAQ,eACR,kBAAkB,aAAa,GAAG,OAAO,GAAG,SAAU,UAAU,aAAa,GAAG,OAAO,GAAG,SAG3F,6BAA+B,SAAS,SAAU,MAAM,IAAK,OAAO,KAGpE,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,KAAK,EAAG,QAAQ,MACpD,WAAW,QAAQ,mFAAwF,gBAAgB,KAAK,KAGjI,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,MAAM,MAAO,OAAO,MACnC,UAAU,UAAY,kBAAkB,UAGzC,2BAA4B,2BAA6B,MAAM,EAAG,OAAO,iBAAkB,KAAK,EAAG,UAAU,KAAM,kBAAkB,KACxG,0BAA7B,4BAAyD,MAAM,EAAG,OAAO,iBAAkB,KAAK,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,MAAM,KAAO,OAAO,KAC5D,0BAA4B,SAAS,SAAU,MAAM,QAAS,KAAK,QACnE,gCAAkC,QAAQ,KAC1C,wCAA0C,WAAW,KAAM,WAAW,KACtE,gCAAkC,eAAe,EACjD,gCAAoC,aAAa,KACjD,gCAAoC,UAAU,MAAQ,MAAM,QAAS,eAAe,OACpF,kCAAoC,YAAY,OAAQ,MAAM,QAC9D,iCAAoC,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,KAAM,OAAO,EAAE,KACxD,iCAAmC,QAAQ,aAAc,OAAO,KAAM,EAEtB,gDAChD,+CADA,+CACiD,aAAa,KAAM,iBAAiB,QACrF,4CAA8C,kBAAkB,WAAW,GAAG,SAAU,UAAU,WAAW,GAAG,SAGhH,mBAAqB,QAAQ,KAAM,eAAe,eAAgB,KAAK,EAAG,SAAS,OAAQ,MAAM,KAEjG,sBAAwB,SAAS,SAAU,QAAQ,KAAM,eAAe,OAAQ,KAAK,EAAG,SAAS,OACzC,6BAAxD,0BAA2B,4BAA4D,KAAK,EAAE,EAAE,KAAM,OAAO,KAAM,WAAW,OAC9H,0BAA4B,gBAAgB,gBAAiB,gBAAgB,iBAAkB,WAAW,WAC1G,4BAA8B,QAAQ,EAAG,OAAO,QAChD,sCAAwC,SAAS,SAAU,MAAM,EAAG,OAAO,EAAG,KAAK,EAEnF,sBAAwB,YAAY,OAAQ,UAAU,MAAQ,iBAAiB,KAC/E,2BAA6B,OAAO,EAAE,KAAO,UAAU,KAAO,WAAW,OAGzE,oBAAsB,SAAS,SAAU,IAAI,KAAM,MAAM,KAAM,QAAQ,EAAE,EAAE,IAAI,IAAK,QAAQ,MAE5F,2BACC,QAAQ,EAAE,MAAO,YAAY,MAC7B,UAAU,KAAO,YAAY,IAAK,eAAe,UACjD,MAAM,KAAO,OAAO,IAAI,MAAM,KAAO,cAAc,EAAE,EAAE,EAAE,KAAO,iBAAiB,KAIlF,gCAAkC,SAAS,SAAU,IAAI,KAAM,OAAO,KAAM,iBAAiB,YAAa,QAAQ,GAC3E,uCAAwC,sCAA/E,sCAAuH,QAAQ,EAC/H,yCAA2C,QAAQ,EAAG,OAAO,QAE7D,qCACC,QAAQ,MAAO,MAAM,IAAK,OAAO,IACjC,WAAW,IAAI,MAAM,KAAO,YAAY,IAAI,MAAM,KAGnD,qCAAuC,KAAK,EAAG,QAAQ,EAAE,IAAI,EAAE,IAC/D,0CAA4C,UAAU,eAAgB,kBAAkB,eACxF,qCAAuC,MAAM,EAAG,QAAQ,EAAE,IAAI,EAAE,IAChE,0CAA4C,UAAU,gBAAiB,kBAAkB,gBAGzF,iBACC,QAAQ,KAAM,gBAAgB,OAAQ,OAAO,EAAG,WAAW,OAC3D,UAAU,KAAO,YAAY,OAAQ,WAAW,KAAM,iBAAiB,KAGxE,oBAAsB,OAAO,EAAE,KAAO,YAAY,OAClD,mCAAqC,aAAa,KAElD,cACC,aAAa,KAAO,QAAQ,EAAE,MAC9B,UAAU,QAAS,YAAY,IAAK,eAAe,UAAW,OAAO,EAAG,iBAAiB,KAI1F,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,KAAM,MAAM,MAAO,WAAW,OAAQ,UAAU,MAC5E,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,KAC9C,6CAAgD,QAAQ,eACxD,8CAAgD,QAAQ,eACxD,6CAAgD,QAAQ,eAExD,2BAA8B,QAAQ,QAAS,QAAQ,aAAc,UAAU,eAAgB,kBAAkB,eACjH,4BAA8B,QAAQ,QACtC,0BAA8B,QAAQ,QACtC,2BAA8B,QAAQ,QACtC,0BAA8B,QAAQ,QACtC,0BAA8B,QAAQ,QACtC,2BAA8B,QAAQ,QAGtC,yBAAoC,GAAK,MAAM,IAAO,IAAM,UAAU,kBAAsB,KAAO,MAAM,KACzG,iCAAoC,GAAK,MAAM,IAAO,IAAM,KAAK,IAAO,KAAO,MAAM,KACrF,sBAAmC,IAAM,aAAa,MACtD,8BAAmC,IAAM,aAAa,MACtD,wBAAmC,IAAM,MAAM,YAAe,KAAO,QAAQ,gBAC7E,gCAAmC,IAAM,MAAM,YAAe,KAAO,QAAQ,gBCpN7E,qBAAuB,iBAAiB,KACxC,gCAAkC,OAAO,YAAc,QAAQ,YAAc,OAAO,gBACpF,8CAAgD,OAAO,eAEvD,8CAAgD,QAAQ,eAGxD,mDACA,wCAFA,uDAE0C,WAAW,QAAQ,IAAM,QAAQ,EAG3E,yDACA,8CAFA,6DAEgD,QAAQ,YAExD,gCAAkC,SAAS,QAC3C,uCAAyC,KAAK,EAAG,MAAM,EAAG,MAAM,KAEhE,kBAAoB,QAAQ,MAAO,OAAO,KAAM,MAAM,KAAM,OAAO,8BAAgC,OAAO,QAG1G,kBAAoB,OAAO,EAAG,QAAQ,EAEtC,gBACC,SAAS,SAAU,QAAQ,KAAM,YAAY,OAAQ,QAAQ,MAC7D,WAAW,KAAM,YAAY,IAAK,OAAO,OAAQ,YAAY,OAC7D,UAAU,MAAQ,MAAM,KAAO,WAAW,OAAQ,UAAU,IAG7D,qBAAuB,QAAQ,EAAE,KAAO,OAAO,OAAQ,iBAAiB,QACxE,yBAA2B,QAAQ,EAAG,UAAU,MAAO,OAAO,QAC9D,yBAA2B,QAAQ,KAAM,YAAY,OAAQ,OAAO,KACpE,yBAA2B,KAAK,EAChC,yBAA2B,MAAM,IACjC,sBAAwB,SAAS,SAAU,OAAO,OAAQ,QAAQ,EAAE,KAAO,iBAAiB,QAC5F,6BAA+B,QAAQ,KAAM,KAC7C,qCAAuC,YAAY,IACnD,sCAAwC,WAAW,OAAQ,MAAM,KACjE,yBAA2B,aAAa,MAAQ,WAAW,OAE3D,6BACC,QAAQ,KAAM,SAAS,SAAU,MAAM,EAAG,OAAO,OAAQ,UAAU,KAAM,WAAW,OACpF,MAAM,KAAO,QAAQ,EAAG,OAAO,EAAG,WAAW,KAAO,WAAW,KAAM,gBAAgB,KAAM,mBAAmB,KAC9G,oBAAoB,KAGrB,4BAA6B,+BAAiC,MAAM,KAAO,iBAAiB,KAC5F,mCAAqC,QAAQ,MAE7C,oBAAuB,SAAS,SAAU,KAAK,EAAG,OAAO,IAAK,SAAS,OAAQ,cAAc,KAAO,iBAAiB,KAAM,OAAO,QAClI,qBAAuB,SAAS,SAAU,IAAI,EAAG,OAAO,EAAG,KAAK,EAAG,QAAQ,MAAO,QAAQ,MAAO,iBAAiB,QAClH,4BAA8B,QAAQ,MAAO,iBAAiB,QAC9D,6BAA+B,MAAM,KAAM,iBAAiB","sourcesContent":["/*!\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/apijs - 6.9.3\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-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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 S/02/07/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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\n#apijsDialog button, #apijsDialog label { cursor:pointer; }\n#apijsDialog button:disabled { cursor:default; }\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\tuser-select:none; -moz-user-select:none; -ms-user-select:none; -webkit-user-select:none;\n\ttransition:background-color 0.5s, opacity 0.25s; opacity:0;\n}\n\n#apijsDialog.ready { background-color:rgba(0, 0, 0, 0.65); opacity:1; }\n#apijsDialog.fullscreen .nofullscreen { display:none !important; }\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; 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; 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; -moz-user-select:text; -ms-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\n#apijsBox iframe { display:block; width:100%; border:0; }\n#apijsBox iframe.loading { pointer-events:none; }\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; vertical-align:bottom; }\n#apijsBox div.btns.upload td.size { white-space:nowrap; 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:not(:disabled), #apijsBox div.btns button:active:not(:disabled),\n#apijsBox div.btns button:focus:not(:disabled) { 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 { position:relative; 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#apijsBox dl.media dt div.apijsplayer { position:absolute; right:0; bottom:0; left:0; }\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;\n}\n\n/* &&&&&&&&&&&&&&&&&& boutons de navigation &&& */\n#apijsBox div.navigation button { position:absolute; top:5rem; bottom:5rem; 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; padding:0 20% 0 2em; }\n#apijsBox div.navigation button.prev span { transform:rotate(-45deg); -webkit-transform:rotate(-45deg); }\n#apijsBox div.navigation button.next { right:0; padding:0 2em 0 20%; }\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:#777;\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 S/02/07/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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; }\ndiv.apijsvideoplayer.fullscreen.playing video { cursor:none !important; }\n\ndiv.apijsvideoplayer.fullscreen .nofullscreen { display:none !important; }\n\ndiv.apijsvideoplayer.playing.fullscreen .nofullplaying,\ndiv.apijsvideoplayer.fullscreen.playing .noplaying,\ndiv.apijsvideoplayer.playing .noplaying { transition:opacity 0.5s; opacity:0; }\n\ndiv.apijsvideoplayer.playing.fullscreen .nofullplaying:hover,\ndiv.apijsvideoplayer.fullscreen.playing .noplaying:hover,\ndiv.apijsvideoplayer.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:-9vh; padding-top:9vh; 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\toverscroll-behavior: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; }*/"]} \ No newline at end of file diff --git a/src/skin/frontend/base/default/js/luigifab/apijs/apijs.min.js b/src/skin/frontend/base/default/js/luigifab/apijs/apijs.min.js index 4f2a8b2..ca94593 100644 --- a/src/skin/frontend/base/default/js/luigifab/apijs/apijs.min.js +++ b/src/skin/frontend/base/default/js/luigifab/apijs/apijs.min.js @@ -1,8 +1,8 @@ /*! - * Copyright 2008-2022 | Fabrice Creuzot (luigifab) - * https://www.luigifab.fr/apijs - 6.9.2 + * Copyright 2008-2023 | Fabrice Creuzot (luigifab) + * https://github.com/luigifab/apijs - 6.9.3 * This program is free software, you can redistribute it or modify * it under the terms of the GNU General Public License (GPL). */ -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;ie.scroll+1)&&(e.scroll=i,s=0i.offsetHeight&&"HTML"!==i.nodeName&&((s=0=i.body.offsetHeight-1||!e&&i.defaultView.scrollY<=0)&&(t.preventDefault(),t.stopPropagation())},this.onKey=function(t){var e,i=apijs.dialog,s=i.media;i.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():i.has("photo","video")&&122===t.keyCode?(t.preventDefault(),apijs.requestFullscreen(i.t1)):i.has("slideshow")?27===t.keyCode?(t.preventDefault(),i.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(),i.actionClose()),i.has("video")&&!i.has("videoiframe")&&([32,80].has(t.keyCode)?(t.preventDefault(),[1,2].has(s.networkState)&&(s.ended||s.paused?s.play():s.pause())):[38,33].has(t.keyCode)?(t.preventDefault(),e=38===t.keyCode?10:60,[1,2].has(s.networkState)&&s.duration!==1/0&&!isNaN(s.duration)&&(s.currentTime>e?s.currentTime-=e:s.currentTime=0)):[40,34].has(t.keyCode)?(t.preventDefault(),[1,2].has(s.networkState)&&s.duration!==1/0&&!isNaN(s.duration)&&(e=40===t.keyCode?10:60,s.currentTime/g,">").replace(/\[/g,"<").replace(/]/g,">"),this.t2.appendChild(this.a)),0/g,">").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),"function"==typeof Hammer&&(this.hammer=new Hammer(this.t2),this.hammer.get("swipe").set({direction:Hammer.DIRECTION_ALL}),this.hammer.on("swiperight swipedown swipeleft swipeup",apijs.dialog.onSlideshowSwipe)),this},this.htmlBtnClose=function(t){return!1!==t&&(this.a=document.createElement("div"),this.a.setAttribute("class","close nofullplaying"),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,i){return this.a=document.createElement("div"),this.a.setAttribute("class","btns upload"),this.t3=document.createElement("input"),this.t3.setAttribute("type","file"),this.t3.setAttribute("name",e?t+"[]":t),this.t3.setAttribute("id","apijsFile"),e&&this.t3.setAttribute("multiple","multiple"),this.t3.setAttribute("onchange",i),this.a.appendChild(this.t3),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'+(s?(new Date).toTimeString().substring(0,8):e+1)+"":"")+''+t.name+''+apijs.i18n.translate(166,i)+"","*"===this.exts.join()||this.exts.has(t.name.slice(t.name.lastIndexOf(".")+1).toLowerCase())?t.size>1048576*this.onemax?i+=''+apijs.i18n.translate(168)+"":t.size<=0?i+=''+apijs.i18n.translate(169)+"":i+="":i+=''+apijs.i18n.translate(167)+"",a.push(""+i+""),n+=t.size/1048576},this),0=this.allmax&&a.push(''+apijs.i18n.translate(166,apijs.formatNumber(n))+''+apijs.i18n.translate(168)+""),apijs.html("div.filenames").innerHTML=""+a.join("")+"
    ",apijs.html("div.filenames .err"))?e.setAttribute("disabled","disabled"):(e.removeAttribute("disabled"),e.focus())},this.actionConfirm=function(){var t,e;return 0=this.end+2?(this.end=r,0<(e=Math.floor(100*t.loaded/t.total))&&e<100&&(this.updateTitle(e),n=100*(r=r-this.start)/e+10,24e.scroll+1)&&(e.scroll=i,s=0i.offsetHeight&&"HTML"!==i.nodeName&&((s=0=i.body.offsetHeight-1||!e&&i.defaultView.scrollY<=0)&&(t.preventDefault(),t.stopPropagation())},this.onKey=function(t){var e,i=apijs.dialog,s=i.media;i.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():i.has("photo","video")&&122===t.keyCode?(t.preventDefault(),apijs.requestFullscreen(i.t1)):i.has("slideshow")?27===t.keyCode?(t.preventDefault(),i.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(),i.actionClose()),i.has("video")&&!i.has("videoiframe")&&([32,80].has(t.keyCode)?(t.preventDefault(),[1,2].has(s.networkState)&&(s.ended||s.paused?s.play():s.pause())):[38,33].has(t.keyCode)?(t.preventDefault(),e=38===t.keyCode?10:60,[1,2].has(s.networkState)&&s.duration!==1/0&&!isNaN(s.duration)&&(s.currentTime>e?s.currentTime-=e:s.currentTime=0)):[40,34].has(t.keyCode)?(t.preventDefault(),[1,2].has(s.networkState)&&s.duration!==1/0&&!isNaN(s.duration)&&(e=40===t.keyCode?10:60,s.currentTime/g,">").replace(/\[/g,"<").replace(/]/g,">"),this.t2.appendChild(this.a)),0/g,">").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),"function"==typeof Hammer&&(this.hammer=new Hammer(this.t2),this.hammer.get("swipe").set({direction:Hammer.DIRECTION_ALL}),this.hammer.on("swiperight swipedown swipeleft swipeup",apijs.dialog.onSlideshowSwipe)),this},this.htmlBtnClose=function(t){return!1!==t&&(this.a=document.createElement("div"),this.a.setAttribute("class","close nofullplaying"),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,i){return this.a=document.createElement("div"),this.a.setAttribute("class","btns upload"),this.t3=document.createElement("input"),this.t3.setAttribute("type","file"),this.t3.setAttribute("name",e?t+"[]":t),this.t3.setAttribute("id","apijsFile"),e&&this.t3.setAttribute("multiple","multiple"),this.t3.setAttribute("onchange",i),this.a.appendChild(this.t3),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'+(s?(new Date).toTimeString().substring(0,8):e+1)+"":"")+''+t.name+''+apijs.i18n.translate(166,i)+"","*"===this.exts.join()||this.exts.has(t.name.slice(t.name.lastIndexOf(".")+1).toLowerCase())?t.size>1048576*this.onemax?i+=''+apijs.i18n.translate(168)+"":t.size<=0?i+=''+apijs.i18n.translate(169)+"":i+="":i+=''+apijs.i18n.translate(167)+"",a.push(""+i+""),n+=t.size/1048576},this),0=this.allmax&&a.push(''+apijs.i18n.translate(166,apijs.formatNumber(n))+''+apijs.i18n.translate(168)+""),apijs.html("div.filenames").innerHTML=""+a.join("")+"
    ",apijs.html("div.filenames .err"))?e.setAttribute("disabled","disabled"):(e.removeAttribute("disabled"),e.focus())},this.actionConfirm=function(){var t,e;return 0=this.end+2?(this.end=r,0<(e=Math.floor(100*t.loaded/t.total))&&e<100&&(this.updateTitle(e),n=100*(r=r-this.start)/e+10,24\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 = 692;\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, max) {\n\t\treturn Array.prototype.slice.call(data, 0, max);\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 S/03/07/2021\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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\t108: \"Vybrat soubor\",\n\t\t\t132: \"video stopa\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t135: \"vypnuto\",\n\t\t\t142: \"předchozí/následující\",\n\t\t\t143: \"přehrát/pozastavit\",\n\t\t\t144: \"zpět/vpřed\",\n\t\t\t145: \"snížit/zvýšit hlasitost\",\n\t\t\t146: \"ztlumit\",\n\t\t\t148: \"ukončit\",\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\t135: \"aus\",\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\tel: {\n\t\t\t102: \"Εντάξει\",\n\t\t\t103: \"Ακύρωση\",\n\t\t\t105: \"Κλείσιμο\",\n\t\t\t106: \"Προηγούμενο\",\n\t\t\t107: \"Επόμενο\",\n\t\t\t108: \"Επιλέξτε ένα αρχείο\",\n\t\t\t131: \"βίντεο\",\n\t\t\t132: \"κομμάτι βίντεο\",\n\t\t\t133: \"κομμάτι ήχου\",\n\t\t\t134: \"υπότιτλοι\",\n\t\t\t135: \"απενεργοποίηση\",\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\t149: \"Τέλος\",\n\t\t\t150: \"Esc\"\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\t135: \"desactivar\",\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\thu: {\n\t\t\t103: \"Mégsem\",\n\t\t\t104: \"Megerősít\",\n\t\t\t105: \"Bezár\",\n\t\t\t106: \"Előző\",\n\t\t\t107: \"Következő\",\n\t\t\t108: \"Válasszon fájlt\",\n\t\t\t131: \"videó\",\n\t\t\t132: \"videosáv\",\n\t\t\t133: \"hangsáv\",\n\t\t\t134: \"feliratok\",\n\t\t\t135: \"ki\",\n\t\t\t142: \"előző/következő\",\n\t\t\t143: \"lejátszás/szünet\",\n\t\t\t144: \"vissza/előre\",\n\t\t\t145: \"hangerő csökkentés/növelése\",\n\t\t\t146: \"némítás\",\n\t\t\t147: \"teljes képernyő\",\n\t\t\t148: \"kilépés\",\n\t\t\t149: \"Befejezés\",\n\t\t\t150: \"Esc\"\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\t135: \"inattivo\",\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\t108: \"ファイルを選択する\",\n\t\t\t131: \"ビデオ\",\n\t\t\t132: \"ビデオトラック\",\n\t\t\t133: \"オーディオトラック\",\n\t\t\t134: \"字幕\",\n\t\t\t135: \"オフ\",\n\t\t\t142: \"前へ/次へ\",\n\t\t\t143: \"再生/一時停止\",\n\t\t\t144: \"戻る/進む\",\n\t\t\t146: \"ミュート\",\n\t\t\t147: \"全画面表示\",\n\t\t\t148: \"終了\",\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\t108: \"Kies een bestand\",\n\t\t\t132: \"videospoor\",\n\t\t\t133: \"audiospoor\",\n\t\t\t134: \"ondertitels\",\n\t\t\t135: \"uit\",\n\t\t\t142: \"vorige/volgende\",\n\t\t\t143: \"afspelen/pauzeren\",\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\t148: \"afsluiten\",\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\t108: \"Wybierz plik\",\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\t135: \"wyłączone\",\n\t\t\t142: \"poprzedni/następny\",\n\t\t\t143: \"odtwarzaj/wstrzymaj\",\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\t148: \"zakończ\",\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: \"Escolha um ficheiro\",\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\t135: \"não\",\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\t108: \"Escolher um arquivo\",\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\t135: \"desligado\",\n\t\t\t142: \"anterior/próximo\",\n\t\t\t143: \"reproduzir/pausar\",\n\t\t\t144: \"retroceder/avançar\",\n\t\t\t146: \"sem áudio\",\n\t\t\t147: \"tela inteira\",\n\t\t\t148: \"fechar\",\n\t\t\t149: \"Final\"\n\t\t},\n\t\tro: {\n\t\t\t103: \"Anuleaza\",\n\t\t\t104: \"Confirmare\",\n\t\t\t105: \"Inchide\",\n\t\t\t106: \"Anteriorul\",\n\t\t\t107: \"Urmatorul\",\n\t\t\t108: \"Alege un fișier\",\n\t\t\t132: \"pistă video\",\n\t\t\t133: \"pistă audio\",\n\t\t\t134: \"subtitluri\",\n\t\t\t135: \"oprit\",\n\t\t\t142: \"anteriorul/urmatorul\",\n\t\t\t143: \"redare/pauză\",\n\t\t\t144: \"înapoi/înaintează\",\n\t\t\t145: \"scade/crește volumul\",\n\t\t\t146: \"mut\",\n\t\t\t147: \"pe tot ecranul\",\n\t\t\t148: \"ieșire\",\n\t\t\t149: \"Sfârșit\",\n\t\t\t150: \"Esc\"\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\t135: \"выключено\",\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: \"Максимальный размер: § Мб.\",\n\t\t\t166: \"§ Мб\",\n\t\t\t181: \"§% - § Кб/s - осталось § минут\",\n\t\t\t182: \"§% - § Кб/s - осталось § минут\",\n\t\t\t183: \"§% - § Кб/s - осталось § секунд\",\n\t\t\t184: \"§% - § Кб/s\",\n\t\t\t185: \"§% - § Кб/s за § минут\",\n\t\t\t186: \"§% - § Кб/s за § минут\",\n\t\t\t187: \"§% - § Кб/s за § секунд\",\n\t\t\t188: \"§% - § Кб/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\t108: \"Zvoľte si súbor\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t135: \"vypnuté\",\n\t\t\t142: \"dozadu/ďalej\",\n\t\t\t143: \"prehrať/pozastaviť\",\n\t\t\t144: \"dozadu/dopredu\",\n\t\t\t145: \"znizit/zvysit hlasitost\",\n\t\t\t146: \"stlmiť\",\n\t\t\t148: \"koniec\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\ttr: {\n\t\t\t102: \"Tamam\",\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\t108: \"Bir dosya seçin\",\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\t135: \"kapalı\",\n\t\t\t142: \"önceki/sonraki\",\n\t\t\t143: \"duraklatma/oynatma\",\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\t148: \"çıkış\",\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\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\t131: \"відео\",\n\t\t\t132: \"відеодоріжка\",\n\t\t\t133: \"звукова доріжка\",\n\t\t\t134: \"субтитри\",\n\t\t\t135: \"вимкнено\",\n\t\t\t142: \"попередній/наступний\",\n\t\t\t143: \"відтворити/призупинити\",\n\t\t\t144: \"назад/вперед\",\n\t\t\t145: \"зменшити/збільшити гучність\",\n\t\t\t146: \"вимкнути звук\",\n\t\t\t148: \"вийти\",\n\t\t\t149: \"Кінець\",\n\t\t\t150: \"Esc\",\n\t\t\t166: \"§ МБ\",\n\t\t\t184: \"§% - § кБ/s\"\n\t\t},\n\t\tzh: {\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\t131: \"视频\",\n\t\t\t132: \"视频轨道\",\n\t\t\t133: \"音频轨道\",\n\t\t\t134: \"字幕\",\n\t\t\t135: \"关\",\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\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 L/02/03/2020\n *\n * Copyright 2008-2020 | Fabrice Creuzot (luigifab) \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};\n};","/**\n * Created D/11/01/2015\n * Updated S/02/07/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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 = 0, 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:\\d+,/, '');\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// ignore le clic du swipe en mode slideshow\n\t\tif (apijs.dialog.swipe)\n\t\t\treturn false;\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.2) ? 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');\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\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\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\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\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');\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 D/12/04/2009\n * Updated S/02/07/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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.swipe = false;\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.t3 = null; // input file\n\tthis.a = null;\n\tthis.b = null;\n\tthis.c = 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, 'apijs.upload.actionChoose(this);')\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 width = document.querySelector('body').clientWidth;\n\n\t\tapijs.dialog[(width <= (apijs.dialog.has('photo', 'video') ? 900 : 460)) ? 'add' : 'remove']('mobile');\n\t\tapijs.dialog[(width <= 300) ? '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\t// https://github.com/hammerjs/hammer.js\n\t\t// https://github.com/john-doherty/swiped-events\n\t\tif (\n\t\t\tthat.has('slideshow') && !that.has('playing') &&\n\t\t\t!['OPTION', 'SELECT'].has(elem.nodeName) && ['DOMMouseScroll', 'mousewheel', 'swipeleft', 'swiperight', 'swipeup', 'swipedown', 'swiped-left', 'swiped-right', 'swiped-up', 'swiped-down'].has(ev.type)\n\t\t) {\n\t\t\telem = new Date().getTime() / 1000;\n\t\t\tif ((that.scroll < 1) || (elem > (that.scroll + 1))) {\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[(['swipeleft', 'swipeup', 'swiped-left', 'swiped-up'].has(ev.type) || 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.scrollHeight > elem.offsetHeight) && (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 - 1))) || (!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.scrollY) >= (elem.body.offsetHeight - 1))) ||\n\t\t\t(!brk && (elem.defaultView.scrollY <= 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, time;\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 ([32, 80].has(ev.keyCode)) {\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 ([38, 33].has(ev.keyCode)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\ttime = (ev.keyCode === 38) ? 10 : 60;\n\t\t\t\tif (([1, 2].has(elem.networkState)) && (elem.duration !== Infinity) && !isNaN(elem.duration)) {\n\t\t\t\t\tif (elem.currentTime > time)\n\t\t\t\t\t\telem.currentTime -= time;\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// bas | page bas\n\t\t\telse if ([40, 34].has(ev.keyCode)) {\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\ttime = (ev.keyCode === 40) ? 10 : 60;\n\t\t\t\t\tif (elem.currentTime < (elem.duration - time))\n\t\t\t\t\t\telem.currentTime += time;\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.onSlideshowSwipe = function (ev) {\n\n\t\tapijs.dialog.swipe = true;\n\t\tself.setTimeout(function () { apijs.dialog.swipe = false; }, 150);\n\n\t\tif (['swiperight', 'swipedown', 'swiped-right', 'swiped-down'].has(ev.type))\n\t\t\tapijs.slideshow.actionPrev();\n\t\telse // swipeleft swipeup swiped-left swiped-up\n\t\t\tapijs.slideshow.actionNext();\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\t// this.t1.appendChild(this.t0.firstChild.firstChild);\n\t\t\t// https://stackoverflow.com/a/24775765/2980105\n\t\t\tapijs.toArray(this.t0.firstChild.childNodes).forEach(function (node) {\n\t\t\t\tthis.t1.appendChild(node);\n\t\t\t}, this); // pour que ci-dessus this = this\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\t\t// copier coller\n\t\telse if (this.has('upload')) {\n\t\t\twindow.addEventListener('paste', apijs.upload.actionDrag);\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\tif (this.hammer) { // (depuis htmlBtnNavigation)\n\t\t\tthis.hammer.off('swiperight swipedown swipeleft swipeup', apijs.dialog.onSlideshowSwipe).destroy();\n\t\t\tdelete this.hammer;\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\telse {\n\t\t\t// copier coller\n\t\t\tif (this.has('upload'))\n\t\t\t\twindow.removeEventListener('paste', apijs.upload.actionDrag);\n\n\t\t\t// mémorise la hauteur du dialogue\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 et swipe)\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.t3 = null; // input file\n\t\tthis.a = null;\n\t\tthis.b = null;\n\t\tthis.c = 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\t\t\tthis.t1.setAttribute('onpaste', drag); // Firefox\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\t\telse {\n\t\t\tthis.t1.setAttribute('ondragstart', 'return false;');\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, '>').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, '>').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\tif (typeof Hammer == 'function') {\n\t\t\tthis.hammer = new Hammer(this.t2);\n\t\t\tthis.hammer.get('swipe').set({ direction: Hammer.DIRECTION_ALL });\n\t\t\tthis.hammer.on('swiperight swipedown swipeleft swipeup', apijs.dialog.onSlideshowSwipe);\n\t\t}\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 nofullplaying');\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, change) {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns upload');\n\n\t\t\tthis.t3 = document.createElement('input');\n\t\t\tthis.t3.setAttribute('type', 'file');\n\t\t\tthis.t3.setAttribute('name', isMultiple ? input + '[]' : input);\n\t\t\tthis.t3.setAttribute('id', 'apijsFile');\n\t\t\tif (isMultiple) this.t3.setAttribute('multiple', 'multiple');\n\t\t\tthis.t3.setAttribute('onchange', change);\n\n\t\tthis.a.appendChild(this.t3);\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', 'nofullplaying');\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\t// pas d'aide en mobile car pas de clavier\n\t\tif (('ontouchstart' in window) && (navigator.userAgent.toLowerCase().indexOf('mobi') > 0))\n\t\t\treturn this;\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 ? ['topk', 'bottom', 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 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 J/11/08/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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').substring(0, 5).replace('image', 'dialogPhoto').replace('video', 'dialogVideo').replace('audio', '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/24/06/2022\n *\n * Copyright 2008-2022 | Fabrice Creuzot (luigifab) \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.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\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\tvar elem = apijs.dialog.t3, stop = true;\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\t// drag and drop\n\t\telse if (ev.dataTransfer && ev.dataTransfer.files && (ev.dataTransfer.files.length > 0)) {\n\n\t\t\ttry {\n\t\t\t\telem.files = ev.dataTransfer.files; // Firefox 57+\n\t\t\t\tapijs.upload.actionChoose(elem);\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t\tapijs.html('.drag').remove();\n\t\t\t}\n\n\t\t\tapijs.dialog.remove('drag');\n\t\t}\n\t\t// copy and paste\n\t\telse if (ev.clipboardData && ev.clipboardData.files && (ev.clipboardData.files.length > 0)) {\n\n\t\t\t// Firefox 22+, Chrome 58+, Opera 45+, Safari 10.1+\n\t\t\ttry {\n\t\t\t\telem.files = ev.clipboardData.files; // Firefox 57+\n\t\t\t\tapijs.upload.actionChoose(elem, true);\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t\tapijs.html('.drag').remove();\n\t\t\t}\n\t\t}\n\t\telse if (ev.clipboardData) {\n\t\t\tstop = false;\n\t\t}\n\n\t\tif (stop) {\n\t\t\tev.stopPropagation();\n\t\t\tev.preventDefault();\n\t\t}\n\t};\n\n\tthis.actionChoose = function (elem, paste) {\n\n\t\tvar html = [], size = 0, btn = apijs.html('button.confirm');\n\n\t\tif (this.exts) {\n\n\t\t\t// 1048576 octet = 1 Mo\n\t\t\t// https://stackoverflow.com/a/24775765/2980105\n\t\t\tapijs.toArray(elem.files, (this.allmax > 0) ? 999 : 1).forEach(function (file, idx) {\n\n\t\t\t\tvar txt = file.size / 1048576;\n\t\t\t\ttxt = apijs.formatNumber((txt < 0.01) ? 0.01 : txt);\n\t\t\t\ttxt = ((paste || (this.allmax > 0)) ?\n\t\t\t\t\t'' + (paste ? (new Date()).toTimeString().substring(0, 8) : idx + 1) + '' : '') +\n\t\t\t\t\t'' + file.name + '' +\n\t\t\t\t\t'' + apijs.i18n.translate(166, txt) + '';\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\ttxt += '' + apijs.i18n.translate(167) + '';\n\t\t\t\t}\n\t\t\t\telse if (file.size > (this.onemax * 1048576)) {\n\t\t\t\t\ttxt += '' + apijs.i18n.translate(168) + '';\n\t\t\t\t}\n\t\t\t\telse if (file.size <= 0) {\n\t\t\t\t\ttxt += '' + apijs.i18n.translate(169) + '';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttxt += '';\n\t\t\t\t}\n\n\t\t\t\thtml.push('' + txt + '');\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('' + apijs.i18n.translate(166, apijs.formatNumber(size)) + '' + apijs.i18n.translate(168) + '');\n\t\t\t}\n\n\t\t\t// ok ou ko\n\t\t\tapijs.html('div.filenames').innerHTML = '' + html.join('') + '
    ';\n\t\t\tif (apijs.html('div.filenames .err')) {\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\t\t}\n\t\telse {\n\t\t\tbtn.setAttribute('disabled', 'disabled');\n\t\t}\n\t};\n\n\tthis.actionConfirm = function () {\n\n\t\tif (apijs.dialog.t3.files.length > 0) {\n\n\t\t\tvar form = new FormData(apijs.dialog.t2), xhr = new XMLHttpRequest();\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// 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","max","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","108","132","133","134","135","142","143","144","145","146","148","149","150","de","109","124","147","161","162","163","164","167","168","169","181","182","183","185","186","187","188","191","192","193","194","195","196","el","102","131","en","125","126","127","141","165","166","184","es","fr","hu","it","ja","nl","pl","pt","ptbr","ro","ru","sk","tr","uk","zh","toLowerCase","translate","word","translation","arguments","translateNode","createTextNode","apply","changeLang","select","video","stalled","subload","autoRun","xhr","removeAttribute","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","appendChild","htmlSvgPlayer","htmlSource","XMLHttpRequest","onreadystatechange","readyState","detail","from","childNodes","abort","status","nbv","nbt","responseText","trim","shift","setAttribute","htmlOption","htmlTrack","updateSelect","textTracks","send","css","total","adjust","textContent","innerHTML","tracks","videoTracks","auto","language","selectedIndex","Math","actionVideotrack","audioTracks","actionAudiotrack","hh","mm","ss","time","currentTime","duration","text","isNaN","Infinity","floor","style","width","buffer","buffered","node","remove","createElement","end","networkState","paused","swipe","ended","play","pause","offsetWidth","clientX","offsetLeft","offsetParent","volume","muted","actionPosition","target","enabled","blur","actionTexttrack","mode","actionVideo","src","actionFullscreen","res","d","c","b","a","onchange","webkitFullscreenEnabled","fullscreenEnabled","mozFullScreenEnabled","onload","lastIndexOf","track","label","klass","height","scroll","args","ft","ti","ns","media","t0","t2","t3","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","scrollHeight","offsetHeight","scrollTop","onScrollIframe","defaultView","innerHeight","scrollY","body","onKey","ctrlKey","keyCode","altKey","actionLast","actionFirst","actionPrev","actionNext","onFullscreen","onIframeLoad","contentWindow","parent","passive","currentSrc","visibility","hasAttribute","imageLoader","elems","onSlideshowSwipe","setTimeout","actionConfirm","isLocked","matchMedia","matches","concat","createDocumentFragment","focus","minHeight","old","firstChild","actionDrag","isAll","hammer","off","destroy","removeEventListener","parseFloat","getComputedStyle","submit","drag","click","Hammer","get","set","direction","DIRECTION_ALL","on","isMultiple","change","isDelayed","createElementNS","fileid","Image","isSlideshow","isVideo","navigator","userAgent","items","item","current","j","hoverload","$1","source","srcset","conts","prefix","number","parseInt","gallery","links","substring","styles","first","prev","next","last","hash","onemax","allmax","exts","sendFile","sendFiles","stop","dataTransfer","files","actionChoose","e","clipboardData","paste","size","btn","file","toTimeString","FormData","setRequestHeader","append","updateTitle","onError","onStart","round","percent","rate","totalTime","mins","lengthComputable","loaded","elapsedTime","ceil","updateProgress","rect"],"mappings":"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"} \ No newline at end of file +{"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 L/10/10/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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 = 693;\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, max) {\n\t\treturn Array.prototype.slice.call(data, 0, max);\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 S/03/07/2021\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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\t108: \"Vybrat soubor\",\n\t\t\t132: \"video stopa\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t135: \"vypnuto\",\n\t\t\t142: \"předchozí/následující\",\n\t\t\t143: \"přehrát/pozastavit\",\n\t\t\t144: \"zpět/vpřed\",\n\t\t\t145: \"snížit/zvýšit hlasitost\",\n\t\t\t146: \"ztlumit\",\n\t\t\t148: \"ukončit\",\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\t135: \"aus\",\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\tel: {\n\t\t\t102: \"Εντάξει\",\n\t\t\t103: \"Ακύρωση\",\n\t\t\t105: \"Κλείσιμο\",\n\t\t\t106: \"Προηγούμενο\",\n\t\t\t107: \"Επόμενο\",\n\t\t\t108: \"Επιλέξτε ένα αρχείο\",\n\t\t\t131: \"βίντεο\",\n\t\t\t132: \"κομμάτι βίντεο\",\n\t\t\t133: \"κομμάτι ήχου\",\n\t\t\t134: \"υπότιτλοι\",\n\t\t\t135: \"απενεργοποίηση\",\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\t149: \"Τέλος\",\n\t\t\t150: \"Esc\"\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\t135: \"desactivar\",\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\thu: {\n\t\t\t103: \"Mégsem\",\n\t\t\t104: \"Megerősít\",\n\t\t\t105: \"Bezár\",\n\t\t\t106: \"Előző\",\n\t\t\t107: \"Következő\",\n\t\t\t108: \"Válasszon fájlt\",\n\t\t\t131: \"videó\",\n\t\t\t132: \"videosáv\",\n\t\t\t133: \"hangsáv\",\n\t\t\t134: \"feliratok\",\n\t\t\t135: \"ki\",\n\t\t\t142: \"előző/következő\",\n\t\t\t143: \"lejátszás/szünet\",\n\t\t\t144: \"vissza/előre\",\n\t\t\t145: \"hangerő csökkentés/növelése\",\n\t\t\t146: \"némítás\",\n\t\t\t147: \"teljes képernyő\",\n\t\t\t148: \"kilépés\",\n\t\t\t149: \"Befejezés\",\n\t\t\t150: \"Esc\"\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\t135: \"inattivo\",\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\t108: \"ファイルを選択する\",\n\t\t\t131: \"ビデオ\",\n\t\t\t132: \"ビデオトラック\",\n\t\t\t133: \"オーディオトラック\",\n\t\t\t134: \"字幕\",\n\t\t\t135: \"オフ\",\n\t\t\t142: \"前へ/次へ\",\n\t\t\t143: \"再生/一時停止\",\n\t\t\t144: \"戻る/進む\",\n\t\t\t146: \"ミュート\",\n\t\t\t147: \"全画面表示\",\n\t\t\t148: \"終了\",\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\t108: \"Kies een bestand\",\n\t\t\t132: \"videospoor\",\n\t\t\t133: \"audiospoor\",\n\t\t\t134: \"ondertitels\",\n\t\t\t135: \"uit\",\n\t\t\t142: \"vorige/volgende\",\n\t\t\t143: \"afspelen/pauzeren\",\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\t148: \"afsluiten\",\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\t108: \"Wybierz plik\",\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\t135: \"wyłączone\",\n\t\t\t142: \"poprzedni/następny\",\n\t\t\t143: \"odtwarzaj/wstrzymaj\",\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\t148: \"zakończ\",\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: \"Escolha um ficheiro\",\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\t135: \"não\",\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\t108: \"Escolher um arquivo\",\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\t135: \"desligado\",\n\t\t\t142: \"anterior/próximo\",\n\t\t\t143: \"reproduzir/pausar\",\n\t\t\t144: \"retroceder/avançar\",\n\t\t\t146: \"sem áudio\",\n\t\t\t147: \"tela inteira\",\n\t\t\t148: \"fechar\",\n\t\t\t149: \"Final\"\n\t\t},\n\t\tro: {\n\t\t\t103: \"Anuleaza\",\n\t\t\t104: \"Confirmare\",\n\t\t\t105: \"Inchide\",\n\t\t\t106: \"Anteriorul\",\n\t\t\t107: \"Urmatorul\",\n\t\t\t108: \"Alege un fișier\",\n\t\t\t132: \"pistă video\",\n\t\t\t133: \"pistă audio\",\n\t\t\t134: \"subtitluri\",\n\t\t\t135: \"oprit\",\n\t\t\t142: \"anteriorul/urmatorul\",\n\t\t\t143: \"redare/pauză\",\n\t\t\t144: \"înapoi/înaintează\",\n\t\t\t145: \"scade/crește volumul\",\n\t\t\t146: \"mut\",\n\t\t\t147: \"pe tot ecranul\",\n\t\t\t148: \"ieșire\",\n\t\t\t149: \"Sfârșit\",\n\t\t\t150: \"Esc\"\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\t135: \"выключено\",\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: \"Максимальный размер: § Мб.\",\n\t\t\t166: \"§ Мб\",\n\t\t\t181: \"§% - § Кб/s - осталось § минут\",\n\t\t\t182: \"§% - § Кб/s - осталось § минут\",\n\t\t\t183: \"§% - § Кб/s - осталось § секунд\",\n\t\t\t184: \"§% - § Кб/s\",\n\t\t\t185: \"§% - § Кб/s за § минут\",\n\t\t\t186: \"§% - § Кб/s за § минут\",\n\t\t\t187: \"§% - § Кб/s за § секунд\",\n\t\t\t188: \"§% - § Кб/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\t108: \"Zvoľte si súbor\",\n\t\t\t133: \"zvuková stopa\",\n\t\t\t134: \"titulky\",\n\t\t\t135: \"vypnuté\",\n\t\t\t142: \"dozadu/ďalej\",\n\t\t\t143: \"prehrať/pozastaviť\",\n\t\t\t144: \"dozadu/dopredu\",\n\t\t\t145: \"znizit/zvysit hlasitost\",\n\t\t\t146: \"stlmiť\",\n\t\t\t148: \"koniec\",\n\t\t\t150: \"Esc\"\n\t\t},\n\t\ttr: {\n\t\t\t102: \"Tamam\",\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\t108: \"Bir dosya seçin\",\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\t135: \"kapalı\",\n\t\t\t142: \"önceki/sonraki\",\n\t\t\t143: \"duraklatma/oynatma\",\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\t148: \"çıkış\",\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\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\t131: \"відео\",\n\t\t\t132: \"відеодоріжка\",\n\t\t\t133: \"звукова доріжка\",\n\t\t\t134: \"субтитри\",\n\t\t\t135: \"вимкнено\",\n\t\t\t142: \"попередній/наступний\",\n\t\t\t143: \"відтворити/призупинити\",\n\t\t\t144: \"назад/вперед\",\n\t\t\t145: \"зменшити/збільшити гучність\",\n\t\t\t146: \"вимкнути звук\",\n\t\t\t148: \"вийти\",\n\t\t\t149: \"Кінець\",\n\t\t\t150: \"Esc\",\n\t\t\t166: \"§ МБ\",\n\t\t\t184: \"§% - § кБ/s\"\n\t\t},\n\t\tzh: {\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\t131: \"视频\",\n\t\t\t132: \"视频轨道\",\n\t\t\t133: \"音频轨道\",\n\t\t\t134: \"字幕\",\n\t\t\t135: \"关\",\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\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 L/02/03/2020\n *\n * Copyright 2008-2020 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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};\n};","/**\n * Created D/11/01/2015\n * Updated S/02/07/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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 = 0, 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:\\d+,/, '');\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// ignore le clic du swipe en mode slideshow\n\t\tif (apijs.dialog.swipe)\n\t\t\treturn false;\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.2) ? 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');\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\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\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\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\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');\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 D/12/04/2009\n * Updated S/02/07/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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.swipe = false;\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.t3 = null; // input file\n\tthis.a = null;\n\tthis.b = null;\n\tthis.c = 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, 'apijs.upload.actionChoose(this);')\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 width = document.querySelector('body').clientWidth;\n\n\t\tapijs.dialog[(width <= (apijs.dialog.has('photo', 'video') ? 900 : 460)) ? 'add' : 'remove']('mobile');\n\t\tapijs.dialog[(width <= 300) ? '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\t// https://github.com/hammerjs/hammer.js\n\t\t// https://github.com/john-doherty/swiped-events\n\t\tif (\n\t\t\tthat.has('slideshow') && !that.has('playing') &&\n\t\t\t!['OPTION', 'SELECT'].has(elem.nodeName) && ['DOMMouseScroll', 'mousewheel', 'swipeleft', 'swiperight', 'swipeup', 'swipedown', 'swiped-left', 'swiped-right', 'swiped-up', 'swiped-down'].has(ev.type)\n\t\t) {\n\t\t\telem = new Date().getTime() / 1000;\n\t\t\tif ((that.scroll < 1) || (elem > (that.scroll + 1))) {\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[(['swipeleft', 'swipeup', 'swiped-left', 'swiped-up'].has(ev.type) || 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.scrollHeight > elem.offsetHeight) && (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 - 1))) || (!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.scrollY) >= (elem.body.offsetHeight - 1))) ||\n\t\t\t(!brk && (elem.defaultView.scrollY <= 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, time;\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 ([32, 80].has(ev.keyCode)) {\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 ([38, 33].has(ev.keyCode)) {\n\t\t\t\tev.preventDefault();\n\t\t\t\ttime = (ev.keyCode === 38) ? 10 : 60;\n\t\t\t\tif (([1, 2].has(elem.networkState)) && (elem.duration !== Infinity) && !isNaN(elem.duration)) {\n\t\t\t\t\tif (elem.currentTime > time)\n\t\t\t\t\t\telem.currentTime -= time;\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// bas | page bas\n\t\t\telse if ([40, 34].has(ev.keyCode)) {\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\ttime = (ev.keyCode === 40) ? 10 : 60;\n\t\t\t\t\tif (elem.currentTime < (elem.duration - time))\n\t\t\t\t\t\telem.currentTime += time;\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.onSlideshowSwipe = function (ev) {\n\n\t\tapijs.dialog.swipe = true;\n\t\tself.setTimeout(function () { apijs.dialog.swipe = false; }, 150);\n\n\t\tif (['swiperight', 'swipedown', 'swiped-right', 'swiped-down'].has(ev.type))\n\t\t\tapijs.slideshow.actionPrev();\n\t\telse // swipeleft swipeup swiped-left swiped-up\n\t\t\tapijs.slideshow.actionNext();\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\t// this.t1.appendChild(this.t0.firstChild.firstChild);\n\t\t\t// https://stackoverflow.com/a/24775765/2980105\n\t\t\tapijs.toArray(this.t0.firstChild.childNodes).forEach(function (node) {\n\t\t\t\tthis.t1.appendChild(node);\n\t\t\t}, this); // pour que ci-dessus this = this\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\t\t// copier coller\n\t\telse if (this.has('upload')) {\n\t\t\twindow.addEventListener('paste', apijs.upload.actionDrag);\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\tif (this.hammer) { // (depuis htmlBtnNavigation)\n\t\t\tthis.hammer.off('swiperight swipedown swipeleft swipeup', apijs.dialog.onSlideshowSwipe).destroy();\n\t\t\tdelete this.hammer;\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\telse {\n\t\t\t// copier coller\n\t\t\tif (this.has('upload'))\n\t\t\t\twindow.removeEventListener('paste', apijs.upload.actionDrag);\n\n\t\t\t// mémorise la hauteur du dialogue\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 et swipe)\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.t3 = null; // input file\n\t\tthis.a = null;\n\t\tthis.b = null;\n\t\tthis.c = 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\t\t\tthis.t1.setAttribute('onpaste', drag); // Firefox\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\t\telse {\n\t\t\tthis.t1.setAttribute('ondragstart', 'return false;');\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, '>').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, '>').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\tif (typeof Hammer == 'function') {\n\t\t\tthis.hammer = new Hammer(this.t2);\n\t\t\tthis.hammer.get('swipe').set({ direction: Hammer.DIRECTION_ALL });\n\t\t\tthis.hammer.on('swiperight swipedown swipeleft swipeup', apijs.dialog.onSlideshowSwipe);\n\t\t}\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 nofullplaying');\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, change) {\n\n\t\tthis.a = document.createElement('div');\n\t\tthis.a.setAttribute('class', 'btns upload');\n\n\t\t\tthis.t3 = document.createElement('input');\n\t\t\tthis.t3.setAttribute('type', 'file');\n\t\t\tthis.t3.setAttribute('name', isMultiple ? input + '[]' : input);\n\t\t\tthis.t3.setAttribute('id', 'apijsFile');\n\t\t\tif (isMultiple) this.t3.setAttribute('multiple', 'multiple');\n\t\t\tthis.t3.setAttribute('onchange', change);\n\n\t\tthis.a.appendChild(this.t3);\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', 'nofullplaying');\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\t// pas d'aide en mobile car pas de clavier\n\t\tif (('ontouchstart' in window) && (navigator.userAgent.toLowerCase().indexOf('mobi') > 0))\n\t\t\treturn this;\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 ? ['topk', 'bottom', 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 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 J/11/08/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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').substring(0, 5).replace('image', 'dialogPhoto').replace('video', 'dialogVideo').replace('audio', '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/24/06/2022\n *\n * Copyright 2008-2023 | Fabrice Creuzot (luigifab) \n * https://github.com/luigifab/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.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\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\tvar elem = apijs.dialog.t3, stop = true;\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\t// drag and drop\n\t\telse if (ev.dataTransfer && ev.dataTransfer.files && (ev.dataTransfer.files.length > 0)) {\n\n\t\t\ttry {\n\t\t\t\telem.files = ev.dataTransfer.files; // Firefox 57+\n\t\t\t\tapijs.upload.actionChoose(elem);\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t\tapijs.html('.drag').remove();\n\t\t\t}\n\n\t\t\tapijs.dialog.remove('drag');\n\t\t}\n\t\t// copy and paste\n\t\telse if (ev.clipboardData && ev.clipboardData.files && (ev.clipboardData.files.length > 0)) {\n\n\t\t\t// Firefox 22+, Chrome 58+, Opera 45+, Safari 10.1+\n\t\t\ttry {\n\t\t\t\telem.files = ev.clipboardData.files; // Firefox 57+\n\t\t\t\tapijs.upload.actionChoose(elem, true);\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\tconsole.error(e);\n\t\t\t\tapijs.html('.drag').remove();\n\t\t\t}\n\t\t}\n\t\telse if (ev.clipboardData) {\n\t\t\tstop = false;\n\t\t}\n\n\t\tif (stop) {\n\t\t\tev.stopPropagation();\n\t\t\tev.preventDefault();\n\t\t}\n\t};\n\n\tthis.actionChoose = function (elem, paste) {\n\n\t\tvar html = [], size = 0, btn = apijs.html('button.confirm');\n\n\t\tif (this.exts) {\n\n\t\t\t// 1048576 octet = 1 Mo\n\t\t\t// https://stackoverflow.com/a/24775765/2980105\n\t\t\tapijs.toArray(elem.files, (this.allmax > 0) ? 999 : 1).forEach(function (file, idx) {\n\n\t\t\t\tvar txt = file.size / 1048576;\n\t\t\t\ttxt = apijs.formatNumber((txt < 0.01) ? 0.01 : txt);\n\t\t\t\ttxt = ((paste || (this.allmax > 0)) ?\n\t\t\t\t\t'' + (paste ? (new Date()).toTimeString().substring(0, 8) : idx + 1) + '' : '') +\n\t\t\t\t\t'' + file.name + '' +\n\t\t\t\t\t'' + apijs.i18n.translate(166, txt) + '';\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\ttxt += '' + apijs.i18n.translate(167) + '';\n\t\t\t\t}\n\t\t\t\telse if (file.size > (this.onemax * 1048576)) {\n\t\t\t\t\ttxt += '' + apijs.i18n.translate(168) + '';\n\t\t\t\t}\n\t\t\t\telse if (file.size <= 0) {\n\t\t\t\t\ttxt += '' + apijs.i18n.translate(169) + '';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttxt += '';\n\t\t\t\t}\n\n\t\t\t\thtml.push('' + txt + '');\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('' + apijs.i18n.translate(166, apijs.formatNumber(size)) + '' + apijs.i18n.translate(168) + '');\n\t\t\t}\n\n\t\t\t// ok ou ko\n\t\t\tapijs.html('div.filenames').innerHTML = '' + html.join('') + '
    ';\n\t\t\tif (apijs.html('div.filenames .err')) {\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\t\t}\n\t\telse {\n\t\t\tbtn.setAttribute('disabled', 'disabled');\n\t\t}\n\t};\n\n\tthis.actionConfirm = function () {\n\n\t\tif (apijs.dialog.t3.files.length > 0) {\n\n\t\t\tvar form = new FormData(apijs.dialog.t2), xhr = new XMLHttpRequest();\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// 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","max","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","108","132","133","134","135","142","143","144","145","146","148","149","150","de","109","124","147","161","162","163","164","167","168","169","181","182","183","185","186","187","188","191","192","193","194","195","196","el","102","131","en","125","126","127","141","165","166","184","es","fr","hu","it","ja","nl","pl","pt","ptbr","ro","ru","sk","tr","uk","zh","toLowerCase","translate","word","translation","arguments","translateNode","createTextNode","apply","changeLang","select","video","stalled","subload","autoRun","xhr","removeAttribute","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","appendChild","htmlSvgPlayer","htmlSource","XMLHttpRequest","onreadystatechange","readyState","detail","from","childNodes","abort","status","nbv","nbt","responseText","trim","shift","setAttribute","htmlOption","htmlTrack","updateSelect","textTracks","send","css","total","adjust","textContent","innerHTML","tracks","videoTracks","auto","language","selectedIndex","Math","actionVideotrack","audioTracks","actionAudiotrack","hh","mm","ss","time","currentTime","duration","text","isNaN","Infinity","floor","style","width","buffer","buffered","node","remove","createElement","end","networkState","paused","swipe","ended","play","pause","offsetWidth","clientX","offsetLeft","offsetParent","volume","muted","actionPosition","target","enabled","blur","actionTexttrack","mode","actionVideo","src","actionFullscreen","res","d","c","b","a","onchange","webkitFullscreenEnabled","fullscreenEnabled","mozFullScreenEnabled","onload","lastIndexOf","track","label","klass","height","scroll","args","ft","ti","ns","media","t0","t2","t3","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","scrollHeight","offsetHeight","scrollTop","onScrollIframe","defaultView","innerHeight","scrollY","body","onKey","ctrlKey","keyCode","altKey","actionLast","actionFirst","actionPrev","actionNext","onFullscreen","onIframeLoad","contentWindow","parent","passive","currentSrc","visibility","hasAttribute","imageLoader","elems","onSlideshowSwipe","setTimeout","actionConfirm","isLocked","matchMedia","matches","concat","createDocumentFragment","focus","minHeight","old","firstChild","actionDrag","isAll","hammer","off","destroy","removeEventListener","parseFloat","getComputedStyle","submit","drag","click","Hammer","get","set","direction","DIRECTION_ALL","on","isMultiple","change","isDelayed","createElementNS","fileid","Image","isSlideshow","isVideo","navigator","userAgent","items","item","current","j","hoverload","$1","source","srcset","conts","prefix","number","parseInt","gallery","links","substring","styles","first","prev","next","last","hash","onemax","allmax","exts","sendFile","sendFiles","stop","dataTransfer","files","actionChoose","e","clipboardData","paste","size","btn","file","toTimeString","FormData","setRequestHeader","append","updateTitle","onError","onStart","round","percent","rate","totalTime","mins","lengthComputable","loaded","elapsedTime","ceil","updateProgress","rect"],"mappings":"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"} \ No newline at end of file