﻿function getBodyHeight() {
    var height;
    var scrollHeight;
    var offsetHeight;

    if (document.height) {
        height = document.height;
    }
    else if (document.body) {
        if (document.body.scrollHeight) {
            height = scrollHeight = document.body.scrollHeight;
        }
        if (document.body.offsetHeight) {
            height = offsetHeight = document.body.offsetHeight;
        }

        if (scrollHeight && offsetHeight) {
            height = Math.max(scrollHeight, offsetHeight);
        }
    }

    return height;
}

function getViewPortHeight() {
    var height = 0;

    if (window.innerHeight) {
        height = window.innerHeight - 18;
    }
    else if ((document.documentElement) && (document.documentElement.clientHeight)) {
        height = document.documentElement.clientHeight;
    }
    else if ((document.body) && (document.body.clientHeight)) {
        height = document.body.clientHeight;
    }

    return height;
}

function resizeSelf() {
    if (window.location.hash.length > 1 || document.getElementById('hidden_TopUrl').value.length > 0) {
        if (window.location.hash.length > 1) {
            document.getElementById('hidden_TopUrl').value = window.location.hash.replace(/#/, '');
        }
        
        var actualHeight = getBodyHeight();
        var currentHeight = getViewPortHeight();
        if (Math.abs(actualHeight - currentHeight) > 15) {
            window.top.location.href = document.getElementById('hidden_TopUrl').value + '#' + actualHeight;
        }

        if (typeof propagateHash == 'function') {
            propagateHash();
        }
    }
}
 
window.onload = resizeSelf;
