var urlBaseValor = 'http://espoiler.tv/';
//var urlBaseValor = 'http://localhost/';

var chkOn = urlBaseValor + 'img/chk_on.png';
var chkOff = urlBaseValor + 'img/chk_off.png';
var cargandoGif = urlBaseValor + 'img/cargando.gif';

var Agendar = function(){
	this.idSerie = 0;
	this.titulo = '';
	this.posTop = 0;
	this.posLeft = 0;
	this.temporadas = 1;
	this.episodios = 1;
	this.temporadaActual = 1;
	this.episodioActual = 1;
	this.agendada = false;
	this.idContenedor = '';
	this.divContenedor = null;

	this.selectTemporadas = document.createElement('select');
		this.selectTemporadas.style.border = '1px solid #ccc';
		this.selectTemporadas.style.marginRight = '5px';
		this.selectTemporadas.style.font = '12px Arial, Helvetica, sans-serif';
		this.selectTemporadas.title = '\u00bfQu\u00e9 temporada est\u00e1s viendo?';

	this.selectEpisodios = document.createElement('select');
		this.selectEpisodios.style.border = '1px solid #ccc';
		this.selectEpisodios.style.marginRight = '5px';
		this.selectEpisodios.style.font = '12px Arial, Helvetica, sans-serif';
		this.selectEpisodios.title = '\u00bfPor qu\u00e9 episodio vas?';
		if(this.selectEpisodios.attachEvent){//ie
			var selEpi = this.selectEpisodios;
			this.selectEpisodios.attachEvent('onmouseover',function(e){ selEpi.style.cursor = 'pointer';} );
			this.selectEpisodios.attachEvent('onmouseout',function(e){ selEpi.style.cursor = 'auto';} );
		}else{//moz
			this.selectEpisodios.addEventListener('mouseover',function(e){ this.style.cursor = 'pointer';}, false);
			this.selectEpisodios.addEventListener('mouseout',function(e){ this.style.cursor = 'auto';}, false);
		}

	this.imgCheck = document.createElement('img');
		this.imgCheck.style.verticalAlign = 'middle';

	this.bloqueoAgendar = document.createElement('div');
		this.bloqueoAgendar.style.position = 'absolute';
		this.bloqueoAgendar.style.top = '0px';
		this.bloqueoAgendar.style.width = '100%';
		this.bloqueoAgendar.style.height = '100%';
		this.bloqueoAgendar.style.background = '#ffffff';
		this.bloqueoAgendar.style.opacity = 0.5;//w3c
		this.bloqueoAgendar.style.filter = 'alpha(opacity=50)';//ie
		this.bloqueoAgendar.style.display = 'none';
		this.bloqueoAgendar.style.zIndex = '30';
		var icoespera = document.createElement('img');
		icoespera.style.position = 'absolute';
		icoespera.style.top = '2px';
		icoespera.style.left = '60px';
		icoespera.src = cargandoGif;
		icoespera.style.zIndex = '31';
		this.bloqueoAgendar.appendChild(icoespera);
//métodos
	this.mostrar = mostrarAgendar;
	this.actualizarEpi = actualizarEpiAgendar;
	this.actualizarTem = actualizarTemAgendar;
	this.actualizarAgenda = actualizarAgenda;
	this.agregarSerie = agregarSerieAgendar;
	this.quitarSerie = quitarSerieAgendar;
//eventos
	this.cuandoMuestro = cuandoMuestroAgendar;
	this.cuandoAgregoSerie = cuandoAgregoSerieAgendar;
	this.cuandoQuitoSerie = cuandoQuitoSerieAgendar;
}

function mostrarAgendar(){
	var obj = this;
	this.bloqueoAgendar.style.display = 'block';
	if(this.idContenedor != ''){
		this.divContenedor = document.getElementById(this.idContenedor);
	}
	this.divContenedor.style.position = 'absolute';
	this.divContenedor.style.width = '150px';
	this.divContenedor.style.top = this.posTop + 'px';
	this.divContenedor.style.left = this.posLeft + 'px';
	this.divContenedor.style.textAlign = 'right';
	this.divContenedor.style.font = '12px Arial, Helvetica, sans-serif';
	this.divContenedor.appendChild(this.selectTemporadas);
	this.divContenedor.appendChild(this.selectEpisodios);
	this.divContenedor.appendChild(this.imgCheck);
	this.divContenedor.appendChild(this.bloqueoAgendar);

	var selTem = this.selectTemporadas;
	if(this.selectTemporadas.attachEvent){//ie
		this.selectTemporadas.attachEvent('onchange',function(e){ obj.actualizarEpi(selTem.selectedIndex + 1)} );
		this.selectTemporadas.attachEvent('onmouseover',function(e){ selTem.style.cursor = 'pointer';} );
		this.selectTemporadas.attachEvent('onmouseout',function(e){ selTem.style.cursor = 'auto';} );
	}else{//moz
		this.selectTemporadas.addEventListener('change',function(e){ obj.actualizarEpi(this.selectedIndex + 1)}, false);
		this.selectTemporadas.addEventListener('mouseover',function(e){ this.style.cursor = 'pointer';}, false);
		this.selectTemporadas.addEventListener('mouseout',function(e){ this.style.cursor = 'auto';}, false);
	}

	if(this.imgCheck.attachEvent){//ie
		this.imgCheck.attachEvent('onclick',function(e){ obj.actualizarAgenda(); });
		var imgchk = this.imgCheck;
		this.imgCheck.attachEvent('onmouseover',function(e){ imgchk.style.cursor = 'pointer'; });
		this.imgCheck.attachEvent('onmouseout',function(e){ imgchk.style.cursor = 'auto'; });
	}else{//moz
		this.imgCheck.addEventListener('click',function(e){ obj.actualizarAgenda(); }, false);
		this.imgCheck.addEventListener('mouseover',function(e){ this.style.cursor = 'pointer'; }, false);
		this.imgCheck.addEventListener('mouseout',function(e){ this.style.cursor = 'auto'; }, false);
	}

	//traigo valores para iniciar el objeto
	var reqInicio = objAjax();
	if(reqInicio){
		reqInicio.onreadystatechange = function(){
			if(reqInicio.readyState == 4 && reqInicio.status == 200){
				var datosInicio = reqInicio.responseText;
				eval('var arrayDatosInicio = new Array(' + datosInicio + ');');
				obj.temporadas = arrayDatosInicio[0];
				obj.episodios = arrayDatosInicio[1];
				obj.temporadaActual = arrayDatosInicio[2];
				obj.episodioActual = arrayDatosInicio[3];
				obj.agendada = (arrayDatosInicio[4] == 1) ? true : false;
				obj.titulo = arrayDatosInicio[5];

				if(obj.agendada){//si la serie está en agenda
					//agrego opciones al select de temporadas
					obj.selectTemporadas.disabled = true;
					//agrego como única opción la temporada actual para que quede seleccionado
					if(obj.temporadaActual == -1){//si no queda nada para ver
						tem = 'SXX';
					}else{
						tem = (obj.temporadaActual < 10) ? 'S0' + obj.temporadaActual: 'S' + obj.temporadaActual;
					}
					var optSeason = obj.selectTemporadas.options;
					optSeason[optSeason.length] = new Option(tem, 1);
					//agrego opciones al select de episodios
					obj.selectEpisodios.disabled = true;
					//agrego como única opción el episodio actual para que quede seleccionado
					if(obj.episodioActual == -1){//si no queda nada para ver
						epi = 'EXX';
					}else{
						epi = (obj.episodioActual < 10) ? 'E0' + obj.episodioActual: 'E' + obj.episodioActual;
					}
					var optEpisode = obj.selectEpisodios.options;
					optEpisode[optEpisode.length] = new Option(epi, 1);
					//seteo imagen del chk
					obj.imgCheck.src = chkOn;
					obj.imgCheck.title = 'Quitar "' + obj.titulo + '" de la agenda';
				}else{//si la serie no está en agenda
					//agrego opciones al select de temporadas
					if(obj.temporadas != -1){//si tiene temporada con episodio emitido
						var optSeason = obj.selectTemporadas.options;
						for(var nn = 1; nn <= obj.temporadas; nn ++){
							var tem = (nn < 10) ? 'S0' + nn : 'S' + nn;
							optSeason[optSeason.length] = new Option(tem, nn);
						}
					}else{
						obj.selectTemporadas.disabled = true;
						var optSeason = obj.selectTemporadas.options;
						optSeason[optSeason.length] = new Option('SXX', 1);
					}
					//agrego opciones al select de episodios
					if(obj.episodios != -1){//si tiene episodios
						var optEpisode = obj.selectEpisodios.options;
						for(var nn = 1; nn <= obj.episodios; nn ++){
							var epi = (nn < 10) ? 'E0' + nn : 'E' + nn;
							optEpisode[optEpisode.length] = new Option(epi, nn);
						}
					}else{
						this.selectEpisodios.disabled = true;
						var optEpisode = obj.selectEpisodios.options;
						optEpisode[optEpisode.length] = new Option('EXX', 1);
					}
					//seteo imagen del chk
					obj.imgCheck.src = chkOff;
					obj.imgCheck.title = 'Agregar "' + obj.titulo + '" a la agenda';
				}
				obj.cuandoMuestro();
				obj.bloqueoAgendar.style.display = 'none';
			}
		}
		var parametros = 'idserie=' + this.idSerie;
		reqInicio.open('POST', urlBaseValor + 'include/php/req_agenda/inicio_agendar.php', true);
		reqInicio.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		reqInicio.setRequestHeader("Content-length", parametros.length);
		reqInicio.setRequestHeader("Connection", "close");
		reqInicio.send(parametros);
	}
}

function actualizarEpiAgendar(temporada){//cuando cambio el select temporadas actualizo el de episodios
	var reqEpisodios = objAjax();
	if(reqEpisodios){
		this.bloqueoAgendar.style.display = 'block';
		var obj = this;
		reqEpisodios.onreadystatechange = function(){
			if(reqEpisodios.readyState == 4 && reqEpisodios.status == 200){
				obj.episodios = reqEpisodios.responseText;
				var opt = obj.selectEpisodios.options;
				//elimino options
				while(opt.length > 0){
					opt[0] = null;
				}
				var epi;
				for(var nn = 1; nn <= obj.episodios; nn ++){
					epi = (nn < 10) ? 'E0' + nn: 'E' + nn;
					opt[opt.length] = new Option(epi, nn);
				}
				obj.bloqueoAgendar.style.display = 'none';
			}
		}
		var parametros = 'idserie=' + this.idSerie + '&temporada=' + temporada;
		reqEpisodios.open('POST', urlBaseValor + 'include/php/req_agenda/episodios_x_temporada.php', true);
		reqEpisodios.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		reqEpisodios.setRequestHeader("Content-length", parametros.length);
		reqEpisodios.setRequestHeader("Connection", "close");
		reqEpisodios.send(parametros);
	}
}

//cuando quito una serie de la agenda actualizo con temporadas que tengan episodios con descarga disponible...
function actualizarTemAgendar(){
	var opt = this.selectTemporadas.options;
	//elimino options
	while(opt.length > 0){
		opt[0] = null;
	}
	var tem;
	for(var nn = 1; nn <= this.temporadas; nn ++){
		tem = (nn < 10) ? 'S0' + nn: 'S' + nn;
		opt[opt.length] = new Option(tem, nn);
	}
}

function actualizarAgenda(){
	if(this.agendada){
		this.quitarSerie();
		this.agendada = false;
		this.imgCheck.src = chkOff;
		this.imgCheck.title = 'Agregar "' + this.titulo + '" a la agenda';
		this.selectTemporadas.disabled = false;
		this.selectEpisodios.disabled = false;
		this.actualizarTem();
		this.actualizarEpi(1);
	}else{
		var temporada = this.selectTemporadas.selectedIndex + 1;
		var episodio = this.selectEpisodios.selectedIndex + 1;
		this.agregarSerie(temporada, episodio);
		this.agendada = true;
		this.imgCheck.src = chkOn;
		this.imgCheck.title = 'Quitar "' + this.titulo + '" de la agenda';
		this.selectTemporadas.disabled = true;
		this.selectEpisodios.disabled = true;
	}
}

function agregarSerieAgendar(temporada, episodio){
	var reqAgregar = objAjax();
	if(reqAgregar){
		this.bloqueoAgendar.style.display = 'block';
		var obj = this;
		reqAgregar.onreadystatechange = function(){
			if(reqAgregar.readyState == 4 && reqAgregar.status == 200){
				obj.cuandoAgregoSerie();
				obj.bloqueoAgendar.style.display = 'none';
			}
		}
		var parametros = 'acc=n&idserie=' + this.idSerie + '&temporada=' + temporada + '&episodio=' + episodio;
		reqAgregar.open('POST', urlBaseValor + 'include/php/req_agenda/actualizo_agenda.php', true);
		reqAgregar.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		reqAgregar.setRequestHeader("Content-length", parametros.length);
		reqAgregar.setRequestHeader("Connection", "close");
		reqAgregar.send(parametros);
	}
}

function quitarSerieAgendar(){
	var reqQuitar = objAjax();
	if(reqQuitar){
		this.bloqueoAgendar.style.display = 'block';
		var obj = this;
		reqQuitar.onreadystatechange = function(){
			if(reqQuitar.readyState == 4 && reqQuitar.status == 200){
				obj.cuandoQuitoSerie();
				obj.bloqueoAgendar.style.display = 'none';
			}
		}
		var parametros = 'acc=b&idserie=' + this.idSerie;
		reqQuitar.open('POST', urlBaseValor + 'include/php/req_agenda/actualizo_agenda.php', true);
		reqQuitar.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		reqQuitar.setRequestHeader("Content-length", parametros.length);
		reqQuitar.setRequestHeader("Connection", "close");
		reqQuitar.send(parametros);
	}
}

//	Funciones de eventos

function cuandoMuestroAgendar(){}

function cuandoAgregoSerieAgendar(){}

function cuandoQuitoSerieAgendar(){}

