[ SEA-GHOST MINI SHELL]

Path : /var/www/dinnerapp/js/
FILE UPLOADER :
Current File : /var/www/dinnerapp/js/jquery.nyroModal.custom.js

/*

 * nyroModal v2.0.0

 * Core

 *

 * Commit 61895b6ee8cb543cfdaa17d703ec6bcd338fec5f (01/16/2013) * 
 * 
 * Included parts:
 * - anims.fade
 * - filters.title
 * - filters.gallery
 * - filters.link
 * - filters.dom
 * - filters.data
 * - filters.image
 * - filters.swf
 * - filters.form
 * - filters.formFile
 * - filters.iframe
 * - filters.iframeForm
 * - filters.embedly
 */
/*

 * nyroModal v2.0.0

 * Core

 *

 */

jQuery(function($, undefined) {



	var uaMatch = function(ua) {

		ua = ua.toLowerCase();

		var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||

			/(webkit)[ \/]([\w.]+)/.exec( ua ) ||

			/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||

			/(msie) ([\w.]+)/.exec( ua ) ||

			ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||

			[];



		return {

			browser: match[ 1 ] || "",

			version: match[ 2 ] || "0"

		};

	},

	matched = uaMatch(navigator.userAgent),

	browser = {};



	if (matched.browser) {

		browser[matched.browser] = true;

		browser.version = matched.version;

	}



	// Chrome is Webkit, but Webkit is also Safari.

	if (browser.chrome) {

		browser.webkit = true;

	} else if (browser.webkit) {

		browser.safari = true;

	}



	var $w = $(window),

		$d = $(document),

		$b = $('body'),

		baseHref = $('base').attr('href'),

		// nyroModal Object

		_nmObj = {

			filters: [],	// List of filters used

			callbacks: {},	// Sepcific callbacks

			anims: {},	// Sepcific animations functions

			loadFilter: undefined,	// Name of the filter used for loading



			modal: false,	// Indicates if it's a modal window or not

			closeOnEscape: true,	// Indicates if the modal should close on Escape key

			closeOnClick: true,	// Indicates if a click on the background should close the modal

			useKeyHandler: false,	// Indicates if the modal has to handle key down event



			showCloseButton: true,	// Indicates if the closeButonn should be added

			closeButton: '<a href="#" class="nyroModalClose nyroModalCloseButton nmReposition" title="close">Close</a>',	// Close button HTML



			stack: false,	// Indicates if links automatically binded inside the modal should stack or not

			nonStackable: 'form',	// Filter to not stack DOM element



			header: undefined,	// header include in every modal

			footer: undefined,	// footer include in every modal

			

			// Specific confirguation for gallery filter

			galleryLoop: true,	// Indicates if the gallery should loop

			galleryCounts: true,	// Indicates if the gallery counts should be shown

			ltr: true, // Left to Right by default. Put to false for Hebrew or Right to Left language. Used in gallery filter



			// Specific confirguation for DOM filter

			domCopy: false, // Indicates if DOM element should be copied or moved

			

			// Specific confirguation for link and form filters

			ajax: {}, // Ajax options to be used in link and form filter

			

			// Specific confirguation for image filter

			imageRegex: '[^\.]\.(jpg|jpeg|png|tiff|gif|bmp)\s*$',	// Regex used to detect image link



			selIndicator: 'nyroModalSel', // Value added when a form or Ajax is sent with a filter content



			swfObjectId: undefined, // Object id for swf object

			swf:  {	// Default SWF attributes

				allowFullScreen: 'true',

				allowscriptaccess: 'always',

				wmode: 'transparent'

			},



			store: {},	// Storage object for filters.

			errorMsg: 'An error occured',	// Error message

			elts: {	// HTML elements for the modal

				all: undefined,

				bg: undefined,

				load: undefined,

				cont: undefined,

				hidden: undefined

			},

			sizes: {	// Size information

				initW: undefined,	// Initial width

				initH: undefined,	// Initial height

				w: undefined,		// width

				h: undefined,		// height

				minW: undefined,	// minimum Width

				minH: undefined,	// minimum height

				wMargin: undefined,	// Horizontal margin

				hMargin: undefined	// Vertical margin

			},

			anim: {	// Animation names to use

				def: undefined,			// Default animation set to use if sspecific are not defined or doesn't exist

				showBg: undefined,		// Set to use for showBg animation

				hideBg: undefined,		// Set to use for hideBg animation

				showLoad: undefined,	// Set to use for showLoad animation

				hideLoad: undefined,	// Set to use for hideLoad animation

				showCont: undefined,	// Set to use for showCont animation

				hideCont: undefined,	// Set to use for hideCont animation

				showTrans: undefined,	// Set to use for showTrans animation

				hideTrans: undefined,	// Set to use for hideTrans animation

				resize: undefined		// Set to use for resize animation

			},



			_open: false,	// Indicates if the modal is open

			_bgReady: false,	// Indicates if the background is ready

			_opened: false,	// Indicates if the modal was opened (useful for stacking)

			_loading: false,	// Indicates if the loading is shown

			_animated: false,	// Indicates if the modal is currently animated

			_transition: false,	//Indicates if the modal is in transition

			_nmOpener: undefined,	// nmObj of the modal that opened the current one in non stacking mode

			_nbContentLoading: 0,	// Counter for contentLoading call

			_scripts: '',	// Scripts tags to be included

			_scriptsShown: '',	//Scripts tags to be included once the modal is swhon



			// save the object in data

			saveObj: function() {

				this.opener.data('nmObj', this);

			},

			// Open the modal

			open: function() {

				if (this._nmOpener)

					this._nmOpener._close();

				this.getInternal()._pushStack(this.opener);

				this._opened = false;

				this._bgReady = false;

				this._open = true;

				this._initElts();

				this._load();

				this._nbContentLoading = 0;

				this._callAnim('showBg', $.proxy(function() {

					this._bgReady = true;

					if (this._nmOpener) {

						// fake closing of the opener nyroModal

						this._nmOpener._bgReady = false;

						this._nmOpener._loading = false;

						this._nmOpener._animated = false;

						this._nmOpener._opened = false;

						this._nmOpener._open = false;

						this._nmOpener.elts.cont = this._nmOpener.elts.hidden = this._nmOpener.elts.load = this._nmOpener.elts.bg = this._nmOpener.elts.all = undefined;

						this._nmOpener.saveObj();

						this._nmOpener = undefined;

					}

					this._contentLoading();

				}, this));

			},



			// Resize the modal according to sizes.initW and sizes.initH

			// Will call size function

			// @param recalc boolean: Indicate if the size should be recalaculated (useful when content has changed)

			resize: function(recalc) {

				if (recalc) {

					this.elts.hidden.append(this.elts.cont.children().first().clone());

					this.sizes.initW = this.sizes.w = this.elts.hidden.width();

					this.sizes.initH = this.sizes.h = this.elts.hidden.height();

					this.elts.hidden.empty();

				} else {

					this.sizes.w = this.sizes.initW;

					this.sizes.h = this.sizes.initH;

				}

				this._unreposition();

				this.size();

				this._callAnim('resize', $.proxy(function() {

					this._reposition();

				}, this));

			},



			// Update sizes element to not go outsize the viewport.

			// Will call 'size' callback filter

			size: function() {

				var maxHeight = this.getInternal().fullSize.viewH - this.sizes.hMargin,

					maxWidth = this.getInternal().fullSize.viewW - this.sizes.wMargin;

				if (this.sizes.minW && this.sizes.minW > this.sizes.w)

					this.sizes.w = this.sizes.minW;

				if (this.sizes.minH && this.sizes.minH > this.sizes.h)

					this.sizes.h = this.sizes.minH;

				if (this.sizes.h > maxHeight || this.sizes.w > maxWidth) {

					// We're gonna resize the modal as it will goes outside the view port

					this.sizes.h = Math.min(this.sizes.h, maxHeight);

					this.sizes.w = Math.min(this.sizes.w, maxWidth);

				}

				this._callFilters('size');

			},



			// Get the nmObject for a new nyroModal

			getForNewLinks: function(elt) {

				var ret;

				if (this.stack && (!elt || this.isStackable(elt))) {

					ret = $.extend(true, {}, this);

					ret._nmOpener = undefined;

					ret.elts.all = undefined;

				} else {

					ret = $.extend({}, this);

					ret._nmOpener = this;

				}

				ret.filters = [];

				ret.opener = undefined;

				ret._open = false;

				return ret;

			},

			

			// Indicate if an element can be stackable or not, regarding the nonStackable setting

			isStackable: function(elt) {

				return !elt.is(this.nonStackable);

			},



			// key handle function.

			// Will call 'keyHandle' callback filter

			keyHandle: function(e) {

				this.keyEvent = e;

				this._callFilters('keyHandle');

				this.keyEvent = undefined;

				delete(this.keyEvent);

			},



			// Get the internal object

			getInternal: function() {

				return _internal;

			},



			// Internal function for closing a nyroModal

			// Will call 'close' callback filter

			_close: function() {

				this.getInternal()._removeStack(this.opener);

				this._opened = false;

				this._open = false;

				this._callFilters('close');

			},

			// Public function for closing a nyroModal

			close: function() {

				this._close();

				this._callFilters('beforeClose');

				var self = this;

				this._unreposition();

				self._callAnim('hideCont', function() {

					self._callAnim('hideLoad', function() {

						self._callAnim('hideBg', function() {

							self._callFilters('afterClose');

							self.elts.cont.remove();

							self.elts.hidden.remove();

							self.elts.load.remove();

							self.elts.bg.remove();

							self.elts.all.remove();

							self.elts.cont = self.elts.hidden = self.elts.load = self.elts.bg = self.elts.all = undefined;

						});

					});

				});

			},

			

			// Public function for destroying a nyroModal instance, only for non open modal

			destroy: function() {

				if (this._open)

					return false;

				this._callFilters('destroy');

				if (this.elts.all)

					this.elts.all.remove();

				return true;

			},



			// Init HTML elements

			_initElts: function() {

				if (!this.stack && this.getInternal().stack.length > 1)

					this.elts = this.getInternal().stack[this.getInternal().stack.length-2]['nmObj'].elts;

				if (!this.elts.all || this.elts.all.closest('body').length == 0)

					this.elts.all = this.elts.bg = this.elts.cont = this.elts.hidden = this.elts.load = undefined;

				if (!this.elts.all)

					this.elts.all = $('<div />').appendTo(this.getInternal()._container);

				if (!this.elts.bg)

					this.elts.bg = $('<div />').hide().appendTo(this.elts.all);

				if (!this.elts.cont)

					this.elts.cont = $('<div />').hide().appendTo(this.elts.all);

				if (!this.elts.hidden)

					this.elts.hidden = $('<div />').hide().appendTo(this.elts.all);

				this.elts.hidden.empty();

				if (!this.elts.load)

					this.elts.load = $('<div />').hide().appendTo(this.elts.all);

				this._callFilters('initElts');

			},



			// Trigger the error

			// Will call 'error' callback filter

			_error: function(jqXHR) {

				this._callFilters('error', jqXHR);

			},



			// Set the HTML content to show.

			// - html: HTML content

			// - selector: selector to filter the content

			// Will init the size and call the 'size' function.

			// Will call 'filledContent' callback filter

			_setCont: function(html, selector) {

				if (selector) {

					var tmp = [],

						i = 0;

					// Looking for script to store them

					html = html

						.replace(/\r\n/gi, 'nyroModalLN')

						.replace(/<script(.|\s)*?\/script>/gi, function(x) {

								tmp[i] = x;

								return '<pre class=nyroModalScript rel="'+(i++)+'"></pre>';

							});

					var cur = $('<div>'+html+'</div>').find(selector);

					if (cur.length) {

						html = cur.html()

							.replace(/<pre class="?nyroModalScript"? rel="?([0-9]*)"?><\/pre>/gi, function(x, y, z) { return tmp[y]; })

							.replace(/nyroModalLN/gi, "\r\n");

					} else {

						// selector not found

						this._error();

						return;

					}

				}

				this.elts.hidden

					.append(this._filterScripts(html))

					.prepend(this.header)

					.append(this.footer)

					.wrapInner($('<div />', {'class': 'nyroModal'+ucfirst(this.loadFilter)}));



				// Store the size of the element

				this.sizes.initW = this.sizes.w = this.elts.hidden.width();

				this.sizes.initH = this.sizes.h = this.elts.hidden.height();

				var outer = this.getInternal()._getOuter(this.elts.cont);

				this.sizes.hMargin = outer.h.total;

				this.sizes.wMargin = outer.w.total;



				this.size();



				this.loading = false;

				this._callFilters('filledContent');

				this._contentLoading();

			},



			// Filter an html content to remove the script[src] and store them appropriately if needed

			// - data: Data to filter

			_filterScripts: function(data) {

				if (typeof data != 'string')

					return data;



				this._scripts = [];

				this._scriptsShown = [];

				var start = 0,

					stStart = '<script',

					stEnd = '</script>',

					endLn = stEnd.length,

					pos,

					pos2,

					tmp;

				while ((pos = data.indexOf(stStart, start)) > -1) {

					pos2 = data.indexOf(stEnd)+endLn;

					tmp = $(data.substring(pos, pos2));

					if (!tmp.attr('src') || tmp.attr('rel') == 'forceLoad') {

						if (tmp.attr('rev') == 'shown')

							this._scriptsShown.push(tmp.get(0));

						else

							this._scripts.push(tmp.get(0));

					}

					data = data.substring(0, pos)+data.substr(pos2);

					start = pos;

				}

				return data;

			},



			// Check if the nmObject has a specific filter

			// - filter: Filter name

			_hasFilter: function(filter) {

				var ret = false;

				$.each(this.filters, function(i, f) {

					ret = ret || f == filter;

				});

				return ret;

			},



			// Remove a specific filter

			// - filter: Filter name

			_delFilter: function(filter) {

				this.filters = $.map(this.filters, function(v) {

					if (v != filter)

						return v;

				});

			},



			// Call a function against all active filters

			// - fct: Function name

			// - prm: Parameter to be used in callback

			// return an array of all return of callbacks; keys are filters name

			_callFilters: function(fct, prm) {

				this.getInternal()._debug(fct);

				var ret = [],

					self = this;

				$.each(this.filters, function(i, f) {

					ret[f] = self._callFilter(f, fct, prm);

				});

				if (this.callbacks[fct] && $.isFunction(this.callbacks[fct]))

					this.callbacks[fct](this, prm);

				return ret;

			},



			// Call a filter function for a specific filter

			// - f: Filter name

			// - fct: Function name

			// - prm: Parameter to be used in callback

			// return the return of the callback

			_callFilter: function(f, fct, prm) {

				if (_filters[f] && _filters[f][fct] && $.isFunction(_filters[f][fct]))

					return _filters[f][fct](this, prm);

				return undefined;

			},



			// Call animation callback.

			// Will also call beforeNNN and afterNNN filter callbacks

			// - fct: Animation function name

			// - clb: Callback once the animation is done

			_callAnim: function(fct, clb) {

				this.getInternal()._debug(fct);

				this._callFilters('before'+ucfirst(fct));

				if (!this._animated) {

					this._animated = true;

					if (!$.isFunction(clb)) clb = $.noop;

					if (this.anims[fct] && $.isFunction(this.anims[fct])) {

						curFct = this.anims[fct];

					} else {

						var set = this.anim[fct] || this.anim.def || 'basic';

						if (!_animations[set] || !_animations[set][fct] || !$.isFunction(_animations[set][fct]))

							set = 'basic';

						curFct = _animations[set][fct];

					}

					curFct(this, $.proxy(function() {

							this._animated = false;

							this._callFilters('after'+ucfirst(fct));

							clb();

						}, this));

				}

			},



			// Load the content

			// Will call the 'load' function of the filter specified in the loadFilter parameter

			_load: function() {

				this.getInternal()._debug('_load');

				if (!this.loading && this.loadFilter) {

					this.loading = true;

					this._callFilter(this.loadFilter, 'load');

				}

			},



			// Show the content or the loading according to the current state of the modal

			_contentLoading: function() {

				if (!this._animated && this._bgReady) {

					if (!this._transition && this.elts.cont.html().length > 0)

						this._transition = true;

					this._nbContentLoading++;

					if (!this.loading) {

						if (!this._opened) {

							this._opened = true;

							if (this._transition) {

								var fct = $.proxy(function() {

									this._writeContent();

									this._callFilters('beforeShowCont');

									this._callAnim('hideTrans', $.proxy(function() {

										this._transition = false;

										this._callFilters('afterShowCont');

										this.elts.cont.append(this._scriptsShown);

										this._reposition();

										this.elts.cont.scrollTop(0);

									}, this));

								}, this);

								if (this._nbContentLoading == 1) {

									this._unreposition();

									this._callAnim('showTrans', fct);

								} else {

									fct();

								}

							} else {

								this._callAnim('hideLoad', $.proxy(function() {

									this._writeContent();

									this._callAnim('showCont', $.proxy(function() {

										this.elts.cont.append(this._scriptsShown);

										this._reposition();

										this.elts.cont.scrollTop(0);

									}, this));

								}, this));

							}

						}

					} else if (this._nbContentLoading == 1) {

						var outer = this.getInternal()._getOuter(this.elts.load);

						this.elts.load

							.css({

								position: 'fixed',

								top: (this.getInternal().fullSize.viewH - this.elts.load.height() - outer.h.margin)/2,

								left: (this.getInternal().fullSize.viewW - this.elts.load.width() - outer.w.margin)/2

							});

						if (this._transition) {

							this._unreposition();

							this._callAnim('showTrans', $.proxy(function() {

								this._contentLoading();

							}, this));

						} else {

							this._callAnim('showLoad', $.proxy(function() {

								this._contentLoading();

							}, this));

						}

					}

				}

			},



			// Write the content in the modal.

			// Content comes from the hidden div, scripts and eventually close button.

			_writeContent: function() {

				this.elts.cont

					.empty()

					.append(this.elts.hidden.contents())

					.append(this._scripts)

					.append(this.showCloseButton ? this.closeButton : '')

					.css({

						position: 'fixed',

						width: this.sizes.w,

						height: this.sizes.h,

						top: (this.getInternal().fullSize.viewH - this.sizes.h - this.sizes.hMargin)/2,

						left: (this.getInternal().fullSize.viewW - this.sizes.w - this.sizes.wMargin)/2

					});

			},



			// Reposition elements with a class nmReposition

			_reposition: function() {

				var elts = this.elts.cont.find('.nmReposition');

				if (elts.length) {

					var space = this.getInternal()._getSpaceReposition();

					elts.each(function() {

						var me = $(this),

							offset = me.offset();

						me.css({

							position: 'fixed',

							top: offset.top - space.top,

							left: offset.left - space.left

						});

					});

					this.elts.cont.after(elts);

				}

				this.elts.cont.css('overflow', 'auto');

				this._callFilters('afterReposition');

			},



			// Unreposition elements with a class nmReposition

			// Exaclty the reverse of the _reposition function

			_unreposition: function() {

				this.elts.cont.css('overflow', '');

				var elts = this.elts.all.find('.nmReposition');

				if (elts.length)

					this.elts.cont.append(elts.removeAttr('style'));

				this._callFilters('afterUnreposition');

			}

		},

		_internal = {

			firstInit: true,

			debug: false,

			stack: [],

			fullSize: {

				w: 0,

				h: 0,

				wW: 0,

				wH: 0,

				viewW: 0,

				viewH: 0

			},

			nyroModal: function(opts, fullObj) {

				if (_internal.firstInit) {

					_internal._container = $('<div />').appendTo($b);

					$w.smartresize($.proxy(_internal._resize, _internal));

					$d.on('keydown.nyroModal', $.proxy(_internal._keyHandler, _internal));

					_internal._calculateFullSize();

					_internal.firstInit = false;

				}

				return this.nmInit(opts, fullObj).each(function() {

					_internal._init($(this).data('nmObj'));

				});

			},

			nmInit: function(opts, fullObj) {

				return this.each(function() {

					var me = $(this);

					if (fullObj)

						me.data('nmObj', $.extend(true, {opener: me}, opts));

					else

						me.data('nmObj',

							me.data('nmObj')

								? $.extend(true, me.data('nmObj'), opts)

								: $.extend(true, {opener: me}, _nmObj, opts));

				});

			},

			nmDestroy: function() {

				return this.each(function() {

					var me = $(this);

					if (me.data('nmObj')) {

						if (me.data('nmObj').destroy())

							me.removeData('nmObj');

					}

				});

			},

			nmCall: function() {

				return this.trigger('nyroModal');

			},



			nmManual: function(url, opts) {

				$('<a />', {href: url}).nyroModal(opts).trigger('nyroModal');

			},

			nmData: function(data, opts) {

				this.nmManual('#', $.extend({data: data}, opts));

			},

			nmObj: function(opts) {

				$.extend(true, _nmObj, opts);

			},

			nmInternal: function(opts) {

				$.extend(true, _internal, opts);

			},

			nmAnims: function(opts) {

				$.extend(true, _animations, opts);

			},

			nmFilters: function(opts) {

				$.extend(true, _filters, opts);

			},

			nmTop: function() {

				if (_internal.stack.length)

					return _internal.stack[_internal.stack.length-1]['nmObj'];

				return undefined;

			},



			_debug: function(msg) {

				if (this.debug && window.console && window.console.log)

					window.console.log(msg);

			},



			_container: undefined,



			_init: function(nm) {

				nm.filters = [];

				$.each(_filters, function(f, obj) {

					if (obj.is && $.isFunction(obj.is) && obj.is(nm)) {

						nm.filters.push(f);

					}

				});

				nm._callFilters('initFilters');

				nm._callFilters('init');

				nm.opener

					.off('nyroModal.nyroModal nmClose.nyroModal nmResize.nyroModal')

					.on({

						'nyroModal.nyroModal': 	function() { nm.open(); return false;},

						'nmClose.nyroModal': 	function() { nm.close(); return false;},

						'nmResize.nyroModal': 	function() { nm.resize(); return false;}

					});

			},



			_selNyroModal: function(obj) {

				return $(obj).data('nmObj') ? true : false;

			},



			_selNyroModalOpen: function(obj) {

				var me = $(obj);

				return me.data('nmObj') ? me.data('nmObj')._open : false;

			},



			_keyHandler: function(e) {

				var nmTop = $.nmTop();

				if (nmTop && nmTop.useKeyHandler) {

					return nmTop.keyHandle(e);

				}

			},

			_pushStack: function(obj) {

				this.stack = $.map(this.stack, function(elA) {

					if (elA['nmOpener'] != obj.get(0))

						return elA;

				});

				this.stack.push({

					nmOpener: obj.get(0),

					nmObj: $(obj).data('nmObj')

				});

			},

			_removeStack: function(obj) {

				this.stack = $.map(this.stack, function(elA) {

					if (elA['nmOpener'] != obj.get(0))

						return elA;

				});

			},

			_resize: function() {

				var opens = $(':nmOpen').each(function() {

					$(this).data('nmObj')._unreposition();

				});

				this._calculateFullSize();

				opens.trigger('nmResize');

			},

			_calculateFullSize: function() {

				this.fullSize = {

					w: $d.width(),

					h: $d.height(),

					wW: $w.width(),

					wH: $w.height()

				};

				this.fullSize.viewW = Math.min(this.fullSize.w, this.fullSize.wW);

				this.fullSize.viewH = Math.min(this.fullSize.h, this.fullSize.wH);

			},

			_getCurCSS: function(elm, name) {

				var ret = parseInt($.css(elm, name, true));

				return isNaN(ret) ? 0 : ret;

			},

			_getOuter: function(elm) {

				elm = elm.get(0);

				var ret = {

					h: {

						margin: this._getCurCSS(elm, 'marginTop') + this._getCurCSS(elm, 'marginBottom'),

						border: this._getCurCSS(elm, 'borderTopWidth') + this._getCurCSS(elm, 'borderBottomWidth'),

						padding: this._getCurCSS(elm, 'paddingTop') + this._getCurCSS(elm, 'paddingBottom')

					},

					w: {

						margin: this._getCurCSS(elm, 'marginLeft') + this._getCurCSS(elm, 'marginRight'),

						border: this._getCurCSS(elm, 'borderLeftWidth') + this._getCurCSS(elm, 'borderRightWidth'),

						padding: this._getCurCSS(elm, 'paddingLeft') + this._getCurCSS(elm, 'paddingRight')

					}

				};



				ret.h.outer = ret.h.margin + ret.h.border;

				ret.w.outer = ret.w.margin + ret.w.border;



				ret.h.inner = ret.h.padding + ret.h.border;

				ret.w.inner = ret.w.padding + ret.w.border;



				ret.h.total = ret.h.outer + ret.h.padding;

				ret.w.total = ret.w.outer + ret.w.padding;



				return ret;

			},

			_getSpaceReposition: function() {

				var	outer = this._getOuter($b),

					ie7 = browser.msie && browser.version < 8 && !(screen.height <= $w.height()+23);

				return {

					top: $w.scrollTop() - (!ie7 ? outer.h.border / 2 : 0),

					left: $w.scrollLeft() - (!ie7 ? outer.w.border / 2 : 0)

				};

			},



			_getHash: function(url) {

				if (typeof url == 'string') {

					var hashPos = url.indexOf('#');

					if (hashPos > -1)

						return url.substring(hashPos);

				}

				return '';

			},

			_extractUrl: function(url) {

				var ret = {

					url: undefined,

					sel: undefined

				};



				if (url) {

					var hash = this._getHash(url),

						hashLoc = this._getHash(window.location.href),

						curLoc = window.location.href.substring(0, window.location.href.length - hashLoc.length),

						req = url.substring(0, url.length - hash.length);

					ret.sel = hash;

					if (req != curLoc && req != baseHref)

						ret.url = req;
				}

				return ret;

			}

		},

		_animations = {

			basic: {

				showBg: function(nm, clb) {

					nm.elts.bg.css({opacity: 0.7}).show();

					clb();

				},

				hideBg: function(nm, clb) {

					nm.elts.bg.hide();

					clb();

				},

				showLoad: function(nm, clb) {

					nm.elts.load.show();

					clb();

				},

				hideLoad: function(nm, clb) {

					nm.elts.load.hide();

					clb();

				},

				showCont: function(nm, clb) {

					nm.elts.cont.show();

					clb();

				},

				hideCont: function(nm, clb) {

					nm.elts.cont.hide();

					clb();

				},

				showTrans: function(nm, clb) {

					nm.elts.cont.hide();

					nm.elts.load.show();

					clb();

				},

				hideTrans: function(nm, clb) {

					nm.elts.cont.show();

					nm.elts.load.hide();

					clb();

				},

				resize: function(nm, clb) {

					nm.elts.cont.css({

						width: nm.sizes.w,

						height: nm.sizes.h,

						top: (nm.getInternal().fullSize.viewH - nm.sizes.h - nm.sizes.hMargin)/2,

						left: (nm.getInternal().fullSize.viewW - nm.sizes.w - nm.sizes.wMargin)/2

					});

					clb();

				}

			}

		},

		_filters = {

			basic: {

				is: function(nm) {

					return true;

				},

				init: function(nm) {

					if (nm.opener.attr('rev') == 'modal')

						nm.modal = true;

					if (nm.modal)

						nm.closeOnEscape = nm.closeOnClick = nm.showCloseButton = false;

					if (nm.closeOnEscape)

						nm.useKeyHandler = true;

				},

				initElts: function(nm) {

					nm.elts.bg.addClass('nyroModalBg');

					if (nm.closeOnClick)

						nm.elts.bg.off('click.nyroModal').on('click.nyroModal', function(e) {

							e.preventDefault();

							nm.close();

						});

					nm.elts.cont.addClass('nyroModalCont');

					nm.elts.hidden.addClass('nyroModalCont nyroModalHidden');

					nm.elts.load.addClass('nyroModalCont nyroModalLoad');

				},

				error: function(nm) {

					nm.elts.hidden.addClass('nyroModalError');

					nm.elts.cont.addClass('nyroModalError');

					nm._setCont(nm.errorMsg);

				},

				beforeShowCont: function(nm) {

					nm.elts.cont

						.find('.nyroModal').each(function() {

							var cur = $(this);

							cur.nyroModal(nm.getForNewLinks(cur), true);

						}).end()

						.find('.nyroModalClose').on('click.nyroModal', function(e) {

							e.preventDefault();

							nm.close();

						});

				},

				keyHandle: function(nm) {

					// used for escape key

					if (nm.keyEvent.keyCode == 27 && nm.closeOnEscape) {

						nm.keyEvent.preventDefault();

						nm.close();

					}

				}

			},



			custom: {

				is: function(nm) {

					return true;

				}

			}

		};



	// Add jQuery call fucntions

	$.fn.extend({

		nm: _internal.nyroModal,

		nyroModal: _internal.nyroModal,

		nmInit: _internal.nmInit,

		nmDestroy: _internal.nmDestroy,

		nmCall: _internal.nmCall

	});



	// Add global jQuery functions

	$.extend({

		nmManual: _internal.nmManual,

		nmData: _internal.nmData,

		nmObj: _internal.nmObj,

		nmInternal: _internal.nmInternal,

		nmAnims: _internal.nmAnims,

		nmFilters: _internal.nmFilters,

		nmTop: _internal.nmTop

	});



	// Add jQuery selectors

	$.expr[':'].nyroModal = $.expr[':'].nm = _internal._selNyroModal;

	$.expr[':'].nmOpen = _internal._selNyroModalOpen;

});



// Smartresize plugin

(function($,sr){



  // debouncing function from John Hann

  // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/

  var debounce = function (func, threshold, execAsap) {

      var timeout;



      return function debounced () {

          var obj = this, args = arguments;

          function delayed () {

              if (!execAsap)

                  func.apply(obj, args);

              timeout = null;

          };



          if (timeout)

              clearTimeout(timeout);

          else if (execAsap)

              func.apply(obj, args);



          timeout = setTimeout(delayed, threshold || 1000);

      };

  };

	// smartresize

	jQuery.fn[sr] = function(fn){  return fn ? this.on('resize', debounce(fn)) : this.trigger(sr); };



})(jQuery,'smartresize');

// ucFirst

function ucfirst(str) {

    // http://kevin.vanzonneveld.net

    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)

    // +   bugfixed by: Onno Marsman

    // +   improved by: Brett Zamir (http://brett-zamir.me)

    // *     example 1: ucfirst('kevin van zonneveld');

    // *     returns 1: 'Kevin van zonneveld'

    str += '';

    var f = str.charAt(0).toUpperCase();

    return f + str.substr(1);

}
/*

 * nyroModal v2.0.0

 * 

 * Fade animations

 * 

 * Depends:

 * 

 */

jQuery(function($, undefined) {

	$.nmAnims({

		fade: {

			showBg: function(nm, clb) {

				nm.elts.bg.fadeTo(250, 0.7, clb);

			},

			hideBg: function(nm, clb) {

				nm.elts.bg.fadeOut(clb);

			},

			showLoad: function(nm, clb) {

				nm.elts.load.fadeIn(clb);

			},

			hideLoad: function(nm, clb) {

				nm.elts.load.fadeOut(clb);

			},

			showCont: function(nm, clb) {

				nm.elts.cont.fadeIn(clb);

			},

			hideCont: function(nm, clb) {

				nm.elts.cont.css('overflow', 'hidden').fadeOut(clb);

			},

			showTrans: function(nm, clb) {

				nm.elts.load

					.css({

						position: nm.elts.cont.css('position'),

						top: nm.elts.cont.css('top'),

						left: nm.elts.cont.css('left'),

						width: nm.elts.cont.css('width'),

						height: nm.elts.cont.css('height'),

						marginTop: nm.elts.cont.css('marginTop'),

						marginLeft: nm.elts.cont.css('marginLeft')

					})

					.fadeIn(function() {

						nm.elts.cont.hide();

						clb();

					});

			},

			hideTrans: function(nm, clb) {

				nm.elts.cont.css('visibility', 'hidden').show();

				nm.elts.load

					.css('position', nm.elts.cont.css('position'))

					.animate({

						top: nm.elts.cont.css('top'),

						left: nm.elts.cont.css('left'),

						width: nm.elts.cont.css('width'),

						height: nm.elts.cont.css('height'),

						marginTop: nm.elts.cont.css('marginTop'),

						marginLeft: nm.elts.cont.css('marginLeft')

					}, function() {

						nm.elts.cont.css('visibility', '');

						nm.elts.load.fadeOut(clb);

					});

			},

			resize: function(nm, clb) {

				nm.elts.cont.animate({

					width: nm.sizes.w,

					height: nm.sizes.h,

					top: (nm.getInternal().fullSize.viewH - nm.sizes.h - nm.sizes.hMargin)/2,

					left: (nm.getInternal().fullSize.viewW - nm.sizes.w - nm.sizes.wMargin)/2

				}, clb);

			}

		}

	});

	// Define fade aniamtions as default

	$.nmObj({anim: {def: 'fade'}});

});
/*

 * nyroModal v2.0.0

 * 

 * Title filter

 * 

 * Depends:

 * 

 * Before:

 */

jQuery(function($, undefined) {

	$.nmFilters({

		title: {

			is: function(nm) {

				return nm.opener.is('[title]');

			},

			beforeShowCont: function(nm) {

				var offset = nm.elts.cont.offset();

				nm.store.title = $('<h1 />', {

					text: nm.opener.attr('title')

				}).addClass('nyroModalTitle nmReposition');

				nm.elts.cont.prepend(nm.store.title);

			},

			close: function(nm) {

				if (nm.store.title) {

					nm.store.title.remove();

					nm.store.title = undefined;

					delete(nm.store.title);

				}

			}

		}

	});

});
/*

 * nyroModal v2.0.0

 * 

 * Gallery filter

 * 

 * Depends:

 * - filters.title

 * 

 * Before: filters.title

 */

jQuery(function($, undefined) {

	$.nmFilters({

		gallery: {

			is: function(nm) {

				var ret = nm.opener.is('[rel]:not([rel=external], [rel=nofollow])');

				if (ret) {

					var rel = nm.opener.attr('rel'),

						indexSpace = rel.indexOf(' '),

						gal = indexSpace > 0 ? rel.substr(0, indexSpace) : rel,

						links = $('[href][rel="'+gal+'"], [href][rel^="'+gal+' "]');

					if (links.length < 2)

						ret = false;

					if (ret && nm.galleryCounts && !nm._hasFilter('title'))

						nm.filters.push('title');

				}

				return ret;

			},

			init: function(nm) {

				nm.useKeyHandler = true;

			},

			keyHandle: function(nm) {

				// used for arrows key

				if (!nm._animated && nm._opened) {

					if (nm.keyEvent.keyCode == 39 || nm.keyEvent.keyCode == 40) {

						nm.keyEvent.preventDefault();

						nm._callFilters('galleryNext');

					} else if (nm.keyEvent.keyCode == 37 || nm.keyEvent.keyCode == 38) {

						nm.keyEvent.preventDefault();

						nm._callFilters('galleryPrev');

					}

				}

			},

			initElts: function(nm) {

				var rel = nm.opener.attr('rel'),

					indexSpace = rel.indexOf(' ');

				nm.store.gallery = indexSpace > 0 ? rel.substr(0, indexSpace) : rel;

				nm.store.galleryLinks = $('[href][rel="'+nm.store.gallery+'"], [href][rel^="'+nm.store.gallery+' "]');

				nm.store.galleryIndex = nm.store.galleryLinks.index(nm.opener);

			},

			beforeShowCont: function(nm) {

				if (nm.galleryCounts && nm.store.title && nm.store.galleryLinks && nm.store.galleryLinks.length > 1) {

					var curTitle = nm.store.title.html();

					nm.store.title.html((curTitle.length ? curTitle+' - ' : '')+(nm.store.galleryIndex+1)+'/'+nm.store.galleryLinks.length);

				}

			},

			filledContent: function(nm) {

				var link = this._getGalleryLink(nm, -1),

					append = nm.elts.hidden.find(' > div');

				if (link) {

					$('<a />', {

							text: 'previous',

							href: '#'

						})

						.addClass('nyroModalPrev')

						.on('click', function(e) {

							e.preventDefault();

							nm._callFilters('galleryPrev');

						})

						.appendTo(append);

				}

				link = this._getGalleryLink(nm, 1);

				if (link) {

					$('<a />', {

							text: 'next',

							href: '#'

						})

						.addClass('nyroModalNext')

						.on('click', function(e) {

							e.preventDefault();

							nm._callFilters('galleryNext');

						})

						.appendTo(append);

				}

			},

			close: function(nm) {

				nm.store.gallery = undefined;

				nm.store.galleryLinks = undefined;

				nm.store.galleryIndex = undefined;

				delete(nm.store.gallery);

				delete(nm.store.galleryLinks);

				delete(nm.store.galleryIndex);

				if (nm.elts.cont)

					nm.elts.cont.find('.nyroModalNext, .nyroModalPrev').remove();

			},

			galleryNext: function(nm) {

				this._getGalleryLink(nm, 1).nyroModal(nm.getForNewLinks(), true).click();

			},

			galleryPrev: function(nm) {

				this._getGalleryLink(nm, -1).nyroModal(nm.getForNewLinks(), true).click();

			},

			_getGalleryLink: function(nm, dir) {

				if (nm.store.gallery) {

					if (!nm.ltr)

						dir *= -1;

					var index = nm.store.galleryIndex + dir;

					if (nm.store.galleryLinks && index >= 0 && index < nm.store.galleryLinks.length)

						return nm.store.galleryLinks.eq(index);

					else if (nm.galleryLoop && nm.store.galleryLinks)

						return nm.store.galleryLinks.eq(index<0 ? nm.store.galleryLinks.length-1 : 0);

				}

				return undefined;

			}

		}

	});

});
/*

 * nyroModal v2.0.0

 * 

 * Link filter

 * 

 * Depends:

 * 

 * Before: filters.gallery

 */

jQuery(function($, undefined) {

	$.nmFilters({

		link: {

			is: function(nm) {

				var ret = nm.opener.is('[href]');

				if (ret)

					nm.store.link = nm.getInternal()._extractUrl(nm.opener.attr('href'));

				return ret;

			},

			init: function(nm) {

				nm.loadFilter = 'link';

				nm.opener.off('click.nyroModal').on('click.nyroModal', function(e) {

					e.preventDefault();

					nm.opener.trigger('nyroModal');

				});

			},

			load: function(nm) {

				$.ajax($.extend(true, {}, nm.ajax || {}, {

					url: nm.store.link.url,

					data: nm.store.link.sel ? [{name: nm.selIndicator, value: nm.store.link.sel.substring(1)}] : undefined,

					success: function(data) {

						nm._setCont(data, nm.store.link.sel);

					},

					error: function(jqXHR) {

						nm._error(jqXHR);

					}

				}));

			},

			destroy: function(nm) {

				nm.opener.off('click.nyroModal');

			}

		}

	});

});
/*

 * nyroModal v2.0.0
 * 

 * Dom filter

 * 

 * Depends:

 * - filters.link

 * 

 * Before: filters.link

 */

jQuery(function($, undefined) {

	$.nmFilters({

		dom: {

			is: function(nm) {

				return nm._hasFilter('link') && !nm.store.link.url && nm.store.link.sel;

			},

			init: function(nm) {

				nm.loadFilter = 'dom';

			},

			load: function(nm) {

				nm.store.domEl = $(nm.store.link.sel);

				if (nm.store.domEl.length)

					nm._setCont(nm.domCopy ? nm.store.domEl.html() : nm.store.domEl.contents());

				else

					nm._error();

			},

			close: function(nm) {

				if (!nm.domCopy && nm.store.domEl && nm.elts.cont)

					nm.store.domEl.append(nm.elts.cont.find('.nyroModalDom').contents());

			}

		}

	});

});
/*

 * nyroModal v2.0.0

 * 

 * Data filter

 * 

 * Depends:

 * - filters.link

 * 

 * Before: filters.dom

 */

jQuery(function($, undefined) {

	$.nmFilters({

		data: {

			is: function(nm) {

				var ret = nm.data ? true : false;

				if (ret)

					nm._delFilter('dom');

				return ret;

			},

			init: function(nm) {

				nm.loadFilter = 'data';

			},

			load: function(nm) {

				nm._setCont(nm.data);

			}

		}

	});

});
/*

 * nyroModal v2.0.0

 * 

 * Image filter

 * 

 * Depends:

 * - filters.link

 * 

 * Before: filters.data

 */

jQuery(function($, undefined) {

	$.nmFilters({

		image: {

			is: function(nm) {

				return (new RegExp(nm.imageRegex, 'i')).test(nm.opener.attr('href'));

			},

			init: function(nm) {

				nm.loadFilter = 'image';

			},

			load: function(nm) {

				var url = nm.opener.attr('href');

				$('<img />')

					.load(function() {

						nm.elts.cont.addClass('nyroModalImg');

						nm.elts.hidden.addClass('nyroModalImg');

						nm._setCont(this);

					}).error(function() {

						nm._error();

					})

					.attr('src', url);

			},

			size: function(nm) {

				if (nm.sizes.w != nm.sizes.initW || nm.sizes.h != nm.sizes.initH) {

					var ratio = Math.min(nm.sizes.w/nm.sizes.initW, nm.sizes.h/nm.sizes.initH);

					nm.sizes.w = nm.sizes.initW * ratio;

					nm.sizes.h = nm.sizes.initH * ratio;

				}

				var img = nm.loading ? nm.elts.hidden.find('img') : nm.elts.cont.find('img');

				img.attr({

					width: nm.sizes.w,

					height: nm.sizes.h

				});

			},

			close: function(nm) {

				if (nm.elts.cont) {

					nm.elts.cont.removeClass('nyroModalImg');

					nm.elts.hidden.removeClass('nyroModalImg');

				}

			}

		}

	});

});
/*

 * nyroModal v2.0.0

 * 

 * SWF filter

 * 

 * Depends:

 * - filters.link

 * 

 * Before: filters.image

 */

jQuery(function($, undefined) {

	$.nmFilters({

		swf: {

			idCounter: 1,

			is: function(nm) {

				return nm._hasFilter('link') && nm.opener.is('[href$=".swf"]');

			},

			init: function(nm) {

				nm.loadFilter = 'swf';

			},

			load: function(nm) {

				if (!nm.swfObjectId)

					nm.swfObjectId = 'nyroModalSwf-'+(this.idCounter++);

				var url = nm.store.link.url,

					cont = '<div><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="'+nm.swfObjectId+'" width="'+nm.sizes.w+'" height="'+nm.sizes.h+'"><param name="movie" value="'+url+'"></param>',

					tmp = '';

				$.each(nm.swf, function(name, val) {

					cont+= '<param name="'+name+'" value="'+val+'"></param>';

					tmp+= ' '+name+'="'+val+'"';

				});

				cont+= '<embed src="'+url+'" type="application/x-shockwave-flash" width="'+nm.sizes.w+'" height="'+nm.sizes.h+'"'+tmp+'></embed></object></div>';

				nm._setCont(cont);

			}

		}

	});

});
/*

 * nyroModal v2.0.0

 * 

 * Form filter

 * 

 * Depends:

 * 

 * Before: filters.swf

 */

jQuery(function($, undefined) {

	$.nmFilters({

		form: {

			is: function(nm) {

				var ret = nm.opener.is('form');

				if (ret)

					nm.store.form = nm.getInternal()._extractUrl(nm.opener.attr('action'));

				return ret;

			},

			init: function(nm) {

				nm.loadFilter = 'form';

				nm.opener.off('submit.nyroModal').on('

SEA-GHOST - SHELL CODING BY SEA-GHOST