window.addEvent('domready', function(){
    var instExtras = new Extras();
    var instUtilidades = new Utilidades();
});

var Extras = new Class({
	Implements: [Options],
	options: {
		claseFirstChild: 'first-child',
		claseLastChild: 'last-child',
		claseFirstSibling: 'first-sibling',
		radio: '.8em',
		selectorCajaTransparente: '.transparente',
        selectorLinkPopup: 'popup'
	},
	initialize: function(options){
		this.setOptions(options);
		this.addRadius($$(this.options.selectorCajaTransparente), this.options.radio);
	},
	addRadius: function(elems, radio){
		elems.each(function(el){
			el.setStyles({
				'-moz-border-radius': radio,
				'-webkit-border-radius': radio,
				'border-radius': radio
			});
		});
	}
});



var Utilidades = new Class({
    Implements: [Options],
	options: {
		selLinkPopup: 'popup',
		txtInfoNuevaVentana: '. (Abre en nueva ventana)',
		claseOculto: 'invisible'
	},
	initialize: function(options){
		this.setOptions(options);
		this.openPopup(this.options.selLinkPopup);
	},
	openPopup: function(valorRel){
		var _this = this;
		var links = $$('a');
        links.each(function(el){
			if(el.get('rel') && el.get('rel').lastIndexOf(valorRel) != -1){
				el.grab(_this.creaTxtOcultoInfo());
				var medidasPopup = {};
				medidasPopup.ancho = el.get('rel').split(',')[0].substring(6);
				medidasPopup.alto = el.get('rel').split(',')[1].split(']')[0];

				el.ancho = medidasPopup.ancho;
				el.alto = medidasPopup.alto;

				el.addEvent('click', function(ev){
					ev.stop();
					var url = this.get('href');
					var a = this.ancho;
					a += 'px';
					var b = this.alto;
					b += 'px';
					var params = 'width=' + a + ',' + 'height=' + b;
					var newWin = window.open(url, 'pop', params + 'resizable=yes, scrollbars=yes');
					if(window.focus && !Browser.Engine.trident) { // quitamos a IE por las restricciones del modo protegido en Win Vista :S
						newWin.focus();
					}
				})				
			}
        })
	},
	creaTxtOcultoInfo: function(){
		var textoOculto = new Element('span',{
			'class': this.options.claseOculto
		}).set('text', this.options.txtInfoNuevaVentana);
		return textoOculto;
	}
});