document.documentElement.className = "js-enabled";

// evito errores en Explorer si se queda algun console.log en el codigo
if (!window.console || !console.firebug){var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml","group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];window.console = {};for (var i = 0; i < names.length; ++i)window.console[names[i]] = function() {}};


window.addEvent('domready', function(){
	
	// NAVEGACION AJAX
	      // corregimos la ruta
       var rutaActual = document.location.href;
       rutaActual = rutaActual.toString();
       // if(document.location.hash.length == 0 && rutaActual.split("/")[3] != ""){ // casca en el caso de comentarios
       if(rutaActual.split("/")[3].lastIndexOf("#") == -1 && rutaActual.split("/")[3] != ""){
	      document.location = "http://" + document.domain + "/#" + rutaActual.split("http://" + document.domain + "/")[1];
       }
       
       
       
       
       
       $$('a').each(function(el){
	      if(esLinkInterno(el)){
	          el.addClass('interno');
	      }
       });
       
       $$('#respond p.info a').each(function(el){
           el.removeClass('interno');
       });
       
       
       
       // anadimos el evento para todos los enlaces internos
       $$('a.interno').each(function(el){
	      el.addEvent('click', function(ev){
	          ev.stop();
	          var pagina = el.get('href');
   	          pagina = pagina.split("http://" + document.domain + "/")[1] || '';
	          unFocus.History.addHistory(pagina);	    
	      })
       });
       
       // anadimos el evento para el form de suscripcion a la newsletter
       $$('.newsletter form').each(function(el){
           el.addEvent('submit', function(ev){
               ev.stop();
               var action = el.get('action');
               action = action.split("http://" + document.domain + "/")[1];
               unFocus.History.addHistory(action);
           })
       });
       
       
       //var contenedora = $$('#contenido')[0];
       var contenedora = $('wrapper');
       historyListener = function(historyHash){
	      stateVar = historyHash;
	      // if(document.location.hash.length > 0){ // si llegamos por la home no se hace la peticion ajax inicial (MAL PENSADO, NUNCA SE PUEDE VOLVER A LA HOME)
       
	      new CZ.utils.ajaxCall(stateVar, contenedora, true, 'ajaxas');	    
       }
       unFocus.History.addEventListener('historyChange', historyListener);
       
       if(document.location.hash.length > 0){	
	      historyListener(unFocus.History.getCurrent());
       }
    // otras funciones
     new CZ.LoadAll();
});

var CZ = CZ || {};

// funciones que necesitan ser recargadas
CZ.LoadAll = function(){
    // quitamos la clase interno al link para registrarse o identificarse par acomentar
    $$('#respond p.info a').each(function(el){
        el.removeClass('interno');
    });
    
    
// clases en html
    $$('li:first-child').addClass('first-child');
	$$('li:last-child').addClass('last-child');
    $$('div.thumbnails li:nth-child(3n+0)').addClass('ultimo-fila');

	// Galerias
    new CZ.Galerias($('galerias'),{
		mostrarPrimerAlbum: true, // dejar visible el primer album. Por defecto TRUE,
		ocultarOtros: true
    });
	
	new CargadorImgs('foto-ampliada');     
	
	new PosicionaPlayer($$('div.player')[0],{
	   idCapaReferencia: 'contenedor'
	});
    
    
    
    
    
    // identificamos todos los links internos
    $$('a').each(function(el){
	if(esLinkInterno(el)){	    
	    if(!el.hasClass('no-ajax-link')) el.addClass('interno');
	    if(el.hasClass('interno')){
		el.addEvent('click', function(ev){
		    ev.stop();
		    new CZ.navegacionAjax(el);	
		})
	    }	    
	}
    });
}; // LoadAll

CZ.navegacionAjax = function(link){
    var pagina = link.get('href');
    pagina = pagina.split("http://" + document.domain + "/")[1] || '';    
    unFocus.History.addHistory(pagina);
    
    historyListener = function(historyHash){
	   stateVar = historyHash;    				
    }
    unFocus.History.addEventListener('historyChange', historyListener);
    historyListener(unFocus.History.getCurrent());
}


function esLinkInterno(link){
    var dominio;
    if(link.get('href')){
		if(link.get('href') != '#'){
			dominio = link.get('href').split("/")[2];	
		}
		else{
			dominio = "http://" + document.domain + "/";
		}	   
    }
    else {
	   dominio = "http://" + document.domain + "/";
    }
    //console.log((dominio.lastIndexOf(document.domain) != -1));
    return (dominio.lastIndexOf(document.domain) != -1);
}

CZ.utils = CZ.utils || {};
CZ.utils.ajaxCall = function(url, contenedor, reloadScripts, param){

    var request = new Request.HTML({
	url: "http://" + document.domain + "/" + url,
	update: contenedor,
	method: 'get',
	data: param,
	evalScripts: true,
	onRequest: function(){   
	    contenedor.fade('out');			
	},
	onSuccess: function(r){
	    contenedor.fade('in');
	    document.title = $$('.invisible').get('text')[0];
	    if(reloadScripts){
		  new CZ.LoadAll();		    
	    }
	    var posicion;
	    if(document.location.hash.lastIndexOf('comments') != -1){		
		  posicion = document.getElementById('comments');
	    }
	    else if(document.location.hash.lastIndexOf('comentar') != -1){
		  posicion = document.getElementById('comentar');
	    }
	    else{
		  posicion = $$('body')[0];
	    }
	    var myFx = new Fx.Scroll(window).toElement(posicion);	    
	}
    }).send();
};





// Galerias de fotos 
CZ.Galerias = new Class({
    Implements: Options,
    options: {
        claseActivo: 'active',
        tagHeaderAlbum: 'h3',
		mostrarPrimerAlbum: true,
		ocultarOtros: false, // no mostrar simultaneamente mas de 2
        selectorCapaImgs: '.thumbnails',
        claseAlbum: '.album',
        literales: {
            ES: {
                txtTitleMostrar: 'Mostrar álbum',
                txtTitleOcultar: 'Ocultar álbum'
            },
            EN: {
                txtTitleMostrar: 'Show album',
                txtTitleOcultar: 'Hide album'
            }
        }
    },
    initialize: function(element, options){
		if(!element) return;
        this.setOptions(options);
        this.element = element;
        this.opt = this.options;
		
        this.album = this.element.getElements(this.opt.selectorCapaImgs);
        this.getDocumentLang();
        this.lang == 'en' ? this.literales = this.opt.literales.EN : this.literales = this.opt.literales.ES;
        this.ocultaAlbums();
        this.makeLinksFromHeaders();
    },
    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;
    },
    ocultaAlbums: function(){
        this.album.setStyle('display', 'none');
		if(this.opt.mostrarPrimerAlbum) this.album[0].setStyle('display', '');		
    },
    ocultaTodos: function(){
        this.album.getParent(this.options.claseAlbum).getElement(this.options.tagHeaderAlbum).removeClass(this.options.claseActivo);
        this.album.dissolve();
    },
    makeLinksFromHeaders: function(){
        var headers = this.element.getElements(this.opt.tagHeaderAlbum);
		headers.each(function(header, ind){
			var link = new Element('a',{
	            'href': '#',
	            'text': header.get('text'),
	            'title': this.literales.txtTitleMostrar,
				'class': 'no-ajax-link'
	        });
			
	        header.empty().grab(link);
			if(this.opt.mostrarPrimerAlbum){
				if(ind == 0){
					link.set('title', this.literales.txtTitleOcultar);
					link.getParent().addClass(this.opt.claseActivo);
				}
			}			
	        link.addEvent('click', this.toggleAlbum.bind(this));
		}.bind(this))      
    },
    toggleAlbum: function(ev){
        ev.stop();
        if(Browser.Engine.trident) var target = ev.target || $(ev.srcElement);
        var link = ev.target;

        if(!link.getParent().hasClass(this.opt.claseActivo)){
            if(this.options.ocultarOtros) this.ocultaTodos();
            new Fx.Reveal(link.getParent('div').getElement(this.opt.selectorCapaImgs)).reveal();
            link.getParent().addClass(this.opt.claseActivo);            
            link.set('title', this.literales.txtTitleOcultar);
        }
        else{
            new Fx.Reveal(link.getParent('div').getElement(this.opt.selectorCapaImgs)).dissolve();
            link.getParent().removeClass(this.opt.claseActivo);
            link.set('title', this.literales.txtTitleMostrar);
            link.blur(); // evitamos que se quede de color amarillo
        }
    }
});




var CargadorImgs = new Class({
    Implements: Options,
    options: {
        triggerLinks: '.thumbnails li a',
		imgLoading: '/wp-content/themes/ultimaexperiencia/images/ajax-loader.gif'
    },
    initialize: function(element, options){
        this.setOptions(options);
        if($(element)) this.element = $(element);
        
        this.links = $$(this.options.triggerLinks);
		this.links.addClass('no-ajax-link');
        this.openImg();
    },
    loadImg: function(rutaLink){
        var imageHolder = this.element;
		var imageBig = this.element.getElement('img');
		var nuevaImg = new Element('img',{
		  src: rutaLink,
		  alt: ''
		});
		imageBig.fade('out');
		var imgCargando = new Element('img',{
			src: this.options.imgLoading,
			alt: 'Cargando',
			'class': 'cargando'
		});
		
		imageBig.getParent().grab(imgCargando);		
		(function(){
			imgCargando.dispose();
			imageBig.fade('in');
			imageBig.set('src', nuevaImg.src);
		}).delay(1000);
    },
    openImg: function(){
        this.links.each(function(el){
            el.addEvent('click', function(ev){
                ev.stop();
                this.loadImg(el.get('href'));
            }.bind(this))
        }.bind(this))
    }
});


var PosicionaPlayer = new Class({
    Implements: Options,
    options: {
        idCapaReferencia: ''
    },
    
    initialize: function(element, options){
        this.setOptions(options);
        this.element = element;
        if($(this.options.idCapaReferencia)){
            var ref = $(this.options.idCapaReferencia);
            // obtenemos la distancia en px del contenedor al borde izdo de la ventana del navegador
            var posLeft = this.obtenPosicionLeft(ref);

            this.posicionaPlayer(posLeft)
        }
    },
    
    obtenPosicionLeft: function(capa){
        var posLeft = capa.getCoordinates().left;
        return posLeft;
    },
    
    posicionaPlayer: function(pos){
        this.element.setStyle('left', pos);
    }
})