(function (jQuery) { jQuery.fn.flayer_close = function () { try { jQuery(this).flayer.close(); } catch (e) { fb.error(e); } }; jQuery.fn.flayer = function (params) { var elm = this; var ref = {}; var customConfig = params; var config = { bgcolor: '#333', opacity: 0.6, id: 'floating-box', className: 'floating-box-class', zIndex: 5000, beforeStart: function () {}, beforeEnd: function () {}, afterStart: function () {}, close: null, closeClass: 'close-floating-layer', outerClose: false, returnParent: jQuery(elm).parent(), }; jQuery.fn.flayer.close = function () { flayer_destroy(); }; function init() { jQuery.extend(config, customConfig); } function start_ovservers() { jQuery(window).bind('scroll.fl', function () { setTimeout(function () { reposition(); }, 5); }); jQuery(window).bind('resize.fl', function () { setTimeout(function () { reposition(); }, 5); }); jQuery(ref.container).bind('click.fl', function (evt) { jQuery(evt.target).hasClass(config.closeClass) ? flayer_destroy() : -1; if (config.outerClose) jQuery(evt.target).hasClass('fl-cloud') ? flayer_destroy() : -1; }); // todo: config.outerClose ? jQuery(window).bind('keypress.fl', function (evt) { evt.keyCode == 27 ? flayer_destroy() : -1; }) : -1; } function position() { var viewport = {}; viewport.left = jQuery(window).scrollLeft(); viewport.top = jQuery(window).scrollTop(); viewport.height = window.innerHeight ? window.innerHeight : jQuery(window).height(); //jQuery(document.body).height(); viewport.width = jQuery(window).width(); //jQuery(document.body).width(); var had = jQuery('
') .attr('id', 'truth-is-out-there') .css({ position: 'absolute', left: '-50000px' }); var dolly = jQuery(elm).clone(true).addClass('dolly'); jQuery(had).append(jQuery(dolly).removeClass('u-hidden')); jQuery(document.body).prepend(had); var dims = { width: jQuery(dolly).width(), height: jQuery(dolly).height() }; jQuery(had).remove(); //dims.height = 350; //dims.width = 350; jQuery(ref.overlay).height(jQuery(document).height()); jQuery(ref.overlay).width(jQuery(document).width()); jQuery(ref.content).height(dims.height); jQuery(ref.content).width(dims.width); jQuery(ref.close).css({ top: viewport.top, left: viewport.left }); jQuery(ref.content).css({ left: Math.round((viewport.width - dims.width) / 2) + viewport.left, top: Math.round((viewport.height - dims.height) / 2) + viewport.top, }); } function reposition() { var viewport = {}; viewport.left = jQuery(window).scrollLeft(); viewport.top = jQuery(window).scrollTop(); viewport.height = window.innerHeight ? window.innerHeight : jQuery(window).height(); viewport.width = jQuery(window).width(); jQuery(ref.overlay).height(jQuery(document).height()); jQuery(ref.overlay).width(jQuery(document).width()); jQuery(ref.close).css({ top: viewport.top, left: viewport.left }); jQuery(ref.content).css({ left: Math.round((viewport.width - jQuery(elm).width()) / 2) + viewport.left, top: Math.round((viewport.height - jQuery(elm).height()) / 2) + viewport.top, }); } function flayer_destroy() { config.beforeEnd(elm); jQuery(window).unbind('scroll.fl'); jQuery(window).unbind('resize.fl'); jQuery(ref.container).unbind('click.fl'); config.outerClose ? jQuery(window).unbind('keypress.fl') : -1; jQuery(config.returnParent).append(jQuery(elm).addClass('u-hidden')); jQuery(ref.container).remove(); jQuery.browser.msie && jQuery.browser.version.substr(0, 1) < 7 ? show_selects() : -1; return true; } function embed() { ref.container = jQuery('
'); jQuery(ref.container).addClass(config.className + '-container'); jQuery(ref.container) .css({ position: 'absolute', left: '0', top: '0', display: 'none', zIndex: config.zIndex, }) .addClass('fl-cloud') .addClass('u-hidden'); ref.overlay = jQuery('
').addClass(config.className + '-layer'); jQuery(ref.overlay) .css({ position: 'absolute', zIndex: config.zIndex, backgroundColor: config.bgcolor, opacity: config.opacity, zoom: 1, }) .addClass('fl-cloud'); ref.content = jQuery('
').addClass(config.className); jQuery(ref.content).attr('id', config.id); jQuery(ref.content) .css({ position: 'absolute', zIndex: config.zIndex + 1, }) .addClass('fl-cloud'); if (null == config.close || typeof config.close == 'undefined') { ref.close = jQuery('
').addClass(config.className); jQuery(ref.close).attr('id', config.closeClass); jQuery(ref.close) .css({ position: 'absolute', zIndex: config.zIndex + 1, color: 'white', cursor: 'pointer', }) .addClass(config.closeClass); //jQuery(ref.close).text('[X]Close'); } else { ref.close = jQuery(config.close).clone().addClass(config.closeClass); } jQuery(ref.container).append(ref.overlay); jQuery(ref.container).append(ref.iframe); jQuery(ref.container).append(ref.content); jQuery(ref.container).append(ref.close); return jQuery(document.body).prepend(ref.container); } function hide_selects() { /*jQuery('select').each(function(index, sb) { jQuery(sb).hide(); var dummy = jQuery(''); jQuery(dummy).attr({'type':'text', 'value': jQuery(sb).val()}); jQuery(dummy).addClass('dummy-select-box-ie6'); jQuery(sb).after(dummy); });*/ } function show_selects() { /*jQuery('select').each(function(index, sb) { jQuery(sb).show(); jQuery(jQuery(sb).next('.dummy-select-box-ie6')).remove(); });*/ } function start() { //jQuery.browser.msie && jQuery.browser.version.substr(0,1)<7 ? hide_selects() : -1; config.beforeStart(elm); init(); embed(); position(); jQuery(ref.content).append(jQuery(elm).removeClass('u-hidden')); start_ovservers(); jQuery(ref.container).removeClass('u-hidden').css({ display: 'block' }); config.afterStart(elm); } // // Entry point start(); }; })(jQuery);