﻿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();
}

function SaveCurrentPageAsDefault(OrganisationId) {
    var iframe = document.getElementById("gatewaycontent");
    var encodedUrl = "";
    var target = "";
    if (iframe != null) {
        var oDoc = (iframe.contentWindow || iframe.contentDocument);
        encodedUrl = escape(oDoc.location.href);
        target = "iframe";
    }
    else {
        encodedUrl = escape(window.location.href);
        target = "window";
    }

    var page = 'AJAX.aspx?method=SaveDefaultPage&OrganisationId=' + OrganisationId + '&UrlE=' + encodedUrl + '&Target=' + target;
    makeGETRequest(page, CurrentPageSaved);
}

function CurrentPageSaved() {
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            if (http_request.responseText == 'OK') {
                alert('This page has been set as your home page.');
            }
        }
        else
            alert('There was a problem with the request.');
    }
}

//--------------------------------------------- AJAX Functions - BEGIN ------------------------------------------//

var http_request = false;

function makePOSTRequest(url, parameters, functionName) {
    http_request = false;

    if (window.XMLHttpRequest) // Mozilla, Safari,...
    {
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
        }
    }
    else if (window.ActiveXObject) // IE
    {
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e)
				{ }
        }
    }

    if (!http_request) {
        alert('Cannot create XMLHTTP instance');
        return false;
    }

    http_request.onreadystatechange = functionName;
    http_request.open('POST', url, true);
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http_request.setRequestHeader("Content-length", parameters.length);
    //http_request.setRequestHeader("Connection", "close");
    http_request.send(parameters);
}

function makeGETRequest(url, functionName) {
    http_request = false;

    if (window.XMLHttpRequest) // Mozilla, Safari,...
    {
        http_request = new XMLHttpRequest();
    }
    else {
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (oc) {
                http_request = null;
            }
        }
    }

    if (!http_request) {
        alert('Cannot create XMLHTTP instance');
        return false;
    }
    var myDate = new Date();
    url += '&uniqueReq=' + myDate.getTime();
    http_request.onreadystatechange = functionName;
    http_request.open('GET', url, true);
    http_request.send('');
}

function makeSynchronousGETRequest(url) {
    if (window.XMLHttpRequest) { AJAX = new XMLHttpRequest(); }
    else { AJAX = new ActiveXObject("Microsoft.XMLHTTP"); }
    if (AJAX) {
        AJAX.open("GET", url, false);
        AJAX.send(null);
        return AJAX.responseText;
    }
    else { return false; }
}

//--------------------------------------------- AJAX Functions - END --------------------------------------------//
	

