<?php
	//---------------------------------------------------------------------------------------------------------
	// 03/junio/2016
	// Versión 1.0 Widget de propósito general para añadir efectos y animaciones javascript/css
	//---------------------------------------------------------------------------------------------------------
	
	
	
	function widget_efectos($nombre_funcion = 'fichero_csv'){
		include('comunes/globals.php');
		//Aquí definimos una serie de parámetros que necesitamos
		$funcion_por_defecto = 'efectos';
		$parametros_por_defecto = array();
		$parametros_recibidos = func_get_args();
		if (count($parametros_recibidos) == 0){
			$parametros_recibidos[0] = $funcion_por_defecto;
		}else{
			if ( ($parametros_recibidos[0] == '') || ($parametros_recibidos[0] == NULL) ){
				$parametros_recibidos[0] = $funcion_por_defecto;
			}
		}
		$parametros_recibidos = mezcla_array_parametros($parametros_por_defecto, $parametros_recibidos);
		$retorno = false;
		//Si entre los parámetros recibidos, tenemos el nombre de la función continuamos
		if (count($parametros_recibidos) > 0){
			//Recogemos el nombre de la función de entre el resto de parámetros
			$nombre_funcion = $parametros_recibidos[0];
			//Quitamos el primer elemento de los parámetros, pues es el nombre de la función
			$parametros_recibidos = array_slice($parametros_recibidos, 1);
			//Si la función existe la ejecutamos
			if(function_exists($nombre_funcion)){
				$retorno = call_user_func_array($nombre_funcion, $parametros_recibidos);
			}
		}
		return($retorno);
	}

	function efectos($opciones = NULL){
		include('comunes/globals.php');
		if ($opciones == NULL){
			$opciones = new OpcionesWidget();
		}
		if (is_a($opciones, 'OpcionesWidget')){
			$nombre_clase = '';
			$elementos = array();
			$changeHeaderOn = NULL;
			//$clase_capa_origen ='hed';
			$nombre_clase = ($opciones->configuracion->nombre_clase != NULL) ? $opciones->configuracion->nombre_clase : $nombre_clase;
			$changeHeaderOn = ($opciones->configuracion->changeHeaderOn != NULL) ? $opciones->configuracion->changeHeaderOn : $changeHeaderOn;
			//$clase_capa_origen = ($opciones->configuracion->clase_capa_origen != NULL) ? $opciones->configuracion->clase_capa_origen : $clase_capa_origen;
			$txt_estilo = '';
			if ($nombre_clase == ''){
				//Si no hay nombre de la clase hemos recibido los estilos tal cual:
				$elementos = $opciones->elementos;
				foreach($elementos as $campo => $valor){
					foreach($valor as $nombre_campo => $contenido){
						$txt_estilo .= "$nombre_campo: $contenido;\n";
					}
				}
				//Si tampoco tenemos elementos, creamos el texto a mano:
				if (count($elementos) == 0){
					$txt_estilo = '
						position: fixed;
						top: 0px;
						left: 0px;
					';
				}
				
				//Vamos a asignarle un nombre a la clase:
				$nombre_clase = 'class_' . incrementa_contador();
			}
			
			$nombre_script = 'script_' . incrementa_contador();
?>
<script type="text/javascript" id="<?=$nombre_script;?>">
document.addEventListener('WSLE', function(event) {
;(function () {
	var elementObjetive = getLastHtmlObject('<?=$nombre_script;?>');
<?php
	//Vamos a cargar la clase nueva en css si fuese necesario
	if ($txt_estilo != ''){
		$txt_estilo = str_replace(array('\n' ,'\r'), '', $txt_estilo); // remove new lines
?>
	var style = document.createElement('style');
	style.type = 'text/css';
	style.innerHTML = ".<?=$nombre_clase;?> { <?=$txt_estilo;?> }";
	document.getElementsByTagName('head')[0].appendChild(style);
<?php
	}
	//header = document.querySelector('.navbar-default')
?>
	var docElem = document.documentElement;
	var didScroll = false;
<?php
	if ($changeHeaderOn != NULL){
?>
	var changeHeaderOn = <?=$changeHeaderOn;?>;
<?php
	}else{
?>
	//Vamos a ver el elemento en cuestión dónde debería estar:
	//elementObjetive.addClass('<?=$nombre_clase;?>');
	var changeHeaderOn = elementObjetive.position().top + elementObjetive.height();
	//elementObjetive.removeClass('<?=$nombre_clase;?>');
<?php
	}
	/*var changeHeaderOn = 118;
	var header = $('.<?=$clase_capa_origen;?>');*/
?>
	function init() {
		window.addEventListener('scroll', function (event) {
			if (!didScroll) {
				didScroll = true;
				setTimeout(scrollPage, 100);
			}
		}, false);
	}

	function scrollPage() {
		var sy = scrollY();
		if (sy >= changeHeaderOn) {
			//elementObjetive.removeClass('slideUp');
			elementObjetive.addClass('<?=$nombre_clase;?>');
			elementObjetive.addClass('slideInDown');
			//header.slideDown("fast");
			//header;
			//$(".menu").hide();
		} else {

			elementObjetive.removeClass('<?=$nombre_clase;?>');
			//header.addClass('invisible');

			elementObjetive.removeClass('slideInDown');
			elementObjetive.addClass('slideUp');
			//header.slideUp("fast", "linear");
			//$(".menu").show();
		}
		didScroll = false;
	}

	function scrollY() {
		return window.pageYOffset || docElem.scrollTop;
	}

	init();

})();
});
</script>
<?php
		}
	}
?>