﻿/*
 *	jquery.msgbox 4.2 - 2009-11-23
 *
 *	All the stuff written by pwwang (pwwang.com)	
 *	Feel free to do whatever you want with this file
 *  Please keep the distribution
 *
 */
(function($){$.msgbox=function(o){if(typeof(o)=='string'){o={content:o}}var options=o||{};options.width=o.width||360;options.height=o.height||200,options.closeAfter=o.closeAfter||0;options.title=o.title||'提示',options.wrapperClass=o.wrapperClass||'msgbox_wrapper';options.titleClass=o.titleClass||'msgbox_title';options.titleWrapperClass=o.titleWrapperClass||'msgbox_title_wrapper';options.mainClass=o.mainClass||'msgbox_main';options.bgClass=o.bgClass||'msgbox_bg';options.buttonClass=o.buttonClass||'msgbox_button';options.type=o.type||'text';options.content=o.content||'Hello, world!';options.closeEvent=o.closeEvent||function(){};options.closeTitle=o.closeTitle||'确认';options.closeImg=o.closeImg||'images/close.gif';options.bgOpacity=o.bgOpacity||0.6;options.afterAjaxEvent=o.afterAjaxEvent||function(){};options.oneBoxMode=typeof(o.oneBoxMode)=='undefined'?true:o.oneBoxMode;options.hideScrollBar=typeof(o.hideScrollBar)=='undefined'?false:o.hideScrollBar;var dragFlag=false;var startX=0;var startY=0;var returnValue=false;var $background=$("<div>").css({'position':'absolute','top':'0','left':'0','z-index':'9999'}).addClass(options.bgClass).appendTo('body').animate({opacity:options.bgOpacity}).dblclick(closeMe).click(function(){flashTitle(0.5,4,80)}).mouseup(dragEnd);var $wrapper=$("<div>").css({'width':options.width+'px','height':options.height+'px','position':'absolute','z-index':'10000'}).addClass(options.wrapperClass).appendTo('body').mouseup(dragEnd);var $titleWrapper=$('<table width=100% cellspacing=0 cellpadding=0><tr><td></td><td><a href="javascript:;">关闭</a></td></tr></table>').css({'cursor':'move','vertical-align':'middle'}).addClass(options.titleWrapperClass).appendTo($wrapper).mousedown(function(e){dragStart(e)}).mousemove(function(e){if(dragFlag)dragTo(startX,startY,e)}).mouseout(function(e){if(dragFlag)dragTo(startX,startY,e)}).mouseup(dragEnd);var $titleTd=$("td",$titleWrapper).eq(0).html(options.title).addClass(options.titleClass).mouseup(dragEnd);var $closeA=$titleTd.next().attr('align','right').find("a").mousedown(closeMe).html("<img src="+options.closeImg+" border=0 />");var $main=$(document.createElement("div")).addClass(options.mainClass).appendTo($wrapper);$main.height(options.height-$titleWrapper.outerHeight(true)-$main.outerHeight(true)+$main.height()).mouseup(dragEnd);function closeMe(){$('select').css('visibility','visible');if(options.hideScrollBar)$('body').css('overflow','auto');$wrapper.fadeOut();$background.fadeOut();options.closeEvent(returnValue)}function isVisible(){return $background.is(":visible")&&$wrapper.is(":visible")}function autoCloseMe(closeAfter){if(closeAfter>0&&isVisible()){autoCloseStr=closeAfter+" 秒后关闭 ...";$titleTd.html(options.title+" &nbsp; "+autoCloseStr);closeAfter--;if(closeAfter==0)closeMe();setTimeout(function(){autoCloseMe(closeAfter)},1000)}}function dragStart(e){if(e.preventDefault)e.preventDefault();if(e.stopPropagation())e.stopPropagation();dragFlag=true;var offset=$wrapper.offset();startX=e.pageX-offset.left;startY=e.pageY-offset.top}function dragTo(x,y,e){if(e.preventDefault)e.preventDefault();if(e.stopPropagation())e.stopPropagation();ensureMoveInScreen(e.pageX-x,e.pageY-y)}function ensureMoveInScreen(x,y){var offset=$wrapper.offset();if(x<$(window).scrollLeft())boxMoveTo($(window).scrollLeft(),y);if(y<$(window).scrollTop())boxMoveTo(x,$(window).scrollTop());if(offset.left>$(window).scrollLeft()+$(window).width()-options.width)boxMoveTo($(window).scrollLeft()+$(window).width()-options.width,y);if(offset.top>$(window).scrollTop()+$(window).height()-options.height)boxMoveTo(x,$(window).scrollTop()+$(window).height()-options.height);if(x>=$(window).scrollLeft()&&x<=$(window).scrollLeft()+$(window).width()-options.width&&y>=$(window).scrollTop()&&y<=$(window).scrollTop()+$(window).height()-options.height)boxMoveTo(x,y)}function boxMoveTo(x,y){$wrapper.css({'top':y+'px','left':x+'px'})}function dragEnd(){var offset=$wrapper.offset();ensureMoveInScreen(offset.left,offset.top);dragFlag=false}function resetPosition(){$background.css({'width':document.documentElement.scrollWidth+'px','height':Math.max(document.documentElement.scrollHeight,$('body').outerHeight())+'px'});$wrapper.css({'top':$(window).scrollTop()+($(window).height()-options.height)/2+'px','left':$(window).scrollLeft()+($(window).width()-options.width)/2+'px'})}function flashTitle(opacity,times,interval,flag){if(times>0){flag=!flag;op=flag?opacity:1;$titleWrapper.css('opacity',op);setTimeout(function(){flashTitle(opacity,times-1,interval,flag)},interval)}}function bindIframeMouseup(index){try{window.frames[index].document.onmouseup=dragEnd}catch(e){}setTimeout(function(){bindIframeMouseup(index)},200)}function msgbox(){$('select').css('visibility','hidden');if(options.hideScrollBar)$('body').css('overflow','hidden');switch(options.type){case'text':$main.html(options.content);break;case'alert':$main.html(options.content);var $buttonWrapper=$("<div>").css({'text-align':'center','padding':'15px 0'}).appendTo($main);var $OKButton=$("<input type=button value=' "+options.closeTitle+" '>").appendTo($buttonWrapper).addClass(options.buttonClass).click(closeMe);break;case'confirm':$main.html(options.content);var $buttonWrapper=$("<div>").css({'text-align':'center','padding':'15px 0'}).appendTo($main);var $yesButton=$("<input type=button value=' Yes '>").appendTo($buttonWrapper).addClass(options.buttonClass).after(" &nbsp;&nbsp;").click(function(){returnValue=true;closeMe()});var $noButton=$("<input type=button value=' No '>").appendTo($buttonWrapper).addClass(options.buttonClass).click(function(){returnValue=false;closeMe()});break;case'get':case'ajax':case'url':$main.text("Loading ...").load(options.content,'',function(data){(options.afterAjaxEvent)(data)});break;case'iframe':if(self!=top&&options.oneBoxMode){$background.remove();$wrapper.remove();setTimeout(function(){window.location.href=options.content},1)}else{var $iframe=$("<iframe frameborder=0 marginheight=0 marginwidth=0></iframe>").appendTo($main).attr({'width':'100%','height':'100%','scrolling':'auto','src':options.content});$iframe.find(document).ready(function(){var index=$("iframe").index($iframe);bindIframeMouseup(index)})}break}}resetPosition();$(window).load(resetPosition).resize(resetPosition).mouseup(dragEnd);if(options.closeAfter>0)autoCloseMe(options.closeAfter);msgbox();return this}})(jQuery);
