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

var Desplegable = function(){
//propiedades
	this.idContenedor = '';
	this.titulo = '';
	this.fileContenido = '';
	this.imgAbroCierro = document.createElement('img');
	this.imgFlechaAbajo = urlBase + 'img/desp_abrir.png';
	this.imgFlechaArriba = urlBase + 'img/desp_cerrar.png';
	this.ventana = document.createElement('div');
	this.divBotonCerrar = document.createElement('div');
	this.desplegado = false;
	this.posTop = 0;
	this.posLeft = 0;
	this.indiceZ = 10;
//métodos
	this.mostrar = mostrarDesplegable;
	this.abroCierro = abroCierroDesplegable;
//eventos
	this.cuandoMuestro = cuandoMuestroDesplegable;
	this.cuandoCierro = cuandoCierroDesplegable;
	this.cuandoAbro = cuandoAbroDesplegable;
}

function mostrarDesplegable(){
	var reqContenido = objAjax();
	if(reqContenido){
		var obj = this;
		reqContenido.onreadystatechange = function(){
			if(reqContenido.readyState == 4 && reqContenido.status == 200){
				obj.ventana.innerHTML = reqContenido.responseText;
				obj.cuandoMuestro();//ejecuto función del evento
			}
		}
		reqContenido.open('GET', this.fileContenido, true);
		reqContenido.send(null);
		this.imgAbroCierro.style.width = '15px';
		this.imgAbroCierro.style.height = '11px';

		if(this.desplegado){
			this.imgAbroCierro.src = this.imgFlechaArriba;
		}else{
			this.imgAbroCierro.src = this.imgFlechaAbajo;
		}
		if(this.imgAbroCierro.attachEvent){//ie
			var imgAC = this.imgAbroCierro;
			this.imgAbroCierro.attachEvent('onclick',function(e){ obj.abroCierro() });
			this.imgAbroCierro.attachEvent('onmouseover',function(e){ imgAC.style.cursor = 'pointer'; });
			this.imgAbroCierro.attachEvent('onmouseout',function(e){ imgAC.style.cursor = 'auto'; });
		}else{//moz
			this.imgAbroCierro.addEventListener('click',function(e){ obj.abroCierro() }, false);
			this.imgAbroCierro.addEventListener('mouseover',function(e){ this.style.cursor = 'pointer'; }, false);
			this.imgAbroCierro.addEventListener('mouseout',function(e){ this.style.cursor = 'auto'; }, false);
		}
		var spanTitulo = document.createElement('span');
		spanTitulo.style.color = '#0f5383';
		spanTitulo.innerHTML = this.titulo + ' ';
		if(spanTitulo.attachEvent){//ie
			spanTitulo.attachEvent('onclick',function(e){ obj.abroCierro() });
			spanTitulo.attachEvent('onmouseover',function(e){ spanTitulo.style.cursor = 'pointer'; });
			spanTitulo.attachEvent('onmouseout',function(e){ spanTitulo.style.cursor = 'auto'; });
		}else{//moz
			spanTitulo.addEventListener('click',function(e){ obj.abroCierro() }, false);
			spanTitulo.addEventListener('mouseover',function(e){ this.style.cursor = 'pointer'; }, false);
			spanTitulo.addEventListener('mouseout',function(e){ this.style.cursor = 'auto'; }, false);
		}

		this.ventana.style.position = 'relative';
		this.ventana.style.zIndex = this.indiceZ;
		this.ventana.style.marginTop = '10px';
		this.ventana.style.background = '#ffffff';
		this.ventana.style.borderLeft = '1px solid #cedafa';
		this.ventana.style.borderTop = '1px solid #cedafa';
		this.ventana.style.borderRight = '1px solid #cedafa';

		this.divBotonCerrar.style.position = 'relative';
		this.divBotonCerrar.style.textAlign = 'right';
		this.divBotonCerrar.style.padding = '0 20px 15px 0';
		this.divBotonCerrar.style.background = '#ffffff';
		this.divBotonCerrar.style.borderLeft = '1px solid #cedafa';
		this.divBotonCerrar.style.borderBottom = '1px solid #cedafa';
		this.divBotonCerrar.style.borderRight = '1px solid #cedafa';
		this.divBotonCerrar.style.bottom = '0px';

//	borriqueta
		var spanCerrar = document.createElement('span');
		spanCerrar.style.color = '#0f5383';
		spanCerrar.innerHTML = 'Cerrar <img src="../../img/quitar.png" style="width:10px; height:10px;" />';
		if(spanCerrar.attachEvent){//ie
			spanCerrar.attachEvent('onclick',function(e){ obj.abroCierro() });
			spanCerrar.attachEvent('onmouseover',function(e){ spanCerrar.style.cursor = 'pointer'; });
			spanCerrar.attachEvent('onmouseout',function(e){ spanCerrar.style.cursor = 'auto'; });
		}else{//moz
			spanCerrar.addEventListener('click',function(e){ obj.abroCierro() }, false);
			spanCerrar.addEventListener('mouseover',function(e){ this.style.cursor = 'pointer'; }, false);
			spanCerrar.addEventListener('mouseout',function(e){ this.style.cursor = 'auto'; }, false);
		}
		this.divBotonCerrar.appendChild(spanCerrar);

		if(this.desplegado){
			this.ventana.style.display = 'block';
			this.divBotonCerrar.style.display = 'block';
		}else{
			this.ventana.style.display = 'none';
			this.divBotonCerrar.style.display = 'none';
		}
		document.getElementById(this.idContenedor).style.position = 'absolute';
		document.getElementById(this.idContenedor).style.top = this.posTop + 'px';
		document.getElementById(this.idContenedor).style.left = this.posLeft + 'px';
		document.getElementById(this.idContenedor).style.overflow = 'auto';
		document.getElementById(this.idContenedor).style.zIndex = this.indiceZ;;
		document.getElementById(this.idContenedor).style.textAlign = 'left';
		document.getElementById(this.idContenedor).appendChild(spanTitulo);
		document.getElementById(this.idContenedor).appendChild(this.imgAbroCierro);
		document.getElementById(this.idContenedor).appendChild(this.ventana);
		document.getElementById(this.idContenedor).appendChild(this.divBotonCerrar);
	}
}

function fadeIn(obj){
	var opacidad = 0;
	obj.ventana.style.opacity = (opacidad / 100);
	obj.ventana.style.MozOpacity = (opacidad / 100);
	obj.ventana.style.KhtmlOpacity = (opacidad / 100);
	obj.ventana.style.filter = "alpha(opacity=" + opacidad + ")";
	obj.ventana.style.display = 'block';
	obj.divBotonCerrar.style.opacity = (opacidad / 100);
	obj.divBotonCerrar.style.MozOpacity = (opacidad / 100);
	obj.divBotonCerrar.style.KhtmlOpacity = (opacidad / 100);
	obj.divBotonCerrar.style.filter = "alpha(opacity=" + opacidad + ")";
	obj.divBotonCerrar.style.display = 'block';
	this.fundoIn = function(){
		opacidad += 20;
		obj.ventana.style.opacity = (opacidad / 100);
		obj.ventana.style.MozOpacity = (opacidad / 100);
		obj.ventana.style.KhtmlOpacity = (opacidad / 100);
		obj.ventana.style.filter = "alpha(opacity=" + opacidad + ")";
		obj.divBotonCerrar.style.opacity = (opacidad / 100);
		obj.divBotonCerrar.style.MozOpacity = (opacidad / 100);
		obj.divBotonCerrar.style.KhtmlOpacity = (opacidad / 100);
		obj.divBotonCerrar.style.filter = "alpha(opacity=" + opacidad + ")";
		if(opacidad < 100){
			setTimeout('fundoIn()', 50);
		}
	}
	fundoIn();
}

function fadeOut(obj){
	var opacidad = 100;
	obj.ventana.style.opacity = (opacidad / 100);
	obj.ventana.style.MozOpacity = (opacidad / 100);
	obj.ventana.style.KhtmlOpacity = (opacidad / 100);
	obj.ventana.style.filter = "alpha(opacity=" + opacidad + ")";
	obj.divBotonCerrar.style.opacity = (opacidad / 100);
	obj.divBotonCerrar.style.MozOpacity = (opacidad / 100);
	obj.divBotonCerrar.style.KhtmlOpacity = (opacidad / 100);
	obj.divBotonCerrar.style.filter = "alpha(opacity=" + opacidad + ")";
	this.fundoOut = function(){
		opacidad -= 20;
		obj.ventana.style.opacity = (opacidad / 100);
		obj.ventana.style.MozOpacity = (opacidad / 100);
		obj.ventana.style.KhtmlOpacity = (opacidad / 100);
		obj.ventana.style.filter = "alpha(opacity=" + opacidad + ")";
		obj.divBotonCerrar.style.opacity = (opacidad / 100);
		obj.divBotonCerrar.style.MozOpacity = (opacidad / 100);
		obj.divBotonCerrar.style.KhtmlOpacity = (opacidad / 100);
		obj.divBotonCerrar.style.filter = "alpha(opacity=" + opacidad + ")";
		if(opacidad > 0){
			setTimeout('fundoOut()', 50);
		}else{
			obj.ventana.style.display = 'none';
			obj.divBotonCerrar.style.display = 'none';
		}
	}
	fundoOut();
}

function abroCierroDesplegable(){
	if(!this.desplegado){
		//abro
		this.cuandoAbro();//ejecuto función del evento

		for(objeto in window){//reviso todos los objetos
			if(eval("Desplegable.prototype.isPrototypeOf(" + objeto + ")")){//si pertenece a la clase Desplegable()
				if(eval("window." + objeto + ".desplegado")){//y está abierto
					eval("window." + objeto + ".abroCierro()");//lo cierro
				}
			}
		}

		this.desplegado = true;
		fadeIn(this);
		this.imgAbroCierro.src = this.imgFlechaArriba;
	}else{
		//cierro
		this.desplegado = false;
		fadeOut(this);
		this.cuandoCierro();//ejecuto función del evento
		this.imgAbroCierro.src = this.imgFlechaAbajo;
		//si dentro del desplegable hay inputs type password borro su value
/*		var cuadrosTexto = this.ventana.getElementsByTagName('input');
		for(var nroCuadro = 0; nroCuadro < cuadrosTexto.length; nroCuadro ++){
			if(cuadrosTexto[nroCuadro].type == 'password'){
				cuadrosTexto[nroCuadro].value = '';
			}
		}*/
	}
}

function cuandoMuestroDesplegable(){}

function cuandoCierroDesplegable(){}

function cuandoAbroDesplegable(){}

function objAjax(){
	var paginaRequested = false;
	if(window.XMLHttpRequest){//si es mozilla, Safari etc
		paginaRequested = new XMLHttpRequest();
		if(paginaRequested.overrideMimeType){
			paginaRequested.overrideMimeType('text/html');
		}
	}else if(window.ActiveXObject){//si es IE
		try{
			paginaRequested = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e){//si es versión antigua
			try{
				paginaRequested = new ActiveXObject("Microsoft.XMLHTTP");
			}
		catch(e){}
		}
	}else{
		return false;
	}
	return paginaRequested;
}
