function getWindowHeight() {
    if (window.self && self.innerHeight) {
        return self.innerHeight
    }
    if (document.documentElement && document.documentElement.clientHeight) {
        return document.documentElement.clientHeight;
    }
    return 0;
}

function getPosition(elem) {
    var offset = 0;
    var x = 0; y = 0;
    var w = elem.offsetWidth;
    var h = elem.offsetHeight;
    while (elem != null) {
        y += elem.offsetTop;
        x += elem.offsetLeft;
        elem = elem.offsetParent;
    }
    var out = { top: y, left: x, width: w, height: h};
    return(out);
}

// Resize the UI components on load and when resized
function resizeMap() {
    var mapdiv = document.getElementById("map");
    var height = getWindowHeight() - getPosition(mapdiv).top - 15;
	if (document.getElementById('google_ads_frame1')) {
		height -= 15;
	}
    if (height >= 0) {
        mapdiv.style.height = height + "px";
    }
    // Let the API know it has been resized
    map.checkResize();

	var helpdiv = document.getElementById("helppanel");
    var height = getWindowHeight() - getPosition(helpdiv).top - 35;
	if (document.getElementById('google_ads_frame1')) {
		height -= 15;
	}
    if (height >= 0) {
        helpdiv.style.height = height + "px";
    }
}

GEvent.addListener(map, "load", resizeMap());

if (window.attachEvent) { 
	window.attachEvent("onresize", function() {resizeMap()});		    
} else { 
	window.addEventListener("resize", function() {resizeMap()}, false);
}