/* * mooFacebox * version: 0.1 (03/10/2008) * @requires MooTools v1.2 or later * * MODIFIED BY SocialEngineMods http://www.socialenginemods.net/ * * 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 * */ // TODO: on ajax error (404) - ok var _mooFaceboxEx = null; function mooFaceboxExShow(caption, url, width, showclosebutton) { if(!_mooFaceboxEx) { _mooFaceboxEx = new mooFaceboxEx(); } _mooFaceboxEx.show(caption, url, width, showclosebutton); } function mooFaceboxExClose() { if(!_mooFaceboxEx) return; _mooFaceboxEx.close(); } var mooFaceboxEx = new Class({ Implements: Options, options: { draggable: true, showclosebutton : true, width: '370', elementsSelector: 'a[rel="facebox"]', loading_image : './include/js/moofacebox/images/loading.gif', close_image : './include/js/moofacebox/images/closelabel.gif', image_types : [ 'png', 'jpg', 'jpeg', 'gif' ], facebox_html : '\
\ \ \ \ \ \ \ \ \ \ \
\
\ \
\
\
\ \
\
\
\
\
' }, loading: function() { if (this.faceboxEl.getElement('.facebox-loading')) return true; this.faceboxEl.getElement('.facebox-content').empty(); var bodyEl = this.faceboxEl.getElement('.facebox-body'); bodyEl.getChildren().setStyle('display', 'none'); var loadingEl = new Element('div', {'class': 'facebox-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, klass) { if (klass) this.faceboxEl.getElement('.facebox-content').addClass(klass); //this.faceboxEl.setStyle('display', 'none'); //if ($type(data) == 'string') { // this.faceboxEl.getElement('.facebox-content-measure').set('html', data); //} //else { // this.faceboxEl.getElement('.facebox-content-measure').adopt(data); //} //var width = parseInt( this.faceboxEl.getElement('.facebox-content-measure').getStyle('clientWidth') ); //var width = this.faceboxEl.getElement('.facebox-content-measure').offsetWidth; //var xx = document.getElementById("asdasdasd"); //var width = xx.offsetWidth; //console.debug("width:" + width); //if(width < 370) { //this.faceboxEl.getElement('.facebox-content').setStyle('width','370px'); //} if ($type(data) == 'string') { this.faceboxEl.getElement('.facebox-content').set('html', data); } else { this.faceboxEl.getElement('.facebox-content').adopt(data); } this.faceboxEl.getElement('.facebox-loading').destroy(); //var width = parseInt( this.faceboxEl.getElement('.facebox-content').getStyle('width') ); //console.debug("width:" + width); //if(width < 370) { // this.faceboxEl.getElement('.facebox-content').setStyle('width','370px'); //} //this.faceboxEl.style.width = "370px"; //width = parseInt( this.faceboxEl.getElement('.facebox-content').getStyle('width') ); //console.debug("width:" + width); //console.debug("width:" + this.faceboxEl.getElement('.facebox-content-measure').offsetWidth); //this.faceboxEl.setStyle('display', 'block'); this.faceboxEl.getElement('.facebox-body').getChildren().each(this.fadeIn); // this.faceboxEl.setStyles({ // top: pageScroll[1] + (this.getPageHeight() / 4), // left: pageScroll[0] // }); // $('#facebox').css('left', $(window).width() / 2 - ($('#facebox table').width() / 2)) }, 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('.facebox-content'); contentEl.set('class', ''); contentEl.addClass('facebox-content'); return false; }, //setTitle: function(title) { // var titleEl = this.faceboxEl.getElement('.facebox-title'); // title = "adasdasdasdasdasdasdasd"; // if (title == "") // titleEl.setStyle('display', 'none'); // else // titleEl.setStyle('display', 'block'); // // //titleEl.getElement('span').setText(title); //}, initialize: function(options) { this.setOptions(options); this.faceboxEl = new Element('div', {'id': 'facebox', 'style': 'display: none;'}); this.faceboxEl.fade('hide'); this.faceboxEl.set('html', this.options.facebox_html); $(document.body).adopt(this.faceboxEl); // preload images var preload = [ new Asset.image(this.options.close_image), new Asset.image(this.options.loading_image) ]; this.faceboxEl.getElements('.facebox-b:first, .facebox-bl, .facebox-br, .facebox-tl, .facebox-tr').each(function(el) { preload.push(new Asset.image(el.getStyle('background-image').replace(/url\((.+)\)/, '$1'))); }); this.faceboxEl.getElement('.facebox-close').addEvent('click', this.close.bind(this)); this.faceboxEl.getElement('.facebox-close_image').set('src', this.options.close_image); if (this.options.draggable == true) { var dcontentEl = this.faceboxEl.getElement('.facebox-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'); this.image_types = image_types; var elements = $$(this.options.elementsSelector); elements.addEvent('click', function(e) { e = new Event(e); e.stop(); //this.setTitle(e.target.title); this.loading(); // support for rel="facebox[.inline_popup]" syntax, to add a class var klass = e.target.rel.match(/facebox\[\.(\w+)\]/); if (klass) klass = klass[1]; // div if (e.target.href.match(/#/)) { var url = window.location.href.split('#')[0]; var target = e.target.href.replace(url+'#',''); this.reveal($(target).clone().setStyle('display','block'), klass); // image } else if (e.target.href.match(image_types)) { var image = new Asset.image(e.target.href, { onload: function() { this.reveal('
', klass); }.bind(this) }); // ajax } else { new Request({ url: e.target.href, method: 'get', onSuccess: function(responseText, responseXML) { this.reveal(responseText, klass); }.bind(this), onFailure: function(responseText, responseXML) { this.reveal("Error loading content.", klass); }.bind(this) }).send(); } return false; }.bind(this)); }, show : function(caption, targeturl, width, showclosebutton) { var klass = ""; //this.width = "370px"; //if(options) { //this.setOptions(options); //} if(width) { this.options.width = width; } if(showclosebutton) { this.options.showclosebutton = showclosebutton; } this.faceboxEl.getElement('.facebox-content').setStyle('width',this.options.width + 'px'); //if(options) { // if(options.width) { // this.options.width = options.width + 'px'; // } //} this.loading(); // div if (targeturl.match(/^#/)) { //var url = window.location.href.split('#')[0]; //var target = targeturl.replace(url+'#',''); var target = targeturl.replace('#',''); this.reveal($(target).clone().setStyle('display','block'), klass); // image } else if (targeturl.match(this.image_types)) { var image = new Asset.image(targeturl, { onload: function() { this.reveal('
', klass); }.bind(this) }); // ajax } else { new Request({ url: targeturl, method: 'get', onSuccess: function(responseText, responseXML) { this.reveal(responseText, klass); }.bind(this), onFailure: function(responseText, responseXML) { this.reveal("Error loading content", klass); }.bind(this) }).send(); } return false; }, // 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; } });