jQuery(function($){
var userAgent=navigator.userAgent.toLowerCase()
var browserVersion=(userAgent.match(/.+(?:rv|webkit|khtml|opera|msie)[\/: ]([\d.]+)/)|| [0,'0'])[1]
var isIE6=(/msie/.test(userAgent)&&!/opera/.test(userAgent)&&parseInt(browserVersion)<7&&(!window.XMLHttpRequest || typeof(XMLHttpRequest)==='function'))
var body=$('body')
var currentSettings
var callingSettings
var shouldResize=false
var gallery={}
var fixFF=false
var contentElt
var contentEltLast
var modal={
started: false,
ready: false,
dataReady: false,
anim: false,
animContent: false,
loadingShown: false,
transition: false,
resizing: false,
closing: false,
error: false,
blocker: null,
blockerVars: null,
full: null,
bg: null,
loading: null,
tmp: null,
content: null,
wrapper: null,
contentWrapper: null,
scripts: new Array(),
scriptsShown: new Array()}
var resized={
width: false,
height: false,
windowResizing: false}
var initSettingsSize={
width: null,
height: null,
windowResizing: true}
var windowResizeTimeout
$.fn.nyroModal=function(settings){
if(!this)
return false
return this.each(function(){
var me=$(this)
if(this.nodeName.toLowerCase()=='form'){
me
.unbind('submit.nyroModal')
.bind('submit.nyroModal',function(e){
if(e.isDefaultPrevented())
return false
if(me.data('nyroModalprocessing'))
return true
if(this.enctype=='multipart/form-data'){
processModal($.extend(settings,{
from: this
}))
return true}
e.preventDefault()
processModal($.extend(settings,{
from: this
}))
return false
})
}else{
me
.unbind('click.nyroModal')
.bind('click.nyroModal',function(e){
if(e.isDefaultPrevented())
return false
e.preventDefault()
processModal($.extend(settings,{
from: this
}))
return false
})}
})}
$.fn.nyroModalManual=function(settings){
if(!this.length)
processModal(settings)
return this.each(function(){
processModal($.extend(settings,{
from: this
}))
})}
$.nyroModalManual=function(settings){
processModal(settings)}
$.nyroModalSettings=function(settings,deep1,deep2){
setCurrentSettings(settings,deep1,deep2)
if(!deep1&&modal.started){
if(modal.bg&&settings.bgColor)
currentSettings.updateBgColor(modal,currentSettings,function(){})
if(modal.contentWrapper&&settings.title)
setTitle()
if(!modal.error&&(settings.windowResizing ||(!modal.resizing&&(('width' in settings&&settings.width==currentSettings.width)||('height' in settings&&settings.height==currentSettings.height))))){
modal.resizing=true
if(modal.contentWrapper)
calculateSize(true)
if(modal.contentWrapper&&modal.contentWrapper.is(':visible')&&!modal.animContent){
if(fixFF)
modal.content.css({position: ''})
currentSettings.resize(modal,currentSettings,function(){
currentSettings.windowResizing=false
modal.resizing=false
if(fixFF)
modal.content.css({position: 'fixed'})
if($.isFunction(currentSettings.endResize))
currentSettings.endResize(modal,currentSettings)
})}}}}
$.nyroModalRemove=function(){
removeModal()}
$.nyroModalNext=function(){
var link=getGalleryLink(1)
if(link)
return link.nyroModalManual(getCurrentSettingsNew())
return false}
$.nyroModalPrev=function(){
var link=getGalleryLink(-1)
if(link)
return link.nyroModalManual(getCurrentSettingsNew())
return false}
$.fn.nyroModal.settings={
debug: false,
blocker: false,
windowResize: true,
modal: false,
type: '',
forceType: null,
from: '',
hash: '',
processHandler: null,
selIndicator: 'nyroModalSel',
formIndicator: 'nyroModal',
content: null,
bgColor: '#000000',
ajax:{},
swf:{
wmode: 'transparent'
},
width: null,
height: null,
minWidth: 400,
minHeight: 300,
resizable: true,
autoSizable: true,
padding: 25,
regexImg: '[^\.]\.(jpg|jpeg|png|tiff|gif|bmp)\s*$',
addImageDivTitle: false,
defaultImgAlt: 'Image',
setWidthImgTitle: true,
ltr: true,
gallery: null,
galleryLinks: '<a href="#" class="nyroModalPrev">Prev</a><a href="#"  class="nyroModalNext">Next</a>',
galleryCounts: galleryCounts,
galleryLoop: false,
zIndexStart: 100,
cssOpt:{
bg:{
position: 'absolute',
overflow: 'hidden',
top: 0,
left: 0,
height: '100%',
width: '100%'
},
wrapper:{
position: 'absolute',
top: '50%',
left: '50%'
},
wrapper2:{
},
content:{
},
loading:{
position: 'absolute',
top: '50%',
left: '50%',
marginTop: '-50px',
marginLeft: '-50px'}
},
wrap:{
div: '<div class="wrapper"></div>',
ajax: '<div class="wrapper"></div>',
form: '<div class="wrapper"></div>',
formData: '<div class="wrapper"></div>',
image: '<div class="wrapperImg"></div>',
swf: '<div class="wrapperSwf"></div>',
iframe: '<div class="wrapperIframe"></div>',
iframeForm: '<div class="wrapperIframe"></div>',
manual: '<div class="wrapper"></div>'
},
closeButton: '<a href="#" class="nyroModalClose" id="closeBut" title="close">Close</a>',
title: null,
titleFromIframe: true,
openSelector: '.nyroModal',
closeSelector: '.nyroModalClose',
contentLoading: '<a href="#" class="nyroModalClose">Cancel</a>',
errorClass: 'error',
contentError: 'The requested content cannot be loaded.<br />Please try again later.<br /><a href="#" class="nyroModalClose">Close</a>',
handleError: null,
showBackground: showBackground,
hideBackground: hideBackground,
endFillContent: null,
showContent: showContent,
endShowContent: null,
beforeHideContent: null,
hideContent: hideContent,
showTransition: showTransition,
hideTransition: hideTransition,
showLoading: showLoading,
hideLoading: hideLoading,
resize: resize,
endResize: null,
updateBgColor: updateBgColor,
endRemove: null}
function processModal(settings){
if(modal.loadingShown || modal.transition || modal.anim)
return
debug('processModal')
modal.started=true
callingSettings=$.extend(true,settings)
setDefaultCurrentSettings(settings)
if(!modal.full)
modal.blockerVars=modal.blocker=null
modal.error=false
modal.closing=false
modal.dataReady=false
modal.scripts=new Array()
modal.scriptsShown=new Array()
currentSettings.type=fileType()
if(currentSettings.forceType){
if(!currentSettings.content)
currentSettings.from=true
currentSettings.type=currentSettings.forceType
currentSettings.forceType=null}
if($.isFunction(currentSettings.processHandler))
currentSettings.processHandler(currentSettings)
var from=currentSettings.from
var url=currentSettings.url
initSettingsSize.width=currentSettings.width
initSettingsSize.height=currentSettings.height
if(currentSettings.type=='swf'){
setCurrentSettings({overflow: 'visible'},'cssOpt','content')
currentSettings.content='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+currentSettings.width+'" height="'+currentSettings.height+'"><param name="movie" value="'+url+'"></param>'
var tmp=''
$.each(currentSettings.swf,function(name,val){
currentSettings.content+='<param name="'+name+'" value="'+val+'"></param>'
tmp+=' '+name+'="'+val+'"'
})
currentSettings.content+='<embed src="'+url+'" type="application/x-shockwave-flash" width="'+currentSettings.width+'" height="'+currentSettings.height+'"'+tmp+'></embed></object>'}
if(from){
var jFrom=$(from).blur()
if(currentSettings.type=='form'){
var data=$(from).serializeArray()
data.push({name: currentSettings.formIndicator,value: 1})
if(currentSettings.selector)
data.push({name: currentSettings.selIndicator,value: currentSettings.selector.substring(1)})
showModal()
$.ajax($.extend({},currentSettings.ajax,{
url: url,
data: data,
type: jFrom.attr('method')? jFrom.attr('method'): 'get',
success: ajaxLoaded,
error: loadingError
}))
debug('Form Ajax Load: '+jFrom.attr('action'))
}else if(currentSettings.type=='formData'){
initModal()
jFrom.attr('target','nyroModalIframe')
jFrom.attr('action',url)
jFrom.prepend('<input type="hidden" name="'+currentSettings.formIndicator+'" value="1" />')
if(currentSettings.selector)
jFrom.prepend('<input type="hidden" name="'+currentSettings.selIndicator+'" value="'+currentSettings.selector.substring(1)+'" />')
modal.tmp.html('<iframe frameborder="0" hspace="0" name="nyroModalIframe" src="javascript:\'\';"></iframe>')
$('iframe',modal.tmp)
.css({
width: currentSettings.width,
height: currentSettings.height
})
.error(loadingError)
.load(formDataLoaded)
debug('Form Data Load: '+jFrom.attr('action'))
showModal()
showContentOrLoading()
}else if(currentSettings.type=='image'){
debug('Image Load: '+url)
var title=jFrom.attr('title')|| currentSettings.defaultImgAlt
initModal()
modal.tmp.html('<img id="nyroModalImg" />').find('img').attr('alt',title)
modal.tmp.css({lineHeight: 0})
$('img',modal.tmp)
.error(loadingError)
.load(function(){
debug('Image Loaded: '+this.src)
$(this).unbind('load')
var w=modal.tmp.width()
var h=modal.tmp.height()
modal.tmp.css({lineHeight: ''})
resized.width=w
resized.height=h
setCurrentSettings({
width: w,
height: h,
imgWidth: w,
imgHeight: h
})
initSettingsSize.width=w
initSettingsSize.height=h
setCurrentSettings({overflow: 'visible'},'cssOpt','content')
modal.dataReady=true
if(modal.loadingShown || modal.transition)
showContentOrLoading()
})
.attr('src',url)
showModal()
}else if(currentSettings.type=='iframeForm'){
initModal()
modal.tmp.html('<iframe frameborder="0" hspace="0" src="javascript:\'\';" name="nyroModalIframe" id="nyroModalIframe"></iframe>')
debug('Iframe Form Load: '+url)
$('iframe',modal.tmp).eq(0)
.css({
width: '100%',
height: $.support.boxModel? '99%' : '100%'
})
.load(iframeLoaded)
modal.dataReady=true
showModal()
}else if(currentSettings.type=='iframe'){
initModal()
modal.tmp.html('<iframe frameborder="0" hspace="0" src="javascript:\'\';" name="nyroModalIframe" id="nyroModalIframe"></iframe>')
debug('Iframe Load: '+url)
$('iframe',modal.tmp).eq(0)
.css({
width: '100%',
height: $.support.boxModel? '99%' : '100%'
})
.load(iframeLoaded)
modal.dataReady=true
showModal()
}else if(currentSettings.type){
debug('Content: '+currentSettings.type)
initModal()
modal.tmp.html(currentSettings.content)
var w=modal.tmp.width()
var h=modal.tmp.height()
var div=$(currentSettings.type)
if(div.length){
setCurrentSettings({type: 'div'})
w=div.width()
h=div.height()
if(contentElt)
contentEltLast=contentElt
contentElt=div
modal.tmp.append(div.contents())}
initSettingsSize.width=w
initSettingsSize.height=h
setCurrentSettings({
width: w,
height: h
})
if(modal.tmp.html())
modal.dataReady=true
else
loadingError()
if(!modal.ready)
showModal()
else
endHideContent()
}else{
debug('Ajax Load: '+url)
setCurrentSettings({type: 'ajax'})
var data=currentSettings.ajax.data ||{}
if(currentSettings.selector){
if(typeof data=="string"){
data+='&'+currentSettings.selIndicator+'='+currentSettings.selector.substring(1)
}else{
data[currentSettings.selIndicator]=currentSettings.selector.substring(1)}}
showModal()
$.ajax($.extend(true,currentSettings.ajax,{
url: url,
success: ajaxLoaded,
error: loadingError,
data: data
}))}
}else if(currentSettings.content){
debug('Content: '+currentSettings.type)
setCurrentSettings({type: 'manual'})
initModal()
modal.tmp.html($('<div/>').html(currentSettings.content).contents())
if(modal.tmp.html())
modal.dataReady=true
else
loadingError()
showModal()
}else{}}
function setDefaultCurrentSettings(settings){
debug('setDefaultCurrentSettings')
currentSettings=$.extend(true,{},$.fn.nyroModal.settings,settings)
setMargin()}
function setCurrentSettings(settings,deep1,deep2){
if(modal.started){
if(deep1&&deep2){
$.extend(true,currentSettings[deep1][deep2],settings)
}else if(deep1){
$.extend(true,currentSettings[deep1],settings)
}else{
if(modal.animContent){
if('width' in settings){
if(!modal.resizing){
settings.setWidth=settings.width
shouldResize=true}
delete settings['width']}
if('height' in settings){
if(!modal.resizing){
settings.setHeight=settings.height
shouldResize=true}
delete settings['height']}}
$.extend(true,currentSettings,settings)}
}else{
if(deep1&&deep2){
$.extend(true,$.fn.nyroModal.settings[deep1][deep2],settings)
}else if(deep1){
$.extend(true,$.fn.nyroModal.settings[deep1],settings)
}else{
$.extend(true,$.fn.nyroModal.settings,settings)}}}
function setMarginScroll(){
if(isIE6&&!modal.blocker){
if(document.documentElement){
currentSettings.marginScrollLeft=document.documentElement.scrollLeft
currentSettings.marginScrollTop=document.documentElement.scrollTop
}else{
currentSettings.marginScrollLeft=document.body.scrollLeft
currentSettings.marginScrollTop=document.body.scrollTop}
}else{
currentSettings.marginScrollLeft=0
currentSettings.marginScrollTop=0}}
function setMargin(){
setMarginScroll()
currentSettings.marginLeft=-(currentSettings.width+currentSettings.borderW)/2
currentSettings.marginTop=-(currentSettings.height+currentSettings.borderH)/2
if(!modal.blocker){
currentSettings.marginLeft+=currentSettings.marginScrollLeft
currentSettings.marginTop+=currentSettings.marginScrollTop}}
function setMarginLoading(){
setMarginScroll()
var outer=getOuter(modal.loading)
currentSettings.marginTopLoading=-(modal.loading.height()+outer.h.border+outer.h.padding)/2
currentSettings.marginLeftLoading=-(modal.loading.width()+outer.w.border+outer.w.padding)/2
if(!modal.blocker){
currentSettings.marginLeftLoading+=currentSettings.marginScrollLeft
currentSettings.marginTopLoading+=currentSettings.marginScrollTop}}
function setTitle(){
var title=$('h1#nyroModalTitle',modal.contentWrapper)
if(title.length)
title.text(currentSettings.title)
else
modal.contentWrapper.prepend('<h1 id="nyroModalTitle">'+currentSettings.title+'</h1>')}
function initModal(){
debug('initModal')
if(!modal.full){
if(currentSettings.debug)
setCurrentSettings({color: 'white'},'cssOpt','bg')
var full={
zIndex: currentSettings.zIndexStart,
position: 'fixed',
top: 0,
left: 0,
width: '100%',
height: '100%'}
var contain=body
var iframeHideIE=''
if(currentSettings.blocker){
modal.blocker=contain=$(currentSettings.blocker)
var pos=modal.blocker.offset()
var w=modal.blocker.outerWidth()
var h=modal.blocker.outerHeight()
if(isIE6){
setCurrentSettings({
height: '100%',
width: '100%',
top: 0,
left: 0
},'cssOpt','bg')}
modal.blockerVars={
top: pos.top,
left: pos.left,
width: w,
height: h}
var plusTop=(/msie/.test(userAgent)?0:getCurCSS(body.get(0),'borderTopWidth'))
var plusLeft=(/msie/.test(userAgent)?0:getCurCSS(body.get(0),'borderLeftWidth'))
full={
position: 'absolute',
top: pos.top+plusTop,
left: pos.left+plusLeft,
width: w,
height: h}
}else if(isIE6){
body.css({
marginLeft: 0,
marginRight: 0
})
var w=body.width()
var h=$(window).height()+'px'
if($(window).height()>=body.outerHeight()){
h=body.outerHeight()+'px'
}else
w+=20
w+='px'
body.css({
width: w,
height: h,
position: 'static',
overflow: 'hidden'
})
$('html').css({overflow: 'hidden'})
setCurrentSettings({
cssOpt:{
bg:{
position: 'absolute',
zIndex: currentSettings.zIndexStart+1,
height: '110%',
width: '110%',
top: currentSettings.marginScrollTop+'px',
left: currentSettings.marginScrollLeft+'px'
},
wrapper:{zIndex: currentSettings.zIndexStart+2},
loading:{zIndex: currentSettings.zIndexStart+3}}
})
iframeHideIE=$('<iframe id="nyroModalIframeHideIe" src="javascript:\'\';"></iframe>')
.css($.extend({},
currentSettings.cssOpt.bg,{
opacity: 0,
zIndex: 50,
border: 'none'
}))}
contain.append($('<div id="nyroModalFull"><div id="nyroModalBg"></div><div id="nyroModalWrapper"><div id="nyroModalContent"></div></div><div id="nyrModalTmp"></div><div id="nyroModalLoading"></div></div>').hide())
modal.full=$('#nyroModalFull')
.css(full)
.show()
modal.bg=$('#nyroModalBg')
.css($.extend({
backgroundColor: currentSettings.bgColor
},currentSettings.cssOpt.bg))
.before(iframeHideIE)
modal.bg.bind('click.nyroModal',clickBg)
modal.loading=$('#nyroModalLoading')
.css(currentSettings.cssOpt.loading)
.hide()
modal.contentWrapper=$('#nyroModalWrapper')
.css(currentSettings.cssOpt.wrapper)
.hide()
modal.content=$('#nyroModalContent')
modal.tmp=$('#nyrModalTmp').hide()
if($.isFunction($.fn.mousewheel)){
modal.content.mousewheel(function(e,d){
var elt=modal.content.get(0)
if((d>0&&elt.scrollTop==0)||
(d<0&&elt.scrollHeight-elt.scrollTop==elt.clientHeight)){
e.preventDefault()
e.stopPropagation()}
})}
$(document).bind('keydown.nyroModal',keyHandler)
modal.content.css({width: 'auto',height: 'auto'})
modal.contentWrapper.css({width: 'auto',height: 'auto'})
if(!currentSettings.blocker&&currentSettings.windowResize){
$(window).bind('resize.nyroModal',function(){
window.clearTimeout(windowResizeTimeout)
windowResizeTimeout=window.setTimeout(windowResizeHandler,200)
})}}}
function windowResizeHandler(){
$.nyroModalSettings(initSettingsSize)}
function showModal(){
debug('showModal')
if(!modal.ready){
initModal()
modal.anim=true
currentSettings.showBackground(modal,currentSettings,endBackground)
}else{
modal.anim=true
modal.transition=true
currentSettings.showTransition(modal,currentSettings,function(){endHideContent();modal.anim=false;showContentOrLoading();})}}
function clickBg(e){
if(!currentSettings.modal)
removeModal()}
function keyHandler(e){
if(e.keyCode==27){
if(!currentSettings.modal)
removeModal()
}else if(currentSettings.gallery&&modal.ready&&modal.dataReady&&!modal.anim&&!modal.transition){
if(e.keyCode==39 || e.keyCode==40){
e.preventDefault()
$.nyroModalNext()
return false
}else if(e.keyCode==37 || e.keyCode==38){
e.preventDefault()
$.nyroModalPrev()
return false}}}
function fileType(){
var from=currentSettings.from
var url
if(from&&from.nodeName){
var jFrom=$(from)
url=jFrom.attr(from.nodeName.toLowerCase()=='form' ? 'action' : 'href')
if(!url)
url=location.href.substring(window.location.host.length+7)
currentSettings.url=url
if(jFrom.attr('rev')=='modal')
currentSettings.modal=true
currentSettings.title=jFrom.attr('title')
if(from&&from.rel&&from.rel.toLowerCase()!='nofollow'){
var indexSpace=from.rel.indexOf(' ')
currentSettings.gallery=indexSpace>0 ? from.rel.substr(0,indexSpace): from.rel}
var imgType=imageType(url,from)
if(imgType)
return imgType
if(isSwf(url))
return 'swf'
var iframe=false
if(from.target&&from.target.toLowerCase()=='_blank' ||(from.hostname&&from.hostname.replace(/:\d*$/,'')!=window.location.hostname.replace(/:\d*$/,''))){
iframe=true}
if(from.nodeName.toLowerCase()=='form'){
if(iframe)
return 'iframeForm'
setCurrentSettings(extractUrlSel(url))
if(jFrom.attr('enctype')=='multipart/form-data')
return 'formData'
return 'form'}
if(iframe)
return 'iframe'
}else{
url=currentSettings.url
if(!currentSettings.content)
currentSettings.from=true
if(!url)
return null
if(isSwf(url))
return 'swf'
var reg1=new RegExp("^http://|https://","g")
if(url.match(reg1))
return 'iframe'}
var imgType=imageType(url,from)
if(imgType)
return imgType
var tmp=extractUrlSel(url)
setCurrentSettings(tmp)
if(!tmp.url)
return tmp.selector}
function imageType(url,from){
var image=new RegExp(currentSettings.regexImg,'i')
if(image.test(url)){
return 'image'}}
function isSwf(url){
var swf=new RegExp('[^\.]\.(swf)\s*$','i')
return swf.test(url)}
function extractUrlSel(url){
var ret={
url: null,
selector: null}
if(url){
var hash=getHash(url)
var hashLoc=getHash(window.location.href)
var curLoc=window.location.href.substring(0,window.location.href.length-hashLoc.length)
var req=url.substring(0,url.length-hash.length)
if(req==curLoc || req==$('base').attr('href')){
ret.selector=hash
}else{
ret.url=req
ret.selector=hash}}
return ret}
function loadingError(){
debug('loadingError')
modal.error=true
if(!modal.ready)
return
if($.isFunction(currentSettings.handleError))
currentSettings.handleError(modal,currentSettings)
modal.loading
.addClass(currentSettings.errorClass)
.html(currentSettings.contentError)
$(currentSettings.closeSelector,modal.loading)
.unbind('click.nyroModal')
.bind('click.nyroModal',removeModal)
setMarginLoading()
modal.loading
.css({
marginTop: currentSettings.marginTopLoading+'px',
marginLeft: currentSettings.marginLeftLoading+'px'
})}
function fillContent(){
debug('fillContent')
if(!modal.tmp.html())
return
modal.content.html(modal.tmp.contents())
modal.tmp.empty()
wrapContent()
if(currentSettings.type=='iframeForm'){
$(currentSettings.from)
.attr('target','nyroModalIframe')
.data('nyroModalprocessing',1)
.submit()
.attr('target','_blank')
.removeData('nyroModalprocessing')}
if(!currentSettings.modal)
modal.wrapper.prepend(currentSettings.closeButton)
if($.isFunction(currentSettings.endFillContent))
currentSettings.endFillContent(modal,currentSettings)
modal.content.append(modal.scripts)
$(currentSettings.closeSelector,modal.contentWrapper)
.unbind('click.nyroModal')
.bind('click.nyroModal',removeModal)
$(currentSettings.openSelector,modal.contentWrapper).nyroModal(getCurrentSettingsNew())}
function getCurrentSettingsNew(){
return callingSettings
var currentSettingsNew=$.extend(true,{},currentSettings)
if(resized.width)
currentSettingsNew.width=null
else
currentSettingsNew.width=initSettingsSize.width
if(resized.height)
currentSettingsNew.height=null
else
currentSettingsNew.height=initSettingsSize.height
currentSettingsNew.cssOpt.content.overflow='auto'
return currentSettingsNew}
function wrapContent(){
debug('wrapContent')
var wrap=$(currentSettings.wrap[currentSettings.type])
modal.content.append(wrap.children().remove())
modal.contentWrapper.wrapInner(wrap)
if(currentSettings.gallery){
modal.content.append(currentSettings.galleryLinks)
gallery.links=$('[rel="'+currentSettings.gallery+'"], [rel^="'+currentSettings.gallery+' "]')
gallery.index=gallery.links.index(currentSettings.from)
if(currentSettings.galleryCounts&&$.isFunction(currentSettings.galleryCounts))
currentSettings.galleryCounts(gallery.index+1,gallery.links.length,modal,currentSettings)
var currentSettingsNew=getCurrentSettingsNew()
var linkPrev=getGalleryLink(-1)
if(linkPrev){
var prev=$('.nyroModalPrev',modal.contentWrapper)
.attr('href',linkPrev.attr('href'))
.click(function(e){
e.preventDefault()
$.nyroModalPrev()
return false
})
if(isIE6&&currentSettings.type=='swf'){
prev.before($('<iframe id="nyroModalIframeHideIeGalleryPrev" src="javascript:\'\';"></iframe>').css({
position: prev.css('position'),
top: prev.css('top'),
left: prev.css('left'),
width: prev.width(),
height: prev.height(),
opacity: 0,
border: 'none'
}))}
}else{
$('.nyroModalPrev',modal.contentWrapper).remove()}
var linkNext=getGalleryLink(1)
if(linkNext){
var next=$('.nyroModalNext',modal.contentWrapper)
.attr('href',linkNext.attr('href'))
.click(function(e){
e.preventDefault()
$.nyroModalNext()
return false
})
if(isIE6&&currentSettings.type=='swf'){
next.before($('<iframe id="nyroModalIframeHideIeGalleryNext" src="javascript:\'\';"></iframe>')
.css($.extend({},{
position: next.css('position'),
top: next.css('top'),
left: next.css('left'),
width: next.width(),
height: next.height(),
opacity: 0,
border: 'none'
})))}
}else{
$('.nyroModalNext',modal.contentWrapper).remove()}}
calculateSize()}
function getGalleryLink(dir){
if(currentSettings.gallery){
if(!currentSettings.ltr)
dir*=-1
var index=gallery.index+dir
if(index>=0&&index<gallery.links.length)
return gallery.links.eq(index)
else if(currentSettings.galleryLoop){
if(index<0)
return gallery.links.eq(gallery.links.length-1)
else
return gallery.links.eq(0)}}
return false}
function calculateSize(resizing){
debug('calculateSize')
modal.wrapper=modal.contentWrapper.children('div:first')
resized.width=false
resized.height=false
if(false&&!currentSettings.windowResizing){
initSettingsSize.width=currentSettings.width
initSettingsSize.height=currentSettings.height}
if(currentSettings.autoSizable&&(!currentSettings.width || !currentSettings.height)){
modal.contentWrapper
.css({
opacity: 0,
width: 'auto',
height: 'auto'
})
.show()
var tmp={
width: 'auto',
height: 'auto'}
if(currentSettings.width){
tmp.width=currentSettings.width
}else if(currentSettings.type=='iframe'){
tmp.width=currentSettings.minWidth}
if(currentSettings.height){
tmp.height=currentSettings.height
}else if(currentSettings.type=='iframe'){
tmp.height=currentSettings.minHeight}
modal.content.css(tmp)
if(!currentSettings.width){
currentSettings.width=modal.content.outerWidth(true)
resized.width=true}
if(!currentSettings.height){
currentSettings.height=modal.content.outerHeight(true)
resized.height=true}
modal.contentWrapper.css({opacity: 1})
if(!resizing)
modal.contentWrapper.hide()}
if(currentSettings.type !='image'&&currentSettings.type !='swf'){
currentSettings.width=Math.max(currentSettings.width,currentSettings.minWidth)
currentSettings.height=Math.max(currentSettings.height,currentSettings.minHeight)}
var outerWrapper=getOuter(modal.contentWrapper)
var outerWrapper2=getOuter(modal.wrapper)
var outerContent=getOuter(modal.content)
var tmp={
content:{
width: currentSettings.width,
height: currentSettings.height
},
wrapper2:{
width: currentSettings.width+outerContent.w.total,
height: currentSettings.height+outerContent.h.total
},
wrapper:{
width: currentSettings.width+outerContent.w.total+outerWrapper2.w.total,
height: currentSettings.height+outerContent.h.total+outerWrapper2.h.total}}
if(currentSettings.resizable){
var maxHeight=modal.blockerVars? modal.blockerVars.height : $(window).height()
-outerWrapper.h.border
-(tmp.wrapper.height-currentSettings.height)
var maxWidth=modal.blockerVars? modal.blockerVars.width : $(window).width()
-outerWrapper.w.border
-(tmp.wrapper.width-currentSettings.width)
maxHeight-=currentSettings.padding*2
maxWidth-=currentSettings.padding*2
if(tmp.content.height>maxHeight || tmp.content.width>maxWidth){
if(currentSettings.type=='image' || currentSettings.type=='swf'){
var useW=currentSettings.imgWidth?currentSettings.imgWidth : currentSettings.width
var useH=currentSettings.imgHeight?currentSettings.imgHeight : currentSettings.height
var diffW=tmp.content.width-useW
var diffH=tmp.content.height-useH
if(diffH<0)diffH=0
if(diffW<0)diffW=0
var calcH=maxHeight-diffH
var calcW=maxWidth-diffW
var ratio=Math.min(calcH/useH,calcW/useW)
calcW=Math.floor(useW*ratio)
calcH=Math.floor(useH*ratio)
tmp.content.height=calcH+diffH
tmp.content.width=calcW+diffW
}else{
tmp.content.height=Math.min(tmp.content.height,maxHeight)
tmp.content.width=Math.min(tmp.content.width,maxWidth)}
tmp.wrapper2={
width: tmp.content.width+outerContent.w.total,
height: tmp.content.height+outerContent.h.total}
tmp.wrapper={
width: tmp.content.width+outerContent.w.total+outerWrapper2.w.total,
height: tmp.content.height+outerContent.h.total+outerWrapper2.h.total}}}
if(currentSettings.type=='swf'){
$('object, embed',modal.content)
.attr('width',tmp.content.width)
.attr('height',tmp.content.height)
}else if(currentSettings.type=='image'){
$('img',modal.content).css({
width: tmp.content.width,
height: tmp.content.height
})}
modal.content.css($.extend({},tmp.content,currentSettings.cssOpt.content))
modal.wrapper.css($.extend({},tmp.wrapper2,currentSettings.cssOpt.wrapper2))
if(!resizing)
modal.contentWrapper.css($.extend({},tmp.wrapper,currentSettings.cssOpt.wrapper))
if(currentSettings.type=='image'&&currentSettings.addImageDivTitle){
$('img',modal.content).removeAttr('alt')
var divTitle=$('div',modal.content)
if(currentSettings.title !=currentSettings.defaultImgAlt&&currentSettings.title){
if(divTitle.length==0){
divTitle=$('<div>'+currentSettings.title+'</div>')
modal.content.append(divTitle)}
if(currentSettings.setWidthImgTitle){
var outerDivTitle=getOuter(divTitle)
divTitle.css({width:(tmp.content.width+outerContent.w.padding-outerDivTitle.w.total)+'px'})}
}else if(divTitle.length=0){
divTitle.remove()}}
if(currentSettings.title)
setTitle()
tmp.wrapper.borderW=outerWrapper.w.border
tmp.wrapper.borderH=outerWrapper.h.border
setCurrentSettings(tmp.wrapper)
setMargin()}
function removeModal(e){
debug('removeModal')
if(e)
e.preventDefault()
if(modal.full&&modal.ready){
$(document).unbind('keydown.nyroModal')
if(!currentSettings.blocker)
$(window).unbind('resize.nyroModal')
modal.ready=false
modal.anim=true
modal.closing=true
if(modal.loadingShown || modal.transition){
currentSettings.hideLoading(modal,currentSettings,function(){
modal.loading.hide()
modal.loadingShown=false
modal.transition=false
currentSettings.hideBackground(modal,currentSettings,endRemove)
})
}else{
if(fixFF)
modal.content.css({position: ''})
modal.wrapper.css({overflow: 'hidden'})
modal.content.css({overflow: 'hidden'})
$('iframe',modal.content).hide()
if($.isFunction(currentSettings.beforeHideContent)){
currentSettings.beforeHideContent(modal,currentSettings,function(){
currentSettings.hideContent(modal,currentSettings,function(){
endHideContent()
currentSettings.hideBackground(modal,currentSettings,endRemove)
})
})
}else{
currentSettings.hideContent(modal,currentSettings,function(){
endHideContent()
currentSettings.hideBackground(modal,currentSettings,endRemove)
})}}}
if(e)
return false}
function showContentOrLoading(){
debug('showContentOrLoading')
if(modal.ready&&!modal.anim){
if(modal.dataReady){
if(modal.tmp.html()){
modal.anim=true
if(modal.transition){
fillContent()
modal.animContent=true
currentSettings.hideTransition(modal,currentSettings,function(){
modal.loading.hide()
modal.transition=false
modal.loadingShown=false
endShowContent()
})
}else{
currentSettings.hideLoading(modal,currentSettings,function(){
modal.loading.hide()
modal.loadingShown=false
fillContent()
setMarginLoading()
setMargin()
modal.animContent=true
currentSettings.showContent(modal,currentSettings,endShowContent)
})}}
}else if(!modal.loadingShown&&!modal.transition){
modal.anim=true
modal.loadingShown=true
if(modal.error)
loadingError()
else
modal.loading.html(currentSettings.contentLoading)
$(currentSettings.closeSelector,modal.loading)
.unbind('click.nyroModal')
.bind('click.nyroModal',removeModal)
setMarginLoading()
currentSettings.showLoading(modal,currentSettings,function(){modal.anim=false;showContentOrLoading();})}}}
function ajaxLoaded(data){
debug('AjaxLoaded: '+this.url)
if(currentSettings.selector){
var tmp={}
var i=0
data=data
.replace(/\r\n/gi,'nyroModalLN')
.replace(/<script(.|\s)*?\/script>/gi,function(x){
tmp[i]=x
return '<pre style="display: none" class=nyroModalScript rel="'+(i++)+'"></pre>'
})
data=$('<div>'+data+'</div>').find(currentSettings.selector).html()
.replace(/<pre style="display: none;?" class="?nyroModalScript"? rel="(.?)"><\/pre>/gi,function(x,y,z){
return tmp[y]
})
.replace(/nyroModalLN/gi,"\r\n")}
modal.tmp.html(filterScripts(data))
if(modal.tmp.html()){
modal.dataReady=true
showContentOrLoading()
}else
loadingError()}
function formDataLoaded(){
debug('formDataLoaded')
var jFrom=$(currentSettings.from)
jFrom.attr('action',jFrom.attr('action')+currentSettings.selector)
jFrom.attr('target','')
$('input[name='+currentSettings.formIndicator+']',currentSettings.from).remove()
var iframe=modal.tmp.children('iframe')
var iframeContent=iframe.unbind('load').contents().find(currentSettings.selector || 'body').not('script[src]')
iframe.attr('src','about:blank')
modal.tmp.html(iframeContent.html())
if(modal.tmp.html()){
modal.dataReady=true
showContentOrLoading()
}else
loadingError()}
function iframeLoaded(){
if((window.location.hostname&&currentSettings.url.indexOf(window.location.hostname)>-1)
||	currentSettings.url.indexOf('http://')){
var iframe=$('iframe',modal.full).contents()
var tmp={}
if(currentSettings.titleFromIframe){
tmp.title=iframe.find('title').text()
if(!tmp.title){
try{
tmp.title=iframe.find('title').html()
}catch(err){}}}
var body=iframe.find('body')
if(!currentSettings.height&&body.height())
tmp.height=body.height()
if(!currentSettings.width&&body.width())
tmp.width=body.width()
$.extend(initSettingsSize,tmp)
$.nyroModalSettings(tmp)}}
function galleryCounts(nb,total,elts,settings){
if(total>1)
settings.title+=(settings.title?' - ':'')+nb+'/'+total}
function endHideContent(){
debug('endHideContent')
modal.anim=false
if(contentEltLast){
contentEltLast.append(modal.content.contents())
contentEltLast=null
}else if(contentElt){
contentElt.append(modal.content.contents())
contentElt=null}
modal.content.empty()
gallery={}
modal.contentWrapper.hide().children().remove().empty().attr('style','').hide()
if(modal.closing || modal.transition)
modal.contentWrapper.hide()
modal.contentWrapper
.css(currentSettings.cssOpt.wrapper)
.append(modal.content)
showContentOrLoading()}
function endRemove(){
debug('endRemove')
$(document).unbind('keydown',keyHandler)
modal.anim=false
modal.full.remove()
modal.full=null
if(isIE6){
body.css({height: '',width: '',position: '',overflow: '',marginLeft: '',marginRight: ''})
$('html').css({overflow: ''})}
if($.isFunction(currentSettings.endRemove))
currentSettings.endRemove(modal,currentSettings)}
function endBackground(){
debug('endBackground')
modal.ready=true
modal.anim=false
showContentOrLoading()}
function endShowContent(){
debug('endShowContent')
modal.anim=false
modal.animContent=false
modal.contentWrapper.css({opacity: ''})
fixFF=/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)&&parseFloat(browserVersion)<1.9&&currentSettings.type !='image'
if(fixFF)
modal.content.css({position: 'fixed'})
modal.content.append(modal.scriptsShown)
if(currentSettings.type=='iframe')
modal.content.find('iframe').attr('src',currentSettings.url)
if($.isFunction(currentSettings.endShowContent))
currentSettings.endShowContent(modal,currentSettings)
if(shouldResize){
shouldResize=false
$.nyroModalSettings({width: currentSettings.setWidth,height: currentSettings.setHeight})
delete currentSettings['setWidth']
delete currentSettings['setHeight']}
if(resized.width)
setCurrentSettings({width: null})
if(resized.height)
setCurrentSettings({height: null})}
function getHash(url){
if(typeof url=='string'){
var hashPos=url.indexOf('#')
if(hashPos>-1)
return url.substring(hashPos)}
return ''}
function filterScripts(data){
if(typeof data=='string')
data=data.replace(/<\/?(html|head|body)([^>]*)>/gi,'')
var tmp=new Array()
$.each($.clean({0:data},this.ownerDocument),function(){
if($.nodeName(this,"script")){
if(!this.src || $(this).attr('rel')=='forceLoad'){
if($(this).attr('rev')=='shown')
modal.scriptsShown.push(this)
else
modal.scripts.push(this)}
}else
tmp.push(this)
})
return tmp}
function getOuter(elm){
elm=elm.get(0)
var ret={
h:{
margin: getCurCSS(elm,'marginTop')+getCurCSS(elm,'marginBottom'),
border: getCurCSS(elm,'borderTopWidth')+getCurCSS(elm,'borderBottomWidth'),
padding: getCurCSS(elm,'paddingTop')+getCurCSS(elm,'paddingBottom')
},
w:{
margin: getCurCSS(elm,'marginLeft')+getCurCSS(elm,'marginRight'),
border: getCurCSS(elm,'borderLeftWidth')+getCurCSS(elm,'borderRightWidth'),
padding: getCurCSS(elm,'paddingLeft')+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}
function getCurCSS(elm,name){
var ret=parseInt($.curCSS(elm,name,true))
if(isNaN(ret))
ret=0
return ret}
function debug(msg){
if($.fn.nyroModal.settings.debug || currentSettings&&currentSettings.debug)
nyroModalDebug(msg,modal,currentSettings ||{})}
function showBackground(elts,settings,callback){
elts.bg.css({opacity:0}).fadeTo(500,0.75,callback)}
function hideBackground(elts,settings,callback){
elts.bg.fadeOut(300,callback)}
function showLoading(elts,settings,callback){
elts.loading
.css({
marginTop: settings.marginTopLoading+'px',
marginLeft: settings.marginLeftLoading+'px',
opacity: 0
})
.show()
.animate({
opacity: 1
},{complete: callback,duration: 400})}
function hideLoading(elts,settings,callback){
callback()}
function showContent(elts,settings,callback){
elts.loading
.css({
marginTop: settings.marginTopLoading+'px',
marginLeft: settings.marginLeftLoading+'px'
})
.show()
.animate({
width: settings.width+'px',
height: settings.height+'px',
marginTop: settings.marginTop+'px',
marginLeft: settings.marginLeft+'px'
},{duration: 350,complete: function(){
elts.contentWrapper
.css({
width: settings.width+'px',
height: settings.height+'px',
marginTop: settings.marginTop+'px',
marginLeft: settings.marginLeft+'px'
})
.show()
elts.loading.fadeOut(200,callback)}
})}
function hideContent(elts,settings,callback){
elts.contentWrapper
.animate({
height: '50px',
width: '50px',
marginTop:(-(25+settings.borderH)/2+settings.marginScrollTop)+'px',
marginLeft:(-(25+settings.borderW)/2+settings.marginScrollLeft)+'px'
},{duration: 350,complete: function(){
elts.contentWrapper.hide()
callback()
}})}
function showTransition(elts,settings,callback){
elts.loading
.css({
marginTop: elts.contentWrapper.css('marginTop'),
marginLeft: elts.contentWrapper.css('marginLeft'),
height: elts.contentWrapper.css('height'),
width: elts.contentWrapper.css('width'),
opacity: 0
})
.show()
.fadeTo(400,1,function(){
elts.contentWrapper.hide()
callback()
})}
function hideTransition(elts,settings,callback){
elts.contentWrapper
.hide()
.css({
width: settings.width+'px',
height: settings.height+'px',
marginLeft: settings.marginLeft+'px',
marginTop: settings.marginTop+'px',
opacity: 1
})
elts.loading
.animate({
width: settings.width+'px',
height: settings.height+'px',
marginLeft: settings.marginLeft+'px',
marginTop: settings.marginTop+'px'
},{complete: function(){
elts.contentWrapper.show()
elts.loading.fadeOut(400,function(){
elts.loading.hide()
callback()
})
},duration: 350})}
function resize(elts,settings,callback){
elts.contentWrapper
.animate({
width: settings.width+'px',
height: settings.height+'px',
marginLeft: settings.marginLeft+'px',
marginTop: settings.marginTop+'px'
},{complete: callback,duration: 400})}
function updateBgColor(elts,settings,callback){
if(!$.fx.step.backgroundColor){
elts.bg.css({backgroundColor: settings.bgColor})
callback()
}else
elts.bg
.animate({
backgroundColor: settings.bgColor
},{complete: callback,duration: 400})}
$($.fn.nyroModal.settings.openSelector).nyroModal()
})
var tmpDebug=''
function nyroModalDebug(msg,elts,settings){
if(elts.full&&elts.bg){
elts.bg.prepend(msg+'<br />'+tmpDebug)
tmpDebug=''
}else
tmpDebug+=msg+'<br />'}

