<%@language = "javascript" %>
<% /*
     $Revision$
     $Id$

    File:           refresher.asp
    Description:    Toon een bepaald scherm en ververs deze regelmatig

    Parameters:     verplichte parameters
                        url= de geescape-te url die ververst moet worden
                             Bij voorkeur een bookmark met een PRS_PERSLID_KEY_AUTH (fallback_user_key)
                             zodat een nachtelijke reset overleeft wordt
                    optional parameters
                        refreshrate=60     report refresht elke 60 seconde
                                           default 600 (10 minuten)
                        doublebuf=1        Unsupported
                                           'Toggle' twee workFrame's om knipperen te voorkomen
                                           Let op: onderliggende scherm *moet* dan onload code
                                                  parent & parent.Activate && parent.Activate()
                                           doen als hij klaar is met laden
                                           Let op: doubleauto is veel simpeler en heeft de voorkeur
                        doubleauto=3       Als doublebuf maar onderliggende code hoeft niets te doen
                                           Automatisch wordt na S("refresher_doubleauto") (default 3) seconde
                                           verondersteld dat het scherm klaar is.

    Context:        Bijvoorbeeld als je bij een bookmark een refreshrate invult
                    http://sgf12/facilitor5iwork/?fac_id=AAIT&u=VXlrSVAqUpAzFocg
    Notes:
*/

ANONYMOUS_Allowed = 1; // We doen echt niets geheims.
%>
<!--#include file="../Shared/common.inc" -->
<%
    FCLTHeader.Requires({plugins: ["jQuery"]});

    var url = getQParam("url");
    if (url.substr(0, 1) != "/" || url.substr(0, 2) == "//")
        shared.simpel_page("Refresher url must start with '/' + relative-url");
    var refreshrate = getQParamInt("refreshrate", 600);
    var doublebuf = getQParamInt("doublebuf", 0) == 1;
    var doubleauto = getQParamInt("doubleauto", S("refresher_doubleauto"));
    var widget_height = getQParamInt("widget_height", null);
%>
<html>
<head>
<%
   FCLTHeader.Generate();
%>
<title><%=L("lcl_facilitor_ie_title")%></title>
<script language="javascript">

window.activeFrame = "A";
window.refreshtimerId = -1;
window.myurl = "<%=rooturl + safe.jsstring(url)%>";

function refreshPage()
{
    doResize();
<% if (doublebuf || doubleauto > 0) { %>
    if (window.activeFrame == "A")
       $("#workFrameB")[0].src = window.myurl;
    else
       $("#workFrameA")[0].src = window.myurl;
<% if (doubleauto > 0) { %>
    if (window.doubletimerId > 0)
        clearTimeout(window.doubletimerId);
    window.doubletimerId = setTimeout('doActivate();', <%=doubleauto*1000%>);
<% } %>

<% } else { %>
    $("#workFrameA")[0].src = window.myurl;
<% } %>
}

// ondersteun de deprecated doublebuf
function Activate()
{
<% if (doublebuf && doubleauto <= 0) { %>
  doActivate();
<% } %>
}

// Activeer het 'andere' workframe
function doActivate()
{
  var d2 = $("#workFrameA");
  var d3 = $("#workFrameB");
  if (window.activeFrame == "A")
  {
    d2.css("visibility", "hidden");
    d3.css("visibility", "visible");
    window.activeFrame = "B";
    try
    {
        var ttl = d3[0].contentWindow.document.title;
    }
    catch(e)
    {
        // waarschijnlijk expired sessie en naar SAML inlog gestuurd
    }
  }
  else
  {
    d2.css("visibility", "visible");
    d3.css("visibility", "hidden");
    window.activeFrame = "A";
    try
    {
        var ttl = d2[0].contentWindow.document.title;
    }
    catch(e)
    {
        // waarschijnlijk expired sessie en naar SAML inlog gestuurd
    }
  }
  if (ttl)
    document.title = ttl;
}

// Ongeacht grootte content resizen naar window
function doResize()
{
<%if (widget_height)
  { %>
  window.frameElement.height = <%=widget_height%>;
<%} %>
  $("#workFrameA").width($(window).width());
  $("#workFrameB").width($(window).width());
  $("#workFrameA").height($(window).height());
  $("#workFrameB").height($(window).height());
}

function startAutoRefreshTimer() {
  if (<%=refreshrate%> != -1) {
    window.refreshtimerId = setInterval('refreshPage();', <%=refreshrate*1000%>);
  }
}

function resetReload()
{
    if (window.refreshtimerId)
        clearTimeout(window.refreshtimerId);
    startAutoRefreshTimer();
}

</script>
</head>

<body style="margin:0;"
  onLoad="refreshPage();
          startAutoRefreshTimer()">

    <iframe width="100%" height="100%"
            style="position:absolute;left:0px;top:0px; height:100%;visibility:hidden;"
            src="../Shared/empty.asp" id="workFrameA" frameborder="no"
            marginwidth="0" marginheight="0"
            scrolling="none" onload="doResize()">
    </iframe>
    <iframe width="100%" height="100%"
            style="position:absolute;left:0px;top:0px;height:100%;"
            src="../Shared/empty.asp" id="workFrameB" frameborder="no"
            marginwidth="0" marginheight="0"
            scrolling="none" onload="doResize()">
    </iframe>
</body>
</html>
<% ASPPAGE_END(); %>
