/**********************
Funciones javascript para establecer comunicación entre la pieza Flash y el registro y las diversas notas legales.
Este archivo debe incluirse en la página HTML que contiene la pieza Flash.
**********************/


/**********************
	API
**********************/
/*
	URLs de las páginas de autenticación.
*/
//Ahora mismo todas llaman a una página que simula el proceso.
var authURLs = {
	register: "/caciqueroneria/register.view", 
	login: "/caciqueroneria/login.view",
	intro: "html/authentication/intro.html"
}

/*
	Valor por defecto para la ventana de autenticación en caso de que el parámetro enviado no sea correcto.
*/	
var authDefault = "login";

/*
	Dimensiones de la ventana de registro.
*/
var authSize = {
	width: 656,
	height: 720 
}

/*
	Valor por defecto para la función que actuará como callback del proceso de autenticación.
*/	
var authDefaultCallback = "setUserAuthenticated";

/*
	Almacena el valor de la función que actuará como callback del proceso de autenticación.
*/
var authCallback;

/*
	URLs de las páginas de notas legales.
*/
var legalURLs = {
	legal: "/roneria/html/legal/legal.html", 
	privacy: "/roneria/html/legal/privacy.html",
	terms: "/roneria/html/legal/terms.html",
	info:	"/roneria/html/legal/info.html"
}

/*
	Valor por defecto para la ventana de notas legales en caso de que el parámetro enviado no sea correcto.
*/	
var legalDefault = "legal";

/*
	Dimensiones de la ventana de notas legales.
*/
var legalSize = {
	width: 400,
	height: 500 
}

/*
	Almacenan los popups.
	Desde las ventanas de registro se puede acceder a diversas notas legales, de modo que necesitamos poder tener 2 popups abiertos simultáneamente.
*/
var authWindow;
var legalWindow;

/*
	Abre una ventana de registro / login.
	
	Parámetros:
	-type: String indicando el tipo de ventana a abrir. Valores posibles:
			- register: Para abrir el formulario de registro. Utilizado desde el botón "Registrarme" de la sección "La barra".
			- login: Para abrir el formulario de login. Utilizado desde el botón "Identificarme" de la sección "La barra".
			- intro: Para abrir la página que da acceso a los formularios de registro y login. Utilizado desde el botón "registro" del menú situado en la parte superior derecha.
			El valor por defecto es "intro".
	- callback: String con el nombre de la función de ActionScript que se ejecutará al finalizar el proceso de autenticación. El valor por defecto es "setUserAuthenticated".
			
	Respuesta:
	La llamada a esta función no devuelve ningún resultado directamente. La película Flash debe mantenerse en espera.
	Al acabar el proceso de autenticación, se llamará a la función definida como callback. Esta función recibirá 3 parámetros:
			- userId: String. Identificador de usuario.
			- userName: String. Nombre de usuario.
			- userPassword. String. Contraseña del usuario.
*/
function openAuthentication(type, callback){
	//
	//Comprobamos que el tipo de ventana existe. Si no, le damos el valor por defecto.
	if(!authURLs[type]){
		type = authDefault;
	}

	var url = authURLs[type];

	//Almacenamos el callback
	authCallback = callback || authDefaultCallback;

	authWindow = openPopWindow(url, "auth", authSize.width, authSize.height);
}

/*
	Abre una ventana de nota legal.
	
	Parámetros:
	-type: String indicando el tipo de ventana a abrir. Valores posibles:
			- legal: Para abrir el aviso legal. Utilizado desde el botón "Aviso legal" del menú inferior.
			- privacy: Para abrir la información de privacidad. Utilizado desde el botón "Política de privacidad" del menú inferior.
			- terms: Para abrir la página de términos y condiciones. Utilizado desde el botón "Términos y condiciones" del menú inferior.
*/

function openLegal(type){
	//Comprobamos que el tipo de ventana existe. Si no, le damos el valor por defecto.
	if(!legalURLs[type]){
		type = legalDefault;
	}
	
	var url = legalURLs[type];

	legalWindow = openPopWindow(url, "legal", legalSize.width, legalSize.height, 1, null, null);	
}

/**********************
	FIN API
**********************/


//Dimensiones de la pantalla
var screenWidth = screen.width;
var screenHeight = screen.height;

function openPopWindow(url, type, width, height, _scroll, x, y){
	var wW = (width != null) ? width : screenWidth - 50;
	var wH = (height != null) ? height : screenHeight - 150;
		
	var wX = (x != null) ? x : Math.round(screenWidth / 2 - (wW / 2));
	var wY = (y != null) ? y : Math.round(screenHeight / 2 - (wH / 2));
    
    var name = (name != null) ? name : "dyPopup";
    
    var scrollbar = (_scroll != null) ? _scroll : 0;
	
	closeWindow(type);

    var win = window.open(url, type, 'resizable=0,scrollbars='+scrollbar+',status=0,location=0,toolbar=0,menubar=0,width='+wW+',height='+wH+',screenX='+wX+',screenY='+wY+',left='+wX+',top='+wY+'');

    return win;	
}

function closeWindow(type){
	if(type == "auth"){
		try{
			authWindow.close();
		}
		catch(e){
			//authWindow no existe. Forzamos la variable a null.
			authWindow = null;
		}
	}
	else if(type == "legal"){
		try{
			legalWindow.close();
		}
		catch(e){
			//legalWindow no existe. Forzamos la variable a null.
			legalWindow = null;
		}
	}
	else{
		//Mmmmm... Es un popup extraño. Cerramos los otros dos.
		try{
			closeWindow("auth");
			closeWindow("legal");
		}
		catch(e){

		}
	}	
}

function catchAuthenticationDone(userId, userName, userPassword, closePop){

	try{
		console.log('user authenticated');
	}
	catch(e){

	}

	if(closePop){
		try{
			closeWindow("auth");
		}
		catch(e){

		}
	}

	try{
		getSWF()[authCallback]('','','');
	}
	catch(e){

	}
}

function getSWF(){
	return document.getElementsByTagName('object')[0];
}
