rice-framework/krad-web/src/main/webapp/krad/scripts/krad.utility.js
/**
 * Initialize all footers that should be sticky with the appropriate classes, fixed position, and calculated offset
 * to make them always appear at the bottom of the screen
 */
Initialize all footers that should be sticky with the appropriate classes, fixed position, and calculated offset
to make them always appear at the bottom of the screen
Initialize all footers that should be sticky with the appropriate classes fixed position and calculated offset to make them always appear at the bottom of the screen
function initStickyFooterContent() {
    if (!stickyFooterContent || stickyFooterContent.length == 0) {
        return;
    }
    var bottomOffset = 0;
    jQuery(stickyFooterContent.get().reverse()).each(function () {
        jQuery(this).addClass("uif-stickyFooter");
        if (!jQuery(this).is(applicationFooter)) {
            jQuery(this).addClass("uif-stickyButtonFooter");
        }
        jQuery(this).attr("style", "position:fixed; left: 0; bottom: " + bottomOffset + "px;");
        var height = jQuery(this).outerHeight();
        bottomOffset = bottomOffset + height;
    });
    currentFooterHeight = bottomOffset;
    var contentWindowDiff = jQuery(window).height() - jQuery("[data-role='View']").height();
    if (bottomOffset > contentWindowDiff) {
        jQuery("[data-role='View']").css("paddingBottom", (bottomOffset) + "px");
    } else {
        jQuery("[data-role='View']").css("paddingBottom", (contentWindowDiff - 2) + "px");
    }
}
function initStickyFooterContent ( ) { if ( ! stickyFooterContent || stickyFooterContent . length == 0 ) { return ; } var bottomOffset = 0 ; jQuery ( stickyFooterContent . get ( ) . reverse ( ) ) . each ( function ( ) { jQuery ( this ) . addClass ( "uif-stickyFooter" ) ; if ( ! jQuery ( this ) . is ( applicationFooter ) ) { jQuery ( this ) . addClass ( "uif-stickyButtonFooter" ) ; } jQuery ( this ) . attr ( "style" , "position:fixed; left: 0; bottom: " + bottomOffset + "px;" ) ; var height = jQuery ( this ) . outerHeight ( ) ; bottomOffset = bottomOffset + height ; } ) ; currentFooterHeight = bottomOffset ; var contentWindowDiff = jQuery ( window ) . height ( ) - jQuery ( "[data-role='View']" ) . height ( ) ; if ( bottomOffset > contentWindowDiff ) { jQuery ( "[data-role='View']" ) . css ( "paddingBottom" , ( bottomOffset ) + "px" ) ; } else { jQuery ( "[data-role='View']" ) . css ( "paddingBottom" , ( contentWindowDiff - 2 ) + "px" ) ; } }
Initialize all footers that should be sticky with the appropriate classes, fixed position, and calculated offset
 to make them always appear at the bottom of the screen
Initialize all footers that should be sticky with the appropriate classes fixed position and calculated offset to make them always appear at the bottom of the screen
//no sticky footers, return
 //calculate bottom offset in reverse order (bottom up)
 //special style for footers that are not the application footer
 // 2px adjustment for some scenarios where mysterious pixels are added (unknown cause)
