
var currentState = "NONE"; 
var previousState = "NONE"; 

var player = null;

var inicio; //fecha de inicio de la reproduccion
var actual; //fecha de para de reproduccion
var tiempoTotal=0; //tiempo total reproduccido
var soy; //video reproducido
var de; //proveedor del video
var servicio; //id del servicio.
var guardado; // t para indicar que se ha guardada y f para indicar que aun no
var info='';
//cuando se cierra el navegador hay que comprobar si se han guardado los datos de la reproduccion actual
// si no se guardarán
function calcularAlCerrar ()
{
	if(guardado=="f")
	{	
		if(estadoActual!="PAUSED")
		{
			actual=new Date();
			tiempoTotal+=calcularTiempo();
		}
		guardarReproduccion();	
	}	
}



//se encarga de lanza los escuchadores
function addListeners() 
{
	if (player) 
	{ 
		player.addModelListener("ERROR", "capturarError");
		player.addModelListener("STATE", "stateListener");	
	} 
	else {
		setTimeout("addListeners()",100);
	}
}

function capturarError(obj)
{
	info=obj.message;
	tiempoTotal=-1;
	guardarReproduccion();
}
function capturarLoaded(obj)
{
	var tmp = document.getElementById("stat");
	if (tmp) 
	{
		tmp.innerHTML = "loaded: " + obj.object;
	}
}

function capturarMeta(obj)
{
//alert("metada "+obj);
	var tmp = document.getElementById("stat");
	for (var x in obj)
	{
		//alert(x+": "+obj[x]);
		if (tmp) 
		{
			tmp.innerHTML +="<br/>"+x+" : "+obj[x]; 
		}
	}
	
}

//function muteTracker(obj) { alert('the new mute state is: '+obj.state); };

//se encarga de capturar el estado actual de la reproduccion (play, pause, stop, completa o buffering)
function stateListener(obj) { //IDLE, BUFFERING, PLAYING, PAUSED, COMPLETED
		
	estadoActual = obj.newstate; 
	estadoAnterior = obj.oldstate; 
	
	/*var tmp = document.getElementById("stat");
	if (tmp) 
	{
		tmp.innerHTML = "current state: " + estadoActual + 
		"<br>previous state: " + estadoAnterior; 
	}*/
	
	switch (estadoActual)
	{
		case "PLAYING":
			// si el estado anterior fue paused, completed o idle marco el inicio
			if(estadoAnterior!="PLAYING")
			{
				inicio=new Date();
			}
			guardado="f";
			break;
		case "PAUSED":
			// si vengo de un play caclulo el tiempo transpurrido
			if(estadoAnterior=="PLAYING")
			{
				actual=new Date();
				tiempoTotal+=calcularTiempo();
			}
			break;				
		case "IDLE":
			switch (estadoAnterior)
			{
				//si vengo de un pause guardo el tiempo total y luego lo pongo a 0
				case "PAUSED":
					guardarReproduccion();
					tiempoTotal=0;
					break;
				//si vengo de un play calcula el tiempo reproducido y se guarda la reproducion y se pone el tiempo a 0	
				case "PLAYING":
					actual=new Date();
					tiempoTotal+=calcularTiempo();
				//	alert("tiempo= "+tiempoTotal);
					guardarReproduccion();
					tiempoTotal=0;
					break;
			}
			break;
		case "COMPLETED":
			// si se completó la reproduccion y se venia de un plau se calcula el tiempo de repro se guarda y se pone tiempo total a 0
			if(estadoAnterior=="PLAYING")
			{
				//alert("Acabe");
				actual=new Date();
				tiempoTotal+=calcularTiempo();
			//	alert("tiempo= "+tiempoTotal);
				guardarReproduccion();
				tiempoTotal=0;	
			}	
			break;
		case "BUFFERING":
			if(estadoAnterior=="PLAYING")
			{
				actual=new Date();
				tiempoTotal+=calcularTiempo();
				//alert("tiempo= "+tiempoTotal);
			}
			break;
	}
	/*	
	if ((estadoActual == "COMPLETED")&&(estadoAnterior == "PLAYING")) {
		//document.location.href="http://www.jeroenwijering.com/?item=JW_FLV_Media_Player"; 
	}*/
}

//calcula el tiempo de reproduccion
function calcularTiempo()
{
	return(actual.getTime()-inicio.getTime());
}

//llama al archivo php encargado de guardar la informacion dela reproducción
function guardarReproduccion()
{ 
	var aux=xloadS("player/guardar.php?video="+soy+"&proveedor="+de+"&tiempo="+tiempoTotal+"&info="+info+"&servicio="+servicio);	
	guardado="t"; //se marca como reproduccion guardada	
}

function xloadS(pag) { //Síncrono
    if (typeof window.ActiveXObject != 'undefined' ) 
    	req = new ActiveXObject("Microsoft.XMLHTTP");
    else
    	req = new XMLHttpRequest();
    req.open("GET", pag, false);
    req.send(null);
    return req.responseText;
}