/* * mooFacebox * version: 0.1 (03/10/2008) * @requires MooTools v1.2 or later * * Facebox is a port to mootools of the original * Facebox (http://famspam.com/facebox) written by Chris Wanstrath with some * added features like drag support and titles. * * Licensed under the MIT: * * http://www.opensource.org/licenses/mit-license.php * * Copyright 2007, 2008 Chris Wanstrath [ chris@ozmm.org ] * Copyright 2008 Augusto Becciu [ augusto@becciu.org ] * * Usage: * * window.addEvent('domready', function() { * var myFacebox = new mooFacebox(); * }); * * * Terms * Loads the #terms div in the box * * Terms * Loads the terms.html page in the box * * Terms * Loads the terms.png image in the box * */ var mooFacebox = new Class({ Implements: Options, options: { draggable: true, elementsSelector: 'a[rel="facebox"]', loading_image : 'immagini/icone/ajax-loader.gif', close_image : 'immagini/moofacebox/closelabel.gif', image_types : [ 'png', 'jpg', 'jpeg', 'gif' ], facebox_html : '\ ' }, eliminadiv: function(){ this.faceboxEl.setStyle('display', 'none'); var contentEl = this.faceboxEl.getElement('.content'); contentEl.set('class', ''); contentEl.addClass('content'); return false; }, loading: function() { //self.scrollTo(0, 0); if (this.faceboxEl.getElement('.loading')) return true; this.faceboxEl.getElement('.content').empty(); var bodyEl = this.faceboxEl.getElement('.body'); bodyEl.getChildren().setStyle('display', 'none'); var loadingEl = new Element('div', {'class': 'loading'}); var loadingImgEl = new Element('img', {'src': this.options.loading_image}); loadingEl.adopt(loadingImgEl); bodyEl.adopt(loadingEl); var pageScroll = this.getPageScroll(); this.faceboxEl.setStyles({ top: pageScroll[1] + (this.getPageHeight() / 4), left: pageScroll[0] }); $(document).addEvent('keydown', this.keydownHdlr); this.fadeIn(this.faceboxEl); }, reveal: function(data) { // if (klass) this.faceboxEl.getElement('.content').addClass(klass); if ($type(data) == 'string') this.faceboxEl.getElement('.content').set('html', data); else this.faceboxEl.getElement('.content').adopt(data); this.faceboxEl.getElement('.loading').destroy(); this.faceboxEl.getElement('.body').getChildren().each(this.fadeIn); }, fadeIn: function(el) { el.set('tween', { onStart: function() { el.setStyle('display', 'block'); } }); el.fade('in'); }, fadeOut: function(el) { el.set('tween', { onComplete: function() { el.setStyle('display', 'none'); } }); el.fade('out'); }, close: function() { $(document).removeEvent('keydown', this.keydownHdlr); this.fadeOut(this.faceboxEl); var contentEl = this.faceboxEl.getElement('.content'); contentEl.set('class', ''); contentEl.addClass('content'); return false; }, setTitle: function(title) { var titleEl = this.faceboxEl.getElement('.title'); if (title == "") titleEl.setStyle('display', 'none'); else titleEl.setStyle('display', 'block'); //titleEl.getElement('span').setText(title); titleEl.getElement('span').set('text', title); }, initialize: function(options) { this.setOptions(options); this.faceboxEl = new Element('div', {'id': 'facebox', 'style': 'display: none;'}); if (document.getElementById('facebox')) { //controllo che il div non sia giĆ  creato // alert('ahaihaiahia'); $('facebox').destroy(); } this.faceboxEl.fade('hide'); this.faceboxEl.set('html', this.options.facebox_html); $(document.body).adopt(this.faceboxEl); //provlemi con ie7 // preload images var preload = [ new Asset.image(this.options.close_image), new Asset.image(this.options.loading_image) ]; this.faceboxEl.getElements('.b:first, .bl, .br, .tl, .tr').each(function(el) { preload.push(new Asset.image(el.getStyle('background-image').replace(/url\((.+)\)/, '$1'))); }); this.faceboxEl.getElement('.close').addEvent('click', this.eliminadiv.bind(this)); // this.faceboxEl.getElement('.close_image').set('src', this.options.close_image); if (this.options.draggable == true) { var dcontentEl = this.faceboxEl.getElement('.dialog-content'); this.drag = this.faceboxEl.makeDraggable({handle: dcontentEl}); dcontentEl.setStyle('cursor', 'move'); } this.keydownHdlr = function(e) { // e = new Event(e); // e.stop(); if (e.code == 27) this.close(); }.bind(this); var image_types = this.options.image_types.join('|'); image_types = new RegExp('\.' + image_types + '$', 'i'); var elements = $$(this.options.elementsSelector); elements.addEvent('click', function(e) { e = new Event(e); e.stop(); //alert(e.target); /* if (e.target == "[object HTMLImageElement]") { //alert('img'); urll =e.target.longDesc; titolo_ =e.target.title; }else{ urll = e.target.href; titolo_ = e.target.title; } */ if (e.target == "[object HTMLImageElement]") { urll =e.target.longDesc; titolo_ =e.target.title; } else if (e.target == "[object]") { urll =e.target.longDesc; titolo_ =e.target.title; } else { urll = e.target.href; titolo_ = e.target.title; } this.setTitle(titolo_); this.loading(); new Request({ url: urll, method: 'get', onSuccess: function(responseText, responseXML) { this.reveal(responseText); }.bind(this) }).send(); return false; }.bind(this)); }, // getPageScroll() by quirksmode.com getPageScroll: function() { var xScroll, yScroll; if (self.pageYOffset) { yScroll = self.pageYOffset; xScroll = self.pageXOffset; } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict yScroll = document.documentElement.scrollTop; xScroll = document.documentElement.scrollLeft; } else if (document.body) {// all other Explorers yScroll = document.body.scrollTop; xScroll = document.body.scrollLeft; } return new Array(xScroll,yScroll); }, // adapter from getPageSize() by quirksmode.com getPageHeight: function() { var windowHeight; if (self.innerHeight) { // all except Explorer windowHeight = self.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode windowHeight = document.documentElement.clientHeight; } else if (document.body) { // other Explorers windowHeight = document.body.clientHeight; } return windowHeight; } });