/*
 * Denis Lins dialoG
 * 
 * dlg by Denis Lins <denislins@hotmail.com>
 *
 * A very nice dialog plugin for jQuery
 * 
 * More information:
 *    http://blog.denislins.com.br/2010/09/06/dlg-jquery-dialog-plugin-alert-confirm-prompt/
 *
 * Copyright (c) 2010 Denis Lins
 * Licensed under the MIT License:
 *   http://www.opensource.org/licenses/mit-license.php
 */
 
(function($){var c=function(){};$.extend(c.prototype,{construct:function(a,b){this.options=b;this.elem=a;this.init();return this},init:function(){var a=this;this.options=$.extend({type:'alert',content:'',title:'Aviso',okText:'Ok',cancelText:'Cancel',css:{width:300,height:'auto'},easeIn:'easeOutBack',easeOut:'easeInBack',speedIn:500,speedOut:500,onComplete:function(){},focusButton:false,maskCloseDialog:false,drag:false,maxlength:false},this.options);this.$content=$('#dlgContent').size()==1?$('#dlgContent'):$('<div id="dlgContent"></div>').appendTo('body').css(this.options.css);this.$mask=$('#dlgMask').size()==1?$('#dlgMask'):$('<div id="dlgMask"></div>').appendTo('body');if(this.elem!==false){$(this.elem).bind('click',function(e){e.preventDefault();a.showDialog()})}},isActive:function(){return $('#dlgMask:visible').size()>0||$('#dlgContent:visible').size()>0},bindReposition:function(){var a=this;$(document).bind('scroll resize',{self:this},this.repositionContent);$(window).bind('scroll resize',{self:this},this.repositionContent);return this},updateTitle:function(){if($('h4',this.$content).size()<=0){$('<h4 />').text(this.options.title).prependTo(this.$content)}return this},updateContent:function(){this.$content.css({left:this.getPosLeft(),top:0}).html('<div>'+this.options.content+'</div>').append('<p id="dlgCloseButton"><a href="ok">'+this.options.okText+'</a></p>');return this},createMask:function(){var a=this;this.$mask.css({opacity:0.7,width:$(document).width(),height:$(document).height()}).fadeIn(this.options.speedIn,function(){if(a.options.maskCloseDialog===true){a.$mask.bind('click',{self:this},this.closeDialog)}});return this},showContent:function(){var a=this;this.$content.css('opacity',0).show().animate({top:this.getPosTop(),opacity:1},this.options.speedIn,this.options.easeIn,function(){if($.browser.msie){$(this).get(0).style.removeAttribute('filter')}if(a.options.focusButton=='ok'){$('#dlgCloseButton a').eq(0).focus()}else if(a.options.focusButton=='cancel'){$('#dlgCloseButton a').eq(1).focus()}})},addCancelButton:function(){$('#dlgCloseButton').append(' <a href="cancel">'+this.options.cancelText+'</a>');return this},addTextInput:function(){$('#dlgContent div').append('<p><input type="text" id="dlgText" /></p>');if(isNaN(this.options.maxlength)===false&&this.options.maxlength>0){$('#dlgText').attr('maxlength',this.options.maxlength)}},showDialog:function(){if(this.isActive()===true){return false}var a=this;this.bindReposition().updateContent().updateTitle();if(this.options.type=='confirm'){this.addCancelButton()}else if(this.options.type=='prompt'){this.addCancelButton().addTextInput()}if(this.options.drag===true){$('h4',this.$content).css('cursor','move');this.$content.draggable({handle:'h4'})}this.createMask().showContent();$('#dlgCloseButton a').bind('click',{self:this},this.closeDialog)},unbindReposition:function(){$(window).unbind('scroll resize',this.repositionContent);$(document).unbind('scroll resize',this.repositionContent);return this},destroyMask:function(){var a=this;this.$mask.delay(this.options.speedOut/2).fadeOut(this.options.speedOut,function(){if(a.options.type=='prompt'||a.options.type=='confirm'){a.options.onComplete(a.response)}else{a.options.onComplete()}$(this).unbind()});return this},hideContent:function(){var a=this;this.$content.stop().animate({left:this.getPosLeft(),top:this.getPosTop()-$(document).scrollTop()-$(window).height(),opacity:0},this.options.speedOut,this.options.easeOut,function(){a.$content.hide()});$('#dlgCloseButton a').unbind()},getResponse:function(a,b){if(this.options.type=='confirm'){this.response=a=='ok'}else if(this.options.type=='prompt'){if(a=='cancel'){this.response=null}else{this.response=b.length>0?b:null}}},closeDialog:function(e){e.preventDefault();var a=e.data.self;if(a.isActive()===false){return false}if(a.options.drag===true){a.$content.draggable('destroy');$('h4',a.$content).css('cursor','auto')}if(a.options.type=='confirm'){a.getResponse($(this).attr('href').toLowerCase())}else if(a.options.type=='prompt'){a.getResponse($(this).attr('href').toLowerCase(),$('input#dlgText').val())}a.unbindReposition().destroyMask().hideContent()},repositionContent:function(e){var a=e.data.self;if(a.$content.is(':visible')){a.$content.stop().animate({left:a.getPosLeft(),top:a.getPosTop(),opacity:1},a.options.speedIn,a.options.easeIn)}},getPosLeft:function(){return $(window).width()/2-this.$content.width()/2-parseInt(this.$content.css('paddingLeft'))+$(document).scrollLeft()},getPosTop:function(){return $(window).height()/2-this.$content.height()/2-parseInt(this.$content.css('paddingTop'))+$(document).scrollTop()}});$.dlg=function(a){new c().construct(false,a).showDialog()};$.fn.extend({dlg:function(a){new c().construct(this,a)}})})(jQuery);
