var GaleriaFotosMediator = function(viewComponent/*Object*/){
	
	this.Extends = Mediator;
	
	//public methods
	
	this.initialize = function(viewComponent/*GaleriaFotosApp*/)/*void*/{
		this.parent(GaleriaFotosMediator.NAME,viewComponent);		
	}
	
	this.onRegister = function(){
		
		this.galeriaProxy/*GaleriaFotosProxy*/ = this.getFacade().retrieveProxy(GaleriaFotosProxy.NAME);
		
		this.onClickNext = this.onClickNext.bindWithEvent(this);
		this.onClickPrev = this.onClickPrev.bindWithEvent(this);
		this.onClickThumbFoto = this.onClickThumbFoto.bindWithEvent(this);
		this.onClickGaleria = this.onClickGaleria.bindWithEvent(this);
		
		var app/*GaleriaFotosApp*/ = this.getApp();

		app.addEvent(GaleriaFotosApp.CLICK_NEXT_PAGINA,this.onClickNext);
		app.addEvent(GaleriaFotosApp.CLICK_PREV_PAGINA,this.onClickPrev);
		app.addEvent(GaleriaFotosApp.CLICK_THUMB_FOTO,this.onClickThumbFoto);
		app.addEvent(GaleriaFotosApp.CLICK_GALERIA,this.onClickGaleria);
		
	}
	
	this.listNotificationInterests = function(){
		return [GaleriaFotosFacade.XML_GALERIA_LOADED,
		        GaleriaFotosProxy.CURRENT_PAGE_CHANGE,
		        GaleriaFotosProxy.CURRENT_GALERIA_CHANGE];
	}
	
	this.handleNotification = function(note/*INotification*/){
		
		switch(note.getName()){
		
			case GaleriaFotosFacade.XML_GALERIA_LOADED:
				 
				var params = note.getBody();
				
				var fotos/*Array*/= params.fotos;
				
				var app = this.getApp();

				var plotFirst/*Boolean*/ = false;

				if(params.init) plotFirst = true;
				
				this.getApp().updateListaFotos(fotos,plotFirst);
				
			break;
			
			case GaleriaFotosProxy.CURRENT_PAGE_CHANGE:
				
				var page/*int*/ = note.getBody();
				var app = this.getApp();
				
				var paginas = this.galeriaProxy.getNumeroPaginas();
				
				app.showSetas();
				

				if(page==1 || paginas==0){
					app.hideSetaPrev();
				}
				
				if(page==paginas || paginas == 0){
					app.hideSetaNext();
				}
				
				this.sendNotification(GaleriaFotosFacade.LOAD_XML_GALERIA,{page:page,galeria:app.idGaleria,init:app.initFirst});
				
				if(app.initFirst ==true){app.initFirst = false;}
				
			break;
			
			case GaleriaFotosProxy.CURRENT_GALERIA_CHANGE:
				
				var galeria/*int*/ = note.getBody();

				var app = this.getApp();
				
				
				app.selectGaleria(galeria);
				
				app.idGaleria = galeria;
				
				app.initFirst = true;
				
				//this.sendNotification(GaleriaFotosFacade.LOAD_XML_GALERIA,{page:1,galeria:galeria,init:true});
				
				this.galeriaProxy.setCurrentPage(1);
				
			break;
		}
	}
	
	//
	
	this.getApp=function()/*GaleriaFotosApp*/{return this.viewComponent};
	
	//private

	this.galeriaProxy/*GaleriaFotosProxy*/;
	
	//handlers
	
	this.onClickNext = function(e/*Event*/)/*void*/{
		this.galeriaProxy.nextPage();
		
	}

	this.onClickPrev = function(e/*Event*/)/*void*/{
	
		this.galeriaProxy.prevPage();
	}
	
	
	this.onClickThumbFoto=function(foto/*Foto*/)/*void*/{
	
		this.getApp().updateImagemAmpliada(foto);
	}
	
	this.onClickGaleria=function(id){
		
		this.getApp().idGaleria = id;
		
		this.galeriaProxy.setCurrentGaleria(id);
		
	}
	
}

GaleriaFotosMediator = new Class(new GaleriaFotosMediator());

GaleriaFotosMediator.NAME/*String*/ = "galeriaFotosMediator";

