
// Detectamos javascript habilitado
document.documentElement.className = 'js-enabled';

window.addEvent('domready', function(){
    $$('li:first-child').addClass('first-child');
    $$('li:last-child').addClass('last-child');
    $$('.comment-content p:last-child').addClass('last-child');
    $$('li:nth-child(odd)').addClass('odd');
    $$('.tabs .fotos li:nth-child(4n+0)').addClass('last-child');
    
    $$('div.tabs').each(function(el){
        new KTabs(el,{
            idPanel: 'item-seleccionado'
        })
    });
    
    
    $$('.agenda dd').each(function(el, ind){
        ind += 1;
        if((ind % 2)) el.addClass('odd'); // si es impar...        
    });
    
    // Paginacion conciertos
    $$('div.agenda > div.contenido').each(function(el){
        new CZ.Paginador(el,{
	    numeroItems: 5, // items por bloque
	    ocultarPaginacion: true, // ocultar los links anterior y siguiente si el numero de items publicados es menor o igual al numero de items por bloque. Por defecto TRUE
            ruta: CZ.url // esta opcion solo se usa si la web es multiidioma para localizar las imagenes de anteriores y siguientes
        });
    });

    
    
    new Galeria($$('.tabs .fotos')[0],{
        idPanel: 'item-seleccionado'
    })

});


var KTabs = new Class({
    Implements: Options,
    options: {
        tabContentWrapper: '.tab-block',
        contentHeader: '.tab-link',
        preHideClass: 'ocultojs',
        offscreenClass: 'invisible',
        wrapperLinkTabs: 'tab-buttons',
        activeItem: 'active',
        idPanel: 'item-seleccionado'
    },
    
    initialize: function(element, options){
        this.setOptions(options);
        this.panel = $(this.options.idPanel);
        this.hideHeaders(element.getElements(this.options.contentHeader), this.options.offscreenClass);
        this.makeTabs(element.getElements(this.options.contentHeader), element);
    },
    
    hideHeaders: function(headers, offscreenClass){
        headers.addClass(offscreenClass);
    },
    
    makeTabs: function(headers, globalWrapper){
        var ul = new Element('ul');
        var wrapper = new Element('div',{'class': this.options.wrapperLinkTabs}).grab(ul);
        headers.each(function(header, ind){
            header.getParent().set('item', ind);
            var listItem = new Element('li', {
                'item': ind
            });
            listItem.inject(ul);
            var link = new Element('a', {
                href: '#',
                text: header.get('text')
            }).inject(listItem);
        });
        ul.getElement('li:first-child').addClass(this.options.activeItem);
        globalWrapper.grab(wrapper, 'top');
        this.showBlocks(ul.getElements('a'), globalWrapper);
    },
    
    showBlocks: function(links, globalWrapper){
        var activeItem = this.options.activeItem;
        var preHideClass = this.options.preHideClass;
        var panel = this.panel;
        var _this = this;
        links.each(function(el){
            el.addEvent('click', function(ev){
                ev.stop();
                var blocks = globalWrapper.getElements(_this.options.tabContentWrapper);
                var block = globalWrapper.getElement('div[item=' + el.getParent('li').get('item') + ']');
                el.block = block;
                
                if(!el.getParent('li').hasClass(activeItem)){
                    // cambio de capa visible
                    var capas = _this.panel.getElements('div');
                    capas.each(function(el){
                        if(el.hasClass(preHideClass)) el.removeClass(preHideClass);
                        else{
                            el.addClass(preHideClass);
                        }
                    })                    
                    el.getParent('ul').getElements('li').removeClass(activeItem);
                    el.getParent('li').addClass(activeItem);
                    blocks.fade('hide');                    
                    blocks.addClass(preHideClass);
                    el.block.fade('show').removeClass(preHideClass);
                }
            });
        });
    }
});







var Galeria = new Class({
    Implements: Options,
    options: {
        idPanel: '',
        claseActivo: 'activo',
        anchoImgGrande: 353
    },
    
    initialize: function(element, options){
        this.element = element;
        this.setOptions(options);
        this.contenedor = $(this.options.idPanel);
        if(this.contenedor) {
            this.preparaListado();
            this.preLoadImg();
            this.loadImg();
        }
    },
    
    preparaListado: function(){
        this.element.getElements('li a').each(function(el){
            var span = new Element('span');
            el.grab(span);
        })
        this.element.getElement('li').addClass(this.options.claseActivo)
    },
    
    preLoadImg: function(){
        var primerLink = this.element.getElement('li a').get('href');
        var primeraImg = new Element('img',{
            src: primerLink,
            alt: '',
            width: this.options.anchoImgGrande
        }).inject(this.contenedor.getElement('div'))
    },
    
    loadImg: function(){
        var _this = this;
        this.element.getElements('li a').each(function(link){
            link.addEvent('click', function(ev){
                ev.stop();
                this.element.getElements('li').removeClass(this.options.claseActivo);
                link.getParent('li').addClass(this.options.claseActivo);
                var imagenPrevia = this.contenedor.getElement('img');
		imagenPrevia.fade('out');
		
		var contenedorImagen = this.contenedor.getElement('div');
		(function(){
		    imagenPrevia.dispose();
		    contenedorImagen.addClass('cargando');
		}.delay(600))
		
		var nuevaImagen = new Element('img',{
		    src: link.get('href'),
		    alt: '',
		    width: this.options.anchoImgGrande,
		    styles: {
			visibility: 'hidden',
			opacity: 0
		    }
		}).inject(this.contenedor.getElement('div'));
		nuevaImagen.onload = function(){
		    contenedorImagen.removeClass('cargando');
		    nuevaImagen.fade('in');
		}
            }.bind(this))
        }.bind(this))        
    }
});



var CZ = CZ || {};

CZ.Paginador = new Class({
    Implements: Options,
    options: {
        numeroItems: 5,
        claseLinkDeshabilitado: 'disabled',
        ruta: '',
	ocultarPaginacion: true,
        rutaImgPrevios: '/wp-content/themes/shaila/img/pagePrev.gif',
        rutaImgSiguientes: '/wp-content/themes/shaila/img/pageNext.gif',
        literales: {
            ES: {
                imgAltPrevios: 'Anteriores',
                imgAltSiguientes: 'Siguientes'
            },
            EN: {
                imgAltPrevios: 'Previous',
                imgAltSiguientes: 'Next'
            }
        }
    },
    initialize: function(element, options){
        this.setOptions(options);
        this.element = element;
        this.opt = this.options;
        this.getDocumentLang();
        this.lang == 'en' ? this.literales = this.opt.literales.EN : this.literales = this.opt.literales.ES;
        this.ul = this.element.getElement('dl');
        if(!this.ul) return;

		if(this.opt.ocultarPaginacion){
			this.totalItems = this.ul.getElements('dt').length;
			if(this.totalItems <= this.opt.numeroItems) return;
		}			
		
        this.ocultaItems();
        this.creaControles();
        this.prev = this.links[0];
        this.next = this.links[1];
    },
    getDocumentLang: function(){
        this.lang = $$('html')[0].get('xml:lang') || $$('html')[0].get('lang');
        if(!this.lang) this.lang = 'en'; // ingles por defecto
        return this.lang;
    },
    creaControles: function(){        
        // var divPaginacion = new Element('div', {'class': 'paginacion'});
        var ulDivPaginacion = new Element('ul');
        // LI previos
        var liPrevios = new Element('li',{
            'class': 'previous'
        }).inject(ulDivPaginacion);
        var linkPrevios = new Element('a',{
            'class': this.opt.claseLinkDeshabilitado,
            'href': '#',
            'restantes': 0,
            'text': this.literales.imgAltPrevios
        }).inject(liPrevios);

        
        // LI siguientes
        var liSiguientes = new Element('li',{
            'class': 'next'
        }).inject(ulDivPaginacion);
        var linkSiguientes = new Element('a',{
            'href': '#',
            'restantes': this.ul.getElements('li').length - this.opt.numeroItems,
            'text': this.literales.imgAltSiguientes
        }).inject(liSiguientes);

        var links = ulDivPaginacion.getElements('a');
        links.addEvent('click', this.paginador.bind(this));
        this.links = links;
        this.element.grab(ulDivPaginacion, 'bottom');
        return this.links;
    },
    ocultaItems: function(){
        var itemsDT = this.ul.getElements('dt');
        itemsDT.setStyle('display', 'none');
        itemsDT.each(function(el, ind){
            el.set('item', ind + 1);
            if(ind < this.opt.numeroItems){
                el.setStyle('display', '');
            }
        }.bind(this));
        
        var itemsDD = this.ul.getElements('dd');
        itemsDD.setStyle('display', 'none');
        itemsDD.each(function(el, ind){
            el.set('item', ind + 1);
            if(ind < this.opt.numeroItems){
                el.setStyle('display', '');
            }
        }.bind(this))
        
    },
    paginador: function(ev){
        ev.stop();
        if(Browser.Engine.trident) var target = ev.target || $(ev.srcElement);
        var link = ev.target;
        
        if(link.tagName != 'A') link = link.getParent('a');
        
        var numeroItems = this.opt.numeroItems;
        
        
        if(link == this.next && !link.hasClass(this.opt.claseLinkDeshabilitado)){
            this.prev.set('restantes', this.prev.get('restantes').toInt() + numeroItems).removeClass(this.opt.claseLinkDeshabilitado);
            this.next.set('restantes', this.next.get('restantes').toInt() - numeroItems);
            if(this.next.get('restantes').toInt() <= 0) this.next.addClass(this.opt.claseLinkDeshabilitado);
            this.cambiaVisibles(numeroItems);
        }        
        if(link == this.prev && !link.hasClass(this.opt.claseLinkDeshabilitado)){
            this.prev.set('restantes', this.prev.get('restantes').toInt() - numeroItems);
            this.next.set('restantes', this.next.get('restantes').toInt() + numeroItems).removeClass(this.opt.claseLinkDeshabilitado);
            if(this.prev.get('restantes').toInt() <= 0) this.prev.addClass(this.opt.claseLinkDeshabilitado);
            this.cambiaVisibles(numeroItems);    
        }
        
    },
    cambiaVisibles: function(numeroItems){
        var ocultos = this.prev.get('restantes').toInt();
        var ultimoIndice = this.prev.get('restantes').toInt() + numeroItems;

        this.ul.getElements('dt').each(function(el, ind){
            if(ind >= ocultos && ind < ultimoIndice){
                // new Fx.Reveal(el).reveal();
                el.setStyle('display', '');
            }
            else{
                // new Fx.Reveal(el).dissolve();
                el.setStyle('display', 'none');
            }
        }.bind(this));
        
        this.ul.getElements('dd').each(function(el, ind){
            if(ind >= ocultos && ind < ultimoIndice){
                // new Fx.Reveal(el).reveal();
                el.setStyle('display', '');
            }
            else{
                // new Fx.Reveal(el).dissolve();
                el.setStyle('display', 'none');
            }
        }.bind(this));
    }
});
