Future And Active Pilot Advisors (FAPA) offer Free Future Pilot Forums

'; jQuery('#subscribe-by-email-msg').html(html); }, _hide: function(event) { // Internal hide method to use inside MB class if(event) Event.stop(event); this.hide(); }, _appear: function() { // First appearing of MB if (navigator.appVersion.match(/\bMSIE\b/)) this._toggleSelects(); this._setOverlay(); this._setWidth(); this._setPosition(); if(this.options.transitions) { Element.setStyle(this.MBoverlay, {opacity: 0}); new Effect.Fade(this.MBoverlay, { from: 0, to: this.options.overlayOpacity, duration: this.options.overlayDuration, afterFinish: function() { new Effect.SlideDown(this.MBwindow, { duration: this.options.slideDownDuration, afterFinish: function(){ this._setPosition(); this.loadContent(); }.bind(this) }); }.bind(this) }); } else { Element.setStyle(this.MBoverlay, {opacity: this.options.overlayOpacity}); Element.show(this.MBwindow); this._setPosition(); this.loadContent(); } this._setWidthAndPosition = this._setWidthAndPosition.bindAsEventListener(this); Event.observe(window, "resize", this._setWidthAndPosition); }, resize: function(byWidth, byHeight, options) { // Change size of MB without loading content var wHeight = Element.getHeight(this.MBwindow); var wWidth = Element.getWidth(this.MBwindow); var hHeight = Element.getHeight(this.MBheader); var cHeight = Element.getHeight(this.MBcontent); var newHeight = ((wHeight - hHeight + byHeight) < cHeight) ? (cHeight + hHeight - wHeight) : byHeight; this.setOptions(options); // Passing callbacks if(this.options.transitions) { new Effect.ScaleBy(this.MBwindow, byWidth, newHeight, { duration: this.options.resizeDuration, afterFinish: function() { this.event("_afterResize"); // Passing internal callback this.event("afterResize"); // Passing callback }.bind(this) }); } else { this.MBwindow.setStyle({width: wWidth + byWidth + "px", height: wHeight + newHeight + "px"}); setTimeout(function() { this.event("_afterResize"); // Passing internal callback this.event("afterResize"); // Passing callback }.bind(this), 1); } }, _update: function() { // Updating MB in case of wizards Element.update(this.MBcontent, ""); this.MBcontent.appendChild(this.MBloading); Element.update(this.MBloading, this.options.loadingString); this.currentDims = [this.MBwindow.offsetWidth, this.MBwindow.offsetHeight]; Modalbox.resize((this.options.width - this.currentDims[0]), (this.options.height - this.currentDims[1]), {_afterResize: this._loadAfterResize.bind(this) }); }, loadContent: function () { if(this.event("beforeLoad") != false) { // If callback passed false, skip loading of the content if(typeof this.content == 'string') { var htmlRegExp = new RegExp(/<\/?[^>]+>/gi); if(htmlRegExp.test(this.content)) { // Plain HTML given as a parameter this._insertContent(this.content); this._putContent(); } else new Ajax.Request( this.content, { method: this.options.method.toLowerCase(), parameters: this.options.params, onComplete: function(transport) { var response = new String(transport.responseText); this._insertContent(transport.responseText.stripScripts()); response.extractScripts().map(function(script) { return eval(script.replace("", "")); }.bind(window)); this._putContent(); }.bind(this) }); } else if (typeof this.content == 'object') {// HTML Object is given this._insertContent(this.content); this._putContent(); } else { Modalbox.hide(); throw('Please specify correct URL or HTML element (plain HTML or object)'); } } }, _insertContent: function(content){ Element.extend(this.MBcontent); this.MBcontent.update(""); if(typeof content == 'string') this.MBcontent.hide().update(content); else if (typeof this.content == 'object') { // HTML Object is given var _htmlObj = content.cloneNode(true); // If node already a part of DOM we'll clone it // If clonable element has ID attribute defined, modifying it to prevent duplicates if(this.content.id) this.content.id = "MB_" + this.content.id; /* Add prefix for IDs on all elements inside the DOM node */ this.content.getElementsBySelector('*[id]').each(function(el){ el.id = "MB_" + el.id }); this.MBcontent.hide().appendChild(_htmlObj); this.MBcontent.down().show(); // Toggle visibility for hidden nodes } }, _putContent: function(){ // Prepare and resize modal box for content if(this.options.height == this._options.height) Modalbox.resize(0, this.MBcontent.getHeight() - Element.getHeight(this.MBwindow) + Element.getHeight(this.MBheader), { afterResize: function(){ this.MBcontent.show(); this.focusableElements = this._findFocusableElements(); this._setFocus(); // Setting focus on first 'focusable' element in content (input, select, textarea, link or button) this.event("afterLoad"); // Passing callback }.bind(this) }); else { // Height is defined. Creating a scrollable window this._setWidth(); this.MBcontent.setStyle({overflow: 'auto', height: Element.getHeight(this.MBwindow) - Element.getHeight(this.MBheader) - 13 + 'px'}); this.MBcontent.show(); this.focusableElements = this._findFocusableElements(); this._setFocus(); // Setting focus on first 'focusable' element in content (input, select, textarea, link or button) this.event("afterLoad"); // Passing callback } }, activate: function(options){ this.setOptions(options); this.active = true; Event.observe(this.MBclose, "click", this.close); if(this.options.overlayClose) Event.observe(this.MBoverlay, "click", this.hide); Element.show(this.MBclose); if(this.options.transitions && this.options.inactiveFade) new Effect.Appear(this.MBwindow, {duration: this.options.slideUpDuration}); }, deactivate: function(options) { this.setOptions(options); this.active = false; Event.stopObserving(this.MBclose, "click", this.close); if(this.options.overlayClose) Event.stopObserving(this.MBoverlay, "click", this.hide); Element.hide(this.MBclose); if(this.options.transitions && this.options.inactiveFade) new Effect.Fade(this.MBwindow, {duration: this.options.slideUpDuration, to: .75}); }, _initObservers: function(){ Event.observe(this.MBclose, "click", this.close); if(this.options.overlayClose) Event.observe(this.MBoverlay, "click", this.hide); Event.observe(document, "keypress", Modalbox.kbdHandler ); }, _removeObservers: function(){ Event.stopObserving(this.MBclose, "click", this.close); if(this.options.overlayClose) Event.stopObserving(this.MBoverlay, "click", this.hide); Event.stopObserving(document, "keypress", Modalbox.kbdHandler ); }, _loadAfterResize: function() { this._setWidth(); this._setPosition(); this.loadContent(); }, _setFocus: function() { // Setting focus to be looped inside current MB if(this.focusableElements.length > 0) { var i = 0; var firstEl = this.focusableElements.find(function findFirst(el){ i++; return el.tabIndex == 1; }) || this.focusableElements.first(); this.currFocused = (i == this.focusableElements.length - 1) ? (i-1) : 0; firstEl.focus(); // Focus on first focusable element except close button } else $("MB_close").focus(); // If no focusable elements exist focus on close button }, _findFocusableElements: function(){ // Collect form elements or links from MB content var els = this.MBcontent.getElementsBySelector('input:not([type~=hidden]), select, textarea, button, a[href]'); els.invoke('addClassName', 'MB_focusable'); return this.MBcontent.getElementsByClassName('MB_focusable'); }, kbdHandler: function(e) { var node = Event.element(e); switch(e.keyCode) { case Event.KEY_TAB: Event.stop(e); if(!e.shiftKey) { //Focusing in direct order if(this.currFocused == this.focusableElements.length - 1) { this.focusableElements.first().focus(); this.currFocused = 0; } else { this.currFocused++; this.focusableElements[this.currFocused].focus(); } } else { // Shift key is pressed. Focusing in reverse order if(this.currFocused == 0) { this.focusableElements.last().focus(); this.currFocused = this.focusableElements.length - 1; } else { this.currFocused--; this.focusableElements[this.currFocused].focus(); } } break; case Event.KEY_ESC: if(this.active) this._hide(e); break; case 32: this._preventScroll(e); break; case 0: // For Gecko browsers compatibility if(e.which == 32) this._preventScroll(e); break; case Event.KEY_UP: case Event.KEY_DOWN: case Event.KEY_PAGEDOWN: case Event.KEY_PAGEUP: case Event.KEY_HOME: case Event.KEY_END: // Safari operates in slightly different way. This realization is still buggy in Safari. if(/Safari|KHTML/.test(navigator.userAgent) && !["textarea", "select"].include(node.tagName.toLowerCase())) Event.stop(e); else if( (node.tagName.toLowerCase() == "input" && ["submit", "button"].include(node.type)) || (node.tagName.toLowerCase() == "a") ) Event.stop(e); break; } }, _preventScroll: function(event) { // Disabling scrolling by "space" key if(!["input", "textarea", "select", "button"].include(Event.element(event).tagName.toLowerCase())) Event.stop(event); }, _deinit: function() { this._removeObservers(); Event.stopObserving(window, "resize", this._setWidthAndPosition ); if(this.options.transitions) { Effect.toggle(this.MBoverlay, 'appear', {duration: this.options.overlayDuration, afterFinish: this._removeElements.bind(this) }); } else { this.MBoverlay.hide(); this._removeElements(); } Element.setStyle(this.MBcontent, {overflow: '', height: ''}); }, _removeElements: function () { if (navigator.appVersion.match(/\bMSIE\b/)) { this._prepareIE("", ""); // If set to auto MSIE will show horizontal scrolling window.scrollTo(this.initScrollX, this.initScrollY); } Element.remove(this.MBoverlay); Element.remove(this.MBwindow); /* Replacing prefixes 'MB_' in IDs for the original content */ if(typeof this.content == 'object' && this.content.id && this.content.id.match(/MB_/)) { this.content.getElementsBySelector('*[id]').each(function(el){ el.id = el.id.replace(/MB_/, ""); }); this.content.id = this.content.id.replace(/MB_/, ""); } /* Initialized will be set to false */ this.initialized = false; if (navigator.appVersion.match(/\bMSIE\b/)) this._toggleSelects(); // Toggle back 'select' elements in IE this.event("afterHide"); // Passing afterHide callback this.setOptions(this._options); //Settings options object into intial state }, _setOverlay: function () { if (navigator.appVersion.match(/\bMSIE\b/)) { this._prepareIE("100%", "hidden"); if (!navigator.appVersion.match(/\b7.0\b/)) window.scrollTo(0,0); // Disable scrolling on top for IE7 } }, _setWidth: function () { //Set size Element.setStyle(this.MBwindow, {width: this.options.width + "px", height: this.options.height + "px"}); }, _setPosition: function () { Element.setStyle(this.MBwindow, {left: Math.round((Element.getWidth(document.body) - Element.getWidth(this.MBwindow)) / 2 ) + "px"}); }, _setWidthAndPosition: function () { Element.setStyle(this.MBwindow, {width: this.options.width + "px"}); this._setPosition(); }, _getScrollTop: function () { //From: https://www.quirksmode.org/js/doctypes.html var theTop; if (document.documentElement && document.documentElement.scrollTop) theTop = document.documentElement.scrollTop; else if (document.body) theTop = document.body.scrollTop; return theTop; }, // For IE browsers -- IE requires height to 100% and overflow hidden (taken from lightbox) _prepareIE: function(height, overflow){ var body = document.getElementsByTagName('body')[0]; body.style.height = height; body.style.overflow = overflow; var html = document.getElementsByTagName('html')[0]; html.style.height = height; html.style.overflow = overflow; }, // For IE browsers -- hiding all SELECT elements _toggleSelects: function() { var selects = $$("select"); if(this.initialized) { selects.invoke('setStyle', {'visibility': 'hidden'}); } else { selects.invoke('setStyle', {'visibility': ''}); } }, event: function(eventName) { if(this.options[eventName]) { var returnValue = this.options[eventName](); // Executing callback this.options[eventName] = null; // Removing callback after execution if(returnValue != undefined) return returnValue; else return true; } return true; } } Object.extend(Modalbox, Modalbox.Methods); if(Modalbox.overrideAlert) window.alert = Modalbox.alert; Effect.ScaleBy = Class.create(); Object.extend(Object.extend(Effect.ScaleBy.prototype, Effect.Base.prototype), { initialize: function(element, byWidth, byHeight, options) { this.element = $(element) var options = Object.extend({ scaleFromTop: true, scaleMode: 'box', // 'box' or 'contents' or {} with provided values scaleByWidth: byWidth, scaleByHeight: byHeight }, arguments[3] || {}); this.start(options); }, setup: function() { this.elementPositioning = this.element.getStyle('position'); this.originalTop = this.element.offsetTop; this.originalLeft = this.element.offsetLeft; this.dims = null; if(this.options.scaleMode=='box') this.dims = [this.element.offsetHeight, this.element.offsetWidth]; if(/^content/.test(this.options.scaleMode)) this.dims = [this.element.scrollHeight, this.element.scrollWidth]; if(!this.dims) this.dims = [this.options.scaleMode.originalHeight, this.options.scaleMode.originalWidth]; this.deltaY = this.options.scaleByHeight; this.deltaX = this.options.scaleByWidth; }, update: function(position) { var currentHeight = this.dims[0] + (this.deltaY * position); var currentWidth = this.dims[1] + (this.deltaX * position); currentHeight = (currentHeight > 0) ? currentHeight : 0; currentWidth = (currentWidth > 0) ? currentWidth : 0; this.setDimensions(currentHeight, currentWidth); }, setDimensions: function(height, width) { var d = {}; d.width = width + 'px'; d.height = height + 'px'; var topd = Math.round((height - this.dims[0])/2); var leftd = Math.round((width - this.dims[1])/2); if(this.elementPositioning == 'absolute' || this.elementPositioning == 'fixed') { if(!this.options.scaleFromTop) d.top = this.originalTop-topd + 'px'; d.left = this.originalLeft-leftd + 'px'; } else { if(!this.options.scaleFromTop) d.top = -topd + 'px'; d.left = -leftd + 'px'; } this.element.setStyle(d); } }); // ]]>

Aspiring pilots of all ages are invited to FAPA’s free future pilot forums!

fapaRegister for In Person or Virtual Attendance

The forums offer future professional pilots a FREE educational day about pathways to professional pilot careers. The event will include a complimentary showing of the inspirational documentary ‘Living in the Age of Airplanes’.

Aspiring pilots of all ages are invited to attend with their parents in person or may register to view portions of the event via on demand video later. School counselors and teachers are also encouraged to attend to learn about talking to students about professional pilot careers.

FAPA and partners Piedmont Airlines and Ameriflight are committed to ‘Building the Pilot Pipeline’.

Learn more and register to attend in person or virtually at FAPA.aero/FuturePilot

  • Saturday, January 7, 2017
    Miami, Florida
  • Saturday, January 28, 2017
    Honolulu, Hawaii
  • Saturday, February 4, 2017
    Phoenix, Arizona (Registration will open soon)
  • Saturday, April 22, 2017
    Las Vegas, Nevada

Click here to share the post on Facebook

Click here to download a zip file of graphics to share

Click here to browse to the page to see and download graphics

fapa-logo-6184240-6747935

If you have any pre-event questions, please email Laura Arden at events@FAPA.aero.

Leave a Reply

Your email address will not be published. Required fields are marked *