/**
 * Core de ImagenZac
 * Menta Network
 */
var Imagen = {
    dias: ['Domingo' ,'Lunes' ,'Martes' ,'Miércoles' ,'Jueves' ,'Viernes' ,'Sábado'],
    meses: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo' ,'Junio' ,'Julio' ,'Agosto' ,'Septiembre' ,'Octubre' ,'Noviembre' ,'Diciembre'],
    loading: function(loading, elem) {
        elem = $(elem);
        if (elem) {
            elem.setStyle('display', ['none', 'block'][+loading]);
        }
    }
};


/**
 * aumentar/disminuir texto
 */
Imagen.Texto = new Class({
    
    Implements: Options,
    
    options: {
        rango: 2
    },
    
    initialize: function(opciones) {
        this.setOptions(opciones)
        this.contenedor = $(this.options.contenedor);
        this.tamanioOriginal = this.obtenerTamanioFuente();
        this.rango = this.options.rango;
        this.offset = 0;
        var btnAumentar = $(this.options.btnAumentar);
        var btnDisminuir = $(this.options.btnDisminuir);
        if (btnAumentar && btnDisminuir) {
	        btnAumentar.addEvent('click', this.aumentar.bind(this));
	        btnDisminuir.addEvent('click', this.disminuir.bind(this));
        }
    },
    
    obtenerTamanioFuente: function() {
        var fontSize = this.contenedor.getStyle('font-size');
        fontSize = parseInt(fontSize)
        return fontSize;
    },
    
    aumentar: function() {
        if (this.offset < this.rango) {
            this.offset++;
	        this.contenedor.setStyle('font-size', this.obtenerTamanioFuente() +1)
        }
        return false;
    },
    
    disminuir: function() {
        if (this.offset > (this.rango * -1)) {
            this.offset--;
            this.contenedor.setStyle('font-size', this.obtenerTamanioFuente() -1)
            
        }
        return false;
    }    

});


Imagen.tabs = new Class({
    Implements: Options,
    
    /**
     * Opciones:
     * - claseInvisible: clase css utilizada para ocultar el contenido de las capas
     * - tabs: objetos tabs
     * - divs: objetos de divs con el contenido de su tab. 
     * El orden de tabs y divs debe corresponder.
     */
    initialize: function(opciones) {
        this.setOptions(opciones);
        
        this.tabs = this.options.tabs;
        this.divs = this.options.divs;
        if (this.tabs.length != this.divs.length) {
            return;
        }
        this.observar();
    },
    
    /**
     * Agrega los eventos necesarios a las tabs
     */
    observar: function() {
        this.tabs.each(function(tab, i) {
            tab.addEvent('click', this.activar.bind(this, i));
        }, this);
    },
    
    /**
     * Activa un tab.
     * Al terminar de mostrar el contenido correspondiente al tab, si el método
     * callback está definido, lo ejecuta. Esto sirve para que clases hijas puedan 
     * cambiar el fondo del tab activo, por ejemplo.
     */
    activar: function(i) {
        var activar = $defined(this.options.claseTabActiva);
	    // ocultar todas las capas
        this.divs.each(function(div){
            div.addClass(this.options.claseInvisible);
        }, this);
        // quitar clase de tab activa a todas las tabs
        if (activar) {
	        this.tabs.each(function(tab){
                tab.removeClass(this.options.claseTabActiva);
	        }, this);
        }
        // mostrar contenido activo y aplicar clase de tab activa
        this.divs[i].removeClass(this.options.claseInvisible);
        this.tabs[i].addClass(this.options.claseTabActiva);
        // ejecutar callback
        if (typeof this.options.callback == 'function')
            this.options.callback.bind(this, i)();
        return false;
    }
});


/*****************************************************************/
window.addEvent('domready', function() {
    /*** buscador ***/
    var buscador = $('buscador');
    if (buscador) buscador.addEvent('submit', function() {
	    var q = encodeURIComponent($('q').value.trim());
        if (q != '') self.location.href = buscador.action + q;
	    return false;
    });
});



