;(function($){var $window=$(window);var options={};var zindexvalues=[];var lastclicked=[];var scrollbarwidth;var bodymarginright=null;var opensuffix='_open';var closesuffix='_close';var visiblePopupsArray=[];var transitionsupport=null;var opentimer;var iOS=/(iPad|iPhone|iPod)/g.test(navigator.userAgent);var focusableElementsString="a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]";var methods={_init:function(el){var $el=$(el);var options=$el.data('popupoptions');lastclicked[el.id]=false;zindexvalues[el.id]=0;if(!$el.data('popup-initialized')){$el.attr('data-popup-initialized','true');methods._initonce(el);}
if(options.autoopen){setTimeout(function(){methods.show(el,0);},0);}},_initonce:function(el){var $el=$(el);var $body=$('body');var $wrapper;var options=$el.data('popupoptions');var css;bodymarginright=parseInt($body.css('margin-right'),10);transitionsupport=document.body.style.webkitTransition!==undefined||document.body.style.MozTransition!==undefined||document.body.style.msTransition!==undefined||document.body.style.OTransition!==undefined||document.body.style.transition!==undefined;if(options.type=='tooltip'){options.background=false;options.scrolllock=false;}
if(options.backgroundactive){options.background=false;options.blur=false;options.scrolllock=false;}
if(options.scrolllock){var parent;var child;if(typeof scrollbarwidth==='undefined'){parent=$('
').appendTo('body');child=parent.children();scrollbarwidth=child.innerWidth()- child.height(99).innerWidth();parent.remove();}}
if(!$el.attr('id')){$el.attr('id','j-popup-'+ parseInt((Math.random()*100000000),10));}
$el.addClass('popup_content');if((options.background)&&(!$('#'+ el.id+'_background').length)){$body.append('');var $background=$('#'+ el.id+'_background');$background.css({opacity:0,visibility:'hidden',backgroundColor:options.color,position:'fixed',top:0,right:0,bottom:0,left:0});if(options.setzindex&&!options.autozindex){$background.css('z-index','100000');}
if(options.transition){$background.css('transition',options.transition);}}
$body.append(el);$el.wrap('');$wrapper=$('#'+ el.id+'_wrapper');$wrapper.css({opacity:0,visibility:'hidden',position:'absolute'});if(iOS){$wrapper.css('cursor','pointer');}
if(options.type=='overlay'){$wrapper.css('overflow','auto');}
$el.css({opacity:0,visibility:'hidden',display:'inline-block'});if(options.setzindex&&!options.autozindex){$wrapper.css('z-index','100001');}
if(!options.outline){$el.css('outline','none');}
if(options.transition){$el.css('transition',options.transition);$wrapper.css('transition',options.transition);}
$el.attr('aria-hidden',true);if(options.type=='overlay'){$el.css({textAlign:'left',position:'relative',verticalAlign:'middle'});css={position:'fixed',width:'100%',height:'100%',top:0,left:0,textAlign:'center'};if(options.backgroundactive){css.position='absolute';css.height='0';css.overflow='visible';}
$wrapper.css(css);$wrapper.append('');$('.popup_align').css({display:'inline-block',verticalAlign:'middle',height:'100%'});}
$el.attr('role','dialog');var openelement=(options.openelement)?options.openelement:('.'+ el.id+ opensuffix);$(openelement).each(function(i,item){$(item).attr('data-popup-ordinal',i);if(!item.id){$(item).attr('id','open_'+ parseInt((Math.random()*100000000),10));}});if(!($el.attr('aria-labelledby')||$el.attr('aria-label'))){$el.attr('aria-labelledby',$(openelement).attr('id'));}
if(options.action=='hover'){options.keepfocus=false;$(openelement).on('mouseenter',function(event){methods.show(el,$(this).data('popup-ordinal'));});$(openelement).on('mouseleave',function(event){methods.hide(el);});}else{$(document).on('click',openelement,function(event){event.preventDefault();var ord=$(this).data('popup-ordinal');setTimeout(function(){methods.show(el,ord);},0);});}
if(options.closebutton){methods.addclosebutton(el);}
if(options.detach){$el.hide().detach();}else{$wrapper.hide();}},show:function(el,ordinal){var $el=$(el);if($el.data('popup-visible'))return;if(!$el.data('popup-initialized')){methods._init(el);}
$el.attr('data-popup-initialized','true');var $body=$('body');var options=$el.data('popupoptions');var $wrapper=$('#'+ el.id+'_wrapper');var $background=$('#'+ el.id+'_background');callback(el,ordinal,options.beforeopen);lastclicked[el.id]=ordinal;setTimeout(function(){visiblePopupsArray.push(el.id);},0);if(options.autozindex){var elements=document.getElementsByTagName('*');var len=elements.length;var maxzindex=0;for(var i=0;i0){$('#'+ el.id+'_background').css({zIndex:(zindexvalues[el.id]+ 1)});}}
if(zindexvalues[el.id]>0){$wrapper.css({zIndex:(zindexvalues[el.id]+ 2)});}}
if(options.detach){$wrapper.prepend(el);$el.show();}else{$wrapper.show();}
opentimer=setTimeout(function(){$wrapper.css({visibility:'visible',opacity:1});$('html').addClass('popup_visible').addClass('popup_visible_'+ el.id);$wrapper.addClass('popup_wrapper_visible');},20);if(options.scrolllock){$body.css('overflow','hidden');if($body.height()>$window.height()){$body.css('margin-right',bodymarginright+ scrollbarwidth);}}
if(options.backgroundactive){$el.css({top:($window.height()-($el.get(0).offsetHeight+
parseInt($el.css('margin-top'),10)+
parseInt($el.css('margin-bottom'),10)))/2 +'px'
});}
$el.css({'visibility':'visible','opacity':1});if(options.background){$background.css({'visibility':'visible','opacity':options.opacity});setTimeout(function(){$background.css({'opacity':options.opacity});},0);}
$el.data('popup-visible',true);methods.reposition(el,ordinal);$el.data('focusedelementbeforepopup',document.activeElement);if(options.keepfocus){$el.attr('tabindex',-1);setTimeout(function(){if(options.focuselement==='closebutton'){$('#'+ el.id+' .'+ el.id+ closesuffix+':first').focus();}else if(options.focuselement){$(options.focuselement).focus();}else{$el.focus();}},options.focusdelay);}
$(options.pagecontainer).attr('aria-hidden',true);$el.attr('aria-hidden',false);callback(el,ordinal,options.onopen);if(transitionsupport){$wrapper.one('transitionend',function(){callback(el,ordinal,options.opentransitionend);});}else{callback(el,ordinal,options.opentransitionend);}
if(options.type=='tooltip'){$(window).on('resize.'+ el.id,function(){methods.reposition(el,ordinal);});}},hide:function(el,outerClick){var popupIdIndex=$.inArray(el.id,visiblePopupsArray);if(popupIdIndex===-1){return;}
if(opentimer)clearTimeout(opentimer);var $body=$('body');var $el=$(el);var options=$el.data('popupoptions');var $wrapper=$('#'+ el.id+'_wrapper');var $background=$('#'+ el.id+'_background');$el.data('popup-visible',false);if(visiblePopupsArray.length===1){$('html').removeClass('popup_visible').removeClass('popup_visible_'+ el.id);}else{if($('html').hasClass('popup_visible_'+ el.id)){$('html').removeClass('popup_visible_'+ el.id);}}
visiblePopupsArray.splice(popupIdIndex,1);if($wrapper.hasClass('popup_wrapper_visible')){$wrapper.removeClass('popup_wrapper_visible');}
if(options.keepfocus&&!outerClick){setTimeout(function(){if($($el.data('focusedelementbeforepopup')).is(':visible')){$el.data('focusedelementbeforepopup').focus();}},0);}
$wrapper.css({'visibility':'hidden','opacity':0});$el.css({'visibility':'hidden','opacity':0});if(options.background){$background.css({'visibility':'hidden','opacity':0});}
$(options.pagecontainer).attr('aria-hidden',false);$el.attr('aria-hidden',true);callback(el,lastclicked[el.id],options.onclose);if(transitionsupport&&$el.css('transition-duration')!=='0s'){$el.one('transitionend',function(e){if(!($el.data('popup-visible'))){if(options.detach){$el.hide().detach();}else{$wrapper.hide();}}
if(options.scrolllock){setTimeout(function(){$body.css({overflow:'visible','margin-right':bodymarginright});},10);}
callback(el,lastclicked[el.id],options.closetransitionend);});}else{if(options.detach){$el.hide().detach();}else{$wrapper.hide();}
if(options.scrolllock){setTimeout(function(){$body.css({overflow:'visible','margin-right':bodymarginright});},10);}
callback(el,lastclicked[el.id],options.closetransitionend);}
if(options.type=='tooltip'){$(window).off('resize.'+ el.id);}},toggle:function(el,ordinal){if($(el).data('popup-visible')){methods.hide(el);}else{setTimeout(function(){methods.show(el,ordinal);},0);}},reposition:function(el,ordinal){var $el=$(el);var options=$el.data('popupoptions');var $wrapper=$('#'+ el.id+'_wrapper');var $background=$('#'+ el.id+'_background');ordinal=ordinal||0;if(options.type=='tooltip'){$wrapper.css({'position':'absolute'});var $tooltipanchor;if(options.tooltipanchor){$tooltipanchor=$(options.tooltipanchor);}else if(options.openelement){$tooltipanchor=$(options.openelement).filter('[data-popup-ordinal="'+ ordinal+'"]');}else{$tooltipanchor=$('.'+ el.id+ opensuffix+'[data-popup-ordinal="'+ ordinal+'"]');}
var linkOffset=$tooltipanchor.offset();if(options.horizontal=='right'){$wrapper.css('left',linkOffset.left+ $tooltipanchor.outerWidth()+ options.offsetleft);}else if(options.horizontal=='leftedge'){$wrapper.css('left',linkOffset.left+ $tooltipanchor.outerWidth()- $tooltipanchor.outerWidth()+ options.offsetleft);}else if(options.horizontal=='left'){$wrapper.css('right',$window.width()- linkOffset.left- options.offsetleft);}else if(options.horizontal=='rightedge'){$wrapper.css('right',$window.width()- linkOffset.left- $tooltipanchor.outerWidth()- options.offsetleft);}else{$wrapper.css('left',linkOffset.left+($tooltipanchor.outerWidth()/ 2) - ($el.outerWidth() / 2) - parseFloat($el.css('marginLeft')) + options.offsetleft);
}
if(options.vertical=='bottom'){$wrapper.css('top',linkOffset.top+ $tooltipanchor.outerHeight()+ options.offsettop);}else if(options.vertical=='bottomedge'){$wrapper.css('top',linkOffset.top+ $tooltipanchor.outerHeight()- $el.outerHeight()+ options.offsettop);}else if(options.vertical=='top'){$wrapper.css('bottom',$window.height()- linkOffset.top- options.offsettop);}else if(options.vertical=='topedge'){$wrapper.css('bottom',$window.height()- linkOffset.top- $el.outerHeight()- options.offsettop);}else{$wrapper.css('top',linkOffset.top+($tooltipanchor.outerHeight()/ 2) - ($el.outerHeight() / 2) - parseFloat($el.css('marginTop')) + options.offsettop);
}}else if(options.type=='overlay'){if(options.horizontal){$wrapper.css('text-align',options.horizontal);}else{$wrapper.css('text-align','center');}
if(options.vertical){$el.css('vertical-align',options.vertical);}else{$el.css('vertical-align','middle');}}},addclosebutton:function(el){var genericCloseButton;if($(el).data('popupoptions').closebuttonmarkup){genericCloseButton=$(options.closebuttonmarkup).addClass(el.id+'_close');}else{genericCloseButton='';}
if($(el).data('popup-initialized')){$(el).append(genericCloseButton);}}};var callback=function(el,ordinal,func){var options=$(el).data('popupoptions');var openelement=(options.openelement)?options.openelement:('.'+ el.id+ opensuffix);var elementclicked=$(openelement+'[data-popup-ordinal="'+ ordinal+'"]');if(typeof func=='function'){func.call($(el),el,elementclicked);}};$(document).on('keydown',function(event){if(visiblePopupsArray.length){var elementId=visiblePopupsArray[visiblePopupsArray.length- 1];var el=document.getElementById(elementId);if($(el).data('popupoptions').escape&&event.keyCode==27){methods.hide(el);}}});$(document).on('click',function(event){if(visiblePopupsArray.length){var elementId=visiblePopupsArray[visiblePopupsArray.length- 1];var el=document.getElementById(elementId);var closeButton=($(el).data('popupoptions').closeelement)?$(el).data('popupoptions').closeelement:('.'+ el.id+ closesuffix);if($(event.target).closest(closeButton).length){event.preventDefault();methods.hide(el);}
if($(el).data('popupoptions').blur&&!$(event.target).closest('#'+ elementId).length&&event.which!==2&&$(event.target).is(':visible')){if($(el).data('popupoptions').background){methods.hide(el);event.preventDefault();}else{methods.hide(el,true);}}}});$(document).on('keydown',function(event){if(visiblePopupsArray.length&&event.which==9){var elementId=visiblePopupsArray[visiblePopupsArray.length- 1];var el=document.getElementById(elementId);var popupItems=$(el).find('*');var focusableItems=popupItems.filter(focusableElementsString).filter(':visible');var focusedItem=$(':focus');var numberOfFocusableItems=focusableItems.length;var focusedItemIndex=focusableItems.index(focusedItem);if(numberOfFocusableItems===0){$(el).focus();event.preventDefault();}else{if(event.shiftKey){if(focusedItemIndex===0){focusableItems.get(numberOfFocusableItems- 1).focus();event.preventDefault();}}else{if(focusedItemIndex==numberOfFocusableItems- 1){focusableItems.get(0).focus();event.preventDefault();}}}}});$.fn.popup=function(customoptions){return this.each(function(){var $el=$(this);if(typeof customoptions==='object'){var opt=$.extend({},$.fn.popup.defaults,$el.data('popupoptions'),customoptions);$el.data('popupoptions',opt);options=$el.data('popupoptions');methods._init(this);}else if(typeof customoptions==='string'){if(!($el.data('popupoptions'))){$el.data('popupoptions',$.fn.popup.defaults);options=$el.data('popupoptions');}
methods[customoptions].call(this,this);}else{if(!($el.data('popupoptions'))){$el.data('popupoptions',$.fn.popup.defaults);options=$el.data('popupoptions');}
methods._init(this);}});};$.fn.popup.defaults={type:'overlay',autoopen:false,background:true,backgroundactive:false,color:'black',opacity:'0.5',horizontal:'center',vertical:'middle',offsettop:0,offsetleft:0,escape:true,blur:true,setzindex:true,autozindex:false,scrolllock:false,closebutton:false,closebuttonmarkup:null,keepfocus:true,focuselement:null,focusdelay:50,outline:false,pagecontainer:null,detach:false,openelement:null,closeelement:null,transition:null,tooltipanchor:null,beforeopen:null,onclose:null,onopen:null,opentransitionend:null,closetransitionend:null};})(jQuery);