(function ($, undefined) {
    $.ui = $.ui || {}; if ($.ui.version) { return; }
    $.extend($.ui, { version: "1.8.16", keyCode: { ALT: 18, BACKSPACE: 8, CAPS_LOCK: 20, COMMA: 188, COMMAND: 91, COMMAND_LEFT: 91, COMMAND_RIGHT: 93, CONTROL: 17, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, INSERT: 45, LEFT: 37, MENU: 93, NUMPAD_ADD: 107, NUMPAD_DECIMAL: 110, NUMPAD_DIVIDE: 111, NUMPAD_ENTER: 108, NUMPAD_MULTIPLY: 106, NUMPAD_SUBTRACT: 109, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SHIFT: 16, SPACE: 32, TAB: 9, UP: 38, WINDOWS: 91} }); $.fn.extend({ propAttr: $.fn.prop || $.fn.attr, _focus: $.fn.focus, focus: function (delay, fn) { return typeof delay === "number" ? this.each(function () { var elem = this; setTimeout(function () { $(elem).focus(); if (fn) { fn.call(elem); } }, delay); }) : this._focus.apply(this, arguments); }, scrollParent: function () {
        var scrollParent; if (($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) { scrollParent = this.parents().filter(function () { return (/(relative|absolute|fixed)/).test($.curCSS(this, 'position', 1)) && (/(auto|scroll)/).test($.curCSS(this, 'overflow', 1) + $.curCSS(this, 'overflow-y', 1) + $.curCSS(this, 'overflow-x', 1)); }).eq(0); } else { scrollParent = this.parents().filter(function () { return (/(auto|scroll)/).test($.curCSS(this, 'overflow', 1) + $.curCSS(this, 'overflow-y', 1) + $.curCSS(this, 'overflow-x', 1)); }).eq(0); }
        return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
    }, zIndex: function (zIndex) {
        if (zIndex !== undefined) { return this.css("zIndex", zIndex); }
        if (this.length) {
            var elem = $(this[0]), position, value; while (elem.length && elem[0] !== document) {
                position = elem.css("position"); if (position === "absolute" || position === "relative" || position === "fixed") { value = parseInt(elem.css("zIndex"), 10); if (!isNaN(value) && value !== 0) { return value; } }
                elem = elem.parent();
            } 
        }
        return 0;
    }, disableSelection: function () { return this.bind(($.support.selectstart ? "selectstart" : "mousedown") + ".ui-disableSelection", function (event) { event.preventDefault(); }); }, enableSelection: function () { return this.unbind(".ui-disableSelection"); } 
    }); $.each(["Width", "Height"], function (i, name) {
        var side = name === "Width" ? ["Left", "Right"] : ["Top", "Bottom"], type = name.toLowerCase(), orig = { innerWidth: $.fn.innerWidth, innerHeight: $.fn.innerHeight, outerWidth: $.fn.outerWidth, outerHeight: $.fn.outerHeight }; function reduce(elem, size, border, margin) {
            $.each(side, function () {
                size -= parseFloat($.curCSS(elem, "padding" + this, true)) || 0; if (border) { size -= parseFloat($.curCSS(elem, "border" + this + "Width", true)) || 0; }
                if (margin) { size -= parseFloat($.curCSS(elem, "margin" + this, true)) || 0; } 
            }); return size;
        }
        $.fn["inner" + name] = function (size) {
            if (size === undefined) { return orig["inner" + name].call(this); }
            return this.each(function () { $(this).css(type, reduce(this, size) + "px"); });
        }; $.fn["outer" + name] = function (size, margin) {
            if (typeof size !== "number") { return orig["outer" + name].call(this, size); }
            return this.each(function () { $(this).css(type, reduce(this, size, true, margin) + "px"); });
        };
    }); function focusable(element, isTabIndexNotNaN) {
        var nodeName = element.nodeName.toLowerCase(); if ("area" === nodeName) {
            var map = element.parentNode, mapName = map.name, img; if (!element.href || !mapName || map.nodeName.toLowerCase() !== "map") { return false; }
            img = $("img[usemap=#" + mapName + "]")[0]; return !!img && visible(img);
        }
        return (/input|select|textarea|button|object/.test(nodeName) ? !element.disabled : "a" == nodeName ? element.href || isTabIndexNotNaN : isTabIndexNotNaN) && visible(element);
    }
    function visible(element) { return !$(element).parents().andSelf().filter(function () { return $.curCSS(this, "visibility") === "hidden" || $.expr.filters.hidden(this); }).length; }
    $.extend($.expr[":"], { data: function (elem, i, match) { return !!$.data(elem, match[3]); }, focusable: function (element) { return focusable(element, !isNaN($.attr(element, "tabindex"))); }, tabbable: function (element) { var tabIndex = $.attr(element, "tabindex"), isTabIndexNaN = isNaN(tabIndex); return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN); } }); $(function () { var body = document.body, div = body.appendChild(div = document.createElement("div")); $.extend(div.style, { minHeight: "100px", height: "auto", padding: 0, borderWidth: 0 }); $.support.minHeight = div.offsetHeight === 100; $.support.selectstart = "onselectstart" in div; body.removeChild(div).style.display = "none"; }); $.extend($.ui, { plugin: { add: function (module, option, set) { var proto = $.ui[module].prototype; for (var i in set) { proto.plugins[i] = proto.plugins[i] || []; proto.plugins[i].push([option, set[i]]); } }, call: function (instance, name, args) {
        var set = instance.plugins[name]; if (!set || !instance.element[0].parentNode) { return; }
        for (var i = 0; i < set.length; i++) { if (instance.options[set[i][0]]) { set[i][1].apply(instance.element, args); } } 
    } 
    }, contains: function (a, b) { return document.compareDocumentPosition ? a.compareDocumentPosition(b) & 16 : a !== b && a.contains(b); }, hasScroll: function (el, a) {
        if ($(el).css("overflow") === "hidden") { return false; }
        var scroll = (a && a === "left") ? "scrollLeft" : "scrollTop", has = false; if (el[scroll] > 0) { return true; }
        el[scroll] = 1; has = (el[scroll] > 0); el[scroll] = 0; return has;
    }, isOverAxis: function (x, reference, size) { return (x > reference) && (x < (reference + size)); }, isOver: function (y, x, top, left, height, width) { return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width); } 
    });
})(jQuery);
