<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">/**
 * @TODO:
 */
;(function($, window, document, undefined) {
    'use strict';
    
    var Dialog = (function() {

        /**
         * å¼¹çª—æž„é€&nbsp;å‡½æ•°
         * @param {dom obj}   element   è°ƒç”¨å¯¹è±¡ 
         * @param {json obj}  options   å¼¹çª—é…ç½®é¡¹
         */
        function Dialog(element, options) { 
            this.$element = $(element);
            this.settings = $.extend({}, $.fn.dialog.defaults, options);
        }

        
        Dialog.prototype = {
            /**
             * åˆå§‹åŒ–å¼¹çª—
             */ 
            _init: function() {
                var self = this;
                
                clearTimeout(self.autoCloseTimer);
                
                self.isHided = false;                   // æ˜¯å¦å·²ç»éšè—
                self.tapBug = self._hasTapBug();        // æ˜¯å¦æœ‰ç‚¹é€ BUG
                self.platform = mobileUtil.platform;    // è®¿é—®è®¾å¤‡å¹³å°
                self.dislogStyle = self.settings.style==='default' ? self.platform : self.settings.style;    // å¼¹çª—é£Žæ&nbsp;¼, é»˜è®¤è‡ªåŠ¨åˆ¤æ–­å¹³å°; å¦åˆ™, ä¸ºæŒ‡å®šå¹³å°


                // åˆ›å»ºå¼¹çª—æ˜¾ç¤ºæ—¶, ç¦æ­¢ body å†…å®¹æ»šåŠ¨çš„æ&nbsp;·å¼å¹¶ä¸”æ·»åŠ&nbsp;åˆ° head
                if ($('#dialog-body-no-scroll').length === 0) {
                    var styleContent = '.body-no-scroll { position: absolute; overflow: hidden; width: 100%; }';
                    $('head').append('&lt;style id="dialog-body-no-scroll"&gt;'+ styleContent +'&lt;/style&gt;');
                }

                self._renderDOM();
                self._bindEvents();
            },

            /**
             * æ¸²æŸ“å¼¹çª— DOM ç»“æž„
             */
            _renderDOM: function() {
                var self = this;

                self.settings.onBeforeShow();
                self._createDialogDOM(self.settings.type);
                self.settings.onShow();
            },

            /**
             * ç»‘å®šå¼¹çª—ç›¸å…³äº‹ä»¶
             */
            _bindEvents: function() {
                var self = this;
                // ç¡®å®šæŒ‰é’®å…³é—­å¼¹çª—
                self.$confirmBtn.bind('click', function() {
                    var callback = self.settings.onClickConfirmBtn();
                    if (callback || callback === undefined) {
                        self.closeDialog();
                    }          
                });

                // å–æ¶ˆæŒ‰é’®å…³é—­å¼¹çª—
                self.$cancelBtn.bind('click', function(ev) {
                    var callback = self.settings.onClickCancelBtn();
                    if (callback || callback === undefined) {
                        self.closeDialog();
                    } 
                });

                // å…³é—­æŒ‰é’®å…³é—­å¼¹çª—
                self.$closeBtn.on(mobileUtil.tapEvent, function(ev) {
                    var callback = self.settings.onClickCloseBtn();
                    if (callback || callback === undefined) {
                        self.closeDialog();
                    } 
                }).on('touchend', function(ev) {
                    ev.preventDefault();
                });

                // é®ç½©å±‚å…³é—­å¼¹çª—
                if (self.settings.overlayClose) {
                    $(document).on(mobileUtil.tapEvent, '.dialog-overlay', function(ev) {
                        self.closeDialog();
                    });
                }

                // è‡ªåŠ¨å…³é—­å¼¹çª—
                if(self.settings.autoClose &gt; 0){
                    self._autoClose();
                }

                // åˆ&nbsp;é™¤å¼¹çª—å’Œ tap ç‚¹é€ BUG é®ç½©å±‚, åœ¨éšè—å¼¹çª—çš„åŠ¨ç”»ç»“æŸåŽæ‰§è¡Œ
                $(document).on('webkitAnimationEnd MSAnimationEnd animationend', '.dialog-content', function() {
                    if (self.isHided) {
                        self.removeDialog();

                        if (self.tapBug) {
                            self._removeTapOverlayer();
                        }
                    }
                });

                // ä¸ºè‡ªå®šä¹‰æŒ‰é’®ç»„ç»‘å®šå›žè°ƒå‡½æ•°
                if (self.settings.buttons.length) {
                    $.each(self.settings.buttons, function(index, item) {
                        self.$dialogContentFt.children('button').eq(index).on(mobileUtil.tapEvent, function(ev) {
                            ev.preventDefault();
                            var callback = item.callback();
                            if (callback || callback === undefined) {
                                self.closeDialog();
                            }
                        });
                    });
                }

                // å¦‚æžœå¼¹çª—æœ‰æœ€å¤§é«˜åº¦è®¾ç½®é¡¹, åœ¨çª—å£å¤§å°æ”¹å˜æ—¶, é‡æ–°è®¾ç½®å¼¹çª—æœ€å¤§é«˜åº¦
                $(window).on("onorientationchange" in window ? "orientationchange" : "resize", function() {
                    if (self.settings.contentScroll) {
                        setTimeout(function() {
                            self._resetDialog();
                        }, 200);
                    }
                });


                // é˜»æ­¢ body å†…å®¹æ»‘åŠ¨
                $(document).on('touchmove', function(e) {
                    if (self.$dialog.find($(e.target)).length){
                        return false;
                    } else {
                        return true;
                    }
                });

                // å¼¹çª—æœ‰æœ€å¤§é«˜åº¦è®¾ç½®é¡¹, è®¾ç½®æç¤ºå†…å®¹æ»‘åŠ¨
                if (self.settings.contentScroll) {
                    self._contentScrollEvent();
                }
            },

            /**
             * æ&nbsp;¹æ®å¼¹çª—ç±»åž‹, åˆ›å»ºå¼¹çª— DOM ç»“æž„
             * @param {string}  dialogType   å¼¹çª—ç±»åž‹
             */
            _createDialogDOM: function(dialogType) {
                var self = this;

                self.$dialog = $('&lt;div class="dialog dialog-open '+ self.settings.dialogClass +'" data-style="'+ self.dislogStyle +'"&gt;&lt;/div&gt;');
                self.$dialogOverlay = $('&lt;div class="dialog-overlay"&gt;&lt;/div&gt;');
                self.$dialogContent = $('&lt;div class="dialog-content"&gt;&lt;/div&gt;');
                self.$dialogTitle = $('&lt;div class="dialog-content-hd"&gt;&lt;h3 class="dialog-content-title"&gt;'+ self.settings.titleText +'&lt;/h3&gt;&lt;/div&gt;');                
                self.$dialogContentFt = $('&lt;div class="dialog-content-ft"&gt;&lt;/div&gt;');
                self.$dialogContentBd = $('&lt;div class="dialog-content-bd"&gt;&lt;/div&gt;');
                self.$closeBtn = $('&lt;div class="dialog-btn-close"&gt;&lt;span&gt;close&lt;/span&gt;&lt;/div&gt;');
                self.$confirmBtn = $('&lt;button class="dialog-btn dialog-btn-confirm '+ self.settings.buttonClassConfirm +'"&gt;'+ self.settings.buttonTextConfirm +'&lt;/button&gt;');
                self.$cancelBtn = $('&lt;button class="dialog-btn dialog-btn-cancel '+ self.settings.buttonClassCancel +'"&gt;'+ self.settings.buttonTextCancel +'&lt;/button&gt;');

                switch(dialogType) {
                    case 'alert':
                        // æ·»åŠ&nbsp; alert ç±»åž‹å¼¹çª—æ&nbsp;‡è¯†
                        self.$dialog.addClass('dialog-modal');

                        // æ˜¾ç¤ºé®ç½©å±‚
                        if (self.settings.overlayShow) { 
                            self.$dialog.append(self.$dialogOverlay); 
                        }
                        // æ˜¾ç¤ºæ&nbsp;‡é¢˜
                        if (self.settings.titleShow) { 
                            self.$dialogContent.append(self.$dialogTitle); 
                        }
                        // æ˜¾ç¤ºå…³é—­æŒ‰é’®
                        if (self.settings.closeBtnShow) {
                            self.$dialogTitle.append(self.$closeBtn);
                        }                        

                        self.$dialogContentBd.html(self.settings.content);
                        self.$dialogContentFt.append(self.$confirmBtn);
                        self.$dialogContent.append(self.$dialogContentBd).append(self.$dialogContentFt);
                        self.$dialog.append(self.$dialogContent);
                        $('body').append(self.$dialog);

                        if (self.settings.bodyNoScroll) {
                            $('body').addClass('body-no-scroll');
                        }

                        // è®¾ç½®å¼¹çª—æç¤ºå†…å®¹æœ€å¤§é«˜åº¦
                        if (self.settings.contentScroll) {
                            self._setDialogContentHeight();
                        }
                        
                        break;
                    case 'confirm':
                        // æ·»åŠ&nbsp; confirm ç±»åž‹å¼¹çª—æ&nbsp;‡è¯†
                        self.$dialog.addClass('dialog-modal');

                        // æ˜¾ç¤ºé®ç½©å±‚
                        if (self.settings.overlayShow) { 
                            self.$dialog.append(self.$dialogOverlay); 
                        }
                        // æ˜¾ç¤ºæ&nbsp;‡é¢˜
                        if (self.settings.titleShow) { 
                            self.$dialogContent.append(self.$dialogTitle); 
                        }
                        // æ˜¾ç¤ºå…³é—­æŒ‰é’®
                        if (self.settings.closeBtnShow) {
                            self.$dialogTitle.append(self.$closeBtn);
                        }

                        // æŒ‰é’®: å¦‚æžœæœ‰è®¾ç½®è‡ªå®šä¹‰æŒ‰é’®ç»„, åˆ™ç”¨è‡ªå®šä¹‰æŒ‰é’®ç»„; å¦åˆ™ç”¨é»˜è®¤çš„"ç¡®å®š"ä¸Ž"å–æ¶ˆ"æŒ‰é’®
                        if (self.settings.buttons.length) {
                            var buttonGroupHtml = '';
                            $.each(self.settings.buttons, function(index, item) {
                                buttonGroupHtml += '&lt;button class="dialog-btn '+ item.class +'"&gt;'+ item.name +'&lt;/button&gt;';

                            });
                            self.$dialogContentFt.append(buttonGroupHtml).addClass(self.settings.buttonStyle);
                        } else {
                            self.$dialogContentFt.append(self.$cancelBtn).append(self.$confirmBtn).addClass(self.settings.buttonStyle);
                        }

                        self.$dialogContentBd.html(self.settings.content);
                        self.$dialogContent.append(self.$dialogContentBd).append(self.$dialogContentFt);
                        self.$dialog.append(self.$dialogContent);
                        $('body').append(self.$dialog);
                        
                        // è®¾ç½®å¼¹çª—æç¤ºå†…å®¹æœ€å¤§é«˜åº¦
                        if (self.settings.contentScroll) {
                            self._setDialogContentHeight();
                        }
                        
                        if (self.settings.bodyNoScroll) {
                            $('body').addClass('body-no-scroll');
                        }

                        break;
                    case 'toast':
                        // æ·»åŠ&nbsp; toast ç±»åž‹å¼¹çª—æ&nbsp;‡è¯†
                        self.$dialog.addClass('dialog-toast');

                        // æ˜¾ç¤ºé®ç½©å±‚
                        if (self.settings.overlayShow) { 
                            self.$dialog.append(self.$dialogOverlay); 
                        }

                        // å¼¹çª—å†…å®¹ HTML, é»˜è®¤ä¸º content; å¦‚æžœè®¾ç½® icon ä¸Ž text, åˆ™è¦†ç›– content çš„è®¾ç½®
                        var toastContentHtml = $(self.settings.content);

                        if (self.settings.infoIcon !== '' &amp;&amp; self.settings.infoText !== '') {
                            toastContentHtml = $('&lt;img class="info-icon" src="'+ self.settings.infoIcon + '" /&gt;&lt;span class="info-text"&gt;'+ self.settings.infoText +'&lt;/span&gt;');
                        } else if (self.settings.infoIcon === '' &amp;&amp; self.settings.infoText !== '') {
                            toastContentHtml = $('&lt;span class="info-text"&gt;'+ self.settings.infoText +'&lt;/span&gt;');
                        } else if (self.settings.infoIcon !== '' &amp;&amp; self.settings.infoText === '') {
                            toastContentHtml = $('&lt;img class="info-icon" src="'+ self.settings.infoIcon + '" /&gt;');
                        }

                        self.$dialogContentBd.append(toastContentHtml);
                        self.$dialogContent.append(self.$dialogContentBd);
                        self.$dialog.append(self.$dialogContent);
                        $('body').append(self.$dialog);

                        if (self.settings.bodyNoScroll) {
                            $('body').addClass('body-no-scroll');
                        }

                        break;
                    case 'notice':
                        // æ·»åŠ&nbsp; toast ç±»åž‹å¼¹çª—æ&nbsp;‡è¯†
                        self.$dialog.addClass('dialog-notice');

                        // åº•éƒ¨æ˜¾ç¤ºçš„ toast
                        if (self.settings.position==='bottom') {
                            self.$dialog.addClass('dialog-notice-bottom');
                        }

                        // æ˜¾ç¤ºé®ç½©å±‚
                        if (self.settings.overlayShow) { 
                            self.$dialog.append(self.$dialogOverlay); 
                        }

                        // å¼¹çª—å†…å®¹ HTML, é»˜è®¤ä¸º content; å¦‚æžœè®¾ç½® icon ä¸Ž text, åˆ™è¦†ç›– content çš„è®¾ç½®
                        var noticeContentHtml = $(self.settings.content);

                        if (self.settings.infoIcon !== '' &amp;&amp; self.settings.infoText !== '') {
                            noticeContentHtml = $('&lt;img class="info-icon" src="'+ self.settings.infoIcon + '" /&gt;&lt;span class="info-text"&gt;'+ self.settings.infoText +'&lt;/span&gt;');
                        } else if (self.settings.infoIcon === '' &amp;&amp; self.settings.infoText !== '') {
                            noticeContentHtml = $('&lt;span class="info-text"&gt;'+ self.settings.infoText +'&lt;/span&gt;');
                        } else if (self.settings.infoIcon !== '' &amp;&amp; self.settings.infoText === '') {
                            noticeContentHtml = $('&lt;img class="info-icon" src="'+ self.settings.infoIcon + '" /&gt;');
                        }

                        self.$dialogContentBd.append(noticeContentHtml);
                        self.$dialogContent.append(self.$dialogContentBd);
                        self.$dialog.append(self.$dialogContent);
                        $('body').append(self.$dialog);

                        if (self.settings.bodyNoScroll) {
                            $('body').addClass('body-no-scroll');
                        }

                        break;
                    default:
                        break;
                }
            },

            /**
             * è®¾ç½®å¼¹çª—å†…å®¹æœ€å¤§é«˜åº¦
             * å»¶è¿Ÿæ‰§è¡Œ, é¿å…èŽ·å–ç›¸å…³å°ºå¯¸ä¸æ­£ç¡®
             */
            _setDialogContentHeight: function() {
                var self = this;

                setTimeout(function() {
                    var dialogDefaultContentHeight = self.$dialogContentBd.height();
                    var dialogContentMaxHeight = self._getDialogContentMaxHeight();

                    self.$dialogContentBd.css({
                        'max-height': dialogContentMaxHeight,
                    }).addClass('content-scroll');

                    // æç¤ºå†…å®¹å¤§äºŽæœ€å¤§é«˜åº¦æ—¶, æ·»åŠ&nbsp;åº•éƒ¨æŒ‰é’®é¡¶éƒ¨è¾¹æ¡†çº¿æ&nbsp;‡è¯† class; åä¹‹, åˆ&nbsp;é™¤
                    if (dialogDefaultContentHeight &gt; dialogContentMaxHeight) {
                        self.$dialogContentFt.addClass('dialog-content-ft-border');
                    } else {
                        self.$dialogContentFt.removeClass('dialog-content-ft-border');
                    }

                }, 80);
            },

            /**
             * èŽ·å–å¼¹çª—å†…å®¹æœ€å¤§é«˜åº¦
             * @return height
             */
            _getDialogContentMaxHeight: function() {
                var self = this;
                var winHeight = $(window).height(),
                    dialogContentHdHeight = self.$dialogTitle.height(),
                    dialogContentFtHeight = self.$dialogContentFt.height(),
                    dialogContentBdHeight = winHeight - dialogContentHdHeight - dialogContentFtHeight - 60;

                // æœ€å¤§é«˜åº¦å–å¶æ•°
                dialogContentBdHeight = dialogContentBdHeight%2===0 ? dialogContentBdHeight : dialogContentBdHeight - 1;
                return dialogContentBdHeight;
            },

            /**
             * é‡ç½®å¼¹çª—, åœ¨çª—å£å¤§å°å‘ç”Ÿå˜åŒ–æ—¶è§¦å‘ 
             */
            _resetDialog: function() {
                var self = this;
                self._setDialogContentHeight();                
            },

            /**
             * æœ‰æœ€å¤§é«˜åº¦å¼¹çª—çš„æç¤ºå†…å®¹æ»‘åŠ¨
             */
            _contentScrollEvent: function() {
                var self = this;

                var isTouchDown = false;
                // åˆå§‹ä½ç½®
                var position = {
                    x: 0,
                    y: 0,
                    top: 0,
                    left: 0
                };

                // ç›‘å¬æ»‘åŠ¨ç›¸å…³äº‹ä»¶
                $(document)
                    .on('touchstart mousedown', '.content-scroll', function(ev) {
                        var touch = ev.changedTouches ? ev.changedTouches[0] : ev;
                        
                        isTouchDown = true;
                        position.x = touch.clientX;
                        position.y = touch.clientY;
                        position.top = $(this).scrollTop();
                        position.left = $(this).scrollLeft();
                        return false;
                    })
                    .on('touchmove mousemove', '.content-scroll', function(ev) {
                        var touch = ev.changedTouches ? ev.changedTouches[0] : ev;

                        if (!isTouchDown) {
                            // æœªæŒ‰ä¸‹
                            return false;
                        } else {
                            // è¦æ»‘åŠ¨çš„è·ç¦» = å·²ç»æ»‘åŠ¨çš„è·ç¦» - (å½“å‰åæ&nbsp;‡ - æŒ‰ä¸‹åæ&nbsp;‡)
                            var moveTop  = position.top - (touch.clientY - position.y);
                            var moveLeft = position.left - (touch.clientX - position.x);

                            $(this).scrollTop(moveTop).scrollLeft(moveLeft);
                        }
                    })
                    .on('touchend mouseup', '.content-scroll', function(ev) {
                        ev.preventDefault();
                        isTouchDown = false;
                    });

            },

            /**
             * è‡ªåŠ¨å…³é—­å¼¹çª—
             */
            _autoClose: function() {
                var self = this;

                self.autoCloseTimer = setTimeout(function(){
                    self.closeDialog();
                }, self.settings.autoClose);
            },

            /**
             * å…³é—­å¼¹çª—
             */
            closeDialog: function() {
                var self = this;

                self.isHided = true;
                self.settings.onBeforeClosed();
                self.$dialog.addClass('dialog-close').removeClass('dialog-open');

                if (self.tapBug) {
                    self._appendTapOverlayer();
                }
            },

            /**
             * åˆ&nbsp;é™¤å¼¹çª—
             * @public method
             */
            removeDialog: function() {
                var self = this;

                self.$dialog.remove();
                self.isHided = false;
                self.settings.onClosed();
                // é‡æ–°åˆå§‹åŒ–é»˜è®¤é…ç½®
                self.settings = $.fn.dialog.defaults;

                if (self.settings.bodyNoScroll) {
                    $('body').removeClass('body-no-scroll');
                }
            },

            /**
             * æ›´æ”¹ toast å’Œ notice ç±»åž‹å¼¹çª—å†…å®¹ 
             * @public method
             * @param {string}  content          å¼¹çª—å†…å®¹, å¯ä»¥æ˜¯HTML
             * @param {string}  infoIcon         å¼¹çª—æç¤ºå›¾æ&nbsp;‡
             * @param {string}  infoText         å¼¹çª—æç¤ºæ–‡å­—
             * @param {int}     autoClose        è‡ªåŠ¨å…³é—­çš„å»¶è¿Ÿæ—¶é—´
             * @param {fn}      onBeforeClosed   å…³é—­å‰å›žè°ƒå‡½æ•°
             * @param {fn}      onClosed         å…³é—­åŽå›žè°ƒå‡½æ•°
             */
            update: function (settings) {
                var self = this;

                clearTimeout(self.autoCloseTimer);

                // è®¾ç½®é»˜è®¤å€¼ï¼Œå¹¶ä¸”æŒ‡å‘ç»™å¯¹è±¡çš„é»˜è®¤å€¼
                self.settings = $.extend({}, $.fn.dialog.defaults, settings);

                // é€šè¿‡ content æ›´æ”¹å¼¹çª—å†…å®¹
                if (self.settings.content !== '') {
                    self.$dialogContentBd.html(self.settings.content);
                }

                // é€šè¿‡è®¾ç½® infoIcon ä¸Ž infoText æ›´æ”¹å¼¹çª—å†…å®¹, ä¼šè¦†ç›– content çš„è®¾ç½®
                var $infoIcon = self.$dialogContentBd.find('.info-icon');
                var $infoText = self.$dialogContentBd.find('.info-text');                
                $infoIcon.attr({'src': self.settings.infoIcon});
                $infoText.html(self.settings.infoText);

                // é‡æ–°ä¸ºæ›´æ”¹åŽçš„ DOM å…ƒç´&nbsp;ç»‘å®šäº‹ä»¶
                self._bindEvents();
            },

            /**
             * æ˜¯å¦æœ‰ç‚¹é€ BUG
             * æ¡ä»¶: å®‰å“æ‰‹æœºå¹¶ä¸”ç‰ˆæœ¬å·å°äºŽ4.4
             * @return Boolean
             */
            _hasTapBug: function() {
                return mobileUtil.isAndroid &amp;&amp; (mobileUtil.version &lt; 4.4);
            },

            /**
             * æ·»åŠ&nbsp;ç‚¹é€é®ç½©å±‚, è§£å†³ç‚¹é€ BUG
             */
            _appendTapOverlayer: function() {
                var self = this;

                self.$tapBugOverlayer = $('.solve-tap-bug');

                if (!self.$tapBugOverlayer.length) {
                    self.$tapBugOverlayer = $('&lt;div class="solve-tap-bug" style="margin:0;padding:0;border:0;background:rgba(0,0,0,0);-webkit-tap-highlight-color:rgba(0,0,0,0);width:100%;height:100%;position:fixed;top:0;left:0;"&gt;&lt;/div&gt;');
                    $('body').append(self.$tapBugOverlayer);
                }                
            },

            /**
             * åˆ&nbsp;é™¤ç‚¹é€é®ç½©å±‚, å»¶è¿Ÿæ‰§è¡Œçš„æ—¶é—´å¤§äºŽç§»åŠ¨ç«¯çš„ click è§¦å‘æ—¶é—´
             */
            _removeTapOverlayer: function() {
                var self = this;

                setTimeout(function() {
                    self.$tapBugOverlayer.remove();
                }, 350);
            }
        };

        return Dialog;
    })();

    /**----------------------------
     *  ç§æœ‰æ–¹æ³•
     ----------------------------*/    
    /** 
     * ç§»åŠ¨ç«¯ç›¸å…³æ•°æ® =&gt;&gt; mobileUtil å¯¹è±¡
     * æ˜¯å¦æ˜¯å®‰å“  : isAndroid
     * æ˜¯å¦æ˜¯IOS   : isIOS
     * æ˜¯å¦æ˜¯ç§»åŠ¨ç«¯: isMobile
     * è®¾å¤‡å¹³å°    : platform [ ios æˆ– android ]
     * äº‹ä»¶ç±»åž‹    : tapEvent [ tapEvent æˆ– click ]
     * ç³»ç»Ÿç‰ˆæœ¬å·  : version [ å¦‚: ios 9.1 æˆ– andriod 6.0 ]
     * æ˜¯å¦æ”¯æŒ touch äº‹ä»¶: isSupportTouch
     */
    var mobileUtil = (function(window) {
        var UA = window.navigator.userAgent,
            isAndroid = /android|adr/gi.test(UA),
            isIOS = /iphone|ipod|ipad/gi.test(UA) &amp;&amp; !isAndroid,
            isMobile = isAndroid || isIOS,
            platform = isIOS ? 'ios' : (isAndroid ? 'android' : 'default'),
            isSupportTouch = "ontouchend" in document ? true : false;

        var reg = isIOS ? (/os [\d._]*/gi):(/android [\d._]*/gi),
            verinfo = UA.match(reg),
            version = (verinfo+"").replace(/[^0-9|_.]/ig,"").replace(/_/ig,".");

        return {
            isIOS: isIOS,
            isAndroid: isAndroid,
            isMobile: isMobile,
            platform: platform,
            version: parseFloat(version),
            isSupportTouch: isSupportTouch,
            tapEvent: isMobile &amp;&amp; isSupportTouch ? 'tapEvent' : 'click'
        };
    })(window);

    
    $.fn.dialog = function(options) { 
        var self = this;

        return this.each(function(){
            var $this = $(this),
                instance = window.jQuery ? $this.data('dialog') : $.fn.dialog.lookup[$this.data('dialog')];
                        
            if (!instance) {
                var obj = new Dialog(this, options);
                obj._init();

                if (window.jQuery) {
                    $this.data('dialog', obj);
                } else {
                    $.fn.dialog.lookup[++$.fn.dialog.lookup.i] = obj;
                    $this.data('dialog', $.fn.dialog.lookup.i);
                    instance = $.fn.dialog.lookup[$this.data('dialog')];
                }
            } else {
                var obj = new Dialog(this, options);
                obj._init();
            }

            if (typeof options === 'string') { instance[options](); }

            // æä¾›å¤–éƒ¨è°ƒç”¨å…¬å…±æ–¹æ³•
            self.close = function(){
                obj.closeDialog();
            };

            self.update = function(settings){
                obj.update(settings);
            };
        });
    };

    if (!window.jQuery) { $.fn.dialog.lookup = {i: 0}; }


    /**
     * æ’ä»¶é»˜è®¤å€¼
     */
    $.fn.dialog.defaults = {
        type         : 'notice',   // å¼¹çª—çš„ç±»åž‹ [ alert: ç¡®å®š; confirm: ç¡®å®š/å–æ¶ˆ; toast: çŠ¶æ€æç¤º; notice: æç¤ºä¿¡æ¯ ]
        style        : 'default', // alert ä¸Ž confirm å¼¹çª—çš„é£Žæ&nbsp;¼ [ default: æ&nbsp;¹æ®è®¿é—®è®¾å¤‡å¹³å°; ios: ios é£Žæ&nbsp;¼; android: MD design é£Žæ&nbsp;¼ ]
        titleShow    : true,      // æ˜¯å¦æ˜¾ç¤ºæ&nbsp;‡é¢˜
        titleText    : 'æç¤º',    // æ&nbsp;‡é¢˜æ–‡å­—
        bodyNoScroll : false,     // bodyå†…å®¹ä¸å¯ä»¥æ»šåŠ¨
        closeBtnShow : false,     // æ˜¯å¦æ˜¾ç¤ºå…³é—­æŒ‰é’®
        content      : '',        // å¼¹çª—æç¤ºå†…å®¹, å€¼å¯ä»¥æ˜¯ HTML å†…å®¹
        contentScroll: true,      // alert ä¸Ž confirm å¼¹çª—æç¤ºå†…å®¹æ˜¯å¦é™åˆ¶æœ€å¤§é«˜åº¦, ä½¿å…¶å¯ä»¥æ»šåŠ¨
        dialogClass  : '',        // å¼¹çª—è‡ªå®šä¹‰ class
        autoClose    : 2000,         // å¼¹çª—è‡ªåŠ¨å…³é—­çš„å»¶è¿Ÿæ—¶é—´(æ¯«ç§’)ã€‚0: ä¸è‡ªåŠ¨å…³é—­; å¤§äºŽ0: è‡ªåŠ¨å…³é—­å¼¹çª—çš„å»¶è¿Ÿæ—¶é—´
        overlayShow  : true,      // æ˜¯å¦æ˜¾ç¤ºé®ç½©å±‚
        overlayClose : false,     // æ˜¯å¦å¯ä»¥ç‚¹å‡»é®ç½©å±‚å…³é—­å¼¹çª—
         
        buttonStyle       : 'side',   // æŒ‰é’®æŽ’ç‰ˆæ&nbsp;·å¼ [ side: å¹¶æŽ’; stacked: å&nbsp;†å&nbsp; ]
        buttonTextConfirm : 'OK',   // ç¡®å®šæŒ‰é’®æ–‡å­—
        buttonTextCancel  : 'Cancel',   // å–æ¶ˆæŒ‰é’®æ–‡å­—
        buttonClassConfirm: '',       // ç¡®å®šæŒ‰é’®è‡ªå®šä¹‰ class
        buttonClassCancel : '',       // å–æ¶ˆæŒ‰é’®è‡ªå®šä¹‰ class
        buttons           : [],       // confirm å¼¹çª—è‡ªå®šä¹‰æŒ‰é’®ç»„, ä¼šè¦†ç›–"ç¡®å®š"ä¸Ž"å–æ¶ˆ"æŒ‰é’®; å•ä¸ª button å¯¹è±¡å¯è®¾ç½® name [ åç§° ]ã€class [ è‡ªå®šä¹‰class ]ã€callback [ ç‚¹å‡»æ‰§è¡Œçš„å‡½æ•° ]

        infoIcon: '',        // toast ä¸Ž notice å¼¹çª—çš„æç¤ºå›¾æ&nbsp;‡, å€¼ä¸ºå›¾æ&nbsp;‡çš„è·¯å¾„ã€‚ä¸è®¾ç½®=ä¸æ˜¾ç¤º
        infoText: '',        // toast ä¸Ž notice å¼¹çª—çš„æç¤ºæ–‡å­—, ä¼šè¦†ç›– content çš„è®¾ç½®
        position: 'center',  // notice å¼¹çª—çš„ä½ç½®, [ center: å±…ä¸­; bottom: åº•éƒ¨ ]

        onClickConfirmBtn: function(){},  // â€œç¡®å®šâ€æŒ‰é’®çš„å›žè°ƒå‡½æ•°
        onClickCancelBtn : function(){},  // â€œå–æ¶ˆâ€æŒ‰é’®çš„å›žè°ƒå‡½æ•°
        onClickCloseBtn  : function(){},  // â€œå…³é—­â€æŒ‰é’®çš„å›žè°ƒå‡½æ•°
        onBeforeShow     : function(){},  // å¼¹çª—æ˜¾ç¤ºå‰çš„å›žè°ƒå‡½æ•°
        onShow           : function(){},  // å¼¹çª—æ˜¾ç¤ºåŽçš„å›žè°ƒå‡½æ•°
        onBeforeClosed   : function(){},  // å¼¹çª—å…³é—­å‰çš„å›žè°ƒå‡½æ•°
        onClosed         : function(){}   // å¼¹çª—å…³é—­åŽçš„å›žè°ƒå‡½æ•°
    };

})(window.jQuery || window.Zepto, window, document);</pre></body></html>