!function($){"use strict"
var transitionEnd
$(document).ready(function(){$.support.transition=(function(){var thisBody=document.body||document.documentElement,thisStyle=thisBody.style,support=thisStyle.transition!==undefined||thisStyle.WebkitTransition!==undefined||thisStyle.MozTransition!==undefined||thisStyle.MsTransition!==undefined||thisStyle.OTransition!==undefined
return support})()
if($.support.transition){transitionEnd="TransitionEnd"
if($.browser.webkit){transitionEnd="webkitTransitionEnd"}else if($.browser.mozilla){transitionEnd="transitionend"}else if($.browser.opera){transitionEnd="oTransitionEnd"}}})
var Modal=function(content,options){this.settings=$.extend({},$.fn.modal.defaults,options)
this.$element=$(content).delegate('.close','click.modal',$.proxy(this.hide,this))
if(this.settings.show){this.show()}
return this}
Modal.prototype={toggle:function(){return this[!this.isShown?'show':'hide']()},show:function(){var that=this
this.isShown=true
this.$element.trigger('show')
escape.call(this)
backdrop.call(this,function(){var transition=$.support.transition&&that.$element.hasClass('fade')
that.$element.appendTo(document.body).show()
if(transition){that.$element[0].offsetWidth}
that.$element.addClass('in')
transition?that.$element.one(transitionEnd,function(){that.$element.trigger('shown')}):that.$element.trigger('shown')})
return this},hide:function(e){e&&e.preventDefault()
if(!this.isShown){return this}
var that=this
this.isShown=false
escape.call(this)
this.$element.trigger('hide').removeClass('in')
$.support.transition&&this.$element.hasClass('fade')?hideWithTransition.call(this):hideModal.call(this)
return this}}
function hideWithTransition(){var that=this,timeout=setTimeout(function(){that.$element.unbind(transitionEnd)
hideModal.call(that)},500)
this.$element.one(transitionEnd,function(){clearTimeout(timeout)
hideModal.call(that)})}
function hideModal(that){this.$element.hide().trigger('hidden')
backdrop.call(this)}
function backdrop(callback){var that=this,animate=this.$element.hasClass('fade')?'fade':''
if(this.isShown&&this.settings.backdrop){var doAnimate=$.support.transition&&animate
this.$backdrop=$('<div class="modal-backdrop '+ animate+'" />').appendTo(document.body)
if(this.settings.backdrop!='static'){this.$backdrop.click($.proxy(this.hide,this))}
if(doAnimate){this.$backdrop[0].offsetWidth}
this.$backdrop.addClass('in')
doAnimate?this.$backdrop.one(transitionEnd,callback):callback()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass('in')
$.support.transition&&this.$element.hasClass('fade')?this.$backdrop.one(transitionEnd,$.proxy(removeBackdrop,this)):removeBackdrop.call(this)}else if(callback){callback()}}
function removeBackdrop(){this.$backdrop.remove()
this.$backdrop=null}
function escape(){var that=this
if(this.isShown&&this.settings.keyboard){$(document).bind('keyup.modal',function(e){if(e.which==27){that.hide()}})}else if(!this.isShown){$(document).unbind('keyup.modal')}}
$.fn.modal=function(options){var modal=this.data('modal')
if(!modal){if(typeof options=='string'){options={show:/show|toggle/.test(options)}}
return this.each(function(){$(this).data('modal',new Modal(this,options))})}
if(options===true){return modal}
if(typeof options=='string'){modal[options]()}else if(modal){modal.toggle()}
return this}
$.fn.modal.Modal=Modal
$.fn.modal.defaults={backdrop:false,keyboard:false,show:false}
$(document).ready(function(){$('body').delegate('[data-controls-modal]','click',function(e){e.preventDefault()
var $this=$(this).data('show',true)
$('#'+ $this.attr('data-controls-modal')).modal($this.data())})})}(window.jQuery||window.ender);
