/* * SimpleModal 1.3.5 - jQuery Plugin * http://www.ericmmartin.com/projects/simplemodal/ * Copyright (c) 2010 Eric Martin (http://twitter.com/EricMMartin) * Dual licensed under the MIT and GPL licenses * Revision: $Id: jquery.simplemodal.js 245 2010-03-25 20:41:15Z emartin24 $ */
	;
(function($) {
	var ie6=$.browser.msie&&parseInt($.browser.version)==6&&typeof window['XMLHttpRequest']!="object", ieQuirks=null, 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= {
appendTo: 'body', focus: true, opacity: 50, overlayId: 'simplemodal-overlay', overlayCss: {
}
, containerId:'simplemodal-container', containerCss: {
}
, dataId:'simplemodal-data', dataCss: {
}
	, minHeight:null, minWidth:null, maxHeight:null, maxWidth:null, autoResize:false, autoPosition:true, zIndex:1000, close:true, closeHTML:'<a class="modalCloseImg" title="Close"></a>', closeClass:'simplemodal-close', escClose:true, overlayClose:false, position:null, persist:false, modal:true, onOpen:null, onShow:null, onClose:null
}
	;
$.modal.impl= {
o: null, d: {
}
, init:function(data,options) {
	var s=this;
if(s.d.data) {
	return false;
}
	ieQuirks=$.browser.msie&&!$.boxModel;
s.o=$.extend( {
}
	,$.modal.defaults,options);
	s.zIndex=s.o.zIndex;
	s.occb=false;
if(typeof data=='object') {
	data=data instanceof jQuery?data: $(data);
	s.d.placeholder=false;
if(data.parent().parent().size()>0) {
data.before($('<span></span>').attr('id','simplemodal-placeholder').css( {
	display: 'none'
}
	));
	s.d.placeholder=true;
	s.display=data.css('display');
if(!s.o.persist) {
	s.d.orig=data.clone(true);
}
}
}
else if(typeof data=='string'||typeof data=='number') {
	data=$('<div></div>').html(data);
}
else {
	alert('SimpleModal Error: Unsupported data type: '+typeof data);
	return s;
}
	s.create(data);
	data=null;
	s.open();
if($.isFunction(s.o.onShow)) {
	s.o.onShow.apply(s,[s.d]);
}
	return s;
}
, create:function(data) {
	var s=this;
	w=s.getDimensions();
if(s.o.modal&&ie6) { 
s.d.iframe=$('<iframe src="javascript: false;"></iframe>').css($.extend(s.o.iframeCss, {
	display: 'none',opacity: 0,position: 'fixed',height: w[0],width: w[1],zIndex: s.o.zIndex,top: 0,left: 0
}
	)).appendTo(s.o.appendTo);
}
s.d.overlay=$('<div></div>').attr('id',s.o.overlayId).addClass('simplemodal-overlay').css($.extend(s.o.overlayCss, {
	display: 'none',opacity: s.o.opacity/100,height: s.o.modal?w[0]: 0,width: s.o.modal?w[1]: 0,position: 'fixed',left: 0,top: 0,zIndex: s.o.zIndex+1
}
	)).appendTo(s.o.appendTo);
s.d.container=$('<div></div>').attr('id',s.o.containerId).addClass('simplemodal-container').css($.extend(s.o.containerCss, {
	display: 'none',position: 'fixed',zIndex: s.o.zIndex+2
}
	)).append(s.o.close&&s.o.closeHTML?$(s.o.closeHTML).addClass(s.o.closeClass):'').appendTo(s.o.appendTo);
s.d.wrap=$('<div></div>').attr('tabIndex',-1).addClass('simplemodal-wrap').css( {
	height: '100%',outline: 0,width: '100%'
}
	).appendTo(s.d.container);
s.d.data=data.attr('id',data.attr('id')||s.o.dataId).addClass('simplemodal-data').css($.extend(s.o.dataCss, {
	display: 'none'
}
	)).appendTo('body');
	data=null;
	s.setContainerDimensions();
	s.d.data.appendTo(s.d.wrap);
if(ie6||ieQuirks) {
	s.fixIE();
}
}
, bindEvents:function() {
	var s=this;
$('.'+s.o.closeClass).bind('click.simplemodal',function(e) {
	e.preventDefault();
	s.close();
}
	);
if(s.o.modal&&s.o.close&&s.o.overlayClose) {
s.d.overlay.bind('click.simplemodal',function(e) {
	e.preventDefault();
	s.close();
}
	);
}
$(document).bind('keydown.simplemodal',function(e) {
if(s.o.modal&&s.o.focus&&e.keyCode==9) {
	s.watchTab(e);
}
else if((s.o.close&&s.o.escClose)&&e.keyCode==27) {
	e.preventDefault();
	s.close();
}
}
	);
$(window).bind('resize.simplemodal',function() {
	w=s.getDimensions();
	s.setContainerDimensions(true);
if(ie6||ieQuirks) {
	s.fixIE();
}
else if(s.o.modal) {
s.d.iframe&&s.d.iframe.css( {
	height: w[0],width: w[1]
}
	);
s.d.overlay.css( {
	height: w[0],width: w[1]
}
	);
}
}
	);
}
, unbindEvents:function() {
	$('.'+this.o.closeClass).unbind('click.simplemodal');
	$(document).unbind('keydown.simplemodal');
	$(window).unbind('resize.simplemodal');
	this.d.overlay.unbind('click.simplemodal');
}
, fixIE:function() {
	var s=this, p=s.o.position;
$.each([s.d.iframe||null,!s.o.modal?null: s.d.overlay,s.d.container],function(i,el) {
if(el) {
	var bch='document.body.clientHeight', bcw='document.body.clientWidth', bsh='document.body.scrollHeight', bsl='document.body.scrollLeft', bst='document.body.scrollTop', bsw='document.body.scrollWidth', ch='document.documentElement.clientHeight', cw='document.documentElement.clientWidth', sl='document.documentElement.scrollLeft', st='document.documentElement.scrollTop', 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, 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);
}
}
}
	);
}
, focus:function(pos) {
	var s=this, p=pos||'first';
	var input=$(': input: enabled: visible: '+p,s.d.wrap);
	input.length>0?input.focus(): s.d.wrap.focus();
}
, getDimensions:function() {
	var el=$(window);
	var h=$.browser.opera&&$.browser.version>'9.5'&&$.fn.jquery<='1.2.6'?document.documentElement['clientHeight']: $.browser.opera&&$.browser.version<'9.5'&&$.fn.jquery>'1.2.6'?window.innerHeight: el.height();
	return[h, el.width()];
}
, getVal:function(v) {
	return v=='auto'?0: v.indexOf('%')>0?v: parseInt(v.replace(/px/,''));
}
, setContainerDimensions:function(resize) {
	var s=this;
if(!resize||(resize&&s.o.autoResize)) {
	var ch=$.browser.opera?s.d.container.height(): s.getVal(s.d.container.css('height')), cw=$.browser.opera?s.d.container.width(): s.getVal(s.d.container.css('width')), dh=s.d.data.outerHeight(true), dw=s.d.data.outerWidth(true);
	var mh=s.o.maxHeight&&s.o.maxHeight<w[0]?s.o.maxHeight: w[0], mw=s.o.maxWidth&&s.o.maxWidth<w[1]?s.o.maxWidth: w[1];
if(!ch) {
if(!dh) {
	ch=s.o.minHeight;
}
else {
if(dh>mh) {
	ch=mh;
}
else if(dh<s.o.minHeight) {
	ch=s.o.minHeight;
}
else {
	ch=dh;
}
}
}
else {
	ch=ch>mh?mh: ch;
}
if(!cw) {
if(!dw) {
	cw=s.o.minWidth;
}
else {
if(dw>mw) {
	cw=mw;
}
else if(dw<s.o.minWidth) {
	cw=s.o.minWidth;
}
else {
	cw=dw;
}
}
}
else {
	cw=cw>mw?mw: cw;
}
s.d.container.css( {
	height: ch,width: cw
}
	);
if(dh>ch||dw>cw) {
s.d.wrap.css( {
	overflow: 'auto'
}
	);
}
}
if(s.o.autoPosition) {
	s.setPosition();
}
}
, setPosition:function() {
	var s=this, top, left, hc=(w[0]/2)-(s.d.container.outerHeight(true)/2), vc=(w[1]/2)-(s.d.container.outerWidth(true)/2);
if(s.o.position&&Object.prototype.toString.call(s.o.position)==="[object Array]") {
	top=s.o.position[0]||hc;
	left=s.o.position[1]||vc;
}
else {
	top=hc;
	left=vc;
}
s.d.container.css( {
	left: left,top: top
}
	);
}
, watchTab:function(e) {
	var s=this;
if($(e.target).parents('.simplemodal-container').length>0) {
	s.inputs=$(': input: enabled: visible: first,: input: enabled: visible: last',s.d.data[0]);
if((!e.shiftKey&&e.target==s.inputs[s.inputs.length-1])||(e.shiftKey&&e.target==s.inputs[0])||s.inputs.length==0) {
	e.preventDefault();
	var pos=e.shiftKey?'last': 'first';
setTimeout(function() {
	s.focus(pos);
}
	, 10);
}
}
else {
	e.preventDefault();
setTimeout(function() {
	s.focus();
}
	, 10);
}
}
, open:function() {
	var s=this;
	s.d.iframe&&s.d.iframe.show();
if($.isFunction(s.o.onOpen)) {
	s.o.onOpen.apply(s,[s.d]);
}
else {
	s.d.overlay.show();
	s.d.container.show();
	s.d.data.show();
}
	s.focus();
	s.bindEvents();
}
, close:function() {
	var s=this;
if(!s.d.data) {
	return false;
}
	s.unbindEvents();
if($.isFunction(s.o.onClose)&&!s.occb) {
	s.occb=true;
	s.o.onClose.apply(s,[s.d]);
}
else {
if(s.d.placeholder) {
	var ph=$('#simplemodal-placeholder');
if(s.o.persist) {
	ph.replaceWith(s.d.data.removeClass('simplemodal-data').css('display',s.display));
}
else {
	s.d.data.hide().remove();
	ph.replaceWith(s.d.orig);
}
}
else {
	s.d.data.hide().remove();
}
	s.d.container.hide().remove();
	s.d.overlay.hide().remove();
	s.d.iframe&&s.d.iframe.hide().remove();
s.d= {
}
	;
}
}
}
	;
}
	)(jQuery);
