
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//              FUNCIONES PARA INTERCAMBIAR DATOS CON LA PLATAFORMA
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
var hay_plataforma= false;

function iniciar_comunicacion() {
	//iniciamos la comunicación con la plataforma
	if (!doInitialize()) {return};
	
	hay_plataforma= true;
	
	//iniciamos el cronómetro
	iniciar_cronometro();

	//si el alumno entra por primera vez se inicializa la lección a INCOMPLETE
	var estado_curso= doGetValue("cmi.completion_status");
	if ((estado_curso != "completed") &&  (estado_curso != "incomplete")) {
		doSetValue("cmi.completion_status","incomplete");
		doCommit();
		doSetValue("cmi.progress_measure",0);
		doCommit();
		doSetValue("cmi.suspend_data","no_inicializado");
		doCommit();
	}//if

}//iniciar_comunicacion


function finalizar_comunicacion() {
	if (hay_plataforma) {
		//finalizamos el contador de tiempo
		var tiempo_sesion= parar_cronometro();
		
		//guardamos el tiempo de esta sesión en la plataforma
		doSetValue("cmi.session_time",tiempo_sesion);
		doCommit();
		
		//finalizamos la comunicación con la plataforma
		doTerminate();
	}//if
	
}//finalizar_comunicacion


function marcar_tanto_por_ciento(total_bloques,num_bloque) {
	if (hay_plataforma) {
		
		var estado_curso= doGetValue("cmi.completion_status");
		if (estado_curso != "completed") {
		
			//si no estaba ya inicializado, inicializamos el suspend_data
			//creamos tantas posiciones como bloque temáticos tengamos
			//0 indica bloque no visto, 1 indica bloque visto
			var suspend_data= doGetValue("cmi.suspend_data");
			if ((suspend_data.charAt(0) != "0") && (suspend_data.charAt(0) != "1")) {
			//if (suspend_data == "no_inicializado") {
				suspend_data= "";
				for (i=0; i < total_bloques; i++) suspend_data+= "0";
				doSetValue("cmi.suspend_data",suspend_data);
				doCommit();
				doSetValue("cmi.completion_status","incomplete");
				doCommit();
				doSetValue("cmi.progress_measure",0);
				doCommit();
			}//if suspend_data 1
			
			//comprobamos si el bloque actual ya había sido visto anteriormente
			//si no había sido visto anteriormente lo almacenamos, calculamos el nuevo porcentaje
			//y comprobamos si ahora la lección ya está completa
			if (suspend_data.charAt(parseInt(num_bloque)-1) != "1") {
				var nuevo_suspend_data= "";
				for (i=0; i<=suspend_data.length; i++) {
					if (i == parseInt(num_bloque)-1) {
						nuevo_suspend_data += "1";
						bloque_no_visto_antes= true;
					} else {
						nuevo_suspend_data += suspend_data.charAt(i);
					}//else
				}//for
				doSetValue("cmi.suspend_data",nuevo_suspend_data);
				doCommit();
				
				var bloques_vistos= 0;
				for (i=0; i<nuevo_suspend_data.length; i++) {
					//total_bloques++;
					if (nuevo_suspend_data.charAt(i) == "1") bloques_vistos++;
				}
				var tanto_por_ciento= Math.round(100*bloques_vistos/total_bloques);
				doSetValue("cmi.progress_measure",tanto_por_ciento/100);
				doCommit();
				if (tanto_por_ciento == 100) {
					doSetValue("cmi.completion_status","completed");
					doCommit();
				}//if
			}//if suspend_data 2
			
		}//if completed
	}//if hay_plataforma

}//marcar_tanto_por_ciento


/*
//EN ESTE PROYECTO NO SE GUARDA LA POSICIÓN ANTERIOR
function set_location(location) {
	if (hay_plataforma) {
		//almacenamos en qué punto de la lección se quedó el alumno
		//(cadena de texto que se corresponde con un fotograma etiquetado de la animación flash)
		doSetValue("cmi.core.lesson_location",location);
		doCommit();
		animacion.SetVariable("posicion_anterior",location);		
		
	}//if
}//set_location
*/

/*
//EN ESTE PROYECTO NO SE GUARDA LA POSICIÓN ANTERIOR
function get_location() {
	if (hay_plataforma) {
		//recuperamos el punto de la lección en el que se quedó el alumno
		//(cadena de texto que se corresponde con un fotograma etiquetado de la animación flash)
		var location= doGetValue("cmi.core.lesson_location");
		return location;
	}//if
}//get_location
*/




//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//                     FUNCIONES PARA CALCULAR TIEMPOS
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------

var inicio_tiempo;

function iniciar_cronometro() {
	inicio_tiempo = new Date().getTime();
}//iniciar_cronometro

function parar_cronometro() {
	var total_segundos = 0;
	var txt_tiempo = "00:00:00";

	if (inicio_tiempo != 0)
	{
		var fin_tiempo = new Date().getTime();
		total_segundos = ( (fin_tiempo - inicio_tiempo) / 1000);
		txt_tiempo = formatear_segundos(total_segundos);
	}//if	
	
	return txt_tiempo;
}//parar_cronometro();

function formatear_segundos(ts)
{
	var sec = (ts%60).toString();
	ts -= sec;
	var tmp = (ts % 3600); 
	ts -= tmp;
	
	if ( (ts%3600) != 0) var hour = "0"; 
		else var hour=(ts/3600).toString();
	
	if ( (tmp%60) != 0) var min = "0";
		else var min = (tmp/60).toString();
	
	if (hour.length == 1) {
		hour = "0"+hour;
	} else if (hour.length == 2) {
		hour = hour;
	}//if-else
	
	if (min.length < 2)  min  = "0"+min;
	var secFix = floatFix(sec, 0);
	if (secFix.length == 1)
	{
		secFix = "0"+secFix;	
	}//if
	
	//Retorna el valor en el formato T[hH][nM][s[.s]S]
	var rtnTime = "PT"+hour+"H"+min+"M"+secFix+"S";	
	return rtnTime;
	
}//formatear_segundos

//Se le pasa el numero Real y el numero de digitos decimales que se quieren
function floatFix(valor, digitos) {
	var res = "" + Math.round(valor * Math.pow(10, digitos));
	var decimales = res.length - digitos;
	
	if (digitos !=0 ) 
	{
		fixed = res.substring(0,decimales) + "." + res.substring(decimales, res.length);	
	} else {
		fixed = res; 
	}//if-else
	
	return fixed;
}//floatFix
