/*! * artDialog 4.1.5 * Date: 2012-02-25 22:12 * http://code.google.com/p/artdialog/ * (c) 2009-2012 TangBin * * This is licensed under the GNU LGPL, version 2.1 or later. * For details, see: http://creativecommons.org/licenses/LGPL/2.1/ */ ;(function ($, window, undefined) { $.noop = $.noop || function () {}; // jQuery 1.3.2 var _box, _thisScript, _skin, _path, _count = 0, _$window = $(window), _$document = $(document), _$html = $('html'), _elem = document.documentElement, _isIE6 = window.VBArray && !window.XMLHttpRequest, _isMobile = 'createTouch' in document && !('onmousemove' in _elem) || /(iPhone|iPad|iPod)/i.test(navigator.userAgent), _expando = 'artDialog' + + new Date; var artDialog = function (config, ok, cancel) { config = config || {}; if (typeof config === 'string' || config.nodeType === 1) { config = {content: config, fixed: !_isMobile}; }; var api, defaults = artDialog.defaults, elem = config.follow = this.nodeType === 1 && this || config.follow; // 鍚堝苟榛樿閰嶇疆 for (var i in defaults) { if (config[i] === undefined) config[i] = defaults[i]; }; // 鍏煎v4.1.0涔嬪墠鐨勫弬鏁帮紝鏈潵鐗堟湰灏嗗垹闄ゆ $.each({ok:"yesFn",cancel:"noFn",close:"closeFn",init:"initFn",okVal:"yesText",cancelVal:"noText"}, function(i,o){config[i]=config[i]!==undefined?config[i]:config[o]}); // 杩斿洖璺熼殢妯″紡鎴栭噸澶嶅畾涔夌殑ID if (typeof elem === 'string') elem = $(elem)[0]; config.id = elem && elem[_expando + 'follow'] || config.id || _expando + _count; api = artDialog.list[config.id]; if (elem && api) return api.follow(elem).zIndex().focus(); if (api) return api.zIndex().focus(); // 鐩墠涓绘祦绉诲姩璁惧瀵筬ixed鏀寔涓嶅ソ if (_isMobile) config.fixed = false; // 鎸夐挳闃熷垪 if (!$.isArray(config.button)) { config.button = config.button ? [config.button] : []; }; if (ok !== undefined) config.ok = ok; if (cancel !== undefined) config.cancel = cancel; config.ok && config.button.push({ name: config.okVal, callback: config.ok, focus: true }); config.cancel && config.button.push({ name: config.cancelVal, callback: config.cancel }); // zIndex鍏ㄥ眬閰嶇疆 artDialog.defaults.zIndex = config.zIndex; _count ++; return artDialog.list[config.id] = _box ? _box._init(config) : new artDialog.fn._init(config); }; artDialog.fn = artDialog.prototype = { version: '4.1.5', closed: false, _init: function (config) { var that = this, DOM, icon = config.icon, iconBg = icon && (_isIE6 ? {png: 'icons/' + icon + '.png'} : { backgroundImage: "url('" + basePath + "/static/base/lib/artdialog/skins/icons/" + icon + ".png')" }); that.config = config; that.DOM = DOM = that.DOM || that._getDOM(); DOM.wrap.addClass(config.skin); DOM.close[config.cancel === false ? 'hide' : 'show'](); DOM.icon[0].style.display = icon ? '' : 'none'; DOM.iconBg.css(iconBg || {background: 'none'}); DOM.se.css('cursor', config.resize ? 'se-resize' : 'auto'); DOM.title.css('cursor', config.drag ? 'move' : 'auto'); DOM.content.css('padding', config.padding); that[config.show ? 'show' : 'hide'](true) that.button(config.button) .title(config.title) .content(config.content, true) .size(config.width, config.height) .time(config.time); config.follow ? that.follow(config.follow) : that.position(config.left, config.top); that.zIndex().focus(); config.lock && that.lock(); that._addEvent(); that._ie6PngFix(); _box = null; config.init && config.init.call(that, window); return that; }, /** * 璁剧疆鍐呭 * @param {String, HTMLElement} 鍐呭 (鍙€? * @return {this, HTMLElement} 濡傛灉鏃犲弬鏁板垯杩斿洖鍐呭瀹瑰櫒DOM瀵硅薄 */ content: function (msg) { var prev, next, parent, display, that = this, DOM = that.DOM, wrap = DOM.wrap[0], width = wrap.offsetWidth, height = wrap.offsetHeight, left = parseInt(wrap.style.left), top = parseInt(wrap.style.top), cssWidth = wrap.style.width, $content = DOM.content, content = $content[0]; that._elemBack && that._elemBack(); wrap.style.width = 'auto'; if (msg === undefined) return content; if (typeof msg === 'string') { $content.html(msg); } else if (msg && msg.nodeType === 1) { // 璁╀紶鍏ョ殑鍏冪礌鍦ㄥ璇濇鍏抽棴鍚庡彲浠ヨ繑鍥炲埌鍘熸潵鐨勫湴鏂 display = msg.style.display; prev = msg.previousSibling; next = msg.nextSibling; parent = msg.parentNode; that._elemBack = function () { if (prev && prev.parentNode) { prev.parentNode.insertBefore(msg, prev.nextSibling); } else if (next && next.parentNode) { next.parentNode.insertBefore(msg, next); } else if (parent) { parent.appendChild(msg); }; msg.style.display = display; that._elemBack = null; }; $content.html(''); content.appendChild(msg); msg.style.display = 'block'; }; // 鏂板鍐呭鍚庤皟鏁翠綅缃 if (!arguments[1]) { if (that.config.follow) { that.follow(that.config.follow); } else { width = wrap.offsetWidth - width; height = wrap.offsetHeight - height; left = left - width / 2; top = top - height / 2; wrap.style.left = Math.max(left, 0) + 'px'; wrap.style.top = Math.max(top, 0) + 'px'; }; if (cssWidth && cssWidth !== 'auto') { wrap.style.width = wrap.offsetWidth + 'px'; }; that._autoPositionType(); }; that._ie6SelectFix(); that._runScript(content); return that; }, /** * 璁剧疆鏍囬 * @param {String, Boolean} 鏍囬鍐呭. 涓篺alse鍒欓殣钘忔爣棰樻爮 * @return {this, HTMLElement} 濡傛灉鏃犲弬鏁板垯杩斿洖鍐呭鍣―OM瀵硅薄 */ title: function (text) { var DOM = this.DOM, wrap = DOM.wrap, title = DOM.title, className = 'aui_state_noTitle'; if (text === undefined) return title[0]; if (text === false) { title.hide().html(''); wrap.addClass(className); } else { title.show().html(text || ''); wrap.removeClass(className); }; return this; }, /** * 浣嶇疆(鐩稿浜庡彲瑙嗗尯鍩? * @param {Number, String} * @param {Number, String} */ position: function (left, top) { var that = this, config = that.config, wrap = that.DOM.wrap[0], isFixed = _isIE6 ? false : config.fixed, ie6Fixed = _isIE6 && that.config.fixed, docLeft = _$document.scrollLeft(), docTop = _$document.scrollTop(), dl = isFixed ? 0 : docLeft, dt = isFixed ? 0 : docTop, ww = _$window.width(), wh = _$window.height(), ow = wrap.offsetWidth, oh = wrap.offsetHeight, style = wrap.style; if (left || left === 0) { that._left = left.toString().indexOf('%') !== -1 ? left : null; left = that._toNumber(left, ww - ow); if (typeof left === 'number') { left = ie6Fixed ? (left += docLeft) : left + dl; style.left = Math.max(left, dl) + 'px'; } else if (typeof left === 'string') { style.left = left; }; }; if (top || top === 0) { that._top = top.toString().indexOf('%') !== -1 ? top : null; top = that._toNumber(top, wh - oh); if (typeof top === 'number') { top = ie6Fixed ? (top += docTop) : top + dt; style.top = Math.max(top, dt) + 'px'; } else if (typeof top === 'string') { style.top = top; }; }; if (left !== undefined && top !== undefined) { that._follow = null; that._autoPositionType(); }; return that; }, /** * 灏哄 * @param {Number, String} 瀹藉害 * @param {Number, String} 楂樺害 */ size: function (width, height) { var maxWidth, maxHeight, scaleWidth, scaleHeight, that = this, config = that.config, DOM = that.DOM, wrap = DOM.wrap, main = DOM.main, wrapStyle = wrap[0].style, style = main[0].style; if (width) { that._width = width.toString().indexOf('%') !== -1 ? width : null; maxWidth = _$window.width() - wrap[0].offsetWidth + main[0].offsetWidth; scaleWidth = that._toNumber(width, maxWidth); width = scaleWidth; if (typeof width === 'number') { wrapStyle.width = 'auto'; style.width = Math.max(that.config.minWidth, width) + 'px'; wrapStyle.width = wrap[0].offsetWidth + 'px'; // 闃叉鏈畾涔夊搴︾殑琛ㄦ牸閬囧埌娴忚鍣ㄥ彸杈硅竟鐣屼几缂 } else if (typeof width === 'string') { style.width = width; width === 'auto' && wrap.css('width', 'auto'); }; }; if (height) { that._height = height.toString().indexOf('%') !== -1 ? height : null; maxHeight = _$window.height() - wrap[0].offsetHeight + main[0].offsetHeight; scaleHeight = that._toNumber(height, maxHeight); height = scaleHeight; if (typeof height === 'number') { style.height = Math.max(that.config.minHeight, height) + 'px'; } else if (typeof height === 'string') { style.height = height; }; }; that._ie6SelectFix(); return that; }, /** * 璺熼殢鍏冪礌 * @param {HTMLElement, String} */ follow: function (elem) { var $elem, that = this, config = that.config; if (typeof elem === 'string' || elem && elem.nodeType === 1) { $elem = $(elem); elem = $elem[0]; }; // 闅愯棌鍏冪礌涓嶅彲鐢 if (!elem || !elem.offsetWidth && !elem.offsetHeight) { return that.position(that._left, that._top); }; var expando = _expando + 'follow', winWidth = _$window.width(), winHeight = _$window.height(), docLeft = _$document.scrollLeft(), docTop = _$document.scrollTop(), offset = $elem.offset(), width = elem.offsetWidth, height = elem.offsetHeight, isFixed = _isIE6 ? false : config.fixed, left = isFixed ? offset.left - docLeft : offset.left, top = isFixed ? offset.top - docTop : offset.top, wrap = that.DOM.wrap[0], style = wrap.style, wrapWidth = wrap.offsetWidth, wrapHeight = wrap.offsetHeight, setLeft = left - (wrapWidth - width) / 2, setTop = top + height, dl = isFixed ? 0 : docLeft, dt = isFixed ? 0 : docTop; setLeft = setLeft < dl ? left : (setLeft + wrapWidth > winWidth) && (left - wrapWidth > dl) ? left - wrapWidth + width : setLeft; setTop = (setTop + wrapHeight > winHeight + dt) && (top - wrapHeight > dt) ? top - wrapHeight : setTop; style.left = setLeft + 'px'; style.top = setTop + 'px'; that._follow && that._follow.removeAttribute(expando); that._follow = elem; elem[expando] = config.id; that._autoPositionType(); return that; }, /** * 鑷畾涔夋寜閽 * @example button({ name: 'login', callback: function () {}, disabled: false, focus: true }, .., ..) */ button: function () { var that = this, ags = arguments, DOM = that.DOM, buttons = DOM.buttons, elem = buttons[0], strongButton = 'aui_state_highlight', listeners = that._listeners = that._listeners || {}, list = $.isArray(ags[0]) ? ags[0] : [].slice.call(ags); if (ags[0] === undefined) return elem; $.each(list, function (i, val) { var name = val.name, isNewButton = !listeners[name], button = !isNewButton ? listeners[name].elem : document.createElement('button'); if (!listeners[name]) listeners[name] = {}; if (val.callback) listeners[name].callback = val.callback; if (val.className) button.className = val.className; if (val.focus) { that._focus && that._focus.removeClass(strongButton); that._focus = $(button).addClass(strongButton); that.focus(); }; // Internet Explorer 鐨勯粯璁ょ被鍨嬫槸 "button"锛 // 鑰屽叾浠栨祻瑙堝櫒涓紙鍖呮嫭 W3C 瑙勮寖锛夌殑榛樿鍊兼槸 "submit" // @see http://www.w3school.com.cn/tags/att_button_type.asp button.setAttribute('type', 'button'); button[_expando + 'callback'] = name; button.disabled = !!val.disabled; if (isNewButton) { button.innerHTML = name; listeners[name].elem = button; elem.appendChild(button); }; }); buttons[0].style.display = list.length ? '' : 'none'; that._ie6SelectFix(); return that; }, /** 鏄剧ず瀵硅瘽妗 */ show: function () { this.DOM.wrap.show(); !arguments[0] && this._lockMaskWrap && this._lockMaskWrap.show(); return this; }, /** 闅愯棌瀵硅瘽妗 */ hide: function () { this.DOM.wrap.hide(); !arguments[0] && this._lockMaskWrap && this._lockMaskWrap.hide(); return this; }, /*鏈€澶у寲*/ max: function () { var that = this, DOM = that.DOM; var border = jQuery(DOM.content[0]); // 鑾峰彇 artDialog 绐楀彛鐨 iframe 瀵硅薄 var max = jQuery(DOM.max[0]); // 鑾峰彇鏈€澶у寲鎸夐挳瀵硅薄 if (max.attr('state') == 'false') { // 鍒ゆ柇鏄惁宸叉渶澶у寲 max.attr('_width', border.width()); // 璁板綍褰撳墠绐楀彛瀹氫箟鐨勫搴 max.attr('_height', border.height()); // 璁板綍褰撳墠绐楀彛瀹氫箟鐨勯珮搴 max.attr('state', 'true'); // 淇敼鏈€澶у寲鎸夐挳鐘舵€佷负鐪 this.position(0, 0); // 灏嗙獥鍙gЩ鍔ㄥ埌宸︿笂瑙 this.size('100%', '100%'); // 淇敼绐楀彛澶у皬 } else { jQuery(DOM.border[0]).parent().parent().css('width', 'auto'); // 淇敼绐楀彛鏈€澶栧眰 div 瀹氫箟鐨勫搴︼紝杩欎釜 div 鏄獥鍙e灞傜殑鏍峰紡绐楀彛锛屾瘮鎴戜滑瀹氫箟鐨勭獥鍙e涓 30 鍍忕礌锛屾牴鎹娇鐢ㄧ殑鐨偆涓嶅悓鏈夋墍鍖哄埆 if(max.attr('_width')<='150'){ // 灏忎簬150鐨勮涓簍ips寮圭獥 this.size('auto','auto'); }else{ this.size(max.attr('_width') + 'px', max.attr('_height') + 'px'); // 灏嗙獥鍙eぇ灏忔寜鐓у凡璁板綍鐨勫鍜岄珮杩涜璁剧疆 } this.position('50%', '50%'); // 灏嗙獥鍙e眳涓 max.attr('state', 'false'); // 璁剧疆鏈€澶у寲鐘舵€佷负鍋 max.removeAttr('_width'); // 鍒犻櫎宸茶褰曠殑瀹 max.removeAttr('_height'); // 鍒犻櫎宸茶褰曠殑楂 } return that; }, /** 鍏抽棴瀵硅瘽妗 */ close: function () { if (this.closed) return this; // 闈炵┖鍒ゆ柇 if(this.config === undefined){ return this; } var that = this, DOM = that.DOM, wrap = DOM.wrap, list = artDialog.list, fn = that.config.close, follow = that.config.follow; that.time(); if (typeof fn === 'function' && fn.call(that, window) === false) { return that; }; that.unlock(); //閲嶇疆鏈€澶у寲鐨剆tate var max = jQuery(DOM.max[0]); // 鑾峰彇鏈€澶у寲鎸夐挳瀵硅薄 max.attr('state', 'false'); // 璁剧疆鏈€澶у寲鐘舵€佷负鍋 max.removeAttr('_width'); // 鍒犻櫎宸茶褰曠殑瀹 max.removeAttr('_height'); // 鍒犻櫎宸茶褰曠殑楂 // 缃┖鍐呭 that._elemBack && that._elemBack(); wrap[0].className = wrap[0].style.cssText = ''; DOM.title.html(''); DOM.content.html(''); DOM.buttons.html(''); if (artDialog.focus === that) artDialog.focus = null; if (follow) follow.removeAttribute(_expando + 'follow'); delete list[that.config.id]; that._removeEvent(); that.hide(true)._setAbsolute(); // 娓呯┖闄his.DOM涔嬪涓存椂瀵硅薄锛屾仮澶嶅埌鍒濆鐘舵€侊紝浠ヤ究浣跨敤鍗曚緥妯″紡 for (var i in that) { if (that.hasOwnProperty(i) && i !== 'DOM') delete that[i]; }; // 绉婚櫎HTMLElement鎴栭噸鐢 _box ? wrap.remove() : _box = that; return that; }, /** * 瀹氭椂鍏抽棴 * @param {Number} 鍗曚綅涓虹, 鏃犲弬鏁板垯鍋滄璁℃椂鍣 */ time: function (second) { var that = this, cancel = that.config.cancelVal, timer = that._timer; timer && clearTimeout(timer); if (second) { that._timer = setTimeout(function(){ that._click(cancel); }, 1000 * second); }; return that; }, /** 璁剧疆鐒︾偣 */ focus: function () { try { var elem = this._focus && this._focus[0] || this.DOM.close[0]; elem && elem.focus(); } catch (e) {}; // IE瀵逛笉鍙鍏冪礌璁剧疆鐒︾偣浼氭姤閿 return this; }, /** 缃《瀵硅瘽妗 */ zIndex: function () { var that = this, DOM = that.DOM, wrap = DOM.wrap, top = artDialog.focus, index = artDialog.defaults.zIndex ++; // 璁剧疆鍙犲姞楂樺害 wrap.css('zIndex', index); that._lockMask && that._lockMask.css('zIndex', index - 1); // 璁剧疆鏈€楂樺眰鐨勬牱寮 top && top.DOM.wrap.removeClass('aui_state_focus'); artDialog.focus = that; wrap.addClass('aui_state_focus'); return that; }, /** 璁剧疆灞忛攣 */ lock: function () { if (this._lock) return this; var that = this, index = artDialog.defaults.zIndex - 1, wrap = that.DOM.wrap, config = that.config, docWidth = _$document.width(), docHeight = _$document.height(), lockMaskWrap = that._lockMaskWrap || $(document.body.appendChild(document.createElement('div'))), lockMask = that._lockMask || $(lockMaskWrap[0].appendChild(document.createElement('div'))), domTxt = '(document).documentElement', sizeCss = _isMobile ? 'width:' + docWidth + 'px;height:' + docHeight + 'px' : 'width:100%;height:100%', ie6Css = _isIE6 ? 'position:absolute;left:expression(' + domTxt + '.scrollLeft);top:expression(' + domTxt + '.scrollTop);width:expression(' + domTxt + '.clientWidth);height:expression(' + domTxt + '.clientHeight)' : ''; that.zIndex(); wrap.addClass('aui_state_lock'); lockMaskWrap[0].style.cssText = sizeCss + ';position:fixed;z-index:' + index + ';top:0;left:0;overflow:hidden;' + ie6Css; lockMask[0].style.cssText = 'height:100%;background:' + config.background + ';filter:alpha(opacity=0);opacity:0'; // 璁㊣E6閿佸睆閬僵鑳藉鐩栦綇涓嬫媺鎺т欢 if (_isIE6) lockMask.html( ''); lockMask.stop(); lockMask.bind('click', function () { that._reset(); }).bind('dblclick', function () { that._click(that.config.cancelVal); }); if (config.duration === 0) { lockMask.css({opacity: config.opacity}); } else { lockMask.animate({opacity: config.opacity}, config.duration); }; that._lockMaskWrap = lockMaskWrap; that._lockMask = lockMask; that._lock = true; return that; }, /** 瑙e紑灞忛攣 */ unlock: function () { var that = this, lockMaskWrap = that._lockMaskWrap, lockMask = that._lockMask; if (!that._lock) return that; var style = lockMaskWrap[0].style; var un = function () { if (_isIE6) { style.removeExpression('width'); style.removeExpression('height'); style.removeExpression('left'); style.removeExpression('top'); }; style.cssText = 'display:none'; _box && lockMaskWrap.remove(); }; lockMask.stop().unbind(); that.DOM.wrap.removeClass('aui_state_lock'); if (!that.config.duration) {// 鍙栨秷鍔ㄧ敾锛屽揩閫熷叧闂 un(); } else { lockMask.animate({opacity: 0}, that.config.duration, un); }; that._lock = false; return that; }, // 鑾峰彇鍏冪礌 _getDOM: function () { var wrap = document.createElement('div'), body = document.body; wrap.style.cssText = 'position:absolute;left:0;top:0'; wrap.innerHTML = artDialog._templates; body.insertBefore(wrap, body.firstChild); var name, i = 0, DOM = {wrap: $(wrap)}, els = wrap.getElementsByTagName('*'), elsLen = els.length; for (; i < elsLen; i ++) { name = els[i].className.split('aui_')[1]; if (name) DOM[name] = $(els[i]); }; return DOM; }, // px涓?鍗曚綅杞崲鎴愭暟鍊 (鐧惧垎姣斿崟浣嶆寜鐓ф渶澶у€兼崲绠? // 鍏朵粬鐨勫崟浣嶈繑鍥炲師鍊 _toNumber: function (thisValue, maxValue) { if (!thisValue && thisValue !== 0 || typeof thisValue === 'number') { return thisValue; }; var last = thisValue.length - 1; if (thisValue.lastIndexOf('px') === last) { thisValue = parseInt(thisValue); } else if (thisValue.lastIndexOf('%') === last) { thisValue = parseInt(maxValue * thisValue.split('%')[0] / 100); }; return thisValue; }, // 璁㊣E6 CSS鏀寔PNG鑳屾櫙 _ie6PngFix: _isIE6 ? function () { var i = 0, elem, png, pngPath, runtimeStyle, path = artDialog.defaults.path + '/skins/', list = this.DOM.wrap[0].getElementsByTagName('*'); for (; i < list.length; i ++) { elem = list[i]; png = elem.currentStyle['png']; if (png) { pngPath = path + png; runtimeStyle = elem.runtimeStyle; runtimeStyle.backgroundImage = 'none'; runtimeStyle.filter = "progid:DXImageTransform.Microsoft." + "AlphaImageLoader(src='" + pngPath + "',sizingMethod='crop')"; }; }; } : $.noop, // 寮哄埗瑕嗙洊IE6涓嬫媺鎺т欢 _ie6SelectFix: _isIE6 ? function () { var $wrap = this.DOM.wrap, wrap = $wrap[0], expando = _expando + 'iframeMask', iframe = $wrap[expando], width = wrap.offsetWidth, height = wrap.offsetHeight; width = width + 'px'; height = height + 'px'; if (iframe) { iframe.style.width = width; iframe.style.height = height; } else { iframe = wrap.appendChild(document.createElement('iframe')); $wrap[expando] = iframe; iframe.src = 'about:blank'; iframe.style.cssText = 'position:absolute;z-index:-1;left:0;top:0;' + 'filter:alpha(opacity=0);width:' + width + ';height:' + height; }; } : $.noop, // 瑙f瀽HTML鐗囨涓嚜瀹氫箟绫诲瀷鑴氭湰锛屽叾this鎸囧悜artDialog鍐呴儴 // _runScript: function (elem) { var fun, i = 0, n = 0, tags = elem.getElementsByTagName('script'), length = tags.length, script = []; for (; i < length; i ++) { if (tags[i].type === 'text/dialog') { script[n] = tags[i].innerHTML; n ++; }; }; if (script.length) { script = script.join(''); fun = new Function(script); fun.call(this); }; }, // 鑷姩鍒囨崲瀹氫綅绫诲瀷 _autoPositionType: function () { this[this.config.fixed ? '_setFixed' : '_setAbsolute']();///////////// }, // 璁剧疆闈欐瀹氫綅 // IE6 Fixed _setFixed: (function () { _isIE6 && $(function () { var bg = 'backgroundAttachment'; if (_$html.css(bg) !== 'fixed' && $('body').css(bg) !== 'fixed') { _$html.css({ zoom: 1,// 閬垮厤鍋跺皵鍑虹幇body鑳屾櫙鍥剧墖寮傚父鐨勬儏鍐 backgroundImage: 'url(about:blank)', backgroundAttachment: 'fixed' }); }; }); return function () { var $elem = this.DOM.wrap, style = $elem[0].style; if (_isIE6) { var left = parseInt($elem.css('left')), top = parseInt($elem.css('top')), sLeft = _$document.scrollLeft(), sTop = _$document.scrollTop(), txt = '(document.documentElement)'; this._setAbsolute(); style.setExpression('left', 'eval(' + txt + '.scrollLeft + ' + (left - sLeft) + ') + "px"'); style.setExpression('top', 'eval(' + txt + '.scrollTop + ' + (top - sTop) + ') + "px"'); } else { style.position = 'fixed'; }; }; }()), // 璁剧疆缁濆瀹氫綅 _setAbsolute: function () { var style = this.DOM.wrap[0].style; if (_isIE6) { style.removeExpression('left'); style.removeExpression('top'); }; style.position = 'absolute'; }, // 鎸夐挳鍥炶皟鍑芥暟瑙﹀彂 _click: function (name) { var that = this, fn = that._listeners[name] && that._listeners[name].callback; return typeof fn !== 'function' || fn.call(that, window) !== false ? that.close() : that; }, // 閲嶇疆浣嶇疆涓庡昂瀵 _reset: function (test) { var newSize, that = this, oldSize = that._winSize || _$window.width() * _$window.height(), elem = that._follow, width = that._width, height = that._height, left = that._left, top = that._top; if (test) { // IE6~7 window.onresize bug newSize = that._winSize = _$window.width() * _$window.height(); if (oldSize === newSize) return; }; if (width || height) that.size(width, height); if (elem) { that.follow(elem); } else if (left || top) { that.position(left, top); }; }, // 浜嬩欢浠g悊 _addEvent: function () { var resizeTimer, that = this, config = that.config, isIE = 'CollectGarbage' in window, DOM = that.DOM; // 绐楀彛璋冭妭浜嬩欢 that._winResize = function () { resizeTimer && clearTimeout(resizeTimer); resizeTimer = setTimeout(function () { that._reset(isIE); }, 40); }; _$window.bind('resize', that._winResize); // 鐩戝惉鐐瑰嚮 DOM.wrap .bind('click', function (event) { var target = event.target, callbackID; if (target.disabled) return false; // IE BUG if (target === DOM.close[0]) { that._click(config.cancelVal); return false; } else if (target === DOM.max[0]) { that.max(); }else { callbackID = target[_expando + 'callback']; callbackID && that._click(callbackID); }; that._ie6SelectFix(); }) .bind('mousedown', function () { that.zIndex(); }); }, // 鍗歌浇浜嬩欢浠g悊 _removeEvent: function () { var that = this, DOM = that.DOM; DOM.wrap.unbind(); _$window.unbind('resize', that._winResize); } }; artDialog.fn._init.prototype = artDialog.fn; $.fn.dialog = $.fn.artDialog = function () { var config = arguments; this[this.live ? 'live' : 'bind']('click', function () { artDialog.apply(this, config); return false; }); return this; }; /** 鏈€椤跺眰鐨勫璇濇API */ artDialog.focus = null; /** 鑾峰彇鏌愬璇濇API */ artDialog.get = function (id) { return id === undefined ? artDialog.list : artDialog.list[id]; }; artDialog.list = {}; // 鍏ㄥ眬蹇嵎閿 _$document.bind('keydown', function (event) { var target = event.target, nodeName = target.nodeName, rinput = /^INPUT|TEXTAREA$/, api = artDialog.focus, keyCode = event.keyCode; if (!api || !api.config.esc || rinput.test(nodeName)) return; keyCode === 27 && api._click(api.config.cancelVal); }); // 鑾峰彇artDialog璺緞 _path = window['_artDialog_path'] || (function (script, i, me) { for (i in script) { // 濡傛灉閫氳繃绗笁鏂硅剼鏈姞杞藉櫒鍔犺浇鏈枃浠讹紝璇蜂繚璇佹枃浠跺悕鍚湁"artDialog"瀛楃 if (script[i].src && script[i].src.indexOf('artDialog') !== -1) me = script[i]; }; _thisScript = me || script[script.length - 1]; me = _thisScript.src.replace(/\\/g, '/'); return me.lastIndexOf('/') < 0 ? '.' : me.substring(0, me.lastIndexOf('/')); }(document.getElementsByTagName('script'))); /*// 鏃犻樆濉炶浇鍏SS (濡?artDialog.js?skin=aero") _skin = _thisScript.src.split('skin=')[1]; if (_skin) { var link = document.createElement('link'); link.rel = 'stylesheet'; link.href = _path + '/skins/' + _skin + '.css?' + artDialog.fn.version; _thisScript.parentNode.insertBefore(link, _thisScript); };*/ // 瑙﹀彂娴忚鍣ㄩ鍏堢紦瀛樿儗鏅浘鐗 _$window.bind(_path +'/static/base/lib/artdialog/skins/icons/loading.gif', function () { setTimeout(function () { if (_count) return; artDialog({left: '-9999em',time: 9,fixed: false,lock: false,focus: false}); }, 150); }); // 寮€鍚疘E6 CSS鑳屾櫙鍥剧墖缂撳瓨 try { document.execCommand('BackgroundImageCache', false, true); } catch (e) {}; // 浣跨敤uglifyjs鍘嬬缉鑳藉棰勫厛澶勭悊"+"鍙峰悎骞跺瓧绗︿覆 // uglifyjs: http://marijnhaverbeke.nl/uglifyjs artDialog._templates = '
' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
' + '
' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
' + '
' + '
' + '' + '' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' +'
'; /** * 榛樿閰嶇疆 */ artDialog.defaults = { // 娑堟伅鍐呭 content: '
loading..
', title: '\u6d88\u606f', // 鏍囬. 榛樿'娑堟伅' button: null, // 鑷畾涔夋寜閽 ok: null, // 纭畾鎸夐挳鍥炶皟鍑芥暟 cancel: null, // 鍙栨秷鎸夐挳鍥炶皟鍑芥暟 init: null, // 瀵硅瘽妗嗗垵濮嬪寲鍚庢墽琛岀殑鍑芥暟 close: null, // 瀵硅瘽妗嗗叧闂墠鎵ц鐨勫嚱鏁 okVal: '\u786E\u5B9A', // 纭畾鎸夐挳鏂囨湰. 榛樿'纭畾' cancelVal: '\u53D6\u6D88', // 鍙栨秷鎸夐挳鏂囨湰. 榛樿'鍙栨秷' width: 'auto', // 鍐呭瀹藉害 height: 'auto', // 鍐呭楂樺害 minWidth: 96, // 鏈€灏忓搴﹂檺鍒 minHeight: 32, // 鏈€灏忛珮搴﹂檺鍒 padding: '10px', // 鍐呭涓庤竟鐣屽~鍏呰窛绂 skin: '', // 鐨偆鍚?棰勭暀鎺ュ彛,灏氭湭瀹炵幇) icon: null, // 娑堟伅鍥炬爣鍚嶇О time: null, // 鑷姩鍏抽棴鏃堕棿 esc: true, // 鏄惁鏀寔Esc閿叧闂 focus: true, // 鏄惁鏀寔瀵硅瘽妗嗘寜閽嚜鍔ㄨ仛鐒 show: true, // 鍒濆鍖栧悗鏄惁鏄剧ず瀵硅瘽妗 follow: null, // 璺熼殢鏌愬厓绱?鍗宠瀵硅瘽妗嗗湪鍏冪礌闄勮繎寮瑰嚭) path: _path, // artDialog璺緞 lock: false, // 鏄惁閿佸睆 background: '#000', // 閬僵棰滆壊 opacity: .5, // 閬僵閫忔槑搴 duration: 300, // 閬僵閫忔槑搴︽笎鍙樺姩鐢婚€熷害 fixed: false, // 鏄惁闈欐瀹氫綅 left: '50%', // X杞村潗鏍 top: '38.2%', // Y杞村潗鏍 zIndex: 1987, // 瀵硅瘽妗嗗彔鍔犻珮搴﹀€?閲嶈锛氭鍊间笉鑳借秴杩囨祻瑙堝櫒鏈€澶ч檺鍒? resize: true, // 鏄惁鍏佽鐢ㄦ埛璋冭妭灏哄 drag: true, // 鏄惁鍏佽鐢ㄦ埛鎷栧姩浣嶇疆 min: null, // 鏈€灏忓寲 max: null, // 鏈€澶у寲 }; window.artDialog = $.dialog = $.artDialog = artDialog; }(this.art || this.jQuery && (this.art = jQuery), this)); //------------------------------------------------ // 瀵硅瘽妗嗘ā鍧?鎷栨嫿鏀寔锛堝彲閫夊缃ā鍧楋級 //------------------------------------------------ ;(function ($) { var _dragEvent, _use, _$window = $(window), _$document = $(document), _elem = document.documentElement, _isIE6 = !('minWidth' in _elem.style), _isLosecapture = 'onlosecapture' in _elem, _isSetCapture = 'setCapture' in _elem; // 鎷栨嫿浜嬩欢 artDialog.dragEvent = function () { var that = this, proxy = function (name) { var fn = that[name]; that[name] = function () { return fn.apply(that, arguments); }; }; proxy('start'); proxy('move'); proxy('end'); }; artDialog.dragEvent.prototype = { // 寮€濮嬫嫋鎷 onstart: $.noop, start: function (event) { _$document .bind('mousemove', this.move) .bind('mouseup', this.end); this._sClientX = event.clientX; this._sClientY = event.clientY; this.onstart(event.clientX, event.clientY); return false; }, // 姝e湪鎷栨嫿 onmove: $.noop, move: function (event) { this._mClientX = event.clientX; this._mClientY = event.clientY; this.onmove( event.clientX - this._sClientX, event.clientY - this._sClientY ); return false; }, // 缁撴潫鎷栨嫿 onend: $.noop, end: function (event) { _$document .unbind('mousemove', this.move) .unbind('mouseup', this.end); this.onend(event.clientX, event.clientY); return false; } }; _use = function (event) { var limit, startWidth, startHeight, startLeft, startTop, isResize, api = artDialog.focus, //config = api.config, DOM = api.DOM, wrap = DOM.wrap, title = DOM.title, main = DOM.main; // 娓呴櫎鏂囨湰閫夋嫨 var clsSelect = 'getSelection' in window ? function () { window.getSelection().removeAllRanges(); } : function () { try { document.selection.empty(); } catch (e) {}; }; // 瀵硅瘽妗嗗噯澶囨嫋鍔 _dragEvent.onstart = function (x, y) { if (isResize) { startWidth = main[0].offsetWidth; startHeight = main[0].offsetHeight; } else { startLeft = wrap[0].offsetLeft; startTop = wrap[0].offsetTop; }; _$document.bind('dblclick', _dragEvent.end); !_isIE6 && _isLosecapture ? title.bind('losecapture', _dragEvent.end) : _$window.bind('blur', _dragEvent.end); _isSetCapture && title[0].setCapture(); wrap.addClass('aui_state_drag'); api.focus(); }; // 瀵硅瘽妗嗘嫋鍔ㄨ繘琛屼腑 _dragEvent.onmove = function (x, y) { if (isResize) { var wrapStyle = wrap[0].style, style = main[0].style, width = x + startWidth, height = y + startHeight; wrapStyle.width = 'auto'; style.width = Math.max(0, width) + 'px'; wrapStyle.width = wrap[0].offsetWidth + 'px'; style.height = Math.max(0, height) + 'px'; } else { var style = wrap[0].style, left = Math.max(limit.minX, Math.min(limit.maxX, x + startLeft)), top = Math.max(limit.minY, Math.min(limit.maxY, y + startTop)); style.left = left + 'px'; style.top = top + 'px'; }; clsSelect(); api._ie6SelectFix(); }; // 瀵硅瘽妗嗘嫋鍔ㄧ粨鏉 _dragEvent.onend = function (x, y) { _$document.unbind('dblclick', _dragEvent.end); !_isIE6 && _isLosecapture ? title.unbind('losecapture', _dragEvent.end) : _$window.unbind('blur', _dragEvent.end); _isSetCapture && title[0].releaseCapture(); _isIE6 && !api.closed && api._autoPositionType(); wrap.removeClass('aui_state_drag'); }; isResize = event.target === DOM.se[0] ? true : false; limit = (function () { var maxX, maxY, wrap = api.DOM.wrap[0], fixed = wrap.style.position === 'fixed', ow = wrap.offsetWidth, oh = wrap.offsetHeight, ww = _$window.width(), wh = _$window.height(), dl = fixed ? 0 : _$document.scrollLeft(), dt = fixed ? 0 : _$document.scrollTop(), // 鍧愭爣鏈€澶у€奸檺鍒 maxX = ww - ow + dl; maxY = wh - oh + dt; return { minX: dl, minY: dt, maxX: maxX, maxY: maxY }; })(); _dragEvent.start(event); }; // 浠g悊 mousedown 浜嬩欢瑙﹀彂瀵硅瘽妗嗘嫋鍔 _$document.bind('mousedown', function (event) { var api = artDialog.focus; if (!api) return; var target = event.target, config = api.config, DOM = api.DOM; if (config.drag !== false && target === DOM.title[0] || config.resize !== false && target === DOM.se[0]) { _dragEvent = _dragEvent || new artDialog.dragEvent(); _use(event); return false;// 闃叉firefox涓巆hrome婊氬睆 }; }); })(this.art || this.jQuery && (this.art = jQuery));