/* * jQuery XYTipsWindow Plus @requires jQuery v1.3.2 * Dual licensed under the MIT and GPL licenses. * * Copyright (c) xinyour (http://www.xinyour.com/) * * Autor: Await * webSite: http://leotheme.cn/ * Date: 星期四 2011年05月15日 * Version: 2.8.0 ********************************************************************** * @example * $("#example").XYTipsWindow(); ********************************************************************** * XYTipsWindow 参数可配置项: * ___title : 窗口标题文字; * ___boxID : 弹出层ID(默认随机); * ___content : 内容(可选内容为){ text | id | img | swf | url | iframe}; * ___width : 窗口宽度(默认宽度为300px); * ___height : 窗口离度(默认高度为200px); * ___titleClass : 窗口标题样式名称; * ___closeID : 关闭窗口ID; * ___boxBdColor : 弹出层外层边框颜色(默认值:#E9F3FD); * ___boxBdOpacity : 弹出层外层边框透明度(默认值:1,不透明); * ___boxWrapBdColor : 弹出层内部边框颜色(默认值:#A6C9E1); * ___windowBgColor : 遮罩层背景颜色(默认值:#000000); *___windowBgOpacity : 遮罩层背景透明度(默认值:0.5); * ___time : 自动关闭等待时间;(单位毫秒); * ___drag : 拖动手柄ID[当指定___triggerID的时候禁止拖动]; * ___dragBoxOpacity : 设置窗口拖动时窗口透明度(默认值:1,不透明); * ___showTitle : 是否显示标题(布尔值 默认为true); * ___showBoxbg : 是否显示弹出层背景(布尔值 默认为true); * ___showbg : 是否显示遮罩层(布尔值 默认为false); * ___button : 数组,要显示按钮的文字; * ___callback : 回调函数,默认返回所选按钮显示的文 ; * ___offsets : 设定弹出层位置,默认居中;内置固定位置浮动:left-top(左上角);right-top(右上角);left-bottom(左下角);right-bottom(右下角);middle-top(居中置顶);middle-bottom(居中置低);left-middle(靠左居中);right-middle(靠右居中); * ___fns : 弹出窗口后执行的函数; **********************************************************************/ ;(function(){ $.XYTipsWindow=function(o){ defaults = $.extend({ ___title:"提示", ___boxID:boxID(10), ___content:"text:内容区域", ___width: "390", ___height: "210", ___titleClass: "boxTitle", ___closeID:"close", ___triggerID:"", ___boxBdColor:"none", ___boxBdOpacity:"0", ___boxWrapBdColor:"none", ___windowBgColor:"#000000", ___windowBgOpacity:"0.5", ___time:"", ___drag:"___boxTitle", ___dragBoxOpacity:"1", ___showTitle:true, ___showBoxbg:false, ___showbg:true, ___offsets:"", ___button:"", ___callback:function(){}, ___fns:function(){} },o); $.XYTipsWindow.init(defaults); }; var BOXID,isIE6 = !-[1,] && !window.XMLHttpRequest; var $XYTipsWindowarr = new Array(); var boxID = function (n){ var Str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; for (var i = 0, r =""; i < n; i++){ r += Str.charAt(Math.floor(Math.random() * 62)); }; return r; }; $.extend($.XYTipsWindow,{ //初始化 init: function (o){ BOXID = o; if ($("#"+o.___boxID).length>0){ //alert("对不起,创建弹出层失败!窗口“"+o.___boxID+"”已存在!"); alert("请先完成当前操作!"); return false; }; var $box = $("#"+o.___boxID); $.XYTipsWindow.showBox(o); $(".___closeBox",$box).die().live("click",function(){ $.XYTipsWindow.removeBox(); }).css({zIndex:"891207"}); if(o.___closeID != ""){ $("#"+o.___closeID,$box).die().live("click",function(){ $.XYTipsWindow.removeBox(); }); }; if(o.___time != "") { setTimeout($.XYTipsWindow.removeBox,o.___time); }; if(o.___showbg != "" && o.___showbg == true){ var $boxBgDom = "
"; $($boxBgDom).appendTo("body").animate({opacity:o.___windowBgOpacity},200); }; if(o.___drag != "") { $.XYTipsWindow.dragBox(o); }; if(o.___fns != "" && $.isFunction(o.___fns)){ o.___fns.call(this); }; $.XYTipsWindow.contentBox(o); if (o.___button!=""){ $.XYTipsWindow.ask(o); }; $.XYTipsWindow.keyDown(o); $.XYTipsWindow.setBoxzIndex(o); if(o.___showbg != true){ $("#"+o.___boxID).addClass("shadow"); }; $("#"+o.___boxID).die().live("mouseenter",function(){ BOXID = o; }); }, getID: function(){ return thisID = BOXID.___boxID; }, //构造弹出层 showBox: function(o) { var $titleHeight = o.___showTitle!=true ? 1 : 33, $borderHeight = o.___showTitle!=true ? 0 : 10; $boxDialogHeight = o.___button!="" ? 45 : 0; $boxDialogBorder = $boxDialogHeight == "0" ? "0" : "1"; var $width = parseInt(o.___width) > 1000 ? 1000 : parseInt(o.___width), $height = parseInt(o.___height) > 550 ? 550 : parseInt(o.___height); var $boxDom = "
"; $boxDom += "
"; $boxDom += "

关闭
"; $boxDom += "
"; $boxDom += "
"; $boxDom += "
"; $boxDom += "
"; $boxDom += ""; $boxDom += "
"; $($boxDom).appendTo("body"); var $box = $("#"+o.___boxID); $box.css({ position:"relative", width:$width+2+"px", height:$height+$titleHeight+$borderHeight+$boxDialogHeight+"px", zIndex: "891208" }); var $iframe = $("iframe",$box); $iframe.css({ width:$width+2+"px", height:$height+$titleHeight+$borderHeight+$boxDialogHeight+1+"px" }); var $boxWrap = $(".___boxWrap",$box); $boxWrap.css({ position:"relative", top:"0", margin:"0 auto", width:$width+2+"px", height:$height+$titleHeight+$boxDialogHeight+3+7+"px", overflow:"hidden", border:"0", borderWidth:"0", zIndex: "20590" }); var $boxContent = $(".___boxContent",$box); $boxContent.css({ position: "relative", width:$width+"px", height:$height+"px", padding:"0", borderWidth:"0 1px 1px", borderStyle:"solid", //borderColor:o.___boxWrapBdColor, borderColor:"#cdcdcd", //overflow: "auto", backgroundColor:"#ffffff" }); var $boxDialog = $(".___boxDialog",$box); $boxDialog.css({ width:$width+"px", height: $boxDialogHeight+"px", borderWidth:$boxDialogBorder+"px", borderStyle:"solid", borderColor:o.___boxWrapBdColor, borderTop:"none", textAlign:"right" }); var $boxBg = $(".___boxBd",$box); $boxBg.css({ position: "absolute", width:$width+12+"px", height:$height+$titleHeight+$borderHeight+$boxDialogHeight+1+"px", left: "0", top: "0", opacity: o.___boxBdOpacity, background:o.___boxBdColor, zIndex: "10715" }); var $title = $(".___boxTitle>h3",$box); $title.html(o.___title); $title.parent().css({ position: "relative", width:$width+"px", borderColor:o.___boxWrapBdColor }); if(o.___titleClass != ""){ $title.parent().addClass(o.___titleClass); $title.parent().find("span").hover(function(){ $(this).addClass("hover"); },function(){ $(this).removeClass("hover"); }); }; if(o.___showTitle!=true){$(".___boxTitle",$box).remove();} if(o.___showBoxbg!=true){ $(".___boxBd",$box).remove(); $box.css({ width:$width+2+"px", height:$height+$titleHeight+$boxDialogHeight+1+"px" }); $boxWrap.css({left:"0",top:"0"}); }; //定位弹出层 var TOP = -1; $.XYTipsWindow.getDomPosition(o); var $location = o.___offsets; var $wrap = $("
"); var est = isIE6 ? (o.___triggerID!="" ? 0 : document.documentElement.scrollTop) : ""; if(o.___offsets=="" || o.___offsets.constructor == String){ switch($location){ case("left-top")://左上角 $location={left:"0px",top:"0px"+est}; TOP=0; break; case("left-bottom")://左下角 $location={left:"0px",bottom:"0px"}; break; case("right-top")://右上角 $location={right:"0px",top:"0px"+est}; TOP=0; break; case("right-bottom")://右下角 $location={right:"0px",bottom:"0px"}; break; case("middle-top")://居中置顶 $location={left:"50%",marginLeft:-parseInt($box.width()/2)+"px",top:"0px"+est}; TOP=0; break; case("middle-bottom")://居中置低 $location={left:"50%",marginLeft:-parseInt($box.width()/2)+"px",bottom:"0px"}; break; case("left-middle")://左边居中 $location={left:"0px",top:"50%"+est,marginTop:-parseInt($box.height()/2)+"px"+est}; TOP=$getPageSize[1]/2-$box.height()/2; break; case("right-middle")://右边居中 $location={right:"0px",top:"50%"+est,marginTop:-parseInt($box.height()/2)+"px"+est}; TOP=$getPageSize[1]/2-$box.height()/2; break; default://默认为居中 $location={left:"50%",marginLeft:-parseInt($box.width()/2)+"px",top:"50%"+est,marginTop:-parseInt($box.height()/2)+"px"+est}; TOP=$getPageSize[1]/2-$box.height()/2; break; }; }else{ var str=$location.top; $location.top = $location.top+est; if (typeof(str)!= 'undefined'){ str=str.replace("px",""); TOP=str; }; }; if (o.___triggerID!="") { var $offset = $("#"+o.___triggerID).offset(); var triggerID_W = $("#"+o.___triggerID).outerWidth(),triggerID_H = $("#"+o.___triggerID).outerHeight(); var triggerID_Left = $offset.left,triggerID_Top = $offset.top; var vL = $location.left,vT = $location.top; if (typeof(vL)!= 'undefined' || typeof(vT)!= 'undefined' ){ vL = parseInt(vL.replace("px","")); vT = parseInt(vT.replace("px","")); }; var ___left = vL >= 0 ? parseInt(vL)+triggerID_Left : parseInt(vL)+triggerID_Left-$getPageSize[2]; var ___top = vT >= 0 ? parseInt(vT)+triggerID_Top : parseInt(vT)+triggerID_Top-$getPageSize[3]; $location = {left:___left+"px",top:___top+"px"}; }; if (isIE6){ if (o.___triggerID=="") { if (TOP>=0){ $.XYTipsWindow.addStyle(".ui_fixed_"+o.___boxID+"{width:100%;height:100%;position:absolute;left:expression(documentElement.scrollLeft+documentElement.clientWidth-this.offsetWidth);top:expression(documentElement.scrollTop+"+TOP+")}"); $wrap=$("
"); $box.appendTo($wrap); $("body").append($wrap); $("."+o.___boxID+"IE6FIXED").css($location).css({ position:"absolute", width:$width+2+"px", height:$height+$titleHeight+$borderHeight+$boxDialogHeight+"px", zIndex: "891208" }).addClass("ui_fixed_"+o.___boxID); }else{ $.XYTipsWindow.addStyle(".ui_fixed2_"+o.___boxID+"{width:100%;height:100%;position:absolute;left:expression(documentElement.scrollLeft+documentElement.clientWidth-this.offsetWidth);top:expression(documentElement.scrollTop+documentElement.clientHeight-this.offsetHeight)}"); $wrap=$("
"); $box.appendTo($wrap); $("body").append($wrap); $("."+o.___boxID+"IE6FIXED").css($location).css({ position:"absolute", width:$width+2+"px", height:$height+$titleHeight+$borderHeight+$boxDialogHeight+"px", zIndex: "891208" }).addClass("ui_fixed2_"+o.___boxID); }; $("body").css("background-attachment","fixed").css("background-image","url(n1othing.txt)"); }else{ $wrap.css({ position:"absolute", left:___left+"px", top:___top+"px", width:$width+2+"px", height:$height+$titleHeight+$borderHeight+$boxDialogHeight+"px", zIndex: "891208" }); }; }else{ $wrap.css($location).css({ position:"fixed", width:$width+2+"px", height:$height+$titleHeight+$borderHeight+$boxDialogHeight+"px", zIndex: "891208" }); if (o.___triggerID!="") {$wrap.css({position:"absolute"})}; $("body").append($wrap); $box.appendTo($wrap); }; }, //装载弹出层内容 contentBox: function (o) { var $box = $("#"+o.___boxID); var $width = parseInt(o.___width) > 1000 ? 1000 : parseInt(o.___width), $height = parseInt(o.___height) > 550 ? 550 : parseInt(o.___height); var $contentID = $(".___boxContent",$box); $contentType = o.___content.substring(0,o.___content.indexOf(":")); $content = o.___content.substring(o.___content.indexOf(":")+1,o.___content.length); $.ajaxSetup({global: false}); switch($contentType) { case "text": $contentID.html($content); break; case "id": $("#"+$content).children().appendTo($contentID); break; case "img": $.ajax({ beforeSend:function() { $contentID.html("

loading...

"); }, error:function(){ $contentID.html("

加载数据出错...

"); }, success:function(html){ $contentID.html(""); } }); break; case "swf": $.ajax({ beforeSend:function() { $contentID.html("

loading...

"); }, error:function(){ $contentID.html("

加载数据出错...

"); }, success:function(html){ $contentID.html("

Alternative content

\"Get

"); $("#"+o.___boxID+"swf").css({ position:"absolute", left:"0", top:"0", textAlign:"center" }); } }); break; case "url": var contentDate=$content.split("?"); $.ajax({ beforeSend:function() { $contentID.html("

loading...

"); }, type:contentDate[0], url:contentDate[1], data:contentDate[2], error:function(){ $contentID.html("

加载数据出错...

"); }, success:function(html){ $contentID.html(html); } }); break; case "iframe": $contentID.css({overflowY:"hidden"}); $.ajax({ beforeSend:function() { $contentID.html("

loading...

"); }, error:function(){ $contentID.html("

加载数据出错...

"); }, success:function(html){ $contentID.html(""); } }); }; }, //对话模式 ask:function(o){ var $box = $("#"+o.___boxID); $boxDialog = $(".___boxDialog",$box); if (o.___button!=""){ var map = {}, answerStrings = []; if (o.___button instanceof Array) { for (var i = 0; i < o.___button.length; i++) { map[o.___button[i]] = o.___button[i]; answerStrings.push(o.___button[i]); }; } else { for (var k in o.___button) { map[o.___button[k]] = k; answerStrings.push(o.___button[k]); }; }; $boxDialog.html($.map(answerStrings, function(v) { return ""; }).join(' ')); $(".dialogBtn", $boxDialog).hover(function(){ $(this).addClass("hover"); },function(){ $(this).removeClass("hover"); }).click(function() { var $this = this; if(o.___callback != "" && $.isFunction(o.___callback)) { //设置回调函数返回值很简单,就是回调函数名后加括号括住的返回值就可以了。 o.___callback(map[$this.value]); }; $.XYTipsWindow.removeBox(o); }); }; }, //获取要吸附的ID的left和top值并重新计算弹出层left和top值 getDomPosition: function (o) { var $box = $("#"+o.___boxID); var cw=document.documentElement.clientWidth,ch=document.documentElement.clientHeight; var sw = $box.outerWidth(),sh = $box.outerHeight(); var $soffset = $box.offset(),sl = $soffset.left,st = $soffset.top; $getPageSize = new Array(); $getPageSize.push(cw,ch,sw,sh,sl,st); }, //设置窗口的zIndex setBoxzIndex: function (o) { $XYTipsWindowarr.push(document.getElementById(o.___boxID+"parent"));//存储窗口到数组 var ___event = "mousedown" || "click"; var $box = $("#"+o.___boxID+"parent"); $box.die().live("click",function(){ for(var i=0; i < $XYTipsWindowarr.length; i++){ $XYTipsWindowarr[i].style.zIndex = 891208+i*10; $(".XYTipsWindowBg").each(function() { var zx = $(this).prev("div").css("z-index"); $(this).css("z-index",zx-1); }); }; }); }, //写入CSS样式 addStyle : function(s) { var T = this.style; if(!T){ T = this.style = document.createElement('style'); T.setAttribute('type', 'text/css'); document.getElementsByTagName('head')[0].appendChild(T); }; T.styleSheet && (T.styleSheet.cssText += s) || T.appendChild(document.createTextNode(s)); }, //绑定拖拽 dragBox: function (o){ var $moveX = 0,$moveY = 0, drag = false; var $ID = $("#"+o.___boxID); $Handle = $("."+o.___drag,$ID); $Handle.mouseover(function() { if(o.___triggerID!=""){ $(this).css("cursor","default"); }else{ $(this).css("cursor","move"); }; }); $Handle.mousedown(function(e) { drag = o.___triggerID!="" ? false : true; if (o.___dragBoxOpacity) { if (o.___boxBdOpacity!="1") { $ID.children("div").css("opacity",o.___dragBoxOpacity); $ID.children("div.___boxBd").css("opacity",o.___boxBdOpacity); }else{ $ID.children("div").css("opacity",o.___dragBoxOpacity); }; }; e = window.event?window.event:e; var ___ID = document.getElementById(o.___boxID); $moveX = e.clientX - ___ID.offsetLeft; $moveY = e.clientY - ___ID.offsetTop; $(document).mousemove(function(e) { if (drag) { e = window.event?window.event:e; window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty(); var ___x = e.clientX - $moveX; var ___y = e.clientY - $moveY; $(___ID).css({ left : ___x, top : ___y }); }; }); $(document).mouseup(function(){ drag = false; if (o.___dragBoxOpacity) { if (o.___boxBdOpacity!="1") { $ID.children("div").css("opacity","1"); $ID.children("div.___boxBd").css("opacity",o.___boxBdOpacity); }else{ $ID.children("div").css("opacity","1"); }; }; }); }); }, //关闭弹出层 removeBox: function (){ var $box = $("#"+BOXID.___boxID); var $boxbg = $(".XYTipsWindowBg"); var len = $boxbg.length; if($box != null || $boxbg != null){ var $contentID = $(".___boxContent",$box); $contentType = BOXID.___content.substring(0,BOXID.___content.indexOf(":")); $content = BOXID.___content.substring(BOXID.___content.indexOf(":")+1,BOXID.___content.length); if ($contentType == "id") { $contentID.children().appendTo($("#"+$content)); $box.parent().removeAttr("style").remove(); $boxbg.eq(len-1).animate({opacity:"0"},200,function(){$(this).remove();}); }else{ $box.parent().removeAttr("style").remove(); $boxbg.eq(len-1).animate({opacity:"0"},200,function(){$(this).remove();}); }; }; }, //健盘事件,当按Esc的时候关闭弹出层 keyDown: function(o) { document.onkeydown = function(e) { e = e || event; if(e.keyCode == 27){ $(".audit-letter").hide(); $.XYTipsWindow.removeBox(); }; }; } }); })(jQuery);