if ( typeof document.documentElement.children !== "undefined" ) (function(){
    var extend = {
        siblings: function(elem){return jQuery.sibling(elem.parentNode,elem);},
        children: function(elem){return jQuery.sibling(elem);}
    };

    if ( typeof document.documentElement.nextSiblingElement !== "undefined" ) {
        jQuery.extend(extend, {
            next: function(elem){return elem.nextElementSibling;},
            prev: function(elem){return elem.previousElementSibling;},
            nextAll: function(elem){return jQuery.dir(elem,"nextElementSibling");},
            prevAll: function(elem){return jQuery.dir(elem,"previousElementSibling");}
        });
    
        jQuery.dir = function( elem, dir ){
            var matched = [], cur = elem[dir];
            while ( cur && cur != document ) {
                matched.push( cur );
                cur = cur[dir];
            }
            return matched;
        };
    }
    
    jQuery.each(extend, function(name, fn){
        jQuery.fn[ name ] = function( selector ) {
            var ret = jQuery.map( this, fn );
    
            if ( selector && typeof selector == "string" )
                ret = jQuery.multiFilter( selector, ret );
    
            return this.pushStack( jQuery.unique( ret ) );
        };
    });
    
    jQuery.sibling = function( elem, skip ) {
        var ret = [], tmp = elem.children;
        
        if ( skip ) {
            for ( var i = 0; i < tmp.length; i++ ) {
                if ( tmp[i] !== skip ) {
                    ret.push( tmp[i] );
                }
            }
        }

        return ret;
    };
})();