jquery函数扩展

 

(function(X, $) {
    var //FALSE = false,
        //TRUE = true,
        NULL = null,
        //toInt = parseInt,
        isIE6 = !!($.browser.msie && $.browser.version == '6.0');

    $.extend($.fn, {
        /**
         * 文字放大渐隐
         *@param {Number} num 增加数值
         *@param {Number} times 放大倍数
         *@return {jQuery}
         */
        zoomText: function(num, times) {
            this.each(function() {
                var
                    $clone,
                    $el = $(this),
                    offset = $el.offset(),
                    text = $el.text();

                times = isNaN(times) ? 2 : times;

                if (!isNaN(+text)) {
                    text = +text + (num || 1);
                }

                $el.text(text);

                $clone = $el.clone()
                    .attr('id', '')
                    .css({
                        'position': 'absolute',
                        'top': offset.top,
                        'left': offset.left,
                        'font': $el.css('font'),
                        'color': $el.css('color')
                    })
                    .appendTo($(document.body));

                var fontsize = times * parseInt($el.css('font-size'));

                $clone.animate({
                    'font-size': fontsize,
                    'top': offset.top - ($el.height() / 4),
                    'left': offset.left - ($el.width() / 2),
                    'opacity': 0.1
                }, {
                    'duration': 300,
                    'complete': function() {
                        $clone.remove();
                    }
                });

            });

            return this;
        },

        /**
             * 文本输入框加上聚焦清空,失焦停留提示功能。<br/>
             如果利用{@link Xwb.ax.ValidationMgr}类作表单验证,制作类似功能时不必直接采用该方法,
             Validator类提供一系列验证器无需写代码即可轻松实现,详见该类的各种验证器。<br/>
             如果当前文本框已经过{@link Xwb.ax.SelectionHolder}实例处理,
             则focusText方法会利用当前{@link Xwb.ax.SelectionHolder}实例输出文本。
             * @param {String} hoverText 停留提示文字
             * @param {String} [focusStyle] 修饰样式类
             * @param {DomSelector} [cssNode]
             * @param {Boolean} [removeOnFocus] 如果为false,当聚焦后添加css类,否则移除css类
              <pre><code>
                $('#id').focusText('这里输入用户名', 'focusStyle');
              </code></pre>
             */
        focusText: function(text, css, cssNode, removeOnFocus) {
            this.each(function() {
                $(this).focus(function() {
                        if (this.value === text) {
                            var selHolder = $(this).data('xwb_selholder');
                            if (selHolder)
                                selHolder.setText('');
                            else this.value = '';
                        }
                        if (css) {
                            if (removeOnFocus)
                                $(cssNode || this).removeClass(css);
                            else $(cssNode || this).addClass(css);
                        }
                    })
                    .blur(function() {
                        if ($.trim(this.value) === '') {
                            var selHolder = $(this).data('xwb_selholder');
                            if (selHolder)
                                selHolder.setText(text);
                            else this.value = text;
                        }
                        if (css) {
                            if (removeOnFocus)
                                $(cssNode || this).addClass(css);
                            else $(cssNode || this).removeClass(css);
                        }
                    });
            });
        },

        /**
             * 方法使用'hidden'样式控制元素的显示或隐藏状态。
             * 如果无参数,返回当前元素hidden样式的状态,否则利用'hidden'CSS类进行隐藏或显示元素。
              <pre><code>
                // 获得显示状态
                if ($('#id').cssDisplay()) {}
                // 显示
                $('#id').cssDisplay(true);
             </code></pre>
             *@return {Boolean|jQuery}
             */
        cssDisplay: function(b) {
            var len = this.length;
            if (len) {
                if (len === 1) {
                    if (b === undefined) {
                        var v = !this.hasClass('hidden');
                        return v;
                    } else {
                        if (b) this.removeClass('hidden');
                        else this.addClass('hidden');
                    }
                } else {
                    this.each(function() {
                        if (b) $(this).removeClass('hidden');
                        else $(this).addClass('hidden');
                    });
                }
            }
            return this;
        },

        /**
         * 检查是否含有某个样式,如果有,添加或删除该样式.
         * @param {String} css 样式名称
         * @param {Boolean} addOrRemove true 时添加样式,false时移除该样式
         * @return {jQuery} this
         */
        checkClass: function(cs, b) {
            if (cs) {
                this.each(function() {
                    var jq = $(this);
                    var hc = jq.hasClass(cs);
                    if (b) {
                        if (!hc)
                            jq.addClass(cs);
                    } else if (hc) {
                        jq.removeClass(cs);
                    }
                });
            }
            return this;
        },

        /**
         * 开关效果
         * @param {String} css 样式名称
         * @param {Boolean} addOrRemove true 时添加样式,false时移除该样式
         * @return {jQuery} this
         */
        selectChecked: function(e) {
            if (e) {
                var jq = $(this);
                var parent = $(this).parents('.onoff');
                var hc = jq.hasClass('selected');
                if (!hc) {
                    jq.addClass('selected').siblings().removeClass('selected');
                    $('.checkbox', parent).attr('checked', true);
                }
            }
            return this;
        },

        /**
         * 替换view元素样式类.<br/>
         * <code>comp.switchClass('mouseoverCss', 'mouseoutCss');</code><br/>
         * @param {String} oldSty 已存在的CSS类名
         * @param {String} newSty 新的CSS类名
         * @return {Object} this
         */
        switchClass: function(oldSty, newSty) {
            this.each(function() {
                var jq = $(this);
                jq.removeClass(oldSty);
                jq.addClass(newSty);
            });
            return this;
        },

        /**
         * 获得相对于viewport的位置,只适用于单个元素
         * @return {left, top}
         */
        absolutePos: function() {
            var off = this.offset(),
                doc = $(document);
            var st = doc.scrollTop(),
                sl = doc.scrollLeft();
            off.left -= sl;
            off.top -= st;
            return off;
        },

        slideMenu: function(slideLayer, hoverCs) {
            this.each(function() {
                (function(jq) {
                    var layer = jq.find(slideLayer);
                    var setTimer, clsTimer;

                    function slidedown() {
                        layer.show().cssDisplay(true);
                        if (hoverCs)
                            jq.addClass(hoverCs);
                    }

                    function slideup() {
                        if (hoverCs)
                            jq.removeClass(hoverCs);
                        layer.cssDisplay(false);
                    }

                    function clear() {
                        if (setTimer) {
                            clearTimeout(setTimer);
                            setTimer = false;
                        }
                        clsTimer = setTimeout(slideup, 80);
                    }

                    function set() {
                        if (clsTimer) {
                            clearTimeout(clsTimer);
                            clsTimer = false;
                        }
                        setTimer = setTimeout(slidedown, 100);
                    }

                    jq.hover(set, clear);
                })($(this));
            });
        },

        /**
         * 截取内容
         *@param {Number} num  位置,默认10
         *@param {Boolean} hasFace  是否显示表情图片,否为文字代替
         *@param {String} postfix  后缀
         *@return jQuery
         */
        substrText: function(num, hasFace, postfix) {
            var re = new RegExp('(?:<a.*?>.*?<\\/a>)|(?:<img.*?>)|.', 'gi');

            this.each(function() {
                var
                //cache = [],
                    postfix = postfix || '...',
                    text = this.innerHTML,
                    match = text.match(re);

                num = num || 10;

                if (match && match.length > num) {

                    match = match.slice(0, num).join('');

                    text = hasFace ? match : match.replace(/<img.*?title=\"(.*?)\".*?>/gi, '[$1]');

                    $(this).html(text + postfix);
                }
            });

            return this;
        },

        /**
         * IE6修复PNG图片
         *@return jQuery
         */
        fixPng: function() {

            if (isIE6) {
                var fixFn = function() {
                    if (this.tagName == 'IMG') {
                        var $img = $('<span></span>').css({
                            width: this.offsetWidth,
                            height: this.offsetHeight,
                            display: 'inline-block'
                        });
                        $img[0].style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + this.src + '", sizingMethod="crop")';
                        $(this).replaceWith($img);
                    }
                };
                this.each(function() {
                    if (this.complete) {
                        fixFn.call(this);
                    } else {
                        this.onload = fixFn;
                    }
                });
            }

            return this;
        },

        scrollView: function() {
            var parent = this,

                childrens = parent.children(),

                //时间触发计时器
                timer,

                //滚动触发周期, 真实等待时间应该为 delay - 1000 - 500
                //1000是滚动效果的时长
                //500是淡入效果时长
                delay = 4000;

            if (!childrens.length) {
                return;
            }

            //滚动到下一条
            function scrollToNext(callback) {
                var $last = $(parent.children(':last'));

                var height = $last.height();

                $last
                    .height(0)
                    .css({
                        opacity: 0,
                        'font-size': 0,
                        overflow: 'hidden'
                    })
                    .remove()
                    .prependTo(parent)
                    .animate({
                        height: height
                    }, 1000, 'cubicOut', function() {
                        $last.css({
                            'font-size': '12px'
                        });
                    })
                    .animate({
                        opacity: 1
                    }, 500, function() {
                        !timer && $.isFunction(callback) && callback();
                    });

            }

            //设置计时器,开始滚动
            function startScroll() {
                if (!timer) {
                    timer = window.setInterval(scrollToNext, delay);
                }
            }

            //计算内容高度,如果内容高度小于等于高度,则不启动滚动效果
            var contentHeight = 0;

            $.each(childrens, function(i, node) {
                contentHeight += $(node).height();
            });

            if (contentHeight > parent.height()) {
                //鼠标飘过的控制,
                //mouseover时停止计时器,但当前的滚动会继续,直至单次完成。
                parent.hover(function() {
                    if (timer) {
                        timer = window.clearInterval(timer);
                    }

                }, function() {
                    startScroll();
                });

                startScroll();
            }
        },
        //整块的循环移动
        //Count 一次移动子元素数量
        //delay 移动间隔时间
        //animateTime 动画执行时间
        scrollMass: function(Count, delay, animateTime) {
            var parent = this,
                length = parent.children().length,
                timer,
                delay = delay,
                tmp = parent.children()[0].offsetWidth * Count,
                p = false;
            if (length <= Count) {
                return this;
            }

            function scrollNext() {
                parent.animate({
                    marginLeft: -tmp
                }, animateTime ? animateTime : 1000, function() {
                    if (timer !== 0) {
                        parent.css('marginLeft', 0);
                        parent.append(parent.children(':lt(' + Count + ')'));
                    }
                    if (p) return;
                    start();
                });
            }

            start = function() {
                timer = window.setTimeout(scrollNext, delay);
            };
            
            this.hover(function() {
                p = true;
                clearTimeout(timer);
            }, function() {
                p = false;
                start();
            });
            start();
            return this;
        }
    });

    (function($, wp, wps, window, undefined) {
        '$:nomunge';
        var $w = $(window),
            waypoints = [],
            oldScroll = -99999,
            didScroll = false,
            didResize = false,
            eventName = 'waypoint.reached',
            methods = {
                init: function(f, options) {
                    this.each(function() {
                        var $this = $(this),
                            ndx = waypointIndex($this),
                            base = ndx < 0 ? $.fn[wp].defaults : waypoints[ndx].options,
                            opts = $.extend({},
                                base, options);
                        opts.offset = opts.offset === "bottom-in-view" ?
                            function() {
                                return $[wps]('viewportHeight') - $(this).outerHeight();
                            } : opts.offset;
                        if (ndx < 0) {
                            waypoints.push({
                                element: $this,
                                offset: $this.offset().top,
                                options: opts
                            });
                        } else {
                            waypoints[ndx].options = opts;
                        }
                        f && $this.bind(eventName, f);
                    });
                    $[wps]('refresh');
                    return this;
                },
                remove: function() {
                    return this.each(function() {
                        var ndx = waypointIndex($(this));
                        if (ndx >= 0) {
                            waypoints.splice(ndx, 1);
                        }
                    });
                },
                destroy: function() {
                    return this.unbind(eventName)[wp]('remove');
                }
        };

        waypointIndex = function(el) {
            var i = waypoints.length - 1;
            while (i >= 0 && waypoints[i].element[0] !== el[0]) {
                i -= 1;
            }
            return i;
        };

        function triggerWaypoint(way, dir) {
            way.element.trigger(eventName, dir);
            if (way.options.triggerOnce) {
                way.element[wp]('destroy');
            }
        }

        function doScroll() {
            var newScroll = $w.scrollTop(),
                isDown = newScroll > oldScroll,
                pointsHit = $.grep(waypoints,
                    function(el, i) {
                        return isDown ? (el.offset > oldScroll && el.offset <= newScroll) : (el.offset <= oldScroll && el.offset > newScroll);
                    });
            if (!oldScroll || !newScroll) {
                $[wps]('refresh');
            }
            oldScroll = newScroll;
            if (!pointsHit.length) return;
            if ($[wps].settings.continuous) {
                $.each(isDown ? pointsHit : pointsHit.reverse(),
                    function(i, point) {
                        triggerWaypoint(point, [isDown ? 'down' : 'up']);
                    });
            } else {
                triggerWaypoint(pointsHit[isDown ? pointsHit.length - 1 : 0], [isDown ? 'down' : 'up']);
            }
        }
        $.fn[wp] = function(method) {
            if (methods[method]) {
                return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
            } else if (typeof method === "function" || !method) {
                return methods.init.apply(this, arguments);
            } else if (typeof method === "object") {
                return methods.init.apply(this, [null, method]);
            } else {
                $.error('Method ' + method + ' does not exist on jQuery' + wp);
            }
        };
        $.fn[wp].defaults = {
            offset: 0,
            triggerOnce: false
        };
        var jQMethods = {
            refresh: function() {
                $.each(waypoints,
                    function(i, o) {
                        var adjustment = 0,
                            oldOffset = o.offset;
                        if (typeof o.options.offset === "function") {
                            adjustment = o.options.offset.apply(o.element);
                        } else if (typeof o.options.offset === "string") {
                            var amount = parseFloat(o.options.offset),
                                adjustment = o.options.offset.indexOf("%") ? Math.ceil($[wps]('viewportHeight') * (amount / 100)) : amount;
                        } else {
                            adjustment = o.options.offset;
                        }
                        o.offset = o.element.offset().top - adjustment;
                        if (oldScroll > oldOffset && oldScroll <= o.offset) {
                            triggerWaypoint(o, ['up']);
                        } else if (oldScroll < oldOffset && oldScroll >= o.offset) {
                            triggerWaypoint(o, ['down']);
                        }
                    });
                waypoints.sort(function(a, b) {
                    return a.offset - b.offset;
                });
            },
            viewportHeight: function() {
                return (window.innerHeight ? window.innerHeight : $w.height());
            },
            aggregate: function() {
                var points = $();
                $.each(waypoints,
                    function(i, e) {
                        points = points.add(e.element);
                    });
                return points;
            }
        };
        $[wps] = function(method) {
            if (jQMethods[method]) {
                return jQMethods[method].apply(this);
            } else {
                return jQMethods.aggregate();
            }
        };
        $[wps].settings = {
            continuous: true,
            resizeThrottle: 200,
            scrollThrottle: 100
        };
        $w.scroll(function() {
            if (!didScroll) {
                didScroll = true;
                window.setTimeout(function() {
                        doScroll();
                        didScroll = false;
                    },
                    $[wps].settings.scrollThrottle);
            }
        }).resize(function() {
            if (!didResize) {
                didResize = true;
                window.setTimeout(function() {
                        $[wps]('refresh');
                        didResize = false;
                    },
                    $[wps].settings.resizeThrottle);
            }
        }).load(function() {
            $[wps]('refresh');
            doScroll();
        });
    })(jQuery, 'waypoint', 'waypoints', this);

    /**
     * md5加密
     */
    var rotateLeft = function(lValue, iShiftBits) {
            return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
        };
    var addUnsigned = function(lX, lY) {
        var lX4, lY4, lX8, lY8, lResult;
        lX8 = (lX & 0x80000000);
        lY8 = (lY & 0x80000000);
        lX4 = (lX & 0x40000000);
        lY4 = (lY & 0x40000000);
        lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
        if (lX4 & lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
        if (lX4 | lY4) {
            if (lResult & 0x40000000) return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
            else return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
        } else {
            return (lResult ^ lX8 ^ lY8);
        }
    };
    var F = function(x, y, z) {
        return (x & y) | ((~ x) & z);
    };
    var G = function(x, y, z) {
        return (x & z) | (y & (~ z));
    };
    var H = function(x, y, z) {
        return (x ^ y ^ z);
    };
    var I = function(x, y, z) {
        return (y ^ (x | (~ z)));
    };
    var FF = function(a, b, c, d, x, s, ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };
    var GG = function(a, b, c, d, x, s, ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };
    var HH = function(a, b, c, d, x, s, ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };
    var II = function(a, b, c, d, x, s, ac) {
        a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));
        return addUnsigned(rotateLeft(a, s), b);
    };
    var convertToWordArray = function(string) {
        var lWordCount;
        var lMessageLength = string.length;
        var lNumberOfWordsTempOne = lMessageLength + 8;
        var lNumberOfWordsTempTwo = (lNumberOfWordsTempOne - (lNumberOfWordsTempOne % 64)) / 64;
        var lNumberOfWords = (lNumberOfWordsTempTwo + 1) * 16;
        var lWordArray = Array(lNumberOfWords - 1);
        var lBytePosition = 0;
        var lByteCount = 0;
        while (lByteCount < lMessageLength) {
            lWordCount = (lByteCount - (lByteCount % 4)) / 4;
            lBytePosition = (lByteCount % 4) * 8;
            lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
            lByteCount++;
        }
        lWordCount = (lByteCount - (lByteCount % 4)) / 4;
        lBytePosition = (lByteCount % 4) * 8;
        lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
        lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
        lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
        return lWordArray;
    };
    var wordToHex = function(lValue) {
        var WordToHexValue = "", WordToHexValueTemp = "", lByte, lCount;
        for (lCount = 0; lCount <= 3; lCount++) {
            lByte = (lValue >>> (lCount * 8)) & 255;
            WordToHexValueTemp = "0" + lByte.toString(16);
            WordToHexValue = WordToHexValue + WordToHexValueTemp.substr(WordToHexValueTemp.length - 2, 2);
        }
        return WordToHexValue;
    };
    var uTF8Encode = function(string) {
        string = string.replace(/\x0d\x0a/g, "\x0a");
        var output = "";
        for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);
            if (c < 128) {
                output += String.fromCharCode(c);
            } else if ((c > 127) && (c < 2048)) {
                output += String.fromCharCode((c >> 6) | 192);
                output += String.fromCharCode((c & 63) | 128);
            } else {
                output += String.fromCharCode((c >> 12) | 224);
                output += String.fromCharCode(((c >> 6) & 63) | 128);
                output += String.fromCharCode((c & 63) | 128);
            }
        }
        return output;
    };
    $.extend({
        md5: function(string) {
            var x = Array();
            var k, AA, BB, CC, DD, a, b, c, d;
            var S11=7, S12=12, S13=17, S14=22;
            var S21=5, S22=9 , S23=14, S24=20;
            var S31=4, S32=11, S33=16, S34=23;
            var S41=6, S42=10, S43=15, S44=21;
            string = uTF8Encode(string);
            x = convertToWordArray(string);
            a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
            for (k = 0; k < x.length; k += 16) {
                AA = a; BB = b; CC = c; DD = d;
                a = FF(a, b, c, d, x[k+0],  S11, 0xD76AA478);
                d = FF(d, a, b, c, x[k+1],  S12, 0xE8C7B756);
                c = FF(c, d, a, b, x[k+2],  S13, 0x242070DB);
                b = FF(b, c, d, a, x[k+3],  S14, 0xC1BDCEEE);
                a = FF(a, b, c, d, x[k+4],  S11, 0xF57C0FAF);
                d = FF(d, a, b, c, x[k+5],  S12, 0x4787C62A);
                c = FF(c, d, a, b, x[k+6],  S13, 0xA8304613);
                b = FF(b, c, d, a, x[k+7],  S14, 0xFD469501);
                a = FF(a, b, c, d, x[k+8],  S11, 0x698098D8);
                d = FF(d, a, b, c, x[k+9],  S12, 0x8B44F7AF);
                c = FF(c, d, a, b, x[k+10], S13, 0xFFFF5BB1);
                b = FF(b, c, d, a, x[k+11], S14, 0x895CD7BE);
                a = FF(a, b, c, d, x[k+12], S11, 0x6B901122);
                d = FF(d, a, b, c, x[k+13], S12, 0xFD987193);
                c = FF(c, d, a, b, x[k+14], S13, 0xA679438E);
                b = FF(b, c, d, a, x[k+15], S14, 0x49B40821);
                a = GG(a, b, c, d, x[k+1],  S21, 0xF61E2562);
                d = GG(d, a, b, c, x[k+6],  S22, 0xC040B340);
                c = GG(c, d, a, b, x[k+11], S23, 0x265E5A51);
                b = GG(b, c, d, a, x[k+0],  S24, 0xE9B6C7AA);
                a = GG(a, b, c, d, x[k+5],  S21, 0xD62F105D);
                d = GG(d, a, b, c, x[k+10], S22, 0x2441453);
                c = GG(c, d, a, b, x[k+15], S23, 0xD8A1E681);
                b = GG(b, c, d, a, x[k+4],  S24, 0xE7D3FBC8);
                a = GG(a, b, c, d, x[k+9],  S21, 0x21E1CDE6);
                d = GG(d, a, b, c, x[k+14], S22, 0xC33707D6);
                c = GG(c, d, a, b, x[k+3],  S23, 0xF4D50D87);
                b = GG(b, c, d, a, x[k+8],  S24, 0x455A14ED);
                a = GG(a, b, c, d, x[k+13], S21, 0xA9E3E905);
                d = GG(d, a, b, c, x[k+2],  S22, 0xFCEFA3F8);
                c = GG(c, d, a, b, x[k+7],  S23, 0x676F02D9);
                b = GG(b, c, d, a, x[k+12], S24, 0x8D2A4C8A);
                a = HH(a, b, c, d, x[k+5],  S31, 0xFFFA3942);
                d = HH(d, a, b, c, x[k+8],  S32, 0x8771F681);
                c = HH(c, d, a, b, x[k+11], S33, 0x6D9D6122);
                b = HH(b, c, d, a, x[k+14], S34, 0xFDE5380C);
                a = HH(a, b, c, d, x[k+1],  S31, 0xA4BEEA44);
                d = HH(d, a, b, c, x[k+4],  S32, 0x4BDECFA9);
                c = HH(c, d, a, b, x[k+7],  S33, 0xF6BB4B60);
                b = HH(b, c, d, a, x[k+10], S34, 0xBEBFBC70);
                a = HH(a, b, c, d, x[k+13], S31, 0x289B7EC6);
                d = HH(d, a, b, c, x[k+0],  S32, 0xEAA127FA);
                c = HH(c, d, a, b, x[k+3],  S33, 0xD4EF3085);
                b = HH(b, c, d, a, x[k+6],  S34, 0x4881D05);
                a = HH(a, b, c, d, x[k+9],  S31, 0xD9D4D039);
                d = HH(d, a, b, c, x[k+12], S32, 0xE6DB99E5);
                c = HH(c, d, a, b, x[k+15], S33, 0x1FA27CF8);
                b = HH(b, c, d, a, x[k+2],  S34, 0xC4AC5665);
                a = II(a, b, c, d, x[k+0],  S41, 0xF4292244);
                d = II(d, a, b, c, x[k+7],  S42, 0x432AFF97);
                c = II(c, d, a, b, x[k+14], S43, 0xAB9423A7);
                b = II(b, c, d, a, x[k+5],  S44, 0xFC93A039);
                a = II(a, b, c, d, x[k+12], S41, 0x655B59C3);
                d = II(d, a, b, c, x[k+3],  S42, 0x8F0CCC92);
                c = II(c, d, a, b, x[k+10], S43, 0xFFEFF47D);
                b = II(b, c, d, a, x[k+1],  S44, 0x85845DD1);
                a = II(a, b, c, d, x[k+8],  S41, 0x6FA87E4F);
                d = II(d, a, b, c, x[k+15], S42, 0xFE2CE6E0);
                c = II(c, d, a, b, x[k+6],  S43, 0xA3014314);
                b = II(b, c, d, a, x[k+13], S44, 0x4E0811A1);
                a = II(a, b, c, d, x[k+4],  S41, 0xF7537E82);
                d = II(d, a, b, c, x[k+11], S42, 0xBD3AF235);
                c = II(c, d, a, b, x[k+2],  S43, 0x2AD7D2BB);
                b = II(b, c, d, a, x[k+9],  S44, 0xEB86D391);
                a = addUnsigned(a, AA);
                b = addUnsigned(b, BB);
                c = addUnsigned(c, CC);
                d = addUnsigned(d, DD);
            }
            var tempValue = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);
            return tempValue.toLowerCase();
        }
    }); 
    
    /**
     * 获得或设置cookie
     * @param {String} name
     * @param {String} value
     * @param {Object} options
     * @method
     */
    $.cookie = function(name, value, options) {
        if (typeof value != 'undefined') { // name and value given, set cookie
            options = options || {};
            if (value === NULL) {
                value = '';
                options.expires = -1;
            }
            var expires = '';
            if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
                var date;
                if (typeof options.expires == 'number') {
                    date = new Date();
                    date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
                } else {
                    date = options.expires;
                }
                expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
            }
            // CAUTION: Needed to parenthesize options.path and options.domain
            // in the following expressions, otherwise they evaluate to undefined
            // in the packed version for some reason...
            var path = options.path ? '; path=' + (options.path) : '';
            var domain = options.domain ? '; domain=' + (options.domain) : '';
            var secure = options.secure ? '; secure' : '';
            document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
        } else { // only name given, get cookie
            var cookieValue = NULL;
            if (document.cookie && document.cookie !== '') {
                var cookies = document.cookie.split(';');
                for (var i = 0; i < cookies.length; i++) {
                    var cookie = jQuery.trim(cookies[i]);
                    // Does this cookie string begin with the name we want?
                    if (cookie.substring(0, name.length + 1) == (name + '=')) {
                        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                        break;
                    }
                }
            }
            return cookieValue;
        }
    };

    $.easing.cubicOut = function(x, t, b, c, d) {
        return c * ((t = t / d - 1) * t * t + 1) + b;
    };

})(Exiu, jQuery);

 

posted @ 2016-08-11 11:42  慕容小凡  阅读(273)  评论(0)    收藏  举报