/*
 * SimpleModal 1.1.1 - jQuery Plugin
 * http://www.ericmmartin.com/projects/simplemodal/
 * http://plugins.jquery.com/project/SimpleModal
 * http://code.google.com/p/simplemodal/
 *
 * Copyright (c) 2007 Eric Martin - http://ericmmartin.com
 *
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * Revision: $Id: jquery.simplemodal.js 93 2008-01-15 16:14:20Z emartin24 $
 *
 */
(function($){
$.modal=function(data,options){
	return $.modal.impl.init(data,options);
};
$.modal.close=function(){
	$.modal.impl.close(true);
};
$.fn.modal=function(options){
	return $.modal.impl.init(this,options);
};
$.modal.defaults={
	overlay:50,
	overlayId:'modalOverlay',
	overlayCss:{},
	containerId:'modalContainer',
	containerCss:{},
	close:true,
	closeTitle:'Close',
	closeClass:'modalClose',
	persist:false,
	onOpen:null,
	onShow:null,
	onClose:null
};
$.modal.impl={
	opts:null,
	dialog:{},
	init:function(data,options){
		if(this.dialog.data){
			return false;
		}
		this.opts=$.extend({},$.modal.defaults,options);
		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.original=data.clone(true);
				}
			}
		}else
			if(typeof data=='string'||typeof data=='number'){
				data=$('<div>').html(data);
			}else{
				if(console){
					console.log('SimpleModal Error: Unsupported data type: '+typeof data);
				}
				return false;
			}
			this.dialog.data=data.addClass('modalData');
			data=null;
			this.create();
			this.open();
			if($.isFunction(this.opts.onShow)){
				this.opts.onShow.apply(this,[this.dialog]);
			}
			return this;
		},
	create:function(){
		this.dialog.overlay=$('<div>').attr('id',this.opts.overlayId).addClass('modalOverlay').css(
			$.extend(this.opts.overlayCss,{opacity:this.opts.overlay/100,
				height:'100%',
				width:'100%',
				position:'fixed',
				left:0,
				top:0,
				zIndex:3000
				}
			)
		).hide().appendTo('body');
		this.dialog.container=$('<div>').attr('id',this.opts.containerId).addClass('modalContainer').css(
			$.extend(this.opts.containerCss,{position:'fixed',zIndex:3100})
		).append(this.opts.close?'<a class="modalCloseImg '+this.opts.closeClass+'" title="'+this.opts.closeTitle+'"></a>':'').hide().appendTo('body');
		if($.browser.msie&&($.browser.version<7)){	this.fixIE();	}
		this.dialog.container.append(this.dialog.data.hide());},
		bindEvents:function(){var modal=this;$('.'+this.opts.closeClass).click(function(e){e.preventDefault();modal.close();});},unbindEvents:function(){$('.'+this.opts.closeClass).unbind('click');},
		fixIE:function(){
		var wHeight=$(document.body).height()+'px';var wWidth=$(document.body).width()+'px';
		this.dialog.overlay.css({position:'absolute',height:wHeight,width:wWidth});
		this.dialog.container.css({position:'absolute'});
		this.dialog.iframe=$('<iframe src="javascript:false;">').css($.extend(
			this.opts.iframeCss,{opacity:0,position:'absolute',height:wHeight,width:wWidth,zIndex:1000,width:'100%',top:0,left:0})).hide().appendTo('body');},
			open:function(){
				if(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(external){if(!this.dialog.data){return false;}
			if($.isFunction(this.opts.onClose)&&!external){
			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.original.appendTo(this.dialog.parentNode);}}else{this.dialog.data.remove();}this.dialog.container.remove();this.dialog.overlay.remove();
		if(this.dialog.iframe){this.dialog.iframe.remove();}this.dialog={};}this.unbindEvents();}};})(jQuery);