function fixFooter() {
headerElement = document.getElementById('header');
contentElement = document.getElementById('content');
sidebarElement = document.getElementById('sidebar');
footerElement = document.getElementById('footer');

if (self.innerHeight) {
    windowHeight = self.innerHeight;
} else if (document.documentElement && document.documentElement.clientHeight) {
    windowHeight = document.documentElement.clientHeight;
} else if (document.body) {
    windowHeight = document.body.clientHeight;
}

footerPos = Math.max(headerElement.offsetHeight + contentElement.offsetHeight + footerElement.offsetHeight,
                headerElement.offsetHeight + sidebarElement.offsetHeight + footerElement.offsetHeight);
footerPos = Math.max(footerPos, windowHeight);

if (footerPos == windowHeight && 
    (footerPos - (headerElement.offsetHeight + contentElement.offsetHeight) > footerElement.offsetHeight) &&
    (footerPos - (headerElement.offsetHeight + sidebarElement.offsetHeight) > footerElement.offsetHeight)) {
    footerPos -= 10;
}

footerPosStr = footerPos + 'px';

footerElement.style.position = 'absolute';
footerElement.style.left = '0';
footerElement.style.top = footerPosStr;
footerElement.style.visibility = 'visible';
}
