var $categorias, $galerias, $fotos;

$.fn.jGaleria = function(options) {
    var opts = $.extend({}, $.fn.jGaleria.defaults, options);
	var $this = $(this);
	$categorias = $this.find('.categorias');
	$galerias = $this.find('.galerias');
	$fotos = $this.find('#fotos');
	$paginadoTop = $this.find('#paginadoTop');
	$paginadoBottom = $this.find('#paginadoBottom');
	
	if(opts.categoria != '' && opts.galeria != ''){
		$.fn.jGaleria.getFotos(opts.categoria, opts.galeria, options);
	}else if(opts.categoria != ''){
		$.fn.jGaleria.getGalerias(opts.categoria, options);
	}else{
		$.fn.jGaleria.getCategorias(options);
	}
};

$.fn.jGaleria.defaults = {
	 url: '/funciones/funciones_galeria.php'
	,dir: '../archivos/galerias/'
	,categoria: ''
	,galeria: ''
	,previewGaleria: false
	,previewGaleriaThumb: 1
	,showPics: 6
	,type: 1
	,thumb: 0
	,paginateTop: ''
	,paginateBottom: ''
	,highslide: true
	,highslideOptions: {}
	,loadStatusText: 'Cargando...'
	,onePageText: ''
	,returnText: '&laquo; Volver'
	,ajaxBustCache: true
	,paginatePersist: true
	,pageRange: 4
	,separator: '&middot;&middot;&middot;'
	,showNumbers: true
};

$.fn.jGaleria.getCategorias = function(options){
	
	var opts = $.extend({}, $.fn.jGaleria.defaults, options);
	if(opts.previewCategoria){
		$galerias.hide();
		$fotos.hide();
		$paginadoTop.hide();
		$paginadoBottom.hide();
	}
	$categorias.html(opts.loadStatusText);
	$.ajax({
		 url: opts.url
		,method: 'POST'
		,data: {
			 accion: 'leer_categorias'
			,dir: opts.dir
			,previewGaleria: opts.previewCategoria
			,previewGaleriaThumb: opts.previewCategoriaThumb
		}
		,complete: function(response){
			$categorias.html(response.responseText);
			if(opts.galeria == '' || opts.previewCategoria){
				$('.galerias ul li a').each(function(){
					$(this).removeClass('selected');
				});
				$(this).addClass('selected');
				if(opts.previewCategoria){
					$('.categorias ul ul li a').click(function(){
							var objCategoria = $(this).parent().parent().get(0);
							var categoria = $(objCategoria).attr('value')
							var galeria = $(this).text();
							$.fn.jGaleria.getFotos(categoria, galeria, options);
					});
				}else{
					$('.categorias ul li a').click(function(){
							var categoria = $(this).text();
							$.fn.jGaleria.getGalerias(categoria, options);
					});
	
				}
			}
		}
	});
}


$.fn.jGaleria.getGalerias = function(categoria, options){
	var opts = $.extend({}, $.fn.jGaleria.defaults, options);
	$galerias.html(opts.loadStatusText);
	$.ajax({
		 url: opts.url
		,method: 'POST'
		,data: {
			 accion: 'leer_categorias'
			,dir: opts.dir+categoria
			,previewGaleria: opts.previewGaleria
			,previewGaleriaThumb: opts.previewGaleriaThumb
		}
		,complete: function(response){
			$galerias.html(response.responseText);
			$('.galerias ul li a').click(function(){
				$('.galerias ul li a').each(function(){
					$(this).removeClass('selected');
				});
				$(this).addClass('selected');
				var galeria = $(this).text();
				$.fn.jGaleria.getFotos(categoria, galeria, options);
			});
		}
	});
}

$.fn.jGaleria.getFotos = function(categoria, galeria, options){
	
	var opts = $.extend({}, $.fn.jGaleria.defaults, options);	
	if(opts.previewCategoria){
		
		$categorias.html('<a href="#"  onclick="return false;" class="volver">'+opts.returnText+'</a> | <span class="titulo" >'+categoria+' &raquo; ' +galeria+'</span>');
		$('.categorias a').click(function(){
			$.fn.jGaleria.getCategorias(options);
		});
		
		$fotos.show();
		$paginadoTop.show();
		$paginadoBottom.show();

	
	}
	$.getJSON(
		 opts.url
		,{
			 accion: 'do_paginado'
			,dir: opts.dir+categoria+'/'+galeria+'/'
			,type: opts.type
			,showPics: opts.showPics
		}
		,function(data){
			if(data.pages == null){
				data.pages = [];
			}
			
			$fotos.ajaxPagination({
				 book: data
				,showPics: opts.showPics
				,thumb: opts.thumb
				,paginateTop: opts.paginateTop
				,paginateBottom: opts.paginateBottom
				,highslide: opts.highslide
				,loadStatusText: opts.loadStatusText
				,onePageText: opts.onePageText
				,ajaxBustCache: opts.ajaxBustCache
				,paginatePersist: opts.paginatePersist
				,pageRange: opts.pageRange
				,separator: opts.separator
				,showNumbers: opts.showNumbers
			});
		}
	);
}