复制代码
- (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||'attention';
- options.wrapperClass='msg_wrapper';
- options.titleClass='msg_title';
- options.outClickClose=o.outClickClose=='yes'?true:false;
- options.titleWrapperClass='msg_title_wrapper';
- options.mainClass='msg_main';
- options.bgClass='msg_bg';
- options.type=o.type||'text';
- options.content=o.content||'Hello,world!';
- options.closeEvent=o.closeEvent||function(){};
- options.closeImg='images/close.gif';
- options.bgOpacity=o.bgOpacity||0.4;
- options.afterAjaxEvent=o.afterAjaxEvent||function(){};
- options.couldClose=o.couldClose||'yes';
- options.oneBoxMode=typeof(o.oneBoxMode)=='undefined'?true:o.oneBoxMode;
- var dragFlag=false;
- var startX=0;
- var startY=0;
- var $background=$(document.createElement("div")).addClass(options.bgClass).css({"opacity":0.0}).appendTo('body').animate({opacity:options.bgOpacity}).mouseup(dragEnd);
- if (options.outClickClose)
- $background.click(closeMe);
- else
- {
- $background.dblclick(closeMe).click(function()
- {
- flashTitle(0.5,4,80);
- })
- };
- try{$background.bgiframe();}catch(e){};
- var $wrapper=$(document.createElement("div")).css({'width':options.width+'px','height':options.height+'px','position':'absolute','z-index':'100'}).addClass(options.wrapperClass).appendTo('body').mouseup(dragEnd);
- var $titleWrapper=$(document.createElement("div")).addClass(options.titleWrapperClass).appendTo($wrapper).select(function(e)
- {
- if(e.preventDefault)e.preventDefault();
- if(e.stopPropagation())e.stopPropagation();
- return false;
- }).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 $title=$(document.createElement("span")).html(options.title).appendTo($titleWrapper).addClass(options.titleClass).select(function(e)
- {
- if(e.preventDefault)e.preventDefault();
- if(e.stopPropagation())e.stopPropagation();
- return false;
- }).mouseup(dragEnd);
- var $close=$(document.createElement("img")).attr({'src':options.closeImg,'className':'right'}).prependTo($titleWrapper).mousedown(closeMe);
- var $main=$(document.createElement("div")).addClass(options.mainClass).appendTo($wrapper).height(options.height-51).mouseup(dragEnd);
- function closeMe()
- {
- if(options.couldClose=='yes'){
- $background.fadeOut();
- $wrapper.slideUp("slow");
- }
- else flashTitle(0.5,4,80);
- }
- function isVisible()
- {
- return $background.is(":visible")&&$wrapper.is(":visible");
- }
- function autoCloseMe(closeAfter)
- {
- if(closeAfter>0&&isVisible())
- {
- autoCloseStr=" ("+closeAfter+')';
- $title.html(options.title+" "+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 page=$.getPageSize();
- var offset=$wrapper.offset();
- if(x<0)boxMoveTo(0,y);
- if(y<0)boxMoveTo(x,0);
- if(offset.left>page.PageW-options.width)boxMoveTo(page.PageW-options.width,y);
- if(offset.top>page.PageH-options.height)boxMoveTo(x,page.PageH-options.height);
- if(x>=0&&x<=page.PageW-options.width&&y>=0&&y<=page.PageH-options.height)boxMoveTo(x,y);
- }
- function boxMoveTo(x,y)
- {
- var scroll=$.getPageScroll;
- $wrapper.css({'top':y,'left':x});
- }
- function dragEnd()
- {
- var offset=$wrapper.offset();
- ensureMoveInScreen(offset.left,offset.top);
- dragFlag=false;
- }
- function resetPosition()
- {
- var page=$.getPageSize();
- $background.css({'width':page.PageW+'px','height':page.PageH+'px'});
- var scroll=$.getPageScroll();
- $wrapper.css({'top':((600-options.height)/2+scroll.Y)+'px','left':($(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);
- }
- }
- var timeOut;
- function bindIframeMouseup(index)
- {
- try{window.frames[index].document.onmouseup=dragEnd;}catch(e){};
- timeOut=setTimeout(function(){ bindIframeMouseup(index)},200);
- }
- function msgbox()
- {
- switch(options.type)
- {
- case 'text':
- $main.html(options.content);
- $(".closeMe",$main).click(function(){closeMe();});
- options.afterAjaxEvent();
- if(self!=top&&options.oneBoxMode)
- {
- $background.remove();
- $wrapper.remove();
- $('body').replaceWith($main);
- }
- break;
- case 'confirm':
- $main.html('<img src="images/confirm.gif" style="float:left;" width="60" height="50"/> '+options.content);
- var $p=$("<p class=\"pp\"></p>").appendTo($main);
- var $yes=$("<button>\u786E\u5B9A</button>").appendTo($p).click(function()
- {
- closeMe();
- options.closeEvent();
- });
- var $no=$("<button>\u53D6\u6D88</button>").appendTo($p).click(function()
- {
- closeMe();
- });
- break;
- case 'alert':
- $main.html('<img src="images/alert.gif" style="float:left;" width="60" height="50"/> '+options.content);
- var $p=$("<span></span>").appendTo($main);
- var $yes=$("<button>\u786E\u5B9A</button>").appendTo($p).click(function()
- {
- closeMe();
- options.closeEvent();
- });
- break;
- case 'get':
- case 'ajax':
- case 'url':
- $main.html("<img src=\"images/loading.gif\" /> Loading ...").load(options.content,'',function(data)
- {
- $.msgform($main);
- $(".closeMe",$main).click(function(){closeMe();});
- (options.afterAjaxEvent)(data);
- });
- break;
- case 'iframe':
- if(self!=top&&options.oneBoxMode)
- {
- $background.remove();
- $wrapper.remove();
- setTimeout(function(){window.location.href=options.content;},1);
- }
- else
- {
- $main.css({"padding":0,"height":options.height-27});
- 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);
- clearTimeout(setTimeout(function(){bindIframeMouseup(0)},200));
- });
- bindIframeMouseup($iframe);
- clearTimeout(timeOut);
- }
- break;
- }
- }
- resetPosition();
- $(window).load(resetPosition).resize(resetPosition).mouseup(dragEnd);
- if(options.closeAfter>0)autoCloseMe(options.closeAfter);msgbox();
- }
- })
|