﻿function showIFrameLayer() {
	var editLink = document.getElementById("_ctl0_EditPageLink");
	if (editLink != null) {
		editLink.style.display = "none";
	}

	var deletePageLink = document.getElementById("_ctl0_DeletePageLink");
	if (deletePageLink != null) {
		deletePageLink.style.display = "none";
	}

	if (document.getElementById("gatewaycontent") === null) {
	    document.getElementById("aspxContent").innerHTML =
    		"<iframe id=\"gatewaycontent\" onLoad=\"handleWindowLoaded()\" name=\"gatewaycontent\" scrolling=\"no\" frameborder=\"0\" style=\"BORDER-TOP-WIDTH:0px; BORDER-LEFT-WIDTH:0px; BORDER-BOTTOM-WIDTH:0px; WIDTH:100%; HEIGHT:100%; BORDER-RIGHT-WIDTH:0px;\"></iframe>";
	    document.getElementById("gatewaycontent").onload = handleWindowLoaded;
	}
}

var IFrameHelper = (function() {
    var itself = {};
    itself.navigateInIFrame = function(url) {
        if (url === null) {
            return;
        }
        showIFrameLayer();
        var iframe = document.getElementById("gatewaycontent");
        if (iframe === null) {
            return;
        }
        if ((iframe.src !== null) && (iframe.src.length > 0)) {
            url += (url.indexOf("?") < 0 ? "?" : "&") + "ReturnUrl=" + iframe.src;
        } else {
            url += (url.indexOf("?") < 0 ? "?" : "&") + "RedirectParent=true";
        }
        iframe.src = url;
    };
    return itself;
} ());

function handleWindowLoaded() {
	attachEventHandler(window, "onscroll", handleScrollEvent);
	attachEventHandler(window, "onresize", handleResizeEvent);
	resizeFrame();
	setUpGatewayContent();
	navigateTo("#topofpage");
}

function attachEventHandler(element, event, handlerFunction) {
	// This function is also used by documents that are contained in the "gateway" 
	// iframe to specify handlers for their own events. For example, a contained 
	// document may inform this page what handler will respond to its scroll event.
	element[event] = handlerFunction;
}

function handleScrollEvent(e) {
	setUpGatewayContent();
}

function handleResizeEvent(e) {
	setUpGatewayContent();
}

function setUpGatewayContent() {
	var iframe = document.getElementById("gatewaycontent");
	if ((typeof iframe !== "undefined") &&
		(typeof iframe.contentWindow !== "undefined") &&
		(typeof iframe.contentWindow.handleViewportChanged === "function")) {

		var documentElement = window.document.documentElement;
		iframe.contentWindow.handleViewportChanged((documentElement.scrollLeft - iframe.offsetLeft), (documentElement.scrollTop - iframe.offsetTop), documentElement.clientWidth, documentElement.clientHeight);
	}
}

function navigateTo(destination) {
	document.location.href = destination;
}

function resizeFrame() {
	var height = document.body.offsetHeight;
	var aspxContent = document.getElementById("aspxContent"); 
	var iframe = document.getElementById("gatewaycontent");
	if (navigator.userAgent.toLowerCase().indexOf('msie') > -1) {
		height = iframe.contentWindow.document.body.scrollHeight + 40;
	} else if (document.body.offsetHeight < iframe.contentWindow.document.body.offsetHeight) {
		height = iframe.contentWindow.document.body.offsetHeight + 40;
	}
	iframe.style.height = aspxContent.style.height = height + "px";
}

function ChildresizeFrame() {
	resizeFrame();
	setUpGatewayContent();
}
