<?php

if (!defined('_ECRIRE_INC_VERSION')) {
	return;
}

function mediabox_config($public = null) {
	include_spip('inc/filtres');
	include_spip('inc/config');
	$config = lire_config('mediabox', array());

	$config = array_merge(array(
		'active' => 'oui',
		'traiter_toutes_images' => 'oui',
		'selecteur_galerie' => '#documents_portfolio a[type=\'image/jpeg\'],#documents_portfolio a[type=\'image/png\'],#documents_portfolio a[type=\'image/gif\']',
		'selecteur_commun' => '.mediabox',
		'splash_url' => '',
		'splash_width' => '600px',
		'splash_height' => '90%',
		'skin' => 'black-striped',
		'transition' => 'elastic',
		'speed' => '200',
		'maxWidth' => '90%',
		'maxHeight' => '90%',
		'minWidth' => '400px',
		'minHeight' => '',
		'slideshow_speed' => '2500',
		'opacite' => '0.9',
	), $config);

	if ((is_null($public) and test_espace_prive()) or $public === false) {
		$config = array_merge($config, array(
			'active' => 'oui',
			'selecteur_galerie' => '#portfolios a[type^=\'image/\']',
			'selecteur_commun' => '.mediabox, .iconifier a[href$=jpg],.iconifier a[href$=png],.iconifier a[href$=gif]',
			'splash_url' => '',
			'skin' => 'white-shadow',
			'maxWidth' => '90%',
			'maxHeight' => '95%',
			'minWidth' => '600px',
			'minHeight' => '300px',
			'opacite' => '0.9',
		));
	}

	// Gerer aussi les liens internes de SPIP
	if (!test_espace_prive() and $config['splash_url']) {
		include_spip('inc/filtres_ecrire');
		$config['splash_url'] = url_absolue(extraire_attribut(lien_article_virtuel($config['splash_url']), 'href'));
	}

	// charger la config du theme uniquement dans le public
	if (!test_espace_prive() and include_spip('colorbox/' . $config['skin'] . '/mediabox_config_theme')) {
		$config_theme = mediabox_config_theme();
		$config = array_merge($config, $config_theme);
	}

	return $config;
}

function mediabox_insert_head_css($flux) {
	$config = mediabox_config();
	if ($config['active'] == 'oui'
		and $f = find_in_path((test_espace_prive() ? 'prive/' : '') . 'colorbox/' . $config['skin'] . '/colorbox.css')) {
		$flux .= '<link rel="stylesheet" href="' . direction_css($f) . '" type="text/css" media="all" />';
		/**
		 * Initialiser la config de la mediabox
		 */
		$configmediabox = '<script type="text/javascript">/* <![CDATA[ */
var box_settings = {tt_img:' . ($config['traiter_toutes_images'] == 'oui' ? 'true' : 'false')
			. ',sel_g:"' . mediabox_quote_js_param($config['selecteur_galerie'])
			. '",sel_c:"' . mediabox_quote_js_param($config['selecteur_commun'])
			. '",trans:"' . mediabox_quote_js_param($config['transition'])
			. '",speed:"' . mediabox_quote_js_param($config['speed'])
			. '",ssSpeed:"' . mediabox_quote_js_param($config['slideshow_speed'])
			. '",maxW:"' . mediabox_quote_js_param($config['maxWidth'])
			. '",maxH:"' . mediabox_quote_js_param($config['maxHeight'])
			. '",minW:"' . mediabox_quote_js_param($config['minWidth'])
			. '",minH:"' . mediabox_quote_js_param($config['minHeight'])
			. '",opa:"' . mediabox_quote_js_param($config['opacite'])
			. '",str_ssStart:"' . mediabox_quote_js_param(unicode2charset(html2unicode(_T('mediabox:boxstr_slideshowStart'))))
			. '",str_ssStop:"' . mediabox_quote_js_param(unicode2charset(html2unicode(_T('mediabox:boxstr_slideshowStop'))))
			. '",str_cur:"' . mediabox_quote_js_param(_T('mediabox:boxstr_current', array('current' => '{current}', 'total' => '{total}')))
			. '",str_prev:"' . mediabox_quote_js_param(_T('mediabox:boxstr_previous'))
			. '",str_next:"' . mediabox_quote_js_param(_T('mediabox:boxstr_next'))
			. '",str_close:"' . mediabox_quote_js_param(_T('mediabox:boxstr_close'))
			. '",splash_url:"' . mediabox_quote_js_param($config['splash_url'])
			. '"};' . "\n";
		// Si c'est une image, on la chargera avec une redimentionnement automatique
		// Sinon, chargement dans une iframe
		$extension = pathinfo($config['splash_url'], PATHINFO_EXTENSION);
		if (in_array($extension, array('gif', 'png', 'jpg', 'jpeg'))) {
			$configmediabox .= 'var box_settings_iframe = false;' . "\n";
		} else {
			$configmediabox .= 'var box_settings_splash_width = "' . mediabox_quote_js_param($config['splash_width']) . '";
var box_settings_splash_height = "' . mediabox_quote_js_param($config['splash_height']) . '";' . "\n";
			$configmediabox .= 'var box_settings_iframe = true;' . "\n";
		}
		$flux = $configmediabox . '/* ]]> */</script>' . "\n" . $flux;
	}

	return $flux;
}

function mediabox_quote_js_param($valeur) {
	return str_replace(["'", "<"], ["\\'", "&lt;"], $valeur);
}

function mediabox_timestamp($fichier) {
	if ($m = filemtime($fichier)) {
		return "$fichier?$m";
	}

	return $fichier;
}

function mediabox_insert_head($flux) {
	$config = mediabox_config();
	if ($config['active'] == 'oui') {
		$flux .= '
	<script src="' . mediabox_timestamp(find_in_path('javascript/jquery.colorbox.js')) . '" type="text/javascript"></script>
	<script src="' . mediabox_timestamp(find_in_path('javascript/spip.mediabox.js')) . '" type="text/javascript"></script>';
		if ($config['splash_url']) {
			$flux .= '<script src="' . mediabox_timestamp(find_in_path('javascript/splash.mediabox.js')) . '" type="text/javascript"></script>';
		}
	}

	return $flux;
}

function mediabox_jquery_plugins($plugins) {
	$config = mediabox_config();
	if ($config['splash_url']) {
		$plugins[] = 'javascript/js.cookie.js';
	}

	return $plugins;
}
