/*
	WebScreenSaver
	Creado por Juan Miguel 'SoutlinK' Besada Vidal
	Version: 1.0
	Requiere libreria jQuery y jQuery-UI;
	CopyRight ©: Juan Miguel Besada Vidal, Todos los derechos reservados
	##########################################################################
	ATENCIÓN:
	##########################################################################
	Sois libre spara distribuir o modificar este Script mientras
	se mantenga esta cabecera o una parecida donde aparezca el autor original
	
	##########################################################################
	INSTALACIÓN:
	##########################################################################
	Debeis incluir este codigo en vuesta página donde querais que aparezca el WebScreenSaver
	<div id="webscreensaver">
		<img src="ruta_hacia_la_imagen/imagen1.jpg" />
		<img src="ruta_hacia_la_imagen/imagen2.jpg" />
		<img src="ruta_hacia_la_imagen/imagen3.jpg" />
		<img src="ruta_hacia_la_imagen/imagenN.jpg" />
		<!-- Podeis incluir tantas imagenes como querais -->
  </div>
*/

/* Configuración */
var WebScreenSaverStartTime = 40; // Segundos despues de que el raton se a parado
var WebScreenSaverAnimationTime = 1; // Segundos que tardará la animación de entrada y de salida
var WebScreenSaverTimeShowingImage = 6 // Segundos que estará la imagen visible
var WebScreenSaverRandomChoose = true;
/* Fin configuración */

/* #### NO MODIFICAR NADA A PARTIR DE ESTA LINEA #### */

WebScreenSaverStartTime = WebScreenSaverStartTime * 1000;
WebScreenSaverAnimationTime = WebScreenSaverAnimationTime * 1000;
WebScreenSaverTimeShowingImage = WebScreenSaverTimeShowingImage * 1000

// Variables
var WebScreenSaverRunning = false;
var WebScreenSaverTimer;
var WebScreenSaverHideImageTimer;
var WebScreenSaverImages = Array();
var WebScreenSaverImageIndex = 0;
var WebScreenSaverMouseTimer;
var WebScreenSaverMouseCoordenates = Array();
var WebScreenSaverBodyCSS = Array();
$(function(){
	$(document).trigger('mousestop'); //Simulamos que el raton se ha movido
	WebScreenSaver_PreloadImages();
});


$(document).bind('mousestop', function() {
	WebScreenSaverTimer = setTimeout(WebScreenSaverStart, WebScreenSaverStartTime);
});

$(document).mousemove(function(event){
	if (WebScreenSaverMouseCoordenates['x'] == event.pageX && WebScreenSaverMouseCoordenates['y'] == event.pageY)
	{
		return;
	}
	
	WebScreenSaverMouseCoordenates['x'] = event.pageX;
	WebScreenSaverMouseCoordenates['y'] = event.pageY;

	clearTimeout(WebScreenSaverMouseTimer);
	WebScreenSaverStop();
	//Consideramos que el Raton se a parado si en 1 segundo no ha cambiado su posicion
	WebScreenSaverMouseTimer = setTimeout(function(){ $(document).trigger('mousestop'); }, 1000);
	
});

function WebScreenSaverStart()
{
	//No podemos iniciar algo que ya esta iniciado
	if (WebScreenSaverRunning == true)
	{
		return false;
	}
	//Ya estamos dentro de la aplicacción por lo tanto cambiamos la variable
	WebScreenSaverRunning = true;
	//Solucionamos los problemas con el body
	WebScreenSaverBodyCSS['margin'] = $("body").css("margin");
	WebScreenSaverBodyCSS['padding'] = $("body").css("padding");
	WebScreenSaverBodyCSS['overflow'] = $("body").css("overflow");
	$("body, html").css({
		margin: 0,
		padding: 0,
		overflow: 'hidden'
	});
	//Empezamos el ScreenSaver
	//Ocultamos las imagenes y mostramos el fondo negro
	$("#webscreensaver img").css("display", "none");
	$("#webscreensaver").fadeIn('slow', function(){ WebScreenSaver_ShowImage(WebScreenSaverImageIndex); });
	return;
}

function WebScreenSaverStop()
{	
	//Si no estamos ejecutando la aplicación, solo tenemos que reiniciar el timer
	if (WebScreenSaverRunning == false)
	{
		clearTimeout(WebScreenSaverTimer);
		return;
	}
	$("#webscreensaver img").stop(true);
	$("#webscreensaver").stop(true);
	clearTimeout(WebScreenSaverHideImageTimer);
	$("#webscreensaver img").css("display", "none");
	$("#webscreensaver").css("display", "none");
	WebScreenSaverRunning = false;
	//Retornamos las opciones del body
	$("body, html").css({
		margin: WebScreenSaverBodyCSS['margin'],
		padding: WebScreenSaverBodyCSS['padding'],
		'overflow': 'auto'
	});
	//Fix IE7
	return;
}

function WebScreenSaver_ShowImage()
{

	if (WebScreenSaverImageIndex >= $("#webscreensaver img").length)
	{
		WebScreenSaverImageIndex = 0;
	}	
	
	var image = $("#webscreensaver img").eq(WebScreenSaverImageIndex);	
	
	if (isNaN($(image).attr('realwidth')) || isNaN($(image).attr('realheight')) || $(image).attr('realwidth') == 0 || $(image).attr('realheight') == 0)
	{
		$(image).attr('realwidth', $(image).width());
		$(image).attr('realheight', $(image).height());
	}
	
	var imageWidth = $(image).attr('realwidth');
	var imageHeight = $(image).attr('realheight');
	
	//Posicionamos la imagen e la izquierda
	/*$(image).css({
		left: '0%',
		marginTop: 0,
		marginLeft: 0,
		width: 0,
		height: 0,		
		display: 'block',
		opacity: 0.1
	});*/
	
	//Ahora la llevamos hasta el centro
	var margin_top = (imageHeight / 2) * (-1);
	var margin_left = (imageWidth / 2) * (-1);
	
	/*$(image).animate({
		left: '50%',
		marginTop: margin_top,
		marginLeft: margin_left,
		width: imageWidth,
		height: imageHeight,
		opacity: 1
	}, WebScreenSaverAnimationTime, function(){
		//Una vez se acaba la animacion
		clearTimeout(WebScreenSaverHideImageTimer);
		WebScreenSaverHideImageTimer = setTimeout(function(){WebScreenSaver_HideImage(WebScreenSaverImageIndex);}, WebScreenSaverTimeShowingImage);
		return;
	});*/
	//Centramos la imagen
	$(image).css({
		top: '50%',
		left: '50%',
		marginTop: margin_top,
		marginLeft: margin_left,
		width: imageWidth,
		height: imageHeight
	});
	
	$(image).fadeIn(WebScreenSaverAnimationTime, function() {
		//Una vez se acaba la animacion
		clearTimeout(WebScreenSaverHideImageTimer);
		WebScreenSaverHideImageTimer = setTimeout(function(){WebScreenSaver_HideImage(WebScreenSaverImageIndex);}, WebScreenSaverTimeShowingImage);
		return;
	});
	
	return;
}

function WebScreenSaver_HideImage()
{
	//Ocultamos la imagen
	var image = $("#webscreensaver img").eq(WebScreenSaverImageIndex);	

	var imageWidth = $(image).width();
	var imageHeight = $(image).height();
	
	$(image).fadeOut(WebScreenSaverAnimationTime, function() {
		if (WebScreenSaverRandomChoose == true)
		{
			WebScreenSaverImageIndex = WebScreenSaver_Random();
		}
		else
		{
			WebScreenSaverImageIndex++;
		}
		WebScreenSaver_ShowImage(WebScreenSaverImageIndex);
		return;
	});		
	return;
}

function WebScreenSaver_PreloadImages()
{
	$("#webscreensaver img").each(function(i){
		WebScreenSaverImages[i] = new Image();
		WebScreenSaverImages[i].src = $(this).attr('src');
	});
}

function WebScreenSaver_Random()
{
	var bottom = 0;
	var top = $("#webscreensaver img").length;
    var numPosibilidades = top - bottom;
    aleat = Math.random() * numPosibilidades;
    aleat = Math.floor(aleat);
    return parseInt(bottom) + aleat;
}