/*!

* jQuery UI Core 1.11.4
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* http://api.jqueryui.com/category/ui-core/
*/

(function( factory ) {

if ( typeof define === "function" && define.amd ) {

        // AMD. Register as an anonymous module.
        define( [ "jquery" ], factory );
} else {

        // Browser globals
        factory( jQuery );
}

}(function( $ ) {

// $.ui might exist from components with no dependencies, e.g., $.ui.position $.ui = $.ui || {};

$.extend( $.ui, {

version: "1.11.4",

keyCode: {
        BACKSPACE: 8,
        COMMA: 188,
        DELETE: 46,
        DOWN: 40,
        END: 35,
        ENTER: 13,
        ESCAPE: 27,
        HOME: 36,
        LEFT: 37,
        PAGE_DOWN: 34,
        PAGE_UP: 33,
        PERIOD: 190,
        RIGHT: 39,
        SPACE: 32,
        TAB: 9,
        UP: 38
}

});

// plugins $.fn.extend({

scrollParent: function( includeHidden ) {
        var position = this.css( "position" ),
                excludeStaticParent = position === "absolute",
                overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
                scrollParent = this.parents().filter( function() {
                        var parent = $( this );
                        if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
                                return false;
                        }
                        return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + parent.css( "overflow-x" ) );
                }).eq( 0 );

        return position === "fixed" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent;
},

uniqueId: (function() {
        var uuid = 0;

        return function() {
                return this.each(function() {
                        if ( !this.id ) {
                                this.id = "ui-id-" + ( ++uuid );
                        }
                });
        };
})(),

removeUniqueId: function() {
        return this.each(function() {
                if ( /^ui-id-\d+$/.test( this.id ) ) {
                        $( this ).removeAttr( "id" );
                }
        });
}

});

// selectors function focusable( element, isTabIndexNotNaN ) {

var map, mapName, img,
        nodeName = element.nodeName.toLowerCase();
if ( "area" === nodeName ) {
        map = element.parentNode;
        mapName = map.name;
        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) &&
        // the element and all of its ancestors must be visible
        visible( element );

}

function visible( element ) {

return $.expr.filters.visible( element ) &&
        !$( element ).parents().addBack().filter(function() {
                return $.css( this, "visibility" ) === "hidden";
        }).length;

}

$.extend( $.expr[ “:” ], {

data: $.expr.createPseudo ?
        $.expr.createPseudo(function( dataName ) {
                return function( elem ) {
                        return !!$.data( elem, dataName );
                };
        }) :
        // support: jQuery <1.8
        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 );
}

});

// support: jQuery <1.8 if ( !$( “<a>” ).outerWidth( 1 ).jquery ) {

$.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( $.css( elem, "padding" + this ) ) || 0;
                        if ( border ) {
                                size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
                        }
                        if ( margin ) {
                                size -= parseFloat( $.css( elem, "margin" + this ) ) || 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" );
                });
        };
});

}

// support: jQuery <1.8 if ( !$.fn.addBack ) {

$.fn.addBack = function( selector ) {
        return this.add( selector == null ?
                this.prevObject : this.prevObject.filter( selector )
        );
};

}

// support: jQuery 1.6.1, 1.6.2 (bugs.jquery.com/ticket/9413) if ( $( “<a>” ).data( “a-b”, “a” ).removeData( “a-b” ).data( “a-b” ) ) {

$.fn.removeData = (function( removeData ) {
        return function( key ) {
                if ( arguments.length ) {
                        return removeData.call( this, $.camelCase( key ) );
                } else {
                        return removeData.call( this );
                }
        };
})( $.fn.removeData );

}

// deprecated $.ui.ie = !!/msie [w.]+/.exec( navigator.userAgent.toLowerCase() );

$.fn.extend({

focus: (function( orig ) {
        return function( delay, fn ) {
                return typeof delay === "number" ?
                        this.each(function() {
                                var elem = this;
                                setTimeout(function() {
                                        $( elem ).focus();
                                        if ( fn ) {
                                                fn.call( elem );
                                        }
                                }, delay );
                        }) :
                        orig.apply( this, arguments );
        };
})( $.fn.focus ),

disableSelection: (function() {
        var eventType = "onselectstart" in document.createElement( "div" ) ?
                "selectstart" :
                "mousedown";

        return function() {
                return this.bind( eventType + ".ui-disableSelection", function( event ) {
                        event.preventDefault();
                });
        };
})(),

enableSelection: function() {
        return this.unbind( ".ui-disableSelection" );
},

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 ) {
                        // Ignore z-index if position is set to a value where z-index is ignored by the browser
                        // This makes behavior of this function consistent across browsers
                        // WebKit always returns auto if the element is positioned
                        position = elem.css( "position" );
                        if ( position === "absolute" || position === "relative" || position === "fixed" ) {
                                // IE returns 0 when zIndex is not specified
                                // other browsers return a string
                                // we ignore the case of nested elements with an explicit value of 0
                                // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
                                value = parseInt( elem.css( "zIndex" ), 10 );
                                if ( !isNaN( value ) && value !== 0 ) {
                                        return value;
                                }
                        }
                        elem = elem.parent();
                }
        }

        return 0;
}

});

// $.ui.plugin is deprecated. Use $.widget() extensions instead. $.ui.plugin = {

add: function( module, option, set ) {
        var i,
                proto = $.ui[ module ].prototype;
        for ( i in set ) {
                proto.plugins[ i ] = proto.plugins[ i ] || [];
                proto.plugins[ i ].push( [ option, set[ i ] ] );
        }
},
call: function( instance, name, args, allowDisconnected ) {
        var i,
                set = instance.plugins[ name ];

        if ( !set ) {
                return;
        }

        if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) ) {
                return;
        }

        for ( i = 0; i < set.length; i++ ) {
                if ( instance.options[ set[ i ][ 0 ] ] ) {
                        set[ i ][ 1 ].apply( instance.element, args );
                }
        }
}

};

}));