/**
 * LBi Dialogs module
 *
 * @module    dialog
 * @version   3.10.100216
 * @requires  LBi, jQuery
 * @author    LBi Lost Boys
 */
(function($){var o="confirm";var p="cancel";var q="close";var r={visibility:'hidden',display:'block'};var s={display:'none',visibility:'visible'};var t={position:'absolute',left:0,top:0};var u=new RegExp("right");var v=new RegExp("top");var w=function(a,b,c){return Math.min(Math.max(a,b),c)};var z=function(a){this.applySettings(a);this.types={};this.dialogs={};var b=this.settings.relations||new LBi.LinkRelations();b.subscribe(this.regRelation,this.handleClick.bind(this))};z.prototype={constructor:z,applySettings:function(a){this.settings=$.extend({},z.Defaults,a);this.regRelation=new RegExp("(^|\\s)"+this.settings.prefix);this.regAction=new RegExp(this.settings.prefix+"([^ ]+)")},getProperty:function(a){return this.settings[a]},handleClick:function(e){var a=e.target;var b=a.rel;var c=this.regAction.exec(b)[1];var d=this.currentDialog;if(this.currentDialog){this.currentDialog.close();this.setCurrent(null)}switch(c){case q:if(d){d.close()}break;case o:if(d){d.confirm(true)}break;case p:if(d){d.confirm(false)}break;default:this.open(c,a);break}e.preventDefault()},open:function(a,b){var c=this.getDialog(a);this.setCurrent(c);c.open(b);if(!this.closeHandler){this.closeHandler=this.close.bind(this);$(document).bind('click',this.closeHandler)}return c},close:function(e){var a=this.currentDialog;if(a){var b=e?a.targetOf(e):false;if(!b){a.close();this.setCurrent(null);if(this.closeHandler){$(document).unbind('click',this.closeHandler);this.closeHandler=null}}}},getDialog:function(a){if(!this.dialogs[a]){var b=this.types[a]||this.settings.dialogClass;var c=document.getElementById(this.settings.prefix+a);this.dialogs[a]=new b(c,this,a)}return this.dialogs[a]},register:function(a,b){this.types[a]=b;return b},setCurrent:function(a){this.currentDialog=a},toggleOverlay:function(a){if(!this.overlay){var b=this.settings.overlayClass;this.overlay=new b(this)}this.overlay.toggle(a)}};LBi.namespace('Dialogs',z);var A=function(a,b,c){this.container=a;this.$container=$(a);this.manager=b;this.type=c;this.orientation=b.getProperty('orientation');this.offset=b.getProperty('offset');this.modal=b.getProperty('modal');this.template=b.getProperty('template')};A.prototype={constructor:A,activate:function(a){},confirm:function(a){},show:function(){this.toggle(true)},hide:function(){this.toggle(false)},toggle:function(a){var b=this.manager.settings;var c=b.animation;c.run(this.container,a,{duration:b.animationTime})},create:function(){var a=this.manager.getProperty('prefix');this.$container=$(this.template);this.$container.attr('id',a+this.type);this.container=this.$container[0];$('body').append(this.$container)},open:function(a){if(!this.container){this.create()}this.origin=a;if(this.modal){this.manager.toggleOverlay(true)}this.activate(true);this.$container.css(r);this.$container.css(this.getPosition(a));this.$container.css(s);this.show()},close:function(){if(this.modal){this.manager.toggleOverlay(false)}this.activate(false);this.hide()},redraw:function(){this.$container.css(this.getPosition(this.origin))},getPosition:function(a){var b=document.documentElement;var c=this.offset;var d=$(a).offset();var e=d.left;var f=d.top;var g=this.$container.width();var h=this.$container.height();var i=window.pageYOffset||b.scrollTop;var j=window.pageXOffset||b.scrollLeft;var k=j+c;var l=i+c;var m=(window.innerWidth||b.clientWidth)+j-g-c;var n=(window.innerHeight||b.clientHeight)+i-h-c;var x=u.test(this.orientation)?(e+a.offsetWidth+c):(e-g-c);var y=v.test(this.orientation)?f:(f+a.offsetHeight-h);return{left:w(x,k,m)+'px',top:w(y,l,n)+'px'}},getCenter:function(){var a=document.documentElement;var b=window.pageYOffset||a.scrollTop;var c=window.pageXOffset||a.scrollLeft;return{left:c+((window.innerWidth||a.clientWidth)-this.$container.width())/2+'px',top:b+((window.innerHeight||a.clientHeight)+ -this.$container.height())/2+'px'}},targetOf:function(e){if(this.modal){return true}var a=e.target;while(a){if(a==this.container||a==this.origin){return true}a=a.parentNode}return false}};LBi.namespace('Dialog',A);LBi.CenteredDialog=LBi.Class.extend(A,null,{getPosition:function(){return this.getCenter()}});var B=function(a){this.manager=a};B.prototype={constructor:B,show:function(){this.$container.fadeIn()},hide:function(){this.$container.fadeOut()},create:function(){var a=this.manager.getProperty('overlay');this.$container=$(a);this.$container.css(t);this.container=this.$container[0];$('body').append(this.$container)},getHeight:function(){var a=document.documentElement.scrollHeight||document.body.scrollHeight;var b=window.innerHeight||document.documentElement.clientHeight;return(a<b)?b:a},toggle:function(a){if(!this.container){this.create()}if(a){var b=this.getHeight();this.$container.css({height:b+'px'});this.show()}else{this.hide()}}};LBi.namespace('Overlay',B);z.Defaults={template:'<div class="dialog"></div>',dialogClass:A,prefix:'dialog-',orientation:'right top',offset:10,modal:false,overlay:'<div id="overlay"></div>',overlayClass:B,animation:LBi.Animation.FADE,animationTime:200,relations:null}})(jQuery);

