﻿/**
* SimpleModal 1.2.3 - jQuery Plugin
* http://www.ericmmartin.com/projects/simplemodal/
*
* Copyright (c) 2009 Eric Martin
* Released under the MIT and GPL licenses
*
* Revision: $Id: jquery.simplemodal.js 185 2009-02-09 21:51:12Z emartin24 $
**/

//(function($) { var ie6 = $.browser.msie && parseInt($.browser.version) == 6 && typeof window['XMLHttpRequest'] != "object"; var ieQuirks = null; var w = []; $.modal = function(data, options) { return $.modal.impl.init(data, options); }; $.modal.close = function() { $.modal.impl.close(); }; $.fn.modal = function(options) { return $.modal.impl.init(this, options); }; $.modal.defaults = { parentSelector: '#wrapper', opacity: 85, overlayId: 'simplemodal-overlay', overlayCss: {}, containerId: 'simplemodal-container', containerCss: {}, dataCss: {}, zIndex: 1000, close: false, closeHTML: '', closeClass: 'simplemodal-close', position: null, persist: false, onOpen: null, onShow: null, onClose: null }; $.modal.impl = { opts: null, dialog: {}, init: function(data, options) { if (this.dialog.data) { return false; } ieQuirks = $.browser.msie && !$.boxModel; this.opts = $.extend({}, $.modal.defaults, options); this.zIndex = this.opts.zIndex; this.occb = false; if (typeof data == 'object') { data = data instanceof jQuery ? data : $(data); if (data.parent().parent().size() > 0) { this.dialog.parentNode = data.parent(); if (!this.opts.persist) { this.dialog.orig = data.clone(true); } } } else if (typeof data == 'string' || typeof data == 'number') { data = $('<div/>').html(data); } else { alert('SimpleModal Error: Unsupported data type: ' + typeof data); return false; } this.dialog.data = data.addClass('simplemodal-data').css(this.opts.dataCss); data = null; this.create(); this.open(); if ($.isFunction(this.opts.onShow)) { this.opts.onShow.apply(this, [this.dialog]); } return this; }, create: function() { w = this.getDimensions(); if (ie6) { this.dialog.iframe = $('<iframe src="javascript:false;"/>').css($.extend(this.opts.iframeCss, { display: 'none', opacity: 0, position: 'fixed', height: w[0], width: w[1], zIndex: this.opts.zIndex, top: 0, left: 0 })).appendTo(this.opts.parentSelector); } this.dialog.overlay = $('<div/>').attr('id', this.opts.overlayId).addClass('simplemodal-overlay').css($.extend(this.opts.overlayCss, { display: 'none', opacity: this.opts.opacity / 100, height: w[0], width: w[1], position: 'fixed', left: 0, top: 0, zIndex: this.opts.zIndex + 1 })).appendTo(this.opts.parentSelector); this.dialog.container = $('<div/>').attr('id', this.opts.containerId).addClass('simplemodal-container').css($.extend(this.opts.containerCss, { display: 'none', position: 'fixed', zIndex: this.opts.zIndex + 2 })).appendTo(this.opts.parentSelector); this.setPosition(); if (ie6 || ieQuirks) { this.fixIE(); } this.dialog.container.append(this.dialog.data.hide()); }, bindEvents: function() { var self = this; $('.' + this.opts.closeClass).bind('click.simplemodal', function(e) { e.preventDefault(); self.close(); }); $(window).bind('resize.simplemodal', function() { w = self.getDimensions(); self.setPosition(); if (ie6 || ieQuirks) { self.fixIE(); } else { self.dialog.iframe && self.dialog.iframe.css({ height: w[0], width: w[1] }); self.dialog.overlay.css({ height: w[0], width: w[1] }); } }); }, unbindEvents: function() { $('.' + this.opts.closeClass).unbind('click.simplemodal'); $(window).unbind('resize.simplemodal'); }, fixIE: function() { var p = this.opts.position; $.each([this.dialog.iframe || null, this.dialog.overlay, this.dialog.container], function(i, el) { if (el) { var bch = 'document.body.clientHeight', bcw = 'document.body.clientWidth'; var bsh = 'document.body.scrollHeight', bsl = 'document.body.scrollLeft'; var bst = 'document.body.scrollTop', bsw = 'document.body.scrollWidth'; var ch = 'document.documentElement.clientHeight', cw = 'document.documentElement.clientWidth'; var sl = 'document.documentElement.scrollLeft', st = 'document.documentElement.scrollTop'; var s = el[0].style; s.position = 'absolute'; if (i < 2) { s.removeExpression('height'); s.removeExpression('width'); s.setExpression('height', '' + bsh + ' > ' + bch + ' ? ' + bsh + ' : ' + bch + ' + "px"'); s.setExpression('width', '' + bsw + ' > ' + bcw + ' ? ' + bsw + ' : ' + bcw + ' + "px"'); } else { var te; var le; if (p && p.constructor == Array) { var top = p[0] ? typeof p[0] == 'number' ? p[0].toString() : p[0].replace(/px/, '') : el.css('top').replace(/px/, ''); te = top.indexOf('%') == -1 ? top + ' + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"' : parseInt(top.replace(/%/, '')) + ' * ((' + ch + ' || ' + bch + ') / 100) + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"'; if (p[1]) { var left = typeof p[1] == 'number' ? p[1].toString() : p[1].replace(/px/, ''); le = left.indexOf('%') == -1 ? left + ' + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"' : parseInt(left.replace(/%/, '')) + ' * ((' + cw + ' || ' + bcw + ') / 100) + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"'; } } else { te = '(' + ch + ' || ' + bch + ') / 2 - (this.offsetHeight / 2) + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"'; le = '(' + cw + ' || ' + bcw + ') / 2 - (this.offsetWidth / 2) + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"'; } s.removeExpression('top'); s.removeExpression('left'); s.setExpression('top', te); s.setExpression('left', le); } } }); }, getDimensions: function() { return [$(window).height(), $(window).width()]; }, setPosition: function() { var hCenter = (w[0] / 2) - ((this.dialog.data.height() || parseInt($(this.dialog.data).css('height'))) / 2); var vCenter = (w[1] / 2) - ((this.dialog.data.width() || parseInt($(this.dialog.data).css('width'))) / 2); var top = hCenter; var left = vCenter; if (this.opts.position && this.opts.position.constructor == Array) { top = this.opts.position[0] || hCenter; left = this.opts.position[1] || vCenter; } this.dialog.container.css({ left: left, top: top }); }, open: function() { this.dialog.iframe && this.dialog.iframe.show(); if ($.isFunction(this.opts.onOpen)) { this.opts.onOpen.apply(this, [this.dialog]); } else { this.dialog.overlay.show(); this.dialog.container.show(); this.dialog.data.show(); } this.bindEvents(); }, close: function() { if (!this.dialog.data) { return false; } if ($.isFunction(this.opts.onClose) && !this.occb) { this.occb = true; this.opts.onClose.apply(this, [this.dialog]); } else { if (this.dialog.parentNode) { if (this.opts.persist) { this.dialog.data.hide().appendTo(this.dialog.parentNode); } else { this.dialog.data.remove(); this.dialog.orig.appendTo(this.dialog.parentNode); } } else { this.dialog.data.remove(); } this.dialog.container.remove(); this.dialog.overlay.remove(); this.dialog.iframe && this.dialog.iframe.remove(); this.dialog = {}; } this.unbindEvents(); } }; })(jQuery);

(function($) {
	var ie6 = $.browser.msie && parseInt($.browser.version) == 6 && typeof window['XMLHttpRequest'] != "object";
	var ieQuirks = null;
	var w = [];
	$.modal = function(data, options) {
		return $.modal.impl.init(data, options);
	};
	$.modal.close = function() {
		$.modal.impl.close();
	};
	$.fn.modal = function(options) {
		return $.modal.impl.init(this, options);
	};
	$.modal.defaults = {
		parentSelector: '#wrapper',
		opacity: 85,
		overlayId: 'simplemodal-overlay',
		overlayCss: {},
		containerId: 'simplemodal-container',
		containerCss: {},
		dataCss: {},
		zIndex: 1000,
		close: false,
		closeHTML: '',
		closeClass: 'simplemodal-close',
		position: null,
		persist: false,
		onOpen: null,
		onShow: null,
		onClose: null
	};
	$.modal.impl = {
		opts: null,
		dialog: {},
		init: function(data, options) {
			if (this.dialog.data) {
				return false;
			}
			ieQuirks = $.browser.msie && !$.boxModel;
			this.opts = $.extend({}, $.modal.defaults, options);
			this.zIndex = this.opts.zIndex;
			this.occb = false;
			if (typeof data == 'object') {
				data = data instanceof jQuery ? data : $(data);
				if (data.parent().parent().size() > 0) {
					this.dialog.parentNode = data.parent();
					if (!this.opts.persist) {
						this.dialog.orig = data.clone(true);
					}
				}
			} else if (typeof data == 'string' || typeof data == 'number') {
				data = $('<div/>').html(data);
			} else {
				alert('SimpleModal Error: Unsupported data type: ' + typeof data);
				return false;
			}
			this.dialog.data = data.addClass('simplemodal-data').css(this.opts.dataCss);
			data = null;
			this.create();
			this.open();
			if ($.isFunction(this.opts.onShow)) {
				this.opts.onShow.apply(this, [this.dialog]);
			}
			return this;
		},
		create: function() {
			w = this.getDimensions();
			if (ie6) {
				this.dialog.iframe = $('<iframe src="javascript:false;"/>')
					.css($.extend(this.opts.iframeCss, {
						display: 'none',
						opacity: 0,
						position: 'fixed',
						height: w[0],
						width: w[1],
						zIndex: this.opts.zIndex,
						top: 0,
						left: 0
					})).appendTo(this.opts.parentSelector);
			}
			this.dialog.overlay = $('<div/>')
				.attr('id', this.opts.overlayId)
				.addClass('simplemodal-overlay')
				.css($.extend(this.opts.overlayCss, {
					display: 'none',
					opacity: this.opts.opacity / 100,
					height: w[0],
					width: w[1],
					position: 'fixed',
					left: 0,
					top: 0,
					zIndex: this.opts.zIndex + 1
				})).appendTo(this.opts.parentSelector);
			this.dialog.container = $('<div/>')
				.attr('id', this.opts.containerId)
				.addClass('simplemodal-container')
				.css($.extend(this.opts.containerCss, {
					display: 'none',
					position: 'fixed',
					zIndex: this.opts.zIndex + 2
				})).appendTo(this.opts.parentSelector);
			this.setPosition();
			if (ie6 || ieQuirks) {
				this.fixIE();
			}
			this.dialog.container.append(this.dialog.data.hide());
		},
		bindEvents: function() {
			var self = this;
			$('.' + this.opts.closeClass).live('click.simplemodal', function(e) {
				/*e.preventDefault();*/
				self.close();
			});
			$(window).bind('resize.simplemodal', function() {
				w = self.getDimensions();
				self.setPosition();
				if (ie6 || ieQuirks) {
					self.fixIE();
				} else {
					self.dialog.iframe && self.dialog.iframe.css({ height: w[0], width: w[1] });
					self.dialog.overlay.css({ height: w[0], width: w[1] });
				}
			});
		},
		unbindEvents: function() {
			$('.' + this.opts.closeClass).unbind('click.simplemodal');
			$(window).unbind('resize.simplemodal');
		},
		fixIE: function() {
			var p = this.opts.position;
			$.each([this.dialog.iframe || null, this.dialog.overlay, this.dialog.container], function(i, el) {
				if (el) {
					var bch = 'document.body.clientHeight', bcw = 'document.body.clientWidth';
					var bsh = 'document.body.scrollHeight', bsl = 'document.body.scrollLeft';
					var bst = 'document.body.scrollTop', bsw = 'document.body.scrollWidth';
					var ch = 'document.documentElement.clientHeight', cw = 'document.documentElement.clientWidth';
					var sl = 'document.documentElement.scrollLeft', st = 'document.documentElement.scrollTop';
					var s = el[0].style;
					s.position = 'absolute';
					if (i < 2) {
						s.removeExpression('height');
						s.removeExpression('width');
						s.setExpression('height', '' + bsh + ' > ' + bch + ' ? ' + bsh + ' : ' + bch + ' + "px"');
						s.setExpression('width', '' + bsw + ' > ' + bcw + ' ? ' + bsw + ' : ' + bcw + ' + "px"');
					} else {
						var te;
						var le;
						if (p && p.constructor == Array) {
							var top = p[0]
								? typeof p[0] == 'number' ? p[0].toString() : p[0].replace(/px/, '')
								: el.css('top').replace(/px/, '');
							te = top.indexOf('%') == -1
								? top + ' + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"'
								: parseInt(top.replace(/%/, '')) + ' * ((' + ch + ' || ' + bch + ') / 100) + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"';
							if (p[1]) {
								var left = typeof p[1] == 'number' ? p[1].toString() : p[1].replace(/px/, '');
								le = left.indexOf('%') == -1
									? left + ' + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"'
									: parseInt(left.replace(/%/, '')) + ' * ((' + cw + ' || ' + bcw + ') / 100) + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"';
							}
						}
						else {
							te = '(' + ch + ' || ' + bch + ') / 2 - (this.offsetHeight / 2) + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"';
							le = '(' + cw + ' || ' + bcw + ') / 2 - (this.offsetWidth / 2) + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"';
						}
						s.removeExpression('top');
						s.removeExpression('left');
						s.setExpression('top', te);
						s.setExpression('left', le);
					}
				}
			});
		},
		getDimensions: function() {
			return [$(window).height(), $(window).width()];
		},
		setPosition: function() {
			var hCenter = (w[0] / 2) - ((this.dialog.data.height() || parseInt($(this.dialog.data).css('height'))) / 2);
			var vCenter = (w[1] / 2) - ((this.dialog.data.width() || parseInt($(this.dialog.data).css('width'))) / 2);
			var top = hCenter;
			var left = vCenter;
			if (this.opts.position && this.opts.position.constructor == Array) {
				top = this.opts.position[0] || hCenter;
				left = this.opts.position[1] || vCenter;
			}
			this.dialog.container.css({ left: left, top: top });
		},
		open: function() {
			this.dialog.iframe && this.dialog.iframe.show();
			if ($.isFunction(this.opts.onOpen)) {
				this.opts.onOpen.apply(this, [this.dialog]);
			} else {
				this.dialog.overlay.show();
				this.dialog.container.show();
				this.dialog.data.show();
			}
			this.bindEvents();
		},
		close: function() {
			if (!this.dialog.data) {
				return false;
			}
			if ($.isFunction(this.opts.onClose) && !this.occb) {
				this.occb = true;
				this.opts.onClose.apply(this, [this.dialog]);
			} else {
				if (this.dialog.parentNode) {
					if (this.opts.persist) {
						this.dialog.data.hide().appendTo(this.dialog.parentNode);
					} else {
						this.dialog.data.remove();
						this.dialog.orig.appendTo(this.dialog.parentNode);
					}
				} else {
					this.dialog.data.remove();
				}

				this.dialog.container.remove();
				this.dialog.overlay.remove();
				this.dialog.iframe && this.dialog.iframe.remove();
				this.dialog = {};
			}
			this.unbindEvents();
		}
	};
})(jQuery);

