//Es un contenedor especial para cuando se utiliza el embed en Iframe
function BlockContainerBody(key, version, host, options, readyCallback){
	this.block = null;
	this.onReady = readyCallback;
	this.popup = null;
	this.disable_status = false;

	this.key = key;
	this.version = version;
	this.host = host;
	this.options = (options==null)?{}:options;

	this.defaultOptions = {'OcultarInfo':0,
						   'OcultarMasOpciones':0,
						   'Bordes':1,
						   'OcultarHistorial':0,
						   'OcultarActualizar':0};
	this.loadBlock = function(key, version, options, host){
		BlockAPI.host = host;
		var self = this;

		this.block = new Block(key, version, options, host);
		//El bloque esta listo, le hago el bind del cambio de status y de bloque cargado

		this.block.bind('status_change', function(block, txt){
			self.changeStatus(txt);
		});

		this.block.bind('load', function(block, content){
			self.updateContent(content);
		});

		this.block.bind('login', function(block, result){
			self.loginCallback(result);
		});

		this.block.refresh();
	};
	
	this.updateContent = function(c){
		var cont_sel = '#container';
		var self = this;
		
		this.setupContainer();
		
		$(cont_sel).html(c);
		
		/*$(cont_sel+' .block-white-layer').css('width', $(cont_sel).width()+'px');
		$(cont_sel+' .block-white-layer').css('height', $(cont_sel).height()+'px');
		
		if($(cont_sel+' .block-white-layer').is(':hidden'))
			$(cont_sel+' .block-white-layer').show();
		$(cont_sel+' .block-white-layer').fadeIn('fast', function(){*/
			/*$(cont_sel+' .block-white-layer').fadeOut('fast', function(){ $(cont_sel+' .block-white-layer').hide(); });
		});*/
		
		if(this.block.getVersion() == 1)
			this.setStatus('Hace '+this.block.getDateDistance()+' - Última versión');
		else
			this.setStatus('Hace '+this.block.getDateDistance()+' - Versión '+this.block.getVersion()+'/'+this.block.getMaxVersion());
		this.updateLinks();
		
		if($(cont_sel).is(':hidden'))
			$(cont_sel).show();
		
	};
	
	this.changeStatus = function(txt){
		switch(txt){
			case 'initializing':
				if(this.block)
					this.setStatus('<img src="'+this.block.getHost()+'img/indicator.gif" align="absmiddle" />');
				else
					this.setStatus('Cargando..');
			break;
			case 'ready':
				this.setStatus('');
			break;
			case 'loading':
				if(this.block)
					this.setStatus('<img src="'+this.block.getHost()+'img/indicator.gif" align="absmiddle" /> Cargando..');
				else
					this.setStatus('Cargando..');
			break;
			case 'unknown':
				//this.setStatus('');
			break;
		}
	};
	
	this.setStatus = function(txt){
		if(this.disable_status)
			return;
		var menu_sel = '.block-menu';
		/*if($(menu_sel+' .block-status').is(':hidden'))
			$(menu_sel+' .block-status').fadeIn('fast');
		$(menu_sel+' .block-status').html(txt);
		this.hideStatus();*/
		$(menu_sel+' .block-refresh').attr('title', txt);
	};
	
	this.hideStatus = function(){
		setTimeout(function(){ $('.block-menu .block-status').fadeOut('fast'); }, 3000);
	};

	this.last = function(){
		if(this.block)
			this.block.last();
	};
	
	this.prev = function(){
		if(this.block)
			this.block.prev();
	};
	
	this.next = function(){
		if(this.block)
			this.block.next();
	};
	
	this.refresh = function(){
		if(this.block)
			this.block.refresh();
	};
	
	this.edit = function(){
		if(this.block){
			window.open(this.block.getHost()+'Block/edit?id='+this.block.getKey(), '', 'status=no,scrollbars=no,width=650,height=500');
			
			/*if(!this.block.loggedIn()){
				var self = this;
				this.login();
				return;
			}else{
				if(this.block.isOwner()){
					openEditor(this.block.getKey(), this.block.getHost());
				}else
					alert("No estas autorizado para editar este bloque");
			}*/
		}
	};
	
	this.login = function(){
		//Abre el dialogo para iniciar sesion
		var content = '<div class="block-login">\
		<form method="get">\
			<div class="row titular"><a href="'+this.block.getHost()+'"><img border="0" src="'+this.block.getHost()+'img/logo2_small.png" /></a></div>\
			<div class="row"><div class="label">Usuario:</div><div class="input"><input name="username" class="text-input" value="" /></div></div>\
			<div class="row"><div class="label">Contraseña:</div> <div class="input"><input name="password" class="text-input" type="password" value="" /></div></div>\
			<div class="row remember"><label><input type="checkbox" value="1" name="remember_me"/> Permanecer registrado</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div>\
			<div class="row centrado">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="Iniciar sesi&oacute;n" /></div>\
		</form>\
	</div>';
		
		this.popup = new Boxy(content, {title: "Iniciar sesi&oacute;n", modal:true});
		
		var form = this.popup.getContent().find('form');
		var self = this;
		form.submit(function(){
			self.loginSubmit();
			return false;
		});
		
		this.popup.show();
		this.popup.center('x');
		this.popup.center('y');
	};
	
	this.loginSubmit = function(){
		if(this.popup.getContent().find('form').size() == 0){
			return;
		}
		var form = this.popup.getContent().find('form')[0];
		var self = this;
		this.block.login(form.username.value, form.password.value, form.remember_me.checked);
		
	};
	
	this.loginCallback = function(result){
		if(!this.block.loggedIn())
			alert(result);
		else{
			this.popup.hide();
			this.edit();
		}
	};
	
	this.updateLinks = function(){
		var cont_sel = '#container';
		var menu_sel = '.block-menu';
		var post = $(menu_sel+' .block-post');
		var prev = $(menu_sel+' .block-prev');
		if(!post || !prev)
			return;
		if(!this.block){
			post.addClass('block-post_disabled');
			prev.addClass('block-prev_disabled');
			return;
		}else if(this.block.getVersion() == 1){
			if(this.block.getMaxVersion() > 1)
				prev.removeClass('block-prev_disabled');
			else
				prev.addClass('block-prev_disabled');
			post.addClass('block-post_disabled');
		}else if(this.block.getVersion() < this.block.getMaxVersion()){
			post.removeClass('block-post_disabled');
			prev.removeClass('block-prev_disabled');
		}else{
			post.removeClass('block-post_disabled');
			prev.addClass('block-prev_disabled');
		}
	};
	
	this.setupContainer = function(){
		//Crea todo el html necesario para msotrar el bloque
		
		var cont_sel = '#container';
		var menu_sel = '.block-menu';
		$(cont_sel).addClass('block-container');
		
		if($(menu_sel).size() == 0){
			//Es la primera vez que se hace el setup
			
			//Oculto el menu y el contenido
			$(menu_sel).hide();

			//Agrega la estructura de la botonera
			$(cont_sel).before('<div class="block-menu">\
					<a href="javascript:;" class="block-refresh" title="Actualizar"></a>\
					<a href="javascript:;" class="block-more" title="M&aacute;s opciones"></a>\
					<a href="javascript:;" class="block-post" title="Versi&oacute;n posterior"></a>\
					<a href="javascript:;" class="block-prev" title="Versi&oacute;n previa"></a>\
					<a href="javascript:;" class="block-edit" title="Editar contenido"></a>\
				</div>');

			var self = this;
			$(document.body).bind('mouseenter', function(){
				$(menu_sel).fadeIn('fast');
				$(menu_sel).css('left', ($(window).width()-$(menu_sel).width()-20)+'px');
			});
			$(document.body).bind('mouseleave', function(e){
				$(menu_sel).fadeOut('fast');
			});
			/*$(menu_sel).bind('mouseenter', function(){
				if(!self.disable_status)
					$(menu_sel+' .block-status').fadeIn('fast');
			});
			$(menu_sel).bind('mouseleave', function(){
				$(menu_sel+' .block-status').fadeOut('fast');
			});*/
			$(menu_sel+' .block-refresh').bind('click', function(){
				self.last();
			});
			$(menu_sel+' .block-prev').bind('click', function(){
				self.prev();
			});
			$(menu_sel+' .block-post').bind('click', function(){
				self.next();
			});
			$(menu_sel+' .block-edit').bind('click', function(){
				self.edit();
			});
			
			$(cont_sel).css('width', $(window).width()+'px');
			$(cont_sel).css('height', $(window).height()+'px');
			
			$(window).resize(function(){
				$(cont_sel).css('width', $(window).width()+'px');
				$(cont_sel).css('height', $(window).height()+'px');					  
			});
		}
		
		var opts = this.block.getOptions();
		
		if(opts['OcultarHistorial'] == '1'){
			$(menu_sel+' .block-prev').hide();
			$(menu_sel+' .block-post').hide();
		}else{
			$(menu_sel+' .block-prev').show();
			$(menu_sel+' .block-post').show();
		}
		if(opts['OcultarActualizar'] == '1'){
			$(menu_sel+' .block-refresh').hide();
		}else{
			$(menu_sel+' .block-refresh').show();
		}
		if(opts['OcultarMasOpciones'] == '1'){
			$(menu_sel+' .block-more').hide();
		}else{
			$(menu_sel+' .block-more').show();
		}
		
		if(opts['OcultarInfo'] == '1'){
			this.disable_status = true;
		}else{
			this.disable_status = false;
		}
		
		if(this.block.isOwner()){
			$(menu_sel+' .block-edit').show();
		}else{
			$(menu_sel+' .block-edit').hide();
		}

		$(menu_sel+' .block-more').attr('href', this.block.getHost()+'Block/view?k='+this.block.getKey());
	};
	
	this.init = function(){
		//inicializo el contenedor, es independiente de los bloques
		
		var self = this;
		
		if(!BlockAPI.isLoaded()){
			BlockAPI.init(function(){
				self.init();				 
			});
			return;
		}
		BlockAPI.addContainer('body', this);
		
		if(this.key)
			this.loadBlock(this.key, this.version, this.options, this.host);

		if(this.onReady)
			this.onReady();
	};

	this.init();
}
