define( [

"../data/var/dataPriv"

], function( dataPriv ) {

function showHide( elements, show ) {

var display, elem,
        values = [],
        index = 0,
        length = elements.length;

// Determine new display value for elements that need to change
for ( ; index < length; index++ ) {
        elem = elements[ index ];
        if ( !elem.style ) {
                continue;
        }

        display = elem.style.display;
        if ( show ) {
                if ( display === "none" ) {

                        // Restore a pre-hide() value if we have one
                        values[ index ] = dataPriv.get( elem, "display" ) || "";
                }
        } else {
                if ( display !== "none" ) {
                        values[ index ] = "none";

                        // Remember the value we're replacing
                        dataPriv.set( elem, "display", display );
                }
        }
}

// Set the display of the elements in a second loop
// to avoid the constant reflow
for ( index = 0; index < length; index++ ) {
        if ( values[ index ] != null ) {
                elements[ index ].style.display = values[ index ];
        }
}

return elements;

}

return showHide;

} );